PyroTokyo a écrit 71 commentaires

  • [^] # Re: excellente nouvelle

    Posté par  . En réponse au journal Reqflow. Évalué à 1.

    Pour Doors, je ne sais pas pour être honnête.

    Pour Reqtify, tu as une sorte de langage de script intégré, qui s'appelle OTScript, qui te permet de faire certaines choses, comme rajouter des règles perso à valider, voire dans certains cas créer de nouvelles interfaces (j'ai dû faire ça pour rajouter un système de gestion de conf qui n'était pas intégré dans la version vendue).

    Par contre, pas de chance, ce langage de script ne ressemble pas vraiment à grand chose de connu/répandu. C'est un mélange de script/fonctionnel qui pour être franc est assez bizarre. On dirait un langage tout droit sorti d'un projet de recherche, ou quelque chose comme ça.
    Il était question à une époque d'avoir la possibilité d'utiliser Java en plus de ce langage, mais je ne sais pas dans quelle mesure c'est possible maintenant.

  • [^] # Re: excellente nouvelle

    Posté par  . En réponse au journal Reqflow. Évalué à 1.

    Je confirme que c'est toujours commercialisé :)
    Ceci dit, il y a eu une période assez chaotique vers 2010, qui a correspondu effectivement au rachat par Dassault Systemes (genre, Q2 2010).

  • [^] # Re: excellente nouvelle

    Posté par  . En réponse au journal Reqflow. Évalué à 2.

    Des macros Word ?? Je ne suis pas sûr qu'on parle du même logiciel… Tu ne parlerais pas de RequisitePro ?

    En fait, pour être plus précis, Reqtify procède dans un premier temps à une conversion du document d'origine en plain text ou en xml, selon le type de document (typiquement, quand la structure est importante, on procède vers du XML, avec des fichiers Simulink ou XML par exemple).
    Ensuite, soit par expressions régulières, soit par des patterns XML, on identifie les sections, exigences, relations d'implémentation, etc…
    Rien à voir avec des macros donc. Ce qui est vrai par conte, c'est que pour certains softs (Word, Excel entre autres) on utilise l'interface COM pour avoir une navigation un peu plus pratique (genre, on clique sur une exigence dans Reqtify, ça ouvre Word et saute jusqu'à l'exigence en question, pratique quand tu as 600 pages de specs et pas envie de chercher dedans).

    Pour ce qui est de Doors, à ma connaissance, on ne sait pas lire de fichiers xls, pdf, ou même du code source, donc non je ne pense pas qu'on puisse dire qu'il fait tout ce que fait Reqtify.
    Le premier est vraiment dédié à la définition d'exigence, là où je verrais plutôt le second comme un aggrégateur d'exigences venant de différentes sources.

  • [^] # Re: excellente nouvelle

    Posté par  . En réponse au journal Reqflow. Évalué à 1. Dernière modification le 07 mars 2014 à 12:21.

    Oui, en fait on fait bien la distinction entre "requirement definition", ce que fait Doors (et si on est pas exigent, ce que font les clients avec Excel, ou pire, du jpeg dans les pires cas), et "requirement management", ce dont s'occupe Reqtify.

    Pour y avoir beaucoup touché, je dirais que Reqtify raisonne en "tout est document", que ce soit un .doc, un .xls ou un répertoire de code (ou alors un serveur Doors aussi…).
    On passe par des "interfaces" pour parser/analyser le tout, et le soft agglomère tout ça dans un projet de traçabilité.

    Après, comme le soft présenté ici, une fois le modèle de projet obtenu, on en tire un peu ce qu'on veut, que ce soit des matrices de traçabilité, des analyses d'impact (si je modifie une exigence, en quoi ça impacte mon code 3 niveaux en dessous ?), des snapshots pour suivre les modifs entre 2 révisions par exemple (l'équivalent grossier d'un diff sur les exigences).

  • [^] # Re: Mmmh

    Posté par  . En réponse au message question sur MarkAuto et paquets suggérés. Évalué à 0.

    Effectivement j'avais mal lu la doc…
    Apt::AutoRemove::SuggestsImportant fait le boulot comme il faut !!!

  • [^] # Re: Mmmh

    Posté par  . En réponse au message question sur MarkAuto et paquets suggérés. Évalué à 0.

    Example tout bête
    J'installe souvent une Debian minimale, avant d'ensuite installer le bureau.
    Si je choisis la tache desktop-environment, Gnome est installé par défaut. Si je veux modifier pour KDE ou Xfce, la suppression de la tache gnome laissera quand même une partie de ses dépendances, qui peuvent être suggérées par certains des paquets de KDE.
    Elles seraient effectivement supprimées ensuite par autoremove, mais en attendant ce sont plusieurs centaines de Mo qui seraient installés.

  • [^] # Re: Mmmh

    Posté par  . En réponse au message question sur MarkAuto et paquets suggérés. Évalué à 0.

    L'idée c'est plutôt d'empêcher l'installation de ces paquets au lieu de les supprimer ensuite.
    Je connaissais autoremove, mais je me demandais juste si ce n'était pas possible de modifier ce comportement pour les paquets suggérés :)

  • # Moules sur Tokyo ?

    Posté par  . En réponse au message Rencontre Tokyo LUG Vendredi 19. Évalué à 2.

    Du coup je me demande, on est combien sur le Japon ? Ce serait sympa de se faire un petit apero de temps a autres :)

  • [^] # Re: Tunnel ssh

    Posté par  . En réponse au message iptables pour du proxy ?. Évalué à 0.

    Oui, c'est comme ça que je fais mon tunnel SSH. Par contre sur mon NAS, je n'ai rien qui tourne pour écouter sur le port xxxxx et envoyer les paquets a qui de droit. C'est pour ca que je supposais qu'il me fallait tout de même un proxy ou quelque chose du même genre.

  • [^] # Re: Une solution

    Posté par  . En réponse au message calcul sur plusieurs aggregats. Évalué à 0.

    Effectivement dans mon schema d'origine j'ai 3 tables, comme decrit. J'ai juste voulu rendre la chose plus lisible. Sinon, je devrais ecrire un autre join pour mes conditions sur la communaute (categorie, date de creation, peu importe), mais ce n'etait pas vraiment le point que je voulais soulever :)

  • [^] # Re: Window Functions

    Posté par  . En réponse au message calcul sur plusieurs aggregats. Évalué à 0.

    Je confirme, j'ai vraiment du louper quelque chose > Admettons que j'ai 300 millions d'entrees dans ma table community (en fait, community_users comme ecrit plus bas, j'avais juste voulu condenser un peu l'ecriture), de tous les exemples que j'ai vus, j'aurai egalement 300 millions de lignes en sortie de requete.

    Est-ce qu'il vous serait possible de me montrer un exemple ?
    Typiquement, je voudrais un resultat identique a ce que renvoie la requte du journal. A savoir environ 3 millions de lignes, soit 1 par communaute, de la forme

    com_id, nbusers total, nbusers de moins de 25 ans

    Mais j'ai l'impression que les join plombent beaucoup les performances :(

  • [^] # Re: Une solution

    Posté par  . En réponse au message calcul sur plusieurs aggregats. Évalué à 1.

    Ah mais c'est pas bete du tout ca !
    J'avoue a ma grande honte que je n'avais jamais utilise d'expressions logiques comme ca dans mes requetes. La faute a l'usage d'ORM je suppose, qui me force a penser "objet" alors que la effectivement c'est tout simple ^
    Je testerai ca avec ma table une fois que j'aurai fini de la restaurer !

  • [^] # Re: Window Functions

    Posté par  . En réponse au message calcul sur plusieurs aggregats. Évalué à 1.

    De ce que j'en lis, ces window functions ne renvoient pas d'aggregat et conservent le nombre de lignes.
    Dans mon cas, ca me donne 300 millions de lignes en sortie, qui contiennent effectivement la bonne info, mais pas tres compact.
    De plus, je ne vois pas vraiment comment integrer une jointure dans ces fonctions (pour le filtrage sur les user), j'ai loupe quelque chose peut-etre ?

  • [^] # Re: Ne pas tout faire en SQL

    Posté par  . En réponse au message calcul sur plusieurs aggregats. Évalué à 1.

    C'est exactement ce que je pense… un chouilla de python et j'aurais ce qu'il me faut !
    Mais, mais, mais… la table community contient 300 millions d'entrees, pour environ 3 millions de communautes differentes.
    A ce rythme la, mon python sera a genoux, enfin je me comprends ! Alors a part ecrire les resultats dans des fichiers, fusionner tout ca, je ne vois pas trop comment m'en sortir.
    J'avais suppose que laisser faire le tout a la base serait un gain de temps et de performances.

  • [^] # Re: Bah

    Posté par  . En réponse au message performances de JOIN / EXISTS sur postgres. Évalué à 0.

    Le distinct est necessaire ici, sinon j'obtiendrais des doublons (tous les coupes user/email)
    Je vais voir avec les unions comment tout ca se comporte, ca pourrait effectivement valoir le coup. Je n'aimais pas trop les utiliser avec l'ORM, parce que rien n'empeche de melanger un peu tout et n'importe quoi dans les unions, du coup je restais plus dans la couche "objet"

  • [^] # Re: Bah

    Posté par  . En réponse au message performances de JOIN / EXISTS sur postgres. Évalué à 1. Dernière modification le 05 juin 2012 à 02:45.

    Ce que je comprends moins, c'est que d'apres ce que j'avais lu, la clause exists est supposee s'executer jusqu'a ce qu'on trouve une entree valide, la ou le join parcourra toutes les solutions possibles. Malgre tout, j'ai un facteur 40 en performance.

    Dans mon ORM, toutes mes requetes de type "any" (pour les relation ManyToMany) sont converties en clauses exists, et sont generalement un peu complexes (cad avec du AND et du OR dedans). Dois-je en conclure que je ferais mieux de reecrire ces requetes a la main, en remplacant mes exists par un select distinct et un join ?

  • # explain

    Posté par  . En réponse au message performances de JOIN / EXISTS sur postgres. Évalué à 1.

    Bon, je viens de faire un explain sur la requete, mais j'avoue ne pas tout comprendre ;

    "Nested Loop Semi Join  (cost=8.30..638694661.54 rows=22164 width=4) (actual time=302.577..732235.774 rows=31863 loops=1)"
    "  ->  Seq Scan on mixiuser  (cost=0.00..874903.36 rows=52453936 width=4) (actual time=32.473..211619.619 rows=52049079 loops=1)"
    "  ->  Bitmap Heap Scan on email  (cost=8.30..85.48 rows=20 width=8) (actual time=0.007..0.007 rows=0 loops=52049079)"
    "        Recheck Cond: ((mixiuser.id = target_id) OR (mixiuser.id = source_id))"
    "        ->  BitmapOr  (cost=8.30..8.30 rows=20 width=0) (actual time=0.005..0.005 rows=0 loops=52049079)"
    "              ->  Bitmap Index Scan on ix_email_target_id  (cost=0.00..4.11 rows=6 width=0) (actual time=0.002..0.002 rows=0 loops=52049079)"
    "                    Index Cond: (mixiuser.id = target_id)"
    "              ->  Bitmap Index Scan on ix_email_source_id  (cost=0.00..4.18 rows=14 width=0) (actual time=0.002..0.002 rows=0 loops=52049079)"
    "                    Index Cond: (mixiuser.id = source_id)"
    "Total runtime: 732339.279 ms"
    
    
  • [^] # Re: test unitaire

    Posté par  . En réponse au message performances de JOIN / EXISTS sur postgres. Évalué à 1.

    J'ai essaye en ne laissant qu'une clause EXISTS sur deux, et dans les deux cas je tombe a environ 15 secondes. Avec un OR, je m'attendais grosso modo au double, mais non. On passe a 800 secondes ;

  • [^] # Re: passer en sélection manuelle

    Posté par  . En réponse au message question bete sur pacman/yaourt (Arch). Évalué à 1.

    ah je vois :)
    en fait je ne parlais pas de la selection des paquets a installer, mais bien des resultats de recherche !
    typiquement, les resultats retournes par yaourt -Ss

  • [^] # Re: Vite fait

    Posté par  . En réponse au message grep sur du binaire ???. Évalué à 1.

    la chaine y est, pour sur (c'est Okteta qui le dit ^^)
    par contre, si je reduis le grep au caractere \x1f, j'ai bien une occurrence ou il faut. si je cherche \x8b grep ne retourne rien... je me demande s'il n'y a pas une histoire d'evaluation quelque part
  • [^] # Re: Vite fait

    Posté par  . En réponse au message grep sur du binaire ???. Évalué à 1.

    en fait c'est pareil sur mon Arch a la maison, donc ca ne doit pas venir de la :(
  • [^] # Re: Vite fait

    Posté par  . En réponse au message grep sur du binaire ???. Évalué à 1.

    oui, en effet c'est bizarre... un copain me dit que la commande marche chez lui avec les memes fichiers
    par contre, sur ma debian, nada ~
    effectivement je passerai par un dump, mais j'avoue que ca me laisse perplexe :(
  • [^] # Re: Vite fait

    Posté par  . En réponse au message grep sur du binaire ???. Évalué à 2.

    1) si mes souvenirs bash sont bons, $'\xHH' retourne le caractere qui a pour code hexa HH. En tout cas, ca marche avec la commande echo

    3) vu que grep fonctionne egalement avec l'entree standard, en quoi ca gene d'avoir un < ?
    Au pire, il ne sert a rien ou ralentit le traitement

    4) l'idee etant de recuperer un offset avec le grep, je ne vois pas trop ou intervient split la dedans. J'aurais plutot utilise dd -skip personnellement ?
  • [^] # Re: Il faut le créer

    Posté par  . En réponse au message systeme de message ??. Évalué à 1.

    oui, c'est le probleme qui m'avait saute a la figure quand j'y avais un peu reflechi
    un ami m'a dit que pour faire ca il faudrait en gros tout faire heriter non pas d'object, mais d'une autre classe, ce qui a l'air assez bourrin
    je ne suis pas expert du tout, donc si ca se trouve c'est une anerie ^^
  • [^] # Re: Quelques détails ?

    Posté par  . En réponse au message systeme de message ??. Évalué à 1.

    Et bien, par exemple un truc idiot.
    J'utilise beaucoup les expressions regulieres, et donc j'ai souvent des objets "match" ou "search".
    Le probleme c'est que quand Python ne trouve pas l'expression reguliere, au lieu de renvoyer un objet il renvoie None.
    Du coup, je dois me coltiner des "if not None" a foison avant d'appeler les fonctions que je veux utiliser sur mes objets match