<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-8365778674126402289</id><updated>2010-02-24T17:33:06.331+01:00</updated><title type='text'>Holger Kohnen's Thoughts</title><subtitle type='html'></subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/index.htm'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.holgerkohnen.de/atom.xml'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-1330790618258357045</id><published>2010-02-24T17:14:00.004+01:00</published><updated>2010-02-24T17:33:06.337+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>("php" == 0) is true</title><content type='html'>Believe it or not but this is a feature of the language.&lt;br /&gt;&lt;br /&gt;http://www.php.net/manual/en/types.comparisons.php&lt;br /&gt;(look for the second table)&lt;br /&gt;&lt;br /&gt;PHP automatically casts strings to number, if the boolean expression contains a number or both of the strings are containing only numbers.&lt;br /&gt;&lt;br /&gt;So the expression ("01" == "1") is also true,&lt;br /&gt;but ("0" == "php") is false.&lt;br /&gt;&lt;br /&gt;You could use strict equal(===) to avoid this behaviour.&lt;br /&gt;Which is a good idea, if you compare different types&lt;br /&gt;or strings with numeric content.&lt;br /&gt;&lt;br /&gt;You can't compare apples with oranges, because they are allways different.&lt;br /&gt;But with php you can do it and even better they are equal...;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-1330790618258357045?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/1330790618258357045/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=1330790618258357045' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1330790618258357045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1330790618258357045'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2010/02/php-0-is-true.html' title='(&quot;php&quot; == 0) is true'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-1536913988967918981</id><published>2007-08-27T14:38:00.000+02:00</published><updated>2007-08-28T17:51:38.861+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Testing Websites in older Internet Explorer's</title><content type='html'>If you need to test your Websites against older Versions of Microsoft's Internet Explorer this could be the Link you need:&lt;br /&gt;&lt;a href="http://tredosoft.com/Multiple_IE"&gt;http://tredosoft.com/Multiple_IE&lt;/a&gt;&lt;br /&gt;Seems not to work on Vista. So, you might want to install an virtual XP machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-1536913988967918981?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/1536913988967918981/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=1536913988967918981' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1536913988967918981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1536913988967918981'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/08/testing-websites-in-older-internet.html' title='Testing Websites in older Internet Explorer&apos;s'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-890373806966106417</id><published>2007-08-09T11:15:00.000+02:00</published><updated>2007-08-09T11:58:41.848+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='Schema'/><category scheme='http://www.blogger.com/atom/ns#' term='Conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='SQLFairy'/><title type='text'>SQLFairy - The SQL Translator</title><content type='html'>I needed to convert a database schema from MySQL to SQLite and found a great tool for doing such schema conversion jobs.&lt;br /&gt;&lt;pre&gt;# install sqlt on debian sytems with:&lt;br /&gt;sudo apt-get install sqlfairy&lt;br /&gt;# convert from one schema to another schema with:&lt;br /&gt;sqlt -f DBI --dsn dbi:mysql:dbname --db-user root -t SQLite &gt; sqlite.sql&lt;/pre&gt;The above command connects to mysql and reads the mysql schema from the connection and writes the sqlite schema to sqlite.sql. You can easily change this command for other databases. If you want to know if sqlt supports your conversion you can run:&lt;pre&gt;sqlt -l&lt;br /&gt;Parsers:&lt;br /&gt;       Access&lt;br /&gt;       DB2&lt;br /&gt;       DB2-Grammar&lt;br /&gt;       DBI&lt;br /&gt;       DBI-DB2&lt;br /&gt;       DBI-MySQL&lt;br /&gt;       DBI-PostgreSQL&lt;br /&gt;       DBI-SQLite&lt;br /&gt;       DBI-Sybase&lt;br /&gt;       Excel&lt;br /&gt;       MySQL&lt;br /&gt;       Oracle&lt;br /&gt;       PostgreSQL&lt;br /&gt;       SQLite&lt;br /&gt;       Storable&lt;br /&gt;       Sybase&lt;br /&gt;       XML&lt;br /&gt;       XML-SQLFairy&lt;br /&gt;       YAML&lt;br /&gt;       xSV&lt;br /&gt;&lt;br /&gt;Producers:&lt;br /&gt;       ClassDBI&lt;br /&gt;       Diagram&lt;br /&gt;       Dumper&lt;br /&gt;       GraphViz&lt;br /&gt;       HTML&lt;br /&gt;       MySQL&lt;br /&gt;       Oracle&lt;br /&gt;       POD&lt;br /&gt;       PostgreSQL&lt;br /&gt;       SQLServer&lt;br /&gt;       SQLite&lt;br /&gt;       Storable&lt;br /&gt;       Sybase&lt;br /&gt;       TT-Base&lt;br /&gt;       TT-Table&lt;br /&gt;       TTSchema&lt;br /&gt;       XML&lt;br /&gt;       XML-SQLFairy&lt;br /&gt;       YAML&lt;/pre&gt;The Parsers are needed to read the schema and the Producers are needed to write the schema.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Links&lt;/span&gt;&lt;br /&gt;&lt;a href="http://sqlfairy.sourceforge.net/"&gt;http://sqlfairy.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-890373806966106417?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/890373806966106417/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=890373806966106417' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/890373806966106417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/890373806966106417'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/08/sqlfairy-sql-translator.html' title='SQLFairy - The SQL Translator'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-7336847953522322587</id><published>2007-07-29T09:06:00.000+02:00</published><updated>2007-07-29T09:23:37.256+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='staging'/><category scheme='http://www.blogger.com/atom/ns#' term='capistrano'/><title type='text'>Capistrano multistage</title><content type='html'>Capistrano our loveliest tool has got a great plugin which allows us to easily stage releases before they going into production. So you can first deploy to testing and wait for the feedback of the QA/Project Owners and than "push the button" to deploy to production. If you need you could use more stages than testing and production.&lt;br /&gt;&lt;a href="http://weblog.jamisbuck.org/2007/7/23/capistrano-multistage"&gt;http://weblog.jamisbuck.org/2007/7/23/capistrano-multistage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-7336847953522322587?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/7336847953522322587/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=7336847953522322587' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/7336847953522322587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/7336847953522322587'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/07/capistrano-multistage.html' title='Capistrano multistage'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-1545375761264543460</id><published>2007-07-23T07:54:00.000+02:00</published><updated>2007-07-23T08:01:44.518+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='capistrano'/><category scheme='http://www.blogger.com/atom/ns#' term='capify'/><title type='text'>Capistrano 2.0 is real</title><content type='html'>Great news. Your favourite tool for automating tasks on multiple machines has released his second version. It is really an awesome tool. It makes you forget physical boundries between systems. Deploying is no pain anymore since &lt;a href="http://www.capify.org/"&gt;capistrano&lt;/a&gt; does anything for us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-1545375761264543460?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/1545375761264543460/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=1545375761264543460' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1545375761264543460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1545375761264543460'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/07/capistrano-20-is-real.html' title='Capistrano 2.0 is real'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-1580494308194097130</id><published>2007-07-23T07:43:00.000+02:00</published><updated>2007-07-29T10:23:09.615+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project_management'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Software Project Management: Retrospectiva</title><content type='html'>I must check out &lt;a href="http://retrospectiva.org/blog"&gt;this application&lt;/a&gt;, it looks really reasonable.&lt;br /&gt;&lt;a href="http://retrospectiva.org/wiki/Introduction"&gt;Introduction&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;br /&gt;Had some troubles installing retrospectiva on my ubuntu box. The solution was to do a:&lt;pre&gt;rake rails:freeze:edge TAG=rel_1-2-3&lt;/pre&gt;...in the retrospectiva app directory.&lt;br /&gt;The source of this problem was that i have installed the rails version:&lt;br /&gt;rails-1.2.3.7116 which seems not work with current stable retrospectiva version, this incompatibility is sadly not detected by retrospectivas environment.rb because the check there checks only for the major and the minor version which was corectly in my case. Otherwise everything noted in retrospectivas &lt;a href="http://retrospectiva.org/wiki/Quick+install"&gt;Quick Install Guide&lt;/a&gt; worked like a charm.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update 2&lt;/span&gt;&lt;br /&gt;This tool is awesome. Love the changeset feature, the easy setup, ticket filter and more. Can't wait to hear what non-programmers say to this easy interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-1580494308194097130?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/1580494308194097130/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=1580494308194097130' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1580494308194097130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/1580494308194097130'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/07/software-project-management.html' title='Software Project Management: Retrospectiva'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-614143074333246182</id><published>2007-07-08T12:37:00.000+02:00</published><updated>2007-07-08T13:46:56.182+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows_xp'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scite'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='flush'/><title type='text'>Developing Adobe Flash Actionscript on Linux</title><content type='html'>There are some possebilities out there. But they matched not my needs. What i simply wanted ist a way to develop Actionscript 1. Yes it's true, i want to develop Actionscript 1 ;-). If it is necessary i would develop AS3 or maybe AS2 but for most my needs AS1 is the perfect choice, it's compatible with JavaScript, dynamic and has it's focus on productivity and not on overestimated aspects like type safety.&lt;br /&gt;&lt;br /&gt;Flash 8 is my current Flash-IDE. I have tried to run it with wine but with limited success, it was very slow and buggy. So i tried to run Flash 8 from a virtual Windows XP Machine, it's not as fast as with an native Window XP but it is really fast enough to me. It seems that it's zero point three times slower.&lt;br /&gt;&lt;br /&gt;So far so good. As an advanced actionscript coder i don't wanted to code my AS1 inside the Flash 8 IDE, because this slows my hacking workflow about factor 3 or 4 down. This is because of the integrated Editor, which is definitly not worth to work with for more than 10 Minutes. My editor of choice is SciTE or SciTE-st. But i don't wanted to code on the virtual Windows XP. I wanted to use my nicely configured Linux version SciTE-st to code my AS1. But how would i test my movies in the virtual machine, without copying Actionscript files and switching to it.&lt;br /&gt;&lt;br /&gt;The solution is simple. I installed a ssh server on Windows XP. Installed Robin Debreuil's Flush. And here we go. I simply written a task which copies the actionscript files with scp to the virtual machine and than executes flush on the virtual machine. Flush tests the movie inside the Flash IDE. Great. The last thing to do was to configure the Editor to run this task if i hit the F5 key. So the workflow is really speeded up. No window switching any more, just edit the Actionscript and hit F5 to see movie and output in the virtual machine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Links&lt;br /&gt;&lt;/span&gt;Flush for Flash 8&lt;br /&gt;&lt;a href="http://www.flashfanatiker.de/blog/archives/000051.html"&gt;http://www.flashfanatiker.de/blog/archives/000051.html&lt;/a&gt;&lt;br /&gt;Original Flush Homepage&lt;br /&gt;&lt;a href="http://www.debreuil.com/flush/"&gt;http://www.debreuil.com/flush/&lt;/a&gt;&lt;br /&gt;The Company behind Flash&lt;br /&gt;&lt;a href="http://www.adobe.com/"&gt;http://www.adobe.com/&lt;/a&gt;&lt;br /&gt;Free ssh server for Window XP&lt;br /&gt;&lt;a href="http://www.freesshd.com/"&gt;http://www.freesshd.com/&lt;/a&gt;&lt;br /&gt;Tool for automating tasks like make or ant, but with an uncircumstantial syntax &lt;br /&gt;&lt;a href="http://rake.rubyforge.org/"&gt;http://rake.rubyforge.org/&lt;/a&gt; &lt;br /&gt;My favourite Editor&lt;br /&gt;&lt;a href="http://scintilla.org/SciTE.html"&gt;http://scintilla.org/SciTE.html&lt;/a&gt;&lt;br /&gt;My favourite Version of my favourite Editor&lt;br /&gt;&lt;a href="http://caladbolg.net/scite_st.php"&gt;http://caladbolg.net/scite_st.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tips&lt;/span&gt;&lt;br /&gt;Configuring freeSSHd has taken some time, this is what i have done:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Check the following settings in the FreeSSHDService.ini file, it contains all configuration you can also access through the ui&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SSHNewConsole=0 - i needed to deactivate because i had some problems executing commands via ssh, this was on freeSSHd-Version 1.2.0&lt;/li&gt;&lt;li&gt;SSHPasswordAuth=1 - disables password authentication&lt;/li&gt;&lt;li&gt;SSHPublickeyAuth=2 - set public key authentication to required&lt;/li&gt;&lt;li&gt;SSHPublickeyPath=C:\SOMEPATH\ssh_public_keys - set the directory in which freeSSHd searches for files with public keys. Each file has to be named after it's user.&lt;/li&gt;&lt;li&gt;You need to create an user within FreeSSHd, thats all&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-614143074333246182?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/614143074333246182/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=614143074333246182' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/614143074333246182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/614143074333246182'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/07/developing-adobe-flash-actionscript-on.html' title='Developing Adobe Flash Actionscript on Linux'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-8219353166237672479</id><published>2007-06-20T10:45:00.000+02:00</published><updated>2007-06-21T12:13:26.382+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Subversion Tips</title><content type='html'>&lt;a style="font-weight: bold;" href="http://subcommander.tigris.org/"&gt;Subcommander&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;  The goal of the Subcommander project is to build an easy to use, cross  platform (Win32, Unix, MacOSX) &lt;a href="http://subversion.tigris.org/"&gt;  subversion&lt;/a&gt; GUI client (&lt;a href="http://subcommander.tigris.org/#sc"&gt;subcommander&lt;/a&gt;) including a  visual diff and merge tool (&lt;a href="http://subcommander.tigris.org/#sm"&gt;submerge&lt;/a&gt;).&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Links&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.yolinux.com/TUTORIALS/Subversion.html"&gt;http://www.yolinux.com/TUTORIALS/Subversion.html&lt;/a&gt;&lt;br /&gt;Usefull tips and links, especiallly for linux. You will find also a list of graphical merge tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-8219353166237672479?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/8219353166237672479/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=8219353166237672479' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8219353166237672479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8219353166237672479'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/06/subversion-tips.html' title='Subversion Tips'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-6813425070676500060</id><published>2007-06-09T11:11:00.000+02:00</published><updated>2007-06-09T11:20:49.280+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skalierbarkeit'/><category scheme='http://www.blogger.com/atom/ns#' term='s3'/><category scheme='http://www.blogger.com/atom/ns#' term='ec2'/><title type='text'>Skalierbarkeit ganz einfach</title><content type='html'>Der Vortrag von &lt;a href="http://blog.innerewut.de/"&gt;Jonathan Weiss&lt;/a&gt; auf dem Linuxtag 2007 zum Thema Amazon-S3 und Amazon-EC2 kann auf seinem &lt;a href="http://blog.innerewut.de/"&gt;Blog&lt;/a&gt; als mp3 runtergeladen werden. Die Folien stehen dort ebenfalls zum download bereit. Super &lt;a href="http://blog.innerewut.de/articles/2007/06/08/linuxtag-2007-slides-on-amazon-s3-and-ec2"&gt;interessanter Vortrag&lt;/a&gt;.&lt;a href="http://blog.innerewut.de/articles/2007/06/08/linuxtag-2007-slides-on-amazon-s3-and-ec2"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-6813425070676500060?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/6813425070676500060/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=6813425070676500060' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/6813425070676500060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/6813425070676500060'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/06/skalierbarkeit-ganz-einfach.html' title='Skalierbarkeit ganz einfach'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-8346051840772635562</id><published>2007-06-07T11:45:00.000+02:00</published><updated>2007-06-20T10:51:13.189+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Wow, probably one of the nicest consumer interfaces i have seen</title><content type='html'>It's a two finger touchscreen interface:&lt;br /&gt;&lt;a href="http://www.microsoft.com/surface/"&gt;http://www.microsoft.com/surface/&lt;/a&gt;&lt;a href="http://www.ted.com/index.php/talks/view/id/129"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-8346051840772635562?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/8346051840772635562/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=8346051840772635562' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8346051840772635562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8346051840772635562'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/06/hot-hotter-probably-one-of-hottest.html' title='Wow, probably one of the nicest consumer interfaces i have seen'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-8326020933981582601</id><published>2007-06-01T15:36:00.000+02:00</published><updated>2007-06-01T15:59:28.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clipboard'/><category scheme='http://www.blogger.com/atom/ns#' term='dcop'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>kde hackers little friend - dcop</title><content type='html'>Do you want to script kde applications? &lt;a href="http://developer.kde.org/documentation/other/dcop.html"&gt;Dcop&lt;/a&gt; could be the answere. There is an command line interface which is surprisingly called dcop. So for a quick start: Open a shell type: "dcop" and hit enter. You will see applications that have a dcop interface. If you are using klipper, which is normally the case, you can &lt;span style="font-weight: bold;"&gt;control the clipboard through it's dcop interface&lt;/span&gt;. Let's see howto do this. Type: "dcop klipper" and hit enter. You will see the supported interfaces. Type: "dcop klipper klipper" to check out the klipper-Interface. You will see the following interface:&lt;pre&gt;QCStringList interfaces()&lt;br /&gt;QCStringList functions()&lt;br /&gt;QString getClipboardContents()&lt;br /&gt;void setClipboardContents(QString s)&lt;br /&gt;void clearClipboardContents()&lt;br /&gt;void clearClipboardHistory()&lt;br /&gt;QStringList getClipboardHistoryMenu()&lt;br /&gt;QString getClipboardHistoryItem(int i)&lt;br /&gt;int newInstance()&lt;br /&gt;void quitProcess()&lt;/pre&gt;Now you can simply call a method like this:&lt;pre&gt;dcop klipper klipper setClipboardContents "Hello from dcop"&lt;/pre&gt;This will put "Hello from dcop" to your clipboard.&lt;br /&gt;Note that you can use tab-completition, so if you type: "dcop klipper klipper setC" and hit TAB it will complete to: "dcop klipper klipper setClipboardContent".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-8326020933981582601?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/8326020933981582601/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=8326020933981582601' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8326020933981582601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8326020933981582601'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/06/kde-hackers-little-friend-dcop.html' title='kde hackers little friend - dcop'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-2896363000655499102</id><published>2007-05-31T07:38:00.000+02:00</published><updated>2007-06-07T11:45:09.933+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='xpjug'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='extreme_programming'/><category scheme='http://www.blogger.com/atom/ns#' term='song'/><title type='text'>Is extreme-programming extreme?</title><content type='html'>Here is a nice song from the &lt;span style="font-style: italic;"&gt;extreme programming japan user group(xpjug)&lt;/span&gt; which answeres the question:&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zpw8h4OGNxg"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/zpw8h4OGNxg" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-2896363000655499102?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/2896363000655499102/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=2896363000655499102' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/2896363000655499102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/2896363000655499102'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/what-ist-extreme-programming.html' title='Is extreme-programming extreme?'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-6502388372667722694</id><published>2007-05-26T17:20:00.000+02:00</published><updated>2007-05-27T02:21:58.093+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web_development'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Aha nice - Firebug Console API</title><content type='html'>The nice &lt;a href="http://www.getfirebug.com/console.html"&gt;Firebug-Console-API&lt;/a&gt; api allows us to control the firebug output console and more direct from scripts.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Read more:&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.encytemedia.com/blog/articles/2006/5/12/an-in-depth-look-at-the-future-of-javascript-debugging-with-firebug"&gt;Debugging with Firebug&lt;/a&gt; an &lt;a href="http://www.encytemedia.com/blog/articles/2006/5/12/an-in-depth-look-at-the-future-of-javascript-debugging-with-firebug"&gt;article&lt;/a&gt; by &lt;a href="http://www.andrewdupont.net/about"&gt;Andrew Dupont&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.getfirebug.com/?link=1" title="Firebug is a free web development tool for Firefox"&gt;&lt;img src="http://www.getfirebug.com/images/firebug-web-development.png" alt="Firebug - Web Development Evolved" border="0"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-6502388372667722694?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/6502388372667722694/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=6502388372667722694' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/6502388372667722694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/6502388372667722694'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/aha-nice-firebug-console-api.html' title='Aha nice - Firebug Console API'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-565164370840861947</id><published>2007-05-24T12:38:00.000+02:00</published><updated>2007-05-26T10:58:40.146+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='capistrano'/><title type='text'>Deploying with capistrano - The copy method</title><content type='html'>&lt;a href="http://capify.org/"&gt;Capistrano&lt;/a&gt; is a great tool for automating tasks on remote machines. In this article i will show you howto update a static webpage where the server has no svn installed. The only things you need are: a local &lt;span style="font-weight: bold;"&gt;ruby&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;rubygems&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;capistrano&lt;/span&gt; installation and ssh access to the remote webserver where the files should deployed to.&lt;br /&gt;You need capistrano 2.0 or 2.0 preview, install the preview with:&lt;pre&gt;gem install net-ssh&lt;br /&gt;gem install net-sftp&lt;br /&gt;gem install highline&lt;br /&gt;gem install -s http://gems.rubyonrails.com capistrano&lt;/pre&gt;Similar to make's Makefile's capistrano uses Capfile's. To create a Capfile in the current directory execute:&lt;pre&gt;capify .&lt;/pre&gt;Now you can edit the Capfile to fit your deployment needs:&lt;pre&gt;require 'capistrano/version'&lt;br /&gt;# Load the deployment recipe&lt;br /&gt;load 'deploy'&lt;br /&gt;# Give a name for your application&lt;br /&gt;set :application, :website&lt;br /&gt;# Define a server role&lt;br /&gt;role :server, 'yourhomepage.com'&lt;br /&gt;# Define where to store the deployed files&lt;br /&gt;set :deploy_to, '/hp/aa/ab/ne'&lt;br /&gt;# Define where to create the symlink to the current release, normally&lt;br /&gt;# this would be your htdocs or www directory&lt;br /&gt;set :current_path, '/hp/aa/ab/ne/www'&lt;br /&gt;# Define that we want to deploy via copy, this is usefull if your server&lt;br /&gt;# has no subversion client installed&lt;br /&gt;set :deploy_via, 'copy'&lt;br /&gt;# Set the deploy strategy to export, otherwise the files are checked out&lt;br /&gt;# from your repository&lt;br /&gt;set :copy_strategy, :export&lt;br /&gt;# Set your ssh user name and password&lt;br /&gt;# (If you omit the password and did not have setup public key authentication,&lt;br /&gt;# capistrano will prompt you for the password)&lt;br /&gt;set :user, 'your-ssh-username'&lt;br /&gt;set :password, your-ssh-password'&lt;br /&gt;# Set the project repository. All files inside the specified directory&lt;br /&gt;# will deployed.&lt;br /&gt;set :repository, 'file:///repositories/website/public'&lt;br /&gt;&lt;br /&gt;# Override tasks not needed for deployment of static files&lt;br /&gt;namespace :deploy do&lt;br /&gt;task :finalize_update do&lt;br /&gt;logger.info 'do nothing - overridden finalize_update'&lt;br /&gt;end&lt;br /&gt;task :restart do&lt;br /&gt;logger.info 'do nothing - overridden finalize_update'&lt;br /&gt;end&lt;br /&gt;end&lt;/pre&gt;Thats it, now you can setup your host for deployment with(First you need to go into the directory where your Capfile is stored):&lt;pre&gt;cap deploy:setup&lt;/pre&gt;And deploy with:&lt;pre&gt;cap deploy&lt;/pre&gt;You will find many default setting in: &lt;span style="font-weight: bold;"&gt;lib/capistrano/recipes/deploy.rb&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-565164370840861947?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/565164370840861947/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=565164370840861947' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/565164370840861947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/565164370840861947'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/deploying-with-capistrano-copy-method.html' title='Deploying with capistrano - The copy method'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-7395623334383367429</id><published>2007-05-21T12:18:00.000+02:00</published><updated>2007-05-21T12:31:05.338+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><title type='text'>Ressourcen schonende Backuplösung</title><content type='html'>Die "Heinlein - Professional Linux Support GmbH" stellt eine &lt;a href="http://www.heinlein-support.de/web/wissen/rsync-backup/"&gt;Backuplösung&lt;/a&gt; vor, welche die Möglichkeiten von rsync, hardlinks und ssh voll ausschöpft. Ich verwende diese Lösung nun seit einigen Wochen und bin sehr zufrieden damit. Die Backups laufen schnell und belasten nicht das Netzwerk.&lt;br /&gt;Hier ein Auszug aus dem &lt;a href="http://www.heinlein-support.de/web/wissen/rsync-backup/"&gt;Artikel&lt;/a&gt;:&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Stabiler täglicher Betrieb ohne Wartungsarbeiten&lt;/li&gt;&lt;li&gt;Komprimierter Transfer der Daten im Netzwerk&lt;/li&gt;&lt;li&gt;Bandbreitenlimitierung des Backup-Prozesses&lt;/li&gt;&lt;li&gt;Sicherer Transfer der Daten – ssh-verschlüsselt&lt;/li&gt;&lt;li&gt;Snapshot des gebackupten Systems, Rekonstruktion eines bestimmten Zustandes vor n-Tagen möglich&lt;/li&gt;&lt;li&gt;Bequemes Backup auf einfachen Festplatten, ohne teuren Tape-Roboter oder teure Bandlaufwerke. Große Datenmengen möglich.&lt;/li&gt;&lt;li&gt;Schnelles Zurückspielen der Daten in Festplattengeschwindigkeit möglich (schneller als Bandlaufwerke)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-7395623334383367429?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/7395623334383367429/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=7395623334383367429' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/7395623334383367429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/7395623334383367429'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/ressourcen-schonende-backuplsung.html' title='Ressourcen schonende Backuplösung'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-6605066649446914562</id><published>2007-05-19T11:09:00.000+02:00</published><updated>2007-05-19T11:17:42.564+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='bdd'/><title type='text'>Testing with Rails</title><content type='html'>Jay Fields has labeled all his great posts about rails testing with: "&lt;span style="font-style: italic;"&gt;RailsConf2007&lt;/span&gt;". Now we can &lt;a href="http://blog.jayfields.com/search/label/RailsConf2007"&gt;find all relevant posts&lt;/a&gt; more easily. Thanks.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Source:&lt;/span&gt; &lt;a href="http://blog.jayfields.com/2007/05/railsconf07-testing-presentation.html"&gt;http://blog.jayfields.com/2007/05/railsconf07-testing-presentation.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-6605066649446914562?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/6605066649446914562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/6605066649446914562'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/testing-with-rails.html' title='Testing with Rails'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-4365250428485790497</id><published>2007-05-16T11:23:00.000+02:00</published><updated>2007-05-24T13:27:00.888+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>The new Art of Flamewar</title><content type='html'>&lt;span&gt;Please take the following not to serious. Flamewar can pull your energy off. I think the best thing we can do is respect other people independent from the technologies they are using. Sometimes it is hard to talk to people when they want to argue you into something. Encounter them with acceptance for there opinion. Do not try argue them into something. Instead explain your opinion only if they really want to know your opinion. Just my two cent.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Rails vs. Java&lt;/span&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PQbuyKUaKFo"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/PQbuyKUaKFo" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Rails vs. PHP&lt;/span&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/n1NVfDlU6yQ"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/n1NVfDlU6yQ" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/p5EIrSM8dCA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/p5EIrSM8dCA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ld919lziKgE"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/Ld919lziKgE" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Source:&lt;/span&gt; &lt;a href="http://www.railsenvy.com/"&gt;http://www.railsenvy.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-4365250428485790497?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/4365250428485790497/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=4365250428485790497' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4365250428485790497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4365250428485790497'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/ruby-on-rails-vs-java-railsenvycom.html' title='The new Art of Flamewar'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-4857958358856029718</id><published>2007-05-12T13:15:00.000+02:00</published><updated>2007-05-12T13:28:46.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Backup one file</title><content type='html'>I found my self often doing something like that:&lt;pre&gt;sudo cp /boot/grub/menu.lst /boot/grub/menu.lst_bu_2007-05-12_13-20&lt;/pre&gt;With the following script all we need to do is:&lt;br /&gt;&lt;pre&gt;sudo backup-one-file /boot/grub/menu.lst&lt;/pre&gt;And the result is a backup created in /boot/grub/menu.lst_bu_2007-05-12_13-21-30&lt;pre&gt;#!/usr/bin/env ruby&lt;br /&gt;&lt;br /&gt;require 'fileutils'&lt;br /&gt;&lt;br /&gt;if ARGV.empty?&lt;br /&gt;        puts "Usage: backup-one-file &amp;lt;file-name&amp;gt;"&lt;br /&gt;        exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;source = ARGV[0]&lt;br /&gt;&lt;br /&gt;unless File.exist?(source)&lt;br /&gt;        puts "Error: File #{source} does not exist!"&lt;br /&gt;        exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;target = source + "_bu_" + Time.now.strftime("%Y-%m-%d_%H-%M-%S")&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;        FileUtils.cp(source, target)&lt;br /&gt;rescue Exception =&gt; e&lt;br /&gt;        puts "Could not copy to #{target}"&lt;br /&gt;        puts e.message&lt;br /&gt;        puts "Maybe you need to run as root!"&lt;br /&gt;else&lt;br /&gt;        puts "Backup created in: #{target}"&lt;br /&gt;end&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-4857958358856029718?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/4857958358856029718/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=4857958358856029718' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4857958358856029718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4857958358856029718'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/backup-one-file.html' title='Backup one file'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-739737260421055594</id><published>2007-05-09T11:45:00.000+02:00</published><updated>2007-05-11T11:38:27.098+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='active_record'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlite3'/><category scheme='http://www.blogger.com/atom/ns#' term='ri'/><title type='text'>ri and ri_proxy</title><content type='html'>Yesterday i have written a little caching proxy script for ri. The script forwards any invocation to ri. The results are cached in a sqlite3 database. So that any subsequent calls are much faster, not fast as i wished but definitely faster.&lt;pre&gt;#!/usr/bin/env ruby&lt;br /&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;&lt;br /&gt;ROOT = File.dirname(__FILE__)&lt;br /&gt;BASE_NAME = File.basename(__FILE__)&lt;br /&gt;&lt;br /&gt;DB_FILE = File.join(ROOT, BASE_NAME + '.sqlite3')&lt;br /&gt;DB_CONFIG = {:adapter =&gt; 'sqlite3', :timeout =&gt; 5000, :database =&gt; DB_FILE}&lt;br /&gt;&lt;br /&gt;LOG_FILE = File.join(ROOT, BASE_NAME + '.log')&lt;br /&gt;&lt;br /&gt;# speed up active record loading a bit&lt;br /&gt;require 'active_support'&lt;br /&gt;RAILS_CONNECTION_ADAPTERS = ['sqlite']&lt;br /&gt;&lt;br /&gt;require 'active_record'&lt;br /&gt;ActiveRecord::Base.logger = nil # Logger.new(LOG_FILE)&lt;br /&gt;ActiveRecord::Base.establish_connection(DB_CONFIG)&lt;br /&gt;&lt;br /&gt;class RiMethodEntry &lt; ActiveRecord::Base&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;force = false&lt;br /&gt;if !RiMethodEntry.table_exists? or force&lt;br /&gt;  ActiveRecord::Schema.define(:version =&gt; 1) do&lt;br /&gt;    create_table :ri_method_entries, :force =&gt; true do |t|&lt;br /&gt;      t.column :name, :string, :null =&gt; false&lt;br /&gt;      t.column :text, :text, :null =&gt; false&lt;br /&gt;    end&lt;br /&gt;    add_index :ri_method_entries, :name&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;ARGV.length &gt; 0 or raise Exception.new("No arguments found!")&lt;br /&gt;name = ARGV[0]&lt;br /&gt;entry = RiMethodEntry.find_by_name(name)&lt;br /&gt;if entry&lt;br /&gt;  puts entry.text&lt;br /&gt;  exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;args = ARGV.collect { |a| %{"#{a}"} }&lt;br /&gt;text = `ri #{args.join(" ")}`&lt;br /&gt;found = text.starts_with?('-')&lt;br /&gt;&lt;br /&gt;puts text&lt;br /&gt;exit unless found&lt;br /&gt;&lt;br /&gt;RiMethodEntry.create(:name =&gt; name, :text =&gt; text)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-739737260421055594?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/739737260421055594/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=739737260421055594' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/739737260421055594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/739737260421055594'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/ri-and-riproxy.html' title='ri and ri_proxy'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-4515848050281956817</id><published>2007-05-03T13:00:00.000+02:00</published><updated>2007-05-21T12:45:24.844+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><title type='text'>Install ruby on debian sytems the apt way</title><content type='html'>If you want to install ruby through apt you normally get only the interpreter. If you want to install ruby with all it's tools, you need to take a look into the package description to find out what is missing.&lt;pre&gt;apt-cache show ruby1.8&lt;/pre&gt;The output should be similar to the following:&lt;br /&gt;&lt;pre&gt;Package: ruby1.8&lt;br /&gt;Priority: optional&lt;br /&gt;Section: interpreters&lt;br /&gt;Installed-Size: 296&lt;br /&gt;Maintainer: Ubuntu Core Developers &amp;lt;ubuntu-devel-discuss@lists.ubuntu.com&amp;gt;&lt;br /&gt;Original-Maintainer: akira yamada &amp;lt;akira@debian.org&amp;gt;&lt;br /&gt;Architecture: i386&lt;br /&gt;Version: 1.8.5-4ubuntu2&lt;br /&gt;Depends: libc6 (&gt;= 2.5-0ubuntu1), libruby1.8 (&gt;= 1.8.5)&lt;br /&gt;Suggests: ruby1.8-examples, rdoc1.8, ri1.8&lt;br /&gt;Filename: pool/main/r/ruby1.8/ruby1.8_1.8.5-4ubuntu2_i386.deb&lt;br /&gt;Size: 217212&lt;br /&gt;MD5sum: d2cedcce835b84af193332a413344b89&lt;br /&gt;SHA1: 40c93e9a5df7ea9ed2567f6c8d843282c69a800a&lt;br /&gt;SHA256: 7e756450dbdc504f94f67d936594c28d48923557fb7d4c32d6e9bfe147123729&lt;br /&gt;Description: Interpreter of object-oriented scripting language Ruby 1.8&lt;br /&gt;Ruby is the interpreted scripting language for quick and easy&lt;br /&gt;object-oriented programming.  It has many features to process text&lt;br /&gt;files and to do system management tasks (as in perl).  It is simple,&lt;br /&gt;straight-forward, and extensible.&lt;br /&gt;.&lt;br /&gt;This package provides version 1.8 series of Ruby.&lt;br /&gt;.&lt;br /&gt;On Debian, Ruby 1.8 is provided as separate packages.  You can get&lt;br /&gt;full Ruby 1.8 distribution by installing following packages.&lt;br /&gt;.&lt;br /&gt; ruby1.8 ruby1.8-dev ri1.8 rdoc1.8 irb1.8 ruby1.8-elisp&lt;br /&gt; ruby1.8-examples libdbm-ruby1.8 libgdbm-ruby1.8 libtcltk-ruby1.8&lt;br /&gt; libopenssl-ruby1.8 libreadline-ruby1.8&lt;br /&gt;Bugs: mailto:ubuntu-users@lists.ubuntu.com&lt;br /&gt;Origin: Ubuntu&lt;br /&gt;Task: kubuntu-desktop&lt;/pre&gt;As you can see the full install of ruby and it's tools would be:&lt;br /&gt;&lt;pre&gt;sudo apt-get install ruby1.8 ruby1.8-dev ri1.8 rdoc1.8 irb1.8 \&lt;br /&gt;ruby1.8-elisp ruby1.8-examples libdbm-ruby1.8 libgdbm-ruby1.8 \&lt;br /&gt;libtcltk-ruby1.8 libopenssl-ruby1.8 libreadline-ruby1.8&lt;/pre&gt;So far so good. Maybe you need to add the the universe repositories to your &lt;span style="font-style: italic;"&gt;/etc/apt/sources.list&lt;/span&gt; to install all the packages.&lt;br /&gt;It would be nice if debian could provide a meta-package for those people who want all the ruby tools anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-4515848050281956817?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/4515848050281956817/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=4515848050281956817' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4515848050281956817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4515848050281956817'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/install-ruby-on-debian-sytems.html' title='Install ruby on debian sytems the apt way'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-3779615743176298143</id><published>2007-05-02T15:11:00.000+02:00</published><updated>2007-05-18T22:58:05.334+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Installing ruby on rails on ubuntu 6.06 LTS by compiling nearly anything</title><content type='html'>&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;sudo apt-get install build-essential&lt;br /&gt;&lt;br /&gt;cd /tmp&lt;br /&gt;&lt;br /&gt;# download&lt;br /&gt;wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.bz2&lt;br /&gt;wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz&lt;br /&gt;wget http://www.zlib.net/zlib-1.2.3.tar.gz&lt;br /&gt;wget http://www.sqlite.org/sqlite-3.3.17.tar.gz&lt;br /&gt;&lt;br /&gt;# unpack&lt;br /&gt;tar xf ruby-1.8.6.tar.bz2&lt;br /&gt;tar xf rubygems-0.9.2.tgz&lt;br /&gt;tar xf zlib-1.2.3.tar.gz&lt;br /&gt;tar xf sqlite-3.3.17.tar.gz&lt;br /&gt;&lt;br /&gt;# install&lt;br /&gt;sudo apt-get install libreadline5 libreadline5-dev&lt;br /&gt;&lt;br /&gt;cd /tmp/sqlite-3.3.17 &amp;&amp;amp;amp; ./configure &amp;&amp;amp; make &amp;&amp;amp; sudo make install&lt;br /&gt;cd /tmp/zlib-1.2.3    &amp;&amp;amp;amp; ./configure &amp;&amp;amp; make &amp;&amp;amp; sudo make install&lt;br /&gt;cd /tmp/ruby-1.8.6    &amp;&amp;amp;amp; ./configure &amp;&amp;amp; make &amp;&amp;amp; sudo make install&lt;br /&gt;&lt;br /&gt;cd /tmp/rubygems-0.9.2 &amp;&amp;amp; sudo ruby setup.rb&lt;br /&gt;sudo gem install sqlite3-ruby -y&lt;br /&gt;sudo gem install rails -y&lt;br /&gt;sudo gem install mongrel -y&lt;br /&gt;&lt;br /&gt;# create a rails test application&lt;br /&gt;cd /tmp&lt;br /&gt;rails rails_test --database=sqlite3&lt;br /&gt;cd rails_test/&lt;br /&gt;./script/generate model user name:string&lt;br /&gt;rake db:migrate&lt;br /&gt;./script/generate scaffold user&lt;br /&gt;./script/server&lt;br /&gt;&lt;/pre&gt;If you need more you can look at the great &lt;a href="http://deprec.rubyforge.org/"&gt;deprec tools&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; A colleague told me to use "&lt;span style="font-style: italic;"&gt;checkinstall&lt;/span&gt;". So we will not bypass the package management. Good point.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-3779615743176298143?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/3779615743176298143/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=3779615743176298143' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/3779615743176298143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/3779615743176298143'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/05/installing-ruby-on-rails-on-ubuntu-606.html' title='Installing ruby on rails on ubuntu 6.06 LTS by compiling nearly anything'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-8621718660273282947</id><published>2007-04-30T10:38:00.000+02:00</published><updated>2007-04-30T11:02:00.581+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><title type='text'>locate a line of code</title><content type='html'>Sometimes you want to know in which file and line a method is defined.&lt;br /&gt;&lt;a href="http://snippets.dzone.com/posts/show/3933"&gt;This snippet&lt;/a&gt; should do that job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-8621718660273282947?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/8621718660273282947/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=8621718660273282947' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8621718660273282947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/8621718660273282947'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/04/locate-line-of-code.html' title='locate a line of code'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-5402286799808483815</id><published>2007-04-29T10:37:00.000+02:00</published><updated>2007-08-09T17:03:48.368+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web_development'/><title type='text'>Favourite Firefox Plugins</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/de/firefox/addon/1843"&gt;firebug&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/de/firefox/addon/60"&gt;web developer toolbar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/de/firefox/addon/249"&gt;html validator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/de/firefox/addon/216"&gt;venkman&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.martincohen.info/products/devboi/"&gt;devboi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/de/firefox/addon/1122"&gt;Tab Mix Plus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/de/firefox/addon/4199"&gt;Save Session&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://kb.mozillazine.org/Command_line_arguments"&gt;http://kb.mozillazine.org/Command_line_arguments&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-5402286799808483815?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/5402286799808483815/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=5402286799808483815' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/5402286799808483815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/5402286799808483815'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/04/favourite-firefox-plugins.html' title='Favourite Firefox Plugins'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-792438026181070358</id><published>2007-04-26T12:00:00.000+02:00</published><updated>2007-04-26T12:25:49.286+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='en'/><title type='text'>Really simple templates with ruby</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Example:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;template = 'Hello #{name}!'&lt;br /&gt;name = 'Paul'&lt;br /&gt;puts eval(%{"#{template}"}) # =&gt; Hello Paul!&lt;br /&gt;name = 'Holger'&lt;br /&gt;puts eval(%{"#{template}"}) # =&gt; Hello Holger!&lt;/pre&gt;Note that the template definition use a &lt;span style="font-style: italic;"&gt;single qutoed string&lt;/span&gt;, so no variables are evaluated within the template string.&lt;br /&gt;Also note that the template can't use unescaped &lt;span style="font-style: italic;"&gt;double quotes&lt;/span&gt;, because the template evaluation uses them to delimit the template string.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-792438026181070358?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/792438026181070358/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8365778674126402289&amp;postID=792438026181070358' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/792438026181070358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/792438026181070358'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/04/really-simple-templates-with-ruby.html' title='Really simple templates with ruby'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8365778674126402289.post-4425608050330773931</id><published>2007-04-26T11:12:00.000+02:00</published><updated>2007-05-03T13:25:49.653+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spass'/><title type='text'>Positives Denken</title><content type='html'>&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QBix_yaVoFE"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/QBix_yaVoFE" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;...korrekt, korrekt, jefällt ma, jeht ab!&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4Df4FFXebaE"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/4Df4FFXebaE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8365778674126402289-4425608050330773931?l=blog.holgerkohnen.de%2Findex.htm' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4425608050330773931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8365778674126402289/posts/default/4425608050330773931'/><link rel='alternate' type='text/html' href='http://blog.holgerkohnen.de/2007/04/positives-denken.html' title='Positives Denken'/><author><name>Holger Kohnen</name><uri>http://www.blogger.com/profile/15793102427606337433</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09201935808262543403'/></author></entry></feed>