<?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-6731950025740957039</id><updated>2011-12-20T08:27:59.901+01:00</updated><category term='logging'/><category term='command line tools'/><category term='spotify'/><category term='Open Document Format'/><category term='gentoo'/><category term='playstation 3'/><category term='AODL'/><category term='reiser4'/><category term='rt2860'/><category term='the concept'/><category term='firefox'/><category term='audio'/><category term='Flash'/><category term='Mesa'/><category term='ext4'/><category term='the myth'/><category term='vim'/><category term='wlan'/><category term='OpenGL'/><category term='64 bit'/><category term='patch'/><category term='Adobe'/><category term='linux'/><category term='portage'/><category term='kms'/><category term='java'/><category term='the man'/><category term='wifi'/><category term='sourceforge'/><category term='graphics'/><category term='subspace battle'/><category term='modules'/><category term='ods'/><category term='hal'/><category term='networking'/><category term='Open Office'/><category term='tar'/><category term='C#'/><category term='xorg'/><category term='gvim'/><category term='file systems'/><category term='drivers'/><category term='kernel'/><category term='coding'/><category term='ebuild'/><category term='intrepid ibex'/><category term='regular expressions'/><category term='ubuntu'/><category term='media server'/><category term='svn'/><title type='text'>volatile int</title><subtitle type='html'>static volatile int foo;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-6609250603612592154</id><published>2011-10-04T15:43:00.001+02:00</published><updated>2011-10-09T19:07:18.781+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='ebuild'/><category scheme='http://www.blogger.com/atom/ns#' term='spotify'/><title type='text'>Updated Spotify ebuild (0.6.1.309)</title><content type='html'>Earlier I &lt;a href="http://volatileint.blogspot.com/2011/01/native-spotify-ebuild-for-gentoo.html"&gt;posted an ebuild to Spotify&lt;/a&gt; (for the package manager in Gentoo called Portage). Here is a newer version of that ebuild. Like the last time, put it in a file called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;spotify-0.6.1.309.ebuild&lt;/span&gt; inside your local repository (like &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/usr/local/portage/media-sound/spotify/&lt;/span&gt;)&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;# Copyright 1999-2010 Gentoo Foundation&lt;br /&gt;# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;# $Header: $&lt;br /&gt;&lt;br /&gt;EAPI="2"&lt;br /&gt;&lt;br /&gt;DESCRIPTION="Spotify desktop client"&lt;br /&gt;HOMEPAGE="http://www.spotify.com/"&lt;br /&gt;&lt;br /&gt;LICENSE="Spotify"&lt;br /&gt;SLOT="0"&lt;br /&gt;KEYWORDS="~amd64 ~x86"&lt;br /&gt;IUSE="gnome"&lt;br /&gt;&lt;br /&gt;MY_PV="${PV}.gb871a7d-1"&lt;br /&gt;MY_P="${PN}-client-qt_${MY_PV}"&lt;br /&gt;&lt;br /&gt;SRC_BASE="http://repository.spotify.com/pool/non-free/${PN:0:1}/${PN}/"&lt;br /&gt;SRC_URI="&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x86?&amp;nbsp;&amp;nbsp; ( ${SRC_BASE}${MY_P}_i386.deb )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; amd64? ( ${SRC_BASE}${MY_P}_amd64.deb )&lt;/span&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;"&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;br /&gt;RDEPEND="&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gnome? ( &amp;gt;=gnome-base/gconf-2.12 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=sys-libs/glibc-2.6&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=media-libs/alsa-lib-1.0.14&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-core-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-dbus-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-gui-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-webkit-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=sys-devel/gcc-4.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys-apps/usbutils&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;br /&gt;&lt;br /&gt;RESTRICT="mirror strip"&lt;br /&gt;&lt;br /&gt;src_unpack() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for MY_A in ${A}; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; unpack ${MY_A}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; unpack ./data.tar.gz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;src_install() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv "${WORKDIR}"/usr "${D}" || die "Install failed"&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;Update: Remove gnome-support since Spotify states this is broken and will be removed in the future.&lt;br /&gt;Update2: This ebuild does NOT work on Gentoo (~amd64) right now since there is a dependency on libssl-0.9.8, and we are currently using v1.0. Hopefully this will be solved somehow. I'll remove this update when it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-6609250603612592154?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/6609250603612592154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=6609250603612592154' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/6609250603612592154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/6609250603612592154'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2011/10/updated-spotify-ebuild-061309.html' title='Updated Spotify ebuild (0.6.1.309)'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-2027919590747948700</id><published>2011-02-11T20:49:00.000+01:00</published><updated>2011-02-11T20:49:11.288+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Locked svn repository and you can't unlock or clean?</title><content type='html'>I discovered that I couldn't update my subversion repository, nor could I commit, revert or even run cleanup on it! The error I got was&lt;br /&gt;&lt;blockquote&gt;"Working copy is locked, run cleanup on it to remove locks"&lt;/blockquote&gt;I was wondering what the hell had happened since I hadn't locked any files on purpose. 'svn unlock --force' didn't do the job so I had to try cleanup. But when running cleanup all I got was&lt;br /&gt;&lt;blockquote&gt;"svn cleanup: can't find .svn/tmp/log. "&lt;/blockquote&gt;It seems to stem from some version problem, and all that is really needed is to create a .svn/tmp directory by hand. By running a little command on the shell, we fix the problem within seconds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;find . -iname '.svn' -exec mkdir {}/tmp \;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After creating all the '/tmp' dirs, just run 'svn cleanup' again, and it should be ok for an update or a commit.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://kylecordes.com/2009/missing-svntmp-fix"&gt;Kyle Cordes&lt;/a&gt; for the fix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-2027919590747948700?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/2027919590747948700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=2027919590747948700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/2027919590747948700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/2027919590747948700'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2011/02/locked-svn-repository-and-you-cant.html' title='Locked svn repository and you can&apos;t unlock or clean?'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-7984231040519253119</id><published>2011-02-08T12:36:00.002+01:00</published><updated>2011-02-08T14:23:38.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tar'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command line tools'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Speeding up your secure file-transfer by using tar and ssh</title><content type='html'>Normally when transferring files between computers, one would use 'scp', and for a directory 'scp -cr'. The problem with this is that scp creates a connection for each file when transferring it, and this adds a lot of overhead.&lt;br /&gt;&lt;br /&gt;To speed up the transfer of many small files, it is better to use the beloved Unix pipe, together with tar (the archiving software) and SSH (Secure SHell). What we do is 'tarball' all these files and directories, compress them if we would like to, and pipe the result to ssh, which on the other computer either puts them in a (compressed) tarball or untar it back into its original directory structure.&lt;br /&gt;&lt;br /&gt;To decrease the use of bandwidth, we also set tar to filter the output through gzip, a compression program. This is done using the '-z' flag. The other two flags we use is '-c' and '-f' which means 'create archive' and which file to create (in our case '-' which means stdout) respectively.&lt;br /&gt;Tar usually uses stdout if nothing else is specified, so we could actually skip the last flag.&lt;br /&gt;&lt;br /&gt;Using scp, it would look something like this:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scp -rc directory/ user@host:~/&lt;/div&gt;&lt;br /&gt;But with tar and ssh, we instead write it like:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tar -zcf - directory/ | ssh user@host "tar zxvf -"&lt;/div&gt;&lt;br /&gt;I have created a directory on the receiving host called 'backup', so I want to put it into that directory instead:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tar -zcf - directory/ | ssh user@host "tar zxvf - -C backup/"&lt;/div&gt;&lt;br /&gt;or if we remove the '-f' flag with its corresponding argument:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tar -zc directory/ | ssh user@host "tar zxv -C backup/"&lt;/div&gt;&lt;br /&gt;I tried using bzip2 as a filter as well, but it seems to have a tendency to be too cpu-heavy in comparison to its improved compression ratio. But this depends on the amount of available bandwidth.&lt;br /&gt;&lt;br /&gt;I found some comparisons at &lt;a href="http://smaftoul.wordpress.com/2008/08/19/ssh-scp-little-files-and-tar/"&gt;http://smaftoul.wordpress.com/2008/08/19/ssh-scp-little-files-and-tar/&lt;/a&gt;, which saw an 19x transfer time improvement when transferring a 109 Mb large directory containing 9992 files. This is definitely worth a little command line magic!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-7984231040519253119?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/7984231040519253119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=7984231040519253119' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/7984231040519253119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/7984231040519253119'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2011/02/speeding-up-your-secure-file-transfer.html' title='Speeding up your secure file-transfer by using tar and ssh'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-363463835742352050</id><published>2011-01-06T21:59:00.003+01:00</published><updated>2011-01-07T00:25:45.760+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ebuild'/><category scheme='http://www.blogger.com/atom/ns#' term='spotify'/><title type='text'>Native Spotify ebuild for Gentoo</title><content type='html'>You also love Spotify? Well, it truly is the best thing since the Interwebs, that's for sure!&lt;br /&gt;&lt;br /&gt;A lot of Linux users don't know that the wonderful developers over at &lt;a href="http://www.spotify.com/"&gt;Spotify&lt;/a&gt; are actually releasing early beta builds of their native Linux client. It's not perfect, but for being early-releases it's damn near close! You just have to love those guys...&lt;br /&gt;&lt;br /&gt;Anyway, here's an ebuild I've completely stolen from &lt;a href="https://github.com/dstien/dstien-portage/tree/master/media-sound/spotify/"&gt;dstien&lt;/a&gt; a couple of months ago, and then updated to new versions as they've come out. I've added the Pulseaudio dependency (dstien doesn't seen to have done that yet) since the previous version didn't work without it).&lt;br /&gt;&lt;br /&gt;Ebuild:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;blockquote&gt;# Copyright 1999-2010 Gentoo Foundation&lt;br /&gt;# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;# $Header: $&lt;br /&gt;&lt;br /&gt;EAPI="2"&lt;br /&gt;&lt;br /&gt;DESCRIPTION="Spotify desktop client"&lt;br /&gt;HOMEPAGE="http://www.spotify.com/"&lt;br /&gt;&lt;br /&gt;LICENSE="Spotify"&lt;br /&gt;SLOT="0"&lt;br /&gt;KEYWORDS="~amd64 ~x86"&lt;br /&gt;IUSE="gnome"&lt;br /&gt;&lt;br /&gt;MY_PV="${PV}.g604b4fb-1"&lt;br /&gt;MY_P="${PN}-client-qt_${MY_PV}"&lt;br /&gt;&lt;br /&gt;SRC_BASE="http://repository.spotify.com/pool/non-free/${PN:0:1}/${PN}/"&lt;br /&gt;SRC_URI="&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x86?&amp;nbsp;&amp;nbsp; ( ${SRC_BASE}${MY_P}_i386.deb )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; amd64? ( ${SRC_BASE}${MY_P}_amd64.deb )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gnome? ( ${SRC_BASE}${PN}-client-gnome-support_${MY_PV}_all.deb )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;br /&gt;&lt;br /&gt;RDEPEND="&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=media-libs/alsa-lib-1.0.14&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=media-sound/pulseaudio-0.9.21&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=sys-devel/gcc-4.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=sys-libs/glibc-2.6&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-core-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-dbus-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-gui-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;=x11-libs/qt-webkit-4.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;br /&gt;&lt;br /&gt;RESTRICT="mirror strip"&lt;br /&gt;&lt;br /&gt;src_unpack() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for MY_A in ${A}; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; unpack ${MY_A}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; unpack ./data.tar.gz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;src_install() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv "${WORKDIR}"/usr "${D}" || die "Install failed"&lt;br /&gt;}&lt;/blockquote&gt;&lt;/div&gt;Just copy this into an empty file within your portage overlay (for example /usr/local/portage/) in the media-sound directary, go into the directory and run&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; ebuild spotify-0.4.9.302.ebuild digest&lt;/div&gt;&lt;br /&gt;and then you're ready to go! Should be at least ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-363463835742352050?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/363463835742352050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=363463835742352050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/363463835742352050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/363463835742352050'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2011/01/native-spotify-ebuild-for-gentoo.html' title='Native Spotify ebuild for Gentoo'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-313334127000986411</id><published>2010-08-21T22:39:00.001+02:00</published><updated>2010-08-21T22:48:39.729+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><title type='text'>Logging boot output</title><content type='html'>Ever seen an unnerving &lt;span style="background-color: black; color: #674ea7;"&gt;[ &lt;span style="color: red;"&gt;!!&lt;/span&gt; ]&lt;/span&gt; scroll by during boot, hidden among 50 lines, way too fast to be able to actually read the problem? Then X then starts, it clears the buffer in the TTY, not allowing you to scroll up to read it when you do a VT-switch back to TTY1.&lt;br /&gt;&lt;br /&gt;While '&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dmesg&lt;/span&gt;' (or reading &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/var/log/dmesg&lt;/span&gt; or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/var/log/messages&lt;/span&gt;) shows you the boot output from the kernel and other parts of the system, it usually doesn't show the issues from specific boot processes that show up in the list with &lt;span style="background-color: black; color: #3d85c6;"&gt;&lt;span style="color: #674ea7;"&gt;[&lt;/span&gt; &lt;span style="color: lime;"&gt;ok&lt;/span&gt; &lt;span style="color: #674ea7;"&gt;] &lt;/span&gt;&lt;/span&gt;or &lt;span style="background-color: black; color: #674ea7;"&gt;[ &lt;span style="color: red;"&gt;!!&lt;/span&gt; ]&lt;/span&gt;. Well, we can actually enable the logging of the console output from the boot process by a few simple steps.&lt;br /&gt;&lt;br /&gt;This applies to a Gentoo system, and I'm not sure which other distributions it works for.&lt;br /&gt;&lt;br /&gt;#1. First enable RC logging by editing '&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/rc.conf&lt;/span&gt;'. Uncomment the following line (marked by '&amp;gt;'): &lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# rc_logger launches a logging daemon to log the entire rc process to&lt;br /&gt;# /var/log/rc.log&lt;br /&gt;# NOTE: Linux systems require the devfs service to be started before&lt;br /&gt;# logging can take place and as such cannot log the sysinit runlevel.&amp;gt; rc_logger="YES"&lt;/blockquote&gt;&lt;br /&gt;Then we also need to install the &lt;i&gt;showconsole&lt;/i&gt; &lt;i&gt;daemon&lt;/i&gt; which does the actual logging.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; eix-sync showconsole&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[I] app-admin/showconsole&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Available versions:&amp;nbsp; 1.07 1.08&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Installed versions:&amp;nbsp; 1.08(22.23.03 2010-08-21)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Homepage:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.novell.com/linux/suse/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; small daemon for logging console output during boot&lt;/span&gt;&lt;/blockquote&gt;Just run '&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;emerge showconsole&lt;/span&gt;' and reboot, after that all the messages scrolling past the screen as you boot will be stored in &lt;span class="path" dir="ltr"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/var/log/rc.log&lt;/span&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-313334127000986411?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/313334127000986411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=313334127000986411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/313334127000986411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/313334127000986411'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2010/08/logging-boot-output.html' title='Logging boot output'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-1379050424603203407</id><published>2010-05-11T20:30:00.001+02:00</published><updated>2010-05-11T20:30:17.526+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command line tools'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Using the command line to find out your router's external IP address</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Ever been in the position where you need to find out your IP address without having a GUI to fall back on and surf to www.whatsmyip.org or the likes?&lt;br/&gt;&lt;br/&gt;At tips4Linux I just found a great command for it! Just fire up wget and get the address printed right there in your terminal.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font face='monospace'&gt;wget -O - -q icanhazip.com&lt;/font&gt;&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;That's it!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-1379050424603203407?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/1379050424603203407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=1379050424603203407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/1379050424603203407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/1379050424603203407'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2010/05/using-command-line-to-find-out-your.html' title='Using the command line to find out your router&amp;#39;s external IP address'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-2679881215290118440</id><published>2009-12-08T19:06:00.004+01:00</published><updated>2009-12-08T19:23:19.701+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kms'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><title type='text'>Trying out Kernel Mode Setting (KMS) on Radeon 4850</title><content type='html'>I've been trying out Kernel Mode Setting (KMS) on my Radeon 4850, since it's extremely cool! The new kernel/mesa/ati-drivers also allows me to run accelerated 3D graphics on the desktop, finally! Well how does it work? Just have a look!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_35rmNQ4kVLc/Sx6XdVGmqbI/AAAAAAAAAdY/yA4JDWx_q38/s1600-h/Sk%C3%A4rmbild-2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_35rmNQ4kVLc/Sx6XdVGmqbI/AAAAAAAAAdY/yA4JDWx_q38/s400/Sk%C3%A4rmbild-2.png" alt="" id="BLOGGER_PHOTO_ID_5412930332282759602" border="0" /&gt;&lt;/a&gt;I think I have some more stuff to do ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-2679881215290118440?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/2679881215290118440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=2679881215290118440' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/2679881215290118440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/2679881215290118440'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/12/trying-out-kernel-mode-setting-kms-on.html' title='Trying out Kernel Mode Setting (KMS) on Radeon 4850'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_35rmNQ4kVLc/Sx6XdVGmqbI/AAAAAAAAAdY/yA4JDWx_q38/s72-c/Sk%C3%A4rmbild-2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-9080999338594424171</id><published>2009-11-21T16:56:00.004+01:00</published><updated>2009-11-21T17:03:01.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='command line tools'/><title type='text'>Listing the size of directories</title><content type='html'>By doing ls -l, you won't get the size of directories. It will only be listed as 4.0K, while the files are listed correctly. But even the files are actually not listed correctly if you are currently changing the file, for instance during a download. It will list the &lt;span style="font-style: italic;"&gt;final size&lt;/span&gt; of the file, not the current file size.&lt;br /&gt;&lt;br /&gt;If you instead use the 'du' (disk usage) command, you will get a more correct number, even for directories.&lt;br /&gt;&lt;blockquote&gt;du -sh *&lt;/blockquote&gt;will list all the files and directories in the current folder, with the size it occupies on the disk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-9080999338594424171?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/9080999338594424171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=9080999338594424171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/9080999338594424171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/9080999338594424171'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/11/listing-size-of-directories.html' title='Listing the size of directories'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-4474656619693822</id><published>2009-11-21T16:50:00.002+01:00</published><updated>2009-11-21T16:55:54.161+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modules'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='command line tools'/><title type='text'>Listing which kernel modules you have built</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Every&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;now&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;then&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;I'm&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;confused&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;about&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;which&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;modules&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;actually&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;compiled.&lt;/span&gt; And &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;what&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;name&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;module&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;you&lt;/span&gt; just &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;built&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;to&lt;/span&gt; fix &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;lm&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;sensors&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;or&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;wifi-card.&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;This&lt;/span&gt; problem is not as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;common&lt;/span&gt; as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;used&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;to&lt;/span&gt; be, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;since&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;lot&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;software&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;now&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;seems&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;load&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;modules&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;needs&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;or&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;even&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;kernel&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;does&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;itself.&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;But&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;it's&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;always&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;good&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;have&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;clue&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;guess.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;little&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;handy&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;command&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;to&lt;/span&gt; run is:&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;find&lt;/span&gt; /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;lib&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;modules&lt;/span&gt;/$(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;uname&lt;/span&gt; -r)/ -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;type&lt;/span&gt; f -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;iname&lt;/span&gt; '*.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;o'&lt;/span&gt; -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;or&lt;/span&gt; -&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;iname&lt;/span&gt; '*.ko'&lt;/blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;This&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;will&lt;/span&gt; list all &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;modules&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;module&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;directory&lt;/span&gt; for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_78"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_79"&gt;currently&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_80"&gt;running&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_81"&gt;kernel.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-4474656619693822?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/4474656619693822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=4474656619693822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/4474656619693822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/4474656619693822'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/11/listing-which-kernel-modules-you-have.html' title='Listing which kernel modules you have built'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-6402356457214019783</id><published>2009-09-12T01:04:00.003+02:00</published><updated>2009-09-12T01:36:11.919+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AODL'/><category scheme='http://www.blogger.com/atom/ns#' term='ods'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Office'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Document Format'/><title type='text'>Open Document Format + C# = &lt;3</title><content type='html'>So you want to be able to manipulate ODF-documents with C#? That was exactly what I wanted to do this morning and after some quick research I found a solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution 1: The Hard Way (tm)&lt;/span&gt;&lt;br /&gt;Turns out that the .odt- and .ods-filetypes (.ods being the one I was interested in) are basically zip-archives which can be decompressed by any archive software supporting it. Inside the archives you'll find a bunch of .xml-files. The file 'content.xml' is where the goodies are. The hard part is parsing the xml-code and getting something useful from it. This I leave to the reader since I wasn't able to get a good result in a hurry.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution 2: The Easy Way (tm)&lt;/span&gt;&lt;br /&gt;Turns out that someone has already done all the work for us and put it in a small library called &lt;a href="http://odftoolkit.org/"&gt;AODL&lt;/a&gt; . I recommend downloading the binary version (less files), however the documentation resides with the source code in the src-archive so you might as well grab that to while you're at it. Though this library seemed great at first, I quickly ran into a problem. But before we go into that, lets open a document.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using AODL.Document.SpreadsheetDocuments;&lt;br /&gt;using AODL.Document.Content;&lt;br /&gt;using AODL.Document.Content.Tables;&lt;br /&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;SpreadsheetDocument doc = new SpreadsheetDocument();&lt;br /&gt;doc.Load("/home/god/blahblah.ods");&lt;br /&gt;RowCollection rows = doc.TableCollection[0].RowCollection; //get rows in first page of doc&lt;br /&gt;&lt;br /&gt;foreach(Row row in rows)&lt;br /&gt;{&lt;br /&gt;   foreach(Cell cell in row.Cells)&lt;br /&gt;   {&lt;br /&gt;       Console.WriteLine(cell.OfficeValue); //return the string value of this cell&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;You might expect that this piece of code prints the contents of every cell in the document. You are sadly mistaken. As I found out, it printed everything except string values. That is, floats and ints etc. printed ok, but when a cell contained a string the WriteLine-statement gave an empty string instead. After some fruitless googling and and hour or two of desperate screaming I finally came to the rather embarassing conclusion that the empty string was actually a null string. Then, after some quick IntelliSensing (well, MonoDevelop's version of it anyway) I produced the following.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[...]&lt;br /&gt;foreach(Row row in rows)&lt;br /&gt;{&lt;br /&gt;   foreach(Cell cell in row.Cells)&lt;br /&gt;   {&lt;br /&gt;       string s = cell.OfficeValueType; //get type of value&lt;br /&gt;       if(s.Equals("string")&lt;br /&gt;       {&lt;br /&gt;           Console.WriteLine(cell.Content[0].Node.InnerText);&lt;br /&gt;       }&lt;br /&gt;       else&lt;br /&gt;       {&lt;br /&gt;           Console.WriteLine(cell.OfficeValue);&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;[...]&lt;br /&gt;&lt;/pre&gt;Why cell.OfficeValue (which is of the type string) doesn't work for strings evades me. But at least there is a quick solution. There are probably others, if so please leave a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-6402356457214019783?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/6402356457214019783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=6402356457214019783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/6402356457214019783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/6402356457214019783'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/09/open-document-format-c-3.html' title='Open Document Format + C# = &lt;3'/><author><name>manneorama</name><uri>http://www.blogger.com/profile/13530096640190041381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-6119800160748668226</id><published>2009-09-11T16:57:00.002+02:00</published><updated>2009-09-11T16:58:59.780+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='the man'/><category scheme='http://www.blogger.com/atom/ns#' term='the concept'/><category scheme='http://www.blogger.com/atom/ns#' term='the myth'/><title type='text'>New author</title><content type='html'>I'd like to take this opportunity to present myself. I am manneorama; developer, death metal-connaisseur and all in all pleasant man. Welcome, myself, to volatileint.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-6119800160748668226?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/6119800160748668226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=6119800160748668226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/6119800160748668226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/6119800160748668226'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/09/new-author.html' title='New author'/><author><name>manneorama</name><uri>http://www.blogger.com/profile/13530096640190041381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-5299350464105476968</id><published>2009-03-18T22:09:00.008+01:00</published><updated>2009-03-18T23:30:39.925+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hal'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><title type='text'>Creating fdi policy files for HAL</title><content type='html'>I have been using Gentoo for about 6 years now, and every now and then the system breaks as a result of a large update. This isn't a terrible thing, and usually I just have to scout the http://forums.gentoo.org for a couple of minutes to find the solution to the error, if I can't figure it out myself.&lt;br /&gt;&lt;br /&gt;The most recent problem people have been seeing lately (since at least 6 months ago) is the merge from configuring input devices in fdi policy files - as a result of the Xorg-team wanting to move to HAL-based configures - instead of an input section inside the xorg.conf file. This is mainly in the xorg-server 1.5 and onward. If you want to read much more about HAL, more info is located &lt;a href="http://www.redhat.com/magazine/003jan05/features/hal/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have had lots of problems getting this to work, and every time I was trying to convert, I grew sick of it and just reverted my changes. But now I stuck to it and came through alive on the other side. As usual, &lt;a href="http://forums.gentoo.org/viewtopic-t-722498.html"&gt;the forums could help me&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First we add a section with server flags to our xorg.conf:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Section "ServerFlags"&lt;br /&gt;Option "AutoAddDevices" "on"&lt;br /&gt;Option "AutoEnableDevices" "on"&lt;br /&gt;Option "AllowEmptyInput" "on"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This tells xorg that it is OK that we have removed all input devices in the file. Then we can comment out the devices we have listed (to later remove them for good).&lt;br /&gt;&lt;br /&gt;Now we need to convert our input settings to the new fdi config file structure. There are some example files scattered across the web, for example on &lt;a href="https://wiki.ubuntu.com/X/Config/Input#hal"&gt;Ubuntu's wiki&lt;/a&gt;. The settings are quite basic for most people, so it makes it easy to write the file.&lt;br /&gt;&lt;br /&gt;First off we create our config file in /etc/hal/fdi/policy/ and name it 10-x11-input.fdi. The config in my xorg.conf said:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;Identifier "Keyboard0"&lt;br /&gt;Driver "kbd"&lt;br /&gt;Option "CoreKeyboard"&lt;br /&gt;Option "XkbRules" "xorg"&lt;br /&gt;Option "XkbModel" "pc105"&lt;br /&gt;Option "XkbLayout" "se"&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;Section "InputDevice"&lt;br /&gt;Identifier "Logitech MX510"&lt;br /&gt;Driver "evdev"&lt;br /&gt;Option "Device" "/dev/input/mice"&lt;br /&gt;Option "Protocol" "ExplorerPS/2"&lt;br /&gt;EndSection&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This translates to very similar settings in our new 10-X11-input.fdi. I should mention that I also took the opportunity to switch my device handling to "evdev" for both my devices, instead of the xorg handled one.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version="0.2"&amp;gt;&lt;br /&gt;&amp;lt;device&amp;gt;&lt;br /&gt;&amp;lt;match key="info.capabilities" contains="input.keyboard"&amp;gt;&lt;br /&gt; &amp;lt;merge key="input.x11_options.XkbRules" type="string"&amp;gt;evdev&amp;lt;/merge&amp;gt;&lt;br /&gt; &amp;lt;merge key="input.x11_options.XkbModel" type="string"&amp;gt;evdev&amp;lt;/merge&amp;gt;&lt;br /&gt; &amp;lt;merge key="input.x11_options.XkbLayout" type="string"&amp;gt;se&amp;lt;/merge&amp;gt;&lt;br /&gt; &amp;lt;!--&amp;lt;merge key="input.x11_options.XkbLayout" type="string"&amp;gt;altwin:menu&amp;lt;/merge&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;/match&amp;gt;&lt;br /&gt;&amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;device&amp;gt;&lt;br /&gt;&amp;lt;match key="info.capabilities" contains="input.mouse"&amp;gt;&lt;br /&gt; &amp;lt;merge key="input.x11_driver" type="string"&amp;gt;evdev&amp;lt;/merge&amp;gt;&lt;br /&gt; &amp;lt;!--&amp;lt;merge key="input.x11_options.RelHWHEELOptions" type="string"&amp;gt;invert&amp;lt;/merge&amp;gt;--&amp;gt;&lt;br /&gt; &amp;lt;merge key="input.x11_options.Emulate3Buttons" type="string"&amp;gt;false&amp;lt;/merge&amp;gt;&lt;br /&gt;&amp;lt;/match&amp;gt;&lt;br /&gt;&amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After creating the file, we restart our hal daemon:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@skare$ /etc/init.d/hald restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and unplug/plug in our device. If we monitor devices with hal, it will print out a new device.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;root@skare$ lshal -m&lt;br /&gt;&lt;br /&gt;Start monitoring devicelist:&lt;br /&gt;-------------------------------------------------&lt;br /&gt;22:52:00.340: usb_device_46d_c01d_noserial_if0_logicaldev_input removed&lt;br /&gt;22:52:00.344: usb_device_46d_c01d_noserial_if0 removed&lt;br /&gt;22:52:00.345: usb_device_46d_c01d_noserial removed&lt;br /&gt;22:52:09.263: usb_device_46d_c01d_noserial added&lt;br /&gt;22:52:09.263: usb_device_46d_c01d_noserial_if0 added&lt;br /&gt;22:52:09.307: usb_device_46d_c01d_noserial_if0_logicaldev_input added&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;We can see that I first unpluggen my device, and then plugged it in again. To check what devices we have as mouse and keyboard, we run two other commands:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;root@skare$ hal-find-by-capability --capability input.mouse |xargs hal-device&lt;br /&gt;udi = '/org/freedesktop/Hal/devices/usb_device_46d_c01d_noserial_if0_logicaldev_input'&lt;br /&gt;info.subsystem = 'input' (string)&lt;br /&gt;info.product = 'Logitech USB-PS/2 Optical Mouse' (string)&lt;br /&gt;linux.device_file = '/dev/input/event3' (string)&lt;br /&gt;info.category = 'input' (string)&lt;br /&gt;info.udi = '/org/freedesktop/Hal/devices/usb_device_46d_c01d_noserial_if0_logicaldev_input' (string)&lt;br /&gt;input.originating_device = '/org/freedesktop/Hal/devices/usb_device_46d_c01d_noserial_if0' (string)&lt;br /&gt;input.device = '/dev/input/event3' (string)&lt;br /&gt;input.x11_driver = 'evdev' (string)&lt;br /&gt;info.capabilities = { 'input', 'input.mouse' } (string list)&lt;br /&gt;input.product = 'Logitech USB-PS/2 Optical Mouse' (string)&lt;br /&gt;input.x11_options.Emulate3Buttons = 'false' (string)&lt;br /&gt;linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/input/input3/event3' (string)&lt;br /&gt;info.parent = '/org/freedesktop/Hal/devices/usb_device_46d_c01d_noserial_if0' (string)&lt;br /&gt;linux.hotplug_type = 2 (0x2) (int)&lt;br /&gt;linux.subsystem = 'input' (string)&lt;br /&gt;&lt;br /&gt;root@skare$ hal-find-by-capability --capability input.keys |xargs hal-device&lt;br /&gt;udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input'&lt;br /&gt;info.subsystem = 'input' (string)&lt;br /&gt;input.xkb.layout = 'us' (string)&lt;br /&gt;info.product = 'AT Translated Set 2 keyboard' (string)&lt;br /&gt;linux.device_file = '/dev/input/event2' (string)&lt;br /&gt;input.xkb.variant = '' (string)&lt;br /&gt;info.category = 'input' (string)&lt;br /&gt;info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input' (string)&lt;br /&gt;input.x11_options.XkbRules = 'evdev' (string)&lt;br /&gt;input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string)&lt;br /&gt;input.x11_options.XkbModel = 'evdev' (string)&lt;br /&gt;input.device = '/dev/input/event2' (string)&lt;br /&gt;input.x11_driver = 'evdev' (string)&lt;br /&gt;input.x11_options.XkbLayout = 'se' (string)&lt;br /&gt;info.capabilities = { 'input', 'input.keyboard', 'input.keypad', 'input.keys', 'button' } (string list)&lt;br /&gt;input.product = 'AT Translated Set 2 keyboard' (string)&lt;br /&gt;linux.sysfs_path = '/sys/devices/platform/i8042/serio0/input/input2/event2' (string)&lt;br /&gt;info.parent = '/org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port' (string)&lt;br /&gt;info.addons.singleton = { 'hald-addon-input' } (string list)&lt;br /&gt;linux.hotplug_type = 2 (0x2) (int)&lt;br /&gt;input.xkb.rules = 'base' (string)&lt;br /&gt;linux.subsystem = 'input' (string)&lt;br /&gt;input.xkb.model = 'evdev' (string)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Here we can see if our policy file actually did its job, i.e. loaded the right drivers for the devices. It also shows the settings, so we can double check those. The /var/log/Xorg.0.log also displays the changes:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;root@skare$ tail -n 20 /var/log/Xorg.0.log&lt;br /&gt;(EE) Logitech USB-PS/2 Optical Mouse: Read error: No such device&lt;br /&gt;(II) config/hal: removing device Logitech USB-PS/2 Optical Mouse&lt;br /&gt;(II) Logitech USB-PS/2 Optical Mouse: Close&lt;br /&gt;(II) UnloadModule: "evdev"&lt;br /&gt;(II) config/hal: Adding input device Logitech USB-PS/2 Optical Mouse&lt;br /&gt;(**) Logitech USB-PS/2 Optical Mouse: always reports core events&lt;br /&gt;(**) Logitech USB-PS/2 Optical Mouse: Device: "/dev/input/event3"&lt;br /&gt;(II) Logitech USB-PS/2 Optical Mouse: Found 8 mouse buttons&lt;br /&gt;(II) Logitech USB-PS/2 Optical Mouse: Found x and y relative axes&lt;br /&gt;(II) Logitech USB-PS/2 Optical Mouse: Found scroll wheel(s)&lt;br /&gt;(II) Logitech USB-PS/2 Optical Mouse: Configuring as mouse&lt;br /&gt;(**) Option "Emulate3Buttons" "false"&lt;br /&gt;(II) Logitech USB-PS/2 Optical Mouse: Forcing middle mouse button emulation off.&lt;br /&gt;(**) Logitech USB-PS/2 Optical Mouse: YAxisMapping: buttons 4 and 5&lt;br /&gt;(**) Logitech USB-PS/2 Optical Mouse: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200&lt;br /&gt;(II) XINPUT: Adding extended input device "Logitech USB-PS/2 Optical Mouse" (type: MOUSE)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;One positive thing with this new HAL stuff is that we don't have to restart X when we add a new device, or want to change the settings of the ones we have. Just restart the hald daemon and it re-reads the policy files, and unplug/plug in the device again, and the new settings should be enabled. Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-5299350464105476968?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/5299350464105476968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=5299350464105476968' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/5299350464105476968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/5299350464105476968'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/03/creating-fdi-policy-files-for-hal.html' title='Creating fdi policy files for HAL'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-3156105890950818304</id><published>2009-03-12T13:48:00.006+01:00</published><updated>2009-03-12T17:04:33.246+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><title type='text'>Mozilla closing in on Firefox 3.1 beta 3</title><content type='html'>It seems like the release of Mozilla Firefox 3.1 Beta 3 is closing in. The Mozilla Quality Assurance team is &lt;a href="http://quality.mozilla.org/events/2009/mar/13/firefox-31-beta-3-test-day"&gt;organizing a test round "for the rollout of" the beta release today&lt;/a&gt;, and states that to test it, the 3.1 users just need to klick "Check for Updates" in the Help menu. I have tried it, but the update doesn't seem to be out yet. I guess it will arrive later today.&lt;br /&gt;&lt;br /&gt;They announced earlier this month that they would probably have yet another Beta candidate before doing the actual release, as well as &lt;a href="https://developer.mozilla.org/devnews/index.php/2009/03/06/shiretoko-to-be-named-firefox-35/"&gt;renaming it Firefox 3.5&lt;/a&gt; as a result of the long wait. The beta3 was originally planned for release months ago, and the reason for the delay was a couple of serious bugs, where the most prominent one was in the TraceMonkey javascript engine. This is the same engine that has been hailed as one of the reasons why the new Firefox is lightning fast, so let's hope they iron out the last creases! I have been running the Beta2 as my main browser for several weeks now, and have not experienced any problems at all, so I am looking forward to the Beta3 to see if there are any noticable changes.&lt;br /&gt;&lt;br /&gt;Some of the new stuff in Firefox 3.5 except TraceMonkey and great speed improvements are "&lt;a href="http://ehsanakhgari.org/blog/2008-11-04/dont-leave-trace-private-browsing-firefox"&gt;Private browsing mode&lt;/a&gt;", support for embedded video and audio (without Flash etc), improved rendering (improvements to the Gecko layout engine, including speculative parsing for faster content rendering) and of course lots of bug fixes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-3156105890950818304?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/3156105890950818304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=3156105890950818304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/3156105890950818304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/3156105890950818304'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/03/mozilla-closing-in-on-firefox-31-beta-3.html' title='Mozilla closing in on Firefox 3.1 beta 3'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-5501776332097459062</id><published>2009-02-27T12:10:00.003+01:00</published><updated>2009-02-27T12:36:47.005+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='gvim'/><title type='text'>Using regular expressions in Vim</title><content type='html'>Today I was faced with the task of replacing lots of words in a script file. The problem was that I could not simply replace them by doing a "search-and-replace" (:%s/old_word/new_word/g) because they should only be replaced on some of the lines. For example, the script says&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    OUTSTANDING&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    COMMAND     Record    SetPriority                    priorityRecording_INI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    COMMAND     Play      SetPriority                    priorityRecording_INI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    COMMAND     Record    SetDestinationSampleRateL    Record_A_006_INI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    COMMAND     Record    SetDestinationBitRateL        Record_A_005_INI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My task was to replate the priorityRecording_INI with priorityPlayback_INI for all the lines which had the COMMAND Play on them. While I in this case could have done it by hand, a regular expression is perfect for this task!&lt;br /&gt;&lt;br /&gt;First we need to use the "search-and-replace" command like we stated above:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;:%s/exp1/exp2/g&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is in more detail the command s (find and substitute), extended with "%" which tells it to look through the entire file. "exp1" is then replaced by "exp2", and "/g" in the end tells it to do it for all occurrences for every line.&lt;br /&gt;&lt;br /&gt;To boil the problem down, we first focus on what tells the line apart. We use "Play" as the command to tell the difference. We then search for "Play", and don't care about the rest, at least up until the thing we want to replace. This means we search for&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/Play.*priority&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;since priority is the last word we want to keep. The problem here is that we have two instances of the word priority, but we can tell them apart by the fact that one of them has a TAB in front of it (it could be spaces as well, but I won't go into that flame war). To enter a TAB character in Vim, we press ctrl+v TAB, which looks like ^I.&lt;br /&gt;&lt;br /&gt;The command&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/Play.*^Ipriority&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;highlights everything from Play to end of priority. We could also do a case sensitive search, but I have that disabled as default, so this was a smoother solution.&lt;br /&gt;&lt;br /&gt;To keep certain parts of our search, and replace others, we use \(exp3\) formatting. This means that the substitution command won't replace that, but instead move it to a new position in the substitution expression. Alll wildcards or search expressions outside of the \(\) will be replaced. The new position for the "exp3" (or several) is noted by using \1 (\2, \3, ..., etc etc) in the order they have been declared in the search expression.&lt;br /&gt;&lt;br /&gt;So first we define the "&lt;span style="font-family:courier new;"&gt;/Play.*^Ipriority"&lt;/span&gt; as the first thing we want to keep, and since we also want to keep the "_INI" in the end, we define that as \2. The end result is rather confusing, but it does the job!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;:%s/\(Play.*^Ipriority\).*\(_INI\)/\1Playback\2/g&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the result is exactly what I wanted!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;COMMAND     &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Record    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;SetPriority                 priorityRecording_INI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;COMMAND     &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Record    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;SetPriority                 priorityPlayback_INI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;COMMAND     &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Record    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;SetDestinationSampleRateL   Record_A_006_INI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;COMMAND     &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Record    &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;SetDestinationBitRateL      Record_A_005_INI&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Imagine doing this for a file with 2000 rows, allowing us to automate boring manual labour. You can read more about regular expressions in Vim's help page (:help :s or :help pattern) or &lt;a href="http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/"&gt;http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/&lt;/a&gt;, a great cheat-sheet.&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-5501776332097459062?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/5501776332097459062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=5501776332097459062' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/5501776332097459062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/5501776332097459062'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/02/using-regular-expressions-in-vim.html' title='Using regular expressions in Vim'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-8049466657417922571</id><published>2009-01-25T17:20:00.008+01:00</published><updated>2009-01-25T19:07:06.823+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='rt2860'/><category scheme='http://www.blogger.com/atom/ns#' term='wlan'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><title type='text'>Configuring the Ralink RT2860 card</title><content type='html'>This is how I set up my Zepto Znote 6024W (using the Ralink RT2860 wifi card) with my D-Link DI-524 router. It is a really crappy router, and I have had lots of problems with it, but today I seem to have found a solution to my problems. It still seems to disconnect a lot, but if I dhclient it again, it usually reconnects. This is how I set it up.&lt;br /&gt;&lt;br /&gt;Go to Ralink's website at &lt;a href="http://web.ralinktech.com/ralink/Home/Support/Linux.html"&gt;http://web.ralinktech.com/ralink/Home/Support/Linux.html&lt;/a&gt;. The latest drivers when writing this is 1.8.0. Download them and untar them somewhere.&lt;br /&gt;&lt;br /&gt;I really recommend you to read the README_STA that comes with the drivers. It tells you how to configure the drivers for your setup, even if they do leave a lot to wish for. The information that I'm sharing here is a mix between that file, as well as the info that can be found in the manpages for wpa_supplicant, wpa_cli, wpa_supplicant.conf and ifup.&lt;br /&gt;&lt;br /&gt;First we change the config for the build so the card is being controlled by wext and network manager. Open the file os/linux/config.mk and set:&lt;br /&gt;'HAS_WPA_SUPPLICANT=y' and "HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.&lt;br /&gt;&lt;br /&gt;Save the file, we now move on to configuring the more detailed stuff. The settings for the drivers are entered into the RT2860STA.dat file in the base directory of the drivers. This is then copied to /etc/Wireless/RT2860STA/ when we compile the source and run 'make install'.&lt;br /&gt;Edit the settings that interests you. I don't see why we need to enter our psk (preshared key) both here and in the wpa settings (see further down), but I haven't had the guts to remove my settings. The things I changed are:&lt;br /&gt;&lt;br /&gt;#The word of "Default" must not be removed&lt;br /&gt;Default&lt;br /&gt;CountryRegion=5&lt;br /&gt;CountryRegionABand=7&lt;br /&gt;CountryCode=&lt;br /&gt;ChannelGeography=1&lt;br /&gt;SSID=your_ssid&lt;br /&gt;NetworkType=Infra&lt;br /&gt;WirelessMode=9&lt;br /&gt;Channel=0&lt;br /&gt;AuthMode=WPA2&lt;br /&gt;EncrypType=TKIP&lt;br /&gt;WPAPSK=cf3e61b119de1e8bceb45edc60c5b7aa00b240c58bee8ba83cc9448761300cf3&lt;br /&gt;&lt;br /&gt;To find the encrypted version of your password, use wpa_passphrase. The output should look something like this:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george:# wpa_passphrase your_ssid super_duper_password&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;network={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   ssid="your_ssid"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   #psk="super_duper_password"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   psk=cf3e61b119de1e8bceb45edc60c5b7aa00b240c58bee8ba83cc9448761300cf3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We will do the same again later, but for setting up the wpa_supplicant. Now let's build the driver and load it into the kernel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george:# make all &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; modprobe rt2860sta&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enable, build and load the kernel modules that allows for encryption (TKIP, AES etc). If you are running Ubuntu, these will be compiled as modules already (which means that we don't have to recompile anything), otherwise enable them as modules in the kernel and compile and install them.&lt;br /&gt;&lt;br /&gt;load kernel modules for encryption&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george:# modprobe ieee80211_crypt_tkip \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ieee80211_crypt_ccmp \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ieee80211_crypt \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;aes_x86_64 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;aes_generic&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now it's time to set up the configuration for wpa_supplicant, so we can connect to our encrypted access point. Since you've already set a password on the AP, let us try to use it.&lt;br /&gt;&lt;br /&gt;Encrypt password using wpa_passphrase&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george:# &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;wpa_passphrase your_ssid super_duper_password &gt;&gt; /etc/wpa_supplicant/wpa_supplicant.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Edit the created file so we can add some settings. I am running WPA2 with both AES and TKIP encryption, so I'll let the driver use both.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george:# vim /etc/wpa_supplicant/wpa_supplicant.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;network={&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   ssid="your_ssid"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   scan_ssid=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   key_mgmt=WPA-PSK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   pairwise=CCMP TKIP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   group=CCMP TKIP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   #psk="super_duper_password"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   psk=cf3e61b119de1e8bceb45edc60c5b7aa00b240c58bee8ba83cc9448761300cf3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The file should now look something like above. We now start wpa_supplicant with the arguments that it should use the wext (generic wireless driver for Linux) driver, with our config file. It will also set up the interface as ra0. We also tell it to be verbose, so it is easier to spot errors in our configuration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george: #wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant/wpa_supplicant.conf -d&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;And to receive the correct dhcp info from our access point we run dhclient on it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@george: # dhclient ra0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;We can check the interface has been started now with ifconfig and iwconfig:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@George:# ifconfig ra0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ra0       Link encap:Ethernet  HWaddr 00:15:af:b7:93:xx&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         inet addr:192.168.0.116  Bcast:192.168.0.255  Mask:255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         RX packets:44812 errors:0 dropped:0 overruns:0 frame:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         TX packets:9096 errors:0 dropped:0 overruns:0 carrier:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         collisions:0 txqueuelen:1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         RX bytes:4619023 (4.6 MB)  TX bytes:369091 (369.0 KB)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Interrupt:18&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@George:# iwconfig ra0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ra0       RT2860 Wireless  ESSID:"your_ssid"  Nickname:"RT2860STA"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Mode:Managed  Frequency=2.452 GHz  Access Point: 00:1C:F0:88:A4:02 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Bit Rate=54 Mb/s &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         RTS thr:off   Fragment thr:off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Encryption key:50FF-9C3C-6A3B-1EBB-6D50-AF11-8F74-XXXX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Link Quality=100/100  Signal level:-39 dBm  Noise level:-81 dBm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         Tx excessive retries:0  Invalid misc:0   Missed beacon:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My computer keeps disconnecting, and I'm unsure about what to do about that. This does at least get the network up, so I could post this article! First I had lots of settings for the encryption in my /etc/network/interfaces file, but I moved all these to the wpa_supplicant.conf file, which should mean that we can keep a very clean interfaces file. We do need to make it run wpa_supplicant every time we want the interface up though, so we'll add that to the config. Mine now looks like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@George:# cat /etc/network/interfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;auto lo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;iface lo inet loopback&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;auto eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;iface eth0 inet dhcp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;auto ra0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;iface ra0 inet dhcp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;pre-up /sbin/wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now it should get the interface up and running every time you boot the computer. Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-8049466657417922571?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/8049466657417922571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=8049466657417922571' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/8049466657417922571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/8049466657417922571'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2009/01/configuring-ralink-rt2860-card.html' title='Configuring the Ralink RT2860 card'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-2708147238144108421</id><published>2008-12-13T16:58:00.003+01:00</published><updated>2008-12-13T17:39:23.049+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reiser4'/><category scheme='http://www.blogger.com/atom/ns#' term='ext4'/><category scheme='http://www.blogger.com/atom/ns#' term='file systems'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='patch'/><title type='text'>Adding Reiser4 and Ext4 support in the 2.6.27 kernel</title><content type='html'>I recently bought a new hard drive, and thought that I might try some "new" filesystems that I haven't used before. Therefore I went with the Reiser4 (not supported in the kernel, and&lt;a href="http://kerneltrap.org/mailarchive/linux-kernel/2008/8/1/2780064"&gt; won't be in the near feature for several reasons&lt;/a&gt;) and Ext4 (which will be in 2.6.28).&lt;br /&gt;&lt;br /&gt;To add support for these file systems we need to patch the kernel with the official patches that we can find &lt;a href="http://www.kernel.org/pub/linux/kernel/people/edward/reiser4/reiser4-for-2.6/"&gt;here&lt;/a&gt; and &lt;a href="ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/ext4-patches/2.6.27-ext4-2/"&gt;here&lt;/a&gt; respectively. Download the files (to your desktop in this case) and extraxt them into your kernel directory.&lt;br /&gt;&lt;br /&gt;# cd ~/Desktop/&lt;br /&gt;# gunzip reiser4-for-2.6.27.patch.gz&lt;br /&gt;# bzip2 -d 2.6.27-ext4-2.bz2&lt;br /&gt;# sudo cp reiser4-for-2.6.27.patch 2.6.27-ext4-2 /usr/src/linux/&lt;br /&gt;# cd /usr/src/linux&lt;br /&gt;&lt;br /&gt;Then su and type in you password (or do the rest with sudo). To apply the patch we use the command "patch", with the -p argument.&lt;br /&gt;&lt;br /&gt;# patch -p1 &lt; reiser4-for-2.6.27.patch&lt;br /&gt;# patch -p1 &lt; 2.6.27-ext4-2&lt;br /&gt;&lt;br /&gt;Then we need to enable it.&lt;br /&gt;&lt;br /&gt;# make menuconfig&lt;br /&gt;&lt;br /&gt;and enable the new filesystems that exists under the "File Systems". Build the kernel and install it.&lt;br /&gt;&lt;br /&gt;# make all modules_install&lt;br /&gt;# make install&lt;br /&gt;&lt;br /&gt;Then let's cross our fingers and hope it works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-2708147238144108421?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/2708147238144108421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=2708147238144108421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/2708147238144108421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/2708147238144108421'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/12/adding-reiser4-and-ext4-support-in-2627.html' title='Adding Reiser4 and Ext4 support in the 2.6.27 kernel'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-3179953784602354822</id><published>2008-11-18T10:58:00.006+01:00</published><updated>2008-11-19T15:14:31.102+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bit'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Hell has finally frozen over!</title><content type='html'>Today marks a milestone in human history, like when man crawled onto land and decided to stay there, or the industrial revolution. Adobe has finally released a &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;64 bit Flash version for Linux&lt;/a&gt;! And not only for Linux, but also for.. oh wait, no ONLY for Linux! It must be the first time ever a large, closed source, company releases a linux version before any other platform. Kudos to them! I just wish they would focus on a 64 bit ver... oh wait.&lt;br /&gt;&lt;br /&gt;This is just an early version, "pre release quality", but it does mean alot. I'll download it as soon as possible, and I hope you don't forget to also report bugs on their &lt;a href="https://bugs.adobe.com/flashplayer/"&gt;official bugtracker&lt;/a&gt;, and not only complain on a forum somewhere. But what took them so long? &lt;a href="http://www.kaourantin.net/2008/11/64-bits.html"&gt;Tinic Uro explains some of it on his blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This was probably one of the last things that my girlfriend complains daily about, which usually goes like:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;"Why the HELL do you want things like this?! Never ANYTHING working! Always spending half an hour fixing this and that, EVERYTIME we are supposed to watch a movie (with subtitles), youtube video or listen to internet radio."&lt;/blockquote&gt;I also saw that Sun is actually about to release (newly released) their 64-bit version of their JRE and their java plugins as well. It only took them &lt;a href="http://bugs.sun.com/view_bug.do?bug_id=4802695"&gt;4 years to fix that bug&lt;/a&gt;! Now it is supposed to work on Linux/Windows/Mac and soon Solaris. Hell, maybe soon I won't even bitch monthly about surfing the web.&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/6731950025740957039-3179953784602354822?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/3179953784602354822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=3179953784602354822' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/3179953784602354822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/3179953784602354822'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/11/hell-has-finally-frozen.html' title='Hell has finally frozen over!'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-43172980382096982</id><published>2008-10-27T23:26:00.004+01:00</published><updated>2008-10-29T11:07:57.599+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='intrepid ibex'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Sound problems on Ubuntu Intrepid Ibex</title><content type='html'>I've been running the Intrepid Ibex Beta for about a month now, and I must say it is surprisingly unstable and troublesome. At least for a beta. Now, when it is slowly approaching the release date of 8.10, it is starting to reach a certain level of stability and usability.&lt;br /&gt;&lt;br /&gt;Something that was a bit more annoying than losing wifi - since I have an extra network cable close to the couch - is actually the loss of all sound. Except a crackling sound every now and then when trying to play a file (no matter if it is video or music). I have an Intel card, but I don't know if it only happens on those cards.&lt;br /&gt;&lt;br /&gt;I did however find a small fix for it, I just needed to restart alsa, and force it to reload the modules. Why this had to be done, I don't know, but 2 seconds later the sound was back. Crisp and crystal clear.&lt;br /&gt;&lt;br /&gt;The key?&lt;br /&gt;&lt;blockquote&gt;alsa force-reload&lt;/blockquote&gt;&lt;br /&gt;This fixes the issue for good, also after a reboot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-43172980382096982?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/43172980382096982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=43172980382096982' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/43172980382096982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/43172980382096982'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/10/sound-problems-on-ubuntu-intrepid-ibex.html' title='Sound problems on Ubuntu Intrepid Ibex'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-7238381353672839391</id><published>2008-09-17T17:33:00.002+02:00</published><updated>2008-09-17T17:37:54.939+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Working some magic in (G)Vim</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;It's hard not to love Vim when substitutions and movement is as beatiful as it is. The commands of the day are:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;:g!/IMPORT.*\n/d&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ggVG&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:retab!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:g/\t.*\s.*\s/d&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:%s/(\(.*\),/(KCommand\1,"\1"/g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:%s/_LIT(K\(.*\),.*);/TBool CAudioMgmtServerWrapper::\1()/g&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;These few commands actually lets us completely reformat a block of text, remove comments, add variable names and then turn it into a list of functions again. Sweeet.&lt;br /&gt;Let's go through them a bit more in detail:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:g/exp1/d&lt;/span&gt; - cut (delete) the text that matches the expression1 inside the "//".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ggVG&lt;/span&gt; - go to the top (gg), go into 'mark mode' (V) and then go to the EOF (G). This is performed in ordinary command mode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:retab!&lt;/span&gt; - Let's replace whitespaces with real tabs instead.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;:%s/exp1/exp2/g&lt;/span&gt; - Replace expression1 with expression2, and do it for all occurences on every line (g).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-7238381353672839391?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/7238381353672839391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=7238381353672839391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/7238381353672839391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/7238381353672839391'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/09/working-some-magic-in-gvim.html' title='Working some magic in (G)Vim'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-4053013673483201336</id><published>2008-09-09T23:36:00.005+02:00</published><updated>2008-09-09T23:53:30.870+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subspace battle'/><category scheme='http://www.blogger.com/atom/ns#' term='sourceforge'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>How to change/update the URL of your SVN repository</title><content type='html'>&lt;a href="http://www.sf.net/"&gt;Sourceforge&lt;/a&gt; has done some huge updates and changes during the last couple of months, and I might not be the busiest bee regarding updates and commits to my own project, &lt;a href="http://subspacebattle.sf.net/"&gt;Subspace Battle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Today when I was doing some updates and fixes, I tried to call it a night and did the final touch: a commit. But for some reason I kept getting a '403' error, which means there is some security issue. I knew my password was correct, and also the user, so what could it be? Perhaps the UUID of the server had changed after sourceforge's updates, and that somehow stopped the update. I checked their website to see if there were any changes or big "REMEMBER TO DO THIS" signs waving at me, but saw none.&lt;br /&gt;&lt;br /&gt;After reading through parts of the svn guide, I compared my repository URL to the one I got from the 'svn info' command. It turns out that they have switched to https (instead of http), which means my URL was wrong. So how do we update it without downloading another local copy of everything? I tried several different solutions, and finally find the right one!&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;svn switch --relocate http://subspacebattle.svn.sourceforge.net/svnroot/subspacebattle https://subspacebattle.svn.sourceforge.net/svnroot/subspacebattle&lt;/blockquote&gt;This simply changes the URL of the repository that your local version maps to. Or as the 'help' chapter describes it, if only I had read that sooner...&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;switch (sw): Update the working copy to a different URL.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;usage: switch --relocate FROM TO [PATH...]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   Rewrite working copy URL metadata to reflect a syntactic change only.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     This is used when repository's root URL changes (such as a scheme&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     or hostname change) but your working copy still reflects the same&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     directory within the same repository.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Now let's get on with the commits!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-4053013673483201336?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/4053013673483201336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=4053013673483201336' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/4053013673483201336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/4053013673483201336'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/09/how-to-changeupdate-url-of-your-svn.html' title='How to change/update the URL of your SVN repository'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-3763042164401091827</id><published>2008-09-07T17:13:00.001+02:00</published><updated>2008-09-07T17:13:52.024+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='portage'/><category scheme='http://www.blogger.com/atom/ns#' term='command line tools'/><title type='text'>Sending output from one command to another</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;When I recently updated xorg-server to version 1.5.0 (which comes with the new X.org that is released soon!) I needed to rebuild some of the drivers (packages) that comes with it. To get the list of drivers I use the command qlist.&lt;br/&gt;&lt;blockquote&gt;$ qlist -I -C x11-drivers/&lt;br/&gt;&lt;/blockquote&gt;which outputs a list of packages from the category x11-drivers that are installed (-I) and without color (-C). Although it's nice to get a list like the one I got:&lt;br/&gt;&lt;blockquote&gt;$ qlist -I -C x11-drivers/&lt;br/&gt;x11-drivers/nvidia-drivers&lt;br/&gt;x11-drivers/xf86-input-evdev&lt;br/&gt;x11-drivers/xf86-input-keyboard&lt;br/&gt;x11-drivers/xf86-input-mouse&lt;br/&gt;x11-drivers/xf86-video-nv&lt;br/&gt;&lt;/blockquote&gt;it's a bit annoying if you have to copy and past all these onto the command line as parameters to the 'emerge' command. So what we do is get the qlist to list these packages &lt;b&gt;into&lt;/b&gt; the emerge command. This is done using the "$" symbol, which first evaluates the output of its embedded command, and then outputs it as a parameter to the parent command. To clarify:&lt;br/&gt;$ parent-command $(command we want the output from)&lt;br/&gt;&lt;br/&gt;which in our case turns out to be:&lt;br/&gt;&lt;blockquote&gt;# emerge $(qlist -I -C x11-drivers/)&lt;br/&gt;&lt;/blockquote&gt;This starts the emerge and re-compile of all our drivers. Now we wait... ;)&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/6731950025740957039-3763042164401091827?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/3763042164401091827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=3763042164401091827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/3763042164401091827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/3763042164401091827'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/09/sending-output-from-one-command-to.html' title='Sending output from one command to another'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-7757892888979994875</id><published>2008-08-31T14:08:00.003+02:00</published><updated>2008-09-03T11:30:26.983+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='command line tools'/><title type='text'>Using find to recursively unrar all files in subfolders</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Sometimes when I've downloaded something, it is compressed into several small rar files, divided into lots of subfolders. This can be handy to keep track of files, but at the same time a pain in the ass when uncompressing them. You simply have to go into each subfolder and either run:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$ unrar x *01.rar&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;or using a gui-tool to unrar/unzip them. A little trick to make this a lot faster is to simply use the "find" command to find all the files you need, and then send them into whatever program you need to decompress them. You can use the same command to pipe files into playlists or even to compress files into several folders.&lt;br /&gt;&lt;br /&gt;Now in this example we have a folder structure like the following:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; ls -l&lt;br /&gt;totalt 2,3G&lt;br /&gt;foo.bar.v1.12.sourcecode/&lt;br /&gt;foo.bar.v1.13.sourcecode/&lt;br /&gt;foo.bar.v1.14.sourcecode/&lt;br /&gt;foo.bar.v1.15.sourcecode/&lt;br /&gt;foo.bar.v1.16.sourcecode/&lt;br /&gt;foo.bar.v1.17.sourcecode/&lt;br /&gt;foo.bar.v1.18.sourcecode/&lt;br /&gt;foo.bar.v1.19.sourcecode/&lt;br /&gt;foo.bar.v1.20.sourcecode/&lt;br /&gt;foo.bar.v1.21.sourcecode/&lt;br /&gt;foo.bar.v1.22.sourcecode/&lt;br /&gt;foo.bar.v1.23.sourcecode/&lt;br /&gt;foo.bar.v1.24.sourcecode/&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;First we start with the find command.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; find ./software-foo*/&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;This will list all files in the folders. Each subdirectory in its turn contains:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; ls -l&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part01.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part02.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part03.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part04.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part05.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part06.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part07.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part08.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part09.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part10.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part11.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part12.rar&lt;br /&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part13.rar&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;To unrar, we need to define the first file (or any really, but just one) in each subdirectory. To show just the files we add the "-type f" flag. To then be able to parse the list, we also add a check for filenames. This is done with the "-name" flag.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; find ./software-foo*/ -type f -name '*01.rar'&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;This gives us a list of the filenames that match the pattern *01.rar.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; find ./software-foo*/ -type f -name '*01.rar'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.12.sourcecode/foo.bar.v1.12.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.13.sourcecode/foo.bar.v1.13.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.14.sourcecode/foo.bar.v1.14.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.15.sourcecode/foo.bar.v1.15.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.16.sourcecode/foo.bar.v1.16.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.17.sourcecode/foo.bar.v1.17.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.18.sourcecode/foo.bar.v1.18.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.19.sourcecode/foo.bar.v1.19.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.20.sourcecode/foo.bar.v1.20.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.21.sourcecode/foo.bar.v1.21.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.22.sourcecode/foo.bar.v1.22.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.23.sourcecode/foo.bar.v1.23.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;./foo.bar.v1.24.sourcecode/foo.bar.v1.24.sourcecode.part01.rar&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;So here is our list of files that we want to unrar. We then add the flag "-exec" to perform a command on the given files. The command we want is "unrar x", and then we also need to add some extra syntax to give the command its parameters.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; find ./software-foo*/ -type f -name '*01.rar' -exec unrar x {} \;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Now we just wait! This decompresses all the files in all the subdirectories into the current directory. Perhaps not the best thing if it's hundreds of sourcefiles, so we have one more trick. Instead of using the "-exec" flag, we use the "-execdir" flag. Instead of performing the command from the directory where "find" was invoced, it performs it from each subdirectory. This sorts the files into subfolders for us!&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;$&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt; find ./software-foo*/ -type f -name '*01.rar' -execdir unrar x {} \;&lt;/span&gt;&lt;/blockquote&gt;Hope this helps in the future! This is one reason why the command line is hard to replace fully in a GUI application.&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/6731950025740957039-7757892888979994875?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/7757892888979994875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=7757892888979994875' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/7757892888979994875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/7757892888979994875'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/08/using-find-to-unrar-all-files-in.html' title='Using find to recursively unrar all files in subfolders'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-1772379880575605165</id><published>2008-08-30T21:08:00.002+02:00</published><updated>2008-09-03T11:33:33.761+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='media server'/><category scheme='http://www.blogger.com/atom/ns#' term='playstation 3'/><title type='text'>Using the PlayStation 3 as a media center with Linux</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;I recently got a PlayStation 3 from my wonderful girlfriend, and one of the reasons I wanted one was for its great possibilities of being a media center. I installed &lt;a href="http://mediatomb.cc/"&gt;MediaTomb&lt;/a&gt; on my Linux machine (Gentoo) and after half an hour of configurations, it was ready to stream content to the PS3.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installing MediaTomb&lt;br /&gt;&lt;/b&gt;Portage is wonderful, and of course contains &lt;a href="http://mediatomb.cc/"&gt;MediaTomb&lt;/a&gt;. It is an open source uPnP media server with &lt;a href="http://en.wikipedia.org/wiki/DLNA"&gt;DLNA&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/DLNA"&gt; support&lt;/a&gt;. DLNA is a protocol that computers and other devices can use to talk to each other, for instance when supplying video files over a network. It can do much more too, just have a look at the link to wikipedia for more info. When I did my install, I followed the guide at &lt;a href="http://gentoo-wiki.com/HOWTO_MediaTomb"&gt;gentoo-wiki.com&lt;/a&gt;. To get more information (especially regarding transcoding), check the site there, this is my "shortcut" guide to it.&lt;br /&gt;&lt;br /&gt;Install it using portage:&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;# emerge mediatomb&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;Make sure you have the use flags that you need enabled. I'm using&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;[I] net-misc/mediatomb&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;     Available versions:  0.11.0 {curl debug exif expat ffmpeg javascript libextractor mysql taglib}&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;     Installed versions:  0.11.0(22.28.13 2008-08-17)(curl exif expat ffmpeg javascript taglib -debug -libextractor -mysql)&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;     Homepage:            http://www.mediatomb.cc/&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;     Description:         MediaTomb is an open source UPnP MediaServer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;and that works well for me. Since I rather use sqlite instead of a full mysql install, I haven't enabled that use flag.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;When streaming to the PS3, you also need to enable some transcoding support. This also allows you to get thumbnails on the different video files. I use ffmpeg as my transcoder, since I already have it installed. Make sure you have the "encode" use flag enabled. If you need video thumbnails, also install ffmpegthumbnailer. support. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;# emerge ffmgeg&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;# emerge ffmpegthumbnailer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;Then you have to create 2 scripts to launch the transcoding for you. First the script for audio (/usr/bin/mediatomb-transcode-audio):&lt;/span&gt;&lt;pre&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;FFMPEG_PATH="/usr/bin/ffmpeg"&lt;br /&gt;INPUT="$1"&lt;br /&gt;OUTPUT="$2"&lt;br /&gt;VIDEO_CODEC="mpeg2video"&lt;br /&gt;VIDEO_BITRATE="4096k"&lt;br /&gt;VIDEO_FRAMERATE="25"&lt;br /&gt;AUDIO_CODEC="mp2"&lt;br /&gt;AUDIO_BITRATE="192k"&lt;br /&gt;AUDIO_SAMPLERATE="44100"&lt;br /&gt;AUDIO_CHANNELS="2"&lt;br /&gt;FORMAT="dvd"&lt;br /&gt;&lt;br /&gt;exec "${FFMPEG_PATH}" -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \&lt;br /&gt;-r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} \&lt;br /&gt;-ac ${AUDIO_CHANNELS} -f ${FORMAT} - &gt; "${OUTPUT}" 2&gt;/dev/null&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;and then the one for video (/usr/bin/mediatomb-transcode-video)&lt;blockquote&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;FFMPEG_PATH="/usr/bin/ffmpeg"&lt;br /&gt;INPUT="$1"&lt;br /&gt;OUTPUT="$2"&lt;br /&gt;VIDEO_CODEC="mpeg2video"&lt;br /&gt;VIDEO_BITRATE="4096k"&lt;br /&gt;VIDEO_FRAMERATE="25"&lt;br /&gt;AUDIO_CODEC="mp2"&lt;br /&gt;AUDIO_BITRATE="192k"&lt;br /&gt;AUDIO_SAMPLERATE="44100"&lt;br /&gt;AUDIO_CHANNELS="2"&lt;br /&gt;FORMAT="dvd"&lt;br /&gt;&lt;br /&gt;exec "${FFMPEG_PATH}" -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \&lt;br /&gt;-r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} \&lt;br /&gt;-ac ${AUDIO_CHANNELS} -f ${FORMAT} - &gt; "${OUTPUT}" 2&gt;/dev/null&lt;/pre&gt;&lt;/blockquote&gt;We need to make them both executable:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;# chmod +x /usr/bin/mediatomb-transcode-audio&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;# chmod +x /usr/bin/mediatomb-transcode-video&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;My config file now looks like the following. Copy it to /etc/mediatomb/config.xml and start MediaTomb.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;config version="1" xmlns="http://mediatomb.cc/config/1"&lt;br /&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://mediatomb.cc/config/1&lt;br /&gt;http://mediatomb.cc/config/1.xsd"&amp;gt;&lt;br /&gt;&amp;lt;server&amp;gt;&lt;br /&gt;    &amp;lt;ui enabled="yes"&amp;gt;&lt;br /&gt;        &amp;lt;accounts enabled="no" session-timeout="30"&amp;gt;&lt;br /&gt;            &amp;lt;account user="mediatomb" password="mediatomb"/&amp;gt;&lt;br /&gt;        &amp;lt;/accounts&amp;gt;&lt;br /&gt;    &amp;lt;/ui&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;MediaTomb&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;udn&amp;gt;uuid:51b10cef-e678-41be-8a0c-6d53e5243b2d&amp;lt;/udn&amp;gt;&lt;br /&gt;    &amp;lt;home&amp;gt;/var/lib/mediatomb&amp;lt;/home&amp;gt;&lt;br /&gt;    &amp;lt;webroot&amp;gt;/usr/share/mediatomb/web&amp;lt;/webroot&amp;gt;&lt;br /&gt;    &amp;lt;storage&amp;gt;&lt;br /&gt;        &amp;lt;sqlite3 enabled="yes"&amp;gt;&lt;br /&gt;            &amp;lt;database-file&amp;gt;mediatomb.db&amp;lt;/database-file&amp;gt;&lt;br /&gt;        &amp;lt;/sqlite3&amp;gt;&lt;br /&gt;        &amp;lt;mysql enabled="no"&amp;gt;&lt;br /&gt;            &amp;lt;host&amp;gt;localhost&amp;lt;/host&amp;gt;&lt;br /&gt;            &amp;lt;database&amp;gt;mediatomb&amp;lt;/database&amp;gt;&lt;br /&gt;            &amp;lt;username&amp;gt;mediatomb&amp;lt;/username&amp;gt;&lt;br /&gt;            &amp;lt;password&amp;gt;mediatomb&amp;lt;/password&amp;gt;&lt;br /&gt;        &amp;lt;/mysql&amp;gt;&lt;br /&gt;    &amp;lt;/storage&amp;gt;&lt;br /&gt;    &amp;lt;protocolInfo extend="yes"/&amp;gt;&lt;br /&gt;&amp;lt;/server&amp;gt;&lt;br /&gt;&amp;lt;import hidden-files="no"&amp;gt;&lt;br /&gt;    &amp;lt;scripting script-charset="UTF-8"&amp;gt;&lt;br /&gt;        &amp;lt;common-script&amp;gt;/usr/share/mediatomb/js/common.js&amp;lt;/common-script&amp;gt;&lt;br /&gt;        &amp;lt;playlist-script&amp;gt;/usr/share/mediatomb/js/playlists.js&amp;lt;/playlist-script&amp;gt;&lt;br /&gt;        &amp;lt;virtual-layout type="builtin"&amp;gt;&lt;br /&gt;            &amp;lt;import-script&amp;gt;/usr/share/mediatomb/js/import.js&amp;lt;/import-script&amp;gt;&lt;br /&gt;        &amp;lt;/virtual-layout&amp;gt;&lt;br /&gt;    &amp;lt;/scripting&amp;gt;&lt;br /&gt;    &amp;lt;mappings&amp;gt;&lt;br /&gt;        &amp;lt;extension-mimetype ignore-unknown="no"&amp;gt;&lt;br /&gt;            &amp;lt;map from="mp3" to="audio/mpeg"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="ogg" to="application/ogg"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="asf" to="video/x-ms-asf"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="asx" to="video/x-ms-asf"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="wma" to="audio/x-ms-wma"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="wax" to="audio/x-ms-wax"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="wmv" to="video/x-ms-wmv"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="wvx" to="video/x-ms-wvx"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="wm" to="video/x-ms-wm"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="wmx" to="video/x-ms-wmx"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="m3u" to="audio/x-mpegurl"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="pls" to="audio/x-scpls"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="flv" to="video/x-flv"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="avi" to="video/x-divx"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="divx" to="video/x-divx"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="vob" to="video/x-divx"/&amp;gt;&lt;br /&gt;        &amp;lt;/extension-mimetype&amp;gt;&lt;br /&gt;        &amp;lt;mimetype-upnpclass&amp;gt;&lt;br /&gt;            &amp;lt;map from="audio/*" to="object.item.audioItem.musicTrack"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="video/*" to="object.item.videoItem"/&amp;gt;&lt;br /&gt;            &amp;lt;map from="image/*" to="object.item.imageItem"/&amp;gt;&lt;br /&gt;        &amp;lt;/mimetype-upnpclass&amp;gt;&lt;br /&gt;        &amp;lt;mimetype-contenttype&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="audio/mpeg" as="mp3"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="application/ogg" as="ogg"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="audio/x-flac" as="flac"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="image/jpeg" as="jpg"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="audio/x-mpegurl" as="playlist"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="audio/x-scpls" as="playlist"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="audio/x-wav" as="pcm"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="audio/L16" as="pcm"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="video/x-msvideo" as="avi"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="video/divx" as="avi"/&amp;gt;&lt;br /&gt;            &amp;lt;treat mimetype="video/vob" as="avi"/&amp;gt;&lt;br /&gt;        &amp;lt;/mimetype-contenttype&amp;gt;&lt;br /&gt;    &amp;lt;/mappings&amp;gt;&lt;br /&gt;&amp;lt;/import&amp;gt;&lt;br /&gt;&amp;lt;transcoding enabled="yes"&amp;gt;&lt;br /&gt;    &amp;lt;mimetype-profile-mappings&amp;gt;&lt;br /&gt;        &amp;lt;transcode mimetype="application/ogg" using="audio-common"/&amp;gt;&lt;br /&gt;        &amp;lt;transcode mimetype="application/ogg" using="video-common"/&amp;gt;&lt;br /&gt;        &amp;lt;transcode mimetype="audio/x-flac" using="audio-common"/&amp;gt;&lt;br /&gt;        &amp;lt;transcode mimetype="video/x-flv" using="video-common"/&amp;gt;&lt;br /&gt;        &amp;lt;transcode mimetype="video/divx" using="video-common"/&amp;gt;&lt;br /&gt;        &amp;lt;transcode mimetype="video/divx" using="video-thumbnail"/&amp;gt;&lt;br /&gt;    &amp;lt;/mimetype-profile-mappings&amp;gt;&lt;br /&gt;    &amp;lt;profiles&amp;gt;&lt;br /&gt;        &amp;lt;profile name="audio-common" enabled="yes" type="external"&amp;gt;&lt;br /&gt;            &amp;lt;mimetype&amp;gt;audio/L16&amp;lt;/mimetype&amp;gt;&lt;br /&gt;            &amp;lt;accept-url&amp;gt;yes&amp;lt;/accept-url&amp;gt;&lt;br /&gt;            &amp;lt;first-resource&amp;gt;yes&amp;lt;/first-resource&amp;gt;&lt;br /&gt;            &amp;lt;hide-original-resource&amp;gt;yes&amp;lt;/hide-original-resource&amp;gt;&lt;br /&gt;            &amp;lt;accept-ogg-theora&amp;gt;no&amp;lt;/accept-ogg-theora&amp;gt;&lt;br /&gt;            &amp;lt;agent command="mediatomb-transcode-audio" arguments="%in %out"/&amp;gt;&lt;br /&gt;            &amp;lt;buffer size="1048576" chunk-size="131072" fill-size="262144"/&amp;gt;&lt;br /&gt;        &amp;lt;/profile&amp;gt;&lt;br /&gt;        &amp;lt;profile name="video-common" enabled="yes" type="external"&amp;gt;&lt;br /&gt;            &amp;lt;mimetype&amp;gt;video/mpeg&amp;lt;/mimetype&amp;gt;&lt;br /&gt;            &amp;lt;accept-url&amp;gt;yes&amp;lt;/accept-url&amp;gt;&lt;br /&gt;            &amp;lt;first-resource&amp;gt;yes&amp;lt;/first-resource&amp;gt;&lt;br /&gt;            &amp;lt;hide-original-resource&amp;gt;yes&amp;lt;/hide-original-resource&amp;gt;&lt;br /&gt;            &amp;lt;accept-ogg-theora&amp;gt;yes&amp;lt;/accept-ogg-theora&amp;gt;&lt;br /&gt;            &amp;lt;agent command="mediatomb-transcode-video" arguments="%in %out"/&amp;gt;&lt;br /&gt;            &amp;lt;buffer size="10485760" chunk-size="262144" fill-size="524288"/&amp;gt;&lt;br /&gt;        &amp;lt;/profile&amp;gt;&lt;br /&gt;        &amp;lt;profile name="video-thumbnail" enabled="yes" type="external"&amp;gt;&lt;br /&gt;            &amp;lt;mimetype&amp;gt;image/jpeg&amp;lt;/mimetype&amp;gt;&lt;br /&gt;            &amp;lt;accept-url&amp;gt;yes&amp;lt;/accept-url&amp;gt;&lt;br /&gt;            &amp;lt;thumbnail&amp;gt;yes&amp;lt;/thumbnail&amp;gt;&lt;br /&gt;            &amp;lt;resolution&amp;gt;128x128&amp;lt;/resolution&amp;gt;&lt;br /&gt;            &amp;lt;agent command="ffmpegthumbnailer" arguments="-i %in -o %out -s 128"/&amp;gt;&lt;br /&gt;            &amp;lt;buffer size="524288" chunk-size="512" fill-size="1024"/&amp;gt;&lt;br /&gt;        &amp;lt;/profile&amp;gt;&lt;br /&gt;    &amp;lt;/profiles&amp;gt;&lt;br /&gt;&amp;lt;/transcoding&amp;gt;&lt;br /&gt;&amp;lt;/config&amp;gt;&lt;/pre&gt;&lt;/span&gt;&lt;/blockquote&gt;Start it using&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;# /etc/init.d/mediatomb start&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;Adding files and directories&lt;/b&gt;&lt;br /&gt;To add files to the MediaServer, simply point your favourite browser to http://192.168.0.157:49152/ and then press the "Filesystem" link to the left. There you can add the directories you want, and the server parses them for you. If you have inotify enabled in you kernel (which you probably do) it will be possible to let the server automatically know when something has been changed, and it reparses that directory when needed.&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6731950025740957039-1772379880575605165?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/1772379880575605165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=1772379880575605165' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/1772379880575605165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/1772379880575605165'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/08/using-playstation3-as-media-center-with_30.html' title='Using the PlayStation 3 as a media center with Linux'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6731950025740957039.post-94271818386358546</id><published>2008-08-28T13:17:00.001+02:00</published><updated>2008-08-28T13:29:12.497+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Mesa'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Mesa releases v.7.1</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;On the 26th of August, Mesa released the 7.1 version of their open-source implementation of the OpenGL library.&lt;br /&gt;&lt;br /&gt;This is a development release, and warns that users focused on stability should go for the 7.0.4 release instead (or wait for 7.2). There are some interesting features added though, like DRI enhancements, "lots of DRI driver fixes", and GL_EXT_texture_from_pixmap in Xlib driver. They also mention the upcoming change to the GEM Memory Manager. The last is not in this release, but it is in the master branch of the GIT source tree, so I guess now we just wait...&lt;br /&gt;&lt;br /&gt;The most interesting for me however is probably the support for the GL shading language on the i965 driver (Intel cards), this might actually mean that the integrated graphics card on my laptop finally supports shaders! Welcome to 2004! I bought the laptop with the intel card because of their great open source support, but was very (to say the least) surprised when it didn't have support of OpenGL2.0 or higher (or at least the shader side of it). Now my masters thesis might actually look a bit better, or at least as crappy as it looked on my desktop computer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/forum/forum.php?forum_id=860721"&gt;http://sourceforge.net/forum/forum.php?forum_id=860721&lt;/a&gt; + &lt;a href="http://mesa3d.sourceforge.net/"&gt;http://mesa3d.sourceforge.net/&lt;/a&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/6731950025740957039-94271818386358546?l=volatileint.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://volatileint.blogspot.com/feeds/94271818386358546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6731950025740957039&amp;postID=94271818386358546' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/94271818386358546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6731950025740957039/posts/default/94271818386358546'/><link rel='alternate' type='text/html' href='http://volatileint.blogspot.com/2008/08/mesa-releases-v71.html' title='Mesa releases v.7.1'/><author><name>Peter</name><uri>http://www.blogger.com/profile/01510314340010932116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://2.bp.blogspot.com/_35rmNQ4kVLc/SYrP_X3EyhI/AAAAAAAAARI/QsXXwUPOo54/S220/Peter-stande.jpg'/></author><thr:total>1</thr:total></entry></feed>
