me retrouver : |
smartview |
twitter |
slideshare |
linkedin |
3 derniers articles : |
Shadoks, freins, changement, cynefin |
coach retreat paris, 2012 |
Stoos network, un départ, des attentes |
recherche | archives | catégories | à propos

Petit retour sur Elgg. A l’occasion d’une petite (mini) mission je me suis penché sur l’API REST. L’objectif étant de brancher Elgg et son moteur (engine/lib) en utilisant son API REST à un service WS Soap tiers pour l’alimenter. En quelques mots : brouillon mais prometteur.
Pour rentrer plus précisément sur le sujet je devais générer des groupes dynamiquement en puisant les infos dans un WebService SOAP externe. Ce que mon proto met en avant : il est tout à fait possible d’”exposer” (selon la terminologie elgg) toutes les fonctions liées aux entités de Elgg. C’est à dire que l’on rend accessible via une API REST les fonctionnalités des briques de Elgg. Pour cela il faut créer un plugin (du moins je m’y suis pris ainsi). Créer un plugin c’est deux coups de cuillère à pot : un fichier manifest.xml qui dit qui/licence/version, un fichier start.php qui permet de générer ses fonctions et surtout de les enregister au sein du fonctionnement de Elgg. Je n’ai pas creusé l’aspect MVC du produit mais après si je regarde les autres plugins tout semble couler assez de source : dossier view, dossier action, etc. Le fait de manipuler les librairies Elgg depuis son infrastructure rend tout plus simple : on accède à toutes les librairies tous les objets/entités, toutes les fonctions. Y’a plus qu’à.
Il ressort cependant que l’API n’est pas très propre au niveau du codage et que pas mal de petits bugs sont présents.J’adore à ce sujet le passage du wiki :
Note: Elgg’s REST API has many bugs so developers need to beware that development with it will take longer than expected as you run up against these bugs
Par exemple dans mon code, j’ai eu besoin de faire un accès direct à la base de données (ce qui n’est pas vraiment conseillé…) l’API de l’entité “group” ne fonctionnant pas pour l’attribut owner_guid. Enfin j’ai aussi par exemple supprimé des validations de paramètres dans l’API REST qui fonctionnaient de manières incohérentes. Enfin si il semble dans la documentation que les questions de sécurité soient bien prises en charge, j’ai eu la surprise de noter que suite à mon installation on pouvait déclencher la fonctionnalité sans aucune restriction via un url / méthode GET (alors que j’avais préparé un script mettant en place des headers/entêtes http spécifiques pour palier à cette question d’authentification). Alors soit c’est un leurre (la sécurité de l’API). Soit j’ai raté un épisode et j’ai pas compris ou activé la sécurisation de l’API (la bonne hypothèse probablement). A fouiller donc.
Ces divers désagréments ne sont cependant pas bloquants. Elgg et son “engine” et API REST sont très prometteurs. Le code va aller en s’améliorant, il est déjà correct. Les questions de sécurité peuvent être traitées à un autre niveau : sécurisation des urls REST via Apache par exemple.
Pour tout cela il s’agit de développement php/mysql relativement classique, donc efficace et productif. Il faut cependant mettre un bémol sur cette productivité en raison de la jeunesse de la plate-forme Elgg et des anomalies qu’on y trouve toujours encore régulièrement.
quelques urls intéressants :
des exemples de codes et infos concernant l’API :
http://trac.elgg.org/elgg/browser/trunk/mod/apitest/start.php?rev=430
http://www.danielansari.com/wordpress/2008/12/how-to-use-the-rest-api-in-elgg-11/
Quelques bouts de code :
le plugin :fichier start.php
<?php
function haras_init()
{
/** j'expose ma fonction au travers de l'api REST */
expose_function(
'group.create', //method
'createGroup', //function
array (
"user_guid" => array('type'=>'string'),
"montrucnumber" => array('type'=>'string')
), // parameters
elgg_echo('group.create'), // description
"GET", // call_method
false, // auth token
true // anonymous <-- sûrement cette ligne mes questions sur l'authentification
);
}
function getMontruc($montruc)
{
/** je récupère l'objet vers le service SOAP tiers */
}
function createGroup($user_guid, $numtruc)
{
[...] $montruc = getMontruc($numtruc)
/** je crée dynamiquement un groupe */
$group = new ElggGroup();
$user = get_entity((int)$user_guid);
$group->name = $montruc->name;
$group->description = $description;
$group->access_id = 2;
$group->membership = ACCESS_PUBLIC;
$group->files_enable = get_input('files_enable', 'yes');
$group->pages_enable = get_input('pages_enable', 'yes');
$group->forum_enable = get_input('forum_enable', 'yes');
$group->save();
$group->join($user); // toujours créer un utilisateur après la création du groupe
/** l'API ne fonctionne pas je dois manipuler
// sale mais nécessaire, api bugguée
$dblink = get_db_link('write');
$query = "update elggentities set owner_guid =" . $user_guid . " where guid=" . $group->guid;
$result = execute_query("$query", $dblink);
return 'group ' . $group->name . ' ' . $group->owner_guid . ' created'; // ouh là là le proto
}
/** très important, on enregistre le service/handler auprès de Elgg */
register_elgg_event_handler('init','system','haras_init');
?>
This entry was written by , posted on October 8, 2009 at 2:57 pm, filed under php, technologies and tagged api, elgg, mysql, php, rest. Leave a comment or view the discussion at the permalink.
Les choses ont bien changées depuis une dizaine d’années. PHP n’était pas vraiment ma tasse de thé à la fin du siècle précédent. Une auberge espagnole, un bazar sans nom, qui ne donnait pas confiance. On y trouvait de tout mais aussi beaucoup de n’importe quoi. Mais les choses ont bien changées. Il me semble que PHP est arrivé à l’âge adulte aux alentours de 2004, 2005. Aujourd’hui j’esquisse un sourire quand je vois certains de ces développeurs Java, C# ou autre, qui se gaussent de ce language du peuple, se faire complètement dépasser par son succès. Car aujourd’hui PHP est fiable, puissant, et il est la source de nombreux logiciels phares des entreprises modernes. Il accompagne l’émancipation de l’opensource, et son spectre d’action s’étend de plus en plus à des logiciels métiers à forte valeur ajoutée. Il reste encore une terra incognita au main de Java ou autres, mais peu à peu son rayon d’action en fait une technologie incontournable dont la prise en main est aisée et la productivité garantie (si l’on ne cherche pas à réinventer la roue). Même des grandes comptes assez inattendus (comme dans le milieu banquaire par exemple) ont franchi le pas. J’attends donc avec impatience que les Liferay, Alfresco, Pentaho, OpenBravo et consort trouvent leur alter ego php.
Ps : ci-joint un arbre des solutions PHP que je viens de réaliser, un dessin valant mieux qu’un long discours.

Si vous souhaitez m’éclairer sur une solution opensource, fiable, php, qui complète ce diagramme je suis preneur !
This entry was written by , posted on October 5, 2009 at 6:36 pm, filed under opensource, php, technologies and tagged java, opensource, php, tree. Leave a comment or view the discussion at the permalink.
Depuis 2 ou 3 jours je test sous l’impulsion de Yves (a qui je laisse la paternité de la sentence suivant : “On ne fait d’elgg sans casser des oeufs”) Elgg, la plate-forme opensource de réseaux sociaux. Inutile d’expliquer pourquoi les réseaux sociaux sont en plein boum, mais c’est le cas. Du coup, grande force de la communauté opensource, qui peut en irriter certains sur le plan idéologique, elle a décidé (la communauté) de sortir sa propre plate-forme (la meilleure R&D étant de lorgner chez le voisin). Elgg donc.
Basé sur PHP, a première vue le code parait surprenant, on ne voit pas immédiatement dans l’arborescence projet où se trouve quoi, et à quoi sert tel ou tel dossier. Tout ce qui se conçoit clairement se déploie clairement, et cette première impression reste mitigée. Je vous en dirais plus lorsque j’aurai vraiment essayé de toucher au code. Je suppose que cela est du au modèle de données : apparemment il a été prévu un modèle très malléable : j’introduis un nouveau type d’élément (une entité), je lui donne telle ou telle propriété avec telle ou telle valeur. Du coup demain si j’ai un élément de type nouveau, pas de problème, pas de modification de la structure des tables, ça roule. Bon, pour l’instant mon analyse est très superficielle donc sujette à caution. Je compte creuser et vous informer. Je ne sais pas si ce modèle n’a pas un impact sur les performances aussi, que je trouve un chouïa poussives (ils ont cependant prévu l’utilisation de memcached ou autre pour optimiser celles-ci). Idem pour le design, et le système de templates, je n’ai rien vu de concret jusqu’à présent. Enfin, un dernier petit point : l’installation se fait cahin-caha : il faut nécessairement activer le mod_rewrite de Apache. J’aurais préféré avoir le choix d’utiliser le rewrite ou non, cela pourrait faciliter le debug.
Bref il me faut creuser, car c’est malgré tout très prometteur (ah j’oubliais aussi de signaler une API REST qui permet à l’accès à toutes les fonctions de l’outil, même si un warning indique qu’elle peut encore secouer un peu).
J’ai pu assez (très) rapidement monter une plate-forme, activer tout un tas de plugins à la facebook, twitter, pages, blog, albums photos, fichiers, etc. C’est du PHP/MySQL/Apache, donc cela reste simple (dans le bon sens du terme), efficace et productif. Aujourd’hui avec l’évolution des pratiques des internautes, et plus globalement des gens (voir des mobilonautes ou des iphonautes) il parait évident que c’est le genre d’outil à déployer : communauté d’utilisateurs d’un logiciel, d’un produit, événementiel : par exemple un festival de musique, ou la convention des maraichers, ou l’université d’été du xxx (mettez le parti qui vous embauche) : 3 mois avant la plate-forme est disponible, on chat, on blog avec les intervenants, avec les organisateurs, etc. durant l’événement c’est un vecteur en temps réel de l’actualité, a posteriori, c’est un outil de rétrospective (fichiers liés, blogs,images, etc.).
Bref, pas mal de projets assez excitants autour en perspective, j’espère du moins. Si vous souhaitez tester un peu la plate-forme vous pouvez aller chez Elgg.org ou me demander de vous créer un compte pour elgg.areyouagile.com (en me contactant pablo point pernot arboase gmail point com). C’est la plate-forme de test dont je vous parlais. Attention actuellement vu de l’extérieur elle paraît très creuse car nous avons ajouté un pluggin (walledgarden) qui interdit l’accès du public aux infos.
This entry was written by , posted on September 25, 2009 at 7:48 am, filed under opensource, php, technologies and tagged apache, elgg, opensource, php, réseau social, social network. Leave a comment or view the discussion at the permalink.
Là là, làlàlà impitoyyaabllleeuuuu !
Non, désolé, mais cela ressemble fort à un post inutile (que les gens sensés s’arrêtent ici svp)*. Je ne cesse d’utiliser et de ne pas utiliser Eclipse. Je tergiverse devant l’éternelle question ultime du développeur dont la vie se résume à quelques bits : mais bon sang mais bien sûr quel éditeur (de code) vais-je donc utiliser ? Dans l’opensource (comme on dit “chez les restaurateur”) l’empreinte mémoire, c’est à dire la place prise en mémoire par un processus, c’est très important. On regarde de haut un outil gourmand. Et bon sang Eclipse, et Java plus généralement, sont de sacrés consommateurs de mémoire. D’où ma résistance (souvent enfoncée) à Eclipse (faut-il rappeler que je ne développe que très rarement en Java, mais surtout en PHP, voire en Python**). Cette “lourdeur mémoire” est à mon avis un des éléments fondateurs de ce désamour qui existe depuis longtemps entre l’Opensource et Java. Mais bon, Eclipse a tout pour séduire : références croisées d’un simple clique, découpage des objets (outline), lucène, tout un tas de plugins puissants et j’en passe, cerise sur le gâteau avec XDebug embarqué le tatonnement pas à pas dans le code est un délice. Mais je m’égare, ma machine râme, pédale, crachote, je fais un top (* commande unix/linux qui indique les processus en cours et leurs consommations CPU et mémoire), et je m’étouffe ! P***n java, p****n Eclipse. Ni une, ni deux, je bascule sur gedit (avec ctags). Là c’est léger, c’est rapide. Et puis j’erre dans le code, le teint pâle, le regard morne, où sont donc passés toutes ces fonctionnalités pratiques et efficaces, en un mot productives… Allez essayons Eclipse, l’éternel recommencement***.
* ma femme regarde Desperate Housewives à côté, c’est ce qui a du inspirer ce titreThis entry was written by , posted on September 22, 2009 at 7:14 pm, filed under opensource, technologies and tagged eclipse, gedit, java, lucene, opensource, php, python. Leave a comment or view the discussion at the permalink.