Exile on Keyboard St. - Blog sur Linux et Debian

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

dimanche 29 décembre 2019

Une sélection des prochaines conférences pour les développeurs en 2020

A l'approche de la nouvelle année, rien de tel que quelques jours de vacances pour commencer à regarder quelles seront les prochaines conférences pour les développeurs en France en 2020.

Voici donc une première liste de conférences dont la billetterie est ouverte:

  • P2P à Paris - 8 au 12 Janvier - Gratuit
  • DevFest à Paris - 14 février - Tickets Early Bird disponibles
  • ReactEurope à Paris - 12 au 16 mai - Billetterie ouverte
  • Riviera Dev à Sophia Antipolis - 13 au 15 mai - Billetterie ouverte
  • NewCrafts à Paris - 28 au 29 mai - Tickets Early Bird disponibles
  • Best of Web à Paris - 4 au 5 juin - Tickets Super Early Bird disponibles
  • DevFest à Lille - 12 juin - Tickets Early Bird disponibles

Et les autres pour lesquelles il faut attendre un peu:

  • BreizhCamp à Rennes - 25 au 27 mars
  • Maker Faire (DIY) à Lille - 3 au 5 avril
  • MIXIT à Lyon - 29 au 30 avril
  • DevFest à Nantes - 15 au 16 octobre

J'ai volontairement omis celles comme Devoxx Paris pour lesquelles tous les billets sont déjà vendus ainsi que celles qui comme:

  • Agile France
  • Codeurs en Seine
  • Maker Faire Paris
  • Web2Day

pour lesquelles l'édition 2020 n'est pas encore annoncée.

Enfin, le festival Pas Sage en Seine se déroule chaque année à Choisy le Roi du 27 au 30 juin et est GRATUIT.

Si vous connaissez d'autres évèvements qui m'auraient échappés, n'hésitez surout pas à laisser un petit commentaire !

Vous pouvez également surveiller les CFPS en cours sur GOSPEAK.

jeudi 26 décembre 2019

Deux Plugins IDEA pour copier du code en tant qu'image et les utiliser dans des fichiers Markdown

Intégrer quelques lignes de code dans un fichier Markdown, README ou autre, ne pose pas de problème particulier.

