Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://www.strangebuzz.com/feed/rss2

  1. <?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.strangebuzz.com/feed/rss2/xslt" ?><rss version="2.0"
  2.  xmlns:dc="http://purl.org/dc/elements/1.1/"
  3.  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4.  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  5.  xmlns:atom="http://www.w3.org/2005/Atom">
  6. <channel>
  7.  <title>Strangebuzz...?</title>
  8.  <link>http://www.strangebuzz.com/</link>
  9.  <atom:link href="http://www.strangebuzz.com/feed/rss2" rel="self" type="application/rss+xml"/>
  10.  <description>Technical blog of COil: Symfony, PHP, PEAR &amp; webdev</description>
  11.  <language>en</language>
  12.  <pubDate>Thu, 27 Apr 2017 13:01:37 +0200</pubDate>
  13.  <copyright>Strangebuzz 2007-2017</copyright>
  14.  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  15.  <generator>Dotclear</generator>
  16.  
  17.    
  18.  <item>
  19.    <title>Symfony 3.2 request class mini-cheatsheet</title>
  20.    <link>http://www.strangebuzz.com/post/2017/02/28/Symfony-3.2-request-class-mini-cheatsheet</link>
  21.    <guid isPermaLink="false">urn:md5:cd5bac3ad9914354e0bdc82cb8efa205</guid>
  22.    <pubDate>Tue, 28 Feb 2017 10:51:00 +0100</pubDate>
  23.    <dc:creator>COil</dc:creator>
  24.        <category>symfony</category>
  25.        <category>cheatsheet</category><category>symfony</category><category>Symfony3</category>    
  26.    <description>    &lt;p&gt;Hi symfonians ! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;^^&quot; class=&quot;smiley&quot; /&gt;
  27. &lt;br /&gt;
  28. &lt;br /&gt;
  29. Once again... such a long time since my last post! (4 years! Yikes!) This is mainly because I have a lot to do with the Symfony projects I actually develop/maintain as a contractor. (3 million users/month). This post is an update of &lt;a href=&quot;http://www.strangebuzz.com/post/2012/03/01/%5BSymfony2%5D-Request-class-mini-cheatsheet&quot; hreflang=&quot;en&quot; title=&quot;Symfony2, request class mini-cheatsheet&quot;&gt;a previous one related to Symfony2&lt;/a&gt;. The request class is one of most frequently used in a Symfony project as it is tied (and injected) with controllers.
  30. &lt;br /&gt;
  31. &lt;br /&gt;
  32. Considering the following URL:
  33. &lt;br /&gt;
  34. &lt;br /&gt;&lt;/p&gt;
  35. &lt;pre&gt;
  36. http://dev.com/app_dev.php/my-route?bar=1&amp;amp;foo=bar
  37. &lt;/pre&gt;
  38.  
  39. &lt;p&gt;&lt;br /&gt;
  40. Here are the results of the different main public methods of the &lt;a href=&quot;https://github.com/symfony/http-foundation/blob/master/Request.php&quot; hreflang=&quot;en&quot; title=&quot;The http-foundation request Symfony class&quot;&gt;Symfony\Component\HttpFoundation\Request&lt;/a&gt; class:
  41. &lt;br /&gt;
  42. &lt;br /&gt;&lt;/p&gt;
  43.    &lt;script src=&quot;https://gist.github.com/COil/4b6c1b2513e89996f7511b2789a1c9c6.js&quot;&gt;&lt;/script&gt;
  44.  
  45.  
  46. &lt;p&gt;Will produce the following output:
  47. &lt;br /&gt;
  48. &lt;br /&gt;&lt;/p&gt;
  49.    &lt;script src=&quot;https://gist.github.com/COil/7b326fc9a7e720dc8eba63940653748c.js&quot;&gt;&lt;/script&gt;
  50.  
  51.  
  52. &lt;p&gt;&lt;br /&gt;
  53. See you. COil &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  54. &lt;br /&gt;
  55. &lt;br /&gt;
  56. &lt;strong&gt;PS&lt;/strong&gt;: Note that the fragment (#fragment) part of the URL can't be retrieved server side. But it can be added &lt;a href=&quot;http://symfony.com/blog/new-in-symfony-3-2-routing-improvements#added-support-for-url-fragments&quot; hreflang=&quot;en&quot; title=&quot; New in Symfony 3.2, routing Improvements, added support for URL fragments&quot;&gt;when generating URLs via the routing service&lt;/a&gt;.&lt;a href=&quot;http://stackoverflow.com/questions/2317508/get-fragment-value-after-hash-from-a-url-in-php&quot; hreflang=&quot;en&quot; title=&quot;Get fragment (value after hash &amp;#039;#&amp;#039;) from a URL in php&quot;&gt;&lt;/a&gt;
  57. &lt;br /&gt;
  58. &lt;br /&gt;&lt;/p&gt;</description>
  59.    
  60.    
  61.    
  62.      </item>
  63.    
  64.  <item>
  65.    <title>Twig C extension benchmark</title>
  66.    <link>http://www.strangebuzz.com/post/2013/02/21/Twig-C-extension-benchmark</link>
  67.    <guid isPermaLink="false">urn:md5:1e84839d49ecde41093d3f9fea8e56a6</guid>
  68.    <pubDate>Thu, 21 Feb 2013 05:55:00 +0100</pubDate>
  69.    <dc:creator>COil</dc:creator>
  70.        <category>symfony</category>
  71.        <category>benchmark</category><category>performance</category><category>php</category><category>symfony</category><category>Symfony2</category><category>template</category><category>Twig</category>    
  72.    <description>    &lt;p&gt;Hi Symfonians,
  73. &lt;br /&gt;
  74. &lt;br /&gt;
  75. Long time since my last post&amp;nbsp;! But it's mainly because I actually have a lot of work with Symfony2 projects. One of my current task is to optimize the performances of a Symfony2.0.x project. I was curious to test the Twig C extension to check if there was a real improvement before using it in our production environment. Here we go:
  76. &lt;br /&gt;
  77. &lt;br /&gt;
  78. I will not describe the installation as it is very easy, just follow the &lt;a href=&quot;http://twig.sensiolabs.org/doc/installation.html#installing-the-c-extension&quot; hreflang=&quot;en&quot; title=&quot;Twig C extension installation documentation&quot;&gt;official documentation&lt;/a&gt;. When the extension is correctly installed you have a new Twig entry in your &lt;strong&gt;phpinfo()&lt;/strong&gt;:
  79. &lt;br /&gt;
  80. &lt;br /&gt;&lt;/p&gt;
  81. &lt;div align=&quot;center&quot;&gt;
  82.    &lt;img src=&quot;http://gallery.coilblog.com/var/albums/Strangebuzz/twig-php-info.png?m=1361452559&quot; /&gt;
  83. &lt;/div&gt;
  84.  
  85.  
  86. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  87.  
  88. &lt;h3&gt;The benchmark&lt;/h3&gt;
  89.  
  90. &lt;p&gt;&lt;br /&gt;
  91. To test the extension, I choose the most complex page of the site (complex at the Twig level):
  92. &lt;br /&gt;&lt;/p&gt;
  93. &lt;ul&gt;
  94. &lt;li&gt;Renders a tree of about 500 checkboxes&lt;/li&gt;
  95. &lt;li&gt;Recursive include calls are made inside the templates&lt;/li&gt;
  96. &lt;li&gt;Widget rendering does not use the Symfony2 form helpers&lt;/li&gt;
  97. &lt;/ul&gt;
  98. &lt;p&gt;&lt;br /&gt;
  99. The main template:&lt;/p&gt;
  100. &lt;script src=&quot;https://gist.github.com/COil/5004469.js&quot;&gt;&lt;/script&gt;
  101.  
  102.  
  103. &lt;p&gt;(Called 6 times with different data)
  104. &lt;br /&gt;
  105. &lt;br /&gt;
  106. The recursive Twig template &lt;strong&gt;_group_tree.html.twig&lt;/strong&gt;:
  107. &lt;br /&gt;&lt;/p&gt;
  108. &lt;script src=&quot;https://gist.github.com/COil/5004477.js&quot;&gt;&lt;/script&gt;
  109.  
  110.  
  111. &lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: Note here that we didn't used here a native Symfony2 form, because the rendering (bind + renderering) was taking about 5 seconds...
  112. &lt;br /&gt;
  113. &lt;br /&gt;&lt;/p&gt;
  114.  
  115. &lt;h4&gt;Test conditions:&lt;/h4&gt;
  116. &lt;ul&gt;
  117. &lt;li&gt;Symfony 2.0.22, of course the production environment is used for the test.&lt;/li&gt;
  118. &lt;li&gt;PHP 5.3.2-1ubuntu4.18 with Suhosin-Patch (cli) (built: Sep 12 2012 19:12:47)&lt;/li&gt;
  119. &lt;li&gt;php app/check.php, no warning or error, APC is enabled with an APC autoloader.&lt;/li&gt;
  120. &lt;/ul&gt;
  121. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  122.  
  123. &lt;h4&gt;Results without the extension:&lt;/h4&gt;
  124. &lt;ul&gt;
  125. &lt;li&gt;1000 iterations&lt;/li&gt;
  126. &lt;li&gt;Apache was restarted and Symfony2 cache was cleared between each test&lt;/li&gt;
  127. &lt;/ul&gt;
  128. &lt;p&gt;&lt;em&gt;The following results are the second &lt;strong&gt;run&lt;/strong&gt; because the 1st run has to rebuild the Symfony cache.&lt;/em&gt;
  129. &lt;br /&gt;
  130. &lt;br /&gt;&lt;/p&gt;
  131. &lt;pre&gt;
  132. [10:39:54] [email protected]:~/Webdev$ ab -n 1000 http://dev.project.com/search
  133. This is ApacheBench, Version 2.3 &amp;lt;$Revision: 655654 $&amp;gt;
  134. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  135. Licensed to The Apache Software Foundation, http://www.apache.org/
  136.  
  137. Benchmarking dev.project.com (be patient)
  138. Completed 100 requests
  139. Completed 200 requests
  140. Completed 300 requests
  141. Completed 400 requests
  142. Completed 500 requests
  143. Completed 600 requests
  144. Completed 700 requests
  145. Completed 800 requests
  146. Completed 900 requests
  147. Completed 1000 requests
  148. Finished 1000 requests
  149.  
  150. Server Software:        Apache/2.2.14
  151. Server Hostname:        dev.project.com
  152. Server Port:            80
  153.  
  154. Document Path:          /search
  155. Document Length:        197192 bytes
  156.  
  157. Concurrency Level:      1
  158. Time taken for tests:   99.232 seconds
  159. Complete requests:      1000
  160. Failed requests:        0
  161. Write errors:           0
  162. Total transferred:      197742000 bytes
  163. HTML transferred:       197192000 bytes
  164. Requests per second:    10.08 [#/sec] (mean)
  165. Time per request:       99.232 [ms] (mean)
  166. Time per request:       99.232 [ms] (mean, across all concurrent requests)
  167. Transfer rate:          1946.03 [Kbytes/sec] received
  168.  
  169. Connection Times (ms)
  170.      min  mean[+/-sd] median   max
  171. Connect:        0    0   0.0      0       0
  172. Processing:    95   99   4.4     98     190
  173. Waiting:       92   96   4.2     95     187
  174. Total:         95   99   4.4     98     190
  175.  
  176. Percentage of the requests served within a certain time (ms)
  177.  50%     98
  178.  66%    101
  179.  75%    102
  180.  80%    102
  181.  90%    103
  182.  95%    104
  183.  98%    108
  184.  99%    110
  185. 100%    190 (longest request)
  186. &lt;/pre&gt;
  187.  
  188. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  189.  
  190. &lt;h4&gt;Results with the extension enabled:&lt;/h4&gt;
  191.  
  192. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  193. &lt;pre&gt;
  194. [10:36:34] [email protected]:~/Webdev$ ab -n 1000 http://dev.project.com/search
  195. This is ApacheBench, Version 2.3 &amp;lt;$Revision: 655654 $&amp;gt;
  196. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  197. Licensed to The Apache Software Foundation, http://www.apache.org/
  198.  
  199. Benchmarking dev.project.com (be patient)
  200. Completed 100 requests
  201. Completed 200 requests
  202. Completed 300 requests
  203. Completed 400 requests
  204. Completed 500 requests
  205. Completed 600 requests
  206. Completed 700 requests
  207. Completed 800 requests
  208. Completed 900 requests
  209. Completed 1000 requests
  210. Finished 1000 requests
  211.  
  212. Server Software:        Apache/2.2.14
  213. Server Hostname:        dev.project.com
  214. Server Port:            80
  215.  
  216. Document Path:          /search
  217. Document Length:        197192 bytes
  218.  
  219. Concurrency Level:      1
  220. Time taken for tests:   84.887 seconds
  221. Complete requests:      1000
  222. Failed requests:        0
  223. Write errors:           0
  224. Total transferred:      197742000 bytes
  225. HTML transferred:       197192000 bytes
  226. Requests per second:    11.78 [#/sec] (mean)
  227. Time per request:       84.887 [ms] (mean)
  228. Time per request:       84.887 [ms] (mean, across all concurrent requests)
  229. Transfer rate:          2274.87 [Kbytes/sec] received
  230.  
  231. Connection Times (ms)
  232.      min  mean[+/-sd] median   max
  233. Connect:        0    0   0.0      0       0
  234. Processing:    81   85   2.9     84     127
  235. Waiting:       78   82   2.7     81     124
  236. Total:         81   85   2.9     84     127
  237.  
  238. Percentage of the requests served within a certain time (ms)
  239.  50%     84
  240.  66%     86
  241.  75%     87
  242.  80%     87
  243.  90%     88
  244.  95%     89
  245.  98%     91
  246.  99%     94
  247. 100%    127 (longest request)
  248. &lt;/pre&gt;
  249.  
  250. &lt;p&gt;&lt;br /&gt;
  251. (I have run the tests several times to check that the results are reliable)
  252. &lt;br /&gt;
  253. &lt;br /&gt;&lt;/p&gt;
  254.  
  255. &lt;h3&gt;Conclusion&lt;/h3&gt;
  256.  
  257. &lt;p&gt;&lt;br /&gt;
  258. As you can see, it is quiet interesting as the global gain is about &lt;strong&gt;14,5%&lt;/strong&gt;.
  259. I have tested on several smaller templates but the gain was insignificant and less than &lt;strong&gt;1%&lt;/strong&gt;. (which seems logical)
  260. &lt;br /&gt;
  261. &lt;br /&gt;
  262. So the extension can really be helpful on complex templates with a lot of parameters, the more complex the Twig templates are the more gain you will have. (up to 15%)
  263. &lt;br /&gt;
  264. &lt;br /&gt;
  265. See you. COil &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  266. &lt;br /&gt;
  267. &lt;br /&gt;
  268. &lt;br /&gt;
  269. About the extension:
  270. &lt;br /&gt;&lt;/p&gt;
  271. &lt;ul&gt;
  272. &lt;li&gt;&lt;a href=&quot;http://derickrethans.nl/twig-extension.html&quot;&gt;http://derickrethans.nl/twig-extension.html&lt;/a&gt;&lt;/li&gt;
  273. &lt;li&gt;&lt;a href=&quot;http://twig.sensiolabs.org/doc/installation.html#installing-the-c-extension&quot;&gt;http://twig.sensiolabs.org/doc/installation.html#installing-the-c-extension&lt;/a&gt;&lt;/li&gt;
  274. &lt;/ul&gt;
  275. &lt;p&gt;&lt;br /&gt;
  276. For other Symfony2 performance tricks check out the following resources:
  277. &lt;br /&gt;&lt;/p&gt;
  278. &lt;ul&gt;
  279. &lt;li&gt;&lt;a href=&quot;http://slides.seld.be/?file=2011-10-20+High+Performance+Websites+with+Symfony2.html&quot;&gt;http://slides.seld.be/?file=2011-10-20+High+Performance+Websites+with+Symfony2.html&lt;/a&gt;&lt;/li&gt;
  280. &lt;/ul&gt;
  281. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
  282.    
  283.    
  284.    
  285.      </item>
  286.    
  287.  <item>
  288.    <title>[Snippet] Bash script to generate Symfony2 doctrine files</title>
  289.    <link>http://www.strangebuzz.com/post/2012/05/22/%5BSnippet%5D-Bash-script-to-generate-Symfony2-doctrine-files</link>
  290.    <guid isPermaLink="false">urn:md5:a552a61e78d7ea2b646b2faa4cabd12f</guid>
  291.    <pubDate>Fri, 25 May 2012 13:07:00 +0200</pubDate>
  292.    <dc:creator>COil</dc:creator>
  293.        <category>symfony</category>
  294.        <category>bash</category><category>snippets</category><category>symfony</category><category>Symfony2</category><category>unix</category>    
  295.    <description>    &lt;p&gt;Hi Symfonians&amp;nbsp;! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  296. &lt;br /&gt;
  297. &lt;br /&gt;
  298. Here is a very basic bash script to help generate files for a given entity of your database, useful when you don't want to reverse engineer all the tables: (replace &lt;code&gt;MyBundle&lt;/code&gt; and &lt;code&gt;MyNamespace&lt;/code&gt; by your own values)
  299. &lt;br /&gt;
  300. &lt;br /&gt;
  301. &lt;code&gt;./build_entities.sh Product&lt;/code&gt;
  302. &lt;br /&gt;
  303. &lt;br /&gt;&lt;/p&gt;
  304. &lt;script src=&quot;https://gist.github.com/2730653.js?file=gistfile1.sh&quot;&gt;&lt;/script&gt;
  305.  
  306.  
  307. &lt;p&gt;&lt;br /&gt;
  308. &lt;strong&gt;PS&lt;/strong&gt;: Note that the filter allow to generate more that one entity. (ex: &quot;Product&quot;, &quot;ProductFoo&quot;...)
  309. &lt;br /&gt;&lt;/p&gt;</description>
  310.    
  311.    
  312.    
  313.      </item>
  314.    
  315.  <item>
  316.    <title>[Symfony2] Request class mini-cheatsheet</title>
  317.    <link>http://www.strangebuzz.com/post/2012/03/01/%5BSymfony2%5D-Request-class-mini-cheatsheet</link>
  318.    <guid isPermaLink="false">urn:md5:19890e644681648289f6bafad541b3ac</guid>
  319.    <pubDate>Sat, 03 Mar 2012 22:03:00 +0100</pubDate>
  320.    <dc:creator>COil</dc:creator>
  321.        <category>symfony</category>
  322.        <category>cheatsheet</category><category>snippets</category><category>symfony</category><category>Symfony2</category>    
  323.    <description>    &lt;p&gt;Hi symfonians ! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;^^&quot; class=&quot;smiley&quot; /&gt;
  324. &lt;br /&gt;
  325. &lt;br /&gt;
  326. Considering the following URL:
  327. &lt;br /&gt;
  328. &lt;br /&gt;&lt;/p&gt;
  329. &lt;pre&gt;
  330. http://dev.col.com/app_dev.php/my-route?bar=1&amp;amp;foo=bar
  331. &lt;/pre&gt;
  332.  
  333. &lt;p&gt;&lt;br /&gt;
  334. Here are the results of the different main public methods of the &lt;code&gt;Symfony\Component\HttpFoundation\Request&lt;/code&gt; class about the URL and server analysis: (calls are made inside a basic controller class)
  335. &lt;br /&gt;
  336. &lt;br /&gt;&lt;/p&gt;
  337. &lt;pre&gt;
  338. $r = $this-&amp;gt;getRequest();
  339. $r-&amp;gt;getClientIp() 127.0.0.1
  340. $r-&amp;gt;getScriptName() /app_dev.php
  341. $r-&amp;gt;getPathInfo() /my-route
  342. $r-&amp;gt;getBasePath() ''
  343. $r-&amp;gt;getBaseUrl() /app_dev.php
  344. $r-&amp;gt;getScheme() http
  345. $r-&amp;gt;getPort() 80
  346. $r-&amp;gt;getHttpHost() dev.col.com
  347. $r-&amp;gt;getRequestUri() /app_dev.php/my-route?bar=1&amp;amp;foo=bar
  348. $r-&amp;gt;getUri() http://dev.col.com/app_dev.php/my-route?bar=1&amp;amp;foo=bar
  349. $r-&amp;gt;getUriForPath(&amp;quot;/other-path&amp;quot;) http://dev.col.com/app_dev.php/other-path
  350. $r-&amp;gt;getQueryString() bar=1&amp;amp;foo=bar
  351. $r-&amp;gt;isSecure() false
  352. $r-&amp;gt;getHost() dev.col.com
  353. $r-&amp;gt;getMethod() GET
  354. $r-&amp;gt;isXmlHttpRequest() false
  355. &lt;/pre&gt;
  356.  
  357. &lt;p&gt;&lt;br /&gt;
  358. I have submitted a small &lt;a href=&quot;https://github.com/symfony/symfony/pull/4312&quot;&gt;PR&lt;/a&gt; to the git main Symfony2 repository to have a new function that I need in one of my sf2 projects. If your are interested in this PR, feel free to add a comment &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; :
  359. &lt;br /&gt;
  360. &lt;br /&gt;&lt;/p&gt;
  361. &lt;pre&gt;
  362. $r-&amp;gt;getBaseServerUrl() http://dev.col.com
  363. &lt;/pre&gt;
  364.  
  365. &lt;p&gt;&lt;br /&gt;
  366. It was to avoid the following Twig code:
  367. &lt;br /&gt;
  368. &lt;br /&gt;&lt;/p&gt;
  369. &lt;script src=&quot;https://gist.github.com/1779871.js?file=gistfile1.twig&quot;&gt;&lt;/script&gt;
  370.  
  371.  
  372. &lt;p&gt;&lt;br /&gt;
  373. See you. COil &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  374. &lt;br /&gt;
  375. &lt;br /&gt;
  376. &lt;strong&gt;PS&lt;/strong&gt;: Note that the &lt;strong&gt;&lt;q&gt;getBasePath()&lt;/q&gt;&lt;/strong&gt; function returns an empty string as the root of the virtual host is set to the &lt;q&gt;/web&lt;/q&gt; folder of the application, for an URL like &lt;q&gt;http://dev.col.com/web/app_dev.php/my-route?bar=1&amp;amp;foo=bar&lt;/q&gt; it would return &lt;q&gt;/web&lt;/q&gt;.
  377. &lt;br /&gt;
  378. &lt;br /&gt;
  379. &lt;strong&gt;PS2&lt;/strong&gt;: If you want real Symfony cheatsheet, check the blog of &lt;a href=&quot;http://andreiabohner.wordpress.com/tag/cheat-sheet/&quot;&gt;Andréia Bohner&lt;/a&gt;.
  380. &lt;br /&gt;
  381. &lt;br /&gt;
  382. &lt;strong&gt;PS3&lt;/strong&gt;:  &lt;a href=&quot;http://sf2.memosdedev.com/recuperer-la-base-url-du-site-dans-twig.html#comment-57&quot;&gt;My PR was useful !! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
  383.    
  384.    
  385.    
  386.      </item>
  387.    
  388.  <item>
  389.    <title>Simple bash script to update Symfony2</title>
  390.    <link>http://www.strangebuzz.com/post/2012/02/09/Simple-bash-script-to-update-Symfony2</link>
  391.    <guid isPermaLink="false">urn:md5:99dd2ee51dccf55156c149fa3765142d</guid>
  392.    <pubDate>Thu, 09 Feb 2012 18:16:00 +0100</pubDate>
  393.    <dc:creator>COil</dc:creator>
  394.        <category>symfony</category>
  395.        <category>bash</category><category>snippets</category><category>symfony</category><category>Symfony2</category><category>unix</category>    
  396.    <description>    &lt;p&gt;As you noticed there are &lt;a href=&quot;http://symfony.com/blog/category/releases&quot;&gt;frequent maintenance releases of Symfony2&lt;/a&gt;, the &lt;a href=&quot;http://symfony.com/blog/symfony-2-0-10-released&quot;&gt;2.0.10 version is already out&lt;/a&gt;. To avoid doings thing manually I use this simple bash script to make the update: (It works with a Symfony2 standard edition). To use it, just launch the script at the root of your project: (be careful as it will delete your vendor directory)
  397. &lt;br /&gt;&lt;/p&gt;
  398.  
  399. &lt;blockquote&gt;&lt;p&gt;./update_symfony 2.0.10&lt;/p&gt;&lt;/blockquote&gt;
  400.  
  401. &lt;h5&gt;The bash script:&lt;/h5&gt;
  402. &lt;script src=&quot;https://gist.github.com/1780897.js?file=gistfile1.sh&quot;&gt;&lt;/script&gt;
  403.  
  404.  
  405. &lt;p&gt;&lt;br /&gt;
  406. See you. &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  407. &lt;br /&gt;
  408. &lt;br /&gt;
  409. Other related posts;&lt;/p&gt;
  410. &lt;ul&gt;
  411. &lt;li&gt;&lt;a href=&quot;http://symfony.com/doc/current/cookbook/workflow/new_project_git.html#managing-vendor-libraries-with-bin-vendors-and-deps&quot; title=&quot;http://symfony.com/doc/current/cookbook/workflow/new_project_git.html#managing-vendor-libraries-with-bin-vendors-and-deps&quot;&gt;http://symfony.com/doc/current/cook...&lt;/a&gt;&lt;/li&gt;
  412. &lt;li&gt;&lt;a href=&quot;http://geekos.fr/11/2011/mettre-a-jour-symfony-2/&quot; title=&quot;http://geekos.fr/11/2011/mettre-a-jour-symfony-2/&quot;&gt;http://geekos.fr/11/2011/mettre-a-j...&lt;/a&gt;&lt;/li&gt;
  413. &lt;li&gt;&lt;a href=&quot;http://www.ajado.com/blog/how-to-upgrade-from-one-symfony2-distribution-to-another/&quot; title=&quot;http://www.ajado.com/blog/how-to-upgrade-from-one-symfony2-distribution-to-another/&quot;&gt;http://www.ajado.com/blog/how-to-up...&lt;/a&gt;&lt;/li&gt;
  414. &lt;/ul&gt;</description>
  415.    
  416.    
  417.    
  418.      </item>
  419.    
  420.  <item>
  421.    <title>Load fixtures with Symfony2 and YAML files</title>
  422.    <link>http://www.strangebuzz.com/post/2012/01/28/Load-fixtures-with-Symfony2</link>
  423.    <guid isPermaLink="false">urn:md5:8ab8d6813d11d5e44cb25eb56841d49a</guid>
  424.    <pubDate>Sat, 28 Jan 2012 14:06:00 +0100</pubDate>
  425.    <dc:creator>COil</dc:creator>
  426.        <category>symfony</category>
  427.        <category>doctrine2</category><category>fixtures</category><category>symfony</category><category>Symfony2</category><category>tutorial</category>    
  428.    <description>    &lt;p&gt;Hi Symfonians&amp;nbsp;! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  429. &lt;br /&gt;
  430. &lt;br /&gt;
  431. I am actually spending a lot of time on testing Symfony2. When building an application, one of the first thing you will have to do is to insert initial data, also called fixtures, so you can use and test your application. There is a &lt;a href=&quot;http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html&quot;&gt;documentation&lt;/a&gt; on the Symfony website about this subject, it uses the &lt;a href=&quot;https://github.com/doctrine/DoctrineFixturesBundle&quot;&gt;DoctrineFixturesBundle&lt;/a&gt;.
  432. &lt;br /&gt;
  433. &lt;br /&gt;
  434. It works very well, but I wanted to use YAML files &quot;a la symfony1&quot;. So I ended up with this simple solution:
  435. &lt;br /&gt;
  436. &lt;br /&gt;&lt;/p&gt;
  437.  
  438. &lt;h4&gt;The base Loader class:&lt;/h4&gt;
  439.  
  440. &lt;p&gt;First, I create a base Loader class that others entities loaders will extend:
  441. &lt;br /&gt;
  442. &lt;br /&gt;&lt;/p&gt;
  443. &lt;script src=&quot;https://gist.github.com/1694230.js?file=gistfile1.aw&quot;&gt;&lt;/script&gt;
  444.  
  445.  
  446. &lt;p&gt;&lt;br /&gt;
  447. The &lt;strong&gt;getModelFixtures()&lt;/strong&gt; function will load the YAML file corresponding to the current entity, the &lt;strong&gt;getModelFile()&lt;/strong&gt; function will have to be implemented by sub-loaders. The class implements the &lt;strong&gt;ContainerAwareInterface&lt;/strong&gt; so we can access the DIC in the loaders.
  448. &lt;br /&gt;
  449. &lt;br /&gt;&lt;/p&gt;
  450.  
  451. &lt;h4&gt;The &lt;strong&gt;Category&lt;/strong&gt; loader:&lt;/h4&gt;
  452.  
  453. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  454.  
  455. &lt;h5&gt;The YAML file:&lt;/h5&gt;
  456.  
  457. &lt;p&gt;Both jobs and categories YAML files are almost equal to &lt;a href=&quot;http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03&quot;&gt;the Jobeet1 tutorial&lt;/a&gt; ones.
  458. &lt;br /&gt;
  459. &lt;br /&gt;&lt;/p&gt;
  460. &lt;script src=&quot;https://gist.github.com/1694262.js?file=gistfile1.yml&quot;&gt;&lt;/script&gt;
  461.  
  462.  
  463. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  464.  
  465. &lt;h5&gt;The loader class:&lt;/h5&gt;
  466. &lt;script src=&quot;https://gist.github.com/1694282.js?file=gistfile1.aw&quot;&gt;&lt;/script&gt;
  467.  
  468.  
  469. &lt;p&gt;The &lt;strong&gt;getModelFixtures()&lt;/strong&gt; function retrieves the fixtures for the &lt;strong&gt;Category&lt;/strong&gt; entity and then you just have to iterate over the array. At each iteration we add a reference to the entity so it can be used in other loaders. (as a foreign key)
  470. &lt;br /&gt;
  471. &lt;br /&gt;&lt;/p&gt;
  472.  
  473. &lt;h4&gt;The &lt;strong&gt;Job&lt;/strong&gt; loader:&lt;/h4&gt;
  474.  
  475. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  476.  
  477. &lt;h5&gt;The YAML file:&lt;/h5&gt;
  478. &lt;script src=&quot;https://gist.github.com/1694298.js?file=gistfile1.txt&quot;&gt;&lt;/script&gt;
  479.  
  480.  
  481. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  482.  
  483. &lt;h5&gt;The loader class:&lt;/h5&gt;
  484. &lt;script src=&quot;https://gist.github.com/1694305.js?file=gistfile1.aw&quot;&gt;&lt;/script&gt;
  485.  
  486.  
  487. &lt;p&gt;&lt;br /&gt;
  488. Same here, but:&lt;/p&gt;
  489. &lt;ul&gt;
  490. &lt;li&gt;For each iteration we retrieve the proper category reference we already built in the &lt;strong&gt;Category&lt;/strong&gt; loader (line 30).&lt;/li&gt;
  491. &lt;li&gt;In Jobeet1 there was a loop directly in the YAML file in order to add lot of job rows, now we can do this loop in our loader: &lt;strong&gt;duplicateLastJob()&lt;/strong&gt;.&lt;/li&gt;
  492. &lt;li&gt;There is also a special case where we force a value for the &lt;strong&gt;expiresAt&lt;/strong&gt; date field that would be overridden by the &lt;strong&gt;Job&lt;/strong&gt; object life-cycle callbacks otherwise.&lt;/li&gt;
  493. &lt;/ul&gt;
  494. &lt;p&gt;I think this a good approach as you have the ease of writing YAML without loosing the possibility to handle complex or edge cases with PHP. You can find the code on &lt;a href=&quot;https://github.com/COil/Jobeet2Bundle/tree/master/DataFixtures&quot;&gt;github&lt;/a&gt;.
  495. &lt;br /&gt;
  496. &lt;br /&gt;
  497. See you&amp;nbsp;! COil &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  498. &lt;br /&gt;
  499. &lt;br /&gt;
  500. &lt;strong&gt;PS&lt;/strong&gt;: This tutorial was tested with Symfony Standard Edition 2.0.9.
  501. &lt;br /&gt;
  502. &lt;strong&gt;PS2&lt;/strong&gt;: If you have a blog post about fixtures, let me know so I can add it below.
  503. &lt;br /&gt;
  504. &lt;br /&gt;
  505. Other posts about fixtures:&lt;/p&gt;
  506. &lt;ul&gt;
  507. &lt;li&gt;&lt;a href=&quot;http://www.dobervich.com/2011/03/15/symfony2-blog-application-tutorial-part-iv-displaying-data-using-doctrine2/&quot; title=&quot;http://www.dobervich.com/2011/03/15/symfony2-blog-application-tutorial-part-iv-displaying-data-using-doctrine2/&quot;&gt;http://www.dobervich.com/2011/03/15...&lt;/a&gt; (EN)&lt;/li&gt;
  508. &lt;li&gt;&lt;a href=&quot;http://dotheweb.posterous.com/using-faker-to-populate-a-database-its-easier&quot; title=&quot;http://dotheweb.posterous.com/using-faker-to-populate-a-database-its-easier&quot;&gt;http://dotheweb.posterous.com/using...&lt;/a&gt; (EN)&lt;/li&gt;
  509. &lt;li&gt;&lt;a href=&quot;http://www.informathic.com/post/2010/12/12/Symfony2-Fixtures-Doctrine2&quot; title=&quot;http://www.informathic.com/post/2010/12/12/Symfony2-Fixtures-Doctrine2&quot;&gt;http://www.informathic.com/post/201...&lt;/a&gt; (FR)&lt;/li&gt;
  510. &lt;li&gt;&lt;a href=&quot;http://tcuvelier.developpez.com/tutoriels/php/symfony2/doctrine2/data-fixtures/&quot; title=&quot;http://tcuvelier.developpez.com/tutoriels/php/symfony2/doctrine2/data-fixtures/&quot;&gt;http://tcuvelier.developpez.com/tut...&lt;/a&gt; (FR)&lt;/li&gt;
  511. &lt;li&gt;&lt;a href=&quot;http://keiruaprod.fr/symblog-fr/docs/doctrine-2-et-les-articles.html&quot; title=&quot;http://keiruaprod.fr/symblog-fr/docs/doctrine-2-et-les-articles.html&quot;&gt;http://keiruaprod.fr/symblog-fr/doc...&lt;/a&gt; (FR)&lt;/li&gt;
  512. &lt;li&gt;&lt;a href=&quot;http://iabsis.com/FR/article/21-5/Creez-votre-set-de-donnees-initial-fixtures&quot; title=&quot;http://iabsis.com/FR/article/21-5/Creez-votre-set-de-donnees-initial-fixtures&quot;&gt;http://iabsis.com/FR/article/21-5/C...&lt;/a&gt; (FR)&lt;/li&gt;
  513. &lt;/ul&gt;</description>
  514.    
  515.    
  516.    
  517.      </item>
  518.    
  519.  <item>
  520.    <title>Extending the Symfony2 session</title>
  521.    <link>http://www.strangebuzz.com/post/2012/01/06/Extending-the-Symfony2-session</link>
  522.    <guid isPermaLink="false">urn:md5:3c433804b64995eaaa5a22d6b14a48ba</guid>
  523.    <pubDate>Fri, 06 Jan 2012 21:16:00 +0100</pubDate>
  524.    <dc:creator>COil</dc:creator>
  525.        <category>symfony</category>
  526.        <category>session</category><category>snippets</category><category>symfony</category><category>Symfony2</category>    
  527.    <description>    &lt;p&gt;Hi symfonians ! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  528. &lt;br /&gt;
  529. &lt;br /&gt;
  530. If you are used to symfony1, you probably noticed that you don't have a &lt;q&gt;myUser&lt;/q&gt; class to handle the user session. It's generally useful so you don't have to handle directly with session attributes and you can also have shortcuts. Well it's quiet easy to have such a class in Symfony2:
  531. &lt;br /&gt;
  532. Declare your own session class as the framework level in your &lt;code&gt;app/config.yml&lt;/code&gt; config file:
  533. &lt;br /&gt;
  534. &lt;br /&gt;&lt;/p&gt;
  535. &lt;script src=&quot;https://gist.github.com/1572300.js&quot;&gt; &lt;/script&gt;
  536.  
  537.  
  538. &lt;p&gt;&lt;br /&gt;
  539. And now create your own &lt;strong&gt;mySession&lt;/strong&gt; class which extends the default Symfony2 session class:
  540. &lt;br /&gt;
  541. &lt;br /&gt;&lt;/p&gt;
  542. &lt;script src=&quot;https://gist.github.com/1572339.js?file=gistfile1.aw&quot;&gt;&lt;/script&gt;
  543.  
  544.  
  545. &lt;p&gt;&lt;br /&gt;
  546. And your done. &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  547. &lt;br /&gt;
  548. &lt;br /&gt;
  549. PS: The class can be stored in another location, I'm not sure which is the best ?
  550. &lt;br /&gt;
  551. PS2: The service could also be loaded at the Bundle level.&lt;/p&gt;</description>
  552.    
  553.    
  554.    
  555.      </item>
  556.    
  557.  <item>
  558.    <title>The new Google applications Look and Feel is ugly ?</title>
  559.    <link>http://www.strangebuzz.com/post/2011/12/11/The-new-Google-applications-Look-and-Feel-is-ugly</link>
  560.    <guid isPermaLink="false">urn:md5:ebd85ae827b29663cf067f756b9c1b3f</guid>
  561.    <pubDate>Sun, 11 Dec 2011 21:14:00 +0100</pubDate>
  562.    <dc:creator>COil</dc:creator>
  563.        <category>General</category>
  564.        <category>google</category><category>look-and-feel</category><category>webdesign</category>    
  565.    <description>    &lt;p&gt;That's what I said when I discovered the new GMail look. I felt so uncomfortable with it that I switched back to the old interface. But now that the new interface is the default, I had to look why it looked so ugly, there must be a reason !! &lt;img src=&quot;/themes/blue-fashion/smilies/142.gif&quot; alt=&quot;:x&quot; class=&quot;smiley&quot; /&gt;
  566. &lt;br /&gt;
  567. &lt;br /&gt;
  568. Indeed, there was a good reason, the parameter &quot;Display density&quot; was set to &quot;Comfortable&quot; (&quot;Normal&quot; in French) which has the consequence to have far less emails displayed on the screen than before. I think this parameter did not exist in the past (Anyone can confirm ?), but the standard value for this parameter on the old interface was &quot;Compact&quot; (&quot;Elevé&quot; in French). When you are used to the &quot;Compact&quot; layout it's quiet hard to use the &quot;Comfortable&quot; one, it should be named &quot;Uncomfortable&quot;. &lt;img src=&quot;/themes/blue-fashion/smilies/104.gif&quot; alt=&quot;:p&quot; class=&quot;smiley&quot; /&gt; To conclude I would say that one have to search a little before making early conclusions. So, my apologies mister Google, your new look &amp;amp; feel is not ugly. &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  569. &lt;br /&gt;
  570. &lt;br /&gt;&lt;/p&gt;
  571. &lt;div style=&quot;text-align:center;&quot;&gt;
  572.  &lt;a href=&quot;http://www.google.fr&quot;&gt;&lt;img src=&quot;http://gallery.coilblog.com/var/resizes/Blog/gmail.jpg&quot; alt=&quot;Google mail&quot; title=&quot;Google mail&quot; /&gt;&lt;/a&gt;
  573. &lt;/div&gt;
  574.  
  575.  
  576. &lt;p&gt;&lt;br /&gt;
  577. PS: Up to now, the old interface is still available is the parameters.&lt;/p&gt;</description>
  578.    
  579.    
  580.    
  581.      </item>
  582.    
  583.  <item>
  584.    <title>symfony1 sfToolsPlugin 1-0-0 released</title>
  585.    <link>http://www.strangebuzz.com/post/2011/10/22/symfony1-sfToolsPlugin-1-0-0-released</link>
  586.    <guid isPermaLink="false">urn:md5:b4b1a977729fb57bfc979165f7c05893</guid>
  587.    <pubDate>Sat, 22 Oct 2011 02:34:00 +0200</pubDate>
  588.    <dc:creator>COil</dc:creator>
  589.        <category>symfony</category>
  590.        <category>debug</category><category>svn</category><category>symfony</category><category>tools</category>    
  591.    <description>    &lt;p&gt;Hi symfonians ! &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  592. &lt;br /&gt;
  593. &lt;br /&gt;
  594. Today I released a new plugin; the &lt;a href=&quot;http://www.symfony-project.org/plugins/sfToolsPlugin&quot;&gt;sfToolsPlugin&lt;/a&gt; , it's probably the smallest one I released as it only has one class and 3 main functions. In fact it contains a class I use to copy in every project I am working on. Sometimes with different names... Bored with this, even it's more a &lt;a href=&quot;http://snippets.symfony-project.org/snippet/258&quot;&gt;snippet&lt;/a&gt; than a plugin, I made the symfony1 plugin so I can call it the same way in every project I am working on and install it as a SVN external.
  595. &lt;br /&gt;
  596. &lt;br /&gt;
  597. As the name of this plugin is very generic, feel free to send me your &lt;a href=&quot;http://www.symfony-project.org/plugins/sfToolsPlugin/1_0_0?tab=plugin_contribute&quot;&gt;contribution requests&lt;/a&gt; for something you feel like it could be in it. &lt;img src=&quot;/themes/blue-fashion/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;
  598. &lt;br /&gt;&lt;/p&gt;
  599. &lt;ul&gt;
  600. &lt;li&gt;&lt;a href=&quot;http://www.symfony-project.org/plugins/sfToolsPlugin/i_use_it&quot;&gt;I like and use the sfToolsPlugin&lt;/a&gt; &lt;img src=&quot;/themes/blue-fashion/smilies/133.gif&quot; alt=&quot;:S&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
  601. &lt;/ul&gt;
  602. &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  603. &lt;div style=&quot;text-align:center;&quot;&gt;
  604.  &lt;img src=&quot;http://gallery.coilblog.com/var/resizes/Strangebuzz/swiss%20knife.jpg?m=1320503259&quot; alt=&quot;sfToolsPlugin&quot; /&gt;
  605. &lt;/div&gt;
  606. </description>
  607.    
  608.    
  609.    
  610.      </item>
  611.    
  612.  <item>
  613.    <title>Blog updated and ready to rock !</title>
  614.    <link>http://www.strangebuzz.com/post/2011/10/19/blog-updated-and-ready-to-rock-%21</link>
  615.    <guid isPermaLink="false">urn:md5:18c85dcf9a223584124c0ad34e949bb6</guid>
  616.    <pubDate>Wed, 19 Oct 2011 13:55:00 +0200</pubDate>
  617.    <dc:creator>COil</dc:creator>
  618.        <category>Ubuntu</category>
  619.        <category>dotclear</category><category>gallery</category><category>hosting</category><category>ovh</category><category>rps</category><category>ubuntu</category><category>unix</category><category>vm</category><category>vps</category>    
  620.    <description>    &lt;p&gt;Not related to symfony but I finally managed to migrate my dedicated server to a new one:
  621. &lt;br /&gt;&lt;/p&gt;
  622. &lt;ul&gt;
  623. &lt;li&gt;The server was switched from a &lt;a href=&quot;http://fr.wikipedia.org/wiki/Real_Private_Server&quot;&gt;RPS&lt;/a&gt; (Real Private Server) from &lt;a href=&quot;http://www.ovh.com&quot;&gt;OVH&lt;/a&gt; (which is no more sold) to a &lt;a href=&quot;http://www.ovh.com/fr/vps/&quot;&gt;VPS1&lt;/a&gt; (always from OVH)&lt;/li&gt;
  624. &lt;li&gt;I started with a fresh new &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu 10.04 LTS&lt;/a&gt; distribution instead of the old 8.04 (11.04 was not available when I installed it)&lt;/li&gt;
  625. &lt;li&gt;The blog was migrated form &lt;a href=&quot;http://www.dotclear.org&quot;&gt;Dotclear1&lt;/a&gt; to &lt;a href=&quot;http://fr.dotclear.org/documentation/2.0/admin/install&quot;&gt;Dotclear2&lt;/a&gt; (I also had to convert the theme to the new Dotclear2 format)&lt;/li&gt;
  626. &lt;li&gt;The photo gallery was migrated from &lt;a href=&quot;http://codex.gallery2.org&quot;&gt;gallery2&lt;/a&gt; to &lt;a href=&quot;http://codex.gallery2.org/Gallery3:About&quot;&gt;gallery3&lt;/a&gt;&lt;/li&gt;
  627. &lt;/ul&gt;
  628. &lt;p&gt;&lt;br /&gt;
  629. Always nice to start with a new full fresh server installation, because obviously as you gained experience, you can set-up things in a better way you did it 3 years ago. But sometimes you end with setting the same things as it just work well and do the job. &lt;img src=&quot;/themes/blue-fashion/smilies/rofl.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
  630. &lt;br /&gt;
  631. I am really happy with the VPS, it's really fast even it's the least powerful offer of OVH of this kind ! I have 50go which is 40go more than I actually need. It's also Symfony2 ready. &lt;img src=&quot;/themes/blue-fashion/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;
  632. &lt;br /&gt;
  633. &lt;br /&gt;&lt;/p&gt;
  634. &lt;div style=&quot;text-align:center;&quot;&gt;
  635.  &lt;img src=&quot;http://t2.gstatic.com/images?q=tbn:ANd9GcR-9KXuHHB784D6S7vwmsXzJ4fULXsbrXFWlNsjWJGoB-XMOwef7LAj45zW&quot; alt=&quot;Ubuntu&quot; /&gt;
  636. &lt;/div&gt;
  637. </description>
  638.    
  639.    
  640.    
  641.      </item>
  642.    
  643. </channel>
  644. </rss>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//www.strangebuzz.com/feed/rss2

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda