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

 

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

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  23710  23711  23712  ..  26991  26992  26993  26994  26995  26996
Auteur Sujet :

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

n°2371889
el muchach​o
Comfortably Numb
Posté le 18-12-2020 à 12:17:54  profilanswer
 

Reprise du message précédent :


Ah oui [:easyupper]

 

ma soluce

 

(en gros la même chose, mais j'ai quand même nommé des fonctions, et j'ai fait un cube de (i,j,k) pour les plus proches voisins minus le centre, et à chaque (x,y,z) de l'espace, (x+i, y+j, z+k) me donne les voisins)


Message édité par el muchacho le 18-12-2020 à 12:25:55

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
mood
Publicité
Posté le 18-12-2020 à 12:17:54  profilanswer
 

n°2371890
flo850
moi je
Posté le 18-12-2020 à 13:13:15  profilanswer
 

Pendant ce temps là dans le monde réel :

 

"nos imports son trop longs , faut qu'on réécrive tout en microservices sur une archi de mes couilles cloud native "

 

Les imports en question commencent par charger toute les données du clients dans un tableau PHP, puis indexent ce tableau par la clé de référence, et ensuite comparent chaque lignes avec de faire un update/insert + d'éventuelles requêtes individuelles pour vérifier les clés étrangère

 

Pareil pour voir s'il y a des effacement à faire au bout
Attention âmes sensibles

Spoiler :


ini_set('memory_limit', '10G');

 

Ca va faire de la victoire facile avec un gros INSERT table(cols) ( ) ON CONFLICT SET ....  RETURNING id.
Avec en bonus une transaction pour faire du rollback en cas d'erreur

Message cité 3 fois
Message édité par flo850 le 18-12-2020 à 13:15:41

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

n°2371891
skeye
Posté le 18-12-2020 à 13:23:57  profilanswer
 

'tain, 10G [:tinostar]


---------------
Can't buy what I want because it's free -
n°2371892
Dion
Acceuil
Posté le 18-12-2020 à 13:27:44  profilanswer
 

flo850 a écrit :

Pendant ce temps là dans le monde réel :
 
"nos imports son trop longs , faut qu'on réécrive tout en microservices sur une archi de mes couilles cloud native "
 
Les imports en question commencent par charger toute les données du clients dans un tableau PHP, puis indexent ce tableau par la clé de référence, et ensuite comparent chaque lignes avec de faire un update/insert + d'éventuelles requêtes individuelles pour vérifier les clés étrangère  
 
Pareil pour voir s'il y a des effacement à faire au bout
Attention âmes sensibles

Spoiler :


ini_set('memory_limit', '10G');


 
Ca va faire de la victoire facile avec un gros INSERT table(cols) ( ) ON CONFLICT SET ....  RETURNING id.  
Avec en bonus une transaction pour faire du rollback en cas d'erreur


Écoute le client est prêt à signer un proof of value de six mois avec 5 senior + un archi, alors tu vas fermer ta grande gueuler et tu retournes à la cave :fou:


---------------
When it comes to business/legal topics, just assume almost everyone commenting has no idea what they’re taking about and have no background in these subjects because that’s how it really is. Harkonnen 8-> Elmoricq 8====>
n°2371893
flo850
moi je
Posté le 18-12-2020 à 13:30:18  profilanswer
 

#greenIt


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

n°2371894
flo850
moi je
Posté le 18-12-2020 à 13:32:20  profilanswer
 

Dion a écrit :


Écoute le client est prêt à signer un proof of value de six mois avec 5 senior + un archi, alors tu vas fermer ta grande gueuler et tu retournes à la cave :fou:


 
hého, on a tous des frais fixes en constante augmentation et faut que je budgète la dot de ma fille   [:emotimusk2:3]  
 
mais par contre je suis toujours surpris de voir des dev back expérimenté qui ont peur de faire du SQL


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

n°2371895
ratibus
Posté le 18-12-2020 à 13:33:13  profilanswer
 

skeye a écrit :

'tain, 10G [:tinostar]


Ouais c'est joli, j'avais encore jamais vu en prod :D
 
Bon Day 18 done  :bounce: (31 minutes partie 1, 13 minutes partie 2).

Spoiler :

Très content de ma solution non récursive :D Et en partie 2, rendre les additions + pioritaires en les entourant de parenthèses


Je me suis bien amusé sur celle-ci :)

Message cité 1 fois
Message édité par ratibus le 18-12-2020 à 13:33:36
n°2371896
ratibus
Posté le 18-12-2020 à 13:34:11  profilanswer
 

