blog entries created by Arthur Lutz
show 91 results
  • LAX - Logilab Appengine eXtension is a full-featured web application framework running on AppEngine

    2008/06/09 by Arthur Lutz
    http://code.google.com/appengine/images/appengine_lowres.jpg

    LAX version 0.3.0 was released today, see http://lax.logilab.org/

    Get a new application running in ten minutes with the install guide and the tutorial:

    Enjoy!

    Update: LAX is now included in the CubicWeb semantic web framework.


  • New apycot release

    2008/06/02 by Arthur Lutz
    http://www.logilab.org/image/4878?vid=download&small=true

    After almost 2 years of inactivity, here is a new release of apycot the "Automated Pythonic Code Tester". We use it everyday to maintain our software quality, and we hope this tool can help you as well.

    Admittedly it's not trivial to setup, but once it's running you'll be able to count on it. We're working on getting it to work "out-of-the-box"...

    Here's what's in the ChangeLog :

    2008-05-19 -- 0.11.0
    • updated documentation
    • new pylintrc option for the pyhton_lint checker.
    • Added code to disabled checker with missing required option with the proper ERROR statut
    • removed the catalog option of the xml_valid checker this feature can now be handle with the XML_CATALOG_FILE environement variable (see libxml2 doc for details)
    • moved xml tool from python-xml to lxml
    • new 'hourly' mode for running tests
    • new 'test_activity_report' report
    • pylint checker support new disable_msg and show_categories options (show_categories default to Error and Fatal categories to avoid reports polution)
    • activity option "days" has been renamed to "time" and correspond to a number of day in daily mode but to a number of hour in hourly mode
    • fixed debian_lint and debian_piuparts to actually do something...
    • fixed docutils checker for recent docutils versions
    • dropped python 2.2/2.3 compat (to run apycot itself)
    • added output redirectors to the debian preprocessor to avoid parsing errors
    • can use regular expressions in <pp>_match_* options

  • Flying to Google I/O

    2008/05/27 by Arthur Lutz
    http://code.google.com/images/io_logo_sm.gif http://code.google.com/appengine/images/appengine_lowres.jpg

    Three of us from Logilab are going to San Francisco to listen, share and discuss at Google I/O.

    It's a two day developer gathering in San Francisco, with various talks about google technologies : http://code.google.com/events/io/

    We're hoping to show and talk about LAX (http://lax.logilab.org) which uses Google AppEngine


  • Profiter pleinement des CPUs avec Zope/Zeo/Debian

    2008/05/27 by Arthur Lutz

    Voici vite fait comment on profite du quad-core bi-proc multicoeurs avec zope/zeo/pound ... le tout en commandes debian.

    Inspiré de : http://plone.org/documentation/how-to/simple-zope-clustering-with-squid-and-pound

    http://plone.org/documentation/tutorial/introduction-to-the-zodb/zeo%20diagram.png
    • apt-get -uVf install plone-site pound

    • dzhandle -z 2.10 make-zeoinstance sgel_zeo

    • dzhandle -z 2.10 make-instance sgel2 --zeo-server=localhost:8100 -m all

    • dzhandle -z 2.10 make-instance sgel3 --zeo-server=localhost:8100 -m all

    • dzhandle -z 2.10 make-instance sgel1 --zeo-server=localhost:8100 -m all

    • dzhandle -z 2.10 make-instance sgel4 --zeo-server=localhost:8100 -m all

    • modifiez les ports de chaque instance (par exemple 9673, 9674, 9675, 9676)

    • vim ~/zope/instances/sgel*/etc/zope.conf

    • dzhandle add-product sgel1 CMFPlone

    • dzhandle add-product sgel2 CMFPlone

    • dzhandle add-product sgel3 CMFPlone

    • dzhandle add-product sgel4 CMFPlone

    • dzhandle zeoctl sgel_zeo start

    • dzhandle zopectl sgel1 start

    • dzhandle zopectl sgel2 start

    • dzhandle zopectl sgel3 start

    • dzhandle zopectl sgel4 start

    • vim /etc/pound/pound.cfg pour remplacer

      BackEnd
              Address 127.0.0.1
              Port    8080
      End
      

      par

      Service
              BackEnd
                      Address 127.0.0.1
                      Port    9673
              End
              BackEnd
                      Address 127.0.0.1
                      Port    9674
              End
              BackEnd
                      Address 127.0.0.1
                      Port    9675
              End
              BackEnd
                      Address 127.0.0.1
                      Port    9676
              End
      End
      
    • /etc/init.d/pound restart

    • tapez sur http://localhost:8080

    • ajoutez un site plone

    pour tester, lancez htop pour voir l'activité et regardez la différence entre :

    • apt-get -uVf install apache2-utils
    • /usr/sbin/ab -n 100 -c 100 localhost:8080/plone

    et

    • /usr/sbin/ab -n 100 -c 100 localhost:9673/plone

    nice!


  • Reinteract: un outil intéressant pour faire du numpy/scipy

    2008/05/27 by Arthur Lutz

    Il existe un outil, Reinteract, qui permet d'avoir une sorte de d'éditeur/shell Python, où l'on peut aisément modifier et réinterpreter une ligne de code.

    Sachant qu'il sait aussi afficher des plots, etc, il est possible de s'en servir avantageusement pour faire des sessions Matlab-like.

    Je pense donc que c'est un outil à présenter à nos chers apprenants qui sont intéressés par le couple python/numpy comme substitut à Matlab ©®.

    Ex:

    http://fishsoup.net/software/reinteract/reinteract-demo.png

    écrit par David Douard


  • Petit raccourci pratique avec ion3

    2008/05/27 by Arthur Lutz

    Un petit raccourci pratique pour ion3, qui permet, sur la combinaison de touches de son choix, de prendre le texte actuellement sélectionné (surligné) dans sa session X11, et, en fonction de son contenu :

    • d'ouvrir un onglet Firefox avec l'url sélectionnée,
    • d'ouvrir un xpdf si c'est une URL de fichier PDF,
    • lancer OpenOffice.org si c'est un fichier OOo,
    • ouvrir le fichier dans emacs si c'est un .py, .po, etc.
    • etc.

    Pour cela, il faut le script magique ci-dessous, et configurer ion pour appeler ce script sur la bonne combinaison de touches. Par ex. ajouter dans votre ~/.ion3/cfg_ion.lua les lignes

    defbindings("WMPlex.toplevel", {
      bdoc("Automagically view the selected string"),
      kpress(META.."F7",
             "ioncore.exec_on(_, '/home/user/bin/view')"),
    })
    

    Ici, j'ai mappé "Meta+F7", et le script est /home/user/bin/view

    #!/usr/bin/env python
    
    from mimetypes import guess_type
    import sys
    from os.path import abspath
    from os import system, popen
    
    import re
    RGX = re.compile
    
    EMACS = 'emacsclient --no-wait %(uri)s'
    EMACS_WITH_LINE = 'emacsclient --no-wait +%(lineno)s %(uri)s'
    FIREFOX = 'firefox -remote "openURL(%(uri)s, new-tab)"'
    WGET = 'cd /home/adim/tmp && wget %(uri)s & '
    
    commands = [
        ('text/html', FIREFOX),
        ('application/xml', EMACS),
        ('text', EMACS),
        ('image', 'display %(uri)s &'),
        ('application/pdf', 'xpdf %(uri)s &'),
        ('application/postcript', 'gv %(uri)s &'),
        ('application/vnd.sun.xml', 'ooffice %(uri)s &'), # matches writer, impress, etc.
        ('application/vnd.oasis.opendocument', 'ooffice %(uri)s &'),
        ('application/msword', 'ooffice %(uri)s &'),
        ('application/vnd.ms-', 'ooffice %(uri)s &'),
        ]
    
    patterns = [
        (RGX(r'https?://.*?(zip|gz|pdf|ods|doc|odt|ppt|sxw|sxi)$'), WGET),
        (RGX(r'.*(?P<uri>https?://[^ ()]*)( .*)?'), FIREFOX),
        (RGX('.*?\.conf$'), EMACS),
        (RGX('.*?\.po$'), EMACS),
        (RGX('.*?\.xslt$'), EMACS),
        (RGX('.*?\.pot$'), EMACS),
        (RGX(r'\s*F?i?l?e? ?"?(?P<uri>.*?\.py)", line (?P<lineno>\d+)[a-zA-Z_:-]*'), EMACS_WITH_LINE),
        (RGX('.*?(readme|changelog|depends|manifest|makefile)(\.in|\.gz|\.bz2)?$', re.I), EMACS),
        # others might come here ...
        ]
    
    def find_command(selection):
        for rgx, cmd in patterns:
            m = rgx.match(selection)
            if m:
                args = m.groupdict() or {'uri' : selection}
                return cmd, args
        mimetype, encoding = guess_type(selection)
        # XXX: encodings like zip, or gz could be handled
        if mimetype is not None:
            selection = abspath(selection)
            for registered_type, cmd in commands:
                if mimetype.startswith(registered_type):
                    return cmd, {'uri' : selection}
        raise ValueError('nothing matched')
    
    if len(sys.argv)>1:
        selected = ' '.join(sys.argv[1:])
    else:
        selected = popen('xclip -o').read()
    
    if selected:
        try:
            cmd, args = find_command(selected)
        except ValueError:
            # system('wmiijabber error viewing %s' % ' '.join(sys.argv[1:]))
            # XXX print a message in wmii status bar ?
            pass
        else:
            #print "yooo =>", repr(cmd), repr(args)
            system(cmd % args)
    

    Pour que cela fonctionne, il ne faut pas oublier d'installer xclip (sous debian, apt-get install xclip).

    -- écrit par David Douard sur un script de Adrien diMascio


  • Petites astuces de vim

    2008/05/27 by Arthur Lutz

    J'ai découvert vim-addons (qui est apparu dans debian récement) et ce petit outil permet de faire d'etendre les fonctionnalités de vim assez facilement. Voici une utilisation parmi tant d'autres :

    mode gnupg

    pour installer le mode gnupg faites

    vim-addons install gnupg
    

    Ensuite vim pourra ouvrir directement des fichiers encryptés et les réncrypter lorsque vous sauvez. Donc simplement

    vim mot-de-passe-envoyé-par-client.gpg
    

    Voilà, le tour est joué.

    J'avoue que je reste avec emacs pour le code, mais ce genre de petit raccourcis est bien pratique.


  • LAX - Logilab Google AppEngin Sprint at Pycon-FR

    2008/05/20 by Arthur Lutz

    Here are a few pictures from the sprint we organized at Pycon-FR

    We got a few people to install Google AppEngine and LAX on their machines, and explained the concepts at hand to a bunch of other people.

    http://www.logilab.org/image/5002?vid=download

    http://www.logilab.org/image/5003?vid=download

    http://www.logilab.org/image/5005?vid=download

    Update: LAX is now included in the CubicWeb semantic web framework.


  • HOWTO quickly get lax running on linux

    2008/05/19 by Arthur Lutz

    This is how easy it is to get lax to run on your linux machine :

    hg clone http://www.logilab.org/hg/lax/
    wget http://googleappengine.googlecode.com/files/google_appengine_1.0.2.zip
    unzip google_appengine_1.0.2.zip
    ./google_appengine/dev_appserver.py lax/skel/
    

    Point your favorite browser to http://localhost:8080/

    UPDATE: LAX is now included in the CubicWeb semantic web framework.


  • New Logilab.org is launched

    2006/10/24 by Arthur Lutz

    ** Insert announce text here **


show 91 results