C’est quasi certain, la question c’est : dans quel état sera le texte après le passage entre les griffes du CC ? Le CC est le grand spécialiste de la réserve d’interprétation qui réduit à néant une loi.
Au départ c’était le truc enregistré par le Parlement en 15 jours à l’unanimité ou presque, là ça commence à se compliquer sérieusement…
Le
04/06/2015 à
10h
19
Oui mais compte tenu du nombre de saisines annoncées, les sujets qui vont être couverts vont être larges et pour faire tomber la pression le CC examinera probablement l’ensemble du texte (via sa possibilité d’auto-saisine). D’autant qu’en ce moment au Sénat, ça parle beaucoup constitutionnalité…
Le
04/06/2015 à
10h
02
La contre-partie c’est qu’il sera impossible de faire passer une QPC sur le sujet après…
Le
04/06/2015 à
09h
58
Manque plus que le premier ministre et les présidents des chambres ! La Constitution c’est bon, mangez-en " />
Sauf que c’est dans leur jurisprudence récente (Hadopi), et que c’est gravé dans le marbre pour au moins 20 ans.
Le
03/06/2015 à
15h
55
Au contraire qu’ils continuent à bien charger la barque ! Le côté irréfragable de la preuve classée secret défense devrait grandement plaire au Conseil constitutionnel.
C’est l’équivalent du procureur : il défend les intérêts de l’état de droit (donc en théorie pas forcément les intérêts du gouvernement du moment) et donne sa vision des choses au Conseil d’état. En revanche je ne suis pas assez versé en droit administratif pour pouvoir te dire si la composition de la cour se fait à la courte-paille (ou toute autre méthode).
Le
01/06/2015 à
15h
59
Si la loi sur le renseignement est maintenue dans les conditions actuelles (urgence) et que le Conseil d’état valide le passage en QPC on sera peut-être dans une situation, me semble-t-il, inédite (le CC peut-il faire confusion avec la ou les saisines et la QPC alors que les délais de traitement ne sont pas les mêmes ?).
Si le Conseil d’état ne valide pas la QPC, le Conseil constitutionnel peut user de sa possibilité d’auto-saisine sur le projet de loi sur le renseignement (il sera saisi, parole de Président) pour examiner les aspects qui auraient été soulevés par la QPC vu que les sujets sont connexes.
En gros ça va être un gros bourbier pour le gouvernement, tout dépendra du Conseil constitutionnel. Le Conseil d’état pèse relativement peu dans l’histoire mais le hasard du calendrier fait ici très bien les choses.
Le
01/06/2015 à
15h
34
Non, ce sera au Conseil constitutionnel (le Conseil d’état c’est avant la loi, c’est un peu particulier pour ne pas dire incestueux…).
Le
01/06/2015 à
15h
27
Certes, mais d’ores et déjà il est évident que le Conseil constitutionnel, indépendamment du jugement du Conseil d’état, va regarder cette question et les arguments qui ont été développés.
Le
01/06/2015 à
15h
21
Sur ce coup là le gouvernement ferait mieux de lever l’urgence parce que les effets en cascade pourraient ne pas être tristes…
PS : faut pas le prendre mal, mais il y a vraiment beaucoup de typos dans l’article.
Pourtant les journalistes se sont pas mal mobilisés, bien sûr notre Marc national mais il y eu aussi une journée complète en accès libre sur Médiapart, des articles très complémentaires sur Rue89 par Andréa Fradin, Le Monde et Libération n’étaient pas en reste, etc.
En revanche, comme d’habitude, il ne fallait rien attendre d’un journal télévisé, déjà sur un sujet simple… alors avec un texte très complexe juridiquement et techniquement, je suis content de ne plus avoir de télé.
Le véritable problème, c’est qu’en moyenne tout le monde s’en fout et « si c’est pour lutter contre le terrorisme, alors… ».
Le seul problème c’est que des exégètes amateurs ont quand même réussi à faire suffisamment de bruit pour que le président de la République s’engage publiquement à déferrer le texte devant le Conseil constitutionnel, à ce qu’un groupe de députés le fasse aussi et coïncidence calendaire, le Conseil d’état pourrait être de la partie ! Autrement dit, la com’ bien huilée du gouvernement et la simple formalité d’enregistrement initiale est en train de se transformer en calvaire qui sera long et à l’issue incertaine.
Ça ne m’étonnerai pas que les « baveux » en remettent une bonne couche, ils sont cruels.
Le
02/06/2015 à
11h
03
Même si ce n’est généralement pas déterminant, il y a quand même de plus en plus de barbus (et de barbues, faut respecter la parité) auditionnés à l’Assemblée ou au Sénat. Or, la loi ne se fait pas dans l’hémicycle, c’est trop tard. Donc être invité en amont c’est un progrès significatif.
Maintenant, le poids des journalistes qui relayent (la plupart) servilement la com’ gouvernementale ou des avocats qui peuvent complètement bloquer la justice reste et restera sans commune mesure.
Le
02/06/2015 à
07h
54
Ah ok ! Comme je l’ai écrit hier c’est en train de se transformer en bourbier : simultanément le parlement le CC, le CE et le gouvernement au milieu, ça va être la saga de l’été !
Le
02/06/2015 à
07h
47
J’ai du mal à comprendre la dernière phrase : dans quelles circonstances le CE pourrait contredire le CC ? Si après la saisine, le CC ne trouve rien à redire sur les « informations et documents », il y a alors autorité de la chose jugée et ce, en dernier recours " />
Tout jugement porte en préambule : « Au nom du peuple français »…
Le
22/05/2015 à
09h
36
Ces documents ne sont accessibles qu’aux parties au procès.
Le
22/05/2015 à
09h
21
Lis l’arrêt, tu trouveras les moyens soulevés par la défense dans le pourvoi qui s’appuient en particulier sur les procès verbaux. Mais là on est en cassation, donc c’est la forme qui est examinée, et la cour ne considère pas qu’en appel il y a eu une erreur d’interprétation du droit.
Le
22/05/2015 à
08h
55
Un jugement c’est public et Marc l’a joint à son article :
« […] que le prévenu a parfaitement reconnu qu’après être arrivé par erreur au coeur de l’extranet de l’ANSES, avoir parcouru l’arborescence des répertoires et être remonté jusqu’à la page d’accueil, il avait constaté la présence de contrôles d’accès et la nécessité d’une authentification par identifiant et mot de passe ; qu’il est ainsi démontré qu’il avait conscience de son maintien irrégulier dans le système des traitement automatisé des données visitées où il a réalisé des opérations de téléchargement de données à l’évidence protégées,[…] »
Voilà à mon avis le point litigieux du raisonnement (en gras).
Le
22/05/2015 à
08h
43
CryoGen a écrit :
Le problème ici est qu’il a avoué savoir qu’il était frauduleusement dans un espace protégé.
Non, je cite l’intéressé : « NON !!!! C’EST FAUX !! J’ai avoué avoir vu un login et un mot de page d’accueuil ». De plus l’espace n’était pas protégé puisqu’il était accessible par des moyens on ne peut plus standards. Donc comment deviner, même pour un spécialiste ?
Le
22/05/2015 à
08h
24
Avygeil a écrit :
Peu importe de savoir ce que l’admin voulait faire ou pas, ou que tout le site Web soit protégé ou pas.
Bluetouff a constaté que l’arborescence qu’il consultait était protégée par login/mdp, il aurait du partir de suite…
Ben non : il a constaté qu’au début de l’arborescence il y avait un login et un mot de passe, comme sur Facebook, Twitter, … On ne peut donc rien en déduire de la sorte.
Le
22/05/2015 à
08h
05
Avygeil a écrit :
On y apporte la foi que l’on veut à ces propos rapportés, mais si c’est le cas c’est difficilement défendable
En quoi le fait qu’il y ait un élément nécessitant une authentification implique que les autres documents présents dans l’arborescence ne soient pas publics ? On peut s’organiser comme on veut ; par exemple avoir des documents présents à la fois sur Internet et sur l’intranet en mettant des alias vers le répertoire.
Impossible à deviner sans savoir ce que l’admin voulait faire puisqu’a priori c’est raté.
Le
22/05/2015 à
07h
24
Ce qui est étonnant c’est que l’ANSES, en tant qu’OIV, n’est pas été condamnée pour défaut de sécurisation. Quant à déterminer si lorsque l’on récupère un fichier librement accessible, on peut avoir conscience de ce que l’administrateur du serveur voulait faire, ça bat à plate couture les algorismes de Cazeneuve.
Le
22/05/2015 à
06h
58
Pour l’électricité il y a un article spécifique dans le code pénal : L.311-2 (de mémoire) : « La captation frauduleuse d’énergie est assimilée au vol », toutefois, je ne sais s’il est postérieur à 1912 ; or, pour ce qui est des fichiers informatiques il n’y a rien de franchement aussi explicite.
Dès lors le principe constitutionnel comme quoi le pénal est d’interprétation stricte l’emporte sur ce raisonnement scabreux : le délit imputé n’est pas constitué. Pour l’aspect du maintien frauduleux, encore aurait-il fallu que l’accès le soit, ce qui n’a pas été démontré.
Les gens sont vraiment médisants. Les algorismes c’est un nouveau truc (ça ne date que du 9ème siècle) et ça va faire des miracles automatiquement. C’est parce qu’il n’y avait pas d’algorisme, même si les derniers tarés étaient déjà supposés faire l’objet d’une surveillance, que des attentats ont été commis en France. Et puis vous n’y comprenez rien et la presse raconte n’importe quoi.
À vrai dire moi non plus ! Le besoin est né parce que j’avais besoin de fiabilité et que malloc() / free() ne me convenaient pas et comme l’outil est permissif, l’implémentation était facile. Après j’ai ajouté des fioritures comme la possibilité d’enregistrer des destructeurs, non pas que je rechigne à utiliser des gotos (je fais même pire : setjmp() / longjmp() " />), mais plutôt pour créer une sémantique au dessus de C qui me convienne pour mon application.
Maintenant, je ne vais pas prétendre que c’est la panacée et que c’est le truc qui va sauver des chatons, mais dans mon cas j’arrive à un bon résultat, le code est plutôt propre et surtout très fiable, au final c’est ce qui compte et si ça fait fumer les processeurs, c’est encore mieux !
Le
20/05/2015 à
14h
53
Bonne question. Toute allocation mémoire dans le pool est testée au niveau le plus bas et donne lieu à fatal(), pas de récupération d’erreur possible, mais j’ai un mécanisme de régulation de la consommation mémoire avec seuil qui fait que quand la queue principale (en fait c’est plus compliqué) est trop remplie à mon goût, la production de données est interrompue le temps que la queue se vide.
Donc push_pull_dtor() alloue une cellule de liste chaînée dans le pool et peut très bien échouer mais comme, généralement j’arrête de continuer d’allouer de la mémoire lorsque j’ai atteint 20 Go (sur 32 Go + 32 Go de swap) et que j’attends de pouvoir recycler la mémoire qui passe en free list, ce cas de figure ne s’est jamais présenté.
Pour l’aspect explicite, ça demande un peu de rigueur, mais c’est vrai de chaque ligne de code, non ;-) ?
Le
20/05/2015 à
14h
41
Pas exactement dans la mesure où le pool prend en charge nativement les allocations mémoires, j’ai juste ajouté la possibilité d’enregistrer dans la foulée des destructeurs pour faire des choses plus spécifiques si besoin est. Après c’est un appel effectivement explicite, mais il n’y a pas à gérer de multiples points de sortie donc à l’usage ce n’est pas franchement contraignant.
Enfin, pour l’allocation mémoire, contrairement à un compilateur qui ferait automatiquement des delete unitaires sur les objets, je travaille sur des blocs de 40 Mo ou de 16 Mo ce qui fait que je n’ai pas à faire une myriade d’appels systèmes sous mutex quand je détruis un pool, mine de rien ça se sent dans un programme qui fait des milliards d’allocations / désallocations.
Le
20/05/2015 à
14h
08
Désolé mais je ne programme pas comme ça en C, chez moi ça donne ça :
FILE f1 = NULL , f2 = NULL;
pool = alloc_pool (POOL_DEFAULT) ;
if (! pool)
return -1 ;
f1 = fopen (“blabla.txt”, “r”) ;
f2 = fopen (“blabla2.txt”, “r”) ;
pool_push_dtor (pool, close, (void *) f1) ;
pool_push_dtor (pool, close, (void *) f2) ;
res = …
// Erreur ou pas, on libère toutes les ressources qui sont dans la portée et associées au pool
reset_pool (pool) ;
free (pool) ;
return res ;
Un seul point de sortie (sauf erreur triviale détectée avant l’allocation de ressource) et un minimum de code explicite, il faut juste un peu de rigueur, mais nul besoin d’empiler des gotos, et dans le pool on peut mettre bien sûr la mémoire allouée mais aussi des fonctions spécifiques appelées avec un pointeur sur le contexte.
Le
20/05/2015 à
13h
35
Avec un lien ça aide, donc le voici RAII. Du coup je réalise que je fais du RAII dans mon code C mais ça s’appelle un pool et il y a aussi des destructeurs associés, donc le côté killer feature en tant que propriété intrinsèque et exclusive de C++ m’échappe.
(edit)Argh : affreuse faute(/edit)
Le
20/05/2015 à
13h
22
Bon, il y a certains aspects qui ne sont pas suffisamment explicites et c’est probablement de ma faute. Déjà je précise que mon patron c’est moi et que donc j’ai aussi en tête les contraintes commerciales.
Les 2100% de gain par rapport à ce qui existe ne sont pas le seul fait de l’optimisation du code, mais avant tout de la conception, de l’architecture et le choix du bottom-up, tout cela est cohérent et permet de mettre un tour de vis sur l’optimisation parce qu’en bottom-up on commence par les tests unitaires - moment privilégié pour optimiser - et surtout ne plus avoir à se poser des questions après parce que ça rame.
Pour l’assembleur, certes, la portabilité en prend un coup, mais déjà des contraintes impliquent de travailler en 64 bits et par ailleurs une version strictement C du code assembleur peut être activée en recompilant. Simplement c’est un plus qui n’a pas coûté trop cher et qui apporte réellement quelque chose de perceptible.
Sur les bugs j’avais prévenu ;-) il y a surtout beaucoup de rigueur et des tests unitaires (encore une fois en bottom-up c’est presque par construction) ; bien sûr que j’ai eu des core dumps et que j’ai passé du temps dans des débugueurs, mais pas tant que ça par rapport à d’autres projets parce que je me prends pas d’un seul coup toutes les couches à la fois. Sur un jeu d’essai ridicule (moins de 0,05% des données à traiter) Valgrind dit ça :
==6199== HEAP SUMMARY:
==6199== in use at exit: 0 bytes in 0 blocks
==6199== All heap blocks were freed – no leaks are possible
Pourtant c’est du C et de l’assembleur avec des pointeurs partout et on peut quand même faire des choses très propres avec.
Dans ce projet il ne s’agit pas simplement d’ajouter de la valeur, mais de créer de la valeur (en mode rupture), donc l’approche projet type corporate bullshit m’indiffère. Question d’objectif.
Le
20/05/2015 à
12h
09
Hum… pour le côté pro et intérêt c’est justement pour cela que c’est fait. T’as un programme qui met 81 heures à s’exécuter et un autre qui met 3h45, qu’est ce que tu préfères déployer chez un client (surtout si ça implique un déplacement et que le programme peut se casser la gueule si la machine du client n’est pas suffisamment musclée et refroidie) ?
Sur 23000 lignes de code, j’ai 300 lignes d’assembleur, tout le reste en C ; certes coder en assembleur c’est pas très productif surtout avec le temps passé à faire du profiling sur différents types de processeur, mais ce n’est pas significatif alors que le gain lui, est nettement perceptible.
Sur l’aspect bug, vu la quantité de données, le nombre de threads, de sections critiques, les pré-conditions et post-conditions et invariants, je vais être prétentieux mais le code est extrêmement fiable, ce n’est pas que du fait de l’outil mais de celui qui l’utilise, on a tendance à l’oublier.
Quant à utiliser une machine beaucoup plus puissante c’est aussi prévu mais ça viendra en plus. La petite différence avec un « bon » chef de projet, c’est que l’objectif n’est pas de pouvoir dire « j’ai tenu les délais et suis dans le budget alloué », mais plutôt d’innover et de rendre possibles de nouvelles choses. Ça se passe aussi (pas assez) comme ça dans le monde pro.
Le
20/05/2015 à
11h
48
HarmattanBlow a écrit :
L’essentiel c’est quand même que pour toutes les parties de ton code où tu n’as pas à gratter sur les performances tu pourras bénéficier des avantages du C++ par rapport au C.
Sérieusement dans le C++, le seul truc qui m’intéressait c’était le premier + : des choses comme les paramètres par défaut par exemple, pour le reste, en objet, le polymorphisme c’est vrai qu’on peut faire des trucs concis et propres si la hiérarchie des classes a été bien conçue.
Mais j’ai du mal rétrospectivement à trouver un quelconque avantage significatif à C++ (je précise que j’ai pratiqué, enfin en C++ 1.0/2.0). Pour beaucoup, l’avantage c’est « l’écosystème » autour, des libs comme Boost. Donc si l’avantage c’est de pouvoir empiler des couches opaques à foison, C++ répond parfaitement au cahier des charges, le seul problème c’est que ça ne donne pas confiance et qu’un programmeur moyennement expérimenté est très vite noyé et ne maîtrise absolument plus ce qu’il fait, surtout en cas de reprise de la maintenance d’un programme.
Donc, j’ai tendance à regarder passer (et trépasser) les langages qui devraient me simplifier la vie, sachant qu’en C je peux quasiment tout faire, peut-être avec moins d’élégance et de concision mais avec plus de confiance et surtout plus de liberté.
Le
20/05/2015 à
10h
36
HarmattanBlow a écrit :
Cela dit le code en mode kernel devrait être le plus petit possible et pour tout le reste je ne vois vraiment aucune raison d’utiliser le C à part la religion.
Arghh ! Je me suis auto-radicalisé à l’insu de mon plein gré et à cause d’Internet.
Quand tu as une volumétrie monstrueuse (vraiment monstrueuse), quand des portions de code sont exécutées des centaines de milliard de fois, que gratter 100ns à un endroit se traduit par un gain de 10 minutes au total, j’ai plutôt tendance à penser que choisir autre chose que le C (et l’assembleur) relèverait du dogmatisme (ou de la religion d’ailleurs).
À ce niveau là, comme l’a dit sr17, l’abstraction on s’en tape, on peut très bien en faire en C sous une forme satisfaisante et surtout contrôlable. Et désolé, mais il y a beaucoup d’applications - qui ne concernent pas directement le grand public - où c’est un « mal » nécessaire voire indispensable.
Le
20/05/2015 à
07h
43
HarmattanBlow a écrit :
Mais des choses comme la gestion de la mémoire devraient relever d’une prise en charge directe par le langage plutôt que par des templates. Tout simplement parce que ça prolifère partout dans le code.
Permets-moi de disconvenir respectueusement. La gestion de la mémoire c’est mon problème : à moi de trouver une ou des solutions en fonction de ce que j’ai à faire, et pitié pas de GC intégré / imposé surtout quand on fait du système ou de l’embarqué. Là on ne parle plus d’un langage de programmation mais d’un framework, et dans cette optique, le travail de programmation s’apparente plus à de la recherche documentaire (trouver la classe qui va bien pour ce qu’il faut faire), qu’à un véritable travail de conception en partant d’une feuille blanche.
Que ce genre de choses puissent être utiles pour certains types d’application et augmentent la productivité et la fiabilité, pourquoi pas. Mais généraliser et prétendre que c’est la bonne façon de faire et qu’elle est universelle, non. J’ai besoin d’être au plus près de la machine, de savoir ce qu’il va se passer au niveau des pipelines, des caches, l’anticipation des sauts. Le C est quasi-parfait dans ce rôle et tient depuis plus de quarante ans sans nécessiter de l’acharnement thérapeutique comme Cobol ou Fortran, il y a peut-être une raison…
Le
19/05/2015 à
17h
41
" /> Bah oui, travailler sur un micro-contrôleur 32 bits avec 4 ko de RAM et 16 ko de FLASH, c’est sûr qu’en Java, Python ou n’importe quel truc à la mode ça va être du tonnerre " />
Le C colle au système / architecture avec un niveau d’abstraction suffisant pour la portabilité - quand cela est souhaité -, on peut faire avec du code de bootstrap de quelques octets sans connaître l’assembleur du processeur cible !
Mais bon c’est vrai qu’il n’y a pas de collecteur d’ordures (GC) d’intégré et qu’il faut savoir ce que l’on fait, mais c’est un métier aussi, on a tendance à l’oublier.
Le
19/05/2015 à
13h
13
Désolé, je suis resté à C++ 1.0, en particulier les templates sont encore pires que le préprocesseur et cela a contribué à mon dégoût pour ce langage et en particulier pour les libs. Maintenant « inliner » la fonction de comparaison c’est du gagne petit comparé au principe de localité (en gros maintenir les données utiles en cache L1/L2/L3).
Sur mon application, par rapport à ce qui existe, j’ai un gain de 20, donc j’imagine que le travail de conception et d’optimisation n’a pas été inutile, mais en même temps quand on arrive à dépasser 64 Go de mémoire utilisée (physique et swap) on cherche vraiment la petite bête dès le début, d’où une conception en bottom-up. Maintenant, au risque de me répéter, tout dépend de l’application et des contraintes.
Le
19/05/2015 à
12h
48
" /> Oui, mais c’est pas le cas du code assembleur !
Le
19/05/2015 à
12h
37
Merci, c’est intéressant. Maintenant entre l’inline et l’appel de fonction c’est pas un secret, d’ailleurs c’est un gros reproche que l’on peut faire aux TMV (tables de méthodes virtuelles) en C++, non ?
Donc, voici le code C, pas vraiment subtil, de recherche dans un Btree :
(Note : c’est en inline quand même, alors qu’en assembleur il y a le coût de l’appel de fonction mais négligeable par rapport au gain apporté). Si en C++ on peut faire mieux, ça m’intéresse mais comme j’ai aussi ma version assembleur, j’en doute…
Le
19/05/2015 à
11h
54
Oui, l’assembleur n’est pas portable, c’est un choix qui dépend de l’application et des contraintes. Maintenant reste à savoir s’il faut mettre en avant le confort (tout relatif) du développeur ou la performance d’une application dans un contexte donné.
Le
19/05/2015 à
11h
49
Recherche dans un Btree (un red black tree), en C : indice (durée) 1, en ASM : 0,60 en utilisant en particulier la mise en cache (prefetcht0, prefetchnta), l’optimisation de l’anticipation de saut, l’alignement de boucle pour le décodeur d’instruction, …
J’ai juste 300 lignes d’assembleur pour un total de 23000 lignes (essentiellement en C) dans mon appli, certes ça coûte très cher à écrire mais au final ça le vaut largement. Maintenant il y a aussi d’autres aspects : conception en bottom-up, tests intensifs en particulier profiling mais bon quand il faut gérer plus de 4.10^9 objets complexes il faut aussi y mettre les moyens.
Le
19/05/2015 à
11h
26
C’est clair que si tu écris strcmp() ou strlen() en C++ pur ça va être plus rapide que la libc GNU (hint : c’est écrit en assembleur). Principe de localité, SSE, … le nombre de trucs que l’on peut pervertir pour obtenir un gain de 30 - 50% avec des astuces monstrueuses, c’est le propre de l’être humain, accessoirement c’est rigolo.
Le
19/05/2015 à
11h
18
LOL ! T’as déjà regardé le code généré par un compilateur C++ et les trucs qu’il fait dans ton dos ? Quand c’est trop lent en C (compilé avec gcc en -O3) je passe en assembleur et j’ai un gain significatif ; mais en général C est satisfaisant et avec de l’expérience tu as une idée du code qui est créé.
Maintenant en fonction des contraintes, tel ou tel langage peut être plus adapté à une situation, mais pour du code très rapide c’est C + ASM et surtout un (des) très bon(s) développeur(s).
« (…) notamment par leur nombre, leur caractère répétitif ou systématique. »
Exact, mais si, ne serait-ce que 10% des personnes qui utilisent un VPN ou un service chiffré en ligne font chacune une seule demande - ce qui ne peut pas être qualifié d’abusif -, la CNCTR va quand même avoir un backlog de plusieurs années, ou alors ça sera de l’abattage mais ça ne serait pas très sérieux " />
Bonne idée ! Allez : « Le fait de tenter d’influencer un parlementaire par voie de communication électronique ou téléphonique est puni de 3 ans de prison et de 375000 € d’amende. »
Hop direct code pénal puis on ajoute au #PJLRenseignement une huitième clause (encore que ça peut rentrer comme atteinte à la forme républicaine), boum sur écoute, la boîte noire balance direct au procureur à cause du 40 CPP, et au gnouf " />
Le
06/05/2015 à
11h
03
Pour information OVH va faire un communiqué en fin d’après-midi sachant que ses datacenters sont en France mais aussi au Canada et qu’au Canada une loi du même type est en train d’être votée…
Le
06/05/2015 à
09h
12
Suggestion pour NXi : faire une revue de presse internationale sur la perception de ce texte à l’étranger et l’impact probable sur l’économie numérique française (il y a déjà à lire sur ce sujet).
C’est un peu triste parce que j’ai l’impression que beaucoup ici passent à côté de l’essentiel. Le vote global c’est presque du détail, le travail important dans le cas d’un projet de loi c’est de remodeler le texte par des amendements, de travailler au niveau de l’article et pas de la loi en une seule entité (vote solennel).
Si un article au final n’est pas satisfaisant il est possible alors de voter contre.
Dans une procédure en urgence c’est d’ailleurs la meilleure stratégie : blinder d’amendements un article qui pose problème et en dernier lieu voter contre l’article si celui-ci n’est toujours pas satisfaisant ; cela force alors le gouvernement à le réécrire puis à le réintroduire au Sénat en version généralement édulcorée.
Or, pour ce texte il y a eu très peu de députés vraiment actifs et combatifs en séance (grosso modo 5 avec une pile d’amendements) et quelques figures qui se voudraient médiatiques qui ont fait acte de présence ou du hors sujet.
Donc relisez les débats tels que transcrits officiellement par l’Assemblée nationale et faites vous une idée au regard des explications de M. Paul, il y a du contraste, enfin c’est mon appréciation.
867 commentaires
Données de connexion : la QPC de la Quadrature, FDN et FFDN transmise au Conseil constitutionnel !
05/06/2015
Le 05/06/2015 à 13h 51
Champomy " />
(je crois que c’est l’une des rares fois ou je commente avant d’avoir lu l’article)
Loi Renseignement : des sénateurs veulent saisir le Conseil constitutionnel
04/06/2015
Le 04/06/2015 à 10h 39
C’est quasi certain, la question c’est : dans quel état sera le texte après le passage entre les griffes du CC ? Le CC est le grand spécialiste de la réserve d’interprétation qui réduit à néant une loi.
Au départ c’était le truc enregistré par le Parlement en 15 jours à l’unanimité ou presque, là ça commence à se compliquer sérieusement…
Le 04/06/2015 à 10h 19
Oui mais compte tenu du nombre de saisines annoncées, les sujets qui vont être couverts vont être larges et pour faire tomber la pression le CC examinera probablement l’ensemble du texte (via sa possibilité d’auto-saisine). D’autant qu’en ce moment au Sénat, ça parle beaucoup constitutionnalité…
Le 04/06/2015 à 10h 02
La contre-partie c’est qu’il sera impossible de faire passer une QPC sur le sujet après…
Le 04/06/2015 à 09h 58
Manque plus que le premier ministre et les présidents des chambres ! La Constitution c’est bon, mangez-en " />
Loi Renseignement : la lutte contre la contrefaçon pourrait justifier la surveillance
03/06/2015
Le 03/06/2015 à 16h 05
Sauf que c’est dans leur jurisprudence récente (Hadopi), et que c’est gravé dans le marbre pour au moins 20 ans.
Le 03/06/2015 à 15h 55
Au contraire qu’ils continuent à bien charger la barque ! Le côté irréfragable de la preuve classée secret défense devrait grandement plaire au Conseil constitutionnel.
Le cœur de la Loi Renseignement déjà aux portes du Conseil constitutionnel
01/06/2015
Le 02/06/2015 à 17h 21
C’est l’équivalent du procureur : il défend les intérêts de l’état de droit (donc en théorie pas forcément les intérêts du gouvernement du moment) et donne sa vision des choses au Conseil d’état. En revanche je ne suis pas assez versé en droit administratif pour pouvoir te dire si la composition de la cour se fait à la courte-paille (ou toute autre méthode).
Le 01/06/2015 à 15h 59
Si la loi sur le renseignement est maintenue dans les conditions actuelles (urgence) et que le Conseil d’état valide le passage en QPC on sera peut-être dans une situation, me semble-t-il, inédite (le CC peut-il faire confusion avec la ou les saisines et la QPC alors que les délais de traitement ne sont pas les mêmes ?).
Si le Conseil d’état ne valide pas la QPC, le Conseil constitutionnel peut user de sa possibilité d’auto-saisine sur le projet de loi sur le renseignement (il sera saisi, parole de Président) pour examiner les aspects qui auraient été soulevés par la QPC vu que les sujets sont connexes.
En gros ça va être un gros bourbier pour le gouvernement, tout dépendra du Conseil constitutionnel. Le Conseil d’état pèse relativement peu dans l’histoire mais le hasard du calendrier fait ici très bien les choses.
Le 01/06/2015 à 15h 34
Non, ce sera au Conseil constitutionnel (le Conseil d’état c’est avant la loi, c’est un peu particulier pour ne pas dire incestueux…).
Le 01/06/2015 à 15h 27
Certes, mais d’ores et déjà il est évident que le Conseil constitutionnel, indépendamment du jugement du Conseil d’état, va regarder cette question et les arguments qui ont été développés.
Le 01/06/2015 à 15h 21
Sur ce coup là le gouvernement ferait mieux de lever l’urgence parce que les effets en cascade pourraient ne pas être tristes…
PS : faut pas le prendre mal, mais il y a vraiment beaucoup de typos dans l’article.
Données de connexion : interview de Me Spinosi, avocat de la Quadrature, FDN et FFDN
02/06/2015
Le 02/06/2015 à 12h 52
Pourtant les journalistes se sont pas mal mobilisés, bien sûr notre Marc national mais il y eu aussi une journée complète en accès libre sur Médiapart, des articles très complémentaires sur Rue89 par Andréa Fradin, Le Monde et Libération n’étaient pas en reste, etc.
En revanche, comme d’habitude, il ne fallait rien attendre d’un journal télévisé, déjà sur un sujet simple… alors avec un texte très complexe juridiquement et techniquement, je suis content de ne plus avoir de télé.
Le véritable problème, c’est qu’en moyenne tout le monde s’en fout et « si c’est pour lutter contre le terrorisme, alors… ».
Le seul problème c’est que des exégètes amateurs ont quand même réussi à faire suffisamment de bruit pour que le président de la République s’engage publiquement à déferrer le texte devant le Conseil constitutionnel, à ce qu’un groupe de députés le fasse aussi et coïncidence calendaire, le Conseil d’état pourrait être de la partie ! Autrement dit, la com’ bien huilée du gouvernement et la simple formalité d’enregistrement initiale est en train de se transformer en calvaire qui sera long et à l’issue incertaine.
Ça ne m’étonnerai pas que les « baveux » en remettent une bonne couche, ils sont cruels.
Le 02/06/2015 à 11h 03
Même si ce n’est généralement pas déterminant, il y a quand même de plus en plus de barbus (et de barbues, faut respecter la parité) auditionnés à l’Assemblée ou au Sénat. Or, la loi ne se fait pas dans l’hémicycle, c’est trop tard. Donc être invité en amont c’est un progrès significatif.
Maintenant, le poids des journalistes qui relayent (la plupart) servilement la com’ gouvernementale ou des avocats qui peuvent complètement bloquer la justice reste et restera sans commune mesure.
Le 02/06/2015 à 07h 54
Ah ok ! Comme je l’ai écrit hier c’est en train de se transformer en bourbier : simultanément le parlement le CC, le CE et le gouvernement au milieu, ça va être la saga de l’été !
Le 02/06/2015 à 07h 47
J’ai du mal à comprendre la dernière phrase : dans quelles circonstances le CE pourrait contredire le CC ? Si après la saisine, le CC ne trouve rien à redire sur les « informations et documents », il y a alors autorité de la chose jugée et ce, en dernier recours " />
Affaire Bluetouff : la Cour de cassation consacre le vol de fichiers informatiques
22/05/2015
Le 22/05/2015 à 13h 48
Tout jugement porte en préambule : « Au nom du peuple français »…
Le 22/05/2015 à 09h 36
Ces documents ne sont accessibles qu’aux parties au procès.
Le 22/05/2015 à 09h 21
Lis l’arrêt, tu trouveras les moyens soulevés par la défense dans le pourvoi qui s’appuient en particulier sur les procès verbaux. Mais là on est en cassation, donc c’est la forme qui est examinée, et la cour ne considère pas qu’en appel il y a eu une erreur d’interprétation du droit.
Le 22/05/2015 à 08h 55
Un jugement c’est public et Marc l’a joint à son article :
« […] que le prévenu a parfaitement reconnu qu’après être arrivé par erreur au coeur de l’extranet de l’ANSES, avoir parcouru l’arborescence des répertoires et être remonté jusqu’à la page d’accueil, il avait constaté la présence de contrôles d’accès et la nécessité d’une authentification par identifiant et mot de passe ; qu’il est ainsi démontré qu’il avait conscience de son maintien irrégulier dans le système des traitement automatisé des données visitées où il a réalisé des opérations de téléchargement de données à l’évidence protégées,[…] »
Voilà à mon avis le point litigieux du raisonnement (en gras).
Le 22/05/2015 à 08h 43
Le 22/05/2015 à 08h 24
Le 22/05/2015 à 08h 05
Le 22/05/2015 à 07h 24
Ce qui est étonnant c’est que l’ANSES, en tant qu’OIV, n’est pas été condamnée pour défaut de sécurisation. Quant à déterminer si lorsque l’on récupère un fichier librement accessible, on peut avoir conscience de ce que l’administrateur du serveur voulait faire, ça bat à plate couture les algorismes de Cazeneuve.
Le 22/05/2015 à 06h 58
Pour l’électricité il y a un article spécifique dans le code pénal : L.311-2 (de mémoire) : « La captation frauduleuse d’énergie est assimilée au vol », toutefois, je ne sais s’il est postérieur à 1912 ; or, pour ce qui est des fichiers informatiques il n’y a rien de franchement aussi explicite.
Dès lors le principe constitutionnel comme quoi le pénal est d’interprétation stricte l’emporte sur ce raisonnement scabreux : le délit imputé n’est pas constitué. Pour l’aspect du maintien frauduleux, encore aurait-il fallu que l’accès le soit, ce qui n’a pas été démontré.
Bref, je rejoins knos " />
La France espère attirer des start-upers étrangers avec son « French Tech Ticket »
21/05/2015
Le 21/05/2015 à 13h 08
SAS(U) sous IS, tu précises dans les statuts que le président décide de sa propre rémunération et par magie :
Loi Renseignement : un risque de surveillance d’ampleur selon la CNIL
21/05/2015
Le 21/05/2015 à 08h 37
Les gens sont vraiment médisants. Les algorismes c’est un nouveau truc (ça ne date que du 9ème siècle) et ça va faire des miracles automatiquement. C’est parce qu’il n’y avait pas d’algorisme, même si les derniers tarés étaient déjà supposés faire l’objet d’une surveillance, que des attentats ont été commis en France. Et puis vous n’y comprenez rien et la presse raconte n’importe quoi.
Je suis fin prêt à demander un maroquin " />
Mozilla publie la version finale de son langage de développement Rust
19/05/2015
Le 20/05/2015 à 15h 31
À vrai dire moi non plus ! Le besoin est né parce que j’avais besoin de fiabilité et que malloc() / free() ne me convenaient pas et comme l’outil est permissif, l’implémentation était facile. Après j’ai ajouté des fioritures comme la possibilité d’enregistrer des destructeurs, non pas que je rechigne à utiliser des gotos (je fais même pire : setjmp() / longjmp() " />), mais plutôt pour créer une sémantique au dessus de C qui me convienne pour mon application.
Maintenant, je ne vais pas prétendre que c’est la panacée et que c’est le truc qui va sauver des chatons, mais dans mon cas j’arrive à un bon résultat, le code est plutôt propre et surtout très fiable, au final c’est ce qui compte et si ça fait fumer les processeurs, c’est encore mieux !
Le 20/05/2015 à 14h 53
Bonne question. Toute allocation mémoire dans le pool est testée au niveau le plus bas et donne lieu à fatal(), pas de récupération d’erreur possible, mais j’ai un mécanisme de régulation de la consommation mémoire avec seuil qui fait que quand la queue principale (en fait c’est plus compliqué) est trop remplie à mon goût, la production de données est interrompue le temps que la queue se vide.
Donc push_pull_dtor() alloue une cellule de liste chaînée dans le pool et peut très bien échouer mais comme, généralement j’arrête de continuer d’allouer de la mémoire lorsque j’ai atteint 20 Go (sur 32 Go + 32 Go de swap) et que j’attends de pouvoir recycler la mémoire qui passe en free list, ce cas de figure ne s’est jamais présenté.
Pour l’aspect explicite, ça demande un peu de rigueur, mais c’est vrai de chaque ligne de code, non ;-) ?
Le 20/05/2015 à 14h 41
Pas exactement dans la mesure où le pool prend en charge nativement les allocations mémoires, j’ai juste ajouté la possibilité d’enregistrer dans la foulée des destructeurs pour faire des choses plus spécifiques si besoin est. Après c’est un appel effectivement explicite, mais il n’y a pas à gérer de multiples points de sortie donc à l’usage ce n’est pas franchement contraignant.
Enfin, pour l’allocation mémoire, contrairement à un compilateur qui ferait automatiquement des delete unitaires sur les objets, je travaille sur des blocs de 40 Mo ou de 16 Mo ce qui fait que je n’ai pas à faire une myriade d’appels systèmes sous mutex quand je détruis un pool, mine de rien ça se sent dans un programme qui fait des milliards d’allocations / désallocations.
Le 20/05/2015 à 14h 08
Désolé mais je ne programme pas comme ça en C, chez moi ça donne ça :
FILE f1 = NULL , f2 = NULL;
pool = alloc_pool (POOL_DEFAULT) ;
if (! pool)
return -1 ;
f1 = fopen (“blabla.txt”, “r”) ;
f2 = fopen (“blabla2.txt”, “r”) ;
pool_push_dtor (pool, close, (void *) f1) ;
pool_push_dtor (pool, close, (void *) f2) ;
res = …
// Erreur ou pas, on libère toutes les ressources qui sont dans la portée et associées au pool
reset_pool (pool) ;
free (pool) ;
return res ;
Un seul point de sortie (sauf erreur triviale détectée avant l’allocation de ressource) et un minimum de code explicite, il faut juste un peu de rigueur, mais nul besoin d’empiler des gotos, et dans le pool on peut mettre bien sûr la mémoire allouée mais aussi des fonctions spécifiques appelées avec un pointeur sur le contexte.
Le 20/05/2015 à 13h 35
Avec un lien ça aide, donc le voici RAII. Du coup je réalise que je fais du RAII dans mon code C mais ça s’appelle un pool et il y a aussi des destructeurs associés, donc le côté killer feature en tant que propriété intrinsèque et exclusive de C++ m’échappe.
(edit)Argh : affreuse faute(/edit)
Le 20/05/2015 à 13h 22
Bon, il y a certains aspects qui ne sont pas suffisamment explicites et c’est probablement de ma faute. Déjà je précise que mon patron c’est moi et que donc j’ai aussi en tête les contraintes commerciales.
Les 2100% de gain par rapport à ce qui existe ne sont pas le seul fait de l’optimisation du code, mais avant tout de la conception, de l’architecture et le choix du bottom-up, tout cela est cohérent et permet de mettre un tour de vis sur l’optimisation parce qu’en bottom-up on commence par les tests unitaires - moment privilégié pour optimiser - et surtout ne plus avoir à se poser des questions après parce que ça rame.
Pour l’assembleur, certes, la portabilité en prend un coup, mais déjà des contraintes impliquent de travailler en 64 bits et par ailleurs une version strictement C du code assembleur peut être activée en recompilant. Simplement c’est un plus qui n’a pas coûté trop cher et qui apporte réellement quelque chose de perceptible.
Sur les bugs j’avais prévenu ;-) il y a surtout beaucoup de rigueur et des tests unitaires (encore une fois en bottom-up c’est presque par construction) ; bien sûr que j’ai eu des core dumps et que j’ai passé du temps dans des débugueurs, mais pas tant que ça par rapport à d’autres projets parce que je me prends pas d’un seul coup toutes les couches à la fois. Sur un jeu d’essai ridicule (moins de 0,05% des données à traiter) Valgrind dit ça :
==6199== HEAP SUMMARY:
==6199== in use at exit: 0 bytes in 0 blocks
==6199== total heap usage: 1,813,792 allocs, 1,813,792 frees, 786,799,125 bytes allocated
==6199==
==6199== All heap blocks were freed – no leaks are possible
Pourtant c’est du C et de l’assembleur avec des pointeurs partout et on peut quand même faire des choses très propres avec.
Dans ce projet il ne s’agit pas simplement d’ajouter de la valeur, mais de créer de la valeur (en mode rupture), donc l’approche projet type corporate bullshit m’indiffère. Question d’objectif.
Le 20/05/2015 à 12h 09
Hum… pour le côté pro et intérêt c’est justement pour cela que c’est fait. T’as un programme qui met 81 heures à s’exécuter et un autre qui met 3h45, qu’est ce que tu préfères déployer chez un client (surtout si ça implique un déplacement et que le programme peut se casser la gueule si la machine du client n’est pas suffisamment musclée et refroidie) ?
Sur 23000 lignes de code, j’ai 300 lignes d’assembleur, tout le reste en C ; certes coder en assembleur c’est pas très productif surtout avec le temps passé à faire du profiling sur différents types de processeur, mais ce n’est pas significatif alors que le gain lui, est nettement perceptible.
Sur l’aspect bug, vu la quantité de données, le nombre de threads, de sections critiques, les pré-conditions et post-conditions et invariants, je vais être prétentieux mais le code est extrêmement fiable, ce n’est pas que du fait de l’outil mais de celui qui l’utilise, on a tendance à l’oublier.
Quant à utiliser une machine beaucoup plus puissante c’est aussi prévu mais ça viendra en plus. La petite différence avec un « bon » chef de projet, c’est que l’objectif n’est pas de pouvoir dire « j’ai tenu les délais et suis dans le budget alloué », mais plutôt d’innover et de rendre possibles de nouvelles choses. Ça se passe aussi (pas assez) comme ça dans le monde pro.
Le 20/05/2015 à 11h 48
Le 20/05/2015 à 10h 36
Le 20/05/2015 à 07h 43
Le 19/05/2015 à 17h 41
" /> Bah oui, travailler sur un micro-contrôleur 32 bits avec 4 ko de RAM et 16 ko de FLASH, c’est sûr qu’en Java, Python ou n’importe quel truc à la mode ça va être du tonnerre " />
Le C colle au système / architecture avec un niveau d’abstraction suffisant pour la portabilité - quand cela est souhaité -, on peut faire avec du code de bootstrap de quelques octets sans connaître l’assembleur du processeur cible !
Mais bon c’est vrai qu’il n’y a pas de collecteur d’ordures (GC) d’intégré et qu’il faut savoir ce que l’on fait, mais c’est un métier aussi, on a tendance à l’oublier.
Le 19/05/2015 à 13h 13
Désolé, je suis resté à C++ 1.0, en particulier les templates sont encore pires que le préprocesseur et cela a contribué à mon dégoût pour ce langage et en particulier pour les libs. Maintenant « inliner » la fonction de comparaison c’est du gagne petit comparé au principe de localité (en gros maintenir les données utiles en cache L1/L2/L3).
Sur mon application, par rapport à ce qui existe, j’ai un gain de 20, donc j’imagine que le travail de conception et d’optimisation n’a pas été inutile, mais en même temps quand on arrive à dépasser 64 Go de mémoire utilisée (physique et swap) on cherche vraiment la petite bête dès le début, d’où une conception en bottom-up. Maintenant, au risque de me répéter, tout dépend de l’application et des contraintes.
Le 19/05/2015 à 12h 48
" /> Oui, mais c’est pas le cas du code assembleur !
Le 19/05/2015 à 12h 37
Merci, c’est intéressant. Maintenant entre l’inline et l’appel de fonction c’est pas un secret, d’ailleurs c’est un gros reproche que l’on peut faire aux TMV (tables de méthodes virtuelles) en C++, non ?
Donc, voici le code C, pas vraiment subtil, de recherche dans un Btree :
extern inline sw_item_t sw_rb_tree_search (sw_rb_tree_t tree, sw_item_t * item)
{
register sw_rb_node_t * node ;
int cc ;
node = tree->root ;
while (node)
{
cc = (* tree->cmp) (& node->item, item) ;
if (! cc)
return & node->item ;
if (cc < 0)
node = node->links [SW_RIGHT] ;
else
node = node->links [SW_LEFT] ;
}
return NULL ;
}
(Note : c’est en inline quand même, alors qu’en assembleur il y a le coût de l’appel de fonction mais négligeable par rapport au gain apporté). Si en C++ on peut faire mieux, ça m’intéresse mais comme j’ai aussi ma version assembleur, j’en doute…
Le 19/05/2015 à 11h 54
Oui, l’assembleur n’est pas portable, c’est un choix qui dépend de l’application et des contraintes. Maintenant reste à savoir s’il faut mettre en avant le confort (tout relatif) du développeur ou la performance d’une application dans un contexte donné.
Le 19/05/2015 à 11h 49
Recherche dans un Btree (un red black tree), en C : indice (durée) 1, en ASM : 0,60 en utilisant en particulier la mise en cache (prefetcht0, prefetchnta), l’optimisation de l’anticipation de saut, l’alignement de boucle pour le décodeur d’instruction, …
J’ai juste 300 lignes d’assembleur pour un total de 23000 lignes (essentiellement en C) dans mon appli, certes ça coûte très cher à écrire mais au final ça le vaut largement. Maintenant il y a aussi d’autres aspects : conception en bottom-up, tests intensifs en particulier profiling mais bon quand il faut gérer plus de 4.10^9 objets complexes il faut aussi y mettre les moyens.
Le 19/05/2015 à 11h 26
C’est clair que si tu écris strcmp() ou strlen() en C++ pur ça va être plus rapide que la libc GNU (hint : c’est écrit en assembleur). Principe de localité, SSE, … le nombre de trucs que l’on peut pervertir pour obtenir un gain de 30 - 50% avec des astuces monstrueuses, c’est le propre de l’être humain, accessoirement c’est rigolo.
Le 19/05/2015 à 11h 18
LOL ! T’as déjà regardé le code généré par un compilateur C++ et les trucs qu’il fait dans ton dos ? Quand c’est trop lent en C (compilé avec gcc en -O3) je passe en assembleur et j’ai un gain significatif ; mais en général C est satisfaisant et avec de l’expérience tu as une idée du code qui est créé.
Maintenant en fonction des contraintes, tel ou tel langage peut être plus adapté à une situation, mais pour du code très rapide c’est C + ASM et surtout un (des) très bon(s) développeur(s).
Loi renseignement : une faille pour saturer la CNCTR
12/05/2015
Le 12/05/2015 à 08h 06
« (…) notamment par leur nombre, leur caractère répétitif ou systématique. »
Exact, mais si, ne serait-ce que 10% des personnes qui utilisent un VPN ou un service chiffré en ligne font chacune une seule demande - ce qui ne peut pas être qualifié d’abusif -, la CNCTR va quand même avoir un backlog de plusieurs années, ou alors ça sera de l’abattage mais ça ne serait pas très sérieux " />
Loi Renseignement : qui a voté quoi
06/05/2015
Le 06/05/2015 à 11h 47
Bonne idée ! Allez : « Le fait de tenter d’influencer un parlementaire par voie de communication électronique ou téléphonique est puni de 3 ans de prison et de 375000 € d’amende. »
Hop direct code pénal puis on ajoute au #PJLRenseignement une huitième clause (encore que ça peut rentrer comme atteinte à la forme républicaine), boum sur écoute, la boîte noire balance direct au procureur à cause du 40 CPP, et au gnouf " />
Le 06/05/2015 à 11h 03
Pour information OVH va faire un communiqué en fin d’après-midi sachant que ses datacenters sont en France mais aussi au Canada et qu’au Canada une loi du même type est en train d’être votée…
Le 06/05/2015 à 09h 12
Suggestion pour NXi : faire une revue de presse internationale sur la perception de ce texte à l’étranger et l’impact probable sur l’économie numérique française (il y a déjà à lire sur ce sujet).
[Interview] Christian Paul (PS) explique son abstention sur le projet de loi Renseignement
05/05/2015
Le 05/05/2015 à 23h 30
C’est un peu triste parce que j’ai l’impression que beaucoup ici passent à côté de l’essentiel. Le vote global c’est presque du détail, le travail important dans le cas d’un projet de loi c’est de remodeler le texte par des amendements, de travailler au niveau de l’article et pas de la loi en une seule entité (vote solennel).
Si un article au final n’est pas satisfaisant il est possible alors de voter contre.
Dans une procédure en urgence c’est d’ailleurs la meilleure stratégie : blinder d’amendements un article qui pose problème et en dernier lieu voter contre l’article si celui-ci n’est toujours pas satisfaisant ; cela force alors le gouvernement à le réécrire puis à le réintroduire au Sénat en version généralement édulcorée.
Or, pour ce texte il y a eu très peu de députés vraiment actifs et combatifs en séance (grosso modo 5 avec une pile d’amendements) et quelques figures qui se voudraient médiatiques qui ont fait acte de présence ou du hors sujet.
Donc relisez les débats tels que transcrits officiellement par l’Assemblée nationale et faites vous une idée au regard des explications de M. Paul, il y a du contraste, enfin c’est mon appréciation.