Entries tagged “web”

zinebuildout 0.5 : a buildout for Zine

written by ccomb, on Jul 19, 2009 11:26:00 PM.

Zine logo

This blog is powered by Zine, a blog engine written in Python (with Werkzeug, Jinja2 and SQLAlchemy) and I'm very satisfied with it. I first want to thank its main author, Armin Ronacher (mitsuhiko) and the contributors. It's development is not as fast as I initially expected, but it's mercurial repository shows a constant activity:

Zine activity

Yes I know, I should contribute... Until now, I did not find any time to do it, but this could change in a near future.

When I first installed it, I was surprised there is no distutils/setuptools setup.py file, just a classic 'configure && make' procedure. The authors probably want to avoid any Python-specific tasks during installation, so that it is more widely adopted. They also probably don't like setuptools (BTW, setuptools is being forked for real by Tarek). The same applies to the deployment: Zine is expected to be deployed with mod_wsgi, which promises to offer easy and shared Python hosting to the masses.

But I'm used to Python tools, I don't find that typing "sudo python setup.py install" or something similar is difficult, I like to deploy with PasteDeploy, and I like to work with Buildout. That's why I've packaged Zine in a setuptools-enabled buildout.

Below is the content of the README file for version 0.5 of the buildout. I've also added a Twitter widget, but this one should better go in Zine itself, or in an external plugin. You can see the result right here, on the right.

http://pypi.python.org/pypi/zinebuildout/

Installation

This package allows you to install Zine and its dependencies in a sandbox with buildout, then serve it with any WSGI server while using the Paste facilities for WSGI stack configuration.

Install Zine:

