C'est un programmeur COBOL qui s'est fait des couilles en or au moment du passage à l'an 2000, à tel point qu'à sa mort, il a les moyens de se faire cryogéniser. Un beau jour, on le décongèle et on le ramène à la vie. Il demande pourquoi on l'a reveillé et on lui réponds : "On est en 9999 et vous connaissez le COBOL".
Tiens j'en profite pour poser une petite question. Comment gerer les évolutions du schéma de la bado ? Car à ma connaissance il n'y a rien dans le core de Django pour ça. Les migrations de RoR me manquent.
En fait j'ai simplement essayé dans l'ordre les méthodes de déploiement indiquées dans la doc du projet, ce ne sont pas particulièrement "mes" méthodes ;-) Pour info j'ai testé avec trois processus Mongrel derrière un Apache, comme indiqué dans la doc.
À vrai dire, j'avais connaissance de la possibilité d'utiliser mod_rails mais je n'ai pas essayé par manque de temps. J'ai pensé que suivre les méthodes recommandées sur le site de Redmine était un choix raisonable.
Est-ce beaucoup plus performant sous mod_rails ? Il faudrait que les performances soient 2 ou 3 fois meilleures pour que ça devienne utilisable. Notre code source est stocké sur un VPS qui n'est pas un foudre de guerre. Trac y est cependant utilisable, lui.
J'ai essayé Redmine ici et je confirme que l'installation n'est pas une sinécure, et pourtant je suis familier de Ruby et RoR (mais pas du deploiement d'applis RoR en revanche).
C'est vrai que c'est bien fichu et un peu mieux que trac, par contre qu'est-ce que c'est lent ! Que ce soit avec Webrick ou bien Mongrel, les pages mettent de longues secondes à se charger. De plus l'appli "meure" après quelques heures d'utilisation et il faut la redémarrer.
Donc un projet très prometteur mais qui demande encore à être stabilisé, optimisé et mieux packagé. J'y reviendrais dans quelques mois !
Dénoncer son interface outrageusement peu pratique c'est bien, mais il ne faut pas oublier de mentionner son instabilité légendaire ni sa consommation pantagruélique de ressources.
Ruby est le langage de prédilection pour les enseignants et les chercheurs :
- Bien rasés
- Avec une coiffure hype
- Qui tournent à la coke
- En skateboard
Grails est complètement dans l'univers Java, le framework se repose ainsi sur des frameworks "stars" de Java comme Spring ou Hibernate lui donnant d'office une maturité évidente
Ekiga (...) ça marchait au poil une fois avoir configuré son firewall/passerelle
Voila, c'est tout le problème. Il semble que l'utilisation du protocole STUN permet d'éviter toute configuration spécifique sur le routeur NAT. Sur http://ekiga.org/index.php?rub=3&pos=0&faqpage=x161.(...) on peut lire à peu près ceci : La première chose à faire est de lancer l'assistant de configuration NAT. Si celui-ci indique "Cone NAT" ou "Port Restricted NAT", vous avez just à répondre "oui" au dialogue proposant l'activation sur support STUN.
Le point que tu soulèves ici concerne n'importe quel langage dynamique : certains problèmes n'apparaissent qu'à l'exécution. C'est aussi vrai pour Ruby, Python, etc. A cela on réponds généralement qu'avec une suite de tests ayant une couverture raisonnable, ce genre de problème est rapidement détecté. Après je n'ai aucune expérience sur PHP, si effectivement le "programme va produire des résultats bizarres parfois sans crasher ou alors seulement sous certaines conditions", c'est une autre histoire...
D'autre part, le typage explicite des variables, si il permet effectivement de détecter assez tôt des erreurs simples, ne met pas à l'abri de bugs subtils à l'exécution. C'est particulièrement vrai avec C/C++, mais même en Java, on est pas à l'abri d'une NullPointerException...
Le code que j'ai cite provient du lien que tu as donne et que tu viens de mettre a jour en vitesse.
PMO découvre le schéma de tes tables
dynamiquement, tu as donc des méthodes génériques.
Si on decouvre le shema, pourquoi ne pas creer dynamiquement des methodes specifiques ? D'ailleurs, quel est l'interet de cette decouverte de schema puisqu'on fournit les informations de shema a tes methodes generiques lorsqu'on les appelle ? Ce que je propose, c'est que lorsque pmo decouvre un champ login, il ajoute les methodes setLogin et getLogin, si le champ s'appelle age, il cree setAge et getAge et ainsi de suite...
Sinon, je ne comprends pas l'interet de getObjectByValue puisqu'on doit de toute facon passer les criteres de selection a la requete SQL.
Voyons voir l'exemple de code qui donne une idée de l'API :
$controler = new MyControler();
$map = $controler->queryControler("SELECT * FROM utilisateur;");
$object = $map->getObjectByValue("utilisateur", "login", "ancienlogin");
$object->setAttribute('login','nouveaulogin');
$controler->commitControler($object->getId());
Pourquoi cette classe MyControler ? Est-ce qu'on ne peut pas encapsuler ça dans l'objet qui représente la donnée ? (btw controller prends deux L)
Ensuite on doit taper une requête SQL pour simplement récupérer tous les enregistrements !? On peut pas éviter ça ? C'est censé être un ORM quand même. Qu'on permette l'utilisation de SQL pour des clauses d'agrégats ou des appels de procédures stockées par exemple, c'est bien, mais pour juste faire ça, je ne veux pas taper de SQL.
Ensuite si je comprends bien le getObjectByValue va récupérer un enregistrement donné d'après la colonne login ? Pourquoi avoir chargé tous les utilisateurs alors ? SI j'ai 10 000 utilisateurs, on va tous les les récupérer depuis la bdd à chaque fois que je veux modifier un login, construire une structure de données puis filtrer les résultats ?
Ensuite on fait la modification du l'attribut, ne peut-on pas avoir une syntaxe plus légère du genre $object->setLogin('nouveaulogin');
Enfin le commit, et cette fameuse classe MyController dont je ne vois pas l'utilité en tant qu'utilisateur de ta lib. Et en plus je dois lui passer un id, alors qu'on sait déjà sur quel objet on travaille. Que ce controller te soit utile en interne OK, mais moi je ne veux pas m'en préoccuper, je veux juste mettre à jour un login.
[^] # Re: Cobol
Posté par rhizome . En réponse au journal Sursis pour le Cobol ??. Évalué à 1.
Ah en voilà une chouette mesure anti-goret ! Je vais faire une PEP là-dessus tiens ;)
Quoi que les sapins de Noel sont de saison ...
# Histoire
Posté par rhizome . En réponse au journal Sursis pour le Cobol ??. Évalué à 10.
[^] # Re: marre des liens wikipédia dans les dépèches
Posté par rhizome . En réponse à la dépêche Test d'Ubuntu 8.10 Intrepid. Évalué à 9.
C'est vrai que cette mode est [[énervante]]. [[Ça]] doit [[être]] simplement parce que c'est facile.
Tiens d'ailleurs on dirait qu'il y a un bug déclenché si le mot contient des caractères pas américains : [[Éléphant]] vs Elephant
# Expérience risquée
Posté par rhizome . En réponse au journal [People] "Je passe à emacs" -- Stefano Zacchiroli. Évalué à 6.
[1] http://www.imdb.com/title/tt0390521/
[^] # Re: ORM
Posté par rhizome . En réponse à la dépêche Sortie de la version 1.0 de Django. Évalué à 2.
[^] # Re: ORM
Posté par rhizome . En réponse à la dépêche Sortie de la version 1.0 de Django. Évalué à 3.
[^] # Re: Redmine
Posté par rhizome . En réponse au journal Quel bug tracker utiliser ?. Évalué à 1.
À vrai dire, j'avais connaissance de la possibilité d'utiliser mod_rails mais je n'ai pas essayé par manque de temps. J'ai pensé que suivre les méthodes recommandées sur le site de Redmine était un choix raisonable.
Est-ce beaucoup plus performant sous mod_rails ? Il faudrait que les performances soient 2 ou 3 fois meilleures pour que ça devienne utilisable. Notre code source est stocké sur un VPS qui n'est pas un foudre de guerre. Trac y est cependant utilisable, lui.
[^] # Re: Redmine
Posté par rhizome . En réponse au journal Quel bug tracker utiliser ?. Évalué à 1.
C'est vrai que c'est bien fichu et un peu mieux que trac, par contre qu'est-ce que c'est lent ! Que ce soit avec Webrick ou bien Mongrel, les pages mettent de longues secondes à se charger. De plus l'appli "meure" après quelques heures d'utilisation et il faut la redémarrer.
Donc un projet très prometteur mais qui demande encore à être stabilisé, optimisé et mieux packagé. J'y reviendrais dans quelques mois !
[^] # Re: vim + grep
Posté par rhizome . En réponse au journal Quel bug tracker utiliser ?. Évalué à 3.
# Business Loto
Posté par rhizome . En réponse à la dépêche Annonce de Nuxeo WebEngine : framewok Java pour applications orientées contenus. Évalué à 8.
[^] # Re: portnawak...
Posté par rhizome . En réponse au journal Google offre un format de donnée sous licence Apache. Évalué à 1.
[^] # Re: Paquet d'aspirines..
Posté par rhizome . En réponse à la dépêche Sortie de Eclipse 3.4 - Ganymede. Évalué à 4.
[^] # Re: Paquet d'aspirines...
Posté par rhizome . En réponse à la dépêche Sortie de Eclipse 3.4 - Ganymede. Évalué à 2.
[^] # Re: Paquet d'aspirines...
Posté par rhizome . En réponse à la dépêche Sortie de Eclipse 3.4 - Ganymede. Évalué à 3.
En même temps, Eclipse est loin d'être le seul à fournir l'autocomplétion, une interface graphique pour la gestion des révisions, etc.
> vu la cohérence de l'api standard.
Hé bin, Eclipse + PHP, tu as bien du mérite :-)
[^] # Re: On est vendredi ?
Posté par rhizome . En réponse à la dépêche Les Journées Perl 2008, 30-31 mai à Albi. Évalué à 2.
- Bien rasés
- Avec une coiffure hype
- Qui tournent à la coke
- En skateboard
# Scandaleux
Posté par rhizome . En réponse à la dépêche Pycon FR, 17 et 18 mai, Cyberbase de la Villette, Paris. Évalué à 1.
------------> []
# Hum...
Posté par rhizome . En réponse à la dépêche Sortie de Grails 1.0. Évalué à 8.
Trop gros, passera pas.
[^] # Re: Video sous Linux dans Skype
Posté par rhizome . En réponse à la dépêche Polices STIX, sources de Multics et Skype ajoute la vidéo sous Linux. Évalué à 1.
Voila, c'est tout le problème. Il semble que l'utilisation du protocole STUN permet d'éviter toute configuration spécifique sur le routeur NAT. Sur http://ekiga.org/index.php?rub=3&pos=0&faqpage=x161.(...) on peut lire à peu près ceci : La première chose à faire est de lancer l'assistant de configuration NAT. Si celui-ci indique "Cone NAT" ou "Port Restricted NAT", vous avez just à répondre "oui" au dialogue proposant l'activation sur support STUN.
[^] # Re: Video sous Linux dans Skype
Posté par rhizome . En réponse à la dépêche Polices STIX, sources de Multics et Skype ajoute la vidéo sous Linux. Évalué à 1.
# Video sous Linux dans Skype
Posté par rhizome . En réponse à la dépêche Polices STIX, sources de Multics et Skype ajoute la vidéo sous Linux. Évalué à 1.
Sinon la vidéo sous Ekiga ça marche derrière du NAT maintenant ?
[^] # Re: PHP
Posté par rhizome . En réponse à la dépêche PhpMyObject 0.10 : nouvelle version. Évalué à 1.
D'autre part, le typage explicite des variables, si il permet effectivement de détecter assez tôt des erreurs simples, ne met pas à l'abri de bugs subtils à l'exécution. C'est particulièrement vrai avec C/C++, mais même en Java, on est pas à l'abri d'une NullPointerException...
[^] # Re: PHP
Posté par rhizome . En réponse à la dépêche PhpMyObject 0.10 : nouvelle version. Évalué à -1.
[^] # Re: Mmmm, voyons voir...
Posté par rhizome . En réponse au journal PMO v 0.07 déjà. Évalué à 1.
Le code que j'ai cite provient du lien que tu as donne et que tu viens de mettre a jour en vitesse.
Si on decouvre le shema, pourquoi ne pas creer dynamiquement des methodes specifiques ? D'ailleurs, quel est l'interet de cette decouverte de schema puisqu'on fournit les informations de shema a tes methodes generiques lorsqu'on les appelle ? Ce que je propose, c'est que lorsque pmo decouvre un champ login, il ajoute les methodes setLogin et getLogin, si le champ s'appelle age, il cree setAge et getAge et ainsi de suite...
Sinon, je ne comprends pas l'interet de getObjectByValue puisqu'on doit de toute facon passer les criteres de selection a la requete SQL.
[^] # Re: Mmmm, voyons voir...
Posté par rhizome . En réponse au journal PMO v 0.07 déjà. Évalué à 2.
$controler = new MyControler();
$map = $controler->queryControler("SELECT * FROM utilisateur;");
$object = $map->getObjectByValue("utilisateur", "login", "ancienlogin");
$object->setAttribute('login','nouveaulogin');
$controler->commitControler($object->getId());
Pourquoi cette classe MyControler ? Est-ce qu'on ne peut pas encapsuler ça dans l'objet qui représente la donnée ? (btw controller prends deux L)
Ensuite on doit taper une requête SQL pour simplement récupérer tous les enregistrements !? On peut pas éviter ça ? C'est censé être un ORM quand même. Qu'on permette l'utilisation de SQL pour des clauses d'agrégats ou des appels de procédures stockées par exemple, c'est bien, mais pour juste faire ça, je ne veux pas taper de SQL.
Ensuite si je comprends bien le getObjectByValue va récupérer un enregistrement donné d'après la colonne login ? Pourquoi avoir chargé tous les utilisateurs alors ? SI j'ai 10 000 utilisateurs, on va tous les les récupérer depuis la bdd à chaque fois que je veux modifier un login, construire une structure de données puis filtrer les résultats ?
Ensuite on fait la modification du l'attribut, ne peut-on pas avoir une syntaxe plus légère du genre $object->setLogin('nouveaulogin');
Enfin le commit, et cette fameuse classe MyController dont je ne vois pas l'utilité en tant qu'utilisateur de ta lib. Et en plus je dois lui passer un id, alors qu'on sait déjà sur quel objet on travaille. Que ce controller te soit utile en interne OK, mais moi je ne veux pas m'en préoccuper, je veux juste mettre à jour un login.
Voici à quoi pourrait ressembler l'API :
$user = Utilisateur::getByLogin("ancienLogin");
$user->setLogin("nouveaulogin");
$user->commit();
Sinon faire son auto-promotion dans Wikipedia je suis pas sur que ce soit de très bon goût ;)
[^] # Re: mouais
Posté par rhizome . En réponse à la dépêche Zend Framework 1.0.0 : PHP à la suite de Ruby on Rail. Évalué à -1.
Sinon, moi je dis chapeau au développeurs PHP qui arrivent à faire de chouettes applis (mediawiki, etc.) avec un tel langage.