OVH Cloud OVH Cloud

Essai Agent Unicode Extension beta version 0.3.2020.700

80 réponses
Avatar
Otomatic
Pour essai de :
Agent Unicode Extension (AgtEx) beta version 0.3.2020.700

English
All human beings are born free and equal in dignity and rights. They are
endowed with reason and conscience and should act towards one another in
a spirit of brotherhood.

French
Les hommes naissent et demeurent libres et égaux en droits. Les
distinctions sociales ne peuvent être fondées que sur l'utilité
commune.

Georgian
ყველა ადამიანი იბადება
თავისუფალი და თანასწორი
თავისი ღირსებითა და
უფლებებით. მათ მინიჭებული
აქვთ გონება და სინდისი და
ერთმანეთის მიმართ უნდა
იქცეოდნენ ძმობის
სულისკვეთებით.

Greek (polytonic)
Ὅλοι οἱ ἄνθρωποι γεννιοῦνται
ἐλεύθεροι καὶ ἴσοι στὴν
ἀξιοπρέπεια καὶ τὰ δικαιώματα.
Εἶναι προικισμένοι μὲ λογικὴ καὶ
συνείδηση, καὶ ὀφείλουν νὰ
συμπεριφέρονται μεταξύ τους μὲ
πνεῦμα ἀδελφοσύνης.

--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit
nouveau, même si c'est pire qu'avant et cela de toute évidence.
Henry de Montherlant - Va jouer avec cette poussière

10 réponses

4 5 6 7 8
Avatar
yamo'
Salut,
Olivier Miakinen a tapoté le 19/10/2020 21:29:
C'est fait.
Il y a un fichier mime.inc.php à inclure. Ce fichier fait 550 lignes dont
un bon tiers de commentaires explicatifs au début − sans compter les autres
commentaires parsemés un peu partout dans le code.

J'ai fait un premier test et je le trouve très concluant!
Je n'ai pas encore publié le code.
<rmme1c$v8c$
<news:rmme1c$v8c$
--
Stéphane
Avatar
yamo'
yamo' a tapoté le 20/10/2020 12:26:
Premier test :
Example 3:
fwrite($out, new MimeEncodeHeader("Subject", $subject) . "rn");
Pour comparer, j'ai laissé l'ancien encodage dans X-Subject.

Dernière version de NewsPortal avec le code d'Olivier :
Subject: Re: Essai avec le mot =?UTF-8?Q?«_Nullième_»_Agent? Unicode Extension beta version 0.3.2020.700
Pan 0.146 :
Subject: Re: Essai avec le mot =?iso-8859-1?B?qyBOdWxsaehtZSC7?= Agent
Unicode
Extension beta version 0.3.2020.700
--
Stéphane
Avatar
Eric Demeester
Bonjour,
yamo' (Mon, 19 Oct 2020 08:01:28 -0000 (UTC) - fr.comp.lang.php) :
Je m'astreins à poster avec newsportal mais, je préfère utiliser la
couche mailnews de Seamonkey...

Pas que ce soit très important, mais selon les cas, ton :
Newsportal-HTTP-Posting-Host:
est en IPv6 ou en IPv4.
Message-ID: <rmjh4n$1gs$
User-Agent: NewsPortal/0.50.1c
Newsportal-HTTP-Posting-Host: 2a01:e35:2e9c:92b0:3188:96c9:3b25:7127
Message-ID: <rmk7au$oin$
User-Agent: NewsPortal/0.50.1c
Newsportal-HTTP-Posting-Host: 192.168.0.254
Avatar
yamo'
Eric Demeester a tapoté le 20/10/2020 15:30:
Bonjour,

Bonjour,
yamo' (Mon, 19 Oct 2020 08:01:28 -0000 (UTC) - fr.comp.lang.php) :
Je m'astreins à poster avec newsportal mais, je préfère utiliser la
couche mailnews de Seamonkey...

Pas que ce soit très important, mais selon les cas, ton :
Newsportal-HTTP-Posting-Host:
est en IPv6 ou en IPv4.
Message-ID: <rmjh4n$1gs$
User-Agent: NewsPortal/0.50.1c
Newsportal-HTTP-Posting-Host: 2a01:e35:2e9c:92b0:3188:96c9:3b25:7127
Message-ID: <rmk7au$oin$
User-Agent: NewsPortal/0.50.1c
Newsportal-HTTP-Posting-Host: 192.168.0.254

Oui, c'est par je suis dans le LAN où est le raspberry donc des fois
ipv4 des fois ipv6... Même phénomène en NNTP pur.
Je ne sais pas comment modifier ça sur la box ou le serveur.
--
Stéphane
Avatar
Olivier Miakinen
Le 20/10/2020 10:34, yamo' m'a répondu :
Note que je n'utilise aucune fonction de gestion des charsets, ni rien pour
encoder en QP ou en Base64, tout est fait à la mimine. Les fonctions externes
que j'utilise sont :
- pour les chaînes de caractères : strlen(), substr(), sprintf() et ord() ;
- pour les regexp : preg_match() et preg_split() ;
- pour les tableaux : count() ;
et je crois bien que c'est tout.


J'avais oublié au moins une fonction :
- pour les nombres flottants : ceil()
Ça c'est pour le calcul de la taille d'un encodage en base64.
Mais je ne suis pas encore au point pour utiliser Git, alors pour le moment
j'ai mis le fichier mime.inc.php sur cjoint :

C'est assez simple d'ouvrir un compte sur gitlab (mon compte de github a
été utilisé pour ça).
Et tu peux faire les manipulations en web ou en vraies commandes git. Le
simple fait de vouloir éditer le code de mon dépôt va te proposer de
faire un fork où tu pourras éditer le code dans ton coin.

