Ce blog — désormais archivé — est en lecture seule. Rendez-vous sur mon nouveau site personnel.

Prendre un Café

L'espace d'expression de Nicolas Perriault

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

Keyword - osx

Fil des billets

mercredi 16 décembre 2009

Symfony Development using Textmate

When I do consulting, a lot of people are really surprised that I use Texmate, a popular text editor for OS X, to develop on Symfony projects. Indeed, Textmate is a bit rough around the edge compared to bloated full featured IDE like Eclipse PDT or Netbeans, which are both Java based by the way.

So why using Textmate? No intelligent autocompletion, very basic project management, poor VCS native support, limited index search capabilities… First and while it’s mainly a matter of taste, I mainly use Texmate because it’s fast. Compared to PDT with which you often have to wait a bunch of seconds for the UI to respond on some action you make, mate will react quite instantaneously, and that is making big difference to me. Because when I’m concentrated, focused on some complex problem to solve, I demand my text editor to not make me wait [1].

Oppositely, not having full code introspection and autocompletion makes mate making me think about the code I write, instead of just consuming some API passively. I’ve been using phpeclipse and PDT for some years with Symfony, but I think I really began to understand the framework architecture when I switched to mate as my primary editor. Because every time you need to do something with the Symfony API, you have to open the file and read the code: then you learn a lot. And by the time, you end by knowing the core very well, and it’s incredibly efficient. One more time, this is just matter of taste.

Textmate quick tips

So whereas mate can be somewhat limited at first glance, a second look shows it provides some really effective commands to enhance your productivity. Let’s examine some of them.

Searching for a file within the project codebase

Just by pressing ⌘ + t, a snappy filename search window will pop up and allow you to search a file interactively by its name pattern. If you’re using the incredible Quicksilver app for osx, you got the picture.

interactive-filename-search.png

As Symfony names php files against the class name they contain, finding a class file is just easy as typing the class name in the search field!

Browsing the available functions, classes and methods within a php file

When a php file is opened, the ⌘ + shift + t command will show up the available sections of the document, with a search box you can use to filter their names, still interactively.

interactive-method-name-search.png

Note that this will also work for other file types (like CSS for instance).

Obtening help on native php functions

Move the carret onto some php native function and press ctrl + h and you’ll get the php.net related page in a pop up.

Want the function signature definition in a tooltip, like in PDT or Netbeans? Hit ⌥ + F1 and you’re done.

signature-tooltip.png

Using the mate command line utility

Textmate ships with a native command line interface executable called mate you can use from your term:

$ cd /path/to/project
$ mate .

You can also pipe some command to mate to open the output in it:

$ svn diff|mate

diff-mate.png

Taking part of Mate’s url-scheme capabilities with Symfony

I already blogged about this awesome feature available since Symfony 1.3, one more I won’t ever be able to live without.

Improve your productivity using bundles

The Ack in project bundle

One of the most annoying lack of mate is its internal search engine. It’s really damn slow. The best way to get something decent is to install the Ack in project bundle. You’ll then be able to access a fast and convenient fulltext search engine by pressing the ⌘ + shift + a command.

ack-in-project.png

The ProjectPlus bundle

If you’re looking after a better project browser and some VCS support in mate, you’ll love the ProjectPlus bundle. It will replace the default project drawer by a new one with finder label colors support, file sorting options and VCS icons integration. Give it a try, you won’t be able to live without it.

project-plus-drawer.png

The Symfony bundle

How could I write a blog post on Textmate and Symfony without mentioning the Symfony bundle? Denderello and contributors did a really good job taking over the original tool, which provides very convenient and effective shortcuts to write Symfony snippets of code quickly.

The GetBundle bundle

Last, if you didn’t find anything new or useful reading this blog entry, you might then be interested by installing the GetBundle bundle which will allow you to browse all available bundles and install any of them in one click!

GetBundle.png

Conclusion

So these are some of the reasons why I’m using Textmate when developing with Symfony (and other languages too). What are yours?

Notes

[1] You know the don’t make me think mantra? Well, now you got another one ;)

vendredi 17 juillet 2009

Installing php 5.3, apache2 and MySQL 5 on OS X using Macports

I wanted to test latest php 5.3 on my OSX box. So here’s a quick reminder on how to proceed to a full setup of apache2, mysql5 and php 5.3 using Macports.

First, get a fresh copy of the Macports installer for OSX. Install macports, then in a shell prompt, type:

$ sudo port install mysql5 +server
$ sudo port install php5 +apache2 +debug +pear +sqlite +mysql5 

You have now the time to have lunch, dinner, sex or to watch an episode of Derrick[1].

To enable the php module for apache:

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

Then, add this line in the /opt/local/apache2/conf/httpd.conf file:

