16 avril 2011

Create a remote branch in Git and track it

Create a remote branch:

git push origin origin:refs/heads/new_feature_name

Make sure everything is up to date:

git fetch origin

Start tracking the branch:

git checkout --track -b new_feature_name origin/new_feature_name

07 février 2011

Article de JavaWorld sur JRuby

Un article intéressant de 2007 sur JRuby:

http://www.javaworld.com/javaworld/jw-02-2007/jw-02-jruby.html

Les points principaux:

To a Java developer, Rails seems like the natural culmination of trends in the evolution of Java Web frameworks: less unnecessary code, more abstraction and dynamism, and fuller out-of-the-box functionality

If you have the flexibility to choose a new approach for your next project, consider Rails. Even easier to use than lightweight Java frameworks, Ruby on Rails seems like a natural next step in a Web developer's journey towards simplicity and expressiveness

JRuby a énormément progressé depuis 2007: ses performances sont largement supérieures à Ruby MRI 1.8.7, par exemple.

Mais il est intéressant de noter que JavaWorld parlait déjà du potentiel de JRuby en 2007!

Présentation de JRuby

La semaine dernière, j'ai présenté JRuby dans un brainstorm. Voilà les diapositives de la présentation:

http://www.slideshare.net/CyrilleBonnet/jruby-lalliance-de-ruby-avec-java

04 février 2011

Installer JRuby et Rails

Dans ce post, je vais décrire comment installer JRuby. Ensuite je vous montrerai comment faire tourner une application Rails 3 de base avec JRuby.

Tout d'abord, vous allez devoir installer JRuby. Vous pouvez installer directement les exécutables, que vous téléchargez sur le site de JRuby.

Toutefois, si, comme moi, vous utilisez plusieurs versions de Ruby, je vous conseille fortement d'utiliser Ruby Version Manager (RVM).

Une fois que RVM est installé, une seule ligne de commande suffit pour installer JRuby:
rvm install jruby

Ensuite, pour commencer à utiliser JRuby:
rvm use jruby

Quand vous aurez fini, pour revenir à votre version de Ruby par défaut, il suffit de faire:
rvm reset

Vous pouvez vérifier la version de JRuby que vous allez utiliser:
jruby -v

A présent, installons Ruby on Rails:
jruby -S gem install rails

Pour créer une nouvelle application Rails 3:
jruby -S rails new demo_jrails -m http://jruby.org/rails3.rb

Rails 3 inclut toutes les dépendances vers les libraires externes (gems en Ruby) dans un seul fichier Gemfile. Pour installer ces dépendances sur votre machine locale, il suffit de faire:
jruby -S bundle install

Quant à votre fichier de configuration de base de données, il ne dévoilera pas que vous utilisez JDBC et aura l'air tout à fait ordinaire (notez que j'utilise Postgresql):
development:
  adapter: postgresql
  encoding: unicode
  database: demo_jrails_development
  pool: 5
  username: USER
  password: PWD

Si vous avez des problèmes avec la connection à la base de données, commencez par regarder le README d'ActiveRecord JDBC Adapter sur GitHub.

Enfin, si vous voulez utiliser des JARs dans votre JRuby, il convient de créer une variable d'environnement CLASSPATH. J'ai fait pointer la mienne vers le répertoire lib de JRuby:
export CLASSPATH=/~/.rvm/rubies/jruby-1.5.1/lib

Amusez-vous bien avec JRuby et Rails!

Dans un prochain post, nous verrons comment créer un fichier de déploiement Java.

28 janvier 2011

JRuby: l'alliance de Ruby avec Java

A Toulouse, beaucoup d'entreprises ont standardisé leurs investissements informatiques autour de Java. De ce fait, tous leurs développements se font dans ce langage.

Mais ces choix sont-ils vraiment nécessaires? Je vous propose de faire un tour du côté de Ruby, un langage de programmation extraordinairement expressif, qui sait aussi travailler avec Java.

Ruby: flexibilité et productivité

Beaucoup d'outils innovants sortis ces dernières années ont été écrits en Ruby:
  • Rails: framework pour le développement d'applications Web,
  • Cucumber: pour l'écriture et l'exécution de tests d'acceptance,
  • RSpec: tests de comportement
  • et beaucoup d'autres...

Au-delà des outils, de nombreuses applications Web ont été développées avec Ruby (et Rails, pour la plupart):

De même, dans le monde anglophone, de très nombreuses start-ups choisissent Ruby, afin de se développer rapidement.

Le rythme soutenu de toutes ces innovations n'est pas dû au hasard: Ruby est un langage dynamique et flexible, qui s'adapte rapidement à de nouvelles contraintes. Ou comme le dit très justement Jamis Buck, Ruby est de la pâte à modeler.

Java: maturité et standardisation

Par contraste, pour Jamis, Java est un jeu de Lego: des blocs fixes, faciles à assembler et à réutiliser. Une image qui, là encore, colle assez bien à la réalité.

Java est un langage très répandu, très "industrialisé". Les différentes offres de Java Virtual Machines, par exemple, sont robustes et matures. De nombreux outils de gestion permettent d'administrer et d'exploiter efficacement des applications tournant dans une JVM.

De manière similaire, Java a bénéficié du développement de très nombreuses librairies: open-source, commerciales et même en interne pour les grandes entreprises comme Airbus. Ces librairies sont souvent robustes et adaptées aux processus industriels en place.

Malheureusement, jusqu'ici, bénéficier de la robustesse et de la maturité de Java revenait à se passer de la flexibilité et de la puissance d'expression des langages dynamiquement typés tels que Ruby.

Java + Ruby = JRuby

L'objectif de JRuby est justement de réconcilier ces deux mondes. JRuby est une implémentation du langage Ruby, écrite 100% en Java.

Avec JRuby, vous programmez en Ruby et vous pouvez utiliser n'importe quelle librairie Java: les objets Java sont créés et manipulés directement en Ruby!

De surcroît, JRuby est très rapide: voyez, par exemple, les résultats du Ruby Great Shootout 2010.

Conclusion

JRuby combine le meilleur de deux mondes apparemment opposés: la solidité et la maturité de Java, avec la flexibilité et la puissance d'expression de Ruby.

Si votre entreprise utilise Java et cherche à développer rapidement des applications Web, JRuby est une option à ne pas négliger.

N'hésitez pas à me contacter si vous avez des questions.

Je vais revenir à JRuby dans un prochain blog: au plaisir de vous revoir...

17 janvier 2011

Get a random element from an array

I used that expression before:
random_choice = array[rand(array.size)]

Then I read this quicktip and decided to try:
random_choice = array.choice

Unfortunately, on my production server, I still have Ruby 1.8.6. So, after a long search, I finally settled on:
random_choice = array.rand

Which is supported in both Ruby 1.8.6. and 1.8.7

11 octobre 2010

Bind socket to interface: No such device

My VM with Ubuntu on it has trouble sometimes dealing with the changes between bridged eth0 and eth1.

The symptom:
SIOCSIFFADDR: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring eth0

First check all your network interfaces:
ifconfig -a
You should see that the eth1 interface is actually present (but not connected).

Note the MAC address of eth1. Edit /etc/udev/rules.d/70-persistent-net.rules and change eth1 -> eth0 (the MAC address should be the correct one). You can delete the old line for eth0.

Restart the VM and the network should be OK.