21

Envoyer des mails depuis PHP avec Ubuntu et esmtp !

MailJ’ai actuellement un projet de site web qui a besoin d’envoyer un mail… rien de bien extraordinaire en fait. Mais envoyer un mail depuis PHP sur une station Ubuntu est moins facile qu’il n’y parait.

1ère solution: installer Postfix ou Sendmail, 2 gros bazookas pour une petite mouche.

2ème solution: installer nullmailer ou installer esmtp. Chez moi, nullmailer ne marchant pas pour des raisons obscures et sombres, j’ai installé esmtp qui fonctionne à merveille.

Installation:
sudo apt-get install esmtp

Configuration:
sudo vim /etc/esmtprc

Il suffit d’indiquer un serveur smtp (celui de son FAI, par exemple), éventuellement un login/pass au besoin.

Pour l’utiliser avec gmail, en revanche, c’est un poil plus complexe, mais la documentation d’esmtp est bien faite.

Enfin, pour terminer, il suffit de faire un lien symbolique de /usr/bin/sendmail vers esmtp comme suit pour que tout fonctionne parfaitement:
sudo ln -s /usr/bin/esmtp /usr/bin/sendmail

41

Comparaisons des différentes versions d’Ubuntu

Logos des différentes versions d’*buntuJ’ai reçu un e-mail d’une personne qui souhaite passer « pour de vrai » à Linux. Étant donné qu’il a déjà entendu beaucoup de bien sur Ubuntu, il me demande donc des conseils puisque je l’utilise déjà. Comme l’installation d’Ubuntu, à l’inverse d’autres distributions, ne propose aucun choix de paquet et, donc, ne demande pas quel Window Manager on souhaite utiliser, il est important de faire ce choix avant l’installation, c’est-à-dire dès le téléchargement du CD.

Je vais essayer, ici, de faire le point sur les différentes versions existantes d’Ubuntu.

Genèse

Au début, il n’y avait rien. Puis, au 8ème jour, après avoir fait la lumière et les ténèbres, le ciel, la terre et les mers, les plantes, les animaux et les hommes et après s’être reposé le 7ème jour, Dieu fit Ubuntu. la philosophie première d’Ubuntu est de faire une distribution Linux prête à l’emploi pour le maximum de gens, surtout les débutants, légère et fonctionnelle. De fait, il a été créé 2 CD. Un CD Live qui permet de tester Ubuntu sans l’installer et un CD d’installation. Maintenant, ces 2 CD ont fusionnés. Le CD d’installation se devait d’être extrêmement simple pour que même le chien de la voisine puisse l’installer sur son ordinateur. Deux ou trois questions principales, pas plus. Le reste de l’installation est automatisé. Aucun choix à faire, les paquets sont automatiquement installés et configurés.

Dans la galette d’installation se trouve donc un noyau Linux récent, une distribution Gnome récente et quelques applications populaires. Ubuntu Warty Warthog nait le 8 Avril 2004. Dès le début, Ubuntu fait bonne figure et tout le monde en parle. Le monde du libre étant ce qu’il est, des gens ont commencé à créer des versions d’Ubuntu qui ne contenait plus Gnome mais KDE (Kubuntu), puis XFCE (Xubuntu) et dernièrement, E17 (Elbuntu), Fluxbox (Fluxbuntu) et IceWM (Ubuntu Lite). Parallèlement des versions spécifiques à certaines activités ont également vu le jour: Ubuntu Server, Edubuntu ou encore Ubuntu Studio, respectivement dédiés au serveur, à l’éducation pour les petites classes et à la création multimédia.
Ubuntu, la mère de toutes ces distributions évolue à un rythme d’une nouvelle version tous les 6 mois, lui permettant d’être à la fois suffisamment à jour en terme de version de logiciels et suffisamment testée pour être utilisable sans trop de désagrément.

Les versions dérivés d’Ubuntu ont, quant à elles, une double vie de mises à jour puisqu’elle ont à la fois les mises à jour de la base d’Ubuntu (les bibliothèques principales, les logiciels inter-Window Manager) ainsi que les mises à jours propres à leur Window Manager et aux logiciels l’accompagnant. Par exemple, si une bibliothèque s’avère bugguée ou contentant une faille et qu’une nouvelle version est disponible, toutes les versions d’Ubuntu pourront télécharger la mises à jour. En revanche, le cycle de vie de KDE n’étant pas le même que celui de Gnome, les nouvelles versions de KDE arrivent avant (ou après, selon comment l’on voit les choses) une nouvelle version d’Ubuntu.

  Ubuntu Kubuntu Xubuntu Elbuntu Fluxbuntu Edubuntu
