Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3585 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  25159  25160  25161  ..  27186  27187  27188  27189  27190  27191
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2434929
el muchach​o
Comfortably Numb
Posté le 08-12-2022 à 23:48:07  profilanswer
 

Reprise du message précédent :
Sweet mother of WTF, il y a vraiment de masos: AOC 2022 en SQL


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
mood
Publicité
Posté le 08-12-2022 à 23:48:07  profilanswer
 

n°2434931
Flaie
Posté le 09-12-2022 à 03:27:23  profilanswer
 

el muchacho a écrit :

Franchement, même si je le maîtrise pas du tout pour l'instant, j'apprends quelques petits trucs tous les jours et je commence à trouver ce langage de plus en plus attrayant.
 
Cette solution fait appel à plusieurs syntaxes que je ne connais pas:


fun main() {
    val M = generateSequence(::readlnOrNull).asIterable().map { it.map(Char::digitToInt) }
 
    fun linesOfSight(x: Int, y: Int) = sequenceOf(
        sequenceOf((x - 1 downTo 0), (x + 1 until M[0].size)).map { it.map { x -> x to y } },
        sequenceOf((y - 1 downTo 0), (y + 1 until M.size)).map { it.map { y -> x to y } }
    ).flatten().map { it.map { (x, y) -> M[y][x] } }
 
    with(M.flatMapIndexed { y, l -> l.mapIndexed { x, h -> Triple(x, y, h) } }) {
        println(count { (x, y, h) -> linesOfSight(x, y).any { it.isVisible(h) } })
        println(maxOf { (x, y, h) -> linesOfSight(x, y).map { it.countVisible(h) }.reduce(Int::times) })
    }
}
 
private fun List<Int>.isVisible(h: Int) = all { it < h }
private fun List<Int>.countVisible(h: Int) = indexOfFirst { it >= h }.let { if (it == -1) size else it + 1 }


Flaie, à quoi servent "with" et "let" ?  De façon générale, j'ai une vague idée de ce que fait le programme, mais ce n'est pas complètement clair.


with ca prends un receiver et un block et fa applique le block au receiver comme si il était this dans le scope du block. Donc en gros ça permet de grouper des appels sur un objet en le référençant implicitement dans ce scope
 
Dit comme ça ça a l'air compliqué:
 

Code :
  1. class Foo(val bar: String)
  2. fun foo() = Foo("much" )
  3. val half = with (foo()).{
  4.    println(toUpperCase())
  5.    println(toLoweCase())
  6.    println(length)
  7.    length / 2
  8. }
  9. // same as
  10. val foo = foo()
  11. println(foo.toUpperCase())
  12. println(foo.toLowerCase())
  13. println(foo.length)
  14. val half = foo.length / 2


 
La tu as évite de déclarer une variable, trouver un nom et écrire le nom autant de fois que tu as d'appels
 
Pour let c'est pareil sauf que ça prends une lambda ou le paramètre est it et pas this, ça permet donc d'exécuter des lambda function sur des objets qui sont bien existants (non null), ou bien éviter comme pour le with de créer une variable
 
Tu as aussi apply, run et also, tu auras plus de détails ici https://kotlinlang.org/docs/scope-functions.html
 

n°2434932
ratibus
Posté le 09-12-2022 à 07:07:23  profilanswer
 

nraynaud a écrit :

https://img3.super-h.fr/images/2022 [...] d590de.jpg
Y’avait mes tracteurs qui critiquaient ma plomberie, mais d’après le niveau laser, tout a l’air de pencher dans le bon sens :o


 
J'ai une salle d'eau à refaire, c'est quoi tes disponibilités et tarifs ?
L'artisan sera logé, nourri et blanchi :d


---------------
Mon blog
n°2434933
Flaie
Posté le 09-12-2022 à 07:22:35  profilanswer
 

Day 09:
 

Spoiler :

Donné 3 mauvaises réponses avant la bonne  [:flaie:8]  
par contre la partie 2 a été plus vite car j'ai juste eu a ajouter une boucle pour calculer tous les knots
 
 https://rehost.diberie.com/Picture/Get/r/113114

n°2434934
el muchach​o
Comfortably Numb
Posté le 09-12-2022 à 07:29:16  profilanswer
 

Bonjour, je ne vois pas où est le point de départ, dans le problème ??
edit: ah, on découvre le terrain au fur et à mesure.


Message édité par el muchacho le 09-12-2022 à 07:31:12

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434935
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-12-2022 à 08:51:35  profilanswer
 

https://codeshare.io/RbMdVO allez on se refait des petites lib de géométrie pour les jours à venir...

 

J'ai beaucoup trop peiné à modéliser les règles de déplacement...


Message édité par hephaestos le 09-12-2022 à 08:53:37
n°2434936
ratibus
Posté le 09-12-2022 à 08:53:15  profilanswer
 

Bien sympa cet AoC jour 9 : https://github.com/ratibus/adventof [...] /solve.php :)


---------------
Mon blog
n°2434937
flo850
moi je
Posté le 09-12-2022 à 08:54:31  profilanswer
 

nraynaud a écrit :

https://img3.super-h.fr/images/2022 [...] d590de.jpg
Y’avait mes tracteurs qui critiquaient ma plomberie, mais d’après le niveau laser, tout a l’air de pencher dans le bon sens :o

 

pas mal du tout
Moi ce sera pour février / mars le début des travaux


Message édité par flo850 le 09-12-2022 à 09:07:36

---------------

n°2434938
ratibus
Posté le 09-12-2022 à 09:02:19  profilanswer
 

nraynaud a écrit :

https://img3.super-h.fr/images/2022 [...] d590de.jpg
Y’avait mes tracteurs qui critiquaient ma plomberie, mais d’après le niveau laser, tout a l’air de pencher dans le bon sens :o


Très jolis supports de laser  :sol:

n°2434941
el_barbone
too old for this shit ...
Posté le 09-12-2022 à 09:39:59  profilanswer
 

ratibus a écrit :


 
J'ai une salle d'eau à refaire, c'est quoi tes disponibilités et tarifs ?
L'artisan sera logé, nourri et blanchi :d


 
ici pour un sdb de 8m2 avec baignoire/douche et avait tout fait refaire du sol au plafond (tout casser, recarreler sol et murs full hauteur, douche à l'italienne, nouvelle baignoire, nouveau meuble vasque, montage d'une cloison qui a été carrelée pour faire une separation "buanderie" pour LL et SL) ... 14K (matériaux de qualité, carrelage > 40€/m2, robinetterie full grohe).


---------------
En théorie, la théorie et la pratique sont identiques, en pratique, non.
mood
Publicité
Posté le 09-12-2022 à 09:39:59  profilanswer
 

n°2434942
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-12-2022 à 09:45:31  profilanswer
 

nraynaud porn : https://www.youtube.com/watch?v=M1-YeqGynlw


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2434943
masklinn
í dag viðrar vel til loftárása
Posté le 09-12-2022 à 09:47:20  profilanswer
 

Hadès II annoncé [:jar jar]

Spoiler :

j'ai toujours pas lancé le premier mais c'est pas grave


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434944
flo850
moi je
Posté le 09-12-2022 à 10:03:16  profilanswer
 

el_barbone a écrit :


 
ici pour un sdb de 8m2 avec baignoire/douche et avait tout fait refaire du sol au plafond (tout casser, recarreler sol et murs full hauteur, douche à l'italienne, nouvelle baignoire, nouveau meuble vasque, montage d'une cloison qui a été carrelée pour faire une separation "buanderie" pour LL et SL) ... 14K (matériaux de qualité, carrelage > 40€/m2, robinetterie full grohe).


a peu prêt le meme cahier des charge et le même prixi l'an dernier chez moi :D


---------------

n°2434945
Kenshineuh
Posté le 09-12-2022 à 10:09:07  profilanswer
 

masklinn a écrit :

Hadès II annoncé [:jar jar]

Spoiler :

j'ai toujours pas lancé le premier mais c'est pas grave



 
Top 3 des jeux que j'ai fait dans ma vie je pense. J'ai hâte.

n°2434946
Jubijub
Parce que je le VD bien
Posté le 09-12-2022 à 10:31:43  profilanswer
 

masklinn a écrit :

Hadès II annoncé [:jar jar]

Spoiler :

j'ai toujours pas lancé le premier mais c'est pas grave



 
J’ai bien aimé mais c’est un peu répétitif. Mais le style , la narration sont géniaux


---------------
Jubi Photos : Flickr - 500px
n°2434947
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-12-2022 à 10:51:25  profilanswer
 

Trop dur pour moi.

n°2434948
el muchach​o
Comfortably Numb
Posté le 09-12-2022 à 11:06:52  profilanswer
 

Ah merde, le file system check de ma Debian qui est en FAILED, avec une "dependency failed for /boot/efi", EXT4-FS en erreur sur le NVMe, GNOME qui ne démarre plus, etc :/
 
Bon, j'ai 2 semaines de dev à pusher avant la réinstall complète...


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434950
Flaie
Posté le 09-12-2022 à 11:20:05  profilanswer
 

el muchacho a écrit :

Ah merde, le file system check de ma Debian qui est en FAILED, avec une "dependency failed for /boot/efi", EXT4-FS en erreur sur le NVMe, GNOME qui ne démarre plus, etc :/
 
Bon, j'ai 2 semaines de dev à pusher avant la réinstall complète...


tu devrais pusher tous les jours :jap:

n°2434951
Dion
Acceuil
Posté le 09-12-2022 à 11:21:23  profilanswer
 

Much il ne push pas tant que la facture n'a pas été payée :o


---------------
It is not called show art
n°2434952
koskoz
They see me trollin they hatin
Posté le 09-12-2022 à 11:24:21  profilanswer
 

el muchacho a écrit :

Ah merde, le file system check de ma Debian qui est en FAILED, avec une "dependency failed for /boot/efi", EXT4-FS en erreur sur le NVMe, GNOME qui ne démarre plus, etc :/
 
Bon, j'ai 2 semaines de dev à pusher avant la réinstall complète...


 
[:psychokwak]


---------------
Twitter
n°2434953
gatsu35
Blablaté par Harko
Posté le 09-12-2022 à 11:30:28  profilanswer
 

el muchacho a écrit :

Ah merde, le file system check de ma Debian qui est en FAILED, avec une "dependency failed for /boot/efi", EXT4-FS en erreur sur le NVMe, GNOME qui ne démarre plus, etc :/

 

Bon, j'ai 2 semaines de dev à pusher avant la réinstall complète...


Ca ne t'es jamais venu à l'idée que tu foutais tout dans une branche dans ton coin et de pousser plusieurs fois par jour ?

 

J'ai ajout un alias "acp"

 

git acp "yo j'add et je push tout en meme temps"

 

Comme ça je suis tranquille.

 

on n'est plus en 2000.

 
Code :
  1. co = checkout
  2. br = branch
  3. ci = commit
  4. st = status
  5. ac = "!f() { git add -A && git commit -m \"$@\"; }; f"
  6. acp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
  7. cmp = acp

Message cité 1 fois
Message édité par gatsu35 le 09-12-2022 à 11:31:24

---------------
Blablaté par Harko
n°2434954
___alt
Posté le 09-12-2022 à 11:35:03  profilanswer
 

Chuis assez content d'avoir Backblaze perso.
Si demain j'ai un disque qui meurt en perdant toutes les données, je perds vraiment pas grand chose, en plus de tout ce qui est déjà synchro sur un cloud tiers (photos, mails, etc)


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2434955
koskoz
They see me trollin they hatin
Posté le 09-12-2022 à 11:38:12  profilanswer
 

gatsu35 a écrit :


Ca ne t'es jamais venu à l'idée que tu foutais tout dans une branche dans ton coin et de pousser plusieurs fois par jour ?

 

J'ai ajout un alias "acp"

 

git acp "yo j'add et je push tout en meme temps"

 

Comme ça je suis tranquille.

 

on n'est plus en 2000.

 
Code :
  1. co = checkout
  2. br = branch
  3. ci = commit
  4. st = status
  5. ac = "!f() { git add -A && git commit -m \"$@\"; }; f"
  6. acp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
  7. cmp = acp


 


❯ which gwip
gwip: aliased to git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"


Message édité par koskoz le 09-12-2022 à 11:38:29

---------------
Twitter
n°2434956
el muchach​o
Comfortably Numb
Posté le 09-12-2022 à 11:38:27  profilanswer
 

Dion a écrit :

Much il ne push pas tant que la facture n'a pas été payée :o


Voila, c'est la base du business :o

 

Bon, j'ai quand même pu sauvegarder mon code, et maintenant, on va pusher.

 

Bon par contre, j'aimerais bien savoir ce qui a causé ces corruptions. Probablement le fait que Virtualbox/Debian ne gère pas bien les mises en veille de Windows avec ce Dell ? Régulièrement, j'ai eu des bugs bizarres où Gnome ne répondait plus après retour au desktop.

Message cité 1 fois
Message édité par el muchacho le 09-12-2022 à 11:39:09

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434957
Kenshineuh
Posté le 09-12-2022 à 11:38:47  profilanswer
 

Perso je push régulièrement aussi.

 

