Pour @Chlouchloutte et @Lenny.
Chlouchloutte et moi discutions aujourd'hui du kata de code consistant à écrire un convertisseur de nombre décimaux en nombre romains. Son comportement est le suivant :
- À partir d'un Integer, je dois pouvoir récupérer sa valeur en écriture romaine sous la forme d'une String.
Comment le coder façon Yegor Bugayenko ?
Il y a deux façons de voir ce problème :
- Mettre en avant le concept de nombre
- Mettre en avant le concept de conversion.
1) Représenter d'abord les nombres
Je vais écrire l'interface suivante :
interface Converter {
fun value():String
}
Et un implémentation :
class IntegerAsRomanNumber(
private val number:Integer
) : Converter {
fun value():String {
// Conversion code
}
}
// Usage
val number = 123
val romanNumber = IntegerAsRomanNumber(number).value()
2) Représenter d'abord l'action de conversion
Nous conservons l'interface mais en précisant la structure dans le nom de la méthode :
interface Converter {
fun romanValue():String
}
Et son implémentation :
class Number(
private val number:Integer
) : Converter {
fun romanValue():String {
// Conversion code
}
}
Vous avez du remarquez que l'implémentation sera la même dans les deux cas et que la seul chose qui diffère sera le "wording". En réalité la première façon est verbeuse mais pratique puisqu'elle nous masque la problématique de conversion au profit de la mise en exergue du nouveau type de la donnée. Ce qui nous permettrait de créer plusieurs convertisseurs nous permettant de passer d'un type à un autre comme suit :
interface Converter<OUTPUT> {
fun value():OUTPUT
}
Exemple d'utilisation :
val number = 123
val egyptianNumber:String = RomanAsEgyptian(IntegerAsRoman(number)).value()
Et le concept de décoration fait sens à ce moment.
GitLab, le gestionnaire de référentiels Git basé sur le Web et développé par GitLab Inc. a été développé en Ruby on Rails (RoR), un framework web libre écrit en Ruby qui suit le motif de conception modèle-vue-contrôleur (MVC). Les co-fondateurs du projet nous donnent ici les raisons de ce choix. Lorsque Dmitriy Zaporozhets, cofondateur et membre de l'ingénierie, a décidé de construire GitLab, il a choisi de le faire avec Ruby on Rails, bien qu'il travaillait principalement en PHP à cette époque....
L'interview est très drôle aussitôt que l'on n'oublie pas son esprit critique. Je m'explique, le fondateur de Gitlab nous apprend que lui et son associé ont pris Ruby comme langage (alors que lui venait du PHP) et Rails comme framework (parce que ce dernier est très mature, super stable, documenté, toussa). Bref, le mec vante les mérites incroyables de RoR (Ruby On Rails) et des Gems Ruby, en clair que cette stack est juste incroyable...
Sauf qu'il explique après qu'ils ont du recoder une partie du kernel de Gitlab en Go (et aussi en C, de ce que j'ai pu constaté dans le code) car Ruby bah ça rame... La GUI a été recodée en Vue.js à la place de Rail, car RoR n'est pas assez "réactif" et ça rame et d'autres technos encore (NodeJS / Mongo / PHP / Redis lorsque l'on ouvre le capot). D'ailleurs et d'expérience, Gitlab est une des pires technos que je connaisse du point de vue OPS car elle contient bien trop de choses à installer, trop de systèmes de caches à configurer, trop d'utilisateurs Unix à créer, trop de permissions à affecter, etc.
Bon, le gars justifie le fait que ses choix technologiques étaient les meilleurs mais qu'ils ont du tout recoder quand même car RoR n'était pas adapté... Hum hum best choice ever donc pas vrai ? (눈_눈) #Bullshit
Si ce choix avait été le meilleur, rien n'aurait dû être recodé. RoR n'était tout simplement pas le meilleur choix. RoR est très bien pour les petites applications et les prototypes mais ne tient pas la charge. D'ailleurs l'implémentation JRuby (qui tourne sous Java) est plus rapide à l'exécution que l'implémentation d'origine !!! Le créateur de Ruby est bon pour créer un langage mais pas bon pour coder. Et encore, ne pas avoir du multi-thread natif et facile à utiliser en 2019 (typiquement les coroutines de Kotlin ou les async / await de TypeScript) ce devrait être considéré comme trèèèèèès embarrassant.
Pourquoi ce post alors ?
Parce qu'il dégouline de bullshit. Les mecs de Gitlab ont du recoder leur application mais il faut rassurer leurs investisseurs. Ils ont fait des choix discutables en mixant 5 ou 6 langages de programmation au sein du même outil (de ce que j'ai constaté Go, Ruby, C, PHP, JavaScript, SQL et NoSQL - et encore je m'étais arrêté là en 2018 d'où notre choix de Gitea qui avait le mérite d'être consistant même si moins fonctionnel déjà à cette époque).
Et en lisant l'interview, toute la novlangue du type est déployée pour réécrire une histoire technique désastreuse d'un projet commercialement fabuleux. Voilà pourquoi j'écris ce post, pour dénoncer cette réécriture "de vainqueur" qui devrait vous faire réfléchir à deux fois à la direction que prend Gitlab. #TraduisonsLes
Si vous suivez ce blog depuis longtemps, vous n’êtes pas sans savoir que j’achète de manière ponctuelle et raisonnée, des vêtements chez Sézane, And Other Stories ou encore Uniqlo. Des marques qui ne sont pas franchement connues pour leurs valeurs éthiques ni leur transparence.
Un avis et des liens parlant de la "qualité réelle" des produits Sezane et de leur provenance (Chine et Inde). Article à lire.
Being enthusiastic about a software project is not enough to be useful and helpful; in some cases enthusiasm only hurts.
Ce type est un trésor d'intelligence. Parvenir à effectuer des micro-changements est la seule manière de faire avancer les choses correctement. Découpons notre travail et nos PR !
Pour @Chlouchloutte et @Strawberry.
Jeu brillant, histoire intelligente, je testerai cela sur des collégiens dès que je le pourrai.
Meilleur site web que je n'ai jamais utilisé pour apprendre Git. Clairement, c'est une perle !
D'une manière générale, les théories sur Elon Musk me font rire mais je dois dire que celle-ci me turlupine, pour les non-anglophones :
Et si Elon Musk avait bâti tous ses produits seulement pour en tester les capacités sur Terre et ainsi démarrer un nouveau gouvernement sur Mars ?
- Vous avez Paypal, une incroyable façon de transférer de l'argent donc plus besoin de papier dans le sens où il n'y en aura pas là-bas.
- Tesla démontre fondamentalement sa capacité à réaliser des voitures solaires du fait des très faibles chances de pétrole sur Mars.
- Spacex sera en mesure de l'y conduire, lui ainsi que toutes les ressources et personnes qu'il aura choisi.
- L'hyperloop (train souterrain à grande vitesse) de Los Angeles sera l'unique façon de s'y déplacer, de labos en labos ou de mines en mines.
C'est vrai qu'au vu du rayonnement solaire martien et de l'atmosphère irrespirable, parcourir de longs trajets ne sera envisageable que si une capsule étanche (typiquement une voiture) est propulsée par un train ressemblant à l'hyperloop.
Ceci en plus, correspond parfaitement au constat que nos véhicules électriques excèdent difficilement les 70 Km/h si l'on veut parcourir de longs trajets afin d'augmenter leur d'autonomie.
J'avais signé, j'avais soutenu, j'avais financé ! Première victoire de canard en attendant l'appel de Google. Merci à La Quadrature du Net (づ ̄ ³ ̄)づ
Il est indispensable de continuer à mettre la pression aux FANGMAN (Facebook, Apple, Netflix, Google, Microsoft, Amazon, Nvidia) et d'arracher notre droit à la vie privée.
Je tiens à faire remarquer que Macron souhaite lever totalement l'anonymat sur internet et en ce sens va à contre courant de ce que nous avons fait !
Révolution Fiscale: un impôt sur le revenu pour la France du XXIème siècle.
Avec ce système, je pense que j'y perdrais mais je ne peux qu'être d'accord tant la chose est juste !
Comment ça, « ça n'a rien à voir » ?
Bon, vous l'aurez compris, on va causer à la fois informatique et politique… et j'vais encore être grossier, mais ils m'énervent à la fin, avec leurs conneries. Rooogn'tudju.
Très bon parallèle de Grisebouille exposant les techniques d'optimisation de code appliquées à la fraude fiscale.
Pour @doudou, le tuto se comprend en quelques minutes et traduit parfaitement la facilité avec laquelle il est possible de traquer ses utilisateurs.
Belle explication en tout cas !
Un magnifique tour de magie :D
Pour @strawberry :D
Incroyable. Mais si ça marche, ce n'est pas stupide.
Merci à ABYSS Project pour ce retour d'expérience sur les mises à jour avec Ansible.
Un tuto expliquant HBase et le concept de bases orientées colonnes (et non lignes / n-uplets).
Oh mon dieu, cette explication est tellement claire !!!! Pourquoi est-ce que je n'ai pas eu cela dans mes cours de traitement du signal dans le supérieur moi ??? Merci à l'auteur <3
Chrome va bloquer les extensions µBlock-Origin (publicité) et uMatrix (tracking).
J'ai deux questions aux utilisateurs de Chrome :
-
À quel moment préférez-vous les intérêts commerciaux de Google à votre vie privée ?
-
Dans quel mesure savoir que Google constitue votre profil psychologique détaillé, revend ce profil à littéralement plus d'un millier d'entreprises et le transmet à quasiment tous les services de surveillance du monde, ne vous pose-t-il pas de problèmes ?