Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

MadMatt

parce qu'ensemble, c'est moins plus dur que tout seul

Un web-based SSH Java

Vous voulez avoir accès à vos machines linux de n'importe où et sans avoir obligatoirement de client ssh ?

Voici un client ssh mais web : sous forme d'applet Java. Si vous l'hébergez sur un de vos serveur (il ne nécessite aucun script particulier, contrairement à de nombreux web-based ssh qui tournent sous python), vous pourrez vous connecter en ssh à vos machines de n'importe où avec un simple navigateur web supportant le java.

Il a l'air très puissant : il intègre aussi des clients telnet, sftp etc... Et gratuit pour un usage personnel.

Bref, si vous voulez le télécharger, rendez-vous ici :
http://www.appgate.com/index/products/mindterm/mindterm_download.html

Soulagez vos mains : passez au clavier Dvorak

Voici une découverte très récente que je viens de faire : l'azerty (et le qwerty) sont des claviers qui ont été inventés POUR RALENTIR la frappe des utilisateurs. Ça date de l'époque des machines à écrire, où si le/la secrétaire tapait trop vite, les touches se bloquaient.
Seulement aujourd'hui on a plus ce problème, et je dirais même qu'on voudrait le plus de rapidité possible, pourtant on est resté aux mêmes clavier azerty.

C'est bien dommage, d'autant plus que ces claviers sont fait pour nous ralentir, donc parcourir de grands mouvements avec les mains, ce qui peut entrainer dommages aux muscles, tendons et nerfs (y'a t'il des victimes dans la salle ^^ ?).

Bref, c'est la où je vous parle du Dvorak : une configuration des touches alternative conçue pour minimiser les mouvements et accélerer un maximum la frappe : de l'ergonomie quoi.
Le Dvorak est à l'origine anglais mais il existe des équivalents français.
Apparemment il y'en aurai 3 types différents, personnellement j'ai retenu le dernier : le fr-dvorak-bépo, car il est à jour, issu de communautés open source (donc suffisamment travaillé) et ça a l'air d'être le meilleur des 3 (purement subjectif).

Un peu de visuel, c'est plus parlant :
Disposition Dvorak
(la configuration fr-dvorak-bépo)

Pour y installer, sous windows, linux ou mac, aucun souci (il suffit de télécharger les pilote ici :
http://www.clavier-dvorak.org/wiki/Windows_:_installation)

Le problème : c'est que ça ne change pas physiquement vos touches :-D, donc perso j'ai choisi la bonne vieille méthode avec des étiquettes par dessus les touches, ça marche bien. Maintenant il ne reste plus qu'à apprendre à réécrire à l'ordinateur (le basculement entre azerty/dvorak est très facile au cas ou).

Les gains possibles :
- jusqu'à 40% de vitesse de frappe
- moins de fatigue musculaire et repos des tendons et nerfs (idéal pour les problèmes de canal carpien)
- les mains bougent moins, la frappe est beaucoup plus agréable (selon les dires de ceux qui le pratiquent)

Pour ma part je commence juste à m'y mettre, j'ai à peine mis 1/2 heure pour taper cet article ;-)

Lien vers le site :
http://www.clavier-dvorak.org/wiki/Accueil

Pour les intéressés, je ne crois pas que ce genre de claviers soient vendus tels quels (physiquement modifiés), j'ai cherché des revendeurs mais je n'en ai pas trouvé.

Forcer l'actualisation d'une image

Si vous développez des captcha, graphiques en tous genres etc... en PHP (ou autre langage serveur), vous avez peut-être été confronté à ce problème : l'image précédemment générée reste en cache dans le navigateur et si le script génère une image différente, celle-ci n'est pas réactualisée.

Voici une solution, tordue mais simple, quand vous ne voulez pas (ou pouvez pas) toucher aux Headers de l'image : rendre le nom de l'image aléatoire.
Comment ? En insérant simplement un nombre aléatoire dans l'url en paramètre GET, comme ça ça n'influe sur rien d'autre que l'appel à l'image. Voici un exemple tout simple :

