Arnaud Taffanel a écrit 7 commentaires

  • # /sys/device/system/cpu

    Posté par  . En réponse au message Multi-Thread. Évalué à 3.

    Il est aussi possible de désactiver des cpu sans redémarrer la machine :

    echo "0" > /sys/devices/system/cpu/cpu1/online
    echo "0" > /sys/devices/system/cpu/cpu2/online
    echo "0" > /sys/devices/system/cpu/cpu3/online
    

    Pour les réactiver il suffit de réécrire "1" dans les fichiers online.

  • # Buffer flush ...

    Posté par  . En réponse au message Flux dans un pipe. Évalué à 5.

    Je suppose que dans le premier cas le shell lance le premier echo et pipe son stdout au stdin de rev. Quand le premier echo quitte, son buffer stdout est vidé et donc rev recois la chaine par stdin. Puis le shell lance de la même manière sleep et le second echo, a chaque fois qu'un programme quitte son tampon de sortie est vidée.

    Par contre, pour les deux rev, le buffer n'est vidé que quand le premier rev quitte, donc après les 2 secondes.

    Ce qui est étrange c'est que quand stdout est le terminal, un retour à la ligne est sufisant pour vider le buffer de sortie. Apparemment ce n'est pas le cas pour un pipe.
  • # send et method/call

    Posté par  . En réponse au message Pointeur de fonction ?. Évalué à 2.

    Je vois deux solutions 'simple' une avec send (on envoie un message à l'objet, c'est la façon smalltalk d'appeler une methode il me semble) :

    my_function="mi"
    send(my_function,1,2,3,4);

    my_function=:log
    send(my_function,1,2,3,4)


    Ou avec method et call cité plus haut :

    my_function = method(:mi)
    my_function.call(1,2,3,4)

    my_function = method("log")
    my_function.call(1,2,3,4)


    Dans les deux cas on peu utiliser une chaine de carractere ou un symbole (:mi ou :log). J'imagine qu'avec un symbole le code doit etre plus performant, cela dit je n'en suis pas sur.

    Comme en ruby la ligne de code "my_function(1,2,3,4)" serais equivalent à "self.send(:my_function,1,2,3,4)" je ne crois pas qu'il existe de solution où l'on puisse appeler "my_function(1,2,3,4)" comme on le ferais avec un pointeur de fonction en C par exemple.

    Cordialement.
  • [^] # Re: Optimisation

    Posté par  . En réponse au message Addition de flottants. Évalué à 3.

    Perso j'ai pondu ce code principalement pour le fun (d'où la lisibilité ;). Pour voir s'il était possible de reforger un flottant compréhensible par le processeur (ça marche et rien que pour voir printf afficher que 21.5+20.5=42, avec l'addition faite à la main, ça vaut le coup :).

    Après, comme je l'ai déjà dit, en soit c'est totalement inutile, mais ça permet d'éprouver les algo dans un langage facile à coder et à déboguer (le C) pour les réimplémenter dans des langages un peu moins sympa a déboguer (comme en ASM pour microcontrolleur PIC16, ou en vhdl pour une implémentation hard).
  • [^] # Re: Une implémentation

    Posté par  . En réponse au message Addition de flottants. Évalué à 1.

    L'opérateur ternaire peut se remplacer par (en version longue ...) :
    if (sr!=0) {
    res = 0x80000000;
    } else {
    res = 0;
    }

    Sinon pour le résultat étrange ... je vois au moins 2 choses :
    si les mantisses sont alignés à droite, le réalignement après l'addition devrais être quelque chose comme "while(buf>0x0EFFFFFF)" (il faut que la mantisse résultante soit dans les 23Bits de poid faibles).
    Ensuite ces 23bits doivent être recopier dans les 23bits de poids faible du flottant, pour ça une ligne comme :
    res=res|(mantisseRes&0x0EFFFFFF);
    parais plus adapté.

    Enfin ce code ne gère pas les soustractions, donc dans le meilleur des cas tu obtiendra 5.5 (voir -5.5 si tu inverse a et b) :-).
  • # Une implémentation

    Posté par  . En réponse au message Addition de flottants. Évalué à 2.

    Bonjour,

    Je m'étais amusé à coder ça il y à quelque temps. En fait j'ai commencé par la multiplication de short pour dériver sur la division puis les additions, division et multiplication flottantes. Tout ça juste avec des additions et des operations logique.

    Le code, pas franchement très propre, est ici http://snipt.org/tgk . L'addition flottante est dans fadd().

    L'idée c'est que chaque nombre est codé en 'mantisse*2^exposant'. Pour pouvoir additionner il faut donc que les deux exposant soit égaux, on multiplie donc l'exposant d'un des nombre pour obtenir le même exposant puis le résultat devient (mantisse1+mantisse2)*2^exposant.

    Ce code n'a évidemment aucun intérêt pratique en C mais il permet d'évaluer les algorithmes qui permettent de ré-implémenté ces opérations sur des petits microcontrolleurs (qui n'ont parfois même pas de multiplication hard), ou en hard justement (vhdl&co...)
  • # Re: La toile ou ma connexion se comporte de façon étrange

    Posté par  . En réponse au journal La toile ou ma connexion se comporte de façon étrange. Évalué à 4.

    j'ai la même chose avec mozilla à paris avec club-internet.
    mais lorsque j'essai avec telnet :

    $ telnet karrakis.net 80
    Trying 80.65.234.35...
    Connected to karrakis.net.
    Escape character is '^]'.
    GET / HTTP/1.1
    host: karrakis.net
    connection: close

    HTTP/1.1 200 OK
    Date: Tue, 16 Sep 2003 20:18:37 GMT
    Server: Apache
    X-Powered-By: PHP/4.1.2
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html

    1e59
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd(...)">
    <html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml(...)">
    ..........reste de la page ..........

    La page renvoyer avec telnet est la bonne. c'est peut etre PHP qui interprète mal des paramètres envoyés dans l'en-tête http par mozilla .....

    Par contre avec debian-fr.org :

    $ telnet debian-fr.org 80
    Trying 62.4.21.252...
    Connected to plouc.net.
    Escape character is '^]'.
    GET / HTTP/1.1
    host: debian-fr.org
    connection: close

    HTTP/1.1 200 OK
    Date: Tue, 16 Sep 2003 20:19:36 GMT
    Server: Apache
    X-Powered-By: PHP/4.2.3
    Set-Cookie: PHPSESSID=ae273aba4ff94dc9c800af2ba4742e44; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=iso-8859-1

    0

    Connection closed by foreign host.

    là rien est envoyé à part l'en tête http, même pas le < html>< body>< /body>< /html> donner par mozilla!
    c'est assez bizarre mais c'est surment pas un problème de DNS.