Too Cool for Internet Explorer

  blog.harobed.org | resources.harobed.org | bzr.harobed.org | projects.harobed.org

vendredi 12 mars 2010

Sujet : php var_dump VS python repr !

413 lectures
0 vote(s)

Un exemple en Php :

<?php

$a = 'bar "test" bar';
var_dump($a);
// Sortie : string(14) "bar "test" bar"

$b = 'bar \'test\' bar';
var_dump($b);
// Sortie : string(14) "bar 'test' bar"

$c = 'bar \'test\' "test" bar';
var_dump($c);
// Sortie : string(21) "bar 'test' "test" bar"

$d = array(
    'foo' => 'bar \'test\' "test" bar'
);
var_dump($d);
/* Sortie :
    array(1) {
      ["foo"]=>
      string(21) "bar 'test' "test" bar"
    }
*/

?>

la sortie de ce script :

string(14) "bar "test" bar"
string(14) "bar 'test' bar"
string(21) "bar 'test' "test" bar"
array(1) {
  ["foo"]=>
  string(21) "bar 'test' "test" bar"
}

Même chose en Python :

>>> a = 'bar "test" bar'
>>> print(repr(a))
'bar "test" bar'

>>> b = 'bar \'test\' bar'
>>> print(repr(b))
"bar 'test' bar"

>>> c = 'bar \'test\' "test" bar'
>>> print(repr(c))
'bar \'test\' "test" bar'

>>> d = { 'foo': 'bar \'test\' "test" bar' }
>>> print(d)
{'foo': 'bar \'test\' "test" bar'}

Observatons :

  • PHP oublie d'afficher les caractères d'échappements
  • Python affiche correctement les caractères d'échappements
  • Python prend soin d'afficher au mieux les guillemets : soit utilise des simples "quotes" ou des "double quotes"

Tag(s) : ,

samedi 3 janvier 2009

Package debian "Utrac"

1070 lectures
0 vote(s)

Je viens de réaliser mon premier package Debian. J'ai packagé l'outil "Utrac".

Qu'est ce que "Utrac" ?

"Utrac" est outil qui permet de trouver l'encodage d'un fichier texte.

Example :

$ utrac -p index.html
ASCII

Il est techniquement impossible de détecter à 100% l'encodage d'un fichier mais jusqu'à présent "Utrac" (1 an d'utilisation) m'a toujours donné de bons résultats.

"Utrac" permet aussi de convertir des fichiers d'un encodage à un autre mais je n'ai jamais utilisé cette fonctionnalitée. Pour cette tâche j'utilise au choix iconv ou recode.

Je ne garantie pas que le package Debian soit parfaitement réalisé (c'est mon premier paquet), si vous constatez des erreurs de packaging, n'hésitez pas à me les signaler.

Ma version modifiée de Utrac n'est pas un fork, j'ai envoyé mes modifications aux auteurs de Utrac.

J'ai au passage converti Utrac à autotools.

mercredi 7 mai 2008

Ce qui me fait préférer Python

509 lectures
0 vote(s)

Depuis que j'ai débuté l'informatique, j'ai appris et utilisé de nombreux langages.

Concernant les langages uniquement, sans parler des APIs ou Framework ni des schells, plus ou moins en ordre chronologique, j'ai commencé sur Amstrad CPC par le Basic, puis l'assembleur z80.

Quand je suis passé au PC, j'ai commencé par le Turbo Basic de Borland, le Quick Basic de Microsoft, le Turbo Pascal de Borland, de l'assembleur x86, un tout petit peu de C, le Visual Basic de Microsoft, le Delphi de Borland.

Je suis ensuite passé à GNU/Linux en 1998, là j'ai découvert et utilisé le Perl, PHP, Python, j'ai approfondi le C et C++. J'ai étudié un peu Java et C#. J'ai utilisé un peu TCL. J'ai jetté un oeil sur Ruby, Ada, Lisp. Je connais de nom Caml, Scheme, Smaltalk, Eiffel ...

Pourquoi cette restrospective ? Parce que parmi tous les langages que j'ai étudié et/ou utilisé, à mes yeux, l'un d'eux sort du lot : Python.

Lire la suite...

Tag(s) :

samedi 12 avril 2008

Dans la série ''Ce qui me fait préférer Python'' : ''arguments optionnels et nommés''

718 lectures
0 vote(s)

Une des fonctionnalités qui me fait préférer Python à d'autre langage est la possibilité d'utiliser des arguments nommés dans les fonctions ou les méthodes.

Lire la suite...

Tag(s) : ,

dimanche 6 avril 2008

XML-RPC Python vs PHP

1867 lectures
1 vote(s)

Il y a quelques mois, j'ai eu à développer un serveur XML-RPC en PHP. Il m'est alors venu à l'esprit que l'utilisation de ce protocole était un bon exemple de comparaison entre PHP et Python (avec préalablement une petite idée derrière la tête).

Le but de ce document est donc de comparer l'utilisation d'une l'API XML-RPC en langage PHP et en langage python.

Lire la suite...

Tag(s) : ,

dimanche 4 mars 2007

Déboguer sous PHP et une petite introduction à PEAR et PECL

2038 lectures
4 vote(s)

Étant sur le point de réinstaller Xdebug (débogueur PHP) sur ma box, j'ai décidé de partager avec vous quelques informations à propos de l'installation de l'utilisateur de cet outil.

Ce billet est découpé en trois parties :

  1. Petite introduction à PEAR et PECL
  2. Installation de Xdebug
  3. Utilisation de Xdebug

Lire la suite

Tag(s) :

vendredi 22 décembre 2006

Lecture pour les vacances de Noël

1079 lectures
0 vote(s)

Étude du linkage de librairies :

et un peu de sécurité :

mardi 28 novembre 2006

Point de flexibilité, abstraction, DRY (Don't Repeat Yourself)...

1857 lectures
0 vote(s)

Avant propos

Les mathématiciens sont en général fainéants. Fainéant dans le bon sens du terme : trouver une méthode permettant d'atteindre un objectif le plus simplement et rapidement possible. La plupart du temps, la recherche de cette méthode et beaucoup plus longue que la réalisation de la méthode initiale, ce qui est assez contradictoire pour quelqu'un de fainéant. L'activité paraît encore plus aberrante lorsque le nombre fois que l'on doit réaliser l'objectif multiplié par le temps de la méthode initiale est inférieure au temps de recherche d'une nouvelle méthode plus optimisée.
Je pense que ces particularités font parties des caractéristiques majeurs qui différencient les personnes de culture "scientifiques" et "non scientifiques" et sont les sources de bien d'incompréhensions.

Cette spécificité que je viens de décrire est l'un des points communs entre le mathématicien et l'informaticien et ceci de façon plus prononcé pour les geeks et encore plus pour les hackers et gourous. Je pense que là aussi c'est l'une des sources d'incompréhensions entre geeks et non geeks.

Assez pour les généralités, je vais tenter d'expliquer quelques principes de programmation qui illustrent ces propos : l'abstraction, la notion de flexibilité et le principe DRY (Don't Repeat Yourself).

Lire la suite

Tag(s) : ,

mercredi 7 septembre 2005

Performance d'une machine : l'influence de la mémoire

825 lectures
0 vote(s)

Ce midi, j'ai lu l'article intitulé "Tuning de code, optimisation d'un filtre" du GNU/Linux Magazine / France (numéro 75). Je blog à ce sujet car cette article m'a appris beaucoup de chose au sujet de l'optimisation du code. L'influence de la mémoire sur les performance d'une application. Les enjeux des buffers et des choix internes du noyau...

La conclusion de l'article, je cite :

""" Je ne vais pas paraître très original, mais vu le comportement du kernel considéré ici, s'il fallait faire des traitements informatiques très lourds (par exemple, traiter des images gigantesques comme celles issues de grands téléscopes ou des bases de données d'entreprises), le premier moyen pour accélérer serait d'augmenter considérablement la quantité de mémoire. """

À la lecture de son acticle, on comprend concrétement pourquoi cette conclusion grâce à des programmes de tests et les systèmes de mesures de performances systèmes associés.

vendredi 11 mars 2005

Faire une simulation d'une installation réseaux sur une seul machine ...

924 lectures
0 vote(s)

Voila ma problématique : je souhaite tester une configuration Postfix (serveur de mail) avant de la mettre en production. En effet, je ne souhaite pas arrêter mon service de mail. Pour faire un test réaliste, il me faut quelques machines qui proposent les services suivants : DNS, SMTP *2 et un client.

J'ai deux solutions :

  • configurer plusieurs machines physiques
  • créer plusieurs machines virtuelles sur une seule machine

Pour une question de moyen et pratique, j'ai choisis la seconde solution. J'ai entendu parler il y a quelques semaines d'UML (pas la modélisation). User Mode Linux (UML) est une fonctionnalité du noyau Linux. Elle sert à faire fonctionner le noyau linux en userspace, c'est à dire lancer un environemment Linux à partir de Linux.

Sur le site officiel d'UML, une section présente des utilisations de cet outil. Une cas m'intéresse tout particulièrement : "An implementation of a teaching network with UML". Il corresponds à exemple de simulation comme celui que je souhaite réaliser.

Dans les jours qui suivent, je vais essayer de mettre en oeuvre un tel environnement de simulation. Lorsque j'aurais réussis, j'en ferais part sur mon blog.

Un petit lien suplémentaire : http://rotomalug.org/article.php3?id_article=78

jeudi 7 octobre 2004

En route vers la ''maîtrise'' du framework Java

842 lectures
0 vote(s)

Je connaissais le langage Java depuis de nombreuses années. J'avais quelques bases, mais je n'avais jamais réellement pratiqué jusqu'à ces dernières semaines.

Pourquoi je me suis mis à java ?

Parce qu'il me fallait trouver une solution pour développer une application permettant de redimensionner, retailler, et transférer une image en XML-RPC vers un serveur. De plus, cette application doit être embarqué dans une solution Web.

J'ai trouvé deux solutions :

  • utiliser la plate forme Mozilla
  • utiliser la plate forme Java

J'ai choisi cette dernière car elle était pour moi la plus rapide à mettre en oeuvre. Mais par la suite, j'aimerai développer la même application sous la plate forme Mozilla.

À noter, qu'une fois encore, je constate que le plus gros du travaille et de connaître, "maîtriser" l'API d'une plate forme. La maîtrise du langage ne représente que "un pour cent" de l'apprentissage.

En rappelant cette évidence, je pense tout particulièrement aux "informaticiens" qui pensent maîtriser un framework après savoir "faire une boucle et définir un objet" dans le langage correspondant au framework.

Pour faire une comparaison, une personne sachant écrire n'est pas pour autant un écrivain.

mardi 14 septembre 2004

Mauvaise identification de l'origine d'un problème, et voila 2h de perdu

776 lectures
0 vote(s)

Hier soir j'effectué une sauvegarde du portable de l'association dont s'occupe ma mère et soudain le transfert des données se coupe. Dans un premier temps je pense avoir à faire à un problème logiciel ou une simple coupure, mais lorsque je regarde la machine qui était destinataire de cette sauvergarde, je m'aperçois qu'elle n'a plus accès au réseau.

Je teste alors d'autre machine => aucun problème avec le réseau J'en déduis que la source du problème est limité à la machine en question. Je désactive et réactive l'interface réseau => toujours aucune connection Pour vérifier si c'est un problème logiciel ou matériel, je redémare sur une autre partition mais le problème est toujours présent. J'essaie à tout hasard d'effectuer un reset de mon routeur mais rien n'y fait. J'en conclu au final que c'est surement la carte réseau de cette machine qui est "morte".

Ce matin, j'ai été acheté une nouvelle carte réseau. Je branche tout ça, j'en profite pour nétoyer les ventialteurs... Je relance, je teste, toujours pas de réseau ! Je change de cable, de slot... rien ! Je pense alors à une chose : mon portable et l'autre machine qui est branché au réseau passe par le wifi. Je me dis, je vais tester la connection au réseau par cable sur ces machines.

Je teste, et là non plus pas de réseau. A ce moment, il était clair que le problème venait de la connection par cable du routeur. Pourtant j'avais fait un reset. Je débranche le routeur, je le rebranche, j'attend quelque seconde, et la connection réseau par cable fonctionne à nouveau.

Conclusion, par erreur j'ai fais confiance au reset logiciel, et j'en ai déduis que le problème ne venait pas du routeur. Une conclusion qui m'a fait perdre 2h environ, voir plus... :(

mercredi 11 août 2004

Mecredi 11 août - Templeet

856 lectures
0 vote(s)

Aujourd'hui j'ai travaillé sur Templeet.

Documentation :

  • blocs { et }
  • fonction auth_signout()
  • fonction parseparam()
  • ajout d'un menu d'accès directe au module dans l'index des fonctions
  • fonction array()
  • reformatage de la page defunc.fr.html
  • ajout de l'astuce : "Définir la valeur de retour d'une fonction"

Développement du module de transfère des comptes utilisateurs du mode file vers le mode DB et vis-versa.

Se suicider,
c'est essayer de mourir de son vivant.
-+- Philippe Geluck, Le chat -+-