<?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'><id>tag:blogger.com,1999:blog-11158290</id><updated>2010-02-17T12:27:49.763+02:00</updated><title type='text'>Stuff to remember.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://log.gmarik.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default?start-index=26&amp;max-results=25'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11158290.post-6879637595444638057</id><published>2009-04-02T04:17:00.001+02:00</published><updated>2009-04-02T04:20:12.712+02:00</updated><title type='text'>moved to gmarik.info</title><content type='html'>This blog will stay but won't be updated.&lt;br /&gt;&lt;br /&gt;I've moved to &lt;a href="http://gmarik.info"&gt;gmarik.info&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update your bookmarks! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-6879637595444638057?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/6879637595444638057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=6879637595444638057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/6879637595444638057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/6879637595444638057'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2009/04/moved-to-gmarikinfo.html' title='moved to gmarik.info'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-2048508774851791179</id><published>2009-01-02T02:50:00.003+02:00</published><updated>2009-01-02T02:53:56.408+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snippet'/><category scheme='http://www.blogger.com/atom/ns#' term='snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='sharing'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='gist'/><category scheme='http://www.blogger.com/atom/ns#' term='gist.sh'/><title type='text'>Code snippets - gists</title><content type='html'>If you collaborate and share code snippets you may like &lt;a href='http://github.com/gmarik/gist.sh/tree/master'&gt;gist.sh&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Description:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Bash script for getting/posting code snippets (gists) to/from http://gist.github.com&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Usage&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    * Getting gist.sh:&lt;br /&gt;&lt;br /&gt;      $ curl http://github.com/gmarik/gist.sh/raw/master/gist.sh &gt; gist.sh &amp;&amp; chmod 755 gist.sh &amp;&amp; sudo mv gist.sh /usr/local/bin/&lt;br /&gt;&lt;br /&gt;    * Posting to GitHub:&lt;br /&gt;&lt;br /&gt;      $ cat file | gist.sh&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;$ gist.sh &lt; file·&lt;br /&gt;&lt;br /&gt;    * Getting from GitHub:&lt;br /&gt;&lt;br /&gt;      $ gist.sh 1234&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-2048508774851791179?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/2048508774851791179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=2048508774851791179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/2048508774851791179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/2048508774851791179'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2009/01/code-snippets-gists.html' title='Code snippets - gists'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-2304599889551203330</id><published>2008-12-22T02:32:00.009+02:00</published><updated>2008-12-22T18:38:54.118+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='domain'/><category scheme='http://www.blogger.com/atom/ns#' term='gmarik.info'/><category scheme='http://www.blogger.com/atom/ns#' term='google apps'/><title type='text'>Moved to log.gmarik.info</title><content type='html'>Since now this blog is accessible at &lt;a href="http://log.gmarik.info"&gt;log.gmarik.info&lt;/a&gt; !&lt;br /&gt;&lt;br /&gt;Log:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.google.com/a/cpanel/domain/new"&gt;registered a domain with google apps&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Disabled both &lt;em&gt;Sites&lt;/em&gt; and &lt;em&gt;Start Page&lt;/em&gt; services using google apps &lt;em&gt;Service settings&lt;/em&gt; (to avoid nasty &lt;a href="http://blogging.nitecruzr.net/2007/06/another-blog-is-already-hosted-at-this.html"&gt;Another blog is already hosted at this address&lt;/a&gt; error)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; used &lt;strong&gt;www&lt;/strong&gt;.gmarik.info as domain name for &lt;em&gt;custom domain name&lt;/em&gt; (advanced mode in blogger.com blog's Settings/Publishing )&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Nice!&lt;br /&gt;&lt;br /&gt;PS: access google apps domain managing dashboard at &lt;a href="www.google.com/a/your_domain_name"&gt;www.google.com/a/your_domain_name&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-2304599889551203330?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/2304599889551203330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=2304599889551203330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/2304599889551203330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/2304599889551203330'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/12/moved-to-gmarikinfo.html' title='Moved to log.gmarik.info'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-813152916726418555</id><published>2008-11-25T13:10:00.007+02:00</published><updated>2008-12-30T22:57:53.091+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='add-on'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><title type='text'>Linux howto: Enable Java runtime in Firefox</title><content type='html'>You need to &lt;br /&gt;1) &lt;a href="http://www.java.com/en/download/help/5000010500.xml"&gt;have jre installed&lt;/a&gt;&lt;br /&gt;2) &lt;code&gt;Edit &gt; Preferences / [ Content ] tab: [ ] Enable Java&lt;/code&gt; checkbox &lt;b&gt;checked&lt;/b&gt;&lt;br /&gt;3) &lt;br /&gt;$ cd /path/to/firefox/plugins &lt;br /&gt;$ ln -s /path/to/java/jre/plugin/i386/ns7/libjavaplugin_oji.so ./&lt;br /&gt;4) &lt;a href="http://www.java.com/en/download/help/testvm.xml"&gt;test&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kb.mozillazine.org/Java#On_Linux"&gt;source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS:&lt;br /&gt;running .jnlp apps:&lt;br /&gt;$ $JAVA_HOME/bin/javaws ./app.jnlp&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-813152916726418555?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/813152916726418555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=813152916726418555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/813152916726418555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/813152916726418555'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/11/linux-howto-enable-java-runtime-in.html' title='Linux howto: Enable Java runtime in Firefox'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-6151277233413003083</id><published>2008-11-10T13:49:00.004+02:00</published><updated>2008-11-10T13:57:44.334+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chkconfig'/><category scheme='http://www.blogger.com/atom/ns#' term='sys-v'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu: sysv-rc-conf - missing admin tool</title><content type='html'>I'm coming from RedHat school. &lt;br /&gt;After switching to Ubuntu I missed&lt;span style="font-style:italic;"&gt;&lt;/span&gt; &lt;code&gt;chkconfig&lt;/code&gt; tool for managing services.&lt;br /&gt;&lt;br /&gt;But Ubuntu provides same managing interface with &lt;code&gt;sysv-rc-conf&lt;/code&gt; instead.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$sudo apt-get install sysv-rc-conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Nice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-6151277233413003083?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/6151277233413003083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=6151277233413003083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/6151277233413003083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/6151277233413003083'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/11/ubuntu-sysv-rc-conf-missing-admin-tool.html' title='Ubuntu: sysv-rc-conf - missing admin tool'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-5440809869340176199</id><published>2008-10-29T01:12:00.005+02:00</published><updated>2008-10-29T01:51:57.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='peoplenet'/><category scheme='http://www.blogger.com/atom/ns#' term='modem'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='3g'/><category scheme='http://www.blogger.com/atom/ns#' term='wvdial'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Peoplenet on Ubuntu Linux</title><content type='html'>I've got CCU-550(3G/UMTS) modem. &lt;br /&gt;I've never installed modems on Linux before so I just hoped that newest distros have right tools to do that.&lt;br /&gt;&lt;br /&gt;I wanted to start using it quickly therefore began with NetworkManager's PointToPoint connection option. But it didn't want to work...&lt;br /&gt;&lt;br /&gt;Then I looked at &lt;a href="http://onorua.livejournal.com/12553.html" rel="nofollow"&gt;pppd&lt;/a&gt; &lt;a href="http://fatroom.blogspot.com/2007/08/peoplenet-linux.html" rel="nofollow"&gt;stcripts&lt;/a&gt;. But it didn't work for me either...&lt;br /&gt;&lt;br /&gt;At that point I didn't have internet access so the only option i could progress with was reading man pages for &lt;strong&gt;wvdial&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Interesting what man page says about &lt;q&gt;&lt;strong&gt;wvdial&lt;/strong&gt; - PPP dialer with built-in intelligence.&lt;/q&gt;&lt;br /&gt;And it turned out to be true :)&lt;br /&gt;&lt;br /&gt;So i launched&lt;code&gt;&lt;br /&gt;$man 5 wvdial.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;copied sample configuration to &lt;code&gt;/etc/wvdial.conf&lt;/code&gt; and modified to look like:&lt;code&gt;&lt;br /&gt;[Dialer Defaults]&lt;br /&gt;Modem = /dev/ttyACM0&lt;br /&gt;Baud = 460800&lt;br /&gt;Init = ATZ&lt;br /&gt;Phone = #777&lt;br /&gt;Username = 80921111111@people.net.ua&lt;br /&gt;Password = 111111&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To get the proper Modem location i did:&lt;code&gt;&lt;br /&gt;$dmesg |grep tty&lt;br /&gt;[  164.384650] cdc_acm 2-1:1.0: ttyACM0: USB ACM device&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then launching:&lt;code&gt;&lt;br /&gt;$wvdial&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I got it working:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ ifconfig |\grep -A 1 ppp &lt;br /&gt;ppp0      Link encap:Point-to-Point Protocol  &lt;br /&gt;          inet addr:my.ip.addr.ess  P-t-P:pp.ip.addr.ess  Mask:255.255.255.255&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Wow! Nice! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-5440809869340176199?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/5440809869340176199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=5440809869340176199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/5440809869340176199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/5440809869340176199'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/10/peoplenet-on-ubuntu-linux.html' title='Peoplenet on Ubuntu Linux'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-5182708675095083729</id><published>2008-10-25T17:22:00.012+02:00</published><updated>2008-12-30T22:56:08.251+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sudo'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='rake'/><title type='text'>using rake with sudo</title><content type='html'>I was installing datamapper gems like: &lt;code&gt;&lt;br /&gt;gmarik@gm:master\dm-more.git$ sudo rake install&lt;br /&gt;sudo: rake: command not found&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo&lt;/code&gt; restricts environment settins: &lt;code style="overflow:auto"&gt;&lt;br /&gt;$ sudo env|\grep PATH&lt;br /&gt;PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin&lt;/code&gt;&lt;br /&gt;As you can see &lt;code&gt;rake&lt;/code&gt; path is not included:&lt;code&gt;&lt;br /&gt;$ which rake&lt;br /&gt;/usr/local/lib/ruby/gems/bin/rake&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You can edit &lt;code&gt;sudo PATH&lt;/code&gt; to include &lt;code&gt;/usr/local/lib/ruby/gems/bin&lt;/code&gt;. &lt;br /&gt;=== UPDATED AT 2008.12.04 =====&lt;br /&gt;&lt;ins&gt; or run rake with &lt;code&gt;PATH&lt;/code&gt; set like:&lt;code&gt;&lt;br /&gt;sudo env PATH=$PATH rake&lt;/code&gt;&lt;/ins&gt;&lt;br /&gt;===============================&lt;br /&gt;Bu i just symlinked &lt;code&gt;rake&lt;/code&gt;:&lt;code&gt;&lt;br /&gt;$sudo ln -s `which rake` /usr/local/bin/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now it works:&lt;code&gt;&lt;br /&gt;$ sudo rake --version&lt;br /&gt;rake, version 0.8.3&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-5182708675095083729?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/5182708675095083729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=5182708675095083729' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/5182708675095083729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/5182708675095083729'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/10/using-rake-with-sudo.html' title='using rake with sudo'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-7183368760839383939</id><published>2008-10-20T11:00:00.007+02:00</published><updated>2008-10-20T11:34:42.595+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='fglrx'/><category scheme='http://www.blogger.com/atom/ns#' term='direct rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu 8.04'/><category scheme='http://www.blogger.com/atom/ns#' term='mesa'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 8.04: fglrx-ATI direct rendering, issue 3: Kernel update</title><content type='html'>Just rebooted my machine after kernel update few days ago.&lt;br /&gt;Previous Kernel: &lt;code&gt;2.6.24-19-generic&lt;/code&gt;&lt;br /&gt;Current version:&lt;code&gt;&lt;br /&gt;$ uname -a&lt;br /&gt;Linux gm 2.6.24-21-generic #1 SMP Mon Aug 25 17:32:09 UTC 2008 i686 GNU/Linux&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;And, yes - got fglrx broken again:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ fglrxinfo &lt;br /&gt;display: :0.0  screen: 0&lt;br /&gt;OpenGL vendor string: Mesa project: www.mesa3d.org&lt;br /&gt;OpenGL renderer string: Mesa GLX Indirect&lt;br /&gt;OpenGL version string: 1.4 (2.1 Mesa 7.0.3-rc2)&lt;br /&gt;&lt;br /&gt;$ glxinfo |grep direct&lt;br /&gt;3:direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As for solution - check out my &lt;a href="http://gmarik.blogspot.com/2008/06/ubuntu-804-ati-directr-rendering-issue.html"&gt;prevous post for same issue&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-7183368760839383939?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/7183368760839383939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=7183368760839383939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/7183368760839383939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/7183368760839383939'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/10/ubuntu-804-ati-directr-rendering-issue.html' title='Ubuntu 8.04: fglrx-ATI direct rendering, issue 3: Kernel update'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-8861941664463537833</id><published>2008-06-17T19:42:00.006+02:00</published><updated>2008-06-17T20:02:42.012+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dri'/><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='fglrx'/><category scheme='http://www.blogger.com/atom/ns#' term='direct rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 8.04: ATI directr rendering, issue 2</title><content type='html'>Well i got it broken again.&lt;br /&gt;&lt;br /&gt;This time running&lt;br /&gt;&lt;code&gt;$ sudo modprobe --ignore-install fglrx&lt;/code&gt;&lt;br /&gt;yielded&lt;br /&gt;&lt;code&gt;FATAL: Module fglrx not found&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;WTF??&lt;br /&gt;&lt;br /&gt;By examining &lt;em&gt;System &amp;gt; Administration &amp;gt; Hardware Drivers&lt;/em&gt; i found &lt;strong&gt;no driver for ATI card&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;To fix that i went to &lt;em&gt;System &amp;gt; Administration &amp;gt; Synaptic Package Manager&lt;/em&gt; and searched for &lt;strong&gt;fglrx&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;I had &lt;strong&gt;linux-restricted-modules&lt;/strong&gt; installed for &lt;strong&gt;2.6.24.12-16.34&lt;/strong&gt; kernel installed.&lt;br /&gt;But actual kernel version was&lt;br /&gt;&lt;code&gt;$ uname -a&lt;br /&gt;Linux gm &lt;strong&gt;2.6.24-19-generic&lt;/strong&gt; #1 SMP Wed Jun 4 16:35:01 UTC 2008 i686 GNU/Linux&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So removing old and installing appropriate &lt;strong&gt;linux-restricted-modules&lt;/strong&gt; for &lt;strong&gt;2.6.24.13-19.24&lt;/strong&gt; kernels solved my direct rendering issue:&lt;br /&gt;&lt;code&gt;$ glxinfo |grep direct&lt;br /&gt;3:direct rendering: Yes&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;PS. Don't forget to reboot!&lt;br /&gt;Hope this will help you too! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-8861941664463537833?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/8861941664463537833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=8861941664463537833' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8861941664463537833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8861941664463537833'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/06/ubuntu-804-ati-directr-rendering-issue.html' title='Ubuntu 8.04: ATI directr rendering, issue 2'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-6441856881341036175</id><published>2008-05-05T13:24:00.004+02:00</published><updated>2008-05-05T17:02:32.645+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dri'/><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 8.04: ATI direct rendering issue</title><content type='html'>After upgrade to Ubuntu 8.04 i got direct rendering broken:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ glxinfo |grep direct&lt;br /&gt;3:direct rendering: No&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Though everything was configured properly and seemed to work ok.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.cchtml.com/index.php/Ubuntu_Hardy_Installation_Guide#Removing_Mesa_drivers"&gt;Removing MESA drivers&lt;/a&gt; solved the issue.&lt;br /&gt;&lt;br /&gt;Overall: 8.04 is still kinda slow comparing to 7.10. (Sometimes I think I shouldn't have upgraded to 8.04)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-6441856881341036175?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/6441856881341036175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=6441856881341036175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/6441856881341036175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/6441856881341036175'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/05/ubuntu-804-ati-direct-rendering-issue.html' title='Ubuntu 8.04: ATI direct rendering issue'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-1719437752367597622</id><published>2008-04-30T11:12:00.010+02:00</published><updated>2008-04-30T11:40:04.703+02:00</updated><title type='text'>DataMapper: installing do_mysql on Ubuntu 8.04</title><content type='html'>Usually I had gems installed flawlessly.&lt;br /&gt;&lt;br /&gt;But this time i wasn't so lucky with &lt;a href="http://dataobjects.devjavu.com/"&gt;do_mysql&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I got this:&lt;pre&gt;&lt;code&gt;&lt;br /&gt;$ sudo gem install do_mysql --no-ri --no-rdoc&lt;br /&gt;Building native extensions.  This could take a while...&lt;br /&gt;ERROR:  Error installing do_mysql:&lt;br /&gt; ERROR: Failed to build gem native extension.&lt;br /&gt;&lt;br /&gt;/usr/local/bin/ruby extconf.rb install do_mysql --no-ri --no-rdoc&lt;br /&gt;checking for mysql_query() in -lmysqlclient... no&lt;br /&gt;checking for main() in -lm... no&lt;br /&gt;checking for mysql_query() in -lmysqlclient... no&lt;br /&gt;checking for main() in -lz... no&lt;br /&gt;checking for mysql_query() in -lmysqlclient... no&lt;br /&gt;checking for main() in -lsocket... no&lt;br /&gt;checking for mysql_query() in -lmysqlclient... no&lt;br /&gt;checking for main() in -lnsl... no&lt;br /&gt;checking for mysql_query() in -lmysqlclient... no&lt;br /&gt;*** extconf.rb failed ***&lt;br /&gt;Could not create Makefile due to some reason, probably lack of&lt;br /&gt;necessary libraries and/or headers.  Check the mkmf.log file for more&lt;br /&gt;details.  You may need configuration options.&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Little extra configuration solved the issue&lt;br /&gt;&lt;pre style="overflow:auto"&gt;&lt;code&gt;&lt;br /&gt;$ sudo gem install do_mysql --no-ri --no-rdoc &lt;strong&gt;-- --with-mysql-lib=/usr/lib/mysql/&lt;/strong&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now i can play with &lt;a href="http://datamapper.org/getting_started.html"&gt;DataMapper&lt;/a&gt; eventually :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-1719437752367597622?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/1719437752367597622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=1719437752367597622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1719437752367597622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1719437752367597622'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2008/04/datamapper-installing-domysql-on-ubuntu.html' title='DataMapper: installing do_mysql on Ubuntu 8.04'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-8475021648248180555</id><published>2007-12-27T23:17:00.000+02:00</published><updated>2007-12-30T17:15:43.568+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='heredoc'/><category scheme='http://www.blogger.com/atom/ns#' term='here document'/><title type='text'>Ruby's here document mini tutorial.</title><content type='html'>&lt;ins datetime="20071230"&gt;Last update: 2007.12.30&lt;/ins&gt;&lt;br /&gt;&lt;h3&gt;Basics&lt;/h3&gt;&lt;a href="http://en.wikipedia.org/wiki/Here_document"&gt;Here Document&lt;/a&gt;(or HereDoc) is a way to declare &lt;a href="http://ruby-doc.org/docs/ProgrammingRuby/html/tut_stdtypes.html#S2"&gt;String&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/String_literal"&gt;literal&lt;/a&gt; in &lt;a href="http://ruby-lang.org/"&gt;Ruby programming language&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;some_text = &amp;lt;&amp;lt;END_OF_STRING&lt;br /&gt; You can write any text &lt;strong&gt;here&lt;/strong&gt; for your &lt;strong&gt;doc&lt;/strong&gt;ument that's why such&lt;br /&gt; statement is called - &lt;strong&gt;HereDoc&lt;/strong&gt;&lt;br /&gt;END_OF_STRING&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;That's it! Now &lt;code&gt;some_text&lt;/code&gt; variable points to the string object containing the text going between &lt;code&gt;END_OF_STRING&lt;/code&gt;&lt;br /&gt;As you may know HereDoc isn't a unique Ruby feature, rather it's a common construct(with some distinctions) for scripting languages "brewed" in Unix environment.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The terminator&lt;/h3&gt;By Ruby convention &lt;a href="http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RubyCodingConvention#Constants"&gt;a variable starting with capital letter is a constant&lt;/a&gt;. But that's not a case for the &lt;code&gt;END_OF_STRING&lt;/code&gt; from previous example, because  terminator is just a &lt;em&gt;string&lt;/em&gt; which parser treats as the end of HereDoc.&lt;br /&gt;Well if a terminator is a string then can i use arbitrary(say put spaces within) string as the terminator like &lt;code&gt;end of string&lt;/code&gt;? The answer is - yes you can!&lt;br /&gt;&lt;code&gt; &amp;lt;&amp;lt;heredoc &lt;/code&gt; is interpreted same as &lt;code&gt; &lt;&lt;"heredoc" &lt;/code&gt;(please note double quotes around latter &lt;code&gt; heredoc&lt;/code&gt;). &lt;br /&gt;But explicit notation(with quotes) is a bit more powerful.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;String interpolation&lt;/h3&gt;By explicitly enclosing terminator with quotes you may have:&lt;pre&gt;&lt;code&gt;a_text = &lt;&lt;"Ruby, please end my HereDoc once you find this terminator string"&lt;br /&gt;Hello world!&lt;br /&gt;Ruby, please end my HereDoc once you find this terminator string&lt;/code&gt;&lt;/pre&gt; or &lt;pre&gt;&lt;code&gt;fuzzy_names = &lt;&lt;"&gt;&gt;"&lt;br /&gt;foo, baz, bar&lt;br /&gt;&gt;&gt;&lt;/code&gt;&lt;/pre&gt;Wow, if i can use double quoted string, then probably i can use single quoted string as well:&lt;pre&gt;&lt;code&gt;puts &lt;&lt;'end of string'&lt;br /&gt; 1+1=#{1+1}&lt;br /&gt;end of string&lt;/code&gt;&lt;/pre&gt;prints&lt;pre&gt;1+1=#{1+1}&lt;/pre&gt;as single quoted &lt;a href="http://ruby-doc.org/docs/ProgrammingRuby/html/tut_stdtypes.html#S2"&gt;strings&lt;/a&gt; aren't interpolated unlike double quoted:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;puts &lt;&lt;"end of string"&lt;br /&gt; 1+1=#{1+1}&lt;br /&gt;end of string&lt;/code&gt;&lt;/pre&gt;prints&lt;pre&gt;&lt;code&gt;1+1=2&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt;Indent modifier&lt;/h3&gt;By default HereDoc terminator is expected to be placed on the very beginning of the separate line&lt;br /&gt;By using &lt;code&gt;-&lt;/code&gt; on HereDoc declaration, you may indent end terminator arbitrary:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;greeting = &lt;&lt;-"here document ends"&lt;br /&gt;                 Hello world&lt;br /&gt;               here document ends&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Keep in mind that leading spaces are kept.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Advanced usages&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;a, b = &lt;&lt;'EOA', &lt;&lt;-EOB&lt;br /&gt;string_a&lt;br /&gt;EOA&lt;br /&gt;string_b&lt;br /&gt;   EOB&lt;/code&gt;&lt;/pre&gt;is equal to&lt;pre&gt;&lt;code&gt;a, b = "string_a\n", "string_b\n"&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;At this point i'm thinking about HereDoc as "placeholder" that gets substituted with the string itself. Why is that important? Because you may then treat HereDoc declaration as the actual string and send messages(call methods):&lt;pre&gt;&lt;code&gt;&lt;&lt;'heredoc'.reverse == "\n!dlrow olleH"&lt;br /&gt;Hello world!&lt;br /&gt;heredoc&lt;/code&gt;&lt;/pre&gt; is a true statement!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-8475021648248180555?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/8475021648248180555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=8475021648248180555' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8475021648248180555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8475021648248180555'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/12/rubys-here-document-heredoc-mini.html' title='Ruby&apos;s here document mini tutorial.'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-4490190509838836471</id><published>2007-12-20T20:03:00.000+02:00</published><updated>2007-12-20T20:16:44.198+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indication'/><category scheme='http://www.blogger.com/atom/ns#' term='indicator'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='activity'/><title type='text'>Pragmatic ajax activity indicator with prototype and css</title><content type='html'>&lt;h3&gt;Step1&lt;/h3&gt;Put this javascript snipped somewhere into your html or as javascript inclusion:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;Ajax.Responders.register({&lt;br /&gt;  onCreate: function() {&lt;br /&gt;    if($$('body').first() &amp;&amp; Ajax.activeRequestCount &gt; 0)&lt;br /&gt;        $$('body').first().addClassName('busy')&lt;br /&gt;  },&lt;br /&gt;  onComplete: function() {&lt;br /&gt;    if($$('body.busy') &amp;&amp; Ajax.activeRequestCount == 0)&lt;br /&gt;        $$('body.busy').first().removeClassName('busy')&lt;br /&gt;  }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Previous chunk adds a &lt;code&gt;body&lt;/code&gt; css class name to the html's &lt;code&gt;body&lt;/code&gt; element everytime the Ajax.Request is made to the server. Pretty simple, eh?&lt;br /&gt;&lt;h3&gt;Step 2&lt;/h3&gt;Define such css styles somewhere:&lt;br /&gt;&lt;code&gt; &lt;pre&gt;&lt;br /&gt;body.busy * {&lt;br /&gt;  cursor: progress !important;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This css rule says to change mouse cursor to convey us to wait a bit...&lt;br /&gt;&lt;h3&gt;Step 3&lt;/h3&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-4490190509838836471?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/4490190509838836471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=4490190509838836471' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/4490190509838836471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/4490190509838836471'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/12/pragmatic-ajax-activity-indicator-with.html' title='Pragmatic ajax activity indicator with prototype and css'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-5248834135115060891</id><published>2007-11-15T22:55:00.000+02:00</published><updated>2008-12-09T19:12:05.464+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><title type='text'>VirtualBox seamless mode</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SriKiRB4s00/Rzy0zrQEnHI/AAAAAAAACrM/WFSlANX23jc/s1600-h/vbox-seamless.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_SriKiRB4s00/Rzy0zrQEnHI/AAAAAAAACrM/WFSlANX23jc/s320/vbox-seamless.png" alt="" id="BLOGGER_PHOTO_ID_5133176475171986546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.virtualbox.org/wiki/Downloads"&gt;VirtualBox&lt;/a&gt;'s Seamless mode is just amazing feature.&lt;br /&gt;You just have to &lt;a href="http://1.bp.blogspot.com/_SriKiRB4s00/Rzy0zrQEnHI/AAAAAAAACrM/WFSlANX23jc/s1600-h/vbox-seamless.png"&gt;check it out&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;1. Boot your guest OS(windoze only i guess)&lt;br /&gt;2. Devices &gt; Install Guest Additions&lt;br /&gt;3. FOllow the instructions&lt;br /&gt;4. Machine &gt; Seamless Mode&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;VirtualBox rox!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-5248834135115060891?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/5248834135115060891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=5248834135115060891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/5248834135115060891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/5248834135115060891'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/11/virtualbox-seamless-mode.html' title='VirtualBox seamless mode'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_SriKiRB4s00/Rzy0zrQEnHI/AAAAAAAACrM/WFSlANX23jc/s72-c/vbox-seamless.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-1101459846958625283</id><published>2007-11-15T21:48:00.000+02:00</published><updated>2007-11-16T00:59:27.120+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='capistrano'/><title type='text'>Howto: run both 1.* and 2.* capistrano versions</title><content type='html'>Assuming you already have 1.* capistrano version.&lt;br /&gt;To make sure you'll need to:&lt;br /&gt;&lt;code&gt;$ cap --version&lt;br /&gt;Capistrano v1.4.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;then query for required 2.* version:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ gem search capi -r&lt;br /&gt;*** REMOTE GEMS ***&lt;br /&gt;capistrano (2.1.0, 2.0.0, 1.4.1, 1.4.0, 1.3.1, 1.3.0, 1.2.0, 1.1.0)&lt;br /&gt;   Capistrano is a utility and framework for executing commands in&lt;br /&gt;   parallel on multiple remote machines, via SSH.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and install:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ gem install capistrano -v 2.1.0&lt;br /&gt;Successfully installed capistrano-2.1.0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now check capistrano version again:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ cap --version&lt;br /&gt;Capistrano v2.1.0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note that now we have capistrano 2.* by default&lt;br /&gt;&lt;br /&gt;Now we need to get runner for capistrano 1.*:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$cp `which cap`{,2} &lt;/code&gt;&lt;br /&gt;creates &lt;em&gt;cap2&lt;/em&gt; executable&lt;br /&gt;&lt;br /&gt;For capistrano 1.* we need to&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$vim `which cap`&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and change line&lt;br /&gt;&lt;br /&gt;&lt;code&gt;version = "&gt; 0"&lt;/code&gt;&lt;br /&gt;to&lt;br /&gt;&lt;code&gt;version = "&amp;lt; 2"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now check version again:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ cap --version&lt;br /&gt;Capistrano v1.4.1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To have capistrano 2.* it's required to&lt;br /&gt;&lt;code&gt;$vim `which &lt;em&gt;cap2&lt;/em&gt;`&lt;/code&gt;&lt;br /&gt;and change line&lt;br /&gt;&lt;br /&gt;&lt;code&gt;version = "&gt; 0"&lt;/code&gt;&lt;br /&gt;into&lt;br /&gt;&lt;code&gt;version = "&gt;= 2"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now check:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ cap2 --version&lt;br /&gt;Capistrano v2.1.0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;PS: ofcourse you can use "official" &lt;a href="http://www.capify.org/upgrade/faq"&gt;way for having 2 version&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-1101459846958625283?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/1101459846958625283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=1101459846958625283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1101459846958625283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1101459846958625283'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/11/howto-run-both-1-and-2-capistrano.html' title='Howto: run both 1.* and 2.* capistrano versions'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-736787964566481854</id><published>2007-11-06T23:46:00.000+02:00</published><updated>2008-12-09T19:12:05.650+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patch'/><category scheme='http://www.blogger.com/atom/ns#' term='side_bar'/><category scheme='http://www.blogger.com/atom/ns#' term='gruff'/><title type='text'>gruff 0.2.9 side_bar (stacked) patch</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SriKiRB4s00/RzDhyiZbGnI/AAAAAAAACl0/o34cfB_ojnE/s1600-h/functions_by_charachter.png"&gt; &lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer;" src="http://4.bp.blogspot.com/_SriKiRB4s00/RzDhyiZbGnI/AAAAAAAACl0/o34cfB_ojnE/s320/functions_by_charachter.png" alt="" id="BLOGGER_PHOTO_ID_5129848233918143090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've extracted &lt;a href="http://nubyonrails.com/pages/gruff"&gt;gruff&lt;/a&gt; &lt;a href="http://rubyforge.org/tracker/index.php?func=detail&amp;aid=15400&amp;group_id=1044&amp;atid=4083"&gt;&lt;del&gt;patch&lt;/del&gt;&lt;/a&gt; &lt;upd&gt;(applied, thanks &lt;a href="http://geoffreygrosenbach.com/"&gt;Geoffrey&lt;/a&gt;)&lt;/upd&gt; which fixes sidebar to &lt;em&gt;look like side-bar and not a stacked-bar&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-736787964566481854?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/736787964566481854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=736787964566481854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/736787964566481854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/736787964566481854'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/11/gruff-029-sidebar-stacked-patch.html' title='gruff 0.2.9 side_bar (stacked) patch'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SriKiRB4s00/RzDhyiZbGnI/AAAAAAAACl0/o34cfB_ojnE/s72-c/functions_by_charachter.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-8964280077624642318</id><published>2007-10-23T16:57:00.000+02:00</published><updated>2007-11-15T23:17:35.429+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='module'/><title type='text'>VirtualBox on Fedora installation</title><content type='html'>I was setting up VirtualBox on my machine and encountered error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo /etc/init.d/vboxdrv setup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Starting VirtualBox kernel module FATAL: Error inserting vboxdrv (/lib/modules/2.6.22.9-61.fc6/misc/vboxdrv.ko): Invalid module format&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well that was because my kernel-sources didn't match my running kernel the module was built for.&lt;br /&gt;&lt;br /&gt;I checked the /usr/src/kernels:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2.6.22.9-61.fc6-i586&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and compared with uname -a:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Linux gm 2.6.22.9-61.fc6 #1 SMP Thu Sep 27 18:48:03 EDT 2007 i686 i686 i386 GNU/Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;machine architecture uname -i:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;i686&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That means that to get module compiled i need to have kernel-sources(package named kernel-devel on fedora): for i686 architecture, and i had i586 instead&lt;br /&gt;&lt;br /&gt;so find appropriate package:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo yum search kernel-devel:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kernel-devel.i686                        2.6.22.9-61.fc6        updates        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Matched from:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kernel-devel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;then install it&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo yum install kernel-devel-2.6.22.9-61.fc6.i686&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;now link like:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ cd /usr/src/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ sudo ln -s kernels/2.6.22.9-61.fc6-i686/ linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to get &lt;span style="font-family:courier new;"&gt;linux&lt;/span&gt; link to point installed sources this:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[gmarik@gm src]$ ls -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kernels&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;linux -&gt; kernels/2.6.22.9-61.fc6-i686/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;redhat&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Having done that now we can try to setup VirtualBox again:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$  sudo /etc/init.d/vboxdrv setup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Stopping VirtualBox kernel module                          [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Recompiling VirtualBox kernel module                       [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Starting VirtualBox kernel module                          [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS: make sure your user have been added to vboxusers group&lt;br /&gt;&lt;upd&gt;PPS: usually after rebooting machine i need to do:&lt;br /&gt;$ sudo chmod g+rw /dev/vboxdrv&lt;br /&gt;&lt;/upd&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-8964280077624642318?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/8964280077624642318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=8964280077624642318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8964280077624642318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8964280077624642318'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/10/virtualbox-on-fedora-installation.html' title='VirtualBox on Fedora installation'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-1700835113956490168</id><published>2007-10-04T11:10:00.000+02:00</published><updated>2008-12-09T19:12:05.748+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bars'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>yet another html+css table bars|charts</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SriKiRB4s00/RwSulDy6KoI/AAAAAAAACQw/ExPe1KD4dAQ/s1600-h/html+table%2Bcss+graph%7Cchart-screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_SriKiRB4s00/RwSulDy6KoI/AAAAAAAACQw/ExPe1KD4dAQ/s320/html+table%2Bcss+graph%7Cchart-screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5117407028296952450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tablebars.googlecode.com/svn/trunk/table_bars.html"&gt;Download &amp;amp; view&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-1700835113956490168?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/1700835113956490168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=1700835113956490168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1700835113956490168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1700835113956490168'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/10/yet-another-htmlcss-table-barscharts.html' title='yet another html+css table bars|charts'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_SriKiRB4s00/RwSulDy6KoI/AAAAAAAACQw/ExPe1KD4dAQ/s72-c/html+table%2Bcss+graph%7Cchart-screenshot.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-1003697602708374663</id><published>2007-09-27T18:42:00.000+02:00</published><updated>2007-12-31T19:50:54.834+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='partial'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='workaround'/><category scheme='http://www.blogger.com/atom/ns#' term='locals'/><title type='text'>rails: optional locals values in partials</title><content type='html'>As you may know, rails' &lt;a href="http://api.rubyonrails.com/classes/ActionView/Partials.html"&gt;partial&lt;/a&gt; is a proper way for producing reusable view chunks&lt;br /&gt;&lt;br /&gt;But sometimes you may need the partial to look different depending on contetext( say partial "_post" is used in "posts_list" and "single_post" templates). No problems - rails gives you :locals option&lt;br /&gt;&lt;br /&gt;.rhtml&lt;br /&gt;&lt;pre style="overflow: auto;" class="code rhtml"&gt;&lt;br /&gt;&lt;%= render :partial =&gt; 'post', :locals =&gt; {:look_different =&gt; true} %&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And then you can do in parial like&lt;br /&gt;_post.rhtml&lt;br /&gt;&lt;pre style="overflow: auto;" class="code rhtml"&gt;&lt;br /&gt;&amp;lt;% if look_different %&gt;&lt;br /&gt;  &amp;lt;p&gt;look different &amp;lt;p&gt;&lt;br /&gt;&amp;lt;% else %&gt;&lt;br /&gt;  &amp;lt;p&gt;look usual &amp;lt;p&gt;&lt;br /&gt;&lt;% end %&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;But it gets painful passing all the locals all the time...otherwise you'll get NameError for not passing partial's option&lt;h3&gt;Solution: optional locals values &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.railsweenie.com/forums/6/topics/1614"&gt;hash based&lt;/a&gt; (&lt;a href="http://209.85.135.104/search?q=cache:Lw2hoPUkO40J:www.railsweenie.com/forums/6/topics/1614+rails+local+variables+partials&amp;amp;hl=uk&amp;amp;ct=clnk&amp;amp;cd=4&amp;amp;gl=ua&amp;amp;client=firefox-a"&gt;google cache&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://hackd.wordpress.com/2007/08/25/how-to-make-a-rails-partial-with-optional-locals-parameters/"&gt;defined?(based_solution)&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="#rails_solution"&gt;core rails team solution :)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3 id="rails_solution"&gt;Core rails team solution&lt;/h3&gt;&lt;br /&gt;just use local_assigns[:key] to access your local variables :)&lt;br /&gt;Like&lt;br /&gt;_post.rhtml&lt;pre style="overflow: auto;" class="code rhtml"&gt;&lt;br /&gt;&amp;lt;% if local_assigns[:look_different] %&gt;&lt;br /&gt;  &amp;lt;p&gt;look different &amp;lt;p&gt;&lt;br /&gt;&amp;lt;% else %&gt;&lt;br /&gt;  &amp;lt;p&gt;look usual &amp;lt;p&gt;&lt;br /&gt;&lt;% end %&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;del&gt;&lt;em&gt;from &lt;a href="http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-3/actionpack/lib/action_view/base.rb"&gt;rails  1.2.3&lt;/a&gt; sources&lt;/em&gt;&lt;/del&gt;&lt;br /&gt;&lt;upd&gt;from &lt;a href="http://api.rubyonrails.com/classes/ActionView/Base.html"&gt;ActionView::Base&lt;/a&gt; docs&lt;/upd&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-1003697602708374663?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/1003697602708374663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=1003697602708374663' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1003697602708374663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1003697602708374663'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/09/rails-optional-locals-values-in.html' title='rails: optional locals values in partials'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-37574220865892430</id><published>2007-09-17T16:24:00.000+02:00</published><updated>2007-09-17T17:42:40.098+02:00</updated><title type='text'>Google code uses jQuery!</title><content type='html'>Today, surfing around &lt;a href="http://code.google.com"&gt;google code&lt;/a&gt; i accidentally stoped page loading and found pretty interesting js error:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;a.feed.entries[b],e=r(d),f=g(m,e);&lt;br /&gt;jQuery("#techtalks .posts").append(f)&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Meaning that Google uses &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;jQuery rox! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-37574220865892430?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/37574220865892430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=37574220865892430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/37574220865892430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/37574220865892430'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/09/google-code-uses-jquery.html' title='Google code uses jQuery!'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-1686679486538896823</id><published>2007-09-14T01:10:00.000+02:00</published><updated>2007-09-14T01:34:48.448+02:00</updated><title type='text'>The button element</title><content type='html'>Here's my &lt;a href="http://code.google.com/p/ie-button-fix/"&gt;fix&lt;/a&gt; for a IE &lt;a href="http://radaschuetz.com/archive/2007/04/21/button-hell/"&gt;button hell&lt;/a&gt;(first 2 issues) i've created a while ago actually...&lt;br /&gt;&lt;br /&gt;Useful links to read about the Button element:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt; &lt;a href="http://particletree.com/features/rediscovering-the-button-element/"&gt;Rediscovering the button element&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt; &lt;li&gt;Button the forgotten element &lt;a href="http://nickcowie.com/presentation/s5-button.html"&gt;presentation&lt;/a&gt; &lt;a href="http://kay.zombiecoder.com/wsg/wsg2006-03-30-Nick_Cowie.html"&gt;transcript&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.digital-web.com/articles/push_my_button/"&gt;Button&lt;/a&gt; at Digital-Web mag.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-1686679486538896823?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/1686679486538896823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=1686679486538896823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1686679486538896823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/1686679486538896823'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/09/button-element.html' title='The button element'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-8616379586378342243</id><published>2007-09-02T03:22:00.000+02:00</published><updated>2007-09-02T03:52:35.863+02:00</updated><title type='text'>Rails: collection index within partial render</title><content type='html'>Tonight i've found a tiny and nice feature i was missing sometimes...(in order to have it created custom helper)&lt;br /&gt;&lt;br /&gt;So when you have:&lt;br /&gt;.rhtml:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt; &amp;lt;ul&gt;&lt;br /&gt;   &lt;%= render :partial =&gt; 'games/game', :collection =&gt; @games %&gt;&lt;br /&gt; &amp;lt;/ul&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;you may sometimes need to access collection index. And you can easily  do that by using &lt;strong&gt;local variable&lt;/strong&gt; named by such convention &lt;em&gt;&amp;lt;partial_name&gt;_counter&lt;/em&gt;&lt;br /&gt;Like this:&lt;br /&gt;&lt;br /&gt;.rhtml:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt; &amp;lt;li&gt; &lt;%= game_counter %&gt; item&lt;br /&gt; &amp;lt;/li&gt;&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;PS. and yes you can always use ordered(numbered)lists(ol instead ul)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-8616379586378342243?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/8616379586378342243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=8616379586378342243' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8616379586378342243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/8616379586378342243'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/09/rails-collection-index-within-partial.html' title='Rails: collection index within partial render'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-116888869768329206</id><published>2007-01-15T21:07:00.000+02:00</published><updated>2007-09-02T03:47:19.946+02:00</updated><title type='text'>Learning Rails, issue 1</title><content type='html'>I'm reading "Agile development with Ruby on Rails". &lt;br /&gt;That's the coolest technical book i've been reading recently.&lt;br /&gt;&lt;br /&gt;I decided to document issues i have during reading, just stuff to remember :)&lt;br /&gt;&lt;br /&gt;So the very first issue I had was error during script/genration running.&lt;br /&gt;The issue looks like: &lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;Errno::ENOENT: No such file or directory - /tmp/mysql.sock&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Not so much helpful...Likely to be configuration issue.&lt;br /&gt;Next time I run generator with --trace option again to see the stack and to try to find out the reason. &lt;br /&gt;&lt;br /&gt;On the very top there's a ../mysql.rb:104, lets look at it:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt; if (host == nil or host == "localhost") and defined? UNIXSocket then&lt;br /&gt;      unix_socket = socket || ENV["MYSQL_UNIX_PORT"] || MYSQL_UNIX_ADDR&lt;br /&gt;      sock = UNIXSocket::new(unix_socket) # line 104&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So it tries to use socket, then ENV["MYSQL_UNIX_PORT"], then MYSQL_UNIX_ADDR (which actually is a /tmp/mysql.sock if you look at the beginning of the mysql.rb). Here's our problem(you may want to dig deeper into the stack, to see that we really need socket: configuration entry)&lt;br /&gt;But why it's using the default setting? Looks like unices are expected to connect via UNIXSocket rather than TCPSocket, and there's nothing in our connection profile about sockets, so lets add it to config/database.yml.&lt;br /&gt;&lt;br /&gt;But how do i know this socket location? Well, on my FC6 it's pretty straightforward:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;[gmarik:~/work/depot]$ netstat -an|grep mysql&lt;br /&gt;unix  2      [ ACC ]     STREAM     LISTENING     36050  /var/lib/mysql/mysql.sock&lt;br /&gt;unix  3      [ ]         STREAM     CONNECTED     413895 /var/lib/mysql/mysql.sock&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and add&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;socket: /var/lib/mysql/mysql.sock&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;to depot_development (or depot_test|depot_production) section.&lt;br /&gt;&lt;br /&gt;After this tinkering we get back to business, developing our depot application:)&lt;br /&gt;&lt;br /&gt;Nice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-116888869768329206?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/116888869768329206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=116888869768329206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/116888869768329206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/116888869768329206'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2007/01/learning-rails-issue-1.html' title='Learning Rails, issue 1'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-116673714141075278</id><published>2006-12-21T23:15:00.000+02:00</published><updated>2006-12-21T23:39:01.446+02:00</updated><title type='text'>Duck typing makes sense!</title><content type='html'>I'm reading "Programming Ruby" 2 edition, and there's a paragraph about &lt;a href="http://en.wikipedia.org/wiki/Duck_typing"&gt;Duck Typing&lt;/a&gt;, which says &lt;blockquote&gt;You don't need to check type of your arguments&lt;/blockquote&gt; And checking objects against supported operations is just enough.&lt;br /&gt;&lt;br /&gt;In Java, to ensure argument(object) supports certain method it's required(generally) to check ones type. But in case we just need to make sure object supports 1 single method (operation)why'd we need to check its type, which also ensures object has other methods( seems like extra info we're not interested).&lt;br /&gt;&lt;br /&gt;So scope benefits of Duck Typing!&lt;br /&gt;&lt;br /&gt;Duck typing allows us be as granular as possible, ensuring objects capable doing things...&lt;br /&gt;&lt;br /&gt;And we can always check the type of course!&lt;br /&gt;Yeah, &lt;strong&gt;duck typing makes sense&lt;/strong&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-116673714141075278?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/116673714141075278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=116673714141075278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/116673714141075278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/116673714141075278'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2006/12/duck-typing-makes-sense.html' title='Duck typing makes sense!'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11158290.post-116381333304186710</id><published>2006-11-18T03:26:00.001+02:00</published><updated>2006-11-19T02:53:40.840+02:00</updated><title type='text'>eval.call(window, this.text) syntax error</title><content type='html'>I was playing with &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; and its &lt;a href="http://www.malsup.com/jquery/form/"&gt;jQuery Form plugin&lt;/a&gt;.&lt;br /&gt;Everythig went fine and i got &lt;a href="http://microformats.org/?p=67"&gt;AHAH&lt;/a&gt; calculator working until i tried to test IE...&lt;br /&gt;And yes, it didn't work...Each time a got unknown error.&lt;br /&gt;So I took a debugger and started fixing...&lt;br /&gt;Eventually I found the place causing error&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;...&lt;br /&gt;call.apply(window, this.text);&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;which is to evaluate scripts from received HTML response.&lt;br /&gt;But what actually caused the error was that each script was commented out like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;alert('Im commented') &lt;br /&gt;--&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and MS IE eval function implementation isn't capable evaluating that.&lt;br /&gt;So &lt;br /&gt;&lt;pre style="overflow:auto"&gt;&lt;br /&gt;eval("&amp;lt;!-- alert('Im commented')  --&gt;"); /** Causes Syntax error in IE (6 tested)*/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;while&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;eval("alert('Im commented')"); /** Works fine*/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Yeah, that worth to know...&lt;br /&gt;&lt;br /&gt;&lt;ins&gt;Seems that Firefox behaves badly as well evaluating commented javascript, it just goes crazy without letting you know about...:)&lt;/ins&gt;&lt;br /&gt;&lt;br /&gt;&lt;ins&gt;UPDATE: well, the solution to this stuff is to comment javascript HTML comments .So eval() will not see HTML-comments:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script&gt; // &amp;lt;!--&lt;br /&gt;...&lt;br /&gt;//--&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/ins&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11158290-116381333304186710?l=log.gmarik.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://log.gmarik.info/feeds/116381333304186710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11158290&amp;postID=116381333304186710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/116381333304186710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11158290/posts/default/116381333304186710'/><link rel='alternate' type='text/html' href='http://log.gmarik.info/2006/11/evalcallwindow-thistext-syntax-error.html' title='eval.call(window, this.text) syntax error'/><author><name>gmarik</name><uri>http://www.blogger.com/profile/02342648720457164351</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14360562192122683200'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>