<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>burgiblog</title>
	<atom:link href="http://burgiblog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://burgiblog.com</link>
	<description>PHP, symfony, web application development</description>
	<lastBuildDate>Mon, 16 Apr 2012 13:09:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Depending on packages without composer.json in Composer (PHP dependency manager)</title>
		<link>http://burgiblog.com/2012/03/08/depending-on-packages-without-composer-json-in-composer-php-dependency-manager/</link>
		<comments>http://burgiblog.com/2012/03/08/depending-on-packages-without-composer-json-in-composer-php-dependency-manager/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 18:43:07 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[Composer]]></category>
		<category><![CDATA[Packagist]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony2]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=292</guid>
		<description><![CDATA[Composer is a great way to manage your PHP dependencies. The documentation is still a bit scarce, so you could imagine that it took quite a while to find out how to add an external dependency (in my case from github) which doesn&#8217;t have a composer.json file and is not registered on packagist. There are <a href='http://burgiblog.com/2012/03/08/depending-on-packages-without-composer-json-in-composer-php-dependency-manager/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><span id="more-292"></span><a href="http://getcomposer.org" target="_blank">Composer</a> is a great way to manage your PHP dependencies. The <a href="http://getcomposer.org/doc" target="_blank">documentation</a> is still a bit scarce, so you could imagine that it took quite a while to find out how to add an external dependency (in my case from github) which doesn&#8217;t have a composer.json file and is not registered on packagist. There are <a href="http://speakerdeck.com/u/naderman/p/composer-php-user-group-karlsruhe" target="_blank">different</a> <a href="http://getcomposer.org/doc/05-repositories.md" target="_blank">solutions</a>, but Composer seems to be under active development and none worked for me.</p>
<p><!--more--></p>
<p>So &#8211; in my project&#8217;s <em>composer.json</em> &#8211; this is how I&#8217;m loading the FOSFacebookBundle:</p>
<p>1. Define it as an external repository:</p>
<pre class="brush: javascript; gutter: true">&quot;repositories&quot;: {
        &quot;symfony-unofficial&quot;: {
            &quot;type&quot;: &quot;package&quot;,
            &quot;package&quot;: {
                &quot;name&quot;: &quot;fos/facebookbundle&quot;,
                &quot;version&quot;: &quot;2.0&quot;,
                &quot;source&quot;: {
                    &quot;url&quot;: &quot;git://github.com/FriendsOfSymfony/FOSFacebookBundle.git&quot;,
                    &quot;type&quot;: &quot;git&quot;,
                    &quot;reference&quot;: &quot;origin/2.0&quot;
                }
            }
        }
    }</pre>
<p>2. Add it to your project&#8217;s dependencies:</p>
<pre class="brush: javascript; gutter: true">
    &quot;require&quot;: {
        ...
        &quot;fos/facebookbundle&quot;:             &quot;2.0.*&quot;
    }
</pre>
<p>3. And register the (psr-0 conform) namespace with the autoloader:</p>
<pre class="brush: javascript; gutter: true">
    &quot;autoload&quot;: {
        &quot;psr-0&quot;: {
            &quot;MyBundleNamespace&quot;: &quot;src/&quot;,
            &quot;FOS&quot;: &quot;vendor/&quot;
        }
    }
</pre>
<p>Et voila! By the way, my <em>composer.json</em> would look like this:</p>
<pre class="brush: javascript; gutter: true">
{
    &quot;name&quot;: &quot;My app&quot;,
    &quot;description&quot;: &quot;My Facebook App&quot;,
    &quot;repositories&quot;: {
        &quot;symfony-unofficial&quot;: {
            &quot;type&quot;: &quot;package&quot;,
            &quot;package&quot;: {
                &quot;name&quot;: &quot;fos/facebookbundle&quot;,
                &quot;version&quot;: &quot;2.0&quot;,
                &quot;source&quot;: {
                    &quot;url&quot;: &quot;git://github.com/FriendsOfSymfony/FOSFacebookBundle.git&quot;,
                    &quot;type&quot;: &quot;git&quot;,
                    &quot;reference&quot;: &quot;origin/2.0&quot;
                }
            }
        }
    },
    &quot;require&quot;: {
        &quot;php&quot;:              &quot;&gt;=5.3.2&quot;,
        &quot;symfony/symfony&quot;:  &quot;&gt;=2.0.10,&lt;2.1.0-dev&quot;,
        &quot;doctrine/orm&quot;:     &quot;&gt;=2.1.0,&lt;2.2.0-dev&quot;,
        &quot;twig/extensions&quot;:  &quot;*&quot;,

        &quot;symfony/assetic-bundle&quot;:         &quot;2.0.*&quot;,
        &quot;sensio/generator-bundle&quot;:        &quot;2.0.*&quot;,
        &quot;sensio/framework-extra-bundle&quot;:  &quot;2.0.*&quot;,
        &quot;sensio/distribution-bundle&quot;:     &quot;2.0.*&quot;,
        &quot;jms/security-extra-bundle&quot;:      &quot;1.0.*&quot;,
        &quot;fos/facebookbundle&quot;:             &quot;2.0.*&quot;
    },
    &quot;autoload&quot;: {
        &quot;psr-0&quot;: {
            &quot;MyBundleNamespace&quot;: &quot;src/&quot;,
            &quot;FOS&quot;: &quot;vendor/&quot;
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2012/03/08/depending-on-packages-without-composer-json-in-composer-php-dependency-manager/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Issue in symfony&#8217;s sfToolkit::arrayDeepMerge()</title>
		<link>http://burgiblog.com/2011/12/05/issue-in-symfonys-sftoolkitarraydeepmerge/</link>
		<comments>http://burgiblog.com/2011/12/05/issue-in-symfonys-sftoolkitarraydeepmerge/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 12:34:54 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[symfony 1.4]]></category>
		<category><![CDATA[YAML]]></category>
		<category><![CDATA[yml]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=278</guid>
		<description><![CDATA[I&#8217;ve had a bit of an odd issue where JavaScript files from a plugin I&#8217;d written weren&#8217;t being included for some reason. Turns out that there&#8217;s a bug / feature (?) in the way symfony merges config files. plugins/myPlugin/config/view.yml all: javascripts: - /js/one.js - /js/two.js - /js/three.js app/frontend/config/view.yml all: javascripts: - /js/four.js - /js/five.js &#160; <a href='http://burgiblog.com/2011/12/05/issue-in-symfonys-sftoolkitarraydeepmerge/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a bit of an odd issue where JavaScript files from a plugin I&#8217;d written weren&#8217;t being included for some reason.</p>
<p>Turns out that there&#8217;s a bug / feature (?) in the way symfony merges config files.<span id="more-278"></span></p>
<p><em>plugins/myPlugin/config/view.yml</em><br />
<code></p>
<pre>
all:
  javascripts:
    - /js/one.js
    - /js/two.js
    - /js/three.js
</pre>
<p></code></p>
<p><em>app/frontend/config/view.yml</em><br />
<code></p>
<pre>
all:
  javascripts:
    - /js/four.js
    - /js/five.js
</pre>
<p></code></p>
<p>&nbsp;</p>
<p><strong>Expected result:</strong></p>
<p><code></p>
<pre>
all:
  javascripts:
    - /js/one.js
    - /js/two.js
    - /js/three.js
    - /js/four.js
    - /js/five.js
</pre>
<p></code></p>
<p>However, due to the way <em>arrayDeepMerge</em> merges the two arrays, all values from the first array are being overridden, resulting in:</p>
<p><code></p>
<pre>
all:
  javascripts:
    - /js/four.js
    - /js/five.js
    - /js/three.js
</pre>
<p></code></p>
<p>&nbsp;</p>
<p>This will happen in all config files, most notably <em>view.yml, app.yml, settings.yml,</em> etc. (this has been discussed in http://groups.google.com/group/symfony-devs/browse_thread/thread/3a725483db3dec82 but lies vacant ever since 2007).</p>
<p>&nbsp;</p>
<p>A workaround would be to specify a unique index for your javascript, e.g.:</p>
<p><em>plugins/myPlugin/config/view.yml</em><br />
<code></p>
<pre>
all:
  javascripts:
    101: /js/one.js
    102: /js/two.js
    103:
      /js/three.js: { position: first }
</pre>
<p></code></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Hope this helps if you should run into the same issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2011/12/05/issue-in-symfonys-sftoolkitarraydeepmerge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symfony: Cross-application cache clearing on distributed servers</title>
		<link>http://burgiblog.com/2011/02/12/symfony-cross-application-cache-clearing-on-distributed-servers/</link>
		<comments>http://burgiblog.com/2011/02/12/symfony-cross-application-cache-clearing-on-distributed-servers/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 18:08:11 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[multiple servers]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[symfony 1.4]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=252</guid>
		<description><![CDATA[I've finally published very first symfony plugin. This post introduces mbpDistributedCachePlugin, a plugin that I've written during my time at MadeByPi to synchronise clearing the cache in a multi-server setup. This is especially relevant to highly frequented sites, but can be used for single-server environments just as easy as it also provides functionality to clear parts of the cache across applications (e.g. from your backend to your frontend application)]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-265" style="padding: 0 0 10px 10px;" title="cluster_icon" src="http://burgiblog.com/wp-content/uploads/2011/02/cluster_icon.jpg" alt="" width="128" height="128" /><br />
While the title might sound a tad complicated, the problem is pretty straight forward:</p>
<p>Your production environment consists of a <strong>multi-server set-up</strong> (e.g. a cluster, but works on a single server just as well) with a <strong>centralised database</strong> and you use <strong>sfFileCache</strong> as your caching strategy (because you don&#8217;t want to litter your database with cache entries).</p>
<p>So how would you clear parts or all of the cache? You can&#8217;t just use <code>symfony:cc</code> or the <code>sfViewCacheManager</code> because:</p>
<ul>
<li>It won&#8217;t work across applications, e.g. when triggered from your backend application, you won&#8217;t be able to clear the cache on your frontend.</li>
<li>It will only clear the cache on your current server, while the other servers still contain the old cache version.</li>
</ul>
<p><span id="more-252"></span><br />
Along comes our centralised database! The solution we came up with at <a title="Digital Agency in Leeds" href="http://www.madebypi.co.uk" target="_blank">work</a> was to write all cache clearing rules to the database and then run a cronjob every minute or so to process the pending rules. It already works really well on a highly frequented site we&#8217;ve released earlier this year and we&#8217;ve decided to package it into a symfony plugin (<a title="symfony plugin to clear the cache on multiple=" href="http://www.symfony-project.org/plugins/mbpDistributedCachePlugin" target="_blank">mbpDistributedCachePlugin</a>).</p>
<h2>How to install</h2>
<p>You can install the latest stable version via</p>
<pre><code>symfony plugin:install mbpDistributedCachePlugin</code></pre>
<p>or check out the latest version from</p>
<pre><code>svn co http//svn.symfony-project.com/plugins/mbpDistributedCachePlugin/trunk plugins/mbpDistributedCachePlugin</code></pre>
<p>I&#8217;ve put detailed installation and usage instruction into the README file (also available <a href="http://www.symfony-project.org/plugins/mbpDistributedCachePlugin/1_0_0?tab=plugin_readme" target="_blank">here</a>). However, if you should have any questions or suggestions, leave me a comment and I&#8217;ll get back to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2011/02/12/symfony-cross-application-cache-clearing-on-distributed-servers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A new kind of Facebook games &#8211; A symfony developer&#8217;s diary</title>
		<link>http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/</link>
		<comments>http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 13:32:19 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=222</guid>
		<description><![CDATA[Are you growing tired of Facebook games that have absolutely no depth and simply consist of nice graphics without any strategic gameplay like Farmville, Mafia Wars etc.? Well, so was I to say the least. I believe I can do better than this and so I teamed up with Daniel West (graphics, storyline) and Francesca <a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Are you growing tired of Facebook games that have absolutely no depth and simply consist of nice graphics without any strategic gameplay like Farmville, Mafia Wars etc.? Well, so was I to say the least. I believe I can do better than this and so I teamed up with <a href="http://www.facebook.com/profile.php?id=683690241" target="_blank">Daniel West</a> (graphics, storyline) and <a href="http://www.facebook.com/profile.php?id=596401440" target="_blank">Francesca Sciarmella</a> (3D graphics) in February to build a full-scale strategic game.<span id="more-222"></span></p>
<p>The basic idea is that you are the ruler of a race (one of the 5 below), start off with a single planet and basic research, and will then gradually advance as you colonise or invade new worlds, research new technologies, trade with other players, form alliances and fight wars.<a href="http://burgiblog.com/wp-content/uploads/2010/03/race_sheet-desktop.jpg"><br />
</a></p>
<p><a href="http://burgiblog.com/wp-content/uploads/2010/03/race_sheet-desktop.jpg">
<a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/2010-03-23_040016/' title='2010-03-23_040016'><img width="150" height="150" src="http://burgiblog.com/wp-content/uploads/2010/03/2010-03-23_040016-150x150.jpg" class="attachment-thumbnail" alt="2010-03-23_040016" title="2010-03-23_040016" /></a>
<a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/human/' title='human'><img width="123" height="150" src="http://burgiblog.com/wp-content/uploads/2010/03/human-123x150.jpg" class="attachment-thumbnail" alt="human" title="human" /></a>
<a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/til-lanic/' title='til-lanic'><img width="104" height="150" src="http://burgiblog.com/wp-content/uploads/2010/03/til-lanic-104x150.jpg" class="attachment-thumbnail" alt="til-lanic" title="til-lanic" /></a>
<a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/corran/' title='corran'><img width="150" height="150" src="http://burgiblog.com/wp-content/uploads/2010/03/corran-150x150.jpg" class="attachment-thumbnail" alt="corran" title="corran" /></a>
<a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/moy-u/' title='moy-u'><img width="108" height="150" src="http://burgiblog.com/wp-content/uploads/2010/03/moy-u-108x150.jpg" class="attachment-thumbnail" alt="moy-u" title="moy-u" /></a>
<a href='http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/aqualanic/' title='aqualanic'><img width="143" height="150" src="http://burgiblog.com/wp-content/uploads/2010/03/aqualanic-143x150.jpg" class="attachment-thumbnail" alt="aqualanic" title="aqualanic" /></a>
<br />
</a></p>
<p>On the technical side, the game will be running on PHP (using the symfony framework), with JavaScript/AJAX optionally. We are aiming to make the game available on several platforms, such as PC or mobile devices (Android, iPhone).</p>
<p>As of now, we have a working prototype and beta tests are coming up soon. Also, see above for a screen shot of the current prototype (planet view).</p>
<p>Stay tuned for updates and more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2010/03/23/a-new-kind-of-facebook-games-a-symfony-developers-diary/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>symfony and Cronjobs</title>
		<link>http://burgiblog.com/2009/10/30/symfony-and-cronjobs/</link>
		<comments>http://burgiblog.com/2009/10/30/symfony-and-cronjobs/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 10:34:09 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[11.1]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[task]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=199</guid>
		<description><![CDATA[This short tutorial explains how to set up reoccuring tasks with symfony through cronjobs.]]></description>
			<content:encoded><![CDATA[<p>In order to automate tasks that should run on a regular basis, you will need a cronjob. Fortunately, creating cronjobs with symfony is a piece of cake.</p>
<p>First, you will need to create a batch task. Navigate to your project directory and enter</p>
<pre><code>symfony generate:task [your task] </code></pre>
<p>This will generate a task skeleton for you in <em>lib/task/[your task]Task.class.php</em> , which contains two important methods:<em> configure()</em> and <em>execute()</em>. The names are pretty self-explanatory. All your code should go in the <em>execute()</em> method. You might want to do some configurations first. Change the following lines in <em>configure()</em> accordingly:</p>
<pre>$this-&gt;namespace        = 'project';
$this-&gt;name             = '[name-for-your-task]';
$this-&gt;briefDescription = '[some short explanation of what your task does]';</pre>
<p>Before you start hacking your code into the <em>execute()</em> method, I would recommend to test-run it in a normal symfony module first. When you&#8217;re done, copy&amp;paste the action of your test module into the <em>execute()</em> method. Be aware that tasks don&#8217;t contain a view and, therefore, you will need to <em>echo </em>any output directly in the method itself. An example that, frankly speaking, does nothing useful at all:</p>
<pre>protected function execute($arguments = array(), $options = array())
{
 // initialize the database connection
 $databaseManager = new sfDatabaseManager($this-&gt;configuration);
 $connection = $databaseManager-&gt;getDatabase($options['connection'] ? $options['connection'] : null)-&gt;getConnection();

 // add your code here

 echo "I just did nothing at all, but at least I did it successfully!\n\n";
}</pre>
<p>Let&#8217;s give it a test run. Open your command line and enter</p>
<pre>symfony project:[your task]</pre>
<p>If you see the expected output, you&#8217;re ready to go to the next step.</p>
<p><strong>Please notice:</strong> The paths I&#8217;ve used apply to OpenSuse 11.1. If you run another Linux distribution, you might have to amend them.</p>
<p>Open your servers crontab at <em>/etc/crontab</em> in your favourite text editor and add the following line to the end of the document:</p>
<pre>*/5 * * * * cd [YOUR SF APP DIR] &amp;&amp; /usr/bin/symfony project:[YOUR TASK] &gt;&gt;[YOUR SF APP DIR]/log/crontab.log</pre>
<p><em><strong>Update</strong>: Thanks to Marcell Fülöp for the suggestion to use &gt;&gt; to avoid overriding existing log entries</em></p>
<p>Explaining every detail of cronjobs would definitely blow the extent of this how-to and there are some very good <a href="http://www.thesitewizard.com/general/set-cron-job.shtml" target="_blank">sites</a> out there that can help you understand. Just a quick explanation: This task runs every 5 minutes, changes to your symfony application directory, executes your task (please note that you don&#8217;t have access to your $PATH variables, so no <em>symfony</em> shortcut!) and outputs the result to <em>/log/crontab.log</em> .</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2009/10/30/symfony-and-cronjobs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Eclipse IDE: Symfony essentials</title>
		<link>http://burgiblog.com/2009/10/18/eclipse-ide-symfony-essentials/</link>
		<comments>http://burgiblog.com/2009/10/18/eclipse-ide-symfony-essentials/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 01:12:27 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[symfony]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Essentials]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[YAML]]></category>
		<category><![CDATA[YEdit]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=192</guid>
		<description><![CDATA[This tutorial explains how to make the Eclipse IDE ready for symfony (PHP framework).]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://burgiblog.com/wp-content/uploads/2009/10/eclipse_sf.png"><img class="size-full wp-image-196 aligncenter" title="Eclipse and Symfony" src="http://burgiblog.com/wp-content/uploads/2009/10/eclipse_sf.png" alt="Eclipse and Symfony - A beautiful couple" width="482" height="106" /></a></p>
<p>Every programmer knows it, every programmer loves it: the Eclipse IDE. It is probably the most extensive free open-source development environment out there (Netbeans put aside). In this tutorial I&#8217;d like to show you how you can get it ready for symfony, the (in my opinion) best PHP framework there is at the moment.</p>
<p>1. Download and install the Eclipse-based PDT (PHP Development Tools) standalone version: <a href="http://www.eclipse.org/pdt/" target="_blank">http://www.eclipse.org/pdt/</a></p>
<p>2. Now we&#8217;re going to install some plugins that are going to make your life easier when you are a symfony developer. Click <em>Help -&gt; Install New Software &#8230;</em> and add the following plugins to Eclipse:</p>
<ul>
<li>Aptana Studio Update Site &#8211; http://update.aptana.com/update/studio/ -&gt; Aptana Studio (only if you want to use the built-in FTP functionality, otherwise you don&#8217;t need to bother about this one)</li>
<li>YEdit &#8211; http://dadacoalition.org/yedit -&gt; YEdit (a YAML syntax highlighter, since most of symfony&#8217;s configuration is being done through .yml files</li>
</ul>
<p>3. After restarting Eclipse, we are going to add some symfony-specific auto-completion features to Eclipse. At this point, you will probably have the symfony framework installed somewhere on your PC. If you have not done so, download it from <a title="symfony 1.2 zip" href="http://www.symfony-project.org/get/symfony-1.2.9.zip" target="_blank">here</a> or <a title="symfony 1.2 tgz" href="http://www.symfony-project.org/get/symfony-1.2.9.tgz" target="_blank">here</a> and unpack it to a directory that you can easily remember.<br />
Now change back to Eclipse. Open <em>Window -&gt; Preferences -&gt; PHP -&gt; PHP Libraries -&gt; New</em>, enter &#8220;<em>symfony</em>&#8221; as a name and tick the <em>Add to environment</em> option. After clicking OK, you will notice the entry we just added in your libraries list. Mark the new entry by clicking on it, the click <em>Add external folder&#8230;</em>, browse to the folder where you put the symfony framework and add it.<br />
Now you can add the symfony library every time you create a new PHP Project in Eclipse or by right-clicking on an existing project <em>-&gt;Include Path -&gt; Configure include path</em>. Either way, you need to click on <em>Add Library -&gt; User Library -&gt; symfony</em> and add it.</p>
<p>4. If you have installed the Aptana plugin before, you might want to activate the built-in shortcut for uploading the current file you are working on. Since that shortcut (<em>Ctrl + Shift + U</em>) is already reserved by Eclipse itself (and the Aptana team probably did not think of that when writing their framework), you need to do the following steps: <em>Window -&gt; Preferences -&gt; General -&gt; Keys</em>, then do a search for &#8220;<em>Show Occurrences in File Quick Menu</em>&#8221; (filter) and unbind these shortcuts from this rather useless command (<em>Click -&gt; Unbind Command</em>).<br />
You need to modify the Sync Manager (that is needed for uploading). Click <em>Window -&gt; Show View -&gt; Other -&gt; Aptana Standard Views -&gt; Sync Manager</em>. The configuration window will pop up at the bottom of Eclipse. Configuration is pretty much self-explanatory. Just make sure you have the FTP data for you symfony-enabled web server at hand.</p>
<p><strong>Now you can start developing beautiful symfony applications with Eclipse!</strong> There are dozens of (video) tutorials about how to effectively use Eclipse out there, so you might want to have a look at these if you&#8217;ve never used Eclipse before (I absolutely recommend that, it will save you loads of time). To start a new project, select <em>File -&gt; New -&gt; PHP Project</em>, enter the necessary data and don&#8217;t forget to include the symfony library.</p>
<p>If you&#8217;re running you own server on localhost (a future tutorial will cover how to set one up with symfony enabled), another feature will come in quite handy as well: right-clicking on the project in your <em>PHP Explorer</em> and selecting <em>Command Line Shell</em> will start a shell with the project&#8217;s root folder. From there, you can start to use your symfony commands as usual.</p>
<p>Have fun developing symfony applications even quicker and easier!</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2009/10/18/eclipse-ide-symfony-essentials/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Developing Facebook and Facebook Connect applications with symfony</title>
		<link>http://burgiblog.com/2009/09/18/developing-facebook-applications-with-symfony/</link>
		<comments>http://burgiblog.com/2009/09/18/developing-facebook-applications-with-symfony/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 18:23:01 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook connect]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sfFacebookConnectPlugin]]></category>
		<category><![CDATA[sfGuardPlugin]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=171</guid>
		<description><![CDATA[This step-by-step tutorial explains how to effectively use symfony for producing facebook applications. It mainly concentrates on configuration and also contains a real life example.]]></description>
			<content:encoded><![CDATA[<h2><em>Call to all developers:</em></h2>
<p><del><em>Since this plugin is no longer being developed and is still using the old REST-interface, I&#8217;m looking into forking or developing a new Facebook plugin that uses the new OAuth protocol. Please <a href="http://www.facebook.com/burgizinho" target="_blank">contact me</a> if you&#8217;re interested.</em></del></p>
<p><em><a title="Web Agency in Leeds" href="http://www.madebypi.co.uk" target="_blank">We</a>&#8216;re currently working on an extensive symfony (1.4) plugin that builds upon the new Graph API. Watch this blog for further updates!<br />
</em></p>
<hr />
<p>We have just finished developing our first facebook application using symfony and the very useful <a href="http://www.symfony-project.org/plugins/sfFacebookConnectPlugin" target="_blank">sfFacebookConnectPlugin</a> which can be downloaded from the SVN repository (or from <a href="http://plugins.symfony-project.org/get/sfFacebookConnectPlugin/sfFacebookConnectPlugin-1.0.0.tgz" target="_blank">here</a> for those of you who don&#8217;t use SVN). Simply unpack it to the <em>plugins/</em> folder of your symfony project.</p>
<p>&nbsp;</p>
<p>But before you can use the sfFacebookConnectPlugin, you need to install sfGuard:</p>
<h3>Installing and configuring sfGuardPlugin and sfFacebookConnectPlugin</h3>
<p>Open the command line shell (cmd on Windows, PuTTy/bash on remote systems/linux), change to your project directory and type:</p>
<pre>symfony plugin-install http://plugins.symfony-project.com/sfGuardPlugin</pre>
<p>to install the plugin from the official symfony repository.</p>
<p>Now open the <em>settings.yml</em> in <em>/apps/[myapp]/config</em> and edit</p>
<pre>all:
  .actions:
    login_module:           sfGuardAuth   # To be called when a non-authenticated user
    login_action:           signin     # Tries to access a secure page
    secure_module:          sfGuardAuth   # To be called when a user doesn't have
    secure_action:          secure    # The credentials required for an action
  .settings:
    enabled_modules:      [default, sfFacebookConnectAuth, sfGuardAuth]</pre>
<p>Now open <em>myUser.class.php</em> in <em>/[myapp]/lib</em> and update the myUser class to extend sfFacebookUser:</p>
<pre>class myUser extends sfFacebookUser
{
}</pre>
<p>Add the following lines to the end of your <em>routing.yml</em> at /[myapp]/config to enable the signin and signout (optional):</p>
<pre>sf_guard_signin:
 url:   /login
 param: { module: sfGuardAuth, action: signin }

sf_guard_signout:
 url:   /logout
 param: { module: sfGuardAuth, action: signout }

sf_guard_password:
 url:   /request_password
 param: { module: sfGuardAuth, action: password }</pre>
<p>Now edit the <em>[myapp]/config/app.yml</em> with all the settings you have obtained from <a href="http://www.facebook.com/developers/apps.php" target="_blank">http://www.facebook.com/developers/apps.php</a>:</p>
<pre># default values
all:
 facebook:
   api_key: ...
   api_secret: ...
   api_id: ...
   callback_url: [your callback url]
   app_url: http://apps.facebook.com/[your app]/
   redirect_after_connect: true
   redirect_after_connect_url: 'http://apps.facebook.com/[your app]/'
   connect_signin_url: '[url to your app]/sfFacebookConnectAuth/signin'

 sf_guard_plugin:
   profile_class: sfGuardUserProfile
   profile_field_name: user_id
   profile_facebook_uid_name: facebook_uid
   profile_email_name: email
   profile_email_hash_name: email_hash

 facebook_connect:
   load_routing:     true
   user_permissions: []</pre>
<p>Next, you want to modify your sfGuardUserProfile schema (<em>apps/[myapp]/config/schema.yml</em>) to contain these 3 additional rows needed. Simply add them to the end of <em>schema.yml</em>:</p>
<pre>sf_guard_user_profile:
 _attributes:      { phpName: sfGuardUserProfile }
 id:
 user_id:     { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
 nickname:         { type: varchar(32), index: unique }
 first_name:       varchar(20)
 last_name:        varchar(20)
 birthday:         date
 facebook_uid:     varchar(20)
 email:            varchar(255)
 email_hash:       varchar(255)</pre>
<p><em>Site note: Since the new Facebook UIDs are way bigger than integer could possibly store, we have decided to go with varchar here. The official README is outdated.</em></p>
<p><em><br />
</em></p>
<p>Clear your cache:</p>
<pre>symfony cc</pre>
<p>Publish your assets:</p>
<pre>symfony plugin:publish-assets</pre>
<p>And finally, rebuild your model and insert the generated SQL using the database settings you have provided in your <em>/config/databases.yml</em>:</p>
<pre>symfony propel:build-model
symfony propel:build-sql
symfony propel:build-forms
symfony propel:build-filters
symfony propel:insert-sql</pre>
<h3>Using sfFacebookConnectPlugin<em> </em></h3>
<p>We called our module <em>facebook </em>and the layout <em>fb</em>. Of course these are just examples and you may adjust them to your own needs.</p>
<p>Here is our layout<em> fb.php</em>:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"&gt;
&lt;head&gt;
&lt;?php use_helper('sfFacebookConnect') ?&gt;
&lt;?php include_http_metas() ?&gt;
&lt;?php include_metas() ?&gt;
&lt;?php include_title() ?&gt;
&lt;link rel="shortcut icon" href="/favicon.ico" /&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;?php echo $sf_content ?&gt;

&lt;?php include_bottom_facebook_connect_script(); ?&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Next, a very basic <em>actions.class.php</em>:</p>
<pre>&lt;?php

/**
 * facebook actions.
 *
 * @package
 * @subpackage facebook
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class facebookActions extends sfActions
{
	/**
	 * Executes index action
	 *
	 * @param sfRequest $request A request object
	 */

	public function executeIndex(sfWebRequest $request)
	{
		sfFacebook::requireLogin();
		//get the user object
		$user = $this-&gt;getUser();

		// facebook user id
		$this-&gt;fb_uid = $user-&gt;getCurrentFacebookUid();
		// get or create user based on fb_uid
		$fb_user = sfFacebook::getOrCreateUserByFacebookUid($this-&gt;fb_uid);
	}</pre>
<p>And finally, and example how to render a friends invite form in your <em>indexSuccess.php</em>:</p>
<pre>&lt;?php if ($sf_user-&gt;isFacebookConnected()): ?&gt;

&lt;fb:serverfbml style="width: 740px;"&gt;
	&lt;script type="text/fbml"&gt;
        &lt;fb:fbml&gt;
        	&lt;fb:request-form target="_top" action="[where to redirect after invite]" method="post" type="[name of your app]" content="[text the user will receive]&amp;lt;fb:req-choice url=&amp;quot;http://apps.facebook.com/[your app]/&amp;quot; label=&amp;quot;Accept!&amp;quot;  " image="" invite="true"&gt;
        		&lt;fb:multi-friend-selector cols="4" actiontext="[some text above the invite form]" /&gt;
	        &lt;/fb:request-form&gt;
        &lt;/fb:fbml&gt;
    &lt;/script&gt;
&lt;/fb:serverfbml&gt;

&lt;?php else: ?&gt;
&lt;p&gt;Ooops?&lt;/p&gt;
&lt;br /&gt;
&lt;?php endif; ?&gt;</pre>
<p>I hope you enjoyed this tutorial!</p>
<p>P.S.: Thanks to Andrés for the hint!</p>
<p>P.P.S.: As outlined by Ben below:</p>
<blockquote><p><em>The other thing which was an issue I found very hard to spot (I am still new to Symfony) is in the security.yml file in “modules/sfFacebookConnectAuth/config”, if you are using symfony 1.4 (I am not sure about other versions as I haven’t used them), you have to use “false” instead of “off” – if you find that the sfGuardUser record is being created, but the user is not being signed in, this is likely to be the problem. (I believe that this is a change in the syntax of YAML in newer versions). </em></p></blockquote>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1681px; width: 1px; height: 1px;">
<p>&lt;?php</p>
<p>/**<br />
* facebook actions.<br />
*<br />
* @package quiz4fun<br />
* @subpackage facebook<br />
* @author Your name here<br />
* @version SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $<br />
*/<br />
class facebookActions extends sfActions<br />
{<br />
/**<br />
* Executes index action<br />
*<br />
* @param sfRequest $request A request object<br />
*/</p>
<p>public function executeIndex(sfWebRequest $request)<br />
{<br />
sfFacebook::requireLogin();<br />
}</p>
<p>public function executeApplet(sfWebRequest $request)<br />
{<br />
sfFacebook::requireLogin();<br />
//get the user object<br />
$user = $this-&gt;getUser();</p>
<p>// facebook user id<br />
$this-&gt;fb_uid = $user-&gt;getCurrentFacebookUid();<br />
// get user based on fb_uid<br />
$fb_user = sfFacebook::getOrCreateUserByFacebookUid($this-&gt;fb_uid);</p>
<p>// create a new session ID for authentication<br />
$this-&gt;tmp_session = $this-&gt;tmpSession();<br />
// write to db<br />
$fb_user-&gt;getProfile()-&gt;setTmpSession($this-&gt;tmp_session);<br />
$fb_user-&gt;getProfile()-&gt;save();</p>
<p>// nickname<br />
$this-&gt;nickname = $fb_user-&gt;getProfile()-&gt;getNickname();<br />
if(!$this-&gt;nickname OR trim($this-&gt;nickname) == &#8221;)<br />
{<br />
// set nickname<br />
$this-&gt;redirect(&#8216;facebook/updateNickname?nick=fb_&#8217;.$this-&gt;fb_uid);<br />
}<br />
}</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2009/09/18/developing-facebook-applications-with-symfony/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Apache2-prefork memory leak on virtual server</title>
		<link>http://burgiblog.com/2009/09/08/apache2-prefork-memory-leak-on-virtual-server/</link>
		<comments>http://burgiblog.com/2009/09/08/apache2-prefork-memory-leak-on-virtual-server/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 14:11:24 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[openSuse 11.1]]></category>
		<category><![CDATA[10.3]]></category>
		<category><![CDATA[11.1]]></category>
		<category><![CDATA[2.2.10]]></category>
		<category><![CDATA[2.2.13]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[apache2-prefork]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[memory leak]]></category>
		<category><![CDATA[openSuse]]></category>
		<category><![CDATA[prefork]]></category>

		<guid isPermaLink="false">http://burgiblog.com/?p=163</guid>
		<description><![CDATA[Out of the blue, our Vserver (openSuse 11.1) suddenly went mad. This all began with it denying SSH access. Then, after forcing a restart through the rescue system Strato provides, I could log on via shell again. Unfortunately, after a while, openSuse kept quitting any prompt with -bash: fork: Not enough memory available After a <a href='http://burgiblog.com/2009/09/08/apache2-prefork-memory-leak-on-virtual-server/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Out of the blue, our <strong>Vserver</strong> (<strong>openSuse 11.1</strong>) suddenly went mad. This all began with it denying SSH access. Then, after forcing a restart through the rescue system <a title="Strato" href="http://strato.de" target="_blank">Strato</a> provides, I could log on via shell again. Unfortunately, after a while, openSuse kept quitting any prompt with<br />
<code>-bash: fork: Not enough memory available</code><br />
<span id="more-163"></span></p>
<p>After a restart, watching <code>top</code> for a while didn&#8217;t help too much, and neither did <code>ps aux</code>, besides noticing that the memory kept rising. Unfortunately, searching google didn&#8217;t help too much either. We couldn&#8217;t narrow down the problem. So we kept check ing the main components, starting with pure-ftpd, mysql, and finally apache2, which lead us to our solution. The error logs looked a bit suspicious:<br />
<code> *******  /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)<br />
******* /usr/sbin/cron[20026]: (CRON) error (can't fork)</code></p>
<p>We then had a closer look at how apache forks. Since we decided to not use the openSuse 10.3/Plesk option Strato provided us, we formerly installed openSuse 11.1 as our OS of choice and rebuilt apache2 etc from scratch, not bothering too much about the configuration, that, by default, is not fit for a resource-poor system like a virtual server.</p>
<p>To add to that,<strong> Apache2-prefork 2.2.10</strong> onwards seems to have a minor <strong>memory leak</strong>, causing it to use more and more memory the longer it runs (or at least that seems to be the case with our configuration). So what we did was going into the apache2 server config (in our case under /etc/apache2/server-tuning.conf) and changed<br />
<code><br />
StartServers         5<br />
MinSpareServers      5<br />
MaxSpareServers     15<br />
ServerLimit        150<br />
MaxClients         150<br />
MaxRequestsPerChild  10000<br />
</code><br />
to<br />
<code><br />
StartServers         3<br />
MinSpareServers      3<br />
MaxSpareServers     15<br />
ServerLimit        150<br />
MaxClients         150<br />
MaxRequestsPerChild  10</code></p>
<p>Et voila, it works! You might want to adjust those settings to your own requirements, but especially MaxRequestsPerChild should yield a much lower value than 10000 since that&#8217;s the number after how many requests apache will kill a fork and hence, prevent it from using too much memory.</p>
<p>I hope this was any help to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2009/09/08/apache2-prefork-memory-leak-on-virtual-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>X marks the spot&#8230;</title>
		<link>http://burgiblog.com/2009/09/06/x-marks-the-spot/</link>
		<comments>http://burgiblog.com/2009/09/06/x-marks-the-spot/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 22:00:44 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Random thoughts]]></category>
		<category><![CDATA[Burgi]]></category>
		<category><![CDATA[Hardcore]]></category>
		<category><![CDATA[HxC]]></category>
		<category><![CDATA[Lifestyle]]></category>
		<category><![CDATA[Punk]]></category>
		<category><![CDATA[Straight Edge]]></category>
		<category><![CDATA[SxE]]></category>

		<guid isPermaLink="false">http://burgiblog.wordpress.com/?p=159</guid>
		<description><![CDATA[Lately, I haven&#8217;t been too happy with how things went. That is not only due to me having to give up the walk to Portugal after just about a week (which was a pretty big defeat for myself), the way things went with some people this summer and some aims I didn&#8217;t achieve. To add <a href='http://burgiblog.com/2009/09/06/x-marks-the-spot/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Lately, I haven&#8217;t been too happy with how things went. That is not only due to me having to give up the walk to Portugal after just about a week (which was a pretty big defeat for myself), the way things went with some people this summer and some aims I didn&#8217;t achieve.</p>
<p>To add to that, I came across some people and bands that really impressed me. Why did they impress me? Because they seemed to know exactly what they were doing and what they were fighting for. They all had one thing in common, one thing that I only smiled at in the past: they were <a href="http://en.wikipedia.org/wiki/Straight_edge">Straight Edge</a>. Now some of you might have never heard this before or might not know what the hack that means.</p>
<p>Straight Edge mainly implies one thing: Live your life drug-free. No more tobacco, no more alcohol, no more drugs.<br />
In the 90s vegetarianism/veganism was also added to the lifestyle and many people associate that with Straight Edge at first, though it&#8217;s not necessarily part of it. It can also imply standing for animal rights, giving up promiscuity, and, coming from the hardcore punk movement, a certain political attitude.</p>
<p>I&#8217;m gonna give it a try. While the moderate way might be the right thing for many people, I have always been a bit more radical. I have found that doing things by halves just doesn&#8217;t work for me. Even though Straight Edge is often called a lifetime commitment, I&#8217;m gonna give it a try till christmas for now and try if it&#8217;s the right thing for me. Hope I&#8217;ll get some support by my friends &amp; family. I&#8217;m pretty sure I can do it. Updates on this to follow!</p>
<p>X marks the spot&#8230; two X&#8217;s mark Straight Edge&#8230;<br />
So long, xBurgix <img src='http://burgiblog.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img src="http://upload.wikimedia.org/wikipedia/de/3/33/Gather-stillarbeit.de-klein.jpg" alt="straight edge singer" /></p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2009/09/06/x-marks-the-spot/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rationalism vs. Nationalism</title>
		<link>http://burgiblog.com/2009/08/04/rationalism-vs-nationalism/</link>
		<comments>http://burgiblog.com/2009/08/04/rationalism-vs-nationalism/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 21:00:00 +0000</pubDate>
		<dc:creator>Burgi</dc:creator>
				<category><![CDATA[Random thoughts]]></category>
		<category><![CDATA[Nation]]></category>
		<category><![CDATA[Nationalism]]></category>
		<category><![CDATA[Rationalism]]></category>

		<guid isPermaLink="false">http://blogs.myspace.com/index.cfm?fuseaction=blog&#038;friendId=11116526</guid>
		<description><![CDATA[Just a quick thought. The subject might sound a little confusing to you since the two things dont necessarily have anything to do with each other. Anyway, let me explain to you. From time to time, I&#8217;m coming across people that claim to be proud of their country. I am wondering why this is.I have <a href='http://burgiblog.com/2009/08/04/rationalism-vs-nationalism/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Just a quick thought.</p>
<p>The subject might sound a little confusing to you since the two things dont necessarily have anything to do with each other. Anyway, let me explain to you.</p>
<p>From time to time, I&#8217;m coming across people that claim to be proud of their country. I am wondering why this is.<br />I have nothing against pride per se. But I tend to be proud of my own achievements rather than that of others. You might call me overly rational and non-emotional, but I certainly can&#8217;t agree. I am an emotional person, but only when it comes to real persons, and certainly not when it comes to such huge anonymous subjects like a country.</p>
<p>Please don&#8217;t get me wrong, I am absolutely not trying to say that community is not important. Quite the opposite! But again, this community doesn&#8217;t necessarily have anything to do with the country we live it. It can consist of two people, a neighbourhood, a region, a football club, or whatever. Countries are just artificial subjects with strict borders that often don&#8217;t excist in reality.</p>
<p>Nationalism is just the forerunner of such unfavourable things like fascism. Never forget where you come from, don&#8217;t neglect your culture and your brothers, just drop the thought of being proud of your country.</p>
]]></content:encoded>
			<wfw:commentRss>http://burgiblog.com/2009/08/04/rationalism-vs-nationalism/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

