Ah, l’auto-initiation au langage C ;)

J’ai toujours été curieux de comprendre les rudiments du langage C. Bien que le site du Zéro propose un cours intéressant, il n’est pas assez « linuxisé » pour moi. En faisant quelque recherches, je suis tombé sur ce site qui propose un cours pour débutant en C.

Voici donc un programme que j’ai rédigé en C avec gedit pour un truc basique : l’application du théorème de pythagore. Il est tout sauf prémuni contre les mauvaises saisies. Je débute en C, et cela doit faire 3 heures que je le pratique, bien qu’ayant quelques notions de programmation grâce à Python.

C’est du brut de décoffrage, z’êtes prévenu. Pour les pros du C, merci de ne pas m’envoyer des missives enflammées. Je voudrais avoir des rudiments de C, cela peut toujours servir 😉

/* Programme 12 du cours de C pour Linux.

Calcul de l’hypothénuse. Pythagore.

Il faudra insérer les fonctions maths de C => #include
et donc rajouter à la ligne de compilation -lm

D’après le chapitre 4 du cours de C pour linux :

http://lesouriciergris.free.fr/linux_cours_c.html

Bouh, que je suis nul en C 😉

*/

// On commence par les includes
// racine carrée => sqrt()
// Pythagore => racine carrée de a²+b²

# include <stdio.h>
# include <math.h> // prise de tête !!!! 🙂

int main () // Boucle principale
{
// Il faut deux valeurs entière, les deux cotés a & b
// et une valeur float nommée hypo qui sera sqrt(a²+b²)

// Valeurs entières a & b, initialisée par défaut à 0.
int a,b = 0; // les deux cotés

float hypo; // hypothénuse, float pour le calcul de la racine.

// On affiche le but du programme :

// Saisie du coté a puis du coté b, deux entiers.

printf (« Valeur de a : « );
scanf (« %d », &a); // scanf va prendre en compte la saisie du clavier
// %d => nombre entier, &a => variable a.
// et de même pour b.

printf (« Valeur de b : « );
scanf (« %d », &b);

// calcul de l’hypothénuse.

a = a*a; // a² please.
b = b*b; // b² please.
hypo = sqrt(a+b); // racine de la somme des deux cotés au carré.

printf (« L’hypothénuse a donc une valeur de %.3f :\n »,hypo);
// 3 chiffres après la virgule.

return(0); // On quitte proprement, voyons.
}

Je sais, ce code est moche, lourd, mal optimisé, mais je débute en C… Et j’avoue être content d’avoir réussi sans regarder la solution 😉

NB : les indentations n’ont pas été conservées.

Cela se compile sans problème avec mon gcc 4.2 sous Linux. Des retours de la compilation de ce code sous d’autres compilateurs ?

Vrac’ons librement et rapidement ;)

Un « en vrac » rapide consacré au logiciel libre :

  • Sortie de la version alpha2 de Shredder : pas mal de nouveautés dont une meilleure intégration dans MacOS-X, support IMAP amélioré, filtre antispam amélioré. Pour une liste des bogues corrigés, il suffit d’aller sur le Rumbling Edge.
  • Firefox 3.0.2 et 2.0.0.17 sont prévus pour les environs du 3 septembre, dixit le Firefox Extension Guru’s Blog.
  • OpenArena basé sur le code source de Quake 3 Arena est en version 0.80. Et cerise sur le gateau, un exécutable AMD64 pour linux existe 😉
  • La 3ième RC du noyau linux 2.6.27 vient de sortir. Et selon Linus, le pilote ath9k a été rajouté dans le code du noyau. Dommage que cela ne concerne pas mon circuit wifi atheros 5007eg 🙁
  • WordPress 2.6.1 béta2 est disponible. Pour tout dire, n’ayant vu aucun bug dans la version 2.6.0, je ne sais pas si je n’attendrais pas la version 2.7.0 avant une nouvelle migration du logiciel.

ZenWalk 5.2 « Gnome Edition » : un petit tour du « propriétaire »

