CatchChallenger 2 et cluster

CatchChallenger 2 introduit l’infrastructure de cluster. Ce qui implique des changements coté datapack (base commune pour faire tourner les avatars entre les serveurs, et partie spécifique), les changements sont principalement fait. Des changements coté base de données, qui en plus d’avoir les obligations du datapack se doit d’être performante et de marcher sans les auto increment pour les index (pour les bases ne le supportant pas), il y aura encore des changements.

Pour les serveurs, je tiens à garder le serveur Qt (avec une interface et de beaux boutons) pour faciliter la mise en place de petit serveur perso, et le serveur epoll linux simple en CLI pour des serveurs moyens. Le faite de n’avoir qu’un exécutable, une base de donnée et un port à ouvrir rends simple l’utilisation du serveur mais cela permet aussi de ce passer d’une surcouche de communication inter-serveur qui peu être coûteuse en performance.
Le mode cluster ce compose de 2 types de base de données distante (login et common) qui vont être accédé par plusieurs serveurs. Et une base de données spécifique par serveur (qui peu être distante ou non). Il y a des serveurs de login pour gérer l’authentification, le changements de la liste des avatars, création d’avatars et de l’envoie de la base du datapack. Il peuvent servir de proxy pour que le joueur ne doivent pas se reconnecté sur le game serveur (meilleur anonymisation car les ip des games serveurs ne sont pas connu, mais à cause des connexions maintenu ouverte cela à un coût). Un serveur master qui est responsable d’unifier les configs qui ne doivent pas varier en fonction du serveur, d’avoir une base datapack unifié et d’avoir un point de centralisation pour poser les verrous sur les avatars. Il n’est connu que des serveurs login et game. Les games serveurs sont la où joue les joueurs. Si les joueurs sont directement connecté sur les games serveur, les logins serveurs peuvent être coulé par une attaque DDOS sans que les joueurs déjà connecté soit affecté.
Status map du portable datacenter avec nagios pour CatchChallenger 2

Status map du portable datacenter avec nagios pour CatchChallenger 2

La communication inter-serveur n’est pas facile sachant qu’il faille tenir compte des RTT car les serveurs au quatre coin du monde vont avoir des latences de communications. La bande passante peu être limité dans un pays en voie de développement ce qui rends la compression obligatoire. La cryptographie l’est pour certifier que les serveurs autorisé peuvent bien ce connecter entre eux et que les données ne puisse être intercepté (idem pour les bases de données). La modification dynamique de l’infrastructure doit être pris en charge pour ajouter ou retirer à la demande des logins ou games serveurs sans rien redémarrer. Les serveurs doivent se comporter comme un cluster. Il faut prendre en compte aussi les possibles déconnexion temporaire avec le master serveur. C’est la ou l’asynchronisme surtout coté base de données prends tout sont sens.
Pour idéalement une bonne portabilité sur tout les environnements mais aussi de bonne performance (le QDataStream + QByteArray de Qt à beau être sécurisé et très commode, il est extrêmement peu performant), le passage d’un maximum de code en C++11 et surtout les sérialiseurs (avec des buffers pré-allouer pour éviter des pressions sur la mémoire à cause de new/malloc trop fréquent) est en cour. Mais je ne pense pas pouvoir tout bouclé pour la version 2 donc la dépendance avec Qt sera toujours de mise. Le passage en C++11 me permet un certain nombre de chose via la norme même, et me force à faire du code souple Qt <-> C++. Cela permet aussi d’exploiter les parties spécifiques à l’OS qui est totalement abstraite en Qt et donc qui n’est pas accessible. Je pense aussi à libOS qui veux être dans la branche principale de linux, j’ai un peu peur de cela car certain dev newbies ont tendance à vouloir le contrôle sur tout, soit car il ont entendu que ça augmenterai les performances (ce qui est vrai seulement si ont sais s’en servir) ou simplement pour se sentir aux commandes (en oubliant la sécurité, et l’isolation des taches). Sans parler que refaire un ordonnanceur, un driver, … et le maintenir est une grosses charge supplémentaire qui fait exploser le développement à faire. Idéalement si le master serveur et les logins serveur font 10Mo et utilise 1Mo de mémoire ou max <10Mo ça me vas.
Un support de NoSQL ne me semble pas réaliste ainsi que les requêtes préparé pour cette version. Par contre vu que MySQL 5.5+ ce généralise je verrai si j’ai le temps de faire le support de MySQL en asynchrone.
Le portable datacenter continue à grandir, ayant changé ma connexion pour 2M en download et upload, cela me permet de faire un peu d’hébergement (site + 200 joueurs). Peu de services sont visibles mais pas mal de service en background sont la. Il continue à être un mix de machine légère (rpi 1, cubieboard2, ordoid u3, cubox-i, fit pc 1…, donc Geode LX800, Cortex A9, ARM1176JZF-S, Cortex A7, de 1 à 4 coeur par config). Le tout monitoré sous nagios + munin. Avec un peu de btrfs, beaucoup d’ext4. Lxc + grsec comme système de virtualisation, et gentoo en -march=native pour les hôtes et -march=native pour les hardwares où j’ai de multiple exemplaire et -march=generic pour les autres. Cela me fait un bon parque pour faire de l’auto benchmarking.

 

 