On utilise alors:

  • Une indentation de 4 espaces (ou d'une tabulation)
  • Une séquence de code entre deux sections délimitées par trois backticks

Par exemple:

```console
$ sudo curl -L https://git.framasoft.org/grumpyf0x48/liar/raw/0.1/liar -o /usr/local/bin/liar
```

ce qui donne le rendu suivant.

Code in Markdown

Vous noterez qu'ici le caractère $ a été ajouté pour bien matérialiser la présence d'un Shell mais il n'est absolument pas requis dans la syntaxe Markdown.

Malheureusement, lorsque votre moteur de blog, par exemple la version de dotclear utilisée ici par Gandi, ne vous permet pas un rendu sympa des blocs de code, il faut bien trouver une solution !

Créer une image à partir d'une sélection de code dans IntelliJ

On va alors avoir recours à un plugin dans IntelliJ pour créer très rapidement une image à partir d'une section de code que l'on vient de sélectionner.

Ce plugin, c'est Code Screenshots, qui une fois installé va créer une image du code sélectionné chaque fois que vous utiliserez le raccourci: Ctrl+Alt+Shift+A.

L'image en question sera alors placée dans le presse papier (clipboard) du système.

On récupère l'image de la façon suivante:

xclip -selection clipboard -t image/png -o > $HOME/code-snippet.png

Notez qu'il nous faudra ensuite l'uploader sur le site du blog.

Copier une image dans un fichier Markdown depuis IntelliJ

Si maintenant nous avons une image dans le presse papier du système et que nous souhaitons l'intégrer dans un fichier Markdown édité avec IntelliJ, nous allons installer un deuxième plugin, et c'est Paste Images into Makdown.

Une fois installé, le raccourci Ctrl + V utilisé dans un fichier Markdown lorsqu'une image existe dans le presse-papier affichera la boite de dialogue suivante:

Paste Image into Markdown

Il ne nous reste alors qu'à choisir:

  • le nom de l'image
  • le répertoire où l'on souhaite la placer

et le fichier Markdown est alors modifié comme suit:

![](.README_images/040301ad.png)

Il nous reste enfin à donner un titre à cette image dans le Markdown.

samedi 21 décembre 2019

Gérer plusieurs versions de Java avec jEnv

Depuis la sortie de la version 9 de Java en 2017 et la nouvelle cadence de sortie des versions de Java décidée par Oracle, il devient de plus en plus difficile de ne travailler que sur une version de Java à la fois.

Se pose alors pour le développeur la question de comment passer d'une version à l'autre de Java, et si possible de façon simple.

Sur Debian, on a longtemps utilisé la commande update-java-alternatives mais elle présente plusieurs inconvénients:

  • L'utilisation d'une version de Java est globale à tout le système (liens symboliques dans /etc/alternatives)
  • Elle ne fonctionne qu'avec les JDK installés depuis les dépôts du système (utilisation des fichiers de métadonnées .jinfo)
  • Elle est spécifique à Debian (A vérifier mais il me semble que oui)

Heureusement, le projet jEnv vient à notre secours, et permet de passer très facilement d'un JDK à un autre.

1. Installation de jEnv

Pour installer jEnv, rien de plus simple:

On clone le repository Git:

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

Puis on ajoute quelques lignes à la fin de notre fichier ~/.bash_profile ou ~/.bashrc

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

Personnellement, j'ai déplacé ces lignes dans un fichier ~/.jenvrc pour les référencer ensuite dans ~/.bashrc:

if [ -f ~/.jenvrc ]; then
    . ~/.jenvrc
fi

mais ce n'est pas une obligation.

2. Configuration de jEnv

Une fois jEnv installé, on va lui indiquer quelles sont les versions de Java que l'on veux utiliser.

Au départ, aucune version de Java n'est connue de jEnv:

jenv versions

Si on ajoute un Java 9:

jenv add $HOME/jdk/jdk9/jdk-9.0.4/
openjdk64-9.0.4 added
9.0.4 added
9.0 added
9 added

Puis un Java 11:

jenv add $HOME/jdk/jdk11/jdk-11.0.2/
openjdk64-11.0.2 added
11.0.2 added
11.0 added
11 added

Les versions disponibles sont maintenant:

jenv versions
  11
  11.0
  11.0.2
  9
  9.0
  9.0.4
  openjdk64-11.0.2
  openjdk64-9.0.4

On voit que Jenv crée plusieurs tags vers le JDK ajouté.

3. Utilisation de jEnv

On a donc installé deux versions de Java, mais aucune n'est encore disponible.

Si on fait:

which java
/home/user/.jenv/shims/java

On voit que jEnv a "wrappé" la commande Java dans un script Shell.

3.1. Une version de Java globale

Définissons maintenant le Java 9 comme Java global au système:

jenv global 9

La commande précédente donne maintenant:

java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

Et tout nouveau terminal utilisera donc Java 9.

3.2. Une version de Java locale

Si maintenant, pour un projet particulier, j'ai besoin de Java 11, je peux le définir comme la version de Java à utiliser dans un répertoire particulier:

mkdir my-project
cd my-project
jenv local 11

Et le résultat est:

java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

Si je relance la commande pour connaître les versions disponibles:

jenv versions
* 11 (set by /home/user/my-project/.java-version)
  11.0
  11.0.2
  9
  9.0
  9.0.4
  openjdk64-11.0.2
  openjdk64-9.0.4

Et si je quitte ce projet, je reviens en Java 9:

cd
java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

Et j'ai donc:

jenv version
9 (set by /home/user/.jenv/version)

qui est la version globale:

jenv global
9

3.3. Une version de Java locale au Shell courant

On peut également changer la version de Java utilisée localement au Shell courant comme suit:

jenv shell 11

Par exemple, pour tester rapidement quelques lignes de Java grâce à au JShell de Java 9:

jenv shell 9 && jshell
|  Welcome to JShell -- Version 9.0.4
|  For an introduction type: /help intro

Comme on vient de le voir, jEnv est un outil très simple à utiliser pour passer d'une version de Java à une autre, et il ne dépend pas de la façon dont ont été installés les JDK pour être utilisé.

jEnv fait donc partie des outils que le développeur Java va adopter rapidement !

- page 1 de 7