La ZenWalk est dérivé de la distribution slackware, tout en incluant des paquets assez récent. Bien qu’utilisant principalement l’environnement Xfce, une version utilisant l’environnement gnome est disponible. Du moins, en version béta 😉

Ayant téléchargé l’image ISO, j’ai créé une machine virtuelle et comme la distribution est assez légère, je ne lui ai donné que 16GiO de disque. Et avec une mémoire vive de 768 Mo, j’ai donc utilisé la ligne de commande suivante :


fred@fred-laptop:~/download$ qemu-img create -f raw zenw.img 16GFormatting 'zenw.img', fmt=raw, size=16777216 kB
fred@fred-laptop:~/download$ kvm -m 768 -hda zenw.img -k fr -localtime -soundhw all -cdrom zenwalk-gnome-5.2beta.iso -boot d &

L’installation se fait en mode semi-graphique, dans un anglais assez simple, et le tout est assez automatisé. J’ai pu noté que le formatage des partitions d’installation (une / et une /home) utilise le format xfs au lieu du classique ext3fs.

Après l’installation des paquets, l’ajout de l’utilisateur et le support du circuit son sont effectués au premier redémarrage. Ensuite, on arrive sur un écran de connexion tout ce qu’il y a de plus classique.

écran de connexion de la Zenwalk 5.2 gnome edition

Continuer la lecture de « ZenWalk 5.2 « Gnome Edition » : un petit tour du « propriétaire » »

Le retour d’un serpent de mer : QT avec Mozilla ;)

Sous linux et autres unix, Firefox utilise le toolkit GTK. Or à une époque reculée, un port pour QT pour la suite Mozilla avait été commencé, puis abandonné. cf le bogue 178987.

Or, en lisant OSNews, j’ai pu lire que le port était de nouveau en vie. Le wiki de Mozilla propose des infos pour compiler cette version. Cependant, j’ai préféré prendre une version déjà précompilée, en l’utilisant sous une Fedora 10 alpha 32 bits avec KDE 4.1. Gain de temps ? Une bonne heure 🙂

La version proposée semble être basée sur du code compilé le 4 août 2008.

Voici donc le résultat avec Acid3 et Google :

Acid3 sous Shiretoko en version QT

Google sous Shiretoko en version QT
Pour la petite histoire, peu après la libération du code source de mozilla fin mars 1998, le premier port fut effectué sous QT par Trolltech.

http://trolltech.com/company/newsroom/announcements/00000007

Le bogue qui permet de suivre l’évolution du port est le 448989. Donc si vous êtes intéressé par l’intégration de QT, c’est le bogue à suivre.

Vladimir Vukićević explique le pourquoi du comment de ce port.

Bref, c’est une bonne nouvelle pour les utilisateurs de KDE 4.x qui auront désormais un look natif pour les widgets, du moins quand Shiretoko sortira 🙂

Vers Syllable 0.6.6.

En mars dernier, j’avais testé Syllable 0.6.5. La sortie d’une version de développement qui deviendra la 0.6.6 en temps.

Pour tester cette version, j’ai créé une machine virtuelle avec 8 Go de disque.

fred@fred-laptop:~/download$ qemu-img create -f qcow2 syl.img 8G
Formatting 'syl.img', fmt=qcow2, size=8388608 kB
fred@fred-laptop:~/download$ kvm -m 768 -hda syl.img -k fr -localtime -soundhw all -cdrom SyllableDesktop-0.6.6-20080803.i586.iso -boot d &

L’installation est similaire à celle déjà abordé dans le précédent billet, et l’OS semble largement plus utilisable. La configuration du réseau se résume à l’activation du serveur DHCP.

Configuration du DHCP sous Syllable 0.6.6

La localisation en français bien qu’imparfaite est très facile à mettre en route.

Ajout d'une localisation dans Syllable 0.6.6

De même pour l’ajout d’un utilisateur avec son mot de passe.

Ajout d'un utilisateur sous Syllable 0.6.6

Mot de passe pour un nouvel utilisateur sous Syllable 0.6.6

