C'est bête mais les USA ne subiraient pas deux fusillades par semaine, ils pourraient très bien poser des brouilleurs 5G dans les écoles.
Mais il faut parvenir à appeler les secours quand ça arrive donc ça n'est pas possible.
La définition même d'un shit-hole.
Le rêve américain est une masquarade et il faut être en train de dormir pour ne pas s'en apercevoir.
Georges CARLIN
Nous sommes en 2024 et ça fait 30 ans que L'Union Européenne demande à la France de privatiser son système de retraite, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser l'éducation nationale, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser la santé publique, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser les transports publics, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de détruire son agriculture, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
Mais c'est pas finit !
Ça fait 30 ans que l'Union Européenne demande à la France de privatiser l'énergie, ça fait 30 ans que les français ne veulent pas, et ça fait 30 ans qu'ils élisent systématiquement des dirigeants en faveur de l'Union Européenne et de cette directive.
En fait, ça fait 30 ans que les français votent comme des cons. C'est agréable de savoir que certaines choses ne changent pas 🥳
Pour tout le reste, il y a les privatisations de l'Union Européenne 🫠
J'ai décidé de taper autant que je le pourrai sur Mozilla, ce fond d'investissement qui se fait passer pour une ONG au service du logiciel libre. Ce post est donc un hommage à @Sebsauvage et sa section Les trucs qui m'énervent.
Depuis quelques mois, l'un des trucs qui me font pester contre Firefox c'est que dès qu'il ouvre un PDF dans un nouvel onglet, cet imbécile l'enregistre systématiquement dans ~/Téléchargements
; et non plus dans /temp
.
Ce qui fait que ce répertoire qui était à moi est à présent blindé de centaines de fichiers inutiles que Firefox y a déposé sans me demander mon avis, et au milieu, j'ai mes quelques fichiers bien précieux que je souhaitais conserver mais qui deviennent très difficiles à retrouver parce que je ne sais pas forcément distinguer leurs noms.
Donc à chaque fois, c'est parti pour non seulement un quart d'heure d'ouverture / relecture, mais en plus pour un nettoyage manuel et régulier de ce répertoire. Comme si je n'avais que ça à faire... #FuckYouMozilla
Voilà Mozilla, dorénavant je te hais. Tu viens d'atteindre le niveau Macron/Soros.
Tout est dans le titre.
L'article propose une explication des éléments constitutifs de la lib Normalize.css
afin de comprendre les choix qui y ont été faits, leurs conséquences et la motivation à leur origine.
Dans la pratique, plutôt que d'annuler les CSS intégrés aux différents navigateurs, Normalize.css
tente de les faire converger vers un même rendu.
J'approuve la démarche !
Edit le sevrage brutal m'a permis de me rendre compte de trucs complément dingues ! 😱 Par exemple je lisais True Beauty et un passage m'a fait rire. Aussitôt, mon premier réflexe a été d'ouvrir un onglet pour me rendre sur mon réseau sociale préféré. Car oui, j'ai assimilé les pics de rire, et donc de dopamine, à ce site. Ainsi quand j'en ai un, je veux y retourner et c'est involontaire 😣
Cela fait 5 jours et je n'ai pas craqué, mais à présent, je suis rentrée dans la phase consciente du manque, ce qui fait que j'y pense plusieurs fois par jour, notamment à chaque fois que je m'ennuie.
Vidéo courte expliquant la boucle d'addiction engendrée par TikTok sur notre cerveau. On peut étendre cela a bien d'autres sites web : Instagram, Pinterest, Imgur, 9gag, Facebook, etc.
Ces réseaux de consommation de vidéos ou de textes courts ne sont pas des réseaux sociaux mais des systèmes d'addiction qui s'étendent à l'échelle mondiale. Ces sites distillent une drogue dure directement dans notre cerveau, la dopamine, ce qui nous empêchera de jouir pleinement de notre temps de vie une fois atteints 😨
Je me suis pris une claque pendant la vidéo car cela faisait plusieurs mois que je me voyais scroller comme une abrutie en sachant que cela ne m'apportait rien. Ce qui me met un stop à chaque fois, c'est de repenser à @Strawberry qui me disait qu'elle se voyait comme une zombie devant son mobile, et souvent, moi, c'est pareil 😥
Je me vais y mettre un terme ce soir même. Ce sera mon effort à tenir cette année et pour le restant de ma vie. Bonne chance à tous ceux qui s'en sont rendus compte et qui traverseront la même chose.
En quelques étapes :
-
Mettre à jour son système
sudo apt update && sudo apt upgrade
-
Cloner le projet
git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
-
Exécuter le script d'installation présent à la racine du répo Git fraîchement cloné.
sudo ./retropie_setup.sh
-
Choisir les options d'installation dans l'utilitaire. Apparemment "Basic install" convient dans la plupart des cas.
La dysphorie de genre et la dysphorie d'une manière générale sont-elles des troubles mentaux ?
Très difficile d'aborder cette discussion en famille, tant le sujet est porté sur l'émotion et la morale.
Selon Wikipédia, ce sont des termes cliniques définis et utilisés en psychiatrie afin de caractériser un trouble chez un patient. Donc oui, pour l'instant la dysphorie est bien considérée par la médecine comme une pathologie, mais la question est : pour encore combien de temps ?
En effet, l'homosexualité était, elle-aussi, considérée comme un trouble mentale pendant des décennies avant que la psychiatrie ne se corrige. Quid de la dysphorie ?
Mon point de vue sur la question est pragmatique, pour peu qu'il intéresse quelqu'un :
-
Pour qu'un homosexuel puisse être homosexuel, il suffit que personne n'intervienne. Durant la vie du sujet, il n'y aura aucun effort à fournir pour maintenir sa état d'homosexuel. Être homosexuel est sa condition de base.
-
Pour qu'une personne puisse devenir trans, il faut qu'un médecin intervienne, d'abord via des traitements hormonaux et éventuellement via une ou plusieurs opérations chirurgicales. S'enchainera après des soins de santé toute la vie de la personne afin de maintenir son état à flot. La transexualité n'est pas sa condition de base.
C'est à cause cette intervention médicale, qui arrivera forcément à une étape ou une autre du processus de transition, que je pense que la dysphorie de genre restera considérée comme une pathologie; puisque impliquant un traitement... Enfin tant que l'idéologie de normalisation des minorités et d'anormalisation de la majorité n'y mettra pas son grain de sel.
Extrait de la page Wikipédia
Dysphorie de genre est une qualification médicale utilisée dans le manuel de l'Association américaine de psychiatrie (APA) pour décrire la détresse d'une personne transgenre face à un sentiment d'inadéquation entre son genre assigné et son identité de genre. Au fur et à mesure des révisions de ce manuel, les expressions transsexualisme, incongruence de genre puis dysphorie de genre ont été successivement utilisées. Depuis 2013, l'APA insiste sur le fait que « la non-conformité de genre elle-même n'est pas un trouble mental. La dysphorie de genre est caractérisée par la présence associée d'une souffrance clinique significative[1]. »
Ce trouble affecte de 0,005 à 0,014 % des personnes nées de sexe masculin, et de 0,002 à 0,003 % des personnes nées de sexe féminin[2].
Excellent !
Cela me donne envie de faire cette comparaison :
-
Les entreprises font ce qu'elles veulent, l'emprunte carbone, l'éco-conception, c'est du bullshit face au bénéfice perçu par le sacro-saint actionnariat même pas fiscalisé en France en plus (hein si encore ça finançait nos retraites et nos écoles).
-
Par contre, pour être éco-responsable, les citoyens quant à eux doivent éviter de manger de la viande, préférer les transports en commun ou le vélo, utiliser des pailles en carton recyclé qui s’effritent en 2 min et ne plus pouvoir séparer les bouteilles de leur bouchon... Sans parler des e-mails à effacer et toutes les autres banalités qui vont avec.
Peut-on parler des empruntes carbone et énergétique de ces lave-linges LG ? Peut-on parler d'une loi qui protégerait vraiment les humains de ces réels pollueurs ? Peut-on lancer un mouvement qui boycotterait des marques comme LG qui n'en ont rien à carrer de leur impact environnemental ? Peut-on demander aux députés "verts" ce qu'ils en pensent et ce qu'ils comptent faire pour empêcher cela ? Parce que ça fait 40 ans qu'on les attend...
Les masses prolétaires sont le carbone que l'élite veut réduire. Plus vite l'humanité le comprendra et mieux elle pourra se défendre.
C'est pourquoi je pense à présent qu'il faut polluer individuellement un maximum jusqu'à ce qu'une loi intransigeante soit rédigée. Une loi interdisant aux faibles comme aux puissants le moindre écart.
En attendant, l'éco-responsabilité n'est ni plus ni moins que de la propagande visant à laver les cervelles et éviter de regarder l'incendie au milieu de la forêt, nommons-le : l'hyper-bourgeoisie et les multi-nationales.
Cela peut se faire à partir de 2 ans. Le fait que l'État ne reconnaîtrait pas l'autisme avant les 10 ans du patient est une légende urbaine.
À ce jour, le diagnostic de l’autisme est clinique. Le plus souvent, le diagnostic peut être établi à partir de l’âge de 2 ans. Il repose sur un faisceau d’argument s cliniques recueillis dans des situations variées par différents professionnels. Il est associé à une évaluation des troubles et des capacités ainsi qu’à la recherche de maladies associées. Il se fait en collaboration avec la famille.
Edit comme j'avais des doutes sur le benchmark lancé depuis Intellij, j'ai recodé un comparatif complet qui aura tourné 4 heures sur ma machine
Avec Kotlin, sous Java 21, en utilisant JMH, j'obtiens des résultats en total contradiction avec ceux obtenus via IntelliJ. L'écart passe de 12% à 2,2% dans le pire des cas.
Pour mon benchmark, j'ai calculé la longueur d'une String
avec la fonction suivante : 2 * str.length + 1
. Le but étant d'illustrer quel type d'appel est le plus rapide pour effectuer ce calcul.
Voici mes tableaux de comparatifs :
Benchmark (Sorted by Worst) | Score | Error | Worst | Best | Units | Note Relative | Gain |
---|---|---|---|---|---|---|---|
ValueClass(str).size() | 2 252 | 34 | 2 218 | 2 287 | ops/us | 1,000 | 0,0 % |
build_lambda(str)() | 2 269 | 25 | 2 244 | 2 294 | ops/us | 1,012 | 1,2 % |
Class::size(str) | 2 282 | 37 | 2 245 | 2 320 | ops/us | 1,012 | 1,2 % |
OpenIntance(str).size() | 2 275 | 27 | 2 249 | 2 302 | ops/us | 1,014 | 1,4 % |
Instance(str).size() | 2 285 | 37 | 2 249 | 2 322 | ops/us | 1,014 | 1,4 % |
DataClass(str).size() | 2 273 | 22 | 2 251 | 2 295 | ops/us | 1,015 | 1,5 % |
object.method(str) | 2 272 | 19 | 2 253 | 2 291 | ops/us | 1,016 | 1,6 % |
this.size(str) | 2 282 | 28 | 2 254 | 2 310 | ops/us | 1,016 | 1,6 % |
build_anonymous_function(str)() | 2 266 | 5 | 2 261 | 2 271 | ops/us | 1,019 | 1,9 % |
Benchmark (Sorted by Best) | Score | Error | Worst | Best | Units | Note Relative | Gain |
---|---|---|---|---|---|---|---|
build_anonymous_function(str)() | 2 266 | 5 | 2 261 | 2 271 | ops/us | 1,000 | 0,0 % |
ValueClass(str).size() | 2 252 | 34 | 2 218 | 2 287 | ops/us | 1,007 | 0,7 % |
object.method(str) | 2 272 | 19 | 2 253 | 2 291 | ops/us | 1,009 | 0,9 % |
build_lambda(str)() | 2 269 | 25 | 2 244 | 2 294 | ops/us | 1,010 | 1,0 % |
DataClass(str).size() | 2 273 | 22 | 2 251 | 2 295 | ops/us | 1,011 | 1,1 % |
OpenIntance(str).size() | 2 275 | 27 | 2 249 | 2 302 | ops/us | 1,014 | 1,4 % |
this.size(str) | 2 282 | 28 | 2 254 | 2 310 | ops/us | 1,017 | 1,7 % |
Class::size(str) | 2 282 | 37 | 2 245 | 2 320 | ops/us | 1,021 | 2,1 % |
Instance(str).size() | 2 285 | 37 | 2 249 | 2 322 | ops/us | 1,022 | 2,2 % |
Benchmark (Sorted by Score) | Score | Error | Worst | Best | Units | Note Relative | Gain |
---|---|---|---|---|---|---|---|
ValueClass(str).size() | 2 252 | 34 | 2 218 | 2 287 | ops/us | 1,000 | 0,0 % |
build_anonymous_function(str)() | 2 266 | 5 | 2 261 | 2 271 | ops/us | 1,006 | 0,6 % |
build_lambda(str)() | 2 269 | 25 | 2 244 | 2 294 | ops/us | 1,007 | 0,7 % |
object.method(str) | 2 272 | 19 | 2 253 | 2 291 | ops/us | 1,009 | 0,9 % |
DataClass(str).size() | 2 273 | 22 | 2 251 | 2 295 | ops/us | 1,009 | 0,9 % |
OpenIntance(str).size() | 2 275 | 27 | 2 249 | 2 302 | ops/us | 1,010 | 1,0 % |
this.size(str) | 2 282 | 28 | 2 254 | 2 310 | ops/us | 1,013 | 1,3 % |
Class::size(str) | 2 282 | 37 | 2 245 | 2 320 | ops/us | 1,013 | 1,3 % |
Instance(str).size() | 2 285 | 37 | 2 249 | 2 322 | ops/us | 1,015 | 1,5 % |
Conclusion après benchmark
Créer des instances à la Yegor Bugayenko semble être globalemment l'une si ce n'est la meilleure des solutions lorsque l'on observe son positionnement qui est au pire moyen sinon deux fois premier.
J'ai passé le nouvel an avec @Kysofer & @Chlouloutte. Quand tous les enfants ont le même âge c'est vraiment sympa ; surtout quand ils se couchent tous en même temps :P
Mais passons, ce matin après ce qui sera déjà l'une des plus courtes nuit de cette nouvelle année, je discute avec @Kysofer de ces projets pour 2024, il me sort un truc improbable :
Je pense que je vais abandonner la programmation orientée objet pour la programmation fonctionnelle...
Là, je le regarde limite choquée... Il faut dire que lui et moi partageons - je devrais dire partagions - le même avis sur la programmation fonctionnelle, notamment depuis nos déboires en OCaml (merci le programme de MPSI).
Donc, avec le plus grand respect je lui réponds :
Nani the fuck !?
À ma décharge je n'ai pas bu un seul verre d'alcool depuis la grossesse de ma petite dernière. Et oui. :P
Là il m'explique tout un tas de trucs et je dois dire que je me sens déstabilisée. Je m'explique, j'ai vécu trop de fois le fait de devoir maintenir du Scala pour savoir à quel point, sur le temps long, la programmation fonctionnelle pure devient encore moins maintenable que du Java + Spring Boot.
D'autant que je m'attendais à ce qu'il m'annonce qu'il allait (enfin) se monter un Shaarli.
Bref son idée est dirigée par les contraintes suivantes :
- Avoir un code dirigé par des contrats (au sens interfaces Java) dont le respect du typage est prouvé lors de la compilation et garanti lors de l'exécution.
- Ne pas avoir besoin de créer des instances techniques qui implémentent ces contrats, afin d'encapsuler des données dedans.
- Parvenir quand même à encapsuler les données pour les protéger mais sans jamais créer de nouvelles instances (cf. le point précédent).
- Avoir les mêmes performance d'exécution que du chaînage d'appels de fonctions
static
; et donc l'eldorado du zero GC-time. - Permettre une exécution différée/lazy/paresseuse.
Quand on lit le truc, on se dit que la vie n'est plus à un paradoxe prêt, mais pourtant sa façon de faire fonctionne.
Je vais essayer de vous décrire ce qu'il m'a expliqué afin de mieux l'ingérer moi-même.
Exemple : Déterminer si deux trucs sont égaux
Dans tous les cas de figure, nous allons supposer que les données sont décorées par une implémentation de l'interface suivante qui permet de les représenter sous la forme d'un tableau d'octets.
interface RawData {
fun asBytes():ByteArray
}
Version OOP Pure
1) On exprime le concept de vérification via une interface :
interface Check {
fun status():Boolean
}
Ensuite on fournit une implémentation de l'interface Check
qui soit spécialisée dans la comparaison de deux RawData
:
class IsEqual(
private val left:RawData,
private val right:RawData
):Check {
override fun status():Boolean {
return this.isSameInstances() || this.haveSameBytes()
}
private fun haveSameBytes():Boolean {
return left.asBytes().contentEquals(right.asBytes())
}
private fun isSameInstances():Boolean {
return left === right
}
}
Et ça s'utilise comme ceci :
val left:RawData = StrAsData("same data")
val right:RawData = StrAsData("same data")
val comparison:Boolean = IsEqual(left, right).status()
Problème
Pour comparer deux objets on doit forcément créer une instance de IsEqual
puis invoquer une méthode dessus. Sur JRE, c'est ~12% de temps de calcul supplémentaire par rapport à un simple appel de méthode statiques !
Version PF pure
Avant toute chose, il faut comprendre ce qu'est un contrat pour @Kysofer. C'est un truc qui va prouver à la compilation que les types d'entrée et de sortie soient bien respectés, ce qui fait que l'implémentation A pourra se substituer à l'implémentation B sans problème lors du runtime.
Mais comment peut-on produire l'équivalent d'une interface en PF ?
=> On passe par des fonctions de premier ordre.
En effet, une méthode qui reçoit une fonction de premier ordre ne sait pas ce qu'elle va exécuter. Elle sait juste que la fonction prendra un certain type en entrée et un certain type en retour. Le reste, c'est le compilateur qui agit.
Si l'on reprend l'interface Check
cela nous donne le prototype suivant :
val prototype:() -> Boolean
C'est-à-dire un Predicat
sans paramètre.
Maintenant passons à l'implémentation naïve, ceci nous donne :
fun isEqual(left:RawData, right:RawData):() -> Boolean {
return {
isSameInstances(left, right) || haveSameBytes(left, right)
}
}
private inline fun haveSameBytes(left:RawData, right:RawData):Boolean {
return left.asBytes().contentEquals(right.asBytes())
}
private inline fun isSameInstances(left:RawData, right:RawData):Boolean {
return left === right
}
On voit bien que la fonction isEqual(..)
retourne une fonction de premier ordre qui elle-même retournera un Boolean
.
Rappel
En Kotlin, les lambda sont déclarées entre deux accolades { .. }
.
Sauf que cet exemple a un problème puisqu'une lambda, sur JRE tout du moins, c'est une instance de l'interface Function
ou l'un de ses équivalents. Bref, il n'y a pas de gain en terme de performance par rapport la version OOP.
Pour l'obtenir, il suffit de remplacer la création d'une lambda par un pointeur sur une fonction anonyme, ce qui nous donne :
fun isEqual(left:RawData, right:RawData) = fun():Boolean {
return isSameInstances(left, right) || haveSameBytes(left, right)
}
Et la ça devient magique car la fonction anonyme étant écrite directement dans le byte-code et épinglée une et une seule fois en mémoire, cela revient à avoir un pointeur sur fonction qui exécutera la-dite fonction.
=> Soit un gain de 12% en termes de performance, ce qui fait qu'on rattrape la vitesse d'exécution d'un chaînage de méthodes statiques.
Mieux que cela, @Kysofer s'appuie sur une variante de la Curryfication . En effet, la méthode isEqual(..)
sert à encapsuler les données dans la pile d'appel pour les rendre utilisables que par la fonction anonyme. Donc il devient impossible de savoir ce qui sera utilisé par la lambda qui sera retournée.
=> Les paramètres left
et right
sont bien encapsulés dans la lambda !
Si on résume
- Le fait que la fonction
isEqual(..)
retourne une lambda et non un résultat fait que l'on va déclarer un contrat et donc rendre les lambda interchangeables. - Le fait que l'on retourne une fonction et non un résultat permet un calcul différé/paresseux potentiellement dans un autre thread.
- Le fait que l'on passe par une fonction anonyme qui utilisera les paramètres de la fonction déclarée fait qu'on encapsulera bien les données avant d'exécuter quoi que ce soit dessus.
- Le fait que tout soit
fonction
garanti l'absence de création d'instances techniques.
Nous avons donc bien là une version fonctionnelle de l'encapsulation et des contrats de l'OOP.
Ça aura pris 15 ans mais je pense être réconciliée totalement avec la PF (O_O) ; sauf le récursif, ça jamais ! En tout cas pas avant une démonstration comme celle-ci :P
Arf, je commence l'année en lisant un article pareil...
Comment faire pour sauver Firefox alors qu'il n'est plus la priorité de Mozilla depuis quelques années ? Simple, ne l'installons plus chez personne. Firefox doit mourir au profit de ses petits frères comme Waterfox ou Librefox.
Comment le financer ? En donnant à ces forks et non plus à Mozilla.
Comment leur donner de la visibilité ? En assurant que chacun utilise un user-agent qui n'a plus rien à voir avec celui de Firefox du type "Bye bye Mozilla". Quand Mint avait abandonné le user-agent de Ubuntu, alors le rang de Ubuntu avait dégringolé en quelques mois sur Distrowatch.
Comment renforcer Waterfox et Librefox ? En veillant à ce que les communautés derrière ces deux projets fusionnent ou au moins se soutiennent, car on est plus forts à plusieurs.
Ma résolution de cette année sera de contribuer à la mise à mort définitive de Firefox afin qu'un nouvel élu puisse prendre sa place. Un élu qui ne sera structurellement pas noyautable par les GAFAM... 😌
L'UE qui risque de stopper net le logiciel libre en Europe sous le prétexte de la sécurité. En même temps supporter ces "communistes d'internet" comme dirait Balmer, alors que l'UE veut du business et rien d'autre que du business, quelle idée !
Sortons de ce piège à rats où des diplomates non-élus, votent des lois au profit des lobbyings, qui organiseront la société contre nous.
P.S : d'ailleurs l'UPR se présente aux Européennes, si c'est pas beau ça ! (Ce qu'il ne faut pas faire pour d'obtenir du financement et du temps de parole).
La balise <slot>
de HTML5 permet de variabiliser la balise <template>
de HTML5, ce qui représente la moitié des besoins d'une SPA.
À cette heure, les <slot>
sont pris en charge à 96% selon caniuse.
Merci à Kalvn pour le lien.
Avant ces vacances de Noël, on m'a confié la tâche de déterminer quelle techno utiliser pour coder plusieurs fronts.
J'avais regardé les frameworks SPA via Aurelia et Vue et les pages générées côté serveur via Twig que j'ai toujours adoré 😍.
Ce tuto de Kalvn tombe à point nommé puisqu'il complète très bien l'usage de la balise <template>
.
Tout est dans le titre. Comment se prémunir des attaques de type XSS.
Tour à fait d'accord. J'ajouterai à mort les interfaces tactiles pour les micro-ondes et les plaques de cuissons 🤬
Ces deux produits maltraitent de manière ignoble les aveugles !
Dans le cas du micro-ondes, la nuit quand il faut réchauffer un biberon, c'est une misère avec la pénombre ; et c'est tout le temps plein de traces en journée.
Dans le cas des plaques de cuisson, à la moindre goutte d'eau ça change le réglage voire le bloque. Pire, si un liquide bouillant tombe dessus, il faut se brûler pour arrêter la plaque car ça ne marche pas avec des gants... 🤬
J'ajoute à la liste de @Sebsauvage ceux qui mettent du tactile partout et je boycott pour ma part toutes ces marques car payer c'est voter
Je pense qu'il faut faire crever ces imbéciles en faisant d'eux des exemples
(╯° □°) ╯︵ ┻━┻
Dernièrement je regardais les nouveautés en termes de frameworks CSS et globalement il y la liste suivante :
- Bootstrap
- Bulma
- Tailwind
- Foundation
- Skeleton
- Pure
- Tachyons
J'avais beaucoup d'espoir dans Tailwind qui adopte une approche par contraintes, dans le sens où il permet, sur chaque composant, d'appliquer des classes du type "à droite, vertical, graissé, etc" et c'est la combinaison de ces classes qui définira le rendu définitif du composant #SexySur20
A l'opposé, il y a Bulma où des composants déjà prêts existent et où les classes sont du type "burger-menu".
Sauf que je viens de m'apercevoir que Tailwind repose sur la mouvance JS bullshit dont la Comitstrip suivante matérialise parfaitement l'hérésie des fashions victims qui servissent dans l'industrie depuis un moment déjà :
Bref, il ne reste plus que Pure et Bulma comme frameworks CSS qui soient de vrais frameworks CSS paramétrables et simples. Certains me demanderont pourquoi j'insiste le fait d'avoir des CSS purs et durs et l'argument est simple : les SPA/PWA, j'en suis revenue !
Argumentons quand même. Selon moi, à moins que votre site implique au moins deux critères parmi les suivants (si ce n'est pas trois) :
- Du streaming de TRÈS gros fichiers (genre youtube)
- Des temps de surf qui se comptent en heureS (m'voyez le 'S') voire en jours
- Des actions ultra complexes (genre éditeur de photo en ligne)
- Le besoin de déporter des calculs côté clients si lourds qu'aucune infra sur terre ne tiendrait la charge si tout était centralisé côté serveur (ou alors à un coût équivalent à celui de ChatGPT)
- Le besoin de travailler en mode hors connexion
=> alors les SPA/PWA sont une mauvaise idée.
Du coup, la seule manière de pouvoir coder un design system qui fonctionne à la fois dans des MPA (ie. terme à la mode pour dire "pages générées côté serveur" comme Papy faisait avant en PHP) mais aussi dans des SPA/PWA, c'est d'avoir un framework CSS indépendant de tout JS et qui soit téléchargé en tant que fichier CSS et non JS.
Bref, je vais zoomer sur Pure histoire de voir ce qu'il est devenu - et peut-être Cardinal aussi - mais dans le fond, je pense garder Bulma d'autant que son développement aurait récemment repris :P
@Sebsauvage ces derniers temps je suis souvent en désaccord avec toi, mais ça n'empêche pas que quand je partage ton avis, je le fais à 100000% (oui rien que ça) et là, je partage vraiment ton avis !!
Permets-moi d'ajouter à ta liste, les développeurs qui empêchent le zoom sur les sites mobiles quand c'est écrit trop petit
ヽ(`⌒´メ)ノ
Totalement d'accord avec toi. J'ajouterai que le principe de taxe sur la consommation n'a de sens que pour des gouvernements sans projet.
Je me raccroche à l'idée de Houellebecq qui a presque 20 ans à présent.
1. L'état récupère le droit (exclusif) de créer ET de détruire la monnaie.
L'état aura bien l'exclusivité de ce droit. Donc ça va fâcher les banques. Actuellement elles fabriquent de la monnaie lorsqu'elles octroient un crédit plutôt que de prêter l'argent déposé par les épargnants. Puis elles détruisent l'argent qu'elles ont créé à chaque mensualité. Les intérêts qu'elles prélèvent proviennent de la création monétaire des crédits futurs (merci à nos enfants de se sacrifier pour nous)... Quant à l'argent des épargnants, elles le spéculent en bourse ou s'en servent comme collatéral.
Avec ce retour à la normale, elles pourront spéculer en bourse mais uniquement sur leurs recettes et sur leurs fonds propres, et devront prêter l'argent de leurs épargnants si elles souhaitent faire crédit. Par contre, impossible pour les épargnant d'utiliser leur argent si ce dernier a été prêté... Mais celui-ci étant mobilisé, il sera rapporteur d'intérêts !
Les banques devront donc proposer deux types de comptes : les comptes rémunérés puisque l'argent sera loué à quelqu'un, et les comptes non-rémunérés pour une réserve d'argent toujours disponible. La possibilité de faire crédit n'est plus donné aux banques mais confiée au marché via les épargnants, c'est nettement plus démocratique et horizontal comme mécanique de décision des taux puisque ça repose sur une offre et une demande.
Mais quel bourgeois voudrait ça ?
2. L'état fabrique de la monnaie pour financer ses services publics et ses grands-travaux.
Plus besoin de quémander une pièce sur les marchés financiers. Le rapport de force s'inverse, l'état redevient souverain. Par contre, il faut qu'il organise des projets de société à mener chaque année. Nous passerions d'un gouvernement qui administre à un gouvernement qui entreprend, et c'est un tout autre paradigme.
Évidement c'est impossible tant que la mafia parlementaire à régime électif propagandiste nous gouverne (coucou l'UE/BCE). Il faut que nous votions les lois nous-mêmes pour que ça marche.
L'avantage, c'est que les problèmes de financement des services publics et de la retraite disparaissent immédiatement ! Et les privatisations des services publics aussi...
3. L'état détruit les excédents monétaires périodiquement (tous les mois, trimestres, semestres, années).
L'argent produit par création monétaire ex-nihilo va accentuer le risque d'inflation, pour contrôler l'inflation et non la subir, l'état agira sur la quantité de monnaie qui circule à chaque instant.
Techniquement, si trop de monnaie a été fabriqué pendant une période, alors l'état lève de l'impôt en fonction de cet excédent, ce qui lui permet de faire revenir la quantité excédentaire d'argent pour la détruire.
Si pas assez d'argent a été créé, alors l'état fabrique de nouveau de la monnaie et durant cette période, il n'y a pas d'impôt. C'est sûrement cet aspect qui j'apprécie le plus dans ce système.
Mais bon, Houellebecq a été taxé d'extrême-droite quelque fois par certains radicaux de la gauche progrès/woke, donc même si certaines de ces idées sont bonnes, puisqu'il n'est pas fréquentable, ses idées sont mauvaises c'est évident :'(
Il y a une idée qui me travaille depuis quelques temps et il faut que je l'écrive pour m'en débarrasser.
Les médias nous disent qu'il ne faut pas aider les plus pauvres car cela encourage l'assistanat. Nous pouvons même lire et entendre dans le monde occidental des milliardaires ou des journalistes nous expliquer que rien n'est gratuit, car au bout de course, il y a toujours quelqu'un qui a travaillé ; et c'est vrai.
J'écoutais dernièrement Warren Buffet parler de l'idée d'une sécurité sociale aux USA et le milliardaire s'appuyait sur cet argument pour expliquer que cela ferait du prolétariat des assistés voire des vampires qui suceraient la richesse produite par les travailleurs.
Et c'est ici que mon esprit s'est emballé...
Taxer la richesse produite par les travailleurs pour son bénéfice personnel, c'est la définition même d'un actionnaire. Fondamentalement, si on veut être en accord avec l'idée qu'il ne faut pas taxer la richesse des travailleurs pour une sécurité sociale car on est de droite néo-libérale, alors il faut être en accord avec l'idée qu'il faut interdire l’actionnariat qui fait la même chose.
Mais l'inverse est vrai aussi, si on accepte de taxer la richesse pour une sécurité sociale, alors on accepte l'idée même de taxer la richesse et donc l'actionnariat ne devrait pas être un problème pour la gauche socialo-communiste.
En fait, les deux camps s'accordent pour taxer la richesse produite par les travailleurs, mais chaque camp ne veut l'attribuer qu'à ce qui l'intéresse. Je trouve que c'est quand même moralement supérieur de vouloir taxer les travailleurs pour leur fournir une sécurité sociale complète et efficace car ils récupèrent ainsi le fruit de leur travail, ou éventuellement voient leurs semblables en profiter lorsqu'ils ne sont pas malades.
Après je ne suis plus contre les dividendes tant qu'ils sont majorés en valeur et en temps ; mais je suis pour qu'on interdise les plus-values sur le marché secondaire. Le marché primaire reste utile à l'économie, le secondaire et les produits-dérivés ne sont qu'un casino qui assassine les populations à petit-feu.