Include conf/extras-conf/*.conf

Copy one of the standard php.ini files proposed by the default installation:

$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini

To start apache automatically at system startup:

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

Or manually:

$ sudo /opt/local/apache2/bin/apachectl start

To initialize, configure and start MySQL automatically:

$ sudo -u mysql mysql_install_db5
$ sudo /opt/local/bin/mysql_secure_installation5
$ sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

Now launch your browser at http://localhost/: you’re done. Have some rest.

Notes

[1] Don’t try to do all that stuff at the same time, result cannot be guaranteed

jeudi 30 octobre 2008

Utiliser Memcached avec PHP sous Mac OS X

Ayant récemment eu besoin de travailler sur une application utilisant memcached, j’ai du l’installer sur ma machine perso tournant sous Mac OS X. Pour mémoire, memcached est un système de stockage distribué de paires clé/valeur en mémoire vive, très rapide et performant. Cela peut s’avérer un outil de choix pour faire monter en charge une architecture, par exemple en ajoutant des frontaux web et en utilisant memcached comme espace partagé de stockage des données de session utilisateur. On peut également imaginer d’y stocker les résultats de traitements complexes, des templates compilés, des jeux de résultats SQL, etc.

J’ai trouvé un excellent tutoriel d’installation de memcache pour OS X pour cela, que je vous invite à suivre pour mettre en œuvre les exemples ci-après. Une fois l’installation effectuée, vous pouvez lancer le démon memcached avec cette ligne de commande :

$ sudo memcached -d -u nobody -m 128 127.0.0.1 -p 11211

Notez que cette dernière ligne de commande lance le démon memcached sous l’utlisateur nobody, en local sur le port 11211 et alloue 128 Mo de mémoire vive au service de stockage.

Exemple d’utilisation en PHP

Le tutoriel couvre également l’installation de l’extension PECL memcache, fournissant une API particulièrement simple et efficace à PHP pour utiliser le service.

Exemple d’utilisation basique :

 php
<?php
$m = new Memcache;
$m->connect('localhost', 11211) or die ("Could not connect");
$m->set('toto', 'tata');
echo $m->get('toto'); // tata

Pour utiliser memcached comme système de stockage des sessions, PHP dispose d’un gestionnaire de sessions memcache qu’il suffit d’activer par configuration dans votre fichier php.ini. Il suffit de remplacer la valeur :

session.save_handler = files

Par ces deux lignes, en adaptant au besoin les valeurs de connexion au démon :

session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

Attention cependant, en cas de coupure du service memcached, toutes les données de sessions actives seront perdues.

lundi 29 octobre 2007

Une version récente de Subversion sous Mac OS X

Utilisateurs d'Eclipse et de Subclipse, vous avez peut-être déjà pesté devant l'incompatibilité de version qui existe avec celle disponible en ligne de commande sous Mac OS X (via MacPorts, Fink, etc.)

Généralement, vous vous prenez un message d'erreur du style :

The version of this client is too old.

Pour régler le problème, vous pouvez installer le package Subversion de Martin Ott en version 1.4.4.

samedi 14 juillet 2007

Importer son carnet d'adresses GMail dans Mac OS X

Le carnet d'adresses sous Mac OS X peut être rempli avec ses contacts GMail via une opération d'export/import dont voici les étapes :

  • Depuis votre compte GMail, cliquez sur Contacts puis Exporter
  • Sélectionnez le format texte Outlook CSV, enregistrez le fichier sur votre disque dur

Le carnet d'adresse du Mac travaille en encoding MacRoman, tandis que l'export des contacts GMail est effectué en ISO-8859-1 : il nous faut convertir le fichier. Pour cela, munissez-vous d'un éditeur de texte capable de ce type d'opérations (TextEdit ou TextMate sont de bons candidats), et réenregistrez le fichier au format d'encodage MacRoman.

Depuis l'application Carnet d'Adresses du Mac, sélectionnez Fichier, Importer, Fichier texte et pointez le fichier que vous venez d'encoder. L'interface d'assignation des champs est assez parlante, il s'agit de gérer la correspondance entre les colonnes du fichier d'export GMail avec les champs types du carnet d'adresses Mac :

Import du carnet d'adresses

Vous pouvez à tout moment contrôler la pertinence de vos associations de champs sur les entrées du fichier au moyen des flèches précédentes et suivantes. Une fois que vous êtes satisfait du résultat, vous pouvez lancer l'importation.

mercredi 30 mai 2007

Monter un lecteur réseau SSH/SFTP sous Mac OS X

Voici la procédure pour monter un lecteur réseau en utilisant MacFuse et MacFusion sous OS X Tiger :

  1. Récupérez MacFuse et sshfs
  2. Récupérez MacFusion
  3. Installez successivement MacFuse, sshfs puis MacFusion, lancez ce dernier
  4. Configurez l'accès à votre machine via SSH :

MacFusion

Un lecteur réseau est alors placé sur le bureau et accessible depuis le Finder. Notez que vous pouvez utiliser une authentification par clé SSH.

Lecteur monté

On peut aussi faire la même chose en FTP, tout aussi facilement.

samedi 19 mai 2007

Petit pense-bête des raccourcis Mac OS X

Je travaille depuis peu et à temps partiel sous Mac OS X et je suis relativement destabilisé par la profusion de raccourcis clavier propres au système d'exploitation. Voici donc un petit pense-bête des raccourcis que j'ai mis un peu de temps à découvrir et à assimiler [1] :

Gestion des fenêtres

  • Naviguer entre les applications : <pomme> + <Tab>
  • Masquer les fenêtres de l'application active : <pomme> + H
  • Masquer toutes les autres applications : <pomme> + <alt> + H
  • Naviguer parmis les fenêtres de l'application active : <pomme> + < ou <pomme> + >
  • Minimiser une fenêtre dans le dock : <pomme> + M

Émulation de touches et caractères virtuels

  • Émuler la touche <delete> : <fn> + <backspace>
  • Émuler les touches <Page Up> et <Page Down> : <fn> + <Haut> et <fn> + <Bas>
  • Émuler les touches <Home> et <End> : <pomme> + <Gauche> et <pomme> + <Droite>

Raccourcis pratiques du Finder

  • Vider la corbeille depuis le finder : <pomme> + <shift> + <backspace>
  • Ouvrir le répertoire home : <pomme> + <shift> + H
  • Ouvrir le répertoire des applications : <pomme> + <shift> + A
  • Ouvrir un emplacement sur le système de fichier : <pomme> + <shift> + G

Caractères spéciaux

  • Pipe (|) : <alt> + <shift> + L
  • Accolades ({}) : <alt> + ( et <alt> + )
  • Crochets ([]) : <alt> + <shift> + ( et <alt> + <shift> + )
  • Backslash (\) : <shift> + <alt> + :
  • Euro (€) : <alt> + $
  • Tilde (~) : <alt> + N
  • E dans l'O (œ) : <alt> + O
  • C cédille majuscule (Ç) : <alt> + ç
  • U accent grave majuscule (Ù) : <alt> + u

Captures d'écran

  • Pour une capture de tout l'écran : <pomme> + <shift> + " (guillemet double)
  • Pour une capture zonnée de l'écran : <pomme> + <shift> + ' (guillemet simple)
  • Pour capturer une fenêtre : <pomme> + <shift> + ' (guillemet simple) + <Espace> (sélectionner ensuite la fenêtre à capturer)

Navigation au sein de formulaires

Dans Safari comme dans Firefox, il faut activer manuellement la navigation au sein des formulaires au moyen de la touche <Tab> :

  • Dans Safari, cochez Préférences > Avancées > La touche Tab permet de naviguer parmis les objets des pages web
  • Dans Firefox, cochez Préférences > Avancé > Toujours utiliser les touches de navigation pour se déplacer à l'intérieur d'une page

Pour activer la navigation au clavier pour l'UI du système d'exploitation, il faut se rendre dans Préférences Système > Clavier & Souris > Raccourcis clavier et selectionner l'option Dans les fenêtres et zones de dialogues, la touche Tabulation activera : tous les réglages.

D'autres ressources plus complètes sur le sujet

Notes

[1] Ces raccourcis sont valables pour le Macbook. Je ne sais pas s'ils fonctionnent sur les autres modèles Apple...

mardi 14 juin 2005

Intel OS X ?

[Via Gizmodo]

Un article troublant de Gizomodo montrant une photo d'un PC Dell faisant tourner... (Mac ?) OS X sur un Pentium 4 2.4 GHz...

Alors bien sûr on pense à la déclaration de Steve Jobs du passage à Intel pour les processeurs équipant les Macs. Mais, une semaine seulement après cette annonce, se peut-il qu'une version d'OS X pour plateforme x86 soit déjà en circulation, même si de leur côté les deux principaux interessés observent un silence savamment entretenu, laissant ainsi libre court à l'imagination galopante des observateurs ?

La question est : s'agit-il de montages ? Je vous laisse vous faire votre propre opinion en regardant ces quelques captures (macuser.de)... Pour ma part je penche pour l'hypothèse du fake habile, mais il faut bien avouer que c'est troublant.

Dans tous les cas, le soleil se lèvera toujours demain, surtout pour Apple qui commence à bien s'y connaître en coups marketing fumeux (comme celui que je suis en train d'entretenir, veuillez m'en excusez).

Edit: Un jour je relirai les billets avant de les poster ET j'en vérifirai les liens. Ooohhhh, oui, un jour, je le ferai.

- page 1 de 2