<?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>Leong &#187; Python</title>
	<atom:link href="http://www.leong.nl/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.leong.nl</link>
	<description>enjoy life</description>
	<lastBuildDate>Wed, 09 Nov 2011 09:03:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Plone conference 2011 &#8211; day 2 and 3</title>
		<link>http://www.leong.nl/2011/11/plone-conference-day-2-and-3/</link>
		<comments>http://www.leong.nl/2011/11/plone-conference-day-2-and-3/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 08:36:09 +0000</pubDate>
		<dc:creator>Kim Chee Leong</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.leong.nl/?p=297</guid>
		<description><![CDATA[My notes for the second and third day at the Plone conference in San Francisco. How to think in Plone (when those  about you think in Drupal) Dan Jacka Let&#8217;s make switching to Plone easier Plone content is naturally structured, drupal content has nodes indentified by numbers. For Plone lots of content is a prerequisite Confusions [...]]]></description>
			<content:encoded><![CDATA[<p>My notes for the second and third day at the <a href="http://ploneconf.org/">Plone conference in San Francisco</a>.</p>
<p><span style="text-decoration: underline;">How to think in Plone (when those  about you think in Drupal)</span></p>
<p>Dan Jacka</p>
<ul>
<li>Let&#8217;s make switching to Plone easier</li>
<li>Plone content is naturally structured, drupal content has nodes indentified by numbers.</li>
<li>For Plone lots of content is a prerequisite</li>
<li>Confusions when coming from Drupal; content &#8216;lives&#8217; where it appears and restrict locals adds with permission</li>
<li>&#8216;micro components&#8217; are powerful ways to add functionality</li>
<li>Use micro components like dexterity behaviours, <a href="http://plone.org/products/content-lead-image">collective.contentleadimage</a>, <a href="http://pypi.python.org/pypi/collective.watcherlist">collective.watcherlist</a>. Small <wbr>products are good!</wbr></li>
<li>Big products are bad, if you only need to use a part and get unnecessary stuff you don&#8217;t need.</li>
<li>With <a title="ZCA" href="http://pypi.python.org/pypi/zope.component">Zope Component Architecture</a> you <wbr>can override specific parts <wbr>in Plone, like the <wbr>breadcrumbs </wbr></wbr></wbr></li>
<li>Store data; With context use <a href="http://pypi.python.org/pypi/zope.annotation">zope annotations</a> and <a href="http://pypi.python.org/pypi/archetypes.schemaextender">archetypes.schemaextender</a>. <wbr>Without context use plone.app.<wbr>registry, portal_properties <wbr>and local utilities</wbr></wbr></wbr></li>
<li>See:  <a title="http://www.martinaspeli.net/articles/dcworkflows-hidden-gems" href="http://www.martinaspeli.net/articles/dcworkflows-hidden-gems" target="_blank">http://www.martinaspeli.net/<wbr>articles/dcworkflows-hidden-<wbr>gems</wbr></wbr></a></li>
</ul>
<p><span style="text-decoration: underline;">ZODB tips and tricks</span></p>
<p>Carlos de la Guardia</p>
<ul>
<li>See <a href="http://pypi.python.org/pypi/collective.zodbbrowser">collective.zodbbrowser</a> <wbr>Provides access to all objects <wbr>and their attributes</wbr></wbr></li>
<li>Eye is an external tool to <wbr>browse the database, without <wbr>having to install (in buildout)</wbr></wbr></li>
<li>OMG POSKey error: first backup! Fire up debugger, see  <a href="http://plonechix.blogspot.com/2009/12/definitive-guide-to-poskeyerror.html" target="_blank">http://plonechix.blogspot.<wbr>com/2009/12/definitive-guide-<wbr>to-poskeyerror.html</wbr></wbr></a></li>
<li>Get rid of persistent utilities, see <a href="http://pypi.python.org/pypi/wildcard.fixpersistentutilities">wildcard.<wbr>fixpersistentutilities</wbr></a></li>
<li>Always backup first before trying to fix anything!</li>
<li>Restore data / do an undo from data that is deleted a long time ago. Use <a href="http://pypi.python.org/pypi/zc.beforestorage">zc.beforestorage</a>, a wrapper around storage to show site like it was on a certain date</li>
<li><a href="http://pypi.python.org/pypi/RelStorage">RelStorage</a>, drop in replacement for file storage. Designed for high volume sites, multiple zodb instances can share the same database. Starts quickly regardless of db size. Supports undo, packing blobs. Capable of fail-over to replicated databases.</li>
<li><a href="http://pypi.python.org/pypi/zc.zodbactivitylog">Zc.zodbactivitylog</a> (track db actvity), <a href="http://pypi.python.org/pypi/zodbshootout">zodbshootout</a> (benchmarks zeo vs relstorage), <a href="http://pypi.python.org/pypi/zodbupdate">zodbupdate</a> (<wbr>helps you rename classes), <a href="http://pypi.python.org/pypi/dm.historical">dm.<wbr>historical</wbr></a> (get history of <wbr>objects), <a href="http://pypi.python.org/pypi/dm.zodb.repair">dm.zodb.repair</a> (<wbr>restore lost objects)</wbr></wbr></wbr></li>
<li>See <a href="http://pypi.python.org/pypi/Products.ZMIntrospection">Products.ZMIntrospection</a> to look in objects</li>
<li>Use PersistentDict for small amount of items, use OOBTree (and friends) for large amounts</li>
<li>Use BTrees.length instead of len, much faster and avoids conflict <wbr>errors</wbr></li>
<li>Use <a href="http://pypi.python.org/pypi/zc.zlibstorage">zc.zlibstorage</a> for dbs with lots of text, saves 60/70% of storage</li>
<li>Use <a href="http://pypi.python.org/pypi/zc.zodbdgc">zc.zodbgc</a> an inverse graph of db</li>
<li>Increase the ZEO client cache size, when everything is crumbeling around you. When increasing round <wbr>trips to ZODB are increased   </wbr></li>
</ul>
<p>Carlos is writing a book on <wbr>the zodb: <a href="http://zodb.readthedocs.org/en/latest/index.html" target="_blank">http://zodb.<wbr>readthedocs.org/en/latest/<wbr>index.html</wbr></wbr></a> </wbr></p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Mistakes made and lessons learnt</span></p>
<p>Matt Hammilton And Matt Sital-Singh</p>
<ul>
<li>Use case a e-learning system, lot of content, users editing content but not necessary aware of it, lots of clustering of <wbr>load on resources</wbr></li>
<li> 30.000 user accounts, 160.<wbr>000 messages, QA objects etc</wbr></li>
<li>Don&#8217;t create  ghost content. If you need shared content, it can be a good idea to don&#8217;t use subsites but sync the content</li>
<li>Use optimization products. See experimental namespace; queryplan, contentcreation, daterangeindexoptimisations, aggresiveopaquesetup, indexing. Most of them aren&#8217;t <wbr>experimental anymore and are <wbr>included in plone 4.2</wbr></wbr></li>
<li>Lot&#8217;s of answers/questions in catalog. Up to 1.400.000 qa objects. Uhm sql? Or catalog <wbr>multiplex tool, separate <wbr>these objects from main <wbr>catalog.</wbr></wbr></wbr></li>
<li>Pre-load Catalog QueryPlan</li>
<li>Keep things you don&#8217;t need out of the catalog</li>
<li>If you know where something is &#8211; Don&#8217;t search for it. Hardcoding is ok</li>
<li>Use unrestrictedSearchResults if possible, the catalog has a <wbr>lot less work to do</wbr></li>
<li>Maybe should not have used Plone. A lot of the data is relational.</li>
</ul>
<p><span style="text-decoration: underline;">Beginner mistakes. Expert failures</span></p>
<p>Alan Runyan</p>
<p>Beginners:</p>
<ul>
<li>Use logging/sending email or long term persistence for error logs</li>
<li>Don&#8217;t mix dev/stage/prd concept/concerns</li>
<li>Don&#8217;t use directlyProvides or using the ZMI to apply marker interfaces</li>
<li>Do learn the profiler, see collective.stats (how many load/stores per request)</li>
<li>Don&#8217;t attempt to &#8216;normalize&#8217; the model</li>
<li>Willing to claim defeat and backtrack; <wbr>sometimes you simply do</wbr></li>
<li>When beginning development use an alpha, beta or RC. If the project is finished, chances are big a stable version is released.</li>
<li>Don&#8217;t be willing to take pain. Give feedback!</li>
</ul>
<p>Experts:</p>
<ul>
<li>Using components early, not writing reusable code is ok.</li>
<li>Overloading too much functionality in view</li>
<li>Mounting / splitting ZODB in effort to make things faster</li>
<li>Using Plone inappropriately. Security, workflows, staging/versioning, content, add-on components.</li>
<li>See book <a href="http://www.amazon.com/Scalability-Rules-Principles-Scaling-Sites/dp/0321753887" target="_blank">scalability rules</a></li>
<li>Unwilling to thorougly understand tradeoffs between ZODB/RDBMS</li>
<li>Masking over performance problems with caching</li>
</ul>
<p>Check out <a href="http://ploud.com/" target="_blank">ploud</a> and  <a href="https://github.com/ptahproject/ptah" target="_blank">ptah</a> .</p>
<p><a href="http://pypi.python.org/pypi/RelStorage">RelStorage</a> is stable and is used in many production sites. It works with PostgreSQL, MySQL and Oracle. The rationale to <wbr>use it is replication. SQL datbases can do this, the <wbr>ZODB can&#8217;t.</wbr></wbr></p>
]]></content:encoded>
			<wfw:commentRss>http://www.leong.nl/2011/11/plone-conference-day-2-and-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plone Conference 2011 &#8211; day 1</title>
		<link>http://www.leong.nl/2011/11/plone-conference-2011-day-1/</link>
		<comments>http://www.leong.nl/2011/11/plone-conference-2011-day-1/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 05:17:13 +0000</pubDate>
		<dc:creator>Kim Chee Leong</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.leong.nl/?p=286</guid>
		<description><![CDATA[My notes for the first day at the Plone conference in San Francisco. Dextery in the wild David Glick Case study of a complex Dexterity based solution, Net Impact Sales Force integration Membrane is used to represent users as content items. See dexterity.membrane Membrane the ugly: extra catalog with unneeded index Using dexterity with grok saves writing ZCML Content items [...]]]></description>
			<content:encoded><![CDATA[<p>My notes for the first day at the <a href="http://ploneconf.org">Plone conference in San Francisco</a>.</p>
<p><span style="text-decoration: underline;">Dextery in the wild</span></p>
<p>David Glick</p>
<ul>
<li>Case study of a complex <a href="http://pypi.python.org/pypi/plone.app.dexterity">Dexterity</a> based solution, Net Impact</li>
<li>Sales Force integration</li>
<li>Membrane is used to represent users as content items. See <a href="http://pypi.python.org/pypi/collective.salesforce.content">dexterity.membrane</a></li>
<li>Membrane the ugly: extra catalog with unneeded index</li>
<li>Using dexterity with grok saves writing ZCML</li>
<li>Content items are defined in (super) models</li>
<li>Content items have multiple forms with different fields. Auto form can&#8217;t be used, dexterity.EditForm class view is used.</li>
<li>See <em><a href="http://pypi.python.org/pypi/collective.z3cform.datagridfield/">collective.z3cform.datagridfield</a>,</em> <em><a href="http://pypi.python.org/pypi/eea.facetednavigation">eea.facetednavigation</a>, <a href="http://pypi.python.org/pypi/collective.salesforce.content">collective.salesforce.content </a></em> (dexterity behaviour)</li>
<li>Dexterity content types is only used for custom content. Existing content type are modified using schema extender.</li>
</ul>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Tsunami proof Plone</span></p>
<p>Adam Terrey</p>
<ul>
<li>Building high available &#8220;web scale&#8221; Plone platform for emergency services</li>
<li>Requirements; scale-ability, multisite, 99,99% reliability</li>
<li>The cloud isn&#8217;t reliable enough</li>
<li>CDNs are used for serving content</li>
<li>Even the slightest amount of caching let&#8217;s Plone &#8216;breathe&#8217; under heavy load</li>
<li>Everything in the hosting stack must be redundant. Expensive!</li>
<li>Datacenter should have multiple backbones</li>
<li>DB redundancy is done with <em><a href="http://pypi.python.org/pypi/RelStorage">relstorage</a></em></li>
<li>Funkload is used for stress testing</li>
</ul>
<p><span style="text-decoration: underline;">Progressive enhancement with wsgi </span></p>
<p>Matthew Wilkes</p>
<ul>
<li>Wsgi is just an API for handeling http requests</li>
<li>Use wsgi as middleware to add functionality to your application</li>
<li>Good wsgi libraries: <a href="http://docs.webob.org/en/latest/index.html">WebOb</a>, makes requests easy to deal with / <a href="http://docs.python.org/library/wsgiref.html">wsgirefWSGI</a> web server is in the std lib</li>
<li>The ZopeSkel equivilent for wsgi: <a href="http://code.google.com/p/wsgitemplates/">wsgitemplates</a></li>
<li>Example captcha&#8217;s, most form libraries have a different way to implement captcha&#8217;s</li>
<li>Uses wsgi middleware to rewrite the form</li>
<li>The backend application has a checkbox to see if the user is human. Middleware inserts a captcha widget. If theform is submitted the middleware checks the captcha input and on valid input the &#8217;is human&#8217; box is checked. On valid captcha input the form is stored, else an error is shown.</li>
<li>Probably overkill, more initial effort but can be easy to apply to customer sites.</li>
<li>Example for how to use wsgi middleware</li>
<li>See <a href="https://github.com/MatthewWilkes/islay.hardercaptcha">islay.simplecaptcha </a>and <a href="https://github.com/MatthewWilkes/islay.simplecaptcha">islay.hardercaptcha</a></li>
</ul>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Multiplayer Plone : Realtime collaboration </span></p>
<p>Geir Bækholt</p>
<ul>
<li>Jabber/XMPP protocol is used, realtime and asyn</li>
<li>Presence (status), message, iq (subscription),</li>
<li>Communication not directly thru Plone, but via javascript</li>
<li>Scales to large amount of users</li>
<li>Collaborative writing like Google Docs in ATContent and dexterity</li>
<li>Probably same diff match patch algorithm as in google docs</li>
<li>Future: content notifications, async queues with xmpp in plone, conferencing, video and audio chat.</li>
<li>See<a href="http://www.google.com/url?sa=t&amp;rct=j&amp;q=jarn.xmpp.buildout&amp;source=web&amp;cd=1&amp;ved=0CB4QFjAA&amp;url=https%3A%2F%2Fgithub.com%2Fggozad%2Fjarn.xmpp.buildout&amp;ei=S3KzTtKNK6_HsQLQxLD0Aw&amp;usg=AFQjCNGJcJs8H2rpVoTt4_GBBrcP2R6UTw&amp;sig2=g99rNqX0Udz8mRnyzhNIwg"> jarn.xmpp.buildout </a></li>
</ul>
<p>Killer feature/selling point for intranets and sites with lots of authors.</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Clone to Plone</span></p>
<p>Adam Terrey</p>
<ul>
<li>How to move from older &#8216;systems&#8217; to Plone. Migrating content, it&#8217;s pretty hard.</li>
<li>Funnelweb <a id="" href="http://plone.org/products/funnelweb" target="_blank">http://plone.org/products/funnelweb</a></li>
<li>A web crawler, uses mr.migrator and transmogrifyer</li>
<li>Buildout, command line or Plone TTW</li>
</ul>
<ul>
<li>Crawler is configurable; ignore regex, drop content using tal, amount of items, ignore robots meta</li>
<li>Crawler saves in cache on disk</li>
<li>Content extraction using xpath</li>
<li>Restructure content, tidy titles</li>
<li>Upload to Plone</li>
</ul>
<ul>
<li>What&#8217;s not converted: dynamic content, front pages, collections, portlets.</li>
<li>Diazo is used to create to look and feel of the old site</li>
<li>Used to migrate big sites, est time to migrate a big site is 3 / 4 days</li>
</ul>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;">Making Plone Mobile using Responsive Web Design</span></p>
<p>Rob Porter</p>
<ul>
<li>Responsive design, geared towards lot&#8217;s of devices (and screen sizes!)</li>
<li>Why design websites for mobile? Because there&#8217;s a huge increase on mobile device usage.</li>
<li>See <a id="" href="http://bostonglobe.com/" target="_blank">http://bostonglobe.com</a> <a id="" href="http://forefathersgroup.com/" target="_blank">http://forefathersgroup.com</a> and make the browser window smaller. The layout changes but content stays the same.</li>
<li>See <a id="" href="http://mediaqueri.es/" target="_blank">http://mediaqueri.es</a></li>
<li>Define a range of screen resolutions with @media, to cater different devices. Each resolution range has an own layout/style/css.</li>
<li>See <em><a href="http://plone.org/products/plonetheme.responsivetheme">plonetheme.responsivetheme</a></em>, makes Plone responsive</li>
<li>Book to buy Responsive Web design &#8211; Ethan Marcotte</li>
<li>First start with smallest screen sizes and then go bigger</li>
</ul>
<p>Creating websites using responsive desgn better than creating specific iDevice, Android, Blackberry apps.</p>
<p><span style="text-decoration: underline;">The future search of Plone</span></p>
<p>Sally Kleinfelt, Hanno Schlichting and someone from six feet up <img src='http://www.leong.nl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>Information retrieval</li>
<li>Two search engines ZCatalog and <a href="http://lucene.apache.org/solr/">Solr</a></li>
<li> ZCTextIndex is very simple, TextIndexNG adds multilingual, better parsing, binary transforms, synonyms.</li>
<li>Solr, based on Lucene Java search library. RESTful APIs. Powers twitter and wikipedia. An army of engineers working on it</li>
<li>Solr has way more search features than ZCatalog</li>
<li><a href="http://plone.org/products/collective.solr">Collective.solr</a> and <a href="http://pypi.python.org/pypi/alm.solrindex">alm.solrindex</a> are available add-ons. <a href="http://pypi.python.org/pypi/collective.recipe.solrinstance">Collective.recipe.solrinstance</a> as buildout recipe</li>
<li>Solr indexing is not done transactional, it takes a while before the contt is indexed</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.leong.nl/2011/11/plone-conference-2011-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buildout presentation @ PyGrunn2011</title>
		<link>http://www.leong.nl/2011/06/buildout-presentation-pygrunn2011/</link>
		<comments>http://www.leong.nl/2011/06/buildout-presentation-pygrunn2011/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 20:52:09 +0000</pubDate>
		<dc:creator>Kim Chee Leong</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Plone]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.leong.nl/?p=271</guid>
		<description><![CDATA[Van GW20e nieuws De PyGrunn &#8216;Python and friends&#8217; conferentie is gehouden in Het Paleis in Groningen en is bezocht door ruim 80 personen. ﻿Voorafgaand aan de conferentie was er een masterclass van Armin Ronacher. De conferentie is gericht op de Python programmeertaal en verwante technologie. Met sprekers uit Nederland en het buitenland was de Python-community [...]]]></description>
			<content:encoded><![CDATA[<p>Van <a href="http://www.goldmund-wyldebeast-wunderliebe.com/over-ons/news/pygrunn-2011-een-groot-succes">GW20e nieuws</a></p>
<blockquote><p>De PyGrunn &#8216;Python and friends&#8217; conferentie is gehouden in Het Paleis in Groningen en is bezocht door ruim 80 personen. ﻿Voorafgaand aan de conferentie was er een masterclass van Armin Ronacher. De conferentie is gericht op de Python programmeertaal en verwante technologie. Met sprekers uit Nederland en het buitenland was de Python-community goed vertegenwoordigd op PyGrunn. Vanuit Goldmund, Wyldebeast &#038; Wunderliebe heeft Kim Chee Leong een presentatie gegeven over buildout, dit is een tool voor het uitrollen van applicaties.</p>
<p>Goldmund, Wyldebeast &#038; Wunderliebe en Paylogic hebben de conferentie georganiseerd. Vanwege het grote success zal PyGrunn er ook volgend jaar weer zijn.</p></blockquote>
<div style="width:425px" id="__ss_8039168"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kaceeleong/buildout-presentation" title="Buildout presentation" target="_blank">Buildout presentation</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8039168" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kaceeleong" target="_blank">kaceeleong</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.leong.nl/2011/06/buildout-presentation-pygrunn2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu Karmic Koala and Python setuptools</title>
		<link>http://www.leong.nl/2009/10/ubuntu-karmic-koala-and-python-setuptools/</link>
		<comments>http://www.leong.nl/2009/10/ubuntu-karmic-koala-and-python-setuptools/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 12:06:46 +0000</pubDate>
		<dc:creator>Kim Chee Leong</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[python setuptools eggs bug]]></category>

		<guid isPermaLink="false">http://www.leong.nl/?p=131</guid>
		<description><![CDATA[This weekend I&#8217;ve upgrade my laptop to Ubuntu Karmic Koala. The upgrade was easy and Karmic looks and runs smoother than the previous version. I encountered one small problem with Python setuptools and subversion. I use Setuptools 0.6c9 to create Python eggs. It happens that the latest Setuptools won&#8217;t play well with subversion 1.6 (shipped [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend I&#8217;ve upgrade my laptop to Ubuntu <a title="Ubuntu Linux" href="http://www.ubuntu.com/" target="_blank">Karmic Koala</a>. The upgrade was easy and Karmic looks and runs smoother than the previous version. I encountered one small problem with Python setuptools and subversion.</p>
<p>I use <a title="setuptools" href="http://pypi.python.org/pypi/setuptools/0.6c9" target="_blank">Setuptools 0.6c9 </a>to create Python eggs. It happens that the latest Setuptools won&#8217;t play well with subversion 1.6 (shipped with Karmic).</p>
<p>When creating an egg with:</p>
<p><strong>python setup.py bdist_egg </strong></p>
<p>I got this error:</p>
<p><strong>subversion unrecognized .svn/entries format</strong></p>
<p>You can fix this by running a patch from the setuptools team, <a title="Python setuptools error, Subversion 1.6 entries format 'unrecognized'" href="http://bugs.python.org/setuptools/issue64" target="_blank">download the most recent patch</a> from the issue page. Find out where setuptools lives in your site-packages and apply the patch. <a title="Details on fixing Subversion 1.6 entries format 'unrecognized'" href="http://www.leong.nl/oss/fix-svn1.6-with-setuptools.txt" target="_blank">More details here</a> if you&#8217;re not familiar with site-packages and applying patches.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leong.nl/2009/10/ubuntu-karmic-koala-and-python-setuptools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django buildout with Apache mod_python</title>
		<link>http://www.leong.nl/2009/05/django-buildout-with-apache-mod_python/</link>
		<comments>http://www.leong.nl/2009/05/django-buildout-with-apache-mod_python/#comments</comments>
		<pubDate>Mon, 04 May 2009 11:00:40 +0000</pubDate>
		<dc:creator>Kim Chee Leong</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.leong.nl/?p=90</guid>
		<description><![CDATA[Last week I finished a Django project and needed to put the django app behind Apache. During the development in Django we used buildout. Buildout allows you to create a recipe to get the Django framework and dependencies on other python parts. It supports version pinning and allows you to download your dependencies thru pypi [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I finished a <a href="http://www.djangoproject.com/">Django</a> project and needed to put the django app behind Apache. During the development in Django we used <a href="http://code.google.com/p/django-buildout/">buildout</a>. Buildout allows you to create a recipe to get the Django framework and dependencies on other python parts. It supports version pinning and allows you to download your dependencies thru <a href="http://pypi.python.org">pypi</a> eggs or subversion.</p>
<p>If you want try buildout for Django try <a href="http://www.stereoplex.com/two-voices/a-django-development-environment-with-zc-buildout">this how-to</a>.</p>
<p>Buildout is well known in the Zope/Plone world and can be used in both development and production stages. Because a production mod_python/Django setup is a bit different them I&#8217;m used to (using Zope behind Apache), I decided to use buildout to generate a Apache virtual host config.</p>
<p>You can follow these these steps on this wiki for a buildout with mod_python:</p>
<p><a href="https://tracpub.yaco.es/djangobuildout/ ">https://tracpub.yaco.es/djangobuildout/ </a>(warning! just click thru the SSL errors)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.leong.nl/2009/05/django-buildout-with-apache-mod_python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