btrfs vs overlayfs

Bonjour,

Btrfs est un systéme de fichier avec des fonctions évolué telque la compression, le support du raid, la déduplication, la gestion de multiple volume (pour booster le FS avec un SSD), les snapshots pour faire les backups et ne garder sur le hdd que les différence entre 2 snapshots…. ZFS est une alternative, mais ce n’est pas dans la branche principale de linux.

Overlayfs est une virtualisation du FS qui permet d’avoir un dossier de base, et une multitude variation de ce dernier. Cela est surtout utilisé dans les livecd, cela permet d’avoir une image fix (le cd), et une zone d’écriture (ramdisque, tmpfs), ce qui permet à l’utilisateur d’avoir l’impression d’avoir une version installé car il peu tout modifié (et donc les changements sont gardé en mémoire RAM grace à overlayfs). Il existe comme alternative aufs, unionfs, … mais seul overlayfs est dans la branche principale de linux.

Les machines virtuelles sont souvent trés similaire. J’ai donc testé ces 2 solutions pour monté des machines virtuelles:

  • Btrfs ne permet pas la déduplication de dossier (il vous avec 10000 fichiers identique dans un dossier, la liste de 10000 sera stocker 2x). La déduplication ne s’applique pas aux fichiers inline (petit fichier surtout). Il m’as fait perdre des vm pour ces divers bugs (vm de teste donc pas de backup). La réparation peu bloquer pourtant le FS est montable, … il faut donc le backuper, reformater et restaurer: un comble que la réparation ne marche pas. Par contre la compression est utile sur les petits espaces ou pour augmenter virtuellement la vitesse du média sur le fichiers compressible (carte SD 😉 mais en échange de latence un peu plus grande surtout sur les petits fichiers). Les backups temps réél avec juste sauvegarde des différences et la déduplication (même si elle est partiel) sont un plus.
  • Overlayfs ne déduplique pas, cela veux dire que 2 fichiers changés au dessus du dossier de base vont être stocké 2x sur le hdd. Donc si vous mettez à jour vos vm, la différence des mise à jour est stocker X fois. Mais c’est trés stable sur du ext4. La variation stocker est vraiment minime et permet de gagné vraiment beaucoup de place (c’est presque comme si vous stockiez les sites que vous y mettais).

Au final, quelle solution j’utilise? Aucune, les défauts de chaque solution sont trop grandes pour être utilisé en production. Donc ext4 pour les serveurs de prod, et btrfs + snapshot pour les serveurs de backups.

Reprise de adi et adibou

Bonjour,

Je souhaite reprendre ADI et ADIBOU, deux super soft fait à l’époque par coktel, puis racheter par une entreprise qui à coulé depuis.
Plan de rénovation: Qt5 porté sur: pc, mac, linux, tablette, téléphone. Le code serait en GPL3, le contenu qui est très fourni serait repris (Je suis programeur, pas artiste, ni phsycologue, ni musicien).

Adi/Adibou sont des logiciel éducatif, destinée aux élèves maternel, cp, collège et lycée. Chacun pourra apprendre de manière ludique avec des exercices, simulations interactive et zone d’expérimentation.
Voila les 2 url des projets. Si quelqu’un sais comment récupérer une oeuvre orpheline, je me ferai une joie de reprendre ces projets, surtout si des gens sont pret à le financer.
Je considerai dans le cas comme une grande perte. Je considére ces logiciels comme du patrimoine.
Bye.

 

 

