Archive for the ‘ Software ’ Category

Git bisect, le bugtracking sans prise de tête

Vous savez surement à quel point chercher un bug dans un gros projet peut être rébarbatif, surtout quand le bug est apparu il y a longtemps, et qu’un nombre considérable de commits se sont passés depuis.

Git offre la possibilité d’optimiser cette recherche via la commande git bisect.

Cette commande permet à git de faire une recherche dichotomique.

C’est parti, simplement « git bisect start« .

Vous devez ensuite indiquer à git un point ou le bug n’était pas présent, puis un point ou le bug était présent.

git co master && git bisect good

git co HEAD~40 && git bisect bad

(vous pouvez aussi appeler git bisect good_comit bad_commit)

Un peu comme un plus ou moins, git va alors changer le commit actuel de votre dépôt local (il va prendre le commit au milieu des deux que vous lui avez indiqué), à vous de tester et de lui indiquer si le commit est bon « git bisect good », ou mauvais « git bisect bad »

 

Au bout de quelques étapes, git va débusquer le commit fautif, et il sera aisé de trouver le bug.

Il est possible d’automatiser cette étape avec git bisect run, en lui passant en paramètre un script, qui renverra 0 ou 1 si le commit est bon ou mauvais.

 

Happy gitting!

Git: annuler un commit pushé

Pour ceux qui ne connaissent pas git, il s’agit d’un logiciel de gestion de versions ayant la particularité d’être décentralisé, je vous invite à regarder la page wikipedia, c’est un atout formidable pour les développeurs. (Voir aussi Subversion, Mercurial pour ne citer qu’eux).

Pour les autres, voici une petite astuce qui m’a sauvé une ou deux fois.

Il peut arriver de pusher par erreur des commits, ou de se rendre compte après coup d’un bug.

Plusieurs solutions existent, notamment :

  • Publier d’autres commits pour annuler les changements.
Grâce à la commande « revert » de git, il est possible de publier des commits à effet inverse.
git revert commit1 commit2 … commitn
Cette solution est élégante mais si il y a beaucoup de commits à annuler, le log devient illisible et il n’est pas facile de s’y retrouver.
  • Annuler purement et simplement les commits en forcant un push
La commande push de git permet de faire beaucoup de choses, notamment de forcer le dépot distant à se synchroniser avec le commit qu’on lui donne, soyez prudent car les commits sont ensuite perdus sur le dépôt distant.
git push -f commit_ou_tout_va_bien
Le dernier commit sur le dépôt sera alors « commit_ou_tout_va_bien », les commits ultérieurs seront supprimés.
Happy gitting :)

Sublime Text 2, un éditeur de texte qui porte bien son nom


Hey les geeks!

Un développeur n’est rien sans son éditeur de texte.

Certains préfèrent les éditeurs « old school »: minimalistes mais plein de fonctionnalité (je pense à Emacs, vim, etc), d’autres préfèrent les bonnes usines à gaz qui font le café (netbeans, eclipse).

J’écris rapidement cet article pour vous partager un éditeur de texte qui se situe un peu entre les deux grandes écoles, Sublime Text 2.

Cet éditeur à la croisée des chemins à l’avantage non négligeable d’être multi plateformes, ce qui compense un peu le fait qu’il soit payant (Actuellement en béta publique et gratuit, mais plus pour longtemps).

Bien que fenêtré et comportant pas mal de fonctionnalités, Sublime Text tourne parfaitement bien sans aucun lag.

Ses fonctionnalités principales sont les suivantes:

  • De très jolis thèmes
  • Insertion de snippets
  • Très configurable (via fichier)
  • Des raccourcis intéressants et pratiques (essayer Control + R et Control + P)
  • Un mode « distraction free »

Ce ne sont que quelques unes des fonctionnalités du logiciel, j’espère vous avoir mis l’eau à la bouche, pour le reste, à vous d’essayer et de me dire ce que vous en pensez!

Marre des dépôts ubuntu surchargés?

Comme vous le savez sans doute, la dernière mouture d’ubuntu est sortie très récemment, comme vous l’avez sans doute remarqué, c’est le bordel bazar sur les dépôts ubuntu qui sont surchargés par cette mise à jour, pas facile de mettre à jour son système ou même installer un paquet en moins de 6 heures.

Néanmoins, voici une petite astuce qui vous permettra d’utiliser les dépôts de nos amis belges, qui sont bien moins surchargés que les notres.

Pour utiliser les dépôts belges (à exécuter en root):

cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i"" "s/fr\./be\./g" /etc/apt/sources.list

Et pour revenir aux dépôt francais quand ils seront moins chargés :

cp /etc/apt/sources.list.bak /etc/apt/sources.list

Et voilà, vous devriez avoir un débit décent maintenant :)

10 raisons d’essayer (et pourquoi pas adopter?) le framework web Ruby on Rails

Durant les 6 derniers mois, j’ai été amené à utiliser le framework web Ruby on Rails dans le cadre de mon stage.

Malgré quelques appréhensions, l’expérience s’est très bien passée, c’est pourquoi je souhaite valoriser ce framework par cet article.

Voici donc mes 10 bonnes raisons de tester (et pourquoi pas adopter) Ruby On Rails :

  • 1 >RoR est une technologie récente, en effet, sa première version stable date de 2005 (Ce qui est récent pour un langage de programmation / un framework). Ainsi, Rails tente de proposer des features en accord avec les récentes évolutions du web, de plus, rails évolue rapidement.
  • 2 > Bien que relativement petite, la communauté des utilisateurs de ruby on rails est en pleine expansion, et assez active.
  • 3 > Twitter (maintenant en scala), Redmine, ou encore Diaspora* sont écrits en rails, pourquoi pas votre site?

 

 

 

  • 4 > Le langage ruby, couplé au framework rails, est très intuitif. Petit exemple :

 

 

@lastusers = User.find :all, :conditions => ['created_at > ?', 2.weeks.ago]
@lastusers.each do |user|
  user.foo bar
end
  • 5 > RoR permet de développer très rapidement des applications web.
  • 6 > Beaucoup beaucoup de plugins sont disponibles pour rails, il est possible de faire à peu près tout.

 

  • 7 > La console rails permet de tester très facilement et  rapidement des lignes de code rails (Surtout des requetes SQL via les classes rails faites pour cela) . Exemple :

  • 8 > La documentation est vraiment très bien faite, voir les Rails Guide et la Rdoc
  • 9 > Ruby est un langage facile d’apprentissage, surtout si on a des notions en programmation objet (tout est objet en ruby, vraiment tout)
  • 10 > La gestion des requêtes SQL est très optimisée et permet de consommer peu de ressources sql notamment avec des systèmes de mise en cache natifs, le tout très intuitivement.

Bien sur, comme toutes les technos, rails possède ses défauts, et ses détracteurs, mais je pense sincèrement qu’il faudra compter sur rails dans les prochaines années dans le domaine du web, mais pas que.