[spip-dev] modif dans ecrire/configuration.php3 : id et label

Coucou,

je viens de corriger un micro bug dans les 'id' et 'label' de
configuration.php3 : les statistiques utilisaient l'id 'breves_on' et
'statisques_on' :slight_smile:

(dans 1.2-beta7)

-- Fil

Salut,

(Antoine, Fil, d=E9sol=E9 pour mon message pr=E9c=E9dent, Miel est revenu...=
)

Je viens d'installer dans la 1.2 beta 7 les fichiers modifi=E9s suivants:

/ecrire/index.php3
/ecrire/inc.php3
/ecrire/mots_edit.php3
/ecrire/breves.php3
/ecrire/rubriques_edit.php3

(1) Dans "rubriques_edit", correction d'un bug dans l'affichage de
la liste des rubriques ("cette rubrique se trouve dans..."): =E7a
affichait l'int=E9gralit=E9 des rubriques, alors qu'il ne faut pas
pouvoir afficher la rubrique "actuelle" et ses sous-rubriques, sinon
on cr=E9=E9 une boucle fatale.

(2) Dans mots_edit, j'ai ajout=E9, =E0 la suite de "articles li=E9s =E0 ce
mot-cl=E9", une liste "br=E8ves li=E9es =E0 ce mot-cl=E9". Du coup, au passa=
ge,
j'en ai profit=E9 pour faire une fonction "afficher_breves" (similaire
=E0 "afficher_articles", mais beaucoup plus simple) utilis=E9e dans les
autres pages. J'en profite =E9galement pour diff=E9rencier l=E9g=E8rement la=

pr=E9sentation des listes d'articles et des listes de br=E8ves (les
listes d'articles changent de couleur avec le choix de l'interface,
mais les listes de br=E8ves sont toujours dans un gris tr=E8s clair).

ARNO*

Salut,

Je compl=E8te les fonctionnalit=E9s des mots-cl=E9s. Modifications dans les
fichiers suivants:

/article.html (modif du squelette)
/inc-calcul.php3
/ecrire/inc_logos.php3
/ecrire/mots_edit.php3

Il s'agit simplement d'ajouter des logos associ=E9s aux mots-cl=E9s. Tout
cela (les nouvelles fonctionnalit=E9s des mots-cl=E9s, liens avec
br=E8ves...) donne une souplesse de mise en page absolument =E9patante;
les sites qui les utiliseront toutes =E0 la fois risquent de ne pas
=EAtre nombreux :-))

Au passage, j'ai modifi=E9 inc-calcul, histoire d'incorporer #LOGO_MOT
permettant de g=E9rer le logo des mots. Antoine, je sais que tu es en
train de bosser dessus, mais comme c'est trois fois rien =E0 faire, si
tu l'=E9crases, =E7a ne sera pas long =E0 r=E9installer.

Amicalement,
ARNO*

Coucou,

La version 1.2 beta 8 est arrivée, avec de très grosses
modifs sur l'espace privé. En effet, l'ancien moteur
de calcul des pages s'était vu affliger d'un nom idiot
par Fil et Arno ("Assassin"). Je l'ai donc réécrit ;
le nouveau s'appelle... Pantagruel :wink:

En fait c'est toute la partie concernant le calcul des
pages qui est modifiée. Plutôt que de parser, analyser
et appliquer le squelette à chaque recalcul de page,
dorénavant les squelettes sont compilés une fois pour
toutes dans leur équivalent PHP "en dur". Ainsi, tant
qu'un squelette n'est pas modifié, il n'est plus réanalysé :
le code PHP correspondant est directement exécuté.
(Les squelettes sont en quelque sorte compilés.)