Gestionnaire de fenêtre Gnome KDE XCFE E17 Fluxbox Gnome
Gestionnaire de connexion GDM KDM GDM   - GDM
Gestionnaire de fichiers Nautilus Konqueror / Dolphin Thunar   ROX-Filer Nautilus
Gestionnaire de paquet Synaptic Adept Synaptic   Aptitude / Synaptic Synaptic
Console gnome-terminal Konsole xfce4-terminal   Eterm Xterm
Navigateur Internet Firefox Konqueror Firefox   Firefox Firefox
Client mail Evolution Kmail Thunderbird   Sylpheed-Claws Evolution
Client de messagerie instantanée Gaim-Pidgin Kopete Gaim-Pidgin   Gaim-Pidgin Gaim-Pidgin
Bureautique OpenOffice.org OpenOffice.org Abiword + Gnumeric   Abiword OpenOffice.org
Visualisation d'images gThumb Gwenview Gqview   xzgv Image Viewer gThumb
Edition d'images Gimp - Gimp   - Gimp / GNU Paint
Gestionnaire de photos F-Spot digiKam -     -
Musique Rhythmbox Amarok gXine   VLC Rhythmbox
Vidéo Totem Kaffeine gXine   VLC Totem
VoIP et Visio Ekiga - -   - Ekiga
             
Petite description Distribution mère, elle est la plus âgée des distributions *ubuntu. De plus, la plupart des documentations sont basés sur Ubuntu (donc Gnome). Toutefois, il est assez simple de comprendre et de porter les documentations basés sur Ubuntu aux distributions filles. Distribution basée sur Ubuntu en remplaçant Gnome par KDE. Contrairement à Gnome, la philosophie KDE veut lier toutes les applications entre elles. Les ressources sont partagées (agenda, contacts, etc…), ça évite par exemple de devoir retaper plusieurs fois les mêmes informations dans plusieurs logiciels. D’un point de vue interface, KDE est ce qui se rapproche le plus de Windows. Distribution basée sur Ubuntu en remplaçant Gnome par XFCE. XFCE étant plus léger que Gnome ou KDE, Xubuntu est plus réactif et moins eye-candy, bien qu’il y ait moyen de personnaliser XFCE de façon à faire des trucs chouettes quand même. En fait, Xubuntu a le look d’Ubuntu mais en moins gourmand au niveau des ressources. Distribution basée sur Ubuntu en remplaçant Gnome par E17. (Non testé) Distribution basée sur Ubuntu en remplaçant Gnome par Fluxbox. Edubuntu est assez similaire à Ubuntu, sauf qu'il a un thème spécial, un menu « Education » avec des logiciels liés à l'éducation et intègrant par défaut une methode de communication serveur/clients légers, pratique dans les écoles.

14

Partage de données entre Windows et Linux avec un dual boot

Cohabitation Windows/UbuntuLorsque l’on a un dual boot, il y a certaines données que l’on souhaite partager entre Windows et Linux. Des documents textes, des photos, de la musique ou des vidéos, bref toute sorte de fichiers auxquels on voudrait accéder à la fois lorsque l’on est sur son OS préféré (Ubuntu, bien sur !) ou lorsque l’on se retrouve, par obligation, sur l’autre OS.

L’astuce la plus facile, hormis la clef USB, étant de faire une partition FAT32 sur laquelle nos deux systèmes pourront écrire. Linux gère très bien le système de fichier FAT32 et le NTFS commence même à être stable avec le package ntfs-3g. En revanche question droit utilisateur ou lien symbolique, le FAT ou le NTFS, ça vaut rien.

Et bien, il existe des drivers pour accéder en natif aux partitions ext2/3 depuis Windows:

Windows Vista est très mal, voire pas du tout supporté, sauf pour Ext2fsd.

Pour être plus précis, Winext2fsd, EXT2 IFS et Ext2fsd sont des drivers, c’est à dire qu’une fois installés, vous aurez accès aux partitions ext2/3 directement dans Windows, avec une lettre de lecteur, etc… En revanche, Explore2fs est un logiciel qui explore les partitions ext2/3, donc vous ne pourrez pas accéder aux partitions ext2/3 directement avec applications préférées.

Vous pourrez maintenant utiliser un vrai système de fichier sur Ubuntu et avoir quand même accès aux fichiers depuis Windows.

18

Irssi, un client irssi en mode texte

IrssiA l’heure du tout graphique et des effets 3D de Compiz Fusion, parler d’un logiciel en mode texte peut paraître étrange. Et pourtant, après avoir utilisé mIRC puis Klient sur windows puis XChat et Konversation, respectivement sur Ubuntu et Kubuntu, et tout en utilisant irssi lorsqu’un client graphique m’était impossible (au boulot, par exemple) et bien, irssi est, pour moi, le meilleur client irc.

Le truc avec irssi, c’est qu’au premier abord, il est rebutant et pas loin d’être très laid. Point d’assistant qui nous invite à créer une connexion à un serveur, un autojoin à un channel, rien qui nous demande notre pseudo. Bref, il s’en faut de peu pour que ce logiciel finisse dans notre corbeille en forme de pingouin rageur. C’était sans compter sur la puissance, la simplicité (plus simpliste, c’est dur !) et la légèreté d’irssi.

Installation

$ sudo apt-get install irssi

Premier lancement

Tapez irssi dans une console et vous aurez un magnifique client IRC qui se lancera. Par défaut, il ne se connecte pas, il faut le configurer. Pour cela, il faut suivre quelques étapes. Sachez qu’en tapant /help et plus précisément /help une_commande, irssi vous affiche de l’aide.

Ajout d’un réseau

Tout d’abord, nous allons créer un réseau à l’aide de la commande /network add.

/network add -nick MonNick -user mon_user -realname "Mon vrai nom" -autosendcmd "/^msg nickserv identify mon_super_password" Freenode

  • -nick/-user/-realname permet de spécifier le pseudo et le user que vous souhaitez utiliser sur ce réseau, par défaut, c’est le nom de votre compte Ubuntu pour -nick et -user et le nom complet de votre compte. Pensez à mettre des guillemets si vous souhaitez utiliser un -realname avec des espaces ;
  • -autosendcmd permet d’indiquer une ou plusieurs commandes (séparées par des point-virgules) qui seront automatiquement exécutées une fois le client connecté à un serveur de ce réseau. L’accent circonflexe de /^msg permet d’exécuter cette commande en arrière plan sans l’afficher à l’écran (ainsi que la réponse qu’elle peut engendrer). Par exemple, si vous vous en servez pour vous connecter à NickServ, vous n’avez pas forcément besoin d’avoir une console d’ouverte pour ce message et la réponse de NickServ ;
  • enfin, on termine avec le nom du réseau.

Il existe d’autres options de configuration qui vous sont détaillées en tapant /help network dans irssi

Ajout de serveur(s)

Une fois le réseau créé, il faut lui ajouter des serveurs, grâce à /server add

/server add -auto -network Freenode irc.freenode.net

  • -auto indique que ce serveur va se connecter automatiquement au lancement d’irssi ;
  • -network spécifie à quel réseau on attache ce serveur (par conséquent, quand ce serveur se connectera, les commandes indiquées dans -autosendcmd lors du /network add seront exécutées) ;
  • enfin, on termine avec l’adresse du serveur et éventuellement son port s’il n’est pas sur le port par défaut (6667).

Il existe d’autres options de configuration qui vous sont détaillées en tapant /help server dans irssi.

Vous pouvez répéter cette commande autant de fois que vous avez de serveurs sur ce réseau. Irssi se connectera automatiquement à un autre serveur du réseau si celui sur lequel vous êtes connectés ne répond plus.

Ajout de channel(s)

Maintenant que nous avons notre réseau et ses serveurs d’enregistrés dans la configuration d’irssi, il nous faut nous connecter à un channel pour discuter.

Vous pouvez bien entendu rejoindre un channel en tapant /join #nom_du_chan. Mais si vous avez vos habitudes et que vous souhaitez rejoindre automatiquement un ou plusieurs channels à la connexion, il nous faut utiliser /channel add.

/channel add -auto #ubuntu-fr Freenode

  • -auto indique que ce channel sera rejoint automatiquement une fois un serveur du réseau connecté ;
  • ensuite, on indique le nom du channel ;
  • enfin, on termine avec le nom du réseau sur lequel ce channel existe.

Il existe d’autres options de configuration qui vous sont détaillées en tapant /help channel dans irssi.

Vous pouvez répéter cette commande autant de fois que vous avez de channel à ajouter ce réseau.

Quelques commandes utiles

Pour rejoindre un channel:

/join #channel

Pour quitter un channel (dans la console du chan que vous voulez quitter):

/part

Pour changer son pseudo:

/nick

Pour avoir la liste des connectés d’un channel (dans la console du chan où vous voulez avoir la liste):

/names

Pour envoyer un message privé à une personne:

/query un_nick un super message

Pour changer de console:

[Echap] + le numéro de la console

Pour fermer une console:

/win close

Pour quitter irssi:

/quit

N’oubliez pas d’utiliser /help si vous souhaitez connaître la liste des commandes disponibles et /help le_nom_d_une_commande pour connaître toutes ses possibilités.

Conclusion

Vous pouvez maintenant vous connecter au réseau que vous avez configurer. Ou bien en tapant directement /connect le_nom_du_reseau ou bien en quittant irssi et en le relançant (si vous avez configuré un serveur en -auto !).

9

Frameworks PHP

phpMoi qui ne jurais que sur le Zend Framework depuis sa toute première version beta, alors que la communauté française se créait petit à petit et, enfin, alors que la version finale ne va pas tarder à pointer le bout de son nez (la 0.9.3 est sorti il y a peu de temps), voilà que je m’intéresse aux autres framework php. J’ai regardé un peu ce que je trouvais et qui répondait au doux nom de framework php et j’en ai trouvé plein. Voici les principaux par ordre alphabétique:

  • CakePHP, dont les numéros de version à rallonge sont une source de franche poilade pour tout mon boulot (la dernière version stable est la 1.1.15.5144). J’avais essayé, il y a quelques mois, de dompter la bête… sans succès.
  • CodeIgniter, comme CakePHP, j’avais essayé, sans succès, de comprendre ce framework.
  • Jelix, lancé par Laurent Jouanneau, un framework français qui à l’air plutot interressant mais dont la documentation est pauvre et incomplète alors que la version 1.0 beta2.1 vient de sortir.
  • Symfony, développé par une société française… en anglais. la communauté est assez grande. Tout comme ses camarades CakePHP et CodeIgniter, impossible de comprendre quoi que ce soit à ce framework il y a quelques mois.
  • PHP On Trax, développé dans l’optique de faire un Ruby On Rails avec PHP.
  • Seagull, non testé
  • Zend Framework, développé par Zend, The PHP Company.
  • Pleins d’autres…

Je n’ai pas du tout testé Jelix à cause de sa documentation à trou. PHP On Trax non plus: je n’aime pas RoR, il y a peu de chance pour que PHP On Trax me plaise. Pas plus pour Seagull dont le nom ne m’attire pas (oui, je sais c’est pas une excuse valable… et pourtant). CakePHP, CodeIgniter et Symfony m’ont paru beaucoup trop obscurs, même leurs tutoriels mon blog en 5 minutes ne me convainquaient pas Quant à Zend Framework, je me suis plongé dedans aussitôt, j’ai aimé, j’ai développé des applications avec, y compris à mon boulot… et pourtant.

Le gros défaut de Zend Framework

Zend Framework est aux Framework PHP ce que PHP est aux langages de programmation. C’est simple, il y a une excellente documentation, une grande communauté et… on peut faire tout et n’importe quoi. De la même manière qu’on peut coder comme un porc ou comme un dieu avec PHP, on peut utiliser le ZF comme PEAR en utilisant des bibliothèques par ci, par là, on peut suivre ou non l’architecture proposée par Zend, on peut utiliser le concept MVC ou pas. Bref, le ZF est, tout comme PHP, beaucoup trop permissif pour un framework. Au final, on peut très vite se retrouver avec un site qui n’est pas du tout facile à maintenir, un comble pour un framework.

Alors on utilise quoi?

Je ne saurais rien imposer. Mais après moult tests et avec de l’acharnement, je pense avoir trouver mon bonheur avec Symfony. Le gros problème de Symfony, c’est son tutoriel de prise en main qui m’a fait fuir alors que le framework lui-même est une perle car, et ça se sent, il répond exactement à bon nombre de problématiques que l’on peut rencontrer dans des applications Web professionnelles. En lisant la documentation de Symfony[1] (je n’ai pas fini, j’en suis au chapitre 9), j’ai rencontré des solutions à des problèmes que l’on rencontre à mon boulot. ce qui n’était pas le cas avec ZF où il fallait au contraire créer tout un tas de plugins ou d’helpers.

SF remplace ZF ?

Oui. Je projette de migrer vers Symfony l’application que j’ai commencé sur ZF au boulot (sur mon temps libre, sinon mon patron va me tuer) Je compte aussi commencer la traduction en français du manuel de SF.

Notes

[1] Que ceux qui disaient que je ne lisais pas l’anglais remarque bien que l’intégralité de ce manuel est en anglais et qu’il n’en existe pas de version française

7

La moodbar d’amarok

AmarokInutile donc indispensable !

