laurentm a écrit 44 commentaires

  • # ... + clavier usb

    Posté par  . En réponse au message Portable + écran externe. Évalué à 1.

  • [^] # Re: Django : profitons de l'occasion ...

    Posté par  . En réponse à la dépêche Retour sur Django 1.5. Évalué à 1.

    HTML5 : tu peux utiliser des syntax du style Markdown ou reStructuredText

    J'avais envisagé la même chose mais pour la génération de rapport automatique, tu generes du Rst puis un petit coup de rSt2html

    En y réfléchissant un peu plus, utiliser c'est le markdown ou rst c'est pas forcement la meilleur solution pour générer du HTML. On est bien trop limité. Tu trouveras peut-être ton bonheur avec des trucs comme Haml ou Slim.

    Je ne sais pas où tu te trouves, mais ici meteofrance a prévu plusieurs jours de pluie :) Si c'est pareils pour toi, voici encore un peu de lecture.

    CrEv a écrit une série de journaux sur toutes les nouvelles techno pour faire du web. C'est très intéressant et tu découvriras plein d'autres outils.

    http://linuxfr.org/users/crev/journaux/ecrire-une-page-web-de-nos-jours
    http://log.winsos.net/2012/12/05/ecrire-une-page-web-de-nos-jours-suite-des-aventures.html
    http://linuxfr.org/users/crev/journaux/ecrire-une-page-web-de-nos-jours-troisieme-partie
    http://linuxfr.org/users/crev/journaux/web-log-today-est-juillet-ecrire-un-blog-de-nos-jours

  • [^] # Re: Django : profitons de l'occasion ...

    Posté par  . En réponse à la dépêche Retour sur Django 1.5. Évalué à 1.

    Salut Christophe,

    Beaucoup de questions … je vais essayer d'y répondre :)

    Pour faire du web maintenant, c'est HTML5+CSS+JS. Tu peux oublier tout le reste (flash, xul, activex, etc.). Par contre, tu n'est pas obligé de faire du HTML5/CSS/JS à la main si tu n'aimes pas ça. Il existe des alternatives qui permettent d'améliorer les choses (syntax plus simple, plus haut niveau, …).

    • HTML5 : tu peux utiliser des syntax du style Markdown ou reStructuredText (une petite liste)
    • CSS : il existe des préprocesseurs CSS comme less, je te laisse chercher les autres
    • JS : tu as principalement CoffeeScript (j'en connais pas d'autre)

    Pour le look sympa, tu peux jeter un oeil du côté des framework CSS. Perso, je suis fan de Bootstrap. Ça permet d'avoir un style pas trop mal dès le début du projet, et si tu n'aimes pas le style par défaut tu peux lui ajouter un thême.

    Pour les intéractions côté client, c'est du JS uniquement (via CoffeeScript tu si préfères). C'est un peu la loose de tout gérer à partir de rien. Et là aussi, il existe des framework qui nous viennent en aide : jquery, EmberJS, Angular, Backbone, …

    Et si à ce stage vous n'avez pas encore rempli votre grille de Bullshit Bingo, je vais vous arranger ça… :)

    Dernièrement, j'ai réalisé une petite appli web en mode "Single-page application" pour gérer une liste de contacts. Elle a été réalisé avec les outils suivants : Ember.js, Django, Bootstrap, Tastypie et ember-data-tastypie-adapter.
    Le code est sur github si tu veux y jeter un oeil : https://github.com/lmeunier/django-ember-contactmvc

    J'espère que ça répond à tes questions…

  • [^] # Re: Le buzz autour de Django et les "nouveautés" toutes relatives

    Posté par  . En réponse à la dépêche Retour sur Django 1.5. Évalué à 4. Dernière modification le 07 mai 2013 à 10:16.

    • il ne gère pas des transactions "tout en un" comme le fait SQLAlchemy par exemple

    Si je comprends bien de quoi tu parles, c'est tout à fait possible avec Django, mais ce n'est pas le comportement par défaut (ce que je trouve dommage…).

    Par défaut, Django fait de l'auto-commit pour chaque query, c'est pas terrible dans certain cas (comme celui de ton exemple). Mais il est toutefois est possible de coupler une transaction SQL à une requête HTTP. Dans ce cas, la transaction commence avant le traitement de la View et est commitée si tout se passe bien, si une exception est levée pendant le traitement, la transaction est annulée (rollback).

    Django permet également de gérer finement les transactions en indiquant explicitement quand elle commence, et si on fait un commit ou un rollback.

    Tous les détails sont ici : https://docs.djangoproject.com/en/1.5/topics/db/transactions/

    Pour les cas tordus comme une transaction qui dure plusieurs requêtes HTTP (dans le cas d'un wizard qui est sur plusieurs "écrans" par exemple), je ne sais pas si c'est possible avec Django, je n'en ai jamais eu besoin.

    Pour les autres points, je suis d'accord avec toi.

  • [^] # Re: Le buzz autour de Django et les "nouveautés" toutes relatives

    Posté par  . En réponse à la dépêche Retour sur Django 1.5. Évalué à 3.

    Un autre sujet qui me gène toujours avec Django, c'est la "non-réutilisabilité" de l'ORM hors web. Comme je n'ai pas beaucoup développé en python ces dernières années, je me demande comment font les dév. utilisant Django pour toutes les tâches de backoffice. Est-ce que vous codez du SQL en dur si vous en avez besoin ? Est-ce que vous utilisez d'autres technos "ORM" ? Est-ce que tout tourne sur un serveur web - quel genre d'infra vous utilisez ?

    Peux-tu expliquer ce que tu entends par la non-réutilisabilité de l'ORM hors web ? Je ne vois pas trop ce qui pourrait empêcher l'utilisation de l'ORM Django en dehors d'un environnement web … même si Django lui-même est très très orienté web.

    Personnellement, pour les tâches CRON, j'utilise un script Python qui ressemble à ceci :

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    
    from myapp.models import Mymodel
    
    for obj in Mymodel.objects.all():
        print obj
    
    

    Ce script fonctionne très bien hors web, j'ai bien accès à l'ORM de Django. Le seul truc un peu sioux c'est l'ajout de la ligne os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") avant l'import du modèle.

    Mais ce n'est peut-être pas ce genre de chose que tu appelles des tâches de backoffice…

  • [^] # Re: Le buzz autour de Django et les "nouveautés" toutes relatives

    Posté par  . En réponse à la dépêche Retour sur Django 1.5. Évalué à 1.

    C'est exactement le principe que j'utilise pour mes nouveaux projets réalisés avec Django. J'ai au final un fichier .tar.gz installable facilement avec pip. Ça simplifie pas mal les déploiements.

    Tout est décrit en détail ici : http://www.deltalima.net/blog/django-packager-un-projet/

  • # Commenter l'intention

    Posté par  . En réponse au journal To comment or not to comment. That is the question.. Évalué à 6.

    Je suis 100% d'accord avec toi sur le fait de commenter l'intention. J'ai du reprendre en TMA du code qui était passé entre de nombreuses mains, et il était impossible de déterminer si certaines parties du code était buggées ou non : à la lecture, on sait rapidement ce que le code fait, mais on ne sait pas si c'était réellement ce qui était souhaité. Et bien sûr, personne n'avait la réponse…

    On n'a pas tous la même façon de penser, quelque chose qui peut sembler trivial à quelqu'un ne le sera pas forcement pour une autre personne. S'il vous plait, pensez aux personnes qui vont passer derrière vous (hum hum), laissez leur quelques indices … j'en ai marre de d'essayer de deviner le but d'une fonction (et en plus ma boule de cristal ne fonctionne plus).

  • [^] # Re: Commentaires

    Posté par  . En réponse au journal Web Log Today est juillet - écrire un blog de nos jours. Évalué à 2.

    J'avoue que les générateurs statiques m'intéresse et m'attire particulièrement. Mais une seule chose freine encore mon envie de sauter le pas : les commentaires…
    Je n'ai pas envie de me priver de commentaires et les sites statiques en sont clairement dépourvus.

    Pour les commentaires, David Larlet utilise une solution à base de mailing list. C'est expérimental et je ne sais pas trop si ça fonctionne bien (comprendre : est-ce qu'il y aurait plus de commentaires avec un système classique ?). En tout cas, ça sort de l'ordinaire et c'est une idée originale.

  • [^] # Re: Et en Python...

    Posté par  . En réponse au journal Web Log Today est juillet - écrire un blog de nos jours. Évalué à 3.

    Il existe énormément de générateurs de site web static, que ce soit en Python, ruby ou [votre langage préféré]. Ils font tous plus ou moins la même chose, certains sont orientés blog, d'autres sont fait pour la doc, mais au final aucun ne convient à 100% (en tout cas pour moi). J'en avais essayé une bonne dizaine avant de me rendre compte que trouver LA solution qui me convienne c'était mission impossible…

    Perso, j'utilise Flask avec deux extensions (Frozen-Flask et Flask-FlatPages), c'est très très fortement inspiré d'un article de Nicolas Perriault. Du coup, aucune contrainte, je choisis mon langage de markup, la structure du site, et tout et tout. C'est-y pas merveilleux :)

  • # Flask

    Posté par  . En réponse à la dépêche De tout, de rien, des bookmarks, du bla‐bla #44. Évalué à 4.

    Pour avoir utiliser Flask sur quelques petits projets, je trouve que c'est un framework formidable. Le côté micro-framework est très plaisant. En allant piocher dans les nombreuses extensions, on peut facilement se construire son framework à la carte tout en gardant une cohérence. La doc est très bien faite, la mailing-liste et le projet sont actifs. Bref, je le conseille vivement :)
    À noter que l'auteur de Flask est Armin Ronacher, c'est également à lui que l'on doit Jinja2 et Werkzeug.

    Si vous avez un peu de temps libre pendant ce long week-end et que vous êtes intéressé par le développement web, je vous recommande de dérouler le tutoriel, c'est une très bonne introduction à ce micro-framework.

  • # Et voilà, c'est terminé...

    Posté par  . En réponse au journal Jouer avec la sécurité web. Évalué à 1.

    Merci Bruno d'en avoir parlé ici, ça aurait été dommage de passer à côté de ça.

    J'ai réussi à aller jusqu'au dernier niveau, mais impossible de le passer … je n'ai absolument aucune piste pour le résoudre, même pas la moindre petite idée ! Vivement que les solutions soient en ligne.

    En tout cas, c'était sympa, ça permet de se rendre compte de ce qu'il est possible de faire avec une injection SQL ou du XSS. Même s'ils se sont donnés du mal pour donner un contexte plus ou moins réaliste à chaque niveau, ça aurait été sympa de plancher sur du vrai code contenant des failles exploitables (et exploitées).

    Et en bonus j'ai fait mon premier padding SHA1, je ne savais même pas que c'était possible :)

  • # Merci à tous

    Posté par  . En réponse au message GUI pour changer la timezone d'un utilisateur. Évalué à 1.

    Merci à tous pour vos réponses.
    Je suis parti sur une solution à base de zenity, fortement inspiré du code de Tanguy. Et ça does le job :)

  • [^] # Re: Scribes

    Posté par  . En réponse au journal De tout, de rien, des bookmarks, du bla bla. Évalué à 0.

    Super ! Merci beaucoup, je vais lire ça tout de suite.

  • [^] # Re: en shell

    Posté par  . En réponse au message GUI pour changer la timezone d'un utilisateur. Évalué à 2.

    Ah oui, bonne idée ça ! Je n'avais pas pensé à utiliser zenity pour ce genre de chose … surtout que je l'utilise déjà pour ce projet (moi trop bête :p). Merci pour l'idée et l'exemple en shell.

  • [^] # Re: Scribes

    Posté par  . En réponse au journal De tout, de rien, des bookmarks, du bla bla. Évalué à 0.

    Ok, j'avoue que j'ai toujours utilisé gedit comme un bête éditeur de texte (un peu comme un notepad.exe sous windows).
    Par pur curiosité, tu utilises quoi comme plugins intéressants avec gedit ? Tu arrives à retrouver un comportement similaire à TextMate ou Sublime Text 2 ?

  • # Scribes

    Posté par  . En réponse au journal De tout, de rien, des bookmarks, du bla bla. Évalué à 3.

    Pour un équivalent à TextMate et Sublime Text 2 en libre, il y a scribes qui s'en approche. Je l'utilise depuis quelques jours, pas encore assez de recule pour le comparer objectivement à vim mais il y de bonnes idées. Ce qui est dommage c'est que ce projet semble plus ou moins à l'abandon, pas de commit depuis novembre 2011.

    http://scribes.sourceforge.net/

  • [^] # Re: Pas possible

    Posté par  . En réponse au message GUI pour changer la timezone d'un utilisateur. Évalué à 0.

    Ok. Je sais bien que pour prendre en compte la nouvelle timezone, il faut relancer la session pour que la variable d'environnement soit de nouveau lue. Ce que je cherche en fait, c'est une petite appli qui liste les différentes timezone disponibles sur le serveur pour que l'utilisateur puisse en choisir une lui-même. Après la timezone sélectionnée peut-être stockée n'importe où (dans un fichier, ou autre), comme j'ai la main sur les scripts qui lancent les sessions, je peux glisser un "export TZ" kivabien au passage.
    J'ai juste besoin d'un truc graphique, léger et simple pour choisir une timezone…

    J'ai bien conscience que c'est un peu spécifique comme besoin, du coup je suis pas sûr de trouver un truc tout fait, mais je tente quand même ma chance ;)

  • [^] # Re: ssh et proxy socks

    Posté par  . En réponse au message Tunnel SSL avec petite VM - 64/128Mo RAM. Évalué à 1.

    Si tu peux faire du ppp sur ton OpenVZ, tu peux peut-être regarder du côté de ppp over ssh.

    Il y a une doc ici : http://tldp.org/HOWTO/ppp-ssh/. Ça date de 2001, donc il y aura sûrement des trucs à adapter/modifier, mais je pense que ça vaut le coup d'oeil.

  • # ssh et proxy socks

    Posté par  . En réponse au message Tunnel SSL avec petite VM - 64/128Mo RAM. Évalué à 0. Dernière modification le 29 mai 2012 à 22:07.

    Tu dois certainement avoir un serveur ssh d'installé sur ta vm, et celui-ci doit très certainement pouvoir faire proxy socks.

    Côté serveur, rien à faire.

    Côté client, deux trucs :
    - tu te connectes en ssh sur ton serveur avec la commande suivante : ssh user@server -D 1234
    - tu configures ton navigateur pour utiliser un proxy socks en localhost sur le port 1234

    Et voilà :)

    En bonus, tu pourras profiter de la compression au niveau ssh.

    PS: j'ai lu trop vite, c'est déjà ce que tu utilises … (fail !) pourquoi ça ne te convient pas cette solution ?