IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Quels sont vos astuces et secrets de programmation favoris


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Par défaut Quels sont vos astuces et secrets de programmation favoris
    Quels sont vos astuces et secrets de programmation favoris
    Pour gagner du temps ou impressionner les collègues ?


    Vous faites du développement depuis des années dans votre langage favori et vous croyez qu'il a fini de vous surprendre ?

    Pas si sûr, car tous les langages ont des secrets, des fonctionnalités cachées que vous rencontrez un beau jour sur le code d'un collègue, sur un projet open-source ou même par une malheureuse (ou heureuse?) faute de frappe.

    En PHP par exemple, savez-vous qu'il est possible d'appeler « Echo » avec plusieurs paramètres et faire, en quelque sorte de la concaténation avec une virgule ?

    Si cette astuce est anecdotique, voir inutile, d'autres peuvent surprendre et s'avérer très utiles, comme ce bout de code, certes un peu extrême pour des raisons de démonstration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    
      $Bar = "a";
      $Foo = "Bar";
      $World = "Foo";
      $Hello = "World";
      $a = "Hello";
    
      $a; // retourne Hello
      $$a; // retourne World
      $$$a; // retourne Foo
      $$$$a; // retourne Bar
      $$$$$a; // retourne a
    
      $$$$$$a; // retourne Hello
      $$$$$$$a; // retourne World
    
    ?>
    Il s'agit en fait de l'utilisation des variables dynamiques, ou les variables des variables, une astuce qui marche aussi (et heureusement) pour les fonctions et méthodes de classes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $foo = 'bar';
    $bar = 'foobar';
    
    function bar() {
        echo 'Hello world!';
    }
    
    function foobar() {
        echo 'Quelle belle journée';
    }
    $foo();    // Affiche Hello world!
    $$foo();    // Affiche Quelle belle journée!
    Toujours en PHP, connaissez-vous la classe standard ? Qui permet de se passer, dans certaines situations des tableaux associatives ou de déclarer inutilement des data-classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $person = array();
    $person['nom'] = 'John Doe';
    $person['age'] = 42;
    
    // devient 
    
    $person = new stdClass();
    $person->nom = 'bob';
    $person->age = 5;
    Il est même possible de « caster » un tableau associatif en Objet et l'utiliser comme tel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $obj = (object)array('nom' => 'bob', 'age' => 5);
    
    echo $obj->nom;
    Vous avez de nombreuses classes et vous souhaitez éviter de les parser et les charger toutes en mémoire pour n'en utiliser que quelques-unes ?

    PHP a la solution, la routine __autoload() permet d'exécuter du code à chaque instanciation, ce qui permet entre autre, d'inclure le fichier de la classe en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    error_reporting(E_ALL);
    set_include_path(get_include_path() . PATH_SEPARATOR . '../libs/');
    
    function __autoload($classname) {
      // chaque classe est stockée dans un fichier unique dans le dossier libs "libs/{$classname}.class.php"
      
      echo $classname;
      include_once $classname . '.class.php';
    }
    
    $a = new model();
    ?>
    Bref, ces quelques exemples exclusivement en PHP, illustre une réalité de tous les langages : ils ont des secrets !

    Vous en connaissez certainement dans votre langage de prédilection. Alors n'hésitez pas ; faites en nous part.

    Car rappelez-vous qu'un secret est, comme dit l'expression, « une chose que l'on ne répète qu'à une seule personne ».

    Et vous ?

    Quelles sont les astuces et secrets de développement favoris ? Dans quel contexte vous en servez-vous ? Comment avez-vous découvert ce secret ?


    En collaboration avec Gordon Fowler

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Certains de ces trucs, j'appelle ça de la programmation de cochon qui sert à se mettre des autogoals.

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Citation Envoyé par Idelways Voir le message
    Bref, ces quelques exemples exclusivement en PHP, illustre une réalité de tous les langages : ils ont des secrets !

    Vous en connaissez certainement dans votre langage de prédilection. Alors n'hésitez pas ; faites en nous part.

    Car rappelez-vous qu'un secret est, comme dit l'expression, « une chose que l'on ne répète qu'à une seule personne ».

    euh... en quoi c'est un secret ?
    vous voulez juste savoir si l'on peut faire des trucs un peu sioux, qu'on ne présente pas dans un cours "débutant" sur ce langage histoire de ne pas les faire fuir trop tôt ?
    Tout ce qui est présenté au-dessus est parfaitement documenté, voir intégré dans certains frameworks... en boîte noire histoire de ne pas choquer, et surtout de ne pas inciter à le faire a priori


    Dans les trucs plus sioux, on peut voir les méta-programmations C++ qui utilisent des caractéristiques des compilateurs ne respectant pas tout à fait la norme...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Tout ça, c'est pas mal pour flatter son ego, mais je pense qu'un bon développeur doit savoir se faire lire par ses collègues sans trop de difficulté.

    Pour ce qui est du gain de temps... Rien ne vaut un code lisible et documenté...
    Car si c'est pour gagner 5 secondes par ligne de code et perdre 10 minutes la semaine d'après pour comprendre une classe que tu as écris ce n’est pas très utile...

  5. #5
    Membre éprouvé
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Par défaut
    Bonjour _skip, dogua et gorgonite

    Merci pour vos réactions, mais une petite mise au point s'impose

    L'objectif de cet article n'est pas de recenser les bonnes ou mauvaises pratiques de développement ni d'inciter à les utiliser, pour ça on a lancé d'autre débats, comme celui d'hier sur l'optimisation du code VS sa lisibilité.

    Le but ce celui là est ludique, de faire découvrir les fonctionnalités cachées des langages, par forcément évidente, ne serait-ce que pour un débutant.

    Après, les appeler des secrets c'est peut être effectivement un peu exagéré, mais c'est l'esprit quoi

    Cordialement à vous trois,

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 21
    Par défaut
    en truc utile je dirais la constant __DIR__, (ou dirname(__FILE__) pour php < 5.3) pour les includes...
    Je trouve cela carrément plus propre qu'un set_include_path..

  7. #7
    Membre habitué
    Homme Profil pro
    Imaginieur
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Imaginieur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Par défaut Deep Thinking
    LOL
    les secrets/astuces des langages de programmation ne devraient justement pas être révélés aux communs des mortels sinon l' expérience algorithmique acquise sera au final aux normes non standard et donc inexploitable sur d'autres terrains , vous me suivez ?

  8. #8
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut
    En java, qu'affiche ce programme ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int j = 5;
    int i = 0;
    i = j << 32;
    System.out.println(i);
    Integer a = new Integer(5);
    Integer b = new Integer(5);
    if (a==b) System.out.println("1"); 
    a++;
    b++;
    if (a==b) System.out.println("2"); 
    a = 314;
    b = 314;
    if (a==b) System.out.println("3");
    Réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int j = 5;
    int i = 0;
    i = j << 32;
    System.out.println(i); // i = 5
    Integer a = new Integer(5);
    Integer b = new Integer(5);
    if (a==b) System.out.println("1"); // a != b
    a++;
    b++;
    if (a==b) System.out.println("2"); // a == b
    a = 314;
    b = 314;
    if (a==b) System.out.println("3"); // a != b
    Utilisez la méthode "equals()" .

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ici, print pour PHP, mais ca pourrait être une fonction quelconque pour étendre à d'autre langages. En PHP l'idée c'est de faire ça dans la vue ou on s’en tape un peu du code PHP...

    Quand on ne veut pas faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(true)
    {
     echo 'lol';
    }
    qui fait quatre lignes de code, taper dans du
    ce qui n'a aucune expression sémantique

    Sinon en JavaScript, (mais ca passe aussi pour les autres langages a typage dynamique) j'aime bien le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var b=false;
    var a=b||'lol';//a vaut 'lol'
    Dernière modification par Mejdi20 ; 01/11/2010 à 06h07.

  10. #10
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 527
    Par défaut
    array_map en PHP est pas forcément connu mais pourtant parfois bien utile (ça évite trois/quatre lignes de codes mais tout de même... ).

    Permet d'appliquer une fonction à chaque valeur d'un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_map("fonction_bidule",$tableau);
    http://php.net/manual/fr/function.array-map.php

  11. #11
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Citation Envoyé par xelab Voir le message
    array_map en PHP est pas forcément connu mais pourtant parfois bien utile (ça évite trois/quatre lignes de codes mais tout de même... ).

    Permet d'appliquer une fonction à chaque valeur d'un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_map("fonction_bidule",$tableau);
    http://php.net/manual/fr/function.array-map.php
    Je rappelle pour info que depuis PHP 5.3, array map, comme tout autre fonction capable d'utiliser les callback peut également utiliser les closures:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a = array(1,2,3,4,5);
    var_dump(array_map(function ($v) { return $v * $v; }, $a));
    // produit :
    // array(5) { [0]=> int(1) [1]=> int(4) [2]=> int(9) [3]=> int(16) [4]=> int(25) }
    Attention: array_map ne doit pas être confondu avec array_walk (lisez la doc)
    Egalement, j'ai fais un benchmark pour être sûr et il s'avère que l'utilisation d'array_map avec une closure reste significativement plus lente que le foreach classique (j'ai plus mes chiffres en tête...). Prudence donc: si vous voulez généraliser votre code avec ça, c'est tout bon, sinon mettez un foreach.

  12. #12
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    syso et CTRL+ D qui donne System.Out.Println() sous Eclipse, c'est pas un secret du langage mais quand j'ai montré ça à un collègue il a essayé de compter le nombre d'heure qu'il avait perdu à le taper en entier.

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Un truc que j'utilise presque tout le temps pour éviter d'avoir des déclarations à rallonge en Java :

    Sans le truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<UnNomDeClasseTresLong<Imbriquee<EtPasForcementLisible>>> liste = new ArrayList<UnNomDeClasseTresLong<Imbriquee<EtPasForcementLisible>>>();

    Avec le truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static <T> ArrayList<T> newArrayList() {
      return new ArrayList<T>();
    }
    
    // Plus loin
    List<UnNomDeClasseTresLong<Imbriquee<EtPasForcementLisible>>> liste = newArrayList();
    Ca fonctionne pour tous les génériques et ça aide pas mal à l'écriture et à la lecture surtout quand on doit instancier en permanence ces génériques.

    Une autre petite merveille est la classe Preconditions de Guava. Facile à réécrire et à étendre, cette classe fait des merveilles dans la gestion des préconditions en lançant l'exception adéquate. À utiliser impérativement avec les imports static pour une meilleure lecture du code.

    http://guava-libraries.googlecode.co...onditions.html

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut
    Pour les "styles" un peu particulier...
    il n'est pas interdit de les commenter...

  15. #15
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Les classes internes aux méthodes en Java (utiles essentiellement dans les test cases) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class MyClass {
      public static void main (String... args) {
        class MyActionListener implements ActionListener {
          private static int COUNT = 0;
          private int count = COUNT++;
          public void actionPerformed (ActionEvent e) {
            System.out.println(count);
          }
        }
        JButton button = new JButton();
        button.addActionListener(new MyActionListener());
        button.addActionListener(new MyActionListener());
      }
    }
    En fait ce sont des classes anonymes... nommées. Leur fichier .class sera du genre MyClass$1MyActionListener.class

  16. #16
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    En C#, le @ ne permet pas seulement d'échapper les "\" qu'on trouve par exemple dans les noms de fichiers mais également de définir des chaînes multilignes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string select= @"SELECT name,  surname, age
                       FROM Persons
                       WHERE ID = ?";
    Très utile pour améliorer la lisibilité d'une éventuelle requête en pur ADO.net.

  17. #17
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Des anti-patterns donc.

    Le genre de trucs qui fait exploser la dette technique.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    Les exemples PHP sont particulièrement pitoyables.

    Sinon, je citerais :

    * en python, l'utilisation de sum() couplé au fait que True vaut 1 pour compter des choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sum( x > 42 for x in liste )
    * sous postgres, la clause VALUES(), méconnue, mais véritable couteau suisse, qui permet de créer une pseudo-table avec des valeurs à la carte, utilisable comme table dans un JOIN :
    - tri à la carte
    - UPDATE de 50 lignes d'un coup avec des valeurs différentes
    - remplacement plus puissant de IN( liste )
    - etc

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    géniale le coup du "Initalisation d'un objet en détournant les bloc d'initialisation:"
    Ça évite de se trimbaler x variables qui peuvent rende le code illisible... Mais bien sur à utiliser avec parcimonie !!!
    Je me vois déjà faire mes vue swing avec cette méthode, ca ressemblerai presque à une syntaxe JSON , javafx, voire jquery

    Sinon pour le nommage des boucles ca fait longtemps que je l'utilise, et c'est super pratique.

    Quand au exemple php, a pars la fonction autoload, je vois pas trop a quoi il peuvent servir, même si c'est toujours cool de les connaitre

    petite contribution minimaliste en java.
    Faire presque de l'héritage multiple via les classes interne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    class Outher1{
        public Outher1() {
            System.out.println("Outher1");
        }
    
        public class Inner1{
            public Inner1() {
                System.out.println("Inner1");
            }
        }
    }
    
    class Outher2 extends Outher1{
    
        public Outher2() {
            System.out.println("Outher2");
        }
    
        public class Inner2 extends Outher1.Inner1{
            public Inner2() {
                System.out.println("Inner2");
            }
        }
    }
    
    ....
    
    new Outher2().new Inner2();
    Même si il faudra toujours que la classe interne soit castable dans sa classe externe ....

    PS: pour en langage orienté objet, ne pas permettre l'héritage multiple ou du moins les traits ou mixins, c'est abusé

  20. #20
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Par défaut
    l'autre jour je me suis trouvé face à quelque chose qui m'a choqué :

    à votre avis, le code ci-dessous affiche quoi ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $a = 'php'; //ou n'importe quel string
    $b = 0;
     
    if($a == $b)
        echo 'true';
    else
        echo 'false';

    moi j'aurais dit 'false', et non les potes ! il retourne true, il faut donc dire que 'php' = 0, javascript par exemple retourne bien false.

    ma déduction est que, comme les deux variables sont de type différent php essaie d'abord de les "convertir" dans un même type afin de les comparer, à l'occurrence je pense que php convertit tout en int car

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $a = 'php';
    echo (int)$a; //0
    $a = '1php';
    echo (int)$a; //1

    donc dans le premier morceau de code en réalité la condition est vraie si on compare n'importe quel string à 0 sauf si le string commence par un chiffre autre que 0

    par contre si $b ='0', on a bien $b == 'php' => false

    c'est un truc tout bête qui m'a laissé perplexe, j'espère ne pas avoir des conditions comme celles-là un peu caché dans mes projets si non ça va être rigolo

    tout ça pour dire que le faible typage de php est pratique mais trompeur des fois

Discussions similaires

  1. Réponses: 27
    Dernier message: 04/07/2011, 15h57
  2. Quels sont vos astuces et secrets de programmation favoris
    Par Idelways dans le forum Actualités
    Réponses: 61
    Dernier message: 12/12/2010, 07h54
  3. Comment gérez vous la sécurité informatique, quels sont vos critères ?
    Par bidou dans le forum Débats sur le développement - Le Best Of
    Réponses: 35
    Dernier message: 31/08/2009, 00h11
  4. Réponses: 13
    Dernier message: 24/01/2007, 18h06
  5. Réponses: 7
    Dernier message: 21/02/2005, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo