Gonzague

Tak suka wanita gemuk ! le blog de Gonzague.

Archive pour juin 2011

C’est reparti pour un tour ! Après cette année et demi de FTPix v2 il était temps de passer à l’étape suivante. Donc c’est une réécriture de 0 encore une fois, pour plusieurs raisons:

  • Le code de la v2 est bordélique, moins que la v1 mais ça reste un gros bordel qui au fur et à mesure des features était devenu difficilement modifiable.
  • Ca fait un an que je bosse en tant que dév JAVA contrairement à mon précédent job où j’étais web dev, du coup j’ai appris énormément de choses depuis donc je veux les appliquer.
  • Mettre à jour l’interface car durant cette année et demi d’utilisation, je me suis rendu compte de quelques problèmes, réparer ça aurait été relativement long et fastidieux à mettre en place sur la v2 car ce ne sont pas des bugs mais des trucs chiants à l’utilisation.

Il n’y aura pas énormément de nouveautés majeures enfin il y en aura une en tout cas qui fera plaisir à pas mal de monde je pense, je ne vais plus limiter FTPix au FTP seul ! Au fil du développement je vais ajouter différentes façons d’uploader les images je n’ai pas d’exemple précis en tête mais pourquoi pas des services d’images en lignes, j’ai contacté le doc pour envoyer vers pix.wefrag.com mais pas de réponse pour l’instant. Les plus gros changements interviendront surtout dans le coeur du logiciel, c’est (vraiment) plus rapide et c’est ça l’important ! J’ai revu la gestion de la queue d’événement (upload, synchronisations etc…) de fond en comble. Je vais maintenant migrer toutes les données au format SQLite (je l’avais déjà fait pour les images sur la v2.4) et vraiment me servir des avantages du format pas comme précédemment. Le code est beaucoup plus propre et flexible, l’interface est ce coup-ci vraiment indépendente du corps du logiciel donc facilement modifiable. D’ailleurs, au niveau de l’interface pas mal de changements, déjà une des plus grosse merde de la v2 l’affichage des images par pages de 100 images. C’était nul, mais à l’époque j’avais pas trouvé de méthode décente de faire ça sans que ça rame ou prenne  trop de ressources. Maintenant toutes les images sont affichées ! (l’icône des galeries n’est pas encore faite)

ftpix v3

Deuxième gros changement de l’interface, plus de petites fenêtres indépendante pour les images, c’était chiant à gérer (surtout sous windows) pour l’utilisateur des qu’on voulait en ouvrir plusieurs. J’affiche également tous les images lors d’une sélection de plusieurs images. La petite barre d’outils permets de centraliser toutes les actions possibles sur les images (ouvrir dans le navigateur, effacer, télécharger, ajouter à une galerie, annoter), l’ordre des icônes n’est pas l’ordre définitif

ftpix v3

Plus de barre de status en bas, on peut toujours voir la progression, et le champ de recherche à changé de place. Il faudra désormais un clic pour le voir. Mais j’ai remarqué sur tous les gens que j’ai pu observer utiliser le logiciel se focalisaient surtout sur les images les plus récentes. Donc autant gagner quelques pixels de hauteur, et avoir un look un peu plus stylisé.

ftpix v3

J’ai également fait des tooltips plus sympa que les tooltips système par défaut.

Pour la barre de status, pour savoir ce qu’il se passe, ça marche à la manière de tool tips normaux, on passe la souris sur la mini barre (en bas à gauche) de progression et l’action en cours s’affiche. La fenêtre des upload à également été un peu modifiée pour voir la taille des fichiers envoyés et la progression en KB / MB

ftpix v3

Je ne sais pas encore quand le logiciel sera prêt, mais c’est sur la bonne voie, j’ai pas noté trop de bugs pour l’instant…  Depuis mon nouveau travail mon niveau de code à vraiment progressé, j’arrive à faire ce que je veux vraiment faire avec beaucoup plus de facilité et de performances qu’avant. Évidemment tout ce qui est montré ici est susceptible de changer j’en suis qu’au début du développement.

Le plus gros va être au niveau des galeries, je veux vraiment les rendre plus agréables à utiliser avec une interface beaucoup plus conviviale et comme je vais changer la façon de sauvegarder pour que ce soit plus rapide, le corps du code va également être sujet à de gros changements.

Bref, je vous tiendrais au jus sur ce blog comme je l’avais fait pour la v2. Évidemment je suis ouvert à toutes remarques concernant le logiciel pour le rendre le plus agréable possible à utiliser.

unibox iconDans la série fais le toi même parce que t’arrives pas à trouver ce qui te plaît ou que t’as pas bien cherché je présente le DropBox fait maison !

Ayant un serveur dédié avec 500Go d’espace disque et des fichiers que j’aimerai bien retrouver partout pareil sur mes ordinateurs (musiques, photos -> 50Go) mais qui rentre pas dans les 2Go de DropBox tout en trouvant que ça fait chier de lacher 80€ / an pour 50Go alors qu’on en a 500 qui ne demandent qu’a être remplis je me suis mis au défi de me créer mon propre DropBox basé sur Unison.

Voici un petit tutoriel de comment faire, et au final c’est relativement simple.

1) Qu’est-ce qu’on va faire ?

C’est très simple, on va se servir de notre serveur comme d’un HUB et tous nos ordinateurs vont verifier les changements sur le serveur et télécharger, envoyer, effacer les fichiers nécessaires. On pourrait faire du dossier cas par cas, mais pour faire comme DropBox et rendre les choses plus simple, on va uniquement synchroniser un seul dossier histoire de savoir où sont les choses qu’on synchronise et pour être sûr qu’on oubliera pas.

2) Les pré-requis.

  • Un serveur dédié avec un accès SSH sans mot de passe
  • Unison installé sur le serveur dédié ainsi que sur chacun des clients (Attention il faut la version ligne de commande sur les clients, pas uniquement l’interface)
  • Et c’est tout…

3) Et ensuite ?

Ensuite deux solutions, la solutions de fainéant et facile, faire un script sur chacun des clients du style

/usr/bin/unison cheminLocalDuDossierASynchro ssh://loginSsh@urlserver//cheminDelaRacineDuServeur -fastcheck true -batch -ui text -perms 0 -times -rsync

Coller un cronjob la dessus et en voiture Simone… Le transfers de fichier se fera en utilisant rsync ce qui signifie s’il y a des modifications sur les fichiers, seules les modifications seront envoyées/téléchargées. Donc on gagne en temps de synchro. C’est bien mais je trouve que ça manque de classe.

Donc on va se diriger vers la deuxième méthode qui consiste à créer un petit programme en Java dans mon cas qui va écouter le dossier sur mon ordinateur pour être au courant dès qu’un changement à lieu. Si changement, on lance la synchronisation, si une synchronisation est déjà en cours, on dis a notre programme de relancer une synchronisation à la suite de la courante pour être sûr que tout est à jour sur le serveur.

On va également faire une synchronisation à intervals réguliers (toutes les 3 minutes ici) et on est bon. On colle tout ça dans la barre de menu et on a notre propre Dropbox en quelques heures. Pour la classe on rend le tout configurable au cas où le dossier à synchroniser n’est pas le même sur chacun des ordis. Une petite icône et c’est parti

Voilà j’ai exposé le concept et fait une petite application en alpha qui fait ce qu’il faut faire sans trop de bugs. Pour l’instant ça marche sur OS X et ça devrait marcher sur Linux, Je mettrais ça en téléchargement quand ça sera vraiment prêt !

unibox preferences unibox preferences