<?xml version="1.0" encoding="utf-8" ?>

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>PHP is not Java!</title>
    <link>http://100days.de/serendipity/</link>
    <description>PHP, Project Management and the Real World</description>
    <dc:language>en</dc:language>

    <image rdf:resource="http://100days.de/serendipity/templates/default/img/s9y_banner_small.png" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://100days.de/serendipity/archives/123-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/122-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/121-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/120-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/118-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/117-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/116-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/115-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/114-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/113-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/112-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/111-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/110-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/109-guid.html" />
        <rdf:li resource="http://100days.de/serendipity/archives/108-guid.html" />
      </rdf:Seq>
    </items>
</channel>

<image rdf:about="http://100days.de/serendipity/templates/default/img/s9y_banner_small.png">
        <url>http://100days.de/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: PHP is not Java! - PHP, Project Management and the Real World</title>
        <link>http://100days.de/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>


<item rdf:about="http://100days.de/serendipity/archives/123-guid.html">
    <title>Windows 7 change System Drive</title>
    <link>http://100days.de/serendipity/archives/123-Windows-7-change-System-Drive.html</link>
    <description>
    &lt;p&gt;I had Vista on my Portege R500 and wanted Windows 7, so i cleared the 2nd partition on my hdd and installed 7 there. After solving a couple of minor problems, everything worked fine. Next thing would be: Get rid of the Vista partition and make it free for all my data, that had to move out on a USB drive to free space for Win7. Unfortunately, the Vista partition was still listed as the &amp;quot;system partition&amp;quot; and thus could not be deleted. So i googled a little and finally moved the /boot directory from the old Vista partition to the Win7 partition and used bcdedit.exe to modify the drive letter of the bootmgr (see &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/neosmart.net/forums/showthread.php?t=2568&#039;);&quot;  href=&quot;http://neosmart.net/forums/showthread.php?t=2568&quot; target=&quot;_blank&quot;&gt;howto&lt;/a&gt;). &lt;/p&gt;
&lt;p&gt;When the system stopped with a &amp;quot;bootmgr not found. Press CTRL-ALT-DEL to restart&amp;quot;, i also used bootrec from the windows CD to make sure my MBR and boot sectors were in shape. Didnt help. I tried the automatic repair options on the Boot DVD, also without success.&amp;#160;&lt;/p&gt;
&lt;p&gt;Finally, i found the problem: i did not copy the bootmgr file over from the vista partition to the win7 partition because i thought win7 would have installed it anyway and because i thought the repair routine would have repaired that. After making it visible (attrib -s -h O:\bootmgr), i could copy it over to my Win7 partition. Reboot- works! &lt;br /&gt;&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2010-03-01T06:16:01Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=123</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/122-guid.html">
    <title>mogileFS vs. me</title>
    <link>http://100days.de/serendipity/archives/122-mogileFS-vs.-me.html</link>
    <description>
    &lt;p&gt;Today i experimented a bit with &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/danga.com/mogilefs/&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://danga.com/mogilefs/&quot;&gt;MogileFS&lt;/a&gt;. The concept is simple and good: Upload and Download files via HTTP PUT/GET. No posix file system, no kernel manipulation, no raid needed.&lt;/p&gt; 
&lt;p&gt;So i thought i play with it a little. It is all Perl, so i treid to install it with CPAN. You need &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/search.cpan.org/dist/mogilefs-server/&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://search.cpan.org/dist/mogilefs-server/&quot;&gt;MogileFS::server&lt;/a&gt;, &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/search.cpan.org/dist/MogileFS-Client/&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://search.cpan.org/dist/MogileFS-Client/&quot;&gt;MogileFS::Client&lt;/a&gt; and &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/search.cpan.org/dist/MogileFS-Utils/&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://search.cpan.org/dist/MogileFS-Utils/&quot;&gt;MogileFS::Utils&lt;/a&gt; for a start.Unfortunately, the server was not built automatically with CPAN, so i needed to find CPAN&#039;s temp build dir and build it manually by typing &amp;quot;make&amp;quot; and &amp;quot;make install&amp;quot;.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;I followed a nice &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/code.google.com/p/mogilefs/wiki/InstallHowTo&#039;);&quot;  title=&quot;Quickstart wiki&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/mogilefs/wiki/InstallHowTo&quot;&gt;quickstart&lt;/a&gt; to initialize a database as needed. (i needed to provide additional --dbrootuser and --dbrootpass also to initialize the DB with ./mogdbsetup but the rest went as described there).&lt;/p&gt; 
&lt;p&gt;It showed my which config files were needed and how to set them up. I could start the tracker deamon as described.&lt;/p&gt; 
&lt;p&gt;I also could start the mogilestorageD as described and it accepted connections, but i could not make it answer requests properly. Therefoe i replaced it by &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.lighttpd.net/&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://www.lighttpd.net/&quot;&gt;lighty&lt;/a&gt;+mod_webdav and it worked (MogileFS can work with normal WebDAV servers on the Storage nodes).&lt;/p&gt; 
&lt;p&gt;Now i was in search for a good PHP client. Since i did not expect too much overhead in the client, i did not go for the &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.pecl.php.net/package/mogilefs&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://www.pecl.php.net/package/mogilefs&quot;&gt;PECL version&lt;/a&gt;, but checked out some PHP classes. i first tested &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/lists.danga.com/pipermail/mogilefs/2007-July/001085.html&#039;);&quot;  target=&quot;_blank&quot; href=&quot;http://lists.danga.com/pipermail/mogilefs/2007-July/001085.html&quot;&gt;one client&lt;/a&gt; but it appeared somewhat over-engineered. So i went back to an older version (with half the lines of code) i found on the danga site and patched it a bit to throw exceptions instead of returning false.&lt;/p&gt; 
&lt;p&gt;Over all, the system seems simple, stable and scalable. In one of my next projects, i will try to use it.&lt;/p&gt;
&lt;p&gt;UPDATE: Ubuntu Version available &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/code.google.com/p/mogilefs/wiki/InstallOnUbuntu&#039;);&quot;  href=&quot;http://code.google.com/p/mogilefs/wiki/InstallOnUbuntu&quot; target=&quot;_blank&quot;&gt;[here]&lt;/a&gt; for installation via apt-get including perl 5.8.8 (5.10 does not work). mogstored also works there.&lt;/p&gt;
&lt;p&gt;UPDATE: If you upload files with empty key, you will not see an error anywhere. It just deletes the files after upload...&lt;br /&gt;&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2010-02-23T00:43:39Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=122</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=122</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/121-guid.html">
    <title>Book: Scrum and XP from the Trenches</title>
    <link>http://100days.de/serendipity/archives/121-Book-Scrum-and-XP-from-the-Trenches.html</link>
    <description>
    &lt;p&gt;Just finished reading this &amp;quot;agile war story&amp;quot; by Henrik Kniberg. A very pragmatic description about how agile methods are deployed in real projects. A lot of the learnings i went through in during the last years are summarized very well in the book. Plus a lot of extra ideas and experience. If i had read this book 2 years ago, it would have saved me a lot of time and pain. Now i can say: My learnings are the same as Henriks so it seems that we are not so far away from &amp;quot;good&amp;quot; practices (who knows &amp;quot;best practices&amp;quot; in this area?). &lt;/p&gt; 
&lt;p&gt;Some of the statements that i found most interesing in the book were:&lt;/p&gt; 
&lt;p&gt;- TDD was the real game changer. Scrum and XP are great tools for making a project more efficient and&amp;#160; transparent. But what really made a difference to their whole approach of coding and quality was TDD. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;- Even if you invest huge amounts of time in automated testing, you still need manual acceptance tests before shipping a release.&lt;/p&gt; 
&lt;p&gt;- There is no real best practice on how to deal with bug fixing for previous sprint results during following sprints. There are a couple of options, but none of them work perfect.&lt;/p&gt; 
&lt;p&gt;Also in other areas he writes that there is no recipe how it has to be done. Scrum gives a good direction, but it is not a 100% solution for all problems that may occur. The gaps need to be filled with experience and creativity...&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;I like this book a lot. It gives me the &amp;quot;you are not alone&amp;quot;-Feeling regarding the situation in real-life project work. There is so much talking about the theory and rules behind Scrum and XP in conferences and other books. But here you see how relevant all your small daily issues are that come up in your project. And that they dont mean &amp;quot;you are doing Scrum wrong&amp;quot;, but &amp;quot;you need to figure this one out for yourself&amp;quot;.&lt;br /&gt;&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2010-02-19T11:37:33Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=121</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=121</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/120-guid.html">
    <title>Fun with Plesk 9.3</title>
    <link>http://100days.de/serendipity/archives/120-Fun-with-Plesk-9.3.html</link>
    <description>
    &lt;p&gt;I recently set up an eMail-server on a system managed with Plesk 9.3 (i know, real men use the command line and text editors to configure their servers, but i am old and lazy).&lt;/p&gt; 
&lt;p&gt;Now i added DNS blacklisting to fight spam more effectively. And suddenly i could not send emails anymore. I must explain, it was a couple of years ago that i set up mail servers. After a little research i found out that DNS blacklisting comes in effect before the authentication of the SMTP connection can be tested. And i understand why this is. The workaround is easy: Don&#039;t use port 25 for email submission, but use the submission port 587 instead. And configure this port to not do DNS blacklisting. Cool. Plesk supports that but it appeared that nothing was listening on that port on my machine. After some hacking i found the reason: in /etc/xinetd.d there is a config file called submission.psa but this file should have the name submission_psa.&lt;/p&gt; 
&lt;p&gt;After renaming it, and restarting xinetd i can now email again! Why do i post it? Maybe this is a general problem in Plesk 9.3 manages servers, and if so, here is my workaround...&lt;br /&gt;&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2010-02-17T22:03:05Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=120</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=120</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/118-guid.html">
    <title>New 100 DAYS</title>
    <link>http://100days.de/serendipity/archives/118-New-100-DAYS.html</link>
    <description>
    This page will soon become the home of 100 DAYS software projects GmbH again.
After three inspiring years inside Zend Technologies, i have decided to re-start this business with new focus.
Please stand by... 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2010-01-26T07:55:27Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=118</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=118</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/117-guid.html">
    <title>Toshiba Portege R500 and Win7</title>
    <link>http://100days.de/serendipity/archives/117-Toshiba-Portege-R500-and-Win7.html</link>
    <description>
    &lt;p&gt;Yesterday i spent some time installing Windows 7 on my Portege R500 Laptop. Most of it went smooth:&lt;/p&gt;&lt;p&gt;Putty, OpenVPN, Truecrypt, most Hardware: No problem.&lt;/p&gt;&lt;p&gt;However, two problems persisted:&lt;/p&gt;&lt;p&gt;Novatel Wireless broadband device (UMTS modem) and Fingerprint Software.&lt;/p&gt;&lt;p&gt;Forums say, the Vista Version of the Novatel Drivers supplied by Toshiba would work. So i downloaded them but unfortunately, they refused to install. Now Windows Troubleshooting told me to check &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/cdgenp01.csd.toshiba.com/content/support/downloads/driver_wireless_broadband_25494A.exe&#039;);&quot;  href=&quot;http://cdgenp01.csd.toshiba.com/content/support/downloads/driver_wireless_broadband_25494A.exe&quot;&gt;this URL.&lt;/a&gt;And at least this one installed. I do not see anything in my system yet. Will reboot and then report more...&lt;/p&gt;&lt;p&gt;UPDATE: Driver now works. But now i keep getting the Message &amp;quot;Radio Off&amp;quot; (&quot;Funk aus&quot;) when starting the Mobilink application after the prompt for a PIN. Some research brought up this &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/social.technet.microsoft.com/Forums/en/w7itprohardware/thread/c32c5743-680d-4c25-8974-f3f2900d9db6&#039;);&quot;  href=&quot;http://social.technet.microsoft.com/Forums/en/w7itprohardware/thread/c32c5743-680d-4c25-8974-f3f2900d9db6&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;. I have the suspicion, that my Vodafone SIM card is not supported with my current configuration and i need some firmware patch. Update of the firmware however also did not help. Next step i will search for the files named a the bottom of the post linked above.&lt;/p&gt;&lt;p /&gt;
&lt;p&gt;UPDATE: After browsing through a thousand forums and installing/deinstalling different driver versions over and over again, i finally found the solution: UMTS modem is switched off after Boot. Need to activate first with FN-F8. Now it works!&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-12-31T11:02:26Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=117</wfw:comment>
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=117</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/116-guid.html">
    <title>P1i gewaschen</title>
    <link>http://100days.de/serendipity/archives/116-P1i-gewaschen.html</link>
    <description>
    &lt;div style=&quot;width: 110px;&quot; class=&quot;serendipity_imageComment_left&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a href=&quot;http://100days.de/serendipity/uploads/handy_gewaschen.JPG&quot; class=&quot;serendipity_image_link&quot;&gt;&lt;!-- s9ymdb:35 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; src=&quot;http://100days.de/serendipity/uploads/handy_gewaschen.serendipityThumb.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Handy gewaschen&lt;/div&gt;&lt;/div&gt;Jedes Jahr zu Weihnachten ist es soweit: Bei Aulkes ist Großreinemachen. Unter anderem werden alle Mobiltelefone gewaschen. Anliegend Beweisfoto: Sony-Ericsson P1i, 40° gewaschen, geschleudert mit 1400 Umdrehungen und danach 1 Stunde im Trockner. Akku aufgeladen, geht. Puh... 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-12-26T10:34:00Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=116</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=116</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/115-guid.html">
    <title>Dependency Injection with PHP</title>
    <link>http://100days.de/serendipity/archives/115-Dependency-Injection-with-PHP.html</link>
    <description>
    &lt;p&gt;Since Java is a little more static than PHP from a language construct standpoint, the Java Community have adopted the concept of &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/Dependency_Injection&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/Dependency_Injection&quot; target=&quot;_blank&quot;&gt;Dependency Injection (DI)&lt;/a&gt; a couple of years ago (for example in the Spring framework). Now PHP is getting more mature and people are wondering how to best decouple components in big projects in order to prevent interdependencies. Originally coming from the Java world, i found DI very interesting from the beginning on.&lt;/p&gt;&lt;p&gt;When i contributed my first (and only) code to Zend Framework, i tried to use dependency injection there. This is why you can still &amp;quot;inject&amp;quot; a Zend_Mail_Transport object to Zend_Mail when you want to send the email out:&lt;/p&gt;&lt;pre&gt;$mail = new Zend_Mail(...);&lt;/pre&gt;&lt;pre&gt;...&lt;/pre&gt;&lt;pre&gt;$trans = new MyTransport(&amp;lt;arbitrary config options for my transport&amp;gt;);&lt;/pre&gt;&lt;pre&gt;$mail-&amp;gt;send($trans);&lt;/pre&gt;&lt;p&gt;But it seemed like this concept was not very popular in the PHP community. Obviously the more common approach to define which driver to use for a given Functionality is to make factory methods that take associative arrays as parameters:&lt;/p&gt;&lt;pre class=&quot;programlisting&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;$db = Zend_Db::factory(&#039;Pdo_Mysql&#039;, array(&lt;br /&gt;    &#039;host&#039;     =&amp;gt; &#039;127.0.0.1&#039;,&lt;br /&gt;    &#039;username&#039; =&amp;gt; &#039;webuser&#039;,&lt;br /&gt;    &#039;password&#039; =&amp;gt; &#039;xxxxxxxx&#039;,&lt;br /&gt;    &#039;dbname&#039;   =&amp;gt; &#039;test&#039;&lt;br /&gt;));&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p class=&quot;programlisting&quot;&gt;These days, there seems to be a new movement in the PHP community to evaluate DI. On the international PHP conference in Karlsruhe, Fabien Potencier has made an excellent &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.slideshare.net/fabpot/dependency-injection-with-php-and-php-53&#039;);&quot;  href=&quot;http://www.slideshare.net/fabpot/dependency-injection-with-php-and-php-53&quot; target=&quot;_blank&quot;&gt;presentation about how DI &lt;/a&gt;can help you in PHP and how to implement a container that helps to get most benefit out of it. Since i still like the concept of DI, i am very curious on how this develops further. DI: I love it!&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-12-01T09:18:48Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=115</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=115</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/114-guid.html">
    <title>Upgrading to VMWare Player 3.0 on Ubuntu 9.10</title>
    <link>http://100days.de/serendipity/archives/114-Upgrading-to-VMWare-Player-3.0-on-Ubuntu-9.10.html</link>
    <description>
    &lt;p&gt;After all my struggle with VMWare Infrastructure 2.0 on Ubuntu (see below), i now upgraded the ubuntu version on my machine and also replaced the VMWare infrastructure with VMWare Player 3.0.&lt;/p&gt;&lt;p&gt;And: Yes! Finally everything works as expected! No more Tomcat Java Server infrastructure, No more Java Applet to control the VMs. And most interesting: Now the shared folders do work. I can access certain folders in the host&#039;s system from within the VM. Security problem? Well, the VM guest is a development machine, so i don&#039;t care.&lt;/p&gt;&lt;p&gt;But there were some problems also. &lt;/p&gt;&lt;p&gt;#1: The machines would not start. They tried but then they were suspended right away. I found that it was because of access rights: The VMWare player is started by my user account, so requires the VM Files to be read/writeable by this user. The VMWare infrastructrue seems to have run under user &amp;quot;root&amp;quot; and thus, a lot of files were owned by this user. chown -R helped.&lt;/p&gt;&lt;p&gt;#2: After initial success, the eth0 network device in my guest systems disappeared. After a little research i found that this was due to changing MAC addresses in the VMWare player. This can be solved by setting the addresses to a fix value in the .vmx file but if you want to be able to copy your image to other locations also, this might be too restrictive, especially if you use NAT and run the image more than once. A small change to the network config in the guest did the job finally. This way i also learned about /etc/udev/rules.d... Linux is so cool! I got my solution &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/ubuntuforums.org/showthread.php?p=3196271&#039;);&quot;  href=&quot;http://ubuntuforums.org/showthread.php?p=3196271&quot; target=&quot;_blank&quot; title=&quot;Ubuntu Forums&quot;&gt;here&lt;/a&gt;, inspired by &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/vmware-forum.de/viewtopic.php?t=9108&#039;);&quot;  href=&quot;http://vmware-forum.de/viewtopic.php?t=9108&quot; target=&quot;_blank&quot;&gt;the german vmware forums&lt;/a&gt;&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-11-26T08:06:55Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=114</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=114</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/113-guid.html">
    <title>Firefox rules!</title>
    <link>http://100days.de/serendipity/archives/113-Firefox-rules!.html</link>
    <description>
    &lt;p&gt;From the google analytics report of my blog:&lt;/p&gt;&lt;p&gt;&lt;!-- s9ymdb:34 --&gt;&lt;img height=&quot;214&quot; width=&quot;463&quot; src=&quot;http://100days.de/serendipity/uploads/browser.png&quot; style=&quot;border: 0px none ; padding-left: 5px; padding-right: 5px;&quot; /&gt;&lt;/p&gt;
 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-11-20T21:22:15Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=113</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=113</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/112-guid.html">
    <title>Web 2.0 changing the process in WebApp-Development</title>
    <link>http://100days.de/serendipity/archives/112-Web-2.0-changing-the-process-in-WebApp-Development.html</link>
    <description>
    
&lt;p&gt;The cool thing in web application has always been (and will always be) that IT meets communications. Every Web-App is considered a communication platform, not a technical artifact that just needs to work. Nobody accepts the need for trainings or manuals for web apps. They need to be &amp;quot;intuitive&amp;quot;. This is where the designers come in. And concept people. And the word &amp;quot;emotional&amp;quot;. &lt;/p&gt;&lt;p&gt;During the past 15 years of web history, certain processes of development have been defined that tried to align both, communication and technical aspects of the game. I have worked through at least 10 different approaches to this and they all failed. But eventually, tech-guys and creative guys have arranged and found a way to co-exist in a project without too many battles. Fortunately, the interaction patterns in the web used to be very limited: Click, load page, click again, load another page, fill in form data (wow, very complicated alreday), submit, see response (only positive response, error response was never considered by the graphics people &lt;img src=&quot;http://100days.de/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ).&lt;/p&gt;&lt;p&gt;Why was that? Most of the designers think in pictures. Static pages. They want to design advertising campaigns and feel generally handycapped when they are forced into tiny web design. You cannot even use the font you want to have...&lt;/p&gt;&lt;p&gt;The developers are only interested in the general solution to a problem. They generally don&#039;t care about the look and feel and about all the thousands of tiny details that make their elegant base solution a mess of code in the end...&lt;/p&gt;&lt;p&gt;Already during this time there was one area of work that was very complicated to tackle: Flash! No static images, but dynamic interaction. Only really good if mixed with actionscript coding. Up to now, there are only a few people who do this really good. Fortunately the use of flash is limited to a nice intro with some sound and flying characters, and there always is a SKIP button...&lt;/p&gt;&lt;p&gt;And now: Another dimension! Web 2.0, Ajax, Javascript. All the processes and the split of responsibility needs to be thought over again. Suddenly, the whole web application is a big monster of unrestrained user interaction. Drag&amp;amp;Drop, animations, widgets, server communication, asynchronous processing, events.&lt;/p&gt;&lt;p&gt;Not even the best programmers can really predict at the beginning of a project what will be possible and what cool feature might shipwreck due to browser shortcommings or other technical difficulties. On the other side, designers have a very hard time imagining all the user interaction that can be made possible and to consider all system behaviour and make designs for them.&lt;/p&gt;&lt;p&gt;The graphic design suddenly already contains half of the techical design process also. Assumptions are being made, designs need to change in long ping-pong games between design department and developers. &lt;/p&gt;&lt;p&gt;In short words: The arrangements need to be changed. The process of making designs first, then coding the application does not work anymore. Design and coding must go hand-in-hand, otherwise a modern application design ist not possible. This is going to be a challenge for all established customer/vendor relationships out there and for all full-service agencies that will need to build compelling web 2.0 apps in the future...&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-11-10T19:45:08Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=112</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/111-guid.html">
    <title>PhotoModel vs. WorldController</title>
    <link>http://100days.de/serendipity/archives/111-PhotoModel-vs.-WorldController.html</link>
    <description>
    &lt;p&gt;Ok, everybody is using MVC now. And everybody talks about the best template engine for the View and the best Implementation of PageController pattern or such. One thing that you find only very little definition about is the &amp;quot;M&amp;quot; in MVC. The Model. &lt;/p&gt;
&lt;p&gt;Sometimes it is referred to as a ActiveRecord or any other representation of a database row. This appears much too short-minded to me. MVC is about separation of concerns. Who is responsible for what? Clearly, the View should be responsible for visualization of Data. The Controller should control user interaction and page flow. I.e. it recieves all requests, and decides what to do and what do answer after the job is done.&lt;/p&gt;
&lt;p&gt;Now, my definition of the Model is: &amp;quot;Facade for the Business logic&amp;quot;. &lt;/p&gt;
&lt;p&gt;This means not more or less than a small class that offers all the Controller needs to do his work. In my world, the Controller accepts input parameters (GET, POST, SESSION, COOKIE, whatever). It checks for correct syntax and converts into internal formats (example: date fields etc.). The Model will not check for correct number or date formats. The controller then makes a model instance and calls methods with very speaking names in this model. Each Controller uses only one Model. Multiple Controllers may use the same Model if they work in comparable area of concerns.&lt;/p&gt;
&lt;p&gt;The model now takes care about all the bits and pieces it needs to process a given task. It reads config, makes DB connections, DataAccess Objects, Entity-Objects (i dont like ActiveRecord, use a JEE-like Entity approach). In bigger projects, your business logic might consist of hundreds of classes, containing factories, singletons and whatever patterns you want to apply. But the Model abstracts this all away from the Controller. This way, the structure of the business logic can be completly changed without impacting the Controllers or even the views.&lt;/p&gt;
&lt;p&gt;Models then return all values in internal data representation (example: date as JDDate or PHP-Date). The Controller passes the results to the View. The view is then responsible for giving it the right output format.&lt;/p&gt;
&lt;p&gt;This way, also some other responsibilities become clear:&lt;/p&gt;
&lt;p&gt;- Syntactical Input Check (including locale aware conversion of typed input fields to internal data formats) happens in the controller&lt;/p&gt;
&lt;p&gt;- The Model will check the passed data for consistency&lt;/p&gt;
&lt;p&gt;- Output formatting and -escaping of typed data fields is done in the view&lt;/p&gt;
&lt;p&gt;- Template translation is done in the view (template engine etc)&lt;/p&gt;
&lt;p&gt;- Models (and everything they invoke) may not access $_GET, $_POST, $_REQUEST, $_SESSION, $_COOKIE etc.&lt;/p&gt;
&lt;p&gt;- a Model may not invoke any other Model (nor Controller or View).&lt;/p&gt;
&lt;p&gt;- Communication between Controller and Model works with internal data representation&lt;/p&gt;
&lt;p&gt;For example, the Controller might get the user-id out of the session and transfer it to the Model at initialization time. The model will create a DB connection and a user-object as singletons in the constructor.&lt;/p&gt;
&lt;p&gt;... in the controller:&lt;/p&gt;
&lt;pre&gt;$photoId = (int) $_GET[&#039;photoId&#039;];&lt;/pre&gt;
&lt;pre&gt;$albumId = (int) $_GET[&#039;albumId&#039;];&lt;/pre&gt;
&lt;pre&gt;$m = new PhotoModel($_SESSION[&#039;userId&#039;]);&lt;/pre&gt;
&lt;pre&gt;$m-&amp;gt;removePhotoFromAlbum($photoId, $albumId);&lt;/pre&gt;
&lt;pre&gt;$res = $m-&amp;gt;getAlbumContent($albumId);&lt;/pre&gt;
&lt;pre&gt;$this-&amp;gt;view-&amp;gt;album = $res;  
// will be rendered by a cool template afterwards&lt;/pre&gt;
&lt;p&gt;... in the Model:&lt;/p&gt;
&lt;pre&gt;function __construct($userId) {&lt;/pre&gt;
&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $this-&amp;gt;conn = MyDBAbstraction::getConnection($userId);&lt;/pre&gt;
&lt;pre&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $this-&amp;gt;user = User::getInstance($userId);&lt;/pre&gt;
&lt;pre&gt;}&lt;/pre&gt;
&lt;p&gt;etc.&lt;/p&gt;
&lt;p&gt;This way, Models stay very lean, at the same time they clearly separate the business logic from the UI logic.&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-11-06T21:00:05Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=111</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=111</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/110-guid.html">
    <title>What google knows</title>
    <link>http://100days.de/serendipity/archives/110-What-google-knows.html</link>
    <description>
    &lt;p&gt;Google released the &amp;quot;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.google.com/dashboard/&#039;);&quot;  href=&quot;https://www.google.com/dashboard/&quot; target=&quot;_blank&quot;&gt;Google Dashboard&lt;/a&gt;&amp;quot; lately. In this app it shows all information the different google apps store about a given user. Analytics, Groups and Wave are currently not listed there. But it shows all information about Contacts, Account info, Text and Tables, Web Protocol (search queries) etc.&lt;/p&gt;&lt;p&gt;Seems like the &amp;quot;We are not Evil&amp;quot; benefit of google is not enough anymore and they need to show us how transparent they are about storage of personal data. Thanks Google, we appreciate it &lt;img src=&quot;http://100days.de/serendipity/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-11-06T17:39:07Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=110</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=110</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/109-guid.html">
    <title>Javascript: The good parts</title>
    <link>http://100days.de/serendipity/archives/109-Javascript-The-good-parts.html</link>
    <description>
    I cannot get around it: Just started reading an interesting book about Javascript. And i must say: After my tendency to prevent Javascript wherever possible in the past, i actually start to like the language. It has a bad reputation because it is in 100% of cases used to do DOM manipulations and browser feature enrichment and the environment it finds in today&#039;s browsers is still quite undefined and often unstable. But the language itself is surprisingly well defined and it has a lot of interesting constructs.&lt;br /&gt;My favorite sentence so far: &amp;quot;Javascript was built on some very good ideas and a few very bad ones.&amp;quot;. And the most interesting fact i learned: Javascript is a functional language like Scheme or Lisp. It has nothing to to with Java. Fun...&lt;br /&gt;
 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-11-04T08:15:58Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=109</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=109</wfw:commentRss>
    
    
</item>
<item rdf:about="http://100days.de/serendipity/archives/108-guid.html">
    <title>iPhone verloren: Telekom gibt auf</title>
    <link>http://100days.de/serendipity/archives/108-iPhone-verloren-Telekom-gibt-auf.html</link>
    <description>
    
&lt;p&gt;Jaja, ich bin manchmal ein Schussel, alles klar. Mir ist letzten Donnerstag mein iPhone abhanden gekommen. Vergessen, verloren, geklaut, ich weiss es nicht. Jedenfalls hat niemand es gefunden. Also hab ich mich mit dem Verlust abgefunden. Nun habe ich ja diesen iPhone Spezialtarif bei der Telekom. Und da bin ich heute mal zum T-Punkt gegangen, um zu fragen wie es da jetzt weiter geht. Meine Erwartung war eine Aussage wie: &amp;quot;Selber Schuld, dann müssen Sie sich ein neues iPhone kaufen, kostet 250 EUR&amp;quot;. Vielleicht, so dachte ich, gibt es ja sogar ein bisschen Kulanz und weil ich so viel Gesprächsumsatz mache, kriege ich ein neues iPhone für nur 100 EUR oder so.&lt;/p&gt;&lt;p&gt;Aber die tatsächliche Aussage der Telekom hat mich dann echt aus den Socken gehauen: &amp;quot;Da können wir nichts machen&amp;quot;. Auf die Frage, was denn werden soll, sagte man mir: &amp;quot;Der Vertrag ist ja für 2 Jahre geschlossen und kann auf keinen Fall aufgelöst werden.&amp;quot; Und: &amp;quot;Ein neues iPhone bekommen Sie bei uns nur mit einem neuen Vertrag&amp;quot;. Und das macht mich jetzt echt sauer, muss ich sagen. Die gehen wirklich davon aus, dass ich meinen aktuellen 50 EUR/Monat bei der Telekom 1,5 weitere Jahre laufen lasse und weil es so ein Erfolgsmodell ist, noch einen zweiten im Wert von erneut 1000 EUR abschließe, damit ich ein neues iPhone bekomme? Auf mehrfaches Nachfragen gab es keine andere Antwort. Nur die Antworten kamen in zunehmend patzigem Tonfall.&lt;/p&gt;&lt;p&gt;Sorry Telekom, auch wenn ich für Dich arbeite, hiermit hast du einen Kunden verloren. Und zwar dauerhaft...&lt;/p&gt; 
    </description>

    <dc:publisher>PHP is not Java!</dc:publisher>
    <dc:creator>nospam@example.com (Gaylord Aulke)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2009-10-17T13:11:07Z</dc:date>
    <wfw:comment>http://100days.de/serendipity/wfwcomment.php?cid=108</wfw:comment>
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://100days.de/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=108</wfw:commentRss>
    
    
</item>

</rdf:RDF>
