source: Idleman
Article rédigé par le lecteur Sébastien DELPORTE
Voici un document de deux images pense bête pour ceux qui veulent faire des montages électroniques avec le RaspberryPi :
Source :
https://docs.google.com/file/d/0B23BvTk93HRYQU1NYTBENTNvTXM/edit
Bonne lecture
Ce post est le dix-neuvième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire !
Amis de l’électronique, passez votre chemin, nous ne parlerons cette fois ci que de pure informatique, et pas de haut niveau en plus , cela dit ça peux intéresser plus d’un idlenaute donc je vous conseille de gratter un peu cet article quitte à vous taper une lecture en diagonale de ce véritable « pavé du dimanche ».
Je me suis rendu compte que j’ai oublié de préciser pleins de trucs et astuces “génériques” applicables au raspberry parce que ça me paraissait évident, mais au fil des commentaires et des mails qui m’ont été adressés je me suis dit que ça valait peut être la peine de faire un ptit billet pour éclaircir quelques points
(et puis ça me laisse un peu de temps pour bidouiller d’autres prototypes).
Les points abordés :
Depuis le début des tuto, vous aurez peut être constaté que j’utilise uniquement le mode console et non le bureau graphique, en effet je n’ai pas d’écran pour le raspberry et j’y accède depuis mon ordinateur portable ce qui me permet de trimballer le RPI et d’y accéder depuis n’importe quel PC sans trainer un écran 19 pouces, un clavier, et une souris derrière moi .
Ceci est possible grâce à la communication SSH, pour faire court et grossier : votre raspberry pi comprend un serveur nommé : SSH, auquel vous pouvez vous connecter depuis un client SSH depuis n’importe quel PC, une fois connecté, vous aurez accès au terminal comme si vous étiez sur le rapsberry PI
Pour vous connecter a cette console, il vous suffit de télécharger et d’installer le programme gratuit Putty, puis de rentrer l’ip locale de votre raspberry PI et cliquer sur “Open”
Pour obtenir l’ip réseaux du raspberry PI, vous pouvez regarder sur le panel de votre box (les pc qui y sont connecté), ou brancher temporairement un écran au raspberry pi et taper la commande ifconfig, l’ip suis le libellé “inet addr”
Notez que cette IP peux changer (bien que votre box essaye généralement de conserver des ip “favorites” par machines), vous pouvez donc la fixer une bonne fois pour toute avec la manip suivante qui permet de passer d’une ip dite “dynamique” à une ip “statique” :
Tapez dans la console :
sudo nano /etc/network/interfaces
Et remplacez
iface eth0 inet dhcp
par
iface eth0 inet static address 192.168.1.x netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1
Il vous faudra remplacer le libellé de “adress” par votre ip réseaux actuelle ainsi que
netmask : Vous pouvez le trouver dans la valeur “Mask” du ifconfig
broadcast : Vous pouvez le trouver dans la valeur “Bcast” du ifconfig
gateway : C’est l’ip de votre routeur/box, vous pouvez la trouver dans le panel admin de votre box sous le libellé (serveur DHCP le plus souvent)
Enregistrez et redémarrez, votre ip sera fixe et toujours accessible depuis Putty.
Attention !! Notez bien que lorsque vous fixez cette ip, elle ne peux plus s’adapter dynamiquement à un autre réseau, aussi si vous trimballez votre rpi autre part, pensez à remettre l’ip en dynamique.
Si vous n’aimez pas trop la ligne de commande ou que vous souhaitez faire une manip sur le bureau virtuel du raspberry pi sans avoir d’écran, vous pouvez installer un serveur dit “VNC” qui permet de déporter l’affichage du raspberry Pi, sur un autre pc, vous avez donc un écran dans un autre ^^ :
Il existe de nombreux serveurs VNC disponibles, mais le moins contraignant à installer est tightvncserver.
Pour l’installer, tapez la ligne de commande
sudo apt-get install tightvncserver
Il vous faudra alors lancer le serveur avec la commande
tightvncserver
Et ce à chaque fois que vous voudrez l’utiliser, vous pouvez bien entendu vous débrouiller pour lancer cette commande au démarrage via un service ou un cron ou autre…
Au premier lancement il vas vous demander un mot de passe pour se connecter au bureau distant, si vous n’êtes pas trop dingue, vous mettrez le même que celui de votre compte raspberry PI
Lorsqu’il demande si vous voulez de la lecture seule, répondez n (non)
Would you like to enter a view-only password (y/n)?
Le serveur est lancé et configuré :
Notez que le serveur est lancé par défaut sur le port “2” qu’il faudra retenir, ainsi que l’adresse ip de votre raspberry (cf partie connexion à la ligne de commande)
Il vous faut maintenant un client de connexion VNC sur la machine ou vous souhaitez déporter l’affichage du raspberry PI, realVNC est gratuit, simple, performant et dispo pour linux, mac , et windows: http://www.realvnc.com/download/viewer/
installez et lancez realVnc puis entrez l’adresse ip réseau de votre rapsberry PI, suivis de votre port (par défaut 2) les deux séparés par “:”
Et cliquez sur “connect”
nb : de mémoire, un warning vas vous avertir que la connexion n’est pas sécurisée, cliquez sur le bouton continue (à moins que ça vous froisse que ca ne soit pas sécurisé évidemment , chez vous ça ne change pas grand chose, mais évitez de vous connecter depuis un lieu public ou du boulot)
le client vous demande alors le mot de passe que vous avez donné au serveur VNC lors de son installation :
Vous arrivez ensuite sur votre bureau distant et pouvez interagir avec comme vous le souhaitez
On a vu dans le tuto ~ 04 : Configurer en serveur comment mettre en place un serveur dit “http” pouvant héberger des sites web sur le rapsberry PI.
Nous avions choisis le serveur Apache qui et le plus populaire, mais aussi le plus vieux et le plus lourd de ce qui se fait en ce moment.
Apache fait beaucoup d’entrées fichiers ce qui peut à long terme abimer la carte SD de votre raspberry PI, il est donc plus intéressant de se tourner vers des serveurs plus léger comme Nginx ou lighttpd
Les deux sont très rapides, légers et peu gourmands en ressources, et n’en déplaisent aux fanatiques de l’un ou de l’autre : ils sont relativement équivalent.
Parce qu’il faut faire un choix, et parce qu’il s’est avéré moins chiant à installer, j’ai choisis lighttpd * les pro-nginx vous pouvez huer *.
lighttpd à surtout un gros avantage pour moi : il est beaucoup plus simple de le relier à PHP que nginx (c’est du vécu, j’ai fait 4/5 tutos sur nginx, aucun n’était d’accord avec l’autre, et certains parlaient même d’installer lighttpd en premier puis de le désinstaller afin d’avoir les prérequis pour nginx… bref)
Donc si vous avez apache, commencez par le désinstaller correctement sinon il fera interférence avec lighttpd par la suite. Attention cependant apache peut être très chiant a désinstaller, le mieux reste encore de repartir d’un raspian vierge si vous le pouvez, sinon je vous laisse vous amuser comme je l’ai fait à tester tout plein de manip pour vous débarasser de l’outrecuidant correctement.
Installez ensuite lighttpd
sudo apt-get install lighttpd
Puis les pré-requis pour avoir php5 er le relier a lighhtpd
sudo apt-get install php5-common php5-cgi php5 sudo lighty-enable-mod fastcgi-php
Redémarrez le serveur http
sudo service lighttpd force-reload
A ce moment la si vous avez des erreurs types “port 80 busy” un truc du style, c’est que vous avez mal désinstallé apache et qu’il tourne encore, ou qu’un autre serveur http est déjà en place.
Et enfin réattribuez les bons droits sur les bons dossiers pour que lighttpd puisse faire son boulot
sudo chown www-data:www-data /var/www sudo usermod -a -G www-data pi
Si tout s’est bien passé vous devriez pouvoir vous connecter via un navigateur à l’ip de votre rapsberry PI et voir la page d’accueil par défaut de lighttpd
Pour ce qui est de la base de données, je vous conseille également de désinstaller MySQL (si vous n’avez installé aucune appli qui tourne avec évidemment) et de le remplacer par SQLite qui est un peu moins gourmand et épargnera votre raspberry PI également :
sudo apt-get install sqlite3 sudo apt-get install libsqlite3-0 libsqlite3-dev sudo apt-get install php5-sqlite
Une seedbox est un serveur dédié au téléchargement illégal de fichiers vidéos/audio/multimédia etc…
Il est très simple de transformer le raspberry pi en seedbox afin de pouvoir faire les choses suivantes :
Prêt à manger du beurre par les trous de nez? Envoyons le Pathé !
Premièrement on update parce que ça ne fait jamais de mal avant une installation :
sudo apt-get update
puis on installe un paquet qui nous sera indispensable par la suite :
sudo apt-get install ntfs-3g
Puis, on trouve un disque dur assez balèze (genre 2To) et on le branche au port USB du raspberry PI. La rapidité de transmission est un plus, mais ce qu’il vous faut c’est surtout :
on vas créer une sorte de “lecteur permanent” dans le dossier “media” sur lequel on pointera notre client de torrents.
sudo mkdir -p /media/disque2To
On configure les droits pour que le client torrent puisse écrire dans ce lecteur
sudo chmod -R 777 /media/disque2To
Attendez quelques secondes le temps que le rpi détecte le disque dur puis tapez
sudo blkid
Une liste de périphériques s’affichent, retenez le champs UUID pour le périphérique ayant le LABEL qui correspond à votre disque dur (mon disque dur 2To s’appelle IdleBox)
Maintenant qu’on connais l’identifiant unique de notre disque dur, on vas spécifier au rpi de lier à chaques démarrage cette id au dossier qu’on à créé spécialement pour lui (/media/disque2To).
On édite pour ça le fichier /etc/fstab
sudo nano /etc/fstab
et on y ajoute la ligne
UUID=F21843B31843759F /media/disque2To ntfs-3g defaults 0 2
Evidemment l’UUID doit être modifié en fonction de votre UUID à vous.
Puis on sauvegarde et on reboot
sudo reboot
A ce stade la normalement le contenu de votre disque dur est monté et est disponible via le dossier /media/disque2To, vous pouvez vérifier qu’il contient bien votre fichier test.txt avec la commande.
cd /media/disque2To && ls
(oui moi j’ai un peu plus de bordel qu’un simple fichier test.txt mais le principe reste la )
Cette phase est très délicate, le système ou le disque dur font souvent la sourde oreille, vérifiez donc bien que vous avez vos fichiers dans /media/disque2To sans quoi la suite du tuto ne fonctionnera pas.
En cas d’erreur vérifiez bien :
Si l’erreur persiste, essayez de trouver l’erreur au démarrage du rapsberry PI, généralement il vous indique d’ou viens la couille avec un gros “FAILED” rouge.
Bien !! Le plus dur est fait !!
Maintenant on vas faire en sorte que le disque dur (accessible depuis le dossier /media/disque2To si vous avez bien suivis) soit également disponible en partage, c’est à dire que les autres PC de votre réseau local puissent y accéder !
Pour cela, il vous faudra installer un serveur de partage sur votre rapsberry PI, le plus connus (et le seul que je connais d’ailleurs) est samba !
On installe donc samba (et avec le sourire siouplé !)
sudo apt-get install samba
Il est possible qu’il soit déjà installé, chez moi il l’était mais c’est peut être parce que j’avais fait la manip précédemment, dans tous les cas la commande ne vous fera pas de mal .
maintenant que samba est installé il vas falloir partager le dossier /media/disque2To sur le réseau.
Pour ça, on commence par editer le fichier de configuration de samba :
sudo nano /etc/samba/smb.conf
Cherchez la ligne
# security = user
et placez en dessous :
security = share
De cette manière vous ouvrez un peu votre serveur de partage aux utilisateurs autres que les utilisateurs interne du rpi
Puis cherchez le bloc [print$] …
Et placez en dessous le bloc :
[disque2To]
comment = Disque multimedia
path = /media/disque2To
browseable = yes
guest ok = yes
writeable = yes
public = yes
create mask = 0777
directory mask = 0777
Enfin redémarrez samba
sudo service samba restart
Et remettez un ptit coup de permission sur votre dossier partagé pour être sûr.
chmod 777 –R /media/disque2To
Vous devriez maintenant voir le partage depuis vos autres PC, par exemple depuis mon windows Seven :
Vérifiez bien que vous avez la permission d’entrer et d’écrire dans le disque.
nb : Il est possible que ce sale bataw de windows vous demande un login/mot de passe alors que nous avons tout fait pour justement ne rien avoir à mettre.
il vous faudra alors taper:
login : WORKGROUP\votre login windows
mdp : votre mot de passe windows
Cochez la case ‘se souvenir’ histoire de ne plus être emmerdé par la suite.
Bien !! Maintenant que nous avons un disque dur monté et partagé sur le réseau !! Il vas falloir le remplir avec vos films de vacances légalement téléchargés via un logiciel de torrent !
Le must pour moi en matière de logiciel de torrent c’est transmission : léger, simple, ergonomique, dispose d’une jolie interface web et facilement configurable
sudo apt-get install transmission-daemon
Transmission vas utiliser deux dossier sur votre disque dur, un dossier pour stocker les fichiers temporaires de téléchargements, et un dossier pour stocker les fichiers finaux, on vas donc créer ces deux dossiers
sudo mkdir /media/disque2To/downloaded /media/disque2To/pending
downloaded : dossier qui contiendra vos films de vacances terminés
pending : dossier qui contiendra vos films de vacances en cours de téléchargement
On place ensuite l’utilisateur “pi” dans le groupe de transmission
sudo usermod -a -G debian-transmission pi
Et on place les deux dossiers précédemment créé dans ce groupe aussi (c’est la fête du slip pour gérer les permissions)
chgrp debian-transmission /media/disque2To/downloaded /media/disque2To/pending
Enfin (et c’est la dernière manip concernant les permissions) on donne un droit 770 sur les deux dossiers
chmod -R 770 /media/disque2To/downloaded /media/disque2To/pending
On édite le fichier de configuration de transmission pour lui filer nos deux dossiers et régler quelques autres configs rigolotes :
sudo nano /etc/transmission-daemon/settings.json
Trouvez les lignes qui correspondent à ça :
« download-dir »: » /un/chemin/pourri » ,
« incomplete-dir »: » /un/autre/chemin/pourri » ,
« incomplete-dir-enabled »: false,
« rpc-password »: « un mot de passe crypté super long type {EBIBEIUBSIBSIBSIUB… »,
« rpc-username »: »transmission »,
« rpc-whitelist « : « 127.0.0.1″,
et remplissez les avec les bonnes valeurs
« download-dir »: » /media/disque2To/downloaded » ,
« incomplete-dir »: » /media/disque2To/pending » ,
« incomplete-dir-enabled »: true,
« rpc-password »: « mon mot de passe »,
« rpc-username »: »mon pseudo »,
« rpc-whitelist « : « 127.0.0.1,*.*.*.* »,
Evidemment les lignes ne sont pas toutes collées les unes sous les autres, il vous faudra les chercher (je vous avais pas dit que je vous vendrais du bonheur ?)
nb : Notez que j’ai placé la clause *.*.*.* dans rpc-whitelist, celle ci indique que toutes les adresses ip ont le droit de se connecter à votre seedbox (si elles connaissent le user/mot de passe bien entendu), ceci vous permet de vous connecter de partout dans le monde à votre seedbox (il faudra penser à débloquer le port 9091 de votre routeur/box si vous souhaitez y acceder de l’extérieur quand même mais bon…) si vous voulez que transmission n’accepte que les ip réseau locale, vous pouvez mettre 192.168.*.* à la place.
Enregistrez le bouzin et relancez le service
sudo service transmission-daemon reload
Votre Seedbox est fin prête !!
Pour télécharger de nouveaux films de vacances via des fichiers torrents vous n’avez plus qu’a vous connecter via un navigateur à votre seedbox à l’adresse :
http://ip.du.raspberry.pi:9091
9091: port par défaut de transmission (vous pouvez le modifier dans le setting.json, moi j’ai mis 666 pour le fun )
A la connexion transmission vous demandera les login et mot de passe entré dans le settings.json:
Et paf vous atterrissez sur votre client torrent :
Vos fichiers une fois téléchargés apparaitront dans le dossier downloaded de votre disque dur, lui même disponible en partagé depuis tout votre réseau locale.
Merci à Tom Canac qui à généreusement partagé ses pistes avec moi afin que nous arrivions à quelque chose de concret sur ce point
Par défaut le rpi s’appelle raspberrypi ce qui est laid nous en conviendront on à donc cette ligne qui précède toutes nos commande:
pi@raspberrypi: ~#
Pour changer ce nom il faut éditer les fichiers /etc/hostname et /etc/hosts, dans ces deux fichiers, remplacez le nom raspberrypi par le nom que vous souhaitez, puis sauvegardez, fermez et redémarrez le raspberry PI, j’ai appelé le mien pib0x ‘(je sais… mais j’avais pas d’idées, ne me jugez pas T_T)
Lors de l’ouverture d’une console sur votre rpi, vous avez un message par défaut de toute beauté qui s’affiche :
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Type ‘startx’ to launch a graphical session
On vas changer ça par quelque chose d’un peu plus yorkmouth !!
Pour cela il faut éditer le fichier /etc/motd et remplacer le message par ce que vous souhaitez puis sauvegarder et rebooter (encore et toujours)!! Personnellement je vous conseille un message en ascii ça claque toujours
Pas besoin de vous prendre la tête des jours à faire l’ascii vous même, des services existent pour ça, suivez le guide
Je repasserais certainement sur ce tuto pour ajouter de petites astuces de temps en temps, aussi pensez à venir lorgner quand vous avez une minute
Bien à vous mes bichons baltais!
Idle
Salut bande de pneus low cost non équilibrés ! Vous en avez d’la chance !! l’heure ou je suis juste complément bourré et ou je tape frénétiquement n’importe quoi sur ce blog, vous êtes peinards, dans votre lapin nain ou sous un sumo allemand à vous payer un 52em demi de bordel de l’info (ben oui… 26*2…laissez tomber T_T)
Tiens d’ailleurs en parlant de Seb !! Bon anniversaire vieux machin !! (ok j’ai 3 jours de retard mais pour moi c’est une performance), tous mes veux de bonheur et de longévité à ce dinosaure du web qui à inspiré, dépatouillé voir sauvé les âmes de milliers d’internautes et de blogueurs à travers le web (moi compris évidemment) et sans lequel ce blog ne serait resté qu’un bloc note personnel :)
Voila plusieurs années que je me promets de toucher un mot au sujet des moteurs de Template et de leurs applications, je profite de votre air éveillé et taquin de ce début de soirée pour placer le sujet (ce sera chose faite).
Pour faire simple, un moteur de Template est une technique de programmation populaire qui permet de séparer distinctement l’interface graphique du reste de votre application.
Notez que par interface graphique j’entends toute la partie visuelle, la GUI, l’Interface, l’IHM, le skin, le visage, la moumoute, appelez ça comme vous voulez, ça n’en restera pas moins la partie qui constitue la communication visuelle avec l’utilisateur on ne parle donc pas uniquement du design mais aussi de la structure, de l’ergonomie, des animations etc…
Typiquement, un Template de projet web contiendra tous les fichiers html (structure),css et images (style/design) et JavaScript (animations).
Ainsi dans un projet web par exemple, le moteur de Template vous permettra d’avoir un fichier purement html/css/javascript d’un coté, et un fichier purement php/asp/java/… de l’autre vous dissociez donc d’un coté la vue (l’aspect visuel html/css etc..) des contrôleurs (le traitement pur des données via php/asp/java/ etc..)
Pourquoi utiliser cette technique me direz vous ? Ça peut de prime abord paraitre contraignant, inutile de dupliquer des fichiers pour rien.
Vous l’aurez compris de très nombreux avantages s’offre à vous avec ce modèle de développement.
Mais, ça fonctionne comment au juste ?
Eh bien typiquement ça dépend un peu du moteur de Template utilisé, mais généralement ça reste très simple :
Au lieu de créer une page index.php contenant tout votre code, vous allez placer votre code php dans une page index.php et votre html dans une page index.html
Puis à la fin du php vous signalerez que vous souhaitez lier cette page de traitement à la vue index.html .
Attends, attends !! Mais il va forcement y avoir un problème là : comment je vais faire pour afficher mes variables dans l’index.html?
Encore une fois, cela dépendra du moteur de Template utilisé, mais en gros, les variables seront toutes disponibles dans l’index.html via des balises « spéciales ».
Oulah, ça m’a l’air compliqué ton truc !!
Meuhnaaann ! Tu vas voir ça gère la cacahuète, le meilleur reste encore de mettre la main à la pâte pour comprendre les enjeux et les gains du Template, alors allons y gaiement bande de moules !
Alors quel moteur de template choisir ?
En réalité je ne vais pas être très objectif là-dessus ^^, bien que le plus populaire (du fait de son grand âge surtout) soit le moteur de template Smarty, nous utiliseront ici le moteur RainTPL.
Vas falloir t’expliquer Idle, tu t’en sortiras pas comme ça !!
Bon okay okay, vous l’aurez voulu, zallez vous taper une autre liste pour la peine :
Je ne pense pas me tromper en affirmant qu’il va vite devenir la référence du Template, pour moi c’est déjà le cas, et je ne suis pas le seul à le clamer haut et fort.
(voila pour la p’tite explication :p)
Notez que parmi les développeurs, il y à quelques aigris qui critiquent vivement les systèmes de templates, si on ôte à ceux-ci ceux qui cachent leur ignorance derrière le dédain, on
peux retrouver quelques raisons fallacieuses type :
‘Moi je n’utilise pas de Template parce que c’est moins rapide que du php pur et dur’.
… (j’ai sortis mes petits point désapprobateurs, je vais me fâcher tout rouge !!)
C’est complètement faux, en effet RainTPL à l’instar de 99% des moteurs de Template utilise un système de cache en générant les php finaux sous formes de fichiers php générés, donc au final c’est du php simple, sauf que c’est totalement invisible pour nous (et tant mieux)
Bon arrêtons la papote et mettons les mains dans l’cambouis !
Téléchargeons rainTpl sur le site officiel : http://www.raintpl.com/Download/
On va créer un ptit projet de test avec une page index.php pour le traitement, et une page index.html pour la vue.
Dans l’archive de rainTPL, seul le fichier inc/rain.tpl.class.php nous intéresse, c’est la librairie en elle même, le reste sont des fioritures (on jette ), dans mon exemple je met donc ce fichier que j’ai renommé rainTpl.php au même niveau que l’index.php et l’index.html
Voila le code de chacune:
index.php
index.html
(oui j’ai mis un peu de style, le time new roman me file des crises d’épilepsie)
Si pour une raison vraiment étrange votre copier coller ne fonctionne pas sur les screenshots (:D), vous pouvez trouver les sources directe ICI (bande de fainéants).
Toujours est il que vous obtenez un, ô combien magnifique, premier Template fonctionnel :
Vous noterez donc deux fonctions (méthodes) importantes pour la partie traitement(index.php) :
assign(nom variable, valeur variable) : permet de déclarer une variable qui sera utilisable dans la vue, on peut lui fournir n’importe quoi : un objet, un tableau, un entier, une chaine, un furet, il en fera de l’or…
draw(nom de la vue) : permet de définir la vue qui sera attachée au traitement, de cette manière on peut par exemple attacher une vue erreur en cas d’erreur ou la vue index quand tout se passe bien (ok ok je vous embrouille, dites vous juste que ça permet de donner le html à afficher).
Coté vue (index.html) les balises “spéciales” dont je vous parlais et qui sont à connaitre sont au nombre de 4 :
{$variable} : affiche une variable (comme si vous aviez fait un ‘echo $variable’)
{if= »condition »}{/if} : affiche selon une condition (équivalent de if(condition){consequence} en php)
{loop= »array »}{/loop} : permet de parcourir un tableau (équivalent de foreach($array){ } en php)
{include= »template »} : permet d’inclure une vue dans une autre (pratique pour inclure les header et footer que l’on retrouve partout dans l’application).
Vous ave évidemment d’autres balises à dispo avec un ptit exemple pour chacune dans la doc.
RainTPL est assez permissif par rapport à la structure de votre projet, il suffit de lui indiquer des chemins, ce qui bon et mauvais à la fois car si il autorise une plus grande souplesse et n’interfère pas avec l’architecture projet, il n’incite pas non plus à instaurer une bonne structure.
Dans ce domaine, je pense que personne n’a le droit d’imposer une structure en argüant comme je l’ai maintes fois entendu que “c’est ce qu’il faut faire », mais puisque qu’ici c’est moi le patron () je vais au moins me permettre de vous proposer une structure de projet avec rainTPL, que j’utilise pour Leed, DropCenter et bien d’autres projets pro/perso :
J’ai profité de la structure pour vous mettre deux templates que vous pouvez switcher en modifiant la constante DEFAULT_THEME dans le fichier configuration.php quelques exemple de lecture de variables, de tableau d’objets, d’utilisation de condition etc.. avec RainTPL
Vous pouvez télécharger cette structure et les exemples RainTPL qu’elle contient ICI.
On a bien deux Templates (légèrement fait à l’arrache) pour les mêmes traitements / control de données, il est donc possible d’en switcher sans toucher à quoique ce soit d’autre que la constante DEFAULT_THEME.
Bien sûr que non, il est évident qu’un petit script de deux pages contenant chacune trois lignes n’a pas réellement besoin d’un gestionnaire de Template,
cela dit pour les moyen et gros projets je vous encourage vivement a partir d’instinct sur un moteur Template.
Si vous n’en voyez pas l’utilité sur le moment,vous la verrez certainement par la suite, votre projet sera toujours plus simple à maintenir, évoluer, fusionner, embellir par la suite.
De plus cela vous obligera à tendre vers l’architecture MVC donc la redoutable efficacité n’est plus à prouver (bien qu’il y ai aussi des contestataires à ce sujet, mais bon on trouve de tous les avis sur le web il faut faire avec) et rainTPL est si discret que ça n’en alourdira pas votre projet pour autant.
Je sais que le sujet est entendu pour la plupart des développeurs de ce blog, mais si je suis parvenu à convertir un nouveau lecteur au “templarisme” et surtout à l’excellent RainTPL, je m’en satisferais !
Templatement votre,
Idle
Lorsque l’on devient un véritable technophile bassement matérialiste, on se met à accumuler tout un tas d’engins électroniques : Téléphone portable, Tablette, Pc, Mac, montres, lunettes ou strings panthères connectés etc…
Qu’on toutes ces machines en communs ? Les contacts!
Qu’il s’agisse des adresse email sur votre messagerie de pc portable/fixe/mac/ultra portable… ou encore des numéro de téléphones sur votre androïde phone/iphone/windows phone, tablettes etc… ils y en à partout c’est un besoin fondamental pour les appli de partage d’information avec un tiers (toutes les appli quoi ^^).
Ca devient alors très vite contraignant d’organiser tout ce beau monde, de synchroniser et de mettre à jour tous les appareils sans doublons, crises de nerfs, pertes d’infos, de temps et de cheveux.
C’est pourquoi il peut être intéressant d’utiliser un synchronisateur de contacts tels qu’en propose google, apple, windows, à ceci près que nous allons l’installer sur notre propre serveur/hébergeur gratuitement, ceci nous permettra :
Oui MAIS !! Aujourd’hui les solutions de synchronisation de contacts type cardDav (format standard de carte de contact)/calDav (format standard de calendrier) gratuites, propres, stables et installables sur votre serveur/hébergement ça ne coure pas les rues.
Evidemment il y a des solutions type owncloud mais encore peu matures donc relativement boguées/peu stables, auxquelles je ne fais pas tout à fait confiance de mon côté.
En revanche un utilisateur m’a récemment fait découvrir Baikal qui, bien qu’il ne soit pas très vieux et utilise la même librairie qu’owncloud (sabreDAV, une excellente librairie pour gérer les standard calDav, webDav, calDav au passage), il se contente de faire le minimum (pas de gestion de fichiers) et il le fait donc très bien .
Baikal permet de gérer simplement la synchronisation, la centralisation et le stockage de vos contacts (ainsi que de votre calendrier si vous le souhaitez) et ce à l’aide d’un format standard et très accessible quel que soit votre appareil/système d’exploitation.
Le script reste relativement simple, il peux gérer plusieurs utilisateurs ayant chacun plusieurs carnet d’adresses / calendrier et propose une petite dashboard de statistiques.
Ce script sous licence GPL a l’avantage d’avoir été créé avec la librairie js/css boostrap qui rend l’application très jolies et responsive (adaptable tout écran tablettes, smartphone, pc etc…).
Il est installable avec une base de donnée SQL lite (simple fichier) ou avec une base MySQL au choix.
Il est à noter tout de même deux gros points faibles pour l’application :
Voyons un peu comment installer tout ça .
L’installation de Baïkal est maintenant terminée, notez qu’on vous demandera peut être à un moment de donner des permissions sur certaines dossiers de l’application, il vous faudra donc utiliser la commande “chmod –R 777 /chemin/vers/le/dossier/baikal” si vous êtes sur un serveur, ou passer par un programme de gestion de droits ftp comme fileZilla si vous êtes sur un hébergement simple sans accès à la ligne de commande.
Afin de créer des carnets d’adresse, il vas falloir en premier lieu créer un utilisateur lié à ce carnet (car baikal est multi utilisateurs), on clique donc sur “start using baikal”, on s’identifie avec le mot de passe Admin qu’on à rentré à l’utilisation et on arrive sur l’interface
Un clic sur l’onglet “users and ressources” nous amène sur la page de gestions des utilisateurs et des carnets/calendriers, on clic sur le bouton Pour ajouter un nouvel utilisateur :
retenez bien le “username” et le “password” que vous tapez, ce sont les identifiants qui vous servirons par la suite à connecter vos machines aux carnets d’adresses et calendriers créés.
nb : Gardez le username le plus simple possible, évitez les majuscules, accents, caractères spéciaux etc…
Création d’un carnet d’adresses/calendrier pour l’utilisateur
Une fois l’utilisateur créé, une barre apparait, cliquez sur l’un ou sur l’autre pour créer un calendrier ou un carnet d’adresses pour l’utilisateur.
Par défaut vous avez déjà un carnet d’adresse et un calendrier créées pour cet utilisateurs, ils ont tout deux pour identifiants le nom “default” dont nous nous servirons plus tard, si vous créez de nouveaux carnets/calendriers, retenez bien l’identifiants que vous leurs attribuez.
Je ne peux pas vous donner l’installation pour toutes les messageries existantes, mais je vous donne un exemple avec (selon moi) la meilleur d’entre toute : thunderbird , si vous n’avez pas cette messagerie installez la, il vous la faut, le processus est sensiblement identique aussi je vous conseille de suivre cette partie.
Synchroniser les contacts
Thunderbird ne gère pas les formats cardDav par défaut, il vas donc falloir télécharger et installer l’extension gratuit “SOGo Connector” sur votre Thunderbird, le redémarrer puis cliquer sur l’onglet “outils—>carnet d’adresses” et dans la fenêtre qui s’ouvre “Fichier—>nouveau—>carnet d’adresse distant”
Puis taper l’adresse de votre carnet d’adresse, dans mon cas j’ai gardé celui par défaut :
C’est cette adresse qui est très mal spécifié dans la doc et dans le panel de baikal, aussi faites très attentions à l’adresse et aux spécifications suivantes :
http://127.0.0.1/baikal-flat/card.php/addressbooks/idleman/default/
http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal
card.php/addressbooks/: chemin obligatoire vers les carnets d’adresses (ne pas changer)
idleman/: Nom de l’utilisateur créé précédemment (le fameux username)
default/: Identifiant du carnet d’adresse ciblé (ou à gardé celui par défaut dont l’identifiant était default).
nb: le “/” en fin d’adresse est obligatoire.
A la prochaine synchro, thunderbird vous demandera de spécifier le username et le password de l’utilisateur que vous avez créé afin de le conserver en mémoire
Tout les contacts que vous mettrez dans ce carnet d’adresse thunderbird seront alors automatiquement synchronisés avec le carnet baikal et réciproquement.
Pour être sûr que ça fonctionne, créez un contact dans le carnet thunderbird, puis retournez voir sur le panel web baikal si vous avez un ou plusieurs contacts, c’est que ça à fonctionné :
Notez bien que la synchro peux mettre un peu de temps, vous pouvez faire clic droit sur le carnet d’adresse et “synchroniser” pour forcer la synchro.
Synchroniser le calendrier
Encore une fois, Thunderbird ne possède pas de calendrier natifs, il faut donc ajouter le plugin “lightning” qui vas ajouter un calendrier à votre messagerie, redémarrez votre thunderbird, cliquez sur l’onglet agenda puis dans les agendas de gauche clic droit—>Nouvel agenda—>Sur le Réseau
Sélectionnez “CalDav” et rentrez l’adresse de votre calendrier baikal
Cette adresse aussi est très mal spécifié dans la doc et dans le panel de baikal, aussi faites très attentions à l’adresse et aux spécifications suivantes :
http://127.0.0.1/baikal-flat/cal.php/calendars/idleman/default/
http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal
cal.php/calendars/: chemin obligatoire vers les calendriers (ne pas changer)
idleman/: Nom de l’utilisateur créé précédemment (le fameux username)
default/: Identifiant du calendrier ciblé (ou à gardé celui par défaut dont l’identifiant était default).
nb: le “/” en fin d’adresse est obligatoire.
Vous pouvez cocher “prise en charge du mode hors connexion” historie d’avoir accès a vos évènements même lorsque la connexion internet est coupée.
A la prochaine synchro, thunderbird vous demandera de spécifier le username et le password de l’utilisateur que vous avez créé afin de le conserver en mémoire
Sur un téléphone android le mieux est encore d’installer l’application “CardDAV-Sync free beta” qui en dépit de son nom inquiétant fonctionne plutôt bien
Rentrez la même adresse que pour les contacts de thunderbird http://127.0.0.1/baikal-flat/card.php/addressbooks/idleman/default/ (avec les changements qui s’imposent)
http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal
card.php/addressbooks/: chemin obligatoire vers les carnets d’adresses (ne pas changer)
idleman/: Nom de l’utilisateur créé précédemment (le fameux username)
default/: Identifiant du carnet d’adresse ciblé (ou à gardé celui par défaut dont l’identifiant était default).
Pensez à décocher la case “Use SSL” (à moins que votre baikal ne soit installé avec un https) et à spécifier le username et le password de l’utilisateur que vous avez créé
Toutes les infos disponibles ici : https://github.com/jeromeschneider/Baikal/blob/master/INSTALL.md#5—connecting-your-caldav–carddav-client-to-bakal
nb : sur Mac OS X 10.8 et Calendar (ex-iCal) l’adresse pour le CalDAV il semble qu’il faille dans certains cas utiliser « principals » au lieu de « calendars ».
Soit en adresse serveur : toto.com
Server path : /baikal/cal.php/principals/toto
Pour synchroniser vos contacts avec roundcube vous devrez installer le plugin Roundcube-CardDAV qui fonctionne très bien
Le plugin est maintenant correctement installé, loguez vous sur roundcube puis allez dans l’onglet « Préférences » puis le menu de gauche « Carddav » et renseignez les infos du formulaire:Label : Nom du carnet d’adresse affiché sur rouncube (mettez ce que vous voulez)
Serveur : Adresse du carnet baikal
Cette adresse aussi est très mal spécifié dans la doc et dans le panel de baikal, aussi faites très attentions à l’adresse et aux spécifications suivantes :
http://127.0.0.1/baikal-flat/card.php/addressbooks/idleman/default/
http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal
card.php/addressbooks/: chemin obligatoire vers les calendriers (ne pas changer)
idleman/: Nom de l’utilisateur créé précédemment (le fameux username)
default/: Identifiant du calendrier ciblé (ou à gardé celui par défaut dont l’identifiant était default).
nb: le “/” en fin d’adresse est obligatoire.
Utilisateur : login de l’utilisateur lié à ce carnet sous baikal
Mot de passe : mot de passe de l’utilisateur lié à ce carnet sous baikal
Cliquez sur enregistrer, attendez quelques secondes puis allez dans vos carnet d’adresse : it works !!
Notez que si vous souhaitez que ça synchronise régulierement, il vous faudra mettre en place un CRON (tâche planifiée) qui exécutera le php /chemin/vers/roundcube/plugins/carddav/cronjob/synchronize.php
Pour ceci lancez une console sur votre serveur web puis tapez :
crontab -e
et ajoutez la ligne
0 4 * * * php /var/www/roundcube/plugins/carddav/cronjob/synchronize.php
Au fichier de crontab ouvert, en remplaçant la partie en gras pa le chemin de votre rouncube puis sauvegardez.
Notez que le cron que je propose synchronise une fois par jour à 4h00 du mat (peut de chance que vous soyez en train de modifier vos contacts à cette heure la, si vous avez « pécho des 06 en boites » normalement c’était quelques heures plus tôt, à 4h00 vous êtes en train de vomir votre vodka sur un parcmètre donc tout vas bien).
Notez que vous devez avoir le paquet php5-cli pour pouvoir executer le php en ligne de commande comme ça, si ça ne marche pas pensez donc à l’installer via la commande sudo apt-get install php5-cli
Je vous encourage à participer au code, aux retours de bugs etc du projet via sa page github : https://github.com/jeromeschneider/Baikal
Une alternative qui à l’air franchement sympa
Je tiens à mettre valeur le commentaire de nono sur une alternative qui à l’air également super convaincante : Radical :
Je me permets de vous faire découvrir Radicale qui est l’équivalent de Baikal, mais en plus simple et plus robuste.
Plus simple parce qu’il n’y a même pas d’interface web (pas franchement utile pour une appli de type web-service).
Plus robuste parce qu’elle n’utilise pas de base de données (sqlite), mais uniquement un stockage en fichier plat, ce qui est très logique vu que les données à stocker ne sont que faiblement relationnelles.
Et enfin, cerise sur le gateau, Radical permet de créer des collections (de contacts ou d’évènement) publiques (donc accessibles à tous), privées (donc accessibles uniquement aux personnes authentifiées, ou personnelles (donc accessibles uniquement à par son propriétaire).
Cela permet donc de partager (sommairement) des contacts ou des évènements.
Et comment on crée une collection ? En accédant à son adresse, tout simplement.
Radicale, le plus KISS des caldav/carddav server…
- nono