Un nouveau navigateur Web, connu sous le nom de Webster utilisant Webkit est disponible. Bien que ce soit apparemment une vieille version ou alors l’intégration est encore en cours. Car le test acid3 n’offre qu’un résultat de 66 / 100. Mais le rendu est agréable à voir.

66 / 100 pour Webster sous Syllable 0.6.6

Ce qui ressort de ce test rapide : rapidité de démarrage, d’utilisation, souplesse, facilité de configuration. Bref, que du bonheur. Un grand OS en devenir !

Acid3 : état des lieux début août 2008.

Je profite de la moiteur de ce mois d’août pour faire un bilan sur le passage du test Acid3. Je me limite aux navigateurs utilisables sous Linux, qui recoupe quasi-complètement le nombre des navigateurs existant, à l’exception d’Internet Explorer et de Safari.

Mis à part le score parfait de Safari et le score « piteux » des versions 6 et 7 d’Internet Explorer, il n’y a pas grand chose à rajouter.

En mars dernier, j’avais déjà fait un premier état des lieux. Voyons donc en cinq mois quelles sont les différences. –

Firefox 3.0.x : Le test nous donne un joli 71 / 100.

Shiretoko – ce qui deviendra plus tard Firefox 3.1 – post-alpha1 / pré-alpha2 : 85 / 100. Cf cette précédente note.

Opera pré-9.52 : 83 / 100

83/100 avec Opera pré-9.52

Konqueror 4.1 en utilisant le liveCD proposé par OpenSuse : http://home.kde.org/~binner/kde-four-live/

J’ai installé le liveCD dans une machine virtuelle kvm, mais pas de connexion possible. Bug de Konqueror ? De Kvm ?!

Problème de connexion de Konqueror 4.1.0

J’ai compilé la révision 35542 de Webkit. Epiphany 2.24.x (qui sortira en septembre) utilisera aussi webkitGtk.

Et un score parfait à la clé.

Score parfait de webkit sous acid3

Vers un coeur commun entre Shiretoko, Shredder et SeaMonkey 2 ?

C’est une idée envisageable, étant donné que le dépot du code source de Shredder et de SeaMonkey pré-2.0 viennent de migrer, abandonnant le vieux dépot CVS vers un dépot mercurial.

Si l’on veut compiler soit-même le code source dit du « tronc » des logiciels de la Fondation Mozilla, que ce soit Shiretoko, Shredder ou SeaMonkey pré-2.0, il faut maintenant passer par des dépots mercurial.

Si le développement de Shiretoko est maintenant bien ancré sur un dépot mercurial, à savoir mozilla-central, c’est loin d’être le cas pour Shredder et SeaMonkey pré-2.0. Voici donc comment compiler Shredder ou SeaMonkey en utilisant le dépôt mercurial comm-central.

Déjà, il faut avoir autoconf 2.13 et mercurial pré-installé. Pour cela, il faut se conférer à la documentation de votre distribution pour savoir comment faire.

Ensuite, il faut récupérer le code source commun à Shredder et SeaMonkey pré-2.0 :

hg clone http://hg.mozilla.org/comm-central/ src

Une fois le code récupéré, il faut récupérer le complément à savoir le code en commun avec Shiretoko :

python client.py checkout

Pour cette partie, l’outil CVS configuré correctement est indispensable. En clair, il faut que la variable CVSROOT soit définie ainsi :

export CVSROOT= »:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot »

Vient le moment stratégique, préparer le .mozconfig pour les options de compilation. Il faut ajouter les deux lignes suivantes :

ac_add_options --enable-application=mail
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-tb

Et virer un . $topsrcdir/mail/config/mozconfig qui aurait pu s’y trouver si on récupère un vieux fichier .mozconfig

Voici pour information mon .mozconfig pour Shredder :

#
# See http://www.mozilla.org/build/ for build instructions.
#

ac_add_options –enable-application=mail
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-tb