Il faudrait vraiment que je m'y mette. J'ai eu un cours à distance il y
a quelques semaines avec un utilisateur de LilyPond, mais je ne prends
jamais le temps de le mettre en pratique.
Je vais mettre un peu de temps à lire ton code et les commentaires.

J'ai mis pas mal de temps à les écrire !
D'ailleurs j'aurais quelques modifications à y apporter, sans incidence
majeure. Essentiellement ce sont des commentaires que je voudrais
modifier, mais aussi supprimer le code suivant aux alentours de la
ligne 320 ou bien le rendre optionnel :
if ($this->word_count == 0) {
// Avoid an error
$this->words = array("(NULL)");
$this->word_count = 1;
}
Ce que font ces 5 lignes (que j'ai oublié de documenter dans le gros
pavé d'explications au début), c'est éviter d'avoir un contenu vide
puisque c'est interdit dans le champ Subject − mais peut-être que
c'est autorisé pour d'autres champs.
Dans ce cas précis, au lieu d'avoir :
Subject:
on aurait :
Subject: (NULL)
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 20/10/2020 10:35, yamo' m'a répondu :
J'ai trouvé la solution idéale !
iconv("UTF-8", "US-ASCII//TRANSLIT//IGNORE", "Dom Féranpière©®" en UTF-8)
==> Dom Feranpiere(C)(R)
iconv("UTF-8", "US-ASCII//TRANSLIT//IGNORE", "Dom Féranpière©®" en Latin1)
==> Dom Franpire
Yapluka.

C'est en plus de ton code?

Non, parce que mon code mime.inc.php ne concerne actuellement que l'encodage
avant envoi d'un nouvel article, alors qu'ici c'est quelque chose à faire
à la réception d'un article venu de l'extérieur, avant de décoder les entêtes.
Mais si tu veux je peux aussi prévoir une partie décodage, avec une nouvelle
classe MimeDecodeHeader en plus de MimeEncodeHeader.
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 20/10/2020 12:43, yamo' a écrit :
J'ai fait un premier test et je le trouve très concluant!

Moi aussi !
Je n'ai pas encore publié le code.

Note que tu pourras l'utiliser non seulement pour Subject, mais aussi pour
Comments si tu en mets un (qui devrait avantageusement remplacer X-Comment)
et Organization.
*ATTENTION* : contrairement à ce qui est fait dans le code actuellement sur
gitlab, il ne faut surtout pas encoder User-Agent car les caractères '='
et '?' utilisés pour l'encodage MIME (et '/' seulement pour base64) sont
tous les trois interdits dans un 'token' de User-Agent. C'est pour ça que
Forté Agent s'y appelle ForteAgent et que MacCafé s'y appelle MacCafe.
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 20/10/2020 12:26, yamo' a écrit :
Premier test :
Example 3:
fwrite($out, new MimeEncodeHeader("Subject", $subject) . "rn");
Pour comparer, j'ai laissé l'ancien encodage dans X-Subject.

Subject: Re: Essai avec le mot =?UTF-8?Q?«_Nullième_»_Agent? Unicode Extension beta version 0.3.2020.700
X-Subject: Re: Essai avec le mot
=?UTF-8?Q?« Nullième » Agent? =?UTF-8?Q? Unicode Extension beta version 0.3.202? =?UTF-8?Q?0.700?
Ça me semble bien, surtout concernant la longueur de la première ligne...
en fait je t'ai déjà répondu sur fr.comp.lang.php.
--
Olivier Miakinen
Avatar
Olivier Miakinen
Le 20/10/2020 16:09, je répondais à yamo' :
Je vais mettre un peu de temps à lire ton code et les commentaires.

J'ai mis pas mal de temps à les écrire !

Si jamais tu n'as pas encore commencé à lire le code de la fonction
how_many_encodable(), ou si tu n'y comprends rien parce qu'elle
retourne un tableau lu avec l'instruction list(...), alors il est
temps que je t'envoie ma nouvelle version de mime.inc.php.
En effet, j'ai remplacé cette longue fonction par deux fonctions
plus courtes et plus faciles à comprendre, tout en laissant le
reste du code à peu près intact.
Mais si tu l'as déjà lue et que tu es sur le reste, rien ne presse.
Cordialement,
--
Olivier Miakinen
Avatar
yamo'
Salut,
Olivier Miakinen a tapoté le 20/10/2020 16:13:
Le 20/10/2020 10:35, yamo' m'a répondu :
J'ai trouvé la solution idéale !
iconv("UTF-8", "US-ASCII//TRANSLIT//IGNORE", "Dom Féranpière©®" en UTF-8)
==> Dom Feranpiere(C)(R)
iconv("UTF-8", "US-ASCII//TRANSLIT//IGNORE", "Dom Féranpière©®" en Latin1)
==> Dom Franpire
Yapluka.



Je vais tester pour voir.

C'est en plus de ton code?

Non, parce que mon code mime.inc.php ne concerne actuellement que l'encodage
avant envoi d'un nouvel article, alors qu'ici c'est quelque chose à faire
à la réception d'un article venu de l'extérieur, avant de décoder les entêtes.
Mais si tu veux je peux aussi prévoir une partie décodage, avec une nouvelle
classe MimeDecodeHeader en plus de MimeEncodeHeader.

Si tu veux, et que ça ne te demande pas trop de temps.
Tu me diras quel message de commit de je mets sur git
pour ton fichier php : juste la partie copyright?
--
Stéphane
4 5 6 7 8