L'alyblog

Aller au contenu | Aller au menu | Aller à la recherche

Athletics : cours forest !

Athletic

Une petite application sympa en flash, où l'objectif est de courir. La difficulté, est que l'on contrôle les jambes de l'athlète : deux touches pour le balancement, et deux touches pour les genous.

A essayer de suite !!

Et inscrivez votre score dans les commentaires ;) Moi, mon record (en courant) est de 16,4m !

http://www.foddy.net/Athletics.html

Passage à Dotclear2

marteauEt voila, je viens de passer à Dotclear2 que je voulais tester depuis un petit bout de temps !

L'interface d'administration est très soignée. De plus, pas mal d'options ont été ajoutées.

J'en profite pour changer de style ... Un petit ravalement de façade ne fais jamais de mal ;)

debian - connaitre l'espace libre sur les disques dur

disque dur On me demande souvent comment obtenir la taille restante sur un serveur debian en mode terminal.

df -h
La commande df permet d'afficher la taille des systèmes de fichier, ainsi que l'espace restant pour chacun.
Grâce à l'option "-h", les tailles apparaissent dans un format plus lisible (Mo, Go, ...).

Maintenant qu'on sait la place restante, on peut facilement s'apercevoir quand le disque devient saturé. Encore faut-il pouvoir savoir quoi faire une fois cette constatation faite...

du -h --max-depth=1
Cette commande permet de déterminer la taille des dossiers d'un répertoire.
L'option -h permet encore une fois d'afficher les tailles dans un format lisible.
L'option --max-depth=n permet de limiter l'affichage à une arborescence de n sous-dossiers.

Grâce à ses 2 commandes, il est très simple de connaitre la place restante, et si besoin, identifier les dossiers un peu trop gourmands.

Ubiquity : créer une nouvelle fonction !

Ayant entendu parler d'Ubiquity, j'ai voulu tester.

Ubiquity est une extension firefox, distribuée par Mozilla, et qui permet d'utiliser FireFox en lui parlant. Plus précisément, cela ajoute une sorte de terminal dans FireFox pour simplifier certaines actions.

Par exemple pour une recherche Firefox, ouvrez Ubiquity (ctrl+espace pour windows, alt+espace pour mac) et saisissez directement votre recherche : en validant, cela ouvre un nouvel onglet avec la page de résultat Google.
Ubiquity peut faire pleins de chose : recherche sur Amazon, envoyer rapidement tout ou partie d'une page par email, voir des résultats sur une carte google map... Mais ce n'est pas le but de ce billet, que d'expliquer ce que fait Ubiquity.

Ce qui m'intéressait, était de savoir comment créer ses propres raccourcis, ses propres fonctions, simplifier des actions que l'on fait tous les jours et qui sont rébarbatives.

Je me suis tenté à réaliser un raccourci pour mes recherches sur la documentation PHP.

Pour accèder à l'édition de commande, il suffit de saisir command-editor.
Toutes vos fonctions personnelles se trouvent dans la zone de saisie.

Voici mon script pour effectuer la recherche dans la documentation des fonctions de PHP :

 CmdUtils.CreateCommand({
name: "php",
takes: {"php function": noun_arb_text},
homepage: "http://alyblog.free.fr/dotclear/",
author: {name: "Alex", homepage: "http://alyblog.free.fr/"},

preview: function (pblock, theFunction) {
var pData = {query: theFunction.text};
pblock.innerHTML =
CmdUtils.renderTemplate("Searches php.net for <b>${query}</b>",
pData);
},

execute: function(theFunction) {
var url = "http://fr.php.net/manual-lookup.php?lang=en&pattern={QUERY}"
var urlString = url.replace("{QUERY}", theFunction.text);
Utils.openUrlInBrowser(urlString);
}
})

CmdUtils.CreateCommand permet de définir une nouvelle fonction à ubiquity
name : nom du script. C'est aussi le moyen de lancer le script dans ubiquity
takes : indique à l'utilisateur l'argument à saisir

Ensuite on trouve les 2 blocs les plus intéressants : preview et execute

execute : permet de définir l'action une fois la requête exécutée. Dans notre exemple, on va simplement ouvrir la page de résultat dans un nouvel onglet.
preview : permet de définir ce qu'il se passe lors de la saisie de la requête. Dans notre exmple, on va afficher Searches php.net for "terme recherché"

On remarque qu'il est assez simple de se créer ses propres outils.

Bon test !

Une calculatrice dans le terminal

Il arrive fréquemment de devoir faire un calcul simple lorsque qu'on travaille sur un serveur en mode console.
Si, comme moi, vous n'avez jamais de calculette sous la main, wcalc est fait pour vous !

On peut réaliser des calculs scientifiques, grâce à un grand nombre de constantes, utilisation de variables, et la possiblité de faire les calculs en hexadécimal, octal ou binaire.
wcalc fait pleins d'autres choses mais je ne développerai pas car elles me sont inutiles.

Etes vous prêt ?

apt-get install wcalc

limitation à 9 variables dans les Htaccess

Pour un projet client, de nombreuses variables doivent être passées dans l'url, et bien sûr, cette url doit être réécrite. De nombreux cas étants possibles, on se retrouvait avec beaucoup de groupes dans le htaccess comme celui ci : (-([0-9]+))?.
Le premier jeu de parenthèse est présent car tout le groupe est facultatif (d'où la présence du "?" final). Le deuxième jeu de parenthèse représente la variable à récupérer (constituée de chiffre de 0 à 9).

Le problème est donc que chaque groupe facultatif constitue donc 2 variables : $1 représente le contenu du premier jeu de parenthèse et $2 le contenu du deuxième jeu de parenthèse.
On arrive donc assez rapidement à un nombre conséquent de variables. Et lors de test, je n'arrivais pas à récupérer la variable $10, ni les suivantes d'ailleurs.
J'ai ensuite trouvé une info sur le site d'apache :

Back-references are $N (N=0..9) identifiers which will be replaced by the contents of the Nth group of the matched Pattern.

Apache limite à 9 le nombre de variables dans une réécriture d'url.
Il est peut être possible de modifier ce paramètre dans la configuration du serveur web, mais cette solution n'est pas satisfaisante pour les hébergements où l'on ne maitrise pas la configuration.

Pour diviser par 2 le nombre de variable, j'ai découvert la notion de groupe passif : (?: ).
En effet, chaque jeu de parenthèse représente une variable pour Apache. Cependant, avec la notion précédemment citée, le groupe sera tout simplement ignoré.
Si on reprend l'exemple de tout à l'heure : (-([0-9]+))?, il suffit de le modifier et écrire : (?:-([0-9]+))?.
Le premier jeu de parenthèse ne sera plus une variable !

google sécurise le net

je viens de découvrir cette fonctionnalité de google :
ce site risque d'endommager votre ordinateur.
J'ai été surpris de voir que Google prévient maintenant des sites potentiellement dangereux par ce message (ce site risque d'endommager votre ordinateur) qui amène vers une page d'explication pour les internautes.

Une deuxième sécurité est mise en place, un peu plus violente celle là. Elle intervient sur après le clique sur le lien dans la page de résultat :

Bon apparemment, ça fait plus d'un an que cette fonctionnalité existe ^^, je n'étais jamais tombé sur ce message.

Reste à savoir si cette information est justifiée ou non

Et bien à première vue, je dirai que non.
Mais il faut dire que la programmation de ce site laisse à désirer : On commence par du javascript avant même la balise <html>, une multitude de code pas très catholique valide (attribut non valide, non quotés, ...) , et le clou du spectacle : le code html se termine par une belle balise ouvrante ("<") !

Mais rien de dangereux pour notre navigateur, ou même notre ordinateur

Installation d'eclipse pour du développement LAMP

Eclipse est un framework conçu à la base pour être extensible via des plugins. Initialement développé pour le langage java, Eclipse est aujourd'hui fortement utilisé pour d'autres langages de développement.
Nous allons nous intéresser au développement web LAMP.

