1/ on google les hashs, généralement on arrive à en casser un paquet car google a stocké des millions de hash avec leur clair
Oh, que oui. Y compris des trucs invraisemblables. Je te laisse chercher ce MD5 290b284d9e401b0a1b25ddb281cf5bf0 ou ce SHA-1 b19e461aeaba1172b26b552471f56405e1928d17.
En terme de consommation / pollution, un SUV de 2018 est comparable à bien des berines et sûrement préférable à une 306 de 2000
Sans doute, mais ce n'est pas mon propos. Ce que je veux dire, c'est que quitte à posséder une voiture récente, il vaudrait mieux en avoir une qui réponde à ses besoins sans surdimensionnement. La proportion de SUV que je croise sur le chemin du boulot ou sur les parkings est statistiquement improbable par rapport à la proportion de gens qui ont besoin de ce genre de véhicule.
Ce qui est un peu dommage, c'est qu'en 20 ans les moteurs ont évolué, mais qu'on s'est surtout servi de cette évolution pour motoriser des véhicules plus gros.
Ça et évidemment les gens qui viennent systématiquement au boulot en voiture alors qu'ils sont en capacité (distance + capacité physique) de venir en vélo, transports en communs, etc. – voire parfois à pieds.
Le problème d'avoir une variable locale toto alors que tu as un champ nommé toto dans la classe, c'est que si dans la méthode tu utilises toto tu vas utiliser la variable locale, alors que dans toutes les autres méthodes de la classe si tu utilises toto tu vas utiliser le champ (this. est facultatif en Java).
Je n'a pas été clair : depuis Java 5, il ne faut plus utiliser les itérateurs dans le cas général – ça sert dans des cas particuliers, par exemple quand on supprime des éléments de la collection itérée.
Je ne sais pas exactement ce qu'impose Java, ce qui est sûr c'est que personne ne fait autre chose que « une classe = un fichier du même nom » (sauf les classe à l'intérieur d'autres classes).
Integer est effectivement plus lourd que int. En vrai, j'ai vu un seul cas où ça pouvait être problématique depuis plus de dix ans (et ce n'était qu'un élément parmi d'autres). Ce n'est pas un critère tant que tu n'as pas un test de performances qui te montent explicitement que c'en est un.
En fait j'avais essayé de lancer ton projet TODOMVC. Le « Hello world » du journal semble fonctionner – si on peut appeler l'ouverture d'un navigateur qui appelle un .php sur ton serveur « fonctionner », parce que ça me paraît très éloigné de ce que j'avais compris de ton outil en lisant tes journaux.
Tant que j'y suis : je ne connais aucun projet qui nécessite encore de lancer javac à la main. Rien que ça, c'est louche. Java profite tellement de la présence d'un IDE que ceux qui s'amusent à le développer et le compiler directement en CLI ne sont plus qu'une infime proportion.
J'avais prévenu que je n'y connaissais pas grand chose en Java !
[…]
je préviens d'avance, je ne m'y connais pas plus en PHP qu'en Java).
Mais si tu n'y connais rien, pourquoi tu te tapes les bindings toi-même ? Tu sais que tu vas avoir des versions toutes bancales qui feront peur plus qu'elles donneront envie. Si tu as une lib libre de qualité en C++, tu ne devrais avoir aucun mal à convaincre des développeurs plus expérimentés de faire les bindings dans les langages qui les intéressent.
Pour le reste, dans l'ordre :
Tu ne mets pas 2 classes de premier niveau dans le même fichier en Java. C'est techniquement possible, mais personne ne fait ça.
Il n'y a pratiquement aucune raison de faire new String() en Java. En fait, je n'en vois aucune.
Il n'y a aucun problème à utiliser un champ dans une méthode.
Dans tous les cas, une variable locale ne devrait jamais avoir le même nom qu'un champ – j'imagine que c'est la même chose en C++ ?
L'itérateur, c'est Java 5 (2004).
Aucun intérêt à faire du Java < 8 en 2018 sur un nouveau projet.
On ne commite pas les if de test, ou alors on les commente – j'imagine que c'est la même chose en C++ ?
Tu as bien compris pour le new.
Un code de démo doit être le plus clair possible et illustrer les bonnes pratiques. Si c'est plus clair avec 15 fichiers qu'avec un seul, alors ça doit être dans 15 fichiers – j'imagine que c'est la même chose en C++ ?
On ne peut pas « nuller » un type primitif, mais il y a les classes enveloppes (pour toi Integer) pour ça. Depuis Java 5 (2004) le boxing et l'unboxing (conversion classes enveloppes ↔ types primitifs) sont automatiques.
Le code que j'ai proposé pour le paramètre xml fonctionne normalement depuis Java 1.0.
Ton explication sur les triples négations n'enlève rien au fait que c'est une triple négation. Pour des raisons de lisibilité (et sauf cas très exceptionnel), un if/else à branches équilibrées (ici c'est le cas) devrait être de la forme if (a == b) { X() } else { Y() } et non if (a != b) { Y() } else { X() }. Et les actions devraient avoir un sens positif (ShowBidule) et pas négatif (HideBidule). C'est valable dans tous les langages, dont le C++.
Un code qui n'est pas un pur test devrait utiliser un logger (y'en a un dans l'API standard).
Un lien clé-valeur en Java, c'est une Map…
J'ai essayé de le tester. J'ai eu le même genre d'emmerdes que barmic dans ce commentaire, sauf que moi j'ai écris mon retour sur ma pause au boulot. Je n'avais pas 1h à passer pour faire marcher le bordel.
La classe CSS code a une règle font-size: 1.1em;, ce qui fait que les blocs de code (en ligne et multi-ligne) sont plus gros que le reste, d'un facteur 1,1 semble-t-il.
Ça donne un rendu assez inégal :
Comportement observé sous Vivaldi 1.15.1147.55 (Stable channel) (64 bits) (moteur JS : V8 6.5.254.41) et Chromium 68.0.3440.7 et Firefox 61.0.1 (64 bits) sous Linux Mint 19 Cinnamon à jour.
En fait ça fonctionne parce que ton code est contraire aux bonnes pratiques de Java.
Un constructeur ça sert à construire un objet, pas à lancer un traitement bloquant. Je me demande d'ailleurs si ça ne peut pas casser certains mécanismes de la JVM d’avoir ce genre de comportement.
L'une des conséquences, c'est que l'utilisation d'un tel comportement est purement incompréhensible pour le lecteur du code.
Être obligé de jongler avec plusieurs langages en fonction du type d'application à développer ? Non merci, je préfère pouvoir développer tout type d'application en utilisant un seul langage ; c'est beaucoup plus efficace.
Ou pas.
Mon stage de fin d'études c'était justement la migration d'une application mono-langage (Progress 4GL) à une pile de langages plus spécialisés (Java, HTML, JS, SQL). Eh bien la pile de langages était infiniment plus facile à comprendre et utiliser que l'espèce de soupe qui prétendait tout faire, des requêtes à la BDD aux effets présentés à l'utilisateur.
Ça fait la troisième fois (en comptant la version Node.js) qu'ont dit que mon code est nettement perfectible (ce dont j'ai parfaitement conscience, comme je l'ai à maintes fois indiqué). Je veux bien, mais est-ce que quelqu'un aurait la bonté de me montrer ne fût-ce qu'un exemple de ce qui ne va pas, et comment le corriger, histoire que j'ai l'occasion d'améliorer mon code ? Ou alors je vais finir pas penser que mon code n'est peut-être pas aussi mauvais que certains le prétendent !
Je vais être sec aussi, mais en ce qui concerne ton code Java, il n'y a tellement rien qui va que te l'expliquer en détail est un travail si énorme que c'est décourageant.
Le fichier s'appelle main.java mais ne contient pas de classe publique qui s'appelle main.
Le fichier n'est pas dans un package.
Deux classes (package-protected) dans le même fichier.
Tu utilises des new String("…").
int index = this.index; ?!
D'ailleurs tu passes ton temps à masquer la variable de classe index avec des variables locales index.
Tu n'utilises pas les possibilités de l'API standard (l'itérateur ligne 43, le while ligne 197 par exemple, ou tout le bloc de if / else if à partir de la ligne 230).
if ( false ) { !?
La ligne 273 ressemble beaucoup à une boucle infinie.
Ton main lance Exception, ce qu'il ne devrait pas faire, et en plus rien dans ton code ne déclare que cette Exception devrait être lancée.
Tu appelles des méthodes avec leur package complet au lieu de les importer (info.q37.xdhq.XDH.readAsset).
Tout est ultra-manuel : génération de XML à la main en dur dans le code, méthode escape que tu as réinventé, etc.
Tout est en vrac dans un seul fichier : personnellement je ne comprends pas ce que fait ce code à sa simple lecture.
J'imagine que le index de la classe TodoMVC pourrait être nullable pour gérer le cas particulier au lieu d'utiliser la valeur spécifique -1.
Dans la méthode push tu modifies ton paramètre xml.
La logique contient des triples négations : dans handleCount tu as un else sur une condition négative qui active un truc qui s'appelle HideBidule. Au final ça fait quoi ?
D'ailleurs le projet s'appelle TODO MVC mais n'est pas du tout du MVC ?!
Je passe sur les détails comme le formatage, la présence d'un System.out, l'import de packages complets ou le manque d'accolades.
Je passe aussi sur ton API qui me semble très étrange, comme ces méthodes qui attendent un tableau de tableau de String.
Rien qu'en re-présentant le code correctement, ça donnerait quelque chose comme :
packagetodomvc;/* Copyright (C) 2018 Claude SIMON (http://q37.info/contact/). This file is part of XDHq. XDHq is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. XDHq is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with XDHq If not, see <http://www.gnu.org/licenses/>.*/importinfo.q37.atlas.Atlas;importinfo.q37.atlas.DOM;importinfo.q37.atlas.GUI;importinfo.q37.xdhq.XDH;importjava.util.ArrayList;importjava.util.List;importjava.util.ListIterator;classTodo{publicbooleancompleted;publicStringlabel;Todo(Stringlabel,booleancompleted){this.completed=completed;this.label=label;}Todo(Stringlabel){this(label,false);}}classTodoMVCextendsAtlas{privateBooleanexclude;privateintindex=-1;privateList<Todo>todos;privateintitemsLeft(){return(int)todos.stream().filter(todo->!todo.completed).count();}privateStringescape(Stringtext){returntext.replace("&","&").replace("\"",""").replace("<","<").replace(">",">");}privateStringpush(Todotodo,intid,Stringxml){returnxml+"<Todo"+" id=\""+id+"\""+" completed=\""+todo.completed+"\">"+escape(todo.label)+"</Todo>\n";}privatevoiddisplayCount(DOMdom,intcount){Stringtext="";switch(count){case0:break;case1:text="1 item left";break;default:text=count+" items left";break;}dom.setContent("Count",text);}privatevoidhandleCount(DOMdom){intcount=itemsLeft();if(count!=todos.size())dom.disableElement("HideClearCompleted");elsedom.enableElement("HideClearCompleted");displayCount(dom,count);}privatevoiddisplayTodos(DOMdom){Stringxml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<XDHTML>\n<Todos>\n";ListIterator<Todo>li=todos.listIterator();while(li.hasNext()){intindex=li.nextIndex();Todotodo=li.next();if((exclude==null)||(todo.completed!=exclude))xml=push(todo,index,xml);}xml=xml+"</Todos>\n</XDHTML>";dom.setLayoutXSL("Todos",xml,"Todos.xsl");handleCount(dom);}privatevoidsubmitNew(DOMdom){Stringcontent=dom.getContent("Input");dom.setContent("Input","");if(!"".equals(content.trim())){todos.add(0,newTodo(content));displayTodos(dom);}}privatevoidsubmitModification(DOMdom){intindex=this.index;this.index=-1;Stringcontent=dom.getContent("Input."+index);dom.setContent("Input."+index,"");if(!"".equals(content.trim())){todos.set(index,newTodo(content,todos.get(index).completed));dom.setContent("Label."+index,escape(content));dom.removeClasses(newString[][]{{"View."+index,"hide"},{"Todo."+index,"editing"}});}else{todos.remove(index);displayTodos(dom);}}privatevoidtoggle(DOMdom,Stringid){intindex=Integer.parseInt(id);Todotodo=todos.get(index);todo.completed=!todo.completed;todos.set(index,todo);dom.toggleClass("Todo."+id,"completed");dom.toggleClass("Todo."+id,"active");if(exclude!=null)displayTodos(dom);elsehandleCount(dom);}privatevoidall(DOMdom){exclude=null;dom.addClass("All","selected");dom.removeClasses(newString[][]{{"Active","selected"},{"Completed","selected"}});dom.disableElements(newString[]{"HideActive","HideCompleted"});}privatevoidactive(DOMdom){exclude=true;dom.addClass("Active","selected");dom.removeClasses(newString[][]{{"All","selected"},{"Completed","selected"}});dom.disableElement("HideActive");dom.enableElement("HideCompleted");}privatevoidcompleted(DOMdom){exclude=false;dom.addClass("Completed","selected");dom.removeClasses(newString[][]{{"All","selected"},{"Active","selected"}});dom.disableElement("HideCompleted");dom.enableElement("HideActive");}privatevoidclear(DOMdom){todos.removeIf(todo->todo.completed);displayTodos(dom);}privatevoidedit(DOMdom,Stringid){Stringcontent=dom.getContent(id);index=Integer.parseInt(content);dom.addClasses(newString[][]{{"View."+content,"hide"},{id,"editing"}});dom.setContent("Input."+content,todos.get(index).label);dom.focus("Input."+content);}privatevoidcancel(DOMdom){intindex=this.index;this.index=-1;dom.setContent("Input."+index,"");dom.removeClasses(newString[][]{{"View."+index,"hide"},{"Todo."+index,"editing"}});}publicTodoMVC(){System.out.println("Connection detected...");todos=newArrayList<>();}publicvoidhandle(DOMdom,Stringaction,Stringid){switch(action){case"Connect":dom.headUp(XDH.readAsset("HeadDEMO.html"));dom.setLayout("",XDH.readAsset("Main.html"));dom.focus("Input");dom.disableElements(newString[]{"HideActive","HideCompleted"});displayTodos(dom);break;case"Submit":if(index==-1)submitNew(dom);elsesubmitModification(dom);break;case"Destroy":todos.remove(Integer.parseInt(dom.getContent(id)));displayTodos(dom);break;case"Toggle":toggle(dom,id);break;case"All":all(dom);break;case"Active":active(dom);break;case"Completed":completed(dom);break;case"Clear":clear(dom);break;case"Edit":edit(dom,id);break;case"Cancel":cancel(dom);break;default:thrownewRuntimeException("No or unknown action !!!");}}publicstaticvoidmain(String[]args){Stringdir;if(System.getenv("EPEIOS_SRC")==null)dir=".";elsedir="TodoMVC";launch("Connect",dir,GUI.DEFAULT,args);while(true)newTodoMVC();}}
J'ignorais l'existence de cette propriété. Après avoir joué avec la démo de Mozilla, je te confirme que mon ressenti vient complètement de l'implémentation de scroll-behavior: smooth; sous Chrome-like quand il y a beaucoup à scroller (et donc c'est pas un problème de perfs, ce qui est le principal).
C'est peut-être une habitude à prendre : LinuxFr est à ma connaissance le seul site que j'utilise à avoir des pages dans lesquels je fais des sauts aussi longs. Les autres ont soit de la pagination, soit du chargement au scroll, et dans les deux cas ça ne s'utilise pas pareil.
pas mal de petites modifications sur le site en ce moment, n'hésitez pas à me dire si vous voyez des choses bizarres, cassées ou qui vous semblent moins bien qu'avant
J'ai l'impression que le scroll est devenu plus lent qu'avant, au moins sur les moteurs de rendus type Chromium.
Cas de test :
Trouver une page avec beaucoup de commentaires (comme celle-ci).
Cliquer sur le lien [ qui renvoie au dernier commentaire par ordre chronologique.
Comportement attendu : ça scrolle rapidement jusqu'au commertaire.
Comportement obtenu : le scroll est assez lent, me semble-t-il plus lent qu'avant, surtout en début de scroll (c'est lent et ça accélère).
Comportement observé sous Vivaldi 1.15.1147.55 (Stable channel) (64 bits) (moteur JS : V8 6.5.254.41) et Chromium 68.0.3440.7.
Firefox 61.0.1 (64 bits) ne semble pas avoir ce souci.
C'est encore fréquent les gens comme « Monique » ? Je pensais naïvement qu'avec l'habitude et les écrans plats qui explosent beaucoup moins les yeux que les écrans cathodiques, on en voyait de moins en moins.
Pourquoi partager un lien qui a maintenant plus de huit ans et demie – une éternité en terme d'informatique ?
Pour donner un repère temporel, quand l'article a été écrit, la version courante de PHP était la 5.2, il n'y avait ni trait ni espace de noms ni rien de plus moderne, et PHP 4 était déprécié depuis moins de 6 mois.
Hypnotiques pour suspendre la conscience (et supprimer la mémoire), curares pour relâcher les muscles, opioïdes pour supprimer la douleur. Mais c'est l'association des trois (et pas seulement une partie) qui constitue l'anesthésie.
Cf la vidéo que j'ai liée plus haut pour les détails.
Ça me fait penser à un bouquin, dont j'ai hélas oublié le titre et l'auteur exacts. C'était un truc du genre « Une chronique du XXIème Siècle », écrit juste avant 1990. C'était censé raconter le futur, du « présent » de l'époque jusqu'à 2100. Et surtout, ça commençait par une longue intro qui expliquait que contrairement à tous les autres ouvrages de ce type, les auteurs avaient utilisé des méthodes scientifiques et sérieuses, donc leurs prévisions devaient être précises et crédibles.
Aujourd'hui, on constate que c'est un ramassis de conneries qui s'est planté sur toute la ligne (et c'était visiblement un livre français, on y parlait de Minitel 2).
On appréhende beaucoup mieux la problématique de la confidentialité des mails en se les représentant comme des cartes postales et non comme du courrier dans une enveloppe.
Une carte postale, tu as beau la remettre toi-même à la poste centrale pour éviter les intermédiaires, n'importe qui dans le processus de distribution (et en particulier le facteur qui va l'amener au destinataire) peut la lire. Ou la laisser lire à quelqu'un d'autre si ça l'amuse.
[^] # Re: Communications chiffrées ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal LineageOS. Évalué à 7.
Et logique, et la prononciation correspond à l'écriture, et il n'y a pas besoin d'aller chercher une typographie voire des caractères exotiques.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Une faille de sécurité européenne
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal RGPD, retrait de toutes les listes de MailJet. Évalué à 3.
https://darkpatterns.org/
La connaissance libre : https://zestedesavoir.com
[^] # Re: Chaussures du cordonnier
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Freenaute, ton mot de passe d'abonné est stocké en clair chez Free. Évalué à 3.
Oh, que oui. Y compris des trucs invraisemblables. Je te laisse chercher ce MD5
290b284d9e401b0a1b25ddb281cf5bf0
ou ce SHA-1b19e461aeaba1172b26b552471f56405e1928d17
.La connaissance libre : https://zestedesavoir.com
[^] # Re: Une faille de sécurité européenne
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal RGPD, retrait de toutes les listes de MailJet. Évalué à 9.
Sans doute, mais ce n'est pas mon propos. Ce que je veux dire, c'est que quitte à posséder une voiture récente, il vaudrait mieux en avoir une qui réponde à ses besoins sans surdimensionnement. La proportion de SUV que je croise sur le chemin du boulot ou sur les parkings est statistiquement improbable par rapport à la proportion de gens qui ont besoin de ce genre de véhicule.
Ce qui est un peu dommage, c'est qu'en 20 ans les moteurs ont évolué, mais qu'on s'est surtout servi de cette évolution pour motoriser des véhicules plus gros.
Ça et évidemment les gens qui viennent systématiquement au boulot en voiture alors qu'ils sont en capacité (distance + capacité physique) de venir en vélo, transports en communs, etc. – voire parfois à pieds.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Une faille de sécurité européenne
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal RGPD, retrait de toutes les listes de MailJet. Évalué à 10.
Si ça pouvait calmer la passion des gens pour les SUV et pousser à la sobriété dans la consommation de carburant, ce serait plutôt intéressant.
La connaissance libre : https://zestedesavoir.com
[^] # Re: ... et pas qu'un ...
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Du développement full-stack en Java. Évalué à 4.
À peu près dans l'ordre :
toto
alors que tu as un champ nommétoto
dans la classe, c'est que si dans la méthode tu utilisestoto
tu vas utiliser la variable locale, alors que dans toutes les autres méthodes de la classe si tu utilisestoto
tu vas utiliser le champ (this.
est facultatif en Java).Integer
est effectivement plus lourd queint
. En vrai, j'ai vu un seul cas où ça pouvait être problématique depuis plus de dix ans (et ce n'était qu'un élément parmi d'autres). Ce n'est pas un critère tant que tu n'as pas un test de performances qui te montent explicitement que c'en est un.En fait j'avais essayé de lancer ton projet TODOMVC. Le « Hello world » du journal semble fonctionner – si on peut appeler l'ouverture d'un navigateur qui appelle un .php sur ton serveur « fonctionner », parce que ça me paraît très éloigné de ce que j'avais compris de ton outil en lisant tes journaux.
Tant que j'y suis : je ne connais aucun projet qui nécessite encore de lancer
javac
à la main. Rien que ça, c'est louche. Java profite tellement de la présence d'un IDE que ceux qui s'amusent à le développer et le compiler directement en CLI ne sont plus qu'une infime proportion.La connaissance libre : https://zestedesavoir.com
[^] # Re: ... et pas qu'un ...
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Du développement full-stack en Java. Évalué à 6.
Mais si tu n'y connais rien, pourquoi tu te tapes les bindings toi-même ? Tu sais que tu vas avoir des versions toutes bancales qui feront peur plus qu'elles donneront envie. Si tu as une lib libre de qualité en C++, tu ne devrais avoir aucun mal à convaincre des développeurs plus expérimentés de faire les bindings dans les langages qui les intéressent.
Pour le reste, dans l'ordre :
new String()
en Java. En fait, je n'en vois aucune.if
de test, ou alors on les commente – j'imagine que c'est la même chose en C++ ?new
.Integer
) pour ça. Depuis Java 5 (2004) le boxing et l'unboxing (conversion classes enveloppes ↔ types primitifs) sont automatiques.xml
fonctionne normalement depuis Java 1.0.if (a == b) { X() } else { Y() }
et nonif (a != b) { Y() } else { X() }
. Et les actions devraient avoir un sens positif (ShowBidule) et pas négatif (HideBidule). C'est valable dans tous les langages, dont le C++.Map
…La connaissance libre : https://zestedesavoir.com
# Chrome-like, Firefox : les blocs de code sont 1,1x trop gros
Posté par SpaceFox (site web personnel, Mastodon) . En réponse à la dépêche Quelques petits changements sur le site. Évalué à 4.
La classe CSS
code
a une règlefont-size: 1.1em;
, ce qui fait que les blocs de code (en ligne et multi-ligne) sont plus gros que le reste, d'un facteur 1,1 semble-t-il.Ça donne un rendu assez inégal :
Comportement observé sous Vivaldi 1.15.1147.55 (Stable channel) (64 bits) (moteur JS : V8 6.5.254.41) et Chromium 68.0.3440.7 et Firefox 61.0.1 (64 bits) sous Linux Mint 19 Cinnamon à jour.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Lapin compris
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Du développement full-stack en Java. Évalué à 7.
En fait ça fonctionne parce que ton code est contraire aux bonnes pratiques de Java.
Un constructeur ça sert à construire un objet, pas à lancer un traitement bloquant. Je me demande d'ailleurs si ça ne peut pas casser certains mécanismes de la JVM d’avoir ce genre de comportement.
L'une des conséquences, c'est que l'utilisation d'un tel comportement est purement incompréhensible pour le lecteur du code.
La connaissance libre : https://zestedesavoir.com
[^] # Re: ... et pas qu'un ...
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Du développement full-stack en Java. Évalué à 10. Dernière modification le 03 août 2018 à 16:18.
Ou pas.
Mon stage de fin d'études c'était justement la migration d'une application mono-langage (Progress 4GL) à une pile de langages plus spécialisés (Java, HTML, JS, SQL). Eh bien la pile de langages était infiniment plus facile à comprendre et utiliser que l'espèce de soupe qui prétendait tout faire, des requêtes à la BDD aux effets présentés à l'utilisateur.
Je vais être sec aussi, mais en ce qui concerne ton code Java, il n'y a tellement rien qui va que te l'expliquer en détail est un travail si énorme que c'est décourageant.
Si je prends juste en exemple le TODO MVC :
main.java
mais ne contient pas de classe publique qui s'appellemain
.new String("…")
.int index = this.index;
?!index
avec des variables localesindex
.while
ligne 197 par exemple, ou tout le bloc de if / else if à partir de la ligne 230).if ( false ) {
!?main
lanceException
, ce qu'il ne devrait pas faire, et en plus rien dans ton code ne déclare que cetteException
devrait être lancée.info.q37.xdhq.XDH.readAsset
).escape
que tu as réinventé, etc.index
de la classeTodoMVC
pourrait être nullable pour gérer le cas particulier au lieu d'utiliser la valeur spécifique -1.push
tu modifies ton paramètrexml
.handleCount
tu as unelse
sur une condition négative qui active un truc qui s'appelleHideBidule
. Au final ça fait quoi ?TODO MVC
mais n'est pas du tout du MVC ?!System.out
, l'import de packages complets ou le manque d'accolades.Rien qu'en re-présentant le code correctement, ça donnerait quelque chose comme :
(non testé).
La connaissance libre : https://zestedesavoir.com
# Il vaudrait mieux te mettre en contact avec quelqu'un qui connait Java
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Du développement full-stack en Java. Évalué à 10.
Je te conseille de te rapprocher d'un développeur Java, au moins pour tes exemples de présentations, pour deux raisons :
La connaissance libre : https://zestedesavoir.com
[^] # Re: Le scroll est devenu plus lent ? (Chrome-like)
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal LinuxFr.org : seconde quinzaine de juillet 2018. Évalué à 2. Dernière modification le 01 août 2018 à 15:30.
J'ignorais l'existence de cette propriété. Après avoir joué avec la démo de Mozilla, je te confirme que mon ressenti vient complètement de l'implémentation de
scroll-behavior: smooth;
sous Chrome-like quand il y a beaucoup à scroller (et donc c'est pas un problème de perfs, ce qui est le principal).C'est peut-être une habitude à prendre : LinuxFr est à ma connaissance le seul site que j'utilise à avoir des pages dans lesquels je fais des sauts aussi longs. Les autres ont soit de la pagination, soit du chargement au scroll, et dans les deux cas ça ne s'utilise pas pareil.
La connaissance libre : https://zestedesavoir.com
# Le scroll est devenu plus lent ? (Chrome-like)
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal LinuxFr.org : seconde quinzaine de juillet 2018. Évalué à 2.
J'ai l'impression que le scroll est devenu plus lent qu'avant, au moins sur les moteurs de rendus type Chromium.
Cas de test :
[
qui renvoie au dernier commentaire par ordre chronologique.Comportement attendu : ça scrolle rapidement jusqu'au commertaire.
Comportement obtenu : le scroll est assez lent, me semble-t-il plus lent qu'avant, surtout en début de scroll (c'est lent et ça accélère).
Comportement observé sous Vivaldi 1.15.1147.55 (Stable channel) (64 bits) (moteur JS : V8 6.5.254.41) et Chromium 68.0.3440.7.
Firefox 61.0.1 (64 bits) ne semble pas avoir ce souci.
Ordinateur :
La connaissance libre : https://zestedesavoir.com
[^] # Re: digital, vraiment ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Pollution numérique. Évalué à 5.
Ça je suis d'accord, ma question portait vraiment sur les impressions de mails.
La connaissance libre : https://zestedesavoir.com
[^] # Re: digital, vraiment ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Pollution numérique. Évalué à 7.
C'est encore fréquent les gens comme « Monique » ? Je pensais naïvement qu'avec l'habitude et les écrans plats qui explosent beaucoup moins les yeux que les écrans cathodiques, on en voyait de moins en moins.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Google fait du « beau travail » ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Google + Commission Européenne = KABOUM. Évalué à 3.
Google n'utilise plus le « don't be evil ».
La connaissance libre : https://zestedesavoir.com
[^] # Re: Compte créé le 13 juillet...
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Tout ce qu’il faut savoir sur le langage PHP. Évalué à 2. Dernière modification le 18 juillet 2018 à 12:10.
Je confirme, et la page en question liée arrive juste derrière.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Autre lien intéressant
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Tout ce qu’il faut savoir sur le langage PHP. Évalué à 8.
Et surtout très daté en plus de sa mauvaise foi. PHP Sadness est plus intéressant à mon sens, parce que factuel et surtout maintenu à jour.
La connaissance libre : https://zestedesavoir.com
# Pourquoi ce lien et maintenant ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Tout ce qu’il faut savoir sur le langage PHP. Évalué à 10.
Pourquoi partager un lien qui a maintenant plus de huit ans et demie – une éternité en terme d'informatique ?
Pour donner un repère temporel, quand l'article a été écrit, la version courante de PHP était la 5.2, il n'y avait ni trait ni espace de noms ni rien de plus moderne, et PHP 4 était déprécié depuis moins de 6 mois.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Cause psychologique ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal J'ai testé... me faire électriser. Évalué à 5. Dernière modification le 13 juillet 2018 à 09:27.
Hypnotiques pour suspendre la conscience (et supprimer la mémoire), curares pour relâcher les muscles, opioïdes pour supprimer la douleur. Mais c'est l'association des trois (et pas seulement une partie) qui constitue l'anesthésie.
Cf la vidéo que j'ai liée plus haut pour les détails.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Cause psychologique ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal J'ai testé... me faire électriser. Évalué à 3. Dernière modification le 12 juillet 2018 à 18:21.
J'ai plus la réponse en tête mais je suis presque sûr qu'elle est dans la vidéo que j'ai liée plus haut.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Quel est le rapport avec le monde du libre ou de l'informatique?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal J'ai testé... me faire électriser. Évalué à 7.
« Seulement » ceux qui ne sont pas en « rapport avec le monde du libre ou de l'informatique » j'imagine…
La connaissance libre : https://zestedesavoir.com
[^] # Re: Cause psychologique ?
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal J'ai testé... me faire électriser. Évalué à 5.
Une ressource intéressante sur le sujet : https://www.youtube.com/watch?v=wYD1qBhGtlk
La connaissance libre : https://zestedesavoir.com
[^] # Re: as tu plus d'info sur Sapiens
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Lecture pour cet été. Évalué à 5.
Ça me fait penser à un bouquin, dont j'ai hélas oublié le titre et l'auteur exacts. C'était un truc du genre « Une chronique du XXIème Siècle », écrit juste avant 1990. C'était censé raconter le futur, du « présent » de l'époque jusqu'à 2100. Et surtout, ça commençait par une longue intro qui expliquait que contrairement à tous les autres ouvrages de ce type, les auteurs avaient utilisé des méthodes scientifiques et sérieuses, donc leurs prévisions devaient être précises et crédibles.
Aujourd'hui, on constate que c'est un ramassis de conneries qui s'est planté sur toute la ligne (et c'était visiblement un livre français, on y parlait de Minitel 2).
La connaissance libre : https://zestedesavoir.com
# Cartes postales
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal Gmail at confidentialité : il semblerait que plein de monde puisse lire vos emails. Évalué à 10.
On appréhende beaucoup mieux la problématique de la confidentialité des mails en se les représentant comme des cartes postales et non comme du courrier dans une enveloppe.
Une carte postale, tu as beau la remettre toi-même à la poste centrale pour éviter les intermédiaires, n'importe qui dans le processus de distribution (et en particulier le facteur qui va l'amener au destinataire) peut la lire. Ou la laisser lire à quelqu'un d'autre si ça l'amuse.
La connaissance libre : https://zestedesavoir.com