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!

Partagez :-)
Facebook Twitter Email

En pleine piscine.

Pour ceux qui ne sont pas familiers avec le système pédagogique d’Epitech, une piscine est une période intense de cours et d’exercices pour apprendre une nouvelle technologie, nous avons des vidéos et des cours le matin, puis des exercices à rendre pour le lendemain.

Durant ma scolarité j’ai déjà vécu deux piscines (C en première année, et C++ en deuxième), et j’en vis actuellement une troisième (CodeWorker).

Cette piscine est, je trouve, un peu plus light que les précédentes, c’est pourquoi je peux me permettre d’écrire ce petit article entre deux lignes de code.

 

 

Cette piscine a pour thème le parsing et pour support le langage de script codeworker.

Développé par Cedric Lemaire, ce langage de script plutôt souple permet de nombreuses choses, notamment de développer directement depuis une base de BNF.

Voici un exemple de code tiré du tutoriel réalisé par son créateur :

contenu_du_fichier ::=
#continue
#ignore(blanks) [nombre | identifiant | chaine]*
#empty
=> traceLine(« L’analyse a réussi! »);
;
chaine ::= ’ »‘ [~'"']* ’ »‘;

 

Le but de cette piscine d’une semaine est de nous donner les bases pour réaliser un projet baptisé KOOC pour « Kind Of Objective C ».

 

Ce projet consiste à intégrer à l’aide de CodeWorker une couche objet au C (classes, héritage virtuel, etc).

Nous utilisons cnorm, un outil en CodeWorker développé par notre professeur de programmation objet avancée, afin de parser le C et d’obtenir un AST à partir duquel travailler.

Cette piscine est plutôt différente des précédentes, de nombreuses personnes l’ont abandonné car le CodeWorker est un langage plutôt surprenant à première vue, mais il s’avère puissant (quand il ne segfault pas).

Elle n’en reste pas moins intéressante dans sa globalité et nous permettra, grâce au projet KOOC, d’en savoir plus sur le fonctionnement des langages orienté objet :)

Partagez :-)
Facebook Twitter Email

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 :)
Partagez :-)
Facebook Twitter Email

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!

Partagez :-)
Facebook Twitter Email

Mon retour sur la rom MIUI

J’ai voulu essayer la rom MIUI à l’occasion de la sortie de la toute dernière version.

Cette rom, à l’origine chinoise, fait beaucoup de bruit. Son principal atout est qu’elle redéfinit entièrement le thème Android, pour lui donner un look que certains qualifient d’IOS Like.

Je ne suis pas particulièrement fan du look IOS, mais je me suis laissé tenter.

 

L’interface

Le changement est brutal, étant un habitué de l’interface android 2.3 j’ai eu un peu de mal à m’habituer.

Le launcher de base ne me plaisait pas du tout, et ressemble trop à l’iPhone;  J’utilise Go Launcher qui pour moi est le meilleur launcher à ce jour.

Voici quelques screenshots après une configuration basique.

L’interface est claire et sobre, ça me rassure un peu car j’avais peur de tomber sur quelque chose de trop « bling bling ».

Les menus de configurations sont clairement pompés sur IOS, et je trouve cela dommage, mais le reste garde quand même une originalité certaine.

L’avantage de MIUI c’est sa gestion des thèmes interne à la ROM, on peut tout configurer directement depuis le téléphone : LockScreen, Polices, Icônes, Animation de boot, barre de notifications, etc.

Cela permet donc une grande personnalisation de l’interface, au final il est possible de pousser assez loin la customisation et d’avoir un android qui vous ressemble.

Si vous voulez plus de screenshots : c’est par ici que ca se passe.

Performances

La rom est plutôt réactive et fluide, même si j’ai remarqué quelques coups de lags (mon téléphone est vieux aussi (HTC Desire)).

Les jeux passent sans souci, et les applications MIUI pré-installées sont vraiment fluides, j’ai remplacé Go SMS par l’application MIUI qui lui ressemble beaucoup, mais qui est bien plus réactive, pareil pour winamp et MIUI Musique, surtout que cette dernière s’intègre à merveille dans le lockscreen.

Autonomie

Contrairement à ce que j’ai pu imaginer, l’autonomie n’est pas trop mal, j’ai tenu sans soucis une grosse journée. (Notifications en push, musique dans les transports, beaucoup de sms et de surf twitter / facebook / reader).

L’autonomie reste standard d’après ce que j’ai pu voir, ni plus ni moins qu’une rom classique.

Conclusion

En conclusion, si vous n’avez pas trop peur d’expérimenter une interface déroutante au premier abord, cette rom est un must-test.

Les applications MIUI intégrées sont de qualité, la rom est très stable, bref, très bonne rom sur le papier mais qui peut être vite detestée si on n’aime pas le design.

 

Partagez :-)
Facebook Twitter Email