flo850 a écrit :


 
hého, on a tous des frais fixes en constante augmentation et faut que je budgète la dot de ma fille   [:emotimusk2:3]  
 
mais par contre je suis toujours surpris de voir des dev back expérimenté qui ont peur de faire du SQL


Syntax error :o

n°2371897
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 18-12-2020 à 13:38:19  profilanswer
 

hephaestos a écrit :


J'étais convaincu, comme on partait sur un système sans priorité, qu'on allait vers de la notation polonaise inverse ; j'ai fait une solution hyper élégante avec une belle stack en partie 1, et j'ai pas trouvé comment la réutiliser pour la 2...


 

ratibus a écrit :


Ouais c'est joli, j'avais encore jamais vu en prod :D
 
Bon Day 18 done  :bounce: (31 minutes partie 1, 13 minutes partie 2).

Spoiler :

Très content de ma solution non récursive :D Et en partie 2, rendre les additions + prioritaires en les entourant de parenthèses


Je me suis bien amusé sur celle-ci :)


 
Ah oui j'ai raté cette possibilité, bien vu :D
 
Mais du coup ça perd quand même un peu en élégance, on est obligé de scanner toute la ligne pour poser les parenthèses supplémentaires, là où toute la beauté de la notation polonaise c'est de tout faire en une passe.

n°2371898
Flaie
Posté le 18-12-2020 à 13:49:38  profilanswer
 

flo850 a écrit :

Pendant ce temps là dans le monde réel :

 

"nos imports son trop longs , faut qu'on réécrive tout en microservices sur une archi de mes couilles cloud native "

 

Les imports en question commencent par charger toute les données du clients dans un tableau PHP, puis indexent ce tableau par la clé de référence, et ensuite comparent chaque lignes avec de faire un update/insert + d'éventuelles requêtes individuelles pour vérifier les clés étrangère

 

Pareil pour voir s'il y a des effacement à faire au bout
Attention âmes sensibles

Spoiler :


ini_set('memory_limit', '10G');

 

Ca va faire de la victoire facile avec un gros INSERT table(cols) ( ) ON CONFLICT SET ....  RETURNING id.
Avec en bonus une transaction pour faire du rollback en cas d'erreur

 

Pourquoi vous faites pas ça côté DB? C'est pas possible?
Sinon, tu peux pas juste tout bourrer dans un redis et call it a day via toutes les structures qu'il propose (sets maps etc pour intersections et vérifications de clés étrangères) ?
Je suis sur que c'est le genre de job qui devrait tourner en 1min lol

Message cité 2 fois
Message édité par Flaie le 18-12-2020 à 13:50:33
mood
Publicité
Posté le 18-12-2020 à 13:49:38  profilanswer
 

n°2371899
ratibus
Posté le 18-12-2020 à 13:53:10  profilanswer
 

hephaestos a écrit :


 
Ah oui j'ai raté cette possibilité, bien vu :D
 
Mais du coup ça perd quand même un peu en élégance, on est obligé de scanner toute la ligne pour poser les parenthèses supplémentaires, là où toute la beauté de la notation polonaise c'est de tout faire en une passe.


L'élégance est subjective :o

Spoiler :

Oui j'aime bien ma solution :D

n°2371900
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2020 à 13:56:22  profilanswer
 

Flaie a écrit :


 
Pourquoi vous faites pas ça côté DB? C'est pas possible?


Bah c’est ce qu’il dit qu’il va faire :o


---------------
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°2371901
Flaie
Posté le 18-12-2020 à 13:58:21  profilanswer
 

masklinn a écrit :


Bah c’est ce qu’il dit qu’il va faire :o


J'ai pas vu la fin, je suis resté bloqué sur le cloud native et les 5 senior + archi
 [:winning:3]

n°2371902
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 18-12-2020 à 13:59:14  profilanswer
 


 
À défaut d'être élégant ou sophistiqué, c'est assez simple à lire et ça va à l'essentiel sans détour en tout cas, ya pire critère pour du code :D


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2371903
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 18-12-2020 à 14:02:02  profilanswer
 

ratibus a écrit :


L'élégance est subjective :o

Spoiler :

Oui j'aime bien ma solution :D



Ah non, moi aussi je préfère ta solution à la mienne. Mais je maintiens qu'elle perd une partie de son essence. C'est un peu plus que de l'élégance d'ailleurs : comment tu fais si ton entrée ne tient pas en mémoire ? Ha !

n°2371904
flo850
moi je
Posté le 18-12-2020 à 14:04:42  profilanswer
 

Flaie a écrit :


 
Pourquoi vous faites pas ça côté DB? C'est pas possible?
Sinon, tu peux pas juste tout bourrer dans un redis et call it a day via toutes les structures qu'il propose (sets maps etc pour intersections et vérifications de clés étrangères) ?
Je suis sur que c'est le genre de job qui devrait tourner en 1min lol


 
C'est exactement ma soluce, pas besoin de Redis. En plus ce qui est bien est que ce fonctionnement est centralisé dans une seule fonction. En la mettant à jour je vais gagner pas mal de perfs


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

n°2371905
Dion
Acceuil
Posté le 18-12-2020 à 14:06:02  profilanswer
 

hephaestos a écrit :


Ah non, moi aussi je préfère ta solution à la mienne. Mais je maintiens qu'elle perd une partie de son essence. C'est un peu plus que de l'élégance d'ailleurs : comment tu fais si ton entrée ne tient pas en mémoire ? Ha !


Écoutes on voit bien que c’est compliqué et que pour 2021 c’est compliqué. On va dire à PrG que c’est un stretch et on se donne jusqu’à q2 2022 :o


---------------
When it comes to business/legal topics, just assume almost everyone commenting has no idea what they’re taking about and have no background in these subjects because that’s how it really is. Harkonnen 8-> Elmoricq 8====>
n°2371906
flo850
moi je
Posté le 18-12-2020 à 14:10:58  profilanswer
 

HAHAHAHA ET APRES CA FAIT UN GROS SELECT DES FAMILLES QUI RETOURNE TOUTE LA TABLE


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

n°2371907
nraynaud
lol
Posté le 18-12-2020 à 15:15:41  profilanswer
 

Code :
  1. async _rename(oldPath, newPath) {
  2.    const params = {
  3.      ...this._createParams(newPath),
  4.      CopySource: `/${this._bucket}/${this._dir}${oldPath}`,
  5.    }
  6.    await this._s3.copyObject(params)
  7.    await this._s3.deleteObject(this._createParams(oldPath))
  8.  }


devinez l'erreur [:petrus75]
 

Spoiler :


Error calling AWS.S3.copyObject: The specified copy source is larger than the maximum allowable size for a copy source: 5368709120
/FOU/ /FOU/


---------------
trainoo.com, c'est fini
n°2371908
ratibus
Posté le 18-12-2020 à 15:31:31  profilanswer
 

hephaestos a écrit :


Ah non, moi aussi je préfère ta solution à la mienne. Mais je maintiens qu'elle perd une partie de son essence. C'est un peu plus que de l'élégance d'ailleurs : comment tu fais si ton entrée ne tient pas en mémoire ? Ha !


Comme ça :

Code :
  1. ini_set('memory_limit', '10G');


 :whistle:  

n°2371909
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 18-12-2020 à 15:50:00  profilanswer
 

https://youtu.be/niKblgZupOc?t=300  TIL: le CGA sur un écran de tv c'était pas si moche


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2371910
el muchach​o
Comfortably Numb
Posté le 18-12-2020 à 15:55:12  profilanswer
 
n°2371911
tryptique
Stay hungry, stay foolish
Posté le 18-12-2020 à 16:05:14  profilanswer
 

nraynaud a écrit :

Code :
  1. async _rename(oldPath, newPath) {
  2. const params = {
  3. ...this._createParams(newPath),
  4. CopySource: `/${this._bucket}/${this._dir}${oldPath}`,
  5. }
  6. await this._s3.copyObject(params)
  7. await this._s3.deleteObject(this._createParams(oldPath))
  8. }


devinez l'erreur [:petrus75]

 
Spoiler :


Error calling AWS.S3.copyObject: The specified copy source is larger than the maximum allowable size for a copy source: 5368709120
/FOU/ /FOU/



https://docs.aws.amazon.com/AmazonS [...] PUapi.html


---------------
"J'ai les goûts les plus simples du monde, je me contente du meilleur" O. Wilde - Freedom of time is the new luxury. Time to sleep, work, play, relax, travel, inspire and get inspired. Time to write your story.
n°2371912
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2020 à 16:10:28  profilanswer
 

Xavier_OM a écrit :

https://youtu.be/niKblgZupOc?t=300  TIL: le CGA sur un écran de tv c'était pas si moche