Le code PHP généré par Pantagruel est tout naturellement
stocké dans le cache, sous le nom skel_nomdusquelette.php3
(skel_article.php3, etc.). On a donc maintenant un cache
à deux niveaux : au niveau page, et au niveau squelette.
Il n'y a pas de durée d'expiration pour ce deuxième niveau,
mais le code est regénéré si le fichier squelette est plus
récent que le fichier cache. On peut aussi effacer les
fichiers cache à la main (en attendant un bouton "recalculer
le squelette"...).

Niveau performance, donc :
- quand une page est en cache, il n'y a pas de différence
(normal, le code n'a pas changé)
- quand une page doit être recalculée, Pantagruel est de 30 à
40 % plus rapide que Assassin, sur à peu près tous les types
de pages.
- quand le squelette doit être recalculé en plus de la page
(très rare donc, vu qu'une fois qu'un site est "en production",
on change rarement les squelettes), Pantagruel reste plus
rapide qu'Assassin.

La structure des fichiers de l'espace public voit se répercuter
cette nouvelle structure :
- inc-public.php3 est toujours dédié à l'appel du fichier cache
et aux différentes tâches annexes (maintenances périodiques...)
- inc-calcul.php3 est dédié uniquement à l'exécution du squelette
une fois compilé
- inc-calcul-squel.php3 est dédié à la compilation des squelettes

Fait intéressant, inc-calcul.php3 ne fait plus que 10 Ko (la
majorité du code a été basculée dans inc-calcul.squel.php3,
qui n'est inclus qu'au besoin).

A part ça, quelques modifs cosmétiques ici et là (dont celles
effectuées par Fil et Arno sur la beta 7)

Bon, comme c'est tout nouveau, il faudrait qu'une ou deux bonnes
âmes se dévouent pour tester ça sur des squelettes différents,
et rapporter les bugs.... :wink:

a+

Antoine.

Un zip ou un tar les amis ...... please ....

Pour les tests vous preferrez une install à nu ou une mise a jour à chaque
fois suffira ?

Pour la 1.05 je voulais vous faire remarquer que j'ai reussi aucune
installation alors que 1.04 passe tres bien partout .... tres bizarre ...

CM

Nota: si vous changez des choses importantes dans 1.05 tels que des
corrections concernant la sécurité il faudrai peut-etre renomer cette
version ?

Salut,

Un zip ou un tar les amis ...... please ....

Il faut attendre que le serveur les génère automatiquement.
Normalement c'est une fois par heure :wink:

Pour les tests vous preferrez une install à nu ou une mise a jour à chaque
fois suffira ?

Comme tu veux, mais une mise à jour devrait suffire....

Pour la 1.05 je voulais vous faire remarquer que j'ai reussi aucune
installation alors que 1.04 passe tres bien partout .... tres bizarre ...

Et avec la toute dernière 1.0.5, ça marche mieux ou pas ?

a+

Antoine.

@ Antoine Pitrou (pitrou@free.fr) :

stocké dans le cache, sous le nom skel_nomdusquelette.php3
(skel_article.php3, etc.). On a donc maintenant un cache

hi hi ! j'ai pris l'habitude de stocker mes squelettes à part dans /sq, et
voilà le résultat :

Warning: fopen("CACHE/skel_sq/article.php3","w") - No such file or directory
in /xxxxxxxxxx/spip/inc-calcul-squel.php3 on line 1796

il faudrait ajouter un petit coup de url_encode() ; pour le reste, le
fichier compilé est beau comme tout ! Impossible pour le moment de savoir
si ça va effectivement plus vite. Il faudrait trouver une méthodo de mesure.

-- Fil

Fil wrote:

il faudrait ajouter un petit coup de url_encode() ; pour le reste, le
fichier compilé est beau comme tout ! Impossible pour le moment de savoir
si ça va effectivement plus vite. Il faudrait trouver une méthodo de mesure.

J'ai obtenu les 30 à 40% en utilisant Apache Bench (ab) sur miel.
Pour cela, j'ai mis $delais = 0 dans tous les squelettes utilisés.

Fil wrote:

il faudrait ajouter un petit coup de url_encode() ;

C'est fait.

Coucou,

en mettant les squelettes à l'endroit traditionnel, nouvelle surprise : les
échappements php ne fonctionnent plus tout à fait

http://miel.brainstorm.fr/~fil/spip/liste_revues.php3

affiche "0Alerte0" au lieu de "Alerte" :
un échappement php censé être vide dans le cas de la revue 'Alerte' est ici
remplacé par '0'

voici en détails (attention recettes de cuisine pas encore publiables) :

%%%% extraits du squelette %%%%
<?
    // entetes coupees

        $b104 = "b"; // gras pour "(h)ttp..."
        $b109 = "i"; // ital pour "(m)ailto..."

?>
<BOUCLE_Articles(ARTICLES){id_rubrique}{par descriptif}{" / "}>
        <A HREF='/revues/#DESCRIPTIF'>
        [<? echo "<$b(#PS|ord)>"; ?>]
        #TITRE
        [<? echo "</$b(#PS|ord)>"; ?>]
        </A>
</BOUCLE_Articles>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

l'idée était la suivante : on récupère le code ascii -- ord() -- du premier
caractère de l'URL (stocké dans le champ #PS), ce qui donne un squelette
(version "assassin") du type :
        <? echo "<$b104>"; ?>.....

en version "pantagruel" le squelette compilé donne :

    $milieu3 = ord($row[ps]);
    if ($milieu3) {
    $retour .= '<? echo "<$b';
    }
    $retour .= $milieu3;
    if ($milieu3) {
    $retour .= '>"; ?>';
    }
    unset($milieu3);

et, dans le cache, je vois bien
       '<? echo "<$b104>"; ?>' pour (h)ttp [ ord("h") = 104 ]
    et '<? echo "<$b109>"; ?>' pour (m)ailto [ ord("m") = 109 ]

mais un '0' vient s'insérer quand le champ PS est vide.

En fait l'erreur me saute aux yeux au moment où je l'expose : la ligne
'$retour .= $milieu3;' n'est pas au coeur du bloc-test 'if($milieu3)', donc
si $milieu3 est numérique == 0 ça ajoute la chaîne '0'.

Régler ça accélérera encore un %, car ci-dessus tu testes deux fois
'if($milieu3)', alors qu'une seule fois suffirait comme ci-dessous :

    $milieu3 = ord($row[ps]);
    if ($milieu3) {
        $retour .= '<? echo "<$b';
        $retour .= $milieu3;
        $retour .= '>"; ?>';
    }
    unset($milieu3);

-- Fil

Fil wrote:

    $milieu3 = ord($row[ps]);
    if ($milieu3) {
    $retour .= '<? echo "<$b';
    }
    $retour .= $milieu3;
    if ($milieu3) {
    $retour .= '>"; ?>';
    }
    unset($milieu3);

et, dans le cache, je vois bien
       '<? echo "<$b104>"; ?>' pour (h)ttp [ ord("h") = 104 ]
    et '<? echo "<$b109>"; ?>' pour (m)ailto [ ord("m") = 109 ]

mais un '0' vient s'insérer quand le champ PS est vide.

Aie ! Affreuse bidouille ! En fait ord renvoie toujours un entier,
y compris si la chaine est vide (auquel cas il renvoie '0'). Du coup
le '0' est transformé en chaîne et apparaît dans le résultat.

Salut,

Il y a un problème avec la résolution du trou de sécurité
récemment introduite : les formulaires de recherche, logos
et autres se voient parasiter par un paramètre supplémentaire
'interdire_scripts'. Par exemple sur uzine, la recherche ne
marche plus. J'ai résolu la chose dans la dernière beta 8.

a+

Antoine.

Voil=E0, la beta 8 est sur uZine, test grandeur nature :-))

