Retour à Catalyst

ajouté le 01.01.2012 dans News • par SwissTenguCommentaires (0)
Tags: perl catalyst yubico

Bon bin voilà, le blog est migré à catalyst, une fois de plus :).

Y a pas, ce petit framework est une tuerie. J'ai profité pour réparer le moteur de recherche, en passant par Search::Indexer. On verra ce qu'il donne, mais à priori il devrait aller pas trop mal :).

Y a 2-3 petites régressions par contre: je n'ai pas encore trouvé une lib perl permettant de faire la coloration syntaxique... J'ai pour 2-3 langages, mais de loin pas tous :(.

Pour le reste, ça va pas trop mal, l'admin est un poil plus complète aussi, et le login un poil plus sérieux (utilisation des YubiKey).

Y aura sans doute 2-3 bugs, mais de ce que j'ai vu, ça semble tourner pas trop mal.

++

T.
 

Catalyst, le retour

ajouté le 19.09.2011 dans Catalyst • par SwissTenguCommentaires (0)
Tags: perl catalyst framework

Hey, vous pensiez que je l'avais oublier, ce joli petit framework web en Perl? Bah nan!

J'avais, il y a un moment, parlé de mon application pour podomètres, permettant de rentrer ses pas quotidiens et de vous sortir des CSV avec les stats.

Je l'avais développée avec Pylons, un framework web fait en Python.
Tout allait bien, jusqu'à ce que cette application soit réellement employée. Et là, c'est le drame: erreurs 500 à la pelle à cause du support pourri des encodings dans Python.... Pas un jour sans avoir un mail "marche pas" etc.
Frustrant.

Après une réflexion qui dura environ deux secondes, durant lesquelles j'ai pesé le pour et le contre de refaire l'application en PHP, ou avec Catalyst... Résultat:
une version 2 de l'application, codée en une semaine (à raison de 2-3h par soir), avec des fonctionnalités supplémentaires, une stabilité renforcée et, aussi, nettement moins de problèmes d'encoding.
J'ai profité pour ajouter un peu de sécurité au niveau des mots de passe, ajouter un peu de doc dans la FAQ, revu les tarifs (à la hausse - faut pas se leurrer, elle est donnée, même maintenant).... Bref.

J'en suis actuellement à la phase de tests sous Windows, avec un IE8 - ce dernier m'a bien entendu posé 2-3 soucis avec le menu CSS3, corrigé rapidement avec un petit javascript qui compense les déficiences.

Actuellement, le site semble fonctionner avec chrome, firefox, opera, IE8 et supérieur... Bref, j'suis content.

Si le Perl ne vous fait pas trop peur, si vous voulez faire un site web rapide et stable, dans un framework complet et léger, je ne peux que conseille Catalyst.

Pour tout dire, il est probable que ce blog repasse à Catalyst dans quelques temps... Il me sort régulièrement des 500 pour le moteur de recherche, et je suis convaincu que je peux faire quelque chose de plus rapide, voire plus complet, avec Catalyst.

Oui, je sais: y a pas de mauvais outils, juste des mauvais ouvriers ;). Pylons, j'ai un peu fait le tour - d'autant que, si je veux suivre, faudrait que je fasse le pas vers Pyramid, le successeur de Pylons... Coder pour coder, autant faire du neuf, non?

Bref - à venir, peut-être, si j'suis motivé et que j'ai du temps à tuer.

++

T.
 

Affichage

ajouté le 15.01.2008 dans News • par SwissTenguCommentaires (0)
Tags: perl catalyst

Je me suis amusé 10 minutes avec l'affichage du blog. Maintenant, il affiche 3 articles par page, avec bien entendu les liens vers les pages suivantes.
Tout con à faire en php/sql quand on connaît, par contre un peu plus compliqué quand on veut employer l'environnement de catalyst.

Et cette fois, j'ai réussi tout seul sans demander de l'aide !
Donc j'apprends et assimile. Au moins ça qui marche chez moi ;)

Bref. faudra que je vois ce que je vais encore bricoler sur ce blog. Je pense gentiment m'intéresser à la partie "ajax" de la chose. Vais aller pleurer pour avoir de la doc :P

++
 

Affichage ppp

