For many years now, I have a Jenkins running at home, for my personal projects. The problem is that, it’s running on my laptop. So, I basically have a setup where Jenkins tells me “it works on [your] computer”. This is far from ideal.
Following home’s lab There are 2 articles I read recently which gave me the motivation to have a proper setup at home. Few days ago, the excellent Jessie Frazelle wrote a post about labs at home.
Recently, my sister-in-law bought a new ultra laptop. First thing to notice, just like on Apple recent laptops, there is no CD/DVD player. Fair enough, I mean, we download legally everything nowadays.
But when you need to re-install your laptop, how do you do it? Back in my youth (not that far away!), laptops were shipped with a CD or a DVD to be able to (re)install Windows. You could have lots of reasons to do so: if you wanted to have both Windows and Linux, you changed the hard-drive (in favor of a SSD), etc.
In the last weeks, I’ve been working on a side project to share pictures easily, outside of Face de bouc, as my mom used to say. But this is not the point. As a bad developer, I started quickly and so dirty: no tests of any kind. Then a friend came and offered some changes. Tests were needed.
Do your tests, damn it! So first, I did some tests. The PR was about database insert in batch rather than in a Stream.
In my previous post here, I’ve shown how I get fetch videos from Youtube from my command line without installing anything else than Docker. But the command to type is way too complicated
So I made a shell script to easily use my docker container.
1 2 3 4 5 6 7 8 #!/bin/sh ## Author: Adrien Lecharpentier <adrien.lecharpentier@gmail.com> status=$(boot2docker status) if [ "${status}" != "running" ]; then boot2docker start fi docker run -ti -v "$(pwd)":/downloads alecharp/get-videos:latest $@ This way, I can easily download any youtube (or other) videos without having to remember every argument to give to the docker command.
Last week I created my first docker image to be able to get videos from youtube without having to install anything on my computer.
Youtube-dl For a year or two, I used youtube-dl to download any videos from the video platform in order to have a offline version of any videos I’d like to watch. This is very useful to watch them in public transport or when you have a bad internet connection.
Since a couple of weeks, I’m using docker for development purpose but also to fix some code issues. I’m also using it for this blog..
But even if I have a quite large hard drive (512GB), from time to time I like to remove all the containers and from time to time, also the images. So:
1 docker rm $(docker ps -aq) && docker rmi $(docker images -q) It’s remind me the make mrproper I had in my old Makefile to remove all generated files from my C projects.
I’m using Git for everthing. Two years ago, I even moved my blog from Wordpress to Jekyll, only to be able to use Git. I’m a huge fan of Git. It’s lightweight, powerful, customizable. It’s awesome. But some rules must be setup.
The good Git is very popular for open-source projects. Even many projects from the Apache Foundation moved to Git and Github a few months back. My opinion is that the lightweight of the branch / commit over Subversion makes Git a very interesting tool for projects that have many developpers that cannot get a meeting room for 2 hours to see what the f**k is going on with the merge conflict.
Sur un élan de motivations, j’ai mis à jour ma version d’OSX aujourd’hui.. L’erreur bête!
Mise à jour Évidemment, j’ai commencé par voir une nouvelle version de OSX: Yosemite. Je regarde 2-3 liens pour voir les améliorations. Je n’en trouve pas tellement. J’aurai dû m’arrêter là, mais non.
Je décide quand même de faire la montée de version. Pas très compliqué: AppStore >> Yosemite >> Télécharger. Chanceux je suis, je le fais sur une fibre optique, du coup, 20min et c’est réglé.
Ça va être court : je vais parler de fixup automatique dans Git.
Pourquoi faire du fixup J’ai pour habitude de beaucoup faire de fixup sur les rebase interactifs, quand je me rends compte que j’ai un état non complet sur l’un de mes commits, ce qui arrive souvent. Si c’est le dernier commit, un git commit --amend suffit. Si un ou plusieurs commit(s) se sont intercalés entre deux, alors il faudra faire un rebase interactif pour transformer l’historique.
Pour une idée de projet de supervision de Jenkins, j’ai cherché s’il existait une librairie permettant de communiquer simplement avec une instance de Jenkins (via son API Rest). J’ai trouvé jenkins-client sur le Github de RisingOak.
J’ai pris l’habitude, lorsque je trouve une librairie comme celle-ci, de regarder le code et le packager. Ceci me permet de voir si je peux ajouter du comportement à la librarie simplement. Pour jenkins-client, rien de bien compliqué :
Car beaucoup m’ont dit que la police (ancienne) de mon blog était illisible, j’ai procédé à quelques changements…
Le nouveau blog est basé sur quelques couleurs issues de Paletton. Normalement, ces couleurs devraient avoir un contraste assez grand pour que tout le monde puisse les voir facilement.
J’en ai profité pour enlever la page CV pour ne laisser que mon CV en PDF. Je suis part ailleurs en cours de traduction de celui-ci.
Depuis quelques temps, je me force à faire toute une panoplie de tests pour tous les développements que je fais. Qu’ils soient unitaires ou d’intégrations.
C’est une bonne pratique que je recommande depuis quelques temps déjà, il était donc grand temps que je le fasse…
Faites ce que je dis, pas ce que je fais.
Contexte Depuis quelques semaines, quand j’ai du temps, je me consacre au développement encore secret mais bientôt relâché dans la nature de l’open-source.
Retour sur ce 6ème évènement ngParis
Disclaimer: J’essaye de retranscrire ce que j’ai compris, entendu de la soirée ainsi que mon ressenti. Les avis, points de vue me sont propre et pourraient ne pas refléter l’intégralité du message que les personnes présentes ont souhaité faire passer.
Nous revoilà sur une soirée ngParis. Une fois de plus, la soirée est remplie (170 Angularians et 103 sur liste d’attente) bien avant la soirée.
Retour sur cette soirée AngularJS
Disclamer: J’essaye de retranscrire ce que j’ai compris, entendu de la soirée ainsi que mon ressenti. Les avis, points de vue me sont propre et pourrait ne pas refléter l’intégralité du message que les personnes présentes ont souhaité faire passer.
Hier soir, chez Google France, était donné le rendez-vous pour le dernier meet-up AngularJS en date. Le programme annoncé était lourd, avec de bons speakers :
Maven ou le cauchemar des nomades à faible mémoire
Maven, c’est bien :
ça va chercher les dépendances, on ne sait pas où mais on veut surtout par savoir, ça les mets dans le classpath qui va bien lors du run (compile, test, runtime), Mais maven, c’est le mal !
Les dépendances Lorsque l’on souhaite utiliser une librairie, on l’ajoute dans le pom.xml de notre projet et Maven s’occupe d’aller la trouver, de la télécharger et de nous la mettre à disposition.
parce qu’un prompt qui convient vaux mieux que 1000 mots
Rappel Ne réinventons pas la roue, même pour les descriptions :
ZSH Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
oh-my-zsh oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout…
…ce n’est pas que les outils pour coder et le matos informatique !
Rappel Nous ne reviendrons pas sur l’article de Mr Olivier Croisier concernant l’importance d’avoir une bonne station de travail.
Pour ceux qui ne l’auraient pas lu (non on ne vous jette pas la pierre), allez d’abord le lire. Ça se passe ici : Équipez vos développeurs
Les détails Dans cet article, on parle de RAM, écran, puissance et tout et tout mais pas que.
À moins de s’avoir parfaitement ce que vous faite et comment ce que vous faites sera utilisé dans le futur…
Parce que lorsque l’on fait du support, en général on ne touche pas trop à du code bien fait / écrit ni fonctionnel (un produit qui fonctionne n’a pas besoin de support), je vois par moment des choses qui peuvent piquer les yeux.
Dernier en date : utilisation de la méthode finalize de Java.
Quand on écrit du code, il y a deux choses de mon point de vue qui peuvent nous conduire à l’auto-censure :
ne pas savoir écrire du code, penser qu’on ne sait pas écrire du code propre. Dans un cas comme dans l’autre, le résultat, si c’est le cas, est qu’il vaut mieux s’abstenir, sinon ça donne ça codecrap.com. Sauf que si on écrit jamais on ne saura jamais écrire, dixit le veille adage “c’est en forgeant qu’on devient forgeron.
Juste pour mon souvenir : Git c’est mieux que Subversion. Rapide, discret, efficace. Bref je ne veux plus faire de Subversion.
Malheureusement, la vie c’est dur et du Subversion il y en a partout. Si si je vous jure ! La solution ? git-svn.
1 git svn clone https://svn-repo-url Pas aussi simple : il vous faut les auteurs (au moins).
1 svn log --quiet https://svn-repo-url | awk '/^r/ {print $3}' | sort -u * merci à stackoverflow et Mike DeSimone
Un petit pamphlet pour l’utilisation de SCM en toute circonstance
Il s’agit là d’un point de vue que je défends depuis quelques temps mais il est temps que je m’exprime ouvertement sur le sujet (ça va m’éviter des heures et des heures de Psy).
Donc Pourquoi tout le monde veut devenir un cat devrait utiliser un SCM? car […] [il] retombe toujours sur ses pattes !
Définition: un SCM c’est quoi ?
Ma première directive avec angularJS
Dans un blog précédent, j’ai fait une petite critique à AngularJS. Ici je vais montrer comment j’ai créé un breadcrumb avec AngularJS en étendant un petit peu son comportement et sa configuration. Sans trop me prendre la tête.
But Mon application (pour le moment) est en mode “one-page application” : un html index.html, hormis les templates. Cependant, je veux pouvoir revenir simplement sur la page “précédente”, de la logique de mes pages.
Après quelques patches sur la nouvelle interface web de Archiva ainsi que sur le site web de l’outil, les commiters du projet m’ont accepté parmi eux.
Un grand merci à eux! Liste non exhaustive des commiters du projet (non triée) :
Olivier Lamy Jean-Baptiste Onofré Éric Barboni Maria Odea B. Ching Brett Porter Carlos Sanchez Edwin Punzalan Nicolas De Loof Dennis Lundberg Martin Cooper Marecor M. Baclay Jevica Arianne B.
Utiliser Subversion sur un Mac avec support des chemins unicodes
Dans l’univers impitoyable de Mac OS, je demande le support de l’unicode sur Subversion.
Bien que le langage majoritairement utilisé dans le monde de l’informatique soit l’Anglais, il y a quelques irréductibles (gaullois?) qui ne souhaitent pas utiliser la langue de Shakespeare dans certains cas. Ce n’est pas trop un soucis quand il s’agit de textes anciens ou de codes sources, mais le problème est plus grand quand cela s’applique également aux noms des fichiers.
Petite expérience sur angularJS
Il y a peu, un collègue (Olivier Croisier) m’a montré le framework JS de Google AngularJS.
Pour un projet personnel en RESTFull / JS j’utilisais jusque là KnockoutJS pour faire le date-binding mais je me suis dit : “Pourquoi pas après tout !”.
J’ai donc commencé à refaire toute mon UI (pas beaucoup d’écran donc ça va quand-même) avec AngularJS. Les premiers écrans sont simples, ça va vite.
Facepalm with String limits S’il y a bien une chose que l’on peut très vite oublier avec Java, c’est la gestion de la mémoire. Et quand on fait des traitements lourds et longs, ça nous revient très rapidement en plein visage !
La limite que je pensais bien ne jamais rencontrer était bien celle-ci : la taille maximale d’une String
Reproduire le problème Comment on fait pour l’atteindre ? Dans mon cas, on met dans une String l’intégralité des informations de chaque artefact d’un repository Maven.
Je viens de (re)publier le post le plus recherché sur le net. Il n’a pas complètement disparu, c’est juste qu’il me faut le sortir de ma base wordpress et le mettre en forme pour Jekyll.
Chose importante à noter, j’essaye de contribuer du mieux que je peux à un autre outil de type Maven-Repository-Manager : Archiva. Premier outil créé pour remplir ce rôle, la prochaine version (1.4) se voit affectée une nouvelle UI, un peu plus dans l’air du temps, développée par le très bon Olivier Lamy (!
Parfois commencer un project c’est long et embêtant car il faut commencer par créer la structure du project selon maven. Comment peut-on le faire rapidement?
Aujourd’hui, on utilise beaucoup maven dans le développement, surtout web, mais commencer la phase de dev d’un projet peut être un peu long.
Il faut toujours passer par la phase de création des dossiers conventionnés par maven et ce n’est pas toujours simple. Alors astuce :
Passer de wordpress à Jekyll, ça peut faire peur pour la mise en ligne de nouveaux posts. Heureusement, certains outils et une légère configuration permettent de passer outre ce soucis.
Alors ce n’est pas parce que j’ai choisi de passer sur Jekyll que j’ai envie de tout refaire à la main. Par exemple, je n’ai pas envie de devoir regénérer le site web à chaque fois que j’écris un nouvel article.
For a while, people haven’t stopped telling me that for coding, nothing is better than a Qwerty keyboard.
As I am not the stupid guy who never tries out and still tells everyone: “nothing is better than azerty!!”, I’m trying it. To be specific, as an French guy, I’m trying a US internationalized keyboard.
For the moment I’m a bit slower, can’t stop looking at my fingers. But it seems pretty cool for coding.
Au cours d’un développement, on se retrouve toujours avec un même problème : comment je fais pour être plus productif ? A cette question, il y a beaucoup de réponses possibles.
Maven Maven est un outil de build/gestion de dépendance très utilisé dans le développement surtout web/JEE. Il est bien intégré aux différents IDEs disponibles mais on se retrouve souvent à faire des lignes de commandes pour compiler, tester, packager notre application.
J’ai envie d’essayer Jekyll pour gérer mon blog pour quelques raisons, certaines sûrement pas très réfléchies :
git pour versionner mes articles Markdown!!! des pages statiques pour faire du cache et pas de base de données (cf ↑↑) Bon après, utilisant Git (et GitHub) pour versionner ce blog, je vous propose ceci : lisez-moi, si vous aimez alors faites un “watch” de mon compte github @alecharp. Si je dis une bếtise, forkez l’article en question, corrigez-le, et faites une pull-request.
Depuis quelques temps, j’utilise Nexus de Sonatype pour certains développements perso ou pro. Comme je trouve ce produit très simple, convivial et solide dans le cadre de l’intégration continue et plus largement, dans son utilisation avec Maven, j’ai décidé d’écrire un article pour partager l’expérience que j’en ai.
Pour cela, je tenterai de vous expliquer simplement (c’est pas toujours facile à faire) l’utilité de Nexus. J’espère que ce fait sera prouvé par la suite de mon exposé.