<img src="histogramme.php?random=<?php echo rand(); ?>" alt="Chargement de l'histogramme..." />

T_PAAMAYIM_NEKUDOTAYIM

Ahaha, voilà une erreur PHP assez sympa :

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ')' in xxx on line 20

Apparemment, ça serait une histoire de "::"... J'en sais pas plus j'ai fait une erreur de frappe et je crois qu'il n'a pas aimé mon code PHP.

Disparition de variables de session PHP après une redirection ?
Aujourd'hui, je viens d'apprendre quelque chose que j'ai trouvé vraiment intéressant, et surtout piégeur !

Je développe actuellement un site web tout simple avec stockage de la connexion des utilisateurs en variable de session. Seulement, j'ai remarqué des phénomènes limites paranormaux : de temps en temps, après une redirection avec la fonction PHP header(), on se retrouvait déconnecté sans raison. Et impossible de reproduire le bug à coup sur, et surtout : ça n'arrivait jamais en local.

La raison est assez simple, mais tordue (merci aux commentaires dans les fonctions PHP du site php.net !) :
Si le script A ouvre une session (pour voir si l'internaute est connecté), puis redirige avec header() vers le script B, et que le script B ouvre lui aussi rouvre la session pour voir si l'utilisateur est connecté, il peut y avoir un problème.

En effet, normalement la session PHP est refermée à la fin du script. Donc quand A redirige vers B, on fait die() (ou exit) dans A et A termine son exécution.
Mais le serveur peut être tellement rapide que le script B est déjà appelé par le navigateur client
avant même que A ait fini son exécution, et donc le serveur exécute le script B qui demande d'ouvrir la session. Il y'a donc un conflit et B (en tout cas c'est ce que j'ai constaté avec mes tests approximatifs) voit bien le tableau de session, mais celui-ci est vide. Et donc boum -> l'internaute est déconnecté.

La parade ?
Utiliser session_write_close().
Soit après en avoir finit avec la session, c'est plus sur, soit juste avant l'appel à la fonction header(). Comme ça on est certain d'avoir fini de travailler sur la session et le script B peut l'ouvrir sans problème.

PS : je pense que ça n'arrivait jamais en local car mon PC n'a pas du tout la même puissance que le serveur, bien que les temps de réponses soient bien plus infimes, mais ça n'est que mon interprétation.
Résoudre le bug de BigDump sous Windows

J'ai récemment rencontré un bug facheux sur le script BigDump.
Ce script PHP sert à importer des gros fichiers de bases de données sans se soucier des limitations de tailles imposées par phpMyAdmin ou de la nécessité d'avoir un shell linux pour executer des commandes mysql (que généralement on a pas sur notre hébergeur).
Il est très sympa, simple (1 seul fichier), rapide et configurable, joli (avec interface AJAX), mais a un gros défaut :
il ne fonctionne pas avec les fichiers Windows.

L'erreur en question commence par :
Error at the line 3001: INSERT INTO table (xxx)
xxx représente un peu n'importe quoi, le script de découpage du fichier ayant un bug, c'est une chaine de caractère un peu aléatoire qui en sort.
La ligne 3001, c'est parce que le script traite les lignes par paquets, et donc au 2è paquet de ligne à traiter, la il y a erreur. C'est du aux retours à la ligne différents sous Windows (\r\n) et sous UNIX (\n).

C'est ce que j'ai eu le malheur de découvrir en l'utilisant, et j'ai remarqué que je n'étais pas le seul à avoir cette erreur. J'ai fouillé dans le script et je me suis rendu compte qu'en fait l'auteur a rajouté quelques lignes pour rendre son script compatible avec Windows mais qu'il ne l'a jamais testé (et ça ne marche pas bien sur :( ). Donc la solution la plus simple, c'est d'ouvrir le fichier csv à importer dans votre base de données avec Notepad ++, de le convertir en fichier UNIX, et de relancer le chargement.
Je n'ai trouvé cette solution nulle part ailleurs, alors j'espère que ça pourra en aider quelques uns.

Petit casse-tête du soir

Un super casse-tête qui m'a empeché de dormir pendant un certain temps Big Smile


Le principe est simple, vous avez 2 triangles composés exactement des mêmes "morceaux". Seulement sur le triangle du bas, un "trou" apparaît... Où est l'erreur ?


Afficher la barre de favoris sur plusieurs lignes dans Firefox

Si vous êtes comme moi : vous voulez que le moindre espace de l'écran, le moindre clic de souris soit optimisé, alors vous cherchez surement à afficher votre barre de favoris (ou plutôt de marques-pages devrais-je dire) sur plusieurs lignes.

J'ai longtemps cherché sur internet, trouvé difficilement quelques codes sur des sites anglais, jusqu'à en trouver un qui marche.. à peu près : je ne pouvais plus redimensionner ma fenêtre. J'ai donc fait un petit mix des codes que j'ai pu trouvé et le résultat fonctionne.

Voilà la méthode : vous devez éditer le fichier userChrome.css qui se trouve dans C:\Documents and Settings\VotreNom\Application Data\Mozilla\Firefox\Profiles\id.du.profile\chrome\ (ici le chemin d'accès sur ma machine sous XP, à adapter pour vous...).
Attention : pensez à fermer Firefox ;-)
Rajoutez les lignes suivantes à la fin du fichier :
/* Toolbar de marques-pages multilignes */
#bookmarks-ptf {
    display:block;
    line-height:25px;
}
#bookmarks-ptf toolbarbutton {
    margin: 0 1px !important;
}
#bookmarks-ptf toolbarseparator {
    display:inline
}
#bookmarks-stack {
overflow: visible !important;
}


