Posted
about 14 years
ago
by
Plone News
We're thrilled to honor our 2010 Plone Help Channel Superstars! These are just some of the people who have consistently provided outstanding help and support to Plone users via our IRC help channel.
1: Mikko Ohtamaa (moo)
2: Elizabeth Leddy
... [More]
(eleddy)
3: Andreas Jung (MacYet)
The other nominees, all of whom are deserving of recognition and appreciation, were:
Michael A Smith (kojiro)Israel Saeta Pérez (dukebody)Tim Knapp (duffyd)Daryl Dixon (ddixon)Nejc Zupan (zupo)Sean Kelly (nutjob)
A big thank you to all of the winners and nominees, to the entire Plone community for participating and to our team of judges for doing the hard work of choosing winners.
In 2011 we plan to launch the awards before Plone Conference and to announce the winners at the conference. Until then, keep an eye out for instances of conspicuous helpfulness in #plone! [Less]
|
Posted
about 14 years
ago
by
Plone News
We're thrilled to honor our 2010 Plone Help Channel Superstars! These are the people who have consistently provided outstanding help and support to Plone users via our IRC help channel.
1: Mikko Ohtamaa (moo)
2: Elizabeth Leddy (eleddy)
3: Andreas
... [More]
Jung (MacYet)
The other nominees, all of whom are deserving of recognition and appreciation, were:
Michael A Smith (kojiro)Israel Saeta Pérez (dukebody)Tim Knapp (duffyd)Daryl Dixon (ddixon)Nejc Zupan (zupo)Sean Kelly (nutjob)
A big thank you to all of the winners and nominees, to the entire Plone community for participating and to our team of judges for doing the hard work of choosing winners.
In 2011 we plan to launch the awards before Plone Conference and to announce the winners at the conference. Until then, keep an eye out for instances of conspicuous helpfulness in #plone! [Less]
|
Posted
about 14 years
ago
by
Reinout van Rees' weblog
A bit of background
"Deliverance" or xdv is something that
I've been using for a while. It started in 2007 when hearing a presentation
at a Plone sprint.
Basically, you have three parts:
The actual website(s) you want to theme.
A html
... [More]
file with the layout you want to have.
A rules file that tells xdv/deliverance which items to take from the source
website and where to place them in the layout.
I've got two websites (a plone one for my church and a sphinx plain html one
that's reinout.vanrees.org) that use deliverance/xdv
The Plone one uses an older xdv version that I hooked up in a PasteScript .ini file.
My own website uses an old branch I once made of deliverance with some
custom fixes. That deliverance version can be run on its own (with a
cronjob to start it when the server starts).
It is all a bit brittle, somehow. It all runs perfectly, mind you, but I
don't dare touching it. So many moving parts and small differences. And
nagging doubts about the small things that went wrong when deploying it.
Time for a fresh start
Time for a fresh start. I really like the xdv-idea and I had a website that
was just perfect for xdv. I recently started generating documentation for all
our products and started putting it online at http://doc.lizardsystem.nl .
There are a couple of different kinds of pages in there:
Plain generated html index pages.
The python setup.py --long-description output, rendered as html.
Basically the same you'd get when releasing a python package on pypi.
Coverage output.
Planned, but not there yet: sphinx documentation. Two packages already have
it, but I just haven't hooked it up in the automatic process.
Problem: I'm not going to make a nice sphinx layout and a regular html
page layout and, yep, another long-description layout. The layout isn't the
problem, but you have to hook it up into at least three different
documentation generation steps.
Solution: xdv. Just make one layout and write up a decent rule file that
copy/pastes the correct bits and pieces out of the various source formats into
the layout's proper elements.
Current setup
Googling and reading my way through various websites, I settled for the
following setup.
XDV, not deliverance. Xdv is a simpler, smaller version of deliverance and
I don't need the big version. And xdv has the interest and manpower of
Plone behind it, so that's solid. (Warning: they're renaming it to diazo
at the moment...)
dv.xdvserver as a piece of
wsgi middleware for actually applying the xdv transformation.
collective.recipe.modwsgi to easily set up
that wsgi middleware and to get an wsgi script I can feed to apache.
What I added to my setup.py install_requires list:
...
'PasteDeploy',
'PasteScript',
'dv.xdvserver', # This pulls in xdv itself, btw.
...
In my buildout.cfg, I added two parts:
[wsgiapp]
# Generate a script that's a wsgi script that runs the
# paste.ini config file.
recipe = collective.recipe.modwsgi
eggs = ${buildout:eggs}
config-file = ${buildout:directory}/etc/paste.ini
[wsgiconf]
# Generate the paste.ini config file with the wsgi config.
# collective.recipe.template makes sure all the absolute
# paths are correct.
recipe = collective.recipe.template
input = ${buildout:directory}/etc/paste.ini.in
output = ${buildout:directory}/etc/paste.ini
The wsgi configuration file paste.ini looks like this. Irritating is that
you have to specify a full logging setup at the end: otherwise it won't
start (that's because collective.recipe.modwsgi requires it):
[composite:main]
# Main url mapper, this is the actual start of the site.
# This section tells paster to serve everything in /static
# with [app:theme_resources] and the rest with [app:root].
use = egg:Paste#urlmap
/static = theme_resources
/ = root
[app:theme_resources]
# Serve everything in /theme from the static directory.
use = egg:Paste#static
document_root = /home/reinout/buildout/doc/theme/static
[app:root]
# Likewise, our actual content (coverage, long-description,
# sphinx) is in var/www/. Just serve it as static files,
# but first run it through our actual xdv filter.
use = egg:Paste#static
document_root = /home/reinout/buildout/doc/var/www
filter-with = xdv
[filter:xdv]
# The actual xdv filter which is the purpose of this entire
# file! Give it a ruleset (=configuration) and our base
# theme .html file.
use = egg:dv.xdvserver#xdv
theme = /home/reinout/buildout/doc/theme/index.html
rules = /home/reinout/buildout/doc/theme/rules.xml
# live=true means changes to the rules or theme are applied
# instantly, otherwise you'd need to restart apache.
# There's a bit of perfomance hit, of course.
live = true
[server:main]
# Development server, call it with
# "bin/paster server etc/paste.ini".
use = egg:Paste#http
host = 127.0.0.1
port = 8000
# Mandatory logging config below, otherwise
# collective.recipe.modwsgi refuses to work.
[loggers]
keys = root
[handlers]
keys = logfile
[formatters]
keys = logfile
[logger_root]
level = INFO
handlers = logfile
[handler_logfile]
class=logging.FileHandler
args=('/home/reinout/buildout/doc/var/log/xdv.log',)
level=INFO
formatter=logfile
[formatter_logfile]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt = %H:%M:%S
And our rules.xml file with - for the moment- just a couple of very basic
transformations:
The theme hasn't been fleshed out yet. For now I only apply the blueprint css
stylesheets, basically:
title
Hoera
Hurray! Sample content that will disappear!
In the end, I'm pretty happy with the setup. I'll probably port my two other
projects over. And I'll keep an eye open for more usecases for xdv!
[Less]
|
Posted
about 14 years
ago
by
Reinout van Rees' weblog
A bit of background
"Deliverance" or xdv is something that
I've been using for a while. It started in 2007 when hearing a presentation
at a Plone sprint.
Basically, you have three parts:
The actual website(s) you want to theme.
A html
... [More]
file with the layout you want to have.
A rules file that tells xdv/deliverance which items to take from the source
website and where to place them in the layout.
I've got two websites (a plone one for my church and a sphinx plain html one
that's reinout.vanrees.org) that use deliverance/xdv
The Plone one uses an older xdv version that I hooked up in a PasteScript .ini file.
My own website uses an old branch I once made of deliverance with some
custom fixes. That deliverance version can be run on its own (with a
cronjob to start it when the server starts).
It is all a bit brittle, somehow. It all runs perfectly, mind you, but I
don't dare touching it. So many moving parts and small differences. And
nagging doubts about the small things that went wrong when deploying it.
Time for a fresh start
Time for a fresh start. I really like the xdv-idea and I had a website that
was just perfect for xdv. I recently started generating documentation for all
our products and started putting it online at http://doc.lizardsystem.nl .
There are a couple of different kinds of pages in there:
Plain generated html index pages.
The python setup.py --long-description output, rendered as html.
Basically the same you'd get when releasing a python package on pypi.
Coverage output.
Planned, but not there yet: sphinx documentation. Two packages already have
it, but I just haven't hooked it up in the automatic process.
Problem: I'm not going to make a nice sphinx layout and a regular html
page layout and, yep, another long-description layout. The layout isn't the
problem, but you have to hook it up into at least three different
documentation generation steps.
Solution: xdv. Just make one layout and write up a decent rule file that
copy/pastes the correct bits and pieces out of the various source formats into
the layout's proper elements.
Current setup
Googling and reading my way through various websites, I settled for the
following setup.
XDV, not deliverance. Xdv is a simpler, smaller version of deliverance and
I don't need the big version. And xdv has the interest and manpower of
Plone behind it, so that's solid. (Warning: they're renaming it to diazo
at the moment...)
dv.xdvserver as a piece of
wsgi middleware for actually applying the xdv transformation.
collective.recipe.modwsgi to easily set up
that wsgi middleware and to get an wsgi script I can feed to apache.
What I added to my setup.py install_requires list:
...
'PasteDeploy',
'PasteScript',
'dv.xdvserver', # This pulls in xdv itself, btw.
...
In my buildout.cfg, I added two parts:
[wsgiapp]
# Generate a script that's a wsgi script that runs the
# paste.ini config file.
recipe = collective.recipe.modwsgi
eggs = ${buildout:eggs}
config-file = ${buildout:directory}/etc/paste.ini
[wsgiconf]
# Generate the paste.ini config file with the wsgi config.
# collective.recipe.template makes sure all the absolute
# paths are correct.
recipe = collective.recipe.template
input = ${buildout:directory}/etc/paste.ini.in
output = ${buildout:directory}/etc/paste.ini
The wsgi configuration file paste.ini looks like this. Irritating is that
you have to specify a full logging setup at the end: otherwise it won't
start (that's because collective.recipe.modwsgi requires it):
[composite:main]
# Main url mapper, this is the actual start of the site.
# This section tells paster to serve everything in /static
# with [app:theme_resources] and the rest with [app:root].
use = egg:Paste#urlmap
/static = theme_resources
/ = root
[app:theme_resources]
# Serve everything in /theme from the static directory.
use = egg:Paste#static
document_root = /home/reinout/buildout/doc/theme/static
[app:root]
# Likewise, our actual content (coverage, long-description,
# sphinx) is in var/www/. Just serve it as static files,
# but first run it through our actual xdv filter.
use = egg:Paste#static
document_root = /home/reinout/buildout/doc/var/www
filter-with = xdv
[filter:xdv]
# The actual xdv filter which is the purpose of this entire
# file! Give it a ruleset (=configuration) and our base
# theme .html file.
use = egg:dv.xdvserver#xdv
theme = /home/reinout/buildout/doc/theme/index.html
rules = /home/reinout/buildout/doc/theme/rules.xml
# live=true means changes to the rules or theme are applied
# instantly, otherwise you'd need to restart apache.
# There's a bit of perfomance hit, of course.
live = true
[server:main]
# Development server, call it with
# "bin/paster server etc/paste.ini".
use = egg:Paste#http
host = 127.0.0.1
port = 8000
# Mandatory logging config below, otherwise
# collective.recipe.modwsgi refuses to work.
[loggers]
keys = root
[handlers]
keys = logfile
[formatters]
keys = logfile
[logger_root]
level = INFO
handlers = logfile
[handler_logfile]
class=logging.FileHandler
args=('/home/reinout/buildout/doc/var/log/xdv.log',)
level=INFO
formatter=logfile
[formatter_logfile]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt = %H:%M:%S
And our rules.xml file with - for the moment- just a couple of very basic
transformations:
The theme hasn't been fleshed out yet. For now I only apply the blueprint css
stylesheets, basically:
title
Hoera
Hurray! Sample content that will disappear!
In the end, I'm pretty happy with the setup. I'll probably port my two other
projects over. And I'll keep an eye open for more usecases for xdv!
[Less]
|
Posted
about 14 years
ago
by
Plone, web standards and e-commerce - blog
Plone, GAE, HTML5
The year started with business as usual with our main customer EEA and with overtime we also managed to redesign Jeeves Information System's multilingual websites, all with Plone. I, Sasha went to the Lovely Snow Sprint where the
... [More]
topic this year was Google App Engine. It was a perfect place to meet friends and learn something new. Together with Jens W. Klein from Bluedynamics and Nick Johnson from Google we created TweetEngine for sharing twitter accounts. After the Snow Sprint I was very inspired to do more projects so we decided to take 2 days a month to do none customer work and Per Thulin really let his creativity flow. We put all our projects on http://labs.valentinewebsystems.se/ . During summer Frederik Jeppsson joined us and helped us evaluate python e-commerce systems and migrate lavendeldockor.se from EasyShop to LFS.
Father and we won the tender
After summer the changes started. I became a father. Per Thulin decided to start his own company so I decided to leave the office and move to the open space at Malmö Arena at St.Gertrud. Together with Eau de Web in Romania we won the tender at EEA! But after more then 6 years I decided that it was time for me to do some new projects so for the new work at EEA I found a replacement for me.
The launch at EU parliament
During the year our biggest project was SOER 2010 and a subproject SENSE for the European state of environment report. But before the launch of SOER 2010 at EU parliament in Brussels I also went to Plone Conference 2010. At the Plone Conference 2010 I gave two talks, External E-commerce and Plone playing along and Managing multilingual sites.
New year, new opportunities
Now few days left of the year I must say it has been a good year, a lot of work, met interesting people in the SENSE project and I am looking forward to the new year with a lot of new interesting projects and opportunities.
Merry Christmas and Happy New Year from a cold and snowy Sweden!
References
TweetEngine
Lavendeldockor.se
SOER 2010 - European Environment Agency
Jeeves
[Less]
|
Posted
about 14 years
ago
by
plope
Weird stuff you can do with Pyramid "url dispatch".
|
Posted
about 14 years
ago
by
Random notes from mg
objgraph got
shiny documentation built with
Sphinx.
Python 3.x support, thanks to Stefano Rivera.
Python 2.4 and 2.5 support, thanks to Daniel Blackburn.
assorted smaller improvements.
zodbbrowser got
support for all ZODB
... [More]
databases, not just those with a
Zope 3/Bluebream-style root folder/local site.
the ability to cope better with broken objects (due to the way ZODB
works, not having some of your modules on the Python pack can break
unpickling; zodbbrowser now handles this kind of situation better).
assorted smaller improvements.
a slow but inevitable shift of focus from "use it as a plugin for your
Zope 3 app" to "it's a standalone tool for inspecting ZODB contents".
(Both use cases are still supported, and will be for the foreseeable
future.)
imgdiff got
its first public release.
some experimental code to actually find and highlight the differing
parts of the images:
This works better when both images are the same size, although there's
experimental (and somewhat buggy) code to try all possible alignments.
I could use some help here; image processing is not something I'm
familiar with, and searching
StackOverflow didn't help beyond reminding me of the existence
of PIL's ImageChops.difference(), which is for same-sized images only.
Many of the results there are about comparing photos, where things like
lighting levels matter. What I need is a diff for computer-generated
images, where some things may be shifted around a bit, by different
amounts, but are essentially the same. Are there any two-dimensional
sequence diff algorithms?
[Less]
|
Posted
about 14 years
ago
by
BlueDynamics Alliance - Zope Related
Today I had to debug a security related problem. In a complex site at some places a Unauthorized came up. I did all the holy steps needed I know (see plone.org/documentation/kb/debug-unauthorized). It still ate up my error-message and even with log
... [More]
level DEBUG at all places no output with any value was available. This primary because the redirect to the login_form happened.
Ok, where can one turn off redirect to the login_form? To find this I had to step through the publishing process and found one of these lovely monkey-patches of Plone. It patches quiet and hidden and so it took me a while to recognize:
It is in plone.app.linkintegrity. The patch code itself is in monkey.py while patching happens in the __init__.py on zopes inititialize call.
I commented the line with monkey.installExceptionHook() and afterwards I got a wonderful traceback in my error_log.
I hope this may help somebody else.
Image by Bill Mill at flickr under CC-BY-SA [Less]
|
Posted
about 14 years
ago
by
Plone News
Nogueira is a designer, expert in CSS, HTML, usability and accessibility with a long history in the Plone community. He is the founder of
Simples Consultoria, a company that provides development, support and
training in South America and
... [More]
Worldwide. And in addition to creating and organizing the recent Plone Symposium
South America, he is the maintainer of the Brazilian portuguese translation of
Plone.
World Plone Day is a chance for the global Plone community to showcase
their software of choice to potential users at events around the world. The events will be held at universities,
developers, software integrators, user groups, and government
organizations - all key players in the community of developers and users
who make Plone one of the most popular open source software initiatives
on the planet.
The next World Plone Day is April 27, 2011. This will be the fourth time the event has been held since it was created in 2008 by Roberto Allende, the previous WPD Champion. [Less]
|
Posted
about 14 years
ago
by
Reinout van Rees' weblog
We are doing too good a job: the
customers keep coming! We're agile programmers, so we can react fast to
customer requests and they like it. The core "lizard web"
python+django+mapnik+openlayers+matplotlib product is pretty attractive
... [More]
to
water boards (Dutch: waterschappen), municipalities and so on.
The customers keep coming, so we'd like some extra colleagues :-) Being the
most well known django-cms programmer in the Netherlands sure helps to get
yourself a job, but beginners are also fine. One thing we do need: continual
learning and improvement. Improve yourself, learn new technologies, figure
out things.
To get an idea, this is a summary of things we work with. No need to know
all/most of them, this is just to give an impression. I don't want to scare
you away. If you get to list every technology you've ever read an article
on in your CV, I get to put a list here, right? :-)
Lots and lots of open source. Most of our products are open source
themselves. Ubuntu on the server and on most of the IT laptops (I'm
personally trying to get an apple, but that's a different story :-)
Python, Django. Apart from one java project and some R script, everything
is python. We love it. And most of our stuff is weboriented and that's all
Django.
Quite a lot of websites have django-cms
now. Many projects need a bunch of regular pages and some news items to
explain the project itself. Django-cms is a handy way to get that working
quickly.
Loads of maps. Openlayers for the interface. Mapnik (the openstreetmap
engine) for making the map layers. Jquery interaction. Lots of data
sources (plain databases, postgis, netcdf files, etc).
Some things that are on my personal wish list for next year:
Improved test coverage. It is not bad, but not good either. Often 50-70%
code coverage. I want a consistent 90-98%.
Good public documentation. The README in our products is already OK, but
I've added sphinx here and there to start real
proper documentation, however.
Look at nosql databases to see if they're useful (and fun!) for us.
More and better and more consistent i18n.
Look at REST more, both for internal code structure and perhaps even for an
external partial API.
Some practical info:
I've got two
previous
entries about jobs at Nelen & Schuurmans.
You might want to browse my entries tagged with Nelen & Schuurmans.
If you're not Dutch: make sure you're allowed to work in The
Netherlands. We cannot practically arrange a work permit ourselves if you're
not from the EU. Regarding language: well, everyone speaks Dutch all the
time at the moment. Except our fresh Australian. If you don't speak Dutch,
you'll at least have to learn to understand it.
See the official job description at our
website.
The next Dutch python
usergroup meeting will be at our office (16 February 2011).
[Less]
|