<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2374927650282178606</id><updated>2012-01-11T10:27:19.951+01:00</updated><category term='argouml'/><category term='quota'/><category term='phonology'/><category term='atletiek'/><category term='encoding'/><category term='bug'/><category term='archgenxml'/><category term='latex'/><category term='p3pdc'/><category term='pound'/><category term='gnome'/><category term='MailDrop'/><category term='picasa'/><category term='translations'/><category term='shell'/><category term='python'/><category term='debian'/><category term='script'/><category term='gimp'/><category term='deliverance'/><category term='catalog'/><category term='for_planet_plone'/><category term='linux'/><category term='apache'/><category term='debug'/><category term='i18n'/><category term='clusterssh'/><category term='cvs'/><category term='security'/><category term='buildout'/><category term='to be how-to&apos;ed'/><category term='music'/><category term='ssh'/><category term='ie'/><category term='pdf'/><category term='dms'/><category term='non-geek'/><category term='plone'/><category term='android'/><category term='zeo'/><category term='genericsetup'/><category term='html'/><category term='archetypes'/><category term='mac'/><category term='mr.developer'/><category term='testing'/><category term='ubuntu'/><category term='error'/><category term='svn'/><title type='text'>The Donkey's Stone</title><subtitle type='html'>Avoid making the same mistake twice: Lessons learned by a Plone developer/integrator.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default?start-index=101&amp;max-results=100'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>170</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8196746981448138759</id><published>2011-12-08T15:28:00.001+01:00</published><updated>2011-12-08T15:32:19.147+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>nginx buildout failing at openssl on Mac OS X Lion</title><summary type='text'>The error message was:

make[1]: *** [objs/src/event/ngx_event_openssl.o] Error 1
make: *** [build] Error 2
nginx-build: Command failed with exit code 2: make