Download and extract the zinebuildout archive from PyPI, (or clone it with: hg clone https://cody.gorfou.fr/hg/zinebuildout ). You don't need to easy_install it. Then run:

$ python bootstrap.py
$ ./bin/buildout

Configure Zine:

Edit "deploy.ini" to adapt instance_folder, host and port to your needs. You don't need to change anything if you just want to try it on your local host.

Start Zine:

In foreground:

$ ./bin/paster serve deploy.ini

Or in background:

$ ./bin/paster serve --daemon deploy.ini

Optional Twitter widget

This distribution offers a Twitter widget that displays the N latests tweets of your timeline. To use it, just add the following line in the '_widgets.html' file of your Zine theme:

{{ widgets.tweets('ccomb', 5) }}

Replace 'ccomb' with your twitter account, and 5 with the number of tweets you want to display.

Repoze.BFG sort en version 1.0, et vole la vedette à Grok

written by ccomb, on Jul 8, 2009 3:25:00 PM.

Les technologies Zope évoluent d'une manière extrêmement positive. Alors que le vieux Zope 2 survit encore après plus de dix ans de service, sa réécriture modulaire et pythonique, connue sous le nom « Zope 3 », a abouti principalement à trois choses :

  • l'Architecture de Composants (la Zope Component Architecture)
  • une multitude de composants basés sur cette architecture (la Zope Library)
  • des frameworks web utilisant cette architecture

Parmi ces frameworks, on retrouve d'abord « Zope 3 » lui-même, qui peut s'utiliser tout seul. Puis Grok, un projet parallèle, basé sur Zope 3, qui simplifie la configuration des composants en évitant l'écriture de XML. Grok n'est pas encore sorti en version 1.0 qu'il vient de se faire griller la priorité par Repoze.BFG. BFG est un framework ultra-léger, beaucoup moins orienté Zope, plus proche de Pylons ou Django, mais quand-même basé sur l'Architecture de Composants.

La légèreté de Pylons ? La modularité de l'Architecture de Composants de Zope 3 ? La possibilité d'utiliser tous les middlewares WSGI ? Le choix entre modèle MVC ou modèle à la Zope ? Le menu est alléchant. Voici la traduction de l'annonce :

(Annonce originale : http://lists.repoze.org/pipermail/repoze-dev/2009-July/001936.html )


Résumé

La première version majeure 1.0 du framework web BFG (ou « repoze.bfg »), est disponible. Les infos générales sont sur : http://bfg.repoze.org.

Détails en gros

BFG est un framework web en Python, basé sur WSGI. Il s'inspire de Zope, Pylons et Django. Il utilise en arrière plan de nombreuses technologies de Zope.

BFG est une partie du projet plus général Repoze (http://repoze.org). Il est distributé sous une licence de type BSD (http://repoze.org/license.html).

BFG 1.0 représente l'équivalent d'une année de développement. La première version 0.1 date de juillet 2008 et près de 80 versions pre-1.0 se sont succédé depuis cette date. Aucune d'entre elles n'a jusqu'à présent promis de rétrocompatibilité de manière explicite. Cependant la version 1.0, constitue le point de départ d'un gel de l'API. Les prochaines versions de la branche 1.x garantiront cette rétrocompatibilité avec 1.0. Tout manquement à cette règle sera considéré comme un bug.

Gros détails

BFG contient des améliorations modérées et incrémentales des principes rencontrés dans les frameworks de génération précédente. Il s'efforce de rendre le développement d'applications web plus amusant, plus prédictible, et plus productif, en particulier pour les vrais projets de la vraie vie.

À cette fin, BFG offre les fonctionnalités suivantes :

  • Déploiement basé sur WSGI : compatible PasteDeploy et mod_wsgi.
  • Fonctionne avec Python 2.4, 2.5 et 2.6.
  • Fonctionne sur UNIX, Windows et Google App Engine.
  • Documentation complète : 100% des fonctionnalités et de l'API est documenté
  • Ensemble impressionnant de tests unitaires. Le paquet repoze.bfg contient 11000 lignes de code Python : 8000 lignes sont des tests unitaires servant à couvrir les 3000 lignes restantes.
  • Très économe : BFG possède une faible empreinte mémoire et ne gaspille aucun cycle processeur.
  • Ne contient pas de dépendances exagérées : installer repoze.bfg grâce à "easy_install" prend moins d'une minute.
  • Lancement rapide : une application BFG typique démarre en 1 seconde.
  • Templating XML/HTML/texte ultra-rapide grâce à Chameleon (http://chameleon.repoze.org/).
  • Utilise n'importe quelle couche de persistance : SQLAlchemy, SQL brut, ZODB, CouchDB, fichiers, ou n'importe quoi d'autre correspondant aux besoins de l'application.
  • Fournit de nombreux templates de démarrage de projet. Chacun d'entre eux permet de démarrer une application BFG correspondant à une utilisation particulière.
  • Permet, au choix, de faire correspondre une URL à du code comme avec le routage d'URL de Django ou Pylons, ou bien d'utiliser une traversée de graphe d'objets comme avec Zope. Ceci permet aux développeurs Zope ou Pylons de retrouver leurs habitudes.
  • Offre des modes de débogage pour les erreurs courantes (vue introuvable, autorisation accordée ou refusée à tort)
  • Permet aux développeurs d'organiser leur code comme bon leur semble : le framework n'impose pas de structure d'organisation du code.
  • Permet d'écrire du code qui peut être facilement testé. BFG évite d'utiliser des structures de données propres à chaque thread, qui nuisent à l'écriture de tests. Il fournit des outils pour simuler des composants du framework comme les templates et les vues.
  • Fournit un système d'autorisation déclaratif dépendant du contexte. Ceci empêche ou autorise l'exécution de code par comparaison des données d'identification avec les informations d'ACL stockées par une application BFG.
  • Le comportement d'une application BFG peut être augmenté ou modifié de manière arbitraire par un développeur tiers sans aucune modification du code source original de l'application. Ceci fait de BFG un bon choix pour construire des frameworks ou des applications extensibles.
  • Les développeurs Zope et Plone se sentiront à l'aise avec la terminologie et les concepts utilisés par BFG. Ils sont en grande majorité dérivés de Zope.

Détails insoutenables

Installation rapide :

easy_install -i http://dist.repoze.org/bfg/current repoze.bfg

Support et information :

http://bfg.repoze.org

Tutoriels

http://docs.repoze.org/bfg/current/#tutorials

Exemples d'applications

http://docs.repoze.org/bfg/current/#sample-applications

Documentation détaillée (explications et API) :

http://docs.repoze.org/bfg/current

Bug tracker :

http://bfg.repoze.org/trac

Liste de diffusion :

http://lists.repoze.org/listinfo/repoze-dev

canal IRC :

irc://irc.freenode.net#repoze

Repoze.bfg est principalement développé par Agendaless Consulting et une équipe de contributeurs.

Un grand merci aux personnes suivantes, sans qui cette version n'aurait pas vu le jour :

Malthe Borch, Carlos de la Guardia, Chris Rossi, Shane Hathaway, Tom Moroz, Yalan Teng, Jason Lantz, Todd Koym, Jessica Geist, Hanno Schlichting, Reed O'Brien, Sebastien Douche, Ian Bicking, Jim Fulton, Martijn Faassen, Ben Bangert, Fernando Correa Neto, YoungKing, Rob Miller, Wichert Akkermann, David Pratt, Mark Ramm, and Chris Perkins.


test