Archive pour la catégorie 'Informatique'

GWT 2.5 et les enums

Samedi 9 novembre 2013

GWT 2.5 a du modifier sa manière de sérialiser les enums, ce qui provoque des erreurs incompréhensibles du type:

An IncompatibleRemoteServiceException was thrown while processing this call.

Après avoir passé des soirées à chercher une solution, je peux dire que tout ça ne fonctionne pas:

  1. Nettoyer le cache du browser
  2. Clean du code dans eclipse
  3. Créer un construction vide public de l’enum
  4. Lui rajouter IsSerializable
  5. … Serializable
  6. Effacer les répertoires war/bla
  7. Effacer les répertoire unitCacheblablab

Le seul post intéressant que j’ai trouvé:

http://code.google.com/p/google-web-toolkit/issues/detail?id=7836

Workaround: hériter de

com.google.gwt.user.RemoteServiceObfuscateTypeNames

Autant faire la pub de cette “solution”, vu le nombre de propositions qui trainent sur le web.

Ubuntu Unity

Jeudi 9 février 2012

Ha ! La nouvelle version d’Ubuntu est sublime, avec transparence, menus intelligents, et j’en passe. On dirait presque un Windows 7 !

….

….

Bon, si comme moi, cette interface vous hérisse les poils sur la nuque, il y a moyen de la dégager vite-fait. Pour cela, installer Gnome Classic, et virer le paquetage unity. A la connexion, choisir Gnome Classic. Au passage, virer Ubuntu One: être prisonnier d’un cloud, non merci.

Seconde astuce du jour: pour virer un lanceur d’application dans le menu du haut, faire alt+click droit sur l’icône de l’application. Un menu apparaît qui propose de supprimer le raccourci. C’est loin d’être intuitif.

Sauvegarde pas cher

Dimanche 5 février 2012

Vous avez:

  • Des données personnelles à sauvegarder ?
  • Un Linux ?
  • Une freebox ?
#!/bin/bash
val=`mount | grep SAVE`
if [ "$val" = "" ]

then

mkdir /SAVE

mount -t cifs "//mafreebox.freebox.fr/Disque dur" /SAVE -o guest,iocharset=utf8,file_mode=0777,dir_mode=0777

result=$?

if [ "$result" != "0" ]

then

echo "Can't mount"

exit 1

fi

fi

mkdir /SAVE/rsync

rsync -rltgoDv --del --ignore-errors --force /home/ /SAVE/rsync/

Reste à rajouter ça quelque part en crontab et la sauvegarde est faite.

Les (le ?) sysadmins qui liront cette entrée de blog apprécieront particulièrement le style cracra du script, les tests d’erreurs et autres.

Mais mieux vaut une sauvegarde, même limitée, que rien du tout, non ?

Quelques remarques:

  • Le nom d’hôte “mafreebox.freebox.fr” est générique et pointe vers la bonne freebox.
  • Les attributs de fichiers ne sont pas sauvegardés, ce qui bien souvent n’est pas un problème; en général, on est déjà content de retrouver tous ses fichiers.

Disruptive ?

Dimanche 5 février 2012

Habituellement, je ne m’extasie pas devant du nouveau matériel informatique. N’en déplaise à mes collègues, je ne saute pas de joie devant un graphe de débit d’I/O disques ou une nouvelle nappe SAS 4 ports.

Mais là, j’ai été scotché.

Pourtant je savais bien à quoi m’attendre avec ce SSD.

Oui, je savais que le débit était maintenu avec des petites I/O, de l’ordre de 270 Mo/s… Que le lancement des applis serait instantané, et je dis biens “des applis”, c’est-à-dire en les lançant en même temps; le tout sans bruit, sans latence. Que le boot serait quasi-instantané…

Bon, ca fait quand même son effet. Et c’est agréable. Pas sûr de vouloir revenir sur un HDD après ça. En tout cas, le retour lundi au travail sur mon laptop pourrave sera pénible.

Quant à la capacité, 60Go, c’est largement suffisant pour stocker un système et le /home. Pour le reste, les “vidéos de vacances” et “mes compositions musicales”, resteront sur l’ancien HDD, là ou la latence reprend ses droits sans gêner l’utilisateur.

Du côté d’Ubuntu, il a fallu tweaker un tout petit peu: ce coquin n’active pas l’option “discard” par défaut pour les partitions ext4. Un moyen sûr de fusiller son SSD rapidement.

Update: le graphe de boot:

deimos-oneiric-20120210-1.png

Compatibilité du XML de QT

