Sebsauvage donne une tripotée de liens que chacun est libre d'approuver ou non.
Pour ma part, le concept disant qu'une société commerciale, constituée de plus de vautours que de développeurs, dont le business modèle repose sur la violation totale de la vie privée, l'exploitation du travail des autres et l'évasion fiscale, qu'une telle société se permette de fermer les comptes AdSense des personnes à qui elle devait trop d'argent... comme par hasard juste avant les dates de paiement... Comment vous dire...?
Cela n'est pas surprenant du tout !
Google veut du bien à Google et exploite ce qu'elle peut, quand elle le peut, au détriment de tout le reste. Si vous souhaitez la contraindre à l'éthique alors abandonnez ses outils, sinon sachez que vous faites vous aussi partie du problème alors s'il vous plaît cessez de vous offusquer.
Bon, je suis en plein débat avec @Philou et @CCous pour savoir si oui ou non il faut commiter les changements de version de la balise <version> de nos pom.xml.
En quoi y a-t-il débat ?
C'est assez simple, je suis partisane du fait qu'il soit nécessaire de commiter le numéro de version des pom.xml et de tagger le commit qui contient cet incrément. Je ne crois pas qu'il faille le faire pour tout, mais la chose est indispensable a minima pour les libs.
Mon argument est que Maven doit être indépendant du gestionnaire de version qui dans l'histoire a changé de nombreuses fois. Pour info, j'ai eu la "chance" de coder sur un projet qui est passé dans cet ordre de Synergy à SVN puis à Git en moins de deux ans ! #TropBien
Bref, le script pour la conf de build sont des sources et il est normal de les tagger avec le code d'autant qu'il s'agit du comportement de base de l'outil.
L'argument que m'oppose @Philou (en dehors du el famoso c'est le progrès faut faire avec son temps), c'est qu'une release consomme énormément de temps de build au niveau des serveurs d'intégration continue, d'autant plus qu'une release exécutée avec le maven-release-plugin impose de rebuilder deux fois la même chose.
Et mon problème c'est que je suis à la fois d'accord avec @Philou mais je suis aussi d'accord avec moi-même ! #SaletéDeSchizophrénie
Donc j'ai décidé de creuser la question afin d'avoir le meilleur des deux mondes qui consisterait :
- À préserver un numéro de version unique, commun à tous les outils et parfaitement tenu à jour.
- À ne pas augmenter inutilement la charge des serveurs d'intégration continue qui sont souvent à la limite de la rupture. (Pour info, les jobs de build de @Philou durent plus de 6h... Juste un job oui... Donc l'argument du "faut pas rebuilder" est indiscutable)
Solutions possibles
La solution de @Philou et @CCous consiste à ne plus toucher aux versions des POM, mais qu'au moment de la publication dans Nexus ou Artifactory, le haché du commit soit récupéré ainsi que la date du jour et le nom de la branche pour construire un numéro de version unique à base d'une grosse concaténation afin d'estampiller ce dernier dans le répo d’artefacts.
J'oppose à cette bidouille une toute autre bidouille : lors de la release on incrémente le numéro de version mais on ne rebuild pas le code, à ce moment on se contente de récupérer le jar du commit précédent pour le republier sous un nouveau nom. De cette façon le numéro de version de Maven est bien incrémenté et les temps de build du CI restent courts y compris pendant la release (j'en ai déjà parlé avec @Kysofer et il va peut-être nous pondre un plugin Maven).
NDR : soyons clairs, tout cela relève de la grande bidouille mais quand il faut y aller il faut y aller.
En quoi consiste le lien ?
Simplement pour notifier tout le monde que nous ne sommes pas les seuls faisant face à cette problématique et que depuis Maven 3.5.0 trois properties ont été ajoutées afin de faciliter le travail :
- ${revision}
- ${sha1}
- ${changelist}
Ce qui va nous intéresser c'est la property ${revision}, en effet un POM et son enfant ressembleront à ceci mais en contrepartie il faut alimenter le numéro de version dans la ligne de commande en écrivant :
mvn -Drevision=1.0.0-SNAPSHOT clean install
De cette façon, un pom.xml ayant le bon numéro de version sera bien généré par Maven, en parallèle le numéro de version ne requiert plus une procédure de commit redondante qui rallongerait les temps de build, le numéro de version peut devenir dynamique et injectable via le C ; et puisque l'on s'inscrit dans ce que propose Maven alors si un développeur voit ${revision}, il saura que le numéro de version est dorénavant injecté au build et donc qu'on ne tord plus le coup à l'outil pour produire des révisions fictives dans un référentiel de binaires au détriment de la cohérence.
Je dirais que la contrepartie c'est de systématiquement publier le jar des sources avec le jar exécutable afin de préserver la corrélation entre version des sources et version du pom.
Je conclurais en affirmant que les problématiques de build sont pénibles et s'apparentent à de la botanique ! (c) @Chlouchloutte
J'avais entendu cela il y a quelques temps, que l'UE souhaitait que le terrain n'appartiennent plus à ses propriétaires mais qu'il soit nationalisé et loué à ces mêmes propriétaires. Ce faisant, le bail pourrait s'arrêter aussitôt qu'un propriétaire est trop pauvre pour payer la mise en conformité avec les nouvelles normes environnementales (imaginez l'arnaque si les changements climatiques étaient bel et bien dus à l'activité solaire et non au CO2).
De facto, seuls les plus riches rafleraient toutes les propriétés foncières de France, car ils seraient alors les seuls à être en mesure de payer les travaux de mise en conformité régulièrement.
Certes sur le coup, cela donne l'impression d'une perte nette pour ces grands propriétaires terriens, mais en réalité les petits propriétaires perdant leur droit de bail sur le terrain, ils n'auront d'autre choix que de partir et donc de laisser la place pour pas cher à ces mêmes grands propriétaires terriens qui détiendront alors un monopole du parc locatif ou les 1% seront propriétaires et les autres des locataires à jamais.
Mais quand on vous dit que l'UE nous veut du bien et que les lobbies les complots ça n'existe pas...
Edit : le lien vers la directive européenne qui impose cela.
Pour @Lenny, une liste des frameworks Java / Kotlin permettant de générer des PDF.
Dont celui-ci qui propose quelques exemples assez simples pour bien commencer.
La novlangue genderfluid est merveilleuse (sarcasme) car elle permet de faire du buzz avec un fait simple et banal.
Ici un homme qui se travesti en femme a eu un bébé avec un femme qui se travestie en homme via PMA.
Bref un homme et une femme ont eu un bébé. Voilà
Bon, je vais rebondir sur ce repost de HowTommy (et d'une manière générale à ses écrits ainsi qu'à ceux de Neko) parce que les deux sont victimes du même problème...
Je cite :
Je lis bcp de bêtises sur le monteur de Squeezie, alors on va faire simple : être d’extrême droite ce n’est pas "juste une opinion politique", c’est adhérer à un projet global, fondamentalement raciste, à tendance génocidaire, qui place une hiérarchie entre les êtres humains.
Donc non, dans l’absolu, on va pas lâcher la grappe à quelqu’un parce qu’il « exprime juste ses opinions politiques », vu que ce que tu appelles opinion a une conséquence réelle et morbide sur le monde réel dans lequel nous vivons mais t’es clairement pas concerné.e.
On est en 2020 wesh on devrait même pas en discuter encore, ça devrait être la base de la base.
L'arnaque de l'échiquier politique
D'une commune mesure, les media représentent l'échiquier politique sur une dimension comme ceci :
Le bien Ceukonpakompri Le Mâââl
|---------------------------------|---------------------------------|
Là se trouve les Là se trouve
"intellectuels tous les connards
de gauche" et racistes de droite
Mais n'y a-t-il que moi que ça choque ? Typiquement, on peut être pour les frontières et contre l'immigration afin de protéger le prolétariat du casse du droit du travail issu d'une main d’œuvre abondante, désespérée et pas chère (tenaillant ainsi les bas salaires) et ainsi lutter contre l'accumulation sans limite des richesses par l'actionnariat qui n'a aucun autre talent que celui d'avoir hériter son argent.
D'ailleurs, c'est un petit peu la thèse de ce raciste célèbre qui s'appelle Karl Marx dans son ouvrage "Le Capital".
Cette représentation gauche-droite absurde qui aplanit 99,999...% de la réalité n'existe que pour une seule raison : elle est particulièrement clivante. Soit tu es de mon côté, soit tu es de leur côté... Vous la sentez venir la représentation de merde ?
L'échiquier politique est en réalité multi-dimensionnel
Séparer des idées qui n'ont rien à voir en "une partie à gauche" et "l'autre partie à droite" - comme si elles pouvaient s’agréger naturellement parce qu'il existerait un camp du bien constitué de gens "qui ont compris" - est une vision enfantine et très Hollywoodienne du monde où il existe en "zentils" et les "mézants"...
Par exemple une personne lambda peut, sans qu'il n'y ait la moindre contradiction :
- Lutter contre le racisme car elle considère que l'idée que la couleur de peau conditionne tout chez un individu est infondée, stupide et nocive.
- Être croyante car elle a été élevée comme ça.
- Être contre les sectes car elles manipulent les gens pour leur profit (ndr. la religion ce n'est pas l'église).
- Être pour une sortie de l'UE car elle veut protéger les ouvriers de son pays du dumping social.
- Être contre la GPA (Grossesse Pour Autrui) car elle ne veut pas monnayer le corps des femmes pauvres et ses croyances vont contre.
- Être pour plus de sécurité dans son pays car elle a peur de la violence et de la délinquance.
- Être pour un contrôle strict et répressif des forces de police pour éviter une montée du totalitarisme.
- Être pour le nucléaire à court et moyen termes car c'est ce qui pollue le moins à cette heure.
- Être en faveur des énergies renouvelables d'une manière générale car c'est le moins risqué en cas de cataclysme.
- Être pour la cotisation sociale car cela finance des services publics
- Être contre les impôts car ils finances les banques.
- ...
Vous m'avez comprise, tous ces éléments ne sont pas contradictoires entre-eux, ils sont complémentaires et ne peuvent se représenter que dans un espace multidimensionnel car ils sont orthogonaux entre-eux. Mais du coup où se trouve ce personnage ? Dans quel camp le mettriez-vous avec la représentation classique ?
La réponse est nulpart, car le clivage gauche-droite ne permet pas de positionner un tel individu et c'est bien le but de cette dichotomie politique fictive. Une fois que l'on cesse de penser les individus comme des êtres complexes mais uniquement comme des éléments adhérents totalement à des agrégats forcés d'idées (aka les fachos, les gauchiasses, etc) alors il n'est plus possible de les penser comme des alliés potentiels dès qu'ils se trouvent dans un agrégat opposé.
Le pire, c'est qu'un tout petit critère arbitraire permet d'exclure n'importe qui, favorisant le "diviser pour mieux régner" au bénéfice des puissants qui jubilent de cette stupidité de masse. Et c'est ce qui est arrivé au monteur de Squeezie, pour un marque page, tiré d'un screenshot, pris à partir d'un zoom, fait depuis une vidéo de Squeezie et pointant vers une page du site E&R, ce monteur est devenu le mal incarné et Squeezie cautionne les fachos... #SophismeParAssimilation
En résumé
Je vais ressortir l'argument coup de poing des followers du compte Twitter parce qu'il s'applique bien ici aussi je trouve :

