Mouns a écrit 1281 commentaires

  • # mon experience

    Posté par  (site web personnel) . En réponse au message l'ordi ne démarre plus /var est plein. Évalué à 2.

    maintenant, d'experience, mon /var n'est plus un point de montage.

    Par contre, /var/log /var/lib /var/cache /var/spool /var/www le sont. le reste des dossiers ne sont pas "consommateurs" d'espace.

    Comme cela, je peux gerer mon besoin via lvm et surtout eviter des problemes de débordement d'un /var/lib sur le /var/log ou le contraire.

    un piège assez courant reste les tailles d'inode ... j'ai eu une machine ou j'ai collé les regles de bases pour les inodes sur un /var/lib ... et amavis + clamav remplissant /var/lib , je me suis retrouvé avec une partition pleine alors qu'elle etait presque vide ... je n'avais verifié l'adequation de la taille des inodes par rapport à son usage ( df -i ne fournit pas la meme info que df ) ... un coup de tune2fs et c'etait reglé.
  • [^] # Re: planet

    Posté par  (site web personnel) . En réponse au message Un logiciel pour rapprocher les gens.... Évalué à 3.

    en regardant du coté de certains projets, on y trouve :
    - sharedance ( http://sharedance.pureftpd.org/project/sharedance )
    - skycache ( http://skycache.pureftpd.org/project/skycache )
    - blogbench ( http://skycache.pureftpd.org/project/blogbench )
    - phpbench ( http://skycache.pureftpd.org/project/phpbench )

    qui semblent etre utilisé par les SkyBlog.

    Comme quoi, ce n'est pas parce que les SkyBlogs sont pour les djeunz que les devs sont des C0wB0yZ .

    En tout cas, chapeau bas à Skyrock qui avec les SkyBlog qui publient aussi du code en licence libre.
  • [^] # Re: Mouaip ...

    Posté par  (site web personnel) . En réponse au message Recherche données des communes Françaises. Évalué à 2.

    j'aime bien la concordance :
    ces données ne sont pas garanties. si vous voulez me remercier ...


    il est evident que ces 2 phrases ne sont pas juxtaposable au niveau du sens puisque l'on ne veut pas remercier de la non garanties des données mais pour les données.
    Mais la juxtaposition ayant été faite ... cela a un coté amusant :)
  • # ce qu'est le loadavg

    Posté par  (site web personnel) . En réponse au message Comment interpréter la commande top?. Évalué à 5.

    le loadavg représente le nombre moyen de processus en attente d'execution sur ton systeme.

    1.54 ( ou 154% ) signifie qu'il y a plus d'un processus actif depuis un certain temps.

    ton processeur est oisif ( idle ou glande ) 33% du temps , bosse pour un processus utilisateur 28% du temps et durant 37% du temps il est en zone noyau.

    Au feeling comme ca, de but en blanc ... ta machine bosse essentiellement sur ses interfaces réseaux.

    quand on voit que squid prend 25% de ton temps CPU ... cela peut avoir un sens :)
  • [^] # Re: Pas mal

    Posté par  (site web personnel) . En réponse au journal Idée : une sorte de forum "filtré", une boite à message perso. Évalué à 4.

    elle existe deja ... USENET ... mais la c la version web 2.0
  • # le kernel pour le swap

    Posté par  (site web personnel) . En réponse au message Processus qui écrit sur un disque. Évalué à 3.

    en kernel 2.4 un probleme connu etait au niveau de la gestion du swap.

    sinon un manque evident de RAM peut expliquer des ralentissements due a des ecritures incessantes sur le disque.
  • # mangez des pommes, ca reduira la fracture par une troisieme voie

    Posté par  (site web personnel) . En réponse au journal Anthony Towns est nommé Debian Project Leader. Évalué à 2.

    - "augmenter le tempo"
    - sortir des RC de testing plus souvent
    - et changer le rythme des mises à jours à plus d'une fois par jour
    - fixer les bugs plus vite

    ce n'est pas un peu chronique comme discours pour le debian leader project fraichement élu ?
  • [^] # Re: reponse

    Posté par  (site web personnel) . En réponse au message question. Évalué à 2.

    sinon c'est : quelle est la question ?

    est ce mieux ainsi ? :)
  • # reponse

    Posté par  (site web personnel) . En réponse au message question. Évalué à 5.

    le sujet d'un message d'un forum sert a preciser son probleme c'est pourquoi il est preferable de mettre un sujet clair de plus la ponctuation permet de rendre lisible ses phrases tout comme la possibilite de sauter des lignes permet de gagner encore plus en lisibilite

    sinon c'est qu'elle est la question ?
  • [^] # Re: Mauvaise compréhension des paramètres $a et $b

    Posté par  (site web personnel) . En réponse au message bug PHP5 ou bug entre le clavier et la chaise ?. Évalué à 2.

    cool merci pour la piste :)

    merci de cette réponse mon seul soucis est le risque de collisions puisque j'ai de gros volumes, je vais voir avec du SHA1. a mixer avec serialize() ca peut le faire de maniere sympathique :)

    maintenant, il y a de la doc implicite sur de l'usage avec des listes objets ... et comme PHP passe par copie de valeur les aguments, je ne pense pas que cela gene.

    bon, il y a en dessous un post que je viens de finir en étant un peu bougon ...
    je dois dire que je l'ai commencé dans la foulé du précedent pour le completer avec d'autres informations, et avec l'expression d'un sentiment d'absence de réponse.

    mais tu m'as répondu avec une piste et je me sens maintenant bien bete :|

    encore merci.
  • [^] # Re: Mauvaise compréhension des paramètres $a et $b

    Posté par  (site web personnel) . En réponse au message bug PHP5 ou bug entre le clavier et la chaise ?. Évalué à 1.

    j'oubliais de préciser que http://bugs.php.net n'a aucune entrée et que http://bugs.php.net utilise des objets en argument de array_udiff.

    j'espere que cette longue trace coupera court à toute tentative de réponse sans avoir lu et testé mon bout de code.

    pour ceux qui ont encore un doute ( et je vais finir par paraitre plus execrable que je ne le suis réellement :) ) sur la lecture de mon bout de code :

    - je crée un tableau $a1.
    - je copie $a1 dans $a2.
    - je change 1 valeur dans $a2.
    - je déclare 4 fonctions mns_diffu_1 mns_diffu_2 mns_diffu_3 mns_diffu_algo .
    - je teste chacune des fonctions avec array_udiff et j'en affiche le résultat via un print_r ( print recursif de PHP ).

    mes fonctions sont :

    - mns_diffu_1( $a, $b ) qui retourne le array_diff entre $a et $b
    - mns_diffu_2( $a, $b ) qui retourne le array_diff_assoc entre $a et $b
    - mns_diffu_3( $a, $b ) qui retourne 1 si le array_diff entre $a et $b est non vide sinon 0
    - mns_diffu_algo( $a, $b ) qui affiche les K1 respective de $a et $b et retourne leur array_diff

    toutes ces fonctions fonctionnent, dans un contexte neutre
    print_r( mns_diffu_1( array( 1, 2, 3 ), array( 3, 1, 4 ) ) );

    Je ne dis pas que j'ai mis tous les tests possibles puisqu'il y en a d'autres, mais je n'ai pas trouvé d'autres plus significatif . il se peut aussi que j'en ai oublié un test qui aurait pu etre significatif.

    Tout ca pour dire que mon probleme n'est pas un probleme de "je suis en train d'apprendre à coder" mais un truc un peu plus couillu pour du code libre sur mon temps libre.

    pour donner le contexte, j'ai un formulaire en ligne à champs variables, et les anciennes valeurs dans une bases ... ce bout de code viendra juste faire "le diff entre ce que j'ai deja et ce que je vais avoir de nouveau" pour permettre de mettre a jour les bons champs, effacer ceux qui le doivent et ajouter ce qui le doivent.

    est ce que cela aide ? non.

    mes questions sont :

    - est ce le role de array_udiff de faire un diff entre deux listes selon une regle de l'utilisateur ? et je présuppose que oui d'apres la doc.

    - est ce un bug de array_udiff ? je suppute que oui avec moins de certitude car la doc n'est pas clair et que j'ai pu faire un mauvais usage de la fonction.

    j'ai donc l'impression d'etre désagréable, alors que le probleme est sérieux et que je n'ai pas une once d'élément de réponse à part un semblant de "ta pas bien lu la doc".
  • [^] # Re: Mauvaise compréhension des paramètres $a et $b

    Posté par  (site web personnel) . En réponse au message bug PHP5 ou bug entre le clavier et la chaise ?. Évalué à 2.

    mns_diffu_3 retourne 0 ou 1 selon les parametres.
    
    mes 2 arguments $a et $b sont bien 2 array puisque mns_diffu_algo affiche bien la valeur des clé K1 pour chacun des arrays en argument.
    
    
    j'attends juste un truc du genre :
    
    Array
    (
        [1] => Array
            (
                [K1] => ick
                [K2] => v22
            )
    )
    
    
    
    
    voici la trace que j'ai :
    
    
    affichage des array $a1 et $a2
    
    Array
    (
        [0] => Array
            (
                [K1] => v11
                [K2] => v21
            )
    
        [1] => Array
            (
                [K1] => v12
                [K2] => v22
            )
    
        [2] => Array
            (
                [K1] => v13
                [K2] => v23
            )
    
        [3] => Array
            (
                [K1] => v14
                [K2] => v24
            )
    
        [4] => Array
            (
                [K1] => v15
                [K2] => v25
            )
    
    )
    
    
    Array
    (
        [0] => Array
            (
                [K1] => v11
                [K2] => v21
            )
    
        [1] => Array
            (
                [K1] => ick
                [K2] => v22
            )
    
        [2] => Array
            (
                [K1] => v13
                [K2] => v23
            )
    
        [3] => Array
            (
                [K1] => v14
                [K2] => v24
            )
    
        [4] => Array
            (
                [K1] => v15
                [K2] => v25
            )
    
    )
    
    
    
    affichage des differences
    
    Array
    (
        [0] => Array
            (
                [K1] => v11
                [K2] => v21
            )
    
        [1] => Array
            (
                [K1] => ick
                [K2] => v22
            )
    
        [2] => Array
            (
                [K1] => v13
                [K2] => v23
            )
    
        [4] => Array
            (
                [K1] => v15
                [K2] => v25
            )
    
    )
    
    Array
    (
        [0] => Array
            (
                [K1] => v11
                [K2] => v21
            )
    
        [1] => Array
            (
                [K1] => ick
                [K2] => v22
            )
    
        [2] => Array
            (
                [K1] => v13
                [K2] => v23
            )
    
        [4] => Array
            (
                [K1] => v15
                [K2] => v25
            )
    
    )
    
    Array
    (
        [0] => Array
            (
                [K1] => v11
                [K2] => v21
            )
    
        [1] => Array
            (
                [K1] => ick
                [K2] => v22
            )
    
        [2] => Array
            (
                [K1] => v13
                [K2] => v23
            )
    
        [4] => Array
            (
                [K1] => v15
                [K2] => v25
            )
    
    )
    
    
    affichage de l'algo
    
    v13 ? ick
    v13 ? v11
    v13 ? v14
    v15 ? v13
    ick ? v14
    v11 ? ick
    v13 ? v12
    v13 ? v11
    v13 ? v14
    v15 ? v13
    v12 ? v14
    v11 ? v12
    v14 ? v14
    v14 ? ick
    ick ? v12
    ick ? v11
    ick ? v13
    ick ? v15
    ick ? v11
    v11 ? v13
    v13 ? v15
    
    Array
    (
        [0] => Array
            (
                [K1] => v11
                [K2] => v21
            )
    
        [1] => Array
            (
                [K1] => ick
                [K2] => v22
            )
    
        [2] => Array
            (
                [K1] => v13
                [K2] => v23
            )
    
        [4] => Array
            (
                [K1] => v15
                [K2] => v25
            )
    
    )
    
  • [^] # Re: C'est bien mais....

    Posté par  (site web personnel) . En réponse au message bug PHP5 ou bug entre le clavier et la chaise ?. Évalué à 2.

    $a1 et $a2 contiennent le meme tableau de tableau à 1 détail près : la valeur assigné à la clé K1 de la seconde ligne est différente.

    cf les deux lignes suivantes pour comprendre le contexte du probleme enoncé plus clairement dans la phrase d'au dessus :

    $a2 = $a1;
    $a2[1]["K1"] = "ick";


    array_udiff ne retourne pas la bonne valeur. c'est pour cela que j'affiche plusieurs essais différentes qui retourne le même résultat incohérent.

    le résultat attendu est "trouver que $a2[1] differe de $a1[1]". puisqu'encore une fois, c'est la seule différence introduite entre les 2 array() , et que c'est cette différence que j'attends de array_udfiff.

    si j'ai pondu un code source comme celui là, c'est pour montrer ou cela ne va pas sur un cas tres simple.

    il y a des jolis print() qui affichent des titres à ce qui sort, sur le premier, j'ai oublié de changer le nom il aurait du etre "affichage de $a1 et $a2" .

    je présume que tu as déjà lu le code source que j'ai fourni.

    Ces explications supplémentaires te permettent elles de me fournir une réponse à mon probleme ? ou un indice ?

    en tout cas, je te remercie de ta demande de précision qui pourra permettre d'éclaircir ce qui me semblait évident.
  • # TIMTOWTDI

    Posté par  (site web personnel) . En réponse au message Appel de fonction dynamique sans eval?. Évalué à 3.

    les solutions restent :
    - une table de hachage qui contient en clé le nom de la sub et en valeur une reference sur une sub anonyme
    - l'import directement dans l'espace de perl de la dite sub

    pour ces deux cas, tu peux faire un truc avec 1 seul eval à l'importation, pleins de eval a chaque appel.

    le principe du 1 seul eval à l'import peut se resoudre encore une fois de plein de maniere differente ... la plus évidente et sans finesse perl ( peu performante mais qui a le merite d'etre clair ) :
    - tu lis le fichier contenant ton source perl
    - tu en fais un eval

    si par hasard, tu lis la doc perl, tu verras qu'il a deux fonctions largement optimisé qui fait cela à l'execution do et require .

    maintenant, n'oublie pas que toute sub que tu as deja importé par require / do / use est directement appelable par appel indirect de fonction grace à &{$nom_de_la_sub} ou $nom_de_la_sub() .

    si tu veux controler un minimum, tu fais l'appel en passant par un code de verification de la chaine contenant le nom de la sub a éxecuter.
  • # ce matin, j'ai oublié de RTFM

    Posté par  (site web personnel) . En réponse au journal Window Maker disparu ?. Évalué à -2.

    ce matin au reveil, j'ai voulu allumé la lumière a coté de mon lit et ...

    ... au lieu de s'allumer normalement, elle s'est mise à clignoter ... apres qq minutes, je me suis dit que c'était du morse, ca y ressemble mais ma lumiere dit :

    - SLLDKROOTPTODIJNROTTOTNOZNZSPQSQSPII

    a priori c'est un extra terrestre ou dieu qui essaie de me parler.


    A moins que ce ne soit que la lampe qui soit morte et qu'il faille la changer.

    pour ton histoire de whois, c'est du meme ordre : c'est juste la protection anti-transfert de la zone.
  • [^] # Re: Fabuleux

    Posté par  (site web personnel) . En réponse au journal Corrompre le système de l'intérieur. Évalué à 2.

    hein ?

    depuis quand tu donnes de l'argent à une boite en achetant à un actionnaire ses titres ?

    dans le cadre d'emission de nouveaux titres, à la rigueur.

    mais sur un ensemble constants de titre ( donc hors du cadre exectionnel d'operation sur le volume de titre ), tu ne fais que payer le vendeur pour le titre qu'il vend.
  • [^] # Re: le lien du wiki...

    Posté par  (site web personnel) . En réponse au journal Création d'un LUG à Alès (Gard). Évalué à 2.

    et une petite depeche non ? pour que tout le monde en profite aussi ;)
  • # Extutils::MakeMaker

    Posté par  (site web personnel) . En réponse au message mod_perl, require() et ~userdir. Évalué à 2.

    si tu veux pas te casser la tete , tu n'as qu'a faire un module qui s'installe PROPREMENT dans le corpus des modules perl.

    pour se faire, il te faut utiliser le module fourni en standard : Extutils::Makemaker

    il est tres bien et permet de créer les Makefile en fonction de ta distribution linux/bsd/windows/hpux/... et faire une installation propre.

    comme cela ton script est d'un coté, et tes lib/modules sont dans un endroit ou un simple :

    use Mon::Module;

    permet de l'ajouter sans autre fioriture.
  • # get GIT

    Posté par  (site web personnel) . En réponse au message versionning de fichiers binaires. Évalué à 3.

    c'est le SCM fait par l'équipe du Noyo pour le Noyo donc un SCM qui prouve qu'il est fonctionnel sur de tres gros volume malgré sa jeunesse. on trouve la documentation et les sources sur http://www.kernel.org/pub/software/scm/

    en cas d'inquiétude sur la teneur en usine à gaz du projet, je l'utilise aussi bien dans le cadre professionnel que pour mes projets perso que pour de la gestion de fichiers de conf ( genre mon /etc ;) ).

    en résumé, cela gere le versionnings de choses qui vont du simple fichier texte aux gros fichiers binaires.

    Apres si tu regardes bien les sources de GIT tu y trouveras plein de scripts d'import depuis pleins de SCM courant et d'autres petites killer-app en puissance.
  • [^] # Re: Do simple

    Posté par  (site web personnel) . En réponse au journal TempLight, une classe de template. Évalué à 4.

    je dis juste que ton idée est bonne et que tu peux la pousser encore plus loin au niveau abstraction ...

    une liste de liste ( ou arbre ) dont tu fais un rendu, tu peux le faire :
    - en profondeur d'abord ( recursion des petits enfants pendant itération des fils )
    - en largeur d'abord ( iterations des fils puis recursion pour itération des petits enfants )

    la stratégie en profondeur d'abord est la plus courante.

    la stratégie en largeur d'abord peut etre percu comme une stratégie en profondeur d'abord sur un arbre transformé correctement.

    de plus toute condition fausse peut etre consideré comme une itération ou récursion sur une liste vide. à contrario toute condition vrai peut etre considéré comme une liste ne contenant qu'un seul element contenant la liste elle meme à traiter ( voire dans certains cas suffisament générique, la liste elle meme sans le singleton intermediaire ).

    Apres pour faire des inclusions, nous avons pour chacunes au moins une de ces contraintes à appliquer :
    - obligatoire comme pour inclure une partie commune stockée ailleurs
    - conditionné comme pour inclure une partie stockée ailleurs
    - répétée comme pour inclure N fois une partie stockée ailleurs
    - variable comme pour inclure une partie stockée ailleurs que l'on ne sait pas determiné à l'écriture du template

    maintenant, ton template peut nécessiter plus qu'un attribut texte ne serait ce que pour remplir un tag HTML <img> en séparant le rendu du processing et en évitant les templates de gorets. de plus, tu peux vouloir plus d'une liste possible, et vouloir appliquer sur un produit cartesien d'au moins deux listes.

    Tu as tout ca dans ce petit tag TK à la con au travers deja des attributs TMPLON et FROM .

    je dois avouer que je n'ai eu besoin de l'attribut AS que très très très rarement, malgré le fait que j'ai utilisé ce systeme pour générer beaucoup plus d'autres choses que du HTML , XML , JS , CSS , ...
  • [^] # Re: Do simple

    Posté par  (site web personnel) . En réponse au journal TempLight, une classe de template. Évalué à 2.

    il a presque reinventé mon tag TK qui date de 1994 :)

    en gros ce tag est du genre :
    <TK TMPLON="t1,t2,t3,...,tn" [FROM="node"] [AS="class1,class2,...,classn"]>
    template html lisant &attr1; &attrto2; &titi; comme contenu à mapper dans cette partie qui est considéré comme vide si l'attribut FROM est defini. l'attribut AS servant à instancier des classes d'alteration locale pour certains rendu spécifique ( permettant d'eviter le recalcul de certaines recursions "lourde" de type "fermeture transitive d'un graphe orienté" ).
    </TK>

    un template contenu dans un noeud "arbo_item" :
    <dl class="closed">
    <dt>&title;</a></dt>
    <dd><TK TMLON="sons" FROM="arbo_item" /></dd>
    </dl>

    n'a besoin que d'une classe truc avec comme propriété title et sons ( ce dernier contenant une liste de truc ) pour faire apparaitre une arborescence complete.

    apres, il y a juste 1 appel de fonction du genre
    apply_tk( root_node_to_render , root_object );

    aujourd'hui cela se mappe aisément sur un DOM.

    Apres cette breve présentation, je dois dire que meme si je suis excessivement satisfait de la méthode très proches de certains concepts comme les fonctions recursives & autres machines de turing, et malgré une très grande aisance au debug quand on maitrise la chose ( et ya un putain de temps gagné ) ...

    CETTE METHODE EST A DECONSEILLER TRES VIVEMENT A TOUT LE MONDE.

    pour donner un exemple simple du probleme sous jacent, c'est comme apprendre la programmation en LISP et avoir comme projet en TD de reimplementer tout emacs21 avec juste un sous ensemble du LISP :p
  • # tous pour i et ir a toi

    Posté par  (site web personnel) . En réponse au message boucle for. Évalué à 2.

    for i in signifie qu'à partir ce qui suit, séparé par le caractere "blanc", chaque element obtenu est assigné à i dans l'ordre.

    reste a manipuler $i.

    exemple de base :
    for treepwood in ceci est un exemple simple ; do
    echo "+-+ $treepwood -+-"
    done
  • [^] # Re: bizarre...

    Posté par  (site web personnel) . En réponse au journal Probleme de connexion. Évalué à 7.

  • # oui c'est possible

    Posté par  (site web personnel) . En réponse au message postfix, muti-domaine et compte unix. Évalué à 3.

    il faut regarder du coté de la gestion des virtual_user avec des virtual_domain .

    http://www.postfix.org/ reste la source d'information la plus à jour sur le sujet.

    un conseil cependant, si tu comptes gerer "beaucoup" d'utilisateurs, unifie ton annuaire d'utilisateurs ( MySQL, PostgreSQL, LDAP, PAM, ... ) avec ton client imap/pop/sasl , sinon "bonjour la galere" arrive de maniere excessivement rapide.
  • [^] # Re: "open + while + split + if + join + print + close" grace a RTFM

    Posté par  (site web personnel) . En réponse au message besoin de commande perl pour éviter une boucle sur grep, un if et un sed (en clair un rechercher remplacer conditionnel). Évalué à 4.

    alors si tu ne veux pas de boucle, tu deroule la boucle par contre il faut que tu connaisses d'avance le nombre de lignes du fichier :)

    sinon, tu peux tenter une recursion mais cela reste encore une boucle implicite :

    open( my $ifile, "<", "input.txt" );
    open( OFILE, ">", "output.txt" );

    sub recurs {
    my $h = shift;

    my $a = <$h>;
    chomp;
    my @col = split( '~', $_ );

    if ( ( $col[0] eq "ACT" ) && ( $col[12] =~ /^0/ ) ) {
    $col[12] = $col[14];
    }

    print OFILE join( '~' , @col ), "\n";
    recurs( $h ) unless eof( $h );
    }

    recurs( $ifile );

    close( $ifile );
    close( OFILE );

    Maintenant, explique moi comment traiter un fichier de N lignes sans faire une boucle ? Les instructions SIMD pour des traitements complexes gerant des acces disques n'existent pas encore il me semble mais je me trompe peut etre.

    Penses tu serieusement que cat, grep, awk & co ne font pas de boucle quelque part ?

    quel overhead représente un saut pour ton probleme si tu le resoud dans un langage interprété ? autant résoudre ton probleme en ASM, mais de toute facon je ne vois pas comment ne pas mettre de saut sans derouler.

    cadeau : le source d'une version de cat pour OpenBSD http://mirror.sg.depaul.edu/pub/OpenBSD/src/bin/cat/cat.c