Avancement

La génération d’entité est complètement fonctionnelle. On peut générer une entité esclave avec la génération automatique d’un mot de passe et la protection de celui-ci au profit unique de l’entité courante.

Mais la modification la plus visible concerne l’habillage de l’interface ce sylabe. L’ensemble à été entièrement revu !
Les barres en haut et en bas ont été remplacées par un dock unique. Celui-ci est découpé principalement en deux parties. La partie haute permet de manipuler l’entité en cours, de changer de mode et affiche un état de l’instance sylabe. La partie basse permet de manipuler l’objet et de changer de mode dans l’affichage de l’objet.

Voici à quoi ressemble une page lorsque aucune entité n’est déverrouillée :

shot-2014-05-10_00-37-49

Et voici à quoi cela ressemble lorsqu’une entité est déverrouillée :

shot-2014-05-10_00-37-17

L’image de fond n’est là que pour montrer que c’est de la vrai transparence. Cette image et même l’ensemble de l’habillage pourront être modifiés par la suite avec des objets dédiés.

L’affichage de l’état de l’instance est fait sur fond jaune ici parce que l’URL de connexion n’est pas sécurisée, pas TLS. Normalement, elle est transparente comme le reste de la barre.

Certaines icônes et certaines couleurs sont encore à modifier. Ce sera fait plus tard…

Avancement

Les carrés de couleurs se généralisent pour représenter les objets et entités.

La gestion des images couplée au mode de navigation permet de voir une image avec ses divers dérivés dont les miniatures. Ces images peuvent aussi être reconnues comme dérivé d’une entité, est donc que c’est en quelque sorte une photo d’identité.

Voici par exemple le mode de navigation :

shot-2014-05-04_08-26-13

Voici une entité vue dans le mode visualisation :

shot-2014-05-04_08-22-12

Tout ça n’est possible facilement que si une image à des miniatures. Ces miniatures sont soit calculées à la volée, comme nouvel objet, soit pré-calculées. Le pré-calcul est utilisé pour l’instant, il se fait lors du téléchargement d’une nouvelle image. On en profite pour récupérer les EXIF de l’image.
Voici ce à quoi ressemble un téléchargement :

shot-2014-05-04_08-25-58

Avancement

L’affichage de la page un peu changer. La barre du haut affiche maintenant la couleur des entités et des objets. Elle est un peu réorganisée.
Mais c’est visuellement la barre de gauche qui a subit le plus gros changement. Au lieu d’afficher des noms d’entités ou des contenus de nÅ“uds, elle affiche à la place leurs couleurs propres.
Cette couleur est générée à partir des 6 premiers chiffres en hexadécimal d’un identifiant. Elle n’est pas infalsifiable, ni unique mais elle est aléatoire. Mais elle va surtout permettre dans le flot des données affichées de savoir d’un coup d’œil qui a fait quoi. C’est plus rapide que de lire le nom d’une entité qui peut changer, ou une photo miniature qui peut changer aussi. En passant la souris sur un des carrés de couleur, on a une petite bulle qui indique à quelle entité ou quel objet on a à faire. L’interface qui jusque là se permettait peu de couleur devient par endroits une sorte de patchwork coloré aléatoire.
Pour les entités, il sera possible de choisir aussi une photo. Cette photo miniature s’affichera à côté de sa couleur et non en remplacement. Par défaut, c’est l’icône du lien de l’objet qui apparaît à la place.
Voici à quoi ressemble le mode ent qui affiche les entités (avec des tests) :

shot-2014-04-28_09-54-43

Le mode d’affichage permet de voir les fichiers audio. Il y a un petit problème qui empêche la bonne reconnaissance du type mime pour les fichiers multimédia. On peut donc maintenant dans l’affichage modifier le type mime d’un objet.
Voici à quoi ressemble la lecture d’une musique :

shot-2014-04-28_09-55-04

Et on peut aussi renommer une entité.
Évidemment, on ne renomme pas arbitrairement une entité tierce, on dit juste qu’on l’appelle soi-même autrement. Libre aux autres entités d’en tenir compte ou pas. Pour ce dernier point, la pondération jouera un grand rôle, mais elle n’est pas encore en place.
Ce sont les petites icône à côté du nom :

shot-2014-04-28_09-46-21

Avancement

Le mode de navigation est maintenant assez stable pour être exploitable. Le résultat ressemble à ça :

shot-2014-04-22_20-44-57
CF : Blog nebule – Ajout d’émotions sur des objets – suite 4

Quelques essais grandeur nature avec des synchronisations sur l’Internet seront réalisés sur l’objet de test.

La machine hôte de l’entité bachue vient de recevoir la clé privée. Elle est maintenant fonctionnelle pour l’import et la signature. Le script d’export est en cours de finalisation.
La machine relai n’est pas encore tout à fait prête. C’est donc l’entité Stéphane qui diffuse aujourd’hui, en tant que simple relai, les liens signés par l’entité bachue.

Voici donc les objets des dernières versions des différents codes :
– bootstrap : 3abf80a35591bbdbe46fbab488db4012accb5dbf4d6c8fda6355f05327ded841
– sylabe : 9552e15d37b452366d9b2f99ebbdfbf57154807befc08ee2e981741a026ee5fe
– librairie nebule : 948f821c48111a32a891ae5716fc25d6da100415ec015507a33cbbae2b979c7c

Avancement

Les émotions ont été mis en place proprement pour les objets. Cela concerne le mode d’affichage des objets et le mode de navigation.

Le mode d’affichage :

shot-2014-04-16_22-06-10

Le mode de navigation :

shot-2014-04-16_22-06-58

On notera que les émotions sont aussi présentes dans la barre en haut de la page.

Pour le mode d’affichage des objets, pas de révolution, ce sont juste des icônes plus présentes et plus pratiques. Pas de changement pour les avis.

Pour le mode de navigation, chaque commentaire de l’objet, que ce soit un texte ou autre chose, peut recevoir une ou plusieurs émotions. Ces émotions sont marquées dans le contexte de l’objet, c’est à dire qu’elles lui sont indirectement liées. Une émotion avec un contexte apparaît dans le mode d’affichage du commentaire, mais pas dans le mode d’affichage de l’objet en cours de consultation.

On peut tout à fait dans le mode navigation mettre une émotion sur une autre émotion. Par exemple, mettre que l’on aime que d’autres aiment l’objet. Cependant, il ne faut pas oublier que ce n’est pas le lien que l’on aime, mais le marquage de l’émotion. Ainsi, si on marque que l’on aime une émotion sur un objet, son marquage va apparaître automatiquement sous toutes les entités qui ont exprimé l’émotion. On exprime une émotion sur une émotion en générale, pas sur l’émotion d’une entité en particulier.
Ce fonctionnement apparaît sur la capture d’écran du mode de navigation. J’avais émis hier un avis beau. Puis j’ai marqué aujourd’hui que j’approuve l’avis, ce qui est une émotion. Enfin, j’ai marqué que je trouve étonnant l’émotion j’approuve sur mon avis d’hier.

Les nouvelles icônes sont trop visibles par défaut, trop denses. Il faudra les refaire…

Avancement

Les émotions et avis ont été redéfinis comme des liens de type ‘f‘.

Dans le mode nav, un lien apparaît sous chaque commentaire d’une autre entité pour pouvoir le répéter, c’est à dire faire le même lien.

Prochaine étape, ajouter les icônes des émotions à côté de l’icône pour répéter le commentaire. C’est un lien vers une émotion mais avec un contexte, c’est à dire un objet méta, correspondant à l’objet auquel est attaché le commentaire.

Cela donne pour ce soir :

shot-2014-04-15_23-28-00

Avancement

Dans la librairie nebule, une forme de mise en cache des résultats a été mise en place. Un certain nombre de fonctions peuvent être appelées plusieurs fois avec les mêmes paramètres. Il est plus rapide de mémoriser certains résultats par défaut même si ils ne sont plus utilisés que de relire et revérifier des liens pour retrouver les résultats.

Les gains dans les modes nav et lnk sont très sensibles, au minimum 2 à 3 fois moins de temps pour afficher une page.

