Bonjour Nal,
Je tâĂ©cris pour tâinformer de la sortie de la nouvelle et trĂšs attendue version majeure de Java, lâune des plus grosses platesâformes de dĂ©veloppement du marchĂ©. Voici un petit tour des nouveautĂ©s :
Titre de lâimage
Victime de jmod
La principale nouveautĂ© est lâintroduction dâun systĂšme de modules. Ce systĂšme mĂ©rite un journal complet, mais le principal apport sera le « debloat » (un peu) de lâenvironnement dâexĂ©cution et des applications Java.
Dans les poĂšmes de jshell
Un outil jshell permet de jouer avec le langage en ligne de commande et utiliser le langage pour faire du script : pratique pour remplacer des scripts Shell ou Python !
jshell> double PI = 3.1415926535
PI ==> 3.1415926535
| created variable PI : double
jshell> volume(2)
| attempted to call method volume(double) which cannot be invoked until method cube(double) is declared
jshell> double cube(double x) { return x * x * x; }
| created method cube(double)
| update modified method volume(double)
jshell> volume(2)
5ăă« ==> 33.510321637333334
| created scratch variable 5ăă« : double
Applet mon numéro
Une excellente nouvelle : le greffon Java pour navigateur va rejoindre Flash et Silverlight dans le purgatoire des technologies pénibles.
What string color
Les chaßnes de caractÚres prendront moins de place en mémoire si elles contiennent des caractÚres latin 1.
Ramasseâmiettes, chouette, câest sympa
G1 sera dĂ©sormais le ramasseâmiettes par dĂ©faut. LâidĂ©e est de privilĂ©gier la faible latence. Des impacts sont Ă prĂ©voir sur les applications en production : il faudra faire des tests sĂ©rieux pour voir sâil y a un gain ou perte, chaque application ayant des besoins et des objectifs diffĂ©rents.
Trololog
Une nouvelle API de journalisation minimaliste a Ă©tĂ© ajoutĂ©e. Je nâai pas compris pourquoi ce changement, lâAPI actuelle nâĂ©tant pas bien compliquĂ©e.
UTF-8 vaincra
Les fichiers *.properties pourront enfin ĂȘtre Ă©crits en UTF-8. Ces fichiers, souvent utilisĂ©s pour lâinternationalisation, Ă©taient limitĂ©s Ă lâISO-8859-1 (latin 1)...
Autres changements
- les chauves seront contents dâapprendre lâajout dâune API pour manipuler des TIFF ;
- la gestion des hautes résolutions (HiDPI) permettra de ne plus saigner des yeux sous GNU/Linux et Windows ;
- GTK 3 est enfin gĂ©rĂ©, il faudra toutefois lâactiver via la propriĂ©tĂ©
jdk.gtk.version.
# DĂ©pĂȘche ?
PostĂ© par dovik (site web personnel) . ĂvaluĂ© Ă 6.
Ce nourjal mĂ©riterait une dĂ©pĂȘche.
[^] # Re: DĂ©pĂȘche ?
PostĂ© par Ê âŻ . ĂvaluĂ© Ă 4.
M'enfin, j'ai mĂȘme pas appris si l'implĂ©mentation libre de Java suit vers cette version 9 ou pas?
â Ă g'Auch TOUTE! http://afdgauch.online.fr
[^] # Re: DĂ©pĂȘche ?
PostĂ© par Dabowl_75 . ĂvaluĂ© Ă 5.
http://openjdk.java.net/projects/jdk9/
[^] # Re: DĂ©pĂȘche ?
PostĂ© par claudex . ĂvaluĂ© Ă 6.
C'est l'implémentation de référence, donc oui, ça suit.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: DĂ©pĂȘche ?
PostĂ© par BAud (site web personnel) . ĂvaluĂ© Ă 3.
ça précÚde, non ? Selon le principe du « _release early, release often _»
Me gourre-je ?
[^] # Re: DĂ©pĂȘche ?
PostĂ© par Letho . ĂvaluĂ© Ă 5.
Oui. C'est « me gourré-je », me semble-t-il ;)
[^] # Re: DĂ©pĂȘche ?
PostĂ© par Aldoo . ĂvaluĂ© Ă 8.
Clairement !
Mais il faudrait sans doute compléter un peu. La liste complÚte des nouveautés est ici.
Dans les nouveautés sympathiques (non citées dans le journal), je vois aussi :
- les méthodes privées dans les interfaces (pour partager le code entre méthodes default ou static)
- les fabriques statiques pour les collections immuables : Set.of(...), List.of(...), Map.of(...)
- implémentation de Reactive Streams (classe Flow)
Bon bien sĂ»r, tout le monde ne s'intĂ©resse pas aux mĂȘmes fonctionnalitĂ©s !
[^] # Re: DĂ©pĂȘche ?
PostĂ© par wismerhill . ĂvaluĂ© Ă 5.
Enfin!
# Latin-1 :'(
PostĂ© par pulkomandy (site web personnel, Mastodon) . ĂvaluĂ© Ă 3.
C'est triste de voir des strings en Latin-1 plutĂŽt qu'en UTF-8 qui aurait fait ganger Ă peu prĂšs autant de place.
Pour le logging, apparament le but est d'avoir un support pour les logs directement dans le coeur de Java, afin d'éviter que tous les autres modules (ou presque) dépendent de java.util.logging.
[^] # Re: Latin-1 :'(
PostĂ© par SpaceFox (site web personnel, Mastodon) . ĂvaluĂ© Ă 5.
C'est une question de performances je suppose : UTF-8 utilise des caractĂšres qui n'ont pas tous la mĂȘme longueur (en octets), ce qui complexifie pas mal les traitements.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Latin-1 :'(
PostĂ© par devnewton đș (site web personnel) . ĂvaluĂ© Ă 5.
UTF-16 non plus :-)
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Re: Latin-1 :'(
PostĂ© par SpaceFox (site web personnel, Mastodon) . ĂvaluĂ© Ă 1.
Peut-ĂȘtre, mais il n'y a aucun rapport. Le but du jeu Ă©tait de gagner en performances et en RAM.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Latin-1 :'(
PostĂ© par YBoy360 (site web personnel) . ĂvaluĂ© Ă 1.
Avant UTF-16, maintenant UTF-8, non ? du moins c'est ce que j'en déduis..
[^] # Re: Latin-1 :'(
PostĂ© par Buf (Mastodon) . ĂvaluĂ© Ă 4.
Non, pas du tout. En fait, avant, tout était codé en UTF-16. Maintenant, un objet
Stringcontient un nouveau champ qui prĂ©cise l'encodage utilisĂ©. Ăa va ĂȘtre latin1 si possible, ou UTF-16 sinon. Pour le dĂ©veloppeur, ça ne devrait rien changer, c'est un dĂ©tail d'implĂ©mentation et l'API publique ne change pas.[^] # Re: Latin-1 :'(
PostĂ© par damaki . ĂvaluĂ© Ă -1.
Je trouve surtout triste de voir implĂ©mentĂ©e une solution qui pour faire Ă©conomiser de la mĂ©moire aux pays anglophones va faire perdre de la mĂ©moire Ă tous les pays qui n'ont pas leur alphabet entier dans Latin-1. Les compagnies de haute technologie ont beau ĂȘtre majoritairement amĂ©ricaine, je trouve tout ça trĂšs regrettable. Alors oui, ça n'est qu'un flag par chaĂźne de caractĂšres, mais sur des milliards de chaĂźnes de caractĂšres, ça fait beaucoup de gĂąchis.
Désolé, votre alphabet est un alphabet de seconde zone, revenez plus tard.
[^] # Re: Latin-1 :'(
PostĂ© par Buf (Mastodon) . ĂvaluĂ© Ă 4.
Les strings, ça ne sert pas qu'Ă afficher du texte Ă destination de l'utilisateur, et donc, mĂȘme pour une application affichĂ©e en chinois (par exemple), il y aura probablement beaucoup de chaines de caractĂšres qui sont codables en latin1 : requĂȘtes SQL, chemins vers des fichiers, URLs, messages pour les logs, etc.
Au final, on gagnera de la place sur tout ça, et ça risque bien de largement contrebalancer le fait qu'on doive stocker un flag supplémentaire sur chaque objet string.
[^] # Re: Latin-1 :'(
PostĂ© par chimrod (site web personnel) . ĂvaluĂ© Ă 5.
Merci de me rappeler que l'on est vendredi. :)
[^] # Re: Latin-1 :'(
PostĂ© par Kangs . ĂvaluĂ© Ă 5.
Une requĂȘte SQL peut contenir du chinois.
[^] # Re: Latin-1 :'(
PostĂ© par devnewton đș (site web personnel) . ĂvaluĂ© Ă 10.
Et en quelques jointures, c'est du chinois!
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Re: Latin-1 :'(
PostĂ© par Victor STINNER (site web personnel) . ĂvaluĂ© Ă 3.
CPython a implémenté une optimisation similaire dans Python 3.3:
https://www.python.org/dev/peps/pep-0393/
Si une chaĂźne ne contient que des caractĂšres dans U+0000-U+00FF ("Latin1") : 1 octet par caractĂšre. Que dans U+0000-U+FFFF ("BMP") : 2 octets par caractĂšres. Sinon ("Astral"), 4 octets par caractĂšre (dĂ©solĂ© pour vos jolis emojis). Du coup, "toto" prend 4 octets au lieu de 16 avec Python 2 (en ignorant les entĂȘtes des objets).
[^] # Re: Latin-1 :'(
PostĂ© par bayo . ĂvaluĂ© Ă 1.
En Python 2 "toto" prend 4 octets, tu confonds avec u"toto" ;-)
# AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 10.
Bon c'est dredi on se lĂąche un peu :
Bon courage :)
[^] # Re: AH ah ah ...
PostĂ© par Victor . ĂvaluĂ© Ă 2.
bah en fait ils introduisent aussi de la compilation ahead of time, donc si tu fais un script java, tu compile, et ça démarre trÚs vite (ce qui a souvent été le problÚme du scripting en java).
rien Ă voir avec jshell ceci dit :)
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 3.
Je n'ai rien contre Java (ou presque ... trop de machine virtuelle 1.6 1.7 1.8)
C'est un excellent langage mondialement reconnu avec des librairies et des outils exceptionnels, jâespĂšre avoir compris ce que sont : TOMCAT / JBOSS / HIBERNATE / ElasticSearch
mais
honnĂȘtement j'ai du mal Ă le croire, Java est toujours "fortement typĂ©" non ... ou il a plus Ă©voluĂ© que ce je croyais ...
Attention je dis pas que c'est impossible, mais difficile Ă croire quand on connais le shell et python et un peu java
A mon humble avis ... of course
[^] # Re: AH ah ah ...
PostĂ© par Dring . ĂvaluĂ© Ă 4.
Quel est selon toi la contrainte à faire un langage de script avec un langage fortement typé ?
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 5.
Par expérience :
Les cas sont rares ou il y a besoin de typage en shell, je stocke généralement des chaßnes, nom de de fichiers le plus souvent
des chemins ou listes de chaĂźnes
d'ailleurs des qu'il faut calculer ( un entier, une date etc ...) je bascule en python, ou qu'il faut soigner une présentation comme un rapport de sauvegarde par mail
Il est vrai que je scripte du shell "portable" une vieille habitude de l'époque ou il y avait plusieurs Unix en circulation.
parfois on m'a imposer du ksh et c'est plus facile.
Et parfois certaines "applications" mélangent script shell + langage plus évolué comme Perl ou Python
Et quand je dis application il s'agit de lire un fichier de vérifier un format, d'en extraire certaines données de le transférer sur un autre serveur, de générer du SQL et de l'injecter dans une base de données puis d'envoyer un compte rendu et un mail pour prévenir.
C'est possible de faire la mĂȘme chose en java complĂštement ou partiellement c'est sur, mais certaines formes d'Ă©criture en shell sont tellement pratique et efficace qu'il serait dommage de s'en passer
ex : [ -d $REP ] || mkdir $REP # l'équivalent java (idem python / perl) doit prendre un peu plus de lignes :)
Autre exemple découvert derniÚrement :
timeout 5h synchro.sh
Si le script synchro.sh met plus de 5h alors il sera "killer"
pratique pour effectuer des synchronisation partielle en automatique
Certains outils sont tellement pratique et efficace qu'il est dommage de ne pas les apprendre
Ainsi j'aimerais savoir quel est l'équivalent python de JBOSS et HIBERNATE en aussi abouti
[^] # Re: AH ah ah ...
PostĂ© par Elfir3 . ĂvaluĂ© Ă 2.
Pour python du moins, pas vraiment. C'est peut ĂȘtre un poil moins rapide/intuitif par contre.
os.path.isdir(d) or os.mkdir(d)
Merci de prendre le commentaire ci-dessus avec: un peu de recul, le premier degré, et si possible le second !
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 5.
Pour python le code exact serait plutot :
import os
d = 'toto'
os.path.isdir(d) or os.mkdir(d)
En shell :
REP=toto
[ -d $REP ] || mkdir $REP
Si tu pouvais compléter en java vu mon niveau cela me prendrais trop longtemps (stp ne serait ce que pour ma culture personnelle)
Ensuite je veux récupérer le premier argument de la ligne de commande
en shell :
REP=1ăă«
[ -d $REP ] || mkdir $REP
cela risque de rajouter pas mal de choses en python comme en java, mais c'est normal
ces langages n'ont pas le mĂȘme usage.
python comme java nécessite plus de réflexion préalable avant de pondre un traitement qui tourne
le shell est parfait dans son rÎle de "glue" et par son universalité et sa disponibilité.
J'ai des scripts shell Ă©crit au siĂšcle dernier qui tourne encore cela risque d'ĂȘtre moins vrai pour python et java
mais ces langages font un peu plus de chose que ce vénérable sh
IL est vrai que je faisais déjà du shell avant les premiÚres versions de java et de python
Et dans son rĂŽle le shell sera difficile Ă dĂ©boulonner, mĂȘme M$ lâintĂšgre sur ses OS :) (ok c'est pas un rĂ©fĂ©rence)
Pour finir une petite touche de méchanceté gratuite et assumée (l'apanage des sysadmins :) )
sur une machine devant tourner 24/24 7/7 tu préféres : 10 scripts java ou 10 scripts shell ...
[^] # Re: AH ah ah ...
PostĂ© par BAKfr . ĂvaluĂ© Ă 3.
En python, pas vraiment, c'est trĂšs simple:
Je dirais mĂȘme qu'au contraire, on gagne en ligne des qu'on dĂ©passe le cas trĂšs simple. Par exemple, on peut tester si une option est passĂ©e en argument sans devoir se soucier de l'ordre des arguments:
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 2.
J'aime bien cette syntaxe pythonesque et simple
[^] # Re: AH ah ah ...
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 6.
Si tu dois tourner 24/7 désolé mais Java (et encore mieux Scala, mais bon je reste dans tes choix).
Plus le typage est fort moins tu as de risque de surprise à l'éxecution, donc shell est presque le pire choix.
[^] # Re: AH ah ah ...
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 3.
De rien.
P.S. : il se passe quoi avec ton code si REP contient un espace ?
[^] # Re: AH ah ah ...
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 4.
Bon faut ĂȘtre honnĂȘte ça fait pas exactement pareil (ça crĂ©e le dossier mais s'il existait dĂ©jà ça renvoie false). LĂ c'est bon :
File f = new File(rep); f.isDirectory() || f.mkdir()[^] # Re: AH ah ah ...
PostĂ© par Dring . ĂvaluĂ© Ă 4.
AprĂšs c'est quand mĂȘme beaucoup une question de goĂ»t, et surtout d'expĂ©rience.
Quand je lis ça :
Je me dis : OK, je vais crĂ©er un rĂ©pertoire, mais c'est quoi le truc avant ? Ah oui, la syntaxe shell permet de "tester" en utilisant une syntaxe qui fait penser Ă un argument (le "-p"). Ăvident pour celui qui fait du shell depuis 15 ans, cryptique pour celui qui en fait peu ou prou.
En bon développeur java, le code code java correspondant (comme celui fourni par Sufllope plus bas) me semble infiniment plus clair, et donc plus maintenable.
Et puis, $REP c'est quoi ? Une simple chaĂźne, ou une liste de fichiers/rĂ©pertoires ? Et comment se comporte mkdir si tu lui passes plusieurs rĂ©pertoires ? Tout ça, un expert shell va le savoir sans avoir besoin d'aller consulter man ; lĂ oĂč un dĂ©veloppeur java va prĂ©fĂ©rer itĂ©rer sur une liste et tester pour chaque rĂ©pertoire ce qui se passe, et comment se comporter en cas d'erreur.
Alors, comme dit Ă©galement plus bas, java n'a pas Ă©tĂ© pensĂ© pour l'Ă©criture rapide de scripts. Mais en ce qui me concerne, l'Ă©criture rapide de script est souvent une mauvaise solution Ă un problĂšme. Mauvaise solution qui peut quand mĂȘme ĂȘtre la meilleure par manque de temps, du coup je sais quand mĂȘme faire du shell...
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 8.
Vous savez quoi ... vous m'avez convaincu que l'informatique a évolué ...
je ne vais pas scripter en java, mais j'ai compris que c'était possible, et pas qu'en java d'ailleurs ...
Bon je vais de ce pas rejoindre le mouvement de libération des vieux de Huguette et Raymond ...
[^] # Re: AH ah ah ...
PostĂ© par Marotte â§ . ĂvaluĂ© Ă 3. DerniĂšre modification le 01 octobre 2017 Ă 14:29.
Je ne comprends pas la différence (fonctionnelle) que ça peut faire avec un simple
mkdir $REP?Il faudrait effectivement mettre des guillemets doubles autour de $REP, câest une chaĂźne, pas un entier, donc la valeur peut inclure des espaces et il faut dans ce cas Ă©viter quâelle soit splittĂ©e en N tokens...
Sinon moi aussi en shell je préfÚre écrire des trucs comme :
[ ... ] && ...ou[ ... ] || ..., en regroupant Ă©ventuellement Ă lâaide dâaccolades, plutĂŽt quâutiliser le mot clĂ©if, câest juste une question de concision. Ce nâest en rien cryptique. On peut Ă©galement utiliser la commandetestimplicitement (Ă la place du crochet ouvrant) câest tout aussi limpide.Jâaurais appelĂ© la variable $REPS si câĂ©tait une liste (aka "tableau" en shell) :) Je fais dâailleurs pareil en Python, une variable « au pluriel », câest une liste (ou un set, bref, un itĂ©rable...), je trouve ça plus plaisant que prĂ©fixer chaque variable avec son type : l_truc, i_machin, etc... (ou je sais ma mĂ©thode prĂ©sente des inconvĂ©nients, pour les cas Ă©quivoques jâutilise le prĂ©fixage ou bien je trouve un synonyme qui termine pas par un s au singulier...)
Un expert ? Si tu sais pas comment se comporte mkdir avec plusieurs arguments je dirais que tu nâas mĂȘme pas le niveau basique pour utiliser un shell *NIX, tu devrais mĂȘme pas avoir Ă relire les scripts de quelquâun dâautre, non ?
Et puis... Je ne suis ni un expert ni un dĂ©butant, la commande man je lâutilise sans retenu, je vois vraiment pas pourquoi je devrais me farcir la mĂ©moire avec toutes les options de toutes les commandes... et souvent jâouvre le man simplement pour vĂ©rifier que ma mĂ©moire est bonne...
Câest tout a fait possible en shell, comme avec nâimporte quel langage, câest en rien une obligation dâappeler une seule fois mkdir _o_
En Java aussi je suppose que tu as le choix entre itérer sur la liste ou bien passer la liste directement à la fonction de base (built-in) qui crée les répertoires.
[^] # Re: AH ah ah ...
PostĂ© par Kerro . ĂvaluĂ© Ă 2.
Dans pas mal de cas on s'en fiche. Mais si on écrit des scripts qui tiennent la route ça pose problÚme.
Ca évite l'affichage d'un message d'erreur.
On peut remplacer par
mkdir "$REP" >/dev/nullmais ce n'est pas mieux.Et ça évite de générer un code de retour !=0 (utile par exemple si le script contient
set -o errexitOn peut remplacer par
mkdir "$REP" || truemais pareil, ce n'est pas mieux.Si on veut la totale ça fait
mkdir "$REP" >/dev/null || true[^] # Re: AH ah ah ...
PostĂ© par Joris Dedieu (site web personnel) . ĂvaluĂ© Ă 4.
Je sais que c'est pas le sujet mais, c'est quoi l'intĂ©rĂȘt par rapport Ă un mkdir -p $REP ?
[^] # Re: AH ah ah ...
PostĂ© par pulkomandy (site web personnel, Mastodon) . ĂvaluĂ© Ă 5.
ça ne crée pas les dossiers parents s'ils n'existent pas.
[^] # Re: AH ah ah ...
PostĂ© par Marotte â§ . ĂvaluĂ© Ă 3.
Je dois pas ĂȘtre bien rĂ©veillĂ© mais je comprends pas la diffĂ©rence avec un simple
mkdir $REPqui ne crĂ©era pas non plus les parents (et qui ne fera rien si $REP est dĂ©jĂ un rĂ©pertoire) ?!Si $REP est un fichier (pas rĂ©pertoire) existant il nây a, sauf erreur, pas de diffĂ©rence non plus : le mkdir crĂ©era rien du tout.
Quelquâun pour mâexpliquer ?
[^] # Re: AH ah ah ...
PostĂ© par wismerhill . ĂvaluĂ© Ă 2.
Si le fichier existe dĂ©jĂ (que ce soit un rĂ©pertoire ou pas), mkdir Ă©chouera (code de retour > 0) avec un message d'erreur, ce n'est pas la mĂȘme chose que ne rien faire.
[^] # Re: AH ah ah ...
PostĂ© par Marotte â§ . ĂvaluĂ© Ă 3.
Oui ok...
Ce nâest pas la mĂȘme chose mais le rĂ©sultat sera le mĂȘme, avec en plus, lâinformation que le rĂ©pertoire existe dĂ©jĂ indiquĂ©e sur stderr :)
Bon, câest vrai que si le fait que le rĂ©pertoire existe dĂ©jĂ nâest pas une erreur on peut justement souhaiter ne rien avoir sur stderr...
Merci pour ta réponse.
[^] # Re: AH ah ah ...
PostĂ© par wismerhill . ĂvaluĂ© Ă 2.
Il n'y a pas que ça, si on a activĂ© dans le script l'option set -e, alors si le mkdir Ă©choue le script s'arrĂȘte lĂ .
Et mĂȘme sans ça, si on est dans une fonction et que le mkdir est la derniĂšre commande de la fonction, alors son code de retour devient le code de retour de la fonction, ce qui n'est peut-ĂȘtre pas ce qu'on voulait.
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 2.
C'est vrai que si l'on regarde de plus prĂšs cela n'a d'intĂ©rĂȘt que si tu veux du scripts portable sur des vieux unix du siĂšcle dernier encore en activitĂ©.
Ce qui je le conçois maintenant n'a quasiment plus dâintĂ©rĂȘt
[^] # Re: AH ah ah ...
PostĂ© par groumly . ĂvaluĂ© Ă 5.
Yen a pas. Ăa permet juste de montrer que:
1) gĂ©rer des fichiers/rĂ©pertoires, câest toujours beaucoup plus compliquĂ© quâils nây parait
2) le Shell est (ironiquement) horrible pour faire ça. Entre autres, on ne sait pas si ne pas crĂ©er les rĂ©pertoires intermĂ©diaires est un bug ou une feature, parce que lâapi de mkdir fouette.
En lâoccurence, son script vol en morceau si ya un espace (ou potentiellement autre charactere chelou) dans $REP. Bon courage pour comprendre ce quâil se passe aussi si ya une typo dans le nom de la variable.
La leçon de lâinstalleur de steam qui faisait un rm -rf /$variable a pas a Ă©tĂ© retenue visiblement - utiliser des variables Ă la rache dans les manipulations de fichiers, câest super dangereux.
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 3.
Ceci dit :
Un script bash n'est a l'origine que la suite des commandes que l'on aurait tapé à la main
donc pas d'analyse juste une suite d'instructions Ă reproduire sans utilisateur
Ce n'est pas la mĂȘme dĂ©marche pour un script python ou java ou grosso modo j'ai des donnĂ©es en entrĂ©es
sur lesquelles je vais appliquer un certain traitement puis générer éventuellement des données en sorties
[^] # Re: AH ah ah ...
PostĂ© par lasher . ĂvaluĂ© Ă 2.
Je dis peut-ĂȘtre une connerie, mais si tu tapes
[ -d "$REP" ] || mkdir "$REP"... Les espaces sont gérés non ?
[^] # Re: AH ah ah ...
PostĂ© par fearan . ĂvaluĂ© Ă 2.
Tout à fait, j'hallucine encore de voir des scripts ou exemples sans "" autour des variables désignant des fichiers ou des répertoires; et par extension toutes variables, sauf lorsque l'on souhaite en séparer les champs.
Bien sur on peut aussi jouer sur l'IFS, mais ça devient plus technique ;)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: AH ah ah ...
PostĂ© par Marotte â§ . ĂvaluĂ© Ă 3.
Pas tout Ă fait dâaccord. Je nâen mets pas quand $VAR contient un entier.
Je dirais que dans un script bien Ă©crit câest la prĂ©sence de guillemets qui te permet de dĂ©terminer quâil sâagit dâune variable de type chaĂźne, pas dâun entier ou un tableau.
[^] # Re: AH ah ah ...
PostĂ© par shbrol . ĂvaluĂ© Ă 1.
Sans les guillements, il y a quand mĂȘme une certaine gestion des espaces:
ok, je sors ...
[^] # Re: AH ah ah ...
PostĂ© par wismerhill . ĂvaluĂ© Ă 2. DerniĂšre modification le 28 septembre 2017 Ă 10:52.
Mais si tu utilise explicitement bash, alors il n'y a pas de problĂšme avec la version
[[ ]], qui n'est pas une commande et sait distinguer les variables:(mais pour mkdir, là il faut protéger bien entendu)
[^] # Re: AH ah ah ...
PostĂ© par claudex . ĂvaluĂ© Ă 3.
Python est aussi fortement typé.
AprÚs, je pense que l'auteur trollait avec sa phrase. On ne va pas commencer à remplacer tous les scripts bash par du Java. Par contre, les scripts lié au build ou pour avoir un langage de script dans une application, ça peut avoir du sens d'uitliser ça plutÎt que tu bash ou du Python.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 1.
Il peut l'ĂȘtre mais c'est pas obligatoire :)
D'ailleurs le terme exact c'est typage dynamique ou statique => Typage Fort
[^] # Re: AH ah ah ...
PostĂ© par claudex . ĂvaluĂ© Ă 8.
Typage fort/faible, ça n'a rien à voir avec dynamique/statique et d'ailleurs, c'est exactement ce qui est dit dans le lien que tu donne. Python et Java sont fortement typés mais Python est typé dynamiquement et Java statiquement.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 2.
Alors c'est le coté dynamique qui me plaßt
[^] # Re: AH ah ah ...
PostĂ© par Victor . ĂvaluĂ© Ă 3.
est-ce que c'est le cÎté dynamique ou le fait de ne pas avoir besoin d'expliciter les types ? (cf caml, scala, typescript...)
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 2.
Certainement ...
[^] # Re: AH ah ah ...
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 2.
Alors désolé de t'en rajouter une couche, mais aux deux dimensions "fort - faible" et "statique - dynamique" tu peux en ajouter une troisiÚme : la qualité de l'inférence.
Par exemple Scala est fortement et statiquement typé, mais infÚre beaucoup de choses, là ou Java infÚre que dalle.
[^] # Re: AH ah ah ...
PostĂ© par wismerhill . ĂvaluĂ© Ă 3.
Si, java faisait déjà un peu d'inférence en java 7, avec l'opérateur "diamant" qui permet d'écrire ça
à la place de ça
Ensuite, les lambda de java 8 reposent beaucoup sur l'inférence pour déduire quelle interface l'expression lambda implémente et quels sont les types des paramÚtres éventuels de l'expression.
Ăa permet par exemple, ayant une variable Map<String,Integer> map, de faire
oĂč java 8 dĂ©duit tout seul que k est de type String et v de type Integer, Ă la place de
Et pour les lambda qui implémentent une méthode qui retourne une valeur (comme java.util.function.Function) il déduit tout seul le type de retour en fonction du résultat de l'expression, ou en fonction du return si on met un bloc de code dans la lambda.
Et pour aller plus loin, li y a le JEP 286, qui malheureusement n'a pas été inclus dans java 9 et dont on espÚre que ce sera pour java 10.
[^] # Re: AH ah ah ...
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 1.
Au temps pour moi, je me suis arrĂȘtĂ© Ă Java 6 mais c'est vrai dans les versions suivantes ils ont bien bĂ»chĂ© Ă copier Scala :-P
[^] # Re: AH ah ah ...
PostĂ© par fearan . ĂvaluĂ© Ă 1. DerniĂšre modification le 29 septembre 2017 Ă 15:23.
Hou la faut pas confondre.
En java une Collection<String> est la mĂȘme chose que Collection tout court; c'est du sucre syntaxique pour Ă©viter d'Ă©crire des connerie (le compilo les repĂšres), mais ne change en aucun cas le type sous-jacent; ce qui fait qu'on ne peut pas Ă©crire
les deux fonction plop ayant la mĂȘme signature; pour quelqu'un venant du c++ et ayant l'habitude d'utiliser 2/3 template, cette limitation est trĂšs chiante.
Le coup du diamond (<>) est juste une facilité d'écriture; qui évite d'écrire de la redondance.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: AH ah ah ...
PostĂ© par wismerhill . ĂvaluĂ© Ă 3.
Les génériques ne sont pas que du sucre syntaxique (contrairement au "foreach" introduit dans java 5 et au "try with resource" introduit dans java 7), il sont perdu à l'exécution, mais le compilateur les vérifie vraiment et n'acceptera pas que tu donne une variable déclarée comme Collection à une fonction qui attends une Collection.
Avec quoi crois-tu que je les confonde?
Quand à ton exemple, ça s'appelle de la surcharge, et c'est orthogonal avec l'inférence ce sur quoi je répondais).
[^] # Re: AH ah ah ...
PostĂ© par Guillaum (site web personnel) . ĂvaluĂ© Ă 2.
Donc un langage fortement et statiquement typé, mais avec de l'inférence de type correcte pourrait te plaire ?
J'utilise tous les jours Haskell pour "scripter": le code est concis grùce à l'inférence, mais j'ai beaucoup plus d'outils à ma.disposition pour m'exprimer et économiser du temps tout en rendant le code un peu plus robuste. (Les scripts qui plantent au bout de 45 minutes à cause d'une variable mal nommée cela m'énerve ;)
[^] # Re: AH ah ah ...
PostĂ© par Christophe B. (site web personnel) . ĂvaluĂ© Ă 2.
AprÚs lecture de ta réponse je suis allez voir par curiosité quelques tutos haskell
et il faut bien le reconnaßtre c'est plus qu'intéressant et attractif
[^] # Re: AH ah ah ...
PostĂ© par MichaĂ«l (site web personnel) . ĂvaluĂ© Ă 3.
Pour OCaml j'ai écrit rashell que je recommande. :)
# .
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 6.
En réalité avec des outils un tant soit peu modernes, on peut les écrire en UTF-8 depuis longtemps. Mais c'était une entorse à la norme JEE sans garantie de fonctionnement dans tous les conteneurs, certes.
[^] # Re: .
PostĂ© par BAud (site web personnel) . ĂvaluĂ© Ă 2.
tu mets eclipse et notepad++ ainsi que vi dans le lot ? Il y a emacs aussi ? (eh oh c'est encore dredi !)
[^] # Re: .
PostĂ© par Sufflope (site web personnel) . ĂvaluĂ© Ă 2.
Pendant des années j'ai écrit des .properties en UTF-8 avec Eclipse, donc oui je le mets dans le lot des outils qui le permettent. Je n'utilise pas vraiment N++ ni vi ni emacs mais je doute qu'ils refusent d'éditer des .properties en unicode.
[^] # Re: .
PostĂ© par Faya . ĂvaluĂ© Ă 2.
Soit je n'ai pas compris la blague de BAud, soit il n'utilise que les éditeurs pour hipsters à la Atom IDE (fraßchement sorti ce mois-ci (pas Atom mais Atom augmenté de modules "Language Server Protocol" pour en faire un IDE)).
Je code sous ViM en UTF-8 depuis des annĂ©es, je n'imagine pas qu'Emacs OS n'en soit pas capable. MĂȘme notepad.exe le fait.
# Compact Strings
PostĂ© par Meku (site web personnel) . ĂvaluĂ© Ă 7.
Ah enfin ! Ăa va pouvoir faire chuter le prix de la RAM !
-->[]
[^] # Re: Compact Strings
PostĂ© par Christophe "CHiPs" PETIT (site web personnel) . ĂvaluĂ© Ă 6.
MĂȘme en latin1, mĂȘme en latin1,
les chaĂźnes nous emm... !
(air connu du gars Georges)
;-)
# Ăcrivons en français
PostĂ© par Maderios . ĂvaluĂ© Ă -4.
'Java 9 est dehors' est la traduction littérale de l'anglais 'java 9 is out'.
Ăquivalent en français: 'java 9 est sorti'.
[^] # Re: Ăcrivons en français
PostĂ© par Dr BG . ĂvaluĂ© Ă 5.
Je pense que l'auteur est au courant.
[^] # Re: Ăcrivons en français
PostĂ© par Guillaum (site web personnel) . ĂvaluĂ© Ă 8.
Il est électricien ?
[^] # Re: Ăcrivons en français
PostĂ© par devnewton đș (site web personnel) . ĂvaluĂ© Ă 10.
J'ignorais de le savoir! Tank! Tu as construit ma journée!
Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board
[^] # Re: Ăcrivons en français
PostĂ© par windu.2b . ĂvaluĂ© Ă 3.
Vu qu'on parle de Java, il aurait peut-ĂȘtre fallu Ă©crire "Java 9 est dĂ©boĂźtĂ© !"
[^] # Re: Ăcrivons en français
PostĂ© par lolop (site web personnel) . ĂvaluĂ© Ă 4.
Ou sinon, «Java 9 est hors jeu»...
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.