Agrr.. Aggrr... Agrégateur

2008-05-17 21:20:58:
J'ai redémarré l'agrégateur à la demande de Pierre-Luc (il ne l'a pas demandé mais il se demandait s'il fonctionnait). Même adresse qu'avant ou http://progysm.no-ip.org/libre/ et http://progysm.no-ip.org/libre/libre.xml

Maintenant, faudrait que je trouve pourquoi je peux pas faire de requête à l'adresse 192.168.0.100 sur mon apache2 à l'interne. Faudrait peut-être activer le 127.0.0.1... peut-être.

Chargement de libfdpf

2007-10-30 21:57:52:
Je viens de distribuer sur mon site Web la version 20071030 de libfdpf. Voir l'article sur le format PDF. Cet analyseur, écrit en PHP, lit les fichiers au format PDF et permet de les regénérer en SVG ou en code PHP/FPDF.

Compilation de OpenOffice.org à partir du SVN go-oo.org

2007-10-14 10:06:03:
Je viens d'effectuer la compilation de OpenOffice.org 2.3 (680) sur Debian SID à partir du dépôt SVN de go-oo.org. J'ai écrites les commandes exécutées sur mes pages: Deboostrap et Compilation OOo 2.3.

La technique utilisée pour compiler OpenOffice.org 2.3 est la suivante:

  • Créer un environnement chrooté avec debian Sid (OpenOffice.org 2.3 ne compile pas sur Etch car il demande GTK+ 2.10 et Etch possède la version 2.8). J'utilise Deboostrap avec un kernel 2.6 686.
  • Créer un utilisateur de compilation ooo-build
  • Télécharger les dépendances, le code source (svn et wget).
  • Compiler (long!)
  • Installer en user root
  • Installer un serveur X et un kernel pour tester en redémarrant sur la partition.

Et non, je ne voulais pas faire de apt-get install openoffice.org ou de apt-get buil-dep. Ça aurait été trop facile apt-get build-dep openoffice.org et on apprend pas avec la facilité! Lorsque j'ai fini ce matin, la partition avait 12 Go d'utilisée. Il y a eu trois erreurs de vérifications de dépendances par le ./configure: gperf, Python.h (python2.4-dev) et libneon26-dev.

C'est évident il me semble!

2007-07-20 23:36:21:
Des fois, on est juste un peu fatigué ou bien c'est juste les maudits messages d'erreurs et les logiciels qui ne sont pas clairs ou bien on ne peut humainement pas lire toute la documentation éparpillée un peu partout. Voici donc 4 découvertes:

  1. On ne peut pas mettre un /boot sur du RAID5 si on utilise grub ou lilo. Grub est capable de lire les partitions en devinant (presque) le système de fichiers, n'aller surtout pas lui ajouter la difficulté de lire une partition découpée en 5 disques. [Référence: Talk:HOWTO Install on Software RAID]. L'équipe du support et Pascal avont appris ce petit détail après une demi-journée... Les symptômes étaient les suivants: on ouvrait le shell grub, on essayait de trouver des fichiers sur (hd0,0) et (hd1,1) et ça l'affichait des partitions corrompues ou pas les bons fichiers...
  2. Avec Iceweasel, Mozilla ou Firefox, on peut ajouter une instruction dans le fichier de configuration global (greprefs/all.js) qui va lire un fichier de configuration pour verrouiller des préférences (du javascript) Dans ce script, il existe des fonctions prédéfinies pour nous permettre d'aller chercher des variables d'environnement, de faire du ldap, etc.. On peut faire du scripting très avancé. Malheureusement, si vous ne spécifier pas une certaine variable (pref("general.config.obscure_value", 0);), votre fichier de configuration devra être byte-shifter de 13 bits... L'évidence même. Ah oui, le fichier doit commencer par // aussi. À quoi ça peut servir? LTSP peut-être...
  3. Pourquoi est-ce que PHP donne une erreur PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php4/mysql.so' - /usr/lib/php4/mysql.so: undefined symbol: empty_string in Unknown on line 0 lorsqu'il est exécuté dans un cron de l'usager root mais pas quand je suis root dans le répertoire du script en question? C'est simple comme bonjour: chemin relatif et répertoire courant. PHP utilise le fichier php.ini du répertoire courant s'il existe, sinon il utilise /etc/php.ini. Lorsque cron démarre, il est dans le répertoire de l'usager, /root/ dans ce cas-ci. Donc, vous n'avez qu'à configurer le fichu fichier /root/php.ini!
  4. Pourquoi je suis capable de changer la couleur du texte d'un bouton XUL avec #buttonID {color:red;} mais ça ne fonctionne pas avec un toolbarbutton XUL? C'est simple, parce qu'il faut écrire: #toolbarButtonID > .toolbarbuttontext {color:red;}. C'est écrit dans l'exemple mais pas dans la documentation de l'élément
  5. Dans un XBL, un élément <xul:command> est global à tous les composants XBL et fait toujours référence (en javascript) au premier composant affiché dans une fenêtre XUL. Sans exemple d'au moins 3 pages, c'est assez compliqué à comprendre ou à expliquer...