C'est du CSS, vous pouvez rajouter quelques trucs, enlever quelques balises qui vous semblent peut importantes, rajouter du style, bref je vous donne juste la base (et encore y'a surement des lignes qu'on peut supprimer).
Enregistrez et relancez Firefox pour tester.

Voilà j'espère que ça vous sera utile.

MadMatt

Installer PHP5 sous EasyPHP 1.8

Si comme moi vous avez complètement la flème de réinstaller EasyPHP entièrement pour pouvoir profiter de PHP5 (c'est à dire passer de EasyPHP 1.8 à EasyPHP 2), voici la marche à suivre pour remplacer PHP4 par PHP5 sous la version 1.8.

Déjà, téléchargez les binaires pour windows de PHP 5.25 ici :
http://sourceforge.net/project/showfiles.php?group_id=14045

Ensuite, arrêtez EasyPHP et dans son répertoire d'installation renommez le dossier /php/ en /php4/ par exemple. Dézipper ce que vous avez téléchargé et renommez le répertoire d'extraction en /php.

Dans le dossier /conf_files/, ouvrez le fichier httpd.conf et à la ligne 198 changez :
LoadModule php4_module "${path}/php/php4apache.dll"
par :
LoadModule php5_module "${path}/php/php5apache.dll"

Puis à la ligne 245 :
AddModule mod_php4.c
à remplacer par :
AddModule mod_php5.c

Faites ensuite les mêmes modifications dans le fichier /apache/conf/httpd.conf. (ce deuxième fichier est généré automatiquement par EasyPHP à partir du premier, mais je ne sais pas comment 'provoquer' volontairement sa mise à jour). Attention : ${path} est remplacé par le vrai chemin d'accès sur votre machine pour le fichier du répertoire /apache/conf/, c'est pour ça qu'il y'a 2 fichiers...

Ensuite, PHP5 n'est pas configuré par défaut pour fonctionner avec MySql. (essayez http://127.0.0.1/mysql/ pour vous en rendre compte).
Pour cela, il faut également éditer le fichier php.ini, présent (comme pour httpd.conf) dans /conf_files/ et dans le répertoire /apache/.
Ajoutez l'extension mysql à la fin du fichier :
extension=php_mysql.dll

Dernier détail : le dossier des extensions a changé entre les deux versions, il faut donc également modifier la ligne (445) :
; Directory in which the loadable extensions (modules) reside.
extension_dir = "${path}\php\extensions\"

en :
; Directory in which the loadable extensions (modules) reside.
extension_dir = "${path}\php\ext\"


Même remarque que précédemment :
${path} est remplacé par le vrai chemin d'accès sur votre machine dans le fichier qui se trouve dans le répertoire /apache/


Et voilà, un beau PHP 5 tout neuf ;-)