Samedi 21 août 2010

Voici la méthode la plus propre que j’ai trouvé pour écrire des fichiers XML en UTF-8 compatibles entre Windows et Linux avec Qt. (2.6.2 sous Windows et sous Linux):

Ecrire:


QDomDocument doc("toto");
QDomElement root=doc.createElement("toto");
// ... remplir root
QDomProcessingInstruction instr =doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
doc.appendChild(instr);
doc.appendChild(root);
QFile file(_userFile);
if (!file.open(QIODevice::ReadWrite | QIODevice::Truncate))
{
// gestion d'erreur
}
QTextStream stream("file");
stream.setCodec(QTextCodec::codecForName("UTF-8")); // Sous Windows, forcer UTF-8, sinon il utilisera le codec de la locale
stream << doc.toString();
file.close();

Passer par un QDataStream et/ou un QByteArray n’est pas une bonne idée.
Par ailleurs, la BOM UTF-8 en début de fichier est correctement lue sous Linux mais pas sous Windows (pourquoi ? mystère…). Donc il vaut mieux la supprimer et spécifier l’encodage en tant que processing instruction XML.

Pour lire:


QDomDocument doc("tata");
QFile file("myFile");
if (!file.open(QIODevice::ReadOnly))
{
// gestion d'erreur
}
if (!doc.setContent(&file, &errorMsg))
{
// gestion d'erreur
}

C++ vs Java

Jeudi 5 août 2010

Et c’est parti pour un troll des familles comme à la belle époque !

A ma gauche: Java

  • Cohérent de bout en bout.
  • Ne s’appuie pas sur un langage tout pourri des années 70; repensé par la base.
  • Bibliothèque large
  • Bonne intégration pour les SI et le Web
  • Disposent d’EDIs vraiment efficaces, comme Eclipse.

Mais…

  • Plutôt inadapté pour le TR et l’embarqué proche du système (mais ca n’a jamais été l’intention initiale)
  • Pas hyper-innovant non-plus. L’objectif est la cohérence et la productivité
  • Souffre d’une image de gros consommateur de mémoire…
  • Son GC est parfois incontrôlable

A ma droite, C++ (c’est de droite, C++ ???)

  • Construit sur un langage connu, C
  • Passe bien en embarqué et système

Mais:

  • Hérite de problèmes du C
  • … Rajoute une couche de problèmes par dessus - héritage multiple, templates…qui le rende bugogène.
  • Lourd à compiler (merci les templates)
  • Peut rester assez proche de la machine en cas de besoin
  • Niveau bibliothèque pour les SI, c’est pas ça (mais ce n’est pas son intention). Quant au web…
  • Le bazar niveau standard.
  • Dur à rendre cross-plateforme.
  • Pour les EDI, c’est la galère (à cause du préprocesseur, entre autres).

Moralité: C++ par dépit, mais Java quand c’est possible !

Quand le windsurf se fait bouffer par Microsoft

Mercredi 7 avril 2010

Ca fait longtemps que je n’ai pas bloggué, il parait. Pour rompre le silence, un petit billet d’humeur bien senti !

Qui ne connait pas le Défi Wind et ses records en nombre de participants ? Tout le monde connait, bien sûr !

Grâce à ses sponsors et à ses bénévoles, l’organisation est un véritable … défi, relevé chaque année avec brio ! Parmi ces sponsors, on trouve Microsoft; jusque-là, tout va bien. Sauf que comme par hasard, le site Web du défi repose sur SilverLight, le plugin de Microsoft concurrent de Flash. Et vous savez quoi ? Je n’arrive pas à l’installer sur mon Firefox sous Linux ! Dingue, non ? L’alternative: MoonLight, développé par Novell en utilisant Mono. Mais je ne veux pas avoir à maintenir un énième plugin pour Firefox…Du coup, comme l’an dernier, je n’irai pas voir le site du Défi !

Vous me direz, ce n’est plus très grave puisque je ne participe pas (et que je me drogue maintenant à un sport de glisse alternatif), mais tout de même, c’est moche de se faire bouffer comme ça par un partenaire qui cherche à refourguer sa camelote.

Un petit projet qui avance

Samedi 23 janvier 2010

Pour ma recherche d’emploi active, je me suis mis en quête d’un outil dédié et unique pour rechercher des offres et les suivre à l’aide d’un journal d’évènement.

Et voici FreeJobFinder !

