Archives de la catégorie ‘Développement’

Un logiciel pour Albulle

Voir un projet fonctionner et être utilisé est une grande satisfaction. Voir un projet, mené par quelqu’un d’autre, venir se greffer directement sur le premier projet, c’est terriblement gratifiant !

C’est le cas d’un nouveau logiciel, qui en est à son balbutiement : ImageResizer for Albulle. Son auteur m’a contacté dernièrement pour me faire part de son travail et je dois dire que j’étais sacrément surpris ! Heureux et surpris. Il y aura très bientôt une belle application qui vous permettra de sélectionner des photos, de choisir un profil de redimensionnement, de choisir un dossier destination et d’envoyer le tout par FTP directement sur votre serveur ! Tout ce que vous faisiez manuellement avec plusieurs outils pourra être fait le plus simplement du monde depuis une seule interface. Le maillon manquant pour que la publication de vos photos soit la plus aisée possible… Merci ! Qui plus est, l’application gère automatiquement l’envoi des photos originales (selon votre configuration, le soft sachant lire ce que vous paramétrez dans config.php) et la génération des miniatures ! Comme ça, Albulle n’aura plus qu’à afficher les galeries.

L’application que j’ai pu tester fonctionne déjà très bien, à ceci prêt que la copie des photos ne fonctionne pas encore par FTP, mais le travail est en cours et cela sera bientôt possible.

Pour ne rien gâcher, le projet est ouvert, disponible sur CodePlex. Il est développé en C#, pour la plate-forme Windows.

Longue vie à ImageResizer for Albulle et un grand merci à son auteur d’investir de son temps pour contribuer à l’amélioration de l’expérience utilisateur de cette chère galerie !

Stay tuned, d’autres infos certainement très bientôt.

Note : pour pouvoir utiliser l’application, vous devrez installer au préalable le Microsoft Framework .NET, dans sa version 3.5 au minimum.

Albulle 1.2.1, version de maintenance

Florent me l’a signalé peu après la sortie de la version 1.2 (merci !), Albulle ne fonctionnait plus chez Free. En voulant aller trop vite, on en oublie les choses essentielles ;-).

PHP5 étant devenue ma version de référence pour le développement, j’en avais complètement oublié qu’Albulle, jusqu’à la version 1.1.1, était encore compatible PHP4. Or chez Free, c’est toujours la version 4 de PHP qui est active par défaut. Qui plus est, l’intégration de JbLib qui utilise la fonction glob(), empêche Albulle de tourner correctement car la fonction renvoie toujours faux chez l’hébergeur.

D’où cette version 1.2.1. Vous trouverez la marche à suivre pour installer Albulle chez Free dans le dossier extras/ de l’archive. En plus de cela, le nouveau moteur de rendu a été corrigé : il manquait la gestion du mode intégration à un site et le thème par défaut n’était pas complet.

Cette version 1.2.1 devrait donc correspondre à ce qu’aurait du être la version 1.2…si tout avait été testé plus en profondeur.

Bonne installation à tous ! Et pour tout problème, n’hésitez pas à me contacter.

Site d’Albulle »
Télécharger Albulle »

Albulle 1.2 disponible

5 ans ! 5 années que le projet existe et qu’il mène sa petite vie. Pour l’occasion, Albulle 1.2 apporte son lot de nouveautés :

  1. Nouveau moteur de rendu (JbParser) : changement non visible mais ô combien important pour les thèmes, Albulle se dote d’un vrai petit moteur de templates. Rien à voir avec un Smarty, juste un p’tit moteur sans prétention qui remplit sa tâche à merveille pour les besoins d’Albulle. Sorte de résurgence du vieillissant moteur de la PHPLIB, inspirée de Jelix mixée avec une sauce maison ! Je détaillerai toutes ses fonctionnalités au travers d’une future documentation complète.
  2. Le tri par date de prise de vue est désormais possible ! Fini de renommer ses photos pour les trier, vous envoyez le dossier, et Albulle se charge de mettre vos JPEG dans l’ordre chronologique !
  3. Lecture de la légende IPTC des images JPEG supportée via une nouvelle pseudo-variable {$legende} (vous noterez la nouvelle syntaxe des pseudos-variables au passage). Si vous utilisez le logiciel Picasa, la légende est le texte que vous pouvez saisir sous la photo lorsque vous êtes en visualisation.
  4. J’ai très légèrement modifié le logo, pour que le « A » ressemble plus à la lettre qu’à un champignon…
  5. Et bien sûr quelques corrections et pas mal de réécritures et nettoyages de code pour cette version.

La documentation d’Albulle n’est pas à jour et les autres thèmes ne sont pas prêts pour cette version 1.2. J’essaie autant que faire se peut d’actualiser tout cela au plus vite… Mais vous connaissez la maison, ça viendra…quand je pourrai trouver le temps !

Pour télécharger Albulle, c’est comme d’habitude !

Merci à tous les fidèles qui utilisent Albulle et qui suivent le projet, de près ou de loin !

PS : pour les curieux qui iront jeter un œil dans le code source, vous verrez un nouveau dossier « jblib » dans lequel se trouve la classe JbParser, le nouveau moteur de rendu. La JbLib sera un nouveau projet, qui sera lancé…(vous connaissez la musique ;-)) et qui regroupera un ensemble de classes qui constitueront une sorte de kit de démarrage de développement. Cette librairie est déjà équipée de quelques classes, mais comme tout est à l’état de chantier, j’attends de bien standardiser toutes ces classes avant de les publier !

