Benoit a écrit 186 commentaires

  • [^] # Par /sys/bus/usb/devices/*/power

    Posté par  . En réponse au message Desactiver l'USB à chaud. Évalué à 4.

    Exactement,

    Il faut jouer avec les entrées des /sys/bus/usb/devices/*/power et vérifier que l’option CONFIG_USB_SUSPEND a bien été activée lors de la compilation du noyau.
  • # QGis est aussi une bibliothèque

    Posté par  . En réponse à la dépêche Sortie de QGis 1.4.0 (aka Enceladus). Évalué à 4.

    Juste pour préciser que QGis peut très facilement être utilisable sous forme de bibliothèque et intégrer dans un autre logiciel pour manipuler et afficher des informations géographiques (issue de calcul par exemple).

    Que du bonheur ! Encore un grand bravo à l’équipe de QGis.
  • [^] # Kerrighed

    Posté par  . En réponse au journal Quelles solutions adopter pour améliorer un parc existant ?. Évalué à 2.

    Réponse à moi même.
    Ne connaissant que Mosix, j’ai parlé trop vite ; le projet OpenSSI semble mort.
    Néanmoins, on me souffle que le projet Kerrighed (http://www.kerrighed.org/) est une bonne alternative libre à MOSIX.
  • # MOSIX ou OpenSSI

    Posté par  . En réponse au journal Quelles solutions adopter pour améliorer un parc existant ?. Évalué à 2.

    Ton besoin me fait penser à MOSIX (http://www.mosix.org/) qui est pseudo libre, ou alors à (http://openssi.org/) qui est libre.

    Dans le temps, j’ai utilisé MOSIX, mais je n’ai jamais utilisé OpenSSI. Le concept est de lancer un processus sur un nœud, celui-ci se balade ensuite de nœud en nœud en fonction de la charge du cluster, le parallélisme doit donc être implémenté à base de fork (le slogan de MOSIX étant « fork and forget »).
  • [^] # Re: FileX

    Posté par  . En réponse au message Echange de fichiers volumineux. Évalué à 1.

    C’est exactement ce que je cherche, peut-être au stockage des comptes près (base LDAP). Je vais creuser pour voir si elle est obligatoire.

    Merci
  • [^] # Re: "type" et "threshold"

    Posté par  . En réponse au message Indicateurs smartd. Évalué à 1.

    Je me suis intéressé à ce disque, car la machine plante régulièrement et une petite analyse des logs montre que les messages ci-dessous apparaissent de plus en plus fréquemment jusqu’au plantage. Après redémarrage tout fonctionne 1 jour ou 2, puis les messages réapparaissent jusqu’au plantage suivant.

    kernel: ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
    kernel: ata1.01: cmd a0/00:00:00:00:00/00:00:00:00:00/b0 tag 0
    kernel: cdb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    kernel: res 51/20:03:00:00:00/00:04:08:00:00/b0 Emask 0x1 (device error)
    kernel: ata1.01: status: { DRDY ERR }
    kernel: ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
    kernel: ata1.01: cmd a0/00:00:00:00:00/00:00:00:00:00/b0 tag 0
    kernel: cdb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    kernel: res 51/20:03:00:00:00/00:04:08:00:00/b0 Emask 0x1 (device error)
    kernel: ata1.01: status: { DRDY ERR }
    kernel: ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
    kernel: ata1.01: cmd a0/00:00:00:08:00/00:00:00:00:00/b0 tag 0 pio 16392 in
    kernel: cdb 4a 01 00 00 10 00 00 00 08 00 00 00 00 00 00 00
    kernel: res 40/00:03:00:00:00/00:04:08:00:00/b0 Emask 0x4 (timeout)
    kernel: ata1.01: status: { DRDY }
    kernel: ata1: link is slow to respond, please be patient (ready=0)
    kernel: ata1: device not ready (errno=-16), forcing hardreset
    kernel: ata1: soft resetting link
    kernel: ata1.00: configured for UDMA/100
    kernel: ata1.01: configured for UDMA/33
    kernel: ata1: EH complete
  • # BerkeleyDB ou fichiers

    Posté par  . En réponse au message gestion de gros tableaux. Évalué à 2.

    Il a la solution de la base de données sur fichier, au vue de ton besoin, je t’orienterais plus vers une Berkeley DB (use BerkeleyDB) avec comme clé les indices du tableau plutôt que du SQLite.

    Sinon, beaucoup plus pédestre, tu stocke le tout dans un fichier et tu remplace l'accès direct à la mémoire par des accesseurs en lecture/écriture (certes moins pratiques).
    Si l'accès aux données n'est pas si aléatoire que ça, mais plutôt séquentiel, je te conseille de mapper tout ou partie du fichier en mémoire (use Sys::Mmap).
  • # uShare

    Posté par  . En réponse au message Seveur UPnP léger avec le support des vidéos. Évalué à 2.

    Pour ma part, j'utilise uShare (http://ushare.geexbox.org/).

    Paramétrable par ligne de commande ou par fichier de conf.
    Dispose d'interfaces Web et Telnet desactivables dont je ne me suis jamais servies.

    Marche nickel avec une FreeBox HD.
  • [^] # Re: Y accéder en C ?

    Posté par  . En réponse au message Binding C++ pour Motif. Évalué à 1.

    Ben si, mais on perd (presque) tout l’intérêt de coder en C++, à moins de recoder un binding C++ pour Motif.

    Le but étant de coder une sorte de logiciel permettant d’assembler des objets graphiques (ligne, cercle, ...) et de pouvoir les animer en fonction des valeurs prises par certaines variables ; l’utilisation d’un langage objets permettra de simplifier la chose.

    Je hais OpenVMS, y’a rien sur cette plateforme !
  • [^] # Re: Un autre bonne raison de ne pas utiliser Mono

    Posté par  . En réponse au journal Utiliser Mono sans peur. Évalué à 1.

    'interface IDisposable est utilisée par de très (trop) nombreuses classes
    Mais t'as généralement pas besoin de les appeler.
    A part dans des situations où tu fais de très nombreuses allocation d'objet auquel cas tu veux rendre très rapidement la mémoire, je vois pas l'intérêt. Tu fais pas de foreach(var i = 0;i++;i<1000000) new Form() si ?
    Sur 50 classes que je développe, je dois implémenter IDisposable 1 fois.

    Cas vécu d’un conteneur d’objet chargeant de très nombreux objets se désérialisant eux même depuis un flux XML ; un des types d’objet utilisés n’appelait pas le Dispose (du parseur XML et d’autres objets du Framework .Net), résultat : explosion au chargement.
    Sur 50 classes que je développe, 90% expose l’interface IDisposable, car on ne sait jamais comment sera utilisée notre classe ; donc, si l’un des objets membres présente l’interface IDisposable, il faut faire de même.

    Sur un exemple simple non, mais lorsque tu as de multiples références sur ta classe, tu fini par ajouter des AddRef et des Release sur tes classes pour gérer ton propre compteur de référence, sa tombé à 0 appelant la méthode Dispose (pour éviter un pénurie de ressource non-managées).
    Je connais personne qui ai eu besoin de f1aire ça, mais admettons que tu es ce besoin. Expliques moi en quoi c'est différent en Java ou en Python, en quoi c'est moins technique vis-à-vis de ce problème.

    Même conteneur d’objets gérant une arborescence d’objets qui peuvent se référencer l’un l’autre, au déchargement d’une partie de l’arborescence, le Dispose doit être appelé lorsque la dernière référence sur un objet est perdue. Si l’on attend le déclenchement du garbage collector (sans appelé Dispose), au chargement d’une autre partie de l’arborescence ça explose.
    En Java, le garbage collector est beaucoup plus prompt à se déclencher, il y donc moins de problème ; en python, je ne sais pas, car je n’ai jamais construit de très grosse application en Python.
    Et puis, ce n’est pas parce que le petit copain à des défauts, qu’il faut avoir les mêmes.

    Tu as lu la page, c'est complètement ubuesque, on rajoute une couche de complexité.
    On s'en fou c'est caché. Pour le développeur c'est toujours moins complexe que de gérer la mémoire à la main.

    En C++ managé, le destructeur est quasiment l’équivalent du Dispose à l’exception prés qu’il appelle automatiquement le destructeur de la classe mère et qu’il ne s’appelle pas Dispose (mais vu d’autre langage comme C#, il s’appelle Dispose).
    Donc lorsque l’on passe du C++ managé au C# et inversement, il faut faire super gaffe, ça n’apporte rien, mais ça complique encore un peu plus un truc déjà inutilisable.
    Et pour certaines classes critiques (classes de base très utilisés), il est parfois fortement conseillé de gérer la mémoire et les ressources non-managé à la main en créant un objet mixte (C++ managé et C++ non-managé), si l’on veut avoir de très bonne performance. Ce n’est donc pas forcément masqué.
  • [^] # Re: Un autre bonne raison de ne pas utiliser Mono

    Posté par  . En réponse au journal Utiliser Mono sans peur. Évalué à 1.

    Résultat, il est nécessaire d’appeler manuellement le destructeur des objets
    Non. Tu as besoin de le faire uniquement quand tu veux libéré instantanément la ressource. Dans les 3/4 des cas tu n'as pas besoin de le faire, sans parler du fait que la grande majorité des objets .NET n''implémentent pas IDisposable parcqu'ils n'ont pas besoin de le faire.

    Enfin l'interface IDisposable est là pour libérer des ressources qui ne sont pas gérées par le garbage collector mais des ressources natives ou des fichiers par exemple : bref c'est loin d'être le cas général pour les objets .NET.
    L'interface IDisposable est utilisée par de très (trop) nombreuses classes (IHM, parseur XML, ...)


    MS n’a pas voulu appeler le destructeur des objets lorsque leur compte de référence tombe à 0 et le fait dans le garbage collector
    En même temps c'est le garbage collector qui compte les références donc bon...

    On voit bien la limite de ce choix avec la gestion ubuesque du Dispose, un garbage collector pourrait se limiter à empêcher la fragmentation de la mémoire.


    Et franchement c'est loin d'être "technique" et compliqué de faire un :

    Sur un exemple simple non, mais lorsque tu as de multiples références sur ta classe, tu fini par ajouter des AddRef et des Release sur tes classes pour gérer ton propre compteur de référence, sa tombé à 0 appelant la méthode Dispose (pour éviter un pénurie de ressource non-managées).


    En C++ tu trouves ca simple et pas technique ces méthodes virtuelles appelées dans un destructeur si on fait pas attention ?

    Si, mais là tu as les mêmes règles pour tout les objets (alors quand .Net : Dispose ou pas, destructeur appelé n’importe quand, …) et donc des réflexes systématiques évitant toute erreur.


    il est exécuter dans le contexte du garbage collector, ce qui empêche par exemple la libération les domaines d’application
    Non,c'est un autre problème le CLR n'autorise pas de libérer de domaines d'application tout court, un manque fonctionnel. D'ailleur .NET 4 évolue et propose cette fonctionnalité.

    Ah, AppDomain::Unload :
    http://msdn.microsoft.com/fr-fr/library/system.appdomain.unl(...)
    avec la super phrase :
    Dans certains cas, l'appel à Unload provoque une exception CannotUnloadAppDomainException immédiate, par exemple si l'appel est effectué dans un finaliseur.


    Tu verras aussi qu'en C++/CLI le problème n'est pas présent, et pourtant c'est le même CLR "mal conçu" :
    http://msdn.microsoft.com/fr-fr/library/ms177197.aspx

    Tu as lu la page, c'est complètement ubuesque, on rajoute une couche de complexité. J'aime bien le passage:
    If your type has a destructor, the compiler will generate a Dispose method that implements IDisposable. If a type authored in Visual C++ with a destructor is consumed from another language, calling IDisposable::Dispose on that type will cause the type's destructor to be called. When consumed from a Visual C++ client, you cannot directly call Dispose; call the destructor instead using the delete operator.
    If your type has a finalizer, the compiler will generate a Finalize(void) method that overrides Finalize.
  • # Un autre bonne raison de ne pas utiliser Mono

    Posté par  . En réponse au journal Utiliser Mono sans peur. Évalué à 2.

    Moi, j’ai une autre bonne raison de ne pas utiliser Mono : la CLI et le Framework .Net sont mal pensés (le language C# est lui vraiment pas mal).

    Programmer en .Net n’est pas des plus simple pour plusieurs raisons, la principale étant l’utilisation du garbage collector. Son fonctionnement a été tellement mal pensé que l’on passe son temps à faire le travail du garbage collector à sa place (interface IDisposable) ou bien de l’empêcher de faire son travail de façon abusive (interface ISponsor en remoting .Net).

    Concernant l’interface IDisposable ( http://msdn.microsoft.com/fr-fr/library/fs2xkftw.aspx ), MS n’a pas voulu appeler le destructeur des objets lorsque leur compte de référence tombe à 0 et le fait dans le garbage collector (qui ne devrait être là que pour éviter la fragmentation de la mémoire).
    Résultat, il est nécessaire d’appeler manuellement le destructeur des objets (c.à.d. la méthode Dispose de l’interface IDisposable), le “vrai” destructeur des objets ne sert à rien et l’on perd tout l’intérêt de la libération automatique des objets, car :
    1) il est impossible de libérer certaines ressources dans le destructeur (il est exécuter dans le contexte du garbage collector, ce qui empêche par exemple la libération les domaines d’application),
    2) le garbage collector se déclenche tellement rarement que l’on peut provoquer des pénuries de ressources non managées.
    3) ...

    Je trouve le développement en .Net extrêmement technique comparé au développement Java, Perl ou Python et préfère encore développer en C ou C++ avec de bonnes bibliothèques comme la glib ou Qt.
  • [^] # Re: Pas d'importance

    Posté par  . En réponse au message quelle base de données choisir ave Qt. Évalué à 2.

    Les drivers disponibles sont :
    _ ODBC
    _ MySQL
    _ PSQL
    _ SQLite
    _ ibase
    _ Oracle
    _ Sybase
    _ DB2

    Attention, tous les drivers de base de données ne sont pas disponibles dans la version libre (par exemple le driver oracle).
    Pour plus d'info, voir la doc de Qt : http://doc.trolltech.com/4.5/qtsql.html

    J'ai personnellement utilisé PSQL, SQLite, Oracle et ODBC ; mis à part ODBC qui est lourding à utiliser par nature (paramétrage de Qt + de ODBC), les autres fonctionnes bien.
  • [^] # Faut arrêter de gueuler à un moment

    Posté par  . En réponse au journal Amazon lance son offe MP3 en France.. Évalué à 9.

    Ce service est ce que je j’attendais depuis longtemps :
    • pas de DRM et qualité correcte ;
    • prix enfin abordable ;
    • pas de logiciel nécessaire au téléchargement des morceaux, il est juste là pour simplifier la vie (et disponible sous Windows, Mac OS et Linux).

    Je trouve que l’arrivé de cette offre est une excellente chose. Hadopi n’endiguera pas le téléchargement illégal, des offres, comme celle-ci, oui.

    Aller Mr Amazon, plus qu’un tout petit effort pour que le service soit parfait :
    • ajouter le choix du format (ogg vorbis, …) ;
    • pouvoir télécharger plusieurs morceaux en une fois sans logiciel particulier (dans un gros zip par exemple) ;
    • un catalogue plus complet.
  • [^] # Re: Des infos sur le processus effectif d'HADOPI

    Posté par  . En réponse au journal Outils anti-HADOPI. Évalué à 2.

    Ce qui me chagrine le plus, c’est qu’il ne semble y avoir aucun organisme qui va valider les procédures de relevé.
    Même constaté par un agent assermenté, si la sonde de relevée n’est pas validée par un organisme indépendant, les mesures ne peuvent pas avoir de valeur.

    Hors ici, ceux sont les ayant droits qui relèvent les infractions en utilisant des outils à leur discrétion. J’imagine les débats d’experts aux tribunaux pour démontrer que la procédure utilisée est valide ou non et que leur utilisation est correcte.

    Les radars, utilisés pour contrôler les automobilistes, sont homologués ; et, s’ils sont mal utilisés, les relevés sont considérés comme nuls.
    On a, dans le cas des radars, peu de modèles ayant chacun subit une phase d’homologation avec des conditions d’utilisation précise.

    Hadopi, c’est le flou total.
  • [^] # Re: sauf que...

    Posté par  . En réponse au message Utiliser ma carte réseau comme un port série. Évalué à 1.

    Ou bien un convertisseur RS232/IP
  • [^] # Re: avocent ?

    Posté par  . En réponse au message KVM over IP. Évalué à 1.

    Genre une machine qui n'est pas dans un Datacenter (les PME ça existe et ça peut héberger certains serveurs en interne), mais qu'il faut pouvoir administrer complètement à distance sans avoir à se déplacer.

    La baie possède déjà un onduleur contrôlable à distance, mais seule une machine doit être administrable totalement de l'extérieur.
  • [^] # Re: avocent ?

    Posté par  . En réponse au message KVM over IP. Évalué à 1.

    J’ai déjà regardé, mais ce qui me choque, c’est que l’on ne trouve aucune solution monoposte à moins de 450 € alors qu’il existe des solutions pour 16 postes autour de 1000 €.

    Merci quand même
  • [^] # Re: et sinon ?

    Posté par  . En réponse au journal Un module apache pour programmer des applis web en C++. Évalué à 6.

    Je trouve que c’est une très bonne idée.

    Marre de ces langages de plus en plus lourd et qui, au final, n’apporte pas grand chose (attention, je parle de langage, pas des bibliothèques associés).

    J’aurais quand même préféré du C pure ou de l’ObjC, mais c’est déjà une très bonne idée en soit.
  • # Syslinux

    Posté par  . En réponse au message iso quelconque sur clé USB bootable. Évalué à 2.

    1) Copier le contenu du CD sur la clé
    2) Copier le fichier isolinux.cfg en syslinux.cfg
    3) Utiliser syslinux en précisant le chemin vers syslinux.cfg (http://syslinux.zytor.com/wiki/index.php/SYSLINUX)

    Pour moi ça marche à tous les coups.
    Ca se complique lorsque l’on veut mettre plusieurs CD bootable sur une clé seule clé USB.
  • [^] # Re: En-tête précompilée

    Posté par  . En réponse au message [C++/QT] Include unitaire/global. Évalué à 1.

    Je ne sais pas pourquoi, mais, après comparaison avec plusieurs projets, il semble que tu aies un "/" ou "./" de trop (en gras ci-dessous)
    g++ -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../qt/mkspecs/default -I. -I../../qt/include/QtCore -I../../qt/include/QtCore -I../../qt/include/QtGui -I../../qt/include/QtGui -I../../qt/include -I../ext/qcodeedit/lib -I../ext/qcodeedit/lib/document -I../ext/qcodeedit/lib/language -I../ext/qcodeedit/lib/qnfa -I../ext/qcodeedit/lib/widgets -I. -I. -x c++-header -c stable_header.h -o ./xinxcmp.gch/c++
    g++ -c -include /xinxcmp -m64 -pipe -g -Wall -W -D_REENTRANT -fPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../../qt/mkspecs/default -I. -I../../qt/include/QtCore -I../../qt/include/QtCore -I../../qt/include/QtGui -I../../qt/include/QtGui -I../../qt/include -I../ext/qcodeedit/lib -I../ext/qcodeedit/lib/document -I../ext/qcodeedit/lib/language -I../ext/qcodeedit/lib/qnfa -I../ext/qcodeedit/lib/widgets -I. -I. -o ./directoryedit.o directoryedit.cpp
  • # En-tête précompilée

    Posté par  . En réponse au message [C++/QT] Include unitaire/global. Évalué à 2.

    Pour faire fonctionner l'en-tête précompilée :

    1) Ajoute les lignes suivants au fichier projet (.pro)
    CONFIG += precompile_header
    PRECOMPILED_HEADER = stable.h


    2) Remplir le fichier stable.h avec les en-têtes stables (qui ne sont pas modifiables, par exemple les en-têtes Qt, mais pas les en-têtes du projet)

    3) Inclure le fichier stable.h au début de chaque fichier .cpp du projet

    Cela devrait marcher.
  • [^] # Re: Bonding

    Posté par  . En réponse au message Basculement automatique WiFi / Ethernet. Évalué à 1.

    Avec la bonne clé de recherche (Bonding), on trouve de la doc sur Internet.

    Je vais essayer ça.
    Merci
  • # Iptables

    Posté par  . En réponse au message Basculement automatique WiFi / Ethernet. Évalué à 1.

    Mon problème est essentiellement du à iptables, car celui-ci semble maintenir l’état des connexions ouvertes par interface (state full protocolaire).

    Il faut également que les 2 interfaces partagent la même adresse IP (DHCP avec 2 entrées ou même adresse MAC pour les 2 interfaces).
    La table de routage (poids plus important pour l’interface WiFi) et la détection automatique de l'état du lien Ethernet permettent de basculer automatiquement entre les 2 interfaces.

    C’est donc vraiment iptables qui m’embête.
    Pas d’idée pour ce point ?

    Merci d'avance.
  • # Que du bonheur !

    Posté par  . En réponse au journal Qgis 1.0 Kore est dehors. Évalué à 2.

    QGis est un excellent logiciel que j’utilise depuis la version 0.8.0 en tant que bibliothèque.
    En effet, QGis n’est pas qu’une application, c’est également une bibliothèque qui permet de visualiser, de modifier, d’importer et d’exporter des données géographiques dans une application Qt.

    Un grand bravo aux développeurs !