Pour mes data perso, j'ai pas grand chose car je garde très peu de chose. Je peux réinstaller mon system complet en moins d'une heure (WSL + configs et projets inclus).
Concernant mon drive (~2go de data), j'ai un script qui le backup tous les mois en zip sur mon second SSD et je mets ce backup sur un DD externe. Le tout protégé avec bitlocker/veracrypt mnt. :o


Message édité par Kenshineuh le 09-12-2022 à 11:43:45
n°2434958
Dion
Acceuil
Posté le 09-12-2022 à 11:43:44  profilanswer
 

el muchacho a écrit :


Voila, c'est la base du business :o
 
Bon, j'ai quand même pu sauvegarder mon code, et maintenant, on va pusher.
 
Bon par contre, j'aimerais bien savoir ce qui a causé ces corruptions. Probablement le fait que Virtualbox/Debian ne gère pas bien les mises en veille de Windows avec ce Dell ? Régulièrement, j'ai eu des bugs bizarres où Gnome ne répondait plus après retour au desktop.


Tu as l'embarras du choix  [:cosmoschtroumpf]  
 
Sinon.


---------------
It is not called show art
n°2434959
masklinn
í dag viðrar vel til loftárása
Posté le 09-12-2022 à 11:45:28  profilanswer
 

Je push régulièrement et je vais régulièrement pusher des wip pour être tranquille, mais un alias pour pousser de la merde je pourrais pas, si je décide de pousser de la merde je considère devoir faire l'effort :D
 
J'utilise beaucoup `commit --squash` et `commit --fixup` par contre. Et j'ai un alias pour `commit --amend --no-edit`.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434960
koskoz
They see me trollin they hatin
Posté le 09-12-2022 à 11:47:03  profilanswer
 

J'essaye d'expliquer simplement et sans rentrer dans les détails la différence entre code synchrone et asynchrone avec une fonction qui réalise deux appels HTTP en utilisant du pseudo code.

 

J'ai écrit le pseudo code async avec des promises mais quand on a aucune base en JS je suis pas sûr que ce soit le mieux pour comprendre.

 

Avec await ça me semble plus compréhensible :

 
Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3.    $metadataPromise = await get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = await get('https://product-stock/api/' . $productId);
  5.  
  6.    return ['metadata' => $metadata, 'stock' => $stock];    
  7. }
 

Qu'en pensez-vous ? [:michel_cymerde:3]

Message cité 1 fois
Message édité par koskoz le 09-12-2022 à 11:47:20

---------------
Twitter
n°2434961
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 09-12-2022 à 11:47:42  profilanswer
 

J'espère qu'après tout ces git add -A cracra vous rebasez et vous sortez filter-branch pour enlever tous les binaires qui n'ont rien à y foutre :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2434962
SekYo
Posté le 09-12-2022 à 11:51:00  profilanswer
 

masklinn a écrit :

Hadès II annoncé [:jar jar]

Spoiler :

j'ai toujours pas lancé le premier mais c'est pas grave



Tsss, c'est pourtant un GOTY... Et je dis ça en étant pas un grand fan des roguelite !  
 
 
Sinon day9 en rust: https://rehost.diberie.com/Picture/Get/f/113164
Je me suis vaguement posé la question si plutôt que de simuler chaque mouvement individuellement on pourrait avec un peu de math trouver directement la position de la tail, mais j'ai vite choisi l'option bourinne :o
 
Mask, tu as une idée si y a un façon plus élégante d'écrire ma boucle "for _ in 0..distance" ? J'ai eu besoin de faire comme ça vu que j'ai besoin de garder une référence à mon élément précédent. Je suppose que j'aurai pu cloner sa valeur aussi ? Mais je trouve pas ça beaucoup mieux.

n°2434963
sligor
Posté le 09-12-2022 à 11:52:25  profilanswer
 

sinon y'a un truc qui existe pour backuper un travail en cours sans trop se faire chier à filtrer ce qui doit l'être ou pas.... ça s'appelle les backup :o

n°2434964
Flaie
Posté le 09-12-2022 à 11:53:39  profilanswer
 

masklinn a écrit :

Je push régulièrement et je vais régulièrement pusher des wip pour être tranquille, mais un alias pour pousser de la merde je pourrais pas, si je décide de pousser de la merde je considère devoir faire l'effort :D
 
J'utilise beaucoup `commit --squash` et `commit --fixup` par contre. Et j'ai un alias pour `commit --amend --no-edit`.