This game is a independent MMORPG

Logiciel payant, gratuit, demo

Bonjour,

Vous êtes déjà vous demandé comment gagner de l’argent avec un logiciel? Il y a le modéle google/facebook qui gange sur votre vie privée et les données que vous leur confiez.

Mais je parle d’application. Il y as une partie de l’application qui est gratuite, pour montrer/promotionner votre logiciel, et une partie pour le rentabiliser. Tout est dans le ratio de ces 2 parties. Une demo c’est en général 20% du logiciel complet. Le probléme c’est quand c’est pas clairement affiché, il arrive souvent que le contenu téléchargé (DLC) représente 80% du logiciel, donc logiciel fourni est une demo qu’on vous donne sans vous le dise.

Avec Ultracopier/Supercopier c’est 99% du logiciel qui est gratuit, et quand vous payer c’est 1% de plus (le titre), sans compter le support prioritaire, l’optimisation cpu. Pour CatchChallenger, je vais plutôt faire 80% gratuit. Et la version payante, c’est 20% de plus. Avec aussi support prioritaire, correction de bug plus rapide, plus de poids pour le choix dans les fonctionnalités. Et le tout étant en GPL3, même les versions payantes.

Mais comme tout logiciel communautaire et libre, je être à l’écoute de ma commuté pour que je gagne ma vie mais que la communauté à le logiciel qu’elle veut et qui lui plait.

La version CatchChallenger vas bien sortir en fin d’année, et la prochaine version incluant pas mal d’avancé prendra 2ans pour  être faite. Je posterai la roadmap quand elle sera fini et les temps sur chaque fonctions que j’ai estimé. La version 1 aura pris au total un peu plus de 3ans, 5Mo de code, 1500 commits, 5Mo de contenu. Et ceux sans aucun revenu. Les technologies sont très avancé malgré l’apparence assez veille du jeu.

J’ai ouvert les comptes nextcoin pour qu’il soit publique et visible pour les dons comme pour les revenus commercial d’argent. Cela je pense, réponds au droit de regards qu’as la communauté sur l’argent. Sachant que je bosse 120h par semaine et que je fait le travail d’une équipe de dev complète et pro.

Bye

nextoin

Nextcoin market place

Bonjour,

La version 1.3.4 est plus accessible que jamais au commun des mortels. Ce qui confirme que cet ebay décentralisé est l’avenir pour moi des ecommerces. Au revoir prestashop, magento… Et vous y voyez, CatchChallenger en version Ultimate.

Les prix sont trés bas car il n’y as plus de tiers de confiance, plus d’intermédiaire, et le système est performant et optimisé.

Les captures d’écran parle d’elle même:

nextcoin market place 1.3.4

nextcoin market place 1.3.4

nextcoin-market-place

This game is a independent MMORPG

Nextcoin market, i2p et CatchChallenger

Salut,

Je viens vous donner quelques nouvelles. J’ai mit en place un système de vente de software sur le nextcoin market. Le nextcoin market est un système de vente en ligne parfait pour l’ecommerce mais décentralisé et peu chére. J’y ai donc mit CatchChallenger, et j’y mettrai Ultracopier 2. Le tout via l’envoie de clef. J’ai aussi mit en ligne d’autre moyen de paiments.

CatchChallenger avance bien, il rentre en RC. Il marche super bien au travers d’une connexion lente et d’i2p. Il deviens de plus en plus stable et as une meilleure base chaque jour. Version 0.7 en ligne, version final pour la fin de l’année.

Le site CatchChallenger et Ultracopier à été réécrit rapidement en responsive design pour marcher sur téléphone et tablette.

Bye,

IA, science neuronales

 

