PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Quelques petites astuces PHP

jeudi 4 juillet 2013 à 19:29

Je me suis rendu compte l’autre jour qu’il y avait foule de petites techniques PHP que j’utilisais au quotidien pour me simplifier la vie et le code, et que la plupart ne m’avait jamais été apprise à l’école.

Il ne s’agit pas forcement d’exclusivités, ni de meilleures façons de coder mais si vous pouvez en  trouver une ou deux utiles alors ce post n’aura pas servi à rien Sourire

N’hésitez pas à partager vos petites astuces dans les commentaires, je les placerai ici (si je les trouve justifiées évidemment)

Saviez-vous que, pour lire les fichiers d’un répertoire, vous pouviez utiliser directement la fonction scandir au lieu de opendir+readdir ? Scandir permet de plus un tri alphabétique ascendant ou descendant

ex : 

var_dump(scandir('mon/repertoire/'));

résultat :

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)

 


Saviez-vous que vous pouviez récupérer le contenu d’un explode directement dans des variables avec la fonction list() ?

ex :

list($age,$prenom,$pseudo) = explode('|',25|valentin|idleman');


Saviez-vous que vous pouviez récupérer et sécuriser toutes vos variables POST et GET en une seule ligne dans un seul tableau de variables?

ex :

$_ = array_map('htmlentities',array_merge($_POST,$_GET));


Saviez-vous que vous pouviez utiliser la fonction file_get_contents au lieu de fopen+fread, fgets etc.. pour récupérer directement le contenu d’un fichier ?

nb : La fonction file() fait la même chose en vous retournant un tableau de lignes

ex :

$donnees_fichiers = file_get_contents('fichier.ext');

Ajout de Timo : La fonction file_put_contents permet quand à elle d’écrire simplement dans un fichier

file_put_contents('mon.fichier.txt','hello world');


Saviez-vous que pour les conditions simples vous pouviez utiliser les conditions ternaires au lieu d’un if/else?

ex:

$majeur = ($age>=18?true:false);

au lieu de

if($age>=18){
    $majeur =true;
}else{
    $majeur =false;
}

 

Ajout de William P : vous pouvez également faire directement:

$majeur = $age >= 18 ;

 

Ajout de Anon  il existe aussi l’opérateur Elvis

foo = foo ?: bar;

Pourquoi Elvis ? => http://i.stack.imgur.com/hQlrp.png

Ajout de Walane : les parenthèses peuvent être placées uniquement sur la condition

($age >= 18) ? true : false;

 


Saviez vous que vous pouviez créer des variables dynamiques avec la notation $$ ?

ex :

$nomVariable = "idleman";
$$nomVariable = "is so lazy…";
echo $idleman
//résultat : "is so lazy…";

 


Saviez vous que la fonction var_dump() était terriblement puissante avec le module xdebug activé?


Saviez vous que vous pouviez inclure automatiquement un fichier de classe simplement en l’instanciant ?

ex :

function __autoload($class_name) {
    require_once $class_name . '.php';
}
$myUser = new User();

 

résultat : l’instruction require_once(‘User.php’); est implicitement incluse à votre code


Saviez-vous que vous pouviez faire appel à la méthode magique __call pour s’exécuter lorsqu’une fonction inconnue est située dans votre classe ?

ex :

__call($method,$args){

    echo ‘j’ai le vague souvenir que ma méthode’.$method.’ s’est faite la malle…essaye encore (signé : ta classe)’;
}
fonction_bidon(‘coucou’);

 


Saviez-vous que vous pouviez utiliser la fonction glob() pour rechercher des types de chemins de fichier?

ex :

foreach (glob("/*/*.txt") as $filename) {
echo "$filename \n";
}

 

résultat : affichera tous les fichiers textes situés 2 répertoires en aval du fichier PHP.


Saviez-vous que echo ‘hello world’ bouffera moins de perf que echo “hello world” ?

En effet les ” interprètent les variables contenues dans la chaine quand ‘ se contente d’afficher votre texte tel quel, ce qui économise quelques perfs.


Saviez vous que vous pouviez écrire echo ‘hello’.'world’ ou echo ‘hello’,'world’ pour un même résultat?

Ajout de Nasty Shade : utiliser la virgule apporte un gain de rapidité exécution

Ajout de Thierry : Il serait bon de préciser que cette syntaxe ne fonctionne que pour echo. Echo accepte un nombre infini de paramètres et elle les affiche tous dans l’ordre où ils sont passés. De plus, echo n’étant pas véritablement une fonction mais une structure de langage, les parenthèses sont optionnelles


Saviez vous que vous pouviez utiliser les fonctions gzinflate, gzdeflate pour compresser les données que vous envoyez ou stockez ?


Saviez vous que, dans les boucles “for” vous pouviez utiliser l’expression : i%2==0 pour les délimiteur et les alternances de couleurs?

Ex :

echo '<table>';
for($i=0;$i<10;$i++){
    echo '<tr style="background-color:'.($i%2==0?'lime':'blue').'"><td>Hello</td></tr>'’;

}
echo '</table>';

 


Saviez vous que la fonction empty($var) retournera FALSE si $var existe et est non-vide, et dont la valeur n’est pas zéro?

if(empty($string))

peut donc être utilisé en lieu de place de

if($string!='' && $string!=null)

 


Ajout de Elo : Vous pouvez automatiquement vous mailer toutes les erreurs de votre script en temps réel avec l’expression :

set_error_handler(‘gestionErreur’);
function gestionErreur( $errno, $errstr, $errfile, $errline, $errcontext)
{
   //Fonction mail ici
}


Ajout de Kevin : vous pouvez vous simplifier la vie en utilisant UNE seule instruction pour stocker du contenu sous forme compressée :

file_put_contents("compress.zlib://$filename", $content);

Ensuite, pour lire ce fichier compressé, UNE instruction également :

$content = file_get_contents("compress.zlib://$filename");

DropNews, un client de synchronisation pour dropcenter

mardi 18 juin 2013 à 07:00

Jusqu’ici dropnews était un petit client bureautique permettant d’être notifié lorsqu’un changement survenait sur le dropcenter.

Seulement voila j’avais bien envie d’en faire à terme un petit client type dropbox synchronisant de manière bilatérale les fichiers du serveur et ceux de mes pc.

Étant donné que le besoin devenait pressant et que je n’avais pas de temps pour dev quelque chose de correct je me suis tourné vers l’adaptation d’un binaire existant : “unisson”.

Unisson fonctionne parfaitement mais n’est pas très utilisé du grand public car il fonctionne en ligne de commande et qu’il faut faire appel à cette commande manuellement pour synchroniser des dossiers.

J’ai donc adapté mon dropnews pour qu’il appelle périodiquement unisson.exe avec la commande qui vas bien, qu’il synchronise le résultat et qu’il fournisse des configs et une interface un peu plus user friendly.

De cette manière on arrive à un équivalent de dropbox, évidemment avec quelques options en moins (genre versioning inexistant) mais qui me satisfait pas mal pour mon utilisation perso à savoir faire des backups auto d’un dossier du le serveur et les synchroniser automatiquement d’un pc à l’autre.

La version actuelle ne fonctionne que sur Windows mais dropnews étant développé avec Qt et unisson proposant une version par Os il n’est pas difficile d’adapter ça à Linux voir Mac.

SI j’ai le temps un jour et SI ça intéresse suffisamment de monde, je m’emploierai à la version Linux (pour mac faut pas déconner, et puis je n’ai pas de mac pour tester de toute façon ^^, cela dis je partagerais les sources si les pro-mac veulent adapter ça pour le trognon d’pom).

Qu’est-ce que DropNews ?

DropNews est un petit programme bureautique qui agit en complément de dropcenter et qui permet de synchroniser un dossier local de votre bureau avec votre dropcenter de manière régulière et sans intervention de votre part.

Le but de ce programme est d’agir comme une alternative libre aux services de cloud type dropbox.

 

Discrétion

Le logiciel démarre avec l’ordinateur et reste en tâche de fond afin de ne pas vous gêner, seule une icône d’état est disponible dans la barre des tâches.

data/dropnews/dropnews1.png

 

Notifications

Vous pouvez être prévenu à chaque changement effectué dans votre dossier dropcenter, notez que vous pouvez utiliser les notifications système par défaut ou les notifications personnalisées de dropnews.

Notification système

data/dropnews/dropnews2.png

Notification personnalisée

data/dropnews/dropnews3.png

Configuration

Plusieurs options sont disponibles à travers le menu au clic droit sur l’icône d’état, vous pouvez accéder à votre dossier synchronisé, accéder directement à votre dropcenter en ligne ou ouvrir le panneau des configurations.

data/dropnews/dropnews4.png

Celui-ci vous proposera un certain nombre de préférences ainsi que les configurations essentielles au bon fonctionnement de l’application.

Historique

Il vous est possible à tout moment de consulter la section “debug” qui contient l’historique de toutes les actions du programme, de cette manière vous serez plus à même de comprendre les réactions de celui-ci.

data/dropnews/dropnews5.png

Le logiciel est actuellement en Alpha test et n’évoluera pas beaucoup étant donné le peu de temps dont je dispose en ce moment, cependant il est fonctionnel (je l’utilise pour la synchro de ma thèse c’est vous dire ^^) donc si ça vous tente de l’essayer :

Vous pouvez  trouver l’exécutable sur http://projet.idleman.fr/dropcenter/data/dropnews/DropNews_setup.exe

L’installation est décrite ici : http://projet.idleman.fr/dropcenter/?page=Installation%20de%20DropNews

NB : Il existe pas mal de client de ce genre, par exemple owncloud desktop ou sparkleshare, mais pour les avoir testé tous les deux je suis revenu sur ma solution (qui est plus bricolo mais qui curieusement semble plus stable sur le long terme) cela dit je vous conseille de faire le tour avant d’adopter l’un ou l’autre, ce n’est que sur une utilisation prolongée qu’on peut se faire une idée correcte.

Leed v1.5 stable

vendredi 14 juin 2013 à 17:48

Good news every one !

Leed, le petit agrégateur de RSS est devenu grand… et stable ! Puisque nous avons sorti la v1.5 stable (première stable du nom) ! Aujourd’hui notre petit concurrent à GReader, Netvibes & Co dispose de nombreuses fonctions natives mais aussi de 18 plugins disponibles sur le Leed market (oui on a choisi un nom “corporate” mais promis c’est tout gratuit :p)

Voila la liste et l’utilité de ces plugins proposés par la communauté et/ou l’équipe leed :

Le moteur Template intégré permet également la personnalisation du thème de leed, aussi 5 thèmes vous sont proposés par la communauté
ici : http://projet.idleman.fr/leed/?page=Th%C3%A8mes .

N’hésitez pas à nous envoyer vos thèmes et plugins vous aussi pour les partager avec la communauté :) .

Un grand merci à ceux qui utilisent leed au quotidien, qui nous soutiennent ou qui nous envoient les propositions/remarques sur github :) , et
aux petits et aux grands qui relayent comme le Linux essentiel magazine, Znet, et Tristan nitot de mozilla ça file la larmichette
tellement c’est beau :)

Et surtout une grosse papouille à notre équipe de dev bénévole de choc constituée de SbGodin, Cobalt74 et Simounet sans lesquels le projet n’aurait pas avancé
d’un pouce étant donné le peu de temps que me laisse ma thèse et mes autres projets.

Grosses features prévues dans la version 2:

N’hésitez pas à venir tester leed et à nous faire vos retours :) .

Dernière version stable : https://github.com/ldleman/Leed/archive/master.zip
Dernière version en développement : https://github.com/ldleman/Leed/archive/dev.zip
Dépôt GIT: https://github.com/ldleman/Leed.git
Déclarer un bug: https://github.com/ldleman/Leed/issues
Rss des versions: https://github.com/ldleman/Leed/commits/master.atom
Dernière version archivée des plugins: https://github.com/Idleman/Leed-market/archive/master.zip
Page des Thèmes : http://projet.idleman.fr/leed/?page=Th%C3%A8mes

 

 

[Billet invité] Comment transformer un trackpad de mayrde en touchpad qui va bien

vendredi 7 juin 2013 à 19:57

Article écrit par le lecteur Florent aka floolf

touchpad = bien
trackpad = pas bien

Problématique

La mode est aux trackpads, pas seulement sur les ultrabooks mais aussi sur les notebooks et netbooks. Le problème : c’est très chiant voire même impossible à utiliser pour un “utilisateur avancé”. En effet, ces périphériques de pointage semblent conçus pour les personnes qui déplacent le curseur à un doigt, le placent sur l’endroit de l’écran où ils voudraient cliquer, réfléchissent un peu, retirent le doigt, puis cliquent doucement sur le clic gauche. Or, les boutons de clic sont tactiles, ce qui rend impossible l’utilisation fort pratique et rapide qui consiste à garder son pouce (ou l’index de l’autre main) sur les boutons de clic et déplacer la souris avec l’index ou le majeur. Si on pose son pouce sur la zone cliquable d’un trackpad et qu’on déplace le pointeur en même temps, il croit qu’on essaye de faire du multitouch et donc le pointeur ne bouge plus, et on obtient souvent des actions non désirées. De plus, la plupart des trackpads équipant les machines d’entrée ou milieu de gamme sont mal conçus et trop sensibles, ce qui fait que pendant le clic le moindre mouvement de doigt sera interprété comme une volonté de déplacer le pointeur en même temps. Je vous laisse envisager tous les comportements foireux de drag-and-drop que ça implique.

Que faire ?

Comme d’hab, on est bien emmerdés par les constructeurs qui n’en font qu’à leur tête et on doit subir. Alors en attendant de monter votre propre bureau d’étude avec des fonds obtenus illégalement, la seule solution est de “hacker” le biniou, à savoir de le bricoler pour obtenir un comportement qui se rapproche de ce qu’on aimerait avoir (et qu’on avait d’ailleurs avant et ça fonctionnait très bien).

Exemple : Acer Travelomate B113

Voilà ce qu’on veut obtenir :

schéma_01

Cette machine est plutôt correcte, 12 pouces, mais le trackpad est une horreur. Sous Linux, même en affinant les réglages logiciels, l’utilisation en est plus qu’horripilante, donnant envie comme disent les gens qui appellent les hotlines de “le jeter par la fenêtre”.

Pimp my laptop

Ce qu’il vous faut :

Positionnez une première bande de scotch sur la partie basse du trackpad, en dépassant largement sur le corps de l’ordinateur. Ensuite, découpez doucement le scotch à l’aide du cutter en suivant le creux entre le corps et le trackpad.
Frottez doucement le scotch sur toute sa surface avec un doigt ou un ongle afin d’obtenir une adhérence maximale.

Découpez une bande de papier d’aluminium légèrement plus petite que la bande de scotch obtenue. La différence de surface servira à ce que la deuxième couche de scotch puisse accrocher sur la première.

MAIS, MAIS, MAIS : ces bâtards de constructeurs de merde, probablement pour faire des économies de bouts de ficelles, utilisent UN SEUL BOUTON POUR LES DEUX CLICS. Donc pour distinguer si on veut cliquer du gauche ou du droit, ils utilisent la détection tactile… C’est pas débile sérieusement ? Du coup, ça fout en l’air notre bidouille qui ne peut plus faire que des clics gauches (le système interprète par défaut un clic gauche si la zone tactile ne détecte rien). Dans le cul le clic droit. Mais bon c’est pas grave hein, le clic droit c’est un truc de geeks, de hackers ! Bon admettons qu’on veuille quand même cliquer du droit, alors il faut découper environ un tiers de notre papier alu pour pouvoir capter la présence de notre doigt quand on fait un clic droit.

On a donc les deux tiers gauches de notre premier scotch cachés par la feuille d’alu (moins la petite surface réservée autour pour l’adhérence du deuxième scotch.

Maintenant apposez une deuxième bande de scotch en utilisant la même méthode que pour la première.

Voilà, vous avez un truc qui fonctionne à peu près comme un touchpad “old school”, car le papier aluminium bloquera la détection du système tactile mais évidemment permettra le clic sur le bouton physique.

schéma_02

 

PortablePack : Le sac à dos du développeur

mercredi 5 juin 2013 à 20:31

Lecteur dans la pénombre“He is alive !! “

Roahh ça vas hein !! :D Okay j’ai un peu la tête sous l’eau en ce moment, mais j’vous promets que ça vas s’arranger.

Une fois cette #$&^@~! de thèse terminée, je vous promets du bonheur en Tupperware!

En attendant et pour m’excuser, voila un petit pack de programme gratuits et portables
triés sur le volet, et “Commentés” histoire d’être compréhensible.

Pour le petit rappel un programme portable ne nécessite pas d’installation, et peut s’installer et s’exécuter directement depuis une clé USB ou autre périphérique.

Ces programmes sont gratuits et légaux, et peuvent vous tirer de plus d’une situation embarrassante pour un geek comme la fois ou vous êtes allé dépanner votre grand mère et que vous avez été obligé d’utiliser honteusement Internet Explorer pour aller télécharger le plus vite possible un Firefox ou un Chrome !! :D

Plus de problèmes avec ce ptit pack puisqu’il contient une version de Firefox exécutable de votre clé que vous pourrez emmener partout avec vous :) , le pack contient également les programmes suivants :

Bref tous les ptits utilitaire que ça fait chier d’installer parce que ne les utilise pas assez souvent mais qui taraudent gravement votre conscience de geeks quand vous ne les avez pas sous la main à l’instant propice :

Vous pouvez télécharger ce pack en cliquant ICI, le dossier fait en tout 597 Mo qu’il vous faudra prévoir sur votre clé (pour 27 programmes ce n’est pas cher payé), du coup j’ai compressé ça en .7z (que vous pouvez décompresser par exemple avec l’utilitaire gratuit 7zip) histoire d’épargner ma bande passante :) .

Notez que ces programmes sont exécutables sous Windows exclusivement, cependant si vous êtes Linuxiens vous pouvez utiliser Wine sur la majorité d’entre eux :) .

Ces applications sont issues des excellents sites Framablog et PortablesApps que je vous conseille vivement de parcourir si vous avez votre soirée de libre.

Bien à vous mes ptits poulets.

Idle