Java Suisse
Le blog suisse sur Java (et l'IT en general)
samedi 31 décembre 2022
vendredi 30 août 2019
Transpiling vs Compiling
Les 2 termes sont pareils, mais il y a une subtile différence. Transpiling se réfère aux langages qui ont le même niveau d'abstraction, comme Type- et Javascript, par contre la compilation se réfère aux langages avec le niveau d'abstraction différent - C# vs IL, Java vs Bytecode
jeudi 12 avril 2018
Cluster kubernetes I: configuration Virtual Box sur Windows 10
1) Installer Virtual Box sur Windows 10 et créer une nouvelle VM avec Ubuntu
2) Télécharger la version actuelle Ubuntu
3) Au moment de lancer la nouvelle VM choisir l'image de disque Ubuntu telechargé
4) Procéder avec l'installation de Ubuntu
5) Dans les properties réseau de la Virtual Box pour la VM configurée, il faut mettre des paramètres suivants:
6) Essayer de pinger Ubuntu depuis le host Windows 10
7) si ne pingue pas, essayer de starter ssh sur Ubuntu:
sudo service ssh start
8) S'il y a une erreur "unit ssh.service not found", telecharger openssh-server:
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
9) Contrôler le statut avec:
sudo service ssh status
10) Voila, maintenant ce pingue
11) Maintenant on va informer le système de notre agent ssh et d'utiliser la clé ssh pour ça:
eval 'ssh-aget -s'
ssh-add chemin/a/votre/clé (p.e. ssh-add /home/user/.ssh/id_rsa)
note: sîl y a une erreur "Could not open a connection to your authentication agent", faire suivant:
ssh-agent /bin/sh
ssh-add $yourkey (p.e. ssh-add /home/user/.ssh/id_rsa)
ou simplement faire la commande suivante: eval $(ssh-agent)
le résultat positif devrait s'affiche comme:
Identity added: id_rsa (id_rsa)
12) Lancer KUBERNETES_PROVIDER=ubuntu ./kube-up.sh
2) Télécharger la version actuelle Ubuntu
3) Au moment de lancer la nouvelle VM choisir l'image de disque Ubuntu telechargé
4) Procéder avec l'installation de Ubuntu
5) Dans les properties réseau de la Virtual Box pour la VM configurée, il faut mettre des paramètres suivants:
6) Essayer de pinger Ubuntu depuis le host Windows 10
7) si ne pingue pas, essayer de starter ssh sur Ubuntu:
sudo service ssh start
8) S'il y a une erreur "unit ssh.service not found", telecharger openssh-server:
sudo apt-get purge openssh-server
sudo apt-get install openssh-server
9) Contrôler le statut avec:
sudo service ssh status
10) Voila, maintenant ce pingue
11) Maintenant on va informer le système de notre agent ssh et d'utiliser la clé ssh pour ça:
eval 'ssh-aget -s'
ssh-add chemin/a/votre/clé (p.e. ssh-add /home/user/.ssh/id_rsa)
note: sîl y a une erreur "Could not open a connection to your authentication agent", faire suivant:
ssh-agent /bin/sh
ssh-add $yourkey (p.e. ssh-add /home/user/.ssh/id_rsa)
ou simplement faire la commande suivante: eval $(ssh-agent)
le résultat positif devrait s'affiche comme:
Identity added: id_rsa (id_rsa)
12) Lancer KUBERNETES_PROVIDER=ubuntu ./kube-up.sh
lundi 19 mars 2018
Talend: création du service REST qui accède a la BD
1) Créer une nouvelle job
2) Ajouter les composants tRESTRequest et tRESTResponse
3) Ajouter tFlowToIterate au milieu de 2
4) Télécharger et installer MariaDB (si nécessaire et si tu n'as aucune BD installé sur ton ordi)
5) Creer une table dans Maria DB (comme descrit ici https://mariadb.com/kb/en/library/mariadb-basics/, serait la table "Books" dans le schéma "Bookstore")
5) Dans Talend "Repository" cliquer sur Metadata, Connections BD, "Schemas", trouver la table créé
6) Tirer cette table dans notre workspace principale (tels comme tMySqlInput)
7) Ajouter tXMLMap
8) Double-cliquer sur tRESTRequest et ajouter un "Output Flow" avec "+"
9) Dans "REST Endpoint" specifier "http://localhost:8088"
10) Dans "REST API Mapping" specifier getAllBooks
11) Changer l'URI to "/books"
12) Connecter tous les composants comme ci-dessous:
2) Ajouter les composants tRESTRequest et tRESTResponse
3) Ajouter tFlowToIterate au milieu de 2
4) Télécharger et installer MariaDB (si nécessaire et si tu n'as aucune BD installé sur ton ordi)
5) Creer une table dans Maria DB (comme descrit ici https://mariadb.com/kb/en/library/mariadb-basics/, serait la table "Books" dans le schéma "Bookstore")
5) Dans Talend "Repository" cliquer sur Metadata, Connections BD, "Schemas", trouver la table créé
6) Tirer cette table dans notre workspace principale (tels comme tMySqlInput)
7) Ajouter tXMLMap
8) Double-cliquer sur tRESTRequest et ajouter un "Output Flow" avec "+"
9) Dans "REST Endpoint" specifier "http://localhost:8088"
10) Dans "REST API Mapping" specifier getAllBooks
11) Changer l'URI to "/books"
12) Connecter tous les composants comme ci-dessous:
jeudi 8 mars 2018
Talend: création dynamique des folders
Imaginez un scenario Talend, ou vous devez deplacer les files dans un folder qui correspond a la date d'ajourdhui: <Year>/<Month>/<Day>.
Dans le composant "out" cFile, vous pouvez specifier les parameters comme ci-dessous:
Comme dans le chemin d’accès vous pouvez pas spécifier des valeurs dynamiques, c'est uniquement possible dans la variable "fileName":
"/"+"${date:now:yyyy}"+"/"+"${date:now:MM}"+"/"+"${date:now:dd}"+"/"+"${file:name}"+"_"+"${date:now:yyyyMMdd}.txt"
Aussi, a la fin du nom du fichier vous obtenez <year><month><day> aussi. Pas toujours besoin, mais parfois c'est vient demandé.
mercredi 26 juillet 2017
Un aperçu sur Stream API dans Java 8
L'API Stream dans Java 8 est utilisé pour travailler avec les collections, pour pouvoir écrire le code dans le style fonctionnel. Grâce à sa simplicité Stream est devenu très populaire entre les programmeurs. Selon la description officielle, la bibliothèque « Java.util.stream » - nous permet de faire plusieurs opérations dans le style fonctionnel avec des collections d'éléments, tels comme les transformations de MapReduce, etc. L'API contient les opérations « intermédiaires », comme Stream.map ou Stream.filter, mais aussi les opérations « finales » comme Stream.forEach ou Stream.reduce. L'opération « intermédiaire » ne serait jamais exécutées avant l'opération « finale » (p.e. Stream.map ne serait pas exécutée avant Stream.reduce, mémé si vous le mettez avant dans le code). Un tel comportement s'appelle LAZY.
Une autre grande caractéristique de l'API Stream c'est la parallélisation des sources - parallelStream () qui vient utilisée pour améliorer les performances pour traiter des grandes quantités de données. Les flux parallèles peuvent accélérer l'exécution pour certains types de transactions. Je les utilise quand je sais que la collection est trop grande pour être gérée avec « ForkJoin. » Plus d'informations sur la bibliothèque ForkJoin peut lire ici: http://www.baeldung.com/java-fork-join.
Retournons à nos moutons et nous considérerons un exemple pratique. Un exemple simple de recherche d'un valeur min et d'un valeur max dans une collection.
ArrayList testValues = new ArrayList();
testValues.add(0,15);
testValues.add(1,1);
testValues.add(2,2);
testValues.add(3,100);
testValues.add(4,50);
Optional maxValue = testValues.stream().max(Integer::compareTo);
System.out.println("MaxValue="+maxValue);
Optional minValue = testValues.stream().min(Integer::compareTo);
System.out.println("MinValue="+minValue);
Une autre grande caractéristique de l'API Stream c'est la parallélisation des sources - parallelStream () qui vient utilisée pour améliorer les performances pour traiter des grandes quantités de données. Les flux parallèles peuvent accélérer l'exécution pour certains types de transactions. Je les utilise quand je sais que la collection est trop grande pour être gérée avec « ForkJoin. » Plus d'informations sur la bibliothèque ForkJoin peut lire ici: http://www.baeldung.com/java-fork-join.
Retournons à nos moutons et nous considérerons un exemple pratique. Un exemple simple de recherche d'un valeur min et d'un valeur max dans une collection.
ArrayList
testValues.add(0,15);
testValues.add(1,1);
testValues.add(2,2);
testValues.add(3,100);
testValues.add(4,50);
Optional
System.out.println("MaxValue="+maxValue);
Optional
System.out.println("MinValue="+minValue);
jeudi 22 juin 2017
Service REST avec Kotlin, Spring Boot pour les débutants
Aujourd'hui on va créer un petit service REST qui s'appelle "Greeter" très simple et qui va pas faire autre chose que nous ecrire "Salut, ". Ensuite on va l'améliorer au niveau que ce service sera capable de rediriger les appels selon le nom qu'on mets comme paramètre dans l'adresse HTTP.
La logique est tres simple:
Si le nom est "R21" - afficher la page d'erreur
Pour le reste - afficher la page normale.
Le but est de prendre connaissance avec Kotlin et voir, comment Kotlin nous pourrait simplifier la vie au niveau du syntaxe et l'efficacité. On aura besoin:
- IntelliJ IDEA - une IDE Java très belle et efficace qui je commence a utiliser plus en plus. C'était développée par la société JetBrains, c'est gratuite (la version "community" qui sera suffisante pour nous) et permets de faire certains choses a la manière plus rapide (p.e. l'input prédictif du code). Ici l'addresse: https://www.jetbrains.com/idea/download/
- Spring Boot - pour nous simplifier le lancement du projet.
- Spring Initializer - pour nous simplifier la création de la structure de notre projet Java Spring
- 10 Min du temps, pas plus (encore moins, avec copier/coller).
Le code vous trouverez ici: https://github.com/cyberglad/kotlindemo
La logique est tres simple:
Si le nom est "R21" - afficher la page d'erreur
Pour le reste - afficher la page normale.
Le but est de prendre connaissance avec Kotlin et voir, comment Kotlin nous pourrait simplifier la vie au niveau du syntaxe et l'efficacité. On aura besoin:
- IntelliJ IDEA - une IDE Java très belle et efficace qui je commence a utiliser plus en plus. C'était développée par la société JetBrains, c'est gratuite (la version "community" qui sera suffisante pour nous) et permets de faire certains choses a la manière plus rapide (p.e. l'input prédictif du code). Ici l'addresse: https://www.jetbrains.com/idea/download/
- Spring Boot - pour nous simplifier le lancement du projet.
- Spring Initializer - pour nous simplifier la création de la structure de notre projet Java Spring
- 10 Min du temps, pas plus (encore moins, avec copier/coller).
Le code vous trouverez ici: https://github.com/cyberglad/kotlindemo
Inscription à :
Articles (Atom)