J'utilise même plus la ligne de commande, la flemme, le Git dans IntelliJ est super bieng, c'est vraiment rare que j'ai un soucis qui me force à passer sur command line, et heureusement

n°2434965
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-12-2022 à 11:53:46  profilanswer
 

koskoz a écrit :

J'essaye d'expliquer simplement et sans rentrer dans les détails la différence entre code synchrone et asynchrone avec une fonction qui réalise deux appels HTTP en utilisant du pseudo code.
 
J'ai écrit le pseudo code async avec des promises mais quand on a aucune base en JS je suis pas sûr que ce soit le mieux pour comprendre.
 
Avec await ça me semble plus compréhensible :
 

Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3.    $metadataPromise = await get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = await get('https://product-stock/api/' . $productId);
  5.  
  6.    return ['metadata' => $metadata, 'stock' => $stock];    
  7. }


 
Qu'en pensez-vous ? [:michel_cymerde:3]


 
await ça cache tout le concept d'asynchronicité. Les noms sont faux, puisque ce que retourne await c'est une valeur, pas une Promise. Pour apprendre, il ne faut pas l'utiliser, mais utiliser juste des Promise:
 

Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): Promise<array>
  2. {
  3.    $metadataPromise = get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6.    return $metadataPromise.then(m => etc)
  7. }


 
 
Et dans un second temps tu expliques que await c'est du sucre syntactique pour dire "p.then(() => {})", mais que dans le cas présent par exemple ça ne permet pas un truc essentiel qui est de faire les deux requêtes en parallèle. await c'est juste pratique quand on veut utiliser des fonctions asynchrones comme si elles étaient synchrones, ça ne permet pas de prendre avantage de l'asynchronicité.

n°2434966
el muchach​o
Comfortably Numb
Posté le 09-12-2022 à 11:56:40  profilanswer
 

Finalement Linux a pu réparer le filesystem. Je peux redémarrer  :pt1cable:  
 
J'ai pas 100% confiance...


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434967
koskoz
They see me trollin they hatin
Posté le 09-12-2022 à 11:56:50  profilanswer
 

hephaestos a écrit :


 
await ça cache tout le concept d'asynchronicité. Les noms sont faux, puisque ce que retourne await c'est une valeur, pas une Promise. Pour apprendre, il ne faut pas l'utiliser, mais utiliser juste des Promise:
 

Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): Promise<array>
  2. {
  3.    $metadataPromise = get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6.    return $metadataPromise.then(m => etc)
  7. }


 
Et dans un second temps tu expliques que await c'est du sucre syntactique pour dire "p.then(() => {})", mais que dans le cas présent par exemple ça ne permet pas un truc essentiel qui est de faire les deux requêtes en parallèle. await c'est juste pratique quand on veut utiliser des fonctions asynchrones comme si elles étaient synchrones, ça ne permet pas de prendre avantage de l'asynchronicité.


 
Je ne veux pas enseigner ce que sont les promesses ni comment elles fonctionnent, juste expliquer qu'avec du code asynchrone tu peux effectuer les deux appels "en même temps" mais que tu dois attendre la réponse des deux pour utiliser leur retour.
 
Initialement j'ai ça :
 

Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3.    $metadataPromise = get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6.    return all([$metadataPromise, $stockPromise])->then(array $responses) {
  7.        return ['metadata' => $responses[0]->getContent(), 'stock' => $responses[1]->getContent()];
  8.    });    
  9. }


 
Mais j'ai pas l'impression que ce soit plus claire [:transparency]


---------------
Twitter
n°2434970
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-12-2022 à 12:04:39  profilanswer
 

koskoz a écrit :

 

Je ne veux pas enseigner ce que sont les promesses ni comment elles fonctionnent, juste expliquer qu'avec du code asynchrone tu peux effectuer les deux appels "en même temps" mais que tu dois attendre la réponse des deux pour utiliser leur retour.

 

Initialement j'ai ça :

 
Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3. $metadataPromise = get('https://product-metadata/api/' . $productId);
  4. $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6. return all([$metadataPromise, $stockPromise])->then(array $responses) {
  7. return ['metadata' => $responses[0]->getContent(), 'stock' => $responses[1]->getContent()];
  8. });
  9. }
 

Mais j'ai pas l'impression que ce soit plus claire [:transparency]

 

C'est pas plus clair mais c'est plus correct. Avec le code que tu as donné avant, les deux appels ne sont pas parallèle. Pour faire ça il faut utiliser Promise.all, et pour expliquer Promise.all je pense qu'il faut expliquer les promesses.


