<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7511640597328894129</id><updated>2012-02-20T03:19:04.453-08:00</updated><category term='mp10 camera russian'/><category term='hebrew'/><category term='stardict'/><category term='dictionary'/><title type='text'>Linux zealot</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-3819244360802987845</id><published>2012-02-20T02:29:00.000-08:00</published><updated>2012-02-20T03:19:04.462-08:00</updated><title type='text'>xls2csv using python-uno</title><content type='html'>While several xls2csv converters exist, on a recent assignment none of them were able to convert a multi-sheet, 300+MB Excel file into CSV format.&lt;br /&gt;&lt;br /&gt;While searching for possible solutions, I found &lt;a href="http://www.logilab.org/blogentry/6130"&gt;this&lt;/a&gt; (dated) blog entry on using python-uno. After assembling it into a single script and updating for changed LibreOffice arguments, I made it available &lt;a href="http://t11.mine.nu/skliarie_blog/xls2csv/xls2csv.py"&gt;here&lt;/a&gt;. You can check the script using the &lt;a href="http://t11.mine.nu/skliarie_blog/xls2csv/sample3sheets.xls"&gt;sample .XLS file with three sheets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The power of the solution lies in the LibreOffice+UNO (Universal Network Objects) platform it uses. While xls2csv looks like a trivial task, the platform automatically supports reading all spreadsheet types LibreOffice supports. This means that the script might as well be called xlsx2csv or ods2csv.&lt;br /&gt;&lt;br /&gt;The script can become a starting point for someone trying to implement complex documents management automation scripts. Leave a comments if you do :) .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-3819244360802987845?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/3819244360802987845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=3819244360802987845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/3819244360802987845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/3819244360802987845'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2012/02/xls2csv-using-python-uno.html' title='xls2csv using python-uno'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-4964181618046184171</id><published>2012-01-16T07:25:00.000-08:00</published><updated>2012-01-16T12:26:35.539-08:00</updated><title type='text'>xkb files for russian and hebrew keyboard switchers</title><content type='html'>Long ago, my xkb-based keyboard switcher method stopped working. I then moved over to using gnome-keyboard-properties to set up the keyboard switching. This worked for another several years until recent ubuntu changes in oneiric that removed the stand-alone gnome-keyboard-properties. Worse yet, the gnome-control-center crashes on me if not running from gnome-session.&lt;br /&gt;&lt;br /&gt;Being loyal user of FVWM2 window manager for 15 years (see my config &lt;a href="http://skliarie.blogspot.com/2008/11/my-45-workplaces.html"&gt;over here&lt;/a&gt;), I dug out the xkb keyboard switching files and fixed them to work with the evdev keyboard type. This works on ubuntu oneiric (11.10) system.&lt;br /&gt;&lt;br /&gt;Here are the download links to my xkb files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://t11.mine.nu/skliarie_blog/russian.xkb"&gt;russian&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://t11.mine.nu/skliarie_blog/hebrew.xkb"&gt;hebrew&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To load them use the following command:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;xkbcomp -R/usr/share/X11/xkb/ russian.xkb $DISPLAY&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-4964181618046184171?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/4964181618046184171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=4964181618046184171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/4964181618046184171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/4964181618046184171'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2012/01/xkb-files-for-russian-and-hebrew.html' title='xkb files for russian and hebrew keyboard switchers'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-237790184168966106</id><published>2011-11-15T07:27:00.000-08:00</published><updated>2011-11-24T08:43:13.087-08:00</updated><title type='text'>LLS=LXC+LVM+Snapshots</title><content type='html'>In our company developers deal with massive datasets that needs to be easy to  copy, modify a fraction of it and scrape. Snapshotting is an ideal  solution here. Each developer has a personal vserver (LXC container). The missing piece here is to provide them with a way to manipulate partitions and snapshots from inside of their vservers.&lt;br /&gt;&lt;br /&gt;To enable users manipulate partitions from inside of the virtual server, I wrote LLS (LXC+LVM+Snapshots) scripts.&lt;br /&gt;&lt;h2 style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="lxc_lvm_snapshots_lls" id="lxc_lvm_snapshots_lls"&gt;LXC+LVM+Snapshots = LLS&lt;/a&gt;&lt;/span&gt;&lt;br /&gt; &lt;/h2&gt; &lt;div class="level1"&gt;&lt;p&gt;  LLS system is set of scripts that enable LVM partitions and snapshots to  be managed from inside of LXC vservers. It is safer to allow developers  to use the scripts, instead of giving them superuser access to the  physical machine. &lt;/p&gt;  &lt;/div&gt; &lt;div class="secedit"&gt;&lt;form class="button btn_secedit" method="post" action="/doku.php"&gt;&lt;/form&gt;&lt;/div&gt; &lt;h2 style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="architecture" id="architecture"&gt;Architecture&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt; &lt;div class="level2"&gt;  &lt;p&gt;  The LLS scripts consist from two parts. The daemon script on the host  and client scripts on the vservers. The clients communicate with the  server over a named pipe in a shared (bind mount) directory /lls (lls -  LXC+LVM+Snapshots). The /lls directory is actually a small partition  that contains configuration file, the shell scripts and the named pipe  used for communcation. &lt;/p&gt;  &lt;p&gt; The daemon script does all the necessary low-level manipulations, both on the physical machine and on the LXC vservers. &lt;/p&gt;  &lt;/div&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;a name="usage" id="usage"&gt;Usage&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;  Each LLS vserver has /lls partition mounted. To preserve mounts across  reboots, the /etc/rc.local file runs /lls/tools/lls_mount_on_boot.sh  script. &lt;/p&gt;  &lt;p&gt; There are several client scripts the /lls/tools partition that do various operations:  &lt;/p&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;script name&lt;/th&gt;&lt;th&gt;Operation&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;lls_create_partition.sh&lt;/td&gt;&lt;td&gt;Create a partition&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;lls_create_snapshot.sh&lt;/td&gt;&lt;td&gt;Create an LVM snapshot from an existing LVM partition&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;lls_delete_partition.sh&lt;/td&gt;&lt;td&gt;Delete an LVM partition or snapshot&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;lls_list_partitions.sh&lt;/td&gt;&lt;td&gt;List available LLS partitions and refresh /dev/mf directory&lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;lls_mount_on_boot.sh&lt;/td&gt;&lt;td&gt;Mount LLS partitions using configuration in the /etc/fstab file&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;  The scripts show informative Usage information when ran without arguments. &lt;/p&gt;  &lt;p&gt; Developers are expected to operate the scripts by themselves. They are  also expected to maintain the /etc/fstab file for mounts they want to  survive reboot of their vserver. Unmounted snapshot is assumed to be not  necessary anymore and might be deleted at any time. &lt;/p&gt;   &lt;div class="secedit"&gt;&lt;form class="button btn_secedit" method="post" action="/doku.php"&gt;&lt;/form&gt;&lt;/div&gt; &lt;h2 style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a name="further_work" id="further_work"&gt;Further work&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt; &lt;div class="level2"&gt;  &lt;p&gt;  As the LLS system is used, more features are asked by developers and system administrators. Here are some of them: &lt;/p&gt; &lt;ul&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Track unused (unmounted) LVM snapshots and delete them automatically&lt;/div&gt; &lt;/li&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Track disk space used/required by LVM snapshot and grow it automatically. Send email to sysadmin each time this happen.&lt;/div&gt; &lt;/li&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Have a way to enable/disable visibility of a LLS partition. This is useful while the LLS partition is under construction.&lt;/div&gt; &lt;/li&gt;&lt;li class="level1"&gt;&lt;div class="li"&gt; Have a way to mark an LLS partition as non-mountable or mountable in read-only mode.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-weight: bold;"&gt;Download&lt;/p&gt;  &lt;/div&gt; &lt;div class="secedit"&gt;&lt;form class="button btn_secedit" method="post" action="/doku.php"&gt;&lt;/form&gt;&lt;/div&gt;            &lt;div class="clearer"&gt;Version &lt;a href="http://t11.mine.nu/lls_20111124.tar.gz"&gt;20111124&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-237790184168966106?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/237790184168966106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=237790184168966106' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/237790184168966106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/237790184168966106'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2011/11/llslxclvmsnapshots.html' title='LLS=LXC+LVM+Snapshots'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-7202432413086060009</id><published>2011-07-26T04:28:00.000-07:00</published><updated>2011-11-15T05:57:15.447-08:00</updated><title type='text'>Thoughts on photos-management system</title><content type='html'>Nowadays everybody around me have digital cameras. Photos that I am interested to look at are everywhere - on facebook, flickr, picasa, people's harddisks, some photo management system, etc. Rarely someone is kind enough to send me the photos.&lt;br /&gt;&lt;br /&gt;Let's analyze the situation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The situation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are mainly two distinct categories of users of a photos management system - producers and consumers. Each of them want different features from the system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Producers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Producers have many requirements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Editability: Producers need to operate (rotate, sort, tag, etc) on the photos. Automatic or manual face recognition would be nice to have.&lt;/li&gt;&lt;li&gt;Multi-user, networkable: There might be several producers (members of the family) operating on the same photos. They connect from different accounts on the same computer or from different computers (and OSes) in the same network.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Search: photos organizations must be flexible enough to support both folders and "search folders" - based on search string.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Publishing: enable consumers to view the photos over internet. The requires Sync or Upload to a web server.&lt;/li&gt;&lt;li&gt;Comments: enable consumers to comment on the photos, rate them, tag photos and faces.&lt;/li&gt;&lt;li&gt;Portability: no lock-in into some proprietary photos management system, OSS or proprietary. Practically this means that all meta data must be stored/duplicated into the photo file itself, using some meta-data format (&lt;span class="st"&gt;JFIF, EXIF, &lt;em&gt;IPTC&lt;/em&gt;, XMP&lt;/span&gt;, etc).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Consumers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Consumers value different features than producers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;easy and fast way to view the pics, preferably with captions (if any).&lt;/li&gt;&lt;li&gt;they might want to specify filter that sorts out photos with nobody they know.&lt;/li&gt;&lt;li&gt;ability to become producers (if allowed by host)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Current intermediate solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use shotwell program (I am linux user) to manage the photos on a network share. The shotwell maintains a database for quicker lookup, which is located along the photos. All changes are duplicated in metadata area of the photos as well. Publishing is done to picasa web album (it properly renders UTF8-encoded captions and tags in the IPTC header of the photos). Picasa is used as publishing point only, disregarding comments, ratings or faces tagging (blocking these if possible).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ideal solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The ideal solution would be in bi-directional synchronization of the photo files with some sharing-enabled cloud-based service, whereas the service embeds all additional meta-data generated by "consumers" into the files in open format. Clouds, are you listening?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-7202432413086060009?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/7202432413086060009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=7202432413086060009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/7202432413086060009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/7202432413086060009'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2011/07/thoughts-on-photos-management-system.html' title='Thoughts on photos-management system'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-5582166340457837836</id><published>2011-02-05T13:44:00.000-08:00</published><updated>2011-02-05T13:49:37.893-08:00</updated><title type='text'>How to install fb2pdf</title><content type='html'>Recently I installed fb2pdf on ubuntu maverick amd64. As there is no installation instructions anywhere, I decided to write down my notes I took during the installation:&lt;br /&gt;&lt;blockquote&gt;cd /var/www&lt;br /&gt;svn checkout FB2PDF&lt;br /&gt;mkdir /var/www/fb2pdf-read-only/logs&lt;br /&gt;chown -R www-data: /var/www/fb2pdf-read-only/logs&lt;br /&gt;# Edit etc/apache.conf, register with /etc/apache2/sites-enabled&lt;br /&gt;apt-get install libapache2-mod-php5&lt;br /&gt;a2enmod rewrite&lt;br /&gt;apt-get install texlive-latex-extra texlive-humanities python-boto \&lt;br /&gt;  python-pytils python-imaging libapache2-mod-php5 python2.4&lt;br /&gt;  texlive-lang-cyrillic&lt;br /&gt;&lt;br /&gt;apt-get install php-pear php5-dev&lt;br /&gt;pear update-channels&lt;br /&gt;pear install Crypt_HMAC&lt;br /&gt;pear install HTTP_Request&lt;br /&gt;&lt;br /&gt;# Mysql server&lt;br /&gt;apt-get install mysql-server php5-mysql&lt;br /&gt;cd /var/www/fb2pdf-read-only/src/sql&lt;br /&gt;mysqladmin create fb2pdf -p&lt;br /&gt;cat create_db.sql | mysql fb2pdf -p&lt;br /&gt;cat create_tables.sql | mysql fb2pdf -p&lt;br /&gt;cat bootstrap.sql | mysql fb2pdf -p&lt;br /&gt;#mysql&lt;br /&gt;GRANT ALL ON fb2pdf.* to fb2pdf@"localhost" IDENTIFIED BY "THE_PWD";&lt;br /&gt;&lt;br /&gt;cd /var/www/fb2pdf-read-only/www&lt;br /&gt;cp awscfg.php.template awscfg.php&lt;br /&gt;&lt;br /&gt;cd /usr/share/doc/texlive-lang-cyrillic/generic/t2/etc/utf-8/&lt;br /&gt;cp utf-8.def /etc/texmf/tex/latex/pict2e/&lt;br /&gt;gzip -dc utfcyr.def.gz &gt; /etc/texmf/tex/latex/pict2e/utfcyr.def&lt;br /&gt;gzip -dc utflat.def.gz &gt; /etc/texmf/tex/latex/pict2e/utflat.def&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-5582166340457837836?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/5582166340457837836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=5582166340457837836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/5582166340457837836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/5582166340457837836'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2011/02/how-to-install-fb2pdf.html' title='How to install fb2pdf'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-3463393818518062232</id><published>2010-12-20T03:46:00.000-08:00</published><updated>2010-12-20T04:05:35.011-08:00</updated><title type='text'>Buggy Intel RAID</title><content type='html'>Recently I solved an very nasty problem in the Intel RAID controller. The problem took me and my colleagues many hours and hairs, so I decided to describe it here in hope it will help someone.&lt;br /&gt;&lt;br /&gt;The Intel RAID controller was configured from the BIOS to have two disks in RAID1 configuration and all was good.&lt;br /&gt;&lt;blockquote&gt;00:1f.2 RAID bus controller: Intel Corporation 82801 SATA RAID Controller&lt;/blockquote&gt;Some time ago we put in additional harddisk (hot-swappable SATA) that was part of some other RAID in the past (it is important!), the machine recognized it, we formatted it and started using the disk. All was good until the moment we had to reboot the machine.&lt;br /&gt;&lt;br /&gt;It just would not boot. The screen looked like this:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VbzJ1FZE72w/TQ9ErhC609I/AAAAAAAAAng/_jMm16tOJM8/s1600/stuck_on_boot.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 208px;" src="http://2.bp.blogspot.com/_VbzJ1FZE72w/TQ9ErhC609I/AAAAAAAAAng/_jMm16tOJM8/s320/stuck_on_boot.png" alt="" id="BLOGGER_PHOTO_ID_5552732379966788562" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The message was (transcribing for keywords):&lt;br /&gt;Gave up waiting for root device.&lt;br /&gt;Check rootdelay=&lt;br /&gt;Check root=&lt;br /&gt;ALERT does not exist. Dropping to a shell!&lt;br /&gt;&lt;br /&gt;"dmraid -ay" would sometimes detect the root filesystem and sometimes (with different disk) not.&lt;br /&gt;&lt;br /&gt;After a while an idea struck me - could be that the RAID controller in addition to CMOS-kept configuration tries to autodetect the RAID partitions that might exist on the new disks.&lt;br /&gt;&lt;br /&gt;This was the answer. After I cleared both start and end of the new disks, the RAID signature on the disks would no longer confuse dmraid and prevent the kernel to find the real root file system.&lt;br /&gt;&lt;blockquote&gt;dd if=/dev/zero bs=1000000 count=200 of=/dev/sdc&lt;br /&gt;# For a 1TB disk. For different disk you need to calculate bs and seek accordingly.&lt;br /&gt;dd if=/dev/zero bs=1000000000 seek=1000 of=/dev/sdc&lt;br /&gt;&lt;/blockquote&gt;If this story helped someone, write in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-3463393818518062232?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/3463393818518062232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=3463393818518062232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/3463393818518062232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/3463393818518062232'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2010/12/buggy-intel-raid.html' title='Buggy Intel RAID'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VbzJ1FZE72w/TQ9ErhC609I/AAAAAAAAAng/_jMm16tOJM8/s72-c/stuck_on_boot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-1094695406489539539</id><published>2010-12-07T07:03:00.000-08:00</published><updated>2010-12-07T08:34:22.802-08:00</updated><title type='text'>Fiddler on Linux</title><content type='html'>A colleague of mine (web developer) recently undertook effort to move from Windows to Ubuntu. One last obstacle was lack of adequate analogs of program "&lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/a&gt;". Wireshark is too general to work with and does not allow http-specific operations (for example - change values in a request and replay it). It's cumbersome interface was also hard to work with.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://portswigger.net/burp/proxy.html"&gt;burp proxy&lt;/a&gt; suite. I know, I know, it is proprietary, closed source, cpu and memory hogging java application. But hey, if the alternative for the colleague to stay in Windows, anything counts.&lt;br /&gt;&lt;br /&gt;As good as the program is, it remains to be proxy application. This posed a problem because the developer had to intercept http requests from a stand-alone application.&lt;br /&gt;&lt;br /&gt;While intercepting network-originating requests is not trivial, on Linux there is simple way to redirect local traffic to the burp proxy. The trick is to run the program in "invisible proxy" mode using "root" account and redirect all traffic coming from certain user to port 80 through the proxy. This solves the catch22 problem of "intercepting all outgoing requests".&lt;br /&gt;&lt;br /&gt;Here are the commands that accomplish that:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-style: italic;"&gt;sudo iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner \&lt;br /&gt;--uid-owner evgeny -j REDIRECT --to-port 8080&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo java -jar burpsuite_v1.3.03.jar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo iptables -t nat -D OUTPUT -p tcp --dport 80 -m owner \&lt;br /&gt;--uid-owner evgeny -j REDIRECT --to-port 8080&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;An nice advantage of the burp proxy over fiddler is that developer can choose to modify the request on-the-fly. Now I have something to brag about to all fiddler-wielding windows losers :) .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-1094695406489539539?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/1094695406489539539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=1094695406489539539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/1094695406489539539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/1094695406489539539'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2010/12/fiddler-on-linux.html' title='Fiddler on Linux'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-5449193163969967246</id><published>2010-08-31T02:57:00.000-07:00</published><updated>2010-08-31T03:02:09.684-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mp10 camera russian'/><title type='text'>mp10 DV003-XXL manual on russian</title><content type='html'>Инструкция по эксплуатации "шпионского фотоаппарата/камеры" MP10 (DV-003) на русском:&lt;br /&gt;http://t11.mine.nu/mp10_russian.odt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-5449193163969967246?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/5449193163969967246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=5449193163969967246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/5449193163969967246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/5449193163969967246'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2010/08/mp10-dv003-xxl-manual-on-russian.html' title='mp10 DV003-XXL manual on russian'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-4354341239438773309</id><published>2010-08-04T00:28:00.000-07:00</published><updated>2010-08-04T01:24:27.742-07:00</updated><title type='text'>O GTalk team, where were thou?</title><content type='html'>Instant messaging (IM) penetrates our lives deeper and deeper, whether we like it or not. Most people start using whatever their peers so to be able to network with them. For that reason, switching default IM is tremendously hard thing to do, especially if one already accumulated number of contacts in previous network. This is called "&lt;a href="http://en.wikipedia.org/wiki/Network_effect"&gt;Network Effect"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are several factors that can make one consider the switch - presence of their peers on the alternative network, number of functions the IM client and the network offer, easy to use IM client, availability of the client on their platform and (unfortunately often neglected) - how proprietary the network protocol is.&lt;br /&gt;&lt;br /&gt;For past several years GTalk team was consistently failing on almost every point (at least on Linux). There is no native GTalk client for Linux. Interoperability with open-source clients is poor, especially on advanced features (voice and video conferences). No Video in standalone GTalk client. No built-in group chat support. No way to transfer bunch of contacts. File transfer is not reliable. The XMPP servers occasionally refuse to allow login (on ports 5222 and 5223). No way to organize contacts per groups (in the official GTalk client). These are problems that I have struggled with. I am sure there are many others.&lt;br /&gt;&lt;br /&gt;Some of the problems are caused by protocol restrictions. But Google already showed that it can extend protocols by adding &lt;a href="http://en.wikipedia.org/wiki/Jingle_%28protocol%29"&gt;Jingle&lt;/a&gt; to XMPP. Some are caused by open-source clients. Google also showed that it can fund that as part of &lt;a href="http://developer.pidgin.im/wiki/GSoC2008/VoiceAndVideo"&gt;summer of code&lt;/a&gt; projects. Apparently that was not enough. Google missed great opportunity to have an viable IM network by underfunding the GTalk team and  most popular open source clients. For Google's finances that would be pocket charge expenses.&lt;br /&gt;&lt;br /&gt;With the Network Effect the Skype network has accumulated, it will be impossible to revert the situation, unless something dramatically occurs. That makes me sad as XMPP+Jingle had great potential to become the IM of choice for the world.&lt;br /&gt;&lt;br /&gt;I speculate that Google Voice will fail for this very reason, but once Google understand that, it will probably be too late.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-4354341239438773309?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/4354341239438773309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=4354341239438773309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/4354341239438773309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/4354341239438773309'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2010/08/o-gtalk-team-where-were-thou.html' title='O GTalk team, where were thou?'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-8761292995465719995</id><published>2010-05-03T03:43:00.000-07:00</published><updated>2010-05-04T01:36:42.798-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hebrew'/><category scheme='http://www.blogger.com/atom/ns#' term='stardict'/><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><title type='text'>Hebrew thesaurus for stardict</title><content type='html'>Someone asked me to find him stardict-compatible version of hebrew thesaurus. I have found torrent link that has english-hebrew, hebrew-english dictionaries and hebrew thesaurus. All files are in stardict format:&lt;br /&gt;&lt;a href="http://t11.mine.nu/babylon_stardict.torrent"&gt;babylon_stardict.torrent&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am still looking for stardict-compatible version of russian-hebrew and hebrew-russian dictionaries. If someone has informative links, drop me an email please.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-8761292995465719995?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/8761292995465719995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=8761292995465719995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/8761292995465719995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/8761292995465719995'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2010/05/hebrew-thesaurus-for-stardict.html' title='Hebrew thesaurus for stardict'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-1630652655649937165</id><published>2010-03-04T04:59:00.000-08:00</published><updated>2011-01-13T07:00:02.714-08:00</updated><title type='text'>adaptec CLI management tool</title><content type='html'>Recently I had to install adaptec CLI management tool on an ubuntu 8.10 amd64 server. Despite of the aacraid driver present in kernel, it took me a lot of time to find the management tools that allow to see RAID status and manipulate it from command line. There are several names for the tools: afacli, aaccli, afaapps, afa-apps-snmp, arcconf, hrconf... oh my!&lt;br /&gt;After I found the necessary tools (64bit arch) I packaged them into a tiny deb package which can be downloaded from here: DELETED_AS_REDISTRIBUTION OF BINARIES_IS_PROHIBITED_BY_ADAPTEC&lt;br /&gt;&lt;br /&gt;I wrote a simple monitoring script that checks state of the Adaptec RAID system and sends out email if any of the published indicators is wrong (battery, failed disks, etc). The script can be downloaded from here: &lt;a href="http://t11.mine.nu/adaptec-utils/adaptec_check.sh"&gt;http://t11.mine.nu/adaptec-utils/adaptec_check.sh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note that the script requires proprietary binary files to be installed. See the beginning of the script for the details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-1630652655649937165?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/1630652655649937165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=1630652655649937165' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/1630652655649937165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/1630652655649937165'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2010/03/adaptec-cli-management-tool.html' title='adaptec CLI management tool'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-1863544157057861342</id><published>2009-12-07T07:14:00.000-08:00</published><updated>2009-12-07T07:50:28.438-08:00</updated><title type='text'>Audiobook as a podcast</title><content type='html'>Audiobooks have several specific features that differentiate them from bunch of songs and make it hard to listen to them using regular audio player:&lt;br /&gt;* They can have the same title/album/artist headers, with filename the only difference.&lt;br /&gt;* They must be in certain order.&lt;br /&gt;* Once an audio file was listened to, it can be automatically safely deleted, thus freeing up space.&lt;br /&gt;&lt;br /&gt;This makes audiobooks fit nicely into podcasts model.&lt;br /&gt;&lt;br /&gt;To convert audiobooks into a podcast I wrote a python script that scans given directory of mp3 files and creates RSS feed out of the files. The verion 0.1 of the script can be downloaded from &lt;span style="font-weight:bold;"&gt;&lt;a href="http://t11.mine.nu/abook2podcast.py"&gt;abook2podcast&lt;/a&gt;&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-1863544157057861342?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/1863544157057861342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=1863544157057861342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/1863544157057861342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/1863544157057861342'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2009/12/audiobook-as-podcast.html' title='Audiobook as a podcast'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-5244393917354947579</id><published>2009-02-16T07:57:00.000-08:00</published><updated>2009-02-16T08:36:20.863-08:00</updated><title type='text'>bittorrent and VoIP in the same sentence</title><content type='html'>At my home I have an modest ADSL line with a standard 128kbits upload. The upload is shared between several computers, an bittorrent process and asterisk (VoIP) server. I have looked around for an simple script to balance the upload according to set of very simple rules:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;VoIP packets go out first, no matter what&lt;/li&gt;&lt;li&gt;ssh, www, smtp, etc go after&lt;/li&gt;&lt;li&gt;everything else (including bittorrent) go last&lt;/li&gt;&lt;/ul&gt;After many fruitless hours of trying I have found a sample script at http://www.knowplace.org/pages/howtos/traffic_shaping_with_linux/examples.php and then heavily modified it.&lt;br /&gt;There are only two lines in the script to change. You should be aware of following assumptions in the script however:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The machine serves as the gateway for your network&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Internet is established using autodialer on interface ppp0&lt;/li&gt;&lt;li&gt;asterisk runs on the same machine as the shaper&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);font-size:100%;" &gt;As a result, the VoIP is hitchless, even in presence of unlimited bittorrent upload.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can &lt;span style="font-size:180%;"&gt;download&lt;/span&gt; my script &lt;span style="font-size:180%;"&gt;&lt;a href="http://t11.mine.nu/%7Earie/shaper_0_2.tar.gz"&gt;here&lt;/a&gt;&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-5244393917354947579?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/5244393917354947579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=5244393917354947579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/5244393917354947579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/5244393917354947579'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2009/02/bittorrent-and-voip-in-same-sentence.html' title='bittorrent and VoIP in the same sentence'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-2898033796652661338</id><published>2008-11-06T00:44:00.000-08:00</published><updated>2011-02-03T01:52:10.436-08:00</updated><title type='text'>my 45 workspaces</title><content type='html'>Most windows managers out there are windows oriented, so that you have single desktop and many overlapping windows. This is true for MS Windows, Mac OS, Gnome and KDE. There are ways to set up several more workspaces, but most people would continue to use in windows-oriented style as all running applications would still be represented in task bar.&lt;br /&gt;&lt;br /&gt;If you think about it, the windows-oriented workflow has great overhead, in resizing windows, looking for application in the task bar or list of applications and managing misplaced overlapping windows. Working with more than certain number of applications becomes unfeasible, as the overhead of managing so many windows becomes unbearable. There are many band-aids to minimize number of open windows, in form of tabs (especially in firefox or konsole), lame attempts to integrate many application in the same window (as mozilla thunderbird does) or hiding the application and it's interface into tiny icon in the status bar.&lt;br /&gt;&lt;br /&gt;Ideally, one needs not to think how to switch to the application he needs to access. It would be even more desirable for the application to launched automatically if it is not running already. The desktop should be organized so, that it would not matter whether you have couple of windows opened or many hundreds (provided you have enough resources).&lt;br /&gt;&lt;br /&gt;After experimenting with many approaches, I would like to share with you one that works good enough for me.&lt;br /&gt;&lt;br /&gt;The venerable fvwm2 window manager, albeit being very old, remains highly configurable one. The configuration uses text configuration files, that allow user to customize look and feel of the window manager up to the low-level details, such as autofocus of windows or executing a shell script on magic keypress. The features are pretty important for the workflow described.&lt;br /&gt;&lt;br /&gt;Easiest, immediate, switching to application of interest is by using dedicated button. Actually there are many keyboards that have additional buttons, just for that purpose. The approach has several issues, such as limited amount of buttons, predetermined functionality (psychologically aggravated by inscribed picture on the button) and dependence on the keyboard in use.&lt;br /&gt;&lt;br /&gt;Software buttons, albeit requiring a bit of learning, look much better in this regard. If you use a combination of CTRL, ALT, SHIFT, CTRL+SHIFT, ALT+SHIFT modifier buttons together with the numeric buttons on grey part of the keyboard, you can easily get 45 "hot-keys".&lt;br /&gt;&lt;br /&gt;Once you get 45 "hot-keys", you can create 45 workspaces, arranged in blocks of 9. Module of fvwm2 "FvwmButtons" shows them nicely in a corner of the screen:&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 285px; height: 44px;" src="http://3.bp.blogspot.com/_VbzJ1FZE72w/SRLDTcxlnZI/AAAAAAAAAFQ/97pHYARyCdc/s320/workplaces.png" alt="" id="BLOGGER_PHOTO_ID_5265485653258640786" border="0" /&gt;&lt;br /&gt;The bright rectangles are already open windows. You can drag them from one workspace to another using mouse.&lt;br /&gt;&lt;br /&gt;Now, as we reached the goal of instant switch to any workspace, each workspace can be dedicated to hold window (in rare cases couple of windows) of an application. For example, you can assign workspace ALT+Grey7 to a internet browser, and workspace Alt+Grey1 to a mail client. After several uses you would learn the hot-keys by heart, like you remember your password (which you can always type but not always remember).&lt;br /&gt;&lt;br /&gt;The above scenario assumes that you launch the application in the dedicated workspace manually. Flexibility of the fvwm2 window manager allows to make each switching keypress to run a shell script, that would check whether the workspace already runs the application it was dedicated for, and, if not - automatically launch it.&lt;br /&gt;&lt;br /&gt;This is exactly what I did as you can see in the configuration files over &lt;a href="http://t11.mine.nu/fvwm_45_workspaces/fvwm_45_workspaces_autostart.tar.gz"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As a added bonus, my auto-execution script checks hostname of the computer I am working on, and takes it into account when populating the workspace. For example, one of my workspaces is automatic ssh to the firewall, which is only accessible from inside of the corporate network. On my home computer, switch to the workspace would not launch anything, as it would be pointless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-2898033796652661338?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/2898033796652661338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=2898033796652661338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/2898033796652661338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/2898033796652661338'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2008/11/my-45-workplaces.html' title='my 45 workspaces'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VbzJ1FZE72w/SRLDTcxlnZI/AAAAAAAAAFQ/97pHYARyCdc/s72-c/workplaces.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7511640597328894129.post-3725113359875715223</id><published>2008-09-02T13:20:00.000-07:00</published><updated>2009-07-05T01:43:19.420-07:00</updated><title type='text'>Back to my linux</title><content type='html'>Recently I had to set up linux for my niece, which is eight years old. Besides making the system obscenely simple (that would be subject for a separate post), I was challenged to find a way to get back to her computer, should the need arise.&lt;br /&gt;&lt;br /&gt;As the computer will be behind a NATing router, simply opening the ports was not sufficient. There had to be a way for me to connect to her computer. Here is what I have done:&lt;br /&gt;&lt;br /&gt;I placed on her desktop icon of rescue buoy that was launching following shell script:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;#!/bin/sh&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; gconftool-2 -s -t bool /desktop/gnome/remote_access/&lt;/span&gt;&lt;span style="font-size:85%;"&gt;enabled true &amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;xterm -e ssh -R 2000:127.0.0.1:5900 feshuk-amalia@callback.mycompany.com&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;gconftool-2 -s -t bool /desktop/gnome/remote_access/&lt;/span&gt;&lt;span style="font-size:85%;"&gt;enabled false&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;To make the gnome's builtin VNC server vino to accept incoming connections, I set up it's preferences and password using following commands:&lt;br /&gt;vino-preferences&lt;br /&gt;vino-passwd&lt;br /&gt;&lt;br /&gt;I chose vino over x11vnc server, as it has intrinsic awareness about the windows and background (which it can effectively hide) thus being more traffc-effective, whereas x11vnc treats the whole screen as an image.&lt;br /&gt;&lt;br /&gt;Update 20090704: Users with NVidia card might have problems with vino (&lt;a href="https://bugs.launchpad.net/ubuntu/+source/vino/+bug/353126"&gt;#353126&lt;/a&gt;). One of the workarounds is to use x1vnc server using following command:&lt;br /&gt;x11vnc -display :0.0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The script would make vino to accept VNC connections and execute ssh port forwarding feature, that essentially logins into the feshuk-amalia@callback.mycompany.com, starts listening on port 2000 and redirects the port to 127.0.0.1:5900 on her's local machine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To allow password-less logon, ssh keypair was created, and the public key was copied to /home/feshuk-amalia/.ssh/authorized_keys on the computer callback.mycompany.com.&lt;br /&gt;&lt;br /&gt;This way, should she need my help, all she needs to do is to call me by phone, double click on the "Help me" icon and wait for me. Then all I need is to connect to the port 2000 on the callback.mycompany.com machine using following command:&lt;br /&gt;&lt;br /&gt;xvncviewer -via root@callback.mycompany.com 127.0.0.1::2000&lt;br /&gt;&lt;br /&gt;Once I enter VNC password, I have full access to display, mouse and keyboard of her computer, to install new game or explain how to play in already installed ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7511640597328894129-3725113359875715223?l=skliarie.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skliarie.blogspot.com/feeds/3725113359875715223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7511640597328894129&amp;postID=3725113359875715223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/3725113359875715223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7511640597328894129/posts/default/3725113359875715223'/><link rel='alternate' type='text/html' href='http://skliarie.blogspot.com/2008/09/back-to-my-linux.html' title='Back to my linux'/><author><name>Arie Skliarouk</name><uri>http://www.blogger.com/profile/17337009271103751185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/_VbzJ1FZE72w/SVzMH64B4SI/AAAAAAAAAFc/wuNfsZIiRh4/S220/avatar_skliarie.jpg'/></author><thr:total>0</thr:total></entry></feed>