Lire la suite...

Red Hat dans les nuages

Au retour de mes vacances, dans l'avion, j'ai profité des films sur l'écran de mon siège.

Suite à un problème technique, j'ai demandé à l'hotesse de réinitialiser mon système.

C'est à ce moment que je me suis rendu compte que KrisWorld, le système d'exploitation des consoles dans les boeing 777 de la compagnie Singapour Airlines utilise le système d'exploitation red hat.

capture d'ecran krisworld
Merci linux !

edit du 28/08/07

Je viens de lire une news sur Zdnet qui explique qu'à partir d'octobre, la compagnie Singapour Airlines équipera ses avions d'un système complet "linux"

Je ne comprend pas trop puisque c'est déjà le cas.
A la vue du descriptif, je ne vois rien de nouveau avec le système que j'ai utilisé :

  • Des jeux, dont certains en réseau avec les autres passagers
  • Des films en plusieurs langue
  • Une grande quantité d'albums à écouter
  • Un système d'apprentissage des langues étrangères
  • Des connexions pour brancher son ordinateur portable
  • La suite bureautique open Office
  • Une application pour obtenir des applications sur un pays (géographie, histoire, culture, etc)

ajouter un nouveau disque dur sur debian

Pour ajouter un nouveau disque dur, il faut déjà différencier s'il s'agit d'un disque en interne branché sur la nappe IDE, ou un disque externe branché sur port USB par exemple.

Sur la nappe IDE, ce sera généralement un disque dur de type /dev/hdx ou x représente le numéro du disque.
Sur un port USB, ce sera généralement un disque dur de type /dev/sdx ou x représente le numéro du disque.

Dans mon cas, c'est un disque externe.

Grâce à la commande cfdisk /dev/sda, je vois bien que ce disque existe et qu'il s'agit du disque à monter.
Si vous avez déjà un disque externe, ou un disque scsi ou serial ATA, essayez /dev/sdb, /dev/sdc, jusqu'à trouver le disque à monter.

Ensuite un mount classique du disque trouvé fonctionnera à merveille :)

mkdir /mnt/new_rep
mount /dev/sda /mnt/new_rep

Encodage dans mysql

A la suite d'une erreur de type :

Illegal mix of collations (latin1_general_ci,IMPLICIT) and

(cp1251_general_ci,COERCIBLE) for operation 'like'

je me suis demandé à quel niveau l'encodage cp1251_general_ci intervenait puisque mon éditeur de texte encode en utf-8, ainsi que l'encodage spécifié dans ma page xhtml et l'interclassement de ma base de données.

Avec la commande :

SHOW VARIABLES LIKE 'char%'

Voici ce que MySql retourne :

character_set_server  	cp1251
character_set_system 	utf8
character_set_database 	latin1
character_set_client 	utf8
character_set_connection 	utf8
character-sets-dir 	/usr/local/share/mysql/charsets/
character_set_results 	utf8

Sur FreeBsd, MySql dispose de plusieurs configurations par défaut, selon le type d'utilisation et la puissance du serveur. Les fichiers de configuration par défaut se trouve ici :

/usr/local/share/mysql/my-huge.cnf
/usr/local/share/mysql/my-large.cnf
/usr/local/share/mysql/my-medium.cnf
/usr/local/share/mysql/my-small.cnf

Pour personnaliser la configuration de MySql, il suffit de déplacer le fichier par défaut sélectionné dans :

/etc/my.cnf

Pour modifier l'encodage, j'ai ajouté ces lignes :

#Set the default character set.
default-character-set=latin1
#Set the default collation.
default-collation=latin1_swedish_ci

dans la section [client] et [mysqld].

Les encodages et interclassements disponibles sont dans le répertoire définit par la variable character-sets-dir vue précédemment.

Un objet en programmation : une définition claire

Si vous êtes débutant en programmation objet, voici une superbe définition de la notion d'objet :

JargonF - dictionnaire informatique - Définition de objet

Classe PhpMailer chez OVH

Par défaut, je n'ai pas réussi à envoyer des mails avec la classe Phpmailer depuis OVH.

Et j'ai trouvé cette astuce sur le net :

Il faut commenter ces 2 lignes.

// $mail->IsSMTP();
// $mail->Host = "localhost";

Gestion des connexions à une base MySql

Pour un projet à fort trafic, j'ai voulu effectuer des tests sur l'optimisation des connexions à une base de données.

J'ai volontairement exclu les connexions persistantes, car elles sont plus complexes à maitriser, et elles peuvent ajouter des nouveaux problèmes.

J'ai donc comparé 2 techniques :

  • Une connexion que j'initialise au début de la création de ma page et que j'utilise pour toutes les requêtes de la génération d'une page
  • Une connexion par requête que je ferme juste après.

On entend souvent que la deuxième technique est meilleure et qu'il faut toujours fermer la connexion le plus tôt possible.

En utilisant "Apache Bench" (disponible avec apache), j'ai pu comparé des montées en charge avec ces deux méthodes.
Le principe est simple : simuler 200 connexions simultanées à la page d'accueil de mon site en développement. Il y a des appels à la base de données classique comme l'affichage des dernières news,...

Une connexion par requête http

Concurrency Level:      200
Time taken for tests:   24.966934 seconds
Complete requests:      200
Failed requests:        103
   (Connect: 0, Length: 103, Exceptions: 0)
Write errors:           0
Total transferred:      1421396 bytes
HTML transferred:       1380996 bytes
Requests per second:    8.01 #/sec (mean)
Time per request:       24966.934 ms (mean)
Time per request:       124.835 ms (mean, across all concurrent requests)
Transfer rate:          55.59 Kbytes/sec received


Percentage of the requests served within a certain time (ms)
  50%  17665
  66%  21200
  75%  21530
  80%  21735
  90%  22679
  95%  23138
  98%  23919
  99%  24724
 100%  24737 (longest request)

Une connexion par requête SQL

Concurrency Level:      200
Time taken for tests:   42.109496 seconds
Complete requests:      200
Failed requests:        147
   (Connect: 0, Length: 147, Exceptions: 0)
Write errors:           0
Total transferred:      1527933 bytes
HTML transferred:       1486119 bytes
Requests per second:    4.75 #/sec (mean)
Time per request:       42109.497 ms (mean)
Time per request:       210.547 ms (mean, across all concurrent requests)
Transfer rate:          35.43 Kbytes/sec received
Percentage of the requests served within a certain time (ms)
  50%  27068
  66%  31418
  75%  33313
  80%  35299
  90%  36821
  95%  41163
  98%  41164
  99%  41164
 100%  41164 (longest request)

On se rend bien compte que utiliser la même connexion à la base est moins couteux pour le serveur web.
En effet, les 200 connexions mettront environ 25 secondes à être traitées alors que dans le cas de connexions individuelles, ces demandes seront traitées en 42 secondes.

P.S : si quelqu'un sait interpréter d'autre informations de apache bench, je suis preneur...

Mise en page CSS : esprit tordu ?

Ma première mission dans ma nouvelle boite consiste en la réalisation d'un site internet.

Pour sa réalisation, le choix du couple Xhtml + Css me parait évident vu que je développe mes sites internet de cette façon depuis quelques années et qu'aucune contrainte ne se présente.

Mais certains de la société me mettent gentillement en garde : Attention, les designs en CSS posent souvent des problèmes. Des personnes ont essayés avant toi, et beaucoups de problèmes se sont posés. Notamment avec FireFox.

Aïe ! Je précise que l'utilisation des feuilles de style Css ne posent pas plus de problème que la réalisation d'un design en tableau, bien au contraire. Et surtout, ce n'est pas FireFox qui posent problème mais bien les navigateurs non respectueux des standards (I.E 6 en locurence).
Enfin, je précise que la réalisation d'un site en tableau me prendrait du temps, vu que je n'en n'ai pas fait depuis bien longtemps...

Ce qui me gène dans cet épisode, ce n'est pas la crainte des graphistes envers une technologie qu'ils ne connaissent pas, mais c'est plutôt que l'utilisation des feuilles de style EST la manière la plus logique d'habiller une page.
Pourquoi certaines personnes pensent que bricoler avec des cellules d'un tableau (en fusionner certaines, en diviser d'autres, ajouter des cellules vides pour réaliser une marge, et j'en passe) est une manière logique de faire de la mise en page ?

Franchement, je me demande qui a l'esprit le plus tordu ...

Les choses arrivent quand on ne s'y attends pas

A chaque fois que l'on nous dit cette phrase, on trouve cela un peu con.

Mais une fois de plus, c'est arrivé pour moi.

Après plusieurs CDD, alternés avec des courtes périodes de chômage, j'ai décidé début avril 2006 de créer mon entreprise : AlyWeb.

Je n'étais qu'au début de ce challenge et déjà quelques contrats en poche. Mais il est vrai que le début, c'est loin d'être la poule au yeux d'or.

Et après avoir un peu touché à mes économies, je me demandais si ça allait s'améliorer rapidement, pour me permettre d'en vivre.

Mais voila, fin septembre, après avoir mis à jour mon CV sur monster, 3 sociétés me contactent dont 2 pour un CDI, vous savez, le type de contrat qui fait que la banque est plus cool, et qu'elle accepte l'achat d'une voiture, d'un logement etc...

Je suis actuellement en période d'essai dans l'une d'elles et cette sécurité me rassure.
J'aurai aimé continuer mon entreprise, mais cette situation ne me donnait aucune garantie. Alors pour l'instant, j'honore les contrats en cours, je commence chez mon nouvel employeur et je mets ma boite en stand by, le temps de voir ce que je décide.

Convertir un script de format DOS/Windows au format Unix

Certains scripts peuvent poser problème sous linux ou mac si le format de fichier est de type DOS/Windows.

voici une astuce simple pour corriger cela :

  • Ouvrir le script dans l'application vim
  • Saisir dans vim :set fileformat=unix (ne pas oublier les :)
  • Valider en cliquant sur la touche entrer
  • Enregistrer et quitter l'application vim en tapant :wq (ne pas oublier les :)
  • Valider en cliquant sur la touche entrer

Le script est maintenant sauvegardé comme un fichier Unix.

Fini la corvée des courses

J'ai testé pour vous Auchan drive qui permet de faire sa liste de course sur internet, puis de passer chercher sa commande.
Le service est plutôt sympa, la plupart des produits du magasin sont disponible à la vente en ligne et je trouve que l'on maitrise mieux le montant de la douloureuse...
Une fois la liste effectuée, la validation de la commande est assez classique.
On choisit enfin l'horaire de passage pour retirer la commande et on obtient son code client.
Je remarque qu'Auchan ne fait pas payer en ligne (c'est surprenant de leur part).

La réception est très simple aussi, on se dirige vers un ordinateur et on saisit son code client. Un écran indique alors les différentes commandes en cours (dans mon cas,il y en avait qu'une ;-) ). On la sélectionne et c'est à ce moment que l'on règle. Ensuite, le ticket de paiement s'imprime et la machine nous indique un numéro de file d'attente sur laquelle nous devons nous garer.
Des distributeurs à journaux "20 minutes" sont disposés pour nous faire patienter.
Quelques minutes plus tard, on vient charger notre coffre de tous ces beau produits :-).

N'est ce pas merveilleux ?

Vivre un tour du monde

Si vous voulez suivre un tour du monde, voici le blog d'amis qui sont partis début juillet pour un tour du monde d'un an.

C'est interressant de suivre leur voyage à travers leurs expériences.

Dotclear2

N'oubliez pas la version beta de dotclear2 ou dotclear 2 est disponible sur le site de dotclear

- page 2 de 7 -