Message édité par hephaestos le 09-12-2022 à 12:05:12
n°2434972
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 09-12-2022 à 12:07:23  profilanswer
 

koskoz a écrit :

 

Je ne veux pas enseigner ce que sont les promesses ni comment elles fonctionnent, juste expliquer qu'avec du code asynchrone tu peux effectuer les deux appels "en même temps" mais que tu dois attendre la réponse des deux pour utiliser leur retour.

 

Initialement j'ai ça :

 
Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3. $metadataPromise = get('https://product-metadata/api/' . $productId);
  4. $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6. return all([$metadataPromise, $stockPromise])->then(array $responses) {
  7. return ['metadata' => $responses[0]->getContent(), 'stock' => $responses[1]->getContent()];
  8. });
  9. }
 

Mais j'ai pas l'impression que ce soit plus claire [:transparency]

 

C'est pas plus clair mais c'est plus correct. Avec le code que tu as donné avant, les deux appels ne sont pas parallèle. Pour faire ça il faut utiliser Promise.all, et pour expliquer Promise.all je pense qu'il faut expliquer les promesses.

 

Await c'est bien pour expliquer aux gens qui n'ont pas besoin de comprendre l'asynchronicité comment on se sert d'une promesse.

n°2434973
DDT
Few understand
Posté le 09-12-2022 à 12:13:56  profilanswer
 

Mon pote taïwanais (celui qui a créé sa boîte) qui partage une photo où il était à un apéro avec Lisa Su et Jensen Huang oklm. [:clooney44]


---------------
click clack clunka thunk
n°2434974
masklinn
í dag viðrar vel til loftárása
Posté le 09-12-2022 à 12:15:51  profilanswer
 

koskoz a écrit :

Je ne veux pas enseigner ce que sont les promesses ni comment elles fonctionnent


Tu dois nécessairement expliquer ce que sont les promesses, sinon ça n'a aucun sens. Toute la logique des promesses c'est de représenter une "valeur future", si t'expliques pas ce concept, tu peux pas clarifier l'async sauf à tout passer en callbacks (et ça c'est horrible).

 

Après expliquer comment elles fonctionnent peut être important à cause de la distinction entre l'async basé sur des tâches et l'async basé sur des coroutines, qui donnent des comportements très différents.

koskoz a écrit :

juste expliquer qu'avec du code asynchrone tu peux effectuer les deux appels "en même temps" mais que tu dois attendre la réponse des deux pour utiliser leur retour.


Sauf que ton code avec await comme dit hepha il fait rien en même temps, `await` ça crée un point de synchronisation, donc il fait deux appels séquentiellement comme du code bloquant. C'est tout l'intérêt de await en fait: ça permet de faire des appels async avec un modèle d'exécution séquentiel (donc bloquant).

koskoz a écrit :

Initialement j'ai ça :

 
Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3.    $metadataPromise = get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6.    return all([$metadataPromise, $stockPromise])->then(array $responses) {
  7.        return ['metadata' => $responses[0]->getContent(), 'stock' => $responses[1]->getContent()];
  8.    });    
  9. }
 

Mais j'ai pas l'impression que ce soit plus claire [:transparency]


Code :
  1. function getProductData(HttpClientInterface $httpClient, int $productId): array
  2. {
  3.    $metadataPromise = get('https://product-metadata/api/' . $productId);
  4.    $stockPromise = get('https://product-stock/api/' . $productId);
  5.  
  6.    [$metadata, $stock] = await all([$metadataPromise, $stockPromise]);
  7.    return ['metadata' => $metadata, 'stock' => $stock];
  8. }


Utiliser await n'empêche en rien d'utiliser des composition de promesses, au contraire.


Message édité par masklinn le 09-12-2022 à 12:18:16

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434975
sligor
Posté le 09-12-2022 à 12:16:12  profilanswer
 

DDT a écrit :

Mon pote taïwanais (celui qui a créé sa boîte) qui partage une photo où il était à un apéro avec Lisa Su et Jensen Huang oklm. [:clooney44]


manque C. C. Wei :o

n°2434976
___alt
Posté le 09-12-2022 à 12:20:53  profilanswer
 

el muchacho a écrit :

Finalement Linux a pu réparer le filesystem. Je peux redémarrer  :pt1cable:  
 
J'ai pas 100% confiance...


 
C'est l'heure de tester le disque :o


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  25159  25160  25161  ..  27186  27187  27188  27189  27190  27191

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)