Date Java8: Exemples de manipulation des dates en java 8

L'un des changements importants en java 8 est l'introduction de nouvelle Api (JSR 310) pour la gestion des dates.

La nouvelle api datetime introduite dans java 8 s'est inspirée de Joda-Time (cette dernière est très utilisée dans les projets).
Ceci dit, l'api java.time de java 8 est différente de Joda sur certains détails.

A ce propos, l'auteur de Joda-Time (Stephen Colebourne) a participé à la réalisation de la  JSR 310.

En effet, la pratique de l'api java.util.Date (donc pour les version java <8) a mis en évidence que son design est assez déroutant, voire peu intuitif, sur certains points:

  • les années des dates démarrent de 1900,
  • les jours commencent à 1, les mois à 0,
  • pas thread safe,
  • sans parler de la gestion du lenient.

La nouvelle api java date & time est donc guidée par ces trois axes:

  • domain driven design (voir site oracle pour plus de précisions),
  • immutabilité renforcée pour garantir thread safe,
  • séparation des calendriers et chronologies.

L'objet de ce blog est de vous donner quelques concepts avancés par des exemples sans rentrer dans la théorie.

Notez donc que ce billet n'est pas structuré comme une introduction à l'api java.time.

Quaoar Virtual Machine – Walkthrough

23Introduction

"Quaoar" is a "Boot2Root" VM originally created for the Hackfest 2016 CTF. It aims to train your computer security skills. You just have to launch the Virtual Machine, and then find a way to get root ! This VM is in free access on Vulnhub.

We just ping the IP adress given by the VM to ensure everything is alright.

$ ping -c 3 192.168.56.101
PING 192.168.56.101 (192.168.56.101) 56(84) bytes of data.
64 bytes from 192.168.56.101: icmp_seq=1 ttl=64 time=0.275 ms
64 bytes from 192.168.56.101: icmp_seq=2 ttl=64 time=0.438 ms
64 bytes from 192.168.56.101: icmp_seq=3 ttl=64 time=0.265 ms

--- 192.168.56.101 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2039ms
rtt min/avg/max/mdev = 0.265/0.326/0.438/0.079 ms

And.. Let's go!

Devoxx 2017 : Retour sur « Reactor 3 et la programmation réactive sur la JVM »

J’ai eu la chance de participer cette année à la 6ème édition du Devoxx France. Je vous propose dans cet article de revenir sur la conférence "Reactor 3 et la programmation réactive sur la JVM" présentée par Simon Baslé qui travaille sur le projet Reactor. J’ai apprécié cette présentation qui plus est, elle est sur un thème dans l'air du temps : la programme réactive.

La recherche dans un site Drupal avec SearchAPI

La recherche est un élément primordial dans un site web.

Les moteurs d'indexation tel que SolR ou ElasticSearch ont la puissance nécessaire pour répondre aux demandes fortes de recherche de nos clients et de simplicité d'utilisation des internautes. Cependant, la mise en place d'un tel moteur d'indexation a un coût important. Il existe sous Drupal une solution alternative à moindre coût. Nous utilisons pour cela un moteur d'indexation en base de données.

Ce moteur d'indexation est fournit par le module search_api_db. Cette API permet de mettre en place une recherche FullText et à facette dans un site Drupal en stockant les indexes en base de données.

Ajouter son grain de sel dans un mot de passe

Un grain de sel dans le cryptage de MDP

Description & concept

Cette technique est notamment utilisée par UNIX et permet de se protéger en cas de vol du hash md5. Comme une même chaîne donne toujours le même hash avec md5, si on chiffrait tous les mots de passe probables avec md5 (ou au moins un très grand nombre) on pourrait à partir d'un hash retrouver le mot de passe en clair. La constitution d'un tel dictionnaire prend du temps et doit être faite à l'avance, toutefois elle est envisageable. La parade se fait par l'introduction d'un grain de sel qui va "déformer" le hash. Ce grain de sel est en fait un très grand nombre que l'on concatène au mot de passe avant de le chiffrer, mais un exemple éclairera tout :

$motDePasse = "toto"; $hash = md5($motDePasse);

Parcourir l'article

ShellCheck outil d’analyse pour vos scripts shell

Qu'est-ce que ShellCheck ?

ShellCheck est un outil d'analyse de scripts shell assez puissant dans la lignée de Lint qui devrait se trouver dans la boîte à outil de tout devops Unix.

Cet utilitaire vous permettra d'identifier de manière statique (sans exécuter le code) un bon nombre de petits défauts dans vos scripts shells qui, sur votre utilisation courante, fonctionnent peut-être comme un charme mais qui mis dans les mains d'autres personnes provoqueront des erreurs pour le moins embêtantes.

Par exemple, imaginez que pour une raison X ou Y, la variable suivante n'est pas renseignée...

rm -rf "$PATH_TO_FOLDER/"*

C'est une erreur triviale mais qui peut coûter très cher; bien d'autres sont listées par Koalaman, l'auteur du script.

Parcourir l'article

DSC – Desired State Configuration

Vous cherchez un moyen d’automatiser vos installations d’applications ou projets ? Vous en avez marre de répéter 50 fois les mêmes actions, et vous commencez à avoir des crampes aux doigts à force de configurer vos services applicatifs à la main ? DSC (Desired State Configuration) est fait pour vous ! Et cerise sur le gâteau, c’est du PowerShell !

Selon la Bible technet, DSC est « une plateforme de gestion en PowerShell ». « Il permet le déploiement et la gestion des données de configuration pour les services et l’environnement sur lequel ces services doivent s’exécuter. ».

DSC dispose de deux modes de fonctionnement : Push et Pull. Le premier consiste à « pousser » ponctuellement une configuration sur un ou plusieurs serveurs. Le Pull repose sur un service web qui va être consommé par des machines afin de s’assurer qu’elles sont dans l’état de configuration attendu, et appliquer cette configuration le cas échéant.

Installer un plugin sur JIRA (2/2)

Pour bien continuer l'année 2017, voici la suite et la fin de notre diptyque : installer un plugin sur JIRA (voir la première partie : Installer un plugin JIRA, 1re partie)

Nous avons vu que, quoique facile, la mise en place d'un plugin sous JIRA peut gagner à être automatisée, pour déployer plus d'un plugin à la fois, pour en installer un de manière planifiée sans intervention humaine, pour installer un plugin qui ne serait pas rendu public sur le marketplace, ou simplement pour s'assurer que la configuration sera répétable (à des fins de gestion de la configuration.)

C'est ce que nous allons explorer aujourd'hui.