Gonzague

Tak suka wanita gemuk ! le blog de Gonzague.

Dev compulsif #471

Une fois de temps en temps, il me prend une envie de créer un logiciel souvent parce que je trouve pas ce que je veux, ou tout simplement parce que j’ai découvert un nouveau framework/technologie. Coup de bol ce coup-ci les deux options étaient validées.

Ma simple installation informatique  se résume à ça:

  • Un mac mini qui sert de serveur / HTPC / téléchargements
  • Couch potato / sickbeard sur le mini
  • Un ampli

Le tout relié à une TV évidemment. Tout ce beau monde à plein de fonctionnalités sympa qui par chance se contrôlent la plus part via des applications ou sites web.

Usages communs:

  • Je me lève le matin, pour mettre un peu de musique depuis mon lit je dois lancer l’application de l’ampli, l’allumer, lancer l’application iTunes Remote et choisir ma musique.
  • Je veux ajouter un téléchargement, lancer la version web de transmission, entrer mot de passe coller le lien.
  • Voir quand le prochain épisode de ma super série préférée, je dois aller sur sickbeard, m’identifier, clicker sur le lien pour voir la liste des prochains épisodes.
  • Ma copine veut regarder ses series en streaming mais je télécharge donc il faut réduire la vitesse des téléchargements, lancer site web, identification, cliquer bouton.
  • etc…

Le problème: Il faut changer 30 fois d’application pour arriver à faire ce qu’on veut.

La solution: On est jamais mieux servis que par soi-même.

Ce week-end étant un long week-end dans le coin je me suis lancé. J’ai découvert playframework il y a quelques temps et il m’intriguais beaucoup donc voila l’occasion rêvée de s’en servir.

Le but que je me suis fixé est d’avoir tous ce dont je me sers régulièrement sur un seul écran avec les fonctions que j’utilise le plus en accès très rapide.

Après quelques heures de recherches et de bricolages:

Et c’est également compatible avec les plateformes mobiles vu que c’était mon but principal:

Je suis encore loin de tout avoir terminé, mais l’essentiel est la. Il me reste surtout le plugin pour iTunes.

Chanque plugin peut s’afficher en grand si il le permet, on peut le voir a droite de “Transmission” il y a deux petites flèches, un clic plus tard on est sur la version détaillée du plugin:

Évidemment il est possible de changer la largeur des modules ainsi que leur position.

Le tout tourne donc en java/scala avec PlayFramework qui est vraiment simple et plaisant à utiliser tout coule plus ou moins de source.

Pour éviter d’envoyer des requêtes toutes les secondes vers le serveur, j’utilise un serveur WebSocket pour tout ce qui est acquisition des données, ainsi que pour envoyer des commandes. Le principe est relativement simple un WebSocket est ouvert en permanence côté serveur, dès qu’un client s’y connecte l’acquisition des données commence. Chaque plugin dispose de son propre taux de rafraichissement… Inutile de rafraîchir la liste des épisodes  à venir toutes les secondes.

S’il n’y a plus de client sur le WebSocket évidemment tout s’arrête en attendant qu’un nouveau se connecte.

La communication se fait aussi du client vers le serveur toujours en passant par le websocket en envoyant l’id du plugin, une méthode et des paramètres, le serveur va rediriger tout ça vers le plugin adéquate qui va exécuter la commande et envoyer la réponse aux clients.

Ce qu’il me reste à faire:

  • Plugin pour iTunes qui s’annonce relativement compliqué
  • Plugin pour couchpotato (j’ai pas trop regardé s’il y avait une API)
  • Améliorer sickbeard pour pouvoir ajouter des séries facilement.
  • Ajouter tout ce à quoi je peux penser

Pour conclure PlayFramework c’est cool, les Websocket aussi, le tout marche plutôt très bien et ce fut assez facile à mettre en place !

8 commentaires pour “Dev compulsif #471”

  1. xandar dit :

    Play framework c’est cool, mais juste pour prototyper je trouve.
    Dans la boite dans laquelle je bosse, on a essayé de l’utiliser en prod, au moment d’un changement d’échelle.
    C’était vraiment la merde. Entre des bugs intermittents (Play qui refuse de démarrer une fois sur 3 au moment de compiler les sources a cause d’un problème lorsque les sources java était transformées en bytecode, wat), un manque clair de documentation sur plusieurs points de l’API, des changements de certains éléments de l’API entre deux versions mineures, on a préféré utiliser autre chose (on utilise maintenant du nodeJS, bien plus léger pour ce qu’on fait et mieux maintenu par la communauté).

    Par contre, ça réconcilie avec le Web en Java (bonjour Spring, bonjour les servlets, bonjour les portlets).

    En tout cas ton appli’ à l’air chouette.
    Tu comptes publier les sources ?

  2. Hubebert dit :

    C’est plutôt classe et ça semble pratiqu. C’est facilement portable sur du Linux? J’imagine très bien ça sur un Raspberry Pi.

    Tu comptes en mettre le code source en ligne?

  3. Gonzague dit :

    @Xandar Je suis d’accord avec toi quant au fait que la documentation est très legère dans pas mal de cas, ça demande beaucoup de recherche.

    Je compte mettre le code en ligne, mais c’est loin d’être complet, pas mal de trucs sont pas encore très au point comme un mécanisme pour valider les préférences par exemple et le code est un peu crado car je veux faire de mon mieux pour séparer les plugin de la base du code.

  4. xandar dit :

    Ah j’ai oublié de poser la question mais, quel framework utilises-tu pour ton CSS (qui a l’air de gérer du responsive design) ? Ça ressemble pas a du Twitter bootstrap et ça a l’air propre.

  5. Gonzague dit :

    Raté ! :) C’est bien du bootstrap que j’ai modifié en m’inspirant de loin du Google material design.

  6. Gonzague dit :

    J’ai oublié de répondre à Hubebert… Ça tourne sur du linux sans problème du moment que tu as java 7 ou plus d’installé.

  7. xandar dit :

    Ah ben merde alors. Belle CSS du coup !

  8. Darkstryder dit :

    Ca a l’air très sympa, bien joué !

    Je suis en train de terminer un dev perso sur des technos pas très éloignés (Java & Boostrap, entre autres, mais pas Play), je posterai aussi un article là dessus :)

Laisser un commentaire

Si vous avez un compte sur WeFrag, connectez-vous pour publier un commentaire.

Vous pouvez, entre autres, utiliser les tags XHTML suivant :
<a href="" title="">...</a>,<b>...</b>,<blockquote cite="">...</blockquote>,<code>...</code>,<i>...</i>