Archives 2009

Fonctionnalités du shell avec Lazarus

Lazarus Logo

J’essaye en ce moment de converir un composant Delphi vers Lazarus. Le travail se passe bien mais j’ai quelques difficultés à trouver des équivalent multi-plateforme FPC/Lazarus. Ceci serait fatalement complexe puisques ces fonctions concerne l’integration du shell (comprendre fonction de bas niveau du bureau) et chacun a sa propre approche.

Voici le code classique qui me donne des maux de tête :

//Cette fonction spécifique à Windows devrais être difficile à convertir
//On aurais besoin ici de quelque chose utilisant les types mime, de toute façon
//beaucoup plus de code serais nécéssaire...
procedure GetFileExtensionShellDescription(Ext: string;
var FileTypeName: string; var ShellImageIndex: Integer);
var
  I, J: Integer;
  T: string;
  L: TImageList;
  sFI: TSHFileInfo; //Spécifique à Windows mais un autre type pourrais être équivalent
  Icon: TIcon;
  PCh: PChar;
  P: PFileDescriptionRecord;

begin
  FileTypeName := '';
  I := RegisteredExtensions.IndexOf(Ext); //un TStringList défini en variable globale
  if I = -1 then
  begin
    New(P);
    P^.FileType := '';
    Icon := TIcon.Create;
    for J := 0 to 1 do
    begin
      if J = 0 then
        L := ShellSmallImageList
      else
        L := ShellLargeImageList; //les deux sont des TImageList
      GetMem(PCh, MAX_PATH);
      GetTempPath(MAX_PATH, PCh); //ces lignes peuvent être remplacés
      T := PCh + 'TEMP' + Ext;     //par GetTempDir dans FileUtil
      FreeMem(PCh);
      TFileStream.Create(T, fmCreate or fmOpenWrite).Destroy;
      //ce qui suit est le plus gros problème... Impossible de trouver un
      //équivalent avec Lazarus. Des idées ? Les types Mime et l'implémentation
      //FreeDesktop devraient fournir ceci...
      if SHGetFileInfo(PChar(T), 0, sFI, SizeOf(sFI),
        SHGFI_TYPENAME or SHGFI_ICON or
        (SHGFI_SMALLICON * (1 - J) + J * SHGFI_LARGEICON)) <> 0 then
      begin
        Icon.ReleaseHandle;
        Icon.Handle := sFI.hIcon;
        P^.FileType := sFI.szTypeName;
      end;
      P^.OpenImageIndex := L.AddIcon(I);
      P^.CloseImageIndex := P^.OpenImageIndex;
      if J = 1 then
        I := RegisteredExtensions.AddObject(Ext, TObject(P));
    end;
    Icon.Destroy;
  end;
  with PFileDescriptionRecord(RegisteredExtensions.Objects[I])^ do
  begin
    ShellImageIndex := CloseImageIndex;
    FileTypeName := FileType;
  end;
end;

Le problème a l’air simple, nous avons juste besoin de retrouver les icones du système pour chaques extentions de fichiers mais rien n’est actuellement disponible dans Lazarus pour le faire simplement. Je sais que FreeDesktop fourni un interface commun pour tout les environnements de burreau modernes sous Linux, autorisant ce genre de fonctionnalités, de telle sorte que baucoup de logiciels n’utilisant pas la même API peuvent le faire (ex. des applications Gnome lancées sous KDE qui utilisent les thèmes de KDE). Y a-t-il un moyen d’envisager une telle implementation qui est la base de l’intégration du burreau ? Ceci devrais être une excellente valeur ajoutée à Lazarus…

Créer un routeur avec Linux

RouteurVeuillez remarquez que cet article est devenu obsolète. Les instructions suivantes devraient fonctionner sur de vieux systèmes, autrement veillez à ne pas les utiliser. Un tutoriel mis à jour et plus complet sera disponible entre le 25 et le 30 mars 2011.

Créer un routeur sous Linux en recyclant un bon vieil ordinateur est un très bon moyen de créer un sous réseau sécurisé. Malheureusement, les billets contenants des explications claires de la procédure ne sont pas aussi simple à comprendre qu’ils le devrais.

Pour ce faire vous avez besoin d’un ordinateur très simple. Personnellement j’utilise un P3 600 MHz avec 327 Mo de RAM et un disque dur de 20 Go. C’est bien plus que nécessaire pour cet usage, mais cette machine est aussi un serveur HTTP et FTP. Par exemple, mon précédant routeur était un Pentium 200 avec 48 Mo de RAM et un disque dur de 500 Mo, ce qui tournais très bien sous une Debian Etch. Concernant les interfaces réseaux, vous aurez besoin d’une carte Ethernet en plus de ce qui vous est nécessaire pour l’accès Internet, qui est probablement une autre carte ethernet. Vous aurez également besoin d’un hub ethernet connecté à cette carte réseau. Si vous avez besoin du sans fil, je recommande une troisième carte réseau Ethernet (donc un second sous-réseau), ou vous n’aurez qu’un point d’accès WiFi installé. Si vous ne pouvez (ou ne voulez pas) avoir une troisième carte réseau vous pouvez toujours connecter votre point d’accès au hub mais c’est mois sécurisé.

Toute les instruction qui suivent, supposeront qu’une Debian Lenny ou Etch est installé sur la machine de routage (ce qui est un assez bon choix) avec une connexion Internet fonctionnelle. Vous n’aurez qu’à installer le système de base. Il n’est pas recommandé d’installer X et des applications graphique car la sécurité est le principal but de ce type de routeurs.

Ceci fait, vous devez passer en compte root pour tout le reste de la procédure et installer les paquets suivants :

  • dhcp3-server qui attribuera automatiquement les adresses IP des clients de votre sous-réseaux
  • dhcp3-client est utile si votre modem vous fourni une adresse IP dynamique ou si ce modem est lui-même un routeur (généralement installé par défaut)
  • iptables qui est un pare-feu et fournit la traduction d’adresse (NAT) (généralement installé par défaut)
  • iptables-persistent qui conservera les paramètres d’iptables et le restaurera en cas de redémarrage du routeur
  • nano un éditeur de texte simple (généralement installé par défaut)
  • w3m (ou n’importe quel navigateur en mode texte) pour tester la connexion internet sur le routeur
  • Tout autre serveur public utile pour vous, comme Apache, proFTPd, BIND…

D’abords je doit définir quelques termes pour être précis. Imaginez le plan suivant :

  • eth0: connecté à votre modem (zone internet) avec l’adresse 192.168.0.1
  • eth1: connecté à votre réseau Ethernet privé avec l’adresse 192.168.1.1
  • eth2: connecté à votre point d’accès WiFi (zone optionnelle WiFi) avec l’adresse 192.168.2.1

Bien sur vous devrez remplacer ces valeurs par celles de votre configuration et avec les adresses réseaus de votre choix (doit commencer par 192.168). La zone internet est automatiquement configuré par dhcp-client situé dans le script d’initialisation du système mais ce n’est pas le cas des deux autres réseaux. A moins d’avoir donné les bonnes valeurs pendant l’installation, vous devez le configurer manuellement en éditant le fichier « /etc/network/interfaces »:

# Begin of /etc/network/interfaces

# Configuring the loopback interface
auto lo
iface lo inet loopback

# Primary network interface (internet zone)
allow-hotplug eth0
iface eth0 inet dhcp

# Private network
iface eth1 inet 192.168.1.1
iface eth2 inet 192.168.2.1

À présent il faut éditer le fichier « /etc/dhcp3/dhcpd.conf » pour activer le serveur DHCP (Dynamic Host Configuration Protocol) :

# Begin /etc/dhcp3/dhcpd.conf

# Use ad-hoc style name server updating procedures
ddns-update-style ad-hoc;

# Configure client's dns settings: replace 212.27.40.24x with your ISP DNS servers and
# optionally add your DNS server (192.168.1.1 here) if you have your own.
option domain-name "jeff.levasseur.org";
option domain-name-servers 212.27.40.241, 212.27.40.240, 192.168.1.1;

# Configure lease time (in seconds)
default-lease-time 600000000;
max-lease-time 720000000;

# eth1 subnet configuration: this will give address from 192.168.1.10 to
# 192.168.1.99 and it's the only thing you may change. Note that you
# can have several range, and ranges with only one address.
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.10 192.168.1.99;
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
}

# eth2 subnet configuration: here you have an exemple of multiple range
subnet 192.168.2.0 netmask 255.255.255.0 {
    range 192.168.2.2 192.168.2.10;
    range 192.168.2.100 192.168.2.199;
    option routers 192.168.2.1;
    option broadcast-address 192.168.2.255;
}
# End /etc/dhcp3/dhcpd.conf

Maintenant, redémarrons le serveur DHCP :

/etc/init.d/dhcp3-server restart

Vous devriez tester le serveur DHCP en reconfigurant le réseau et en pingant le serveur depuis l’une des machines client. Par exemple avec Linux:

dhclient eth0
ping 192.168.1.1

Si dhclient vous donne une bonne adresse IP et que ping ne renvoi aucune erreur de transmission de paquet, votre serveur DHCP est bien configuré. Avec Windows, vous devez utiliser le « Panneau de configuration » pour configurer les paramètres du client. Si vous utiliser un point d’accès WiFi, vous devrez le configurer en conséquence avant de lancez ces test.

A ce point le réseau local fonctionne mais vous n’aurez pas encore d’accès à internet car l’interface eth0 doit « traduire » les adresses de eth0 pour eth1 et eth2. Ça s’appelle NAT (Network Address Translation) et cela ce fait avec iptables qui est en même temps notre pare-feu. Dans une console tapez les commandes suivantes :

# Fait suivre les adresses des requêtes entrantes depuis eth0 vers eth1 et eth2
# seulement quand une connexion (via une requête sortante) à déjà été établie
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,REQUIRED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,REQUIRED -j ACCEPT

# Fait suivre tout ce qui viens des clients et qui va vers internet...
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT

# Active le nat d'iptables
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Active la transmission de paquet du noyau de Linux
echo 1 > /proc/sys/net/ipv4/ip_forward

# Redémare le serveur DHCP
/etc/init.d/dhcp3-server restart

A présent votre accès Internet fonctionnera avec un très bon niveau de protection. Néanmoins, si vous voulez régler votre configuration d’iptables, la prochaine étape sera d’acheter un bouquin dessus… That’s all folks !

Introduction à YaPeTaVi – Yet another Periodic Table Viewer

An english version of this post is available after french version.

Internet IconComme je le disais dans un précédent article, je projette de porter tout mes anciens logiciels de Delphi vers Lazarus. Le premier sera YaPeTaVi pour Yet another Periodic Table Viewer. (Encore un autre Visualisateur de Tableau Périodique). Il était auparavent un simple analyseur de masse moléculaire et est devenu, après quelques cogitations et une presque complète ré-écriture de l’application, un logiciel d’étude complet. Il est prévu les fonctions suivantes pour la première version bêta :

  • Visualiseur de tableau périodique avec support de la colorisation par bloc atomique ou famille, ou des dégradés pour les dates de découvertes, point de fusion, point d’ébulition, affinité électronique, rayon de covalence, rayon de Van Der Waals, électronégativité et énergie de première ionisation.
  • Liste supportant les options de trie pour un affichage d’informations détaillé sur les éléments et lien vers l’article de Wikipédia en relation.
  • Systéme de graphique représentant les valeurs numérique sur deux axes avec choix d’intervals multiples.
  • Système multi-filtres disponible pour le tableau periodique, la liste et le graphique.
  • Base de donnée des molécules (ou ion) avec informations et calculs.

Je réfléchi également à de nombreuses améliorations comme un visualisateur de configuration électronique, d’avantage de controles sur le composant de graphique et des informations sur les isotopes.

Vous pouvez maintenant télécharger le code source avec SVN (la seule version disponible est une pré-alpha) en utilisant la commande suivante :

svn co svn://svn.tuxfamily.org/svnroot/geofperspage/gppsvn/trunk/yapetavi

Si vous êtes sous Windows vous devriez utiliser TortoiseSVN pour ce faire. Alternativement, vous pouvez parcourir le code à cette adresse : http://svn.tuxfamily.org/viewvc.cgi/geofperspage_gppsvn/trunk/yapetavi/ du dépot SVN. Vous aurez besoin d’une version récente de Lazarus depuis SVN (trunk), de FPC version >= 2.3.1 et du composant annexe TChart installé (il est distribué avec Lazarus mais pas compilé par défaut). Si vous avez besoin d’aide, pour la compilation (ou autre), contactez moi.

Si vous voulez donner un coup de main, vous êtes plus que le bienvenue. En plus des amméliorations que j’ai listé, j’ai besoins de tests sous Windows ou MacOS et une idée pour organiser les informations sur les isotopes.

Une page sur ce site permettra d’accéder à l’ensemble des informations habituelles (changelog, documentations, instruction de compilation/installation détaillé…). Les news resteront sur le blogs.

English version:
Internet Icon As I was saying in a previous article I project to port all my old software from Delphi to Lazarus. The first on to come will be YaPeTaVi for Yet another Periodic Table Viewer. It was formerly a simple molecular mass analyzer and become, after some brain-storming and a nearly full rewrite of the application, a full featured analysis software. It’s project to include the following functions for the first beta version:

  • Periodic table viewer with colorization support depending on atomic block or family, or gradients for discovery dates, melting point, boiling point, electronic affinity, covalent radius, Van Der Waals radius, electronegativity and first ionization energy.
  • List supporting sorting options for detailed element information and a link to the appropriate Wikipedia article.
  • Graph system representing numerical values on two axis with multiple range selection.
  • Multi-filtering system available for periodic table, list and graph.
  • Molecule (or ion) database with information.

I’m also thinking of several improvements like electronic configuration viewer, more controls on graph widget and isotope information.

You can actually download source code via SVN (the only available version is an early prealpha) by using one of the following command:

svn co svn://svn.tuxfamily.org/svnroot/geofperspage/gppsvn/trunk/yapetavi

If you are a Windows user you may use TortoiseSVN to do so. Alternatively you can browse the code at the address: http://svn.tuxfamily.org/viewvc.cgi/geofperspage_gppsvn/trunk/yapetavi/ of the SVN repository. You will need a recent SVN version of Lazarus, FPC version >= 2.3.1 and the optional TChart component installed (it’s distributed with Lazarus anyway but not compiled by default). If you need help, about compiling or anything else just contact me.

If you want to help you’re more than welcomed. In more of the improvement I’ve listed, I need some test on Windows or MacOS and an idea to organize information on elements isotopes.

A page on this website will give you access on all the usual information (changelog, documentation, detailed compiling/installing instruction…). The news will stay on this blog.

Retour sur l’Internet

Internet IconC’est si bon d’être de retours sur Internet… particulièrement après deux mois et demis de déconnexion. Comment est-il possible d’avoir besoin d’autant de temps pour obtenir une connexion ? Et bien c’est simple : l’incompétence du FAI que j’avais choisi pour l’établir.

J’avais décidé de souscrire à une connexion en dégroupage total avec l’opérateur SFR, car il était le seul présent dans ma ville au moment de mon aménagement. Quand le technicien est venu, il a remarqué qu’il manquait un câble pour mon appartement entre mon bâtiment et le répartiteur 20 mètres plus loin. Il parti en me disant qu’il reviendrai avec ce qu’il fallait pour tirer ce câble. Il n’est jamais revenu et SFR fut incapable de traité correctement mon dossier. Après deux mois SFR abandonne et me demande de leur rendre leur modem. Dans leur lettre ils écrivaient qu’une connexion ADSL n’est pas possible dans ma zone ! Mais, mes voisins en ont…

La même semaine, j’apprenais que l’opérateur Free installait les équipements (ça s’appelle un DSLAM, pour info) pour le dégroupage de ma ville. Je souscris et deux semaines plus tard, me voila, sans aucun problème.

Merci SFR pour tant d’incompétence, vous m’avez fait revenir à mon FAI préféré !

Construction de KDE 4 depuis trunk : Partie 1

KDE LogoIl y a plusieurs mois j’utilisais une Debian Lenny / Sid et j’avais l’habitude d’utiliser KDE 3.5.x. KDE 4.0 était sur le point d’être lancé, mais il n’était pas utilisable pour la production. J’ai donc décidé d’utiliser KDE 4, d’après les instructions du site TechBase. Aujourd’hui, je suis sous KDE 4.2.4 depuis les dépôts de Debian Sid. Néanmoins, le support de KDE 4 sous Debian est toujours un affreux désordre. De nombreux logiciels ne sont pas encore disponibles pour KDE 4 même si une version stable existe (par exemple, Amarok ou Kile). En plus, la stabilité du bureau de base est horrible et de nombreux bugs sont spécifiques à Debian (la version OpenSuse est très stable). Je ne veux pas quitter Debian car mon système est encore assez rapide et plus fiable que dans le passé avec openSUSE.

Un autre point est que j’ai besoin d’une version de développement (à partir de SVN) de KDE 4 et d’être en mesure de faire quelques tests. Après discussion avec de nombreux développeurs sur le canal IRC de KDE, j’ai été convaincu que la version SVN de KDE 4 (l’actuel trunk est la future version 4.4) est assez stable pour être utilisée pour la production.

Maintenant, voici mes projets…

La version de Qt fournis par Debian (4.5.1) a des dépendances avec Phonon, et j’ai besoin de construire une version SVN de Phonon (la version de Debian est trop ancienne). J’ai donc besoin de supprimer tous les logiciels dépendant de Qt, en utilisant aptitude ou synaptic sous une session non KDE (j’utilise Xfce pour ça). Notez tous les logiciels basé su Qt ou KDE doivent être fermées avant la désinstallation, sinon, vous pourriez avoir une étrange réaction de votre système. Lorsque aptitude ou synaptic vous montre la liste des logiciels qu’il est sur le point de désinstaller, il est préférable de le noter pour être capable de récupérer tout ce dont vous avez besoin. Vous aurez à compiler et installer tous ces logiciels manuellement.

Le site Web TechBase de KDE fournis de très bonnes instructions de compilation et d’installation, mais il propose de l’installation sous un compte utilisateur spécial ce que je ne veux pas. Je vais devoir faire autrement. D’abord, le meilleur moyen pour fixer des variables d’environnement pour tous les utilisateurs est de créer un script d’initialisation. Je décide de l’exécuter principalement dans le niveau d’exécution 3 car le serveur X peut être exécuté manuellement toute façon, même si nous ne sommes pas en niveau 5. J’ai donc créer le fichier « /etc/rc3.d/S40kde4 »:

# Begin /etc/rc3.d/S40kde4
if [ ! -d /tmp/${USER}-kde4 ]; then
mkdir /tmp/${USER}-kde4
fi
export KDEDIR=/usr/
export KDEDIRS=$KDEDIR
export KDETMP=/tmp/$USER-kde4
export STRIGI_HOME=${KDEDIR}
export QT_PLUGINS_DIR=$KDEDIR/lib/kde4/plugins:$QTDIR/lib${QT_PLUGINS_DIR+:}$QT_PLUGINS_DIR
export PATH="${PATH}:${KDEDIR}/bin"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH+:}${KDEDIR}/lib/pkgconfig"

# End /etc/rc3.d/S40kde4

Vous pouvez modifier le chemin de base si vous le voulez, mais celui que j’utilise, respecte les directives Debian. Notez que la variable KDEHOME est définie par Debian dans un autre script. Il n’est donc pas sûr de la redéfinir. Lorsque le fichier est enregistré (vous devez être root), vous devez le rendre exécutable et il est aussi plus sûr de copier ce script pour l’exécuter dans certains autres niveau. Ceci est réalisé en exécutant les commandes suivantes en tant que root:

chmod -v +x /etc/rc3.d/S40kde4
cp -v /etc/rc3.d/S40kde4 /etc/rc2.d/
cp -v /etc/rc3.d/S40kde4 /etc/rc4.d/
cp -v /etc/rc3.d/S40kde4 /etc/rc5.d/

Il n’est pas utile de le copier dans les répertoires de niveau d’exécution 0, 1 ou 6 (respectivement arrêt, mono-utilisateur et redémarrer). Ensuite, vous devez mettre à jour votre profil général et la session utilisateur, si vous ne voulez pas redémarrer:

/etc/rc3.d/S40kde4
source /etc/profile

Avant de continuer sur l’une des prochaines étapes, vous devez installer toutes les dépendances de construction en suivant les étapes indiquées ici.

Si vous avez un message d’erreur à ce stade, vous devriez vérifier votre configuration et les étapes précédentes. Une fois ceci fait, vous êtes prêt à compiler, mais pour rendre la tache plus facile, il est préférable de créer un script de compilation automatique. J’ai fait celui-ci, appelé «kdemake.sh »:

# Begin /usr/bin/kdemake.sh
if test -n "$1"; then
                # Source folder is defined via command line argument
                srcFolder="$1"
        else
                # srcFolder is the current dir
                srcFolder=`pwd`

# default build directory is a build subdir inside the source folder
# -DCMAKE_INSTALL_PREFIX is forcing install prefix to the above definition
# -DKDE4_BUILD_TESTS=TRUE is optional and build test suite
# -DCMAKE_BUILD_TYPE=debugfull is optional and build full debugging information
cmake ${srcFolder} ${srcFolder}/build/ -DCMAKE_INSTALL_PREFIX=$KDEDIR -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
cd ${srcFolder}/build/

# nice make -j3 force make à utiliser deux processeur (pour les dual core) remplacer par -j2 si vous avez un système mono-processeur
nice make -j3 && sudo make install
# note that sudo will ask you root password to install

# End /usr/bin/kdemake.sh

Rendre le script exécutable avec:

chmod -v +x /usr/bin/kdemake.sh

Si vous exécutez ce (très simple) script, il est supposé que tous les répertoires de construction ont été créées comme des enfants des répertoires contenant les sources… Alors, voici un exemple pour la compilation du paquet kdelibs:

svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
mkdir build
kdemake.sh

Ceci ne sera fait que la première compilation, ensuite, il vous suffira de mettre à jour et compiler ce qui est nécessaire (c’est pourquoi cmake est tellement bon), en faisant ceci:

cd /kdelibs
svn up
kdemake.sh

Si, comme moi, vous préférez procéder manuellement, oubliez tout ceci. Par contre, c’est une bonne idée de créer une variable contenant les paramètres systématique de cmake (de cette manière vous pouvez passer d’autres paramètres comme vous le souhaitez). Pour moi, je l’appelle « CM ». L’autre chose très utile consiste à créer un alias pour make, appelée fmake pour « fast make », lui permettant d’utiliser les deux processeurs de votre dual core si vous avez un (le problème est que fmake n’acceptera pas d’autres paramètres comme le ferais make à cause de la commande nice qui les prendrais pour elle) :

export CM=-DCMAKE_INSTALL_PREFIX=$KDEDIR -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
alias fmake=nice make -j3

Vous pouvez ajouter ces lignes dans le script d’initialisation ci-dessus, de cette façon ce qui y est déclaré sera toujours disponible. Ensuite vous pourrez faire le même boulot qu’au dessus, de cette façon:

svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
mkdir ../build
cd ../build
cmake ../kdelibs $CM
fmake
make install

Le système minimum de KDE est kdesupport, kdelibs, kdepimlibs et kdebase. Vous devrez le compiler dans cet ordre en raison des dépendances. Pour installer le bureau KDE complet vous devrez compiler kdeadmin, kdeaccessibility, kdeartwork, addons kdebindings, kdeedu, kdegames, kdegraphics, kdemultimedia, kdenetwork kdepim, kdeplasma, kdesdk, kdetoys, kdeutils, KDevelop, kdevplatform et kdewebdev. Vous pouvez compiler certains de ceux-ci ou tout dans aucun ordre particulier. La seule exception est kdevplatform requis par KDevelop et kdewebdev qui doit être compilé en premier. Après cela, vous pouvez explorer le WebSVN de KDE pour trouver plus de logiciels qui pourrais vous intéresser. Vérifier les répertoires playground, extragear, koffice pour la suite bureautique de KDE et l10n-kde4 pour la localisation dans votre langue.
Quand tout sera construit pour moi, testé et approuvé, la deuxième partie sera là comme rapport de l’expérience (de même qu’avec les vôtres via vos commentaires) et correction des erreurs contenues dans ces instruction.
That’s all folks… pour le moment !

Sur Lazarus

KDE LogoJe n’étais pas mauvais en programmation Delphi jusqu’en 2002. J’utilisais aussi beaucoup Borland Pascal 7 principalement a cause de mes études. C’était pour moi une expèrience intéressante et vraiment amusante. Après avoir totalement oublié Windows, j’ai été forcé de laisser tomber la programmation Delphi en même temps. Bien sûr il y avais Kylix, mais il n’était pas une très bonne alternative :

  • Logiciel propriétaire, et très onéreux
  • Il ne fonctionnais pas sur ma Suse Linux 9.1 que (je crois) j’avais à l’époque
  • Sur ma machine Red Hat il était très instable

C’est pour toutes ces raisons qu’un petit groupe à décidé de se lancer dans la programmation de leurs propres version de Delphi, à partir de rien. Le projet Lazarus était né. Aujourd’hui je l’utilise de manière très agréable et toute les fonctions essencielles de Delphi sont présentes et même plus. Quelques autres fonctions sont encore manquantes (le projet à besoin de plus de dévellopeur) mais on peut d’hors et déjà tout faire avec.

Si vous connaissez quelque chose à la programmation en langage Pascal, vous pouvez aider au développement de Lazarus ici.

Je redécouvre maintenant le plaisir de programmer dans mon langage favori et je porterais certain de mes anciens logiciel sous FPC/Lazarus. C’est un travail immence pour l’un d’eux mais les autres seront bientot disponible. Alors, à bientot !

Hadopi est mort… Vive Hadopi !

France LogoIl y a une semaine je buvais à la santé du ministre français de la culture, Christine Albanel, car la loi «Hadopi», son cher bébé, était définitivement enterrée par le Conseil Constitutionnel, après avoir été malmenée par le parlement européen. La raison étais qu’une sanction, quelle qu’elle soit, ne peut être donnée par le législateur ou n’importe qui d’autre qu’un juge, ainsi que le non respect de la présomption d’innocence. Mais cela n’arrêta pas le ministre qui décida il y a deux jours de proposer une nouvelle loi… Hadopi 2!

Pour ceux qui ne connaissent pas, Hadopi est supposé être le nouvel arsenal législatif Français pour protéger nos artistes du téléchargement illégal. Cette loi crée une nouvelle agence gouvernementale (genre CSA ou autre), nommée Hadopi, capable d’espionner les activités des internautes. Pour le moment, espionner les utilisateur d’internet sur ce qu’il font avec leur connexion requière une autorisation d’un juge d’instruction et doit être effectué par le service de police approprié. Ici pas de police, pas de juge, pas d’instruction, seulement de la technocratie, la porte ouverte à l’espionnage de masse… Si une activité illégale est détectée sur votre ligne, vous recevrez alors un e-mail d’avertissement (l’adresse e-mail sera fournie par le FAI). Si une nouvelle activité suspecte est détectée vous recevrez un second e-mail, et si cela arrive une troisième fois, la connexion Internet sera coupée sans délai par le FAI pour une durée minimum d’un mois. Bien sûr pas de jugement, pas de preuve que le fautif soit le propriétaire de la connexion, pas de recours possible, et cerise sur le gâteau : la même organisation aura des rôles de police, justice et enquêteur… Toutes les raisons qui ont fait que le conseil constitutionnel à jugé cette loi inconstitutionnelle !

Alors, maintenant nous avons Hadopi 2 sur les rails. Qu’est-ce qui va changer ? Pas grand chose dans les faits, juste que le jugement sera prononcé par un juge via une facilité dans la loi française : « l’ordonnance pénale ». Mais qu’est-ce que c’est ? En France les tribunaux sont débordés : pas question d’envisager de vrais procès, trop cher et rien n’est plus dangereux qu’un système ou la justice à les moyens de faire un bon travail… La solution est d’utiliser le même système que celui utilisé lors d’infractions au code de la route.

Quand une infraction au code de la route est constatée, les preuves sont faciles à établir et la peine encourue ne comporte généralement pas la prison. Dans ce cas le suspect est jugé sans être présent à un procès et sans avocat. Le juge peut décider de trois choses. Si toutes les preuves sont présentées et qu’il n’y a pas de doute sur l’identité du suspect, la peine est prononcée et le suspect à 45 jours pour faire appel de la décision. Sinon le juge peut décider soit que la peine encourue n’est pas suffisante et demander un véritable procès (en particulier si la prison est requise), soit que les preuves ne sont pas suffisantes et l’ordonnance est rejetée (rien n’arrive). Voyez l’article 495 du code de procédure pénale pour plus de détails.