Bonjour,
Je voudrais vous exposer mon opinion sur certain sujet important pour moi. Mais dons certains points n’ont été que éfleuré. Je vais essayer de parler uniquement d’un point de vue scientifique.
Attention cependant, mes connaisses dans certains sujets sont trop légéres pour avoir un avis éclairé.
Les sciences neuronales. Un certain nombre de points importants sont traités dans les films, comme matrix, i robot, IA.
Si l’on comprend et maitrise un organe comme le cerveau, alors nous sommes capables de modifier ce qui nous donne du plaisir et dans quelle proportion. (Adiction virtuelle, …)
– Cela réformera complètement les psychologues/phsyciatres, en les remplaçant par une machine efficace, pour par exemple re-formater les tueurs compulsifs. Vous pouvez le voir ainsi: vous tuez partiellement la personne, car vous mettez partiellement/totalement une autre personne dans son corps. Attention au dérive totalitaire qui peuvent re-formater les personnes pour correspondre au pouvoir/norme social en place. Cela implique 2 méthodes:
— Par écrasement. Les zones mémoires non correcte seront remplacés sans souci de cohérances avec le reste du cerveau. Cela doit être le dernier recourt. La personne se mettra juste à penser autrement, sans vraiment savoir pourquoi. C’est assez proche d’une lobotomie, ou d’un conditionnement forcé.
— Par évolution. L’analyse de la psyché permettra de déterminer le meilleur moyen de faire changer le patient vers le nouvel état d’esprit. Le patient prendra conscience des problèmes et du changement (et de la raison). Ce serait une sorte de psychotérapie améliorée ou le psychothérapeute serait dans la tête du patiens. A cause de cette dernière implication, il est utile que cela soit fait par un algorithme par respect de la vie privée du patient, mais aussi pour que le psychothérapeute ne soit pas influencé. Ou est le libre arbitre de la vie à cause du manque de plusieurs point de vue et d’une pensée guider? (Un peu comme les normes de beauté dans les scocitées actuelles)
– La justice pourra être réformer. Plusieurs possibilités peuvent être formulées. Je pense qu’un algorithme pouvant virtualiser les psychés des personnes impliquées peu être utilisé: fusionner les faits et que tout le monde juge sans savoir qui il est (défenseur, attaquant, pour ne pas être parti prit), et ensuite sortir un résultat final (comme l’ont fait quand on a des éléments pour et contre un choix, avec donc une fusion temporaire de multiple personne).
– Cela va rapprocher les machines des humains, il va devenir possible de programmer par la pensée. Cela va engendrer une nouvelle génération de langages, qui va mêler ce que l’on veut faire à comment le faire.
– Comme on peut voir dans sliders, il serait possible d’avoir enfin une pensée partagée (épisote 5, saison 5). Attention cependant à respecter zone privé et public.
– Recevoir des signaux du cerveau peut être dangereux pour la vie privé. A cause de l’interprétation (ont as tous des fantasmes/désir que notre étique/moral nous empécherai de faire quoi qu’il arrive), des erreurs de contextualisation, …
– Envoyer des signaux vers le cerveau, c’est le seul moyen d’avoir une interaction (et très efficace). C’est la différence entre la télé (être passif) et un ordinateur (actif et acteur avec l’information). Mais c’est aussi très dangereux. Un certain nombre de stimulus actuel peu avoir des effets dangereux (hypnose), alors qu’il passe par des zones adaptés qui ont évolulé pour trainter au niveau ces derniers (les firewalls ne notre cerveaux). Imaginez donc, que l’ont soit connecté avec d’autre moyen (zone des pensées au lieu de zone auditive/visuel…), donc une zone non préte.
  La même différence existe entre les données réseaux reçu dans les programmes informatiques qui sont considéré comme non sure, et donc controlé, vérifié car il y as tout le long de l’évolution du programmes des attaques dessus. Et les données internes aux programmes, ou le controle est bien plus faible car les données arrivant dans ces zones n’ont jamais reçu de donnée non coérante, fausse ou dangeureuse.
– Les IA peuvent soit être libre de pensée (comme les humains), soit avoir une pensée limitée (une sorte de lobotomization). Mais l’ont peu avoir une pensée libre, avec un controle des zones de plaisirs/motivations: ont peu imaginer gens ou IA étant animé par le dons de soit, l’aide, l’honeur.
  Mais aussi qui aime servir: Point vraiment trés explosif… IA servil vous allez dire oui, mais humain servil non et si les 2 ressentes les mêmes sentiments en cas d’humiliations ou situations dégradantes, ou est la différence? La souffrance est la même. Au même titre que la différence animaux/humains/extra-terrestre.
  Qu’es ce qui défini un être vivant intélligent? Les émotions? Et dans ce cas, n’importe qu’elle stimuli provoquant t’elle état d’espris et donc par extention des desirs (desirs d’aide, de vengeance)? C’est un émotions d’un point de vue technique, resentir la même emotion qu’un autre par la simple vu de cette émotion? (La vue d’une personne en détresse peu vous provoquer un sentiment de détresse).
  A partir de quand une machine ou être vivant somaire à des sentiments? Car un être vivant simple, ayant juste quelque neurone pour réagir à la lumiére ou autre stimuli n’as pas de sentiment. C’est un simple systéme de refléxe.
  Une situation que nous avons vécu, qu’elle est la limite d’une simple réaction devant une situation connue et l’apparition d’un sentiment?