La mise en cache est contrôlée par la variable $nebule_usecache.

Avancement

La librairie nebule à été un peu modifiée pour pouvoir remonter sur demande la liste des liens d’un objet y compris avec les liens invalides. C’est implémenté dans les fonctions _l_ls1, _l_lsx et _l_fnd.

C’est pour de l’affichage uniquement, ils ne doivent pas être pris en compte. C’est notamment le cas dans les fonctions _l_lsx et _l_fnd qui ne tiennent pas compte des liens ‘x‘ lors du nettoyage.
Le comportement, en dehors du mode navigation et liens, est de ne pas tenir compte de ces liens invalides.

Une variable nouvelle variable permet de ne pas remonter ces liens invalides quoi qu’il arrive, la variable $nebule_listinvalidlinks. Par défaut elle est à false, c’est à dire que les liens invalides ne sont pas remontés et donc pas affichés.

La présence de ces liens invalides suppose soit une corruption des données sur le support de stockage ou un dysfonctionnement de l’accès au support, soit une modification malveillante. Quoi qu’il arrive, un lien invalide transmit ou téléchargé est automatiquement écarté.

Voici ce que donne un lien volontairement corrompu dans le mode d’affichage des liens :

shot-2014-04-12_15-34-58

La même chose dans le mode de navigation :

shot-2014-04-12_15-34-38

Et enfin, dans le mode d’affichage de l’objet, le lien est ignoré :

shot-2014-04-12_15-35-11

Avancement

Le mode d’affichage ‘navigation’ a fait un grand pas. On peut y voir maintenant une transcription humanisée de certains liens. Ce mode présente une sorte de fil d’actualité de l’objet. On y trouvera les actions sur l’objet, les émotions, les avis et les commentaires attachés. Les commentaires sont hiérarchisés. Il faut maintenant ajouter de quoi créer facilement de nouveaux commentaires.

Cet ajout de fil d’actualité d’un objet montre que l’on peut mettre en place un système similaire au forum. Et du coup, la gestion des émotions et avis sur un objet ne sont pas optimums avec un lien ‘l‘. Il faut peut-être plutôt utiliser un lien ‘f‘. Ça permettra de profiter de la forme de contexte généré par l’objet méta. Ainsi, un avis sur un commentaire n’est plus seulement lié au texte, mais il est spécifiquement lié au texte dans le contexte de l’objet pour lequel il sert de commentaire. En clair, cela va permettre de mettre que l’on aime un commentaire sur un objet et permettre de dire que l’on aime pas le même commentaire sur un autre objet.

Pour l’instant, les émotions sont basées sur la roue de Plutchik.

Trois nouvelles icônes ont été refaites. Elles servent à afficher visuellement les états OK, attention, et erreur. La symbologie de ces icônes impose des formes générales et des couleurs en rapport avec leurs fonctions. Elle sont immédiatement identifiables dans l’interface.

okwarnerr

Voici ce que cela donne ce soir :

shot-2014-04-12_00-32-16

Avancement

Suite à un problème sur mon disque dur, j’avais perdu quelques jours de travail… J’ai repris une sauvegarde et refais ce qui  manquait…

Ce soir, il y a un début d’ajout de la nouvelle gestion des marquages d’objets. Il s’agit des marquages de type j’aime, j’aime pas et plus encore. Ça s’appelle des sentiments.
Chaque sentiment est cumulable aux autres sans restriction. On voit apparaître les sentiments des autres entités sous la forme de carrés avec leurs couleurs propres, dans l’ordre chronologique d’ajout. Le nom de l’entité apparaît sous forme d’une bulle lorsque l’on passe la souris sur un carré. Si on a déverrouillé son entité, on voit à la place de son carré de couleur un lien pour supprimer le sentiment.

C’est la première version. Cela donne ça pour l’instant, sur un objet chiffré :

shot-2014-04-01_23-51-49

Avancement

Le processus de gestion de l’entité bachue est toujours en cours de mise en place. Mais j’ai pu manipuler l’entité en environnement contrôlé. Les liens des dernières versions de sylabe (20140304) et de la librairie nebule (20140302) ont pu être signés par bachue.

Depuis ce matin, nous avons en ligne les toutes dernières versions :
– bootstrap : ae4d4a9acc8a754f4862c7ddf252079ee5fc9cc4b2fc878f0adecc3c37aea72f(1)
– sylabe : 0a65036105b001b926d1d0336aa4de5fde1d8a476f325f9832e524d914e7e465
– librairie nebule : 6045d142eb96144333cc99c6f1d7c2499fb25e7cf3e3b3aa7cea306d70d2eb15

La variable $nebule_io_maxdata a nécessité une augmentation de sa valeur. L’objet du code sylabe fait plus que 100000octets. Sans cette modification, le téléchargement marche bien mais l’affichage est tronqué. Ce sera répercuté dans le code de la librairie plus tard.

Les recherches de mises à jours de sylabe ne se déroulent pas correctement. Il y a visiblement un problème dans la recherche récursive des mises à jours (résolution du graphe de mise à jour). A priori, on atteint la limite permise pour le parcours récursif, fixé à 100. En regardant le fonctionnement du code, cette limite est interprétée aujourd’hui comme une limite du nombre d’objets parcourus et non du nombre de niveau traversé. Modifier ce comportement est un vrai sujet de questionnement sur la sûreté de fonctionnement de cette partie de code.
Il serait possible de garder ce mode de fonctionnement mais de permettre le fonctionnement correcte de la mise à jour même si on tape la limite. Dans certains cas extrêmes, une mise à jour pourra nécessiter d’être rejouée plusieurs fois pour obtenir les toutes dernières versions des codes.
Il est possible de réellement gérer le nombre de niveaux traversés. Mais si un niveau contient un très grand nombres de liens de mises à jours valides, on a une forme de déni de service.

(1) Le bootstrap ne doit pas être téléchargé par le navigateur. Celui-ci interprète la partie du code html qui lui semble valide et n’affiche pas le code. Il faut utiliser à la place un autre outil comme wget.

Avancement

Le mode d’affichage log a été complètement passé en revue pour ajouter la traduction des textes. Mais tous les textes ne sont pas encore traduits puisque cela se fait dans la partie spécifique à la traduction. Un grand nombre de textes sont déjà en attente de traduction vers l’anglais et l’espagnol.

Un sélecteur de chargement a été intégré à sylabe et au bootstrap pour permettre de choisir la version de librairie et la version de sylabe que l’on veut charger. Cela sert un peu au développement. Par contre, cela peut être très utile en cas de mise à jour partiel qui provoquerait une impossibilité d’accéder à sylabe, par exemple avec une fonction manquante. Dans les URL générées, cela se traduit par l’ajout des options boostrap_load= et bootstrap_lib=. La variable $sylabe_permitaskbootstrap permet d’ajouter ou non ces options automatiquement. Le fonctionnement n’est que partiel puisque toutes les URL ne sont pas corrigées.
Mais ce mécanisme à un côté pervers, il permet de la même façon de charger un autre code et une autre librairie, ou de faire appel à des versions plus anciennes et potentiellement buggées. La variable mis en place ne protège pas d’une insertion manuelle des options. Il faut mettre en place un mécanisme directement dans le bootstrap pour désactiver par défaut les options.

Avancement

Le transfert de protection d’un objet vers une autre entité est fonctionnel. Il doit être vérifié en situation réelle.

Ce transfert commence simplement en la récupération de la clé de session chiffrée avec une clé privée de l’entité courante. Ce pourrait être à terme toute entité que l’on contrôle. La clé de session est de nouveau chiffrée avec la clé privé de l’entité destinataire. Un lien de chiffrement asymétrique marque cette étape et surtout permet à l’entité destinataire de détecter cette clé de session à son usage, et donc de déchiffrer l’objet protégé.

La mise en place du processus de signature et diffusion via bachue n’est pas encore terminé. Cette évolution du code n’est donc pas encore publiquement disponible.

Avancement

Peu d’avancées ce week-end sur le code. Il y a eu quelques traductions et améliorations dans l’affichage du mode aff.

