SandRock.getBlog();

Aller au contenu | Aller au menu | Aller à la recherche

samedi 14 février 2009

Orange, fournisseur de non-accès à Internet

Mais que nous fait donc notre FAI Orange adoré ? Bah oui, après l'après midi et la nuit de vendredi sans Internet (je vous explique pas l'épreuve de survie), voilà qu'une nouvelle curiosité apparait sur le réseau : l'accès à google et ses services sont bloqués...

Des bugs vraiment bizarres chez Orange...

Oranges dilikes Google

dimanche 8 février 2009

Mettez votre flux RSS à jour !.

J'aurai du faire cela avant l'ouverture du blog... Le flux RSS pour mes billets passe désormais par Feedburner. Merci de mettre à jour vos agrégateurs/readers et co.

Nouveau feed : http://feeds2.feedburner.com/Sandro...

Bonne journée à tous :)

Nouvel Helper qui change la vie

Vous connaissez tous Zend_View_Helper_Url qui permet de créer une url rapidement dans une view. La syntaxe est la suivante : $this->url(array('controller' => 'index', 'action' => 'about', 'arg0' => 'value'));. Il faut avouer que c'est assez sympatique. Mais il est laborieux d'écrire systématiquement la balise <a />. Voici donc un helper très basique reprennant les arguments de url(). La seule modification est l'ajout du premier argument. Celui-ci contiendra la texte à mettre dans la balise <a />

  1. <?php
  2.  
  3. /**
  4.  * An helper to create xhtml links quickly
  5.  *
  6.  * This program is free software: you can redistribute it and/or modify
  7.  * it under the terms of the GNU Lesser General Public License as published by
  8.  * the Free Software Foundation, either version 3 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14.  * GNU Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public License
  17.  * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  * @author SandRock <antoine.sottiau@gmail.com>
  20.  * @see Zend_View_Helper_Url
  21.  */
  22. class App_View_Helper_Link extends Zend_View_Helper_Abstract {
  23.  
  24. /**
  25. *
  26. * @param string $text the contents of the link
  27. * @param array $urlOptions Options passed to the assemble method of the Route object.
  28. * @param mixed $name The name of a Route to use. If null it will use the current Route
  29. * @param bool $reset Whether or not to reset the route defaults with those provided
  30. * @param boolean $encode
  31. * @return string a xhtml link like '<a href="url">text</a>"
  32. */
  33. public function link($text, array $urlOptions = array(), $name = null, $reset = false, $encode = true) {
  34. $router = Zend_Controller_Front::getInstance()->getRouter();
  35. $url = $router->assemble($urlOptions, $name, $reset, $encode);
  36. return '<a href="'.$url.'">'.$text.'</a>';
  37. }
  38.  
  39. }

Exemple :

  1. <?php
  2. echo $this->link('A propos de...', array('controller' => 'index', 'action' => 'about', 'arg0' => 'value'));?>
  3. <a href="/index/about/arg0/value">A propos de...</a>

samedi 17 janvier 2009

Comparaison IDE PHP

Bienvenue sur ce nouvel épisode de la Grotte de SandRock. Aujourd'hui, nous allons tenter de comparer différents IDE (Environnement de Développement Intégré) pour coder en PHP. Pour chacun des éditeurs, on tentera de lister les fonctionnalités indispensables (auto-complétion objet, colorisation...), et les accessoires sympa comme l'intégration d'outils de versionning. Les logiciels seront présentés dans l'ordre dans lequel je les ai découvert.

Pour raison de sécurité, les screenshots seront légèrement censurés pour protéger certains projets top secrets :-)

Zend Studio 5 (payant, non maintenu)

Le premier éditeur sympa que j'ai testé était Zend Studio 5, qui ne semble plus être disponible sur le site de l'éditeur.

Une auto complétion puissante (malgrès quelques bugs), des fonctionnaltiés bizzares liées aux produits Zend. C'était sympa mais c'est mort, merci, à bientôt.

Zend Studio for Eclipse 6 (payant)

Voilà un logiciel plus sérieux, développé par Zend. Il existe en 2 version (99€ ou 400€), j'utilisais encore récemment la pro en démo. On y trouve la surpuissance de l'IDE bien connu Eclipse, couplé à un moteur PHP très avancé. La précomplétion est très efficace, autant pour le php, les fonctions, les objets mais aussi pour l'xml et l'xhtml.

Zend Studio for Eclipse 6 - précomplétion

Cet IDE comprend un outil très sympa qui permet d'ouvrir n'importe quel fichier en cherchant une class ou une function par son nom. C'est vraiment génial pour ne pas se tapper des recherches dans le filesystem local (vous remarquerez que j'utilise du vocabulaire technique anglais dans mes articles en français, mais c'est normal, je le trouve plus précis).

Zend Studio for Eclipse 6 - class search

Comme c'est basé sur eclipse, il y a des perspectives disponibles ; entendre par là des sorte d'outils. La perspective MVC Outline semble sympa dans le cas d'un développement ZF mais je n'ai jamais réussit à l'utiliser. De même que la perspective SVN Repository Exploring qui ne propose pas d'intégration concrète à un projet.

Zend Studio for Eclipse 6 - svn explorer

Un très bon IDE donc mais qui ne semble pas intégrer correctement le versionning. Je pense cependant que des plugin peuvent être trouvés sur internet.

Zend Studio Standard
Zend Studio Pro

Netbeans 6.5 (libre)