Albulle 1.2, en cours de cuisson

Je viens d’aller faire un tour dans les archives du blog, la version 1.1 date de novembre 2008…Voilà qui commence à remonter ! J’étais jeune marié et la tête plein de projets.

De ces projets, deux ont vu le jour. Nous avons investi dans l’immobilier et, le plus magique des deux, nous avons conçu une merveille : un joli petit garçon qui a deux mois depuis peu !

Tout cela pour vous dire que je n’en oublie pas pour autant les autres projets et qu’Albulle va bientôt revenir dans une nouvelle version. La principale nouveauté est le changement intégral du moteur de rendu qui utilise une classe de mon cru que j’ai dans les cartons depuis un moment. Albulle 1.2 est, à l’heure actuelle, pleinement fonctionnelle. Il me reste un bogue à vérifier (FS#5) et la réalisation des tests de l’ensemble avant de pouvoir livrer la nouvelle mouture.

En attendant, vous pouvez tester cette version en la récupérant depuis le dépôt SVN ; il est à jour !

Trad : Du code propre avec les micro-plugins jQuery

Cet article est la traduction d’un article publié sur le blog de Jim GARVIN.

Beaucoup de programmes javascripts nécessitent l’exécution de code dès lors que le chargement d’une page est arrivé à terme. jQuery rend facile le branchement à cet événement et beaucoup de développeurs l’utilise comme tel :

1
2
3
4
5
6
7
8
9
10
$(document).ready(function(){
	// code du programme... tout est là
 
	var term = searchParameter();
 
	if (term) $("#search_form input[type=text]").val(term).addClass("focus")
 
	// .. 200 lignes plus loin ...
	// ah, voici le code que vous devez modifier
});

Ce type de code est très certainement suffisant pour de petites applications, mais dès lors que vous avez quelques centaines de lignes de code qui grouillent, il est fort probable que vous commenciez à souffrir pour travailler. Vous pouvez essayer de ponctuer le code de commentaires – nous savons tous que ce n’est pas idéal – ou encore découper le code en plusieurs appels de $document.ready(), les uns après les autres. Pas très propre…

Une façon d’obtenir un plus haut-niveau de compréhension de votre code consiste à sortir les sections sans rapport dans leurs propres fonctions pour ensuite les appeler depuis la fonction d’initialisation :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$(document).ready(function(){
	initializeSearchForm();
	initializeRowPointer();
	initializeThumbnailSizeSlider();
	initializeQueueStatuses();
	// et cetera ...
});
 
function initializeSearchForm() {
	var term = searchParameter();
	if (term) $("#search_form input[type=text]").val(term).addClass("focus");
};
 
// et toutes les autres fonctions ...

Désormais, nous avons une vue d’ensemble claire de ce qui se passe au chargement de la page et nous pouvons aisément accéder à telle ou telle fonction pour voir son fonctionnement et lui apporter des modifications. C’est mieux, et c’est comme celà que je procède depuis longtemps, mais en utilisant le patron de conception de Ryan McGeary, nous pouvons rendre ce code encore plus révélateur de ce qu’il fait et améliorer sa maintenabilité en embraçant le style jQuery.

Transformation en micro-plugin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(document).ready(function(){
	$("#search input[type=text]").searchForm();
	$("#orders").selectableRows();
	$("#slider").thumbnailSizeSlider("td.picture img");
	$("#queue_statuses .status").queueStatus();
	// et cetera...
});
 
// micro-plugin
$.fn.searchForm = function() {
	var term = searchParameter();
	if (term) this.val(term).addClass("focus");
	return this;
};
 
// et tous les autres micro-plugins...

En réécrivant nos fonctions en tant que plugins jQuery, nous bénéficions de nombreux avantages par rapport à la première approche :

  • Nous déplaçons le sélecteur dans la section d’initialisation où nous pouvons facilement le retrouvez et le modifier. Cela nous donne une meilleure vision de ce que le code fait, tout cela sans effort.
  • C’est un plugin jQuery ! N’importe quel autre développeur habitué à jQuery et ne connaissant pas votre code, pourra immédiatement l’appréhender et se l’approprier,
  • C’est un plugin jQuery ! C’est facilement réutilisable, même si ce n’est pour l’instant pas l’objectif.

Si vous n’aviez jamais écrit de plugin jQuery auparavant, ceci devrait vous convaincre de la simplicité d’implémentation. Il n’est pas nécessaire de comprendre tous les méandres d’un framework. Vous adjoignez simplement une fonction à jQuery.fn et accédez à l’objet courant grâce à this. C’est la simplicité du système de plugins jQuery qui rend les micro-plugins possibles.

Quelle est cette pitrerie !? Un plugin, tout simplement !

Faisons tout de même bien la distinction entre un plugin et un micro-plugin. La différence réside principalement dans l’intention de l’auteur qui rédige le code. Généralement, les plugins jQuery sont écrits prioritairement pour être réutilisables et partageables. À l’inverse, les micro-plugins sont créés pour rendre le code local d’une application plus clair et plus facilement maintenable, sans intention de partage et/ou de réutilisation.

Ainsi, si vous réutilisez un micro-plugin dans un autre projet, et que ce plugin devient un outil souvent utile, pourquoi pas ne pas le documenter, le partager et le considérer comme plugin à part entière !

Note du traducteur : une erreur de traduction, une approximation disgracieuse, une suggestion, …, utilisez les commentaires pour me soumettre votre proposition et ainsi améliorer cette traduction ! Merci !

Note bis : les emphases sont de mon fait.