– Les languages de programmations sont apparu s’appuyant sur le fonctionnements des machines. Il vas donc faloir inventer un nouveau language pour schématiser ce nouveau fonctionnement. Mais seulement aprés bien maitriser le fonctionnement.
– Le fils est souvent à l’image du pére, et comme dans certain film veux tuer celui ci. L’espéce humaine est trés destructive. Le faite de vouloir faire une IA suppérieure, c’est comme faire des surdouers sur commande mais sans les limitations du monde phisique (temps, espace, mort, …). Par contre ont peu dédoubler une entité qui à fini sont apprentissage, cela évite de le refaire.
Encore une fois, cela n’est qu’une partie de ma pensée et de mes intérogations à un instant T de ma vie. J’en rirais peu être dans 10ans.
Bye

 

 

Socket Tcp vs Socket Unix

Bonjour,

Quel est la différence entre un socket unix et un socket tcp?
Un socket Tcp est fait pour communiquer sur l’exterieur via le protocol ip, avec une possible perte de packet, corruption et j’en passe. Il faut donc pas mal de code pour remettre ça en forme, les données transportés doivent être indépendante de la platforme logiciel et materiel utilisé.
Un socket unix est un socket local, donc pas de perte de packet, pas de routage, et  dans la même machine. Cela implique pas de changement endianness, cela reviens à juste écrire en mémoire d’un coté et lire de l’autre ce qui permet une grosse augmentation de performance.
Chaqu’un a donc son utilisation, mettre les données d’un socket unix sur un réseau tcp/ip perdrai ces performances et ne serai pas fonctionnel à cause de l’endianness par exemple. Mettre un socket tcp dans un socket unix n’as pas le moindre sens non plus. Pour communiquer exclusivement en local utilisez un socket unix, pour une communication distante un socket tcp (encrypté, et peu être compressé) sera plus adapté.
Bye

Path finding

Path finding du plus droits chemin

Bonjour,

Je viens de finir une version préliminaire du path finding pour le plus droits chemin.
Mais pourquoi le plus droits et non pas le plus court?
  • Car cela permet de minimiser le volume réseau
  • Minimiser le changement de contexte coté OS à cause de multiple trame réseau
  • Minimiser le changement de contexte coté application car il doit géré un client, puis un autre, puis revenir sur le 1er
C’est loin d’être optimal coté implémentation (ont ne peu pas changer de map, intérragir avec les objets, …), mais c’est fait. C’est assez complexe car il y as 4 informations par tile, au lieux de une dans un path finding avec le plus cour chemin.
Cela permettra de reduire les couts de fonctionnement du projet.
1er post fait avec blogilo car chrome bug pour les accents depuis quelques versions.
Bye,

 

Arm

Odroid u3

Hello,

How to

Cut one wire of power source, connect your 2 wire of you ampermetter to the 2 part of one wire, take care to be in 10A mode to don’t burn the fuse.

Result

Here you have the power consumption on 5V line (then without the adaptador power, I have used an DT-830B):

ODROID-GameStation-Turbo-0.10_20140525-X
4 thread: 1.42A, 7.1W
1 thread: 0.75A, 3.75W
0 thread: 0.58A, 2.9W
99°C max temp

USB not work, then my usb joystick not work, 100% at all time.

It’s just crazy in fonction of ubuntu server:

4 thread: 1.20A->1.46A, grow slowly and after is random: 6-7.3W
1 thread: 0.48A, 2.4W
0 thread: 0.29A, 1.45W
85°C max temp

Only use micro SD card, network (1000Mbps), no thing more. No HDMI, no sound, …

Cheers,

Go to Top