Vous voyez bien que c'est évident!

LPI 102

2007-05-04 20:05:40:
Bon, j'ai étudié toute la journée jeudi, et j'ai passé le soir l'examen LPI 102. J'avais réussi 101 auparavant. Je suis donc certifié Junior Level Linux Professional (LPIC-1). Vous voyez, suffit d'une seule année de travail chez Savoir-Faire Linux et un peu de support pour réussir le niveau 1. Mon objectif pour l'année prochaine c'est PHP Zend et peut-être LPIC-2 ? J'ai pas mal d'étude à faire pour faire les deux dans la même année.

La vie est un jeux

2007-04-22 12:57:14:
De Linus Torvalds, 15 avril 2007:

Does this mean that there will be tension and rivalry? Hell yes. But that's kind of the point. Life is a game, and if you aren't in it to win, what the heck are you still doing here?

On joue dans la vie, mais est-ce que la vie est un jeu ou est-ce du théâtre?

Debian Etch 4.0r0 est stable

2007-04-08 14:05:24:
La distribution Debian Etch 4.0r0 est maintenant rendu "stable". J'ai mis à jour le miroir sur debian.savoirfairelinux.net ce midi. Je vais donc pouvoir commencer à chercher pour l'achat de PC pour mon père et moi. J'ai jusqu'à mes vacances pour trouver quelques choses pour mon père.

Développement d'outils

2007-03-25 00:46:53:
Depuis quelques temps, j'ai commencé le développement d'outils. Je me fais présentement des bibliothèques de fonctions pour accélérer le développement.

Voici une liste de mes outils qui sont GPL, libres, ouverts et que vous pouvez télécharger et mettre sur votre site. Il n'y a que du code source XHTML, CSS et Javascript.

Pourquoi est-ce que je fais ces outils? Et bien, parce que je peux m'en servir pour le travail ou pour numériser des notes que j'ai pris sur papier. Le choix de SVG/Javascript? Il est très facile de modifier le code et d'ouvrir sur n'importe quel ordinateur avec Firefox/Icedove ou compatible. De plus, n'importe qui peut regarder le code et le télécharger. Enfin, pour enregistrer en PNG, il ne suffit que de faire une copie d'écran. Finalement, si on veut ajouter plus de fonctionnalité (enregistrement sur le disque par exemple), il est très simple de faire une application avec XULRunner.

SQIL 2007

2007-03-04 00:22:04:
La Semaine québécoise de l'informatique libre 2007, ou par son petit nom SQIL 2007, se déroulera cette année du 15 au 23 septembre. Une longue semaine de 9 jours. C'est en plein le moment de penser à ce que vous organiser comme évènement dans votre région.

Personnellement, je me demande bien si je serais capable d'organiser une conférence de programmation à Montréal, avec l'aide de Savoir-faire Linux et de FACIL? Rien n'est officiel pour cette idée mais qui sait ce qu'on peut faire en 6 mois.

Lecteur flash libre?

2007-02-18 20:06:09:
Bon, j'ai posé une question très technique sur le blogue d'experts-libre et je pose la question ici aussi. J'espère avoir le plus de réponses "techniques" et des pistes de solutions. Je sais que pour écouter des vidéos, on peut publier du oggtheora (format ouvert) et l'intégrer dans une balise <object>, mais ce n'est pas ma question.

Quel logiciel libre peut-on installer pour consulter ce vidéo (ajout: en flash)?
Quel est la procédure. Existe-il un howto?
J'utilise présentement debian etch.

En gros, je crois qu'on peut librement écrire un lecteur flash si on ne lit pas la spécification préparée par Macromedia. Il me semble qu'il existe le projet gnash qui propose un tel lecteur. Je répète donc ma question: comment installer, de quelle façon technique, quelles sont les instructions pour installer, un lecteur pour des vidéos flash qui sont libres.

Le format n'est pas ouvert, mais il me semble que ça n'empêche pas ni OpenOffice/Abiword/KWord de lire du format wordperfect ou microsoft, ni Umbrello de lire du format Rational Rose.

LPI 101

2007-01-31 22:59:10:
J'ai passé l'examen pour la certification LPI 101 aujourd'hui.

Une image vaut milles mots

2007-01-23 20:10:40:
Aujourd'hui, je devais configurer un serveur en arrière d'un firewall (linux/debian). J'avais prévu un petit plan des étapes à faire. Puisque le serveur est protégé par un serveur-pare-feu, je devais ajouter une règle de "Destination NAT" ou DNAT au logiciel firewall de linux: iptables. J'ai cherché, cherché, cherché et je n'arrivais pas à trouver la raison pourquoi ma règle de DNAT ne fonctionnait pas. Admettons que j'avais une configuration comme celle-ci: INTERNET -> FIREWALL -> SERVEUR. J'étais capable de passer d'internet à firewall et de firewall à serveur, mais pas d'internet à serveur. J'ai essayé d'utiliser tcpdump port XXXX et netcat pour faire des tests. Ça n'a pas trop aidé.

Enfin, vers la fin de la journée, j'ai lu une documentation sur iptables qui indiquait que les paquets envoyés à la table de PREROUTING étaient "filtrés" par la suite. Ce qui veut dire que les paquets passaient effectivement d'internet au firewall, mais étaient bloqués lorsqu'il transférait les paquets au serveur interne (transférer = FORWARD). Donc, j'ai réalisé ce chemin 1. ils vont dans le PREROUTING, 2. ensuite le routing (route -n), 3. ils sont filtrés par INPUT (interface locale) ou FORWARD (interface externe). Dans mon idée, il n'y avait que 1. "PREROUTING" et 2. "routing". Puisque les paquets étaient redirigés vers un autre serveur, je croyais qu'il n'y avait pas de filtrage par la suite. J'avais tord. Finalement, mon ami, a cherché sur google images "iptables" et tout c'est éclairci. Voici un exemple de schéma qui explique le cheminement des paquets sur linux 2.6.

J'ai testé par la suite, en ajoutant la règle dans la section FORWARD et tout fonctionnait parfaitement comme prévu. Donc, si vous voulez faire du DNAT, pensez à FORWARD/INPUT!

# Voici un exemple de règles iptables
# je permet à l'adresse source 192.168.1.10 de se connecter 
# via l'interface eth0, protocole udp 
# à mon firewall et je redirige vers 10.0.0.2
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 12345 -s 192.168.1.10 -j DNAT --to 10.0.0.2
# Je permet de forwarder le paquet à mon serveur 10.0.0.2
# noter que seulement l'ip de destination (-d) a été modifiée
iptables -A FORWARD -i eth0 -p udp --dport 12345 -s 192.168.1.10 -d 10.0.0.2 -j ACCEPT

Concernant netcat, si vous voulez faire un client et un serveur udp, voici la syntaxe:

# clients udp: netcat -u ip_du_serveur port_du_serveur
netcat -u 10.0.0.2 12345

# serveur udp: netcat -u -l -s ip_du_serveur -p port_du_serveur
netcat -u -l -s 10.0.0.2 -p 12345

Ça m'a pris ben du temps avant de comprendre que les options -s et -p étaient obligatoires pour créer un serveur!

Nouveautés pour mon projet GenList

2007-01-08 00:01:25:
Voici des nouveautés pour mon projet GenList : un générateur de liste pour PHP/MySQL/XHTML.

  • Nouvelle interface pour les renseignements globaux (base de données)
  • Onglet pour plusieurs tables/liste
  • Ajout de la colonne "FOREIGN KEY" avec la syntaxe nomTable.nomChamp
  • Amélioration de l'analyse des champs pour les mots-clés NULL, NOT NULL et DEFAULT.
  • Comprend la syntaxe "REFERENCES nomTable (nomChamp)".
  • Librairies externes pour des classes avec héritages et pour une fonction d'affichage de balises SELECT.
  • Permet une abstraction de premier niveau pour la classe (fichier clsAbstractList.php) et la base de données (fichier dbConnection.php).
  • Générateur de diagrammes et de relations. On peut tracer des relations entre PK et FK. Utilisation: 1. ajouter deux tables dans le diagrammes, 2. cliquer (sans relâcher) sur le texte PK d'une table, bouger la souris jusqu'au texte "FK" d'une autre table, relâcher la souris. 3. Afficher l'onglet de la table avec la clé étrangère. 4. Cliquer sur "Générer".
  • Nouvelle interface pour le chargement de requêtes CREATE TABLE. Permet aussi de charger plusieurs tables dans plusieurs onglets.