# Options for ‘configure’ (same as command-line options).
ac_add_options –enable-optimize= »-Os -march=native -w -pipe »
ac_add_options –disable-debug
ac_add_options –disable-tests
ac_add_options –enable-default-toolkit=cairo-gtk2
ac_add_options –enable-static
ac_add_options –disable-shared

Ensuite, il suffit de lancer la compilation et d’attendre.

Et voici ce que donne une boite « about » d’un Shredder compilé avec le code source du dépôt mercurial comm-central.

Shredder pré-alpha2 ?

Les pages qui m’ont aidé pour rédiger cet article :

http://wiki.mozilla.org/SeaMonkey:hg-based_build
http://developer.mozilla.org/en/docs/Mozilla_Source_Code_(Mercurial)
http://developer.mozilla.org/en/docs/Comm-central_source_code_(Mercurial)
http://developer.mozilla.org/en/docs/comm-central

Debian 5.0 alias Lenny… Deuxième reprise ;)

Au mois de mai dernier, j’avais fait un tour rapide de la Debian Lenny. Maintenant que la version finale de Lenny approche à grand pas – elle est prévue pour septembre ou octobre prochain – j’ai téléchargé une version de développement récente (image iso datée du 21 juillet) pour voir ce que donne cette version 5.0 de la distribution Debian.

Je passe sur les détails techniques de la machine virtuelle qui sont toujours les mêmes. J’ai utilisé le nouvel installateur graphique en version « graphique expert ».

Lancement de l'installation de la Debian Lenny en mode graphique expert

Après avoir choisi le français, l’installation est très simple, et se résume à une série de saisie d’informations et de presse bouton qui donne un coté « simple » à cette opération d’une complexité non dissimulée 😉

Notons qu’un noyau 2.6.25 est proposé à l’installation. Un noyau aussi récent pour une debian, cela dépote 😉

Noyau 2.6.25 sous Debian Lenny

Notons aussi que Grub 2 est proposé par l’installateur. Bien qu’encore expérimental, j’ai décidé pour cette machine virtuelle d’installer cette version.

Grub ou grub 2 ?

L’écran de démarrage graphique est du plus bel effet et donne un coté jeune à la Debian.

Grub 2 en action

Une fois l’installation terminée, une vingtaine de mises à jour sont proposée, dont OpenOffice.org 2.4.1. La version débianisée de Firefox, le dénommé IceWeasel est toujours en version 3.0, et que Gnome est en version 2.22.3.

Iceweasel et Gnome 2.22.3 sous Debian Lenny

Le seul gros problème, c’est que la résolution de X est trop faible.

J’ai donc du modifier le fichier /etc/X11/xorg.conf et modifier les sections Device, Monitor et Screen pour avoir quelque chose de potable : du 1024×768…

Section « Device »
Identifier    « Configured Video Device »
Driver        « cirrus »
EndSection

Section « Monitor »
Identifier    « Configured Monitor »
HorizSync    30-70
VertRefresh    50-160
EndSection

Section « Screen »
Identifier    « Default Screen »
Monitor        « Configured Monitor »
Device        « Configured Video Device »
Device        « Configured Video Device »
DefaultDepth    24
SubSection « Display »
Depth    24
Modes    « 1024×768 » « 800×600 » « 640×480 »
EndSubSection
EndSection

Mis à part ce bogue, la debian lenny s’annonce sous les meilleures auspices. J’attends avec impatience la version finale de cette distribution pour peut-être y migrer, ou l’installer sur un PC fixe qui n’a pas besoin des derniers logiciels en date 😉

Quoi de neuf avec Shiretoko Alpha 1 ?

Si on en croit ce bilan hebdomadaire de la Fondation Mozilla reproduit sur le blog « Firefox Extension Guru’s Blog« , Shiretoko alpha 1 devrait sortir le 25 juillet prochain, le code ayant été gelé à 23 h 59, heure du Pacifique, soit Paris – 9 heures.

Qu’y aura-t-il dedans, sauf changement de dernière minute ?

84 / 100 pour le test Acid3 sous Shiretoko alpha1

Bref, que du bon, et encore du meilleur à venir. Enfin, on verra bien ce que cela donnera lors de la sortie de la version finale, prévue pour fin 2008, début 2009.