Netbeans 6.5 - Types de projets

J'ai remarqué cet IDE pour la première fois lors de mes cours Java à SUPINFO. Voyant qu'ils avaient intégré des projets de type PHP, RoR (Ruby on Rails), et C++, cela a attiré ma curiosité mais pas assez. C'est mon ami Ajite qui m'a dit de tester car ça en vallait le coup. J'ai donc tenté et découvert cet éditeur suprême. Tentons un petit coup de précomplétion :

Netbeans 6.5 - Source

On trouve une précomplétion bien au dessus de celle de ZSE avec plus d'infos/docs. La touche tab permet même de passer d'un argument à un autre d'une fonction.

Du coté versionning, j'ai été très impressionné par toutes les fonctionnalités. Pour commencer, Netbeans supporte 4 moteurs de versionning, à savoir : Local, CVS, Subversion et Mercurial. Mais le plus intéressant reste l'intégration du versionning qui est très aboutie ; en effet, on la retrouve partout. Dans l'explorateur de fichiers, une colorisation est appliquée aux noms de fichiers (vert = nouveau fichier, bleu = fichier modifié, rouge = conflit). Mais voici le meilleur : dans l'éditeur de code, des petits rectangles colorés affichent les modifications apportées localement aux fichiers. Un outil de diff est même intégré.

Netbeans 6.5 - Live Diff Netbeans 6.5 - Diff Netbeans 6.5 - Menu Versionning

Un outil de recherche est disponible comme dans ZSE, peut être bien qu'il est plus complet, je viens seulement de le trouver.

Netbeans 6.5 - Recherche

Si vous cherchez plus d'outils, un système de plugin existe tout comme dans eclipse (mais c'est beaucoup plus user-friendly).

Netbeans 6.5 - Plugins

Bref, un IDE très prometteur, et libre !

Site officiel de Netbeans

MS Visual Studio / PHP (cher)

Non, j'installerai pas ça sur mon pc. Peut être d'ici quelques mois je lui reserverai un article.

Aurais-je oublié un IDE ? Vous utilisez lequel ?

samedi 25 octobre 2008

Utilisation de SSH avec clés RSA

De nos jours, je vois beaucoup de jeunes geeks (et des vieux aussi) se connecter en ssh à leur server unix avec un mot de passe faible... Avec les polonais, les marocains, les roumains qui prolifèrent sur le net à la recherche de serveurs vulnérables, il faut se protéger d'une façon plus importante. Voilà de quoi mettre en place un login via une paire de clés RSA. Et en bonus : comment configurer sshd pour refuser le login par mot de passe !

Créez vos clés RSA

Pour commencer, il faut générer une paire de clés RSA. En ligne de commande, c'est très simple :

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/SandRock/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): xxxxxxxxxx
Enter same passphrase again: xxxxxxxxxx
Your identification has been saved in /home/SandRock/.ssh/id_rsa.
Your public key has been saved in /home/SandRock/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:x:xx:x:x:x:x:x:x:x SandRock@Titan

$ ls ~/.ssh
id_rsa
id_rsa.pub

Le fichier nommé id_rsa est la clé privée et le id_rsa.pub est la clé publique. Il est indispensable de garder la clé privée en sécurité (sur une partition chiffrée par exemple).

Sous Windows, un utilitaire est disponible avec PuTTY, nommé PuTTYGen. Il permet de générer les même clés (mais le format des fichiers est différent du format obtenu avec ssh_keygen). Ne pas oublier de bien choisir une clé de type RSA avec 2048 bits.

PuTTYGen

Utilisation

Maintenant que votre paire de clés est prête, il faut déclarer sur les machines distantes quelles clés sont autorisées à se connecter. Pour cela, un fichier nommé ~/.ssh/authorized_keys contiendra les clés publiques (1 par ligne) au format du fichier id_rsa.pub (ça commence par 'ssh-rsa AAAA...'). Quelques commandes pour faire ça facilement :

$ echo "ssh-rsa AAAxxxxxxx" >> ~username/.ssh/authorized_keys // ajoute une clé au fichier par copié/collé dans une console
$ cat ~/.ssh/id_rsa.pub | ssh you@example.com "cat - >> ~/.ssh/authorized_keys"  // ajoute une clé via ssh (mot de passe distant requis)

Désormais, la simple commande ssh me@exemple.com vous authentifiera automatiquement (la passphrase de votre clé privée sera demandée) sans mot de passe. Sous Windows avec PuTTY, il faut spécifier dans les options l'emplacement de votre clé privée dans la page Connection/SSH/Auth (il faut un fichier .pkk généré par PuTTYGen).

Interdire le login par mot de passe sur vos serveurs

Attention, procéder à une telle configuration empèchera le login par mot de passe ! Si vous perdez vos clés privées, il faudra intervenir de façon physique sur le serveur pour configurer une nouvelle clé ! Prennez donc la précaution de posséder une double paire de clés stockées dans des emplacements différents. Testez aussi le bon fonctionnement du login par clé avant de faire cette manipulation.

Ouvrez simplement le fichier /etc/ssh/sshd_config avec votre éditeur favori. Cherchez la ligne commençant par PasswordAuthentication (cette ligne peut ne pas exister ou peut être commentée).

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

Voilà qui est fait. Tout brute-force de mot de passe sera impossible.

$ ssh root@exemple.com
Permission denied (publickey).
Disconnected: No supported authentication methods available.

- page 3 de 5 -