00:10 <aconrad:#afpy> bonsoir
08:22 <morgan`:#afpy> hello
08:41 <ccomb:#afpy> 'jour
08:44 <Ohan:#afpy> hello ccomb et morgan`
08:44 <Ohan:#afpy> ccomb, alors ce htc hero, toujours content?
08:44 <ccomb:#afpy> ouioui
08:44 <Ohan:#afpy> je crois que je vais m'en prendre un
08:44 <kujiu:#afpy> bonjour
08:45 <Ohan:#afpy> salut kujiu
08:45 <Ohan:#afpy> au fait t'en es ou ccomb ? tu voulais pas arrêter d'être indépendant?
08:45 <ccomb:#afpy> maintenant je suis aux 4/5 chez alterway et 1 jour par semaine indé
08:46 <ccomb:#afpy> ça me va pas mal pour l'instant
08:46 <Ohan:#afpy> ah ok
08:46 <Ohan:#afpy> tu arrive a gérer?
08:46 <ccomb:#afpy> euh... non :)
08:46 <Ohan:#afpy> la je me suis lancé en auto-entrepreneur (c'est tout neuf, pas de client pour le moment)
08:47 <Ohan:#afpy> mais mon principal soucis c'est ça, comment gérer le temps
08:47 <ccomb:#afpy> je me suis pris 80¤ de pénalité de la retraite pour payer en retard :p
08:47 <Ohan:#afpy> pénalité de la retraite?
08:47 <ccomb:#afpy> et hier j'ai fait une journée de 16h
08:47 <ccomb:#afpy> cotisation retraite
08:47 <kujiu:#afpy> boarf les journée de 16h ça arrive aussi quand on est salarié ça...
08:48 <kujiu:#afpy> +s
08:48 <ccomb:#afpy> non mais oui, je parle en salarié, hein
08:48 <kujiu:#afpy> oki
08:48 <Ohan:#afpy> huhu
08:48 <Ohan:#afpy> c'est sympa alterways? c'est une SSII en python c'est ça?
08:48 <ccomb:#afpy> python php java
08:49 <ccomb:#afpy> enfin pas trop java encore
08:49 <ccomb:#afpy> je vais essayer d'introduire le haskell :D
08:49 <Ohan:#afpy> huhu
08:49 <ccomb:#afpy> faut bien que je perennise le bouquin que j'ai gagné à osdcfr
08:49 <Ohan:#afpy> c'est quoi l'intérêt du haskell?
08:49 <ccomb:#afpy> je sais pas encore, j'en suis à la 20eme page
08:49 <Ohan:#afpy> a part uqe c'est du fonctionnal programming? :P
08:49 <Ohan:#afpy> ccomb, j'ai une solution pour lire: tu lis en chiant
08:49 <ccomb:#afpy> mais c'est un langage fonctionnel
08:50 <Ohan:#afpy> du coup t'es plus détendu pour ... te détendre, et t'as le temps de lire ;)
08:50 <ccomb:#afpy> fortement typé, à typage statique
08:50 <ccomb:#afpy> compilé
08:50 <Ohan:#afpy> compilé? pas comme erlang donc
08:50 <ccomb:#afpy> mais les types sont quand-même déterminés automatiquement
08:50 <ccomb:#afpy> donc y a moyen d'etre proche de la souplesse du typage dynamique
08:51 <ccomb:#afpy> je croyais que c'était trois chauves et un tondu académiciens qui utilisaient ça
08:52 <ccomb:#afpy> mais en fait y a presque autant de monde sur #haskell que sur #python
08:52 <Ohan:#afpy> tu m'étonnes
08:52 <Ohan:#afpy> ah ouais? Oo
08:52 <Ohan:#afpy> mais c'est utilisé pour quoi?
08:52 <Ohan:#afpy> pour le web?
08:53 <ccomb:#afpy> juste là, python 644, haskell 565
08:53 <ccomb:#afpy> j'ai halluciné
08:53 <ccomb:#afpy> en fait ça peut servir pour un peu n'importe quoi
08:53 <ccomb:#afpy> mais doit pas y avoir autant de libs qu'en python
08:53 <Ohan:#afpy> y'a peut-être 1% des utilisateurs de python sur #python, et 99% des utilisateurs de haskell sur #haskell? :D
08:53 <ccomb:#afpy> c'est possible
08:54 <ccomb:#afpy> pour le web je crois pas
08:54 <ccomb:#afpy> enfin pourquoi pas
08:55 <Ohan:#afpy> mouais
08:55 <Ohan:#afpy> est-ce que c'est juste un truc hype et buzz, ou le futur langage?
08:55 <Ohan:#afpy> enfin le futur langage dominant ;)
09:08 <morgan`:#afpy> haskell, ça fait partie de ses langages surtout utilisé par les chercheurs, non ?
09:10 <ccomb:#afpy> oui
09:10 <ccomb:#afpy> mais apparemment ça sort des labos et monte en popularité
09:12 <ccomb:#afpy> mais c'est aussi vieux que Python, la 1ere spec date de 1990
09:12 <ccomb:#afpy> ça fait juste partie d'un regain d'intérêt pour les langages fonctionnels
09:12 <morgan`:#afpy> dans laquelle certains langages comme python jouent un role d'ailleurs
09:12 <ccomb:#afpy> oui
09:13 <ccomb:#afpy> python et javascript ont pas mal de caractéristiques des langages fonctionnels
09:13 <ccomb:#afpy> style l'importance des listes et tuples, les list comprehension, le lambda
09:14 <ccomb:#afpy> ah tiens au fait, faudrait peut-être que j'aille bosser moi
09:18 <morgan`:#afpy> ccomb, :)
09:41 <feth:#afpy> Est-ce qu'on pourrait pas monter un complot contre les nouveaux langages qui montent en en créant encore plus, issus de mélanges. Gens haskala.
10:44 <No`:#afpy> matin les afpystes
10:51 <segle:#afpy> yo No`
10:51 <segle:#afpy> No`, t'es à Paris Web? :p
10:51 <No`:#afpy> segle: nan, j'suis comme toi, un paria, un moins-que-rien, un exclu
10:51 <No`:#afpy> pile dans la fracture pariswebienne
10:52 <segle:#afpy> Ah, toi aussi
10:52 <No`:#afpy> (en fait, à Bayonne - des trucs prévus ce week-end avec la famille tout ça - donc, pas de pariouèbe)
10:52 <segle:#afpy> Dis, tu viendrais pas genre le samedi 17 octobre à Lyon ?
10:52 <segle:#afpy> JDLL, tout ça
10:53 <segle:#afpy> Je sais, ça fait cher le train tout ça pour que je t'offre une bière ou plus
10:53 <segle:#afpy> mais bon
10:53 <No`:#afpy> segle: j'pense pas, non
10:53 <No`:#afpy> mais merci pour l'invit
10:53 <segle:#afpy> Hey, j'suis comme ça, j'suis sympa
10:53 <segle:#afpy> Jamais je me déplace vers Bayonne, mais si un jour ça arrive tu seras prévenu
10:54 <No`:#afpy> okdac
10:55 <segle:#afpy> Ya le feu au fourgon : http://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&sll=46.965259,1.73584&sspn=13.002756,33.815918&ie=UTF8&ll=48.859774,2.292151&spn=0.005689,0.033023&z=16&layer=c&cbll=48.860602,2.291532&panoid=LlU9MdH7dGSNf78Ytc-t2A&cbp=11,144.08,,0,-14.3&utm_campaign=fr&utm_medium=lp&utm_source=fr-lp-emea-fr-gns-svn
12:46 <Solevis:#afpy> Ayu
14:21 <RAGE2000:#afpy> c'est moi ou l'orm de django c'est une blague ?
14:21 <RAGE2000:#afpy> tu créé un model avec un field char ou tu dit qu'il ne doit pas depasser 2 characteres, dans les tests tu essayes avec une donnée ou le char fait + de 2 characteres et les tests passent sans problemes
14:21 <gawel> ama c'est sqlite qui supporte pas la contrainte
14:22 <RAGE2000> umh
14:22 <RAGE2000> la contrainte doit pas se faire au niveau au dessus le connecteur base de donnée ?
14:23 <RAGE2000> au dessus du
14:23 <gawel> je ne sais pas
14:23 <RAGE2000> et je parle pas des champs sensé etre obligatoire
14:23 <RAGE2000> je créé une instance de modele sans aucune data et ca passe sans probleme
14:23 <RAGE2000> alors qu'il y a des champs sensé etre obligatoire
14:24 <gawel> lol
14:25 <RAGE2000> style mon UrlField il me met par defaut '' alors que j'ai rien precisé par defaut et que de toute maniere il est sensé ne pas validé une url de type ''
14:38 <NiCoS`:#afpy> RAGE2000: au niveau des tests, je n'ai pas regardé mais depuis l'admin, c'est bien respecté dans mon app utilisant sqlite
14:39 <RAGE2000:#afpy> ouai je sais que c'est respecté de l'admin
16:09 <yotaff:#afpy> tarek: ping
16:17 <tarek:#afpy> yotaff, pong
16:18 <yotaff:#afpy> tarek: l'histoire d'avoir plusieurs index ca en est ou ?
16:18 <yotaff:#afpy> ca sera possible avec distribute ?
16:19 <yotaff:#afpy> j'ai 3 KGS + 1 PyPI interne + 1 PyPI mirroir
16:19 <yotaff:#afpy> je commence à avoir du mal :)
16:25 <tarek:#afpy> des index pour l'installation ?
16:25 <tarek:#afpy> pip supporte ca
16:25 <tarek:#afpy> faudrait pousser pour que zc.buildout se serve plus d'easy_install en fait
16:25 <tarek:#afpy> distribute va lacher easy_install
16:38 <gawel> vu le mombre de recipe qui l'utilise c'est pas gagné
16:39 <yotaff> bah faut bien commencer hein
16:39 <yotaff> enfin pas trop pres non plus :)
16:40 <gawel> http://www.google.fr/codesearch?hl=fr&start=10&sa=N&q=buildout.easy_install+lang:python
16:40 <gawel> pas tant que ça en fait
16:40 <yotaff> on commence a balancer de plus en plus de patchs à la communauté
16:40 <yotaff> la on va ajouter une fonction a zope.testing
16:40 <yotaff> et vu l'importance de distutils / distribute, si on peux pousser dans la bonne direction je vais pas dire non
16:42 <gawel> je suis pas certain que buildout puisse utiliser pip en l'état en tout cas
16:42 <gawel> ca me parait un peu tendu
16:42 <yotaff> perso je veux pas l'utiliser :)
16:43 <gawel> pareil
16:43 <yotaff> bon faut que je réfléchisse a la facon de gérer autant de liens
16:44 <yotaff> deja la, je dois ajouter une archi dans l'infra, histoire de gérer i686 / amd64
16:44 <gawel> le problème c'est que si distribute utilise pip tu saura pas gerer les versions de truc non eggifié que pip gère très bien car il gère pas de version
16:45 <gawel> la ça devient tendu :)
16:45 <gawel> mais si y a un moyen, ca déchirerais
16:45 <gawel> ca permetrais de coller des bundles pip dans buildout par exemple
16:47 <tarek> en fait Jim a envie de dropper la dépendance à easy_install (le moduleà
16:47 <tarek> et a envie de refaire son truc
16:47 <tarek> si on fait un bon boulot dans distribute on peut fournir les outils pour le faire
16:47 <tarek> et pip sera en parti basé dessus a priori
16:48 <gawel> le problème majeur est de gérer des versions pour les trucs non egg ama
16:48 <tarek> mais tout ca c dans un an minimum
16:48 <gawel> après le reste
16:48 <tarek> les trucs non egg ?
16:49 <gawel> bah oui, les paquets non setuptools/distribute
16:49 <gawel> y a encore des gens réfractaire
16:49 <gawel> pip il fait python setup.py install et ca marche
16:49 <tarek> les paquets distutils quoi
16:49 <gawel> mais après..
16:49 <gawel> oui
16:49 <tarek> apres si c'est python 2.5 ou spérieur tu as un egg-info aussi en fait
16:50 <gawel> vu que t'es dans les deux y a moyen que ca se résolve :)
16:50 <tarek> donc tu peux catcher les infos de verison toussa
16:50 <gawel> ah ? je savais pas
16:50 <tarek> oui
16:50 <gawel> tout vas bien alors
16:50 <gawel> gogogo :)
16:50 <tarek> c comme ca que setuptools fait pour itérer dans les distributions installées
16:50 <gawel> ok
16:51 <tarek> et PEP 376 c pour le rendre standard
16:51 <gawel> j'ai vu l'url mais j'ai pas lu
16:51 <gawel> je suis ça de très loin
16:51 <tarek> parceque justement, en fonction de ce que tu utilsies dans setup.py, c pas installé pareil toutafait :'(
16:51 <gawel> yep
16:52 <gawel> c'est probablement à distutils d'uniformiser ça
16:52 <tarek> oui
16:52 <tarek> d'ou PEP 376
16:52 <gawel> je vouaaa
16:52 <gawel> je vais lire
16:52 <tarek> k
16:55 <gawel> ca parait prometteur en effet
16:55 <taziden> question de noob, c'est quand on pourra updater tous les paquets installés via easy_install et les désinstaller ? :D
16:55 <gawel> c'est justement dans le pep
16:56 <gawel> dans dans un an :)
16:56 <taziden> \o/
16:56 <gawel> donc*
16:58 <yotaff> gawel: comment setuptools sait sur quelle plateforme il est ?
16:58 <yotaff> il vérifie plateform dans python ?
16:58 <gawel> je ne sais pas
16:58 <gawel> probablement
16:59 <yotaff> sur quelle archi je veux dire
16:59 <yotaff> i686, amd64...
16:59 <gawel> aucune idée
17:00 <J-Mad_> quelqu'un a déjà réussit a faire fonctionner mod_wsgi avec un virtualenv python 2.5 alors que le systerme est en python 2.4 ?
17:01 <J-Mad_> ( et re aussi )
17:02 <RAGE2000> J-Mad_: faut que mod_wsgi soit lancé avec un python de la meme branche que le python qui a servit lors de la compilation de mod_wsgi (et en plus si t'as mod_python sur ton apache tu peux meme pas preciser un autre python ca utilise forcement celui de mod_python)
17:02 <gawel> ce n'est pas possible il me semble
17:02 <gawel> haha
17:02 <J-Mad_> j'ai pas mod_python RAGE2000 , juste mod_wsgi
17:02 <gawel> bousodrome :p
17:02 <RAGE2000> pour ca que j'ai laché mod_wsgi au final
17:02 <J-Mad_> installé en paquet ( donc je sais pas trop quel python a servit , mais je dirait le 2.4 )
17:02 <RAGE2000> c'etait trop chiant
17:02 <J-Mad_> tu utilises quoi alors RAGE2000 ?
17:03 <RAGE2000> nginx + spawning
17:03 <J-Mad_> moi je suis obilgé d'avoir du apache
17:03 <J-Mad_> et pas de cgi
17:03 <RAGE2000> (mais bon tu peux apache + spawning aussi)
17:03 <gawel> vous avez essayez uwsgi ? c'est dans ma todo list des trucs en retard
17:03 <J-Mad_> donc me reste pas chose
17:03 <RAGE2000> gawel: pas entendu parlé
17:04 <gawel> server wsgi en C
17:04 <RAGE2000> ok je decouvre
17:04 <RAGE2000> donc non j'ai pas testé
17:04 <yotaff> gawel: question d'un collègue, chaque middleware wsgi est lancé dans un process séparé ?
17:04 <RAGE2000> ;)
17:05 <gawel> non, c'est une pile et y a pas de multiprocess en python
17:05 <gawel> du moins pas implicitement
17:05 <gawel> c'est lancé dans le même thread que ton app
17:06 <gawel> en ce moment j'essais de voir comment faire cohabiter python et erlang a cause de ca
17:06 <gawel> mais y a pas vraiment moyen de bien les faire cohobiter je crois
17:07 <gawel> a part faire du C, ce qui me rebute un peu :)
17:07 <yotaff> bon, en fait c'est le module plateform
17:07 <yotaff> In [5]: platform.machine()
17:07 <yotaff> Out[5]: 'i686'
17:08 <yotaff> y'a sys.plateform et le module plateform
17:08 <yotaff> le 1er ne donne que le type d'os
17:08 <yotaff> un peu inutile mais bon
17:09 <vaab> bjr tout le monde ! ... Une petite question: j'utilise repose.who devant un zope... et j'ai visiblement pas les même variables globales (j'utilise elixir et nous partageons la session et la metadata dans un module via une variable globale)...
17:09 <vaab> c'est normal ?
17:11 <gawel> c'est quoi une variable globale ?
17:12 <gawel> ah, pardon
17:12 <gawel> bah fait pas ca. les variable globale c'est mal
17:12 <gawel> utilise beaker pour gerer des sessions et fou tout dedans
17:13 <vaab> elixir nous impose l'utilisatin de variable globale...
17:13 <vaab> il en utilise lui-meme
17:13 <gawel> y a un middleware qui initialise un environ['beaker.session']
17:13 <gawel> tu ments, je ne te crois pas :p
17:14 <gawel> ah tu parles des sessions sqlalchemy ?
17:15 <vaab> ;)
17:15 <vaab> alors oui, je parle de sqlalchemy...
17:15 <vaab> mais pas seulement
17:15 <gawel> je vouaaaa
17:15 <vaab> en fait elixir fourni un CRUD type django par dessus sqlalchemy
17:15 <gawel> ah ? merde, c'est ce que je fait
17:15 <vaab> c'est pas mal, mais il doit garder une liste des "entity" qu'on a configuré...
17:15 <vaab> il défini sa metadata
17:16 <vaab> et sa session factory
17:16 <gawel> ama si tu le défini avant que l'appli soit threader ça devrait aller
17:17 <gawel> sinon anéfé tu risque des merde
17:17 <vaab> et c'est quand que sa se thread ?
17:17 <vaab> s/sa/ca/
17:17 <gawel> Ah chaque requete je dirais
17:18 <gawel> mais t'as quoi qui varie ?
17:18 <gawel> genre Session est None ?
17:19 <vaab> J'ai une ligne de log qui me dit bien que ma base de donnée est bien configuré (en gros que ma variable globale Session est bien bindée). Ca se passe au chargement de zope (avant toute requête).
17:19 <vaab> mais lors de la toute premiere requete, j'ai repoze qui a besoin de vérifier que l'utilisateur est correct (et il a besoin de la base de donnée).
17:19 <vaab> Et là il me crache dessus en me disant qu'il y a pas de 'bind' sur ma session.
17:20 <haypo> c'est marrant quand même. y'a deux salons Python : #python-fr #afpy
17:20 <gawel> je vois
17:20 <haypo> je pense que #afpy pourrait s'appeler #python-web-fr :-)
17:20 <gawel> haha
17:20 <vaab> Après vérification, c'est pas les même objets que j'ai ...
17:20 <vaab> j'ai posé un pdb de chaque coté, demandé leur id, et j'ai pas les même objets
17:21 <gawel> t'as configuré repoze avec des .ini ?
17:21 <vaab> oui
17:21 <gawel> ca m'incite a jamais le faire alors
17:21 <gawel> :p
17:21 <vaab> ? ca change quoi ?
17:22 <gawel> bah il est plus haut que ton appli dans la stack. donc rien est bindé probablement
17:23 <vaab:#afpy> ok, l'idée serait alors d'être au niveau de paster pour pouvoir avoir une chance d'avoir une session commune... c'est ca ?
17:25 <gawel> moi je le fou carrément en python
17:26 <gawel> app = repoze.who(zope) en gros
17:28 <vaab> ouais je vois a peu près, j'ai fait plusieur chaine WSGI à la main, mais je suis pas sur que ca va corriger mon problème ici... En meme temps j'ai peut-etre la solution d'utiliser pour repoze-who sa propre session/metadata pour le moment. Mais ca me lourde...
17:33 <vaab> ca marche, mais c'est vraiment crade ! (j'ai 15 connection par page à repoze who !) A chaque connection, la session est différente.
17:33 <gawel> beuh
17:35 <gawel> je sais pas comment tu te démerde
17:35 <vaab> je comprend pas non plus pourquoi l'objet n'est pas le même, car il est dans un module, et il est donc chargé vraiment au moment de l'import. Est-ce que les threads peuvent réimporter un module sur l'ancien ?
17:35 <gawel> non
17:35 <gawel> tu fais des call sur l'objet session ?
17:36 <vaab> oui, sur ma session factory... je fais des calls... et j'ai un objet session que j'utilise de manière classique
17:36 <gawel> je ne suis pas sur que e soit nécessaire
17:36 <vaab> Session = scoped_session(sessionmaker(
17:36 <vaab> autoflush=False,
17:36 <vaab> extension=ZopeTransactionExtension()
17:36 <vaab> ))
17:37 <vaab> puis je fait des : session = Session()
17:37 <vaab> ca me donne le meme objet a chaque thread
17:37 <gawel> ce n'est pas nécéssaire il me semble
17:37 <vaab> en fait j'ai remarqué que c'était pas nécessaire, mais c'est dans les rêgles de l'art... alors bon...
17:38 <gawel> bah, non, justement :)
17:38 <vaab> (du moins les regles de l'art que j'ai pu comprendre dans la page de doc de sqlalchemy sur l'utilisation des sessions)
17:38 <gawel> les scoped session sont thread safe
17:39 <gawel> si tu call t'en recréer une explicitement
17:39 <gawel> du moins il me semble
17:39 <vaab> Oui, bien sur... c'est ce qu'on attend d'elle, mais c'est pas sur le call que j'affecte le bind, mais bien la factory
17:39 <vaab> je fait un: Session.bind = engine
17:40 <vaab> du coup j'attend qu'a chaque fois que je ferais un: session = Session(), j'aurais la meme session sur le meme thread, et une session différente par thread...
17:40 <vaab> ET avec le bind déjà configuré sur mon engine
17:40 <vaab> c'est ptet là ou le bas blesse
17:40 <gawel> anéfé
17:41 <vaab> je vois pas pourquoi la factory perdrais le bind...
17:42 <gawel> probablement parceque tu import Session
17:42 <gawel> dans pylons il y a un module meta.py qui défini Session = scopedblah
17:42 <gawel> si tu importe Session ca pete
17:43 <gawel> donc tu import meta et tu utilise meta.Session
17:43 <gawel> qui te donne la session du thread et non pas celle défini au moment de l'import
17:44 <gawel> après c'est parceque pylons utilise threadlocal. je suis pas sur que ce soit le cas de zope
17:44 <gawel> mais c'est une piste
17:46 <vaab> ouais, je regarde avec attention l'id de mon objet global dans les différent thread...
17:46 <gawel> ca me parait une mauvaise idée
17:47 <gawel> tu peux regarder repoze.tm sinon
17:47 <gawel> middlware qui gère les transaction
17:48 <vaab> Ah, il semblerait que j'ai bien le meme objet Session (la factory), mais elle perd son bind... Elle réagit correctement par contre en me fournissant lors du call des session différente par thread...
17:49 <vaab> y a t il un moyen de virer le bind d'une session (sans faire exprès ?)
17:51 <gawel> Session.bind = None
17:52 <vaab> (j'appelle ca faire exprès ;) )
17:53 <vaab> en fait je cherche si on a pas oublié une ligne de code qui closerais l'engine...
21:59 <No`:#afpy> b'soir