mercredi 10 février 2021

Maven : Setting MAVEN_OPTS

Configuration de l'utilisation de la mémoire par Maven à partir de Java 8+

-Xmx : pour définir la mémoire MAX

-XX:MaxPermSize : pour d'information sur l'utilité et les modifications à partir de Java 8 + voir cet article : Où est passée la PermGen Java ?

 Linux:

export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"


Windows

set MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"



Docker : Running Maven in Docker container via current user as non-root

Maven needs the user home to download artifacts to, and if the user does not exist in the image an extra user.home Java property needs to be set.

For example, to run as user 1000 mounting the host' Maven repo

$ docker run -v ~/.m2:/var/maven/.m2 -ti --rm -u 1000 -e MAVEN_CONFIG=/var/maven/.m2 maven mvn -Duser.home=/var/maven archetype:generate
Source : https://hub.docker.com/_/maven
https://stackoverflow.com/questions/52780802/run-maven-in-docker-container-via-current-user/52781822

mercredi 3 février 2021

Javascript : Object.defineProperty() add a new function property to an Object

 // For example Define the Product class -  the Constructor function 

function Product(idnamepriceexpiryDate) {
   this.id = id;
   this.name = name;
   this.price = price;
   this.expiryDate = expiryDate;
  }
// Here, use Object.defineProperty to create property 
Object.defineProperty(Product'daysToExpire',{
    get() {
    return this.daysToExpire;
  }});

JavaScript / TypeScript: Object Writbale attribute, have more control on your properties

En JavaScript / TypeScript, chaque propriété d’un objet est liée à un descripteur (qui est lui-même un objet). 

Celui-ci donne plusieurs informations sur une propriété à l'aide la méthode Object.getOwnPropertyDescriptor()

  • Est-elle configurable? 
  • Est-elle énumérable ?
  • Est-elle modifiable ? 
  • Quelle est sa valeur ?
  • etc
Exemple : 
const object1 = {
  property1: 42
};

const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');

console.log(descriptor1.configurable);
// expected output: true

console.log(descriptor1.value);
// expected output: 42

La méthode statique Object.defineProperty() permet de définir une nouvelle propriété ou de modifier une propriété existante, directement sur un objet. 

La méthode renvoie l'objet modifié.

Exemple de modification de proprieté: 

Object.defineProperty(object1, 'property1', {
  value: 42,
  writable: false
});

object1.property1 = 77;
// throws an error in strict mode

console.log(object1.property1);

Quelques cas d'usage pour les test avec Angular :