La mise en place du processus de signature et diffusion via bachue n’est pas encore terminé.

Depuis hier soir, un menu permet de choisir une entité à qui on veut transmettre un objet protégé. La mécanique derrière, qui ne marche pas encore, chiffrera la clé de session avec la clé privé de l’entité destinataire. A suivre…

Avancement

L’entité bachue diffuse depuis ce soir la version de sylabe du 18/02/2014.

La partie du code gérant la traduction de texte commence a être conséquente alors que même pas un quart du code ne l’utilise pour l’affichage des textes. Les fonctions de traduction et d’affichage de l’aide en ligne sont déplacées vers la toute fin du code. L’ensemble est un peu plus lisible…

Avancement

Quelques modifications du code ce soir dans le mode aff, mais pas encore rendu public. L’entité bachue n’est pas encore pleinement opérationnelle pour diffuser les mises à jours du code de sylabe au fur et à mesure de ses évolutions.
Dans les modifications, il y a notamment plusieurs parties qui ont été adaptées à la traduction automatique. La vue aff est maintenant à moitié traduite.

Toutes les entités du serveur publique ont été mises à jours vers sylabe en version nébulisée. La manÅ“uvre ne s’est pas déroulée de façon aussi automatisée que prévu. Le code du bootstrap n’a semble-t-il pas réussit à récupérer les versions les plus à jour de sylabe que propose bachue. Il a fallu à chaque fois faire suivre les liens de mise à jour manuellement et synchroniser les liens jusqu’au dernier lien de mise à jour. Il faut maintenant trouver d’où vient le problème.. Bref, ça marche mais ce n’est pas pratique…

Les entités à jour :
http://stephane.nebule.fr/
http://zulu.nebule.fr/

Avancement

La mise en place du bootstrap permettant l’installation de sylabe nébulisé a posé quelques problèmes. La tentative de mise à jour de l’entité zulu n’a pas fonctionné immédiatement.

Le code du bootstrap intégrait des fonctions d’inclusion d’objets php, sylabe et la librairie nebule, via le chargement de pages web, via http donc. Les codes php inclus comme pages web étant restreint au serveur local pour des problèmes de sécurité. Le code de l’inclusion étant :
include("$bootstrap_loc_entite/o/$bootstrap_load");
Avec $bootstrap_loc_entite quelque chose comme http://localhost.
Or, sur le serveur hébergeant zulu, la version de php est un peu plus ancienne. Et cette ancienne version ne supporte visiblement pas très bien les inclusion via http. Cela aurait pût être bloquant puisque cet inclusion par http avait été rendu nécessaire parce que l’interpréteur php ne supportait pas l’inclusion de fichiers sans extensions .php. Mais, heureusement, la version plus ancienne de php supporte elle l’inclusion de fichiers sans extension. Donc ça marche avec un code de ce genre :
$v = explode('.',PHP_VERSION);
$bootstrap_phpversion=($v[0] * 10000 + $v[1] * 100 + $v[2]);
if($bootstrap_phpversion < 50500) include("o/$bootstrap_load"); else include("$bootstrap_loc_entite/o/$bootstrap_load");

Il reste une petite difficulté, je ne sais pas à partir de quelle version de php ce changement de comportement s’est fait. J’ai donc placé le seuil de bascule de comportement à la version 5.5.0.

Donc, Pour l’instant tout fonctionne bien avec sylabe en version nébulisée.
Toutes les entités du serveur vont basculer progressivement pour profiter enfin des nouvelles versions.

L’entité bachue est accessible sur Internet mais elle n’est pas vraiment active. Le serveur public n’héberge qu’une copie. L’entité est déverrouillée sur une station hors ligne afin de signer les nouvelles versions de sylabe et de la librairie nebule. Une station miroir en ligne mais mieux protégée de l’Internet est en cours de mise en place. Elle va faciliter la synchronisation des liens et objets de la station isolée (qui le restera) vers le serveur miroir sur Internet accessible à l’adresse http://bachue.nebule.org/ .
Une fois le processus complet en place, la diffusion des mises à jours de sylabe sera complète :

20140216 sync bachue