<?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>Christopher Warner &#187; Uncategorized</title>
	<atom:link href="http://weblog.kernelcode.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.kernelcode.com</link>
	<description>Studies and thoughts, usually in coherent fashion.</description>
	<lastBuildDate>Tue, 03 Jan 2012 17:12:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Zope/Plone have changed my life</title>
		<link>http://weblog.kernelcode.com/2007/11/17/zopeplone-have-changed-my-life/</link>
		<comments>http://weblog.kernelcode.com/2007/11/17/zopeplone-have-changed-my-life/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 07:23:58 +0000</pubDate>
		<dc:creator>Christopher Warner</dc:creator>
				<category><![CDATA[Advogato]]></category>
		<category><![CDATA[Commentary]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://people.kernelcode.com/cwarner/2007/11/17/zopeplone-have-changed-my-life/</guid>
		<description><![CDATA[I can't stress enough how pleased I am with Zope/Plone in regards to a CMS system. If you are doing content management and are using Python then I strongly suggest you look at Zope/Plone. Python being such a strong and usable language that makes the impossible; possible and the architecture of Zope and the CMF [...]]]></description>
			<content:encoded><![CDATA[<p>I can't stress enough how pleased I am with Zope/Plone in regards to a CMS system. If you are doing content management and are using Python then I strongly suggest you look at Zope/Plone. Python being such a strong and usable language that makes the impossible; possible and the architecture of Zope and the CMF Framework which Plone is built from makes it a CMS killer. Period. Which brings me to the reason for this entry.</p>
<p>Here at New York Magazine we have a<a href="http://nymag.com/fashion" target="_blank"> fashion section</a>.   It's a mismash of Krang and other random Dreamweaver run around all over the place HTML. This is obviously no way to manage the content in this, the year, 2007. So I have begun to take on the process of breaking it down into Plone and came across the subscriber/event model system available in Zope3. It's great and here's a quick tutorial on how to use it.</p>
<p>A user is working with a Model Biography and the Fashion editor want's an IM when each Model Biography is created.</p>
<p>First we setup an interface (marker interface) for our Model Biography:<br />
from zope.interface import Interface</p>
<blockquote><p>class IModelBio(Interface):<br />
""" Model Biography """</p></blockquote>
<p>Think of the interface as documentation for the class, describing what it can and can't do. As this class doesn't have any methods there is just a comment describing that it's a Model Biography.</p>
<p>We then have the actual ModelBio class which implements our interface.</p>
<blockquote><p>class ModelBio(BaseContent):</p>
<p>"""A Model Object """<br />
implements(IModelBio)</p></blockquote>
<p>From here we can now modify our configure.zcml (this configures Zope the way we want it), where we add our subscriber. Here is a good description of <a href="http://worldcookery.com/files/ploneconf05-five/step2.html" target="_blank">ZCML </a>and why it gives our code more structure.</p>
<p>note: Do to the way WordPress filters html tag/close tag should be replaced with the appropriate markup. Seems I need to either upgrade or find some new blog software.</p>
<blockquote><p>tag subscriber<br />
for=".interfaces.IModelBio<br />
Products.Archetypes.interfaces.IObjectInitializedEvent"<br />
handler=".events.model_created"close tag</p></blockquote>
<p>What this says is that for ModelBio we want to know when a ModelBio object is created. When we know that, <strong>events.model_created</strong>, will be handling said situation. So, all that's left to do is add a method called model_created in events.py</p>
<blockquote><p>def model_created(model, event):<br />
""" blah blah """<br />
print model.title + " has been created"</p></blockquote>
<p>That is pretty much it! Again, if you are doing CMS anything you may as well investigate Zope/Plone. I also highly recommend picking up a copy of Martin Aspeli's book; "Professional Plone Development", available <a href="http://www.packtpub.com/Professional-Plone-web-applications-CMS/book" target="_blank">here.</a> It will definitely help, even if you are a beginner to Plone. Here's a recent <a href="http://books.slashdot.org/article.pl?sid=07/11/07/1415259" target="_blank">review of the book</a> on Slashdot. As usual the commentary on Slashdot is to be used as toilet paper. Needless to say I don't make a dime off of any of this the book is just that good.</p>
<p><!--ded34983c1c0b3fa2c9b6b99fe44afa4--></p>
<p><!--d09b71eb827f9564fb2629076f23b712--></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://weblog.kernelcode.com/2008/06/27/plone-iuser-why-dont-you-exist/" rel="bookmark" class="crp_title">Plone &#8211; IUser* why don&#8217;t you exist?</a></li><li><a href="http://weblog.kernelcode.com/2010/05/12/creating-a-custom-template-for-a-plone-content-type-2/" rel="bookmark" class="crp_title">Creating a custom template for a Plone content type</a></li><li><a href="http://weblog.kernelcode.com/2009/01/07/message-brokers/" rel="bookmark" class="crp_title">Message Brokers</a></li><li><a href="http://weblog.kernelcode.com/2008/08/21/sparql-and-still-sub-querying/" rel="bookmark" class="crp_title">SPARQL and still sub-querying</a></li><li><a href="http://weblog.kernelcode.com/2009/01/14/deliverance/" rel="bookmark" class="crp_title">Deliverance</a></li></ul></div><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://weblog.kernelcode.com/2007/11/17/zopeplone-have-changed-my-life/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Zope and Plone</title>
		<link>http://weblog.kernelcode.com/2007/10/04/zope-and-plone/</link>
		<comments>http://weblog.kernelcode.com/2007/10/04/zope-and-plone/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 22:58:20 +0000</pubDate>
		<dc:creator>Christopher Warner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://people.kernelcode.com/cwarner/2007/10/04/zope-and-plone/</guid>
		<description><![CDATA[So, after weeks of investigating Zope and in more specific Plone which is built using CMF* (Content Management Framework) I was highly impressed. Then, finally being able to get some time I started converting some content from Krang into a Plone product. There have been a couple of hurdles involved; primarily in getting Zope to [...]]]></description>
			<content:encoded><![CDATA[<p>So, after weeks of investigating  Zope and in more specific Plone which is built using CMF* (Content Management Framework) I was highly impressed. Then, finally being able to get some time I started converting some content from Krang into a Plone product. There have been a couple of hurdles involved; primarily in getting Zope to push out static content. It was suggested that I simply serve everything dynamically but i'm not sure that's such a good idea, considering the amount of load expected and I'm not sure how to properly construct everything yet. The second suggestion was to use <a href="http://www.enfoldsystems.com/Products/Entransit"><strong>Entransit</strong></a> or <a href="http://plone.org/products/cmfdeployment"><strong>CMFDeployment</strong></a>. I am more fond of having the application server and the actual content completely separate. This keeps the problem domains seperate in my head. If one has to worry about the performance of having content entered on-top of having to worry about the performance of serving it. Things get alot more difficult.</p>
<p>Entransit seems to be the real answer but it's rather new and doesn't use Plone 3 yet which is what I started with. CMFDeployment also doesn't work with Plone 3 which means I'll either have to get that working or retard back to Plone 2.x which I'd really not rather do. Needless to say any of this is years if not decades ahead of Krang.
<p>
<p><!--2c2fda016cbf8bae46e2a211c0ecefed-->
</p>
<p><!--ebc4ed2f28de385e1672f4f6c08a7118--></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://weblog.kernelcode.com/2007/11/17/zopeplone-have-changed-my-life/" rel="bookmark" class="crp_title">Zope/Plone have changed my life</a></li><li><a href="http://weblog.kernelcode.com/2010/06/01/plone-vs-django/" rel="bookmark" class="crp_title">Plone vs. Django</a></li><li><a href="http://weblog.kernelcode.com/2007/09/04/response/" rel="bookmark" class="crp_title">response</a></li><li><a href="http://weblog.kernelcode.com/2008/08/12/neutron-protocol/" rel="bookmark" class="crp_title">Neutron Protocol</a></li><li><a href="http://weblog.kernelcode.com/2009/05/04/alfresco-review-part-one/" rel="bookmark" class="crp_title">Alfresco review part one</a></li></ul></div><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://weblog.kernelcode.com/2007/10/04/zope-and-plone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>response</title>
		<link>http://weblog.kernelcode.com/2007/09/04/response/</link>
		<comments>http://weblog.kernelcode.com/2007/09/04/response/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 02:33:22 +0000</pubDate>
		<dc:creator>Christopher Warner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://people.kernelcode.com/cwarner/2007/09/04/response/</guid>
		<description><![CDATA[slef: Krang doesn't use PAR what it does is use m::b and throws everything into KRANG_ROOT's lib directory. Unless things have changed for Krang 3.0 which too my knowledge isn't the case. It seems this is the third or fourth time i've seen someone inquire about Krang's build system but it doesn't do anything special. [...]]]></description>
			<content:encoded><![CDATA[<p>slef: Krang doesn't use PAR what it does is use m::b and throws everything into KRANG_ROOT's lib directory. Unless things have changed for Krang 3.0 which too my knowledge isn't the case. It seems this is the third or fourth time i've seen someone inquire about Krang's build system but it doesn't do anything special. The issue really should be handled higher up the food chain. The Perl project simply needs to come up with a good way to package  their own programs. Past that, I haven't done it myself with a perl program but <a href="http://www.autopackage.org"><strong>Autopackage</strong></a> may prove useful.
<p>
<p><!--1dda9c5ad8309f559c2c6d716bc45e56-->
</p>
<p><!--e45c6de8cbdeacc463ac3f5747d1ed5c--></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://weblog.kernelcode.com/2007/10/04/zope-and-plone/" rel="bookmark" class="crp_title">Zope and Plone</a></li><li><a href="http://weblog.kernelcode.com/2010/06/01/plone-vs-django/" rel="bookmark" class="crp_title">Plone vs. Django</a></li><li><a href="http://weblog.kernelcode.com/2010/08/30/relational-databases-are-killing-content-management/" rel="bookmark" class="crp_title">Relational Databases are killing content management.</a></li><li><a href="http://weblog.kernelcode.com/2009/01/29/plone-where-is-it-useful-example-2/" rel="bookmark" class="crp_title">Plone where is it useful? Example #2</a></li><li><a href="http://weblog.kernelcode.com/2008/03/13/yes-actually-its-not-easy/" rel="bookmark" class="crp_title">Yes, actually, it&#8217;s not easy.</a></li></ul></div><p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Share/Bookmark</a> </p>]]></content:encoded>
			<wfw:commentRss>http://weblog.kernelcode.com/2007/09/04/response/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