Dans le cas d’une affaire de contrefaçon, c’est une très mauvaise idée. D’abord, cette procédure ne peut fonctionner que pour les affaires très simples à établir, mais une contrefaçon faite par ordinateur n’est pas aussi simple à traiter qu’un excès de vitesse. Le parquet devra apporter toutes les preuves :

  • Que l’œuvre était protégée (on peut télécharger des contenus gratuit ou libre avec BitTorrent ou une Mule)
  • Que le téléchargeur savait qu’il téléchargeait une œuvre protégée (les noms de fichiers ne sont parfois pas assez explicites ou n’ont rien a voir avec leurs contenus)
  • Qu’il n’y a aucun doute sur l’identité du suspect (une adresse IP n’est pas une preuve d’identité)

Par conséquent, et si la loi est respectée, tout les dossiers montés avec le système Hadopi, risque d’être rejetés par le juge pour preuves inconsistantes. Le parquet serait alors forcé de demander une enquête de police, perdant ainsi tout l’intérêt simplificateur de la procédure. Pire, les preuves seront produites par une agence gouvernementale non assermentée. Hors le conseil constitutionnel nous dit que, dans le cas d’une ordonnance pénale, aucune enquête de police ne peut être demandée par le juge si les preuves initiales n’ont pas été rapportées par un agent assermenté, c’est à dire seulement la police et certaines parties de l’armée en France (Décision n° 2002-461 DC du 29 août 2002). Bien sûr, et pour les mêmes raisons, Hadopi ne pourra enquêter lui-même : ce ne sera pas un service de police, ils n’auront donc aucun droit pour enquêter. Hadopi ne pourra obtenir que des adresses IP et e-mail et des rapports de FAI sur les activités d’une ligne et l’identité de son propriétaire.

L’autre point est que cette loi est contre les intérêts des artistes que l’on prétend défendre. Le code de procédure pénale, interdit à la victime de demander des dommages et intérêts, dans le cas d’une ordonnance pénale (article 495, al. 9). Par conséquent, les ayant-droits devrons sacrifier leurs droits et les dommages subit à leur soif de répression et celle de leur gouvernement.

Dernière chose, cette procédure n’est pas applicable au mineurs (article 495 du code de procédure pénale, al. 8). Je vois ça d’ici : « Non, ce n’est pas moi, c’est mon fils de douze ans qui téléchargeais !« …

Pour résumer, cette nouvelle version d’Hadopi va sûrement nous assurer de grands moments de rigolade…

Ce post est principalement inspiré de cet article écrit par un avocat. A lire, très complet.

Après Hadopi, Loppsi !

France LogoLa France est supposé être une démocratie et un pays ou la liberté est un de ses fondements. Pour combien de temps ?

Après des lois liberticides comme Hadopi, qui était comme le hors-d’œuvre, le plat de résistance arrive avec une nouvelle loi : Loppsi (loi pour la performance de la sécurité intérieure). Un membre de la commission sensé conseiller le ministre sur ce projet en parle ici.

Comme il le dit le principal problème viens de l’article 6 :

Il s’agit d’« imposer aux fournisseurs d’accès à Internet l’obligation d’empêcher sans délai l’accès aux contenus illicites dont les adresses électroniques sont désignées par arrêté du ministre de l’intérieur sous peine d’un an d’emprisonnement et de 75.000 euros d’amende.»

En d’autres termes, une personne pourra interdire l’accès à un site internet sur tout le territoire français, sans jugement ni contrôle. Ça me fait bizarrement penser à la Chine qui utilise ce genre de pratique !

Je pense sincèrement que la liberté risque de devenir peut à peut un luxe en France…

Site web de KDE : une nouvelle fonctionnalité ?

KDE LogoIl y a deux semaines, je parlais avec Anne-Marrie Mafhouf à propos d’une nouvelle fonctionnalité dans la zone de développement du site de KDE. Cette idée m’est apparue, quand quelqu’un m’a dit sur le canal IRC des développeurs KDE qu’il y avait problème avec un programme que je traduis, KDETV, parce que certains de ses principaux développeurs avais quitté le projet.

Peu importe si cette information est totalement vrai ou non mais je sais que certains projets ont été abandonnés dans le passé (KBabel par exemple) en raison d’un manque de développeurs. D’autres projets sont en croissance très lente en raison du manque d’éléments (graphiques, sons, fonctions essentielles…).

La solution consiste à créer une zone spéciale dans le site de développement de KDE pour centraliser les besoins des développeurs et utilisateurs. Je pense que c’est très bon pour beaucoup de raison:

  • Les nouveaux développeurs peuvent visiter cette zone et être guidés. Certains nouveaux développeurs sont parfois perdus, face à l’incroyable quantité de projets et de code source. Dans le même temps, si nous avons plus de nouveaux développeurs sur certains vieux projets au fur et à mesure qu’ils deviennent expérimentés, nous avons bien moins de chance de perdre un projet en raison d’un manque de développeurs.
  • Les développeurs peuvent donner quelques idées de nouvelles fonctionnalités qui pourraient être intéressantes dans le projet, à plus forte raison si ils ne savent pas vraiment comment les réaliser.
  • Les demandes de fonctionnalité des utilisateurs pourraient être concentré, fournissant un accès plus facile pour les responsables et les développeurs.

