Browse code

oldblog migration

devnewton authored on 07/10/2017 09:02:48
Showing 37 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,22 @@
1
+---
2
+title: Chronokiwi sort en version d3b63be4cb
3
+date: 2011-11-02 23:10
4
+tags:
5
+---
6
+
7
+Mon projet Chronokiwi, le wiki spécialisé dans la saisie et la présentation d'évènements et de chronologies écrit avec Django sous licence BSD, évolue.
8
+
9
+La dernière version était assez basique, mais aujourd'hui commence vraiment à prendre forme grâce aux nouveautés suivantes:
10
+
11
+*   liens entre les pages des évènements et les chronologies via une extension de la syntaxe Markdown.
12
+*   flux RSS.
13
+*   export de chronologies sous forme d'un graphe (via Graphviz)
14
+*   géolocalisation des évènements via GeoDjango et Openlayers.
15
+
16
+La prochaine fonctionnalité importante que j'aimerais implémenter est une "timeline" visuelle intégrée avec une carte afin de pouvoir, par exemple, visualiser de façon interactive l'évolution d'une invasion.
17
+
18
+J'aimerais aussi améliorer la partie cartographique, mais je suis assez limité par les versions de Django et GeoDjango proposées par ma distribution. Apparemment les développeurs Python modernes se font des "virtualenv" et des "pip" pour résoudre ce genre problème, mais je n'ai pas eu le temps d'explorer le sujet.
19
+
20
+*   [Page du projet](http://chiselapp.com/user/devnewton/repository/chronokiwi)
21
+
22
+{% asset_img chronokiwi.jpg chronokiwi %}
0 23
new file mode 100644
1 24
Binary files /dev/null and b/source/_posts/Chronokiwi-sort-en-version-d3b63be4cb/chronokiwi.jpg differ
2 25
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+---
2
+title: Essai du système de mods de Newton Adventure
3
+date: 2013-03-15 00:50:26
4
+tags:
5
+---
6
+
7
+J'ai commencé à développer un système qui permets de créer des mods pour Newton Adventure en quelques étapes:
8
+
9
+*   Copier les fichiers du sous dossier data/ dans ~/.config/mods/nomdumod
10
+*   Les éditer avec gimp et l'éditeur de niveau
11
+*   Lancer le jeu, aller dans les options et choisir le mod
12
+
13
+Pour le mod de test, la mode étant au retro, j'ai fait un mod à la mode... retro!
14
+
15
+{% asset_img retro.jpg retro %}
0 16
new file mode 100644
1 17
Binary files /dev/null and b/source/_posts/Essai-du-systeme-de-mods-de-Newton-Adventure/retro.jpg differ
2 18
new file mode 100644
... ...
@@ -0,0 +1,29 @@
1
+---
2
+title: Grand nettoyage d'hiver
3
+date: 2013-02-23 14:11
4
+tags:
5
+---
6
+
7
+J'ai fait un gros nettoyage du code de Newton Adventure:
8
+
9
+*   Il est maintenant plus facile pour les graphistes de contribuer.
10
+*   Le portage android a été supprimé en attendant de trouver un développeur pour le faire renaître.
11
+*   La version Java Web Start est abandonnée.
12
+
13
+# Plus facile la contribution
14
+
15
+Le grand changement est une meilleure utilisation des fichiers: avant un fichier *.tmx contenait toutes les informations, images comprises, ce qui rendait pénible leur édition, car pour éditer une tuile, il fallait l'extraire via l'éditeur de niveau, l'éditer avec gimp (par exemple), puis la réintégrer via l'éditeur. Pour voir les changements en jeu, il fallait aussi systématiquement recompiler. Ce fonctionnement était nécessaire pour le portage android où on n'a pas accès à vrai système de fichier.
16
+
17
+Maintenant le jeu stocke ses données dans un sous dossier data/ qui contient toutes les images au format png. On peut les éditer et lancer le jeu pour voir les changements directement.
18
+
19
+J'ai fait l'essai avec ce bonhomme de neige dessiné par [Julien Jorge](http://julien.jorge.free.fr/):
20
+
21
+{% asset_img snow.jpg snow %}
22
+
23
+# La fin du portage android
24
+
25
+Il est toujours resté à l'état de prototype, je n'ai pas beaucoup de temps pour m'en occuper et il faudrait sans doute une réécriture plutôt qu'un portage pour s'adapter à ces petites machines. Je pense qu'il vaut mieux essayer de recruter un développeur motivé pour faire une vraie version mobile/tactile de Newton Adventure en reprenant juste les données et en faisant un code neuf avec son langage et ses apis préférés.
26
+
27
+# Java Web Start aux oubliettes
28
+
29
+Java Web Start est une très bonne idée pour déployer des applications simplement, malheureusement ce n'est pas trop compatible avec l'utilisation de bibliothèques natives et de certificats SSL autosignés: l'utilisateur voit des messages d'avertissements trop dissuasifs...
0 30
\ No newline at end of file
1 31
new file mode 100644
2 32
Binary files /dev/null and b/source/_posts/Grand-nettoyage-d-hiver/snow.jpg differ
3 33
new file mode 100644
... ...
@@ -0,0 +1,55 @@
1
+---
2
+title: 'Making off: un nouveau sprite pour Newton'
3
+date: 2012-12-27 00:21:45
4
+tags:
5
+---
6
+
7
+{% asset_img newnewton.jpg newnewton %}
8
+
9
+Le jeu que je développe, [Newton Adventure](http://newtonadventure.bci.im/), utilisait jusqu'ici un sprite sans rapport avec le thème du jeu.
10
+
11
+{% asset_img oldnewton.jpg oldnewton %}
12
+
13
+J'ai décidé de m'attaquer à la réalisation d'un personnage ressemblant à Newton à l'aide des logiciels libres suivant:
14
+
15
+*   [gimp](http://www.gimp.org/) pour le dessin et la retouche d'image.
16
+*   [nanim](https://git.bci.im/nanim/) pour la création de l'animation.
17
+*   [imagemagick](http://www.imagemagick.org/) pour la création du gif animé visible à la fin du billet.
18
+
19
+Voici la procédure que j'ai suivi.
20
+
21
+Première étape, faire un dessin grossier au crayon:
22
+
23
+{% asset_img sketch1.jpg sketch1 %}
24
+
25
+Deuxième étape, scanné et utiliser des filtres (Dessin au crayon, nettoyer...) pour avoir un contour net:
26
+
27
+{% asset_img sketch2.jpg sketch2 %}
28
+
29
+Troisième étape, réduire la résolution et faire un coloriage rapide:
30
+
31
+{% asset_img newton_64x64_color.png newton_64x64_color %}
32
+
33
+Quatrième étape, réduire encore la résolution et faire essayer de faire juste ressortir les détails importants:
34
+
35
+{% asset_img newton_32x32_montage.png newton_32x32_montage %}
36
+
37
+Pour cela il est indispensable de bien configurer gimp. J'ouvre deux vues sur la même image, l'une avec un zoom important, l'autre en taille réelle et qui n'affiche pas les sélections ou bords de cadre. Je mets aussi un calque d'une couleur que je n'utilise pas pour faire bien ressortir les contours.
38
+
39
+{% asset_img gimp_config.png gimp_config %}
40
+
41
+Enfin, il faut recommencer pour toutes les positions clefs de l'animation:
42
+
43
+{% asset_img newton_montage.png newton_montage %}
44
+
45
+Avec le sdk de nanim, la commande suivante permets de créer l'animation:
46
+
47
+    nanimenc -author devewton -license "CC-BY-SA 3.0" -d 100 -a stay -f newton_03.png -a walk -f newton_03.png -f newton_04.png -f newton_05.png -f newton_04.png -f newton_03.png -f newton_02.png -f newton_01.png -o hero.nanim
48
+
49
+Pour obtenir le gif, il faut utiliser la commande convert d'imagemagick:
50
+
51
+convert -delay 10 -dispose Background newton_03.png newton_03.png newton_04.png newton_05.png newton_04.png newton_03.png newton_02.png newton_01.png hero.gif
52
+
53
+Et voilà le résultat:
54
+
55
+{% asset_img hero.gif hero %}
0 56
\ No newline at end of file
1 57
new file mode 100644
2 58
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/gimp_config.jpg differ
3 59
new file mode 100644
4 60
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/hero.gif differ
5 61
new file mode 100644
6 62
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/newnewton.png differ
7 63
new file mode 100644
8 64
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/newton_32x32_montage.png differ
9 65
new file mode 100644
10 66
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/newton_64x64_color.png differ
11 67
new file mode 100644
12 68
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/newton_montage.png differ
13 69
new file mode 100644
14 70
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/oldnewton.png differ
15 71
new file mode 100644
16 72
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/sketch1.jpg differ
17 73
new file mode 100644
18 74
Binary files /dev/null and b/source/_posts/Making-off-un-nouveau-sprite-pour-Newton/sketch2.jpg differ
19 75
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+---
2
+title: Naissance du projet Chronokiwi
3
+date: 2011-11-02 23:05:43
4
+tags:
5
+---
6
+
7
+Voici mon dernier projet: [Chronokiwi](http://chiselapp.com/user/devnewton/repository/chronokiwi).
8
+
9
+Afin d'apprendre à me servir du cadriciel Django, j'ai réalisé une idée que j'avais en tête depuis un moment: un wiki spécialisé dans la saisie et la présentation d'évènements et de chronologies.
10
+
11
+Limité au strict minimum pour l'instant, j'y ajouterai des fonctionnalités petit à petit.
12
+
13
+Une démo est disponible [ici](../../../devnewton/chronokiwi_demo/index/index.html) et le [site du projet](../../../projects/fossils/chronokiwi/index.html) permet de télécharger les sources sous licence BSD.
0 14
\ No newline at end of file
1 15
new file mode 100644
... ...
@@ -0,0 +1,44 @@
1
+---
2
+title: Newton Adventure 1.1
3
+date: 2011-12-17 19:34:04
4
+tags:
5
+---
6
+
7
+Newton Adventure est un jeu de plateforme 2D où le joueur dirige Newton, un héro très particulier puisqu'il a le pouvoir de modifier la direction de la gravité. Ainsi pour Newton les niveaux du jeu ne sont pas linéaires et peuvent être parcouru dans tous les sens. Les ennemis et les objets subissent aussi les effets de la gravité ce qui permet de les atteindre ou de les éviter en les faisant tomber dans la bonne direction.
8
+
9
+## Téléchargement
10
+
11
+Vous pouvez jouer au jeu [ici](https://play.bci.im/).
12
+
13
+{% asset_img montage.png montage %}
14
+
15
+### Vidéos
16
+
17
+[dailymotion](http://www.dailymotion.com/video/xn5xup_newton-adventure-demo_videogames)  
18
+[youtube](http://www.youtube.com/watch?v=Jta0M-uOGXA&context=C360d7f7ADOEgsToPDskIk50zx6MGZTQ1TIENATVd_)  
19
+[wat.tv](http://www.wat.tv/video/newton-adventure-demo-4mk1t_4mjav_.html)
20
+
21
+## Les nouveautés
22
+
23
+### Plus de contenu
24
+
25
+Newton Adventure propose désormais 21 niveaux regroupés par quête:
26
+
27
+*   Artic: un monde enneigé où les plateformes sont très glissantes.
28
+*   Egypt: un univers désertique qui était déjà présent dans la version précédente.
29
+*   Jungle: des niveaux plus verts relativement faciles pour bien débuter et comprendre les mécanismes du jeu.
30
+*   Vatican: on ne trouvera pas le Pape au milieu de ces ruines antiques, mais un ensemble de pièges et de mécanismes qui donnent du fil à retordre au joueur.
31
+
32
+Dans tous ces niveaux, on croisera de nouveaux types de plateformes: rebondissantes, glissantes ou traversables.
33
+
34
+### Plus configurable
35
+
36
+En éditant le fichier data/config.properties, on peut maintenant régler les touches de contrôle et certains paramètres d'affichage.
37
+
38
+## La technique
39
+
40
+Newton Adventure est toujours écrit en Java avec les bibliothèques lwjgl pour l'affichage et phys2d pour la physique. Les niveaux sont éditables avec tiled et un plugin adapté. Les sources de Newton Adventure sont sous licence BSD tandis que les graphismes et les données du niveau relèvent de la Creative Commons BY-SA 3.0 ou de simple autorisation d'utilisation de leur auteur.
41
+
42
+## Remerciements
43
+
44
+Un grand merci aux artistes d'Opengameart et à Nicosmos (qui a dessiné le menu principal) qui m'ont permis d'avoir des graphismes corrects pour ce jeu.
0 45
\ No newline at end of file
1 46
new file mode 100644
2 47
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-1/montage.png differ
3 48
new file mode 100644
... ...
@@ -0,0 +1,33 @@
1
+---
2
+title: Newton Adventure 1.2
3
+date: 2012-02-09 17:13:28
4
+tags:
5
+---
6
+
7
+Voici une nouvelle version de Newton Adventure, le jeu de plateforme 2D libre pour Linux, Windows ou Mac OS X qui vous permet de changer la gravité et faire tourner les niveaux à 360°
8
+
9
+{% asset_img montage.jpg montage %}
10
+
11
+## Les nouveautés
12
+
13
+### Musiques
14
+
15
+Grâce à , j'ai pu ajouter des musiques pour tous les niveaux et écrans du jeu.
16
+
17
+### Scores
18
+
19
+A la fin de chaque quête, un score est attribué au joueur. Ce score peut être envoyé au [serveur de score](https://git.bci.im/scoreserver/), soit en anonyme, soit avec un nom de joueur à configurer dans les options du jeu.
20
+
21
+Le score est déterminé par le nombre pommes reçues ou perdues, les niveaux traversés, les ennemis tués et les pièces collectées.
22
+
23
+### Niveaux bonus
24
+
25
+Pour ajouter une possibilité pour faire un highscore, j'ai ajouté un ensemble de niveaux bonus. Ceux-ci sont accessibles en collectant toutes les pommes d'un niveau et en trouvant un téléporteur. Dans les niveaux bonus, il n'est plus possible d'utiliser le changement de gravité, il faut donc utiliser des plateformes mouvantes ou rebondissantes pour collecter un maximum de pièce en moins d'une minute.
26
+
27
+### Menu d'options
28
+
29
+Jusqu'ici Newton Adventure n'était configurable qu'en éditant un fichier et en relançant le jeu. Un menu d'options est maintenant accessible depuis l'écran d'accueil.
30
+
31
+### Portage sur Android en cours
32
+
33
+J'ai commencé un portage sur Android, il fonctionne peut être, mais ne possédant pas un téléphone de ce type, je n'ai pu le tester qu'avec l'émulateur fourni par Google. Malheureusement ce dernier est si lent qu'il est impossible de faire un développement OpenGL sérieux avec... N'hésitez à faire un don pour que je puisse m'en offrir un :-)
0 34
\ No newline at end of file
1 35
new file mode 100644
2 36
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-2/montage.jpg differ
3 37
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+---
2
+title: Newton Adventure 1.3
3
+date: 2012-03-19 00:17
4
+tags:
5
+---
6
+
7
+La version 1.3 du jeu de plateforme libre Newton Adventure apporte des nouveautés qui le rende plus accessible:
8
+
9
+*   Les manettes de jeu USB sont gérées et configurables dans le menu "Options".
10
+*   Dans les niveaux les plus grands, il est possible de collecter deux objets, une carte et une boussole, qui permette de débloquer la vue d'une mini-carte très utile pour se repérer.
11
+*   Une nouvelle quête composée de 5 niveaux, hades, est disponible et propose de nouveaux éléments de jeu tels que les téléporteurs ou les serrures.
12
+
13
+{% asset_img hades1.jpg hades1 %}
14
+{% asset_img minimap.jpg minimap %}
15
+{% asset_img hades2.jpg hades2 %}
16
+{% asset_img hades3.jpg hades3 %}
17
+{% asset_img hades4.jpg hades4 %}
0 18
\ No newline at end of file
1 19
new file mode 100644
2 20
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-3/hades1.jpg differ
3 21
new file mode 100644
4 22
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-3/hades2.jpg differ
5 23
new file mode 100644
6 24
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-3/hades3.jpg differ
7 25
new file mode 100644
8 26
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-3/hades4.jpg differ
9 27
new file mode 100644
10 28
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-3/minimap.jpg differ
11 29
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+---
2
+title: 'Newton Adventure 1.6: dernière version corrective avant la refonte graphique'
3
+date: 2012-06-12 23:32:38
4
+tags:
5
+---
6
+
7
+Cette version de Newton Adventure, un jeu libre de plateforme 2d où le joueur peut faire tourner les décors, corrige quelques bugs génants et sera probablement la dernière avant la refonte graphique.
8
+
9
+Voici les principaux changements:
10
+
11
+*   évite au menu principal d'être très très lent sur cette configuration.
12
+*   un panneau dans chaque premier niveau de chaque quête permet d'afficher l'aide.
13
+*   évite à Newton d'être coincé dans un mur par un tir de canon.
14
+*   affichage du score récolté avec diverses actions dans le jeu.
15
+*   corrige la détection de collision avec les pièges mobiles.
16
+
17
+Le jeu et ses sources sont téléchargeables sur le [site du projet](http://newtonadventure.bci.im/).
18
+
19
+## Le futur
20
+
21
+La prochaine version arrivera sûrement dans un bon bout de temps, refondre tous les graphismes va être un gros travail! Ci dessous un extrait des premiers essais fait par Feust:
22
+
23
+{% asset_img refonte.jpg refonte %}
24
+
25
+## Le portage android
26
+
27
+Après mes premiers essais sur le téléphone HTC Magic, j'ai mis en pause le portage android, car je ne pense pas pouvoir optimiser suffisamment Newton Adventure pour cette petite machine. Je le reprendrais si je mets la main sur un périphérique plus puissant ou si je trouve de l'aide pour optimiser le code.
0 28
\ No newline at end of file
1 29
new file mode 100644
2 30
Binary files /dev/null and b/source/_posts/Newton-Adventure-1-6-derniere-version-corrective-avant-la-refonte-graphique/refonte.jpg differ
3 31
new file mode 100644
... ...
@@ -0,0 +1,10 @@
1
+---
2
+title: Newton Adventure bientôt sur Android?
3
+date: 2012-05-15 00:01:35
4
+tags:
5
+---
6
+
7
+Grâce au don d'une machine de test (merci Allucard), le portage sur Android avance.
8
+
9
+{% asset_img android1.jpg android1 %}
10
+{% asset_img android2.jpg android2 %}
0 11
new file mode 100644
1 12
Binary files /dev/null and b/source/_posts/Newton-Adventure-bientot-sur-Android/android1.jpg differ
2 13
new file mode 100644
3 14
Binary files /dev/null and b/source/_posts/Newton-Adventure-bientot-sur-Android/android2.jpg differ
4 15
new file mode 100644
... ...
@@ -0,0 +1,33 @@
1
+---
2
+title: 'Un nouveau jeu libre : Newton Adventure'
3
+date: 2010-01-02 07:32:31
4
+tags:
5
+---
6
+
7
+La première démo jouable de [Newton Adventure](https://play.bci.im/) est sortie. Il s'agit d'un jeu de plates-formes 2D proche des classiques du genre en apparence, mais qui propose une nouveauté majeure : le personnage principal, Newton, a le pouvoir de modifier le sens de la gravité.
8
+
9
+Cela permet de parcourir les niveaux dans tous les sens, d'atteindre des plates-formes inaccessibles, de faire tomber des objets ou des ennemis pour les atteindre, etc.
10
+
11
+# La démo
12
+
13
+La démo qui propose un niveau très simple, pour montrer le concept, a été testée sous Linux, mais devrait aussi tourner sous Windows, Mac OS X et Solaris. Un greffon pour Tiled permet de créer de nouveaux niveaux.
14
+
15
+# Le développement
16
+
17
+Techniquement, le jeu est écrit en Java avec les bibliothèques lwjgl pour l'affichage et phys2d pour la physique.
18
+
19
+Les sources, fournies avec la démo, sont sous licence BSD tandis que les graphismes et les données du niveau relèvent de la Creative Commons BY-SA 3.0.
20
+
21
+# Le développeur
22
+
23
+Je réalise Newton Adventure sur mon temps libre et les vacances de fin d'année m'ont permis de bien avancer. J'espère pouvoir sortir dans l'année une version complète qui sera aussi amusante à jouer qu'à créer.
24
+
25
+Pour l'instant je vais prendre un peu de recul et attendre les retours sur la démo, car j'ai beaucoup d'idée pour la suite et il va falloir faire le tri :
26
+
27
+*   Framework pour ajouter des ennemis avec une IA sous forme de greffons ;
28
+*   Objets utilisant le moteur physique : trampolines, cordes, pendules, rochers géants à la Indiana Jones, vent... ;
29
+*   Des plates-formes particulières : glissantes, mobiles, déplaçables... ;
30
+*   Musiques et effets sonores ;
31
+*   Thèmes graphiques (jungle, ville...).
32
+
33
+Enfin, j'aimerais porter le jeu sur téléphone mobile, mais je ne sais vraiment pas comment faire techniquement.
0 34
\ No newline at end of file
1 35
new file mode 100644
... ...
@@ -0,0 +1,48 @@
1
+---
2
+title: Une tribune décentralisée est-elle possible?
3
+date: 2013-01-25 19:04:06
4
+tags:
5
+---
6
+
7
+J'ai récemment changé de système de chat pour mon site web pour une tribune. Avant j'utilisais le protocole [XMPP](http://xmpp.org/about-xmpp/) avec comme serveur [ejabberd](http://www.ejabberd.im/) et comme client [muckl_tribune](../../../projects/muckl_tribune/index/index.html), une variante de muckl que j'ai modifié pour émuler l'ergonomie d'une tribune, mais la complexité de la solution et le manque de temps m'ont conduit à adopter l'une des meilleures tribunes du marché, celle de [Drupal](http://drupal.org/project/tribune). J'en ai aussi profité pour migrer mon blog dotclear.
8
+
9
+Ces migrations m'ont conduit à m'intéresser de plus près au monde des tribunes.
10
+
11
+# Qu'est-ce qu'une tribune?
12
+
13
+Voici la meilleure définition que j'ai trouvée:
14
+
15
+    Une tribune (parfois appelée "shoutbox") est une application Web permettant à plusieurs utilisateurs de discuter : il s'agit d'un chat Web caractérisé par l'utilisation des standards HTTP et XML. Ainsi, afin de mettre en oeuvre un chat Web, une tribune expose une API HTTP permettant à plusieurs utilisateurs 1) de poster un message et 2) d'obtenir les derniers messages postés sous la forme d'un fichier XML appelé backend. [devmoules](http://halifirien.info/index.php?title=Tribune)
16
+
17
+Les tribunes les plus célèbres sont [dlfp](https://linuxfr.org/board) et [euromussels](http://euromussels.eu/).
18
+
19
+# La centralisation
20
+
21
+Contrairement à d'autres systèmes tels que XMPP ou Retroshare à l'heure actuelle les tribunes sont centralisées: elles sont toujours liées à un site web auquel il est parfois obligatoire de s'y inscrire. C'est donc du pur Minitel 2.0 avec tous les abus possibles que cela implique (atteintes à la vie privée, censure...).
22
+
23
+{% asset_img tribune.png tribune %}
24
+
25
+
26
+Note: la partie serveur s'appelle _bouchot_ ou simplement _tribune_ et la partie cliente _coincoin_.
27
+
28
+
29
+# La décentralisation
30
+
31
+## Le principe
32
+
33
+J'ai essayé d'imaginer ce que pourrait être un système de tribune décentralisée: ce qui m'a semblé le plus simple, c'est de considérer que chaque utilisateur aurait sa propre base de données contenant les messages. Régulièrement, les utilisateurs amis synchronisent leurs bases, important les messages des autres, exportant les leurs.
34
+
35
+{% asset_img tribune_distribuee.png tribune %}
36
+
37
+
38
+## Le prototype
39
+
40
+Définir et synchroniser des bases de données n'est pas une mince affaire, heureusement j'ai eu l'idée d'utiliser un système de bases synchronisées que je connais bien, puisque je m'en sers pour gérer mes projets: [fossil](http://fossil-scm.org/), un logiciel basé sur [sqlite](https://www.sqlite.org/)qui combine gestionnaire de version, wiki et bugtracker.
41
+
42
+Une fonctionnalité peu utilisée de fossil est la création d'évènement. J'ai "hacké" ce système pour m'en servir de stockage de messages et réduire mon prototype à deux scripts: un pour transformer la liste des évènements en backend xml, un autre pour recevoir un message et le transformer en évènement.
43
+
44
+Testé avec mon coincoin préféré ([onlinecoincoin](http://olcc.logicielslibres.info/)), le prototype est une tribune tout à fait fonctionnelle. En clonant le dépôt, j'ai pu voir que l'on peut gérer plusieurs tribunes indépendantes et les faire se synchroniser par fossil.
45
+
46
+## Conclusion
47
+
48
+La centralisation des tribunes n'est pas une fatalité, le prototype le montre, même s'il a ses limites: il se base sur un "hack" de fossil, l'authentification n'est pas gérée, les norloges sont forcément UTC... Mais peut être qu'un jour un développeur de talent reprendra cette idée et deviendra riche et célèbre avec!
0 49
\ No newline at end of file
1 50
new file mode 100644
2 51
Binary files /dev/null and b/source/_posts/Une-tribune-decentralisee-est-elle-possible/tribune.png differ
3 52
new file mode 100644
4 53
Binary files /dev/null and b/source/_posts/Une-tribune-decentralisee-est-elle-possible/tribune_distribuee.png differ
5 54
new file mode 100644
... ...
@@ -0,0 +1,51 @@
1
+---
2
+title: 'Write once, run anywhere qu''il disait'
3
+date: 2012-12-03 11:20:27
4
+tags:
5
+---
6
+
7
+Ces derniers jours, j'ai travaillé sur le packaging de [Newton Adventure](https://play.bci.im/) et ce n'est pas de tout repos!
8
+
9
+Voici un résumé de mes recherches sur le sujet.
10
+
11
+# Du simple zip...
12
+
13
+Jusqu'ici je distribuais une simple archive au format zip contenant l'exécutable java du projet, cad un fichier jar, ainsi que les bibliothèques dont il dépend: certaines sont aussi écrites en java, ce sont donc aussi des jars, d'autres sont des bibliothèques natives destinées à accéder au matériel graphique via OpenGL ou sonore via OpenAL.
14
+
15
+La production d'un jar exécutable est difficile, mais pas insurmontable: il faut indiquer à Java où sont les bibliothèques. Pour les jars, il faut jouer avec maven, le  
16
+programme utilisé pour compiler le projet, tandis que du code spécifique  
17
+doit être écrit pour trouver les bibliothèques natives.
18
+
19
+Toutefois ce mode de distribution pose plusieurs problèmes:
20
+
21
+*   beaucoup d'utilisateurs ne savent pas décompresser une archive.
22
+*   aucun raccourci dans le menu de l'environnement de bureau n'est créé automatiquement et avec certain (Unity par exemple), c'est très difficile de le faire à la main.
23
+*   sur la plupart des PC, lorsque l'utilisateur double clique sur un jar, cela ouvre un gestionnaire d'archive au lieu d'exécuter le programme.
24
+
25
+Sur ce dernier point, les environnements de bureau sont les grands coupables de ce comportement simple, mais stupide: combien d'utilisateurs veulent par défaut voir les entrailles d'un programme java plutôt que de l'exécuter? C'est aussi idiot que d'ouvrir par défaut les exécutables avec un éditeur hexadécimal.
26
+
27
+Changer les associations de fichier étant souvent très compliqué, je distribue des batchs pour aider l'utilisateur à lancer le programme, mais là aussi les fichiers batchs s'ouvrent souvent avec un éditeur de texte sur la plupart des machines. Avec Windows, c'est le top: la commande java est souvent  inaccessible, l'exécution d'un batch provoque parfois des popups d'alertes...
28
+
29
+# ... au paquet d'installation
30
+
31
+Pour simplifier la vie des utilisateurs, j'ai décidé de créer des paquets pour les différents OS.
32
+
33
+## Debian
34
+
35
+J'ai commencé par debian, puisque l'OS que j'utilise est basé dessus. Les dépendances que j'utilise (lwjgl, phys2d, twl...) n'étant pas dans les paquets de cette distribution, j'ai fait un "gros deb", cad en embarquant toutes mes dépendances. Généré via maven par l'excellent plugin [jdeb](https://github.com/tcurdt/jdeb), ce paquet pourra servir de base de travail à de vrais empaqueteurs debian. J'ai découvert à cette occasion que la création de deb est un art difficile et je comprends mieux <del>le manque de paquets à jour</del> le travail titanesque que font les contributeurs debian.
36
+
37
+## Les autres
38
+
39
+Pour les autres OS, j'ai fait appel à [izpack](http://izpack.org/), un logiciel qui crée des installeurs clickodromes multiplateformes. Un peu difficile d'accès, mais disposant d'un plugin maven, il me permet de créer facilement des installations de qualité (sauf pour Macosx, où ce n'est pas aussi bien qu'un .app).
40
+
41
+Ecrit en java, izpack génère un jar exécutable, il y a donc toujours le défaut des environnements de bureau décrit au début. Pour Windows, j'ai pu venir à bout de ce problème à l'aide d'un autre logiciel / plugin maven, [launch4j](https://github.com/cvgaviao/launch4j) qui transforme un jar en exe.
42
+
43
+# Et Java Web Start?
44
+
45
+Java Web Start est une technologie qui permets en cliquant sur un lien d'installer ou mettre à jour automatiquement une application Java et de créer un raccourci sur toutes les plateformes où tourne Java. Génial en apparence, elle a de gros défauts: une fois encore, l'association entre l'extension (jnlp) et le programme javaws n'est pas effective sur beaucoup de PC et l'utilisation de bibliothèques natives provoquent l'affichage de popups d'alerte à faire fuir  le plus intrépide des utilisateurs.
46
+
47
+# Conclusion
48
+
49
+Le packaging d'applications multiplateformes, est une tâche complexe, mais indispensable pour toucher un large public. La charge est importante pour les développeurs de logiciel et c'est autant de temps perdu pour la correction de bug ou l'ajout de fonctionnalités.
50
+
51
+J'espère qu'à l'avenir les environnements de bureau travailleront le support des programmes créés avec des outils de développement portables, car Java n'est pas le seul touché, afin de faciliter la vie des utilisateurs et des développeurs.
0 52
\ No newline at end of file