Christie Poutrelle a écrit 234 commentaires

  • [^] # Re: Optimisez la clarté de votre code !

    Posté par (page perso) . En réponse au journal Optimisez votre code !. Évalué à 2. Dernière modification le 07/12/17 à 17:25.

    ps : sur un sujet parallèle, faut aussi que je me trouve une bibliothèque php qui permet de générer/lire des gros fichiers XLSX (ou ODS) qui ne souffre pas de fuites mémoire comme PHPExcel (bon outil pour des fichiers pas trop volumineux)

    Utilise https://github.com/box/spout http://opensource.box.com/spout/ c'est très exactement fait pour ça.

  • [^] # Re: Optimisez la clarté de votre code !

    Posté par (page perso) . En réponse au journal Optimisez votre code !. Évalué à 1.

    Ouais en effet, ça paraît logique.

  • [^] # Re: Optimisez la clarté de votre code !

    Posté par (page perso) . En réponse au journal Optimisez votre code !. Évalué à 1. Dernière modification le 07/12/17 à 17:04.

    Par exemple https://github.com/php/php-src/blob/6053987bc27e8dede37f437193a5cad448f99bce/ext/dom/document.c#L1473 (ext-dom) va lire le fichier en entier via https://github.com/php/php-src/blob/6053987bc27e8dede37f437193a5cad448f99bce/ext/dom/document.c#L1352 qui utilise http://xmlsoft.org/html/libxml-parser.html#xmlParseDocument - et là je perds mes petits parce qu'apparemment en interne ça utilise un SAX parser, qui n'est pas donc pas supposer charger le fichier en entier.

    Alors que XMLReader ici https://github.com/php/php-src/blob/6053987bc27e8dede37f437193a5cad448f99bce/ext/xmlreader/php_xmlreader.c#L884 (ext-xml) utilise http://xmlsoft.org/html/libxml-xmlreader.html#xmlReaderForFile et ce n'est pas précisé dans la documentation si il charge le fichier en entier ou non.

    A noter, ça fait longtemps que je ne l'ai pas utilisé, mais à l'époque, utilise XMLReader et XMLWriter m'avait sauvé d'un bon nombre de memory limit exceeded en PHP.

  • [^] # Re: Optimisez la clarté de votre code !

    Posté par (page perso) . En réponse au journal Optimisez votre code !. Évalué à 2.

    En effet (cf https://secure.php.net/manual/en/xmlreader.requirements.php ) tu as raison - peut-être qu'il utilise l'API plus bas niveau que les autres. Je sais que l'API DOMDocument ainsi que SimpleXML sont basée sur la libxml elle aussi - mais eux parsent les fichiers en entier pour les charger. Je me suis donc trompé :)

    Cependant le reste reste vrai, à savoir que XMLReader est basée sur un curseur sur le fichier, et ne le parse pas au complet, de mémoire (à moins que ça ait changé mais ça m'étonnerais) tu peux parser du XML invalide (en théorie je dis bien) avec jusqu'au moment ou tu tombes sur la partie cassée.

  • [^] # Re: Optimisez la clarté de votre code !

    Posté par (page perso) . En réponse au journal Optimisez votre code !. Évalué à 8.

    C'est absolument vrai, il faut toujours éviter les "premature optimization" - cependant, la performance commence toujours par une architecture logicielle claire et pensée en premier lieu pour les performances. Quand on importe toutes les semaines de centaines de milliers de lignes de gros fichiers XML, la mécanique a sérieusement intérêt à avoir été pensée pour dès le départ.

    Par exemple, l'auteur parle de Drupal, et je sais de quoi je parle j'en fais depuis presque 10 ans, et je suis certain que les gens ayant commencé le site ont utilisé les API de Drupal pour injecter le contenu. Cependant, ça devient très vite très compliqué (ça aurait été pareil avec une application Symfony ou Django basée sur un ORM) - où est la barrière que je peux franchir ou pas pour respecter les performances ? Est-ce que j'accepte de contourner les API du logiciel et potentiellement avoir des données obsolète dès leur import (évènements non lancés, listeners non reveillés) où est-ce que j'accepte que ce soit juste lent mais m'assure que tout le monde ai bien sa chance d'intervenir logiciellement au moment de l'injection des donnée ?

    La réponse que j'aurais apporté à ce genre de problématique c'est que bien souvent l'outil de base est mal choisi, et dès ce moment, avant même qu'une seule ligne du logiciel existe, ce choix aurait pu permettre d'éviter d'avoir se poser ces questions là.

    Puis, pour revenir au XML, utiliser du XPath, sérieusement ? Pour des très gros imports, si tu sais ce que tu fais et que tu connais le schéma, il faut mieux utiliser un lecteur séquentiel, comme l'API XMLReader, qui va juste être incroyablement plus rapide et ne pas consommer de mémoire, là où les implémentations basées sur la libxml2 (c'est à dire toutes en PHP, sauf l'API XML(Reader|Writer)) nécessitent de charger le fichier XML intégralement en mémoire, et en profitent pour passer une phase d'autocorrection du contenu (si si, ça le fait, et même plutôt bien).

    Bref, les performances ça se prépare en amont:

    • éviter les optimisations prématurées permet d'éviter de créer des goulots au niveau des caches, et de rendre illisible une API qui aurait pu l'être,
    • penser le design logiciel dès le départ pour être taillé pour notre métier, quitte à rendre plus compliqué et plus lent les tâches annexes moins importantes,
    • bien choisir l'outil de départ,
    • éviter de tomber dans les pièges classiques/cas d'école.
  • # Plutôt à l'aise, même si j'ai un accent atroce

    Posté par (page perso) . En réponse au journal Votre rapport à l’anglais ?. Évalué à 4. Dernière modification le 05/12/17 à 11:24.

    Quel est ton rapport à l'anglais ?

    J'adore lire et écrire en anglais, et j'ai eu des facilités plus jeune car mes parents m'ont fait prendre des cours ludiques dès très jeune, même si eux finalement ne le parlent que très mal.

    Comment as-tu fait pour le parler de façon acceptable ?

    Avoir eu du vocabulaire dès le départ m'a beaucoup aidé, ensuite, faut pas passer par quatre chemins, mon accent est édifiant tellement il est moche et peu fluide, la seule solution c'est la pratique: il faut voyager ou rencontrer des étranger.

    Comment tu fais pour ne pas être stressé avant/pendant un call ?

    Je fais pas, en anglais je suis toujours stressé. La seule façon de me calmer est de très bien connaître le sujet pour ne rien louper des subtilités, non de l'anglais, mais du sujet.

    Est-ce que tu pourrais être dans l'entreprise où tu es aujourd'hui si tu ne parlais pas anglais ?

    En vrai, oui, mais ça serait un gros handicap vu que je contribue à du logiciel libre. Le lire et l'écrire est le strict minimum.

    Est-ce que tu as dû te farcir des séries américaines en VO alors que tu détestes ça ?

    Je ne déteste pas ça, bien au contraire, je regarde tout en VO y compris le Japonais, le Danois, et le Français (et oui un film français en français est de la VO) [note: je ne parle ni japonais ni danois] - ce que j'aime c'est qu'on entend les vraies voix des acteurs. Les voix en doublage ont toujours une sonorité relative "fausse" et je le sens beaucoup. Si je ne comprends pas, je mets des sous-titres.

    Deux avantages ici:

    • avec les sous titres en français, au mieux ça te familiarise avec les sonorités de la langue, et donc tu es moins perdu le jour ou tu l'entends, c'est plus naturel, même si tu ne comprends finalement pas tout;
    • avec les sous titres dans la langue d'origine (et donc une transcription, et non une traduction) ça permet de s'améliorer dans la langue extrêmement rapidement, ça associe le visuel des mots à leur sons, et si tu as comme moi une mémoire visuelle, c'est super efficace !
  • [^] # Re: Ma vie, mon oeuvre

    Posté par (page perso) . En réponse au journal Votre rapport à l’anglais ?. Évalué à 6.

    ne te force pas à avoir un accent Anglais hyper classe, ni à parler vite

    Très clairement, c'est le meilleur conseil jamais donné: tu auras souvent affaire à des "non native english speakers" (sous entendre des gens qui ne sont pas d'origine anglo-saxonne) et qui auront eux aussi un accent imbuvable. Il faut mieux parler en Giblish (Global English - anglais parlé par les non-natifs; c'est aussi connu sous d'autres noms) et focaliser tes efforts sur ce que tu veux dire plutôt que comment le dire.

  • # Dommage que les autres ne fassent pas pareil

    Posté par (page perso) . En réponse au journal Ordinateurs portables Dell sous Linux. Évalué à 0.

    Dommage que les autres ne fassent pas pareil, je regrette vraiment que Lenovo ne permette pas de choisir Linux, du coup j'ai gardé le Windows au chaud dans un coin, ça peut toujours me servir.

  • # Pette question, mais pourquoi (ce n'est pas un troll) ?

    Posté par (page perso) . En réponse au journal Acheter un Thinkpad moddé, première partie. Évalué à 4. Dernière modification le 27/11/17 à 13:11.

    Quid du prix ? Le site est entièrement en chinois, j'avoue que j'ai du mal à me repérer dedans; quels avantages tires-tu d'avoir les anciens châssis avec du matériel neuf à l'intérieur ?

    Par exemple, j'ai un Thinkpad T470 - et OK le prix est probablement plus élevé que sur un modèle équivalent d'une autre marque (genre Asus ou autre) mais en retour j'ai matos qui est proportionnellement plus solide que ses équivalent moins cher (même de bonne marque) et la possibilité d'acheter les pièces détachées (pour remplacer que ce qui casse quand ça casse).

    Est-ce que faire confiance à cette entreprise chinoise du coup fourni les mêmes garanties, ou c'est juste pour faire de l’esbroufe ou que aimes réellement beaucoup plus les anciens châssis ?

  • # +1

    Posté par (page perso) . En réponse au journal A payé. Évalué à 2.

    J'ai donné aussi, peu, mais si tout le monde faisait de même, la fondation n'aurait plus rien à craindre.

  • [^] # Re: Monnaie = danger

    Posté par (page perso) . En réponse au journal SQL Decimal vs Double. Évalué à 1. Dernière modification le 12/09/17 à 10:35.

    D'après ce que je lis MONEY peut être casté en float, et si j'ai bien lu la doc, les règles qui s'appliquent sur les calculs dépendent de la locale configurée soit niveau système, soit au niveau de la base, tu n'as donc pas la souplesse que tu souhaites pour gérer plusieurs monnaies différentes.

    De plus, stoker seulement en 2 ça veut souvent dire que tu as déjà arrondi tes valeurs calculées pour stoker (par exemple si tu appliques des réductions en % qui peuvent te donner des fractions en résultat).

    Si je devais utiliser un type natif de la base, j'utiliserais définitivement un DECIMAL et pas un type money, en tout cas avec PostgreSQL, et surement pas un DECIMAL avec MySQL à cause des cast implicites et des pertes de précision. C'est souvent pour ça que j'ai tendance à conseiller des valeurs en 2 INTEGER et 1 VARCHAR (ou ENUM ou INTEGER) soit le montant, le delta (précision et puissance), et enfin la currency.

    A noter que finalement, quand je dis "conseiller", c'est à prendre avec un peu de recul, car ça dépend aussi vraiment du besoin à la base, pour un logiciel de caisse par exemple, tu ne vas gérer qu'une currency et tu stockera toujours tout déjà arrondi puisque tu stockes la somme réellement payée, par exemple dans ce contexte tout ce que je viens de dire semble relativement inutile.

  • # Monnaie = danger

    Posté par (page perso) . En réponse au journal SQL Decimal vs Double. Évalué à 3.

    De manière générale, pour le monétaire, je stocke deux INTEGER et non un DOUBLE ni un DECIMAL ni aucun autre type avec précision: le premier INTEGER contient la valeur multipliée par 10la précision - et le second contient la précision.

    On calcule et on affiche la précision (2 ou 3 décimales ou autre) selon la monnaie à un moment donné, et tu peux changer globalement la configuration de la précision par monnaie à tout moment dans ton logiciel, les anciennes valeurs stockées ainsi avec la précision à côté sont à l'épreuve du temps.

    Problème de cette méthodologie, tu ne peux pas laisser le SQL faire des aggrégats sur les montants si la précision diffère, c'est à la partie logicielle de le faire… Mais la cohérence dans l'espace et le temps à un coût.

    Sinon certains SGBD (dont PostgreSQL) ont un type pour le monétaire, mais j'ai jamais testé.

  • # Série de mon enfance

    Posté par (page perso) . En réponse au journal Financement participatif pour Magit. Évalué à 0.

    Elle voit souvent rouge, avec elle ça bouge, voilà Magit !

  • [^] # Re: perso...

    Posté par (page perso) . En réponse au journal Du bon partitionnement entre un SSD et un HDD . Évalué à 4.

    Oui, et je serais toi je ne mettrais pas de partition swap, ni de partition var, juste une pour le boot au cas où ton bios/uefi n'aime pas les trop grosses partitions, et une / avec tout dedans.

    Ensuite tu mets ton /home ou comme dit au dessus juste des répertoires de /home.

    Le swap, ne fais pas de partition, mais créé toi un fichier à la place, avec un swapon au boot sur le fichier, et mets vm.swapiness à 0 pour demander à ton linux de ne jamais swapper sauf en cas d'extrême nécessité.

    Créer plein de partitions sur un poste personnel n'apporte absolument aucune valeur ajoutée, c'est un réflex de vieux adminsys qui n'a pas lieu d'être sur un poste perso. Ça ne t'apporte que des problèmes si jamais tu devais resizer des partitions.

  • [^] # Re: Perso, j'installe pas ça chez moi

    Posté par (page perso) . En réponse au journal Olcc-NG : un nouveau client de messagerie moderne et efficace. Évalué à 3.

    Ouaip, désolé j'ai répondu au mauvais endroit: https://linuxfr.org/users/soulfly_b/journaux/olcc-ng-un-nouveau-client-de-messagerie-moderne-et-efficace#comment-1680865

    Comme dit plus haut, déjà un simple échappement et validation des entrées/sorties devrait améliorer grandement la chose. Si aussi tu peux placer d'autres sécus comme par exemple, du CSRF ou ce genre de choses ou une authent sur les accès au serveur (ce qui est généralement le strict minimum) ça serait un grand plus.

    J'ai pas regardé comment ton JS marche, mais s'il tape directement les scripts PHP directement par leur URL, sans passer par un routeur, tu ne peux pas mutualiser grand chose (je ne parle pas d'aller vers du framework de bourrin, pas forcément besoin, mais a minima il y a besoin de quelque chose ici).

  • [^] # Re: Perso, j'installe pas ça chez moi

    Posté par (page perso) . En réponse au journal Olcc-NG : un nouveau client de messagerie moderne et efficace. Évalué à 1.

    Si j'arrive à trouver le temps, je te filerais quelques hint, mais globalement l'archi n'est pas bonne et les entrées/sorties jamais échappées, déjà corrige ça et t'auras corrigé 90% des potentiels problèmes :)

  • # Perso, j'installe pas ça chez moi

    Posté par (page perso) . En réponse au journal Olcc-NG : un nouveau client de messagerie moderne et efficace. Évalué à 6.

    Je suis allé me balader un peu dans le code, niveau PHP c'est assez oldschool non? Je n'ai pas creusé trop loin mais j'ai déjà vu plusieurs injections potentielles, et il me semble que niveau sécu, c'est carrément 1990 non?

    Mais point positif quand même, l'outil à l'air cool, merci.

  • # Ravivi

    Posté par (page perso) . En réponse au journal Lollypop 0.9.86 vient de sortir. Évalué à 3.

    Depuis pas mal de temps je suis tes journaux, et bien que j'adore ton approche au niveau de l'UI, je n'ai jamais été convaincu, surement à cause d'a priori tout à fait stupides (notamment le fait que banshee plante dès qu'on a plusieurs milliers de titres).

    Je viens de tester sur une machine avec un petit moins de 1000 titres et ça à l'air de plutôt bien se comporter, et je suis très agréablement surpris !

    C'est un très bon logiciel, très agréable à utiliser, le seul petit bémol pour ma part est que les "menus déroulants" (qui apparaissent quand on clique par exemple sur "listes de lectures") sont un peu petits et on loupe facilement le bon item sur lequel on voulait cliquer… Sinon franchement, rien à redire super boulot.

    Ceci étant dit j'envisage de tester sur une autre machine qui emporte avec elle 20 000 et quelques titres pour essayer de mettre le bousin à genoux, si ça marche sans faillir, tu as ma bénédiction pour l'éternité !

  • [^] # Re: Réaction

    Posté par (page perso) . En réponse au journal La saga FFmpeg continue. Évalué à -10.

    Qui de l'équipe jaune ou de l'équipe rouge va gagner l'épreuve d'immunité ?

  • [^] # Re: Micro$oft

    Posté par (page perso) . En réponse au journal Merci Microsoft, ton PC n'est plus superbe. Évalué à 2.

    Je te plussoie mon cher, Microsoft a toujours eu énormément d'avances sur certains sujets précis, gestion du matériel, économie d'énergie, gestion de la mise en veille, etc… et d'excellent développeurs! Il n'y a qu'à aller lire le blog de Joel on software.

    Kitiker Microsoft, c'est facile, mais il faut aussi reconnaître que sans oeufs, il n'y a pas d'omelette, et sans la concurrence Linux comme tout autre ne serait aujourd'hui probablement qu'un tas de bouse informe.

  • [^] # Re: Scrongneuneu de rogntudju

    Posté par (page perso) . En réponse au journal Disponibilité du député avant une loi Sécurité. Évalué à 8. Dernière modification le 08/04/15 à 14:41.

    Hum faux et archifaux, la graceful degradation c'est so 2010's, ça date de quand les navigateurs pour aveugles ne savaient pas trop interpréter le JS. Maintenant, le JS, c'est accessible.

    Je te conseille: https://www.google.com/search?q=accessibilit%C3%A9+javascript&ie=utf-8&oe=utf-8

    Bon, on est tous d'accord le JS est plus souvent là pour nous pomper l'air que de faire des merveilles (pubs & popups & co) mais dans la vraie vie, il sert aussi pour des vraies fonctionnalités (AJAX, que ce soit pour dynamiser ou pour les performances, carto, notifications, etc…). Même si ça embête les anti-system D, c'est aujourd'hui incontournable.

    Utilise des clients riches si tu ne veux pas de JS.

    D'ailleurs: https://developer.mozilla.org/fr/docs/Accessibilit%C3%A9/ARIA

  • [^] # Re: Scrongneuneu de rogntudju

    Posté par (page perso) . En réponse au journal Disponibilité du député avant une loi Sécurité. Évalué à 1.

    Rholala quel vieux réac', raison de plus pour aller parler à ton député, au pire active toi le JavaScript sur un navigateur jetable, comme un chrome à côté par exemple.

  • # Joli retour d'expérience

    Posté par (page perso) . En réponse au journal ArchLinux : serait-il venu le temps de passer à autre chose ?. Évalué à 5. Dernière modification le 08/02/15 à 22:03.

    Je ne comprends pas pourquoi tant de gens ont downvoté ce journal, je pense que c'est un beau retour d'expérience quant bien même j'ai une expérience tout à fait différente. Je pense que c'est le but premier d'un journal de rapporter une histoire personnelle avec des vrais morceaux de question dedans.

    Personnellement pour ma part, j'ai eu une très bonne surprise en installant une Arch il y a maintenant quelques mois, et je n'utilise plus que ça sur mes postes de travail. J'ai eu un seul et unique soucis, sur une seule machine, et effectivement il était lié à un ou des paquets AUR. Mais n'oublions pas que sur Arch, installer du logiciel d'AUR c'est comme ajouter aléatoirement quelques repos deb non officiels sur un Debian, ça passe ou ça casse.

    Mais pour aller plus loin, je suis aussi d'accord avec l'auteur d'un certain côté quand il relate Debian, aujourd'hui je n'utilise Debian que sur des serveurs dédiés, mais je n'utilise rien d'autre sur ces mêmes serveurs. Debian est très stable, et mes serveurs ont besoin d'applis dont les versions sont stables, notamment pour ne pas que ma configuration Apache ou Nginx explose lors d'une mise à jour, ou qu'une appli PHP explose au vol si je lui fais une mise à jour majeure.

    Là où je ne suis pas d'accord, c'est que mon poste personnel (et non un poste de travail) je n'ai eu strictement aucune configuration à faire, je la mets à jour depuis un an sans problème, et tout fonctionne à merveille.

    Merci pour ce retour d'expérience.

  • [^] # Re: le livreur

    Posté par (page perso) . En réponse au journal OVH et le DPI, ou comment se faire débrancher son serveur mail parce qu’on reçoit du spam. Évalué à 2. Dernière modification le 02/10/14 à 15:04.

    Le service de support, si mes souvenirs sont bons, dans ce cas précis avait l'air de dire qu'il ne voulait pas que je boote en rescue. Je sais ça parait bizarre, mais je me souviens de ce détail là parce que j'avais justement moyennement apprécié la chose.

    Quant aux 10 ans de mail, c'est juste pour faire mon effet FBI pédophile, en vrai j'ai des backups, mais à cette époque là je ne les avait pas mis en place… (honte sur moi).

  • [^] # Re: le livreur

    Posté par (page perso) . En réponse au journal OVH et le DPI, ou comment se faire débrancher son serveur mail parce qu’on reçoit du spam. Évalué à 7.

    j'imagine "10 ans", mais je ne vois pas le rapport : ils coupent, ils ne dtruise pas, et puis il y a les backup au cas où un disque crashe. Bref, ils ne détruisent rien en historique.

    En effet, voici un extrait du mail que j'ai reçu quand c'est arrivé:

    Nous avons détecté un flux de connexion IRC vers appartenant à votre serveur . Ces connexions servent à contrôler des bots installés sur votre serveur.
    Votre serveur a été infecté à cause d'un noyau trop ancien et/ou d'une faille de sécurité de votre système. Le mode opératoire du hacker lui permet d'obtenir l'accès 'root' au serveur. Seule une réinstallation complète de votre serveur pourra vous assurer que votre système est sain à nouveau.
    Nous avons bloqué au niveau de nos routeurs les sources qui peuvent contrôler les bots et nous vous demandons de procéder à la réinstallation de votre système sous 24H. Passé ce délai, nous serons dans l'obligation de désactiver votre serveur.

    J'ai reçu ce mail en période de vacances, avec donc de fortes chances de ne pas le voir (j'ai d'ailleurs eu beaucoup de chances de le voir à temps) ; Vous remarquerez d'ailleurs qu'il contient un tissu d'âneries incroyables. Pour information ma machine n'était pas infestée et mon kernel à jour.

    A noter quand même qu'après discussion avec le support, j'ai bien compris entre les lignes qu'ils n'aurait pas réactivé le serveur ni permis d'accéder aux données sans réinstallation (ils ne voulaient pas me donner d'accès SSH de secours) ce contre quoi il a fallu que je lutte pour leur expliquer que j'étais bien l'origine des connexions - avec beaucoup de logs à l'appui. Ça a été une vraie bataille ce jour là.

    Encore une fois, je ne veux pas faire de discrimination envers OVH, c'est un bon service, mais sous couvert de sécurité ils se permettent bien des choses et sans possibilité de faire appel. Bien que légitimement ce genre de prestataire technique outrepasse facilement son rôle bien souvent au détriment du client, que ce soit par l'inspection du trafic ou le blocage arbitraire de réseaux ; Généralement les contrat qu'on signe restent très vagues et très permissifs pour eux.

    Euh… 99% des clients ne voient rien.

    Le réel problème, c'est quand on est un cas limite, leur faire respecter le contrat de service peut être incroyablement compliqué, et c'est bien dommage.