• [^] # Re: XML, encore et toujours.... le mauvais choix pour la mauvaise utilisation.

    Posté par . En réponse au journal Projet Badnik, partie 2 : GameData et appel à contribution. Évalué à 1. Dernière modification le 11 novembre 2013 à 18:12.

    gérer proprement plusieurs jeux dans un seul fichier (je parle de centaines) sans que ça devienne illisible ? (je pensais à faire un fichier contenant les jeux de tout un système, système étant en partie une collection de jeux)
    définir facilement et proprement des sous-formats ? (par exemple un MegaDriveGameData contenant des spécificités à la Mega Drive et étendant GameData)

    Tu n'as qu'a copier/coller 100 fois ton texte dans le même fichier, et me dire que tu trouves ça lisible... en toute bonne foi, bien sûr.

    Enfin, au niveau des formats que j'ai cités: JSON en est capable, celui de debian aussi ( même que c'est ce qui est fait dans "/var/lib/apt/lists/*". Je ne le savais pas, mais ta question m'a poussé à regardé comment c'était foutu...), et je ne doute pas que YAML le puisse aussi, je connais moins ce format (je me le garde juste en mémoire pour le jour ou j'en aurai peut-être besoin. Ceci dit, wikipedia montre très bien ce qu'on peut en faire).

    définir facilement et proprement des sous-formats ? (par exemple un MegaDriveGameData contenant des spécificités à la Mega Drive et étendant GameData)

    Ce que tu dis me fais penser à l'héritage, en POO. C'est le truc que l'on apprend a arrêter d'utiliser à tout bout de champ (comme ce que je prône pour XML en fin de compte) au bout d'un moment, parce que ça pose plus de souci que ça n'en résout.

    Debian résout ce problème de façon très simple: les debtags.

    Un extrait d'un fichier de /var/lib/apt/lists fera un bon exemple, je pense:

    Package: alien-arena
    Version: 7.53+dfsg-3
    Installed-Size: 1885
    Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org>
    Architecture: amd64
    Depends: libc6 (>= 2.7), libcurl3-gnutls (>= 7.16.2), libfreetype6 (>= 2.3.5), libgcc1 (>= 1:4.1.1), libjpeg8 (>= 8c), libogg0 (>= 1.0rc3), libstdc++6 (>= 4.1.1), libvorbis0a (>= 1.1.2), libvorbisfile3 (>= 1.1.2), libx11-6, libxxf86dga1, libxxf86vm1, libopenal1, alien-arena-data
    Description: Standalone 3D first person online deathmatch shooter
    Homepage: http://red.planetarena.org
    Description-md5: 47823b2859eb6b755a4964a82d53d164
    Tag: game::fps, hardware::input:keyboard, hardware::input:mouse,
     hardware::opengl, implemented-in::c, interface::3d, interface::x11,
     network::client, role::program, uitoolkit::sdl, use::gameplaying,
     x11::application
    Section: contrib/games
    Priority: extra
    Filename: pool/contrib/a/alien-arena/alien-arena_7.53+dfsg-3_amd64.deb
    Size: 832736
    MD5sum: 9dbb8283b1aec54dedf7656dfced98f7
    SHA1: 12d01f66d130690e83329ee2ce524e8981cd2273
    SHA256: dde9ab80f1cf913f73fcbe1110f0c32dfb4a56c47ad8fde13234f2177edff26c
    Package: alien-arena-server
    Source: alien-arena
    Version: 7.53+dfsg-3
    Installed-Size: 581
    Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org>
    Architecture: amd64
    Depends: libc6 (>= 2.7), libjpeg8 (>= 8c), ruby, alien-arena-data
    Description: Dedicated server for Alien Arena
    Homepage: http://red.planetarena.org
    Description-md5: f4a775dfc909f96d9fd86524249092dc
    Tag: game::fps, implemented-in::c, implemented-in::ruby,
     implemented-in::shell, interface::commandline, interface::daemon,
     network::server, role::program, use::gameplaying
    Section: contrib/games
    Priority: extra
    Filename: pool/contrib/a/alien-arena/alien-arena-server_7.53+dfsg-3_amd64.deb
    Size: 267938
    MD5sum: fc2ab2a91de14bd3a41f5564d9addb58
    SHA1: 2f1fd137fbd4d290cd13e0e68472c8cf96341a71
    SHA256: 820885cb501ab2382b6b341093bb2cef626513eee19355eca365508ed5bffa68
    Package: alsa-firmware-loaders
    Source: alsa-tools
    Version: 1.0.25-2
    Installed-Size: 192
    Maintainer: Debian ALSA Maintainers <pkg-alsa-devel@lists.alioth.debian.org>
    Architecture: amd64
    Depends: fxload, udev, libasound2 (>= 1.0.16), libc6 (>= 2.4)
    Description: ALSA software loaders for specific hardware
    Homepage: http://www.alsa-project.org/
    Description-md5: 631dd818c28b45f8af844a1ba49ddcd6
    Tag: role::program, use::driver, works-with::audio
    Section: contrib/sound
    Priority: extra
    Filename: pool/contrib/a/alsa-tools/alsa-firmware-loaders_1.0.25-2_amd64.deb
    Size: 38244
    MD5sum: cbfc88429d6c88a3dba19e4ae4272085
    SHA1: 048e9aafaac995d0820fb196a187f21c6655f935
    SHA256: 4282c23deae1f1cd5669d86281f26e7bf58e33421df213548fa14445a1a3baf8
    

    Je ne sais pas pour toi, mais je trouve ça plutôt lisible. Peux-tu faire la même chose, en aussi lisible, avec un format plus riche?