J’ai un peu de temps pour pouvoir gérer cette partie du boulot ;), et quelque chose comme un Wiki devrait être adaptés. Cher gourou de KDE, s’il vous plaît, dites-moi ce que vous penser.

Linux et PowerMac G3

Kernel LogoCe week-end on m’a demander d’installer Linux sur un vieux PowerMac G3 par un amis vivant dans une petite ville de l’Aveyron ou la connexion internet était dix fois plus lente qu’à Toulouse, ou je vis. Ce fut, à la fois, une expérience très intéressante et très agaçante…

Après le téléchargement d’une Debian Lenny édition PowerPC (2 heures pour le CD netinstall de 200Mo…), booter et installer le système de base (4 heures) fut aussi facile que sur une machine Intel, me donnant tout l’optimisme dont j’avais besoin. Mon premier problème vint avec Xorg. Quand j’essayais de le démarrer, un bogue dans le pilote ATI (seulement dans la version PowerPC) me fqit obtenir un écran noir. Ce bogue avait déjà été relevé dans le chasseur de bogue Debian dans les Lenny beta et n’était toujours pas corrigé pour la Lenny finale (avec les dépots update et volatile activé) ! J’ai essayé de mettre à jour Xorg avec la version Squeeze… Aucun succès, bogue identique :/. Puis la version Sid et oui ça fonctionna !

Après ça, la machine était rapide et stable et KDE 3.5.9 démarrai parfaitement. Pour compiler KompoZer, aucun problème (KompoZer n’était pas disponible au format binaire pour PowerPC). Installer et configurer un serveur local LAMP utilisé pour tester un site web en PHP fut facile. À ce moment tout était bon pour moi. Mais…

A présent quels étaient mes problèmes finaux ? Arf tellement !

  1. Les écrans Machintosh n’ont pas de boutons (saleté de design Apple…) pour arranger la géométrie d’affichage et je n’ai pas trouvé d’utilitaire Xorg pour le faire… Je fus forcé d’utiliser la résolution maximale (1600×1200 sur un écran de 15 pouces…) parce que toute autre résolution aboutissais à des zones non-visible de l’affichage. Et s’il vous plais ne me dite pas qu’on peut résoudre ce problème en modifiant le fichier xorg.conf… Je sais ! Mais je refuse de perdre des heures à régler le fichier xorg.conf à l’aveuglette, puis tester, régler et tester encore et encore jusqu’a ce que j’ai quelque chose d’acceptable ! C’est si facile à faire graphiquement (comme SAX le fait, l’utilitaire de configuration Xorg d’OpenSuse). Pourquoi Xorg ne fourni pas un utilitaire aussi utile et simple ? Ma seule solution fut de changer la taille des icones et des polices dans le centre de contrôle de KDE. Pas de réelle satisfaction du resultat… évidement !
  2. J’ai essayé d’installer des produits tout en un Brothers et Canon… A premier abord je fut content car les sites web internet respectifs fournissent des pilotes Linux packagé au format Deb :)… Arf, pas de binaire Linux PPC… Oh oui il y a le code source dans ce cas, et Brothers l’a placé sous GPL ! Cool. Et m***e… En effet, il y a du code source mais certaine partis sont précompilé et indisponible sous forme de code source, générant des érreurs lors de l’édition de liens. Heureusement, il y avais aussi une imprimante HP et un vieu scanneur Epson Perfection. Merci à HP pour donner des pilotes vraiment et complètement open source.
  3. Mon ami aime parfois regarder des vidéos sur internet (i.e. YouTube). Gnash est présent pour PPC mais totalement non-fonctionnel : le navigateur web se plante à chaque fois qu’un contenu en Flash est trouvé (que ce soit avec Konqueror ou Iceweasel). Et, bien sur, pas de paquet Linux-PPC pour le plug-in Adobe… Par conséquent, nous n’avions plus qu’à oublier l’idée de voir des vidéos en ligne… 🙁
  4. Le bouton d’éjection du lecteur CD-Rom se trouve sur le clavier (Argh pu***n de design Apple!!!)… Je n’ai trouvé aucun support pour cette fonction étendue des clavier Apple. Bon point: les touche F13 à F15 sont utilisable dans la configuration des raccourci de KDE.

J’ai passé 3 jours sur cette machine (OK connexion internet était très lente…) et c’est vraiment beaucoup trop. Le support du PowerPC n’est pas aussi bon que sur plate-forme Intel, et tout les constructeur et éditeurs de paquets binaire (imprimantes, scanneurs, flash…) oublient simplement totalement les utilisateurs de PowerPC (même pour MacOS, j’ai été forcé d’utiliser de vieilles versions de ces logiciels). Le seul point positif a été la rapidité de la machine. Pour une machine de 5 ans, j’ai été surpris par les performances (750 MHz et 512 Mo de RAM), bootant en moins d’une minute (incluant KDE). Compiler KompoZer (c’est plus gros que Firefox) ne m’a pris que 30 min. Si il y avait un bon support, Linux sur PowerPC pourrais être une excellente solution.