Running the steps suggested here solved the problem:
http://code.google.com/p/phusion-passenger/issues/detail?id=650#c2</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8196746981448138759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8196746981448138759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8196746981448138759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8196746981448138759'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/12/nginx-buildout-failing-at-openssl-on.html' title='nginx buildout failing at openssl on Mac OS X Lion'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-523867175251400542</id><published>2011-11-15T10:57:00.003+01:00</published><updated>2011-11-16T13:06:52.396+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='for_planet_plone'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to disable comments on comments</title><summary type='text'>The threaded view of plone.app.discussion's comment item tends to look a bit confusing when there are many threads. Ons possible solution would be disallowing comments on comments, so you'd just get a flat list of items. This is similar to how many other commenting systems work (like Facebook and Twitter, for example).Comments on comments can be disabled in the ZMI: go to 'portal_types' -&gt; '</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/523867175251400542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=523867175251400542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/523867175251400542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/523867175251400542'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/11/plone-comments-no-comments-on-comments.html' title='How to disable comments on comments'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4082050829948111034</id><published>2011-10-27T09:59:00.005+02:00</published><updated>2011-10-27T10:49:43.090+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='for_planet_plone'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Goodbye GW20e, hello Freitag</title><summary type='text'>After almost four years at Goldmund, Wyldebeast and Wunderliebe, the time has come to move on. In december i will start a new job at the weekly magazine Der Freitag in Berlin. I look forward to working with our small team of in-house web developers. It's a good place to put some of my skills to work, and i expect to learn a lot of new things too. And of course i look forward to Berlin.Life </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4082050829948111034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4082050829948111034' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4082050829948111034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4082050829948111034'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/10/goodbye-gw20e-hello-freitag.html' title='Goodbye GW20e, hello Freitag'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-890290633284019863</id><published>2011-06-09T15:32:00.004+02:00</published><updated>2011-06-09T15:43:21.976+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='for_planet_plone'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Migrate files from Compound-/ArrayField to File objects in folder</title><summary type='text'>A migration script. The use case is a site which currently allows users to add a list of files to custom objects. I want to make these objects folderish, extract the files from field and store them as regular Plone files, so we can migrate to Plone 4 and use blobstorage.import transactionfrom zope.component import queryUtilityfrom Acquisition import aq_parentfrom plone.i18n.normalizer.interfaces </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/890290633284019863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=890290633284019863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/890290633284019863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/890290633284019863'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/06/migrate-files-from-compound-arrayfield.html' title='Migrate files from Compound-/ArrayField to File objects in folder'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-865044576965276576</id><published>2011-06-09T12:58:00.006+02:00</published><updated>2011-08-02T10:35:55.408+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='for_planet_plone'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to plug into Plone's id (for url) generating mechanism</title><summary type='text'>Plone can convert titles to id's, which are used in the URL. To use this conversion in your own code, use the IIDNormalizer utility. [edit: removed broken link to Plone's developer documentation, added code snippet]from zope.component import queryUtilityfrom plone.i18n.normalizer.interfaces import IIDNormalizerid = queryUtility(IIDNormalizer).normalize(title)</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/865044576965276576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=865044576965276576' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/865044576965276576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/865044576965276576'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/06/how-to-plug-into-plones-id-for-url.html' title='How to plug into Plone&apos;s id (for url) generating mechanism'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2162325252102852876</id><published>2011-06-01T16:18:00.002+02:00</published><updated>2011-06-01T16:22:16.307+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone 3 on Natty: Python 2.4 with PIL</title><summary type='text'>Installing PIL in a (hand-compiled) python2.4 yielded "python "ZLIB (PNG/ZIP) support not available", although i did have zlib1g-dev installed.Found the answer in http://ubuntuforums.org/showthread.php?t=1751455#post10810486: Natty puts some libs in /usr/lib/x86_64-linux-gnu/, where PIL can't find them. Symlinking helps.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2162325252102852876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2162325252102852876' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2162325252102852876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2162325252102852876'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/06/plone-3-on-natty-python-24-with-pil.html' title='Plone 3 on Natty: Python 2.4 with PIL'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2966406215054783212</id><published>2011-05-16T14:38:00.001+02:00</published><updated>2011-05-16T14:39:19.414+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Managing virtualenvs with mkvirtualenv</title><summary type='text'>Read this, thanks Doug!</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2966406215054783212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2966406215054783212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2966406215054783212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2966406215054783212'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/05/managing-virtualenvs-with-mkvirtualenv.html' title='Managing virtualenvs with mkvirtualenv'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5623566447193502220</id><published>2011-05-05T12:16:00.004+02:00</published><updated>2011-05-05T12:35:19.517+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Commands to replace xdv namespaces with diazo</title><summary type='text'>The plone.app.theming page is clear enough about migrating products from collective.xdv to plone.app.theming. Here are some commands to make the necessary namespace substitutions in xml files:perl -p -i -e 's/xmlns=\"http:\/\/namespaces.plone.org\/xdv\"/xmlns=\"http:\/\/namespaces.plone.org\/diazo\"/' *.xmlperl -p -i -e 's/xmlns:css=\"http:\/\/namespaces.plone.org\/xdv\+css\"/xmlns:css=\"http:\/\</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5623566447193502220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5623566447193502220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5623566447193502220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5623566447193502220'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/05/commands-to-replace-xdv-namespaces-with.html' title='Commands to replace xdv namespaces with diazo'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5508984456859773369</id><published>2011-05-04T12:30:00.006+02:00</published><updated>2011-05-04T12:51:27.715+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Creating Plone content when installing / upgrading a product</title><summary type='text'>Following up on my previous post, i've extended the method to create objects a bit.Short reminder: this method is intended for use when Generic Setup (profiles/default/structure) can't create content in the way you want, for example when you have custom content types, or want to change "exclude_from_navigation" settings or workflow state. This article assumes you will call your setuphandler.py's </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5508984456859773369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5508984456859773369' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5508984456859773369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5508984456859773369'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/05/creating-plone-content-when-installing.html' title='Creating Plone content when installing / upgrading a product'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8557760273918222521</id><published>2011-03-15T12:35:00.004+01:00</published><updated>2011-03-25T13:16:38.779+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Building Varnish on Ubuntu: libpcre</title><summary type='text'>While trying to use plone.recipe.varnish, i ran into an error:SystemError: ('Failed', './configure --prefix=/home/kees/project_buildouts/wsr/parts/varnish-build')Going into the directory in /tmp and trying to run ./configure there, i get:configure: error: Package requirements (libpcre) were not met:No package 'libpcre' foundConsider adjusting the PKG_CONFIG_PATH environment variable if </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8557760273918222521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8557760273918222521' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8557760273918222521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8557760273918222521'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/03/building-varnish-on-ubuntu-libpcre.html' title='Building Varnish on Ubuntu: libpcre'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5497371346261055868</id><published>2011-02-07T21:26:00.006+01:00</published><updated>2011-02-09T12:38:14.551+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Upgrading my Samsung Apollo Galaxy to Froyo</title><summary type='text'>Finally got round to upgrading my phone (Samsung i5801) to Android 2.2. It was relatively easy, following the how-to at xda-developers. The result is stunning, the phone is much more responsive now.Update 2011-02-08: After updating a second time (to the latest JPF firmware) with the SIM and memory cards in the phone, all my apps and settings were gone, this did not happen the first time (JPB </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5497371346261055868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5497371346261055868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5497371346261055868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5497371346261055868'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/02/upgrading-my-samsung-apollo-galaxy-to.html' title='Upgrading my Samsung Apollo Galaxy to Froyo'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8423260944234644939</id><published>2011-01-25T09:27:00.004+01:00</published><updated>2011-01-25T09:49:39.896+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Buildout error: Products.CMFPlone 4.1a1 requires 'Zope2&gt;2.13.0'.</title><summary type='text'>When running my Plone 4.0.2 buildout, i got this error:We already have: Zope2 2.12.13but Products.CMFPlone 4.1a1 requires 'Zope2&gt;2.13.0'.But where did i say i wanted to use Plone 4.1a1? It seems packages which depend on Products.CMFPlone (like plone.app.registry) by default (when running buildout without the -N switch) get the latest version, which is 4.1a1. And this, in turn, tries to pull in </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8423260944234644939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8423260944234644939' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8423260944234644939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8423260944234644939'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/01/buildout-error-productscmfplone-41a1.html' title='Buildout error: Products.CMFPlone 4.1a1 requires &apos;Zope2&gt;2.13.0&apos;.'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7468635017056802559</id><published>2011-01-19T10:05:00.003+01:00</published><updated>2011-01-19T10:20:39.499+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Why is my Data.fs so big?</title><summary type='text'>If your Data.fs is still big after packing, here are some tricks you might try to find out why it is big.1. Write a custom script (example see below) that does a catalog query and returns each brain's getObjSize(). This will only find catalog'ed objects, but these are probably the ones that make your Data.fs big.2. Check portal_historiesstorage to see how many old versions of objects are stored, </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7468635017056802559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7468635017056802559' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7468635017056802559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7468635017056802559'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/01/why-is-my-datafs-so-big.html' title='Why is my Data.fs so big?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8642500151192800252</id><published>2011-01-12T13:05:00.002+01:00</published><updated>2011-01-12T13:08:12.893+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picasa'/><title type='text'>Scrape a Picasa web album</title><summary type='text'>A friend shared a Picasa album with me, but i couldn't download it. Picasa Webalbums Assistant to the rescue, thanks Bradley. Works on Ubuntu too, does just what i wanted.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8642500151192800252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8642500151192800252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8642500151192800252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8642500151192800252'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/01/scrape-picasa-web-album.html' title='Scrape a Picasa web album'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8841232623675684026</id><published>2011-01-03T14:40:00.003+01:00</published><updated>2011-01-03T14:46:41.358+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><title type='text'>Making cron send mail to an external address</title><summary type='text'>So, you've filled in "me@example.com" as your address in your crontab's MAILTO field, but nothing happens. Probably you're getting a message like "Mailing to remote domains not supported".There's an easy way to send mail to an external address from a cron job: set uphttp://untroubled.org/nullmailer/. It asks you for the address of an SMTP server and uses that to send your precious update </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8841232623675684026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8841232623675684026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8841232623675684026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8841232623675684026'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2011/01/making-cron-send-mail-to-external.html' title='Making cron send mail to an external address'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2072025586757301633</id><published>2010-11-18T17:51:00.002+01:00</published><updated>2010-11-18T18:06:51.608+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><title type='text'>How to replace half-tone colours with the Gimp</title><summary type='text'>It sometimes happens you have ain image which has been anti-aliased for a red background. You'd like to use this image on a blue background, but that looks very bad. What to do?Here's how to change all occurences of red, including halt-tones and shades, to blue. You'll keep your bright/dark nuances.Open the image with the Gimp.Set mode to RGB: Image &gt; Mode &gt; RGBSelect the part where you want to </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2072025586757301633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2072025586757301633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2072025586757301633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2072025586757301633'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/11/how-to-replace-half-tone-colours-with.html' title='How to replace half-tone colours with the Gimp'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-1304947993079366537</id><published>2010-11-03T20:51:00.004+01:00</published><updated>2010-11-04T07:43:58.069+01:00</updated><title type='text'>Looking back on Bristol</title><summary type='text'>Likes:Flying KLM instead of some DTA (Duck Tape Airlines)Our apartment in Marsh St. from Alderman ApartmentsPub lunches and beerMany many many interesting Plone talksRichard Noble's guest keynoteDinner with the guys from 4DMany many many more interesting Plone talksA run along the river with my colleague PeterPies, beer, cider and the music from Fellow StrangerThe Irish pub and the bandMany </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/1304947993079366537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=1304947993079366537' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1304947993079366537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1304947993079366537'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/11/looking-back-on-bristol.html' title='Looking back on Bristol'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-395343914125348825</id><published>2010-11-03T12:52:00.004+01:00</published><updated>2010-11-03T12:59:37.799+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>IE8 bug causing first list item to be too high</title><summary type='text'>I had an unordered list where the first list item was too high in IE8. At first i thought it was one of the many javascripts, then i thought it was something to do with IE8's rendering of lists, but when i stripped the HTML it turned out it was an anchor link on the top of the page.It's a known bug (http://webbugtrack.blogspot.com/2008/04/bug-371-named-anchor-links-are-broken.html). The </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/395343914125348825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=395343914125348825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/395343914125348825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/395343914125348825'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/11/ie8-bug-causing-first-list-item-to-be.html' title='IE8 bug causing first list item to be too high'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7093799802052642776</id><published>2010-10-03T19:34:00.007+02:00</published><updated>2010-10-03T22:05:37.143+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Review: Plone 3 Intranets by Víctor Fernández de Alba</title><summary type='text'>Plone has great potential for intranets, so it's a good thing there's a book dedicated to this application. PacktPub have a whole line of Plone books, and this is one of the latest on the family.In this review, i'll try to give an idea of what the book is like. I also have a wishlist, I hope that the book does this:        * expand on the features which are required by an intranet;        * </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7093799802052642776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7093799802052642776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7093799802052642776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7093799802052642776'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/10/review-plone-3-intranets-by-victor.html' title='Review: Plone 3 Intranets by Víctor Fernández de Alba'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3446774399230933638</id><published>2010-09-08T09:54:00.007+02:00</published><updated>2010-09-09T13:46:19.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Adding a list of items to a content type without CompoundField</title><summary type='text'>With all the Plone 4 goodness that surrounds us, you'd almost forget that there still are Plone 3 sites which need attention and extra features. Our client wanted "be able to add a list of images to item X", for display in a slideshow on the item's view. I first thought of the CompoundField add-on for Archetypes content, which I'd used before. But because of technical difficulties with the </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3446774399230933638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3446774399230933638' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3446774399230933638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3446774399230933638'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/09/adding-list-of-items-to-content-type.html' title='Adding a list of items to a content type without CompoundField'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4848097694522376619</id><published>2010-09-02T11:51:00.004+02:00</published><updated>2010-09-02T16:44:17.933+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Creating an egg? Clean first!</title><summary type='text'>I ran into an error on a production site which turned out to be due to an egg containing extra files. How did these old files get included in the egg? I'd been running python setup.py bdist_egg to create the egg, and then i uploaded them to a www server. (Not a "real" egg server.) Before creating a new egg, the build/ directory is not cleaned by default. Therefore, files that were present in an </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4848097694522376619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4848097694522376619' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4848097694522376619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4848097694522376619'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/09/creating-egg-clean-first.html' title='Creating an egg? Clean first!'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-1239024260117746558</id><published>2010-08-24T16:23:00.007+02:00</published><updated>2011-04-28T12:40:43.829+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Using fakemail during development</title><summary type='text'>Update: this is far easier: python -m smtpd -n -c DebuggingServer localhost:1025After a suggestion from my colleague Wietze, i decided to give fakemail a try. Fakemail will act as a mailserver, in that it accepts emails. It saves them to file, however. This eliminates the need for a real mailserver (be it on your local machine or via internet) during development.To separate it from my default </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/1239024260117746558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=1239024260117746558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1239024260117746558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1239024260117746558'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/08/using-fakemail-during-development.html' title='Using fakemail during development'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8216084077911316720</id><published>2010-07-07T13:31:00.007+02:00</published><updated>2010-07-07T14:03:30.600+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Adding CSS that uses settings from content</title><summary type='text'>Use caseA client wants to display a section of their site in a slightly different style. This different style currently consists of adding a background image, which should be changed by content editors who have no technical knowledge of CSS, and who we don't want to bother with things like the ZMI. ApproachThe object at the top of the section is a custom content type. We can add a </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8216084077911316720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8216084077911316720' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8216084077911316720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8216084077911316720'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/07/how-to-add-css-which-uses-settings-from.html' title='Adding CSS that uses settings from content'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7190628498578610635</id><published>2010-07-03T11:56:00.001+02:00</published><updated>2010-07-30T10:25:55.312+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='p3pdc'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>iPython in Plone 4</title><summary type='text'>[edit (2010-07-30): add link to full iPython extension script which doesn't require login]The Plone 3 Products Development Cookbook shows a way to make your Plone 3 buildout create a Zope-aware iPython script. With a slight modification, the script can be used for Plone 4 as well.buildout.cfg:parts +=    ipzope[ipzope]# an IPython Shell for interactive use with zope running.# You also need to put</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7190628498578610635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7190628498578610635' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7190628498578610635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7190628498578610635'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/07/ipython-in-plone-4.html' title='iPython in Plone 4'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3954494723711985436</id><published>2010-07-01T15:10:00.000+02:00</published><updated>2010-07-01T15:13:52.989+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Find my commits SVN script</title><summary type='text'>This script finds all log messages for commits that you've done in (or below) the current SVN-controlled directory.#!/bin/bash## svn_my_commits_here.sh## Find all my commits _ever_ in this level of the repository (and below).repo_url=`svn info | sed -n 's/^URL: *//p'`# Multiple usernames can be given, separated by \|username='joesmith\|jsmith'for revision in `svn log -q $repo_url | sed -n "s/r\([</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3954494723711985436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3954494723711985436' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3954494723711985436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3954494723711985436'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/07/find-my-commits-svn-script.html' title='Find my commits SVN script'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7649503865318429643</id><published>2010-06-24T14:26:00.000+02:00</published><updated>2010-06-24T16:19:47.924+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Daily SVN report script</title><summary type='text'>How can i get svn log information for my own commits? How can i see what i committed on a specific day? How do i list all svn repositories i'm working on?#!/bin/bash## svn_daily_report.sh ## A script to extract SVN log info for all repositories you're working on,# yielding only your own commits, on a particular day.## The script does this:# * find unique repository roots you're working on# * get </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7649503865318429643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7649503865318429643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7649503865318429643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7649503865318429643'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/06/daily-svn-report-script.html' title='Daily SVN report script'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3046382740258208669</id><published>2010-06-21T12:23:00.001+02:00</published><updated>2010-06-24T16:20:17.922+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>VirtualBox kernel module loading script</title><summary type='text'>When starting VirtualBox (on Ubuntu Lucid), i have to load the kernel modules vboxdrv and vboxnetflt. I created a script to do this automatically. Call it virtualbox and place it somewhere on your $PATH, for example in ~/bin/, so the application launcher in the menu will use the script instead of the binary in /usr/bin/.#!/bin/bash# Custom VirtualBox OSE startup script; loads kernel modulesecho "</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3046382740258208669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3046382740258208669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3046382740258208669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3046382740258208669'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/06/virtualbox-kernel-module-loading-script.html' title='VirtualBox kernel module loading script'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7375586524472698024</id><published>2010-06-17T11:41:00.000+02:00</published><updated>2010-06-17T11:43:16.735+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>SVN: How to get the changes for one revision</title><summary type='text'>I was looking for a shortcut to svn diff -r N-1:N. Turns out it's -c: svn diff -c N</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7375586524472698024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7375586524472698024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7375586524472698024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7375586524472698024'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/06/svn-how-to-get-changes-for-one-revision.html' title='SVN: How to get the changes for one revision'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6730954844692617031</id><published>2010-06-15T14:44:00.002+02:00</published><updated>2010-10-20T10:46:28.565+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Using an ssh tunnel to manage your production site</title><summary type='text'>Update (2010-10-20): Script to shorten the command, use hostname instead of IPProbably, your production servers run behind Apache or some other webserver stack. To manage these portals, ZMI access can be handy, but the Zope port is not exposed to the outside world. You could solve this with an Apache proxy or rewrite rule, but I find it easier to start an SSH tunnel.Suppose your Zope runs on port</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6730954844692617031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6730954844692617031' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6730954844692617031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6730954844692617031'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/06/using-ssh-tunnel-to-manage-your.html' title='Using an ssh tunnel to manage your production site'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4369221119721674933</id><published>2010-05-04T11:07:00.001+02:00</published><updated>2010-05-04T11:20:28.299+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Showing members' email addresses to other members</title><summary type='text'>This skins folder script getEmailById.py allows members to see other members' email addresses. The has_role() does a check to make sure not all users are allowed to do this.## Script (Python) "getEmailById"##bind container=container##bind context=context##bind namespace=##bind script=script##bind subpath=traverse_subpath##parameters=author_id##title=##from Products.CMFCore.utils import </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4369221119721674933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4369221119721674933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4369221119721674933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4369221119721674933'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/05/showing-members-email-addresses-to.html' title='Showing members&apos; email addresses to other members'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2138635821325380558</id><published>2010-05-02T20:37:00.000+02:00</published><updated>2010-05-31T10:46:51.496+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Plone 3 on Ubuntu Lucid Lynx: Hand-compiling Python 2.4</title><summary type='text'>update 2010-05-31: Warning for /usr/local/bin/pythonAfter the upgrade to Ubuntu 10.04 (Lucid Lynx), i had no python2.4 binary anymore (causing a bash: ./bin/instance: /usr/bin/python2.4: bad interpreter: No such file or directory error), so i had to compile it myself. Hand-compiling is a big word here, because it was very, very easy:wget http://www.python.org/ftp/python/2.4.6/Python-2.4.6.tgztar </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2138635821325380558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2138635821325380558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2138635821325380558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2138635821325380558'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/05/plone-3-on-ubuntu-lucid-lynx-hand.html' title='Plone 3 on Ubuntu Lucid Lynx: Hand-compiling Python 2.4'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8137012962649646840</id><published>2010-04-14T10:27:00.001+02:00</published><updated>2011-03-25T13:18:46.586+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Change creator programmatically</title><summary type='text'>In order to change an object's Creator from a script or another piece of code, use setCreators(new_creator,). Mark the comma: apparently, the method takes a list as input.I used this in a view class which mass-changes ownership:    def changeOwnership(self, obj, userid):        """ Change ownership of obj to userid """        membership = getToolByName(self.context, 'portal_membership')        </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8137012962649646840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8137012962649646840' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8137012962649646840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8137012962649646840'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/04/change-creator-programmatically.html' title='Change creator programmatically'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3503012210208848482</id><published>2010-04-09T11:16:00.000+02:00</published><updated>2010-04-09T11:19:01.088+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>LaTeX: Including .sty files from the command line</title><summary type='text'>$ export $TEXINPUTS='.:/home/kees/custom_latex_templates/:'$ latex /path/to/file_that_uses_custom_latex_template.tex</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3503012210208848482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3503012210208848482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3503012210208848482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3503012210208848482'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/04/latex-including-sty-files-from-command.html' title='LaTeX: Including .sty files from the command line'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3034267385627183861</id><published>2010-04-02T13:54:00.000+02:00</published><updated>2010-04-02T14:08:50.606+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='catalog'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Adding a ZCTextIndex from setuphandlers.py</title><summary type='text'>Alternative title: Indexing an object's creator's full name on Plone 4 with a dexterity content type.Adding a catalog index in profiles/default/catalog.xml is deprecated; see http://maurits.vanrees.org/weblog/archive/2009/12/catalog.I had some trouble getting this to work with a ZCTextIndex. I have a content type for which i want to be able to make the creator's full username searchable. In order</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3034267385627183861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3034267385627183861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3034267385627183861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3034267385627183861'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/04/adding-zctextindex-from-setuphandlerspy.html' title='Adding a ZCTextIndex from setuphandlers.py'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5992142031984974454</id><published>2010-03-27T13:02:00.000+01:00</published><updated>2010-03-27T15:54:32.678+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><title type='text'>Whiskyfestival</title><summary type='text'>Some notes from the "WFNN" (Whisky Festival Noord Nederland, der Aa-Kerk, Groningen): Have coffee. Note that other visitors appear to be generally over 40 and male. Make note to skip WFNN in favour of beach volleyball tournament next year. First taste: a Linkwood 12 yrs. (Douglas Laing).  Compared a standard Glenlivet (12 years) with an 18 years old one. The 18 years old is fuller. A Clynelish: </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5992142031984974454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5992142031984974454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5992142031984974454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5992142031984974454'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/whiskyfestival.html' title='Whiskyfestival'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5382040642794967569</id><published>2010-03-25T14:10:00.000+01:00</published><updated>2010-03-25T14:24:46.121+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Manipulating PDF files</title><summary type='text'>A customer wanted a product that adds a watermark or stamp to a PDF document. My colleague Kim Chee found out that stamping and watermarking can easily be done with pdftk. In our product, we call the OS's pdftk to manipulate the pdf files.To generate a dynamic stamp or watermark which includes the username and time, we use reportlab.One hurdle was to read the PDF file (in order to write that to a</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5382040642794967569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5382040642794967569' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5382040642794967569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5382040642794967569'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/manipulating-pdf-files.html' title='Manipulating PDF files'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5776987226444882845</id><published>2010-03-23T22:40:00.000+01:00</published><updated>2010-06-24T16:21:03.544+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Laptop battery remaining time vs. uptime</title><summary type='text'>Question: Why is it that after 15 minutes' uptime, Ubuntu thinks my laptop battery will last another 3 hours, but all it ever manages in total is 2:55 (at most)? Here's a shell script which writes the current uptime and the estimated remaining time in a file, every minute. Hopefully this can shed some light on the matter. At least we can draw a nice graph afterwards! You may need to sudo apt-get </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5776987226444882845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5776987226444882845' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5776987226444882845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5776987226444882845'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/laptop-battery-remaining-time-vs-uptime.html' title='Laptop battery remaining time vs. uptime'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QcEjBBPbE5g/S64cbQx4NrI/AAAAAAAAAl8/dkn1KWX9xB8/s72-c/uptime-vs-remaining-time.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-353478929611671075</id><published>2010-03-10T22:42:00.000+01:00</published><updated>2010-03-10T22:48:07.022+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Creating workflow transition scripts with ArchGenXML and ArgoUML</title><summary type='text'>To add a script that should be executed on a workflow transition, do the following:* On the transition's tab, click the "New call action" icon, which looks like this: a() * Enter an id for the action* Save UML, regenerate, a file wfsubscribers.py will be created in your product's root folder, containing an empty script.* Below ##code-section {action_id} #fill in your manual code here, insert your</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/353478929611671075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=353478929611671075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/353478929611671075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/353478929611671075'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/creating-workflow-transition-scripts.html' title='Creating workflow transition scripts with ArchGenXML and ArgoUML'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5140781411726073145</id><published>2010-03-10T22:26:00.000+01:00</published><updated>2010-03-10T22:38:57.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Creating worklists using ArchGenXML</title><summary type='text'>Once you've created a workflow in a UML model, you can add a revision list (worklist) as follows:* in the workflow diagram, select a state* add a tagged value "worklist=finalize_queue"* add a tagged value "review=Manager,Reviewer"The finalize_queue is just a name for the list. I've named it after the transition that would be the logical next step, which is "Finalize". The "review" value defines </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5140781411726073145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5140781411726073145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5140781411726073145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5140781411726073145'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/creating-worklists-using-archgenxml.html' title='Creating worklists using ArchGenXML'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-1158687991868242266</id><published>2010-03-10T22:20:00.000+01:00</published><updated>2010-03-10T22:25:48.150+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to remove a portlet</title><summary type='text'>To delete Plone's default portlets in your product, just add an assignment (to profiles/default/portlets.xml) with the "remove" attribute:&lt;assignment     manager="plone.leftcolumn"     category="context"     key="/"     type="portlets.Navigation"     name="navigation"     remove=""     /&gt;You can find the names, types and managers of the portlets in Product.CMFPlone's portlets.xml. Moving a </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/1158687991868242266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=1158687991868242266' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1158687991868242266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1158687991868242266'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/how-to-remove-portlet.html' title='How to remove a portlet'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2397057432650144953</id><published>2010-03-08T17:13:00.000+01:00</published><updated>2010-03-08T17:16:57.316+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Dutch translations for Plone roles</title><summary type='text'>This is how Plone's roles are currently translated (in Plone 3.3.4):Contributor: MedewerkerEditor: SchrijverMember: GebruikerReader: LezerReviewer: RedacteurManager: Beheerder</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2397057432650144953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2397057432650144953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2397057432650144953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2397057432650144953'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/dutch-translations-for-plone-roles.html' title='Dutch translations for Plone roles'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4218902537144850640</id><published>2010-03-05T16:53:00.000+01:00</published><updated>2010-03-19T00:21:14.186+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to set a property programmatically</title><summary type='text'>You read a property (from OFS.PropertyManager.PropertyManager) with getProperty, but setting it is done through _setProperty. Note the underscore.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4218902537144850640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4218902537144850640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4218902537144850640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4218902537144850640'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/how-to-set-property-programmatically.html' title='How to set a property programmatically'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6775311071731552118</id><published>2010-03-05T13:50:00.000+01:00</published><updated>2010-06-24T22:45:12.862+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='argouml'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Convert ArgoUML to XMI</title><summary type='text'>If you want to use ArchGenXML on UML models generated with ArgoUML &gt;= 0.28, you'll have to export them to .xmi first. This is a quick way to do that automatically before running agx.A shell script: #!/bin/bash# argouml2xmi.sh# Creates a .xmi file from an ArgoUML-generated .uml file.# Usage: ./argouml2xmi.sh filename.uml# A file called filename.xmi will be created.if [ ! -n "$1" ]then  echo "Usage</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6775311071731552118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6775311071731552118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6775311071731552118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6775311071731552118'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/convert-argouml-to-xmi.html' title='Convert ArgoUML to XMI'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6074468767142107061</id><published>2010-03-02T15:26:00.001+01:00</published><updated>2010-07-06T11:27:11.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Why run ArchGenXML on a UML file instead of zargo?</title><summary type='text'>Short answer: there's no reason.The original version of this post comes from an error i got from ArchGenXML when running it on a UML file, instead of the generally recommended zipped (zargo) version. Why did i want to use UML instead of zargo? The reason was version control: As a binary (zipped) file, zargo files will be replaced whole, while UML files can be diff'ed. This results in smaller </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6074468767142107061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6074468767142107061' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6074468767142107061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6074468767142107061'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/03/archgenxml-xmlparsersexpatexpaterror.html' title='Why run ArchGenXML on a UML file instead of zargo?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4503379921786571090</id><published>2010-02-26T13:16:00.000+01:00</published><updated>2010-02-26T13:17:44.277+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to start Plone in the foreground, but not in debug mode?</title><summary type='text'>./bin/instance console</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4503379921786571090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4503379921786571090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4503379921786571090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4503379921786571090'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/how-to-start-plone-in-foreground-but.html' title='How to start Plone in the foreground, but not in debug mode?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2287971494157611087</id><published>2010-02-22T15:08:00.000+01:00</published><updated>2010-02-22T15:13:26.472+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='pound'/><title type='text'>plone.recipe.pound Error: Bad version 1.7</title><summary type='text'>While installing pound in a Plone buildout, an error occurred: The version, 1.7, is not consistent with the requirement, 'Markdown&gt;=2.0.1'. While:    Installing.     Getting section poundbuild.     Initializing section poundbuild.     Installing recipe plone.recipe.pound.   Error: Bad version 1.7Adding [versions]Markdown = 2.0.3 to the buildout remedies this. Funny it can't do it by itself.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2287971494157611087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2287971494157611087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2287971494157611087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2287971494157611087'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/plonerecipepound-error-bad-version-17.html' title='plone.recipe.pound Error: Bad version 1.7'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8012267648745270923</id><published>2010-02-19T12:43:00.000+01:00</published><updated>2010-02-22T14:31:03.685+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buildout'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>A Plone 4 buildout setup</title><summary type='text'>A set of buildout files for Plone 4. My goal is to cover the entire project. from a development setup to production.buildout-base.cfgDefine here everything you want to have in your portal that is not in standard Plone.[buildout]extends =     buildout-plone.cfg#   ...[instance]eggs +=#   ...#   eggs for your sitebuildout-plone.cfgA default Plone buildout. This one was created with paster create -t</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8012267648745270923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8012267648745270923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8012267648745270923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8012267648745270923'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/plone-4-buildout-setup.html' title='A Plone 4 buildout setup'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2326150311851058545</id><published>2010-02-15T10:55:00.000+01:00</published><updated>2010-02-15T11:05:08.292+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clusterssh'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Copying input from one terminal another</title><summary type='text'>There's a couple of solutions for copying input from one terminal to several others. I used to use Konsole, which has two drawbacks:* You have to setup which terminal you copy to every time you start it;* It pulls in all kinds of KDE dependencies, which bothers me because i have Gnome.I now use ClusterSSH as an alternative to Konsole. Its advantages are:* Being able to define a setup, so all you </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2326150311851058545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2326150311851058545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2326150311851058545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2326150311851058545'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/copying-input-from-one-terminal-another.html' title='Copying input from one terminal another'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-485472430469645068</id><published>2010-02-14T15:54:00.000+01:00</published><updated>2010-02-14T17:40:41.123+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phonology'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>French phonetic characters</title><summary type='text'>As a student of the French language, which i am not, one is sometimes required to analyze French phonology. In the course of this, one might want to write about one's work, and inserting symbols in documents on a computer becomes a necessity.To cut this short, the question is: How do you type a "backwards c with a tilde on it"?A paragraph or two about OpenOffice first. OpenOffice comes with a </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/485472430469645068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=485472430469645068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/485472430469645068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/485472430469645068'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/french-phonetic-characters.html' title='French phonetic characters'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4370062611106059363</id><published>2010-02-12T12:56:00.000+01:00</published><updated>2010-02-19T20:24:36.156+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zeo'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Turning my Plone 4 buildout into a ZEO server/client setup</title><summary type='text'>This post has been replaced with this one</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4370062611106059363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4370062611106059363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4370062611106059363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4370062611106059363'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/turning-my-standalone-zope-buildout.html' title='Turning my Plone 4 buildout into a ZEO server/client setup'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8646481017822075416</id><published>2010-02-12T09:58:00.000+01:00</published><updated>2010-02-12T10:00:20.503+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Using zc.recipe.testrunner with Plone 4</title><summary type='text'>To test the contentratings package on a Plone 4.0a4 buildout, i added this to my buildout:[test]recipe = zc.recipe.testrunnereggs =     ${instance:eggs}    contentratings</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8646481017822075416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8646481017822075416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8646481017822075416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8646481017822075416'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/using-zcrecipetestrunner-with-plone-4.html' title='Using zc.recipe.testrunner with Plone 4'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-992645832717068198</id><published>2010-02-10T15:22:00.000+01:00</published><updated>2010-02-10T15:26:04.411+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Making SVN ignore certain files</title><summary type='text'>To ignore the files *.po.backup and .registration.cache in my i18n folder, i ran: svn propedit svn:ignore i18n/. This opened an editor where i added these files, one per line:*.po.backup.registration.cache</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/992645832717068198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=992645832717068198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/992645832717068198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/992645832717068198'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/making-svn-ignore-certain-files.html' title='Making SVN ignore certain files'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5999922814737484583</id><published>2010-02-10T14:52:00.000+01:00</published><updated>2010-02-10T14:57:53.885+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Makefile for generating translation files in i18n folder</title><summary type='text'># Makefile for creating translation files (.pot and .po) in Plone products.# Kees Hink, 2009-2010## Place this inside the 'i18n' directory in your package.# Adjust the definitions.# When you run 'make', a .pot file will be created. # Run 'make xx-translation' to create a translation file for language xx.# DefinitionsDOMAIN = 'Products.MyProduct'# The definitions below are derived from the </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5999922814737484583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5999922814737484583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5999922814737484583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5999922814737484583'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/makefile-for-generating-translation.html' title='Makefile for generating translation files in i18n folder'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7408817094453403486</id><published>2010-02-03T11:09:00.000+01:00</published><updated>2010-02-03T11:26:37.289+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Using the locate command with --regex (or --regexp)</title><summary type='text'>locate is much faster than find...# Find images in my homedir and its descendants (children, thier children etc.)locate --regex \/home\/kees\/.*\(.png\|.jpg\|.gif\)# Find images only in direct children of my homedirlocate --regex \/home\/kees\/[^\/]*\/[^\/]*\(.png\|.jpg\|.gif\)</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7408817094453403486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7408817094453403486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7408817094453403486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7408817094453403486'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/using-locate-command-with-regex-or.html' title='Using the locate command with --regex (or --regexp)'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5749168445592797782</id><published>2010-02-02T18:58:00.000+01:00</published><updated>2010-02-02T19:52:26.762+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><title type='text'>Favoriete Nederlandse scheldwoorden</title><summary type='text'>Aangestoken door een lijstje met iemands favoriete Franse scheldwoorden, dat echt te makkelijk en te grof was, hier mijn top-N:BoefjeDruifMuppetSchelmSchobbejakSchavuitZoon van een coyote met een gele leverBoerenlulIdiootSchertsfiguurBij "Boerenlul" moet ik altijd denken aan het verhaal van een voetballer in Zuid-Oost Drenthe die van het veld gestuurd werd omdat hij "boetnspul" (buitenspel) naar </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5749168445592797782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5749168445592797782' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5749168445592797782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5749168445592797782'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/favoriete-scheldwoorden.html' title='Favoriete Nederlandse scheldwoorden'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-868137356616453511</id><published>2010-02-01T18:55:00.000+01:00</published><updated>2010-02-16T10:11:48.636+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Fixing PosKey Errors in Zope</title><summary type='text'>Update: For a possibly easier way to _find_ PosKey errors, look here: http://www.zopyx.de/blog/checking-your-zodb-storages-for-poskey-errorsSome objects in my Plone site were broken: when clearing and rebuilding the catalog, i saw "PosKey" errors in my Zope logfile (*). Which objects are broken, and what to do about it?I put a pdb statement in the file which caused errors, which was CMFCore/</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/868137356616453511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=868137356616453511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/868137356616453511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/868137356616453511'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/02/fixing-poskey-errors-in-zope.html' title='Fixing PosKey Errors in Zope'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-901156653067659772</id><published>2010-01-28T10:14:00.000+01:00</published><updated>2010-01-28T10:20:40.929+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Translations in i18n folder not picked up</title><summary type='text'>I had translations in an 'i18n' folder, but they didn't work. No '.mo' file was created on Zope startup, and the products wasn't listed in the ZMI's product listing. In order to get the 'i18n' folder to be picked up, i put a &lt;five:registerPackage package="." /&gt; statement in configure.zcml.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/901156653067659772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=901156653067659772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/901156653067659772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/901156653067659772'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/translations-in-i18n-folder-not-picked.html' title='Translations in i18n folder not picked up'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7350871095683059872</id><published>2010-01-26T13:26:00.000+01:00</published><updated>2010-02-01T13:41:08.429+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='genericsetup'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Indexing of content created by Generic Setup</title><summary type='text'>Just adding a 'profiles/default/structure' to your site will add content, but it won't be indexed properly. You'll have to manually upgrade the portal catalog. To fix this, add this to 'configure.zcml':  &lt;genericsetup:importStep       name="my.policy_updateCatalog"       title="Update catalog"       description="After creating content (from profiles/default/structure), the catalog needs to be </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7350871095683059872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7350871095683059872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7350871095683059872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7350871095683059872'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/indexing-of-content-created-by-generic.html' title='Indexing of content created by Generic Setup'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-605668147105188885</id><published>2010-01-25T15:00:00.000+01:00</published><updated>2010-01-25T15:03:25.592+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to install the Chameleon rendering engine in Plone 4</title><summary type='text'>First pointers: See http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/experimental/chameleon.cfg</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/605668147105188885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=605668147105188885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/605668147105188885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/605668147105188885'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/how-to-install-chameleon-rendering.html' title='How to install the Chameleon rendering engine in Plone 4'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5456061669600422946</id><published>2010-01-22T12:07:00.000+01:00</published><updated>2010-01-22T13:41:42.529+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>using a policy product to install (not just get) add-ons</title><summary type='text'>We all know how you can use a policy product to automatically get add-onproducts and do basic site configuration. If you don't look here: weblion.psu.edu/trac/weblion/wiki/CreateYourOwnProduct and vilmos.somogyi.name/plone-tutorial-new-policy-product-with-pasterBut how to actually install these products and configure them when the policyproduct is installed?Use case: I'd like to create a policy </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5456061669600422946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5456061669600422946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5456061669600422946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5456061669600422946'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/using-policy-product-to-install-not.html' title='using a policy product to install (not just get) add-ons'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6636075103433851879</id><published>2010-01-22T10:52:00.000+01:00</published><updated>2010-01-22T10:53:50.908+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Error: "Couldn't find index page for"</title><summary type='text'>When running a Plone buildout, i got: "Couldn't find index page for {package}". Turns out i'd "deactivated" it via mr.developer. Use ./bin/develop activate {package} to turn it on again.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6636075103433851879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6636075103433851879' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6636075103433851879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6636075103433851879'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/error-couldnt-find-index-page-for.html' title='Error: &quot;Couldn&apos;t find index page for&quot;'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2315368540516058509</id><published>2010-01-18T21:53:00.000+01:00</published><updated>2010-01-18T22:08:34.486+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Noorderslag 2010</title><summary type='text'>I'm late with this. After skipping the second day of Eurosonic, i saw:Tim Knol (singer/songwriter, too sweet but with the band it was okay)Awkward I (yes again, same as last year. better atmosphere, more sound, more talking, which is good.)Lola Kite (electro-punk-thingy)Wende (Evening's winner. Perhaps too many English songs from the new English album.)Charlene (Singer. Didn't impress me, but </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2315368540516058509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2315368540516058509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2315368540516058509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2315368540516058509'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/noorderslag-2010.html' title='Noorderslag 2010'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-1435541646395723980</id><published>2010-01-15T09:43:00.000+01:00</published><updated>2010-01-18T22:04:27.140+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Eurosonic 2010 day 1</title><summary type='text'>I don't personal-blog much anymore, but i want to remember that last night, i saw:Wadruna (Norwegian Role Playing Gamers with deep voices and sound effects)Leisure Society (Too soft, people complained we talked too loud. In the Spieghel!)Pony the Pirate (Energetic folk rock circus, evening's winner)Cosmic Carnival (70's rock/bluesrock and reggae)Dret &amp; Krulle (hiphop, what were they doing?)Le Roi</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/1435541646395723980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=1435541646395723980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1435541646395723980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1435541646395723980'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/eurosonic-2010-day-1.html' title='Eurosonic 2010 day 1'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2385726178845041812</id><published>2010-01-10T21:20:00.000+01:00</published><updated>2010-01-10T21:23:16.412+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mr.developer'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>mr.developer common.py SyntaxError "finally"</title><summary type='text'>Got this error:  File "/home/kees/.buildout/eggs/mr.developer-1.8-py2.4.egg/mr/developer/common.py", line 109     finally:           ^ SyntaxError: invalid syntaxTurns out 1.8 is currently unreleased, perhaps that's the reason.Fixed it by specifying mr.developer = 1.7 in my buildout.cfg.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2385726178845041812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2385726178845041812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2385726178845041812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2385726178845041812'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/mrdeveloper-commonpy-syntaxerror.html' title='mr.developer common.py SyntaxError &quot;finally&quot;'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3074433515896994066</id><published>2010-01-08T11:07:00.001+01:00</published><updated>2010-01-08T11:17:07.165+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Testing the layout for python egg's README.txt file</title><summary type='text'>Before uploading an egg, i like to test the layout of the egg to see if it is correct ReST, so it shows up nicely on the plone.org/products page and pypi.python.org.$ python setup.py --long-description | rst2html &gt; description.htmlThis is assuming that you create the long-description in your setup.py by reading the README.txt. My setup.py usually contains something like this:version = '1.0'setup(</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3074433515896994066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3074433515896994066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3074433515896994066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3074433515896994066'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/testing-layout-for-python-eggs.html' title='Testing the layout for python egg&apos;s README.txt file'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8786939854986275710</id><published>2010-01-07T09:34:00.000+01:00</published><updated>2010-01-07T09:38:23.364+01:00</updated><title type='text'>What is a good WYSIWYG HTML editor?</title><summary type='text'>Tried vi(m), gedit, bluefish, and the winner is: OpenOffice.org!To disable inline style statements, modify Tools &gt; Options &gt; Load/Save &gt; HTML Compatibilty &gt; set "Export" to "HTML 3.2".</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8786939854986275710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8786939854986275710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8786939854986275710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8786939854986275710'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2010/01/what-is-good-wysiwyg-html-editor.html' title='What is a good WYSIWYG HTML editor?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7666824075976128127</id><published>2009-12-31T09:45:00.000+01:00</published><updated>2009-12-31T10:05:37.813+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to find the latest Plone release</title><summary type='text'>The versions of Plone listed on http://plone.org/products/plone/releases/ aren't always up-to-date. This is because it's updated only when the complete installer is available.Us folks who just want to run a buildout can just look at http://dist.plone.org/release/, and add this to the find-links and extends in their buildout. It's just as stable a release.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7666824075976128127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7666824075976128127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7666824075976128127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7666824075976128127'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/12/how-to-find-latest-plone-release.html' title='How to find the latest Plone release'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6737409541859915675</id><published>2009-12-29T13:35:00.000+01:00</published><updated>2009-12-30T09:37:29.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Overriding a view class</title><summary type='text'>I had some trouble overriding one of Plone (4)'s view classes. The tutorial at http://www.slideshare.net/wooda/martin-aspeli-extending-and-customising-plone-3 were a great help. The step below should not be needed anymore.,A fix for it has been committed to Plone 4 trunk. You can just use InterfaceBut the missing step was to subclass the theme marker interface from IDefaultPloneLayer, instead of </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6737409541859915675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6737409541859915675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6737409541859915675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6737409541859915675'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/12/overriding-view-class.html' title='Overriding a view class'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8362439838057597411</id><published>2009-12-18T15:40:00.000+01:00</published><updated>2009-12-18T15:49:40.579+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>The difference between view classes and skin templates, from a security point of view</title><summary type='text'>Did some Googling for this, couldn't figure it out. Found help on the chat:(03:31:51 PM) khink: So, does anyone else know about if ZCML-registered templates are executed with other permissions than skin templates?(03:31:56 PM) ender_ left the room (quit: ).(03:33:02 PM) optilude: khink: templates for views (such as those registered with browser:page) are considered filesystem code(03:33:08 PM) </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8362439838057597411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8362439838057597411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8362439838057597411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8362439838057597411'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/12/difference-between-view-classes-and.html' title='The difference between view classes and skin templates, from a security point of view'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2817972888804940836</id><published>2009-12-05T17:20:00.000+01:00</published><updated>2009-12-05T17:41:13.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dms'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone as a DMS</title><summary type='text'>In order to use Plone as a Document Management System, you'll want Plone to be accessible through the desktop. Users won't want do download a file from the website.On Windows, Enfold Desktop is a nice solution, it blends in with your Folder and Network browsing. On Linux and Mac it can be accomplished with WebDav (which is available on Windows XP and 2003 Server, but ED is much nicer).Zope has to</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2817972888804940836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2817972888804940836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2817972888804940836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2817972888804940836'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/12/plone-as-dms.html' title='Plone as a DMS'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6243460026331088403</id><published>2009-11-22T13:46:00.000+01:00</published><updated>2009-12-05T17:40:28.974+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone 3.3.2 on Lenny requires libc6-dev</title><summary type='text'>Trying to buildout Plone 3.3.2 on Debian Lenny, i got this error:/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h:122:61: error: limits.h: No such file or directory...recipe/zope2install/__init__.py", line 247, in install    'build_ext', '-i',AssertionErrorSome googling hinted i had to install the package libc6-dev, which worked.Edit: What possibly happened is that libc6-dev was installed</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6243460026331088403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6243460026331088403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6243460026331088403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6243460026331088403'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/11/plone-332-on-lenny-requires-libc6-dev.html' title='Plone 3.3.2 on Lenny requires libc6-dev'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-512195450879079907</id><published>2009-11-17T12:45:00.000+01:00</published><updated>2009-11-17T12:58:06.840+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>The SHV5 rootkit</title><summary type='text'>I found out yesterday evening that my home server was cracked. This is an old desktop which runs in a cupboard in my house, and it contains no sensitive data whatsoever. Maybe that's why i've been slacking on security: I hadn't done updates for some time until i tried a dist-upgrade to Debian Lenny, mainly for fun. I had noticed some funny behaviour before, but thought nothing of it.While </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/512195450879079907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=512195450879079907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/512195450879079907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/512195450879079907'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/11/shv5-rootkit.html' title='The SHV5 rootkit'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3015842030753517824</id><published>2009-10-05T23:41:00.000+02:00</published><updated>2010-06-24T16:24:51.606+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Shell script for moving files to trash</title><summary type='text'>(updated 06-10-2009, bottom paragraph)Ubuntu keeps its trash in ~/.local/share/Trash/files, and stores metadata (ie. deleted from where, deleted when) in a sibling info/ folder. This script tries to move files to trash just as the file browser would do, so you can easily restore it later. Save it as trash (or whatever you like) in your $HOME/bin folder (don't forget to chmod u+x it), and use it </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3015842030753517824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3015842030753517824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3015842030753517824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3015842030753517824'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/10/shell-script-for-moving-files-to-trash.html' title='Shell script for moving files to trash'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-1001003266918142551</id><published>2009-09-30T11:22:00.000+02:00</published><updated>2009-09-30T11:28:18.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quota'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Folders with quotas</title><summary type='text'>Another step in getting control over the total size of stuff that users upload, is the quota product. It's not yet eggified, a bit old, but works fine on Plone 3.1.7. It's available from the collective at  https://svn.plone.org/svn/collective/quota. I've added a Dutch translation.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/1001003266918142551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=1001003266918142551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1001003266918142551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1001003266918142551'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/09/folders-with-quotas.html' title='Folders with quotas'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6353427403793234458</id><published>2009-09-30T10:01:00.000+02:00</published><updated>2009-09-30T10:04:09.370+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deliverance'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone Dutch users' day (Gebruikersdag) talk</title><summary type='text'>Here is a link to the slides of the talk i gave at the Dutch Plone users' day: Deliverance for Plone, a use case</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6353427403793234458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6353427403793234458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6353427403793234458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6353427403793234458'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/09/plone-dutch-users-day-gebruikersdag.html' title='Plone Dutch users&apos; day (Gebruikersdag) talk'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8183949197955928065</id><published>2009-09-29T15:33:00.001+02:00</published><updated>2009-09-30T11:30:07.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to limit Plone's file upload size?</title><summary type='text'>It would be nice if we could somehow limit the size of members' uploads. One step in this would be to limit the size for an individual file upload. Follow-up: See  /2009/09/folders-with-quotas.html for more along this track.After digging in ATContentTypes' ATFile class, it turns out there's a validator for this, but it's disabled by default. It can be modified by tweaking the file etc/</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8183949197955928065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8183949197955928065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8183949197955928065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8183949197955928065'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/09/how-to-limit-file-upload-size.html' title='How to limit Plone&apos;s file upload size?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4625951691549179695</id><published>2009-09-24T13:41:00.001+02:00</published><updated>2009-09-24T13:48:04.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>PloneGazette: exporting all subscribers as csv</title><summary type='text'>A custom script. It's worth noting that in PloneGazette 3.0, calling getFolderContents on a NewsletterBTree will give its parent's contents. That's acquisition for you. So we use the getSubcribers method.There's also a nice trick to copy the results to the Plone log.## Script (Python) "exportEmailSubscriptions"##bind container=container##bind context=context##bind namespace=##bind script=script##</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4625951691549179695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4625951691549179695' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4625951691549179695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4625951691549179695'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/09/plonegazette-exporting-all-subscribers.html' title='PloneGazette: exporting all subscribers as csv'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4433092832737814992</id><published>2009-09-24T10:57:00.000+02:00</published><updated>2009-09-24T11:16:43.783+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MailDrop'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>AttributeError: validateSingleEmailAddress with MailDropHost</title><summary type='text'>I use MailDropHost in a Plone 2.5 buildout for development. The nice thing for development is, you send emails to all users from Plone, and they will not be sent, just kept in MailDrop's spool folder, until you start maildrophost.However, it gave an error when sending mail:   Module Products.CMFPlone.PloneTool, line 190, in validateSingleEmailAddressAttributeError: validateSingleEmailAddressIt </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4433092832737814992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4433092832737814992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4433092832737814992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4433092832737814992'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/09/attributeerror-validatesingleemailaddre.html' title='AttributeError: validateSingleEmailAddress with MailDropHost'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6874605229490542963</id><published>2009-09-03T10:33:00.000+02:00</published><updated>2009-09-03T10:38:25.612+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Product shows up twice</title><summary type='text'>A product showed up twice: once as "Products.MyProductName" and once as "MyProductName". This happened in the ZMI &gt; portal_quickinstaller, ZMI &gt; Control Panel &gt; Products, and in the Plone Add-on Products panel. The trick was to remove the line "five:registerPackage" from configure.zcml, as explained in the weblion site. Reloading the zcml configuration with plone.reload was also handy.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6874605229490542963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6874605229490542963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6874605229490542963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6874605229490542963'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/09/product-shows-up-twice.html' title='Product shows up twice'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-7443561564430952680</id><published>2009-08-28T17:45:00.001+02:00</published><updated>2010-03-19T00:19:15.876+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Installing Plone on Ubuntu 9.04 Jaunty / 9.10 Karmic (using buildout)</title><summary type='text'>(modified Mar. 19, 2010: add note about UnifiedInstaller, link to this script at plone.org)(modified Jan. 11, 2010: added script header, put plone's buildout dir in a variable)(modified Jan. 08, 2010: PIL as egg in buildout)(modified Oct. 30, 2009: use http://dist.plone.org/thirdparty/)Note: the recommended way for beginners to set up a Plone site is to use the installers, available from </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/7443561564430952680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=7443561564430952680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7443561564430952680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/7443561564430952680'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/08/plone-on-ubuntu-904-jaunty.html' title='Installing Plone on Ubuntu 9.04 Jaunty / 9.10 Karmic (using buildout)'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-1086893248381594940</id><published>2009-07-17T17:27:00.000+02:00</published><updated>2009-07-21T16:42:08.255+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Authenticating in the Plone debug prompt</title><summary type='text'>While debugging through ./bin/instance debug, a catalog call would only yield published objects:&gt;&gt;&gt; len(site.portal_catalog(review_state='private'))0I'm sure i had more than that! There's surely some problem with authentication.How to tell your debug instance that you are, in fact, The Man?&gt;&gt;&gt; from AccessControl.SecurityManagement import newSecurityManager&gt;&gt;&gt; admin = app.acl_users.getUser('admin'</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/1086893248381594940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=1086893248381594940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1086893248381594940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/1086893248381594940'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/07/authenticating-in-plone-debug-prompt.html' title='Authenticating in the Plone debug prompt'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8323899983700048401</id><published>2009-07-16T10:46:00.000+02:00</published><updated>2009-07-17T17:30:35.046+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Setup zcml from plone debug prompt</title><summary type='text'>Some multiadapters are not available on the plone debug prompt by default. For an example, start an instance in debug mode and type:site = app.plone-idfrom zope.component import getMultiAdapterfrom zope.publisher.browser import TestRequestrequest = TestRequest()#from Products.CMFPlone.browser.interfaces import IPloneview = getMultiAdapter((plonesite, request), name="plone")The above works.However</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8323899983700048401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8323899983700048401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8323899983700048401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8323899983700048401'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/07/setup-zcml-from-plone-debug-prompt.html' title='Setup zcml from plone debug prompt'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-519080410629837791</id><published>2009-07-02T11:15:00.002+02:00</published><updated>2011-11-28T16:27:59.562+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='to be how-to&apos;ed'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How do Plone's expiration/publication dates work?</title><summary type='text'>Update 2011-11-28: Controlling permission: Access inactive portal content . It's simple enough, but worth a summary:When an item is past its expiration date, it's marked "expired" in red in its document byline when viewed.An item whose publication date is before the current date doesn't get extra text in its byline.In both cases, the item is "unpublished", which is not to be confused with a </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/519080410629837791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=519080410629837791' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/519080410629837791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/519080410629837791'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/07/how-do-plones-expirationpublication.html' title='How do Plone&apos;s expiration/publication dates work?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3004948851437095883</id><published>2009-06-19T11:24:00.000+02:00</published><updated>2009-06-19T11:25:22.234+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Countdown shell (bash) script</title><summary type='text'>function countdown () {    a=$1    while [ $a -gt 0 ]; do        echo $a;        a=$(($a-1));    done}for i in `countdown 10`; do echo $i; sleep 0.1; done</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3004948851437095883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3004948851437095883' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3004948851437095883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3004948851437095883'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/06/countdown-shell-bash-script.html' title='Countdown shell (bash) script'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5583740869887278158</id><published>2009-06-18T12:05:00.000+02:00</published><updated>2009-09-07T11:41:01.256+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to change Plone's default folder listing sort order</title><summary type='text'>Note: you may also want to look at this article, which show how to add new content on the top of a folder instead of at the bottom.The easy, all-Plone way to change Plone's folder sort order is to create a Collection (or Smart Folder, or Topic) which you can configure through the web to display items from wherever you please, in whatever order you please. I think you should consider using a </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5583740869887278158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5583740869887278158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5583740869887278158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5583740869887278158'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/06/how-to-change-plones-default-folder.html' title='How to change Plone&apos;s default folder listing sort order'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6197543686215285975</id><published>2009-06-15T10:59:00.000+02:00</published><updated>2009-06-15T11:07:51.479+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buildout'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Creating a Plone 2.5 buildout with slideshowfolder 4.0</title><summary type='text'>Slideshowfolder 4.0 can work on Plone 2.5, but it requires plone.app.form.The default buildout from paster create -t plone2.5_buildout requires some tweaking. I checked out http://svn.plone.org/svn/plone/plone.app.form/branches/plone-2.5 in develop-eggs/ and used the buildout.cfg below. Note that you have to explicitly include Five 1.4.4 (Zope ships with a 1.3 version) and CMFonFive.[buildout]</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6197543686215285975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6197543686215285975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6197543686215285975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6197543686215285975'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/06/creating-plone-25-buildout-with.html' title='Creating a Plone 2.5 buildout with slideshowfolder 4.0'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3769756996849821077</id><published>2009-06-11T12:24:00.000+02:00</published><updated>2009-06-11T17:11:17.148+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='pound'/><title type='text'>Testing cookies with wget</title><summary type='text'>I noticed an odd behaviour on one of our websites, hosted by an external party: When cookies exceeded a certain length, our Plone site didn't get any cookies in the request.An excellent way to find the point of failure here is to use wget in combination with a script which prints the cookies it gets. Create a file cookie.txt:your.domain.com  FALSE  / FALSE 0 cookie_id "SomeCookieValue"This file </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3769756996849821077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3769756996849821077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3769756996849821077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3769756996849821077'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/06/testing-pound-243-for-disappearing.html' title='Testing cookies with wget'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5305647178920821604</id><published>2009-05-17T23:03:00.000+02:00</published><updated>2009-06-05T09:43:19.063+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><category scheme='http://www.blogger.com/atom/ns#' term='atletiek'/><title type='text'>Competitie Drachten</title><summary type='text'>Debuut op de steeplechase. Niet geblesseerd, gefinisht en het leverde  meer punten op dan de 800 meter van de vorige keer.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5305647178920821604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5305647178920821604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5305647178920821604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5305647178920821604'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/05/competitie-drachten.html' title='Competitie Drachten'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QcEjBBPbE5g/ShB8Wc9nUoI/AAAAAAAAAV0/SRlGq7hJvts/s72-c/Afb011.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2037164518818718241</id><published>2009-04-28T22:39:00.000+02:00</published><updated>2009-05-17T23:32:03.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><category scheme='http://www.blogger.com/atom/ns#' term='atletiek'/><title type='text'>Gedachten na de Bata</title><summary type='text'>- Volgend jaar nachtploeg- Siem porren- Veluweloop meedoen- Meer nieuwe mensen erbij</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2037164518818718241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2037164518818718241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2037164518818718241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2037164518818718241'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/04/gedachten-na-de-bata.html' title='Gedachten na de Bata'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3938841519151487962</id><published>2009-04-27T22:06:00.000+02:00</published><updated>2009-06-11T12:56:24.670+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>ATI woes after upgrade to Jaunty</title><summary type='text'>After upgrading to Ubuntu 9.04, i would get a scrambled screen and a freeze after X starts. It was still possible to SSH to the machine, but it didn't react to the keyboard. I have an ATI Radeon HD2350. I had problems with earlier versions of Ubuntu, but my friend Google really didn't give me much hope. (I'll never ever buy something with an ATI card in it again!)I found a fix here, and it </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3938841519151487962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3938841519151487962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3938841519151487962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3938841519151487962'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/04/ati-woes-after-upgrade-to-jaunty.html' title='ATI woes after upgrade to Jaunty'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-3662706828307469336</id><published>2009-04-24T09:42:00.000+02:00</published><updated>2009-04-24T14:10:44.329+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>A text-field with formatting</title><summary type='text'>Sometimes, you want your text-field (meaning "field" in an Archetypes context) to preserve line breaks. I used to think this was not possible: if you want line breaks, or other formatting stuff, you'll have to use a rich text field.However, my colleague Huub pointed out this neat way of preserving formatting in a text field:You set the tagged values: default_content_type=text/</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/3662706828307469336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=3662706828307469336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3662706828307469336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/3662706828307469336'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/04/text-field-with-formatting.html' title='A text-field with formatting'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QcEjBBPbE5g/SfFuCpD_wPI/AAAAAAAAAUU/pxJ3NVb4ul0/s72-c/argo_text_field_formatting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6784474838206111499</id><published>2009-04-22T11:32:00.001+02:00</published><updated>2009-04-24T14:10:44.331+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Why is @@manage-portlets not available on my custom content type?</title><summary type='text'>It's something to do with not extending an Archetypes class. I had a custom type which i created which ArchGenXML, using the &lt;&lt;large&gt;&gt; stereotype in my UML. The view wasn't available on my type. When i removed the stereotype and created a generalization from (&lt;&lt;stub&gt;&gt; class) ATBTreeFolder instead (tagged value import_from = Products.ATContentTypes.content.folder), it worked.</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6784474838206111499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6784474838206111499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6784474838206111499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6784474838206111499'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/04/why-is-manage-portlets-not-available-on.html' title='Why is @@manage-portlets not available on my custom content type?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-4617865255038155410</id><published>2009-04-20T13:18:00.000+02:00</published><updated>2009-05-17T23:32:03.243+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><category scheme='http://www.blogger.com/atom/ns#' term='atletiek'/><title type='text'>Atletiek competitie 2e divisie - onderdelen per wedstrijd</title><summary type='text'>     Wedstrijdreglement 2008-2009                 2e DivisieMaximum aantal deelnemers per ploeg Onderdeel             Vrouwen Mannen  Wedstrijd             1 2 3   1 2 3   100 m                 2 2 2   2 2 2 200 m                 2 2 2   2 2 2 400 m                 2 2 2   2 2 2 800 m                 2 2 -   2 - 2 1 500 m               - - 2   - 2 - 3 000 m               2 2 -   - - - 5 000 m</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/4617865255038155410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=4617865255038155410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4617865255038155410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/4617865255038155410'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/04/atletiek-competitie-2e-divisie.html' title='Atletiek competitie 2e divisie - onderdelen per wedstrijd'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5055540974067388641</id><published>2009-04-09T17:45:00.001+02:00</published><updated>2009-06-30T15:33:05.152+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buildout'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Creating a separate instance for debugging</title><summary type='text'>Make debugging Zope/Plone more fun using a live environment! Update: A separate config file for a two-instance setupYou may want to use the file below to create a two-instances setup from a very basic config file. In this case, my config extends dvl.cfg, which is a single-instance, non-cluster setup. It's important that this buildout have an [instance] section. (Almost all simple buildouts, </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5055540974067388641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5055540974067388641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5055540974067388641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5055540974067388641'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/04/creating-separate-instance-for.html' title='Creating a separate instance for debugging'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-8854942430845840772</id><published>2009-03-27T12:11:00.001+01:00</published><updated>2009-04-24T14:10:44.336+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='to be how-to&apos;ed'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to set a ReferenceField programmatically</title><summary type='text'>I'm creating a method for importing content into Plone. The content types that are created have a reference field on them, but how to set that from your import method (or import script)? A ReferenceField simply stores the UID of the referenced object, so you can do it like this (if your field is called myReference:    obj.setMyReference(referenced_object.UID())</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/8854942430845840772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=8854942430845840772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8854942430845840772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/8854942430845840772'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/03/how-to-set-referencefield.html' title='How to set a ReferenceField programmatically'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-68548784199420510</id><published>2009-03-11T11:09:00.000+01:00</published><updated>2009-09-14T10:16:00.592+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deliverance'/><title type='text'>Installing deliverance</title><summary type='text'>Following the steps on the deliverance site didn't work for me: I get stuff like /usr/bin/ld: i386 architecture of input file ... is incompatible with i386:x86-64 output I'm guessing it's because i'm on a 64 bit platform, and the build doesn't take this into account. If you are on a 32 bit platform, the steps on the deliverance site may be easier for you.To circumvent it, i installed deliverance </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/68548784199420510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=68548784199420510' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/68548784199420510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/68548784199420510'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/03/installing-deliverance.html' title='Installing deliverance'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-6671262257715846460</id><published>2009-03-09T19:52:00.000+01:00</published><updated>2009-04-24T14:10:44.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-geek'/><title type='text'>Dit en dat</title><summary type='text'>Soms is het leven mooi. Bijvoorbeeld wanneer iemand deze voorbeeldtekst aanlevert:"Ik heb veel ervaring met dit en dat, maar mijn echte specialiteit is zus en zo. Dus daarom juist nu meteen en ondanks alles, zou ik willen zeggen, evenwel nochtans, desalniettemin."Het heeft iets weg van Ajuinen &amp; Look, had ook iets van Koot &amp; Bie kunnen zijn, of maarwatishet.com. Maar een snelle Google levert </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/6671262257715846460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=6671262257715846460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6671262257715846460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/6671262257715846460'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/03/dit-en-dat.html' title='Dit en dat'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-5779253919949531528</id><published>2009-03-02T16:44:00.000+01:00</published><updated>2009-04-24T14:13:49.182+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='argouml'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>xml.parsers.expat.ExpatError when running ArchGenXML</title><summary type='text'>I got this error:$ ~/bin/archgenxml-virtualenv/bin/archgenxml uml/OPSB.uml...xml.parsers.expat.ExpatError: not well-formed (invalid token): line 51, column 0For a more complete stacktrace see http://paste.plone.org/26649.Turns out it's a bug in ArgoUML 0.28 BETA 2: When saving as a .uml file, a sequence of "^@"'s is inserted. Remove it manually, or use 0.26 for now.See http://argouml.tigris.org/</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/5779253919949531528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=5779253919949531528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5779253919949531528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/5779253919949531528'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/03/xmlparsersexpatexpaterror-when-running.html' title='xml.parsers.expat.ExpatError when running ArchGenXML'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-498925995500490079</id><published>2009-03-02T16:36:00.001+01:00</published><updated>2009-04-24T14:10:44.344+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archgenxml'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>ArchGenXml: How to get the latest profile.xmi?</title><summary type='text'>Use the agx_argouml_profile script that came with your version of ArchGenXML.$ cd ~/bin$ virtualenv archgenxml-latest$ cd archgenxml-latest$ . bin/activate$ easy_install archgenxml$ ./bin/agx_argouml_profile$ lsarchgenxml_profile.xmi  bin  include  lib$ deactivate</summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/498925995500490079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=498925995500490079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/498925995500490079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/498925995500490079'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/03/archgenxml-how-to-get-latest-profilexmi.html' title='ArchGenXml: How to get the latest profile.xmi?'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2374927650282178606.post-2802071252353163454</id><published>2009-02-27T17:53:00.000+01:00</published><updated>2010-01-14T12:20:47.875+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='translations'/><title type='text'>Linking to translated content items from zope page templates</title><summary type='text'>This document is now a how-to on plone.org.I had a situation where a custom footer links to a "Terms of Service" page. This page was a Page (Document) object with LinguaPlone enabled. What happens is this: Set your browser's language to Dutch.  Log in. Note that all texts are in Dutch.  Click the link "Voorwaarden" (or whatever, it links to 'terms-of-service' You get the item in English instead </summary><link rel='replies' type='application/atom+xml' href='http://keeshink.blogspot.com/feeds/2802071252353163454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2374927650282178606&amp;postID=2802071252353163454' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2802071252353163454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2374927650282178606/posts/default/2802071252353163454'/><link rel='alternate' type='text/html' href='http://keeshink.blogspot.com/2009/02/linking-to-translated-content-items.html' title='Linking to translated content items from zope page templates'/><author><name>Kees Hink</name><uri>http://www.blogger.com/profile/12213747448510868481</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh4.ggpht.com/_QcEjBBPbE5g/SpE-BU6lXeI/AAAAAAAAAaI/MCKIzqtyE0s/s128/afb007.jpg'/></author><thr:total>2</thr:total></entry></feed>
