![]() |
|
« Bonne retraite les petits », créé par Julien Gouesse avec le logiciel libre GIMP à partir d’un extrait du dessin animé « Bonne nuit les petits », d’un célèbre dessin de mai 1968 et d’une photographie d’Emmanuel Macron publiée par Paris Match, inspiré d’une affiche de manifestation | « Good retirement the kids », created by Julien Gouesse with the free software GIMP from a sample of the cartoon « Good night the kids », from a famous drawing of May 1968 and from a photography of Emmanuel Macron published by Paris Match, inspired by a demonstration poster |
Français | English |
Sommaire :
|
Summary :
|
Introduction |
Introduction |
Je suis très en retard contrairement à 2016 pour mon précédent article annuel au sujet de mon jeu. | I’m very late unlike 2016 for my previous article about my game. |
Activité du projet |
Activity of the project |
Le développement fut presque arrêté à partir de la fin du mois de décembre 2016, je ne fis qu’un peu moins d’une dizaine de changements mineurs en 2017, seulement 2 en 2018, environ une douzaine en 2019, quasiment une trentaine en 2020, une soixantaine en 2021, moins d’une dizaine en 2022 et plus d’une soixantaine de changements ces trois derniers mois. | The development was almost stopped from the end of December 2016, I made only a little less than around ten minor changes in 2017, only 2 in 2018, around twelve in 2019, almost thirty in 2020, sixty in 2021, less than a dozen in 2022 and more than sixty changes in the last three months. |
Ma motivation fit un grand bond cette année suite à la correction d’un bogue qui rendait le déplacement à la souris très pénible. En fait, je ne peux pas mettre fin à mon principal projet, il compte beaucoup pour moi. A choisir, je préfère encore aménager ma vie personnelle afin de dégager du temps libre pour avancer dessus plutôt que de le laisser mourir à petit feu et c’est exactement ce que je fais en refusant de laisser des individus toxiques me pourrir la vie, en chair et en os comme à distance. | My motivation took a big leap this year following the correction of a bug that made moving with the mouse very painful. Actually, I can’t end my main project, it means a lot to me. Given the choice, I still prefer arranging my personal life in order to free up some spare time to move forward on it rather than let it die slowly and that’s exactly what I do by refusing to let toxic individuals ruin my life, in the flesh as remotely. |
Avancement |
Progress |
Affiche à la sortie du musée |
Poster at the exit of the museum |
![]() |
|
Comme prévu en 2016, j’ajoutai l’affiche portant le slogan « Le communisme vaincra sur tous les fronts ». Il devient de plus en plus urgent que j’affiche des infobulles dans la langue choisie comme certains textes sont en français et en allemand alors que beaucoup de joueurs sont anglophones. | As planned in 2016, I added the poster with the slogan « Communism will win on all fronts ». It’s becoming more and more urgent that I display some tooltips in the chosen language as some texts are in French and German while many players are English-speaking. |
Téléporteur allant du niveau extérieur vers Bagnolet |
Teleporter going from the outdoor level to Bagnolet |
![]() |
|
Il est désormais possible de sortir du niveau extérieur pour rejoindre Bagnolet mais ce niveau est assez vide pour le moment. | It’s now possible to leave the outdoor level to reach Bagnolet but this level is quite empty at the moment. |
Adoption d’Adoptium |
Adoption of Adoptium |
Je fournis une JRE avec mon jeu depuis au moins 2016, j’utilisais des JREs supportant Java 8 provenant de l’utilisateur Github dont le pseudonyme est alexkasko jusqu’à ce que JNDT puisse supporter Java 9 et supérieur. Alors, je pus adopter Adoptium qui s’avéra plus fiable que les JREs et les JDKs empaquetés par les contributeurs de ma distribution GNU Linux (Mageia à l’époque). | I’ve been providing a JRE with my game since at least 2016, I was using some JREs supporting Java 8 from the Github user whose pseudonym is alexkasko until JNDT could support Java 9 and higher. Therefore I was able to adopt Adoptium which proved to be more reliable than the JREs and JDKs packaged by the contributors of my distribution GNU Linux (Mageia at this time). |
Abandon des architectures 32 bits |
Abandon of the 32-bit architectures |
Adoptium (anciennement AdoptOpenJDK) ne fournissant pas de JRE en 32 bits, je dus me résoudre à laisser tomber le support des processeurs Intel 32 bits. | As Adoptium (formerly AdoptOpenJDK) doesn’t provide any 32-bit JRE, I had to decide to abandon the support of Intel 32-bit processors. |
Java 9 et supérieur |
Java 9 and higher |
Je pus utiliser des versions plus récentes de Java afin de profiter de nombreuses corrections et de nouvelles fonctionnalités. J’en profitai pour réécrire plus élégamment des méthodes assez compliquées de décimation de maillage à l’aide du paquetage java.util.stream. Toutefois, j’attendrai probablement Java 21 (la prochaine version de Java en support à long terme, attendu en septembre 2023) pour revoir l’allocation et la désallocation de la mémoire sur le tas natif via le paquetage java.lang.foreign. | I was able to use several newer versions of Java in order to take advantage of many bug fixes and some new features. I took the opportunity to rewrite more elegantly some quite complicated methods of mesh decimation using the java.util.stream package. However, I will probably wait for Java 21 (the next version of Java in long-term support, expected in September 2023) to review the allocation and deallocation of memory on the native heap via the java.lang.foreign package. |
Abandon de Google Guava |
Abandon of Google Guava |
La bibliothèque nommée Google Guava a un sérieux problème de modularité et contient encore aujourd’hui beaucoup de méthodes qui font quasiment la même chose que l’API standard, je suis heureux de l’avoir expulsé de JogAmp’s Ardor3D Continuation et indirectement de mon jeu. De plus, je déteste Google donc je suis très satisfait de me débarrasser de lui. Cela me prit pas mal de temps mais j’étais déterminé. Je me sens ainsi plus en cohérence avec mes convictions politiques. | The library named Google Guava has a serious modularity problem and still contains many methods today that do almost the same thing as the standard API, I’m glad to have evicted it from JogAmp’s Ardor3D Continuation and indirectly from my game. Moreover, I hate Google. Thus, I’m very happy to get rid of it. It took me a long time but I was determined. I feel more consistent with my political convictions. |
Abandon d’Apache Commons Imaging |
Abandon of Apache Commons Imaging |
Je décidai de ne plus convertir les icônes dans certains formats d’images dont ICNS via Apache Commons Imaging comme il existe pas mal de logiciels libres d’édition d’images qui le font très bien dont notamment GIMP. Si jamais je dois rétropédaler, j’utiliserai plutôt TwelveMonkeys. | I decided not to convert the icons into certain image formats including ICNS via Apache Commons Imaging as there are quite a few free image editing software that do it very well including notably GIMP. If I ever have to backpedal, I will rather use TwelveMonkeys. |
Modification du traitement du nombre zéro de type double |
Changing the treatment of the zero number as double |
En Java, seul l’opérateur == considère que -0.0 et +0.0 sont égaux, ce n’est pas le cas des méthodes de la classe java.lang.Double, c’est expliqué ici. J’ajoutai une option dans JogAmp’s Ardor3D Continuation afin d’obtenir un comportement cohérent selon lequel -0.0 et +0.0 sont égaux pour l’opérateur == et dans les méthodes qui manipulent des coordonnées dans l’espace, ce qui me permit de corriger le regroupement de triangles par plans dans JFPSM. | In Java, only the == operator considers that -0.0 and +0.0 are equal, this isn’t the case of the methods of the java.lang.Double class, it is explained here. I added an option in JogAmp’s Ardor3D Continuation to get a consistent behavior where -0.0 and +0.0 are equal for the == operator and in the methods that manipulate coordinates in space, which allowed me to fix the grouping of triangles by planes in JFPSM. |
GIT |
GIT |
Après être passé de CVS à Subversion, je passai de Subversion à GIT afin de rendre mon projet plus facile à utiliser et surtout pour faciliter la migration du dépot sur mon propre serveur afin de me passer de Sourceforge. | After switching from CVS to Subversion, I switched from Subversion to GIT in order to make my project easier to use and especially to facilitate the migration of the repository on my own server in order to do without Sourceforge. |
Tests unitaires |
Unit tests |
Je commençai à mettre en place des tests unitaires afin d’augmenter ma confiance dans mon propre code source en repérant les régressions plus tôt et de tester des cas de figure qui ne se produisent pas dans mon jeu mais qui peuvent se produire dans d’autres projets qui réutilisent mes APIs. Les tests unitaires ne remplacent pas les autres types de tests mais ils viennent les complémenter là où ils sont appropriés. Je pris initialement JUnit mais comme sa dernière version majeure était mal supportée dans l’environnement de développement intégré NetBeans au niveau de la génération automatique des squelettes de classes et de méthodes de tests, je le remplaçai par TestNG sans le moindre regret. | I started setting up some unit tests to increase my confidence in my own source code by spotting the regressions earlier and to test scenarios that don’t happen in my game but that can happen in other projects that reuse my APIs. The unit tests don’t replace other kinds of tests, but they complement them where appropriate. I initially chose JUnit but since its last major version was poorly supported in the NetBeans integrated development environment in terms of automatic generation of test classes and methods skeletons, I replaced it with TestNG without any regrets. |
Gradle |
Gradle |
Gradle est un excellent compromis entre Apache Maven et Apache Ant, il permet de faire à peu près la même chose qu’Ant Contrib qui n’est plus maintenu depuis des lustres, il est très souple et il permet d’accéder à des dépôts Maven. Il est très bien supporté dans plusieurs environnements de développement intégré dont Eclipse, NetBeans et Eclipse Theia (bien que ce dernier soit encore très instable pour le moment). Gradle embarque même une version d’Apache Ant et interopère avec lui assez aisément, il est ainsi possible de convertir des cibles Ant en tâches Gradle, ce qui permet de migrer progressivement et aussi de continuer d’utiliser Ant là où il est l’outil le plus adapté, par exemple pour téléverser des fichiers sur un serveur SFTP. J’entamai une timide migration vers Gradle il y a plusieurs mois afin de rendre mon projet plus facile à comprendre, cela s’avéra très salutaire lorsque je laissai tomber Eclipse (devenu trop lent sur mon ancien ordinateur assez vieux même en utilisant très très peu de greffons) pour NetBeans (dont l’intégration de Gradle me semble mieux réussie que celle d’Ant). | Gradle is an excellent compromise between Apache Maven and Apache Ant, it allows you to do more or less the same thing as Ant Contrib which hasn’t been maintained for ages, it’s very flexible and it allows to access to Maven repositories. It’s very well supported in several integrated development environments including Eclipse, NetBeans and Eclipse Theia (although the latter is still very unstable at the moment). Gradle even embeds a version of Apache Ant and interoperates with it quite easily, thus it’s possible to convert Ant targets into Gradle tasks, which allows to migrate gradually and to continue to use Ant where it’s the most suitable tool too, for example to upload files to an SFTP server. I started a timid migration to Gradle several months ago in order to make my project easier to understand, which proved to be very beneficial when I dropped Eclipse (which had become too slow on my old computer even with very few plugins) for NetBeans (whose Gradle integration seems to me to be more successful than Ant’s). |
Élimination des dernières traces de Java Sound |
Elimination of the last traces of Java Sound |
Il subsistait une dépendance sur Java Sound dans Paul Lamb’s Sound System même en me débarrassant de son greffon basé sur Java Sound et en utilisant celui basé sur JOAL. Je décidai d’intégrer cette bibliothèque dans le sous-projet nommé ardor3d-audio. Je profitai de l’occasion pour remplacer les appels à des méthodes dépréciées et pour supprimer la seule dépendance à Java Sound afin de rendre possible l’utilisation d’une machine virtuelle Java sans le module nommé java.desktop. | There was still a dependency on Java Sound in Paul Lamb’s Sound System even though I got rid of its Java Sound based plugin and I used the JOAL based one. I decided to integrate this library into the sub-project named ardor3d-audio. I took the opportunity to replace the deprecated method calls and to remove the only dependency on Java Sound in order to make it possible to use a Java virtual machine without the module named java.desktop. |
Il est possible d’utiliser jlink pour créer une image applicative pour un système d’exploitation cible différent de celui sur lequel jlink s’exécute mais jpackage ne supporte pas la compilation croisée donc mon outil nommé JNDT garde tout son intérêt, je souhaite l’utiliser avec jlink à l’avenir et il serait dommage de devoir garder le très gros module java.desktop qui contient aussi AWT et Swing à cause d’une seule classe de Java Sound. Je pourrai également simplifier JNDT pour qu’il se concentre sur ce que jlink ne fait pas et sur ce que jpackage fait de manière décevante en étant trop lié au système d’exploitation sur lequel il s’exécute. Le projet Leyden est digne d’intérêt lui aussi. | It’s possible to use jlink to create an application image for a target operating system different from the one jlink is running on but jpackage doesn’t support cross-compiling. Therefore, my tool named JNDT is still relevant, I want to use it with jlink in the future and it would be a shame to have to keep the very large java.desktop module which also contains AWT and Swing because of a single Java Sound class. I could also simplify JNDT to focus on what jlink doesn’t do and what jpackage does disappointingly by being too tied to the operating system it runs on. The Project Leyden is worth interest too. |
Activation de la synchronisation verticale par défaut |
Enabling the vertical synchronization by default |
Les mouvements à la souris ne fonctionnaient plus correctement depuis quelques années et je fus très surpris en réalisant que ce problème disparaissait en réactivant la synchronisation verticale. Je fus soulagé de me débarrasser de ce bogue qui fut une grande source de découragement. Je dois admettre que l’abandon d’Eclipse devenu trop lent, l’achat d’un nouvel ordinateur à faible consommation électrique bien plus rapide et l’abandon de Mageia pour Debian améliorent beaucoup les conditions dans lesquelles je poursuis mon projet, je peux à nouveau utiliser Blender bien que MeshLab me dépanne très bien. | The mouse movements hadn’t worked properly for a few years and I was very surprised when I realised that this problem disappeared by reactivating the vertical synchronisation. I was relieved to get rid of this bug which was a great source of discouragement. I have to admit that abandoning Eclipse which was too slow, buying a new and much faster low power computer and abandoning Mageia for Debian improve a lot the conditions in which I continue my project, I can use Blender again although MeshLab helps me very well. |
Fusion des triangles rectangles coplanaires adjacents aux coordonnées de textures canoniques |
Merge of coplanar adjacent rectangle triangles whose texture coordinates are canonical |
Avant de tomber sur le problème des deux représentations de zéro, j’entrepris de remplacer toutes les méthodes de calcul reposant sur la trigonométrie par des méthodes de calcul plus simples reposant sur les vecteurs et les matrices. | Before I encountered the problem of the two representations of zero, I undertook to replace all methods of calculation based on trigonometry with some simpler methods of calculation based on the vectors and the matrices. |
Ensuite, j’adaptai JFPSM de sorte qu’il sépare les maillages utilisant des textures différentes et je cessai d’utiliser un atlas de textures. Ainsi, j’obtins bien un maillage utilisant une seule texture pour le sol, un autre maillage utilisant une seule texture pour le plafond et un dernier maillage utilisant une seule texture pour les murs, chaque maillage ayant uniquement des coordonnées de textures canoniques afin de rendre possible la fusion qui tire partie de la répétition de textures (un peu comme sur un damier). | Then, I adapted JFPSM so that it separated meshes using different textures and I stopped using a texture atlas. That way, I got one mesh using a single texture for the floor, another mesh using a single texture for the ceiling and a last mesh using a single texture for the walls, each mesh having only canonical texture coordinates to make merging possible which takes advantage of the repetition of textures (a bit like on a checkerboard). |
![]() |
|
Avant décimation | Before decimation |
![]() |
|
Après décimation | After decimation |
Enfin, je passais énormément de temps à corriger l’implémentation de mon algorithme jusqu’à ce qu’il produise le résultat attendu sur le plus petit échantillon passé en entrée (le tout premier niveau qui sert de tutoriel). Je fus une fois de plus extrêmement soulagé après plus d’une décennie de travail lorsque mon objectif fut atteint mardi 28 mars 2023. Pour rappel, je mentionnais déjà le tout début de mes travaux à ce sujet en juillet 2011. | Finally, I was spending an enormous amount of time correcting the implementation of my algorithm until it produced the expected result on the smallest input sample (the very first level that serves as a tutorial). I was once again extremely relieved after more than a decade of work when my goal was reached on Tuesday 28th March 2023. As a reminder, I already mentioned the very beginning of my work on this subject in July 2011. |
Je réussis à réduire la consommation de mémoire en utilisant un tableau creux quitte à ralentir un peu les accès aux données mais il me reste beaucoup de travail pour rendre l’implémentation de mon algorithme plus scalable (pour m’en servir sur le niveau du musée) et éventuellement pour rédiger un papier scientifique à ce sujet… quitte à froisser les diffamateurs qui prétendent encore que je ne suis pas ingénieur en informatique. Il ne faut pas être très intelligent pour écrire des âneries pareilles. J’attends toujours leur jeu de tir à la première personne programmé en Flash, ils disaient que c’était super facile à faire, il est surtout facile d’abuser de l’anonymat pour décharger sa bile sur Internet, jusqu’au jour où cela se termine devant un juge. | I managed to reduce the memory consumption by using a hollow array even though it leads to slow down the data accesses a bit, but I still have a lot of work to do to make the implementation of my algorithm more scalable (to use it on the museum level) and eventually to write a scientific paper about it… at the risk of hurting the slanderers who still claim I’m not an engineer in computer science. They don’t have to be very smart to write such nonsense. I’m still waiting for their first person shooter game programmed in Flash, they said it was super easy to do, it’s mostly easy to abuse anonymity to vent your spleen on the internet, until the day it ends up in front of a judge. |
Mon algorithme est composé des étapes suivantes :
|
My algorithm is composed of the following steps:
|
![]() |
|
![]() |
|
Je réutilise une implémentation d’un algorithme qui devait initialement servir à améliorer les performances de la scène d’introduction pour créer de plus grands rectangles dont chacun est composé de deux triangles. Là aussi, j’ai encore un peu de marge d’amélioration. Toutefois, l’ordre dans lequel les algorithmes sont utilisés est important, il est préférable de calculer les cellules et les portails puis de fusionner les triangles comme des triangles plus petits permettront à l’algorithme de subdivision en cellules et en portails de trouver des portails plus petits, ce qui sera plus performant à l’exécution mais plus lent au précalcul alors que ce serait l’inverse en changeant l’ordre d’utilisation. | I reuse an implementation of an algorithm that was originally intended to improve the performance of the introduction scene to create some larger rectangles, each of which is composed of two triangles. Here too, I still have a little room for improvement. However, the order in which the algorithms are used is important, it’s better to calculate the cells and portals and then merge the triangles as some smaller triangles will allow the algorithm of subdivision into cells and portals to find smaller portals, which will be more efficient at runtime but slower at precompute time whereas it would be the opposite by changing the order of use. |
![]() |
|
Voici le résultat que j’aimerais obtenir. L’algorithme actuel favorise les rectangles les plus longs horizontalement ou verticalement mais pas les rectangles dont l’aire est la plus grande. Quand je corrigerai ce comportement, il pourra être appelé avant le calcul des cellules et des portails, il réduira la complexité de la géométrie à traiter ce qui rendra ce calcul plus rapide et il permettra d’obtenir des portails de même taille que si le maillage excessivement fin avait été utilisé en entrée. | Here is the result I would like to achieve. The current algorithm favors the longest rectangles horizontally or vertically but not the rectangles with the largest area. When I correct this behavior, it can be called before the calculation of cells and portals, it will reduce the complexity of the geometry to be processed which will make this calculation faster and it will make it possible to obtain some portals of the same size as if the excessively fine mesh had been used as input. |
P.S : Ce problème fut résolu peu de temps après la rédaction de cet article samedi 8 avril 2023. Il est important de bien documenter le code source pour le rendre plus compréhensible même pour l’auteur et de prévoir suffisamment de tests unitaires pour réduire les risques de régression, tout cela contribue à le rendre plus facile à maintenir à long terme. | P.S: This problem was solved shortly after this article was written on Saturday April 8th 2023. It’s important to document the source code well to make it more understandable even for the author and to provide enough unit tests to reduce the risk of regression, all of which contributes to making it easier to maintain in the long term. |
Conclusion |
Conclusion |
Je me sens mieux, je me disperse beaucoup moins qu’avant, je suis plus concentré sur mes projets qui me tiennent très à cœur et j’avance à mon rythme. Certes, je n’arrive pas à faire tout ce que je veux mais mes objectifs me paraissent à nouveau atteignables. L’application même timide de quelques principes d’intégration continue rend mon code source plus digne de confiance et plus stable. J’essaie d’aider des membres de la communauté JogAmp mais je ne m’occupe plus des gestionnaires de rendu des autres moteurs 3D, cela me prenait beaucoup trop de temps et si c’est pour voir le fruit de mes efforts finir à la poubelle, autant ne rien faire pour des gens qui ne respectent pas mon travail gratuit. Je préfère me concentrer sur JogAmp’s Ardor3D Continuation qui peut servir d’exemple d’intégration de JOGL bien que mon gestionnaire de rendu soit peu moderne. | I feel better, I’m less scattered than before, I’m more focused on my projects which matter to me a lot and I’m moving forward at my own pace. Of course, I can’t do everything that I want to do, but my goals seem to be reachable again. Even the timid application of some continuous integration principles makes my source code more trustworthy and stable. I try to help some members of the JogAmp community but I no longer deal with the renderers of other 3D engines, it was taking too much time and if I’m going to see the fruit of my efforts end up in the trash bin, I might as well do nothing for people who don’t respect my free work. I prefer concentrating on JogAmp’s Ardor3D Continuation which can serve as an example of JOGL integration although my renderer isn’t very modern. |
J’hésite à redonner une chance à NetBeans Platform pour améliorer l’interface graphique de JFPSM, je redoute de passer beaucoup de temps là-dessus avec le risque que le résultat final ne me convienne pas. Néanmoins, plusieurs logiciels libres dont Gephi utilisent déjà JogAmp avec NetBeans Platform avec succès et ce dernier est peut-être un bon exemple à suivre. | I hesitate to give NetBeans Platform another chance to improve the graphical interface of JFPSM, I fear spending a lot of time on it with the risk that the final result won’t suit me. Nevertheless, several free softwares including Gephi already use JogAmp with NetBeans Platform successfully and the latter is perhaps a good example to follow. |
Plusieurs chantiers importants m’attendent. Autant WebGL m’a toujours laissé très perplexe, autant Vulkan et surtout WebGPU méritent mon attention. Je n’ai pas assez de temps pour me passer entièrement du pipeline fixe en OpenGL et pour batir un gestionnaire de rendu basé sur une des deux APIs précitées, je dois choisir et je penche plutôt vers la seconde option qui me parait plus viable à long terme mais la première option est plus mûre. Je n’exclus pas totalement de transpiler mon code source pour cibler les navigateurs web mais pas si je dois abandonner Java pour ça donc autant dire que ça ne se fera pas tout de suite ou bien je ciblerai un projet beaucoup plus simple et pensé dès le début pour le web. | Several important undertakings are waiting for me. As much as WebGL has always left me very perplexed, Vulkan and especially WebGPU deserve my attention. I don’t have enough time to go without the fixed pipeline in OpenGL and to build a renderer based on one of the two aforementioned mentioned APIs, I have to choose and I’m leaning towards the second option which seems to me more viable in the long term but thr first option is more mature. I don’t totally exclude transpiling my source code to target the web browsers but not if I have to abandon Java for that. Therefore, I might as well say that it won’t happen right away or I’ll target a much simpler project that’s been designed for the web from the beginning. |
Enfin, quand mon jeu est lent, c’est de ma faute, ça n’a rien à voir avec le choix du langage de programmation. Je suis conscient qu’il me reste encore du pain sur la planche pour simplifier automatiquement les maillages et pour subdiviser les niveaux en cellules et en portails. Si jamais mon projet devait prendre fin de mon vivant, je voudrais au moins avoir atteint ces deux objectifs car je pense que ce seront les deux éléments les plus utiles à la communauté du logiciel libre, pas mes graphismes laids. | Finally, when my game is slow, it’s my fault, it has nothing to do with the choice of programming language. I’m aware that I still have some work to do to automatically simplify the meshes and to subdivide the levels into cells and portals. If ever my project were to end in my lifetime, I would like to have achieved at least these two goals because I think that they will be the two most useful elements for the free software community, not my ugly graphics. |
Vous pouvez tester les différentes versions de mon jeu ici. | You can test the different versions of my game here. |
![]() Les photos de cet article sont mises à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 3.0 non transposé |
![]() The photos of this article are licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License |
![]() Cet article est mis à disposition selon les termes de la Licence Creative Commons Attribution – Pas d'Utilisation Commerciale – Partage à l'Identique 3.0 non transposé |
![]() This article is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License |
Auteur : Julien Gouesse | Author: Julien Gouesse |
-
Articles récents
- Marche « Vérité et Justice pour Safyatou, Salif et Ilan, percutés par la police » dimanche 7 mai 2023 à Paris [March « Truth and justice for Safyatou, Salif and Ilan, collided with the police » Sunday, May 7th, 2023 in Paris]
- Manifestation du premier mai 2023 lors de la fête du travail à Paris [Demonstration of May first, 2023 during the Labor Day in Paris]
- Manifestation contre le service national universel dimanche 30 avril 2023 à Paris [Demonstration against the universal national service Sunday, April 30th, 2023 in Paris]
- Comment utiliser une manette Sony Playstation 3 avec Mupen64Plus-QT et Mupen64Plus-Next ? [How to use a Sony Playstation 3 controller with Mupen64Plus-QT and Mupen64Plus-Next?]
- Truly Unusual Experience of Revolution® ! 17 ans déjà ! [Truly Unusual Experience of Revolution®! Already 17 years!]
Archives
- mai 2023
- avril 2023
- mars 2023
- février 2023
- janvier 2023
- octobre 2022
- août 2022
- mai 2022
- juin 2021
- mai 2021
- mars 2021
- février 2021
- janvier 2021
- décembre 2020
- novembre 2020
- octobre 2020
- juin 2020
- mai 2020
- avril 2020
- mars 2020
- février 2019
- décembre 2018
- mai 2018
- septembre 2017
- juillet 2017
- mai 2017
- mars 2017
- novembre 2016
- mai 2016
- avril 2016
- mars 2016
- janvier 2016
- décembre 2015
- octobre 2015
- août 2015
- juin 2015
- mai 2015
- avril 2015
- février 2015
- janvier 2015
- novembre 2014
- octobre 2014
- septembre 2014
- août 2014
- juillet 2014
- juin 2014
- mai 2014
- avril 2014
- mars 2014
- février 2014
- janvier 2014
- décembre 2013
- octobre 2013
- septembre 2013
- août 2013
- juillet 2013
- juin 2013
- mai 2013
- mars 2013
- janvier 2013
- décembre 2012
- novembre 2012
- octobre 2012
- septembre 2012
- août 2012
- juillet 2012
- juin 2012
- mai 2012
- avril 2012
- mars 2012
- février 2012
- janvier 2012
- décembre 2011
- novembre 2011
- octobre 2011
- septembre 2011
- juillet 2011
- mai 2011
- avril 2011
- mars 2011
- février 2011
- décembre 2010
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
Catégories
Categories
- 11 septembre 2001
- A bout portant
- ACTA
- AdopteUnMec
- amour
- APRIL
- art
- be2
- CGT
- CNRS
- communisme
- doom-like
- droit d'auteur
- Flash
- FPS
- féminisme
- gastronomie
- Goldeneye
- HADOPI
- INPI
- Isabelle Vodjdani
- Java
- JOGL
- journée internationale de la femme
- Jussieu
- l'amour est aveugle
- LCR
- LGBTI
- Linux
- logiciels libres
- loppsi 2
- LRU
- manifestation
- marxisme
- Meetic
- Molehill
- NPA
- OpenGL
- P2P
- Paris
- Pastas Party
- PIPA
- retraite
- révolution
- Sarkozy
- secret story 4
- skyblog
- SOPA
- speed dating
- The Company Men
- trotskysme
- TUER
- télé-réalité
- UNEF
- URSS
- wordpress
Vous devez être connecté pour poster un commentaire.