Quand Linus prend sa revanche du Theo De Raadt…

En juin 2005, le fondateur du projet OpenBSD avait descendu en flamme le projet linux, déclarant entre autre que :

« It’s terrible, » De Raadt says. « Everyone is using it, and they don’t realize how bad it is. And the Linux people will just stick with it and add to it rather than stepping back and saying, ‘This is garbage and we should fix it.' »

Ce qui donne traduit :

« C’est terrible, » déclare De Raadt. « Tout le monde l’utilise, et ils ne réalisent pas à quel point c’est mauvais. Et les linuxiens restent avec et ajoute des trucs au lieu de faire marche arrière en disant : ‘c’est de l’ordure et on devrait corriger cela. »

Un peu plus de trois ans plus tard, dans un courrier concernant la sortie de la version 2.6.25.10, Linus Torvalds prend sa revanche.

Je cite :

Btw, and you may not like this, since you are so focused on security, one
reason I refuse to bother with the whole security circus is that I think
it glorifies – and thus encourages – the wrong behavior.

It makes « heroes » out of security people, as if the people who don’t just
fix normal bugs aren’t as important.

In fact, all the boring normal bugs are _way_ more important, just because
there’s a lot more of them. I don’t think some spectacular security hole
should be glorified or cared about as being any more « special » than a
random spectacular crash due to bad locking.

Security people are often the black-and-white kind of people that I can’t
stand. I think the OpenBSD crowd is a bunch of masturbating monkeys, in
that they make such a big deal about concentrating on security to the
point where they pretty much admit that nothing else matters to them.

To me, security is important. But it’s no less important than everything
*else* that is also important!

Ce qui donne traduit :

A propos, et vous ne pourriez pas aimer cela, puisque vous êtes tellement concentré sur la sécurité, une raison pour laquelle je refuse de m’ennuyer avec tout le cirque sécuritaire est car je pense que cela nous entraine dans une mauvaise direction.

Cela fait des « héros » des personnes de la sécurité, comme si les personnes qui corrigeaient les bogues n’étaient pas aussi importantes.

En fait, tous les ennuyeux bogues normaux sont bien plus important, car ils y en a beaucoup plus. Je ne pense pas qu’un spectaculaire trou de sécurité devrait être glorifié ou plus pris en compte comme quelque chose de « spécial » qu’un plantage aléatoire et spectaculaire du à un mauvais verrouillage.

Les personnes s’occupant de la sécurité sont souvent des personnes voyant tout en noir et blanc et cela m’insupporte. Je pense que les gens d’OpenBSD sont un paquet de singes se masturbant dans le sens où ils se concentrent tellement sur la sécurité au point qu’ils finissent par admettre que rien d’autre n’existe pour eux.

Pour moi, la sécurité est importante. mais ce n’est pas moins important que *tout* le reste qui est aussi important.

J’avoue que je suis d’accord en partie avec Linus, même si j’avoue avoir un petit faible pour le cryptique OpenBSD. Mais après tout, entre deux grandes gueules comme Linus Torvalds et Theo de Raadt, que demander de plus ? 😉

Firefox se « bling-bling »iserait-il ?

On peut le penser, surtout avec l’arrivée d’un correctif pour le bogue 395980, qui introduit via le raccourci touche control + tabulation l’aperçu des onglets sans avoir besoin de changer de page.

Ce correctif ne concerne que la version de développement de Firefox 3.1, alias Shiretoko qui est prévu pour fin 2008, début 2009.

Une petite vidéo faite sur mon PC il y a quelques minutes explique mieux le principe.

Utile ? Peut-être pas outre mesure au premier abord. Bling bling ? Sûrement 😉

Vrac’ons librement.