Dans amarok, le lecteur audio de KDE, on peut activer une fonctionnalité tout a fait inutile mais amusante: la moodbar.

La moodbar, du latin moodus qui signifie humeur et du grec baros qui veut dire barre, permet donc d’afficher la musique écoutée sous forme d’une barre colorée qui est censée représenter son humeur. Les pistes se voient ainsi affublées de couleurs chattoyantes qui vous permettent de juger au premier coup d’oeil si la chanson que vous allez écouter est en accord avec votre humeur.

Mais, non content d’égayer notre playlist terne, l’ajout de la colonne Mood vous permettra d’ordonner facilement vos tracks en fonction de l’humeur savamment découverte par le plugin. Un must d’ingéniosité et d’inutilité.

Pour l’installer, vous avez la méthode compliquée qui consiste à télécharger les sources, les compiler et installer le tout comme il faut… ou bien vous pouvez simplement suivre les instructions suivantes:

  • Ajoutez la ligne suivante à votre sources.list
 deb http://cl.naist.jp/~eric-n/ubuntu-nlp feisty misc
  • Dans une console, saisissez:
wget http://cl.naist.jp/~eric-n/ubuntu-nlp/8ABD1965.gpg -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install amarok-moodbar
  • Une fois le paquet et ses copains installés, lancez amarok, allez dans « Configuration » > « Configurer amarok » > « Général« . Cochez « Utilisez les humeurs » puis « Ambiance » et choisissez votre thème de couleurs utilisées pour colorier les humeurs des musiques.
  • Armez vous de patience, ça risque de prendre un certain temps pour tout scanner et tout moodifier :)

Peace & Love :)

6

date(‘d/m/Y’, strtotime(’0000-00-00′)) = ?

phpAllez, allez! Petite énigme de fin de semaine!

D’après vous, en PHP, que peut bien retourner
date('d/m/Y', strtotime('0000-00-00')), hein ?

Moi, au début, je pensais que ça allait me sortir EPOCH, donc quelque chose qui aurait dû ressembler à 01/01/1970.

Que nenni! Cela affiche 30/11/1999.

Ah… il a fallu chercher… et une fois trouvé, c’est tout à fait logique.

Cela part d’un bug PHP[1] du parser de PHP qui ne fait aucune différence entre l’année ’0′, ’00′, ’000′ ou ’0000′ et qu’il traduit inévitablement en l’an 2000. A partir de là, dans la gymnastique microprocessoromentale de PHP, il se passe les choses suivantes:

  • 0000-00-00 devient 2000-00-00
  • 2000-00-00 n’existe pas, il prend le 00 du mois et décide donc que c’est le mois précédent: 1999-12-00[2]
  • 1999-12-00 n’existe pas, il prend le 00 du jour et décide que c’est le jour précédent: 1999-11-30[3]

Nous voila donc propulsé fin novembre 1999.

Conclusion:

  • il vaut mieux avoir NULL plutôt que ’0000-00-00′ pour une date non utilisée
  • pour avoir rapidement la fin d’un mois, il suffit de se mettre au jour 00 du mois suivant. Exemple: si on veut le 31 aout 2010, il suffit d’avoir ’2010-09-00′, strtotime se chargera de revenir un jour en arrière.

Notes

[1] Contrairement à ce qui est écrit dans le rapport de bugs et ses commentaires, le bug existe toujours en PHP5

[2] De la même manière, si vous aviez le mois 13, il passerait à janvier de l’année suivante

[3] De la même manière, si vous aviez le 32 janvier, il passerait au 1er févier et si c’était le 40 janvier, vous arriveriez au 9 février.

16

Impossible de trouver le type MIME application/octet-stream

KDEEt bien oui, je ne sais pas ce que j’ai encore trifouillé dans ma feisty, mais j’ai ce message qui apparaît un peu tout le temps et surtout quand ça me fait ch… ça m’embête.

Google étant mon ami, je n’ai pas tardé à trouver la solution… toute bête.

En effet, si vous avez le même problème, il suffit d’ouvrir Konqueror (et oui, c’est lui le fautif), d’aller dans le menu « Configuration » puis de choisir « Configurer Konqueror…« . Dans la fenêtre de configuration, allez dans « Associations de fichiers« , cliquez sur « Ajouter« . Dans la petite fenêtre qui apparaît, mettez le groupe à « application » et tapez « octet-stream » dans la case « Nom du type« . Validez, appliquez, OKétez et appréciez le bonheur de ne plus avoir ces satanés popup qui s’ouvrent par 5 :)