Ce que je prévois améliorer:

  • Corriger le problème de recharger un diagramme (les liens sont perdus)
  • Charger les liens (clés étrangères) dans le diagramme à partir du formulaire
  • Permette d'exporter les énoncés CREATE TABLE de tous les onglets dans un textarea.

Le projet avance assez bien à mon goût...

Extraction ODS : OpenDocument Spreadsheet

2006-12-13 23:53:02:
Je me suis lancé un petit défi de convertir un fichier ods (OpenDocument) en base de données MySQL + pages PHP. Voici les étapes:

  1. Ouvrir et extraire les données du fichier ods
  2. Créer la(les) table(s) relationnelle(s) SQL
  3. Créer les requêtes SQL avec les données et les exécuter
  4. Construire l'interface PHP pour les modifier avec mon générateur
  5. Modifier mon générateur pour ajouter de nouvelles fonctionnalités selon celle que j'ai besoin.
  6. Utiliser.

C'est un projet à long terme, mais j'ai déjà fait mon premier test pour l'étape #1.

Les non-dits de PHP5

2006-12-09 23:04:56:
PHP5 indique que les objets sont détruits (la fonction __destruct() est appelée) lorsqu'il n'existe plus de références à un objet. Sauf que ça ne fonctionne plus vraiment dans PHP 5.2. En fait, on se retrouve avec des questions fondamentales qui date de l'orienté-objet et même avant avec les allocations/désallocations de mémoire. Quand détruire un objet?

On peut les détruire lorsqu'il n'existe plus de références à l'objet, mais il faut préciser ce qu'est une référence, les compter, décrémenter leur nombre, c'est énormément de travail pour le langage. On peut les détruire en ordre de construction, on peut les détruire en ordre inverse de construction. On peut les détruire aléatoirement. Dans la documentation de PHP, on dit lorsqu'il n'existe pas de références. Cependant, une référence d'un objet avec "global" dans un destructeur, on en fait quoi? Dans PHP5.2, on en tient pas compte. Donc, l'objet va être supprimer à un moment presque indéterminé. En fait pas indéterminé, déterminé par la version de votre PHP. En PHP 5.0, 5.1, c'est en ordre de construction, en PHP 5.2 c'est en ordre inverse de construction.

Tout ça pour dire que plusieurs scripts qui utilisent __destruct risque de ne plus fonctionner. Par exemple, Wordpress.

Ah les non-dits, un autre problème de communications, documentation...

D'un autre côté, si on y pense, la destruction des objets est compliqué en programmation. Imaginez dans la vraie vie. Moi je dis qu'on devrait faire des scripts qui ne se terminent pas et qui recyclent leur objets. À quand la programmation verte?

Pourquoi ça marche pas?

2006-12-09 12:59:29:
mount -t ext3 /dev/hdc1 /mnt/c1: Unable to mount hdc1. lsof n'indique aucun fichier, /mnt/c1 est un nouveau répertoire. Je suis présentement sur le / (seul usager connecté sur la machine). fsck -f /dev/hdc1 est crrect, fdisk /dev/hdc est correct. mkfs.ext3 /dev/hdc1 est correct.

1. Google: disk busy to mount another device
http://www.google.ca/search?q=disk+busy+to+mount+another+device&hl=en&lr=&safe=off&client=firefox-a&rls=org.mozilla:fr:official&start=10&sa=N
2. 10e lien
http://www.debianhelp.org/node/1296
3. 1er lien dans les commentaires (solutions):
http://www.linuxquestions.org/questions/showthread.php?t=251293
4. erreur qui a donné l'intuition "kernel: device-mapper: dm-linear: Device lookup failed"
5. Google: device-mapper: dm-linear: Device lookup failed
http://www.google.ca/search?q=device-mapper%3A+dm-linear%3A+Device+lookup+failed&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:fr:official
6. 5e lien:
http://bugs.centos.org/view.php?id=1050
7. indique qu'il a enlevé dmraid

Donc, j'enlève le dmraid, je reboote, et voilà, plus d'erreur.

Next ⇒

Ajouter votre commentaire