Archive

Posts Tagged ‘Humeur’

[C#] Réflexion sur la reflection

La reflection, parfois, ça peut être super utile.
Mais avant d’utiliser de la reflection, il convient de bien poser sa réflexion.

En effet, si cela peut être une solution de facilité à un instant donné, cela peut également être une source de difficulté non négligeable par la suite.
En réalité, j’avais bien une métaphore en tête, mais elle n’est pas à proprement parlé « politiquement correcte ». Donc, je vais éviter.

En attendant, dans ce billet, je vais donner deux exemples (que j’ai vu en entreprise, mais « annonymisés ») de ce qui justifie ce même billet.
Je parlerais ensuite de petites questions utiles pour réfléchir avant de faire et enfin de ce est généralement admit avec un peu de lecture supplémentaire.

 
Lire la suite…

Catégories :.Net, C#, Développement, Humeur

Traiter les données dans le code ou en base ?

Cela fait plusieurs fois que je vois de gros traitements de manipulation de données directement dans le code.

A chaque fois, il y a eu des variations, mais en règle générale, c’est un algorithme plus ou moins comme cela :

Récupération des données depuis la base de données.
Pour chaque ligne récupérée.
     Si le champX est égale à "variable1", alors on lance la procédure "procedure1" pour cette ligne.
     Si le champX est égale à "variable2", alors on lance la procédure "procedure2" pour cette ligne.
     Si le champX est égale à "variable3", alors on lance la procédure "procedure3" pour cette ligne.
     Sinon, on lance la procédure "procedure4" pour cette ligne.

Le tout avec du if, else if, esle (ou un switch, c’est selon), parfois d’autres boucles à l’intérieur de la première (forception, foreachception ou whileception, si je puis dire).

Comme je l’ai dis, il y a des variantes, mais cependant, si les causes sont différentes, l’effet reste le même : c’est pas performant.
Voir pire, ça occasionne des timeout vis-à-vis de la base de données.

Mais, alors, que faire ?
Le traitement ensembliste. En base de données.
Voilà, c’est tout.

Alors, je sais que parfois, la base ne doit être utilisée que pour stocker les données (sic…) et que le code métier ne doit se trouver qu’en un seul et unique endroit (sic bis…), que la base de données ne doit pas contenir d’intelligence (sic ter…).

Mais parfois (souvent ?), c’est juste très con de vouloir procéder comme cela.
Bon, l’avantage, c’est quand même que c’est tellement à la ramasse qu’optimiser n’est pas très compliqué… (en fait, l’étape « ohmondieucesthorrible » est plus longue à gérer).

Quand on a un SGBDR, il ne faut pas oublier que le G, c’est pour Gestion.
C’est autant de la gestion des base de données que de données elles-mêmes.
En somme, les SGBDR sont fait pour traiter de la données !!!

Comment on fait, du coup ?
A chaque fois que j’ai eu ce problème, il a été résolu avec des tables temporaires.
En somme, récupération des données vers une table temporaire, puis traitement des données depuis cette table en reprenant les conditions mentionnées plus haut.
Donc, j’ai du :

UPDATE #MaTable
SET ChampY = "Valeur1"
WHERE ChampX = "variable1"

Et là, miraculeusement (ou pas), au lieu de traiter les lignes une par une, le SGBDR va traiter toutes les lignes.

Après, il faut quand même réfléchir un peu à comment on peut procéder, mais il est tout à fait possible de gérer les données de cette manière.

Un exemple ?
Là, j’ai un traitement qui doit gérer 70.000 lignes.

C’est pas une volumétrie très importante, mais le traitement via code dure 20 minutes avant que la connexion à la base de données ne parte en timeout.
Avec les traitements ensemblistes, la même volume de données (c’est à dire le MÊME cas de test) dure…environ 15 secondes.

Oui, oui, 15 secondes.
Et même en purgeant le cache de SqlServer (pour info).
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

Sur d’autres cas de tests, le gain de temps varie d’un facteur 1 (pour les très petits volumes) à 10 (pour les volumes plus importants et mixtes).
Le coup des 15 secondes est sur un scénario assez précis et j’avoue que…eh bien, je m’attendais pas à un tel gain ! ^^

J’ai pourtant 8 insertions de différents types (et différentes provenances) dans ma table temporaire, 18 updates différents puis insertion des données (conditionnées) dans une table physique et modification de deux autres tables (dont l’un compte plus de 67 millions d’entrée).

 
 
Alors OUI aux traitements de masse des données dans la base de données et NON aux mêmes traitements dans le code !!!

Catégories :Développement, Humeur, SGBDR

Commenter son code

Les commentaires, c’est comme tout.
Y a les bons commentaires et les mauvais commentaires.
Un bon commentaire, c’est un commentaire sur le code, mais c’est un bon commentaire.
Un mauvais commentaire, c’est un commentaire sur le code, mais c’est un mauvais commentaire.

Bon, outre cette introduction en clin d’oeil à des humoristes comme on en fait plus, il y a le réel problème des commentaires dans le code.
Pourquoi réel ?
Parce que certains commentaires brillent par leurs absences, certains sont tellement obscurs qu’ils n’éclairent en rien, les commentaires qui sont vides, et enfin les commentaires qui sont carrément faux, résidu de commentaire qui a été pertinent à une époque plus ou moins déterminée.

Un commentaire que j’avais rencontré :

Puisque le chef de projets est une vraie buse, il a totalement sous-chiffré le projet. Donc, j’ai pas le temps de faire mieux que le code présent. Une fois en production, ça ne sera pas à moi de le maintenir, donc : bon courage. Et quand quelqu’un lira ce commentaire, je serais déjà parti !

Je n’ai pas reproduit fidèlement, « une vraie buse » n’étant pas le texte originel…mais bon… 🙂

Lire la suite…

Catégories :.Net, C#, Humeur

Logiciel open source versus logiciel propriétaire

Suite à une discussion sur l’open source contre le propriétaire, j’ai préféré arrêter mon intervention.
La discussion m’agaçait quelque peu.

Résultat, j’ai pensé faire un billet dessus.
Mais avant de commencer à écrire, j’ai réfléchis.
Qu’est-ce que je reproche à l’open source ? Au propriétaire ?
Quelles sont les idées potentiellement erronées que j’ai sur chacun ?

J’ai donc fais des recherches en premier lieu, le présent billet en est le résultat.
Dedans, il y a mes réflexions, des éléments de vécu et du questionnement (d’ailleurs, je suis preneur pour entamer une discussion sereine et constructive).
Et pour le coup, quelques idées préconçues que j’avais et qui se sont avérées fausses.

J’ai essayé d’être objectif (enfin, ça dépend des parties, mais le titre est assez clair, je pense), mais ma vision des choses peut parfois être biaisée.
Après, tout le texte peut être discuté.

Lire la suite…

Catégories :Divers, Humeur, Open Source

[MMIT] Vocabulaire

BSODDans ce premier billet (introduction ici) , on va voir un peu de vocabulaire pour comprendre ce qui sera dit dans les suivants.

Il faut savoir qu’en France (je ne sais pas pour les autres pays), mais le modèle qui a été choisie (à tort ou à raison) pour l’organisation dans un Système d’Information est un modèle calqué sur le bâtiment et les travaux publics.
Pourquoi ? Bonne question (j’y reviendrais une autre fois)…

Lire la suite…

Catégories :Divers, Humeur, Humour, MMIT

[MMIT] Le Monde Merveilleux de l’IT – Introduction

« Le Monde Merveilleux de l’IT », ce sera une série de billets d’humeur, d’humour (à une lettre près), de choses qui m’agacent et d’autres que j’aime.

Tous les billets titrés MMIT seront donc uniquement dus à ma perception, mon expérience et aux discussions que j’aurais eu avec des collègues, amis etc. travaillant dans le domaine de l’IT (et donc non imputable à la SSII ou au client pour lesquels je travaillerais).

Ce sont des critiques (en bien ou en mal) du monde de l’IT, des méthodes de travail etc.
Certaines choses seront caricaturales, limite absurdes. C’est un fait.
Au lecteur de se faire un avis de ce qu’il en est réellement.

Le but de ces billets n’est pas la critique gratuite, mais, j’espère, un biais pour formaliser un problème et, peut-être, engager une discussion (si le cœur vous en dit; et accessoirement faire un peu rire ou sourire ^^).

Je vais prendre mon temps pour écrire ces billets (en fait, j’en planifie au moins six et comme ça fait longtemps que j’y pense, j’ai déjà eu le temps de formaliser un peu), justement pour ne pas tomber dans la critique gratuite et le « tu dis ça parce que t’es en colère » (ce qui n’est pas toujours faux).

Je mettrais à jour ce billet au fil du temps pour avoir un sommaire des MMIT.

D’ailleurs, pile poils aujourd’hui, alors que je voulais publier ce présent billet : La France dévalorise à tort le métier de développeur informatique ! (comme quoi…).

 

Sommaire

 

Catégories :Divers, Humeur, Humour, MMIT

HADOPI

Aujourd’hui, je vais un peu sortir de la technique, une fois n’est pas coutume.
Je vais donc parler de l’HADOPI, des labs, du piratage et des ayants droits (SCPP, SPPF, ALPA, SACEM / SDRM dans notre cas).
Ce billet expose donc mon avis personnel sur ses sujets, c’est un peu pour expliquer ce que j’aimerais, histoire de le formaliser un peu.

Je vais donc essayer d’être un peu factuel.
Comme d’habitude, ce billet n’engage que mon opinion.

En France, l’HADOPI est connue comme « l’entité qui veut empêcher les gens de télécharger illégalement en utilisant des moyens obsolètes et non fiables » (joke).
Hadopire, mascarade coûteuse, bilans contestés, taxe sur la copie privée qui a valeur de licence globale, PUR flop, riposte graduée disproportionnée, sociétés privées qui empiètent sur le domaine judiciaire…
On lit beaucoup de choses sur le net, au sujet d’HADOPI, et pas souvent en bien.

Et j’avoue, au début, j’étais bien d’accord… Mais c’était avant ^^

Même RSF ne voit pas forcément d’un bon oeil l’HADOPI, dans son rapport sur les ennemis d’Internet (page 50, la France : pays sous surveillance).

Mais qu’est ce que c’est, en fait, l’HADOPI ?

Sur la FAQ, on peut lire :

Ses missions sont de 3 ordres :

  • encourager le développement de l’offre légale et observer l’utilisation licite et illicite des œuvres sur internet;
  • protéger les œuvres à l’égard des actes de contrefaçon en ligne;
  • réguler l’usage des mesures techniques de protection et d’information.

Au titre de ces missions, l’Hadopi peut recommander toute modification législative ou réglementaire.

Elle est également investie d’un rôle consultatif auprès du Gouvernement ou des Commissions parlementaires.

Lire la suite…