Media ex Machina a écrit 54 commentaires

  • [^] # Re: Kudos

    Posté par  (site web personnel, Mastodon) . En réponse au journal Présentation de mon projet perso de DMAM libre : MyDMAM. Évalué à 4.

    Dépêche, pas trop vite non plus. Là je suis en train de finir une nouvelle fonctionnalité, qui elle sera jubilatoire : un système de transcodage par watchfolders distribué (#115). Cette nouveauté méritera, je pense, une dépêche. Simplement parce que ce nouveau truc est un fantasme qui a plus de 10 ans.

    Pourquoi ? Parce que ça permet :

    • d'avoir plusieurs instances qui surveillent en même temps les mêmes dossiers. Donc tolérance aux pannes si une instance tombe.
    • d'avoir plusieurs traitements pour chaque fichier déposé qui peuvent être exécutés par des instances différentes.
    • un traitement, c'est une commande exécutée quelconque, du moment où elle sort un seul fichier (dont le nom est donné à l'avance par MyDMAM). Si c'est ffmpeg vous aurez droit à avoir une barre de progression qui s'affiche sur le site, tant qu'à faire. Une API existe pour faire soit même la progression d'un exécutable quelconque, ici j'ai juste implémenté ffmpeg.
    • on peut gérer pour chaque instance le nombre et le type de slots de conversion, suivant ce que vous voulez/pouvez faire sur chaque serveur. Ça permet d'avoir plein de slots qui ne font que les petits traitements et quelques slots qui ne font que les gros, afin que les gros traitements ne bloquent pas les petits.
    • en bonus : vous pouvez demander à ce que l'arborescence des fichiers déposés soit respecté en sortie. C'est parfois plus simple de ranger avant les traitements qu'après !

    Ça ressemble très fort à un projet dont je m'occupe exclusivement la nuit, pendant mon sommeil

    Je tente parfois de coder dans mon sommeil, mais je n'arrive pas à push… Il suffit de pas grand-chose parfois.

  • [^] # Re: DAM, DMAM

    Posté par  (site web personnel, Mastodon) . En réponse au journal Présentation de mon projet perso de DMAM libre : MyDMAM. Évalué à 3.

    Ce qui est chouette avec le lien React, c'est qu'il est transparent pour le dev et pour l'admin. Si les fichiers sont aux bons endroits, ça marche sans rien faire d'autre. L'objectif, c'est d'avoir une interface 100% React 100% REST (donc qui puisse servir aussi d'API) et 0% Groovy pour me permettre de passer à Play 2.

    Pour la commercialisation, il faut déjà que ça ressemble à quelque chose de complet, et que ça propose quelque chose de différent que l'on ne trouve pas ailleurs. MyDMAM est fonctionnel mais encore expérimental. En terme de nouvelles fonctions, la progression est lente. Je suis toujours en alpha, et la beta n'est pas pour tout de suite.

    Enfin, vendre est un métier et demande une énergie que je ne dispose pas pour le moment. Je le sais d'autant plus que je ne suis pas tendre avec mes fournisseurs !

  • [^] # Re: DAM, DMAM

    Posté par  (site web personnel, Mastodon) . En réponse au journal Présentation de mon projet perso de DMAM libre : MyDMAM. Évalué à 4.

    Pour log4j, Play, Cassandra et ES l'utilisent. Alors moi bêtement, j'ai pris ce qui me semblait le mieux ! Surtout que j'ai pu trouver toute la doc (et les tutos, surtout les tutos) que j'avais besoin. Et parce que je préfère passer du temps sur ffmpeg ou Cassandra qu'avec… mon système de log. Bref, ça me convient pour le moment !
    Et je comprends bien ta remarque.

    Lombok, je connaissait pas cette sorcellerie. Entre ce que fait Play (le Rails de Java) et Gson, j'ai déjà pas mal de tours de magie dans mon classpath ! D'ailleurs, React et Gson, quelle claque !

    Au passage, je me suis fabriqué :

    • une prise en charge transparente de React à travers les controleurs de Play, avec (de) sérialisation automatique des messages Json entre les objets Java et JS. Tous les éléments React sont compilés en JS par Play, via Moz. Rhino, et si besoin YUI compiled pour avoir un gros blob qui se cache bien "en prod". Tout ça de façon transparente.
    • j'ai fait fonctionner le système de modules de Play avec React ; et en dehors de Play.
    • un ORM très simple avec Cassandra (un Object = une ColumnFamily)
    • une passerelle pour faire tourner ffmpeg ET récupérer la progression du traitement et l'afficher dans le site coté utilisateur.
    • un parseur/analyser pour le retour de ffprobe en Json (par exemple, pour une vidéo, je peut te dire si c'est du PAL, NTSC, Cinema 48p, 4K), et idem pour ImageMagick Identify.
    • je sais transformer une image transparente en un jpg où la transparence est remplacée par un beau damier gris.
    • une API très simple de configuration en Yaml, avec prise en charge des modules de Play hors Play.
    • un Service Java, avec prise en charge de la fermeture propre de l'instance, et remontée régulière de l'état de l'instance dans Cassandra (Thread list, uptime, version Git…).
    • j'ai adapté le multilingue de Play dans React (facile)
    • j'ai adapté un système de http partial download pour Play afin de pouvoir se balader dans une vidéo dans le site
    • j'ai adapté une gestion de white/black list d'IP et une protection de brute force login
    • j'ai fabriqué un navigateur de fichier avec ElasticSearch et React avec une recherche intégré dans la liste des fichiers, plus une recherche libre sur tous les dossiers indexés

    Ça n'empêche que je me suis plusieurs fois planté aussi, et j'ai déjà, a plusieurs reprises jeté quelques mois de travail quand j'ai fini par constater que ça n'allait pas. Je ne supporte pas le "defective by design". Certaines portions de code on été ré-écrites plusieurs fois (4x pour certaines).

    Raaaaa j'ai vraiment pas le temps en ce moment mais j'aurais bien fait un tour dans ton code pour voir tout cela en détail

    Tu sais, le code est là depuis deux ans, et il ne peut que s'améliorer ! Il n'y a pas d'urgence… Et sinon, prends plutôt la branche la plus fraiche, dvl.

  • [^] # Re: DAM, DMAM

    Posté par  (site web personnel, Mastodon) . En réponse au journal Présentation de mon projet perso de DMAM libre : MyDMAM. Évalué à 6.

    Merci pour ton retour.

    Alors:

    • ma spécialité, c'est les médias. C'est là ou je suis le plus à l'aise pour proposer un outil adapté. C'est surtout que ma roadmap est orientée média (audio, vidéo, cinéma, radio, photo). Je n'ai pas prévu par exemple de traiter du texte. Mais pourquoi pas, oui. Qui peut le plus, peut le moins.

    • en fait, je me suis dit que balancer "Digital Media Asset Management" n'allait pas beaucoup aider. Il aurai fallu faire une explication de ce que c'est. Et comme c'est un terme tellement générique j'ai préféré me dire celui qui n'a jamais entendu ce terme ne sera pas spécialement interessé par ce projet. Un peu comme le terme "SEO" pour ceux qui dev. sur de l'embarqué.

    • c'est surtout grace à ES et a Cassandra. C'est vraiment de bonnes technos, surtout pour moi qui n'aime pas m'engager dans des schémas et des requettes SQL. Pour la robustesse, c'est une obligation ici. Il existe tellement d'outils "moyens" sur ce point que je me devais de faire quelque chose qui tienne, vraiment. Par exemple, combien de systèmes partent en vrille quand il y a des time-out sur des mount ? En utilisant mount le moins possible je suis capable de mieux catcher le time-out proprement quand j'ai besoin d'une ressource distante.

    • Je suis en train de retirer Log2 de mon code. Cette petite aventure m'aura permis d'apprendre plein de choses, car je ne suis pas dev. de métier, mais l'herbe est vraiment plus verte du coté de log4j !

    • Pour la gestion de taches (Broker/Worker/Job), il existe plein d'outils. Bien complexes. Mon besoin est au final assez limité, et ça devait être un système distribué. Mon driver Cassandra, Astyanax propose quelque chose qui m'a permis de l'écrire et de garder un code bien intégré. Au final, ici la gestion de tache, c'est "que" quelques classes Java.
      Et enfin, je ne connait pas SpringBatch.

    • Oui, j'ai réinventé la roue. Tout ce que fait MyDMAM peut être un tas de scripts dans un tas de langage avec un tas de gros machins autour. Il existe tellement de chose aujourd'hui. J'ai pas mal expérimenté des trucs à coup de PHP, de Delphi, de Tomcat… A chaque fois c'est pareil, ça fait boom quand on se dit "mais comment je vais faire ça sans tout casser". Après MyDMAM ne fait rien de très incroyable. C'est surtout "un tout en un" qui donne l'accès à pas mal d'outils en quelques lignes de Java.

    • Oui le taff est conséquent, loin d'être terminé, mais ce que je suis fier, c'est que ça marche bien, je le fait bien évoluer comme je veux, et je me perds pas dans mon code, même si parfois je me fait du mal.

    • Apache Tika, oui j'ai vu passer. Il faudrait que j'y mette les pieds un jour. Pour tout ce qui est extraction, je pense avoir ce qu'il me faut pour le moment (tout n'est pas implémenté bien sur).