Bon, ça prend forme!
Désolé du temps pris : je suis un peu perfectionniste et je veux vraiment traiter certains soucis critiques avant de lancer une 1.0...
Et surtout éviter au possible de maintenir des architectures bancales...
De +, je consacre un temps volontairement "limité" sur ce projet, en ayant d'autres en cours plus ou moins avancés/complexes.
Ca reste un soft pour mon usage que je mets gracieusement à la vue de tous.
J'ai donc mis mes derniers travaux sur une branche "develop" pour les plus téméraires.
On test ici :
sudo pip3 install -e git+https://github.com/mothsART/linkmanager.git@5f9046ae297501892e95a779961f80fb3ad8d125#egg=linkmanager
Il me reste principalement à :
* rajouter des tests unitaires (et à corriger pas mal de tests qui ont sautés)
* étoffer la partie "serveur"
* permettre l'auto-complétion des tags dans le shell!
* i18n : un peu de taf à ce niveau d'effectué mais ça reste encore inégal : du franglais par moment...
Suite à ça, je pourrais sereinement penser à :
* lancer la version 0.4 sur ppas/pypi
* corriger le wiki en conséquence
* refaire une campagne de pub
Qu'est-ce qui a changé ? (Liste non exhaustive)
* ajout de la prise en charge de titres et d'URLS minimisés.
Comme évoqué, lors d'un ajout d'URL, une requête "asynchrone" va rechercher le titre d'une page web afin de la suggérer.
l'URL est automatiquement minimisé à la fin de l'ajout d'un lien : via l'api d'un webservice.
On peut déjà choisir/changer son webservice en éditant les settings du soft mais prenez ça comme temporaire.
Mon objectif est de fournir un fichier de conf générique (/etc/linkmanager/settings.conf) et par utilisateur (/home/user/.config/linkmanager/settings.conf) selon les principes d'UNIX.
* Justement, des variables de conf commencent à prendre place :
* paramêtrage de la Base de donnée
* minimizer
* Options de la recherche : nombre maximum dans l'auto-suggestion de tags, nombre maximum de réponses
* ajout de l'option "verbose" sur une recherche :
permet d'avoir toutes les propriétés corresponds à un lien :
$ linkm search -v
6 liens au total trouvés :
1 ➤ http://ubuntu.com
├── title : The leading OS for PC, tablet, phone and cloud | Ubuntu
├── 5431572c-d859-46c2-87c8-5e1c0c1fa402
├── ordre de priorité : 10
├── tags : linux python shell ubuntu
├── description : Fr Ubuntu site
└── create the 27 January 2014 at 17:37:19 and not updated yet.
2 ➤ https://www.404.io/404.html
├── 1afae9bb-8e71-46f7-aadb-701bb1353937
├── ordre de priorité : 10
├── tags :
├── description : no response
└── create the 27 January 2014 at 17:37:19 and not updated yet.
3 ➤ https://www.docker.io
├── title : Homepage - Docker: the Linux container engine
├── ef91d3dd-35f5-40a6-9410-4a79db9175ef
├── ordre de priorité : 10
├── tags : container golang linux ubuntu
├── description : Container engine...
└── create the 27 January 2014 at 17:37:19 and not updated yet.
* un load de JSON est maintenant un peu plus "intelligent" : il permet de rechercher automatiquement les titres des pages, de minimizer à la volé les URLS etc.
C'est du traitement asynchrone "répartie" (le nombre de tâches simultannées est par défaut de 5 car c'est à priori la meilleur config pour mon serveur mais ça peut être modifié dans les settings) donc optimisé pour être le plus rapide possible.
Cependant, j'imagine que ça peut vite devenir bloquant pour des grosses bases!
Il faudrait rajouter une barre de progression sans doute, une option "offline" etc.
Enfin, le load est un peu plus regardant de l'intégrité de votre base.
Il déclenche par exemple des erreurs si dans vos fichiers json (je rappel qu'on peut très bien chargé plusieurs json d'un coup : linkm load fixture1.json fixture2.json fixture3.json) vous vous retrouvez plusieurs liens semblables présentant des propriétés différentes.
Maintenant, la grosse évolution (celle qui vous a fait attendre) :
Un serveur web qui se lance via :
$ linkm w
ou
$ link web
ça lance automatiquement la page sous firefox mais vous pouvez changer le navigateur soit dans les settings soit :
$ linkm w chrome
C'est vraiment minimaliste pour l'instant mais l'idée est là : la recherche de liens via des tags avec de l'auto-suggestion.
Tout est centré autours de la recherche est j'ai pris soin d'utiliser des libs solides : jquery, jquery-ui, _underscore, twitter-bootstrap.
On peut reprocher qu'il n'y a pas d'indentité graphique (on reconnait l'apparence de twitter-bootstrap à des kilomètres) mais j'ai vraiment pas l'envie de me concentrer sur ce point.
Ca doit à mon sens être sobre et fonctionnel.
L'idée forte c'est "tout sur une page" : on est pas dans un site web mais plus dans de l'appli. (cqfd : bcp d'ajax)
Les boutons sur la droite ne sont pas actifs mais prévisionnels :
* un bouton "édition" : une fois activé, on peut rajouter des liens, et éditer ceux existants.
* un bouton "paramètres" : changer pas mal d'options de settings en live et user-friendly.
Bon, je demande votre indulgence car c'est vraiment tout frais et y'a pleins de bugs potentiels :
par exemple, le serveur ne fonctionne pas encore en mode off-line : j'utilise pour toutes les libs css/js des cdn pour booster un peu les choses mais il faudrait dans l'idéal livrer du static si c'est off.
J'aurais souhaité vous apporter une version demo mais j'ai essuyé quelques platres pour l'hébergement.
Au départ, je me suis tourné vers "Alwaysdata" : avec leur offre gratuite, je pensais avoir tout à porté de main...
C'est sans compter sur les dépendances : Alwaysdata propose python 3.1 et Flask ne tourne pas dessus... en plus, il faut compiler Redis.
Bref, pas du clé en main...
Je suis en train d'étudier des solutions de VPS gratuit :
* google app engine : n'utilise pas Redis donc obligation d'utiliser leur api Big data...
* heroku : sans doute le meilleurs mais j'suis pour l'instant un peu perdu...
* je viens de faire des demandes auprès d'autres VPS gratuits
Si bien évidement, une âme charitable se propose d'héberger ou financer l'hébergement, ça serait le top.
Je pense m'investir suffisement pour encore me soucier de ça.
Néanmoins, je trouve que ça serais une superbe vitrine d'avoir un truc en live.
Mon avancement vient forcément avec de nouvelles idées :
La plus probante : possibilité de suggérés des tags automatiquements lorsque la racine du lien est reconnu.
Exemple :
tous les sites commençant par
https://www.youtube.com suggère automatiquement "video".
Il faudrait que je rajoute une option pour ça.
Dans l'idéal : ça devrait être enregistré en base mais je pense sans doute inclure ça dans les settings. (trop de taf d'un coup sinon pour peu d'avantages immédiats)
PS: je me suis aussi créé pas mal de petits outils dédiés afin d'améliorer ma productivité future sur le projet :
Par exemple, 1 config Tmux afin de lancer 1 session pour les tests, 1 pour lancer le serveur web, 1 pour les tests unitaires, 1 pour l'accès ssh et 1 pour 1 accès sur le site en remote avec Midnight Commander. (pour passer des gros fichiers JSON par exemple)
Ca m'évite bcp de tâches répétitives!
J'attend vos retour avec attention.