PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Snippet #23 ~ PHP: Trouver les jours fériés (fixes et mouvants)

lundi 16 septembre 2013 à 01:22

Voila une petite fonction PHP permettant de définir si la date fournie en paramètre (au format timestamp) est un jour férié ou non.

Cette fonction retourne true si le jour est férié, false dans le cas contraire

?php	
/**
	* Cette fonction retourne un tableau de timestamp correspondant
	* aux jours fériés en France pour une année donnée.
	*/
	function isNotWorkable($date)
	{

	  	if ($date === null)
	  	{
	    	$date = time();
	  	}

	 	$date = strtotime(date('m/d/Y',$date));

	 	$year = date('Y',$date);

		$easterDate  = easter_date($year);
		$easterDay   = date('j', $easterDate);
		$easterMonth = date('n', $easterDate);
		$easterYear   = date('Y', $easterDate);

		$holidays = array(
	    // Dates fixes
	    mktime(0, 0, 0, 1,  1,  $year),  // 1er janvier
	    mktime(0, 0, 0, 5,  1,  $year),  // Fête du travail
	    mktime(0, 0, 0, 5,  8,  $year),  // Victoire des alliés
	    mktime(0, 0, 0, 7,  14, $year),  // Fête nationale
	    mktime(0, 0, 0, 8,  15, $year),  // Assomption
	    mktime(0, 0, 0, 11, 1,  $year),  // Toussaint
	    mktime(0, 0, 0, 11, 11, $year),  // Armistice
	    mktime(0, 0, 0, 12, 25, $year),  // Noel

	    // Dates variables
	    mktime(0, 0, 0, $easterMonth, $easterDay + 1,  $easterYear),
	    mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear),
	    mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear),
		);

  	return in_array($date, $holidays);
	}
?>

Petit exemple d’utilisation :

<?php
    if(isNotWorkable(time())){
	echo 'Nous sommes un jour férié !! Apéro !!';
    }else{
	echo 'Nous sommes un jour normal, au boulot :p';
    }
?>

Des nouvelles des projets Leed RSS, Dropcenter et Yana

vendredi 13 septembre 2013 à 01:07

Voilà une belle semaine météorologiquement bien pourrie et donc idéale pour faire de la revue projet ! :D
Voyons un peu comment se portent nos trois projets phares : DropCenter, Leed, et Yana !!

DropCenter

Ma plateforme gratuite d’échange/stockage de fichiers en ligne DropCenter a subi quelques modifications ces derniers temps.

image

Un grand nombre de fixes pour la sécurité : ajout de token sur les formulaires sensibles, correction de failles xss, masquage des infos utilisateur pour les non connectés etc.

Une meilleure stabilité :  concernant les fichiers avec accents (plus de soucis de renommage/ouverture/déplacement de fichiers ou dossiers)

Interface épurée et moins “clignotante” : le design a été revu de manière à la rendre plus simple et plus élégante, le rafraîchissement de la page ne clignote plus, les barres de chargement et de préloader ne sont plus décalées.

Correction de régressions récentes : l’avatar s’affiche de nouveau dans les mails de notification, le nombre de fichiers modifiés dans les événements n’est plus à 0, l’utilisateur ne voit pas ses préférences …

Leed

image

Leed RSS bouge également sur la branche de développement ! Le système de pagination Ajax est terminé, et le module d’internationalisation également (n’hésitez pas à tester sur la branche dev et à nous fournir vos fichiers langues, actuellement seul le fichier français est proposé).

Yana-Server

Une nouvelle fonctionnalité a vu le jour : le gestionnaire d’événements, ainsi qu’un plugin permettant de l’utiliser.
Le gestionnaire d’événements permet de déclencher une action (parole, son ou commande) à un instant précis, il fonctionne en mode tâche planifiée (à la manière des CRON Linux ou des tâches planifiées Windows), pratique pour rappeler un anniversaire vocalement ou ouvrir vos stores et allumer vos lumières tous les matin à 6h00 et vous réveiller
avec la jolie voix de Yana :D !!

Note pour les concepteurs de plugins Yana : il est possible d’utiliser les événements pour déclencher une action lorsqu’un capteur est activé ou en fonction de n’importe quel paramètre autre que le temps :) .

Yana-Windows

image

Le client Yana pour Windows a subi très peu de modifications ces temps-ci, par manque de temps essentiellement.
Cependant j’ai eu le temps d’ajouter une fonctionnalité permettant d’exécuter une action directement après la reconnaissance d’une phrase, sans avoir à interroger ou à attendre la réponse du serveur.

Cette fonctionnalité est pratique pour toutes les actions ayant besoin d’être “instantanées” et ne nécessitant
pas une requête vers Yana-Server, comme par exemple “Yana, lance mon éditeur de texte”.
Un exemple d’utilisation verra bientôt le jour dans le plugin vocalinfo de Yana-Server.

Enfin, un dépôt GitHub a été créé pour les développeurs qui veulent accéder aux sources de Yana-Windows (jusqu’ici privées),
j’aurais aimé organiser un peu plus le code avant de le partager mais je manque de temps :) , n’hésitez pas a faire
des pull request sur le dépôt si vous souhaitez participer à l’amélioration du programme.

Dépôt git des sources : https://github.com/ldleman/yana-windows-sources (“alea jacta est”)

 

[Billet invité] Créer un nas avec le Raspberry Pi

vendredi 9 août 2013 à 20:59

Article rédigé par le lecteur Geoffrey ENJOLRAS

Salut à tous,

Autant être franc, je suis loin d’être un fin connaisseur en informatique (ah la la mon seul défaut…). Mais je pense aux noobs de mon genre qui seront ravis d’éviter des journées de recherches pour créer leur propre NAS, voire pour les plus braves et aventureux : leur propre SEEDBOX sécurisée!

Les deux tutos qui vont suivre sont le fruit de nombreuses recherches sur le net, fructueuses ou pas. Et donc d’un pompage intensif de plusieurs sites que je citerai bien évidemment à la fin de l’article. Ce tuto ressemble un peu au tuto 19 qui permet de faire une SeedBox. Cependant il n’est pas très explicite, certains points sont obscurs voire bizarroïdes, puis certains sont faits d’une manière assez compliquée pour pas grand chose!

Bon c’est bien, tu nous as vendu ton tuto, mais concrètement ça sert à quoi ton truc?

En voilà une question qu’elle est bonne!
Pour les incultes comme moi, un NAS (Network Attached Storage) est une sorte de gros disque dur connecté à votre réseau. Il est donc accessible à partir de n’importe quel ordinateur connecté à votre box (par wifi/Ethernet). En gros, tous les ordis de la maison ont accès aux musiques, films, photos, sans avoir besoin de balader un disque dur de l’un à l’autre. Même votre Mediacenter pour regarder directement vos films sur la télé!
Petite image rigolote trouvée sur le net valant mieux qu’un grand discours :

 

network-attached-storage-chart
Faire ça avec une rasp, déjà c’est cool! Mais surtout c’est pas cher (prix de la rasp et des disques durs) et surtout très peu gourmand en énergie! Faut penser que le NAS reste allumé jour et nuit, la faible consommation de la Rasp est donc un atout pour notre portefeuille (surtout si on ne bosse pas chez EDF…). Pour faire plus concret, rien qu’en électricité, vous pouvez économiser jusqu’à 150€/an comparé à un vrai NAS.

Bon allez, tu nous soûles, il nous faut quoi pour faire ton NAS?

Pour cela, il vous faut passer par la case “pognon” et vous procurer:

montage

 Conseils: Les deux disques durs sont alimentés par un seul câble USB chacun pour se dispenser du HUB, de câbles d’alimentation en plus etc … Bref de tout un merdier inutile derrière mon fauteuil :D
Ils sont formatés en EXT3 car c’est avec ce format que j’ai eu les meilleures vitesses en lecture/écriture avec la rasp.
Mon alimentation est atypique. Elle passe par les PINS 5V et MASSE du GPIO. Je vous expliquerai plus bas pourquoi. Elle n’est pas encore nécessaire pour la suite du tuto mais seulement pour la partie Sauvegarde journalière. Surtout, ne le faites pas seul avant que je vous l’explique ou vous risqueriez de cramer votre Rasp!!!!

T’expliques comment on met en place les dossiers et les disques s’te plaît ?

Branchez vos disques à la rasp puis mettez-la sous tension. Connectez-vous y avec Putty ou par console (vous pouvez suivre les astuces du tuto 19 pour vous aider), pour ma part avec Ubuntu:

ssh pi@192.168.1.2

 

Avant toute chose, la petite mise à jour qui va bien et qui évitera pas mal de soucis: (Si c’est la première que vous faites, allez prendre un petit café pendant 5-10 min)

sudo apt-get update && sudo apt-get upgrade

ssh et update

Nous allons créer les dossiers où nous allons monter nos disques durs:

sudo mkdir /media/USBHDD1
sudo mkdir /media/USBHDD2

 

Pour monter nos disques, il faut d’abord connaître leur localisation, pour cela:

sudo fdisk -l

Localisation DDE

Maintenant que l’on sait où ils sont, on les monte dans nos dossiers. Le disque 1 dans le dossier USBHDD1 et le 2 dans USBHDD2:

sudo mount -t auto /dev/sda1 /media/USBHDD1
sudo mount -t auto /dev/sdb1 /media/USBHDD2

 

Et tant qu’on y est, on va créer un montage automatique au démarrage de la Rasp!
Comme ça, les disques seront montés dans les bons dossiers dès la mise sous tension. D’abord:

sudo nano /etc/fstab

Puis on ajoute les lignes suivantes:

/dev/sda1 /media/USBHDD1 auto noatime 0 0
/dev/sdb1 /media/USBHDD2 auto noatime 0 0

Pour sauvegarder le fichier “Ctrl + O”, et pour le quitter “Ctrl + X”.

Bon alors jusque-là, si j’ai tout compris, dès qu’on branche la rasp, ce qu’on veut mettre dans le premier disque dur se trouve dans USBHDD1 et ce qu’on veut mettre sur l’autre c’est dans USBHDD2.

C’est tout à fait ça. USBHDD1 servira aux données, et USBHDD2 servira à sauvegarder ces données tous les jours (on est jamais à l’abri d’une panne!).Deux dossiers de montage

 

Et comment on fait pour voir tout ça sur le réseau?

C’était la partie facile, nous allons à présent installer SAMBA qui va nous permettre de créer facilement un réseau à la Windows! Nos disques en EXT3 ne poseront donc aucune difficulté pour la lecture et l’écriture.

sudo apt-get install samba samba-common-bin

Je vous propose pour ce tuto de faire 3 type de dossiers pour notre NAS. Son nom de guerre pour le réseau sera “SERVEURIX2000″. Il va contenir:

Bien-sur, vous pouvez en créer autant que vous voulez, Movies, Series etc …

sudo mkdir /media/USBHDD1/SERVEURIX2000
sudo mkdir /media/USBHDD1/SERVEURIX2000/Public
sudo mkdir /media/USBHDD1/SERVEURIX2000/Music
sudo mkdir /media/USBHDD1/SERVEURIX2000/Private
sudo chmod 777 -R /media/USBHDD1
sudo chmod 777 -R /media/USBHDD2

Screenshot from 2013-08-09 16:51:29

Maintenant, pour que ces dossier soient visibles sur le réseau, nous allons modifier le fichier de configuration de SAMBA:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo nano /etc/samba/smb.conf

 

Avec les commandes précédentes, vous avez fait une copie du fichier d’origine (au cas où) et vous en écrivez un nouveau. Voilà le fichier que j’utilise:

[global]
   workgroup = WORKGROUP
   server string = %h server
   netbios name = SERVEURIX2000
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true 
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes

[Public]
   path =/media/USBHDD1/SERVEURIX2000/Public
   read only = no
   locking = no
   guest ok = yes
   force user = pi

[Music]
   path =/media/USBHDD1/SERVEURIX2000/Music
   read only = yes
   locking = no
   guest ok = yes
   force user = pi

[Private]
   browseable = no
   path = /media/USBHDD1/SERVEURIX2000/Private
   writable = yes
   username = JeanLouis
   only user = yes
   create mode = 0600
   directory mask = 0700

Vous pouvez sauvegarder et fermer le fichier. Si vous voulez ajouter d’autres dossiers à partager, ce sera celui-ci. Maintenant, nous allons créer un compte SAMBA qui va nous permettre d’avoir un login et un mdp pour le dossier Private. Tout d’abord, on crée un compte utilisateur sur Wheezy:

sudo useradd JeanLouis -m -G users
sudo passwd JeanLouis

Puis on l’utilise pour SAMBA:

sudo smbpasswd -a JeanLouis

Ensuite on donne à cet user l’accès au dossier Private:

sudo chown JeanLouis:JeanLouis /media/USBHDD1/SERVEURIX2000/Private/

Enfin, on redémarre tout ce boxon:

sudo /etc/init.d/samba restart

Et voilà, vous avez maintenant accès à vos dossiers sur les disques durs depuis le réseau:
(Il vous faudra sûrement redémarrer l’ordi avec lequel vous faites vos tests pour pouvoir voir votre NAS sur le réseau)
SERVEURIX2000

Mais, le dossier NSFW est dans Private! Pourtant ce dossier est invisible… Comment t’as fait pour l’ouvrir?

C’est tout l’intérêt! En plus d’être protégé, il n’est en plus pas visible… Pour s’y connecter, ouvrez par exemple le dossier Public. Dans la barre du path, changez “Public” par “Private”. Et là, une fenêtre s’ouvrira en vous demandant le login et le mdp que nous avons enregistré dans samba:

SERVEURIX2000Private

Merci à khira et son pote du boulot soulfire82 pour leur aide et leur lumière enfin surtout d’en avoir chié avec moi

Tu nous avais pas parlé d’une sorte de sauvegarde journalière?

On va utiliser rsync qui est normalement déjà installé, mais dans le doute:

sudo apt-get install rsync

Il suffit à présent de modifier un petit fichier qui va nous permettre de faire une sauvegarde journalière à 3h30 précises:

crontab -e

 

Puis à la fin du fichier:

30 03 * * * rsync -av --delete /media/USBHDD1/SERVEURIX2000 /media/USBHDD2

Sauvegarde Journalière

Donc là, à 3h30, le dossier SERVEURIX2000 qui est sur USBHDD1 va être sauvegardé avec tout ce qu’il y a dedans sur USBHDD2. Mais moi, ton truc ça me va pas, si je veux le faire tous les 10 du mois à 13h48?

Qu’à cela ne tienne! Il vous suffit de configurer le fichier en fonction de ce tableau:

*     *     *     *     *  commande temporelle (* = indifférent)
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- jour de la semaine (0 - 6) (Lundi=0)
|     |     |     +------- mois (1 - 12)
|     |     +--------- jour du mois (1 - 31)
|     +----------- heure (0 - 23)
+------------- minute (0 - 59)

 Donc tous les 10 du mois à 13h48, ça sera:

48 13 10 * * -av --delete /media/USBHDD1/SERVEURIX2000 /media/USBHDD2

 

 

Attends, attends … Tu nous avais pas dit qu’ici, il fallait trafiquer l’alim?

Bien vu l’aveugle. dit le muet au sourd, “le chauve était de mèche!”
Et oui, une alim de 1A pour la rasp c’est bien, une de 2,1A ça change rien… Car le µUSB bride le courant à 700mA.
Si vous utilisez cette commande directement dans le terminal:

rsync -av --delete --stats --progress  /media/USBHDD1/SERVEURIX2000 /media/USBHDD2

Pour tester si la copie du premier disque sur le second fonctionne, et bien vous risquez d’avoir une jolie erreur au bout d’un moment du genre “I/O error”.
C’est parce qu’avec ce bridage de 700mA, la rasp n’est pas capable de fournir suffisamment de courant pour le fonctionnement de deux disques simultanément. Et du coup, il y en a un qui s’éteint une fraction de seconde et qui fait foirer la copie (voire tout le montage du disque). Pour passer ce bridage, je passe donc par le GPIO.

gpio_closeup
Cette solution ne présente aucun risque pour votre Raspberry puisque le surplus de courant est dirigé vers les ports USB et pas à travers toute la rasp. J’utilise cette méthode sans aucun problème depuis presque 2 mois 24h/24 7j/7.
Si vous optez pour cette solution, surtout surtout SURTOUT n’alimentez pas en même temps LE GPIO ET LE PORT µUSB. J’insiste, soit l’un soit l’autre, mais JAMAIS LES DEUX SIMULTANÉMENT !!! Vous risqueriez de cramer toute la rasp en imposant deux sources de tension…. Pigé???

daft-punk

Voilà, à présent vous devriez avoir un NAS fonctionnel sur votre réseau. La prochaine étape sera de customiser ce NAS pour en faire une SEEDBOX.  Elle vous permettra comme toute SEEDBOX de télécharger et partager vos torrents, mais surtout de faire ça d’une manière sécurisée en passant par un VPN!
Si quelque chose ne vous parait pas clair, n’hésitez pas à poster un topique sur le forum dédié au questions de tous genres : Taverne d’Idle et de poivrots

Bon aller! J’ai un dossier NSFW à mater moi !  tuto sur une seedbox à faire !

 

Liens riches en inspiration:

http://www.howtogeek.com/139433/how-to-turn-a-raspberry-pi-into-a-low-power-network-storage-device/

http://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/connect-the-lead

http://www.pihomeserver.fr/2012/12/09/raspberry-pi-home-server-etape-10-installer-samba/

Le bordel de l’info #27

jeudi 8 août 2013 à 18:31

Salut bande de pili-pili faisandés, vous en avez d’la chance !! A l’heure de la revanche des talons hauts (tattaaa!!), à l’heure où les machines à café font preuve de compassion, bref à l’heure du WTF total, vous êtes peinards dans votre garage souterrain, les pieds dans votre inondation, cernés par les étrons de votre pompe à relevage sous dimensionnée (je deviens limite lyrique), à vous savourer un 27ème morceau du bordel de l’info !