Ce petit outil encore au stade du développement, mais déjà fonctionnel pour moi (je m’en sers tous les jours) me fournit le niveau d’organisation que je cherche. Finies les feuilles volantes,les numéros de téléphone disséminés et sans nom, les “oublis” malencontreux.

Il permet entre autres:

  • De rechercher des offres sur expectra, monster et apec
  • De faire un suivre d’offres dédié par journaux avec possibilité d’attacher des références à des fichiers
  • De faire le même suivi d’offres avec des offres rentrées manuellement (pour les veinards qui se font contacter directement)
  • D’avoir un calendrier des évènements à venir (entretiens, rappels, …)
  • De faire des synthèses sous forme HTML, pratiques pour avoir un justificatif de recherche auprès de Pôle Emploi

(plus de screenshots sur la page du projet)

Bref, l’essayer c’est l’adopter.

Scrum, l’obsession

Jeudi 7 janvier 2010

Ces temps-ci, j’enchaine à un rythme effréné (*) les lectures sur Scrum.

L’incontournable Scrum and XP From the Trenches

Les aventures d’un homme et son équipe qui implémentent Scrum. Ce qu’ils ont testé, ce qui marche, ce qui ne marche pas. Pragmatique et honnête. L’important dans tout ça, c’est d’être capable d’affronter l’auto-critique et de s’adapter.


The Enterprise and Scrum

Par Ken Schwaber, un des grands penseurs (!!) de Scrum. Comment intégrer Scrum dans une entreprise moyenne ou grande, comment migrer les anciens postes de manager (vers ScrumMaster et P.O), comment gérer les dépendances entres les modules logiciels ?

Là, c’est un peu moins paragmatique, il cherche à vendre son truc à tout prix. Là ou j’ai été très le moins convainc, c’est à propos de la rémunération: l’équipe est prise dans son ensemble, et les primes sont distribuées également entre tous les individus. Communiste, monsieur Schwaber ? Ça se rapproche de la réponse qu’on m’avait faite lors de ma formation de P.O: les développeurs sont rémunérés par la reconnaissance de leurs pairs….. bah non en fait, il y a des gens motivés par l’idée d’une grosse prime pour pouvoir partir en vacances :-) J’avais lu que les gens ne considèrent pas la rémunération financière comme l’aspect le plus important de leur travail, mais quand même, j’ai du mal à m’en convaincre.

Pareil sur la gestion humaine: un “banc” ou les développeurs sont en attente d’un projet. Quand ils restent trop longtemps sur le banc, on vire. Pas sûr que le code du travail français s’accommode de ce genre de méthodes….

On pourrait rapprocher le poste de P.O de celui de “chef de projet fonctionnel” et celui de ScrumMaster de “chef de projet technique”, mais les noms ont été volontairement changé pour réprésenter le fait que le ScrumMaster est un facilitateur et non pas un “chef”à la sauce Command’n Control, et que le P.O n’a pas de prise sur l’architecture et la technique. Sauf qu’en pratique, le P.O a vraiment intérêt à comprendre tous les rouages techniques pour pouvoir demander des solutions alternatives au besoin. Ce qui est intéressant, c’est de constater que le ScrumMaster a quand même beaucoup de pouvoir dans sa vision des choses; c’est très éloigné de ce que j’en avais retenu.

Enfin, pour le reste, c’est intéressant, ça contient de bonnes idées.

(*) Chômage Power

Gestion de Projet - Episode 5 - Gestion de projet, Vers les méthodes agiles

Dimanche 25 octobre 2009

A noter: il existe maintenant une 2nde édition. Je parle ici de la première édition.

Ce dernier ouvrage clôt mon cycle de lectures sur la gestion de projet. Et il le clôt admirablement bien ! Ce livre remporte clairement la palme, même si je n’ai pas choisi l’ordre pour terminer par le meilleur !

Très clair, très bien organisé, il met en parallèle deux types de gestion de projet: approche classique et approche agile, avec un parti pris très net pour les méthodes agiles. Néanmoins, le contenu n’en souffre pas. Ce qui est très sympathique, c’est que chaque chapitre aborde directement le fond du problème, là ou ça fait mal, sans langue de bois ni métrique à 2 sous. Très moderne, il ne conçoit pas une équipe projet comme une somme de compétences à diriger mais comme des gens qui vont collaborer pour être productifs ensemble. Et toujours de façon pragmatique !

Le chapitre 7 “Adopter une méthode agile” est très intéressant parce qu’il donne de bons guides pour implémenter une méthode agile (à choisir parmi Scrum, XP, UP, mais aussi Crystal et DSDM).

Bref, je recommande très chaudement !