Antoine, le syst=E8me de pr=E9-cache, c'est de toute beaut=E9! SPIP avec un
"Zend optimizer" =E0 lui tout seul, =E7a devient carr=E9ment b=E9ton.

ARNO*

Voilà, la beta 8 est sur uZine, test grandeur nature :-))

et ca marche sans problemes ???
Parce que moi j'ai toujours les bugs cités dans un mail precedent pour 1.2.5
???

Christophe

Pardon ... il reste plus qu'un bug mais qui revient sur toutes les pages
quasiment ...

Warning: 0 is not a MySQL result index in inc.php3 on line 1038
Warning: 0 is not a MySQL result index in inc.php3 on line 1040

Bonjour,

Dans http://www.uzine.net/plan.php3 tous les HREF sont vides... À
cause de la bêta 8 ??

Gilles.

Ouip, c'est corrigé (dans la beta8, sur uzine il faut attendre
la mise à jour).

Gilles Perez-Lambert wrote:

Salut tout le monde,

Antoine, au passage, je te signale que le moteur de recherche est en
rade sur uZine. Tu l'avais signal=E9 =E0 propos de ma ch'tite rustine de
s=E9curit=E9, et =E7a semble y =EAtre toujours dans la beta 8.

Autant que possible, je pr=E9f=E8re pas trop toucher =E0 Pantagruel, je te
laisse donc voir =E7a. (H=E9, tr=E8s bien, l'id=E9e des noms folklos pour le=
s
versions de SPIP.)

Amicalement,
ARNO*

Heu... toutes les pages ?? C'est la fonction qui affiche les forums
privés, apparemment....

Christophe Mannino wrote: