lundi 4 mars 2019

Git : Ne fait jamais un checkout sur un commit!

Ne fait jamais un checkout sur un commit!

Quand on checkout un commit à la place d'une branche. cet argument va placer le répertoire de travail et la référence HEAD sur le commit spécifié, ce qui s’appelle dans ce cas une detached HEAD, car le HEAD n'est plus lié à la branche.



Utile aussi dans le cas d'un rebase, il crée un detached HEAD au moment de l'execution.

Cas particulier :

Au cas ou on veut revenir vers une version antérieur pour corriger un bug, pour voir comment les choses marchés avant, dans ce cas là on ne doit pas avoir de detached HEAD, qui s'affiche, ce n'est pas à nous de gérer cela.

La solution est de créer une branche temporaire à partir du commit qui nous intéresse :

Dans Eclipse :

Créer une branche :


Puis faire un checkout :


Avec la console git bash:

git checkout -b test-branch e6a4efcx8

Pour plus d'informations sur le fonctionnement du HEAD :

https://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head-undo-commits


mercredi 27 février 2019

Maven : Tips for Encoding

mvn clean install -Dproject.build.sourceEncoding=Cp1252 -DskipTests=true

unmappable character for encoding UTF8 when compiling by Eclipse

Window > Preferences > General > Content Types > Text 

Window > Preferences > General > Workspace, set "Text file encoding" to "Other : UTF-8". 


mardi 26 février 2019

HTML : Quelques méthodes de l’API Input


Propriété ou méthode Description Retour
value Retourne la valeur du champ. Peut être modifié (avec = ) pour changer la valeur
checked Retourne true si coché, ou false si décoché. boolean
files Liste des fichiers sélectionnés. Renvoie null si ce n’est pas un champ d’entrée de fichiers. FileList
valueAsDate Peut être modifié (avec = ) pour changer la valeur. Date
valueAsNumber Peut être modifié (avec = ) pour changer la valeur. Number
selectedOption Retourne l’option de liste sélectionnée HTMLElement

Git : Configuration push.default

Il existe plusieurs valeurs par défaut pour pusher ces modifications :

  • simple : La plus sûr pour les débutants, cette méthode est activée par défaut sur les installations de Git 2.X. Elle envoie uniquement la branche courante si son nom correspond à celui de la branche distante suivie.
  • matching : est activée par défaut sur les installations de Git 1.x. Elle envoie toutes les branches locales qui correspondent aux branches distantes suivies (ces branches seront abordées dans la suite de ce chapitre).
  • current : envoie la branche courante vers la branche distante suivie de même nom.
  • upstream : envoie la branche courante vers sa branche distante suivie, quel que soit le nom des branches.
  • nothing : n'envoie rien.
Exemple de configuration pour Eclipse :


Peut-être configuré aussi plus globalement, avec git config --global push.default.



JSON : Fonctions JavaScript utiles

L'objet utilitaire JSON supporter par tous les navigateurs récents, donne accès aux méthodes JSON.parse et JSON.stringify :

JSON.parse() : "JSON-formatted" --> "Objet JavaScript"

Cette méthode permet de désérialiser une chaîne de caractères respectant le format JSON "JSON-formatted" , en objet JavaScript.

JSON.stringify() : "Objet JavaScript" --> "JSON-formatted"

Cette méthode sérialise un objet JavaScript en une chaîne de caractères respectant le format JSON.

https://alligator.io/js/json-parse-stringify/

samedi 19 janvier 2019

Java SE 13 : Les nouveautés -JEP 325: Switch Expressions

JEP 325: Switch Expressions


Afin d'éviter plusieurs "break ", qui rendent le code très verbeux, cette JEP propose de s'en passer, avec ce changement de syntaxe :

Le code :
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
Remarque : 
  • On peut mettre plusieurs cas dans le même case séparer par une virgule (,)
  • Plus besoin de break
  • L'utilisation de  default. devient optionnel.
Remplacera :

switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}

vendredi 18 janvier 2019

JPA & Hibernate : equals et hashCode

L’égalité entre les objets est une notions importante lorsque'on utilise des ORM comme Hibernate et pas que pareil pour les TreeSet et TreeMap étant implémenté sous forme d'arbre binaire, il doit comparer les objets entre eux pour les organiser en implémentant comparable et/ou comparator .



Hibernate utilise la notion de proxy (Voir la définition sur Wikipedia) .
Quand nous avons deux objets en mémoire, nous devrons faire attention à ne pas comparer un proxy avec l’objet qu’il proxyfie.

Pour comparer sémantiquement deux instances, la classe java.lang.Object est pourvue de la méthode equals que toute classe est libre de redéfinir en respectant les règles suivantes :

  • l'implémentation doit être réflexive, symétrique, transitive et cohérente, il est généralement nécessaire de redéfinir hashCode lorsque equals est implémentée.
  •  les objets égaux doivent avoir des codes de hachage égaux