Un en’vrac rapide consacré au logiciel libre.

  • Sortie de WordPress 2.6 ce matin. Pour avoir un aperçu des nouveautés en vidéo, cf cet article. La version française ne saurait tarder.
  • Sur son blog, Antistress nous annonce que Gnome 3.0 s’approche enfin. Et ce que ce serait la version 2.28 qui sera suivi par la 3.0. Donc, si le cycle des 6 mois est respecté, Gnome 2.24 en septembre prochain, la 2.26 en mars 2009, la 2.28 en septembre 2009. Donc Mars 2010 pour la version 3.0 ? 🙂
  • Ce matin, pour les utilisateurs d’Hardy Proposed, en plus d’une mise à jour de sécurité concernant pcre, on a droit à des mises à jour des traductions… Qui permettent d’avoir un firefox 3.0.1 entièrement traduit.

Voila, c’était du rapide, mais j’avais besoin de le faire 😉

Sortie du noyau linux 2.6.26 !

En jettant un oeil sur kernel.org, j’ai pu voir arriver un certain 2.6.26 après 9 versions rc. En attendant un résumé sur linuxfr.org, je suis allé sur Kernel Newbies histoire de voir les nouveautés de cette version.

En gros :

  1. Kvm a été porté sur architecture s390, powerpc et ia64. Sympa pour les utilisateurs de ces plateformes.
  2. Support des webcams améliorés. Joie 🙂
  3. Support du futur standard internet sans fil 802.11s.
  4. Ajout d’un débogueur au niveau du noyau
  5. Ajout d’un testeur de mémoire intégré au noyau
  6. Support des OLPC

Bref, pas mal de bonnes choses. Surtout un meilleur KVM, ce qui est quand même assez plaisant pour les fondus d’émulation dont je fais parti 😉

J’avoue attendre avec impatience le compte rendu sur linuxfr.org, car ce sont des articles souvent très intéressant, comme pour l’arrivée du noyau 2.6.25 en avril dernier.

Rajout à 11 h 25 : excellent article sur linuxfr.org concernant le noyau 2.6.26.

En suivant le flux « Planet-Debian »…

Je suis tombé sur cet article qui regroupe un certain nombre de projets libre ou open-source.

Devinette liée aux projets libres et open-source

J’en ai identifié 13 projets, bien que je pense en avoir raté un ou deux. Donc, quels sont les projets que vous avez identifié ? 🙂

Bien entendu, copier / coller les réponses tirés des commentaires de l’article source sera une forme de tricherie non acceptable 🙂

A vos réponses dans les commentaires 😉

Les aléas du dépot « proposed ».

Si utiliser le dépot « proposed » d’une distribution Ubuntu Linux est souvent intéressant, il y a parfois quelques effets de bords qui sont plus ou moins génants.

Si, en gros, 99% du temps, une mise à jour ne pose quasiment aucun problème, le dernier pourcent restant peut être ennuyeux, pour ne pas dire qu’il facilite franchement le transit intestinal.

Ce matin, les dépots proposed ont installés une mise à jour 3.0.1 pour un certain Firefox 3, ce qui :

  1. Laisse penser que Firefox 3.0.1 ne va pas tarder
  2. Que les équipes de veille d’Ubuntu Linux ont vraiment l’oeil à tout

Voici ce que l’on pouvait voir :

Firefox 3.0.1 dans Hardy Proposed

Bref, une mise à jour classique. Classique, pas franchement. Car désormais, les extensions sont vérifiées à chaque démarrage – en mode silencieux. Et manque de pot, les traductions ne sont pas « compatibles ». Voici le message d’erreur qu’on peut avoir :

Extensions incompatibles ?!

Moralité ? Le firefox disponible démarre alors en anglais. Voir le bogue 247494 en ce qui concerne le problème. Cela ne me dérange pas outre mesure, n’utilisant pas la version 3.0, et encore moins la traduction française qui souffre – selon moi – d’une mauvaise traduction du terme « bookmarks » en marque-pages alors que le terme de signets était utilisé auparavant.

Bref, il faudra attendre une mise à jour du paquet language-pack-gnome-fr-base qui contient les fichiers de traduction de Firefox et du xulrunner désactivé par sécurité. Quelques jours d’attente, donc, pas de quoi casser 3 pattes à un canard 😉