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



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:

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); 



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