Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 285 sur 309 PremièrePremière ... 185235275277278279280281282283284285286287288289290291292293295 ... DernièreDernière
Affichage des résultats 8 521 à 8 550 sur 9267
  1. #8521
    Je crois qu'il y a une notion de durée ? (je ne suis pas du tout sur de moi) Au delà de XX mois tu dois être embauché, sinon trouver un autre client. A moins que ça ne soit que pour les presta ?
    Mais oui, le salariat déguisé est légion C'est la facilité pour l'employeur (me suis encore fait avoir en l'écrivant, lol) le client, mais soyons franc, un peu aussi pour le freelance. Une mauvaise facilité hein ^^.

    Aussi, pour compléter le triste tableau du freelance : le freelance (comme le presta), si la boite doit dégraisser, tu es le premier à sauter.

  2. #8522
    Citation Envoyé par raaaahman Voir le message
    Je suis assez surpris que tu ne trouves pas ton compte de challenge ou de variété dans les tâches de Let's Role. A moins que tu ne bosses plus dessus?
    Let's Role reste mon activité principale, je dois juste renflouer un peu mes finances personnelles.

    Citation Envoyé par Fastela Voir le message
    À l'instant où tu as une notion de servitude (horaires par ex), c'est du salariat déguisé.
    C'est sûrement vrai, mais comment se passe les contrats au nombre de jours ? C'est toujours ce que j'ai fais en free dans le passé, jamais à la tâche (c'est un gros piège à mon avis de bosser au livrable). Le client doit simplement faire confiance au free, et lui peut travailler la nuit ou le week end ?

  3. #8523
    Alors c'est peut être une mauvaise analyse de ma part, mais si c'est pour une activité 'secondaire' ayant pour but de renflouer tes finances, tu devrais peut être faire ce que tu sis faire 'les yeux fermés', même si c'est parfois pénible. En prenant peut être le soin de trouver plutôt un client avec lequel ça passe bien et un projet qui ne semble pas trop foireux.

    Sinon je t'aurais bien conseillé de te trouver un projet en cours de démarrage, ou une grosse refonte, avec des choix techniques et des POCs à faire.
    Il y a encore du dev à faire mais on peut se focaliser sur autre chose que le CRUD.

  4. #8524
    Bosser ailleurs que dans le web ou les sites administratifs aussi
    Par ex, depuis que je bosse sur l'infra d'un FAI, je n'ai pas pondu une seule ligne de CRUD Et c'est un javateux springbooteux pur et dur qui vous parle. Ca fait 2 ans que je fais bcp de tooling et du devops.
    Tu peux cibler des boites comme Doctolib (juste pour citer un grand nom), y'a probablement bcp de boulot de devops, et côté dev y'a des problématiques de passage à l'échelle.
    Ou postules chez Gradle, ils cherchent du monde.
    Enfin ce genre de chose.
    Bon après ça sort de la thématique du thread, pour aller plus vers le topic des carrières et des sousous dans la popoche ^^.

  5. #8525
    Citation Envoyé par Awake Voir le message
    Let's Role reste mon activité principale, je dois juste renflouer un peu mes finances personnelles.
    Ils recrutent pas mal de prestataires dans l'enseignement. Au moins ce ne sera pas toi qui écrira du CRUD...

  6. #8526
    Oui mais tu auras la charge de refondre le site web du lycée. Et on reste en HTML statique hein

  7. #8527
    Aller une petite version de pronote en version serious gaming: Let's pronote.
    Les commentaires sont déjà dans le ton, mais on dirait que la version actuelle laisse à désirer !
    https://apps.apple.com/fr/app/pronote/id1138223804
    https://play.google.com/store/apps/d...te&hl=fr&pli=1

    pour info, pour les canards sans enfant au collège/lycée, pronote c'est le carnet de liaison/bulletin 2.0 et les élèves se lâche dessus dans les commentaire, en le notant comme un "jeu" genre RPG/MMO, ce qui donne des trucs du genre dans les commentaires récents:
    Très décevant car d'un moment à l'autre,on peut voir nos points d'expérience fortement diminuer juste à cause de l'événement contrôle de musique . De plus,le jeu donne trop d'importance à la compétence musique,ce qui fait que l'exp. peut descend très rapidement,même si cette compétence est Futile.
    Open world surprenant
    Ce jeu est effectivement assez surprenant, et ce en plusieurs points : L'intro dite « rentrée » présente à l'arc collège est assez longue et ne peut être skip , elle est d'ailleurs présente tous les ans ce qui est bien trop répétitif avec comme seul changement le skin du PNJ dit « professeur principal » mais avec les mêmes dialogues...
    Pire jeu clairement. Plein de bug de texture. Les personnages... il y en a pas. Un quête nommée "Maths" est impossible sans level 100 ce qui est aussi impossible car il faut avoir des "bonnes notes" ce qui est aussi très compliqué. Donc tout est compliqué dans ce jeu. Je finis des quêtes et je ne reçois même pas de récompenses. Vraiment jeu très compliqué. Je vous le déconseille fortement si vous aimez pas les jeux impossibles.

  8. #8528
    La vache, 53.000 avis et une note moyenne de 1,2/5, pour l'app Android. En effet, c'est un peu violent là tout de même
    L'app iOS ne fait pas mieux.

  9. #8529
    C'est une application obligatoire si l'établissement a fait le choix de ce système. Les élèves se vengent avec un peu d'humour

  10. #8530
    Haaaaa d'acc, je comprends mieux
    J'avais cru à une appli de serious gaming, ou une appli éducative, ce genre de bêtise.

  11. #8531
    C'est vraiment le carnet scolaire en ligne avec les notes, les mots aux parents, les absences et les retards.
    Je crois que c'est devenu une tradition de faire le commentaire pastiche de jeu vidéo

  12. #8532
    Hello tout le monde !

    J'ai une petite question concernant Vue, Axios, et Apache.

    J'ai mis en place un système d'upload de fichiers par glissé / déposé, qui lance des requêtes Axios en parallèle lorsqu'on drop les fichiers. Les fichiers sont ensuite traités par Symfony, et le retour d'API me permet d'avoir une barre de progression quant au niveau d'avancement du traitement de l'upload.

    Mon client m'a remonté une inquiétude quant à la disponibilité du serveur lorsqu'un utilisateur va uploader genre 500 fichiers (ce qui peut éventuellement arriver). D'après lui, étant donné que les requêtes Axios sont lancées en parallèle, cela revient un peu à faire une attaque DDoS envers le Apache, et cela peut éventuellement rendre l'app indisponible pour les autres utilisateurs.

    Je ne suis pas ultra calé en Apache, ni comment il gère le flux dans ce genre de cas. Je me demande si je dois revoir mon code pour faire un upload en séquence (ce qui ralentirait énormément l'UX je pense), ou si c'est le serveur de mon client qui mériterait un petit peu de stéroides.

  13. #8533
    Hello, si l'utilisateur drop plusieurs fichiers en même temps, pourquoi ne pas les envoyer une seule requête ?

    Sinon ce qui va planter c'est pas apache, qui peut gérer 500 uploads en // sans aucun soucis, mais ton Symfony qui va bouffer tout le CPU et la RAM. D'ou l'intérêt de joindre plusieurs fichiers à la requête, pour alléger le nombre de spawns de Symfo

  14. #8534
    C'est ce que je comptait tenter. Mais du coup je me retrouve à devoir gérer des uploads qui peuvent être massif, et bien évidement le client final est dans une région où sa connexion n'est pas des meilleures. :D

  15. #8535
    Tu t'attends à avoir des variations importantes de taille entre les fichiers ?

    Parce que si la connexion n'est pas bonne, et que les fichiers sont variés, tes scripts symfo seront spawns à des moments différents (quand Apache aura fini de rapatrier le fichier), donc du moment que ton traitement dans Symfo n'est pas long, tu ne devrait pas avoir trop de charge (l'execution du script de l'upload précédente sera terminé quand un autre arrivera). Et du coup no prob

  16. #8536
    Hello ! Déjà, si ça n'est pas déjà fait, je découplerais le traitement des fichiers de leur upload proprement dit. Cela permet un retour à l'utilisateur plus rapide, et un étalement de la consommation de ressources. Une fois chargés les fichiers seraient traités de manière asynchrone avec Symfony Messenger et un gestionnaire de queue type RabbitMQ (ou en BDD avec Doctrine si le volume est raisonnable).

  17. #8537
    Une partie du traitement est fait côté front (je retaille les images avec Canvas), et l'autre partie est obligatoirement fait côté back (truc basique genre savoir où doivent être stocké les fichiers et une génération de tokens d'accès).

    Je pense que je vais basculer sur une solution où les fichiers sont envoyés dans une seule requête. Mais je me demande si le traitement sera fait au fil de l'eau à la réception ou si la requête doit être complétée à 100% pour qu'elle soit prise en charge par Symfony.

  18. #8538
    Bon ben... Solution du client : mettre un timeout de 5 secondes entre chaque upload.

    True story.

  19. #8539
    Super UX en perspective

    Tu lui as dit que sur 500 fichiers ça fait 41 minutes d'idle ?

  20. #8540
    Il était parti pour 10 secondes à la base, j'ai fait mon possible.

  21. #8541
    Je suis vraiment nul en Typescript

    Question : Je remplis un tableau via un call d'API avec une promise qui me renvoie un any[]. Ce tableau, je veux compléter les infos via un autre call pour chaque élément (via une autre promise qui me renvoie un any).
    J'ai essayé plein de trucs, mais ça ne marche pas. Si je fais ça :
    Code:
     let dataset: IItemOUT[] = [];
    
          const items = await this.getData();
          Promise.all(items.map(item => {
             dataset.push({ TOTO: item.TOTO, TATA: '001', TITI: item.TITI, TUTU: 0 });
             this.getData2(item.TOTO, '001').then(y => {
                console.log('T : ' + y.TUTU);
                dataset[dataset.length - 1].TUTU = y.TUTU;
             })
          })).finally(() => { this.datagrid.dataset = dataset });
    Pourquoi est-ce que y.TUTU a bien la bonne valeur, mais que ça ne met pas à jour les éléments de mon tableau ? J'ai testé des await, de foutre des then et promise all dans tous les sens, mais pas de résultat. Est-ce que pour ce genre de demande, ne vaut-il pas mieux utiliser des Observable pour faire des map directs ? (c'est ce que j'ai cru comprendre de mes recherches)

  22. #8542
    De ce que je comprend, cette fonction est appelé en asynchrone :

    Code:
             this.getData2(item.TOTO, '001').then(y => {
                console.log('T : ' + y.TUTU);
                dataset[dataset.length - 1].TUTU = y.TUTU;
             })
    Donc ton code n'attends pas qu'elle soit finie pour continuer l'execution vers le finally.

    Solution, passer le "map" de ton "dataset" en "async" et utiliser "await" devant "this.getData2". Je ne sais plus si Array.map(func) peut être passé en async ou si tu vas devoir faire une boucle classique "for".

  23. #8543
    Non, si je fais ça, plus rien ne s'affiche, malgré que les appels passent bien.

  24. #8544
    Code:
    const dataset: IItemOUT[] = [];
    
    this.getData().then(async (items) => {
        for (const item of items) {
            dataset.push({ TOTO: item.TOTO, TATA: '001', TITI: item.TITI, TUTU: 0 });
    
            const y = await this.getData2(item.TOTO, '001');
            dataset[dataset.length - 1].TUTU = y.TUTU;
        }
    }).finally(() => {
        this.datagrid.dataset = dataset
    });

  25. #8545
    Citation Envoyé par Awake Voir le message
    Code:
    const dataset: IItemOUT[] = [];
    
    this.getData().then(async (items) => {
        for (const item of items) {
            dataset.push({ TOTO: item.TOTO, TATA: '001', TITI: item.TITI, TUTU: 0 });
    
            const y = await this.getData2(item.TOTO, '001');
            dataset[dataset.length - 1].TUTU = y.TUTU;
        }
    }).finally(() => {
        this.datagrid.dataset = dataset
    });
    Ça marche à peu près comme je veux, merci !!!

  26. #8546
    Comme a dit Awake, map ne s'await pas directement mais du coup t'etais pas loin vu que la solution a ca c'est Promise.all.
    J'ai tendance a faire comme Awake et a passer sur du for plutot que bloater mon code avec tout ca mais en partant de ta solution de base je pense que ca ca fonctionne.

    Code HTML:
     let dataset: IItemOUT[] = [];
    
          const items = await this.getData();
         --> await <-- Promise.all(items.map(item => {
             dataset.push({ TOTO: item.TOTO, TATA: '001', TITI: item.TITI, TUTU: 0 });
             --> return await <-- this.getData2(item.TOTO, '001').then(y => {
                console.log('T : ' + y.TUTU);
                dataset[dataset.length - 1].TUTU = y.TUTU;
             })
          })).finally(() => { this.datagrid.dataset = dataset });

  27. #8547
    Je n'avais pas mis le return devant l'await, comme dans ton exemple. Je testerai également, merci

  28. #8548
    Dans ton premier bout de code tu utilises mal "Promise.all".
    Celui-ci prend un tableau de promise en argument, or la fonction dans ton "item.map" n'a pas de "return".

    De manière générale, c'est pas une bonne idée de combiner modification d'objet/tableau temporaire et boucles asynchrones.
    C'est plus propre de bien chainer tout correctement comme ça :
    Code:
    this.datagrid.dataset: IItemOUT[] = await this.getData().then(items =>
        Promise.all(items.map(item =>
            this.getData2(item.TOTO, '001').then(y => ({...item, TATA: '001', TUTU: y.TUTU}))
        )
    )
    Le seul intérêt de la boucle for serait de faire tes appels à "this.getData2" en séquentiel, là où le "Promise.all" fera tout en parallèle.

    Et au passage, des fonctions qui te renvoient des "any[]" (asynchrone ou non), c'est à proscrire.
    Dernière modification par Orhin ; 09/01/2023 à 18h58.
    C'est la faute à Arteis

  29. #8549
    J'ai un peu simplifié le code, pour ça que je passe par des any.
    J'en chie vraiment avec ce langage, je ne trouve pas ça super clair par rapport à tout ce que je connais. J'avais fait une petite formation sur pluralsight, mais comme je ne pratique jamais, c'est compliqué...

  30. #8550
    Orhin a raison, mon code est sequentiel, sa version est plus proche du cahier des charges. Par contre Orhin, je trouve ton code un peu difficile à decoder, je l'aurais fait de facon complètement différente pour le même resultat, en 10 lignes au lieu de 3 par contre.

    @deathdigger : ouais les fonctions async peuvent être un peu bordeliques à aborder au début en Javascript. Mais Typescript est un super langage, je ne peux que te recommander d'insister.

Page 285 sur 309 PremièrePremière ... 185235275277278279280281282283284285286287288289290291292293295 ... DernièreDernière

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •