La Vache En Liberté

26 janvier 2021

Lis te des expressions françaises

Ce site https://www.expressio.fr/ contient environs 5000 expressions.

Je les ai extraites avec un court descriptif, pour un usage hors-ligne. Par exemple regrouper les expressions pour dire mourir ou tuer ! liste_expressions

Beaucoup ne présentent d'intérêt que pour un non francophone ou pour la traduction.

y rester mourir ; être tué ; être anéanti

Depuis sa 3ème édition de 1740, le Dictionnaire de l'Académie Française donne, pour un homme qui a été tué sur le champ de bataille, "Il y est resté" :

LangueExpression équivalenteTraduction littérale
Anglais kick the bucket casser sa pipe

 

peu ou prou 

plus ou moins ; un peu ou beaucoup ; dans une faible mesure ; très peu ; environ ; à peu de choses près

Origine et définition

Attention ! Cette expression ne vient pas de la marine ! Car il ne faut pas confondre avec 'peu ou proue' qui n'existe pas et ne voudrait rien dire.
Nous savons tous que 'peu' veut dire "pas beaucoup" ou "en faible quantité".
Qu'en est-il de 'prou' ?
Cet adverbe qui signifie 'beaucoup' ou 'assez' et date du XIIIe siècle, vient du nom 'prou' qui voulait dire 'profit'[1].
Au XVIIe siècle, on disait "avoir prou de quelque chose" pour dire qu'on en avait beaucoup.
Depuis, le mot est tombé en désuétude et n'est plus utilisé que dans notre expression apparue vers 1600, alors qu'un peu avant, on disait "ni peu ni prou" pour dire "ni peu ni beaucoup".
[1] Jean de la Fontaine, dans "le paysan qui avait offensé son seigneur" () écrivait :
« Or buvez donc, et buvez à votre aise ;
Bon prou vous fasse ! Holé, du vin, holé ! »

Exemples

« Quand le moment est venu de payer, voyez-vous, ça sent toujours le voleur peu ou prou, comme on dit (…) »
René Boylesve - L'enfant à la balustrade

Posté par Luc Fricot à 19:50 - - Permalien [#]
Tags : ,

22 janvier 2021

Les vaccins à ARNm susceptibles de modifier notre génome, vraiment ? (source Inserm)

Les vaccins à ARN contre la Covid-19 suscitent de nombreuses questions. Sur quoi se fonde cette technique ? Quels sont les avantages et les limites ? Pour couper court aux fausses infos et répondre aux interrogations, Canal Détox fait le tour de la question.

.../...
Parmi les avantages associés aux vaccins à ARN, on compte notamment leur rapidité de développement. En effet, une grande partie du processus de développement et de manufacture des vaccins traditionnels se trouve éliminée. Il est par exemple possible d’éviter tout le travail de production des virus vivants atténués, inactivés ou recombinants à injecter aux patients ou encore de purification des protéines virales. En outre, les molécules d’ARN sont plus simples que des protéines virales : synthétisées par voie enzymatique, elles sont plus rapides à produire.

Par ailleurs, le fait de ne pas s’appuyer sur des virus entiers et de ne pas utiliser d’adjuvants dans le développement de ces vaccins, mais simplement des molécules d’acides nucléiques, signifie également que ces vaccins sont mieux tolérés par l’organisme. Ces molécules d’acides nucléiques vont jouer un double rôle : exprimer la protéine virale et stimuler le système immunitaire sans adjuvant chimique.
.../...
Par ailleurs, l’injection est locale et les cellules qui reçoivent l’ARN codant pour la protéine Spike sont principalement les cellules musculaires : en aucun cas l’ARN ne va jusqu’aux cellules des organes reproducteurs (les gonades). Il ne peut donc pas être transmis d’une génération à l’autre.

Enfin, les cellules produisant la protéine Spike suite à l’injection du vaccin sont rapidement détruites par le système immunitaire. L’ARN étranger ne reste donc pas longtemps dans l’organisme : il produit juste ce qu’il faut pour entraîner le système immunitaire à réagir en cas d’infection « naturelle » par le virus avant d’être éliminé.
Voir presse.inserm.fr

Posté par Luc Fricot à 12:17 - Permalien [#]

11 janvier 2021

Grippe aviaire : «On a créé des bombes biologiques qui nous pètent au nez»

Par Cyrille Pitois, envoyé spécial à Mugron (Landes) 10 janvier 2021 à 19:46

La colère gronde dans le Sud-Ouest, où les éleveurs sont confrontés à une épidémie du virus H5N8. Depuis son exploitation familiale, Serge Mora pointe la responsabilité des techniques de production intensive et le manque de réactivité de l’Etat.

Sur les coteaux de la Chalosse, dans le sud du département des Landes, l’agriculture n’est pas une sinécure. Exploitations morcelées, terrains en pente, exposés aux coups de vent océaniques, terres ravinées par les fortes précipitations, sécheresse en été… L’élevage du canard s’est progressivement fait une place de choix. Chez Serge Mora, 2 500 bêtes battent des ailes en plein air, sous le pâle soleil d’hiver. Dans les vastes enclos aussi appelés «parcours», le palmipède gambade et passe au distributeur de nourriture à volonté. Avant d’être gavé sur place au grain à l’âge de 100 jours. Un élevage paisible mais exigeant : gaver les 300 canards en phase d’engraissement réclame deux heures le matin et autant le soir, dimanches inclus. «Ici, l’élevage bovin n’est pas rentable. On s’est tous jetés dans l’élevage hors-sol, se souvient Serge Mora. Au point d’arriver à une densité énorme. Dans certaines communes d’à peine 1 500 hectares, on a totalisé jusqu’à 200 000 canards [chiffres de 2017, ndlr]

C’est le soir du 31 décembre que Serge Mora a découvert le premier canard mort chez les plus jeunes de ses pensionnaires, les plus exposés à la charge virale. «J’ai dit à mon fils : "Demain, on aura les étrennes !"» Depuis, chaque jour apporte son lot croissant de cadavres. C’est la troisième fois en cinq ans qu’un foyer de grippe aviaire prend ses quartiers dans cette ferme tranquille, qui nourrit ses animaux essentiellement avec le maïs, le soja ou le tournesol produits sur place.

Troisième vague

Six jours plus tard, après envoi de prélèvements au laboratoire départemental puis au laboratoire de l’Agence nationale de sécurité sanitaire de l’alimentation de l’environnement et du travail (Anses) à Ploufragan (Côtes-d’Armor), le résultat est arrivé par courrier recommandé : l’exploitation est bien touchée par le H5N8, autrement dit le virus de la grippe aviaire. L’ensemble des canards sera abattu la semaine prochaine.

«Touchés ou sains, ils sont tous condamnés. On continue de les nourrir quand même», souffle Julien, le fils de Serge Mora, le regard perdu au-dessus des palmipèdes non infectés qui continuent leurs interminables randonnées. «Quarante-huit heures après avoir découvert le premier malade, on aurait pu abattre, avec l’aide du vétérinaire et 660 injections létales, les canards de trois semaines. On aurait éteint l’incendie avec un seau d’eau, et on aurait pu garder les bandes plus âgées. En respectant la procédure, cela dure deux semaines et il faut les Canadair. Ce matin, on est à 360 morts et on nous laisse là. C’est un spectacle crève-cœur pour un paysan», déplore Serge Mora. Il parvient à plaisanter : «C’est vrai que je n’ai que quarante-trois ans d’expérience ! Pendant plus de trente-cinq ans, avec mon épouse, nous avons développé une exploitation qui est passée de 15 à presque 70 hectares et nous a permis de financer les études de nos enfants, de dégager un revenu sans jamais prendre de vacances.» Et voilà la troisième vague de grippe aviaire en cinq ans, avec son lot de séismes pour les finances de l’entreprise, de désastre psychologique et de questions sur le modèle de la filière que le fils, Julien, devra continuer à faire évoluer. Ou pas.

A lire aussiDes aides pour les élevages qui battent de l’aile

Serge Mora est président du Modef des Landes, le syndicat agricole qui défend les exploitations à dimension familiale. «La contamination par le passage des oiseaux migrateurs, c’est une fable. La propagation vient bien davantage des migrateurs sur roues», sourit-il. Il vise les camions qui livrent de ferme en ferme les aliments et les jeunes canards qui vont y être élevés et gavés. «Chaque exploitation s’étant spécialisée, des canards font 150 à 200 km en camion pendant leur courte vie de 120 jours.»

Dans le modèle familial d’il y a une trentaine d’années, le canard arrivait à la ferme âgé d’un jour. Il en repartait sous forme de conserve ou de produit frais, après élevage, gavage, abattage et transformation sur place. Une vie sédentaire qui évitait de faire intervenir des équipes de vaccination, des équipes de ramasseurs et des transporteurs. «La multiplication des intervenants fait augmenter le risque de défaut du respect des mesures sanitaires», reprend Serge Mora. Autre facteur aggravant : la densité de la population de canards sur ce petit bout de territoire, avec parfois moins de 200 mètres de distance entre les exploitations. «Au lendemain de la crise de 2016, les autorités sanitaires ont alerté sur cette densité, se souvien-t-il. La profession en a pris acte en réclamant de l’argent public pour investir dans de vastes bâtiments. L’idée, c’était de mettre les animaux à l’abri. Mais du coup, on en a profité pour augmenter encore la population ! Les accords de désintensification n’ont jamais été respectés.»

«Air contaminé»

Serge Mora sait bien qu’il sera difficile de revenir en arrière. Le canard de plein air se vend principalement sur les marchés, dans les épiceries fines et auprès des particuliers. Et il en manque pour satisfaire la demande. Tandis que les gros transformateurs, eux, peinent à écouler leurs produits, particulièrement cette année, en raison de la fermeture des restaurants.

L’enfermement de ses animaux ne lui inspire rien de bon : «Au kilo d’animal, le canard consomme plus d’air qu’un cheval. En l’enfermant, on est obligé de mettre des extracteurs d’air puissants et on balance l’air contaminé dans la nature. Avec trois fois plus de précipitations qu’à Paris et des vents dominants d’ouest de plus en plus soutenus, c’est un brumisateur permanent qui diffuse les virus éventuels. On a créé des bombes biologiques qui nous pètent au nez.»

Julien, le fils, qui revient aux commandes de l’exploitation après un parcours de salarié à l’extérieur, se pose des questions pour l’avenir de la ferme. Il ébauche une solution : «Faire la pause en décembre après le gavage de la dernière bande et ne reprendre des canetons qu’en février, quand le risque aigu d’épizootie sera écarté. Cela fait trois à quatre mois sans production, mais on n’est pas forcément perdant à la fin de l’année si on ne s’est pas endetté dans des bâtiments.» A étudier, sans savoir a priori si la recette est viable. «Si les faits sont têtus et que je n’y arrive pas, je ne m’entêterai pas. Je n’ai pas choisi ce métier pour vivre de subventions.»

Posté par Luc Fricot à 19:35 - Permalien [#]
Tags : ,

09 janvier 2021

Qwant : les maux clés

Lancé en 2013, vite pressenti comme une pépite technologique en devenir, le moteur de recherche français n’a pu tenir ses promesses. Au pied du mur, il doit désormais se réinventer afin de se démarquer de ses concurrents dans un marché ultradominé par Google.

«Peu de gens ont conscience de la complexité que représente le développement d’un moteur de recherche. On est en bas du mont Ventoux et l’erreur est d’avoir survendu Qwant. Nous demandons de la patience.» Le ton, mea culpa et profil bas, est à l’image du nouveau visage cultivé depuis un an par l’unique moteur de recherche français et européen, lancé en 2013 sans avoir jamais vraiment décollé auprès du grand public malgré sa promesse vertueuse : «Le moteur qui respecte votre vie privée.» Sous la houlette de son patron, Jean-Claude Ghinozzi, un «opérationnel» au profil marketing passé par Microsoft et arrivé chez Qwant à l’été 2017, cette alternative jusqu’ici lilliputienne à la toute-puissance du roi Google n’a plus que ce mantra à la bouche : se recentrer sur son outil de recherche maison. Une gageure pour un site encore largement «motorisé» aujourd’hui par Bing, l’outil de recherche du géant américain Microsoft, avec lequel il a noué un partenariat longtemps tu et même nié, ce qui a fortement entaché sa réputation. Dans un souci de transparence inédit, Qwant a d’ailleurs reconnu le mois dernier que l’index qui se cache sous son capot n’est capable de répondre «en totale autonomie» qu’à 40 % des requêtes de ses utilisateurs…

Mais en se concentrant sur ce seul usage qui constitue la porte d’entrée sur la Toile pour 65 % des internautes, Qwant espère encore, sept ans après le lancement de sa première version bêta, honorer sa promesse de mise au point d’un outil de recherche en ligne aussi performant que réellement souverain et respectueux des données de ses utilisateurs. Un défi colossal pour une entreprise qui rame à se défaire de son étiquette de canard boiteux dans le microcosme de la tech française, où ils sont nombreux à n’y voir qu’un vaste enfumage doublé d’une gabegie d’argent public.

Chez Qwant, ce qui est présenté comme le nouveau départ d’un «Phœnix» - le nom de code dont les développeurs ont baptisé la nouvelle version du moteur prévue d’ici à l’été - renaissant de ses cendres a débuté il y a un an, en janvier 2020. Sous la pression des actionnaires, qui exigent son départ comme préalable à toute recapitalisation, le PDG et cofondateur de l’entreprise, Eric Léandri, est débarqué manu militari. La fin de la période «open bar» dont Qwant, devenu l’étendard anti-Gafa choyé par la macronie, a usé et abusé, s’éparpillant dans des déclinaisons tous azimuts de la marque (Qwant Music, Qwant Causes, Qwant Sports, Qwant Pay, etc.), en singeant à son petit niveau la démesure des géants du numérique. Sauf qu’en 2019, le moteur de recherche, qui promettait 15 millions d’euros de chiffre d’affaires, n’en avait réalisé que 5,8 millions, creusant ses pertes à un niveau record de plus de 20 millions d’euros. Le tout pour une part de marché de 1 %, microscopique face au titan Google qui truste aujourd’hui plus de 90 % des recherches internet en France. 

Chute libre

Un an plus tard, où en est-on de la nouvelle stratégie de «monétisation» du moteur, qui était censée mettre fin à l’hémorragie et permettre à l’entreprise d’atteindre l’équilibre à l’horizon 2021 ? «Le Covid est passé par là et a compliqué nos plans, amputant notre chiffre d’affaires d’au moins 25 % par rapport à ce qui était escompté», plaide Jean-Claude Ghinozzi, qui fait valoir que la situation ne s’est pas «aggravée». «Notre modèle, basé sur la vente de mots clés mais sans aucun traçage des internautes, a prouvé sa pertinence dans un marché de la publicité numérique qui a reculé de 10 % au total en 2020, poursuit-il. On n’a certes pas atteint nos objectifs, mais l’audience et l’activité ont bien progressé et sans la crise, on était sur une tendance de plus 50 % d’une année sur l’autre.»

Après un printemps en chute libre, Qwant, qui restera en deçà des 10 millions d’euros d’activité pour l’année écoulée, se targue de l’avoir mieux terminée avec une progression de ses revenus de presque 50 % en décembre par rapport à décembre 2019. S’il a gagné des utilisateurs, le petit moteur français a aussi continué à afficher de lourdes pertes, de l’ordre d’1 million d’euros par mois. Les actionnaires ont dû remettre au pot l’an dernier : la Caisse des dépôts (CDC), 35 % des parts, a déjà investi plus de 30 millions d’euros depuis son entrée au capital en 2017, suivie par le groupe de presse allemand Axel Springer (20 %), fer de lance outre-Rhin de la croisade anti-Google.

Emmanuel Macron, alors ministre de l’Economie, a repéré dès 2015 ce qui devait devenir une pépite technologique française. Devenu président de la République et thuriféraire de la «start-up nation», il ne lâche pas Qwant et la puissance publique continue donc à soutenir l’aventure via la CDC. En contrepartie, la start-up doit resserrer les cordons de la Bourse. Les coûts ont ainsi été réduits depuis de 30 % à 35 %, en ramenant les effectifs de 145 personnes à une centaine. Les deux filiales d’Ajaccio (Qwant Music) et d’Epinal (Qwant Entreprise), ouvertes avec le soutien financier actif des collectivités locales, ont, elles, été fermées, ainsi que la dizaine de sociétés créées pour décliner la marque. Il n’en reste plus que trois en comptant les deux filiales «dormantes» d’Italie et d’Allemagne, ses deux autres principaux marchés, en plus des trois sites hexagonaux (le siège parisien, Nice pour la recherche et développement et Rouen pour les serveurs).

«Il faut être lucide et faire des choix, on n’a pas les moyens de développer des suites de services comme l’ont fait nos grands concurrents qui peuvent investir à perte dans de nouveaux produits pendant des années dans une logique d’écosystème, explique Jean-Claude Ghinozzi. Notre priorité, c’est d’atteindre une taille critique, sans laquelle nous ne serons jamais rentables.» Seuls rescapés, le service Qwant Junior et l’outil de cartographie Qwant Maps, stratégique pour attirer de la publicité, qui ne stocke pas les données de géolocalisation. Une nouvelle version en sera dévoilée au printemps. En revanche, aucune date n’est plus évoquée pour un outil de mail, que Qwant compte toujours proposer, mais via un partenaire afin d’en limiter au maximum le coût.

«Google et les miettes»

Avec près de 5 millions de visiteurs uniques par mois, Qwant pointait à la quatrième place des moteurs de recherche dans l’Hexagone en termes d’audience en octobre selon Médiamétrie, à des années-lumière de Google (45 millions de visiteurs uniques) et loin derrière Yahoo et Bing. Une audience surtout liée à sa notoriété en France (75 % de l’activité de Qwant), mais qui représente donc moins de 1 % du marché archi-concentré de la recherche en raison d’une bien trop faible fréquence d’utilisation. Dit autrement, les usagers de Qwant sont trop peu fidélisés et ce n’est pas son installation comme moteur de recherche par défaut de l’administration française sur les ordinateurs des fonctionnaires depuis 2020, ou sur des parcs d’entreprises (l’assureur AG2R récemment), qui va radicalement changer la donne. «Ce sont des petits coups de pouce valorisants en termes d’image et de notoriété, mais il est impossible de savoir combien de ces utilisateurs gardent Qwant et surtout l’adoptent en dehors du bureau, témoigne un responsable informatique dans le service public. On ne va pas aller jusqu’à interdire Google pour donner sa chance à Qwant.» A ranger dans les petites victoires tout de même, Qwant a été choisi en 2020 par le chinois Huawei, leader mondial de la 5G et numéro 2 des smartphones derrière Samsung, comme moteur de recherche par défaut sur la gamme de téléphones P40. Le géant chinois a en effet été privé de Google pour cause de conflit avec l’administration américaine.

Mais le moteur français doit également faire face à la concurrence de «métamoteurs», qui surfent eux aussi sur la vague éthique de la protection des données personnelles. Ces derniers se contentent d’agréger les résultats d’autres sources de recherche, comme Bing, sans développer leurs propres technologies. Et dans une même logique de partage des revenus publicitaires, avec un reversement en moyenne de 20 % pour le fournisseur de technologies. Une stratégie moins coûteuse et moins risquée, susceptible d’être plus rapidement payante. «La seule question qui vaille aujourd’hui, c’est celle de l’apport technologique d’un Qwant en termes de qualité de service par rapport à des moteurs comme Ecosia, qui met en avant l’écologie en plantant des arbres, ou DuckDuckGo», explique un observateur du secteur qui rappelle qu’en matière de recherche, «il y a Google et les miettes». Or cela n’a rien d’évident pour l’utilisateur.

«C’est trop tard»

«Qwant n’apporte rien de vraiment novateur par rapport aux autres moteurs et essaie simplement de faire ce que faisait Google il y a dix ans, les moyens en moins», poursuit-il. Et le Petit Poucet français ne se différencie du géant américain «ni dans la qualité ou la présentation des résultats, ni dans le respect des données personnelles». Verdict de ce spécialiste : «Dire que l’on s’appuie sur ses propres technologies n’a aucun intérêt si elles n’apportent aucune rupture et innovation par rapport à ce qui se fait ailleurs. C’est juste une posture politique et cela ne fait pas une stratégie dans un marché ultraconcurrentiel et figé depuis longtemps.» Bref, Qwant «avait peut-être une carte à jouer il y a dix ans, mais maintenant c’est trop tard».

Pour devenir bénéficiaire, Qwant doit pourtant à la fois doubler son chiffre d’affaires et atteindre les 12 ou 13 millions de visiteurs uniques par mois, reconnaît son équipe dirigeante, entièrement remaniée l’an dernier. Plus de la moitié du chemin reste donc à parcourir. Cela nécessitera une nouvelle levée de fonds de 20 millions d’euros en 2021 pour se rapprocher de cette autonomie technologique (l’objectif est de la porter à au moins 80 %) et poursuivre le développement à l’étranger. Comme en Allemagne, où le moteur prévoit de dépenser 10 millions d’euros en marketing pour se faire connaître. Qwant a déjà obtenu un report de remboursement d’un an de la Banque européenne d’investissement (BEI), qui lui avait octroyé un prêt de 25 millions d’euros en 2015. Et en fonction du succès de la levée de fonds, la nouvelle équipe prévoit d’embaucher des ingénieurs pour accélérer sur le plan technologique. Objectif : atteindre l’équilibre financier d’ici à fin 2021. Si le Phoenix renaît bien de ses cendres.

Posté par Luc Fricot à 12:17 - Permalien [#]
Tags : ,

29 décembre 2020

Dominique Costagliola, solide comme un doc

Par Eric Favereau et Cyril Zannettacci,

L’épidémiologiste, spécialiste du sida, est réputée pour sa solidité mathématique et pour son franc-parler qui rive leur clou aux «nuls».

Ils se sont donné le mot. Ces temps-ci, tous dressent le même portrait de Dominique Costagliola, épidémiologiste, spécialiste du sida, et depuis le printemps visage familier des médias sur le Covid-19. Pêle-mêle : «Dominique est cash», «Dominique est une très bonne professionnelle», ou encore : «Dominique est libre dans sa tête». Preuve de cet unanimisme, le professeur Jean-François Delfraissy synthétise : «C’est une femme de caractère et une scientifique extrêmement solide.» Et on pourrait rajouter, pour avoir relu la plupart de ses déclarations depuis six mois, qu’elle s’est très peu trompée, mêlant analyses documentées et prévisions mesurées. «Je ne parle que de ce que je connais», dit-elle.

Cash, donc. Oui, sans l’ombre d’un doute. Quand on l’interroge sur les politiques, cela peut tomber dru. «Leur rôle n’est, certes, pas facile, je ne les critique pas trop. Sauf Blanquer. Il ne dit que des bêtises, il répète qu’il ne se passe rien à l’école. Idiotie.» Bien sûr, elle a des propos carrés sur son meilleur ennemi, Didier Raoult : «Quand il parle d’épidémiologie ou de clinique, il n’y connaît rien. Ses données sont nulles.» Les laboratoires pharmaceutiques ? «Oui, j’ai des liens, et c’est voulu et déclaré. Cela me permet de faire des études. Et cela ne m’empêche pas de leur dire ce que je pense.» Et de citer un dernier exemple : «J’étais au board de Gilead. Lorsqu’à une réunion nous n’avons parlé que du produit de leur concurrent, j’ai dit ça suffit et j’ai tout stoppé.» Plus généralement : «Je réponds aux questions même gênantes, je trouve cela trop fatigant d’avoir deux positions différentes selon les interlocuteurs.» En tout cas, et certains s’en souviennent, Costagliola est capable d’assassiner quelqu’un lors d’une réunion si elle estime que ses propos sont «nuls». Car nulle, elle ne l’est pas.

Son père était militaire. Enfant, elle habite à Viry-Châtillon «dans une cité que l’on trouvait très luxueuse car on avait une salle de bains». Après de bonnes études, elle entre dans une grande école d’ingénieurs télécoms mais s’y ennuie. «J’étais frappée par le fait que tous les étudiants, ayant intégré cette école, se disaient que c’était arrivé, et n’avaient plus aucun projet.» Ce n’est pas son cas. Elle découvre, en fin d’études, les liens entre statistiques et biologie.

Compétente, ensuite. Dominique Costagliola est une travailleuse acharnée. «J’aime les chiffres», avoue-t-elle comme d’autres évoqueraient une passion pour les tableaux. On sent qu’elle s’entend bien avec eux. Elle les comprend, les amadoue, les caresse. C’est ce qu’elle a toujours fait : s’appuyer sur la rigueur des données pour avancer. Et cela marche. A deux reprises, elle a touché le graal. Son premier fait d’armes a été de démontrer, dans les années 90, que la contamination mère-enfant dans le sida se produisait majoritairement lors de l’accouchement. «Plus des deux tiers des problèmes ont lieu à ce moment-là», dit-elle. «C’était une sacrée info, car cela conduisait à lancer des actions de prévention», lâche-t-elle, encore émue. Plus récemment, elle a coordonné le grand essai français sur la prophylaxie pré-exposition (Prep) pour montrer qu’un traitement antirétroviral pouvait éviter une contamination lors d’une relation à risque. «Son travail de chercheuse est colossal», lâche, impressionné, un haut responsable de l’Institut Pasteur.

Ces temps-ci, elle fait donc l’unanimité. Parfois, on se demande s’il n’y a pas un petit désir de réhabilitation chez cette chercheuse jusqu’alors mal connue du grand public. «Non, pas du tout, réagit-elle, je n’ai pas le sentiment d’avoir souffert d’être une femme.» Elle cite le prix de l’Inserm reçu en 2013 puis, le top du top, le Grand Prix toujours de l’Inserm, ce mois-ci, sans oublier sa nomination à l’Académie des sciences.

Pour le reste, il faut avancer à tâtons. Lorsque l’on évoque ses liens familiaux, elle répond : «J’ai poussé un peu loin l’indépendance ou l’autonomie.» Elle vit seule. Son appartement est rempli d’objets, souvent asiatiques. Elle adore le musée Guimet, rêve de retourner au Japon. «Je vis très bien seule», insiste-t-elle pour clore le sujet. Ses amis ? Ils viennent souvent du monde associatif de la galaxie sida, comme l’ex-président d’Aides Bruno Spire, ou l’ex-responsable du Sidaction, Eric Fleutelot, qui nous dit : «On s’amuse beaucoup avec elle, en plus, quand je ne comprends pas quelque chose, elle m’explique tout !» Bien sûr, ajoute-t-il, «on parle de nourriture».

Ah la nourriture… c’est l’autre élément clé. Elle adore se faire des petits plats. Quand on l’interroge sur son surpoids, elle raconte : «C’est venu quand j’ai fait des crises de rhumatisme à 5 ans. J’ai été couchée pendant des mois, c’est sûrement lié aux médicaments que j’ai pris alors. Puis après j’ai fait une primo-infection à la tuberculose.» Mais n’est-ce pas handicapant ? «Ce n’est pas facile pour s’habiller.» Rien d’autre. Pendant le confinement, en tout cas, elle a détaillé à satiété les bons repas qu’elle préparait. «Je suis capable de me déplacer pour trouver tel ou tel ingrédient. C’est un vrai plaisir.» Avec une prédilection pour les plats japonais.

Voilà. Dominique Costagliola est un personnage attachant. Pour la suivre depuis près de trente ans au gré des congrès ou conférences sur le sida, on l’a vue se forger une place à part dans ce milieu somme toute assez narcissique. Elle est devenue incontournable, rare épidémiologiste à travailler efficacement avec des médecins souvent plus rêveurs qu’elle. Elle est comme un roc. Ne semble pas douter. Est-ce pour cela qu’elle peut faire peur aussi ? «Elle est sans filtre», note un infectiologue ami. On l’a vue encore récemment, en pleine crise du Covid-19, claquer la porte lorsque l’Assistance publique-Hôpitaux de Paris (AP-HP) a voulu trop vite communiquer sur les résultats d’un antirétroviral contre le Covid-19. Agacée par cette com à outrance, elle a démissionné sur le champ du comité de suivi. Elle est, ainsi, sans regret. Néanmoins, elle n’a pas été nommée professeure. Jalousie ? Crainte de son fort caractère ? Lorsqu’on lui demande si elle n’a pas eu peur du Covid-19 pour sa santé, la réponse fuse. «C’est vrai que j’ai plein de facteurs de risque. Au début, j’ai paniqué, et puis je me suis dit que bon j’allais mourir du Covid. Et de me le dire, cela m’a détendue.»

Politiquement, elle est de gauche, syndiquée aussi. «Mais qu’est-ce que cela veut dire, être de gauche aujourd’hui ?» lâche-t-elle. Il est hors de question qu’on la reprenne néanmoins à voter pour l’actuel président. La suite ? Pas de surprise. Travailler et travailler encore. Elle sera à la retraite à l’été 2021, mais elle en a repris pour cinq ans en dirigeant une vaste recherche sur le Covid-19 au niveau européen. De quoi nourrir sans limite son appétit scientifique.


1954 Naissance à Asnières.
1982 Chercheuse à l’Inserm sur la santé et l’épidémiologie.
1986 Travaille à temps plein sur le sida.
2013 Prix Recherche de l’Inserm.
2017 Membre de l’Académie des sciences.
Décembre 2020 Grand Prix de l’Inserm.

Posté par Luc Fricot à 15:25 - Permalien [#]

05 décembre 2020

Viande artificielle, pourJocelyne Porcher : «Il existe une autre voie, c’est l’élevage paysan»_

Ancienne éleveuse et sociologue à l’Inra, Jocelyne Porcher défend l’élevage à taille humaine et le retour à une relation plus consciente du consommateur avec l’animal qu’il mange. Elle s’oppose à la viande artificielle dans son dernier livre notamment, Cause animale, cause du capital (le Bord de l’eau, 2019).

«L’arrivée de la viande cultivée dans les nuggets est perçue par certains comme l’amorce d’un changement de paradigme alimentaire qui serait bénéfique à la planète, aux animaux et aux consommateurs. Pourtant, cette évolution n’a rien de révolutionnaire. Elle s’inscrit au contraire très logiquement dans la dynamique d’industrialisation de l’élevage entamée au XIXe siècle avec l’émergence du capitalisme industriel.

«Lorsqu’en 2011, Joshua Tetrick, alors président de l’entreprise Hampton Creek Foods (rebaptisée Eat Just à la suite de déboires judiciaires) affirmait : "Le monde de l’alimentation ne fonctionne plus. Il n’est pas durable, il est malsain et dangereux […], nous voulons créer un nouveau modèle qui rendrait le précédent obsolète", il témoignait clairement de ses intentions. L’objectif est bien de créer un nouveau modèle centré sur la production de la matière animale à partir d’animaux. Pour le bien commun, il serait, selon lui, maintenant préférable de produire la matière animale sans les animaux ou du moins à un autre niveau d’extraction. La cellule au lieu de l’animal entier. L’incubateur au lieu de la vache.

«Autrement dit, il s’agit de changer le processus de production et le niveau d’extraction mais pas le système de pensée sous-jacent qui reste le même, utilitariste et instrumental. L’animal est toujours réduit à son potentiel de production. Ce qu’exprime clairement Mark Post, pionnier des recherches sur la viande in vitro : "La viande in vitro de bovin est 100 % naturelle, elle grossit en dehors de la vache." Autrement dit cette dernière n’est qu’un contenant que l’on peut remplacer par un incubateur. Elle n’a aucune existence au-delà de son utilité productive.

«Cette production hors sol de matière animale supposée nourrir le monde recèle, et c’est là son intérêt principal, un gisement de profits quasi infinis. Car, si depuis une décennie, certains milliardaires et fonds d’investissement misent sur la viande cultivée, ce n’est pas par souci des animaux ou de la planète, qu’ils contribuent à détruire par ailleurs, mais parce que ces innovations sont potentiellement ultra-rentables et qu’elles vont générer une dépendance alimentaire durable des consommateurs.

«Si l’on suppose que la production de la matière animale en incubateur ne pose aujourd’hui plus de problèmes techniques majeurs, les stratégies des investisseurs sont de fait orientées sur la construction de la demande. Comment faire pour que les consommateurs, n’importe où dans le monde, consentent, voire réclament, de la viande cultivée ? Il faut d’une part susciter le rejet des anciens produits animaux et d’autre part attiser le désir de produits nouveaux. Sur le premier point, ce sont les associations de "défense" des animaux qui sont mobilisées en multipliant images et discours contre "l’élevage industriel" en plaçant finalement les consommateurs devant une alternative : ou "l’élevage industriel" ou la viande cultivée [lire Libération de jeudi, ndlr]. Sur le second point, l’ouverture de restaurants proposant de la viande cultivée est une offre de distinction et un marqueur moral pour des consommateurs sensibles aux valeurs de l’idéologie dominante qu’ils contribueront à propager.

«Il existe une autre voie, que les promoteurs de la viande cultivée refusent de considérer, c’est l’élevage paysan. Nous pouvons sortir des systèmes industriels sans rompre nos liens avec les animaux de ferme en installant, non pas des incubateurs à viande à l’entrée des villes, mais des milliers de paysans dans les campagnes. N’en déplaise aux actionnaires et aux "défenseurs" des animaux, les vaches ne sont pas encore sorties de l’histoire.»

Posté par Luc Fricot à 19:25 - Permalien [#]

27 octobre 2020

Utiliser regex en programmation Pascal

  Il s'agit d'utiliser la syntaxe "Regex"pour faire des recherches de texte équivalentes en langage Delphi Free-­Pascal de base. il s'agit pas de remplacer des composants existants ni de faire des routines exhaustives,( pas d'unicode par exemple), mais d'élaborer des fonctions pas à pas, sans privilégîer a rapidité ou la compacité.

Comme la syntaxe de Regex varie, je garderai le mieux
 
Les ancres ^ et $

  • ^Début commence par "Début"
  • fin$ termine par "fin"

En Pascal, on utilisera

pos('Début',s)=1

pos('fin',s)=length(s)+1-length('fin')

 

Les quantificateurs*, +, ? et {}

  • abc*  "ab" suivi de zéro ou plusieurs "c" -
  • abc+  "ab" suivi d'un ou plusieurs "c"
  • abc?  "ab" suivi de zéro ou un "c"
  • abc{2}  "ab" suivi de 2 "c"
  • abc{2,}  "ab" suivi de 2 (ou plus) "c"
  • abc{2,5}  "ab" suivi de 2 à 5 "c"
  • a(bc)*  un "a" suivi de zéro ou plusieurs séquences "bc"
  • a(bc){2,5}  un "a" suivi de 2 à 5 copies de la séquence "bc"

 

On ne retiendra donc qu'une seule syntaxe : a{min,max}+
Respectivement 0,-1 1,-1 0,1 2,2 2,-1 2,5 où -1 est un max indéfini.

 

L'opérateur OU : | ou []

  • a(b|c) contient un "a" suivi de "b" ou "c"
  • a[bc] même résultat.


Les classes de caractère: \d, \w, \s et .

\d un chiffre -
/\w un caractère de mot (lettres, chiffres et underscore)
-\s espace,tabulations et les sauts de ligne.
\D n'est pas \d
\W n'est pas \w
\S n'est pas \s
\$ valeur littérale de $ (idem pour ^[].$ () | * +? {}\ )
. n'importe quel caractère
\uFF caractere Asci.
\UFF unicode
\h Hexadécimal
\a diacritiques _\a(ca) cherche ca ça cà et çà si FR
\n saut de ligne (#10 = $A)
\r retour chariot (#13 = $D)
\t tabulateur (#9)
\b bordure les mots (soit début ou finde ligne, soit séparateur)
\B n'est pas \b
\1 texte du groupe de capture 1
\v séarateur décimale (. ou ,)

 

Les indicateurs

 Ces indicateurs sont  à mettre en vaziables globales.

g (global) ne tient pas compte du remplacement pourla recherche suivante.
                 Ainsi cherche "00" remplace "0" pour "00000", donne 000 et non 0.-

m (multi line):^ et $ correspondent au début et à la fin d’une ligne, au lieu de la chaîne de caractères entière

i (insensitive) rend l’expression insensible à la case (par exemple, /aBc/i correspondrait à AbC)

Langue du texte outre l'anglaisà, pou les accents et autres (æßñ¡¢¿ ). FR ES IT DE...

 

Regroupement et capture: ()

  • a(bc) crée un groupe de capture avec la valeur bc -
     

Expressions entre crochets : [] [-] [^]

  • [abc] correspond à une chaîne de caractères qui a un a ou un b ou un c (est identique à a|b|c) -
  • [a-c] exactement la même chose, littéralement tout caractère de a à c.
  • [a-fA-F0-9] = /h
  • [0-9]% une chaîne de caractères qui a un chiffre de 0 à 9 avant le signe % =:/d%
  • [^a-zA-Z] ne contient aucune lettre de a à z ou de A à Z. Dans ce cas, le ^ est utilisé comme négation de l’expression

 



Avant de.proposer des fonctions Delphi,on peut utiliiser les utilitaires de ligne de commande 
GREP.EXE, l'utilitaire de recherche de texte
 reFind.exe, l'utilitaire Rechercher et Remplacer utilisant les

GREP (Global Regular Expression Print) est un puissant programme de recherche de texte dérivé de l'utilitaire UNIX du même nom. GREP recherche un texte dans un ou plusieurs fichiers ou dans le flux d'entrée standard. La syntaxe générale de la ligne de commande GREP est grep [-<options>] <searchstring> [<files(s)>...]

reFind est un utilitaire de ligne de commande pour la recherche et le remplacement de modèles de texte Perl RegEx dans un fichier texte.
-Exemples

  • Remplacer tous les "TQuery" par "TFDQuery" dans les fichiers pas :
    refind *.pas /I /W /P:TQuery /R:TFDQuery
  • Remplacer tous les "TxxxQuery" par "TFDQuery" dans les fichiers pas et dfm :
    refind *.pas *.dfm /I /W "/P:T[A-Za-z]+Query" /R:TFDQuery-
  • Remplacer tous les "TxxxQuery" par "TQueryxxx" dans les fichiers pas et dfm :
    refind *.pas *.dfm /I /W "/P:T([A-Za-z]+)Query" /R:TQuery\1
  • Retirer tous les "Origin = xxxx" des fichiers DFM :
    refind *.dfm /L "/P:\n +Origin =.+$" "/R:"


Comment exécuter un programme en ligne de commande avec Delphi ?

https://webdevdesigner.com/q/how-do-i-run-a-command-line-program-in-delphi-67216/

   

exemple utilisant ShellExecute() :

procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(0, nil, 'cmd.exe', '/C find "320" in.txt > out.txt', nil, SW_HIDE);
Sleep(1000);
Memo1.Lines.LoadFromFile('out.txt');
end;

notez que l'utilisation de CreateProcess() au lieu de ShellExecute() permet un meilleur contrôle du processus.

Idéalement, vous devriez aussi appeler cela dans un thread secondaire, et appeler WaitForSingleObject() sur la poignée du processus pour attendre que le processus soit terminé. Le Sleep() dans l'exemple est juste un hack pour attendre un certain temps pour le programme commencé par ShellExecute() pour finir - ShellExecute() sera ne pas le faire. Si c'était le cas, vous ne pourriez pas par exemple simplement ouvrir une instance notepad pour éditer un fichier, ShellExecute() bloquerait votre application mère jusqu'à ce que l'éditeur soit fermé.

Variant1:

cela lancera un programme 'DOS' et récupérera sa sortie:

function GetDosOutput(CommandLine: string; Work: string = 'C:\'): string; { Run a DOS program and retrieve its output dynamically while it is running. }
var
SecAtrrs: TSecurityAttributes;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
StdOutPipeRead, StdOutPipeWrite: THandle;
WasOK: Boolean;
pCommandLine: array[0..255] of AnsiChar;
BytesRead: Cardinal;
WorkDir: string;
Handle: Boolean;
begin
Result := '';
with SecAtrrs do begin
nLength := SizeOf(SecAtrrs);
bInheritHandle := True;
lpSecurityDescriptor := nil;
end;
CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SecAtrrs, 0);
try
with StartupInfo do
begin
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
cb := SizeOf(StartupInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow := SW_HIDE;
hStdInput := GetStdHandle(STD_INPUT_HANDLE); // don't redirect stdin
hStdOutput := StdOutPipeWrite;
hStdError := StdOutPipeWrite;
end;
WorkDir := Work;
Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine),
nil, nil, True, 0, nil,
PChar(WorkDir), StartupInfo, ProcessInfo);
CloseHandle(StdOutPipeWrite);
if Handle then
try
repeat
WasOK := windows.ReadFile(StdOutPipeRead, pCommandLine, 255, BytesRead, nil);
if BytesRead > 0 then
begin
pCommandLine[BytesRead] := #0;
Result := Result + pCommandLine;
end;
until not WasOK or (BytesRead = 0);
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
finally
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end;
finally
CloseHandle(StdOutPipeRead);
end;
end;

variante 2:

 

 

Capture sortie console en [temps réel] et comment il dans un TMemo:

procedure CaptureConsoleOutput(const ACommand, AParameters: String; AMemo: TMemo);
const
CReadBuffer = 2400;
var

saSecurity: TSecurityAttributes;
hRead: THandle;
hWrite: THandle;
suiStartup: TStartupInfo;
piProcess: TProcessInformation;
pBuffer: array[0..CReadBuffer] of AnsiChar; <----- update
dRead: DWord;
dRunning: DWord;
begin
saSecurity.nLength := SizeOf(TSecurityAttributes);
saSecurity.bInheritHandle := True;
saSecurity.lpSecurityDescriptor := nil;

if CreatePipe(hRead, hWrite, @saSecurity, 0) then
begin
FillChar(suiStartup, SizeOf(TStartupInfo), #0);
suiStartup.cb := SizeOf(TStartupInfo);
suiStartup.hStdInput := hRead;
suiStartup.hStdOutput := hWrite;
suiStartup.hStdError := hWrite;
suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
suiStartup.wShowWindow := SW_HIDE;

if CreateProcess(nil, PChar(ACommand + ' ' + AParameters), @saSecurity,
@saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess)
then
begin
repeat
dRunning := WaitForSingleObject(piProcess.hProcess, 100);
Application.ProcessMessages();
repeat
dRead := 0;
ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil);
pBuffer[dRead] := #0;

OemToAnsi(pBuffer, pBuffer);
AMemo.Lines.Add(String(pBuffer));
until (dRead < CReadBuffer);
until (dRunning <> WAIT_TIMEOUT);
CloseHandle(piProcess.hProcess);
CloseHandle(piProcess.hThread);
end;

CloseHandle(hRead);
CloseHandle(hWrite);
end;
end;

Source: delphi.wikia.com

 

Posté par Luc Fricot à 16:54 - Permalien [#]
Tags : , , ,

24 septembre 2020

Expressions régulières (Regex) EN VRAC

 

 


 

Il y a plusieurs façons d'utiliser les expressions régulières avec Delphi.

Si vous possédez Delphi XE ou une version postérieure, le plus simple est d'utiliser l'unité System.RegularExpressions.

Si vous possédez une version antérieure à Delphi XE, plusieurs possibilités s'offrent à vous. Le choix peut-être le plus recommandable est d'utiliser la classe TPerlRegEx de l'unité PerlRegEx. L'avantage de cette unité est d'être identique à l'unité System.RegularExpressionsCore livrée avec les versions récentes de Delphi (à partir de Delphi XE). Votre code sera donc réutilisable en cas de migration vers une version plus récente.

Une autre possibilité est d'utiliser la classe TRegExpr de l'unité RegExpr. L'avantage de cette unité est d'être identique à l'unité du même nom livrée avec Free Pascal. Toutefois cette unité n'est pas compatible avec les versions récentes de Delphi.

Une autre possibilité encore est d'utiliser la classe IRegex de l'unité PCRE. Il s'agit d'une unité pour Delphi 7, qui peut également être compilée avec Free Pascal.

Une autre possibilité enfin est d'utiliser la classe TFLRE de l'unité FLRE. L'avantage de cette bibliothèque est, outre sa rapidité, le fait qu'elle soit compatible aussi bien avec Delphi ancienne et nouvelle génération qu'avec Free Pascal.

Mis à jour le 9


https://moncoachdata.com/blog/tuto-regex/

Tuto regex : extraire des informations d'un texte

Les expressions régulières (regex ou regexp) sont extrêmement utiles pour extraire des informations d’un texte en recherchant une ou plusieurs correspondances à l’aide d’un modèle de recherche spécifique (c’est-à-dire une séquence spécifique de caractères ASCII ou Unicode). Voici un rapide tuto regex pour avoir une vision d’ensemble de ce domaine.

Les domaines d’application vont de la validation à l’analyse/remplacement de chaînes de caractères, en passant par la transposition de données vers d’autres formats mais aussi le web scraping (lire l’article).

L’une des fonctionnalités les plus intéressantes c’est qu’une fois que vous avez appris la syntaxe, vous pouvez l’utiliser dans (presque) tous les langages de programmation (JavaScript, Java, VB, C #, C / C ++, Python, Perl, Ruby). , Delphi, R, Tcl et bien d’autres) avec quelques légères distinctions pour les fonctionnalités les plus avancées et les versions de syntaxe prises en charge par les moteurs.

Commençons par regarder quelques exemples et explications.

Tuto regex : Les bases

Les ancres  ^ et $

  • ^Alors correspond à toute chaîne de caractères qui commence par “Alors” -
  • fin$ correspond à toute chaîne de caractères qui se termine par “fin
  • ^la fin$ correspond exactement à la chaîne de caractères “la fin
  • on correspond à toute chaîne de caractères qui a “on” à l’intérieur

Les quantificateurs  *, +, ? et {}

  • abc* correspond à une chaîne de caractères qui possède “ab” suivi de zéro ou plusieurs “c” -
  • abc+ correspond à une chaîne de caractères qui possède “ab” suivi d’un ou plusieurs “c
  • abc? correspond à une chaîne de caractères qui possède “ab” suivi de zéro ou un “c
  • abc{2} correspond à une chaîne de caractères qui possède “ab” suivi de 2 “c
  • abc{2,} correspond à une chaîne de caractères qui possède “ab” suivi de 2 (ou plus) “c
  • abc{2,5} correspond à une chaîne de caractères qui possède “ab” suivi de 2 à 5 “c
  • a(bc)* correspond à une chaîne de caractères qui possède un “a” suivi de zéro ou plusieurs séquences “bc
  • a(bc){2,5} correspond à une chaîne de caractères qui possède un “a” suivi de 2 à 5 copies de la séquence “bc

L’opérateur OU : | ou []

  • a(b|c) correspond à une chaîne de caractères qui possède un “a” suivi de “b” ou “c
  • a[bc] exactement même résultat, toutes les lettres entre crochet sont une alternative, retourne donc les chaînes de caractères correspondant à “ab” ou “ac

Les classes de caractère: \d, \w, \s et .

  • \d correspond à un seul caractère qui est un chiffre -
  • \w correspond à un caractère de mot (comprend lettres, chiffres et underscore)
  • \s correspond à un caractère d’espace (comprend les tabulations et les sauts de ligne)
  • . correspond à n’importe quel caractère -

Utilisez l’opérateur . avec précaution car souvent la classe de caractères ou la classe de caractères inversée (traitée ci-dessous) sont plus rapides et plus précises.

\d, \w et \s présentent également leurs négations avec \D, \W et \S respectivement.

Par exemple, \D effectuera la correspondance inverse par rapport à celle obtenue avec \d.

  • \D correspond à un seul caractère non numérique -

Pour être pris littéralement, vous devez annuler l’effet des caractères ^. [$ () | * +? {\ avec une barre oblique inversée \ car ces éléments ont une signification particulière (contrairement à d, w et s).

  • \$\d correspond à une chaîne qui a un $ avant un chiffre -

Notez que vous pouvez également faire correspondre des caractères non affichables tels que les tabulations \t, les nouvelles lignes \n et les retours chariot \r.

Les indicateurs

Afin d’apprendre à construire un regex efficacement, on ne peut oublier un concept fondamental: les indicateurs.

Une expression rationnelle vient généralement avec cette forme /abc/, où le motif de recherche est délimité par deux barres obliques /. A la fin, nous pouvons spécifier un indicateur avec ces valeurs (nous pouvons également les combiner):

  • g (global) permet de ne pas revenir après la première correspondance trouvée, cela relance les recherches suivantes à partir de la fin du match précédent
  • m (multi line): lorsqu’il est activé ^ et $ correspondront au début et à la fin d’une ligne, au lieu de la chaîne de caractères entière
  • i (insensitive) rend l’expression entière insensible à la case (par exemple, /aBc/i correspondrait à AbC)

Tuto regex : Niveau intermédiaire

Regroupement et capture: ()

  • a(bc) crée un groupe de capture avec la valeur bc -
  • a(?:bc)* en utilisant ?: nous désactivons le groupe de capture -
  • a(?<foo>bc) en utilisant ?<foo> nous donnons un nom au groupe

Cet opérateur est très utile lorsque nous devons extraire des informations de chaînes de caractères ou de données en utilisant votre langage de programmation préféré. Toutes les occurrences multiples capturées par plusieurs groupes seront exposées sous la forme d’un tableau classique: nous accéderons à leurs valeurs en spécifiant à l’aide d’un index sur le résultat de la correspondance.

Si nous choisissons de nommer les groupes (avec (?<Foo>…)), nous pourrons récupérer les valeurs du groupe en utilisant le résultat de la correspondance, comme un dictionnaire où les clés seront le nom de chaque groupe.

Expressions entre crochets : []

  • [abc] correspond à une chaîne de caractères qui a un a ou un b ou un c (est identique à a|b|c) -
  • [a-c] exactement la même chose, littéralement tout caractère de a à c.
  • [a-fA-F0-9] une chaîne de caractères représentant un seul caractère d’un chiffre hexadécimal, sans distinction de case -
  • [0-9]% une chaîne de caractères qui a un chiffre de 0 à 9 avant le signe %
  • [^a-zA-Z] une chaîne de caractères qui ne contient aucune lettre de a à z ou de A à Z. Dans ce cas, le ^ est utilisé comme négation de l’expression -

Rappelez-vous que dans les expressions entre crochets, tous les caractères spéciaux (y compris la barre oblique inverse \) perdent leurs pouvoirs spéciaux: nous n’appliquerons donc pas la règle d’annulation.

Correspondance généreuse vs. plus sélect

Les quantificateurs (* + {}) sont des opérateurs généreux. Ils étendent la correspondance aussi loin que possible à travers le texte fourni.

Par exemple, <.+> correspond à <div>simple div</div> dans Ceci est un test d’un <div>simple div</div>. Afin d’attraper uniquement la balise div, nous pouvons utiliser un ? pour le rendre plus sélect:
<.+?> correspond à tout caractère une ou plusieurs fois inclus entre < et > -

Notez qu’une meilleure solution devrait éviter l’utilisation de . en faveur d’un regex plus strict:
<[^<>]+> correspond à n’importe quel caractère sauf < ou > une ou plusieurs fois inclus entre < et >

Tuto regex : Niveau avancé

Limites : \b et \B

  • \babc\b effectue une recherche “mots entiers uniquement” -

\b représente une ancre lambda (il est similaire à $ et ^) des positions correspondantes où un côté est un caractère de mot (comme \w) et l’autre côté n’est pas un caractère de mot (par exemple, il peut s’agir du début de la chaîne de caractères ou un espace).

Il vient avec sa négation \B. Cela correspond à toutes les positions où \b ne correspond pas. Cela peut être le cas si nous voulons trouver un modèle de recherche entièrement entouré de caractères.

  • \Babc\B ne correspond que si le motif est entièrement entouré de caractères -

Références arrières : \1

  • ([abc])\1 en utilisant \1, il correspond au même texte que le premier groupe de capture -
  • ([abc])([de])\2\1 nous pouvons utiliser \2 (\3, \4, etc.) pour identifier le même texte correspondant au deuxième (troisième, quatrième, etc.) groupe de capture. -
  • (?<foo>[abc])\k<foo> nous donnons le nom foo au groupe et nous le référençons plus tard (\k<foo>). Le résultat est le même que celui du premier regex -

Observation avant et après : (?=) Et (?<=)

  • d(?=r) ne correspond à d que si l’est suivi de r, mais r ne fera pas partie du résultat -
  • (?<=r)d ne correspond à d que s’il est précédé d’un r, mais r ne fera pas partie du résultat

Vous pouvez également utiliser l’opérateur de négation!

  • d(?!r) ne correspond à d que s’il n’est pas suivi de r, mais r ne fera pas partie du résultat -
  • (?<!r)d ne correspond à d que s’il n’est pas précédé d’un r, mais r ne fera pas partie du résultat -

 


regular-expressions.info

Regular Expressions Quick Start

Jan Goyvaerts

On this site, you can find everything you need to know about regular expressions:

 


 

http://edutechwiki.unige.ch/fr/Expression_r%C3%A9guli%C3%A8re

Expression régulière

1 Définition

Les expressions régulières (abrégé expreg) aussi appelées expressions rationnelles, en anglais regular expressions (abrégé regexp), sont une écriture compacte pour représenter un ensemble (peut-être infini) de séquences de caractères semblables. Elles rappellent et étendent la notion de "Joker" ou "Wild-card" qu'on trouve dans MS-DOS (e.g. DIR *.EXE ), comme d'ailleurs dans les "shells" UNIX (sous le nom de "globbing"), ou encore Authorware.

Les expressions régulières sont une chaîne de caractères permettant de décrire un ensemble variable par l'utilisation d'une syntaxe précise, qui se retrouvent dans une foule de langages et d'outils. Pour le détail, veuillez consulter la documentation des expressions régulières. Elles diffèrent d'un environnement à l'autre par quelques détails, avec un noyau commun. Cependant, la maîtrise de cette syntaxe permet une manipulation de textes dans la majeure partie des langages de programmation.

1.1 Résumé des conventions "universelles" pour les expressions régulières

  • ^ représente le début (d'une ligne, d'une chaîne de caractères)
  • $ représente la fin (d'une ligne, d'une chaîne de caractères)
  • . représente n'importe quel caractère
  • * représente 0 ou plus occurrences d'un élément. Donc e* représente soit "" ou "e" ou "ee" ou "eee"
  • + représente 1 ou plus occurrences de e. Donc e+ représente soit "e","ee","eee", etc
  • ? représente 0 ou 1 occurrences, comme s? dans villes? qui représente l'ensemble { "ville" , "villes" }
  • | représente un choix entre chaînes de caractères, comme la|le qui représente l'ensemble { "la" , "le" }
  • ( ) groupage d'expressions, qui permet par ex. d'écrire (e|f)g au lieu de eg|fg. Le groupage est aussi utile pour faire des substitutions (voir plus bas).
  • [xyz] classes de caractères - un de caractères dans la liste doit être dans la cible représentée, [A-Za-z] représente toutes les lettres.

Cette dizaine de symboles et de constructions constituent un noyau commun à presque tous les modules d'expressions régulières.

1.2 Conventions "universelles" pour les expressions régulières de type "Perl"

(Ne correspond pas à la norme POSIX. Voir aussi la notice sur la syntaxe de citation ci-dessus ! (Par exemple dans Javascript utilisez '\\w' à la place de '\w').

  • \w représente tout caractère alphanumérique (donc qui peut faire partie d'un mot au sens formel, c.a.d. lettres et chiffres).
  • \W représente tout caractère non alphanumérique (donc qui ne peut pas faire partie d'un mot au sens formel, c.a.d. ponctuations, espaces, etc.)
  • Voir les manuels pour le reste.

1.3 Une complication, la syntaxe de citation

Comment écrire des expressions régulières qui reconnaissent les signes spéciaux ci-dessus dans une chaîne de caractères ? Comme ils ont un sens spécial, ils ne peuvent se représenter eux-mêmes sans autre (ce qui est le sens normal des autres caractères). Afin de permettre de distinguer deux cas d'usage de ces caractères-là, on utilise un caractère d'échappement de code - mais sur ce point les environnements diffèrent entre eux.

  • D'une part le caractère d'échappement varie, c'est \ dans le cas d'emacs, de PhP et de Perl, \\ dans JavaScript et % dans le cas du MOO.

(N.B. Les "regexps" d'emacs/PhP et du MOO ne diffèrent que par ce caractère d'échappement)

  • D'autre part le choix sens normal/sens spécial en fonction de la présence ou de l'absence du caractère d'échappement varie. Dans le cas d'emacs et du MOO, les caractères: (, |, ) ont leur sens spécial lorsqu'ils sont précédés du caractère d'échappement, et leur sens normal autrement. Dans le cas de Perl et de JavaScript, c'est le contraire ! Notez également qu'il faut utiliser \\ dans JavaScript !
  • Enfin, certains langages (Python) permettent de stipuler quelle convention de citation on utilise.

Les séquences d’échappement suivantes sont ainsi supportées : (wikipedia)

Séquence POSIXDescription
\b retour arrière (correction).
\t tabulation horizontale.
\n saut de ligne.
\v tabulation verticale.
\f saut de page.
\r retour chariot.

2 Comment accéder aux expressions régulières

2.1 Dans Emacs, à titre d'exemple:

La recherche incrémentale par exemple avec le raccourci-clavier :C-M-s, 
le remplacement incrémental avec le raccourci-clavier :C-M-%,
Chercher des lignes qui contiennent la méme regexp: voir le menu.

Il est utile d'utiliser Xemacs pour tester vos expressions faites en PHP, JS etc. Faites attention à la syntaxe de citation qui n'est pas forcément la même. Par exemple pour chercher à la fois "is" et "in" il faut utiliser i\(s\|n\).

2.2 En JavaScript 1.2 et plus

Avec les méthodes match, replace, search de string. Voir:

Pour utiliser une regexp dans JavaScript il faut d'abord la placer entre deux / / suivi de "modifieurs" Dans l'exemple ci-dessous gi veut dire d'ignorer la casse et chercher toutes les occurences dans le string: (g=global pattern matching) et (i=case-insentitive pattern matching). En ce qui concerne l'expression régulière entre les deux / /, ^[A-Z{1,} signifie qu'au début de notre suite de caractères (indiqué par ^) on cherche un nombre qui va de 1 à indéfini {1,} de lettres majuscules [A-Z]. Ensuite on définit qu'on veut un tiret \- (ici on a échappé le tiret avec un backslash), puis on s'attend à une suite de 4 ou plus {4,} chiffres [0-9]; le $ de fin nous dit qu'on ne veut aucun autre caractère après les chiffres.

var code_postal_ch = /^[A-Z]{1,}\-[0-9]{4,}$/gi;
var input_string1 = "CH-1227";
var input_string2 = "CH-12273";

Pour tester avec la méthode test d'un objet regexp

if (code_postal_ch.test(input_string1)) alert ("wow");

Pour tester avec la méthode match de l'objet string:

if (input_string1.match(code_postal_ch)) alert ("wow");

2.3 Dans PHP

Voir le chapitre "Regular Expression Functions" et surtout les fonctions eregi(pattern, string) et ereg(pattern, string)

eregi ("(ozilla.[23]|MSIE.3)", $HTTP_USER_AGENT);
/* Returns true if client browser
is Netscape 2, 3 or MSIE 3. */

2.4 Dans le MOO

Avec le verbe match()

2.5 Dans R

La fonction grep() permet de rechercher les éléments d’une liste qui présentent un pattern donné. Ainsi, pour rechercher dans une chaîne de caractères des expressions régulières avec la fonction grep, il faut fixer l’attribut « fixed » à la valeur FALSE. Exemples :

 Texte1 <- c("argue", "sténo", "huons", "remet", "ponce", "mites", "ligie", "vitre", "fluée", "floué", "ahana", "fonte", "boche", "tinté", "frime", "tente", "cédez")
grep(pattern = "^a", Texte1, value = TRUE, fixed=FALSE) # Donne les mots qui commencent par la lettre « a »
grep(pattern = "e$", Texte1, value = TRUE, fixed=FALSE) # Donne les mots qui se terminent par la lettre « e »
grep(pattern = "te", Texte1, value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence « te »
grep(pattern = "n.e", Texte1, value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence « n.e »
grep(pattern = "na|ce" , Texte1 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence « na » ou la séquence « ce »
grep(pattern = "n.e|c.e" , Texte1 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence « n.e » ou la séquence « c.e »
grep(pattern = "[cdt]e" , Texte1 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence « ce » ou « de » ou « te »
grep(pattern = "[^cdt]e" , Texte1 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la lettre « e » et qui ne présentent pas les séquences « ce », « de » et « te »
Texte2 <- c("ab","abc", "ababc", "ababab", "abababc" ,"bab","cbabab","abba","abbc","ca","abaabc", "ababbc", "acac")
grep(pattern = "ab*c" , Texte2 , value = TRUE, fixed=FALSE) # Donne les mots "abc" "ababc" "abababc" "abbc" "abaabc" "ababbc" "acac"
grep(pattern = "ab+c" , Texte2 , value = TRUE, fixed=FALSE) # Donne les mots "abc" "ababc" "abababc" "abbc" "abaabc" "ababbc"
grep(pattern = "ab?c" , Texte2 , value = TRUE, fixed=FALSE) # Donne "abc" "ababc" "abababc" "abaabc" "acac"
grep(pattern = "ab{2}c" , Texte2 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence : abbc, donc: "abbc" "ababbc"
grep(pattern = "(ab)*c" , Texte2 , value = TRUE, fixed=FALSE) # Donne "abc" "ababc" "abababc" "cbabab" "abbc" "ca" "abaabc" "ababbc" "acac"
grep(pattern = "(ab)+c" , Texte2 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence : (ab)+ c
grep(pattern = "(ab)?c" , Texte2 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence : (ab)? c
grep(pattern = "(ab){2}c" , Texte2 , value = TRUE, fixed=FALSE) # Donne les mots qui contiennent la séquence : ababc

2.6 Avec les outils Unix grep et egrep

Grep et egrep sont des outils UNIX très utiles, qui permettent de retrouver des fichiers et des lignes de texte dans des fichiers contenant un "pattern". Un usage typique sera

 egrep -i -l 'd\.?k\.?s\.?|schneider' /www/*.html

Qui va afficher les noms des fichiers *.html du répertoire /www/ contenant soit les initiales "D.K.S." soit le string "schneider".

Même chose, mais en cherchant dans des sous-répertoires (ATTENTION: ce type de commande est gourmande en ressources CPU). Le résultat de la recherche est mis dans le fichier "t".

find . -name "*.html" -exec grep -il 'd\.?k\.?s\.?|schneider' {} >> t \;
Quelques explications en plus
  • le -i indique que la recherche ne doit pas tenir compte des majuscules/minuscules
  • le -l indique qu'on ne veut que les noms de fichiers, sinon on a aussi toutes les lignes correspondantes (essayez)
  • le *.html est un cas de "filename globbing" et pas une expression régulière
  • l'expression régulière étant tapée dans le contexte du shell UNIX, il faut se méfier du fait que le shell lui-même interprète divers caractères spéciaux à sa manière. Afin d'éviter tout problème, on entoure l'expression d'apostrophes.
  • Sans les apostrophes, le shell interpréterait à sa façon les caractères \ | et ? avec des résultats (presque) imprévisibles

3 Remplacement avec des expressions régulières

En dehors des recherches, les expressions régulières sont beaucoup employées pour modifier du texte de manière systématique dans un fichier. On peut se référer à des expressions groupées (...)trouvées dans un input avec une syntaxe spéciale. (Voir ci-dessus)

3.1 Dans des éditeurs

Dans Emacs:

M-x Replace query-replace-regexp <\(/?\)b> RET <\1em> RET remplacera tous les <b> par des <em> et les </b> par des </em>, en demandant une confirmation pour chaque apparition.

  • les signes \( \) ? et \1 font partie de la syntaxe regexp d'emacs, les signes < > et / appartiennent à HTML
  • le signe \1 signifie "le contenu de ce qui a été reconnu dans la 1ère paire de \( \), on peut de même employer \2, \3 etc pour faire référence à la seconde, troisième paire, etc
  • ici ce contenu sera un / facultatif, selon qu'on remplace un tag <b> ou </b>;

Dans Notepad++:

Cochez "Regular expression" dans les popups pour les fonctions de recherche/remplacement.

Dans PSPad:

Chochez "expressions régulières" dans les popups pour les fonctions de recherche/remplacement

  • Voir le help (Regular expressions)

3.2 Avec PhP

$string = ereg_replace ("$", "<BR>", $string);
/* Mettre un <BR> tag à la fin de $string. */
$string = ereg_replace ("\n", "", $string);
/* Tuer les caractères newline dans $string. */

3.3 Avec JavaScript

  • Pour se référer à une expression il faut utiliser $n, par exemple $1 ou $2 ci-dessous.
 input = "surf is green";
pattern = "/(\\w*) is (.*)/ig";
replyPattern = "What is so $2 about $1?";
result = input.replace(pattern, replyPattern);
Ca donne result = What is so green about surf?

3.4 Avec Perl

Perl est un langage de programmation complet, mais il admet des options d'invocations qui permettent d'accéder directement à son composant d'expressions régulières particulièrement puissant.

perl -pi.bak -e 's:<(/?)b>:<\\1em>:' mon_fichier.html

est l'équivalent de la commande emacs ci-dessus

  • Malgré les apostrophes, le shell unix interprète les \ comme un caractère d'échappement, c'est pourquoi il faut écrire \\1 pour que perl obtienne \1
  • -p signifie de recopier chaque ligne du fichier de l'entrée vers la sortie
  • -i.bak signifie de mettre le résultat à la place du fichier original, et garder l'original en ajoutant .bak à son nom** -e 'instructions' signifie d'effectuer les instructions sur chaque ligne du fichier en cours de copie
  • L'instruction de substitution a la forme s:expression:substitution:
  • On peut remplacer les : par un autre caractère; le / est traditionellement utilisé, mais dans le cas présent / intervient dans le texte à remplacer.
  • On peut mettre plusieurs instructions Perl entre les apostrophes, séparées par des ;

4 Modification de l'ordre dans une chaîne d'entrée dans JavaScript

L'exemple suivant illustre la formation d'expressions régulières et l'utilisation de string.split () et String.Replace () . Il nettoie une chaîne d'entrée plus ou moins formaté contenant les noms (prénom) séparés par des espaces, les tabulations et exactement une virgule. Enfin, il inverse l'ordre des noms (nom de famille en premier) et trie la liste. Le code n'a pas été testé. Se référer à l'original

/
// et peuvent avoir de multiples espaces entre les noms et prénoms.
var nom = "Harry Trump, Fred Barney, Helen Rigby, Bill Abel; Chris Hand" ;
var sortie = [ "---------- chaîne originale \n" , nom + "\n" ] ;
// Préparer deux modèles d'expressions régulières et de stockage de tableau.
// Diviser la chaîne en éléments de tableau.
// Motif: possible l'espace blanc puis virgule puis de l'espace blanc possible
var motif = /\s*;\s*/;
// Pause de la chaîne en morceaux séparés par le schéma ci-dessus et
// Stocker les morceaux dans un tableau appelé nameList
var nameList = noms.split ( motif ) ;
// Nouveau modèle: un ou plusieurs caractères, puis des espaces, les caractères.
// Utilisez les parenthèses pour "mémoriser" des parties du modèle.
// Les parties mémorisées sont appelées plus tard.
motif = /(\w+)\s+(\w+)/;
// Nouvelle gamme pour la tenue de noms en cours de traitement.
var bySurnameList = [ ] ;
// Affichage du tableau de nom et remplir le nouveau tableau
// Avec les noms séparés par des virgules, dernier premier.
//
// La méthode replace enlève rien correspondant au modèle
// et la remplace par la chaîne-deuxième partie mémorisée mémorisé
// suivi de l'espace virgule suivie première partie mémorisée.
// Les variables $1 et $2 se réfèrent à des parties
// mémorise tout en faisant correspondre le motif.
sortie.push ( "---------- après division par expression régulière" ) ;
var i, len;
for (i = 0, len = nameList.length; i < len; i++){
sortie.push(nameList[i]);
bySurnameList[i] = nameList[i].replace(pattern, "$2, $1");
}
// Affichage de la nouvelle gamme.
sortie.push ( "---------- noms inversé" ) ;
for (i = 0, len = bySurnameList.length; i < len; i++){
sortie.push(bySurnameList[i]);
}
}
// Tri par nom, puis afficher le tableau trié.
bySurnameList.sort ( ) ;
sortie.push ( "---------- Classé" ) ;
for (i = 0, len = bySurnameList.length; i < len; i++){
sortie.push(bySurnameList[i]);
sortie.push ( "---------- End" ) ;
console.log ( sortie.join ( "\n" ) ) ;

Travailler avec les expressions régulières :

5 Aide mémoire

Métacaractères

caractèresignification
^ début de la chaîne
$ fin de la chaîne
. n'importe quel caractère sauf retour à la ligne
* matche 0 ou plusieurs fois
+ matche au moins 1 fois
? matche 0 ou 1 fois
  alternative
() groupement; mémorisation
[] jeu de caractères
{} répétition

 

  • [1] (Travailler avec les expressions régulières)

Répétition

caractèresignification
a* zéro ou plusieurs a
a+ un ou plusieurs a
a? zéro ou un a
a{m} exactement m a
a{m,} au moins m a
a{m,n } au minimum m a et au maximum n a

6 Les expressions régulières ont une puissance limitée

(un peu de philosophie ....)

Il y a une foule de modèles d'ordinateurs et de langages de programmation. Néanmoins, d'un point de vue théorique (c'est-à dire en ignorant les questions de performance et de limitation de mémoire) toutes ces machines (et langages) sont équivalentes, en ce sens qu'il est en principe possible de simuler chaque machine ou langage au moyen d'un programme (dit émulateur ou interpréteur) tournant sur une autre machine/langage. Ce fait est bien illustré, d'ailleurs, par les divers émulateurs Windows tournant sur Sun ou Mac.

De manière générale, les langages de programmation appartiennent à cette classe, dite de "la machine universelle". Les expressions régulières sont le cas d'exception d'un modèle de machine formellemoins puissant que la machine universelle mais néanmoins très utile et employé. Mais le plus souvent comme un "sous-langage", compartiment d'un langage plus puissant.

Un exemple de tâche simple mais hors de portée du langage des expressions régulières : vérifier que les paires de parenthèses correspondent.

(.*) va admettre 1) "(x)" et 2) "(x))

([^)]*) élimine 2) mais admet 3) "((x)"

([^()]*) reconnaît correctement une paire de parenthèses mais n'autorise pas 4: "((x))"

En fait, il est possible d'écrire des expressions régulières qui vont reconnaître les chaînes de caractères ayant un nombre maximum prédéterminé de parenthèses imbriquées. Ecrivez-en une qui reconnaît deux niveaux de parenthèses.

7 Liens

7.1 Survols

7.2 Manuels etc. par langage

Éditeur Emacs
  • Regular Expression Search (copie d'une page info de Emacs)
  • Une aide complète sur (X)Emacs est disponible dans "Help->Info" (d'où ce texte a été tiré).
Éditeur Notepad++
PHP
JavaScript
MOOs
Perl
Python
Outils Unix

7.3 Résumés (Cheatsheets)

7.4 Outils en ligne

7.5 Tutoriels

Génériques
JavaScript (f)
JavaScript (en)
Chatterbot MOO / Javascript

Quelques exemples d'implantation de robots de conversation dans les bibliothèques européennes :

PHP
  • expreg.com Les expressions régulières en PHP. C'est carrément un portail dédié à cela ....

7.6 Exemples

 


 

 

 

http://astuces.jeanviet.info/bureautique/rechercher-et-remplacer-du-texte-avec-notepad-et-quelques-regex.htm

Voki quelques exemples de ce que peuvent faire les regex :

  • Trouver dans un texte toutes les phrases qui commencent par "il était une foie" et remplacer le texte par "Il était une fois" (^il était une foie)
  • Chaque fois qu’un texte se termine par un point, on peut forcer un retour à la ligne (.$)
  • Trouver dans un texte tous les mots qui contiennent 2 o consécutifs (.*oo.*)

Les Principales Regex  à utiliser avec notepad

regexeffetexemple
. pour remplacer un caractère ex: "jeanvie." va trouver "jeanviet" et "jeanvier"
[…] pour indiquer un ensemble de caractère ex: "[éèêë]" pour trouver un accent
[^…] pour indiquer des caractères complémentaires ex: "[^0-9]" pour trouver tout ce qui est différent d’un chiffre
^ pour indiquer que le caractère doit être au début d’une ligne ex: "^jeanviet" pour trouver toutes les lignes qui commencent par jeanviet
$ pour indiquer que le caractère doit être en fin de ligne ex: "jeanviet$" pour trouver toutes les lignes qui se terminent par jeanviet
.* n’importe quel nombre de caractère entre deux caractères ex:"j.*t" trouvera jeanviet, jet, jouet

Conserver le texte d’une regex

Soit ces 4 lignes de texte :

  • mois : janviet 2010
  • mois : février 2010
  • mois : mars 2010
  • mois : avril 2010

Je ne veux garder que le mois, c’est à dire jeanviet, février, mars, avril. On va donc supprimer tout ce qui se trouve avant les " : " et l’année " 2010" et conserver le mois entre les deux.

Voici la manip sous notepad :

Conserver une regex


 

http://www.expreg.com/symbole.php

Les Symboles dans les Expressions Régulières



Nous allons dans cette partie vous donner et vous expliquer les différents symboles utilisés dans les expressions régulières.

Une des premières choses à réaliser dans la conception d'une expression régulière, c'est de définir le motif (pattern en anglais)

Pour construire ces motifs, vous avez besoin de créer une structure formée de caractères littéraux, puis de symboles qui sont définis en tant que métacaractères et délimiteurs et qui seront utilisés séparément ou en combinaison à l'intérieur d'un même groupement ou d'une classe.

Oups, me direz-vous... je suis déjà largué là !
Aucune inquiétude, on va développer le sujet.

1) Les caractères littéraux : On appelle littéral une valeur qui est écrite exactement comme elle est interprétée.
Exemple :

Littéraux Signification

a correspond à la lettre "a" et rien d'autre
chat correspond au mot "chat" et rien d'autre
toto correspond au mot "toto" et rien d'autre



Vous constatez que les littéraux permettent une identification exacte et précise du motif recherché. L'intérêt des expressions régulières ne serait pas bien grand si elles étaient limitées à cette seule possibilité. De plus, pour une recherche simplifiée, une fonction comme strpos() le fera bien plus rapidement qu'un simple preg_match(). Il existe heureusement des symboles spécifiques qui ont un sens plus général et que nous présentons dans la suite de ce cours.

2) Les symboles de début et fin de chaîne et le point .

L'accent circonflexe ^ et le symbole dollar $ et enfin le point .

Symbole Description

^ Indique le début de la chaîne - exemple ^chat
reconnaît une ligne qui commence par chat
$ Indique la fin de la chaîne - exemple : chat$
reconnaît une ligne qui finit par chat
. Le point indique n'importe quel caractère


Ces symboles sont des métacaractères : >>> cf -> Qu'est ce qu'un métacaractère ?

3) Les symboles quantificateurs

Ils sont au nombre de trois :
le point d'interrogation (?), l'étoile (*) et le plus (+)

Symbole Description

* Indique 0, 1 ou plusieurs occurrences du caractère ou de la classe précédente
+ Indique une ou plusieurs occurrences du caractère ou de la classe précédente
? Indique 0 ou une occurrence du caractère ou de la classe précédente


Ces symboles sont des métacaractères : >>> cf -> Qu'est ce qu'un métacaractère ?

Bof... oui... mais encore ?
On va travailler avec des exemples, c'est le but du jeu et, selon l'adage, un petit dessin vont mieux qu'un long discours.

Exemple :
a* correspond à aucune ou plusieurs occurrences de la lettre (a)
soit pas de a, ou a, aa, aaa, aaaa, etc...
a+ correspond à une ou plusieurs occurrences de la lettre (a)
soit au moins un a ou aa, aaa, aaaa, etc...
a? correspond à 0 ou une seule occurrence de la lettre (a)
soit a ou pas de a

4) Les intervalles de reconnaissance

Ce sont les accolades { }

Exemple Signification

a{3} correspond exactement à aaa
a{2,} correspond à un minimum de deux a consécutifs
soit aa, aaa, aaaaa....
a{2,4} correspond uniquement à aa, aaa, aaaa


Ces symboles sont des métacaractères : >>> cf -> Qu'est ce qu'un métacaractère ?

5) Les classes de caractères

Délimitées grâce aux crochets [ ]

Exemple Signification

[..-..] Le tiret représente l'intervalle à l'intérieur de la classe
Il s'agit d'un métacaractère s'il est placé dans cette position. Pour permettre sa lecture en tant que caractère "tiret" il convient de le placer en début de la classe comme ceci [-....]
br[iu]n ce qui signifie, trouver br suivi de i ou de u suivi de n comme brun ou brin
  exemple de recherche sur une balise de titre <h1> <h2> <h3>,

 etc...


Ces symboles sont des métacaractères : >>> cf -> Qu'est ce qu'un métacaractère ?

6) Les classes pré-définies

Classe Signification

[[:alpha:]] n'importe quelle lettre
[[:digit:]] n'importe quel chiffre
[[:xdigit:]] caractères héxadécimaux
[[:alnum:]] n'importe quelle lettre ou chiffre
[[:space:]] n'importe quel espace blanc
[[:punct:]] n'importe quel signe de ponctuation
[[:lower:]] n'importe quelle lettre en minuscule
[[:upper:]] n'importe quelle lettre capitale
[[:blank:]] espace ou tabulation
[[:graph:]] caractères affichables et imprimables
[[:cntrl:]] caractères d'échappement
[[:print:]] caractères imprimables exceptés ceux de contrôle

 

7) L'alternative, l'intervalle et la classe complémentée

Réalisé avec la barre | et le tiret - et l'accent circonflexe ^ à l'intérieur des crochets [ ]
La barre verticale | peut également être positionnée entre des parenthèses dans la recherche du motif (voir * dans le tableau exemple)
Exemple :

Exemple Signification

\<h[1-6]\> intervalle de recherche de 1 à 6 - affichera les balises de titre <h1> <h2> etc...

 

[0-9] tous les chiffres de 0 à 9, etc...

p(ai|i)n la barre verticale détermine une alternative
ce qui signifie tout ce qui s'écrit pain ou pin
L'alternative dans le motif lui-même
^(De|A):@ détermine une alternative dans le motif
ce qui signifie tout ce qui commence par De:@ ou A:@

La classe complémentée
[^1] classe complémentée ce qui signifie reconnaître tout sauf ce qui est énuméré, ici, tout sauf le chiffre 1
[^1-6] classe complémentée ce qui signifie reconnaître tout sauf ce qui est énuméré, ici, tout sauf les chiffres de 1 à 6


Ces symboles sont des métacaractères : >>> cf -> Qu'est ce qu'un métacaractère ?

Tableau récapitulatif

. le point n'importe quel caractère

[...] classe de caractères tous les caractères énumérés dans la classe

[^...] classe complémentée Tous les caractères sauf ceux énumérés

^ circonflexe positionne le début de la chaîne, la ligne...

$ dollar marque la fin d'une chaîne, ligne...

| barre verticale alternative - ou
reconnaît l'un ou l'autre

(...) parenthèse utilisée pour limiter la portée d'un masque ou de l'alternative

* astérisque 0, 1 ou plusieurs occurrences

+ le plus 1 ou plusieurs occurrence

? interrogation 0 ou 1 occurrence

 


 

Posté par Luc Fricot à 17:47 - Permalien [#]
Tags : ,

20 septembre 2020

Expressions régulières (Regex) dans Delphi

Les expressions régulières sont des caractères qui personnalisent une chaîne de recherche. Le produit reconnaît les expressions régulières suivantes :

Caractère    Description

 ^    Un accent circonflexe placé au début d'une chaîne correspond au début d'une ligne.
 $    Le signe dollar placé à la fin de l'expression correspond à la fin d'une ligne.
  .    Un point correspond à n'importe quel caractère.
  *    Un astérisque placé après une chaîne correspond à un nombre quelconque d'occurrences de cette chaîne suivie de n'importe quel caractère (y compris par aucun caractère). Par exemple, bo* permet de trouver bot, bo et boo mais ne trouve pas b.
 +    Un signe plus placé après une chaîne correspond à un nombre quelconque d'occurrences de la chaîne suivie de n'importe quel caractère (la chaîne doit absolument être suivie d'un caractère). Par exemple, bo+ permet de trouver boo, et booo, mais ne trouve pas bo ou be.
[ ]    Les caractères placés entre crochets permettent de trouver l'un des caractères placés entre crochets, mais pas les autres. Par exemple [bot] permet de trouver b, o, ou t.
[^]    Un accent circonflexe placé au début d'une chaîne entre crochets signifie SAUF. Ainsi, [^bot] permet de trouver n'importe quel caractère à l'exception de b,
 o, ou t.
 [-]    Un trait d'unionplacé à l'intérieur des crochets indique une plage de caractères. Par exemple, [b-o] permet de trouver n'importe quel caractère situé entre b et o.
{ }    Les accolades permettent de regrouper des caractères ou des expressions. Les groupes peuvent être imbriqués dans la limite maximale de 10 groupes par modèle. Pour le remplacement, on fait référence aux groupes par une barre oblique inverse et un nombre indiquant position dans l'expression "Chercher", en commençant par 0. Par exemple, étant donné le texte à rechercher et la chaîne de remplacement, Chercher : {[0-9]}{[a-c]*}, Remplacer : NUM\1, la chaîne 3abcabc sera remplacée par NUMabcabc.
  \      Une barre oblique inverse avant un caractère générique indique à l'éditeur de code de traiter ce caractère littéralement et non comme un caractère générique. Par exemple, \^ correspond à ^ et n'indique pas le début d'une ligne.
  |         La barre verticale correspond à OU ex c|ç.


Posté par Luc Fricot à 12:25 - Permalien [#]
Tags : , ,

12 septembre 2020

Trier les comptes dans Thunderbird

D'après https://www.peltier-net.fr/changer-lordre-des-comptes-dans-thunderbird/

Dans le but de placer les boites mails les plus importantes en tête de liste pour éviter d’avoir à scroller à longueur de journée …. Pour cela rien de plus facile !

Dans Thunderbird,
menu outils/options

Onglet Avancé, Bouton Editeur de configuration

passer outre la mise en garde (attention quand même, il n'y a pas d'annulation globale aux modifs)

Faire un filtre de recherche sur mail.accountmanager et double clic sur

mail.accountmanager.accounts

Il suffit alors de changer l’ordre comme on le souhaite.

account1.account4.account6.account2...
ou
account2,account3,account4,account5,account7,account9


La difficulté étant de savoir à quoi correspond les accountX car au fil des suppressions/re-création de comptes, les numéros entre account et server divergent.

Pour le savoir on peut faire une recherche sur mail.server.serverx

mail.server.serverX.name donne le nom du compte
mail.account.accountX.server donne le server pointé
Par exemple pour moi, account13 pointe sur server8 (compte LaVacheenLiberté) alors qu'account8 ne pointe pus sur rien.

Pour lister tous les noms des comptes d’un seul coup :
mail.server.server*.na
Il faut modifier mail.accountmanager.default pour pouvoir placer le compte que l’on souhaite voir apparaître toujours en premier : si le premier account n'est pas celui par défaut, il y a conflit donc pas de tri !

Une fois terminé on relance Thunderbird.

Sinon, plugin https://addons.mozilla.org/fr/thunderbird/addon/manually-sort-folders/

abook.mab est le carnet d'adresses

 

 

Posté par Luc Fricot à 22:25 - Permalien [#]
Tags : ,

21 août 2020

Comment zoomer un RichEdit

Ces quelques lignes de code,repondent à une question que je me.pose depuis 2006

procedure SetZoom(const RichEdit: TCustomRichEdit; const Value: Integer);
const EM_SETZOOM = (WM_USER + 225);
begin
  SendMessage(RichEdit.Handle, EM_SETZOOM, Value, 100);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  SetZoom(RichEdit1, 200);
end;

Je ne sais pas si si 200=200%, mais selon cette valeur, zoome ou dézoome (pivot=100 ?).

 

Posté par Luc Fricot à 12:16 - Permalien [#]
Tags : , , ,

10 août 2020

Utiîser Delphi 7 sous Windoéws 10 (en vrac)

SommaireGénéralitésInstallation et informations (7)

Pour installer Delphi 7 sur les OS récents (Windows 8 et 10) :

- lancer l'installation en mode administrateur (clic droit sur le programme d'installation puis "exécuter en tant qu'administrateur"
- installer D7 dans un répertoire non protégé par Windows. Par exemple C:\Borland\Delphi7. Ne pas utiliser Program Files ni Program Files x86.

Avant de lancer Delphi 7, faire le clic droit sur son raccourci et ensuite clic sur propriété puis onglet compatibilité :

- Cocher "Exécuter ce programme en mode de comptabilité sur" : Windows XP (Service pack 3)
- Cocher "Exécuter ce programme en tant qu'administrateur

Delphi7 peut alors être lancé sans problème, même si un message d'avertissement apparaît.

La première fois et à chaque mise à jour de Windows : installer ou réinstaller l'aide au format Hlp (Voir la FAQ : "Comment utiliser les fichiers d'aide au format hlp sous les nouveaux OS Windows (7 et plus) ?". La touche F1 sera alors active.

Pour le développement d'applications :

Si l'installation de l'application se fait dans Program Files (x86) ne pas mettre de fichier ini (ni aucun fichier de données) dans ce répertoire (il faut utiliser les répertoires spéciaux de Windows).

l'installation de Delphi 7 est encore possible
oui, pour peu que elle soit faite en tant qu'administrateur, que le chemin d'installation ne soit pas program files mais un répertoire créé à partir de la racine
pour le lancer il faudra aussi le faire en tant qu'administrateur , changer la propriété du raccourci de lancement

mais pourquoi veux-tu le déplacer ? Moi je l'ai installé dans program files, donné le contrôle total même si mon compte est administrateur, et tout fonctionne correctement (jusqu'à présent).
P.S. :

tu n'a même pas besoin de le lancer en admin si tu as donné les droits sur le dossier.
je te conseille aussi de prendre la version starter de Delphi 10.1 Berlin qui est devenue gratuite

https://www.embarcadero.com/fr/produ...ional-download
Une procédure pour faire marcher l'aide de Delphi7 sous windows 10 est dispo ici:

https://www.tenforums.com/general-su...dows-10-a.html

ça marche pour moi sous Windows 10 pro x64 (Delphi7 pro) et permet de retrouver une aide contextuelle avec la touche F1.

Sur cette page de forum est décrite (en anglais) la procédure qui en gros remplace le fichier winhlp32.exe de windows 10 qui simplement affiche un message comme quoi les .hlp c'est obsolète...
Mais en remplaçant cet exe par celui de windows XP (les fichiers sont mêmes fournis, win10 x64 nécessite ? le winhlp32.exe de windows XP 64bit, pas très courant), ça fonctionne !!!


 0n procédure en Français est déjà sur la FAQ Delphi depuis 2015 ici
Avec téléchargement possible des fichiers nécessaires.

On peui prendre la version starter de Delphi 10.1 Berlin qui est devenue gratuite

https://www.embarcadero.com/fr/produ...ional-download

Posté par Luc Fricot à 22:54 - Permalien [#]
Tags : , , ,

11 juillet 2020

ODS 8. Officiel du Scrabble 2020.

https://www.listesdemots.net/touslesmots.txt

L'Officiel du Scrabble (ODS) ou L'Officiel du jeu Scrabble est le dictionnaire officiel du jeu de Scrabble francophone

Nombre de mots de l'ODS
VersionAnnéeEntréesMots23456789101112131415
ODS 11990 56 664 344 001 73 507 2 149 6 776 15 606 28 244 41 982 51 867 54 469 49 469 39 170 27 304 16 862 9 523
ODS 21994 58 154 353 526 74 534 2 233 6 984 16 016 28 957 43 115 53 272 55 885 50 802 40 264 28 121 17 428 9 841
ODS 31999 60 137 364 370 75 560 2 319 7 184 16 396 29 611 44 109 54 620 57 412 52 357 41 696 29 273 18 309 10 449
ODS 42004 60 894 369 085 75 571 2 364 7 277 16 622 29 996 44 664 55 309 58 149 53 026 42 227 29 666 18 550 10 589
ODS 52008 63 419 378 989 77 589 2 441 7 483 17 035 30 633 45 642 56 573 59 526 54 442 43 517 30 690 19 279 11 062
ODS 62012 64 970 386 264 80 610 2 509 7 645 17 318 31 070 46 329 57 467 60 487 55 436 44 468 31 491 19 892 11 462
ODS 72016 66 541 393 670 80 621 2 564 7 823 17 681 31 674 47 159 58 433 61 587 56 463 45 329 32 127 20 358 11 771
ODS 82020 68 125 402 325 81 633 2 623 7 980 17 991 32 230 48 039 59 584 62 954 57 784 46 501 32 962 20 886 12 077

Mots ajoutés (

Mots ajoutés (2 et 3 lettres)

  • ODS 1 (1990)
    • 2 lettres : BI
    • 3 lettres : ADO, ALU, BOG, DAW, GOS, LEM, LOG, LOS, MAO, MOB, NIF, OYE, PEC, POP, REZ, RIO, ROS, ZOB
  • ODS 2 (1994)
    • 2 lettres : EX
    • 3 lettres : ASA, BIO, CIF, CUT, FAX, FOG, GÉO, HUN, IBN, IBO, ISO, JAB, KOP, KWA, MAX, MÉO, MIX, MOS, NEM, OLA, OUH, RAC, RAP, TAG, UTE, WOK, YAM
  • ODS 3 (1999)
    • 2 lettres : AA
    • 3 lettres : AAS, ADA, CIS, CRÉ, DIN, DOC, FAF, IPÉ, IXA, IXÉ, JAM, KYU, MOA, MOX, NAY, NÉO, NEY, OUD, RAM, SAX, SPA, TAR, TIP, WEB, YUE, ZEF
  • ODS 4 (2004)
    • 2 lettres : aucun
    • 3 lettres : ÉWÉ, HUB, MÉL, PAP, SOM, TAF, TAT, WAD, WAP, ZEC, ZUP
  • ODS 5 (2008)
    • 2 lettres : BA, BÊ
    • 3 lettres : AÏD, DOP, DUB, ÉCO, EXO, FAQ, GEX, GUR, KÉA, KRU, MMM, MOR, MUG, OBA, PHÔ, QIN, YET, ZEK
  • ODS 6 (2012)
    • 2 lettres : OM, TO, UD
    • 3 lettres : ANI, COM, COX, DAH, DÉO, DZO, FON, KAT, KEN, KET, KOÏ, LED, LUO, NAC, NAN, NIM, SUP, TOF, TOS, UDS, WOH
  • ODS 7 (2016)
    • 2 lettres : aucun
    • 3 lettres : BEU, COT, DEM, EVE, FIU, GIF, LOA, LOL, OIS, OIT, VOC
  • ODS 8 (2020)
    • 2 lettres : QI
    • 3 lettres : APP, ARF, BIM, DEJ, DEL, DIP, FIX, GHI, MAG, QIS, RIB, TEF

  • Il y a 81 mots de deux lettres

    AA AH AI AN AS AU AY BA BE BI BU CA CE CI DA DE DO DU EH EN ES ET EU EX FA FI GO HA HE HI HO IF IL IN JE KA LA LE LI LU MA ME MI MU NA NE NI NO NU OC OH OM ON OR OS OU PI PU QI RA RE RI RU SA SE SI SU TA TE TO TU UD UN US UT VA VE VS VU WU XI

  • l y a 633 mots de trois lettres

    AAS ACE ADA ADO AGA AGE AGI AID AIE AIL AIR AIS AIT ALE ALU AME AMI ANA ANE ANI ANS API APP ARA ARC ARE ARF ARS ART ASA ASE AUX AVE AXA AXE AYS BAC BAH BAI BAL BAN BAR BAS BAT BAU BEA BEC BEE BEL BEN BER BEU BEY BIC BIM BIO BIP BIS BIT BLE BOA BOB BOF BOG BOL BON BOP BOT BOX BOY BRU BUE BUG BUN BUS BUT BYE CAB CAF CAL CAP CAR CAS CEP CES CET CHU CIF CIL CIS CLE COB COI COL COM CON COQ COR COT COU COX CRE CRI CRU CUL CUT DAB DAH DAL DAM DAN DAO DAW DEB DEJ DEL DEM DEO DER DES DEY DIA DIN DIP DIS DIT DIX DOC DOL DOM DON DOP DOS DOT DRU DRY DUB DUC DUE DUO DUR DUS DUT DZO EAU ECO ECU EGO ELU EMU EON EPI ERE ERG ERS EST ETA ETE EUE EUH EUS EUT EUX EVE EWE EXO FAC FAF FAN FAQ FAR FAT FAX FEE FER FEU FEZ FIA FIC FIE FIL FIN FIS FIT FIU FIX FLA FOB FOC FOG FOI FOL FON FOR FOU FOX FUI FUN FUR FUS FUT GAG GAI GAL GAN GAP GAY GAZ GEL GEO GEX GHI GIF GIN GIS GIT GLU GOI GON GOS GOY GRE GUE GUI GUR GUS GYM HAI HAN HEM HEP HEU HIA HIC HIE HIP HIT HOP HOT HOU HUA HUB HUE HUI HUM HUN IBN IBO ICI IDE IFS ILE ILS ION IPE IRA IRE ISO IVE IXA IXE JAB JAM JAN JAR JAS JET JEU JOB JUS KAN KAS KAT KEA KEN KET KHI KID KIF KIL KIP KIR KIT KOB KOI KOP KOT KRU KSI KWA KYU LAC LAD LAI LAO LAS LED LEI LEK LEM LES LET LEU LEV LEZ LIA LIE LIN LIS LIT LOA LOB LOF LOG LOI LOL LOS LOT LUE LUI LUO LUS LUT LUX LYS MAC MAG MAI MAL MAN MAO MAS MAT MAX MEC MEL MEO MER MES MET MIE MIL MIN MIR MIS MIT MIX MMM MOA MOB MOI MOL MON MOR MOS MOT MOU MOX MUA MUE MUG MUR MUS MUT MYE NAC NAN NAY NEE NEF NEM NEO NES NET NEY NEZ NIA NIB NID NIE NIF NIM NIT NOM NON NOS NUA NUE NUI NUL NUS OBA OBI ODE OFF OHE OHM OIE OIL OIS OIT OKA OLA OLE ONC ONT OPE ORE ORS OSA OSE OST OTA OTE OUD OUF OUH OUI OUT OVE OXO OYE PAF PAL PAN PAP PAR PAS PAT PEC PEP PET PEU PFF PHI PHO PIC PIE PIF PIN PIS PIU PLI PLU POP POT POU PRE PRO PSI PST PSY PUA PUB PUE PUR PUS PUT PUY QAT QIN QIS QUE QUI RAB RAC RAD RAI RAM RAP RAS RAT RAY RAZ REA REE REG REM REZ RHE RHO RIA RIB RIE RIF RIO RIS RIT RIZ ROB ROC ROI ROM ROS ROT RUA RUE RUS RUT RUZ RYE SAC SAI SAL SAR SAS SAX SEC SEL SEN SEP SES SET SIC SIL SIR SIS SIX SKA SKI SOC SOI SOL SOM SON SOT SOU SPA SPI SUA SUC SUD SUE SUP SUR SUS SUT TAC TAF TAG TAN TAO TAR TAS TAT TAU TEC TEE TEF TEK TEL TEP TER TES TET TEX THE TIC TIF TIN TIP TIR TOC TOF TOI TOM TON TOP TOS TOT TRI TUA TUB TUE TUF TUS TUT UDS UNE UNI UNS URE USA USE UTE VAL VAN VAR VAS VAU VER VES VET VIA VIE VIF VIL VIN VIS VIT VOC VOL VOS VUE VUS WAD WAP WAX WEB WOH WOK WON WUS YAK YAM YEN YET YIN YOD YUE ZEC ZEE ZEF ZEK ZEN ZIG ZIP ZOB ZOE ZOO ZOU ZUP ZUTè

Posté par Luc Fricot à 17:34 - - Permalien [#]
Tags : ,

Facyl Scrabble version 3.32 / ODS8

  • Facyl Scrabble : Application complète gratuite pour jouer au Scrabble sous Windows sans connection à Internet. Dico/Lexique local >400 000  mots (conjugaisons, accords...)
  • Cette version  utilise le dictionnaire Officiel du Scrabble Français (ODS8).
    Le bouton  Joueur machine (F11) permet de faire jouer l'ordinateur pour trouver  la  meilleure combinaison possible.
     
    FacylScrabble
     
    Documentation:AideFScra.pdf Page de téléchargement :http://lavacheenliberte.pagesperso-orange.fr/scrabble/Tfacylscrabble.html

    *Caractéristiques de la Version 2.00

Posté par Luc Fricot à 11:40 - - Permalien [#]
Tags : ,

11 juin 2020

Hydroxychloroquine : le Christ s’est arrêté à Marseilleè

Comment lutter contre la promesse d’un traitement miraculeux ? Comment sortir du face-à-face entre un professeur au discours de gourou et des scientifiques aux airs de rats de laboratoires ?

Au temps du confinement, notre famille est devenue adepte de WhatsApp. Un jour, mon frère aîné, la soixantaine, artiste de métier et fils d’une éducation laïque et républicaine, nous a fait partager une vidéo YouTube du professeur Didier Raoult. Dans un cours «improvisé», celui-ci expliquait, doctement, les éléments d’un traitement miraculeux du Covid-19 : l’hydroxychloroquine. Devant nos yeux ébahis, nous assistions, dès l’administration de ces molécules, à l’effondrement des courbes de charges virales ! Etudiée de plus près, d’un point de vue rationnel et au regard de la rigueur scientifique, la démonstration était… catastrophique. De quoi jeter sa copie au nez d’un interne négligent. Peu importe ! Le ton était donné. D’un côté, l’intuition du professeur, étayée par une communication professionnelle et un sens aigu de la vulgarisation ; de l’autre, des scientifiques à l’expression austère, prudente, et peu enclins à se faire mettre en pièces sur les réseaux sociaux. En un mot, un discours de gourou face au murmure de rats de laboratoires.

Comment lutter contre une réponse simple à une question complexe ? Vieux problème. Surtout quand cette question réveille toutes les peurs ancestrales de l’humanité ! Et que cette réponse simple - un traitement miraculeux - est soutenue massivement par une multitude de scientifiques autoproclamés, des professeurs retraités à la recherche d’une ultime heure de gloire, de politiciens flairant le bon coup, faux spécialistes mais vrais communicants, avides de s’associer à une des nombreuses découvertes fracassantes sur la prise en charge du Covid-19.

à lire aussi Didier Raoult, électron politiquement libre

Tous sont d’accord sur un point : la médecine académique fait fausse route. Et la solution est simple. Il suffisait d’y penser ! Et pourquoi les médecins classiques n’y ont pas pensé ? Euh… vous le savez bien, voyons. C’est que l’argent guide la planète et que les laboratoires pharmaceutiques complotent pour se faire le plus d’argent possible sur la douleur des malades. Ce postulat posé, les conséquences, et les théories farfelues, s’imposent avec la force de la révélation. Citons, pêle-mêle, le réseau 5G, responsable de la propagation du virus, le secret caché du zinc, la chloroquine, l’azithromycine, la tisane à l’artémisia, l’intubation qui ne sert à rien et la ventilation mécanique qui achève les malades. Bref, nous, soignants au pied du lit de nos malades, on n’a rien compris !

Plus fort que l’absence de méthode scientifique, il y a la méthode de persuasion, toujours la même, l’appel à des bribes d’observations plus ou moins crédibles qu’un rapide raccourci transforme en un lien de causalité pour aboutir à une conclusion logique, mais fausse, et surtout jamais soumise à une expérimentation comparative. On pourrait appeler cela un sophisme rigoureusement scientifique.

à lire aussi A Marseille, «Raoult est un Che Guevara de chez nous»

Exemple : l’artémisia est largement utilisée en Afrique dans le traitement préventif du paludisme (vrai). Les pays africains sont moins touchés par le Covid-19 (vrai) donc l’artémisia est efficace contre le Covid-19. Et comme il y a urgence, les malades meurent… alors, vite, un médicament ! Et au diable les règles de sécurité !

En médecine, nous connaissons la possibilité de donner un traitement - à défaut de tout autre - sans preuve de son efficacité, avec une certitude fondée sur la conviction du médecin. On appelle cela un traitement «à titre compassionnel». Sauf que le problème survient quand cette conviction n’est alimentée que par des discours sans fondement rationnel.

Oui, il faut aller vite, bien sûr, mais pourquoi alors s’affranchir du B.A.BA d’éléments de preuve ? D’autant qu’en cette période de Covid, le marathon de la recherche clinique a été accéléré d’une manière incroyable. Là où il fallait au minimum une année entière pour obtenir toutes les autorisations avant de débuter un essai médicamenteux en procédure randomisée (tirage au sort), l’urgence du Covid a réduit le délai à… quinze jours.

Aller vite ! Cet argument a été invoqué par le Pr Didier Raoult lors de la présentation des 1 061 patients inclus dans une recherche observationnelle. Mais pourquoi ne pas avoir inclus un groupe de patients «contrôle» obtenu par tirage au sort (randomisation) ? La comparaison des deux groupes aurait pu donner une réponse définitive. Sa réponse ? L’intuition, toujours l’intuition, encore l’intuition, tellement forte qu’elle devient force de loi scientifique ! Ne restait plus qu’à trouver LE médicament miracle…

En médecine, cela existe, comme on l’a vu lors de la découverte de la pénicilline, mélange de hasard et de rigueur scientifique, et non due à la seule intuition ! Cette intuition magique, associée à la force et au génie de la communication - avec la complaisance active des médias - tient alors lieu de… preuve. Même si nous n’avons aucun exemple de médicament issu d’une révélation quasi divine qui a pu bouleverser la prise charge de patients et apporter un progrès thérapeutique majeur. En revanche, nous savons tous que c’est l’expérience et la comparaison qui a permis de faire progresser la médecine. Un des grands progrès récents de la médecine, le traitement des AVC (accidents vasculaires cérébraux) par fibrinolyse et thrombectomie, est issu de recherches cliniques avec des résultats spectaculaires en termes de pronostic fonctionnel.

Le problème, majeur, se pose quand la seule intuition et une communication à grand spectacle veulent tenir lieu de preuve. Et que face à un quasi divin fondé sur la croyance - «je sens, je sais, donc tu dois croire» - la médecine officielle et ses contre-pouvoirs paniquent en réagissant d’une façon tout aussi maladroite.

à lire aussi Didier Raoult, général Boulanger de la médecine

L’exemple le plus flagrant est ce qui a suivi la publication, par une revue médicale de référence, The Lancet, d’une étude observationnelle rétrospective associant surmortalité et traitement par l’hydroxychloroquine. Les auteurs ont pourtant souligné qu’il s’agissait d’une étude à bas niveau de preuve (absence de lien de causalité) et conclu que seule une étude randomisée prospective pourrait répondre au lien entre hydroxychloroquine et efficacité /dangerosité dans le traitement du Covid-19.Peu importe ! La réaction de nos tutelles OMS et ANSM a été immédiate et radicale : interdiction des essais sur la chloroquine ! Une réponse couperet qui n’aura évidemment comme conséquence que d’éterniser le débat et d’enraciner des théories obscurantistes ou complotistes. Ainsi, on ne pourra plus démontrer que son protocole ne marche pas, voire qu’il peut être dangereux… Un beau cadeau à la médecine fondée sur la croyance. Quelle aberration ! C’est la victoire totale du Pr Didier Raoult. Finalement, l’article a été rétracté par trois des quatre auteurs, ajoutant à la confusion ambiante.

La grande victime de cette spectaculaire et brutale confrontation est donc bien, au final, la médecine. Pas celle de la croyance, grande gagnante de ce spectacle, mais bien l’autre médecine, la nôtre, celle fondée sur les preuves.

D’ailleurs, mon aîné, l’artiste, vient de se retirer du groupe WhatsApp, histoire de ne plus entendre mes arguments.

Posté par Luc Fricot à 11:47 - Permalien [#]

29 avril 2020

OUÏR verbe à 2 conjugaisons

Infinitif : OUÏR
Indicatif présent :

  • OUÏS OUÏT OUÏSSONS OUÏSSEZ OUÏSSENT
  • OIS OIT OYONS OYEZ OIENT

Indicatif imparfait :

  • OUÏSSAIS OUÏSSAIT OUÏSSIONS OUÏSSIEZ OUÏSSAIENT
  • OYAIS OYAIT OYIONS OYIEZ OYAIENT

Indicatif futur simple :

  • OUÏRAI OUÏRAS OUÏRA OUÏRONS OUÏREZ OUÏRONT

Indicatif passé simple :

  • OUÏS OUÏT OUÏMES OUÏTES OUÏRENT

Subjonctif présent :

  • OUÏSSE OUÏSSES OUÏSSIONS OUÏSSIEZ OUÏSSENT
  • OIE OIES OYIONS OYIEZ OIENT

Subjonctif imparfait :

  • OUÏSSE OUÏSSES OUÏT OUÏSSIONS OUÏSSIEZ OUÏSSENT

Conditionnel présent :

  • OUÏRAIS OUÏRAIT OUÏRIONS OUÏRIEZ OUÏRAIENT

Impératif :

  • OUÏS OUÏSSONS OUÏSSEZ
  • OIS OYONS OYEZ

Participe présent :

  • OUÏSSANT
  • OYANT

Participe passé :

  • OUÏ OUÏS OUÏE OUÏES

Posté par Luc Fricot à 15:56 - Permalien [#]

03 avril 2020

Ressortir : un verbe à significations multiples

2 étymologies, 2 conjugaisons, 6 acceptions
Verbe 1 (3ème groupe) De sortir, avec le préfixe re-.
Verbe 2 (2àme groupe) De ressort.

Verbe 1

ressortir \ʁə.sɔʁ.tiʁ\ transitif direct ou intransitif 3e groupe (voir la conjugaison)

Se conjugue sur le modèle de SORTIR (je ressors ils ressortent ressortant)

  1. Sortir de nouveau.
    • Il est sorti ce matin et il est ressorti deux heures après.
    • Il a ressorti ses vieilles affaires.
  2. Sortir après être entré.
    • Une jeune fille a été frappée d’un coup de baïonnette à la mâchoire gauche et l’arme est ressortie par la pommette droite. — (Rodolphe Archibald Reiss, Comment les Austro-Hongrois ont fait la guerre en Serbie, 1915)
    • […], il entra dans le bois, d’où il ressortit un peu après, écorçant avec son couteau une trique de grosseur assez respectable. — (H. G. Wells, La Guerre dans les airs, 1908, traduction d’Henry-D. Davray et B. Kozakiewicz, Mercure de France, Paris, 1910, page 381 de l’éd. de 1921)
  3. (Figuré) Apparaître en opposition frappante, saillante.
    • Les élégantes composaient les rosés de leur teint à l’aide d’un vermillon habilement nuancé ; le kohl d’Égypte servait à faire ressortir l’éclat des yeux, […]. — (Émile Jonveaux, Curiosités de la toilette - La recherche de la beauté, dans « Musée des familles : lectures du soir »‎ - page 323, 1867)
    • Les ombres font ressortir les lumières. – De légers défauts semblent faire valoir davantage d’heureuses qualités.
  4. Résulter, se dégager, apparaître comme conséquence.
    • Il en ressort que la présence de MCPA a pour effet de réduire la période d'emploi du mélange ternaire (3,6-DCP + mécoprop + MCPA) par rapport au binaire (3,6-DCP + mécoprop) de la mi-tallage au début montaison au lieu de début tallage au début montaison. — (Compte rendu de la Conférence du COLUMA, Comité français de lutte contre les mauvaises herbes, 1977, vol.4, page 1062)
    • Il ressort des termes mêmes de l’article 38 de la Constitution que c’est à sa demande que le Gouvernement peut être autorisé par le Parlement à prendre par ordonnances des mesures qui sont normalement du domaine de la loi. — (Secrétariat général du gouvernement et Conseil d’État, Guide de légistique, 3e version, La Documentation française, 2017, ISBN 978-2-11-145578-8 → lire en ligne)

Notes

Le verbe ressortir se conjugue avec l’auxiliaire être pour former les temps composés de la voix active quand il est employé intransitivement. Il se conjugue de façon normale, avec l’auxiliaire avoir, quand il est accompagné d’un complément d’objet.

 

Verbe 2

ressortir \ʁə.sɔʁ.tiʁ\ transitif indirect 2e groupe (voir la conjugaison)

Se conjugue sur le modèle de FINIR(je ressortis ils ressortissent ressortissant)

  1. (Droit) Être du ressort de quelque chose.
    • Mais selon la CAA de Douai, si la transaction conclue par une personne morale de droit public, est, en principe, un contrat de nature civile, tel n’est pas le cas où il est manifeste que les différends qui s’y trouvent compris ressortissent[sic : ressortent] principalement à la compétence du juge administratif. — (« Transaction : quel est le juge compétent ? », article paru le 24 mars 2020 sur achatpublic.info, consulté le jour même)
    • L’affaire ressortit à la cour d’assises.
  2. Concerner, se rapporter à.
    • Son aptitude ressortissait à la perception extrasensorielle.
    • En dehors des ballerines, il n’y a rien dans l’apparence de cette adolescente qui ressortisse à « ce qui se fait » alors et qu’on voit dans les journaux de mode et les magasins des grandes villes. — (Annie Ernaux, Les années, Gallimard, 2008, collection Folio, page 56.)

Note : Ce verbe est très souvent mal conjugué ou mal construit, souvent simultanément :

  • Il n’en va pas de même des conventions qui ressortent à la qualité d’actionnaires et qu’on appelle « conventions d’actionnaires », tout au moins dans le système juridique anglo-canadien-québécois. — (Marc Giguère, Le droit de la PME : notions fondamentales, Presses Université Laval, 1993, p. 132)
    au lieu de « Il n’en va pas de même des conventions qui ressortissent à la qualité d’actionnaires ».
  • la mathématique, qui a pour objet les formes inabstraites et stables, ressortit de l’intellect et de l’imagination — (Edmond Vansteenberghe, Le cardinal Nicolas de Cues (1401 - 1464) ; l’action – la pensée, Slatkine, 1974, p. 350)
    au lieu de « la mathématique ressortit à l’intellect ».
  • Qu’un dessinateur dessine Mahomet à tête de chien, s’il en a envie, cela ressort de la liberté d’expression. — (Daniel Schneidermann, 09h15 le neuf-quinze, « Copenhague : désolé, je ne suis pas très 11 janvier », le 16/02/2015)
    au lieu de « cela ressortit à la liberté d’expression ».

 

Posté par Luc Fricot à 16:16 - Permalien [#]

01 avril 2020

Notepad++ : Shortcuts for the Edit menu

Edit Shortcuts

 

Default shortcuts

Below is the list of predefined keyboard and mouse shortcuts for Notepad++. They can be freely configured using the shortcut mapper, as well as all the commands which were not bound to shortcuts by default. This list does not include standard shortcuts provided by Notepad++-related plugins.

Edit menu
ShortcutAction
Ctrl-C Copy
Ctrl-Insert Copy
Ctrl-Shift-T Copy current line to clipboard
Ctrl-X Cut
Shift-Delete Cut
Ctrl-V Paste
Shift-Insert Paste
Ctrl-Z Undo
Alt-Backspace Undo
Ctrl-Y Redo
Ctrl-A Select All
Alt-Shift-Arrow keys, or Alt + Left mouse click Column Mode Select
Ctrl + Left mouse click Start new selected area. Only multiple stream areas ca be selected this way.
ALT-C Column Editor
Ctrl-D Duplicate Current Line
Ctrl-T Switch the current line position with the previous line position
Ctrl-Shift-Up Move Current Line, or current selection if a single stream, Up
Ctrl-Shift-Down Move Current Line, or current selection if a single stream, Down
Ctrl-L Delete Current Line
Ctrl-I Split Lines
Ctrl-J Join Lines
Ctrl-G Launch GoToLine Dialog
Ctrl-Q Block comment/uncomment
Ctrl-Shift-Q Stream comment
Tab (selection of one or more full lines) Insert Tabulation or Space (Indent)
Shift-Tab (selection of one or more full lines) Remove Tabulation or Space (outdent)
Ctrl-BackSpace Delete to start of word
Ctrl-Delete Delete to end of word
Ctrl-Shift-BackSpace Delete to start of line
Ctrl-Shift-Delete Delete to end of line
Ctrl-U Convert to lower case
Ctrl-Shift-U Convert to UPPER CASE
Ctrl-B Go to matching brace
Ctrl-Space Launch CallTip ListBox
Ctrl-Shift-Space Launch Function Completion ListBox
Ctrl-Enter Launch Word Completion ListBox
Ctrl-Alt-R Text Direction RTL
Ctrl-Alt-L Text Direction LTR
Enter Split line downwards, or create new line
Shift-Enter Split line downwards, or create new line

Posté par Luc Fricot à 17:40 - Permalien [#]

04 février 2020

e ministère de l'Éducation nationale en Turquie a annoncé qu'il va offrir des accès à Delphi à un million d'étudiants

-
Dans plus de 1600 écoles professionnelles et techniques affiliées au ministère

Le ministère de l'Éducation nationale en Turquie a récemment annoncé qu'il allait offrir des licences Embarcadero Delphi à son corps d'étudiants. Les médias turcs estiment que cette initiative va toucher plus d'un million d'étudiants dans plus de 1600 écoles professionnelles et techniques affiliées au ministère. À cet effet, un protocole de coopération de cinq ans a été signé entre le ministère et le Groupe Information et Technologie (Bilgi ve Teknoloji Grubu).


Dans une déclaration, le directeur de l'enseignement professionnel et technique du ministère de l'Éducation nationale, Kemal Varın Numanoğlu, a indiqué qu'ils se soucient de la formation des étudiants ayant les compétences les plus avancées requises par le marché du travail sur la plateforme nationale et internationale et que tous les processus éducatifs sont effectués en étroite coopération avec le secteur.

Assurant que le ministère poursuit son travail dans cet objectif, Numanoğlu a rappelé que le monde se tourne de plus en plus vers le numérique et que l'importance de l'industrie du logiciel ne cesse de croître. Précisant que de nouvelles et différentes opportunités d'emploi naissent chaque jour dans ce secteur, Numanoğlu a affirmé que le ministère souhaite accompagner dans leur éducation des étudiants qui pourraient maîtriser les technologies de l'information et rattraper le retard. Raison pour laquelle le protocole a été signé avec la participation de Yücel Tepeköy, fondateur du Groupe Information et Technologie.

Numanoğlu est persuadé qu'en enseignant les technologies de développement d'applications modernes, une grande innovation sera réalisée dans l'éducation. Le logiciel Embarcadero Delphi sera installé dans les laboratoires informatiques des écoles dans les domaines des technologies de l'information, des technologies des dispositifs biomédicaux, de la technologie électrique-électronique, des technologies d'automatisation industrielle et des technologies des énergies renouvelables des écoles professionnelles et techniques.

Le Groupe Information et Technologie offrira aux enseignants une formation sur le logiciel Delphi, en plus de fournir le logiciel à installer dans les écoles : « Les étudiants recevront des bourses en organisant des concours nationaux. Le protocole vise également à acquérir de nouvelles compétences dans le monde du logiciel en participant à des événements sectoriels », peut-on lire sur la note.


Certains développeurs se montrent déjà enthousiastes face à cette initiative. C'est le cas de Jon L. Aasenden qui déclare :

« Il est très important de réintroduire l'objet-pascal dans les universités et l'enseignement. Pas seulement pour Delphi en tant que produit ou Embarcadero en tant qu'entreprise, mais pour garantir que la prochaine génération de développeurs de logiciels aura une solide compréhension des concepts de programmation fondamentaux ; des concepts qui représentent les éléments constitutifs sur lesquels repose tout logiciel, dont des langages comme Java et C# s'écartent ou obscurcissent.

« Object Pascal en tant que langage (y compris Freepascal, Oxygene et divers compilateurs alternatifs) fluctue entre #11 et #14 sur l'indice Tiobe depuis quelques années. Tiobe est un index qui suit l'utilisation et la popularité des langages dans le monde et aide les entreprises à savoir où investir. Ainsi, malgré ce que les gens ont été amenés à croire, Delphi a connu une croissance stable pendant de nombreuses années et est beaucoup plus répandue que ne le pensaient les sceptiques.

« En tant que développeur ardent de Delphi, c'est une excellente nouvelle! Non seulement cela aidera la prochaine génération d'étudiants à apprendre la programmation appropriée à partir de zéro - mais cela aidera également à éliminer certains des mythes infondés entourant le langage (et Delphi en particulier) qui sont malheureusement encore diffusés. La plupart de ces rumeurs proviennent de la prise de contrôle hostile de Borland par Microsoft il y a une vingtaine d'années, et ne reflètent en rien la réalité de 2020. Delphi en particulier a traversé plusieurs phases d'évolution et est aujourd'hui à égalité avec son langage compagnon C/C++.

« Je suis ravi que tant de jeunes développeurs aient désormais accès à une édition Delphi moderne et pertinente. Delphi a été un favori des enseignants et des étudiants partout dans le monde, et le retour de Delphi dans les établissements d'enseignement du monde entier est un signe que l'ère du compromis perd de son emprise ».

Sources : Time Turk, billet Aasenden

Posté par Luc Fricot à 15:37 - Permalien [#]

22 septembre 2019

Souris au clavier sous Windows

Mon Touchpad est mort (physiquement ?).
Une Souris classique ne me convient pas (place, dextérité, ...) et ce n'est pas pour faire du graphisme.

Pour activer le contrôle de la souris avec le pavé numérique
Alt + Maj + Num Lock, puis confirmer

touches Alt gauche et Maj gauche

 

Bonjour,

Lorsque le pavé numérique est utilisé comme souris, les touches fonctionnent de la façon suivante :

Déplacements :

1 : diagonale bas gauche
2 : vertical bas
3 : diagonale bas droite
4 : horizontal gauche
6 : horizontal droite
7 : diagonale haut gauche
8 : vertical haut
9 : Diagonale haut droite

Clicks :
5 : clic simple
+ : Double clic

Présélection des clics
/ : présélection du clic gauche
- : présélection du clic droit
* : présélection des deux touches de clic (simultanées)

Cliqué déplacé:
0 : verrouillage du clic gauche (= maintient du clic gauche enfoncé)
. : déverrouillage du clic gauche (= relacher le clic gauche)
Dans la barre des tâches on voit l'état actuel

 

Posté par Luc Fricot à 16:18 - Permalien [#]