--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes techos.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse techos+un...@googlegroups.com.
Pour envoyer un message à ce groupe, adressez un e-mail à tec...@googlegroups.com.
Visitez ce groupe à l'adresse http://groups.google.com/group/techos .
Pour plus d'options, visitez le site https://groups.google.com/d/optout .
La tactique classique c'est:
- xml ou json perso pour les sauvegardes de travail et la conservation long terme, via une grammaire très proche de ton modèle interne, pour que ca marche tout le temps, rapidement, avec un code très simple. Migrations de versions de modèles facilitées. Ya plein d'outils pour faciliter les vérifications d'attendu dans les tests auto (xmldiff) .
- fonctionnalité d'export en format du marché, uniquement. Ne serait ce que pour gérer sans contraindre le cœur les sémantiques différentes que tu decouvriras forcément dans des scénarios complexes.
D
Bonjour Emmanuel,
Pour reprendre ce que disent Sylvain et Dominique, le format JSON offre une grande souplesse y compris la possibilité d'etre modifiable a la main, pour les metadata. Ensuite, les fichiers de resources que tu mentionnes peuvent continuer d'exister comme aujourd'hui. Un format «a plat» (repertoires et fichiers non zippés) pourrait aussi etre utile lors du developpement. Enfin, as-tu pensé aux formats collada et fbx tres en vogue ? voire l'utilisation de shaders ? (Ps: je connais tres peu sweet home 3d)
bon we
Loic
Qui sait, peut-être qu'un jour une personne va écrire un programme qui sera capable d'importer un fichier SH3D, ou encore mieux, un convertisseur au format BIM ?
Bonjour,
Merci pour toutes suggestions. C'est vraiment sympa :-)
> La tactique classique c'est:
> - xml ou json perso pour les sauvegardes de travail et la conservation long terme, via une grammaire très proche de ton modèle interne, [...]
> - fonctionnalité d'export en format du marché, uniquement. [...]
C'est ce qui me parait le moins risqué en effet, mais ça remet encore à plus tard l'export/import au format BIM (il y a déjà un export pur 3D au format OBJ). Comme je crois que le format BIM permet des extensions, ça aurait été pas mal de basculer tout de suite sur celui-là. Mais il vaut mieux que je soie raisonnable, sinon je ne démarrerai jamais ce chantier.
> Pour reprendre ce que disent Sylvain et Dominique, le format JSON offre une grande souplesse y compris la possibilité d'etre modifiable a la main, pour les metadata.
Je préfère tout de même XML, parce que c'est plus connu, parce que je maîtrise bien le parser SAX, parce que je ne connais pas JSON et encore moins ses pièges, et finalement parce que le parser SAX est dispo dans Java 6 et pas JSON, ce qui évite d'inclure une bibliothèque supplémentaire (avec ses dépendances éventuelles).
> Ensuite, les fichiers de resources que tu mentionnes peuvent continuer d'exister comme aujourd'hui. Un format <<a plat>> (repertoires et fichiers non zippés) pourrait aussi etre utile lors du developpement.
Je suis d'accord qu'explorer des fichiers dans des répertoires système, c'est le plus simple, mais les explorateurs de fichiers ZIP fonctionnent maintenant de façon quasi-transparente maintenant.
> Enfin, as-tu pensé aux formats collada et fbx tres en vogue ?
Sweet Home 3D est déjà capable d'importer des fichiers Collada/DAE. Comme c'est du XML, j'ai pensé aussi créer un format dérivé du format Collada pour Sweet Home 3D, mais je n'y crois pas.
Pour le format FBX, je n'ai pas encore vu de bibliothèques sur le web avec de nombreux objets à ce format. Donc, ça va attendre, surtout qu'en plus, je viens juste de finir d'écrire un nouveau parser pour le format 3DS. ;-)
> voire l'utilisation de shaders ?
Pour améliorer l'éclairage dans la vue 3D, j'aimerais bien, mais Java 3D n'est pas trop fait pour ça. De plus, Sweet Home 3D est déjà capable de faire aussi des rendus assez réalistes en ray-tracing dans le module de création de "photo" (voir la dernière colonne de la page http://www.sweethome3d.com/gallery.jsp )
> Je rejoins Sylvain sur l'idée d'une arborescence de fichiers avec à la racine un descripteur
> [...]
> Pour faciliter l'échange entre utilisateurs "à l'ancienne" (mail, disquette 5 1/4...) le fichier unique c'est le plus simple
A force d'avoir vu passer des fichiers ZIP à réparer, le principal avantage que je perçois à utiliser une arborescence de fichiers est qu'il y a plus de chances que les fichiers individuels d'une arborescence soient récupérables qu'un fichier ZIP. Mais le format ZIP est bien fichu quand même et j'arrive maintenant à récupérer une bonne partie du contenu valide d'un fichier ZIP endommagé, voire même tronqué. De plus, le format ZIP peut être compressé ou pas, le non compressé étant d'ailleurs celui par défaut dans Sweet Home 3D pour des raisons de performance.
Du point de vue utilisateur, c'est quand même beaucoup plus simple et moins risqué de manipuler un fichier unique plutôt qu'une arborescence, sans compter qu'avec un seul fichier ne se pose pas le problème de la gestion des droits qui pourrait révéler de mauvaises surprises avec une arborescence.
> qu'en est-il des polices de caractères ?
Il n'y a pas de possibilité de choisir une autre police et tout texte utilise la police par défaut pour l'instant.
> SH3D pourrait publier des modèles éclatés sur un serveur
Pour la version Online, c'est déjà en partie le cas : les modèles 3D et les textures disponibles sur sweethome3d.com ne sont pas incorporés dans le fichiers SH3D, mais sont téléchargés séparément via une URL externe au lieu d'une URL "jar:" interne au fichier.
> Concernant le format de compression je suggère de jeter un coup d'oeil à bzip2 qui compresse bien mieux que ZIP, et déjà implémenté sur toutes les plateformes
Je viens d'essayer les différences de compression sur un gros fichier SH3D de 395 Mo non compressé (un fichier de cette taille doit représenter une très petite minorité des fichiers SH3D) : il est passé à 149,9 Mo en format ZIP compressé en utilisant le menu "Enregistrer et compresser", puis avec un logiciel externe, sa taille est passée à 137,9 Mo toujours au format ZIP compressé (oui, Java n'a pas le meilleur moteur de compression ZIP), 150,3 Mo au format BZIP, 148,4 Mo en GZIP2 et 103,5 Mo en format 7Zip / LZMA.
Donc, je ferai mieux de sauter directement au format LZMA pour obtenir un vrai gain ! Mais comme dit plus haut, l'enregistrement au format compressé étant bien plus lent, les fichiers SH3D ne sont pas compressés quand on choisit le menu "Enregistrer" de Sweet Home 3D, et je ne crois pas que le format compressé soit dans les faits très utilisé. Du coup, je me demande si ça vaut vraiment la peine d'implémenter le format LZMA parce que ça va encore plus ralentir une sauvegarde compressée, et ne connaissant pas ce format, ça va me reprendre à nouveau un paquet de temps pour trouver ce qui est réparable dans un tel fichier quand il est endommagé (si c'est possible).
> Je parie un iPad Mini Retina avec Emmanuel qu'il n'aura que des ennuis s'il adopte un format normalisé pour le plan de la maison.
Ok, ok, on va éviter les paris inutiles, et désolé Laurent, tu n'auras pas mon iPad Mini. ;-)
J'utiliserai donc juste un format XML perso et relirai ton billet sur l'utilisation des attributs XML pour m'aider. Ca permettra déjà à d'autres personnes d'exploiter des fichiers SH3D si besoin. Qui sait, peut-être qu'un jour une personne va écrire un programme qui sera capable d'importer un fichier SH3D, ou encore mieux, un convertisseur au format BIM ?
> La lecture des anciens fichiers avec une bibliothèque en C portable, ça me semble tout à fait pertinent.
Bon, je vais tenter cette solution et vous tiendrai au courant.
Bonne semaine à tous,
--
Emmanuel PUYBARET
Email : puyb...@eteks.com
Web : http://www.eteks.com
http://www.sweethome3d.com
Le 19 sept. 2014 à 17:56, Dominique Jocal a écrit :
> La tactique classique c'est:
> - xml ou json perso pour les sauvegardes de travail et la conservation long terme, via une grammaire très proche de ton modèle interne, pour que ca marche tout le temps, rapidement, avec un code très simple. Migrations de versions de modèles facilitées. Ya plein d'outils pour faciliter les vérifications d'attendu dans les tests auto (xmldiff) .
> - fonctionnalité d'export en format du marché, uniquement. Ne serait ce que pour gérer sans contraindre le coeur les sémantiques différentes que tu decouvriras forcément dans des scénarios complexes.
Juste un mini commentaire :
XML est foncièrement "has been". Tout est en JSON ou yaml au niveau données. C'est beaucoup plus compact, ça se parle vite et c'est lisible. Le json est toutefois plus usité en java. Tu penses Jackson et ça va tout seul.
Bonjour,
Merci pour toutes suggestions. C'est vraiment sympa :-)
> La tactique classique c'est:
> - xml ou json perso pour les sauvegardes de travail et la conservation long terme, via une grammaire très proche de ton modèle interne, [...]
> - fonctionnalité d'export en format du marché, uniquement. [...]
C'est ce qui me parait le moins risqué en effet, mais ça remet encore à plus tard l'export/import au format BIM (il y a déjà un export pur 3D au format OBJ). Comme je crois que le format BIM permet des extensions, ça aurait été pas mal de basculer tout de suite sur celui-là. Mais il vaut mieux que je soie raisonnable, sinon je ne démarrerai jamais ce chantier.
> Pour reprendre ce que disent Sylvain et Dominique, le format JSON offre une grande souplesse y compris la possibilité d'etre modifiable a la main, pour les metadata.
Je préfère tout de même XML, parce que c'est plus connu, parce que je maîtrise bien le parser SAX, parce que je ne connais pas JSON et encore moins ses pièges, et finalement parce que le parser SAX est dispo dans Java 6 et pas JSON, ce qui évite d'inclure une bibliothèque supplémentaire (avec ses dépendances éventuelles).
> Ensuite, les fichiers de resources que tu mentionnes peuvent continuer d'exister comme aujourd'hui. Un format <<a plat>> (repertoires et fichiers non zippés) pourrait aussi etre utile lors du developpement.
Je suis d'accord qu'explorer des fichiers dans des répertoires système, c'est le plus simple, mais les explorateurs de fichiers ZIP fonctionnent maintenant de façon quasi-transparente maintenant.
> Enfin, as-tu pensé aux formats collada et fbx tres en vogue ?
Sweet Home 3D est déjà capable d'importer des fichiers Collada/DAE. Comme c'est du XML, j'ai pensé aussi créer un format dérivé du format Collada pour Sweet Home 3D, mais je n'y crois pas.
Pour le format FBX, je n'ai pas encore vu de bibliothèques sur le web avec de nombreux objets à ce format. Donc, ça va attendre, surtout qu'en plus, je viens juste de finir d'écrire un nouveau parser pour le format 3DS. ;-)
> voire l'utilisation de shaders ?
Pour améliorer l'éclairage dans la vue 3D, j'aimerais bien, mais Java 3D n'est pas trop fait pour ça. De plus, Sweet Home 3D est déjà capable de faire aussi des rendus assez réalistes en ray-tracing dans le module de création de "photo" (voir la dernière colonne de la page http://www.sweethome3d.com/gallery.jsp )
> Je rejoins Sylvain sur l'idée d'une arborescence de fichiers avec à la racine un descripteur
> [...]
> Pour faciliter l'échange entre utilisateurs "à l'ancienne" (mail, disquette 5 1/4...) le fichier unique c'est le plus simple
A force d'avoir vu passer des fichiers ZIP à réparer, le principal avantage que je perçois à utiliser une arborescence de fichiers est qu'il y a plus de chances que les fichiers individuels d'une arborescence soient récupérables qu'un fichier ZIP. Mais le format ZIP est bien fichu quand même et j'arrive maintenant à récupérer une bonne partie du contenu valide d'un fichier ZIP endommagé, voire même tronqué. De plus, le format ZIP peut être compressé ou pas, le non compressé étant d'ailleurs celui par défaut dans Sweet Home 3D pour des raisons de performance.
Du point de vue utilisateur, c'est quand même beaucoup plus simple et moins risqué de manipuler un fichier unique plutôt qu'une arborescence, sans compter qu'avec un seul fichier ne se pose pas le problème de la gestion des droits qui pourrait révéler de mauvaises surprises avec une arborescence.
> qu'en est-il des polices de caractères ?
Il n'y a pas de possibilité de choisir une autre police et tout texte utilise la police par défaut pour l'instant.
> SH3D pourrait publier des modèles éclatés sur un serveur
Pour la version Online, c'est déjà en partie le cas : les modèles 3D et les textures disponibles sur sweethome3d.com ne sont pas incorporés dans le fichiers SH3D, mais sont téléchargés séparément via une URL externe au lieu d'une URL "jar:" interne au fichier.
> Concernant le format de compression je suggère de jeter un coup d'oeil à bzip2 qui compresse bien mieux que ZIP, et déjà implémenté sur toutes les plateformes
Je viens d'essayer les différences de compression sur un gros fichier SH3D de 395 Mo non compressé (un fichier de cette taille doit représenter une très petite minorité des fichiers SH3D) : il est passé à 149,9 Mo en format ZIP compressé en utilisant le menu "Enregistrer et compresser", puis avec un logiciel externe, sa taille est passée à 137,9 Mo toujours au format ZIP compressé (oui, Java n'a pas le meilleur moteur de compression ZIP), 150,3 Mo au format BZIP, 148,4 Mo en GZIP2 et 103,5 Mo en format 7Zip / LZMA.
Donc, je ferai mieux de sauter directement au format LZMA pour obtenir un vrai gain ! Mais comme dit plus haut, l'enregistrement au format compressé étant bien plus lent, les fichiers SH3D ne sont pas compressés quand on choisit le menu "Enregistrer" de Sweet Home 3D, et je ne crois pas que le format compressé soit dans les faits très utilisé. Du coup, je me demande si ça vaut vraiment la peine d'implémenter le format LZMA parce que ça va encore plus ralentir une sauvegarde compressée, et ne connaissant pas ce format, ça va me reprendre à nouveau un paquet de temps pour trouver ce qui est réparable dans un tel fichier quand il est endommagé (si c'est possible).
> Je parie un iPad Mini Retina avec Emmanuel qu'il n'aura que des ennuis s'il adopte un format normalisé pour le plan de la maison.
Ok, ok, on va éviter les paris inutiles, et désolé Laurent, tu n'auras pas mon iPad Mini. ;-)
J'utiliserai donc juste un format XML perso et relirai ton billet sur l'utilisation des attributs XML pour m'aider. Ca permettra déjà à d'autres personnes d'exploiter des fichiers SH3D si besoin. Qui sait, peut-être qu'un jour une personne va écrire un programme qui sera capable d'importer un fichier SH3D, ou encore mieux, un convertisseur au format BIM ?
> La lecture des anciens fichiers avec une bibliothèque en C portable, ça me semble tout à fait pertinent.
Bon, je vais tenter cette solution et vous tiendrai au courant.
Bonne semaine à tous,
--
Emmanuel PUYBARET
Email : puyb...@eteks.com
Web : http://www.eteks.com
http://www.sweethome3d.com
Le 19 sept. 2014 à 17:56, Dominique Jocal a écrit :
> La tactique classique c'est:
> - xml ou json perso pour les sauvegardes de travail et la conservation long terme, via une grammaire très proche de ton modèle interne, pour que ca marche tout le temps, rapidement, avec un code très simple. Migrations de versions de modèles facilitées. Ya plein d'outils pour faciliter les vérifications d'attendu dans les tests auto (xmldiff) .
> - fonctionnalité d'export en format du marché, uniquement. Ne serait ce que pour gérer sans contraindre le coeur les sémantiques différentes que tu decouvriras forcément dans des scénarios complexes.
JSON a un petit inconvénient je crois, la grammaire n'a pas prévu le commentaire. <!-- XML l'a prévu. -->
Mais on peut considérer cela comme un détail, ou prendre un parser qui supporte /** un format du genre */.
A+
L'idée de Julien est plutôt bonne. H2 va aussi te faire ça.
C'est pas une mode. C'est mieux. C'est comme si tu ne dis que tu veux faire de la peinture à l'huile. Ça marchait mais c'est toxique...
Personne n'utilise de parser SAX. C'est xstream, jaxb ou autre. C'est raisonnablement rapide et surtout ça plie le sujet en 10 minutes.
JSON, c'est plus compact, plus rapide à lire et supporté site toutes les plates-formes.
Yaml aussi. Par contre je n'en ai jamais parlé. Mais ça à la faveur pour des fichiers de propriétés ces jours-ci.
Personne n'utilise de parser SAX.
C'est xstream
jaxb