Générer un jeux de couleurs pour un site web

Voici quelques liens d'outils très sympa quand on est en train de définir des élements graphiques d'un site web.
Ce sont des générateurs de jeux de couleurs. Vous leurs donnez une couleur ou une image et ils vous sortent une liste de couleurs associées.

Celui la est très sympa et efficace, les couleurs générées sont assez cohérentes tout en restant variées.
http://www.colorblender.com/

Ces deux vous plus loin, ils proposent de choisir le mode de génération des couleurs : le choix est plus varié, mais plus forcément cohérent dans certains cas (enfin je pense que c'est une affaire de gouts avant tout).
http://wellstyled.com/tools/colorscheme2/index-en.html
http://www.siteprocentral.com/html_color_code.html

Et le dernier extrait les couleurs principales d'une image, ce qui peut être utile dans certains cas :
http://www.degraeve.com/color-palette/index.php

Si vous en cherchez d'autres vous pourrez trouver une liste bien complète d'outils (pas tous forcément intéressants c'est pour cela que j'en ai sélectionné que quelques uns) ici :
http://www.korben.info/generateurspartie-224.html

Faire fonctionner Dotclear sur un sous-domaine

Bonjour à tous,

    J'ai récemment constaté à grand regret que la plateforme de blog Dotclear ne "fonctionnait" pas quand elle était installée sur un sous-domaine.
Il s'agit tout simplement d'un problème de CSS, Dotclear utilise en effet l'adresse absolue des feuilles de style dans ses pages.

Donc la page
http://www.monsite.com/blog/ marche très bien, mais est moins facile à retenir et est, entre autre, différente au niveau du référencement (un sous-domaine est considéré comme un site à part entière par google, au contraire des sous-dossiers).
Si on veut son blog à l'adresse :
http://blog.monsite.com/
il faut un peu tricher.

Rendez-vous dans le panneau de configuration de Dotclear, et remplissez le champ "URL vers le weblog : depuis http://www.monsite.com/" par un "/" (Dotclear n'accepte pas une adresse vide).
Et il ne faut pas se soucier du "depuis http://www.monsite.com/", ça n'a aucun impact pour la suite.

Ensuite, plus bas, videz le champ "Emplacement de l'application", et remplissez les suivants en ne mettant pas de sous-dossier "/blog/"
ex : - "/images/"
       - "/rss.php"
       - etc...

Sauvegardez les modifications et rafraichissez la page de votre blog (maintenant http://blog.monsite.com/)

Toutefois l'adresse http://www.monsite.com/blog/ est toujours accessible et donne un résultat dont on se passerait bien (même problème que précédemment : les CSS ne sont pas trouvées).
Une petite redirection par URL Rewriting fait donc très bien l'affaire.

En espérant que ça puisse faire gagner du temps à certains intéressés ;-)

Je veux bosser dans cette boite !

Une vidéo bien délirante :

http://www.vimeo.com/173714

ça donne envie d'aller y bosser.


(le meilleur est à la fin)

Les nouvelles API Recovery & Restart de Windows Vista et Serveur 2008
J'ai récemment fait la découverte d'un article d'Eric Vernié sur les nouvelles API introduites dans Windows Vista et Serveur 2008.
Il y'en a une certaine liste :
  • Application Recovery and Restart
  • Boot Configuration Data
  • Common Log File System
  • Condition Variables
  • Debug Help Library 6.6
  • Kernel Transaction Manager (KTM)
  • Multimedia Class Scheduler Service
  • Object Namespaces
  • One-Time Initialization
  • Performance Logs and Alerts
  • Restart Manager
  • Thread Ordering Service
  • Thread Pool
  • Transactional NTFS (TxF)
  • Wait Chain Traversal
  • Windows Error Reporting
(certaines ont vraiment l'air intéressantes)
Mais l'article détaille l'utilisation des API "Application Recovery and Restart"

Voici le principe simplifié :
- Lors de l'execution de notre application, on définit quelle données doivent être récupérables en cas de plantage
- On définit également quelle sera la fonction de callback appelée par Windows Error Reporting lors du redémarrage après plantage
- Si l'application plante, le WER va proposer à l'utilisateur de redémarrer l'application
- En cas de redémarrage, le WER va alors appeler la fonction de Callback en lui passant en argument le fichier temporaire contenant les données sauvegardées avant plantage
On peut donc récupérer nos données

Et c'est l'utilisateur qui va être content.


Plus d'infos sur l'article :
http://msdn2.microsoft.com/fr-fr/visualc/bb870268.aspx
Un exemple est même donné en téléchargement
Un ptit nouveau
Salut à tous !

Je rejoint à mon tour avec ce blog la grande famille des bloggeurs ! (faut vivre avec son temps ^^)

Je connais déjà certain membres mais c'est avec plaisir que je compte en rencontrer d'autres.Donc pour ceux qui ne me connaissent pas, je me présente rapidement. Je suis Matthieu Napoli, vous pouvez me retrouver au nom de MadM@tt sur CS, je suis étudiant en école d'ingé (INSA de lyon si y'en a qui connaissent ;) et bien entendu dans la filière Informatique ^^.Bref, cette année est l'année des grandes découvertes, des grands projets et des rencontres pour moi, alors je compte en profiter et rapporter sur ce blog quoi que ce soit qui puisse être intéressant (à vous de me dire de me taire :p)

Voilà, j'espère que vous serez gentils avec moi ;), et je tiens bien entendu à remercier Nix et tous les admins CS, grace à qui j'ai tant appris depuis tant d'année !



Les 10 derniers blogs postés

- Event : Conférence sur le Cloud Computing à Genève par Blog Technique de Romelard Fabrice le il y a 1 heure et 21 minutes

- SQL Server Kilimanjaro : Vous avez envie de vous inscrire à la Beta ? par SQL Server vu par Christian Robert le il y a 2 heures et 37 minutes

- AJAX : Seadragon Ajax Library par Blog technique de Nicolas Boonaert le il y a 5 heures et 34 minutes

- CodePlex : Google Maps Intellisense Helper - Release par Blog technique de Nicolas Boonaert le il y a 11 heures et 29 minutes

- [Open XML] Les spécifications d'Open XML ISO enfin publiées ! par Julien Chable le il y a 14 heures et 47 minutes

- SAF 2008 : Day I par Blog de Frédéric Queudret le il y a 16 heures et 21 minutes

- PASS 2008 : Résumé de la première journée par SQL Server vu par Christian Robert le il y a 21 heures et 22 minutes

- Windows Azure Services : Première application - Service On the Cloud : Just do it ! par RedoBlog - The .NET Gentleman !!! le il y a 21 heures et 40 minutes

- SQL Server Kilimanjaro : Data-tier Application Component - DAC par SQL Server vu par Christian Robert le il y a 21 heures et 54 minutes

- Live Mesh : ne confondez pas Usage Mesh et Developpement Mesh ! par RedoBlog - The .NET Gentleman !!! le 11-20-2008, 00:49