Neuroshok

By

Salut à tous !

Aujourd’hui nous allons vous proposer un outils qui s’adresse aux développeurs.

Vous trouvez que la rédaction de vos requêtes SQL est fastidieuse ? C’est vrai, mais imaginez le jour où vous changerez de système de gestion de votre base de données. Vous êtes lentement en train de prendre conscience de l’ampleur de la tâche. Oui, vous voyez juste. Retranscrire l’entier de vos requêtes. C’est également à ce moment que vous vous rendez compte qu’il y en a partout.

Si seulement on pouvait le faire en un clic ! Ou plus précisément en changeant un paramètre.

Oui c’est possible. Car vous aurez utilisé cette interface générique présentée un jeudi sur Bit-Studio et qui vous a paru formidable. J’ai nommé :

Neuroshok

Développé par Ads00.
Neuroshok - gestionnaire de base de données

NXI / NEX

Neuroshok est un ensemble d’outils comprenant :

  • NDBune librairie pour se connecter et manipuler des bases de données
  • NDSune librairie de manipulation de données
  • NEXun protocole de transfert de données
  • NXIun navigateur web / nex (client)

Aujourd’hui, nous allons nous concentrer sur NDB qui est le projet principal de Neuroshok. Laissons Ads00 nous expliquer en quelques mots son outil :

« NDB est une interface générique qui permet de se connecter à n’importe quel moteur de données (SGBD ou autre). Les requêtes sont écrites en C++ et peuvent être exécutées sur différents moteurs de données en changeant un seul paramètre. Les modèles de données sont définis et accessibles compile-time. »

Les principales fonctionnalités de NDB :

  • Header only
  • Requêtes full C++ et génériques
  • Support de tous types de moteur de données
  • Expressions SQL générées compile-time
  • Gestion des types personnalisable
  • Accès aux champs via des structures
  • Déduction d’expressions partielles
Neuroshok - gestionnaire de base de données

NXI / NEX

Si vous êtes en train de développer un projet, NDB vous sera certainement très utile. Ads00 est également très ouvert et vous donnera volontiers un coup de main si vous en avez besoin. NDB vous fera gagner du temps et vous permettra d’avoir un code encore plus propre.

Neuroshok - exemple d'utilisation

Exemple d’utilisation NDB

Neuroshok - gestionnaire de base de données

NXI

Pour l’utiliser, rendez-vous sur GitHub. Un exemple d’utilisation est disponible ici.

Il sied de préciser que Neuroshok est utilisé dans le cadre du projet Sielo. Feldrise, le développeur de ce navigateur, est totalement satisfait de cet outil.

Merci à Ads00 pour son travail. A bientôt pour de nouvelles aventures.


Interview de Ads00, par Feldrise.

Bonjour ! Tu es le développeur de Neuroshok. Pourrais-tu te présenter en quelques mots ?

Alors j’ai commencé avec plusieurs langages basics, vb, php puis j’ai découvert c++ que j’ai préféré aux autres langages. Ce que j’aime dans la prog surtout c’est créer et inventer des concepts. Et au niveau du code, avoir des choses génériques et flexibles.

Ça fait longtemps que tu programmes ?

Hum, j’ai du commencer vers 12 ans, je ne sais plus trop, ça date.

Et tu as quel âge aujourd’hui ?

30. On jouait à street fighter 2 sur Nintendo quand j’ai commencé lol.

Pourrais-tu donc me donner plus de détails sur les raisons qui t’ont poussé à créer ces différents projets ? Et peut-être par la même occasion, expliquer en quoi ils consistent ?

Alors pour nex, ça vient de plusieurs points faibles du Web.

Le protocole http est textuel (ce qui sert à rien car personne ne lit des requêtes ou les écrit à la main).

Les implémentations ne sont pas pratiques (pour la gestion des fichiers par exemple). Il n y a pas de généricité sur les serveurs web, ils utilisent leur propre modèle de données mais ne peuvent pas communiquer (ils ont inventé les API REST depuis pour contourner le problème). Les informations sur une page web sont juste du texte sans aucune organisation.

Le but de nex est donc d’organiser les informations sur internet de manière générique et structurée.

Il y a donc une séparation native de l’interface et des données (sur le web on ne reçoit que les données après qu’elles soient passées par l’interface).

Dans nex, chaque information est encapsulée dans une structure appelée « ressource » qui contient plusieurs informations comme, la durée de vie d’une information, la qualité, la fiabilité, les interfaces qui permettent de visualiser l’information, etc.

Ceci permet d’avoir une flexibilité au niveau de la personnalisation (l’utilisateur peut choisir quelle interface utiliser).

Ah, j’ai oublié ce dernier point. Il y a aussi une abstraction de la localité des données. Les données sont connectées entre elles via différents types de connexions paramétrables et donc cette organisation permet de créer rapidement certaines applications (réseau social, boîte mail, partage de fichiers, gestionnaire de librairies) à partir d’un seul système en le configurant simplement.

Voilà, globalement c’est ça.

Très intéressant. Et pour ce qu’il en est de NDB ?

Pour NDB, je n’ai pas trouvé de librairie existante qui permet de faire des requêtes C++ de manière générique (non spécifique à SQL). Le but est donc d’écrire des requêtes génériques pour un moteur de données en C++.

On peut donc avoir des SQL likes, des NOSQL, ou on peut même faire des requêtes sur un container STL. Ceci permet de ne pas avoir à réécrire les requêtes si jamais on a besoin de changer de moteur de stockage.

Après, pour les features, les requêtes sont générées à la compilation. Les types sont customisables. Les expressions incomplètes sont déduites. Le modèle génère des objets ce qui permet de faire des requêtes objet instanciant directement ces objets.

Et à venir : la vérification à la compilation de la syntaxe des requêtes.

J’ai tout dis je crois.

D’accord. Et nex et ndb sont-ils les seuls projets de Neuroshok ?

nds : une librairie de manipulation des données.

Via des encoders par exemple :

nds::encode, encoders::compress, encoders::encrypt(object);

L’objet sera sérialisé en json puis compressé en zip puis crypté.

J’avais aussi commencé la manipulation de bits avec une classe nds::byte qui permet par exemple de créer des séquences de bits représentant un codage zeta depuis un nombre et donc dans mes projets je gère toutes mes conversions de cette manière en créant des spécialisations suivant l’interface nds.

nds::encode(T)

Par exemple une conversion en string pour la classe my_clas.

La classe servant de scope ici.

Et sinon il y a nxi aussi j’avais fait un prototype mais j’ai commencé à le refaire.

Super ! Je suppose que tu souhaites donc développer ces concepts et idées dans l’avenir ?

Oui, mais c’est un peu long de tout faire tout seul, surtout quand on recommence les projets pour les perfectionner !

Je peux comprendre. C’est aussi pour ça que tes projets sont open sources ? Tu aimerais des contributions ?

Je ne suis pas très doué pour la communication, j’ai rarement de réponse car on me dit qu’on ne comprend pas mes projets mais si je peux avoir des contributions, oui ce serait cool.

Et du coup comment vois tu l’avenir de ses projets, et en particulier nex et ndb ? Penses-tu qu’ils puissent être utilisés à plus grande échelle ?

Il faudrait que je fasse plus de pub mais comme je disais, la communication ce n’est pas mon truc.

Les versions prototypes des 2 sont utilisables actuellement, ndb se perfectionne (grâce à mon unique beta testeur [qui est Sielo]) et la version 2 de nex / nxi est en cours de développement (qui était en pause car il utilise ndb).

Et bien en tous cas, tu as déjà ta place sur Bit-Studio !

Je te remercie de ton temps et de ta participation ! Nous te souhaitons tout le meilleur pour la suite de ton projet.