C’est d’ailleurs un truc que pas mal notent sur les jeux « rétro » ou les vieux jeux, le rendu sur cathodique basse définition est pas du tout le même que sur LED, donc au final ça ressemble pas du tout et ce qu’on a est visuellement bien pire que la réalité de l’époque. Et les bons shaders CRT sont extrêmement coûteux.  
 
A noter que comme les jeux rétro sont développés sur LCD ils vont généralement pas tirer partie des caractéristiques des CRT (ou des shaders crt), et ne vont pas nécessairement être « améliorés » par ça.


Message édité par masklinn le 18-12-2020 à 16:13:05

---------------
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°2371913
Flaie
Posté le 18-12-2020 à 16:13:54  profilanswer
 
n°2371914
nraynaud
lol
Posté le 18-12-2020 à 16:43:53  profilanswer
 

nraynaud a écrit :

Code :
  1. async _rename(oldPath, newPath) {
  2.    const params = {
  3.      ...this._createParams(newPath),
  4.      CopySource: `/${this._bucket}/${this._dir}${oldPath}`,
  5.    }
  6.    await this._s3.copyObject(params)
  7.    await this._s3.deleteObject(this._createParams(oldPath))
  8.  }


devinez l'erreur [:petrus75]
 

Spoiler :


Error calling AWS.S3.copyObject: The specified copy source is larger than the maximum allowable size for a copy source: 5368709120
/FOU/ /FOU/



Code :
  1. async _rename(oldPath, newPath) {
  2.    const size = this._getSize(oldPath)
  3.    const params = { ...this._createParams(newPath), CopySource: `/${this._bucket}/${this._dir}${oldPath}` }
  4.    const multipartParams = await this._s3.createMultipartUpload(params)
  5.    try {
  6.      const parts = []
  7.      let start = 0
  8.      while (start < size) {
  9.        const range = `${start}-${Math.min(start + MAX_PART_SIZE, size) - 1}`
  10.        const partParams = { ...params, PartNumber: parts.length + 1, CopySourceRange: range }
  11.        const upload = await this._s3.uploadPartCopy(partParams)
  12.        parts.push({ ETag: upload.CopyPartResult.ETag, PartNumber: partParams.PartNumber })
  13.        start += MAX_PART_SIZE
  14.      }
  15.      await this._s3.completeMultipartUpload({ ...multipartParams, MultipartUpload: { Parts: parts } })
  16.    } catch (e) {
  17.      await this._s3.abortMultipartUpload(multipartParams)
  18.      throw e
  19.    }
  20.    await this._s3.deleteObject(this._createParams(oldPath))
  21.  }


 
OUAICH C'EST ÉLÉGANT SA REUM LA TEPU, T'AS VU ?


---------------
trainoo.com, c'est fini
n°2371915
nraynaud
lol
Posté le 18-12-2020 à 16:47:20  profilanswer
 

Je sens que Bob va me harceler pour la prochaine version de "Clean Code" [:petrus75]
 
et ça c'est avant d'avoir vu le code d'import de VM que je suis en train de développer [:filter]
 
dès que tu mets pyCURL dans un projet c'est tout de suite plus classe [:filter]


---------------
trainoo.com, c'est fini
n°2371916
el muchach​o
Comfortably Numb
Posté le 18-12-2020 à 17:35:25  profilanswer
 


Quelle surprise qu'une boîte qui fait des produits de qualité avec une vraie valeur ajoutée se développe bien en n'ayant pas besoin de rapaces autour.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2371917
nraynaud
lol
Posté le 18-12-2020 à 17:42:38  profilanswer
 

41 ans, indépendant, les gens m'appellent pour faire acheter mes services, financièrement ça commence à tourner.

 

Le pic de ma carrière [:petrus75]

Code :
  1. async _write(file, buffer, position) {
  2.    if (typeof file !== 'string') {
  3.      file = file.fd
  4.    }
  5.    const uploadParams = this._createParams(file)
  6.    const fileSize = +(await this._s3.headObject(uploadParams)).ContentLength
  7.    if (fileSize < MIN_PART_SIZE) {
  8.      const resultBuffer = Buffer.alloc(Math.max(fileSize, position + buffer.length))
  9.      const fileContent = (await this._s3.getObject(uploadParams)).Body
  10.      fileContent.copy(resultBuffer)
  11.      buffer.copy(resultBuffer, position)
  12.      await this._s3.putObject({ ...uploadParams, Body: resultBuffer })
  13.      return { buffer, bytesWritten: buffer.length }
  14.    } else {
  15.      // using this trick: https://stackoverflow.com/a/38089437/72637
  16.      // multipart fragments have a minimum size of 5Mo and a max of 5Go unless they are last
  17.      // splitting the file in 3 parts: [prefix, edit, suffix]
  18.      // if `prefix` is bigger than 5Mo, it will be sourced from uploadPartCopy()
  19.      // otherwise otherwise it will be downloaded, concatenated to `edit`
  20.      // `edit` will always be an upload part
  21.      // `suffix` will always be sourced from uploadPartCopy()
  22.      // Then everything will be sliced in 5Gb parts before getting uploaded
  23.      const multipartParams = await this._s3.createMultipartUpload(uploadParams)
  24.      const copyMultipartParams = {
  25.        ...multipartParams,
  26.        CopySource: `/${this._bucket}/${this._dir + file}`,
  27.      }
  28.      try {
  29.        const parts = []
  30.        const prefixSize = position
  31.        let suffixOffset = prefixSize + buffer.length
  32.        let suffixSize = Math.max(0, fileSize - suffixOffset)
  33.        let hasSuffix = suffixSize > 0
  34.        let editBuffer = buffer
  35.        let editBufferOffset = position
  36.        let partNumber = 1
  37.        let prefixPosition = 0
  38.        // use floor() so that last fragment is handled in the if bellow
  39.        let fragmentsCount = Math.floor(prefixSize / MAX_PART_SIZE)
  40.        const prefixFragmentSize = MAX_PART_SIZE
  41.        let prefixLastFragmentSize = prefixSize - prefixFragmentSize * fragmentsCount
  42.        if (prefixLastFragmentSize >= MIN_PART_SIZE) {
  43.          // the last fragment of the prefix is smaller than MAX_PART_SIZE, but bigger than the minimum
  44.          // so we can copy it too
  45.          fragmentsCount++
  46.          prefixLastFragmentSize = 0
  47.        }
  48.        for (let i = 0; i < fragmentsCount; i++) {
  49.          const fragmentEnd = Math.min(prefixPosition + prefixFragmentSize, prefixSize)
  50.          assert.strictEqual(fragmentEnd - prefixPosition <= MAX_PART_SIZE, true)
  51.          const range = `bytes=${prefixPosition}-${fragmentEnd - 1}`
  52.          const copyPrefixParams = { ...copyMultipartParams, PartNumber: partNumber++, CopySourceRange: range }
  53.          const part = await this._s3.uploadPartCopy(copyPrefixParams)
  54.          parts.push({ ETag: part.CopyPartResult.ETag, PartNumber: copyPrefixParams.PartNumber })
  55.          prefixPosition += prefixFragmentSize
  56.        }
  57.        if (prefixLastFragmentSize) {
  58.          // grab everything from the prefix that was too small to be copied, download and merge to the edit buffer.
  59.          const downloadParams = { ...uploadParams, Range: `bytes=${prefixPosition}-${prefixSize - 1}` }
  60.          const prefixBuffer = prefixSize > 0 ? (await this._s3.getObject(downloadParams)).Body : Buffer.alloc(0)
  61.          editBuffer = Buffer.concat([prefixBuffer, buffer])
  62.          editBufferOffset -= prefixLastFragmentSize
  63.        }
  64.        if (hasSuffix && editBuffer.length < MIN_PART_SIZE) {
  65.          // the edit fragment is too short and is not the last fragment
  66.          // let's steal from the suffix fragment to reach the minimum size
  67.          // the suffix might be too short and itself entirely absorbed in the edit fragment, making it the last one.
  68.          const complementSize = Math.min(MIN_PART_SIZE - editBuffer.length, suffixSize)
  69.          const complementOffset = editBufferOffset + editBuffer.length
  70.          suffixOffset += complementSize
  71.          suffixSize -= complementSize
  72.          hasSuffix = suffixSize > 0
  73.          const prefixRange = `bytes=${complementOffset}-${complementOffset + complementSize - 1}`
  74.          const downloadParams = { ...uploadParams, Range: prefixRange }
  75.          const complementBuffer = (await this._s3.getObject(downloadParams)).Body
  76.          editBuffer = Buffer.concat([editBuffer, complementBuffer])
  77.        }
  78.        const editParams = { ...multipartParams, Body: editBuffer, PartNumber: partNumber++ }
  79.        const editPart = await this._s3.uploadPart(editParams)
  80.        parts.push({ ETag: editPart.ETag, PartNumber: editParams.PartNumber })
  81.        if (hasSuffix) {
  82.          // use ceil because the last fragment can be arbitrarily small.
  83.          const suffixFragments = Math.ceil(suffixSize / MAX_PART_SIZE)
  84.          let suffixFragmentOffset = suffixOffset
  85.          for (let i = 0; i < suffixFragments; i++) {
  86.            const fragmentEnd = suffixFragmentOffset + MAX_PART_SIZE
  87.            assert.strictEqual(Math.min(fileSize, fragmentEnd) - suffixFragmentOffset <= MAX_PART_SIZE, true)
  88.            const suffixRange = `bytes=${suffixFragmentOffset}-${Math.min(fileSize, fragmentEnd) - 1}`
  89.            const copySuffixParams = { ...copyMultipartParams, PartNumber: partNumber++, CopySourceRange: suffixRange }
  90.            const suffixPart = (await this._s3.uploadPartCopy(copySuffixParams)).CopyPartResult
  91.            parts.push({ ETag: suffixPart.ETag, PartNumber: copySuffixParams.PartNumber })
  92.            suffixFragmentOffset = fragmentEnd
  93.          }
  94.        }
  95.        await this._s3.completeMultipartUpload({
  96.          ...multipartParams,
  97.          MultipartUpload: { Parts: parts },
  98.        })
  99.      } catch (e) {
  100.        await this._s3.abortMultipartUpload(multipartParams)
  101.        throw e
  102.      }
  103.    }
  104.  }

Message cité 1 fois
Message édité par nraynaud le 18-12-2020 à 17:43:01

---------------
trainoo.com, c'est fini
n°2371918
ratibus
Posté le 18-12-2020 à 17:48:31  profilanswer
 

Il a l'air galère ton Advent Of Code Nico :o


---------------
Mon blog
n°2371919
nraynaud
lol
Posté le 18-12-2020 à 17:50:14  profilanswer
 

https://docs.aws.amazon.com/AmazonS [...] facts.html
 
l'énoncé n'est pas long en plus :fou:


---------------
trainoo.com, c'est fini
n°2371920
Mackila
Posté le 18-12-2020 à 18:47:13  profilanswer
 

Indice de ma solution jour 18 :
 
Pour l'étoile 1 :

Spoiler :

                   static public truc operator/( truc t1, truc t2 )
                    {
                        return new truc( t1.valeur + t2.valeur ) ;
                    }
                    static public truc operator*( truc t1, truc t2 )
                    {
                        return new truc( t1.valeur * t2.valeur ) ;
                    }


 
Pour l'étoile 2 :

Spoiler :

                   static public truc operator+( truc t1, truc t2 )
                    {
                        return new truc( t1.valeur * t2.valeur ) ;
                    }
                    static public truc operator*( truc t1, truc t2 )
                    {
                        return new truc( t1.valeur + t2.valeur ) ;
                    }


 

Spoiler :

Le tout associé à de la manip de chaine pour changer les nombres x en "new truc(x)" et changer les opérateurs :P, puis hop compilation à la volée :D :D :D


Message édité par Mackila le 18-12-2020 à 18:47:42
n°2371921
Jubijub
Parce que je le VD bien
Posté le 18-12-2020 à 18:50:20  profilanswer
 

flo850 a écrit :

Pendant ce temps là dans le monde réel :
 
"nos imports son trop longs , faut qu'on réécrive tout en microservices sur une archi de mes couilles cloud native "
 
Les imports en question commencent par charger toute les données du clients dans un tableau PHP, puis indexent ce tableau par la clé de référence, et ensuite comparent chaque lignes avec de faire un update/insert + d'éventuelles requêtes individuelles pour vérifier les clés étrangère  
 
Pareil pour voir s'il y a des effacement à faire au bout
Attention âmes sensibles

Spoiler :


ini_set('memory_limit', '10G');


 
Ca va faire de la victoire facile avec un gros INSERT table(cols) ( ) ON CONFLICT SET ....  RETURNING id.  
Avec en bonus une transaction pour faire du rollback en cas d'erreur


je crois que les dev sont élevés dans l'idée qu'une requete SQL c'est cher et lent, donc qu'il faut en faire le moins possible. Y'a aussi le fait que t'es souvent plus expressif dans le language de ton choix que en SQL
Mais c'est mal, les BDD ça marche très bien, faut faire confiance et les utiliser.
 

hephaestos a écrit :


Ah oui j'ai raté cette possibilité, bien vu :D
 
Mais du coup ça perd quand même un peu en élégance, on est obligé de scanner toute la ligne pour poser les parenthèses supplémentaires, là où toute la beauté de la notation polonaise c'est de tout faire en une passe.


J'ai connu une polonaise qui en prenait au petit dèj :o
 


---------------
Jubi Photos : Flickr - 500px
n°2371922
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2020 à 19:18:39  profilanswer
 

Jubijub a écrit :

je crois que les dev sont élevés dans l'idée qu'une requete SQL c'est cher et lent, donc qu'il faut en faire le moins possible.


J'aurais tendance à dire l'inverse, ils sont élevés dans l'idée qu'il faut pas trop en demande au serveur SQL parce qu'il est un peu con-con, ici ça fait un gros select puis une requête par insert / update, et potentiellement des requêtes supplémentaires pour l'intégrité, le plan de flo c'est de faire des sql de batch & de laisser le serveur bosser.

 

Je pense que la vision d'origine c'est une version très "vieux mysql" en myisam, où le serveur va vite quand tu lui en demandes pas trop, mais dès que tu lui demande de bosser un peu c'est la fin du monde.

 

Parce-que limiter le nombre de requête c'est effectivement une bonne idée, genre parce-que les round-trip SQL même quand le serveur est en local de l'autre côte d'un socket unix ça a un overhead sensible. Mais tu limites le nombre de requêtes SQL en faisant du batching et en utilisant mieux ton serveur, pas en faisant tout en applicatif.

Message cité 1 fois
Message édité par masklinn le 18-12-2020 à 19:20:44

---------------
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°2371926
Anonymouse
Posté le 18-12-2020 à 21:36:17  profilanswer
 

masklinn a écrit :


J'aurais tendance à dire l'inverse, ils sont élevés dans l'idée qu'il faut pas trop en demande au serveur SQL parce qu'il est un peu con-con, ici ça fait un gros select puis une requête par insert / update, et potentiellement des requêtes supplémentaires pour l'intégrité, le plan de flo c'est de faire des sql de batch & de laisser le serveur bosser.
 
Je pense que la vision d'origine c'est une version très "vieux mysql" en myisam, où le serveur va vite quand tu lui en demandes pas trop, mais dès que tu lui demande de bosser un peu c'est la fin du monde.
 
Parce-que limiter le nombre de requête c'est effectivement une bonne idée, genre parce-que les round-trip SQL même quand le serveur est en local de l'autre côte d'un socket unix ça a un overhead sensible. Mais tu limites le nombre de requêtes SQL en faisant du batching et en utilisant mieux ton serveur, pas en faisant tout en applicatif.


 
J'aurais tendance à dire l'inverse, ils sont élevés dans l'idée que la BDD c'est chiant comme de la pluie et que moins on en fait mieux c'est. Et c'est valable aussi bien dans le choix des UE qu'en entreprise.


Message édité par Anonymouse le 18-12-2020 à 21:36:55
n°2371927
Anonymouse
Posté le 18-12-2020 à 21:48:12  profilanswer
 

Vous connaissez une boite ou commander un cable usb custom a pas trop cher ?

n°2371928
el muchach​o
Comfortably Numb
Posté le 18-12-2020 à 21:53:16  profilanswer
 

Problème 18 résolu [:volta]

 

Partie 1 au moins 2h, partie 2: 15 sec :o

 
hephaestos a écrit :


Pour le coup je suis assez content de ma solution. J'ai mis 2h pour un truc qui aurait pu être torché en 10 minutes mais bon, comme d'hab j'ai envie de dire... https://code.sololearn.com/ca193a12A74A

 

Ce qui m'a mis dedans c'est que j'étais convaincu, comme on partait sur un système sans priorité, qu'on allait vers de la notation polonaise inverse ; j'ai fait une solution hyper élégante avec une belle stack en partie 1, et j'ai pas trouvé comment la réutiliser pour la 2...


Je confirme que ça marche avec une stack :o
Et ensuite, tu changes la précédence et baste.
(le code devrait être à peu près lisible pour qq qui n'a pas fait de Python, le seul truc à savoir c'est que liste[-1] est le dernier élément de liste)


Message édité par el muchacho le 18-12-2020 à 22:02:26

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2371929
el muchach​o
Comfortably Numb
Posté le 18-12-2020 à 22:14:09  profilanswer
 

La solution en Awk  :lol:  
 
 

function R(e,a,d) {return$a~1y?e+d:e*d}{gsub(/[day(XVIII)]/,x=" ! " )}
function E(v,a,l) {return+L(v,a,P(v,a))-!(i-=l)}{A+=E(y=i="[*]|[+]" )}
function P(rin,t) {return!t||x~$++i?E(rin,!t,!t):$i}END{print A"\n"B}
function L(o,O,p) {return+O$++i~o?L(o,O,R(p,i,P(o,O))):p}{B+=E(i=0y)}


 
Notez les noms des variables :D


Message édité par el muchacho le 18-12-2020 à 22:14:51

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2371930
el muchach​o
Comfortably Numb
Posté le 18-12-2020 à 22:43:07  profilanswer
 

OK, cette solution, elle calme:

 

echo $((($(sed 's/*/)*(/g;s/$/)+(/'<f)0)))

 


(partie 2, il prend un fichier 'f' en entrée)
Elle tire évidemment partie de l'évaluateur d'expressions du shell, et si je comprends bien, sur la ruse décrite en fin d'article https://en.wikipedia.org/wiki/Opera [...] nce_parser, qui consiste à saupoudrer l'expression de parenthèses pour forcer la précédence.
Je me demande si c'est l'idéeque ratibus a retrouvée.


Message édité par el muchacho le 18-12-2020 à 22:59:05

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2371931
flo850
moi je
Posté le 18-12-2020 à 22:52:14  profilanswer
 

enfin le plan, il ne marche pas trop pour le moment :

 
Code :
  1. Warning Error: PDOStatement::execute(): SQLSTATE[42P08]: Ambiguous parameter: 7 ERROR:  inconsistent types deduced for parameter $1
  2. LINE 4:                 $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11...
  3.                         ^
  4. DETAIL:  text versus character varying in [/var/www/html/app/Controller/Component/ImportExportComponent.php, line 279]
 

sachant que je fais ça pour bind mes paramètres

Code :
  1. switch($paramTypes[$key]) {
  2.                        case 'boolean':
  3.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_BOOL );
  4.                            break;
  5.                        case 'bigint':
  6.                        case 'integer':
  7.                        case 'smallint':
  8.                        case 'serial':
  9.                        case 'smallserial':
  10.                        case 'bigserial':
  11.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_INT );
  12.                        break;
  13.                        case 'character varying':
  14.                        case 'character':
  15.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_STR );
  16.                            break ;
  17.                        case 'text':
  18.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_LOB );
  19.                            break ;
  20.                        default:
  21.                            if($tableName !== 'passenger_file_numbers') {
  22.                                echo " FILETYPE $key ".$paramTypes[$key]."\n";
  23.                            }
  24.                            $preparedQuery->bindParam(":$key", $value );
  25.                    }

Message cité 1 fois
Message édité par flo850 le 18-12-2020 à 22:52:25

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

n°2371932
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2020 à 22:58:12  profilanswer
 

flo850 a écrit :

enfin le plan, il ne marche pas trop pour le moment :
 

Code :
  1. Warning Error: PDOStatement::execute(): SQLSTATE[42P08]: Ambiguous parameter: 7 ERROR:  inconsistent types deduced for parameter $1
  2. LINE 4:                 $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11...
  3.                         ^
  4. DETAIL:  text versus character varying in [/var/www/html/app/Controller/Component/ImportExportComponent.php, line 279]


 
sachant que je fais ça pour bind mes paramètres  

Code :
  1. switch($paramTypes[$key]) {
  2.                        case 'boolean':
  3.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_BOOL );
  4.                            break;
  5.                        case 'bigint':
  6.                        case 'integer':
  7.                        case 'smallint':
  8.                        case 'serial':
  9.                        case 'smallserial':
  10.                        case 'bigserial':
  11.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_INT );
  12.                        break;
  13.                        case 'character varying':
  14.                        case 'character':
  15.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_STR );
  16.                            break ;
  17.                        case 'text':
  18.                            $preparedQuery->bindParam(":$key", $value,PDO::PARAM_LOB );
  19.                            break ;
  20.                        default:
  21.                            if($tableName !== 'passenger_file_numbers') {
  22.                                echo " FILETYPE $key ".$paramTypes[$key]."\n";
  23.                            }
  24.                            $preparedQuery->bindParam(":$key", $value );
  25.                    }



Text -> lob ca me semble pas correct.


---------------
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?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  23710  23711  23712  ..  26991  26992  26993  26994  26995  26996

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)