gc a écrit 2109 commentaires

  • # meuh

    Posté par  (site web personnel) . En réponse au message renommer & remove fichier. Évalué à 3.

    remove c'est unlink

    rename devrait marcher mais effectivement avec ton strcat tu fais n'importe quoi :)
  • [^] # Re: Ruby On Rails

    Posté par  (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 3.

    D'ailleurs avec :

    Un langage est fortement typé si les conversions implicites de types sont formellement interdites. Si de telles conversions sont possibles, le langage est faiblement typé.

    on en arrive à Java faiblement typé, ce qui est un peu déconcertant.
  • [^] # Re: man bash

    Posté par  (site web personnel) . En réponse au message détecter la fin d'un programme. Évalué à 3.

    Ouais mais faudrait lire l'énoncé du problème quand même :)

    Le processus lanceur va finir, ton wait va finir par la même occasion.

    [gc@meuh /tmp] ruby -e 'sleep 10; puts "detaching"; fork or exec %q(ruby -e "puts %q(detached); sleep 10; puts %q(finishing detached process)")' &
    [1] 18578
    [gc@meuh /tmp] wait `ps --ppid $$ | grep ruby | cut -d\ -f1`; echo "wait finished"
    detaching
    wait finished
    [gc@meuh /tmp] detached
    finishing detached process

    Tu vois que lorsque le processus lanceur fait un fork, lance un autre processus, et se termine, le wait est terminé par la même occasion.


    Au passage, ma solution invoquée plus haut (utilisation de ps --ppid) déconne aussi, parce qu'en fait le parent du wine n'est plus le shell mais init (je ne me rappelais plus de ce comportement - lorsque le parent finit c'est init qui reprend la parenté, je pensais que ça passait au grand-parent).

    Hum ma seule solution au problème d'origine, se débrouiller pour savoir quel est le PID du processus arrière-plan. Je ne vois pas d'autre solution là.
  • [^] # Re: Ruby On Rails

    Posté par  (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 2.

    Non je parlais plus précisément de typage fort. Associé à la vérification à la compilation comme je le disais (vérification statique donc - pour le typage dynamique les types étant découvert à l'exécution) ça permet de détecter plus de problèmes dès la compilation (avec le coût d'être plus verbeux par contre).
  • [^] # Re: Ruby On Rails

    Posté par  (site web personnel) . En réponse à la dépêche Support d'Ajax dans Ruby on Rails. Évalué à 4.

    Cependant, lorsque l'appli grossit, la vérification à la compilation dans un langage fortement typé, devient un avantage de plus en plus important.

    Quelle est la taille des applications RoR dont tu parles ?
  • # meuh

    Posté par  (site web personnel) . En réponse au message détecter la fin d'un programme. Évalué à 3.

    ps --ppid $$
  • [^] # Re: meuh

    Posté par  (site web personnel) . En réponse au message bmp2avi avec mencoder ou autres ?. Évalué à 3.

    J'ai plus la commande que j'avais utilisée, mais je sais que j'ai déjà réussi à fairre ça. Voire par exemple http://linuxfr.org/tips/303.html(...)
  • # meuh

    Posté par  (site web personnel) . En réponse au message bmp2avi avec mencoder ou autres ?. Évalué à 4.

    où est mon problème ? ou y a t il une autre solution (ffmpeg, transcode, convert ?)

    ben t'es gonflé tu pourrais lire quand même :

    [demux_mf] unknown input file type.

    ============ Sorry, this file format is not recognized/supported =============



    utilise convert (ImageMagick) pour convertir tes BMP en JPG ou PNG avant de les passer à mencoder.
  • [^] # Re: c sux

    Posté par  (site web personnel) . En réponse au message manipuler un fichier binaire. Évalué à 3.

    suffit de _vouloir_ le rendre illisible :)
  • # c sux

    Posté par  (site web personnel) . En réponse au message manipuler un fichier binaire. Évalué à 4.

    perso j'aurais pas fait ca en C.


    #!/usr/bin/ruby

    test = '0AB508A1A2B1B2C1C2D1D20CB106A1A2C1C2D1D2E1E2F1F2'
    baddy = 'B1B2'

    testb = [ test ].pack("H*")
    baddyb = [ baddy ].pack("H*")

    outb = ''
    while testb.length > 0
        substring = testb[1, testb[0]]
        testb = testb[1+testb[0] .. -1]
        substring.gsub!(baddyb, '')
        outb += [ substring.length ].pack("C")
        outb += substring
    end

    puts outb.unpack("H*")[0].upcase
  • [^] # Re: meuh

    Posté par  (site web personnel) . En réponse au message sécurité : LOGIN/PASSWORD DANS L'URL. Évalué à 3.

    C'est vrai. Cependant, les gens sont tellement habitués à avoir une boîte de dialogue sur la sécurité lorsqu'ils se connectent en https qu'ils ne lisent pas souvent le contenu. Ce serait bien d'avoir une alerte comme sur gmail lorsqu'il détecte un fake ebay ou autre : un gros bandeau sur fond rouge. En général ce sont des bêtes boites grises sur les navigateurs ce qui est dommage.
  • [^] # Re: OK

    Posté par  (site web personnel) . En réponse au message Où trouver les sources. Évalué à 3.

    t'as pas franchement tort.

    [gc@n1 ~/rpm/BUILD/kernel-2.6] find -name "*.c" -o -name "*.h" | xargs wc -l | awk '{ foo+=$1 } END { print foo }'
    13419102
  • [^] # Re: meuh

    Posté par  (site web personnel) . En réponse au message Où trouver les sources. Évalué à 2.

    beuh même un bête winzip shareware décompresse du .tar.gz (j'ai pas choisi .bz2 pour ça justement)

    cependant, au temps pour moi. you're da windoze man.
  • [^] # Re: C'est vague

    Posté par  (site web personnel) . En réponse au message Où trouver les sources. Évalué à 4.

    hint : sous-catégorie du forum
  • [^] # Re: meuh

    Posté par  (site web personnel) . En réponse au message Où trouver les sources. Évalué à 4.

    Vraiment, je ne suis pas là pour détruire Microsoft. Ca sera juste un effet secondaire tout à fait involontaire.

    L'original pour le terme "secondaire" est "side-effect", ce qui se traduit normalement par "effet de bord", et est bien plus drôle dans un contexte informatique, à mon humble avis.
  • # meuh

    Posté par  (site web personnel) . En réponse au message sécurité : LOGIN/PASSWORD DANS L'URL. Évalué à 5.

    La règle de base c'est que tout ce qui passe en clair sur un réseau même switché est accessible de n'importe quelle autre machine grâce à des attaques simples sur le protocole ARP, et tout ce qui passe en https aussi (un nouveau secret est partagé à chaque nouvelle connexion, un man-in-the-middle suffit pour berner ton client, ce qui se fait très bien de la même manière). Tu as un semblant de sécurité avec ssh pour peu que tu communiques le fingerprint avant la première connexion (concrètement, personne ne le fait).

    La sécurité dans un réseau local est relativement illusoire, à mon humble avis. Ceci dit, je m'éloigne de ta question initiale.

    Si tu te connectes dans un labo, il suffit que quelqu'un mette un keylogger en ton absence pour que tout ce que tu tappes les jours suivants soit capturé. Es-tu sûr de la sécurité physique des accès à ta machine ?


    Pour répondre à ta question, mettre user:pass dans l'URL est relativement équivalent à le tapper dans une boîte de dialogue si c'est de l'http, de toutes façons : la seule différence c'est que si c'est en user:pass on peut facilement capturer ton mot de passe en accédant physiquement à la machine en ton absence (logs, bookmarks), alors que si tu le tappes il faut faire une attaque ARP (trivial mais ça peut se remarquer s'il y a un monitoring ARP, ceci dit peu d'admin réseaux mettent ça en place à mon humble avis).
  • # meuh

    Posté par  (site web personnel) . En réponse au message sécurité : LOGIN/PASSWORD DANS L'URL. Évalué à 2.

    Question de sécurité à 1000 FF

    Cette monnaie n'a plus cours.
  • # meuh

    Posté par  (site web personnel) . En réponse au message Où trouver les sources. Évalué à 1.

    où : ftp.kernel.org

    comment :

    1. cliquer sur "démarrer" en bas à gauche du joli bureau playskool
    2. choisir Microsoft Internet Explorer dans la liste des applications
    3. copier coller ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.11.tar.gz(...) dans la barre d'adresse et appuyer sur la touche "entrée"
  • [^] # Re: flush

    Posté par  (site web personnel) . En réponse au message Un pipeline, deux pipelines, trois pipelines.... Évalué à 2.

    Ben awk manque cruellement de features et est bien plus dur à debugger que du perl ou du python.

    Ensuite si on considère par exemple le startup time, sur mon système j'ai 0.02s pour python, 0.004s pour perl et 0.002s pour awk donc le bénéfice est franchement faible.

    Après effectivement si c'est juste du traitement ligne par ligne... mais dès que tu veux rajouter une regexp ou quelque chose de plus poussé tu risques de perdre du temps (sauf si tu gurutises en awk et tu neuneutises en perl évidemment).
  • # flush

    Posté par  (site web personnel) . En réponse au message Un pipeline, deux pipelines, trois pipelines.... Évalué à 5.

    je soupçonne un problème de flush. ce n'est pas bash qui "gère" les pipes c'est le kernel : bash invoque les processus et lie tout simplement le stdin de droite au stdout de gauche pour chaque pipe.

    avec les trois programmes perl suivants j'arrive à afficher chaque seconde le résultat des deux traitements du résultat du premier programme (le premier substitue le premier caractère par un "m" et le deuxième passe en majuscules) :

    [gc@meuh /tmp] perl -e '$| = 1; while () { print "foo1\n"; sleep 1; }' | perl -pe 'BEGIN { $| = 1 } s/./m/' | perl -pe '$_ = uc'
    MOO1
    MOO1
    MOO1
    MOO1

    ce qui doit coincer pour toi c'est le flush. note les ``$| = 1'' qui permettent aux deux premiers programmes de ne pas coincer (variable d'autoflush en perl). typiquement pas mal de programmes bufferisent y compris les retours à la ligne lorsqu'ils se rendent compte qu'ils ne sont pas branchés sur un vrai terminal (enlève le ``$| = 1'' du programme du milieu pour voir).

    je ne peux pas t'aider en awk mais j'espère que tu es _obligé_ d'utiliser awk sinon c'est du suicide de choisir d'utiliser un truc pareil ;p. cherche à flusher ton awk (et le traitement aussi bien sûr).
  • [^] # Re: Sois plus clair.

    Posté par  (site web personnel) . En réponse au message pas de su en bash ?. Évalué à 1.

    c'est switch user.

    l'utilisateur "a", depuis son shell bash, lance su.

    le shell fork et execute su.

    tu as deux processus : le shell est toujours là, et le su.

    l'utilisateur associé au processus su passe à root (ou à un autre utilisateur), puis su invoque un shell.

    tu as trois processus : le shell d'origine qui appartient toujours à "a", qui attend la fin de su, le su qui appartient à root qui attend la fin du shell invoqué, et le shell invoqué (qui appartient à root aussi donc) qui attend que tu tappes des commandes.


    ce n'est pas la manière que tu avais imaginée, mais ça fait du sens du point de vue unix :

    - si le shell d'origine passait à root, il faudrait une notion de pile de changement d'utilisateur, ou au moins une notion de "sortie" de changement d'utilisateur, qui n'existe pas

    - tout est basé sur la notion de processus, la seule entorse à ma connaissance est fork, tout le reste agit sur le processus en cours, en particulier ici on invoque "su" avec l'appel système exec après fork, puis on change l'identité du processus avec les appels système setgid et setuid
  • # meuh

    Posté par  (site web personnel) . En réponse au message cvs : ascii et binary file, comment choisir ?. Évalué à 5.

    cvs add -kb foo.gif

    pour l'import je sais pas j'utilise jamais.


    pour corriger, je ne connais pas d'autre moyen que :

    cvs remove -f foo.gif
    (copier le fichier original)
    cvs add -kb foo.gif

    dans un script donc éventuellement.
  • # meuh

    Posté par  (site web personnel) . En réponse au message acrobat reader 7 imprime pas bien.... Évalué à 3.

    Beaucoup moinsse danjereu surtout

    http://lwn.net/Articles/129729/(...)
  • # meuh

    Posté par  (site web personnel) . En réponse au message JSP timer. Évalué à 3.

    Pause de 3 secondes :

    Thread.sleep( 3000 );
  • [^] # Re: glou

    Posté par  (site web personnel) . En réponse au journal Raison pour ne pas changer d'OS : msn 7..... Évalué à 0.

    Mais c'est quoi ce terrorisme!

    Parle de nazisme directement, ça économisera toute réponse.