cho7 a écrit 1457 commentaires

  • # :(

    Posté par  (site web personnel) . En réponse au journal Patrick Roy bronsonisé. Évalué à 10.

    c'est la deuxième fois que Patrick Roy nous quitte :(

  • [^] # Re: Et pour la démonstration

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 2.

    je viens de tester sur une machine linux, et la deuxième tentative de connexion plante bien comme il faut. Le problème serait donc inhérent à windows (testé sur windows Seven et XP)

  • # Et pour la démonstration

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    Voilà, un petit exemple java bien dégeu qui illustre le truc du flag REUSEADDRESS

    Il suffit de lancer deux fois le programme (le deuxieme devrait s'appeler server TWO automatiquement). Si on attaque 127.0.0.1 avec un browser c'est bien server TWO qui répond, mais si on le tue, alors c'est server ONE qui répond.

    Si quelqu'un peut m'expliquer pourquoi on arrive à ce comportement, je suis preneur.

    import java.io.BufferedWriter;
    import java.io.OutputStreamWriter;
    import java.net.InetSocketAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.SocketException;
    import java.util.Date;

    public class Foo{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception{
        String serverName = "Server number ONE";
    
        if (args.length != 1){
            System.out.println("Usage: MicroServer.jar <port>");
            System.exit(1);
        }
    
        int port = Integer.parseInt(args[0]);
    
        ServerSocket server = new ServerSocket();
    
    
        try{
            server.bind(new InetSocketAddress("0.0.0.0",port));
        }
        catch (SocketException se){
            server = new ServerSocket();
            server.setReuseAddress(true);
            serverName = "Server number TWO";
            server.bind(new InetSocketAddress("localhost",port));
        }
    
        System.out.println(serverName + " is now listening on port " + port);
    
        while (true){
            Socket s = server.accept();
            System.out.println("[" + new Date().toString() + "] new connection from " + s.getInetAddress().toString());
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            writer.write("<html><title>Hello</title><body>Hello, I am " + serverName + "</body></html>");
            writer.close();
            s.close();            
        }
    
    }
    

    }

  • [^] # Re: non

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    Elles n'écoutent pas en "même temps" puisque seule la dernière lancée recoit le flux. Mais elle courcircuite la première application durant toute sa durée de vie.

    Pour reproduire le comportement, simplement faire un serveur qui écoute sur 0.0.0.0:80, et un autre sur 127.0.0.1:80 avec le flag REUSEADDRESS (sinon paf, address already in use)

    Le mystère du pourquoi ca marche reste entier cela dit...

  • [^] # Re: SO_REUSEADDR et SO_REUSEPORT

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    bingo

    J'ai positionné le REUSEADDRESS via la methode java setReuseAddress(true) et désormais le programme fait bien comme putty, à savoir qu'il se lance sans planter, et qu'il répond à la place du HTTPServer sur le port 80, et ce dernier reprend immédiatement la main quand je tue mon programme.

    Ce qui est bizarre, c'est que la doc indique bien que REUSEADDRESS n'est censé marcher que si l'appli qui écoute déjà est en TIMEWAIT, or ici mon http server est en LISTENING sur 0.0.0.0

    Est-ce normal ? N'est-ce pas là une faille de sécurité ?

  • # Youpi

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec les développeurs Python francophones. Évalué à 2.

    Longue vie à l'opérateur % !

  • [^] # Re: Adresse d'écoute

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    beh oui, mais si putty sait le faire, pourquoi pas moi ? :)

  • [^] # Re: Adresse d'écoute

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    Mais comment je peux faire pour coder un programme qui arrive à se lancer sur 127.0.0.1 quand le meme port est déjà bindé sur 0.0.0.0 par une autre application ? L'API java me jette comme une crotte ! Pour elle (et pour moi aussi d'ailleurs), 0.0.0.0 inclut 127.0.0.1

  • [^] # Re: Adresse d'écoute

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    Alors, j'ai découvert le -o de netstat windows qui m'indique un peu plus d'info (le pid notamment)

    du coup, j'ai avant de lancer putty :

    TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 384

    Image Name PID Session Name Session# Mem Usage
    ========================= ====== ================ ======== ============
    httpd.exe 384 RDP-Tcp#34 0 5,700 K

    Après avoir lancé putty :

    TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 384
    TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 6584

    Image Name PID Session Name Session# Mem Usage
    ========================= ====== ================ ======== ============
    putty.exe 6584 RDP-Tcp#34 0 4,316 K

    Mon programme java n'arrive pas à binder 127.0.0.1:80 si un programme est déjà bindé sur 0.0.0.0:80, alors pourquoi putty le peut ?

  • [^] # Re: Adresse d'écoute

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    J'en reviens donc à ma question de départ : comment putty fait-il pour reprendre le dessus sur le http server alors que celui-ci est déjà démarré, et lui rendre la main une fois terminé ?!!

  • [^] # Re: Adresse d'écoute

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    Bon, petite précision, mon problème a lieu sur une machine windows !

    Mais le netstat me remonte juste :
    TCP 0.0.0.0:80 0.0.0.0:0 LISTENING

    0.0.0.0 ca veut pas dire "toutes les interfaces" (y compris 127.0.0.1, donc) ?

  • [^] # Re: Adresse d'écoute

    Posté par  (site web personnel) . En réponse au message Science-fiction : 2 applications sur le même port ?. Évalué à 1.

    Hum, c'est pertinent.

    J'ai changé mon code :
    - server = new ServerSocket(Integer.parseInt(args[1]),5,InetAddress.getByName("localhost"));
    au lieu de
    - server = new ServerSocket(Integer.parseInt(args[1]));

    Et quand j'affiche server.getInetAddress().toString() je suis bien désormais sur la boucle locale quand je le lance depuis mon poste. Mais ca ne marche toujours pas quand je démarre le programme sur l'autre machine (address already in use)

  • [^] # Re: me-tv

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

    Ca marche vraiment les clés TNT ? Car j'ai jamais réussi à faire fonctionner une antenne d'intérieur en région parisienne (et pourtant j'ai testé les modèles les plus puissants), donc je présume qu'une clé TNT ne captera pas mieux ?

  • [^] # Re: Si surcouche de langage nécessaire, changer de langage ?

    Posté par  (site web personnel) . En réponse à la dépêche Elixir, enfin une syntaxe agréable pour Erlang ?. Évalué à 2.

    tout pareil. ce qui pourrait me rebuter le plus dans Erlang, c'est que c'est du fonctionnel. Autrement, je ne le trouve pas spécialement compliqué ce langage, bien au contraire.

    En quelques lignes de code on peut par exemple implémenter un serveur et son client, je ne sais pas ce qu'il vous faut !

    coté client:
    serveur ! {hello, self()}.

    coté serveur:
    receive

    {hello, From} ->
        From ! {ok, hello};
    Other ->
        From ! {ko, unknown_command}        
    

    end.

    Sérieux, c'est compliqué ? Moi je trouve ça super sexy en fait :)

  • [^] # Re: c'est moi ou bien...

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles rapides du langage Go. Évalué à 2.

    auto-citation :

    et je te rassure je n'ai pas dis que je ne comprenais pas le langage

    bon, ok je l'ai un peu suggéré en disant que je vieillissais, mais j'exagérais juste un peu pour dire que, quand même, avant je m'extasiais devant la simplicité du python ou des processus Erlang, et que quand je vois Go je me dis juste : pffiou

  • [^] # Re: c'est moi ou bien...

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles rapides du langage Go. Évalué à 3.

    alors tu n'es pas vexant du tout, et je te rassure je n'ai pas dis que je ne comprenais pas le langage, mais qu'il me piquait les yeux.

    Car oui, j'ai pissé beaucoup de code C dans ma vie, du Erlang également, mais la mode est aux langages simples et puissants, et je ne trouve pas Go particulièrement simple. Je dirai qu'il ressemble beaucoup à du C qui aurait forniqué avec d'autres langages un peu plus modernes, ce qui honnêtement n'est pas une bonne chose pour le vendre aux nouveaux développeurs en herbe.

    Sinon pour répondre sur ta phrase

    En particulier tout ce qui touche à la concurrence comporte son lot de complexité, car c'est fondamentalement un domaine assez délicat.

    Et bien figure toi que je trouve ca super bien géré en Erlang justement, et de manière classieuse en plus.

  • [^] # Re: Langage Google: non merci !

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles rapides du langage Go. Évalué à 2.

    franchement erlang c'est du sucre syntaxique super calorique à coté de ce que je vois du Go. Et pourtant j'suis pas du tout branché fonctionnel à la base.

  • # c'est moi ou bien...

    Posté par  (site web personnel) . En réponse à la dépêche Quelques nouvelles rapides du langage Go. Évalué à 10.

    petite aparté...

    c'est moi qui vieillit (27 ans !) ou bien ce langage est quand même assez compliqué ? car j'ai appris un tripotée de langages bizarres dans ma vie, je parle couramment le java/j2ee, le python, le flex/actionscript (pas taper, c'est pour le taf), j'ai joué avec lisp, scala, et plus récemment le erlang (rigolo ce truc pour les communications interprocessus), dont il parait que le go s'inspire, mais je suis désolé : le go ca me pique les yeux.

    Et c'est le même constat avec le framework android, de nos amis googliens également, et qui se veut pourtant (il parait) être super neuneu-friendly.

    Alors soit je vieillis et je rentre dans la période de ma vie où j'intègre désormais moins bien les choses (ce qui me fait peur !), soit c'est vraiment des trucs compliqués.

    A qui s'adresse ce langage ? quand je vais sur http://golang.org/doc/go_tutorial.html je pense que le deuxième exemple (la commande echo) larguerait pas mal de monde déjà. Et puis tous ces dé-référencements là, beurk.

    Désolé, c'était le commentaire inutile du jour, mais fallait que ca sorte...

  • # print "%s %s" % ("hello", "world")

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec des développeurs Python francophones. Évalué à 5.

    J'ai pas trop suivi l'actualité pythonesque récente, vous êtes-vous enfin décider à laisser l'opérateur % tranquille ou bien êtes-vous toujours déterminés à le faire disparaître au profit de la fonction format() ?

    Les deux devraient pouvoir cohabiter !

  • # merci

    Posté par  (site web personnel) . En réponse au message la commande PS ne rend plus la main et vautre ma session. Évalué à 1.

    Re,

    bon et bien je ne saurai jamais ce qu'il s'est passé, vu que nous avons finalement demander à rebooter le serveur, et que depuis tout va bien...

    Merci à vous pour les réponses, je serai peut-être plus doué la prochaine fois pour diagnostiquer le problème.

  • [^] # Re: et pour les débutants ???

    Posté par  (site web personnel) . En réponse au message [Offre d'emploi] Recherche développeur Java passionné. Évalué à 2.

    bah elle n'a qu'à aller sur paris et faire du J2EE ! moi ici j'ai l'impression que quand je prend une poubelle, que je la retourne et que je tape dedans, j'ai 44 annonces de développeur J2EE qui tombent.

    Et je peux recommencer l'expérience tous les jours, ça marche à tous les coups !

    En fait c'est simple, j'ai beau mettre ingénieur avant-vente en long en large et en travers sur mon CV en ligne, les 3/4 des recruteurs qui m'appellent, c'est uniquement pour mes compétences j2ee !

    Et je ne cherche même pas de taf !

    Bref, elle sait ce qui lui reste à faire :)
  • # hum

    Posté par  (site web personnel) . En réponse au journal LDLC dévoile le prix des logiciels inclus dans un ordinateur. Évalué à 7.

    c'est parceque le sujet tord/tort n'est pas assez discuté sur linuxfr que tu t'es senti obligé de faire ressortir ta faute en lien hypertexte ? :)

    https://linuxfr.org/~BlueTak/30000.html
  • [^] # Re: Excellente nouvelle... qui se lance ?

    Posté par  (site web personnel) . En réponse au journal pypy de plus en plus rapide ?. Évalué à 5.

    parler de "ressenti des moules" quand on parle de PyPy, c'est borderline je trouve
  • [^] # Re: nice ?

    Posté par  (site web personnel) . En réponse au message limiter une commande. Évalué à 3.

    non il te parle de son titre à lui, avec la commande nice dont le but et de changer la priorité d'un processus pour qu'il utilise + ou - de processeur
  • # cool

    Posté par  (site web personnel) . En réponse au journal Qtractor ("the furious desertrix" version). Évalué à 2.

    ca m'interesse car mon ministudio numérique est mort est j'aimerai bien passer sur PC.

    Dans le même genre j'avais repéré rosegarden. Ils boxent dans la même cour ?