Comment je m'y prend ? Hum ... Y'a deux cas : signaler un bug, corriger un bug.
Signaler un bug consiste à donner le maximum d'informations pertinentes sur un bug et à envoyer le tout aux développeurs. Pour un plantage, il faut par exemple lancer l'application avec gdb, après copier/coller le résultat de la commande backtrace après plantage. Pour un bug qui ne plante pas, il faut expliquer pas à pas la démarche pour arriver au bug, et le comportement qu'on aurait désiré. Pour envoyer le bug, il faut voir le site web du programme. Gnome a son application dédiée. Chaque cas est différent donc.
Souvent, le bug est connu, est en cours de correction, ou alors déjà corrigé dans le CVS. C'est pour ça qu'il faut toujours commencer par signaler le bug.
Si c'est un nouveau bug, et qu'aucun développeur du projet ne s'y attarde, autant le corriger soit-même (on est jamais aussi bien servi que par soi-même :-D). Il faut commencer par télécharger la toute dernière version (surtout pas la dernière version stable qui comporte d'ancien bug déjà corrigé, ou une API désuette) : tarball, cvs, subversion, etc. (cf. le site web du projet) Ensuite, il faut compiler le projet, et vérifier que le bug existe toujours. Ben oui, rien ne sert de défoncer une porte ouverte avec un bazooka hein.
Si le bug existe toujours, il faut le traquer. Il vaut mieux connaître les commandes break et where de gdb, et avoir un peu d'expérience avec cet outil. Perso, je commence par laisser planter le programme et voir où je suis avec where (équivalent à backtrace au passage). Ensuite, je remonte à la source en posant un point d'arrêt sur la fonction ayant plantée et je relance le programme. Cette recherche est souvent longue et épuisante.
Une fois le bug cerné, 90% du boulot est fait :-D Il ne reste plus qu'à comprendre pourquoi ça plante, et corriger le bug. On recompile le programme. Si ça marche pas .... on recommence. Si ça passe, il FAUT envoyer son patch aux développeurs, sinon tout ce travail n'aura servi à rien. Au faut alors faire un diff -u ancien_fichier nouveau_fichier >~/mon.patch et l'envoyer par email. C'est pour ça qu'il vaut mieux faire un cp fichier fichier.old avant d'éditer n'importe quel fichier !
Au début, je ne voulais que signaler le bug. Mais comme ils m'ont refoulés, ça m'a donné envie d'aller plus loin. J'ai donc isolé très précisément le problème, et j'ai cherché une solution.
Le but n'était pas de faire un patch, car je ne sais pas comment fonctionne Gnome dans son ensemble, mais plutôt de montrer la voie à suivre.
Bon, si j'ai le temps, je vais me coltiner un patch propre (genre qui ne casse pas l'API par exemple :-)).
Oui, c'est ce que je disais : c'était en partie de ma faute. Les leçons que j'en ai retenu : il faut faire le patch le plus petit possible, et aussi dans la mesure du possible, ne pas toucher aux définitions des fonctions (encore plus quand il s'agit d'une API). Un gros patch est difficile à appliquer, et si en plus ça casse l'API, y'a peu de chance pour que le patch soit appliqué.
Il n'y a pas longtemps, je me suis un peu attardé à essayer de corriger des bugs de divers projets :
(1) Nautilus, ou plus exactement, libgnomeui : le système de génération de miniature (pour les images) utilisait +500 Mo pour générer une miniature d'une image vectorielle de 28 Ko. Mon patch est assez simple : je charge l'image en 128x128 plutôt qu'à sa taille originale (10000x10000 pour l'image vectorielle). Apparement, cela fonctionne aussi pour de grosses images PNG (7000x7000). http://bugzilla.gnome.org/show_bug.cgi?id=307885(...)
Le soucis est que mon patch demande de casser l'API de libgnomeui. J'ai d'abord posté un bugreport pour gnome-session, puis librsvg, et enfin Nautilus. Mais en réalité c'était libgnomeui (et Nautilus?) qui est en cause. Aussi bien librsvg que Nautilus m'ont refoulé "arf, ton image est boguée, notre programme fonctionne normalement" ... Ils ont tous 2 Go de RAM les développeurs Gnome ???
(2) J'avais tenté un patch pour la librairie de jeu ClanLib il y a un an. J'ai largement amélioré le support de SDL dans ClanLib. Mon patch n'a jamais été intégré, et je me suis fait traité de gros connard ... Ca fait plaisir. J'ai passé environ 50h sur ce patch, et sûrement bien plus.
(3) Epsilon (librairie de chargement d'image pour Enlightenment) : j'ai corrigé un erreur de division par zéro que j'ai mis 3h à traquer. Mais mon patch est toujours en attente.
J'ai du oublié des patchs. Parfois, je m'y suis mal pris, mais n'empêche, c'est pas trop motivant ...
Le serveur est souvent surchargé. Bon, c'est sûr, c'est mieux des paquets "officiels".
Merci à tous ces packageurs "non-officiels", comme par exemple Marillat qui nous offre du Mplayer (compilé pour K6, K7, PowerPC, amd64, ...). Perso, j'ai pas compiler.
Cette version de l'encyclopédie Wikipédia a été concue de manière à favoriser une navigation fluide et rapide.
ou encore
License : GFDL - Source: Wikipedia - Article - History
(avec les liens qui amènent là où il faut)
Je pense que Wikipédia pourrait être au moins aussi fluide si on interdisait toutes les modifitions. Mais dans les statistiques, on voit souvent des chiffres du genre "1 modification pour 2 consultations" (en moyenne, à moins que je me trompe). Forcément, ça casse le système de cache !
Tiens, les stat' du jour :
2822795 pages ont été consultées et 2555456 pages modifiées depuis la mise à jour du logiciel (31 octobre 2002). Cela représente une moyenne de 10,25 modifications par page et de 1,10 consultations pour une modification.
>> Un binaire ne contient plus aucun nom lorsqu'il est exécuté.
> Je sais pas trop:
> Quand tu change de version de librairies les adresses changent
> La seule chose à laquelle tu peux te référencer c'est alors le nom
Oui, je suis allé un peu vite. J'étais dans le rush cette après-midi, mais mon rapport sur les brevets logiciels est imprimé. Ouf.
Je voulais dire, un binaire ("strippé") après avoir été chargé par /lib/ld-linux.so.2 ne contient que des adresses mémoire, pas de symbole. Par contre, une fichier ELF contient la liste des symboles (chaînes de caractères donc) dont il a besoin pour chaque librairie :
$ nm prog | grep U
U fgets@@GLIBC_2.0
U __libc_start_main@@GLIBC_2.0
U printf@@GLIBC_2.0
U puts@@GLIBC_2.0
U sleep@@GLIBC_2.0
Bon, apparement il n'y a de lien entre le nom du symbole et le nom de la librairie.
>> Donc tu peux avoir plusieurs toto sans que ça pose de problème (je vais pas entrer dans les détails).
> Ca dépend des cas...
> En fait y a des librairies qui font exprès de prendre la place d'autres symboles (en vrac: libfaketime, chkinstall, euh bon le reste me vient plus enfin bref l'idée est la)
Ok, autant pour moi. C'est vrai que j'avais déjà vu passer un librairie qui remplaçait les fonctions d'accès aux fichiers/répertoires pour mettre les fichiers ~/.* dans le répertoire ~/etc/*. Elle s'utilisait en préchargeant cette librairie à l'aide de LD_LIBRARY_PATH.
--
Les librairies dynamiques, y'a plein de chose à dire dessus :)
Les librairies dynamiques ont de multiples intérêts. Ca évite par exemple d'avoir à recoder à chaque fois la fonction strlen ou encore printf :-) Et puis, lorsque la librairie s'améliore (correction de faille de sécurité, correction de bug, optimisation, etc.) tous les programmes du système en profitent.
Après, niveau technique, gcc et son pôte ld font du bon boulot. Déjà, lors de la compilation, gcc vérifie que le symbolique existe dans le .so (ou alors je me trompe). Après, lorsqu'on exécute un programme qui utilise les librairies dynamiques (99% des applications hors de /bin je pense), il suffit de demander au programme ELF quels sont les symboles dont il a besoin. On peut faire ça à la main avec la commande nm.
Les noms (toto, tata) sont juste un artifice de programmeur. Un binaire ne contient plus aucun nom lorsqu'il est exécuté. Et lors du chargement de la librairie dynamique, seuls les symboles demandés sont importés. Là encore je peux me tromper. Mais ça fait juste une correspondance "tel pointeur en mémoire est assigné à telle valeur". Donc tu peux avoir plusieurs toto sans que ça pose de problème (je vais pas entrer dans les détails).
Data Interface (Readers/Writers treat a single dataset; Importers/Exporters treat a scene.) variety of polygonal formats including stereo-lithography, MOVIE.BYU, Cyberware, etc.
* our own VTK formats (including a parallel XML format) for all data types
* Inventor Writer, IV Exporters
* 3D Studio Importer
* PLOT3D
* PNM
* RIB (RenderMan) Exporter
* SLC (Volume) Reader
* TIFF Writer
* VRML Exporter
* Wavefront .OBJ Exporter, .OBJ Reader
* BMP reader and writer
* Raw image formats
Hum ? « Debian GNU/Hurd » ? Je ne sais pas si c'est dans l'installeur par défaut, par contre, ça s'installe plutôt bien avec "crosshurd". Il permet d'installer GNU/Hurd, GNU/Linux, GNU/FreeBSD, et GNU/NetBSD.
Pour Hurd, c'est bizzare, car il faut plusieurs reboot pour finir l'installation. Ca vient du fait que crosshurd utilise pas mal d'outils Linux pour installer du Hurd je pense.
C'est le deuxième numéro de Linux+ que j'achète, et je le trouve toujours aussi intéressant. C'est entre Linux Magazine (prog. / admin. système) et Linux Pratique (Linux pour le grand public). J'ai malheureusement laissé mon exemplaire à mon père pour qu'il se documente sur Linux.
Linux+ est un magazine Polonais traduit en français ... bon, il y a des fois de drôles de traduction, mais c'est de plus en plus rare. Le magazine est découpé en différentes parties (corrigez-moi si j'en oublie) :
- Gnome : avec un article sur Gnome Live 2.10
- KDE : avec un article sur "mettez votre KDE aux couleurs de la pomme" (Apple)
- Kernel : le soucis du lancement de tâche en temps réel dans l'espace utilisateur, des avancées du côté de mount --bind, etc.
- Debian : Soucis de la sortie de la Sarge
- Gentoo : Outils EIX accélérant largement la recherche dans Portage
- Jeux : Vegas Strike
- Dossier sur le partitionnement
- Article sur un logiciel de musique (j'ai oublié le nom), programme servant à dessiner ses partitions
- Test matériel : un gros serveur IBM
- Test logiciel : GeexBox
Autour de chaque article, on trouve plein de news lié au sujet, c'est sympa comme idée ! Mais il y a aussi une partie "News" qui parle par exemple de la licence Sun pour Solaris.
Le magazine, assez cher je trouve (8,40¤ je crois bien), est également fourni avec DEUX DVDs (rien que ça). Il contient tous les programmes dont on parle dans le magazine, et le DVD Live Linux+ basé sur Aurox (apparement cette distrib' est pas mal utilisé en Pologne !). J'avais testé : c'est passé tout seul sur mon PC portable (pourtant capricieux), et le DVD est assez fourni niveaux programmes !
Arf oui, j'ai oublié la possibilité de renommer (c'était trop évident, c'est pour ça que je l'ai oublié ;-)) et les commit atomiques. Ayant pas mal utilisé CVS (dont deux fusions de branches), je peux dire que lorsqu'un commit foire ... C'est un gros paquet d'emmerdes *garantis*. Exemples concrets : connexion Wifi qui tombe (une mouche a pété, j'ai perdu un paquet, pouf) ou alors le serveur qui coupe la connexion durant un GROS commit.
GWhere est très bien, traduit en français, rapide à l'indexation, et rapide à la recherche (sur ma 20e de CD de sauvegarde en tout cas).
Bon par contre, il n'est pas trop maintenu. Enfin, je n'avais pas trouvé de bug en l'utilisant.
Pour le traitement batch : bof bof, ça prend moins de 10 secondes pour l'indexation ! Après il suffit de recliquer sur le bouton Indexation ;-)
GWhere peut aussi enregistrer plus d'info que juste le nom du fichier, en lisant par exemple le contenu des archives, des infos supplémentaire dans tel ou tel type de fichier.
J'ai plus tout en tête. Maintenant, je fais presque plus de sauvegarde. Internet est bientôt aussi rapide que mon lecteur de cdrom ;-)
Dans le moteur ZWE tu pourras trouver un outil pour afficher des fortunes stockés dans une base MySQL. Et tu peux aussi y accéder par flux RSS (ton truc XML).
Je peux vous garantir qu'une fois qu'on a utilisé SubVersion, CVS ressemble à un dinosaure, et on se demande pourquoi on utilise encore cet outil *désuet* à l'heure actuelle !!! Ce qui change :
— On peut charger uniquement une partie du dépôt et bosser dessus (dans CVS, ça se passe par "module")
— On n'a pas besoin de se connecter au serveur pour faire un ajout ou une suppression (chose que je n'ai jamais comprise dans CVS) : ceci rend la préparation d'un commit beaucoup plus agréable
— Un diff par rapport à la dernière version commitée se fait sans se connecter au serveur (chose magnifique), de même pour avoir avec "status" de répertoire local (ça fait tout bizzare au début de ne pas avoir à attendre 5 min ;-)). De plus "status" est très bien présenté (affiche juste les fichiers qui ne sont pas dans le dépot, les fichiers ajoutés / supprimés, et les fichiers modifiés) : juste comme il faut
— Un commit SVN est moins bavard qu'un CVS qui remplit l'écran de plein de griboulli
— On peut créer un répertoire avec SVN (remplace un mkdir X; cvs add X; => lourd à cause de la connexion au serveur pour rappel)
— Il existe une fonction "magique" (quand on vient du monde CVS) : svn revert qui permet de revenir à la dernière version commitée
— Un update ajoute automatiquement les nouveaux fichiers (pas besoin d'ajouter -A à la commande)
— Le répertoire utilisés par SVN sont nommés ".svn", et sont donc cachés. Ceci est plus sympa que les répertoires CVS trop visibles à mon goût.
— La création de branche est plus pratique, il suffit de dupliquer un répertoire autre part, et hop, on a une branche ...
— Les numéros de versions (de commit) sont simplement incrémentés (1, 2, ...). C'est plus simple que des 1.1.1, 1.2.34, 1.54, ... (bon ok, c'est discutable, et je crois bien que CVS est plus souple à ce niveau là)
— Avec l'interface web (CvsWeb, qui comme son nom ne l'indique pas, sait aussi afficher du SubVersion) on peut voir l'ensemble des modifications d'un commit. Chose que je n'ai jamais réussi à faire avec CVS (peut-être avec un cvs history <options magiques> ?).
— Et puis il y a sûrement plein d'autres avantages. Pour rappel, SVN a été écrit car CVS a été mal pensé niveau sécurité (voir des sites de sécurité et compter le nombre de failles ...) et pour corriger les défauts de conception de CVS.
En fait, SVN duplique chaque fichier lors du premier "checkout", c'est pourquoi diff/status est si rapide (et revert possible).
J'ai jamais passé de dépôt CVS en SubVersion, mais il parait que ça se fait bien. Pour info, http://developer.berlios.de/(...) permet d'avoir un dépôt CVS et/ou SubVersion. C'est un des seuls à ma connaissance.
Pour info, HappyBoom est mon projet de réécriture de Wormux en Python et SDL, qui est aujourd'hui un projet expérimental de moteur réseau avec un système multi-agents.
@+ Haypo étonné de tartiner tellement sur cet outil ;-)
Euh, une annuaire avec modérateur ... ok, mais il faut la race de modérateur pour que ce soit potable. Pourquoi pas utiliser Dmoz plutôt que de réinventer la route ? http://www.dmoz.org/about.html(...)
Dmoz est un excellent annuaire, maintenu par des bénévoles. Chaque soumission passe obligatoirement par un modérateur. De nombreux moteurs vont piocher dedans pour élargir le nombre de pages référencées. La seule limitation que je connaisse est que les sites commerciaux sont proscrits.
Moi je cherche plutôt un équivalent de Google, mais avec des résultats plus pertinant (hu hu). Il faudrait pour ça un gros paquet de serveurs (donc bande passante), et un gros gros annuaire. Après, ce que je n'aime pas dans Google, c'est les boîtes qui payent pour être en première position, ou encore les "fermes de liens" qui aident à faire monter un site dans le classement (artificiellement). Un algo pour détecter les fermes de liens ou les pages bidons (uniquement remplies de mots clés) doivent être facilement détectables, je suppose.
L'outil qui dissimule le mieux les informations que je connais se nomme FreeNet (cité vite fait plus haut) : http://freenet.sourceforge.net/(...)
Non seulement, tout le trafic est crypté, mais en plus, il est "impossible" de savoir qui a quoi sur son disque dur. Chaque fichier est découpé en petits paquets qui sont répartis sur tout le réseau. Chaque noeud stoque un certain nombre de ces paquets (il y a de la redondance bien sûr). Une recherche se fait par hash et non pas par non de fichier. Ou selon la description du site web :
Communications by Freenet nodes are encrypted and are "routed-through" other nodes to make it extremely difficult to determine who is requesting the information and what its content is.
Le soucis est que chaque fois que j'avais testé c'était ultra-lent (disons 2 à 10 min pour voir une page web quoi ...). A ce quie j'avais lu sur le site web, au début c'est très lent. C'est le temps de tisser ta propre toile (comprendre, le temps de trouver des noeuds proches). Après ça va "plus vite" ...
Le site est bien écrit. Lire la FAQ pour les questions sur la sécurité par ex. (non, Freenet ne garantit pas d'être anonyme, mais c'est sûrement mieux que Kazaa & Cie)
Je l'avais utilisé sur deux projets, et j'ai toujours été bien surpris. Le principal avantage étant de faire abstraction de l'OS qui est en dessous. Aujourd'hui, GTK+ fonctionne bien sous Windows, alors on se pose un peu moins la question de portabilité.
L'utilisation de la STL étant un truc prévu depuis 2 ou 3 ans. Je suis très content de voir que wxWidgets a enfin fait le bon choix. Pour information, ça n'avait pas été fait avant tout simplement parce les compilateurs gêraient plutôt mal les templates (base de la STL).
Pour info, il est possible de "charger" une interface depuis un fichier XML (extension XRC). Pour dessiner l'interface, on peut utiliser wxGlade (pas testé) ou wxDesigner (très bon, complet, mais payant et proprio).
Je trouve que la documentation est bien écrite.
Ah oui, il faut aussi noter que la librairie date de 1992 et est plus utilisée qu'on ne le pense. Elle est très complète.
[^] # Re: Mes contributions
Posté par Victor STINNER (site web personnel) . En réponse au journal De la difficulté de contribuer à des gros projets. Évalué à 6.
Signaler un bug consiste à donner le maximum d'informations pertinentes sur un bug et à envoyer le tout aux développeurs. Pour un plantage, il faut par exemple lancer l'application avec gdb, après copier/coller le résultat de la commande backtrace après plantage. Pour un bug qui ne plante pas, il faut expliquer pas à pas la démarche pour arriver au bug, et le comportement qu'on aurait désiré. Pour envoyer le bug, il faut voir le site web du programme. Gnome a son application dédiée. Chaque cas est différent donc.
Souvent, le bug est connu, est en cours de correction, ou alors déjà corrigé dans le CVS. C'est pour ça qu'il faut toujours commencer par signaler le bug.
Si c'est un nouveau bug, et qu'aucun développeur du projet ne s'y attarde, autant le corriger soit-même (on est jamais aussi bien servi que par soi-même :-D). Il faut commencer par télécharger la toute dernière version (surtout pas la dernière version stable qui comporte d'ancien bug déjà corrigé, ou une API désuette) : tarball, cvs, subversion, etc. (cf. le site web du projet) Ensuite, il faut compiler le projet, et vérifier que le bug existe toujours. Ben oui, rien ne sert de défoncer une porte ouverte avec un bazooka hein.
Si le bug existe toujours, il faut le traquer. Il vaut mieux connaître les commandes break et where de gdb, et avoir un peu d'expérience avec cet outil. Perso, je commence par laisser planter le programme et voir où je suis avec where (équivalent à backtrace au passage). Ensuite, je remonte à la source en posant un point d'arrêt sur la fonction ayant plantée et je relance le programme. Cette recherche est souvent longue et épuisante.
Une fois le bug cerné, 90% du boulot est fait :-D Il ne reste plus qu'à comprendre pourquoi ça plante, et corriger le bug. On recompile le programme. Si ça marche pas .... on recommence. Si ça passe, il FAUT envoyer son patch aux développeurs, sinon tout ce travail n'aura servi à rien. Au faut alors faire un diff -u ancien_fichier nouveau_fichier >~/mon.patch et l'envoyer par email. C'est pour ça qu'il vaut mieux faire un cp fichier fichier.old avant d'éditer n'importe quel fichier !
@+ Haypo
[^] # Re: réponses
Posté par Victor STINNER (site web personnel) . En réponse au journal De la difficulté de contribuer à des gros projets. Évalué à 1.
Le but n'était pas de faire un patch, car je ne sais pas comment fonctionne Gnome dans son ensemble, mais plutôt de montrer la voie à suivre.
Bon, si j'ai le temps, je vais me coltiner un patch propre (genre qui ne casse pas l'API par exemple :-)).
@+, Haypo
[^] # Re: Mes contributions
Posté par Victor STINNER (site web personnel) . En réponse au journal De la difficulté de contribuer à des gros projets. Évalué à 4.
@+, Haypo
# Mes contributions
Posté par Victor STINNER (site web personnel) . En réponse au journal De la difficulté de contribuer à des gros projets. Évalué à 7.
Il n'y a pas longtemps, je me suis un peu attardé à essayer de corriger des bugs de divers projets :
(1) Nautilus, ou plus exactement, libgnomeui : le système de génération de miniature (pour les images) utilisait +500 Mo pour générer une miniature d'une image vectorielle de 28 Ko. Mon patch est assez simple : je charge l'image en 128x128 plutôt qu'à sa taille originale (10000x10000 pour l'image vectorielle). Apparement, cela fonctionne aussi pour de grosses images PNG (7000x7000).
http://bugzilla.gnome.org/show_bug.cgi?id=307885(...)
Le soucis est que mon patch demande de casser l'API de libgnomeui. J'ai d'abord posté un bugreport pour gnome-session, puis librsvg, et enfin Nautilus. Mais en réalité c'était libgnomeui (et Nautilus?) qui est en cause. Aussi bien librsvg que Nautilus m'ont refoulé "arf, ton image est boguée, notre programme fonctionne normalement" ... Ils ont tous 2 Go de RAM les développeurs Gnome ???
(2) J'avais tenté un patch pour la librairie de jeu ClanLib il y a un an. J'ai largement amélioré le support de SDL dans ClanLib. Mon patch n'a jamais été intégré, et je me suis fait traité de gros connard ... Ca fait plaisir. J'ai passé environ 50h sur ce patch, et sûrement bien plus.
(3) Epsilon (librairie de chargement d'image pour Enlightenment) : j'ai corrigé un erreur de division par zéro que j'ai mis 3h à traquer. Mais mon patch est toujours en attente.
J'ai du oublié des patchs. Parfois, je m'y suis mal pris, mais n'empêche, c'est pas trop motivant ...
@+ Haypo
# X.Org avec Debian depuis longtemps
Posté par Victor STINNER (site web personnel) . En réponse au journal X.Org dans Debian. Évalué à 1.
Au passage, ça fait longtemps (un an ?) que j'utilise X.org avec Debian à coup de apt-get ;-)
Le serveur est souvent surchargé. Bon, c'est sûr, c'est mieux des paquets "officiels".
Merci à tous ces packageurs "non-officiels", comme par exemple Marillat qui nous offre du Mplayer (compilé pour K6, K7, PowerPC, amd64, ...). Perso, j'ai pas compiler.
@+, Haypo
[^] # Re: marre de configurer votre noyau ?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Sortie de Linux 2.6.12. Évalué à -10.
# Je trouve que c'est une très bonne chose
Posté par Victor STINNER (site web personnel) . En réponse au journal Ils ont aspirés Wikipédia !. Évalué à 1.
Sur http://encyclopedie.snyke.com/,(...) on peut lire :
ou encore
(avec les liens qui amènent là où il faut)
Je pense que Wikipédia pourrait être au moins aussi fluide si on interdisait toutes les modifitions. Mais dans les statistiques, on voit souvent des chiffres du genre "1 modification pour 2 consultations" (en moyenne, à moins que je me trompe). Forcément, ça casse le système de cache !
Tiens, les stat' du jour :
@+ Haypo
[^] # Re: Euh ... moi je ne vois que des avantages :-)
Posté par Victor STINNER (site web personnel) . En réponse au journal Fonctionnement du linker dynamic sous linux. Évalué à 3.
>> Un binaire ne contient plus aucun nom lorsqu'il est exécuté.
> Je sais pas trop:
> Quand tu change de version de librairies les adresses changent
> La seule chose à laquelle tu peux te référencer c'est alors le nom
Oui, je suis allé un peu vite. J'étais dans le rush cette après-midi, mais mon rapport sur les brevets logiciels est imprimé. Ouf.
Je voulais dire, un binaire ("strippé") après avoir été chargé par /lib/ld-linux.so.2 ne contient que des adresses mémoire, pas de symbole. Par contre, une fichier ELF contient la liste des symboles (chaînes de caractères donc) dont il a besoin pour chaque librairie :
Bon, apparement il n'y a de lien entre le nom du symbole et le nom de la librairie.
>> Donc tu peux avoir plusieurs toto sans que ça pose de problème (je vais pas entrer dans les détails).
> Ca dépend des cas...
> En fait y a des librairies qui font exprès de prendre la place d'autres symboles (en vrac: libfaketime, chkinstall, euh bon le reste me vient plus enfin bref l'idée est la)
Ok, autant pour moi. C'est vrai que j'avais déjà vu passer un librairie qui remplaçait les fonctions d'accès aux fichiers/répertoires pour mettre les fichiers ~/.* dans le répertoire ~/etc/*. Elle s'utilisait en préchargeant cette librairie à l'aide de LD_LIBRARY_PATH.
--
Les librairies dynamiques, y'a plein de chose à dire dessus :)
@+ Haypo
# Euh ... moi je ne vois que des avantages :-)
Posté par Victor STINNER (site web personnel) . En réponse au journal Fonctionnement du linker dynamic sous linux. Évalué à 5.
Après, niveau technique, gcc et son pôte ld font du bon boulot. Déjà, lors de la compilation, gcc vérifie que le symbolique existe dans le .so (ou alors je me trompe). Après, lorsqu'on exécute un programme qui utilise les librairies dynamiques (99% des applications hors de /bin je pense), il suffit de demander au programme ELF quels sont les symboles dont il a besoin. On peut faire ça à la main avec la commande nm.
Les noms (toto, tata) sont juste un artifice de programmeur. Un binaire ne contient plus aucun nom lorsqu'il est exécuté. Et lors du chargement de la librairie dynamique, seuls les symboles demandés sont importés. Là encore je peux me tromper. Mais ça fait juste une correspondance "tel pointeur en mémoire est assigné à telle valeur". Donc tu peux avoir plusieurs toto sans que ça pose de problème (je vais pas entrer dans les détails).
@+ Haypo
[^] # Re: Données/formats d'entrée ?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Cassandra, nouveau visualiseur libre de données scientifiques 3D. Évalué à 3.
http://public.kitware.com/VTK/what-is-vtk.php(...)
@+ Haypo
# Il est pourri ce journal
Posté par Victor STINNER (site web personnel) . En réponse au journal La morsure du dragon. Évalué à 10.
[^] # Re: Debian Gnu tout court?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Nouvelle avancée du port du Hurd sur L4. Évalué à 3.
Pour Hurd, c'est bizzare, car il faut plusieurs reboot pour finir l'installation. Ca vient du fait que crosshurd utilise pas mal d'outils Linux pour installer du Hurd je pense.
@+ Haypo
[^] # Re: Dépêche ?
Posté par Victor STINNER (site web personnel) . En réponse au journal Nouvelle avancée de Hurd/L4. Évalué à 3.
@+ Haypo
[^] # Re: Réponse D
Posté par Victor STINNER (site web personnel) . En réponse au journal Les lames des sabres laser ont-elles une masse ?. Évalué à -5.
# Et Linux+ alors ?
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Revue de Presse - Avril/Mai 2005. Évalué à 2.
C'est le deuxième numéro de Linux+ que j'achète, et je le trouve toujours aussi intéressant. C'est entre Linux Magazine (prog. / admin. système) et Linux Pratique (Linux pour le grand public). J'ai malheureusement laissé mon exemplaire à mon père pour qu'il se documente sur Linux.
Linux+ est un magazine Polonais traduit en français ... bon, il y a des fois de drôles de traduction, mais c'est de plus en plus rare. Le magazine est découpé en différentes parties (corrigez-moi si j'en oublie) :
- Gnome : avec un article sur Gnome Live 2.10
- KDE : avec un article sur "mettez votre KDE aux couleurs de la pomme" (Apple)
- Kernel : le soucis du lancement de tâche en temps réel dans l'espace utilisateur, des avancées du côté de mount --bind, etc.
- Debian : Soucis de la sortie de la Sarge
- Gentoo : Outils EIX accélérant largement la recherche dans Portage
- Jeux : Vegas Strike
- Dossier sur le partitionnement
- Article sur un logiciel de musique (j'ai oublié le nom), programme servant à dessiner ses partitions
- Test matériel : un gros serveur IBM
- Test logiciel : GeexBox
Autour de chaque article, on trouve plein de news lié au sujet, c'est sympa comme idée ! Mais il y a aussi une partie "News" qui parle par exemple de la licence Sun pour Solaris.
Le magazine, assez cher je trouve (8,40¤ je crois bien), est également fourni avec DEUX DVDs (rien que ça). Il contient tous les programmes dont on parle dans le magazine, et le DVD Live Linux+ basé sur Aurox (apparement cette distrib' est pas mal utilisé en Pologne !). J'avais testé : c'est passé tout seul sur mon PC portable (pourtant capricieux), et le DVD est assez fourni niveaux programmes !
Pour info, hackin9 vient de la même boîte que Linux+.
http://www.lpmagazine.org/fr/(...)
@+ Haypo
[^] # Re: Pour ceux qui hésitent encore à franchir le pas (CVS à SubVersion) .
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Le basculement de KDE vers Subversion est terminé. Évalué à 3.
Haypo
[^] # Re: GWhere
Posté par Victor STINNER (site web personnel) . En réponse au journal Indexation de CD et solution. Évalué à 2.
Bon par contre, il n'est pas trop maintenu. Enfin, je n'avais pas trouvé de bug en l'utilisant.
Pour le traitement batch : bof bof, ça prend moins de 10 secondes pour l'indexation ! Après il suffit de recliquer sur le bouton Indexation ;-)
GWhere peut aussi enregistrer plus d'info que juste le nom du fichier, en lisant par exemple le contenu des archives, des infos supplémentaire dans tel ou tel type de fichier.
J'ai plus tout en tête. Maintenant, je fais presque plus de sauvegarde. Internet est bientôt aussi rapide que mon lecteur de cdrom ;-)
Haypo
# Dans ZWE, y'a un truc du genre
Posté par Victor STINNER (site web personnel) . En réponse au journal Fortunes. Évalué à 4.
Démo en ligne :
http://blog.bulix.org/index.php/fortunes(...)
Sources du module :
https://ssl.bulix.org/projects/zwe/browser/trunk/php-include/modules(...)
Accueil de ZWE :
https://ssl.bulix.org/projects/zwe(...)
@+, Haypo
# Pour ceux qui hésitent encore à franchir le pas (CVS à SubVersion) ...
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche Le basculement de KDE vers Subversion est terminé. Évalué à 10.
— On peut charger uniquement une partie du dépôt et bosser dessus (dans CVS, ça se passe par "module")
— On n'a pas besoin de se connecter au serveur pour faire un ajout ou une suppression (chose que je n'ai jamais comprise dans CVS) : ceci rend la préparation d'un commit beaucoup plus agréable
— Un diff par rapport à la dernière version commitée se fait sans se connecter au serveur (chose magnifique), de même pour avoir avec "status" de répertoire local (ça fait tout bizzare au début de ne pas avoir à attendre 5 min ;-)). De plus "status" est très bien présenté (affiche juste les fichiers qui ne sont pas dans le dépot, les fichiers ajoutés / supprimés, et les fichiers modifiés) : juste comme il faut
— Un commit SVN est moins bavard qu'un CVS qui remplit l'écran de plein de griboulli
— On peut créer un répertoire avec SVN (remplace un mkdir X; cvs add X; => lourd à cause de la connexion au serveur pour rappel)
— Il existe une fonction "magique" (quand on vient du monde CVS) : svn revert qui permet de revenir à la dernière version commitée
— Un update ajoute automatiquement les nouveaux fichiers (pas besoin d'ajouter -A à la commande)
— Le répertoire utilisés par SVN sont nommés ".svn", et sont donc cachés. Ceci est plus sympa que les répertoires CVS trop visibles à mon goût.
— La création de branche est plus pratique, il suffit de dupliquer un répertoire autre part, et hop, on a une branche ...
— Les numéros de versions (de commit) sont simplement incrémentés (1, 2, ...). C'est plus simple que des 1.1.1, 1.2.34, 1.54, ... (bon ok, c'est discutable, et je crois bien que CVS est plus souple à ce niveau là)
— Avec l'interface web (CvsWeb, qui comme son nom ne l'indique pas, sait aussi afficher du SubVersion) on peut voir l'ensemble des modifications d'un commit. Chose que je n'ai jamais réussi à faire avec CVS (peut-être avec un cvs history <options magiques> ?).
— Et puis il y a sûrement plein d'autres avantages. Pour rappel, SVN a été écrit car CVS a été mal pensé niveau sécurité (voir des sites de sécurité et compter le nombre de failles ...) et pour corriger les défauts de conception de CVS.
En fait, SVN duplique chaque fichier lors du premier "checkout", c'est pourquoi diff/status est si rapide (et revert possible).
J'ai jamais passé de dépôt CVS en SubVersion, mais il parait que ça se fait bien. Pour info, http://developer.berlios.de/(...) permet d'avoir un dépôt CVS et/ou SubVersion. C'est un des seuls à ma connaissance.
Pour voir à quoi ressemble à CvsWeb de SVN (y'a un p'tit bug UTF-8 par contre, peut-être parce que je suis en UTF-8 et pas le serveur) :
http://svn.berlios.de/viewcvs/happyboom/trunk/(...)
Pour info, HappyBoom est mon projet de réécriture de Wormux en Python et SDL, qui est aujourd'hui un projet expérimental de moteur réseau avec un système multi-agents.
@+ Haypo étonné de tartiner tellement sur cet outil ;-)
# Hum, et dmoz.org alors ?
Posté par Victor STINNER (site web personnel) . En réponse au journal La Banquise is back. Évalué à 2.
http://www.dmoz.org/about.html(...)
Dmoz est un excellent annuaire, maintenu par des bénévoles. Chaque soumission passe obligatoirement par un modérateur. De nombreux moteurs vont piocher dedans pour élargir le nombre de pages référencées. La seule limitation que je connaisse est que les sites commerciaux sont proscrits.
Moi je cherche plutôt un équivalent de Google, mais avec des résultats plus pertinant (hu hu). Il faudrait pour ça un gros paquet de serveurs (donc bande passante), et un gros gros annuaire. Après, ce que je n'aime pas dans Google, c'est les boîtes qui payent pour être en première position, ou encore les "fermes de liens" qui aident à faire monter un site dans le classement (artificiellement). Un algo pour détecter les fermes de liens ou les pages bidons (uniquement remplies de mots clés) doivent être facilement détectables, je suppose.
@+, Haypo
[^] # Re: Et bootsplash alors ?
Posté par Victor STINNER (site web personnel) . En réponse au journal Splashy, ou comment avoir une barre de progression au boot Debian. Évalué à 1.
Par contre, bootsplash ne fonctionne pas. Apparement, il veut du VESA et moi j'ai du FB ... Encore un coup de ma carte vidéo ATI IGP 320M :-(
@+ Haypo
# FreeNet
Posté par Victor STINNER (site web personnel) . En réponse au journal P2P et cryptographie. Évalué à 2.
L'outil qui dissimule le mieux les informations que je connais se nomme FreeNet (cité vite fait plus haut) :
http://freenet.sourceforge.net/(...)
Non seulement, tout le trafic est crypté, mais en plus, il est "impossible" de savoir qui a quoi sur son disque dur. Chaque fichier est découpé en petits paquets qui sont répartis sur tout le réseau. Chaque noeud stoque un certain nombre de ces paquets (il y a de la redondance bien sûr). Une recherche se fait par hash et non pas par non de fichier. Ou selon la description du site web :
Le soucis est que chaque fois que j'avais testé c'était ultra-lent (disons 2 à 10 min pour voir une page web quoi ...). A ce quie j'avais lu sur le site web, au début c'est très lent. C'est le temps de tisser ta propre toile (comprendre, le temps de trouver des noeuds proches). Après ça va "plus vite" ...
Le site est bien écrit. Lire la FAQ pour les questions sur la sécurité par ex. (non, Freenet ne garantit pas d'être anonyme, mais c'est sûrement mieux que Kazaa & Cie)
@+, Haypo
# Cette librairie est géniale
Posté par Victor STINNER (site web personnel) . En réponse à la dépêche wxWidgets 2.6 est sorti. Évalué à 4.
L'utilisation de la STL étant un truc prévu depuis 2 ou 3 ans. Je suis très content de voir que wxWidgets a enfin fait le bon choix. Pour information, ça n'avait pas été fait avant tout simplement parce les compilateurs gêraient plutôt mal les templates (base de la STL).
Pour info, il est possible de "charger" une interface depuis un fichier XML (extension XRC). Pour dessiner l'interface, on peut utiliser wxGlade (pas testé) ou wxDesigner (très bon, complet, mais payant et proprio).
Je trouve que la documentation est bien écrite.
Ah oui, il faut aussi noter que la librairie date de 1992 et est plus utilisée qu'on ne le pense. Elle est très complète.
@+ Haypo
[^] # Re: criteres
Posté par Victor STINNER (site web personnel) . En réponse au journal Yahoo et wikipedia, épisode 2. Évalué à 2.
Hayo
[^] # Re: Bénéfices !?
Posté par Victor STINNER (site web personnel) . En réponse au journal Yahho prend sa revanche sur wikipedia. Évalué à 2.
Sur Wikipedia anglophone, les deux sont proposés ;-)
http://en.wikipedia.org/wiki/Special:Search?search=dsfpdsfops(...)
@+ Haypo