En un mot : wouah !
En une phrase : il ne s'agit pas d'une histoire de cannibalisme et sinon wouah !
Bon clairement - et pourtant je m'y attendais - je n'étais pas prête. Ceux qui ont l'habitude de me lire savent que je dors très peu (trop peu ?) et qu'aussitôt que ma moitié (qui se lève tôt) se couche tôt je prends un peu de temps pour moi pour lire ou regarder des trucs que nous ne visionnerions pas ensemble avec le même plaisir (centres d'intérêts pas pareils toussa).
Ce soir c'était le film d'animation japonaise Kimi no Suizou o Tabetai et ce fût une claque émotionnelle sans pareille ! Feelings hit me like a truck pour ceux qui ont la référence. Poétique, merveilleux, enjoué, dramatique, romantique, beau, ce qui est sûr c'est que moi aussi j'aurai souhaité manger son pancréas. Bref je vous avais recommandé Kimi no na wa et dans une moindre mesure Tenki no ko dans ce post mais là je vous assure que tout vaut le coup d’œil mais vraiment, l'histoire, les dialogues, l'animation, la réalisation, la magie, tout !
L'affiche du film en bonus :

Pour @Doudou et @Kysofer qui forgent une surcouche à Netty en ce moment.
Après y avoir réfléchi avec @Kysofer nous nous sommes dits hier soir que le moyen le plus efficace serait de décider que le web-server ne serve que du REST, alors mécaniquement les notions de Request et Response de Netty disparaitront au profit de quelque chose se rapprochant d'objets du type Exhange ou Question pour les demandes et Resource et Result pour les retours avec ou sans données, ce qui intrinsèquement ne porte pas la même sémantique.
Les nouveautés de Java 15 pour @Animal et @Doudou.
Merci à @Philou pour lien.
Pour @Lenny et @Kysofer qui doivent se servir de Netty.
EDIT 5: un cinquière tuto ici.
EDIT 4 : un quatrième tuto ici.
EDIT 3 : un troisième tuto ici.
EDIT 2 : un deuxième tuto ici.
EDIT : je viens de tomber sur ce tuto et quand je lis ce genre de code :
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
import io.netty.handler.codec.http.websocketx.PingWebSocketFrame;
import io.netty.handler.codec.http.websocketx.PongWebSocketFrame;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
public class WebSocketHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof WebSocketFrame) {
System.out.println("This is a WebSocket frame");
System.out.println("Client Channel : " + ctx.channel());
if (msg instanceof BinaryWebSocketFrame) {
System.out.println("BinaryWebSocketFrame Received : ");
System.out.println(((BinaryWebSocketFrame) msg).content());
} else if (msg instanceof TextWebSocketFrame) {
System.out.println("TextWebSocketFrame Received : ");
ctx.channel().writeAndFlush(
new TextWebSocketFrame("Message recieved : " + ((TextWebSocketFrame) msg).text()));
System.out.println(((TextWebSocketFrame) msg).text());
} else if (msg instanceof PingWebSocketFrame) {
System.out.println("PingWebSocketFrame Received : ");
System.out.println(((PingWebSocketFrame) msg).content());
} else if (msg instanceof PongWebSocketFrame) {
System.out.println("PongWebSocketFrame Received : ");
System.out.println(((PongWebSocketFrame) msg).content());
} else if (msg instanceof CloseWebSocketFrame) {
System.out.println("CloseWebSocketFrame Received : ");
System.out.println("ReasonText :" + ((CloseWebSocketFrame) msg).reasonText());
System.out.println("StatusCode : " + ((CloseWebSocketFrame) msg).statusCode());
} else {
System.out.println("Unsupported WebSocketFrame");
}
}
}
}
J'ai juste envie de pleurer (et je vais vous expliquer pourquoi). La programmation orientée objets reposent sur trois principes :
- L'encapsulation.
- Le polymorphisme.
- L'héritage (mais il faut l'oublier car c'est un anti-pattern).
Le polymorphisme, c'est le fait qu'une classe fille puisse se faire passer pour sa classe mère. L'idée étant que l'on doit organiser notre code de telle sorte que nous puissions TOUJOURS utiliser les super-types (classe mère abstraite ou interface). Or dès que l'on doit ajouter des conditions du type truc instanceof Class c'est que l'on passe à côté du principale intérêt du polymorphisme : ne jamais avoir besoin de dépendre des implémentations.
Soyons clair, dans un code orienté objet je n'ai jamais eu besoin d'écrire des instanceof et de toute ma vie, ce n'a dû m'arriver qu'une ou deux fois et parce que je dépendais d'un code aussi vieux que Java lui-même !
Bref, si vous codez en Java et que vous avez besoin des implémentations, pis encore des instanceof et des casts, alors c'est que vous pensez en procédural et non en objet. Et pour tout ceux qui souhaitent apprendre à penser en objet, je les renvoie aux formations de Kysofer (car il m'a promis une com' si vous y aller de ma part :D) et il y a la pré-collection automne de Sezane qui me fait grave de l’œil si vous voulez...
Je suis dépitée d'apprendre son décès. J'ai adoré Dette 5000 ans d'histoire qui doit sûrement être son meilleur livre. D'ailleurs si vous croyez que le troque a existé, il est indispensable pour vous de le lire. Bullshit jobs est excellent aussi, deux indispensables.
Bref, au revoir camarade anarchiste.
Je l'ai trouvé mignon, je le repost :)

#ChromeIsEvil #ChromeWeightsTooMuch #DontBeLikeChrome #BeLikeFirefox #FirefoxIsLove

EDIT: Je sais que cet extrait est tiré d'une conférence de l'année dernière et que la dame est sa femme. Je comprends ce qu'est l'humour pas de soucis. Mais quand vous faites campagne pour l'un des postes à la plus haute responsabilité au monde, je ne crois pas que ce soit ce genre de posture qu'il faut tenir.
Et pour le lulz, il y a une pléthore de vidéos comme celle-ci sur interne :
Non décidément Trump et Biden même combat !
Comment quelqu'un de sérieux peut-il voter pour Joe Biden ? Je ne défends pas Donald Trump (plutôt mourir) mais objectivement, cela fait des années que l'on filme les comportements prédateurs de Biden avec des femmes (de trèèèèès jeunes femmes) et certains vont sciemment les ignorer par quoi, idéologie ? Parce que #TeamProgrès #CampDuBien c'est ça ?
Bref, la vidéo :
Et un zoom sur "le moment clef" :

Vraiment le système représentatif est complètement pété !
Pour rappel Élection = Abandonner son droit de vote à un représentant (celui qui a été élu, pas forcément celui qu'on a choisi hein #LolSur20)).
C'est littéralement l'inverse de la Démocratie avec un grand 'D' et de nos jours, chaque nation est en compétition choisir le plus grand des connards parmi ceux qui ont les moyens de faire financer leur campagne. #PrisonMentale #ServitudeVolontaire
Il y a plein de posts incroyables sur internet, mais moi c'est ça que j'ai envie de partager :D
@Sweet ta remarque sur l'ouverture d'esprit est plus que pertinente. Ceux qui sont "politiquement engagés" et qui se revendiquent en même temps "ouvert d'esprit", typiquement sur les sujets clivants du type immigration, religion, sexualité, etc, sont très souvent ceux qui sont les plus fermés au débat contradictoire au motif scabreux que "avec eux on ne peut pas débattre".
Alerte SJW : non je n'ai rien contre l'immigration, les religions ou autre, c'est utilisé ici uniquement pour illustrer mon propos.
Le meilleur exemple que j'ai c'est le youtubeur/baizuo MickaelJ qui est toujours dans la morale (la sienne hein), le jugement qu'il a des autres et qui refuse toute discussion en acusant ses interlocuteurs de tous les maux façon inquisition espagnole, Psyhodelik en parle ici.
Bref, plus on est ouvert d'esprit et moins on critique les autres pour ce qu'ils sont pour à la place se focaliser sur ce qu'ils ont fait (au sens d'une dualité gain/perte et non bien/mal).
J'ai adoré ! J'ai regardé 3h d'une traite hier soir et je viens de finir la dernière heure ce midi. J'avais souvent lu que Yuzu (l'héroïne de Citrus) ressemblait beaucoup à Hayasaka (second rôle de Kaguya-Sama Love is War) et c'est très vrai ! Surtout au début lorsqu'elle se maquille, leur attitude et leur design sont plus que confondables.
Pour en revenir au sujet principale, Citrus parle de l'amour incestueux d'une adolescente envers sa demi-sœur par alliance avec qui elle va partager sa chambre alors qu'elles se détestent (c'est un Yuri, c'est-à-dire un manga parlant de relations lesbiennes). On rit, on pleure, on angoisse et on espère avec Yuzu pour que tout se passe bien pour elle ; à chaque épisode je l'ai aimée un petit peu plus, je me sentais bercée au rythme de ses émotions un petit peu comme avec Taki et Mitsuha dans Kimi no na wa (le titre est "Your name" en "français/anglais", ruez-vous dessus si vous ne l'avez pas vu). La réalité qu'elle va affronter est extrêmement dure : comment vivre lorsque l'on aime quelqu'un que l'on n'a pas le droit d'aimer ? Comme faire lorsque ces choses sont interdites par la morale promue dans la société japonaise ? Et comment traverser cet ouragan lorsque c'est votre toute première histoire et que vous ne pouvez en parler à personne ?
En tout cas, je trouve que les Japonais démontrent un talent incroyable pour faire revivre le sentiment d'amour de jeunesse, celui qui ne revient plus aussitôt qu'on l'éprouve. "Je suis heureuse, je suis amoureuse" me criait Hélène en bondissant dans tous les sens et en souriant comme une andouille. Me rappeler d'elle dans cet état est l'un de mes meilleurs souvenirs de jeunesse et ce genre d'anime me fait revivre ça, cette légèreté heureuse et permanente que j'ai perdue à cause des éternels boulot/crédit/appart/...
L'anime ne fait qu'une seule saison (12 épisodes x 22 min) et se termine au douzième mais je prie pour qu'il y ait une suite sortie de nulle part ! (^_^)
Je vous mets ci-dessous la scène culte de l'anime :
C'est exactement ce dont j'avais besoin. Merci à je ne sais plus qui !
Vulgarisation : en produisant une sorte d'électricité statique due au nombre incalculable de micro-poils qu'elles ont sous chaque patte.
Spoiler : Spotify prétend depuis dès années utiliser "des méthodes agiles" développées en interne (vous savez la méthode Spotify avec les "tribes, "squads", etc) mais en réalité c'est faux.
Ça ne marche pas pour eux et ils ne l'appliquent pas. lol hein ? D'autant que des armées de coaches vivent de ce fake-business.
Sinon il y a Zobrist et le modèle d'entreprise libérée.
Excellent. D'autant plus que je suis passée sous Ktorm. Du coup cela me permet de tester le requêtes générées par KTorm facilement.
Merci à Shikiryu.
L'auteur a raison si on veut aider Firefox il faut le financer, point.
Je viens se donner 120€ soit l'équivalent de 5€/mois pour les deux dernières années où je n'ai rien donné (et ce n'est pas cher payé). Courage Mozilla, je souhaite longue vie à Firefox, Thunderbird et Rust.
Via Sammy Fisher.
Brihx merci pour le lien. Par contre le coup des fonctions de dérivation de clefs qui doivent êtres rejouées n-fois pour éviter le brut-force j'ai toujours trouvé cela stupide et je m'explique.
Le but d'augmenter le nombre d'itérations est de ralentir l'algorithme de hash/crypto afin de se protéger des attaques de type brut-force. Or la puissance de calcul augmentant sans cesse avec le temps, plus les générations de CPU passent et plus il faut augmenter ce nombre d'itérations, ceci encore et toujours, jusqu'à consommer tout le pétrole sur terre pour le calcul d'un simple hash...
Sinon, on arrête de coder comme des profs de math débiles et on ajoute un Thread.sleep(1000) après le calcul du hash. Comme ça et quoi qu'il arrive, le check d'un mot de passe prendra toujours au moins 1 seconde quelque soit le CPU derrière, évitant ainsi les attaques du type brut-force, et en plus ça évite de contraindre un algo à utiliser un proc à 100% pour rien et ainsi de exposer son service à des attaques de type DDos.
Après ce n'est pas le rôle des matheux de coder efficace, c'est à nous (les IT) de comprendre ce qu'il faut faire et de bien le faire.
@Chlouchloutte voici le lien vers l'open data des prix des ventes immobilières de 2015 à 2019.
Quelques trucs & astuces bien pratiques pour compiler vos applications Kotlin, Scala, Java, Ruby ou encore NodeJS en natif à l'aide de GraalVM.