Cessez de penser dans le cadre que l'on vous impose et émancipez-vous, sans cela vous resterez des prolétaires toute votre vie car seuls pour vous défendre et combattre des gens plus puissants que vous et qui quant à eux mettent leurs différences de côté pour travailler en équipe à leur bénéfice commun.
Je cite l'article :
Seulement voilà, les tweets mettant en cause l’agence n’ont pas été du goût de la Société générale. Au point que le directeur de l’agence finira par contacter la libraire pour convenir d'un rendez-vous qui se révélera infructueux. "Trois semaines après, dans son bureau, l’actuel directeur, lors d’un entretien agressif et ubuesque, nous expliquait que la banque nous mettait dehors, à cause de ces tweets. Pas de raisons bancaires", se souvient Julie Goislard.
Depuis, elle a reçu plusieurs lettres recommandées l’informant de la fermeture de ses comptes personnels et professionnels sous 60 jours. Le compte de son compagnon et associé a subi le même sort. "Drôle de cadeau de Noël", écrit-elle sur Facebook.
Contactée par Le Parisien, la Société générale se refuse à tout commentaire, invoquant "la confidentialité" et le "secret bancaire". Elle indique cependant que "la banque peut fermer un compte bancaire à tout moment en respectant un préavis de 60 jours" sans qu'il soit nécessaire de "motiver sa décision".
Une raison de plus pour rester anonyme sur internet et sinon la Société Générale connaît-elle l'effet #Streisand ?
En résumé :
- Une attestation de dépôt de fonds (si nouvel actionnaire ou si l'apport ne se fait pas par incorporation du bénéfice) => seule la banque ou un notaire peut en délivrer une.
- Déclaration de filiation et de non-condamnation
- Photocopie d'une pièce d'identité en cours de validité pour chaque nouvel actionnaire
- Le formulaire M2 complété
- Le procès verbal (listant les articles modifiés des status juridiques)
- AGO si incorporation du bénéfice en fin d'année
- AGE si apport en numéraire via actionnaire (nouvel entrant ou existant)
- La liste des souscripteurs d'actions mise à jour
- Les statuts juridiques enregistrés aux impôts et mis à jour
- L'attestation de publication dans le JAL ou l'exemplaire du journal en question sinon
Voilà
En réalité Bash ne possède pas le concept de packages ou de namespaces mais il est possible de le reproduire à partir d'une convention de nommage (ce que propose ici Google).
Dans l'idée, il suffit de préfixer toutes les déclarations de fonctions par NOM_DU_PACKAGE:: et de faire la même chose pour les invocations. Par exemple avec un "Hello World!" :
# Définition
CORE::hello() {
echo "Hello ${1}!"
}
export -f CORE::hello
# Usage
CORE::hello "World"
Et ça marche. Par contre impossible de savoir si les double deux-points sont POSIX ou non.
Bon, je testerai dès la rentrée cette n-ième faille de sécurité de Windows ! lol
Un framework de mutation testing pour TypeScript et JavaScript.
Pour plus tard ! Merciii
.
Le chiffre est sûrement faux, mais le concept est bien réel !
En recherchant rapidement, selon cet article du Monde, 13 000 SDF sont morts dans les rues entre 2012 et 2016 (soit ~2600 / an en moyenne). Je rappelle que la France est un pays extrêmement riche, c'est même la 7-ème économie mondiale, mais où peut bien partir tout notre pognon ??? #EvasionFiscale

Bon bah tout est dans le titre... Dans ce post j'affirmais que :
Vous pouvez ne faire confiance à personne en ce qui concerne votre vie privée. Les meilleures boites se font hacker tous les jours et celles dont on ne parle pas ou peu sont juste celles qui sont meilleures pour étouffer les affaires !
Est-ce que vous pensez qu'il existe des sociétés ayant plus de moyens que Facebook, pouvant se payer de meilleurs ingénieurs que Facebook et détenant autant de données sensibles et intimes que Facebook ? (Pour info, le développeur-architecte sénior est à 950 K$ / an en 2019 chez Facebook hein).
Ca restreint pas mal le champs des possibles n'est-ce pas ? Et pourtant Facebook s'est encore une fois transformée en passoire... Dégagez votre appli Facebook, cette immondice est littéralement un spyware ; et pour votre santé mentale je vous recommanderais de dégager aussi Facebook de votre vie !
C'est à crever de rire je trouve ! Vous comprenez l'idée ?
Les grandes entreprises captent tellement de richesses et les redistribuent à si peu de monde que l'être humain "normal" n'a plus les moyens d'acheter. Aussi les seuls qui puissent encore dépenser quelque chose et assurer un vecteur de croissance à Microsoft sont les entreprises capables de s'offrir un panneau publicitaire. Et ici le panneau s'appelle Windows 10 et touche 4,5 milliards de prospects... #Rentable
Il y a quelques temps j'avais lu sur Twitter que "Bientôt... il faudra écouter une publicité avant de pouvoir téléphoner ou envoyer un texto..." La publicité permanente est un premier pas !
Suis-je la seule à ne pas vouloir de ce monde qui pousse perpétuellement à la sur-consommation, qui nous prends pour des acheteurs et non des êtres intelligents, sensibles et désintéressés ? Si vous aussi vous êtes contre un tel monde, alors commencer à dire non à Window 10 c'est agir contre le système tout-marchand. @Kysofer le dit tout le temps : Payer c'est voter !
Edit : Philou m'a indiqué que ça existait déjà.
Je suis morte de rire !
En gros, comme il est impossible de censurer le livre d'Edward Snowden, livre dans lequel il dévoile la surveillance de masse illégale à laquelle la CIA et l'armée américaine ont participée, ces deux entités criminelles ont trouvé une astuce : comme il s'agit de parler de choses classées "secret défense", le livre aurait dû être soumis à l'approbation de la CIA et de l'armée avant sa publication (publication depuis la Russie hein). Moralité, toutes les royalties du livre reviennent... roulement de tambours... à la CIA et à l'armée américaine !!! (> <) #Mafia
Je cite :
Le ministère de la Justice américain pourrait ne jamais être en mesure de poursuivre Edward Snowden pour avoir obtenu et diffusé des informations hautement classifiées provenant du réseau de la National Security Agency. Mais les avocats du ministère de la Justice ont décidé de s'en prendre à une source potentielle de revenus (pour Snowden mais également pour Macmillan Publishers) : ils ont engagé une action au civil contre lui pour la publication de son livre, Permanent Record.
[...]
Le mémoire de Snowden n’aurait pas été soumis à la CIA ou à la NSA pour un examen préalable à la publication, une pratique obligatoire parmi les anciens employés des agences de renseignement. En tant que tel, le ministère considère le livre comme une violation des obligations contractuelles et fiduciaires de Snowden et désigne les éditeurs comme codéfendeurs dans la poursuite.
Remarque :
- Le concept de cache ici pose problème puisque des méthodes qui transforment (à base de verbes) retournent en réalité quelque chose.
- Les méthodes avec des boolean ont des verbes, c'est une exception à la Yegorification du code.
// Usage :
object Main {
fun regularUseCase() {
// Given
val christmas = LocalDate(2019, 12, 25)
val calendar:HolidaysCalendar = HolidaysCalendarForYear(Year(2019))
// When
val daysOff:DateSet = calendar.daysOff()
// Then
println(daysOffs.contains(christmas)) // print true
}
fun cachedUseCase() {
// Given
val christmas = LocalDate(2019, 12, 25)
val cache:Cache = HolidaysCalendarCache()
// When
val daysOff2:HolidaysCalendar = cache.value(Year(2019))
val daysOff3:HolidaysCalendar = cache.value(Year(2019))
// Then
println(daysOff2.contains(christmas)) // print true
println(daysOff2 === daysOff3) // print true (same instance)
}
@JvmStatic
fun main() {
val main = Main()
main.regularUseCase()
main.cachedUseCase()
}
}
// Interfaces
interface DateSet {
/**
* Determine whether or not the specified date is in this set.
*
* @param date
* The date to research.
*
* @return true if the date exists in this set, false otherwise.
*/
fun contains(date:LocalDate):Boolean
/**
* Determine whether or not the specified date is in this set.
*
* @param date
* The date to research.
*
* @return true if the date exists in this set, false otherwise.
*/
fun contains(date:Calendar):Boolean
/**
* Return the current set of date as an iterable collection.
*
* @return A collection having all the date stored in this set.
*/
fun asCollection():Collection<LocalDate>
}
interface HolidaysCalendar {
/**
* Return a set of holiday dates.
*
* @return All holidays for a period (see implementation for more detail).
*/
fun daysOff():DateSet
/**
* The period covered by this calendar.
*
* @return Something in the CalenadrPeriod enumeration.
*/
fun range():CalenadrPeriod
}
class Cache<K, V> {
/**
* Determine whether or not the specified value exists in this cache.
*
* @param value
* The value to search.
*
* @return true if the value has been found, false otherwise.
*/
fun contains(value:V):Boolean
/**
* Determine whether or not a key exists in this cache.
*
* @param key
* The key to search.
*
* @return true if the key exists, false otherwise (reminder: a key cannot exists if linked to nothing).
*/
fun containsKey(key:K):Boolean
/**
* Retrieve the value related to the specified key.
*
* @param key
* The key related to the researched value.
*
* @return The value related to the given key.
*
* @throw UnexistingEntryException
* When the subsystem cached by this object is not able to restitute a value using the specified key.
*/
fun value(key:K):V
/**
* The list of keys used by this cache.
*
* @return The list of keys used by this cache.
*/
fun keys():List<K>
/**
* Remove the specified key in order to force an update.
*
* @param key
* The key of the cache entry to remove.
*/
fun remove(key:K)
/**
* Clear all entry is the current cache.
*/
fun reset()
}
// Implementation of HolidaysCalendar
class HolidaysCalendarForYear(private val year:Year):HolidaysCalendar
class HolidaysCalendarForMonth(private val year:Year, private val month:Month):HolidaysCalendar
// Implementation of Cache
class HolidaysCalendarCache:Cache<Year, HolidaysCalendar>Je cite :
Le report de l'age pivot à 64 ans était un leurre, comme l'avaient deviné certains, Macron va faire style de "lacher" là dessus pour mieux passer la seule chose qui l'importe : la retraite par point. [1]
La suite :
--> la CFDT va se retirer de la grève
--> bouuu les vilains grévistes qui continuent sont des extrémistes, cgtistes cheminots blabla, privilégiées blabla. prise d'otage ... et ça alors que le gouvernement a accepté de négocier[1] selon les réactions il va plus ou moins lâcher vite ou partiellement question de gérer le robinet du mouvement social selon le calendrier qui l'arrange
Voilà
Youhou, nouvelle version majeure de Linux Mint !
Et celle-ci est une LTS (Long Terms Support), ce qui signifie que c'est l'OS parfait pour migrer les PC d'une société. Je sais que @Kysofer a cela en tête depuis quelques mois donc je sens qu'il va me demander un coup de main entre Noël et nouvel an...
@Animal du coup si toi aussi tu as des dispos hein :)
Les liens vers les différents bureaux :