ajouté le 15.01.2008 dans Catalyst • par SwissTenguCommentaires (0)
Tags: catalyst perl blog

Affichage page par page du contenu : rien de plus simple ;)

Contexte : on a par exemple un blog avec pas mal d'articles, et on veut pas tout afficher d'un coup, de peur de faire fuir le lecteur s'étant perdu sur notre site suite à une recherche google sur "sextoyz"...

Principe : on va découper les catégories en tranches de X articles maximum. On fera une liste de lien quelque part dans la page permettant d'accéder aux autres articles. On donnera un argument supplémentaire à ces liens.

Côté Controller :
Code: perl
use Math::Cephes qw(:utils);
my ($self, $c, $category, $now) = @_ ;
my $jump = 3;
my $threads;


$category contiendra donc la catégorie en cours de lecture; $now contiendra la page en cours; $threads servira pour la partie suivante, ainsi que le use Math::Cephes qw(:utils).

Code: perl
$now = $now || 0 ;
$threads = [
  $c->model('mydb::table')->search( 
    {type => $id_cat}, 
    {order_by => 'id DESC', 
      rows=>$jump, offset=>$now*$jump
    } )
  ] ;

On regarde si $now existe. Si oui, c'est qu'on est déjà sur une page au sein de la catégorie (ça peut être 0, 1, 2....). Donc dans ce cas, il faut prendre la tranche d'articles depuis le dernier affiché non-compris. offset indique le nombre de tuples à laisser de côté depuis le PREMIER résultat de la requête. row permet de limiter à X tuples la sortie. Cela revient exactement à
Code: perl
select ... from ... where id_cat=... order by id desc, limit $now*$jump, $jump

Si $now n'existe pas, on vient d'arriver sur la page de la catégorie, donc simpl, on ordonne comme on veut, on limite à $jump et basta.

Ensuite, vient la mise en place des liens permettant d'accéder aux autres pages.
Pour se faire :
Code: perl
# get max nb of thread in this category
my $max = $c->model('mydb::table')->search( {type => $id_cat} )->count;
my $i=0;
my $pages;
$max = ceil($max/$jump);
while ($i<$max) {
$pages .= ($i==$now)? '<span class="spacedLinks">'.$i.'</span>' : '<a class="spacedLinks" href="'.$c->uri_for('/blog/part/').$id_cat.'/'.$i.'">'.$i.'</a>';
$i++;
}

Comme on peut le voir, c'est très simple : il suffit de savoir combien il y a d'articles dans la catégorie, de prendre le plafond de la division par le nombre d'articles à afficher et... rah pis merde, zavez qu'à comprendre le code :->

On blance ce qu'on doit dans $c->stash-stash, kou-roukou-kou... oué, ok.
Bref, on balance dans le TT, qui lui nous fera simplement l'affichage... Et ça, je vous laisse gérer.

# fin du speech. A vous de jouer avec.
 

BBCodes - Suite

ajouté le 15.01.2008 dans News • par SwissTenguCommentaires (0)
Tags: bbcode perl catalyst

Pour finir, la lib de TT était pas comme je voulais : elle permettait pas de planter des trucs genre embed etc.
Donc j'ai passé un moment à me créer mon propre filtre et à l'intégrer à TT.. Cette partie a été la plus longue d'ailleurs.

Ce qu'il faut faire :
- créer l'arborescence /lib/Template/Plugin/Filter
- Créer le fichier myPlugin.pm dans le dossier Filter
- Suivre la doc pour créer votre filtre
- l'en-tête du fichier doit ressembler à ceci :
package Template::Plugin::Filter::myPlugin ;
- dans vos template (fichier.tt2), il faut mettre ceci :
Code:
[% USE filtre = Filter::myPlugin %]
[% FILTER $filtre %]
blablabla
[% END %]

C'est sur ce dernier point que j'ai pété un câble, parce que ce n'était pas expliqué que, dans le cas d'un USE avec un path, il faut attribuer une variable... il aimait pas le [% FILTER $Filter::myPlugin %] que je mettais...

Moralité : j'ai maintenant un filtre extrêment souple que je peux configurer comme je veux. Content :)
Et je saurai comment en créer des nouveaux, aussi ^^