Mon backend est en js. Donc pour compresser les jsons envoyés par les clients par exemple.
Edit : Ha ben encore mieux, node le supporte nativement maintenant : https://nodejs.org/api/zlib.html
Mon backend est en js. Donc pour compresser les jsons envoyés par les clients par exemple.
Edit : Ha ben encore mieux, node le supporte nativement maintenant : https://nodejs.org/api/zlib.html
Ben dans ce cas du met des fichiers de config en JS/TS aussi et comme ça plus de soucis.
Si t'utilises un reverse-proxy (genre nginx), je gérerais plutôt la compression à ce niveau.
Si c'est pas le cas, ben node contient déjà "zlib" qui gère gzpi et brotli (et qui est utilisé par le middleware "compression" pour "express" par exemple).
C'est la faute à Arteis
S'ils sont tenus à jour... Mais oui pourquoi pas en effet.
Sinon vous utilisez les schemas JSON dans vos projets?
Perso oui, pour valider des configs de routeurs
Mais c'est tout, c'est le premier taff où j'en ai eu l'utilité. Le reste du temps c'est du json généré à partir d'entités en base de données, ou des formulaires soumis par un frontend, donc on s'en fiche un peu, on fait les validations autrement (par ex on charge l'entité, puis un coup de hibernate validator etc). Peut être par méconnaissance de la chose aussi.. car maintenant que je l'ai vu, j'aime bien.
Je l'utilise aussi, pour valider des requêtes websocket. C'est plutôt bien foutu.
Par contre sur des plus gros fichiers complexes (les json de 4mo justement), c'est même pas la peine, le script timeout. Un code de validation sur mesure est beaucoup plus efficace.
JSON de 4mo -> c'est donc toi qui a optimisé les temps de chargement dans GTA V ? (pour la petite histoire, grosso-modo, le jeu mettait bcp de temps à charger à cause du parsing pas très optimisé d'un gros json. C'est un moddeur a trouvé ça)
C'etait une des principales libs pour PHP. J'avoue ne pas en avoir testé d'autres une fois que celle ci à timeout à 30s. Maintenant j'ai mon propre code pour clean/validate les jsons avec des messages d'erreur au poil et qui est rapide
Mais il s'agit d'objets avec des milliers de propriétés à valider, en arbre en plus. Il y a surement moyen d'utiliser json schema dessus avec des optimisations mais je suis satisfait de mon implémentation.
"objets avec des milliers de propriétés" ça fait un peu peur je dois avouer
On fait fuire tous les barbus avec nos discussions sur les tech web.
Vite parlons de l'allocation mémoire de références de pointeur de pointeur de reference de pointeur.
Alors la solution c'est juste de tuer le process de temps en temps et de le relancer.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Est-ce que utiliser une MMU c'est faire du haut niveau ? C'est un peu facile, ça libère la mémoire automatiquement quand on ferme le processus.
Bien sûr qu'on ne les a pas perturbé. Ces gens codent en C/C++, ils ont atteint l'éveil spirituel.
Les mecs qui font du C++ c'est les pires.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Gloire à Bjarne Stroustrup !
Anything that can go wrong will go wrong.
Juste pour éviter d'écrire trop de bêtises dans un topic presque sérieux...
En usage courant, on n'utilise a priori jamais de pointeurs pour une appli C++. On fait juste le distinguo entre copie et référence dans les cas usuels, c'est tout.
Les smart pointers sont là pour la désallocation automatique si tu as besoin de pointeurs: c'est dans la norme depuis 10 ans, c'était généralisé dans les grosses appli depuis 15.
TL;DR, le C++ a énormément évolué depuis l'époque où il m'a été enseigné. Et même pour de l'embarqué, on trouve souvent du C++11 -comprendre: moderne- comme base de départ. Surtout s'il y a du QT derrière pour l'interface.
Ça c'est la théorie. Malheureusement il reste des tonnes de code en C++98, et il y a pas mal de boîtes qui continuent à ne pas vouloir passer en 11 pour ne pas avoir à installer autre chose que leur vielle Centos 6 ou du msvc13 qui tourne encore sous XP.
On a même eu une presta ya pas longtemps avec du code compilé avec un gcc 2.jesaisplusquoi parce que c'était la dernière version supporté sur l'OS qu'ils avaient sur leur serveur.
Ils voulaient passer sur une version plus récente, mais pas plus que la 4.5 donc pas de vrai support du C++11.
Et c'était même pas une histoire de vieux code legacy qui tourne depuis 20 ans, le truc était toujours en développement actif (et en prod) et était buggué jusqu'à la moelle.
Comme tu le dis, buggué jusqu'à la moelle.
C'est là que tu découvres l'intérêt de Qt et de boost, quand applicables. Parce que quand tu ne peux te faire une béquille avec ni l'un ni l'autre, je sais pas comment tu tiens tes programmeurs pour qu'ils restent. Ca devrait être interdit par la convention de Genève
C'est marrant parce que j'ai eu des expériences à l'opposé.
Tantôt de l'allocation explicite en tout début d'initialisation de l'appli, aucun mécanisme de smart-pointer, ni de libération de la mémoire (!). Plutôt pour ce qui est embarqué avec des notions de safety (avionique).
Tantôt de l'allocation explicite, et libération de la mémoire explicite également lorsque cohérent, sans mécanisme de smart-pointer (parce que ça ne sert à rien, en soi, si tu sais où et quand allouer/libérer et que y'a pas 36 cas possibles pour chacun). Plutôt dans des applis multimédia/calcul/besoin-de-perf.
Quand t'as de la perf, entre le SSE et le GPU, déjà tu alloues à la main pour respecter les contraintes d'alignement.
Mais vu le taf que tu vas faire dessus par la suite, tu peux te permettre de désallouer à la main ces buffers "spéciaux" sans "salir" ton code.
Dans le cas que tu cites, avec des buffers qui sont nécessaires toute la durée de vie du système, je ne vois pas l'intérêt de désallouer en effet.
En fait, plus que "on va l'utiliser durant tout le cycle de vie de l'appli" c'était du "on va devoir prouver par A+B qu'on a assez de mémoire, à tout instant, pour toutes les fonctionnalités du bouzin".
Une solution simple et qui permet de chiffrer et prouver le résultat étant alors : on alloue tout, TOUT, au démarrage de l'appli, et on ne libère plus rien.
Rien à redire sur cette solution, pour ce cas d'usage.
J'aurais à redire sur plein d'autres trucs, bien sûr.
Pour info, std::map est présent depuis c++98 et QMap est supporté depuis un bail aussi, dans des versions qui tolèrent de vieux compilos.