<?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>Autarchy of the Private Cave &#187; CMS</title> <atom:link href="https://bogdan.org.ua/categories/web/cms/feed" rel="self" type="application/rss+xml" /><link>https://bogdan.org.ua</link> <description>Tiny bits of bioinformatics, [web-]programming etc</description> <lastBuildDate>Wed, 28 Dec 2022 16:09:04 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>https://wordpress.org/?v=3.8.27</generator> <item><title>WordPress and Google Analytics external nofollow problem in comment links</title><link>https://bogdan.org.ua/2009/02/13/wordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html</link> <comments>https://bogdan.org.ua/2009/02/13/wordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html#comments</comments> <pubDate>Fri, 13 Feb 2009 19:41:55 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[how-to]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[comment]]></category> <category><![CDATA[fix]]></category> <category><![CDATA[link]]></category> <category><![CDATA[problem]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/?p=594</guid> <description><![CDATA[Since some WP release, the comment author&#8217;s link in comments is broken &#8211; it has &#8216; external nofollow&#8217; attached straight to the href attribute (which breaks the link). I assume that the problem is caused by Google Analytics, namely the &#8220;track outgoing clicks&#8221; feature (as recalled, might be inaccurate feature name). &#8220;Track outgoing links&#8221; adds [&#8230;]]]></description> <content:encoded><![CDATA[<p>Since some WP release, the comment author&#8217;s link in comments is broken &#8211; it has &#8216; external nofollow&#8217; attached straight to the href attribute (which breaks the link).</p><p>I assume that the problem is caused by Google Analytics, namely the &#8220;track outgoing clicks&#8221; feature (as recalled, might be inaccurate feature name). &#8220;Track outgoing links&#8221; adds some JavaScript code to all outgoing links, and that script has tick characters like this one &#8216; which, incidentally, are also used for delimiting the values of comment anchor tags.</p><p>To fix:<br
/> <span
id="more-594"></span></p><ol><li>locate file <strong>wp-includes/comment-template.php</strong></li><li>in that file, find the <strong>get_comment_author_link</strong> function (lines 140-150 in WP 2.7.1)</li><li>replace the line<div
id="ig-sh-1" class="syntax_hilite"><div
class="code"><ol
class="php" style="font-family:monospace;"><li
style="font-weight: normal; vertical-align:top;"><div
style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">$return = &quot;&lt;a href='$url' rel='external nofollow' class='url'&gt;$author&lt;/a&gt;&quot;;</div></li></ol></div></div><p>with</p><div
id="ig-sh-2" class="syntax_hilite"><div
class="code"><ol
class="php" style="font-family:monospace;"><li
style="font-weight: normal; vertical-align:top;"><div
style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">$return = '&lt;a href=&quot;'.$url.'&quot; rel=&quot;external nofollow&quot; class=&quot;url&quot;&gt;'.$author.'&lt;/a&gt;';</div></li></ol></div></div></li></ol><p>This helped me and might help you.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F02%2F13%2Fwordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html&amp;linkname=WordPress%20and%20Google%20Analytics%20external%20nofollow%20problem%20in%20comment%20links" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F02%2F13%2Fwordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html&amp;linkname=WordPress%20and%20Google%20Analytics%20external%20nofollow%20problem%20in%20comment%20links" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F02%2F13%2Fwordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html&amp;linkname=WordPress%20and%20Google%20Analytics%20external%20nofollow%20problem%20in%20comment%20links" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F02%2F13%2Fwordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html&amp;linkname=WordPress%20and%20Google%20Analytics%20external%20nofollow%20problem%20in%20comment%20links" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F02%2F13%2Fwordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html&amp;linkname=WordPress%20and%20Google%20Analytics%20external%20nofollow%20problem%20in%20comment%20links" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2009%2F02%2F13%2Fwordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html&#038;title=WordPress%20and%20Google%20Analytics%20external%20nofollow%20problem%20in%20comment%20links" data-a2a-url="https://bogdan.org.ua/2009/02/13/wordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html" data-a2a-title="WordPress and Google Analytics external nofollow problem in comment links"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2009/02/13/wordpress-and-google-analytics-external-nofollow-problem-in-comment-links.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>ExpressionEngine contact form (email module) spam vulnerability</title><link>https://bogdan.org.ua/2009/01/26/expressionengine-contact-form-email-module-spam-vulnerability.html</link> <comments>https://bogdan.org.ua/2009/01/26/expressionengine-contact-form-email-module-spam-vulnerability.html#comments</comments> <pubDate>Mon, 26 Jan 2009 09:50:05 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[EE]]></category> <category><![CDATA[ExpressionEngine]]></category> <category><![CDATA[spam]]></category> <category><![CDATA[vulnerability]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/?p=575</guid> <description><![CDATA[Yesterday I had a look at mod.email.php &#8211; the Email module of ExpressionEngine CMS. It appears that it is very easy to use ExpressionEngine&#8217;s contact form (which uses Email module) to send emails to arbitrary addresses &#8211; simply put, send spam using someone&#8217;s EE. And here&#8217;s why: recipients hidden field is passed to the client; [&#8230;]]]></description> <content:encoded><![CDATA[<p>Yesterday I had a look at mod.email.php &#8211; the Email module of ExpressionEngine CMS.</p><p>It appears that it is very easy to use ExpressionEngine&#8217;s contact form (which uses Email module) to send emails to arbitrary addresses &#8211; simply put, send spam using someone&#8217;s EE.</p><p>And here&#8217;s why:</p><ul><li><em>recipients</em> hidden field is passed to the client; it is encrypted, but with access to the mod.email.php code, it is a matter of several minutes to write your own email-encoding function which will produce a completely valid <em>recipients</em> field</li><li>there&#8217;s also <em>XID</em> field, which seems to be unique for each page load</li></ul><p>Spamming algorithm is clear, so I won&#8217;t elaborate. (I could have missed some session variables, though &#8211; didn&#8217;t check them.)</p><p>This information is valid as of ExpressionEngine 1.6.6, but nothing in the change-logs indicates that this mechanism was modified in the newer versions of EE.</p><p><ins
datetime="2009-01-26T13:12:42+00:00">Update:</ins> I&#8217;ve tested, and this vulnerability does exist. The simplest prevention measure is to enable Captcha for Contact Form.</p><p>I&#8217;ve <a
href="http://expressionengine.com/archived_forums/viewthread/103537/" class="broken_link" rel="nofollow">notified</a> the developers.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F01%2F26%2Fexpressionengine-contact-form-email-module-spam-vulnerability.html&amp;linkname=ExpressionEngine%20contact%20form%20%28email%20module%29%20spam%20vulnerability" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F01%2F26%2Fexpressionengine-contact-form-email-module-spam-vulnerability.html&amp;linkname=ExpressionEngine%20contact%20form%20%28email%20module%29%20spam%20vulnerability" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F01%2F26%2Fexpressionengine-contact-form-email-module-spam-vulnerability.html&amp;linkname=ExpressionEngine%20contact%20form%20%28email%20module%29%20spam%20vulnerability" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F01%2F26%2Fexpressionengine-contact-form-email-module-spam-vulnerability.html&amp;linkname=ExpressionEngine%20contact%20form%20%28email%20module%29%20spam%20vulnerability" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2009%2F01%2F26%2Fexpressionengine-contact-form-email-module-spam-vulnerability.html&amp;linkname=ExpressionEngine%20contact%20form%20%28email%20module%29%20spam%20vulnerability" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2009%2F01%2F26%2Fexpressionengine-contact-form-email-module-spam-vulnerability.html&#038;title=ExpressionEngine%20contact%20form%20%28email%20module%29%20spam%20vulnerability" data-a2a-url="https://bogdan.org.ua/2009/01/26/expressionengine-contact-form-email-module-spam-vulnerability.html" data-a2a-title="ExpressionEngine contact form (email module) spam vulnerability"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2009/01/26/expressionengine-contact-form-email-module-spam-vulnerability.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Flash video in Drupal (links)</title><link>https://bogdan.org.ua/2008/05/06/flash-video-in-drupal-links.html</link> <comments>https://bogdan.org.ua/2008/05/06/flash-video-in-drupal-links.html#comments</comments> <pubDate>Tue, 06 May 2008 21:03:41 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Links]]></category> <category><![CDATA[Notepad]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[flash]]></category> <category><![CDATA[flv]]></category> <category><![CDATA[player]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/?p=293</guid> <description><![CDATA[Some things to be aware of when enhancing Drupal site with FLV video playing/conversion features. Setup wizard for the free JW FLV Media Player (and the JW FLV Media Player itself) Flash Video in Drupal 5: A complete multimedia tutorial to the flashvideo module actual flashvideo module page on drupal.org]]></description> <content:encoded><![CDATA[<p>Some things to be aware of when enhancing Drupal site with FLV video playing/conversion features.</p><ul><li><a
href="http://www.longtailvideo.com/support/jw-player-setup-wizard?example=11">Setup wizard for the free JW FLV Media Player</a> (and the <a
href="http://www.longtailvideo.com/players/jw-flv-player/">JW FLV Media Player itself</a>)</li><li><a
href="http://www.travistidwell.com/flashvideo" class="broken_link" rel="nofollow">Flash Video in Drupal 5: A complete multimedia tutorial to the flashvideo module</a></li><li><a
href="http://drupal.org/project/flashvideo" class="broken_link" rel="nofollow">actual flashvideo module page on drupal.org</a></li></ul><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F05%2F06%2Fflash-video-in-drupal-links.html&amp;linkname=Flash%20video%20in%20Drupal%20%28links%29" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F05%2F06%2Fflash-video-in-drupal-links.html&amp;linkname=Flash%20video%20in%20Drupal%20%28links%29" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F05%2F06%2Fflash-video-in-drupal-links.html&amp;linkname=Flash%20video%20in%20Drupal%20%28links%29" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F05%2F06%2Fflash-video-in-drupal-links.html&amp;linkname=Flash%20video%20in%20Drupal%20%28links%29" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F05%2F06%2Fflash-video-in-drupal-links.html&amp;linkname=Flash%20video%20in%20Drupal%20%28links%29" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F05%2F06%2Fflash-video-in-drupal-links.html&#038;title=Flash%20video%20in%20Drupal%20%28links%29" data-a2a-url="https://bogdan.org.ua/2008/05/06/flash-video-in-drupal-links.html" data-a2a-title="Flash video in Drupal (links)"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/05/06/flash-video-in-drupal-links.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Spam Karma 2 (SK2) is a life saver plugin</title><link>https://bogdan.org.ua/2008/04/09/spam-karma-2-sk2-is-a-life-saver-plugin.html</link> <comments>https://bogdan.org.ua/2008/04/09/spam-karma-2-sk2-is-a-life-saver-plugin.html#comments</comments> <pubDate>Wed, 09 Apr 2008 12:29:52 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[WP PlugIns]]></category> <category><![CDATA[karma]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[protection]]></category> <category><![CDATA[spam]]></category> <category><![CDATA[spam karma]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/?p=289</guid> <description><![CDATA[As an update to WordPress anti-spam plugins, I highly recommend Spam Karma 2. For a time, it seems to be the ultimate protection. I turned off all the other anti-spam plugins (including Aksimet), and everything&#8217;s just perfect! SK2 gathers up to a thousand spam comments/trackbacks during a single week on this blog, and I never [&#8230;]]]></description> <content:encoded><![CDATA[<p>As an update to <a
href="http://bogdan.org.ua/2007/01/22/wordpress-anti-spam-plugins.html">WordPress anti-spam plugins</a>, I highly recommend <a
href="http://unknowngenius.com/blog/wordpress/spam-karma/">Spam Karma 2</a>. For a time, it seems to be the ultimate protection. I turned off all the other anti-spam plugins (including Aksimet), and everything&#8217;s just perfect! <a
href="http://unknowngenius.com/blog/wordpress/spam-karma/">SK2</a> gathers up to a thousand spam comments/trackbacks during a single week on this blog, and I never had a complaint from blog visitors on their inability to add a comment (though some did have to fill in captcha to post a comment with links).</p><p>And SK2 still works under WP 2.5! (SK 2.3 was released to support WP 2.1)</p><p>Kudos to <a
href="http://unknowngenius.com/blog/">Dave</a>!</p><p>It would be a pity if this excellent plugin is abandoned and stops functioning in one of the upcoming WP releases.</p><p><ins
datetime="2008-07-14T23:03:36+00:00">Update:</ins> <a
href="http://unknowngenius.com/blog/archives/2008/07/14/spam-karma-is-gpl/">SpamKarma is now GPL</a> (at <a
href="http://code.google.com/p/spam-karma/">google code</a>).</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F09%2Fspam-karma-2-sk2-is-a-life-saver-plugin.html&amp;linkname=Spam%20Karma%202%20%28SK2%29%20is%20a%20life%20saver%20plugin" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F09%2Fspam-karma-2-sk2-is-a-life-saver-plugin.html&amp;linkname=Spam%20Karma%202%20%28SK2%29%20is%20a%20life%20saver%20plugin" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F09%2Fspam-karma-2-sk2-is-a-life-saver-plugin.html&amp;linkname=Spam%20Karma%202%20%28SK2%29%20is%20a%20life%20saver%20plugin" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F09%2Fspam-karma-2-sk2-is-a-life-saver-plugin.html&amp;linkname=Spam%20Karma%202%20%28SK2%29%20is%20a%20life%20saver%20plugin" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F09%2Fspam-karma-2-sk2-is-a-life-saver-plugin.html&amp;linkname=Spam%20Karma%202%20%28SK2%29%20is%20a%20life%20saver%20plugin" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F09%2Fspam-karma-2-sk2-is-a-life-saver-plugin.html&#038;title=Spam%20Karma%202%20%28SK2%29%20is%20a%20life%20saver%20plugin" data-a2a-url="https://bogdan.org.ua/2008/04/09/spam-karma-2-sk2-is-a-life-saver-plugin.html" data-a2a-title="Spam Karma 2 (SK2) is a life saver plugin"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/04/09/spam-karma-2-sk2-is-a-life-saver-plugin.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Drupal is more than just a CMS</title><link>https://bogdan.org.ua/2008/04/06/drupal-is-more-than-just-a-cms.html</link> <comments>https://bogdan.org.ua/2008/04/06/drupal-is-more-than-just-a-cms.html#comments</comments> <pubDate>Sat, 05 Apr 2008 22:18:38 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[cck]]></category> <category><![CDATA[contemplate]]></category> <category><![CDATA[devel]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[excellent]]></category> <category><![CDATA[framework]]></category> <category><![CDATA[views]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/?p=288</guid> <description><![CDATA[This post provides several links which would be useful for the beginning Drupal developers, or developers deciding which CMS to use as the base for their next project. Also, strengths of Drupal are highlighted. Intensively working with Drupal during the past two weeks, I find it to be an excellent tool, and also much more [&#8230;]]]></description> <content:encoded><![CDATA[<p><em>This post provides several links which would be useful for the beginning Drupal developers, or developers deciding which CMS to use as the base for their next project. Also, strengths of Drupal are highlighted.</em></p><p>Intensively working with <a
href="http://drupal.org/" class="broken_link" rel="nofollow">Drupal</a> during the past two weeks, I find it to be an excellent tool, and also much more than a <abbr
title="Yet Another CMS">YACMS</abbr>.</p><p>Now I think that Drupal is also a framework &#8211; providing invisible to developer caching, session handling, access control, theming, localization, and more. The minimal effort required to extend already <strong>huge</strong> Drupal functionality is to write your own module &#8211; and, if done right, your module will immediately benefit from all the bonuses Drupal provides.</p><p>But Drupal also really shines as a CMS! You can start with a free design theme, and without any PHP knowledge have your custom portal built within a week &#8211; with your own hands, if you desire! (Note: &#8220;within a week&#8221; is true, but only if you already know what exactly you should be doing; learning time is short, but it&#8217;s not within that same week.)</p><p>What makes Drupal so powerful? I&#8217;d say that beautiful <strong>core</strong> and numerous <strong>modules</strong>.</p><p>What Drupal has to offer?<br
/> <span
id="more-288"></span><br
/> In theming, it uses by default <a
href="https://www.drupal.org/project/phptemplate" class="broken_link" rel="nofollow">PHPTemplate</a> engine. It&#8217;s simple &#8211; just HTML, with PHP tags inserted where dynamic content should go. It&#8217;s logical &#8211; you have separate layout files for the whole page, for blocks, for content (nodes), etc. That won&#8217;t be an exaggeration, if I say that Drupal themes support allows 95% of designs to be easily implemented. (5% go to static xHTML and ExpressionEngine <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> )</p><p>You also have blocks in Drupal. Blocks might be the oldest component of almost all CMSs, but the power of Drupal is that you have full CSS control over blocks. And you can also individually control the HTML of any block &#8211; using the same PHPTemplate files, as for general Drupal theming!</p><p><a
href="http://drupal.org/project/cck" class="broken_link" rel="nofollow">CCK</a>, content construction kit, is the candidate module for the inclusion into Drupal core. It allows you to actually construct content types the way you want. If you have a custom-designed web-site with several differently displayed sections &#8211; just create new content type for each section, and add only the information needed for each section&#8217;s content items! Then show your content, using theming. Or using <a
href="http://drupal.org/project/contemplate" class="broken_link" rel="nofollow">contemplate</a> module &#8211; which is a &#8220;visual editor for content display themes&#8221;. That&#8217;s purely point-and-click.</p><p><a
href="http://drupal.org/project/views" class="broken_link" rel="nofollow">Views</a> module is another shotgun in the powerful arsenal of Drupal. It allows you to build custom pages and blocks from the content and content types you have. And not a single line of PHP or SQL has to be written*. (<em>*: if there is a view which fits your needs.</em>)</p><p>If you decide to dive into some more details &#8211; grab the <a
href="http://drupal.org/project/devel" class="broken_link" rel="nofollow">devel</a> module, it greatly facilitates development for Drupal.</p><p>Choose Drupal. It&#8217;s strong, flexible (to the point that someone might call it a drawback), versatile, highly extendible, secure, and much more!</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F06%2Fdrupal-is-more-than-just-a-cms.html&amp;linkname=Drupal%20is%20more%20than%20just%20a%20CMS" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F06%2Fdrupal-is-more-than-just-a-cms.html&amp;linkname=Drupal%20is%20more%20than%20just%20a%20CMS" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F06%2Fdrupal-is-more-than-just-a-cms.html&amp;linkname=Drupal%20is%20more%20than%20just%20a%20CMS" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F06%2Fdrupal-is-more-than-just-a-cms.html&amp;linkname=Drupal%20is%20more%20than%20just%20a%20CMS" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F06%2Fdrupal-is-more-than-just-a-cms.html&amp;linkname=Drupal%20is%20more%20than%20just%20a%20CMS" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F04%2F06%2Fdrupal-is-more-than-just-a-cms.html&#038;title=Drupal%20is%20more%20than%20just%20a%20CMS" data-a2a-url="https://bogdan.org.ua/2008/04/06/drupal-is-more-than-just-a-cms.html" data-a2a-title="Drupal is more than just a CMS"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/04/06/drupal-is-more-than-just-a-cms.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>WordPress Drupalization</title><link>https://bogdan.org.ua/2008/03/31/wordpress-drupalization.html</link> <comments>https://bogdan.org.ua/2008/03/31/wordpress-drupalization.html#comments</comments> <pubDate>Mon, 31 Mar 2008 10:41:21 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[drupalization]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/?p=283</guid> <description><![CDATA[Is that only me, or WordPress is really leaning towards the Drupal ideology? Here&#8217;s what I mean: user levels were changed to user roles &#8211; just like in Drupal now, instead of categories and just recently introduced tags, the word &#8216;taxonomy&#8217; is used &#8211; which is a Drupal slang &#8216;widgets&#8217; work just like &#8216;blocks&#8217; in [&#8230;]]]></description> <content:encoded><![CDATA[<p>Is that only me, or WordPress is really leaning towards the Drupal ideology?</p><p>Here&#8217;s what I mean:</p><ul><li>user levels were changed to user roles &#8211; just like in Drupal</li><li>now, instead of categories and just recently introduced tags, the word &#8216;taxonomy&#8217; is used &#8211; which is a Drupal slang</li><li>&#8216;widgets&#8217; work just like &#8216;blocks&#8217; in Drupal &#8211; even style IDs are assigned the same way, e.g. id=&#8221;widget subscribe_to_comments_widget&#8221;</li><li>(add here the similarity you found yourself)</li></ul><p>I wonder, what will be next. PHPTemplate support, as default theming engine? <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /><br
/> Or no-backwards-compatibility policy?<br
/> Or, best for WP users, advanced Drupal-like caching and throttling techniques?</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F31%2Fwordpress-drupalization.html&amp;linkname=WordPress%20Drupalization" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F31%2Fwordpress-drupalization.html&amp;linkname=WordPress%20Drupalization" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F31%2Fwordpress-drupalization.html&amp;linkname=WordPress%20Drupalization" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F31%2Fwordpress-drupalization.html&amp;linkname=WordPress%20Drupalization" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F31%2Fwordpress-drupalization.html&amp;linkname=WordPress%20Drupalization" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F31%2Fwordpress-drupalization.html&#038;title=WordPress%20Drupalization" data-a2a-url="https://bogdan.org.ua/2008/03/31/wordpress-drupalization.html" data-a2a-title="WordPress Drupalization"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/03/31/wordpress-drupalization.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Developing with Drupal: screencasts</title><link>https://bogdan.org.ua/2008/03/26/developing-with-drupal-screencasts.html</link> <comments>https://bogdan.org.ua/2008/03/26/developing-with-drupal-screencasts.html#comments</comments> <pubDate>Wed, 26 Mar 2008 13:45:10 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Links]]></category> <category><![CDATA[Notepad]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[lesson]]></category> <category><![CDATA[screencast]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/2008/03/26/developing-with-drupal-screencasts.html</guid> <description><![CDATA[drupaldojo.com &#8211; at the moment of writing, has 42 video-lessons (screencasts) of developing with Drupal.]]></description> <content:encoded><![CDATA[<p><a
href="http://drupaldojo.com/">drupaldojo.com</a> &#8211; at the moment of writing, has 42 video-lessons (screencasts) of developing with Drupal.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fdeveloping-with-drupal-screencasts.html&amp;linkname=Developing%20with%20Drupal%3A%20screencasts" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fdeveloping-with-drupal-screencasts.html&amp;linkname=Developing%20with%20Drupal%3A%20screencasts" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fdeveloping-with-drupal-screencasts.html&amp;linkname=Developing%20with%20Drupal%3A%20screencasts" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fdeveloping-with-drupal-screencasts.html&amp;linkname=Developing%20with%20Drupal%3A%20screencasts" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fdeveloping-with-drupal-screencasts.html&amp;linkname=Developing%20with%20Drupal%3A%20screencasts" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fdeveloping-with-drupal-screencasts.html&#038;title=Developing%20with%20Drupal%3A%20screencasts" data-a2a-url="https://bogdan.org.ua/2008/03/26/developing-with-drupal-screencasts.html" data-a2a-title="Developing with Drupal: screencasts"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/03/26/developing-with-drupal-screencasts.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Good techie intro for would-be Drupal developers</title><link>https://bogdan.org.ua/2008/03/26/good-techie-intro-for-would-be-drupal-developers.html</link> <comments>https://bogdan.org.ua/2008/03/26/good-techie-intro-for-would-be-drupal-developers.html#comments</comments> <pubDate>Wed, 26 Mar 2008 13:33:38 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Links]]></category> <category><![CDATA[Notepad]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[introduction]]></category> <category><![CDATA[technical]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/2008/03/26/good-techie-intro-for-would-be-drupal-developers.html</guid> <description><![CDATA[Drupal technical introduction It&#8217;s quite old, but as it describes core functionality, it should be still actual. Please comment if you know of any other good high-quality technical Drupal introductions/descriptions.]]></description> <content:encoded><![CDATA[<p><a
href="http://www.ibm.com/developerworks/ibm/library/i-osource5/">Drupal technical introduction</a><br
/> It&#8217;s quite old, but as it describes core functionality, it should be still actual.</p><p>Please comment if you know of any other good high-quality technical Drupal introductions/descriptions.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fgood-techie-intro-for-would-be-drupal-developers.html&amp;linkname=Good%20techie%20intro%20for%20would-be%20Drupal%20developers" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fgood-techie-intro-for-would-be-drupal-developers.html&amp;linkname=Good%20techie%20intro%20for%20would-be%20Drupal%20developers" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fgood-techie-intro-for-would-be-drupal-developers.html&amp;linkname=Good%20techie%20intro%20for%20would-be%20Drupal%20developers" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fgood-techie-intro-for-would-be-drupal-developers.html&amp;linkname=Good%20techie%20intro%20for%20would-be%20Drupal%20developers" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fgood-techie-intro-for-would-be-drupal-developers.html&amp;linkname=Good%20techie%20intro%20for%20would-be%20Drupal%20developers" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F03%2F26%2Fgood-techie-intro-for-would-be-drupal-developers.html&#038;title=Good%20techie%20intro%20for%20would-be%20Drupal%20developers" data-a2a-url="https://bogdan.org.ua/2008/03/26/good-techie-intro-for-would-be-drupal-developers.html" data-a2a-title="Good techie intro for would-be Drupal developers"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/03/26/good-techie-intro-for-would-be-drupal-developers.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ExpressionEngine: template-driven CMS for the unusual designs</title><link>https://bogdan.org.ua/2008/02/24/expressionengine-template-driven-cms-for-the-unusual-designs.html</link> <comments>https://bogdan.org.ua/2008/02/24/expressionengine-template-driven-cms-for-the-unusual-designs.html#comments</comments> <pubDate>Sun, 24 Feb 2008 19:15:23 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[content management system]]></category> <category><![CDATA[design]]></category> <category><![CDATA[EE]]></category> <category><![CDATA[EllisLab]]></category> <category><![CDATA[ExpressionEngine]]></category> <category><![CDATA[template]]></category> <category><![CDATA[template-driven]]></category> <category><![CDATA[templating]]></category> <category><![CDATA[unusual]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/2008/02/24/expressionengine-template-driven-cms-for-the-unusual-designs.html</guid> <description><![CDATA[ExpressionEngine (EE) by EllisLab (see dislaimer). EE is available both as free and as paid-for: free has somewhat limited functionality, but enough to start the simple news site or blog. ExpressionEngine is suitable both for content-centric and news-centric (blog-like) projects, though in my opinion it&#8217;s more geared towards news/blog-like sites. EE has a special/specific feature: [&#8230;]]]></description> <content:encoded><![CDATA[<p><a
href="http://expressionengine.com/" target="_blank">ExpressionEngine</a> (EE) by EllisLab (see <a
href="http://bogdan.org.ua/2008/02/24/expressionengine-template-driven-cms-for-the-unusual-designs.html#disclaimer">dislaimer</a>). EE is available both as free and as paid-for: free has somewhat limited functionality, but enough to start the simple news site or blog. ExpressionEngine is suitable both for content-centric and news-centric (blog-like) projects, though in my opinion it&#8217;s more geared towards news/blog-like sites.<br
/> <span
id="more-263"></span><br
/> EE has a special/specific feature: to create the site, you actually start with writing page templates, using the admin-interface&#8217;s template editor. Templating system is quite simple (especially if you had previous experience with e.g. Smarty), though does take some time to accommodate and learn the tags available.</p><p>EE CMS consists of &#8220;modules&#8221;. Each module has some admin-side and/or visitor-side functionality, and adds some more template tags, available for templating.</p><p>I built a site using EE &#8211; <a
href="http://j-school.kiev.ua/" target="_blank">http://j-school.kiev.ua/</a> (it&#8217;s in Ukrainian, but has several static pages in English). The site has a main blog, and approximately eight topical sub-blogs. Everything is driven by quite a limited number of custom templates &#8211; which are often just &#8220;include&#8221;-d with different parameters.</p><p><em>As a summary</em>: EE is good for &#8220;unusual designs&#8221;, as it&#8217;s templating is both strong and flexible. However, as a programmer, I find EE &#8220;rough around the edges&#8221;, and not always consistent. It&#8217;s still being developed &#8211; for example, the &#8220;Pages&#8221; module, which allows to create pages with user-defined URLs/permalinks, was added to the core fairly recently; before that, it existed only as a third-party module, and was quite a pain to use.</p><p><a
name="disclaimer"></a><br
/> <strong>Disclaimer</strong>: I&#8217;m in no way associated with EllisLab, except for being a hired programmer for a purchased EE version.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F24%2Fexpressionengine-template-driven-cms-for-the-unusual-designs.html&amp;linkname=ExpressionEngine%3A%20template-driven%20CMS%20for%20the%20unusual%20designs" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F24%2Fexpressionengine-template-driven-cms-for-the-unusual-designs.html&amp;linkname=ExpressionEngine%3A%20template-driven%20CMS%20for%20the%20unusual%20designs" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F24%2Fexpressionengine-template-driven-cms-for-the-unusual-designs.html&amp;linkname=ExpressionEngine%3A%20template-driven%20CMS%20for%20the%20unusual%20designs" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F24%2Fexpressionengine-template-driven-cms-for-the-unusual-designs.html&amp;linkname=ExpressionEngine%3A%20template-driven%20CMS%20for%20the%20unusual%20designs" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F24%2Fexpressionengine-template-driven-cms-for-the-unusual-designs.html&amp;linkname=ExpressionEngine%3A%20template-driven%20CMS%20for%20the%20unusual%20designs" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F24%2Fexpressionengine-template-driven-cms-for-the-unusual-designs.html&#038;title=ExpressionEngine%3A%20template-driven%20CMS%20for%20the%20unusual%20designs" data-a2a-url="https://bogdan.org.ua/2008/02/24/expressionengine-template-driven-cms-for-the-unusual-designs.html" data-a2a-title="ExpressionEngine: template-driven CMS for the unusual designs"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/02/24/expressionengine-template-driven-cms-for-the-unusual-designs.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Updating everything</title><link>https://bogdan.org.ua/2008/02/03/updating-everything.html</link> <comments>https://bogdan.org.ua/2008/02/03/updating-everything.html#comments</comments> <pubDate>Sat, 02 Feb 2008 22:24:16 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Misc]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[WP PlugIns]]></category> <category><![CDATA[conflict]]></category> <category><![CDATA[gallery2]]></category> <category><![CDATA[sideblog]]></category> <category><![CDATA[update]]></category> <category><![CDATA[upgrade]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/2008/02/03/updating-everything.html</guid> <description><![CDATA[Today I moved my blog and gallery into MySQL5 databases from an elderly MySQL4. Also, both WP and gallery are now updated to the latest versions. Soon I&#8217;ll change the WP and G2 themes &#8211; for the lighter, less cluttered &#8211; and will remove some ads&#8230; and will also add some others instead Update generally [&#8230;]]]></description> <content:encoded><![CDATA[<p>Today I moved my blog and gallery into MySQL5 databases from an elderly MySQL4. Also, both WP and gallery are now updated to the latest versions. Soon I&#8217;ll change the <abbr
title="wordpress">WP</abbr> and <abbr
title="gallery2">G2</abbr> themes &#8211; for the lighter, less cluttered &#8211; and will remove some ads&#8230; and will also add some others instead <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p><p>Update generally went well, except for the message I got on the main page:</p><p><strong>Sorry, but you are looking for something that isn&#8217;t here.</strong></p><p>It was quite easy to figure out that new WP conflicts with an elderly &#8220;Sideblog&#8221; plugin &#8211; so I had to deactivate that one, and will have to update all the active plugins to avoid some other less evident problems&#8230; (actually, just completed updating all the plugins&#8230; quite a time-eater, that was.)</p><p>Also, there will be a slight change to what and how I write. No other details for now &#8211; but stay tuned! All the changes with no exceptions are planned for the good of readers, and for the users&#8217; benefits!</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F03%2Fupdating-everything.html&amp;linkname=Updating%20everything" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F03%2Fupdating-everything.html&amp;linkname=Updating%20everything" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F03%2Fupdating-everything.html&amp;linkname=Updating%20everything" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F03%2Fupdating-everything.html&amp;linkname=Updating%20everything" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F03%2Fupdating-everything.html&amp;linkname=Updating%20everything" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2008%2F02%2F03%2Fupdating-everything.html&#038;title=Updating%20everything" data-a2a-url="https://bogdan.org.ua/2008/02/03/updating-everything.html" data-a2a-title="Updating everything"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2008/02/03/updating-everything.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Compiled linux ffmpeg binary for Gallery2: download</title><link>https://bogdan.org.ua/2007/06/28/compiled-linux-ffmpeg-binary-for-gallery2-download.html</link> <comments>https://bogdan.org.ua/2007/06/28/compiled-linux-ffmpeg-binary-for-gallery2-download.html#comments</comments> <pubDate>Thu, 28 Jun 2007 21:40:05 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[*nix]]></category> <category><![CDATA[CMS]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[binary]]></category> <category><![CDATA[compiled]]></category> <category><![CDATA[download]]></category> <category><![CDATA[ffmpeg]]></category> <category><![CDATA[g2]]></category> <category><![CDATA[gallery2]]></category> <category><![CDATA[linux]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/2007/06/28/compiled-linux-ffmpeg-binary-for-gallery2-download.html</guid> <description><![CDATA[Updated on Apr 8, 2008. Stimulated by the post of Eric Daniel (who used to have a blog at termitenshort.com), I compiled the most recent ffmpeg SVN source into Linux binary, which runs fine on my shared hosting (note: I&#8217;m using older ffmpeg binaries, which are at the end of the post). mini-FAQ: Q: Why [&#8230;]]]></description> <content:encoded><![CDATA[<p><ins
datetime="2007-10-28T21:43:07+00:00">Updated on Apr 8, 2008.</ins></p><p>Stimulated by the post of Eric Daniel (who used to have a blog at termitenshort.com), I compiled the <strong>most recent</strong> ffmpeg SVN source into <strong>Linux binary</strong>, which runs fine on my shared hosting (<em>note: I&#8217;m using older ffmpeg binaries, which are at the end of the post</em>).</p><p><strong>mini-FAQ:</strong><br
/> <em>Q: Why the title has &#8220;for Gallery2&#8243;?</em><br
/> A: Just because I avoided the inclusion of libraries, which were not found on my shared hosting server. I hope this will work for other shared hosting environments.</p><p>Configuration, version and date can be found in the output of ffmpeg.</p><p>Versions built on <strong>April, 8, 2008</strong>:<br
/> <a
href="/wp-content/uploads/2008/04/ffmpeg.no-lame">ffmpeg (no lame)</a> (checked: can be executed on godaddy shared hosting)</p><blockquote><p>FFmpeg version SVN-r12769, Copyright (c) 2000-2008 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-postproc &#8211;enable-swscale &#8211;enable-pthreads &#8211;disable-debug &#8211;enable-gray &#8211;disable-ffserver &#8211;disable-ffplay &#8211;enable-avfilter &#8211;disable-network &#8211;disable-ipv6<br
/> libavutil version: 49.6.0<br
/> libavcodec version: 51.54.0<br
/> libavformat version: 52.13.0<br
/> libavdevice version: 52.0.0<br
/> libavfilter version: 0.0.0<br
/> built on Apr  8 2008 15:13:14, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)<br
/> usage: ffmpeg [[infile options] -i infile]&#8230; {[outfile options] outfile}&#8230;</p></blockquote><p><a
href="/wp-content/uploads/2008/04/ffmpeg.lame">ffmpeg (with lame)</a>. For this one, grab <a
href="/wp-content/uploads/2008/04/libmp3lame.so">libmp3lame.so</a>.</p><blockquote><p>FFmpeg version SVN-r12769, Copyright (c) 2000-2008 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-postproc &#8211;enable-swscale &#8211;enable-pthreads &#8211;disable-debug &#8211;enable-gray &#8211;disable-ffserver &#8211;disable-ffplay &#8211;enable-avfilter &#8211;disable-network &#8211;disable-ipv6 &#8211;enable-libmp3lame<br
/> libavutil version: 49.6.0<br
/> libavcodec version: 51.54.0<br
/> libavformat version: 52.13.0<br
/> libavdevice version: 52.0.0<br
/> libavfilter version: 0.0.0<br
/> built on Apr  8 2008 15:44:31, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)</p></blockquote><p>Based on single request: <a
href="/wp-content/uploads/2008/04/ffmpeg.faad">ffmpeg (with lame <strong>and</strong> libfaac <strong>and</strong> libfaad)</a>. For this one, grab <a
href="/wp-content/uploads/2008/04/libfaac.so">libfaac.so</a> and <a
href="/wp-content/uploads/2008/04/libfaad.so">libfaad.so</a>.</p><blockquote><p>FFmpeg version SVN-r12769, Copyright (c) 2000-2008 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-postproc &#8211;enable-swscale &#8211;enable-pthreads &#8211;disable-debug &#8211;enable-gray &#8211;disable-ffserver &#8211;disable-ffplay &#8211;enable-avfilter &#8211;disable-network &#8211;disable-ipv6 &#8211;enable-libmp3lame &#8211;enable-libfaac &#8211;enable-libfaad<br
/> libavutil version: 49.6.0<br
/> libavcodec version: 51.54.0<br
/> libavformat version: 52.13.0<br
/> libavdevice version: 52.0.0<br
/> libavfilter version: 0.0.0<br
/> built on Apr  8 2008 23:53:57, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)</p></blockquote><p>As an experiment, here&#8217;s <a
href="/wp-content/uploads/2008/04/ffmpeg.freebsd.no-lame">ffmpeg freebsd binary without lame support</a>. Did ran on some FreeBSD 6.3 hosting.</p><blockquote><p>FFmpeg version SVN-r12769, Copyright (c) 2000-2008 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-postproc &#8211;enable-swscale &#8211;enable-pthreads &#8211;disable-debug &#8211;enable-gray &#8211;disable-ffserver &#8211;disable-ffplay &#8211;enable-avfilter &#8211;disable-network &#8211;disable-ipv6 &#8211;target-os=freebsd<br
/> libavutil version: 49.6.0<br
/> libavcodec version: 51.54.0<br
/> libavformat version: 52.13.0<br
/> libavdevice version: 52.0.0<br
/> libavfilter version: 0.0.0<br
/> built on Apr  8 2008 16:15:38, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)</p></blockquote><p>Versions built on <strong>Ocotber, 28, 2007</strong>:<br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2007/10/ffmpeg.2007-10-28.no-libmp3lame-support">download ffmpeg <strong>without</strong> libmp3lame support</a></p><blockquote><p>FFmpeg version SVN-r10867, Copyright (c) 2000-2007 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-pp &#8211;enable-swscaler &#8211;enable-pthreads</p><p>&#8211;enable-libogg &#8211;enable-libvorbis &#8211;disable-debug<br
/> libavutil version: 49.5.0<br
/> libavcodec version: 51.47.1<br
/> libavformat version: 51.17.0<br
/> built on Oct 28 2007 22:46:10, gcc: 3.4.6</p></blockquote><p><a
href="http://bogdan.org.ua/wp-content/uploads/2007/10/ffmpeg.2007-10-28.with-libmp3lame-support">download ffmpeg <strong>with</strong> libmp3lame support</a></p><blockquote><p>FFmpeg version SVN-r10867, Copyright (c) 2000-2007 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-pp &#8211;enable-swscaler &#8211;enable-libmp3lame</p><p>&#8211;enable-pthreads &#8211;enable-libogg &#8211;enable-libvorbis &#8211;disable-debug<br
/> libavutil version: 49.5.0<br
/> libavcodec version: 51.47.1<br
/> libavformat version: 51.17.0<br
/> built on Oct 28 2007 23:04:59, gcc: 3.4.6</p></blockquote><p>Shared hosting testing reports are welcome.</p><p>Below you can find <strong>even older versions of ffmpeg</strong>, which were tested and found functional on GoDaddy shared hosting.<br
/> <span
id="more-193"></span></p><p>Again, two versions are available &#8211; with libmp3lame support and without. Learn more about <a
href="http://bogdan.org.ua/2008/03/12/instructions-on-installing-libmp3lame-enabled-ffmpeg-on-shared-linux-hosting.html">using ffmpeg with libmp3lame support in shared hosting environment</a>.</p><p><a
href="http://bogdan.org.ua/wp-content/uploads/2007/06/ffmpeg">download ffmpeg without lame</a></p><blockquote><p>FFmpeg version SVN-r9447, Copyright (c) 2000-2007 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-pp &#8211;enable-swscaler &#8211;enable-pthreads &#8211;enable-libvorbis &#8211;disable-v4l &#8211;disable-v4l2 &#8211;disable-bktr &#8211;disable-dv1394 &#8211;disable-debug<br
/> libavutil version: 49.4.1<br
/> libavcodec version: 51.40.4<br
/> libavformat version: 51.12.1<br
/> built on Jun 28 2007 12:32:29, gcc: 3.4.6</p></blockquote><p>The second binary DID NOT work on my shared hosting due to the absence of libmp3lame.so.0 (see comments and <a
href="http://bogdan.org.ua/2008/03/12/instructions-on-installing-libmp3lame-enabled-ffmpeg-on-shared-linux-hosting.html">this post</a> on how to enable libmp3lame support).<br
/> It was built two days later, and has the following config:</p><p><a
href="http://bogdan.org.ua/wp-content/uploads/2007/06/ffmpeg.with.lame">download ffmpeg with lame</a></p><blockquote><p> FFmpeg version SVN-r9451, Copyright (c) 2000-2007 Fabrice Bellard, et al.<br
/> configuration: &#8211;enable-gpl &#8211;enable-pp &#8211;enable-swscaler &#8211;enable-libmp3lame &#8211;enable-pthreads &#8211;enable-libvorbis &#8211;disable-v4l &#8211;disable-v4l2 &#8211;disable-bktr &#8211;disable-dv1394 &#8211;disable-debug<br
/> libavutil version: 49.4.1<br
/> libavcodec version: 51.40.4<br
/> libavformat version: 51.12.1<br
/> built on Jun 30 2007 11:51:23, gcc: 3.4.6</p></blockquote><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F06%2F28%2Fcompiled-linux-ffmpeg-binary-for-gallery2-download.html&amp;linkname=Compiled%20linux%20ffmpeg%20binary%20for%20Gallery2%3A%20download" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F06%2F28%2Fcompiled-linux-ffmpeg-binary-for-gallery2-download.html&amp;linkname=Compiled%20linux%20ffmpeg%20binary%20for%20Gallery2%3A%20download" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F06%2F28%2Fcompiled-linux-ffmpeg-binary-for-gallery2-download.html&amp;linkname=Compiled%20linux%20ffmpeg%20binary%20for%20Gallery2%3A%20download" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F06%2F28%2Fcompiled-linux-ffmpeg-binary-for-gallery2-download.html&amp;linkname=Compiled%20linux%20ffmpeg%20binary%20for%20Gallery2%3A%20download" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F06%2F28%2Fcompiled-linux-ffmpeg-binary-for-gallery2-download.html&amp;linkname=Compiled%20linux%20ffmpeg%20binary%20for%20Gallery2%3A%20download" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2007%2F06%2F28%2Fcompiled-linux-ffmpeg-binary-for-gallery2-download.html&#038;title=Compiled%20linux%20ffmpeg%20binary%20for%20Gallery2%3A%20download" data-a2a-url="https://bogdan.org.ua/2007/06/28/compiled-linux-ffmpeg-binary-for-gallery2-download.html" data-a2a-title="Compiled linux ffmpeg binary for Gallery2: download"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2007/06/28/compiled-linux-ffmpeg-binary-for-gallery2-download.html/feed</wfw:commentRss> <slash:comments>49</slash:comments> </item> <item><title>Radical Alternative to caching: On-the-fly Content-Regeneration</title><link>https://bogdan.org.ua/2007/05/23/radical-alternative-to-caching-on-the-fly-content-regeneration.html</link> <comments>https://bogdan.org.ua/2007/05/23/radical-alternative-to-caching-on-the-fly-content-regeneration.html#comments</comments> <pubDate>Wed, 23 May 2007 15:45:08 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Links]]></category> <category><![CDATA[Notepad]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Web]]></category> <guid
isPermaLink="false">http://bogdan.org.ua/2007/05/23/radical-alternative-to-caching-on-the-fly-content-regeneration.html</guid> <description><![CDATA[Refreshing my scarce knowledge of Apache&#8217;s mod-rewrite, I read through the mod_rewrite guide, and found an extremely interesting section, titled On-the-fly Content-Regeneration Here&#8217;s the theoretical problem: we are building a high-traffic site with lots of once-per-(hour&#124;day) updated items we have a CMS with just all the features we need, but it&#8217;s really CPU/DB-consuming and slow [&#8230;]]]></description> <content:encoded><![CDATA[<p>Refreshing my scarce knowledge of Apache&#8217;s mod-rewrite, I read through the <a
href="http://httpd.apache.org/docs/1.3/misc/rewriteguide.html" target="_blank">mod_rewrite guide</a>, and found an extremely interesting section, titled</p><p><strong>On-the-fly Content-Regeneration</strong></p><p>Here&#8217;s the theoretical problem:</p><ol><li>we are building a high-traffic site with lots of once-per-(hour|day) updated items</li><li>we have a CMS with just all the features we need, but it&#8217;s really CPU/DB-consuming and slow (does it sound familiar? <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> )</li><li>there&#8217;s a need to serve static files</li></ol><p>And here&#8217;s the &#8216;radical alternative&#8217; solution:</p><ol><li>install the CMS of choice</li><li>tweak the CMS&#8217;s output layer to both produce/write to disk (or update) static HTML files, and to dump those same pages directly to browser</li><li>use the &#8220;On-the-fly Content-Regeneration&#8221; mod_rewrite rules set</li></ol><p>This is it, in short. The &#8220;On-the-fly Content-Regeneration&#8221; will read the static files if they exist, or will query the CMS, which will create/update the static files and output the necessary page. You can also setup a cron-job to remove all static files older than XX minutes, to force content refresh.</p><p>Below is the copy of &#8220;On-the-fly Content-Regeneration&#8221; from the <a
href="http://httpd.apache.org/docs/1.3/misc/rewriteguide.html">mod_rewrite guide</a>.<br
/> <span
id="more-182"></span></p><blockquote><p> Description:<br
/> Here comes a really esoteric feature: Dynamically generated but statically served pages, i.e. pages should be delivered as pure static pages (read from the filesystem and just passed through), but they have to be generated dynamically by the webserver if missing. This way you can have CGI-generated pages which are statically served unless one (or a cronjob) removes the static contents. Then the contents gets refreshed.<br
/> Solution:<br
/> This is done via the following ruleset:</p><p> RewriteCond %{REQUEST_FILENAME}   !-s<br
/> RewriteRule ^page\.html$          page.cgi   [T=application/x-httpd-cgi,L]</p><p> Here a request to page.html leads to a internal run of a corresponding page.cgi if page.html is still missing or has filesize null. The trick here is that page.cgi is a usual CGI script which (additionally to its STDOUT) writes its output to the file page.html. Once it was run, the server sends out the data of page.html. When the webmaster wants to force a refresh the contents, he just removes page.html (usually done by a cronjob).</p></blockquote><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F05%2F23%2Fradical-alternative-to-caching-on-the-fly-content-regeneration.html&amp;linkname=Radical%20Alternative%20to%20caching%3A%20On-the-fly%20Content-Regeneration" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F05%2F23%2Fradical-alternative-to-caching-on-the-fly-content-regeneration.html&amp;linkname=Radical%20Alternative%20to%20caching%3A%20On-the-fly%20Content-Regeneration" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F05%2F23%2Fradical-alternative-to-caching-on-the-fly-content-regeneration.html&amp;linkname=Radical%20Alternative%20to%20caching%3A%20On-the-fly%20Content-Regeneration" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F05%2F23%2Fradical-alternative-to-caching-on-the-fly-content-regeneration.html&amp;linkname=Radical%20Alternative%20to%20caching%3A%20On-the-fly%20Content-Regeneration" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F05%2F23%2Fradical-alternative-to-caching-on-the-fly-content-regeneration.html&amp;linkname=Radical%20Alternative%20to%20caching%3A%20On-the-fly%20Content-Regeneration" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2007%2F05%2F23%2Fradical-alternative-to-caching-on-the-fly-content-regeneration.html&#038;title=Radical%20Alternative%20to%20caching%3A%20On-the-fly%20Content-Regeneration" data-a2a-url="https://bogdan.org.ua/2007/05/23/radical-alternative-to-caching-on-the-fly-content-regeneration.html" data-a2a-title="Radical Alternative to caching: On-the-fly Content-Regeneration"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2007/05/23/radical-alternative-to-caching-on-the-fly-content-regeneration.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Why Zope 3 is just great</title><link>https://bogdan.org.ua/2007/03/15/why-zope-3-is-just-great.html</link> <comments>https://bogdan.org.ua/2007/03/15/why-zope-3-is-just-great.html#comments</comments> <pubDate>Thu, 15 Mar 2007 17:30:58 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[zope]]></category> <guid
isPermaLink="false">http://www.bogdan.org.ua/2007/03/15/why-zope-3-is-just-great.html</guid> <description><![CDATA[Recently I learned about Zope, which is an &#8220;open source web application server&#8221;, primarily written in Python. Then Django and Turbogears were seen as web-development frameworks akin to Zope. Search revealed an interesting anti-Zope rant at Zope vs Django. Reading until the end, and then following the comments, I came across the comment by Holger [&#8230;]]]></description> <content:encoded><![CDATA[<p>Recently I learned about <a
href="http://bluebream.zope.org/about/index.html" class="broken_link" rel="nofollow">Zope</a>, which is an &#8220;open source web application server&#8221;, primarily written in Python.</p><p>Then Django and Turbogears were seen as web-development frameworks akin to Zope. Search revealed an interesting anti-Zope rant at <a
href="http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/" class="broken_link" rel="nofollow">Zope vs Django</a>. Reading until the end, and then following the comments, I came across the comment by <a
href="http://www.blogger.com/profile/13470705" class="broken_link" rel="nofollow">Holger Froebe</a>, which is a huge one (probably the longest comment I had ever seen), and represents a detailed explanation with examples of the reasons to use Zope 3. I found that comment to be a really good-written one, so if you are deciding on whether you should use Zope 3 or not, then read the comment <a
href="http://www.jrandolph.com/blog/2006/02/02/zope-vs-django-heres-some-gasoline-to-put-out-the-fire/" class="broken_link" rel="nofollow">here</a> (scroll down or just search for &#8220;Holger Froebe&#8221;).</p><p>For convenience and in order to preserve this worhty piece of work from vanishing, below is the 99%-exact copy-paste of that comment.<br
/> <span
id="more-143"></span></p><div
class="commentname">Holger Froebe&nbsp;February 8, 2006 5:32 pm</div><div
class="commenttext"><p>Hello Jason,</p><p>when I read your post, I smiled a little.<br
/> Because I was in a similar situation in January/February<br
/> 2005. Let me introduce: My name is Holger<br
/> Froebe, I work for the IT of a university hospital<br
/> here in Germany (does this count for enterprise</p><p>requirements? I hope so.) &#8211; sorry for my crude<br
/> english.</p><p>â€¦â€¦â€¦and now for something completely different â€¦â€¦â€¦.</p><p>We had some web-applications written in plone and<br
/> wanted to extend this stuff throughout the company<br
/> which failed via some of the reasons<br
/> (Integration of Oracle/User management) which you adressed<br
/> in your rant. The main goal of this extension project<br
/> was to ensure integrity of data stemming from</p><p>different sources (mainly Legacy systems, like SAP,<br
/> Oracle, stuff from File/FTP server, MySQL, SQLServer -<br
/> the whole spectrum <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>Why did we fail ?<br
/> First let me get one point clear: I think Plone has<br
/> its strenghts and merits and if you stay close to<br
/> the main street of its framework layout and its<br
/> original intention (see below), you can get very<br
/> satisfactory results &#8211; see Oxfam, Ebay-Developer Plattform,</p><p>Motorola and a lot of other impressive projects.</p><p>But if you look at its history, you see a pattern:<br
/> Plone started as a replacement for the User Interface of<br
/> the Content Management Framework (CMF) of Zope2. But<br
/> over the years more and more architectural<br
/> stuff slipped into the original Skin Package &#8211; which<br
/> suddenly became a framework of its own.<br
/> It started as one package &#8211; now<br
/> you have 13 (or so) Zope packages which constitutes Plone.</p><p>And this software stack got bigger with evâ€™ry release: There<br
/> is python, then comes zope, then plone, then put archetypes and<br
/> on top of it ArchetypesContentTypes. To add it, all this<br
/> stuff has strong inner dependencies.<br
/> So with all those dependencies<br
/> Plone slowly drifted away from its original goal (getting a more usable<br
/> + visually appealing UI for Zope-CMF) and now does a lot of stuff<br
/> which should be done better deep down<br
/> in the software stack &#8211; may it be a pure python library</p><p>or a standard Zope Component/Product.<br
/> And that &#8211; to my totally personal mind &#8211; was the reason we failed<br
/> with a complex enterprise scenario.<br
/> If youâ€™re interested in this point of view,<br
/> Iâ€™ll recommend you Chris Withers insightful talk<br
/> â€œPlone rocks my worldâ€ &#8211; <a
href="http://www.simplistix.co.uk/presentations" rel="nofollow" class="broken_link">http://www.simplistix.co.uk/presentations</a></p><p>â€¦â€¦â€¦and now for something completely different â€¦â€¦â€¦.</p><p>But &#8211; What was the solution ?</p><p>We tried different approaches, but stayed<br
/> closely in well-known Python territory and rounded up<br
/> the usual suspects: TurboGears, Django, Zope3, to name<br
/> the most prominent.</p><p>And the winner was â€¦ Zope3 (now its time<br
/> to put on my fireproof suit, right <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>We started to work with it in Spring 2005 -<br
/> and we never looked back.</p><p>Man, this is such an amazing piece of software !</p><p>For me itâ€™s like a piece of art <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> <br
/> Everyday I work with it Iâ€™m getting more<br
/> enthusiastic about it.</p><p>Zope3 is build on some values which in my mind<br
/> really counts if you want to build an enterprise system:</p><ul><li>Quality</li><li>Dynamics + Extensibility</li><li>Flexibility</li><li>Reuse, reuse and reuse again <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></li><li>Clear and concise separation of concerns</li><li>Focus on core competencies<br
/> = Avoid the Not-invented-here-syndrom</p><ul><li>integrate proven solutions from outside your world</li></ul></li></ul><p>Zop3 is not the monolithic big framework like many<br
/> other appservers today, but a collection of loosely</p><p>coupled pieces where every piece has a clear and defined<br
/> responsibility and quality. There are a some<br
/> thousand tests to ensure the last one. You can use nearly every<br
/> of this little pieces (Zopies call them â€œcomponentsâ€)<br
/> outside Zope. This separation of concerns to the extreme<br
/> leads in a fast way to locate, isolate and remove errors -<br
/> that really saved some of my days in the last few months.</p><p>At the same time the Zope3-Guys build via ruthless refactoring a framework<br
/> which brings Zope-World closer to Python standard world</p><p>(stuff like WSGI, relational Database connectivity etc. &#8211; see<br
/> below).</p><p>Heck, you can even use Zope-Code for a client<br
/> app which doesnâ€™t know anything Persistency or ZODB.<br
/> Yes, itâ€™s true: You can write pure desktop applications<br
/> using Zope-Code without caring about ZODB &#8211; Example:<br
/> The CCPublisher2 rewrite of the CreativeCommons-Project,<br
/> see <a
href="http://svn.berlios.de/svnroot/repos/cctools/publisher/trunk/" rel="nofollow" class="broken_link">http://svn.berlios.de/svnroot/repos/cctools/publisher/trunk</a></p><p>or <a
href="http://wiki.python.org/moin/PyCon2006/Talks#48" rel="nofollow">http://wiki.python.org/moin/PyCon2006/Talks#48</a><br
/> Or you want to use a collaborative tool for groups with<br
/> instant + slick visual feeling &#8211; try Bebop which strongly<br
/> relies on Zope3-Technologies on server AND client side.</p><p>â€¦â€¦.and now for something completely different â€¦..</p><p>The Zope3-Team discussed very thoroughly: What are the<br
/> core competencies of Zope and what not ?<br
/> For example: Zope2 had its own webserver &#8211; ZServer.</p><p>But why write and maintain such a beast when there<br
/> is something better in Python-World ?<br
/> So the Zope3-Guys integrated Twisted and<br
/> got best of both worlds.</p><p>â€¦ and now for something completely different â€¦</p><p>Relational Databases and Zope3</p><p>You described very well in your rant the problems with Oracle.<br
/> This was nearly 100% identical to our experience,<br
/> so my smile from the beginning of this post</p><p>comes a little bit from the pain I left behind me.</p><p>With Zope3 there are two approaches:</p><p>a) Use cxOracleDA-adapter (http://svn.zope.org/cxoracleda/)<br
/> Looking at this source code I was amazed how easy and<br
/> straightforward it is to integrate a well-known and proven<br
/> python-Standard DB-Adapter into Zope3-world.<br
/> The same pattern again: Take a proven quality piece</p><p> of software from standard python world, put on a small wrapper<br
/> and &#8211; whoa &#8211; use it right away in Zope3.</p><p>Well, and then you could put sql-expressions into your templates<br
/> via sql-expressions (uhm, not really recommended <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> or use<br
/> your zsql-scripts from Zope2.</p><p>But then we thought there should be a better solution,<br
/> which breathes the spirit of Zope3 â€¦ which led us to</p><p>b) an OR-Mapper-Solution</p><p>We tried SQLObject first, since it had a â€œnativeâ€ Zope3-Integration<br
/> via sqlos. But Oracle connectivity is not one of the main targets<br
/> of SQLObject, despite there is a Oracle-SQL-Object-0.6.1-branch<br
/> in the repository.</p><p>PyDo2 from the Skunkweb-Project looked really promising, but<br
/> we had to put the name of the table into the class-definition,</p><p> so this was not flexible enough. Despite Oracle-Connectivity<br
/> was OK.</p><p>So we ended up with the best (shameless marketing)<br
/> enterprise ORM in python-world: SQLAlchemy (http://www.sqlalchemy.org)<br
/> Yes, thereâ€™s no official download and the developers<br
/> say thereâ€™s only Version 0.9.1 &#8211; but itâ€™s pretty close to final 1.0</p><p> and it really suits our needs.</p><p>The great difference between SQLAlchemy and the rest of the bunch<br
/> is that other ORM-Mappers try to fit relational databases by all means<br
/> into Object-World. But a relational DB is no misled ObjectStore and<br
/> the whole analogy breaks more and more down with<br
/> &#8211; larger databases</p><p> &#8211; transactional aspects<br
/> &#8211; complex datasets/queries over many tables.</p><p>SQLAlchemy has the same philosophy as Z3 in<br
/> &#8211; extreme separation of concerns and<br
/> &#8211; integration of standard DB Adapters<br
/> &#8211; high quality of code + easy readability</p><p> (anybody said â€œpythonicâ€ <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> <br
/> &#8211; good quality of documentation</p><p>SQLAlchemy treats a Class as a Class, a RDB as a RDB, and<br
/> (you guessed it, right?) a RDB Table as a<br
/> RDB Table and connects them via mappers, which can easily<br
/> enriched with some standard methods/queries provided by</p><p> the framework.<br
/> It makes heavy use of the new dynamics aspects enriching<br
/> Python with the last few releases in the 2.x-line.</p><p>With SQLAlchemy I could drop the lines of code of my sql-related<br
/> stuff somewhere around 20-30%. And I REALLY like the approach<br
/> of â€œWriting less codeâ€. Doing all my RDB-Stuff in python</p><p> is an extra-Bonus (OK, to be honest &#8211; some complex queries<br
/> survived, but I think this is only a matter of time, since<br
/> they vanish <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>So youâ€™re not alone in Zope3-Oracle-World. To<br
/> cite the glorious A. A. Milne â€œAnd then there were threeâ€<br
/> (and maybe even more, if someone answers this post <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>â€¦ and now for something completely different â€¦</p><p>LDAP-Integration</p><p>Zope3 is very concise about Authentication via<br
/> so-called PAUâ€™s &#8211; Pluggable Authentication Utilities.<br
/> You could easily plug together Authentication sources<br
/> with different Authentication methods &#8211; its as easy<br
/> as plug your lego-stones together.</p><p>Like in RDB-World: First you define an Adapter to your</p><p> Datasource &#8211; lets call it LDAP-Adapter, right -<br
/> which defines and holds the connection to your<br
/> external LDAP-Source (http://svn.zope.org/ldapadapter/).<br
/> That way, you could even use more than one LDAP-Source<br
/> in your Application.</p><p>Then you have another clearly defined LDAP-PAS (http://svn.zope.org/ldappas/).</p><p> which does the authentication against this Adapter.</p><p>And the whole beast (you guessed it again, right?) is a small,<br
/> well-defined wrapper around python-ldap. Plus<br
/> itâ€™s easy to read and fast to understand (my 2 cents).<br
/> Itâ€™s like dejavu all over again <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>Hint: I just played around with this LDAP-stuff and never<br
/> tested that in our production environment,</p><p> but I have great confidence from my previous experiences<br
/> with Zope3 that it should be working relatively seamless.</p><p>â€¦ and now for something completely different â€¦</p><p>ZCML</p><p>Well, everybody beats on ZCML, since its such an easy<br
/> target &#8211; â€œHey, itâ€™s XML &#8211; thatâ€™s bad. We donâ€™t want<br
/> to use XML (for whatever ideological reason), so</p><p> Zope3 must be something ill-constructedâ€</p><p>If you ask me about my feelings about ZCML, I would<br
/> not try to convince you it was made in heaven and tell you<br
/> that you are too blind to see the light <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>But &#8211; as often in life: truth lies somewhere in<br
/> between the extremes. My 2 cents:</p><ol><li><p>I share your feelings about not direct<br
/> debugging ZCML, despite the fact that Zope3.2 brings<br
/> very concise error-tracebacks.</p></li><li><p>The Zope3-Guys are aware of the problems users have with<br
/> ZCML. They try REALLY hard to bring as much ZCML back<br
/> to python as possible &#8211; see</p><p> <a
href="http://www.z3lab.org/sections/blogs/philipp-weitershausen/2005" rel="nofollow">http://www.z3lab.org/sections/blogs/philipp-weitershausen/2005</a><em>12</em>14_zcml-needs-to-do-less<br
/> for a thorough discussion from one of the core developers<br
/> of Zope3. Looking from Zope3.0 to Zope3.2 (the current release) some<br
/> stuff vanished from ZCML, so those guys do their homework<br
/> and will do it even more on the upcoming Zope3.3 release.</p></li><li><p>The best thing at the end (now Z3-Team will really beat me ;-):<br
/> You can write up and use<br
/> ALL (right, ALL) ZCML-directives right away as python-code, if you donâ€™t<br
/> XML.<br
/> And yes, this is even documented (call me old-fashioned,<br
/> but I read docs first). You may say, that there are such</p><p> a huge amount of READMEâ€™s and other .txt-stuff spread<br
/> over the whole Zope-Project, that its not easy to get into it.<br
/> But Zope3 provides you with a toolscript<br
/> called â€œstatic-apidocâ€ which gives you a clear, concise<br
/> overview of the whole documentation as a static website.</p><p>Now if you look at the README under zope/component or</p><p> at the static-apidoc unter â€œComponent Architectureâ€<br
/> you find methods like provideAdapter, provideUtility,<br
/> which do &#8211; surprise, surprise &#8211; the equivalent of<br
/> ZCML-alternatives. Or look at zope/component/site.py<br
/> or zope/configuration</p><p>You want to see this in action ? Look at this</p><p> 2-part-example of a simple Z3-object publishing system<br
/> without any piece of ZCML:</p><p>Part I: The Zope Component Architecture -<br
/> Interfaces, Adaptation, and Duck Typing<br
/> <a
href="http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-interfaces.html" rel="nofollow">http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-interfaces.html</a></p><p>Part II: The Zope Component Architecture -<br
/> One Way To Do It All</p><p> <a
href="http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-one-way-to.html" rel="nofollow">http://griddlenoise.blogspot.com/2005/12/zope-component-architecture-one-way-to.html</a></p><p>Browsing through the docs, you can find the other<br
/> replacements in a straightforward way (or you debug<br
/> the xmlconfig-stuff from zope/configuration, which<br
/> gives you the corresponding callables for ZCML)</p><p>If thatâ€™s too tough and time-consuming &#8211; no problem,<br
/> ask on the Zope3-Users mailinglist. Those guys are</p><p> REALLY helpful to get you into Z3-world.</p></li></ol><p>â€¦ and now for something completely different ..</p><p>Kool-Aid and the magic world of interfaces and adapters</p><p>Speaking with developers about Zope3 you often hear<br
/> that interfaces and adapters are too much magic and<br
/> they have to drink so much Kool-Aid to understand them.<br
/> I wonâ€™t put this here into a lengthy pro-con-discussion</p><p>of these concepts, since Iâ€™m not really a core developer,<br
/> but more an application developer/maintainer.</p><p>But to tell you my story:</p><p>It took me a while to GET the main ideas/principles<br
/> behind this stuff &#8211; to be honest,<br
/> 2 days of intensive, dedicated work and 5 litres of H2O.<br
/> After one week of working with Zope3 I was more productive than<br
/> before. Plus I had learned a lot of new stuff about programming<br
/> in a quality way. Yes, dealing with Zope3 has made</p><p>me a better programmer &#8211; even if I never should do anymore project<br
/> with it ;-(</p><p>Plus it helped me to get my things done better + faster.</p><p>Well, thatâ€™s Kool-Aid I really like !</p><p>I wontâ€™t say this world of interfaces and adapters<br
/> is the easiest to understand. But again:<br
/> There are a good amount of play-around-with-it-tutorials/docs/books<br
/> around which take you into Zope3-World. Just give it a try !</p><p>Want some examples? Want some simple apps to play around with?</p><p>Well, it was never easier than with Zope3 &#8211; see yourself</p><p>Hereâ€™s some easy stuff which you can work through in less than 1 hour<br
/> (well, the last example takes you longer <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>a) â€œZope3 in 30 minutesâ€ &#8211; at<br
/> <a
href="http://zissue.berlios.de/z3/Zope3In30Minutes.html" rel="nofollow">http://zissue.berlios.de/z3/Zope3In30Minutes.html</a><br
/> showing you step by step how to build your first<br
/> simple Z3-application to collect your bookmarks on a server</p><p>b) Did I mention the magnificent Jeff Shell? His blog griddlenoise.blogspot.com is a rich and really insightful source for getting into Zope3 &#8211; plus itâ€™s really fun to read. In his archives you find this funky little thing <a
href="http://worldcookery.com/files/jeffshell-todo/" rel="nofollow" class="broken_link">http://worldcookery.com/files/jeffshell-todo/</a> where Jeff tells you how to build a Rails-like ToDo-Application in some simple steps. In every step he shows you what to do and why he thinks this implementation is carefully thought out in Zope3 and what is the reason they did it this and no other way.</p><p>c) Want a fresh new zope3-site without understandig â€œall the magicâ€<br
/> inside? Choose life &#8211; choose the z3 project starter</p><p> <a
href="http://old.zope.org/Members/adytumsolutions/" rel="nofollow">http://www.zope.org/Members/adytumsolutions/z3project</a><em>starter/z3project</em>starter_released<br
/> Answer a few simple questions and you have a project skeleton<br
/> to play around with without deeply understanding all this â€œkool-aidâ€ upfront.</p><p>d) Philipp von Weitershausens Website/Book about Zope3 -<br
/> <a
href="http://worldcookery.com" rel="nofollow">http://worldcookery.com</a></p><p>You will find more of this tutorials on Phillips website under<br
/> <a
href="http://worldcookery.com/Appetizers.html" rel="nofollow" class="broken_link">http://worldcookery.com/appetizers.</a></p><p>And this is not the end. New stuff is landing every day<br
/> in Zope3-space &#8211; like this little gem about events/notifications<br
/> and how they help you handle complex application<br
/> architectures:</p><p><a
href="http://remarkablysimple.blogspot.com/" rel="nofollow" class="broken_link">http://remarkablysimple.blogspot.com/</a></p><p>Or you look at <a
href="http://www.z3lab.org" rel="nofollow">www.z3lab.org</a> where you can get a peek</p><p>of the Zope3-ECM-Initiative and so on so on â€¦</p><p>So, my advice to you: Fire on feedster.com, type in Zope3 â€¦<br
/> and youâ€™ll find a lot more of this diamonds.</p><p>I made the experience that most of the complaints about<br
/> Kool-Aid come from developers who specialized in certain<br
/> frameworks/habits and now had difficulties to extend<br
/> their mindset since they had to leave known territory.<br
/> They struggled with Zope3, found some hurdles and then gave up,<br
/> since â€œthereâ€™s so much kool-aidâ€.</p><p>I was surprised to find out that absolute newbies to programming<br
/> get productive with Zope3 very fast and easily -<br
/> maybe since they are not fixed on certain stuff.</p><p>I mean, sometimes I donâ€™t get it: People want to write programs<br
/> for real complex enterprise scenarios, but at the same<br
/> time tell me itâ€™s too hard to spend a few hours to play with some toy examples<br
/> and read some docs and play with the marvellous python command prompt<br
/> trying to push their brain into a new direction.</p><p>Believe me: This whole interface-adapter-pattern definitely helps</p><p>you in bigger/complex projects evolving over time.<br
/> Remember Fred Brooks Mythical Man-Month, which made so many of us aware<br
/> that change of requirements is inherent in any software project -<br
/> even if the whole system is in production use.</p><p>Zope3 has not ALL, but a lot of REALLY GOOD answers<br
/> to this situation every developer faces from time to time <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>â€¦ and now for something completely different ..</p><p>Querying the ZODB from outside applications</p><p>Iâ€™m convinced that it should be easy and I know</p><p>that the guys in the Bebop-Project did some stuff<br
/> in this direction, But Iâ€™m no expert in that,<br
/> since relational databases<br
/> constitutes more of my work. If you want to<br
/> have a profound answer on this &#8211; push it<br
/> on the Zope3-Users-Mailinglist (sorry, that<br
/> wasnâ€™t a sufficient answer, right?). Those<br
/> helpful souls there will really show you<br
/> the best and easiest way to do it.</p><p>â€¦.. and now for something completely different â€¦.</p><p>Coming back to your Plone-dissatisfaction</p><p>I donâ€™t want to tell you that Plone is bad. Or Plone<br
/> sucks. Or stuff like that. For me itâ€™s the right tool<br
/> for the projects it was made of &#8211; usable portal solutions<br
/> for medium size. The same holds for Django which<br
/> is also OK, if I want to make a fast RDBMS-UI-App.</p><p>The good thing is: For different work tasks there<br
/> are different tools in my toolchest. Itâ€™s my</p><p>responsibility to choose the right one for<br
/> every new project, but it leaves me with a<br
/> warm safe feeling that the toolbelt is filled<br
/> with such good quality stuff.</p><p>And the good news is just around the corner:<br
/> Plone and Zope3-World are converging &#8211; approaching<br
/> each other with every day. Now what does that mean?</p><p>Since I worked with plone it was easy to find my<br
/> way in Zope3-World. Zope3 tried to learn from</p><p>the Zope2 AND the plone lessons and put a lot of<br
/> the best breed of Plone (which constituted at the<br
/> same time those hard-to-manage architectural overhead)<br
/> back to the core of the framework. Well, this<br
/> is not totally right, since there is no such thing<br
/> as a monolithic core of Zope3-framework &#8211; the greatest lesson<br
/> learned from the problems with complex Zope2-projects.<br
/> Which is the best news of all <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>Know Archetypes ? There is schema-driven content-types</p><p>with form generation (zope.formlib)</p><p>Know Skins and Layers ? Use them right away in Zope3</p><p>Know Portlets ? Generalized to Viewlets and managed via ViewletManagers.</p><p>RessourceRegistries? Now known as RessoureLibrary.</p><p>â€¦ and so on â€¦ and so on â€¦</p><p>But at the same time the Plone guys push their stuff<br
/> more and more towards the proven Z3-technologies -<br
/> and by handing over Z3 the framework responsibilities<br
/> the Plone community again can concentrate on being</p><p>the big shot at their homeground -<br
/> to provide you with the â€œMacOS of CMSesâ€<br
/> (well at least thatâ€™s what Limi told me <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p><p>I also appreciate the other web frameworks<br
/> in Python world &#8211; and Iâ€™m happy to see that<br
/> there will be a â€œWebFrameworkâ€-Track during<br
/> Europython this year where zopies, djangistas<br
/> and turbogearianos and all those funky-stuffistas<br
/> will get into fruitful</p><p>discussions about solutions. Iâ€™m really<br
/> looking forward to this meeting since<br
/> we can learn a lot from each other<br
/> if we leave our minds open for the NEW.</p><p>â€¦. and now for something completely different â€¦.</p><p>There is so much more to say about this marvellous<br
/> piece of software (like the integration<br
/> of other templating languages like meld or clarity<br
/> or the integration of standards like Java-like Portlet-Stuff or</p><p>WFMC &#8211; the Workflow-Coalition &#8211; and and and)<br
/> but let me come to an end, since itâ€™s really late<br
/> and I need some sleep:</p><p>I work for 20 years with software and applications.<br
/> Zope3 is one of the most professionall, mature<br
/> and qualitative outstanding frameworks I saw.</p><p>Itâ€™s really fun to work with, if you have a sense for<br
/> lasting quality solutions, if you want to be<br
/> proud of the stuff you created.</p><p>Thanx for your patience + Good night,</p><p>Holger @ Germany</p><p>PS: If youâ€™ve got any specific question about Zope3,<br
/> drop me a not at <a
href="mailto:booradley at web.de.">booradley at web.de.</a> Or visit some<br
/> of the links in my rant. Or subscribe<br
/> to the Zope3-User-Newsgroups and ask your questions.<br
/> This world is really full of possibilities <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p></div><div
class="commentname"> Holger Froebe&nbsp;February 8, 2006<br
/> 6:13 pm</p></div><div
class="commenttext"><p>Ah, and I forgot &#8211; the collaborative development<br
/> of my favourite Linux distro (Ubuntu)<br
/> is managed by a Zope3-Application -</p><p>see <a
href="https://launchpad.net/" rel="nofollow">http://launchpad.net</a> â€¦</p><p>or the shiny Z3-based Schooltool if you want<br
/> to manage ressources and calendars â€¦<br
/> see <a
href="http://www.schooltool.org" rel="nofollow" class="broken_link">http://www.schooltool.org</a></p><p>Zope3 is really smoking <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p></div><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F15%2Fwhy-zope-3-is-just-great.html&amp;linkname=Why%20Zope%203%20is%20just%20great" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F15%2Fwhy-zope-3-is-just-great.html&amp;linkname=Why%20Zope%203%20is%20just%20great" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F15%2Fwhy-zope-3-is-just-great.html&amp;linkname=Why%20Zope%203%20is%20just%20great" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F15%2Fwhy-zope-3-is-just-great.html&amp;linkname=Why%20Zope%203%20is%20just%20great" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F15%2Fwhy-zope-3-is-just-great.html&amp;linkname=Why%20Zope%203%20is%20just%20great" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F15%2Fwhy-zope-3-is-just-great.html&#038;title=Why%20Zope%203%20is%20just%20great" data-a2a-url="https://bogdan.org.ua/2007/03/15/why-zope-3-is-just-great.html" data-a2a-title="Why Zope 3 is just great"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2007/03/15/why-zope-3-is-just-great.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Drupal internationalization (i18n) and localization (l10n)</title><link>https://bogdan.org.ua/2007/03/10/drupal-internationalization-i18n-and-localization-l10n.html</link> <comments>https://bogdan.org.ua/2007/03/10/drupal-internationalization-i18n-and-localization-l10n.html#comments</comments> <pubDate>Sat, 10 Mar 2007 13:48:32 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[i18n]]></category> <category><![CDATA[l10n]]></category> <guid
isPermaLink="false">http://www.bogdan.org.ua/2007/03/10/drupal-internationalization-i18n-and-localization-l10n.html</guid> <description><![CDATA[This is a collection of links related to the multiple-language content in Drupal CMS. i18n module i18n: Getting the whole thing to work : http://drupal.org/node/81094 Patch: Translations of menu titles and descriptions: http://drupal.org/node/70919 Translated links: http://drupal.org/node/67814 i18n: menu not expanding with URL-Alias: http://drupal.org/node/80820 There was an alternative module to i18n, but I cannot find it [&#8230;]]]></description> <content:encoded><![CDATA[<p>This is a collection of links related to the multiple-language content in Drupal CMS.</p><p><a
href="https://drupal.org/project/i18n" class="broken_link" rel="nofollow">i18n module</a><br
/> i18n: Getting the whole thing to work : <a
href="https://drupal.org/node/81094" class="broken_link" rel="nofollow">http://drupal.org/node/81094</a><br
/> Patch: Translations of menu titles and descriptions: <a
href="https://drupal.org/node/70919" class="broken_link" rel="nofollow">http://drupal.org/node/70919</a><br
/> Translated links: <a
href="https://drupal.org/node/67814" class="broken_link" rel="nofollow">http://drupal.org/node/67814</a><br
/> i18n: menu not expanding with URL-Alias: <a
href="https://drupal.org/node/80820" class="broken_link" rel="nofollow">http://drupal.org/node/80820</a></p><p>There was an alternative module to i18n, but I cannot find it at the moment.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F10%2Fdrupal-internationalization-i18n-and-localization-l10n.html&amp;linkname=Drupal%20internationalization%20%28i18n%29%20and%20localization%20%28l10n%29" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F10%2Fdrupal-internationalization-i18n-and-localization-l10n.html&amp;linkname=Drupal%20internationalization%20%28i18n%29%20and%20localization%20%28l10n%29" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F10%2Fdrupal-internationalization-i18n-and-localization-l10n.html&amp;linkname=Drupal%20internationalization%20%28i18n%29%20and%20localization%20%28l10n%29" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F10%2Fdrupal-internationalization-i18n-and-localization-l10n.html&amp;linkname=Drupal%20internationalization%20%28i18n%29%20and%20localization%20%28l10n%29" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F10%2Fdrupal-internationalization-i18n-and-localization-l10n.html&amp;linkname=Drupal%20internationalization%20%28i18n%29%20and%20localization%20%28l10n%29" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2007%2F03%2F10%2Fdrupal-internationalization-i18n-and-localization-l10n.html&#038;title=Drupal%20internationalization%20%28i18n%29%20and%20localization%20%28l10n%29" data-a2a-url="https://bogdan.org.ua/2007/03/10/drupal-internationalization-i18n-and-localization-l10n.html" data-a2a-title="Drupal internationalization (i18n) and localization (l10n)"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2007/03/10/drupal-internationalization-i18n-and-localization-l10n.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Drupal 5.0 beta-1 available since October, 31</title><link>https://bogdan.org.ua/2006/11/06/drupal-50-beta-1-available-since-october-31.html</link> <comments>https://bogdan.org.ua/2006/11/06/drupal-50-beta-1-available-since-october-31.html#comments</comments> <pubDate>Mon, 06 Nov 2006 02:54:23 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Web]]></category> <guid
isPermaLink="false">http://www.bogdan.org.ua/2006/11/06/drupal-50-beta-1-available-since-october-31.html</guid> <description><![CDATA[Well, not a news, actually, but this one seems important. Following the discussions, installation and administrative interface became much simpler, and thus easier for newbies. Other first-impression change is said to be the new default theme, which looks good as well. I will surely check this new release out very soon, but for now you [&#8230;]]]></description> <content:encoded><![CDATA[<p>Well, not a news, actually, but this one seems important.</p><p>Following the <a
href="https://drupal.org/drupal-5.0-beta1" class="broken_link" rel="nofollow">discussions</a>, installation and administrative interface became much simpler, and thus easier for newbies. Other first-impression change is said to be the new default theme, which looks good as well.</p><p>I will surely check this new release out very soon, but for now you can <a
href="https://drupal.org/files/projects/drupal-5.0-beta1.tar.gz" class="broken_link" rel="nofollow">try one</a> yourself.</p><p><ins
datetime="2006-12-04T14:19:15+00:00">Update:</ins> <a
href="https://drupal.org/drupal-5.0-beta2" class="broken_link" rel="nofollow">beta-2</a> is available since November, 28, with over 160 bugs fixed.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F11%2F06%2Fdrupal-50-beta-1-available-since-october-31.html&amp;linkname=Drupal%205.0%20beta-1%20available%20since%20October%2C%2031" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F11%2F06%2Fdrupal-50-beta-1-available-since-october-31.html&amp;linkname=Drupal%205.0%20beta-1%20available%20since%20October%2C%2031" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F11%2F06%2Fdrupal-50-beta-1-available-since-october-31.html&amp;linkname=Drupal%205.0%20beta-1%20available%20since%20October%2C%2031" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F11%2F06%2Fdrupal-50-beta-1-available-since-october-31.html&amp;linkname=Drupal%205.0%20beta-1%20available%20since%20October%2C%2031" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F11%2F06%2Fdrupal-50-beta-1-available-since-october-31.html&amp;linkname=Drupal%205.0%20beta-1%20available%20since%20October%2C%2031" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2006%2F11%2F06%2Fdrupal-50-beta-1-available-since-october-31.html&#038;title=Drupal%205.0%20beta-1%20available%20since%20October%2C%2031" data-a2a-url="https://bogdan.org.ua/2006/11/06/drupal-50-beta-1-available-since-october-31.html" data-a2a-title="Drupal 5.0 beta-1 available since October, 31"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2006/11/06/drupal-50-beta-1-available-since-october-31.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Gallery2 AdSense: no module?</title><link>https://bogdan.org.ua/2006/10/01/gallery2-adsense-no-module-how-to-insert.html</link> <comments>https://bogdan.org.ua/2006/10/01/gallery2-adsense-no-module-how-to-insert.html#comments</comments> <pubDate>Sun, 01 Oct 2006 14:35:49 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[AdSense]]></category> <category><![CDATA[gallery2]]></category> <category><![CDATA[how-to]]></category> <category><![CDATA[module]]></category> <guid
isPermaLink="false">http://www.bogdan.org.ua/2006/10/01/gallery2-adsense-no-module.html</guid> <description><![CDATA[If you ever need to add AdSense units to your Gallery2 installation, and find no module for this &#8211; try following the text below. I compiled it from several sources (primary menalto.com Gallery2 forum), and did everything written here myself here. Primary source of information was this post, but I recommend that you follow instructions [&#8230;]]]></description> <content:encoded><![CDATA[<p>If you ever need to add AdSense units to your Gallery2 installation, and find no module for this &#8211; try following the text below. I compiled it from several sources (primary menalto.com Gallery2 forum), and did everything written here myself <a
href="http://gallery.bogdan.org.ua/main.php">here</a>.</p><p>Primary source of information was this <a
href="http://galleryproject.org/node/51408" class="broken_link" rel="nofollow">post</a>, but I recommend that you follow instructions here.</p><p>To add AdSense to your Gallery2 sidebar (when using the Matrix theme as a sample):<span
id="more-39"></span></p><ol><li>copy themes/matrix/templates/sidebar.tpl to theme/matrix/templates/local/sidebar.tpl on your server. This is needed to preserve your modifications when the Matrix theme will be upgraded.</li><li>any further modifications should be done in your newly copied local/sidebar.tpl file.</li><li>create the file which will contain all your AdSense code &#8211; e.g., let it be adsense_160x600.tpl for the Wide Scyscraper format. Put all your AdSense code into that file, and upload the file to your theme/matrix/templates/local/ folder on the server.</li><li>now edit the sidebar.tpl file. My original file looked like this:[smarty]<div
id="gsSidebar" class="gcBorder1"> {* Show the sidebar blocks chosen for this theme *}<br
/> {foreach from=$theme.params.sidebarBlocks item=block}<br
/> {g->block type=$block.0 params=$block.1 class=&#8221;gbBlock&#8221;}<br
/> {/foreach}<br
/> {g->block type=&#8221;core.NavigationLinks&#8221; class=&#8221;gbBlock&#8221;}</div><p>[/smarty] I added [smarty]{if $user.isGuest == 1}<br
/> {* adsense code *}<br
/> {g->theme include=&#8221;adsense_160x600.tpl&#8221; class=&#8221;gbBlock&#8221;}<br
/> {/if}[/smarty] and final file looked like this:[smarty]{*<br
/> * $Revision: 1.2 $<br
/> * If you want to customize this file, do not edit it directly since future upgrades<br
/> * may overwrite it.  Instead, copy it into a new directory called &#8220;local&#8221; and edit that<br
/> * version.  Gallery will look for that file first and use it if it exists.<br
/> *}</p><div
id="gsSidebar" class="gcBorder1"> {* Show the sidebar blocks chosen for this theme *}<br
/> {foreach from=$theme.params.sidebarBlocks item=block}<br
/> {g->block type=$block.0 params=$block.1 class=&#8221;gbBlock&#8221;}<br
/> {/foreach}<br
/> {g->block type=&#8221;core.NavigationLinks&#8221; class=&#8221;gbBlock&#8221;}<br
/> {if $user.isGuest == 1}<br
/> {* adsense code *}<br
/> {g->theme include=&#8221;adsense_160x600.tpl&#8221; class=&#8221;gbBlock&#8221;}<br
/> {/if}</div><p>[/smarty]</li><li>well, basically you are done. If you need/want to, you can wrap the inserted code into some styled container, to define the look of the block, like:[smarty]<div
id="adBar" class="gcBorder1">{if $user.isGuest == 1}<br
/> {* adsense code *}<br
/> {g->theme include=&#8221;adsense_160x600.tpl&#8221; class=&#8221;gbBlock&#8221;}<br
/> {/if}</div><p>[/smarty]</li><li>you can use any AdSense format you like, but you must mind the width of the sidebar in your theme &#8211; so that site layout is not broken by too wide AdSense units.</li></ol><p>Finally, some more hints and explanations.</p><p>The smarty variables for users in Gallery2 are:</p><ul><li>$user.isGuest</li><li>$user.isRegisteredUser</li><li>$user.isAdmin</li></ul><p>As you might have noticed, in the code above AdSense unit is shown ONLY IF the page visitor is a Guest. Thus ads will not be shown to Registered Users and Admin. I did not manage to find this condition in Google&#8217;s AdSense Policy, but the source post author states that showing Google Ads in password-protected areas is a violation of Google&#8217;s Terms Of Service (TOS). Again &#8211; I did not find that, but in good faith I provide the code which limits ads to guest-only users. If you want to show ads to any user class &#8211; just remove the first {if} and last {/if} lines from the code. Any knowledgeable comments on this (preferrably with URLs) are very welcome, as personally I see nothing bad in putting AdSense onto password-protected pages in the case of the Gallery, where photos are the main type of content.</p><p>To add multiple ad units &#8211; create a single file for each distinct ad format/type you want to use, and include it using the code shown above. Just keep in mind limitations imposed by Google on the number of ad units of different types on a single page.</p><p>Hope this helps, and good luck to you.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F10%2F01%2Fgallery2-adsense-no-module-how-to-insert.html&amp;linkname=Gallery2%20AdSense%3A%20no%20module%3F" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F10%2F01%2Fgallery2-adsense-no-module-how-to-insert.html&amp;linkname=Gallery2%20AdSense%3A%20no%20module%3F" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F10%2F01%2Fgallery2-adsense-no-module-how-to-insert.html&amp;linkname=Gallery2%20AdSense%3A%20no%20module%3F" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F10%2F01%2Fgallery2-adsense-no-module-how-to-insert.html&amp;linkname=Gallery2%20AdSense%3A%20no%20module%3F" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F10%2F01%2Fgallery2-adsense-no-module-how-to-insert.html&amp;linkname=Gallery2%20AdSense%3A%20no%20module%3F" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2006%2F10%2F01%2Fgallery2-adsense-no-module-how-to-insert.html&#038;title=Gallery2%20AdSense%3A%20no%20module%3F" data-a2a-url="https://bogdan.org.ua/2006/10/01/gallery2-adsense-no-module-how-to-insert.html" data-a2a-title="Gallery2 AdSense: no module?"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2006/10/01/gallery2-adsense-no-module-how-to-insert.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>PHP-Nuke 6.0/6.5 to Drupal 4.7.x/5.x migration (conversion)</title><link>https://bogdan.org.ua/2006/09/08/php-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html</link> <comments>https://bogdan.org.ua/2006/09/08/php-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html#comments</comments> <pubDate>Fri, 08 Sep 2006 15:29:56 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[how-to]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[conversion]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[import]]></category> <category><![CDATA[migration]]></category> <category><![CDATA[module]]></category> <category><![CDATA[php-nuke]]></category> <category><![CDATA[phpnuke]]></category> <category><![CDATA[utf8]]></category> <guid
isPermaLink="false">http://www.bogdan.org.ua/2006/09/08/php-nuke-60-to-drupal-473-migration-conversion.html</guid> <description><![CDATA[Post last updated: April 18, 2010. Now there is a Drupal 6.x module available. It is in no way related to the migrate script(s) below. The newest script version migrates from PHP-Nuke 6.5 to Drupal 5.x. Download the latest version of the migration script. In 2002 I set up a PHPNuke-6.0 &#8211; based portal. Eventually [&#8230;]]]></description> <content:encoded><![CDATA[<p><em>Post last updated: April 18, 2010.</em></p><p><ins
datetime="2010-04-18T17:54:34+00:00">Now</ins> there is a <a
href="https://drupal.org/project/phpnuke2drupal" class="broken_link" rel="nofollow">Drupal 6.x module available</a>. It is in no way related to the migrate script(s) below.</p><p><ins
datetime="2008-02-19T03:34:21+00:00" title="Note: other version combinations might work as well with no or little modifications. It is known (via bxtra.net) that the script also works for PHPNuke 7.8 to Drupal 5.7 migration - though it isn't known if any modifications were necessary.">The newest script version migrates from PHP-Nuke 6.5 to Drupal 5.x</ins>.<br
/> <a
href="#latest">Download the latest version of the migration script</a>.</p><p>In 2002 I set up a PHPNuke-6.0 &#8211; based portal. Eventually it died due to the lack of time investments and support from collaborators. Now, when time came to revive the project, I made a search and decided to use Drupal as a base CMS for the portal.<br
/> In order to migrate userbase from an old portal to the new Drupal-powered one, and following the <a
href="https://drupal.org/node/498" title="Migrating from PHPNuke" class="broken_link" rel="nofollow">topic</a> at drupal.org, I found a <a
href="http://quillem.com/nuke2drupal" title="original nuke_7.0 to drupal_4.6 script">script</a> and its modification.<br
/> I used it to migrate only users, and made some cosmetic changes:</p><ul><li>added options for custom phpnuke table prefixes</li><li>default user name is now = uname (login), not &#8216;temp_name&#8217;, as before</li><li>I replaced hard-coded links to &#8216;migrate.php&#8217; with links to $_SERVER['PHP_SELF'], so that if you rename the script you don&#8217;t have any problems with that <img
src="https://bogdan.org.ua/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></li><li>now forum topics should not be promoted to the main page (changed 1 to 0 as hinted by Alexis)</li></ul><p>Finally, I would like to thank both <a
href="http://quillem.com/">Karthik Kumar</a> for the original script and Alexis Bellido for the 6.0_to_4.7 modification.<br
/> <span
id="more-24"></span></p><p><ins
datetime="2007-02-25T08:46:18+00:00">Update:</ins> Waldo updated the migration script.<br
/> Here are the changes:</p><ul><li>imports from (a security-patched) Nuke 6.5 -> Drupal 5.1</li><li>imports story categories into Drupal taxonomy</li><li>incorporates phpnuke &#8220;Contributor writes&#8230;&#8221; into story</li><li>incorporates phpnuke admin story &#8220;note&#8221;</li><li>imports polls (does not import record of who already voted.  You can easily &#8220;close&#8221; old phpnuke polls via Admin page.  I left them open.)</li><li>imports poll comments</li><li>imports *anonymous* comments for stories, fora, &#038; polls</li><li>imports anonymous forum posts</li><li>filters BBCode to make semi-compatible with Drupal BBCode module</li><li>uses Drupal 5.0 API, and must be run from drupal root directory (/drupal-5/, for example)</li></ul><p>Thanks to Waldo for his work!</p><p><ins
datetime="2007-08-19T15:55:21+00:00"><strong>Latest update:</strong></ins> Waldo sent the newest, improved version of the PHP-Nuke-2-Drupal conversion script. Here is Waldo&#8217;s description:</p><blockquote><p> New Fixes:</p><ul><li>retain original user registration date &#038; last visit   4/22/07</li><li>fixed user migration bug which could result in screwed max_uid in session table   4/22/07</li><li>store anonymous forum posts names in the log for future compatibility w/Drupal 6   7/16/07</li><li>uses the &#8220;tidy&#8221; extension (if installed) in php 5.x to clean up the HTML of postings &#038; stories  7/30/07</li><li>bug fixes (possibly) related to drupal 5.2 where the fora had the wrong &#8220;changed&#8221; date resulting in misordered node lists. 7/30/07</li><li>polls properly remember date of last comment 7/30/07</li></ul><p>If you have the &#8220;tidy&#8221; PHP extension, it should close all open HTML tags and stuff in stories.</p></blockquote><p><ins
datetime="2008-02-19T15:23:55+00:00">update:</ins> I added to the script some more debug messages in case something goes wrong (as <a
href="http://bogdan.org.ua/2006/09/08/php-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html#comment-39615">recommended by me</a>) &#8211; that pushed the version up to 0.03.</p><p>Also, now MySQL connection collation is set to utf8 before doing anything &#8211; this <em>should</em> fix the problems with non-English characters in the imported texts (especially accented/umlauted/etc characters). Thus I upped the version to 0.04. For reference and in case 0.04 doesn&#8217;t work for you, I keep the older versions as well.</p><p><a
name="latest"> </a><br
/> Download the <a
href="http://bogdan.org.ua/wp-content/uploads/2008/02/phpnuke2drupal-5.x-0.04-w.zip" title="PHP-Nuke 6.0/6.5 to Drupal 4.7.x/5.x migration (conversion)">latest phpnuke2drupal-5.x-0.04-W.zip</a> or the <a
href="http://bogdan.org.ua/wp-content/uploads/2008/02/phpnuke2drupal-5.x-0.04-w.tar.gz" title="PHP-Nuke 6.0/6.5 to Drupal 4.7.x/5.x migration (conversion)">latest tar-gzipped version of the phpnuke2drupal migration script</a>.</p><p><ins
datetime="2010-01-03T21:35:38+00:00">update:</ins> to import Reviews and WebLinks from PHPNuke to Drupal, have a look at <a
href="https://drupal.org/node/202528#comment-724422" class="broken_link" rel="nofollow">this</a> and <a
href="https://drupal.org/node/202528#comment-689245" class="broken_link" rel="nofollow">this</a> comments; you will need CCK, and might need CCK Link Field to import reviews/weblinks.</p><p><u>Previous (older) versions</u>:<br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2008/01/phpnuke2drupal-5.x-0.03-W.zip">phpnuke2drupal-5.x-0.03-W.zip</a><br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2008/01/phpnuke2drupal-5.x-0.03-W.tar.gz">phpnuke2drupal-5.x-0.03-W.tar.gz</a><br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2007/08/phpnuke2drupal-5.x-0.02-w.zip">phpnuke2drupal-5.x-0.02-w.zip</a><br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2007/08/phpnuke2drupal-5.x-0.02-w.tar.gz">phpnuke2drupal-5.x-0.02-w.tar.gz</a><br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2007/02/phpnuke2drupal-5.x-0.01-W.rar">phpnuke2drupal-5.x-0.01 (VValdo&#8217;s huge improvements first appear here)</a><br
/> <a
href="http://bogdan.org.ua/wp-content/uploads/2006/09/migrate_phpnuke_60_to_drupal_47.txt" title="download">first version with my minor modifications</a></p><p><strong>IMPORTANT:</strong> for migration to work you will need MySQL version to be >= 4.1.1. Earlier versions do not support the STR_TO_DATE() function, used in the migration script.</p><p><strong>IMPORTANT:</strong> if you want to migrate forum entries from PHPNuke to Drupal, be sure to setup forum in your Drupal installation first &#8211; otherwise migration of forum entries will fail. See comments 13-17 below for user experiences.</p><p>If you do not get any help here, there is also a drupal.org <a
href="https://drupal.org/node/498" title="Migrating from PHPNuke" class="broken_link" rel="nofollow">migration thread</a>. I will keep this page updated for as long as I get new information about the migration script.</p><p>If you encounter any problems during migration &#8211; just search/scan the comments, your problem might have been already solved by someone else.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F09%2F08%2Fphp-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html&amp;linkname=PHP-Nuke%206.0%2F6.5%20to%20Drupal%204.7.x%2F5.x%20migration%20%28conversion%29" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F09%2F08%2Fphp-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html&amp;linkname=PHP-Nuke%206.0%2F6.5%20to%20Drupal%204.7.x%2F5.x%20migration%20%28conversion%29" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F09%2F08%2Fphp-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html&amp;linkname=PHP-Nuke%206.0%2F6.5%20to%20Drupal%204.7.x%2F5.x%20migration%20%28conversion%29" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F09%2F08%2Fphp-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html&amp;linkname=PHP-Nuke%206.0%2F6.5%20to%20Drupal%204.7.x%2F5.x%20migration%20%28conversion%29" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F09%2F08%2Fphp-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html&amp;linkname=PHP-Nuke%206.0%2F6.5%20to%20Drupal%204.7.x%2F5.x%20migration%20%28conversion%29" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2006%2F09%2F08%2Fphp-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html&#038;title=PHP-Nuke%206.0%2F6.5%20to%20Drupal%204.7.x%2F5.x%20migration%20%28conversion%29" data-a2a-url="https://bogdan.org.ua/2006/09/08/php-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html" data-a2a-title="PHP-Nuke 6.0/6.5 to Drupal 4.7.x/5.x migration (conversion)"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2006/09/08/php-nuke-6-06-5-to-drupal-4-7-x5-x-migration-conversion.html/feed</wfw:commentRss> <slash:comments>77</slash:comments> </item> <item><title>Which CMS is better</title><link>https://bogdan.org.ua/2006/08/03/which-cms-is-better.html</link> <comments>https://bogdan.org.ua/2006/08/03/which-cms-is-better.html#comments</comments> <pubDate>Thu, 03 Aug 2006 07:18:02 +0000</pubDate> <dc:creator><![CDATA[Bogdan]]></dc:creator> <category><![CDATA[CMS]]></category> <category><![CDATA[drupal]]></category> <category><![CDATA[Mambo]]></category> <category><![CDATA[Typo3]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://www.bogdan.org.ua/2006/08/03/which-cms-is-better.html</guid> <description><![CDATA[When you have a new web-project just about to be started, you frequently face the problem of the CMS selection &#8211; &#8216;Which CMS is better&#8217;? There&#8217;s a hundred and more various CMS out there. To name just a few &#8211; PHP-Nuke, PostNuke, Mambo, Joomla, Drupal, e107, XOOPS, Nucleus, Typo3, Xaraya, YACS! (visit http://www.opensourcecms.com/ for much [&#8230;]]]></description> <content:encoded><![CDATA[<p>When you have a new web-project just about to be started, you frequently face the problem of the CMS selection &#8211; &#8216;Which CMS is better&#8217;? There&#8217;s a hundred and more various CMS out there. To name just a few &#8211; PHP-Nuke, PostNuke, Mambo, Joomla, Drupal, e107, XOOPS, Nucleus, Typo3, Xaraya, YACS! (visit <a
href="http://www.opensourcecms.com/"  title="Open Source CMS" target="_blank">http://www.opensourcecms.com/</a> for much more and try for yourself).</p><p>If you gooogle this problem, you will get loads of forums discussing topics like &#8216;Mambo vs Drupal&#8217;, &#8216;PHP-Nuke vs PostNuke&#8217; etc. But, to be sure, this &#8216;source&#8217; of information is not likely to really help you choose. What you need is a good in-depth overview of the systems.<br
/> <span
id="more-8"></span><br
/> And I found one at <a
href="http://www.ibm.com/developerworks/ibm/library/i-osource1/index.html" title="Using open source software to design, develop and deploy a collaborative web site" target="_blank">IBM&#8217;s web-site</a>. I strongly recommend reading it if you need to choose a CMS. It&#8217;s fresh (July 11, 2006), and just good. Here&#8217;s a CMS comparison table from that address (copyrights belong to respective owners):</p><div
style="text-align: center;"><img
src="http://bogdan.org.ua/wp-content/uploads/2006/08/cms_comparison.gif" alt="CMS comparison table" title="CMS comparison table" width="361" height="252" class="size-full wp-image-539" /></div><p>If you&#8217;d like to, you can also read <a
href="http://www.ibm.com/developerworks/ibm/library/i-osource2/" title="using open source software ..." target="_blank">Part 2</a>, or the whole series of articles on IBM&#8217;s web-service design process, titled &#8220;Using open source software to design, develop, and deploy a collaborative Web site&#8221;. In the series, there are also articles describing the use of Eclipse, Apache, PHP, MySQL and phpMyAdmin for the collaborative web-site creation.</p><p><ins
datetime="2013-07-09T19:55:10+00:00">Update</ins>: for some reason :), IBM had taken down parts 1 and 2; now only parts <a
href="http://www.ibm.com/developerworks/opensource/tutorials/i-osource3/index.html">three</a> and <a
href="http://www.ibm.com/developerworks/opensource/tutorials/i-osource4/index.html">four</a> are available.</p><p><a
class="a2a_button_citeulike" href="https://www.addtoany.com/add_to/citeulike?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F08%2F03%2Fwhich-cms-is-better.html&amp;linkname=Which%20CMS%20is%20better" title="CiteULike" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F08%2F03%2Fwhich-cms-is-better.html&amp;linkname=Which%20CMS%20is%20better" title="Pocket" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_kindle_it" href="https://www.addtoany.com/add_to/kindle_it?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F08%2F03%2Fwhich-cms-is-better.html&amp;linkname=Which%20CMS%20is%20better" title="Kindle It" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_evernote" href="https://www.addtoany.com/add_to/evernote?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F08%2F03%2Fwhich-cms-is-better.html&amp;linkname=Which%20CMS%20is%20better" title="Evernote" rel="nofollow noopener" target="_blank"></a><a
class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fbogdan.org.ua%2F2006%2F08%2F03%2Fwhich-cms-is-better.html&amp;linkname=Which%20CMS%20is%20better" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a
class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fbogdan.org.ua%2F2006%2F08%2F03%2Fwhich-cms-is-better.html&#038;title=Which%20CMS%20is%20better" data-a2a-url="https://bogdan.org.ua/2006/08/03/which-cms-is-better.html" data-a2a-title="Which CMS is better"><img
src="https://static.addtoany.com/buttons/share_save_120_16.png" alt="Share"></a></p>]]></content:encoded> <wfw:commentRss>https://bogdan.org.ua/2006/08/03/which-cms-is-better.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>