Diantre! Cela fait une éternité que je n’ai divagué dans cette section ! Du coup : du neuf et du moins neuf pour cette 27em édition (mais que du pur bordel je vous le garantis):

 

C’est tout pour ce jeudi soir, faudrait pas que je me couche trop tard après j’ai la tête dans le cul et je grille des raspberry pi (ah oui : j’ai grillé mon raspberry PI T_T rest in peace brave framboise, franchement elle l’a pas volée son repos éternel celle la ^^, mais bon du coup ça risque de ralentir un peu les tutos le temps que j’économise mes 30€ pour m’en racheter un (c’est la crise mon pov monsieur !! :D )

Raspberry PI ~ 21 : Yana, un nouveau cœur domotique

samedi 20 juillet 2013 à 18:30

Ce post est le vingt et unième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

Aujourd’hui pas d’électronique, seulement de la bidouille logicielle pour “proprifier” un peu notre domotique.

Pour faire court, j’ai travaillé sans relâche ces derniers jours (et novares aussi en parallèle sur Android) sur un nouveau système de gestion de notre domotique qui devrait plaire aux développeurs en tout genre ainsi qu’aux utilisateurs.

Pour rappel, jusqu’ici nous utilisions deux “programmes”:

  1. l’interface web HCC (développée à l’arrache par votre serviteur himself un soir d’apéro) l’interface vocale YURI dérivée du programme SARAH de JP Encausse.

Seulement voila mon installation était un peu dégueulasse, je suis donc reparti d’une base saine : YANA.

YANA est un groupe de logiciels qui comprend :

Yana Server:

image

Cœur de l’application domotique qui comprend une interface web (une sorte de hcc 3.0)

Yana for Windows:

BNYlIALCAAEq122

Remplaçante de YURI, que j’ai entièrement redéveloppé de manière à m’approprier un peu plus le code et pouvoir en faire ce que je souhaite

Yana for Android: Similaire à YANA for Windows mais pour les androphones, en cours de développement par novares.

 

Avant d’aller plus loin une petite démo vidéo:

Pourquoi avoir remplacé YURI?

YURI, qui n’était autre que le logiciel SARAH de JP Encausse fonctionnait très bien, j’insiste sur le fait que c’est un excellent programme qui fonctionne parfaitement bien, cependant ne l’ayant pas développé je n’étais pas en mesure de répondre aux questions des utilisateurs sur certains bugs ou encore d’ajouter des petites fonctionnalités manquantes pour adapter le programme à notre domotique.

Le fait de l’avoir redéveloppé m’a par ailleurs permis d’y ajouter quelques fonctionnalités :

 

Qu’est-ce qu’on gagne avec ce nouveau système? 

Le gros avantage de cette nouvelle combinaison yana-server  + yana Windows, c’est que yana-server est un CMS auquel ont peut ajouter toute sorte de plugins, ceci permet de rajouter des commandes et des actions simplement en installant un plugin, les commandes seront alors répercutées sur le client yana qui les prendra en compte à son redémarrage.

Les développeurs sont bien entendu invités à proposer leurs plugins. Le second point important c’est l’ajout d’un écouteur d’événements qui permet à yana de parler, jouer un son ou exécuter une commande toute seule sans qu’il n’y ait besoin de l’interpeller.

Ceci permet l’écoute d’événements autres qu’un ordre vocal comme un événement déclenché par l’heure ou la date (“C’est l’anniversaire de votre mère“) ou encore un événement déclenché par une porte ouverte (“Intrusion dans le salon, alerte!”) etc… etc..

Comment télécharger tout ça?

Tout est sur github, je vous conseille de télécharger via git plutôt que via l’archive, ça vous permettra de mettre à jour plus simplement.

Notez que vous devez obligatoirement installer yana server sur votre raspberry PI pour faire fonctionner les clients vocaux.

Dépôts Github :

.Comment installer et  utiliser tout ça?

Pour chaque dépôt, suivez les instructions du fichier README.md associé

Notez bien que tous les prochains tutos seront basés sur ce nouveau système, et que les anciens seront également convertis petit à petit quand j’aurais deux minutes (vivement la retraite).

Bien que YURI (qui découle de SARAH) soit un excellent programme je ne maintiendrais plus aucune sorte de support sur celui ci (n’ayant pas la paternité et les connaissances de son code suffisantes pour cela).

Pour ceux qui souhaiteraient continuer à l’utiliser ,je vous invite à vous adresser directement à son auteur, JP Encausse, aussi sympa que compétent :) .

N’hésitez pas à poser vos questions dans les commentaires ou sur le fofo.