Obsidian a écrit 5299 commentaires

  • # En voila une drôle de question !

    Posté par  . En réponse au journal Fonctionnement du linker dynamic sous linux. Évalué à 2.

    Ton post est intéressant parce qu'il est inhabituel, mais franchement, je n'ai jamais vu un programmeur douter de l'intérêt des liens dynamiques. Evidement, il y a des cas où le tout statique présente des avantages, mais globalement, quel que soit le nom donné d'ailleurs, les bibliothèques dynamiques s'imposent à peu près partout.

    Comme dit plus haut, l'idée générale est de ne pas à avoir à intégrer n fois le même code dans toutes les applications. Non seulement il y a des milliers de binaires en service sur un système, mais ils dépendent tous de routines de plus bas niveau. Si dix applications s'appuient sur dix bibliothèques qui elles-mêmes font appel à dix appels systèmes, tu te retrouves avec 1000 fois le même code. Les bibliothèques dynamiques ne sont pas seulement nécessaires du fait de la multiplication des binaires, mais surtout à cause du caractère exponentiel que présente une édition de liens purement statique, celui-ci étant dù aux dépendances en cascade.

    Question 1 : je vois en gros l'interet du link dynamique (vraiment, de loin et en gros), mais les defauts me semble tellement nombreux qu'en fait, non, je vois pas. Les defauts sont notamment qu'on a aucune verif au moment de la compilation/link de la presence/absence des symboles, et que donc faut faire des tests intensif pour etre sur que sur tous les "codepath" de l'apli qu'il n'y'ait pas de relocation error


    Non. Avec gcc en tout cas (et donc ld, par conséquent), il faut que tu spécifies à la compilation les bibliothèques impliquées avec l'option "-l", et éventuellement les répertoires dans lesquels elles se trouvent avec "-L". Toutefois, pour rendre la compilation facile, le compilateur peut faire ce travail pour toi envers les bibliothèques standard (stdio et compagnie). Tu peux inhiber ce comportement à l'aide des options « -nostdlib » et « -nodefaultlibs ».

    $ man gcc

    au chargement du .so, le systeme va voir qu'il connait deja un tata (cui de l'exe) et va donc utiliser ce symbole plutot que cui du so. Donc, notre so, au lieu d'appeler le tata qu'il contient va appeler celui de l'exe.


    Non plus, car une fois résolus, les symboles disparaissent (donc en interne) car ils deviennent inutiles, mais surtout ton problème n'a absolument rien à voir avec le caractère dynamique de la gestion des bibliothèques :Si tu compiles un programmes avec une suite de « *.o » purement statiques, tu devras faire face au même problème si deux bibliothèques indépendantes ont décidé d'utiliser le même nom de fonction.

    La plupart du temps, le problème ne se pose pas car les noms de symboles ne sont pas limités en longueur (ou en tout cas en tolère un très grand nombre), et les développeurs choisissent en général des noms suffisament explicites pour écarter toute ambigüité. Cependant, dans certains langages tel que le C++, on peut avoir des doubles-emplois. Pour éviter cela, soit les méthodes sont encapsulées dans une classe, dans le cas d'un langage orienté objet, soit les différentes entités sont déclarées au sein d'un namespace ou espace de nommage, que l'on peut décider d'utiliser implicitement au début d'un listing, soit explicitement en utilisant le nom du namespace comme préfixe au symbole que l'on souhaite invoquer.

    Mais là encore, c'est totalement indépendant des systèmes de liaison dynamique.
  • # /dev/dsp occupé ou problème de droit.

    Posté par  . En réponse au message Pb d'écoute de radio en ligne. Évalué à 2.

    Comme dit plus haut, cela se produit la plupart du temps parce que le logiciel ne peut ouvrir le /dev correspondant, et ce parce qu'un programme l'a déjà fait avant lui. Identifie-le, ferme-le et tout rentrera dans l'ordre.

    Il arrive aussi que les droits sur le fichier changent spontanément. Mandriva est assez farceuse sur ce point. Elle fait un chown sur le fichier spécial qui correspond aux ressources que tu utilises, et oublie parfois de les remettre à la bonne place (spécialement si tu fais un halt impératif avant de lacher ta machine). Là encore, il suffit de remettre les bons droits mais je conçois que c'est pénible.
  • # Dive into

    Posté par  . En réponse au message C++ sous linux débutants. Évalué à 3.

    Je vais prendre le contrepied de tout le monde ici mais je dirais que le meilleur moyen d'apprendre, si tu as déjà fait un peu d'objet, et que tu veux en même temps te familiariser avec Unix, est d'abandonner d'emblée tout ce qui ressemble à Windows. KDevelop est un très bon produit, mais cela sert souvent de prothèse aux jeunes programmeurs qui ne savent pas développer sans assitance. D'où le dicton : "Un classique, c'est un livre que tout le monde veut avoir lu et que personne ne veut lire".

    Moi je te conseille de tout faire en ligne de commande, non seulement parce qu'au final, tu gagnes en souplesse, en liberté et en puissance, mais aussi parce que tu seras capable de faire du développement tout-terrain, et qu'il ne te faudra pas systématiquement un bi-P4 Xeon 3,6 GHz pour écrire un "Hello world" à l'écran, et surtout parce qu'ainsi tu feras pleinement la différence entre ce qui est nécessaire et ce qui est superflu.

    Commence déjà par faire des exercices bateau sur les objets, déclarer des classes, des methodes, etc, ensuite tu pourras choisir la bibliothèque graphique qui te plaît.

    Qt est à la mode, mais si tu veux développer "à la VB" directement à partir des outils graphiques, je te recommande "glade". Ce logiciel a ceci d'intéressant que s'il est capable de générer le code correspondant à l'interface que tu as dessinée, il reste indépendant de l'environnement de développement que tu utilises.

    Faire du Drag&Drop pour créer l'interface souhaitée et "remplir les trous" est certes très intuitif, et cela permet de comprendre rapidement comment fonctionnent les objets d'une manière grossière, mais c'est quand même prendre le problème à l'envers, et ce n'est pas une méthodologie à suivre pour apprendre.
  • [^] # Re: merci

    Posté par  . En réponse au message C++ sous linux débutants. Évalué à 2.

    Ou rpm -i selon la distribution
  • # Et bientôt ...

    Posté par  . En réponse au journal Monad, le shell selon Microsoft (MSH). Évalué à 10.

    D"ici deux ans, on aura des gens qui nous demanderont si on peut trouver l'équivalement de MSH sous Linux ...
  • [^] # Re: Les dépendances

    Posté par  . En réponse au message Installer sous linux. Évalué à 2.

    J'ajouterais que c'est un débutant qui a visiblement lu un minimum les man pages et qui sait ce que sont les ./configure, make, make install et ldconfig. C'est quand même pas courant.
  • [^] # Re: CA MARCHE !

    Posté par  . En réponse au message [MySQL] un GROUP BY un peu spécial. Évalué à 2.

    Attention, comme dit plus haut, l'auto-increment pallie une faiblesse de conception, car la requête s'appuie sur une clé artificielle générée juste pour l'occasion, et pas sur la valeur des données elles-mêmes.

    En plus, cela place ta requête en échec si une ligne est supprimée, car le pas de une unité entre chaque ligne n'est plus respecté.

    De plus, ce n'est valable que si l'on insère les entrées chronologiquement. Si par exemple l'administrateur insère dans la table des informations provenant de deux sources distinctes et successive (qui a dit des fichiers Excel ?), tu es bon pour te taper une renumérotation manuelle de toutes tes entrées. Au pire, tu extrais le contenu de ta table avec un « SELECT ... ORDER BY heure; » vers un fichier, et tu fais un script qui te numérote tes lignes, mais le problème reste entier : Tu es obligé d'exporter le système de garantie de la cohérence de ta base en dehors du SGBD, tu ne peux plus assurer celle-ci en temps réel et, pire que tout, tu ne peux pas empêcher quelqu'un d'insérer des données corrompues entre deux contrôles.

    Pas terrible.
  • [^] # Re: CA MARCHE !

    Posté par  . En réponse au message [MySQL] un GROUP BY un peu spécial. Évalué à 2.

    En effet, visiblement MySQL s'emmêle les pinceaux lorsque l'on fait une recherche sur une colonne non-préalablement triée !

    Solution propre pour parer à cette anomalie : Créer un index sur ta colonne « heure », qui sert ici de clé.

    create index idx on pointage2 (heure);

    En revanche, l'ajout du nom de l'utilisateur par ,b.individu ne peut pas fonctionner. C'est également un « bug » (pour autant que je sache, en tous cas), qui permet l'affichage de ce nom en même temps que la valeur issue d'une fonction d'agrégation.

    Il faudrait transformer cette requête en sous-requête, et la passer à un ...

    SELECT * FROM pointage WHERE heure in ([...]) ORDER BY heure ASC;

    ... pour que ce soit parfait, mais bizarrement, MySQL n'aime pas non plus mes sous-requêtes :-(
  • [^] # CA MARCHE !

    Posté par  . En réponse au message [MySQL] un GROUP BY un peu spécial. Évalué à 2.

    Ok, je viens de tatonner et ai trouvé ce qui suit.

    Voici une commande qui marche en se passant des numéros d'incrémentation, qui ont ceci d'ennuyeux qu'ils brisent la requête si jamais on supprime une ligne :

    select distinct min(b.heure),b.individu from pointage a join pointage b on b.heure > a.heure and a.individu != b.individu group by a.individu,a.heure order by 1

    En considérant bien sûr que la table s'appelle « pointage » !

    Seul inconvénient : Le premier gugusse à pointer n'apparaît jamais dans le résultat de cette requête ...
  • [^] # Re: Plusieurs colonnes dans le GROUP BY

    Posté par  . En réponse au message [MySQL] un GROUP BY un peu spécial. Évalué à 2.

    Ok, vous pouvez moinsser le commentaire ci-dessus. Je m'aperçois que je viens de dire une ânerie. Désolé.
  • # Plusieurs colonnes dans le GROUP BY

    Posté par  . En réponse au message [MySQL] un GROUP BY un peu spécial. Évalué à 1.

    On peut pas grouper plusieurs colonnes dans MySQL (marche bien sous Sybase en tout cas) ?

    SELECT min(Date),individu FROM table GROUP BY Date,Individu

    Ca ne marche pas ?
  • [^] # Re: pourtant ...

    Posté par  . En réponse au message pourquoi y a t il parfois des liens [+] ?. Évalué à 4.

    Je dirais même que :

    - Si tu actives la toolbar
    - Que ton navigateur gère le Javascript
    - Que ton navigateur gère correctement les CSS

    alors ces commentaires seront intégrés dans une division marquée comme invisible et donc masqués par une directive de style. Par conséquent, lorsque tu cliqueras sur le [+], c'est le navigateur qui provoquera son affichage et tu n'auras plus à recharger la page à chaque paragraphe !

    Parallèlement à cela, tu peux utiliser la navigation par onglet, ou par fenêtre pour les navigateurs archaïques. Tu cliques sur le bouton du milieu (la plupart du temps), ou bien tu fais shift+clic ou encore ctrl+clic pour provoquer l'affichage du commentaire dans une fenêtre ou un onglet distinct, tout en préservant la page que tu parcours.
  • [^] # Re: le premier mot qui me viens c'est : gnih ?

    Posté par  . En réponse au message commande. Évalué à 2.

    Tu tapes simplement :

    $ gimp tonfichier

    Par contre GIMP, lui, va évidement tenter de s'ouvrir dans un serveur X. Il faut donc soit lui indiquer explicitement lequel à l'aide d'une option comme --display , qui existe pour à peu près toutes les applications graphiques, soit avoir sa variable d'environnement $DISPLAY initialisée comme il faut. Si tu travailles déjà sous une session graphiques (donc depuis un serveur X), cette variable sera déjà initialisée.

    Donc en gros, tu ouvres un xterm, tu lances la commande ci-dessus, et cela marche tout seul.
  • [^] # Re: Mais ou va l'monde ma brave Dame?

    Posté par  . En réponse au journal Mais ou va le monde?. Évalué à -1.

    Pas le pire endroit pour trouver du Nutella, en plus ...
  • [^] # Re: et jeannie longot..

    Posté par  . En réponse au journal Vous êtes au courant ?. Évalué à 3.

  • # P5

    Posté par  . En réponse au journal Vous êtes au courant ?. Évalué à 5.

    Pentium V, c'est un pléonasme, non ?
  • [^] # Re: Et la radio ?

    Posté par  . En réponse au journal Emissions télé [HS]. Évalué à 2.

    Moi, j'écoute « Osmose » sur France Inter, chaque semaine. C'est une émission de deux heures dans laquelle chaque heure traite d'un sujet distinct (c'est donc comme si on avait deux épisodes à chaque fois) :

    http://www.radiofrance.fr/chaines/france-inter01/emissions/osmose/(...)

    C'est en général axé scientifique, mais sur des domaines très nombreux (pas seulement les technologies), et c'esttrès accessible. Cette semaine on a eu :

    Les secrets de familles et L'histoire du mètre

    Mais il y a eu aussi :

    L'histoire de la médecine et Le Mont Saint Michel sauvé du sable
    Histoire de l'enregistrement sonore et La population du monde

    etc.

    Les archives sont ici :

    http://www.radiofrance.fr/chaines/france-inter01/emissions/osmose/i(...)

    Seul petit détail, cela passe dans la nuit de samedi à dimanche entre ... 1h00 et 3h00 du matin :-( Mais bon la culture est souvent à ce prix, et ce n'est que dans de telles plages horaires que l'on peut caser une émission culturelle de deux heures.


    La bonne nouvelle, l'émission est écoutable en ligne toute la semaine !
  • [^] # Re: Bug ou pas bug

    Posté par  . En réponse au journal Méchant Debian Sarge, méchant.... Évalué à 8.

    * bug sur architecture ultra minoritaire

    Alors ça, ce n'est vraiment pas un argument valable. Le jour où ce sera sur ton architecture que ce bug se produira, tu seras fort aise que quelqu'un daigne s'en soucier quand même. Même pour le principe, cela reste profitable. Coder proprement, c'est aussi une question d'habitude (à prendre).

    Et puis il est heureux qu'il y ait encore une distribution qui tâche encore de tendre vers le zéro-défaut. C'est tout bonnement inconcevable dans le logiciel propriétaire (même si certains éditeurs abusent franchement), et cela se perd un peu trop dans le logiciel libre (par exemple Mandrake qui était vraiment très stable dans sa version 7.0 et qui est devenue lourdingue à gérer à partir de la 8.0).

    Surtout qu'en l'occurence, 25 bugs, ce n'est pas la mer à boire. Tout le monde peut s'y mettre, juste pour l'occasion, et on arrivera à maintenir un « zero-bug state » juste le temps qu'il faut pour sortir la distrib' :-)
  • [^] # Re: Allez ouste !

    Posté par  . En réponse au message sagem fast 800. Évalué à 2.

    Au fait, ceci devrait t'aider :

    http://forum.eagle-usb.org/(...)
  • # Allez ouste !

    Posté par  . En réponse au message sagem fast 800. Évalué à 1.

    je vous souhaite une bonne soire a vous tous.

    A toi également, mais ce serait beaucoup mieux pour tout le monde si tu banissais définitivement « LOL » de ton vocabulaire (surtout qu'en l'occurence, cela n'a rien de drôle).

    Merci.
  • # Et sinon, à part Paname ?

    Posté par  . En réponse au journal Fête de la zique 2005. Évalué à 1.

    Je me souviens que les premières fêtes de la Musique étaient vraiment excellentes, de la musique à chaque fois différente à chaque coin de rue, tout le monde dehors, etc.

    Mais aujourd'hui la fête de la Musique, en Île-de-France en tout cas, c'est tout le monde à Paris et le reste de la région qui se transforme en régolithe lunaire.

    Les gens n'essaient même plus de jouer de musique non plus. En dehors de quelques scènes montées à l'avance pour produire deux ou trois groupes, plus rien.

    C'était pourtant une bonne idée, à la base ...
  • [^] # Re: mv

    Posté par  . En réponse au message ubuntu, open office et ms office. Évalué à 3.

    « mv » est une commande ! Elle signifie « move ».

    En gros, le NTFS est forcément en lecture seule sous Linux. Et cela perturbe peut-être OpenOffice.org. Déplace ton fichier vers ta partition Linux et retente l'ouverture.
  • [^] # Re: Espaces, accents...

    Posté par  . En réponse au message ubuntu, open office et ms office. Évalué à 3.

    Samba, sûrement pas si ta partition est sur le même disque que ton Linux. Il y a des options à passer à mount via fstab pour indiquer au module vfat la manière dont il doit (éventuellement) convertir les caractères.

    Essaie de renommer ton *.doc en le baptisant avec un nom qui ne contient aucun caractère bizzarre (ni accent, ni espace, ni majuscule, ni caractère de ponctuation) et vois si tu peux l'ouvrir.

    Cela permettra peu à peu d'isoler le problème.
  • [^] # Re: Pour quoi faire ?

    Posté par  . En réponse au message Antivirus. Évalué à 5.

    Eh non ! C'est un des bons cotés d'avoir un système ouvert et maintenus par des gens consciencieux.

    Pour faire simple, il paraît que les virus Linux existent ( http://www.europe.f-secure.com/v-descs/bliss.shtml(...) ) mais pratiquement personne n'en n'a jamais vu un ! :-)

    Cela est dù à plusieurs faits :

    - Il est beaucoup moins facile de se faire infecter par le réseau que sous Windows.

    - On ne transmet pratiquement jamais directement un binaire d'un utilisateur à un autre. En général, soit on utilise un package *.deb/*.rpm géré par le mainteneur de ta distribution (et accessible directement depuis son site), soit on télécharge les sources et on refabrique son propre binaire chez soi. Et là, cela devient très difficile de cacher un virus au milieu d'un code source.

    Evidement, la plupart des utilisateurs ne se plongent pas dans le programme source avant de recompiler, mais au moins c'est vite identifié et réparé, et surtout, du fait de la libre accessibilité des logiciels linux, ceux-ci sont toujours disponibles directement depuis le site de l'éditeur où l'un de ses miroirs, et n'a jamais à passer de proche en proche ou à être piraté pour arriver chez l'utilisateur.

    Enfin, en général les auteurs de logiciels rendent public une somme MD5 ou assimilée correspondant au checksum de leur oeuvre ou du CD qui les contient. Donc, si tu as un doute, tu lances md5sum sur ton support, tu verifies que tu trouves la même valeur et c'est bon.

    - Sous Unix, il n'y a pas de processus "SYSTEME", ou autre bêtise inkillable. Lorsque tu fais ps aux, tu es sûr de voir la totalité des processus qui tournent à un moment donné sur un système. Ce qui fait qu'un spyware qui tournerait en tâche de fond n'aurait aucun moyen de se cacher, et encore moins d'éviter d'être détruit si l'administrateur le souhaite (et quand on réfléchit deux minutes, c'est un peu normal). Donc seuls les vrais virus (les exécutables légitimes mais contaminés) peuvent encore passer inaperçus.

    Ce qui est agaçant, c'est que depuis Windows, pratiquement tous les utilisateurs ont fini par intégrer le fait qu'un ordinateur est une chose qui se contamine, qu'il faut se protéger comme on se protège du SIDA, etc. alors que tout cela dépend d'abord d'une bonne formation de l'utilisateur au départ, et surtout d'un système correctement conçu.

    Pour faire simple, c'est en majorité la politique de transparence du système qui empêche justement les virus de se cacher, et par conséquent de se propager (la qualité du système y est aussi pour beaucoup ! :-) ).

    Bienvenue du coté éclairé. Il te faudra probablement un peu de temps pour t'habituer à la "liberté ! :-)
  • [^] # Re: oui

    Posté par  . En réponse au message info sur systeme. Évalué à 3.

    N'empêche que c'est assez révélateur du niveau d'information du public concernant les systèmes d'exploitation. Dans la quasi-totalité des cas, les gens voient Windows tout seul, soit Linux en multiboot avec Windows.

    Donc oui, cher Fred, tu peux te réjouir : Linux se suffit à lui-même (et il suffit aussi à son utilisateur).