Nex

a marqué ce sujet comme résolu.

Salut, je vous présente un projet que je développe depuis pas mal de temps.

Introduction

Le but du projet est de créer une alternative au web actuel (mail, site web, réseaux sociaux, http, ftp …) Pour ce faire, on utilise un serveur nex qui peut être utilisé :

  • côté client ou serveur : un utilisateur peut installer un serveur nex pour gérer ses informations locales puis les partager simplement sur le net avec d'autres clients ou d'autres serveurs

  • centralisé ou décentralisé : on peut par exemple créer un réseau d'échange de données (ex: réseau social) décentralisé, les données sont échangées entre chaque utilisateur directement

  • sur le net ou en local : on peut utiliser le serveur comme une bibliothèque de gestion de données (films, musiques) sans la connecter au net

Grâce aux fonctionnalités de base, on peut créer des applications assez rapidement comme un serveur mail juste en configurant le serveur. Le serveur est prévu pour accepter plusieurs protocoles (actuellement : nex, http, ws) La visualisation des ressources se fait via les interfaces qui peuvent être côté client ou serveur. On pourrait donc par exemple stocker les informations de molécules sur un serveur nex et les visualiser côté client avec un moteur 3D.

Chaque information ou ensemble d'informations sera organisée dans une structure appelée ressource (plus d'infos dans la description)

Description

Caractéristiques principales

  • contrôle de la fiabilité, qualité et accessibilité de l'information
  • ressources, types de données et interfaces personnalisables
  • connectivité des ressources
  • mise en place de structures de données et réseaux d'informations simple et rapide
  • sécurité de l'accès à l'information
  • partage simple et rapide
  • gestion des utilisateurs et groupes d'utilisateurs
  • synchronisation multiple des données
  • recherche avancée (types, propriétés, tags, ressources parents) (la popularité n'est pas imposée)
  • modules (client/serveur) permettant d’interagir avec les données et interchangeables
  • privatisation, pas de contrôle des données par une seule organisation, vous choisissez ou et avec qui vous partagez vos données
  • vous choisissez quelles informations vous voulez surveiller quelque soit son emplacement (notification)
  • redondance minimale des données
  • possibilité de repartir les données sur plusieurs serveurs physiques grâce a la virtualisation de serveurs nex

Concept

Nex est donc un système de gestion de ressources organisé comme ceci :

Structure globale

  • ressources : elles stockent les informations
  • modules : ils permettent d'ajouter des fonctionnalités et de traiter les ressources
  • interfaces : elles permettent de visualiser les ressources

Ressources

Les ressources permettent de stocker une information sous une structure définie, le but est de représenter une idée (qui peut utiliser plusieurs informations) avec une seule entité. Par exemple, une ressource "film" contiendra comme données une image (l'affiche), une vidéo (le film), du texte (réalisateur / acteurs etc ..)

Une ressource peut avoir :

  • des types (identification de l'information)
  • des connexions (liens logiques)
  • des modules (applications de fonctions)
  • des interfaces (affichage des informations)

Connexions

Ces ressources peuvent être connectées entre elles par différents types de connexion. Par exemple, sur un forum, on pourrait connecter une ressource de type "message" à une autre avec la connexion "résolution" ou deux questions similaire avec "similitude". On peut ensuite à partir de n'importe quel message retrouver les connexion résolutions en utilisant la connexion "similitude".

Un autre exemple, la connexion "phonétique" qui permet de trouver une information quand on ne connait pas l'orthographe lors de la recherche.

Le but est donc que l'utilisateur puisse chercher et trouver des informations de la même manière qu'il le fait avec sa mémoire.

Module

Le module noyau est "nxs", il permet la gestion de base des ressources, par exemple pour lister les ressources, on utilise la commande "res_list" de du module "nxs"

Chaque module peut utiliser les fonctions des autres modules, un module pourra donc utiliser les fonctions de nxs

Un module peut être exécuté côté serveur ou client, on peut donc utiliser une ressource distante avec un module local ou inversement. Par exemple pour exécuter une requête sur un serveur, on peut écrire : nxs::request::execute("nxs::res_list;id:0;", adresse_serveur);

On peut ainsi lister les ressources (root) locales ou d'un serveur spécifié puis les utiliser dans un module ou une interface.

Interface

Similaire aux modules, leur but est de gérer l'affichage

Actuellement les interfaces sont en C++ et génèrent du html, l'ajout du python est prévu. Serveur

Le serveur peut gérer plusieurs protocoles (actuellement http et nex), il sera possible d'en ajouter par la suite (ws, ftp ..)

Actuellement, le protocole nex permet aux serveurs de communiquer entre eux, d'envoyer des données (binaire / texte / texte serialisé). Les données peuvent être envoyées en stream, la requête sera donc exécutée à chaque réception des données. Partage

La gestion des transferts et partage de ressources / fichiers sera géré par le module nxs.

Il y aura plusieurs façon de partager des ressources :

  • ajout de connexions
  • transfert des données
  • synchronisation des ressources

On peut donc créer de nombreuses applications en combinant ces différents éléments, par exemple une application mail se fera assez rapidement en combinant le partage via connexion, la synchronisation et la gestion des autorisations

Recrutement

  • Devs C++ (système / interface / modules)
  • Webmaster (site de présentation / documentation)
  • Graphiste (présentation du projet / réalisation de maquettes pour l'interface graphique)
  • Webdesigner / dev JS (interface)

Je recherche des personnes sérieuses capable de s'investir un minimum et de travailler dans une ambiance agréable.

Salut ! Il m'a fallu un peu de temps pour tout comprendre :s.
Ton projet a l'air intéressant mais je n'ai pas tout intégré.
L'installation s'est déroulée sans problème.
J'ai compris comment utiliser les commandes nxs, maintenant je n'en connais aucune à part res-list et ne puis donc pas en tester les fonctionnalités. Peux-tu en faire une liste ?
Aussi l'interface graphique nxi ne me semble pas présente dans l'archive téléchargeable.

+0 -0

Salut, Je viens de mettre à jour le zip : http://nex.neuroshok.com/bin/nex_0.1_windows_x64.zip avec nxi intégré, un module de jeu de cartes en cours et quelques autres interfaces et modules.

Voila la liste des commandes, certaines sont gérées par nxi

user_login user_logout user_add user_del user_axx_list user_axx_add user_axx_del group_list group_add group_del group_axx_list group_axx_add group_axx_del group_user_list group_user_add group_user_del res_get res_info res_list res_add res_del res_share_connect res_axx_list res_axx_update res_type_list res_type_add res_type_del res_property_list res_property_add res_property_del res_interface_list res_interface_add res_interface_del res_connexion_list res_connexion_add res_connexion_del res_data res_data_set type_list type_add type_del type_property_list type_property_add type_property_del type_interface_list type_interface_add type_interface_del property_get property_list property_add property_del interface_get interface_list interface_add interface_del connexion_list connexion_add connexion_del file_upload file_share

Non, c'est déjà beaucoup plus clair sur le but du projet. Apres j'ai du mal a voir pourquoi, à titre personnel, j'utiliserais ça mais c'est un autre problème. Les alternatives au web il y en a déjà eu, on peut parler de Gopher qui est apparut en meme temps que le web et qui, bien qu'avec un relatif succès au début, a finit par presque disparaître. Donc j'ai maintenant a peu pret compris ton projet mais mon "soucis" est que je n'en voit que peu l'utilité.

L'utilité se trouve dans la description des fonctionnalités. Je vais pas écrire 50 exemples mais globalement, tu ne dépends pas des fonctionnalités fournies côté serveur. Et le but n'est pas juste de faire des "sites web". Tu peux très bien utiliser le serveur en local sans le connecter au net. Tu n'as pas besoin d'utiliser 50 services pour suivre des données, les partager selon leur types et tout ce que fait un user lambda.

Tu peux également créer des réseaux privés, de base un user installe un serveur nex en local. Il peut ensuite gérer ses propres données, puis les partager ou non avec d'autres user (via les serveurs qui communiquent entre eux). Puis tu peux connecter ce réseau privé à un réseau public ("sites web") ou d'autres réseaux privés.

Le but premier n'est pas de créer un web parallèle comme Gopher mais de créer un système de gestion de données, j'ai juste mis ce titre pour que ce soit un peu plus parlant.

Il n'y a pas de fichiers / dossiers imbriqués, les applications dupliquent pas les données dont elles ont besoin. Il y a des ressources, toutes au même niveau qui sont connectées entre elles. Si une application a besoin d'une information, on connecte l'appli à l'info.

C'est une possibilité oui, soit on intègre "nxs" à son soft, soit on utilise le serveur directement et on y ajoute des modules / interfaces pour gérer ce serveur. On peut avoir des modules / interfaces côté client ou serveur.

Actuellement, les interfaces côté serveur renvoient un rendu web que j'affiche dans un nav donc il manque un client pour avoir la possibilité par exemple d'utiliser d'autres moteurs de rendu.

J'ai un peu de mal à expliquer oui. Donc pour l'exemple que tu donnes, on va prendre :

  • un jeu qui charge nxs avec un module stream

  • un serveur A qui a un module mail

  • un serveur B qui a un module chat

  • un serveur C qui a un module stream

Si ton jeu vidéo est un jeu de carte online (style HS), tu vas stocker tes cartes en créant le type "carte" dans un type "deck" Le joueur pourra donc :

  • envoyer un deck "par mail" (nxs::res_share;id=deck_id;address=server_A;)

  • envoyer une carte sur un chat (nxs::res_share;id=card_id;address=server_B;)

  • streamer une partie (NEX:1.0/data_type=stream;/nxs::res_share;id=game_id;address=server_C;)

Ensuite il y a plusieurs fonctionnalités comme la connexion de commandes (en dev). Par exemple, si on connecte le jeu au module chat, on peut faire en sorte d'envoyer un message au module de chat quand le joueur reçoit une nouvelle carte.

Donc c'est assez rapide à mettre en place, par exemple pour les mails, il suffit de configurer les autorisations et le système de notification pour reproduire une application mail. On a pas besoin de coder un module pour avoir un système de mail.

Mais on peut aussi utiliser le serveur en local comme un gestionnaire de bibliothèque, ensuite le user pourra partager facilement ses informations avec d'autres serveurs (qu'ils aient une fonction de bibliothèque (d'un autre user), site internet ou autre)

Voila j'espère que c'est un peu plus clair

Dans chaque cas, le partage de la donnée se fait en une requête, il n'y a rien en plus à coder. Si on veut transférer des données entre deux sites / applications, il faut que les devs donnent la possibilités de faire cet échange pour chaque autre application. Donc c'est pas juste un principe d'éviter de devoir coder ça à chaque fois, de voir utiliser les api de chaque appli avec lesquelles on veut interagir.

Le but de nex est de gérer des données de manière générique avec gestion des users, synchro, gestion des autorisations. Donc pour utiliser un "mail nex", il n'y a rien à coder, il suffit de configurer les autorisations, les users et la synchro. Au départ le but est de gérer les données en les encapsulant dans une structure, tout ça géré par le serveur pour ensuite les partager. Je ne vais pas utiliser 50 protocoles pour gérer mes requêtes, mes transferts de fichiers, de ressources etc .. j'en utilise un seul.

Par exemple, si je veux être notifié quand un film réalisé par tel réalisation avec tel acteur est posté sur un site, si le site ne me propose pas la fonctionnalité, c'est pas apache qui va me le permettre. Si le site utilise un serveur nex, ce sera possible pour le client de récupérer cette donnée avec ces conditions sans avoir à coder quoi que ce soit.

Je n'ai pas chercher à résoudre un seul problème en particulier mais juste à créer un système de gestion de données facile d'utilisation pour qu'un user puisse avec un seul tool faire le maximum de choses avec ses données sans avoir à utiliser 50 services selon ce qu'il veut faire de ses données.

Je ne remplace pas tous les protocoles, je permet à tous les protocoles de se connecter au serveur. Actuellement je peux me connecter à mon serveur en utilisant http, nex, ou ws. On peut ensuite rajouter les protocoles qu'on veut. Mais je convertit toutes les requêtes entrantes vers un seul protocole oui.

J'ai moi même un peu de mal à comprendre l'utilité finale .. :|

Déjà si j'ai à peu près compris le principe : généraliser la gestion de tout avec un méga API "simple" pour que tous les serveurs puissent s'échanger des données "simplement" ?

Juste une petite question au passage : quelle est l'utilité d'envoyer une carte dans un chat ou encore un deck dans un mail ? ^^

+0 -0

J'ai moi même un peu de mal à comprendre l'utilité finale .. :|

Déjà si j'ai à peu près compris le principe : généraliser la gestion de tout avec un méga API "simple" pour que tous les serveurs puissent s'échanger des données "simplement" ?

Juste une petite question au passage : quelle est l'utilité d'envoyer une carte dans un chat ou encore un deck dans un mail ? ^^

Salut, si tu veux faire des choses inutiles, ça n'aura rien .. d'utile lol. Mais tu as mal compris une partie, tu ne peux pas mettre une carte dans un chat car il n'y a pas de notion d'inclusion mais de connexion : "Ces ressources peuvent être connectées entre elles par différents types de connexion." Si tu veux connecter ton chat à ta carte pour x raisons, tu le fais, si tu veux pas tu le fais pas .. Après si ça te dérange que quelqu'un puisse le faire, tu peux créer des restrictions au niveau des connexions

Ce projet est une solution qui cherche son problème. Personne n'a besoin d'un protocole dédié à l'échange de données parce que les protocoles existants sont plus simples, plus génériques, et parce que les problèmes de gestion d'utilisateurs ou de permission se passent au-dessus.

Ca dépend ce que t'appelles un problème après, si tu peux faire quelque chose plus rapidement / simplement mais que tu préfères utiliser les choses existantes, alors c'est sur ça ne sert à rien, il n'y a pas de problème. Quand je vois des gens coder des parser pour récupérer des données sur un site, pour moi c'est pas une solution pratique. Quand je vois des données redondantes dans un système de données, pour moi c'est qu'il y a quelque chose mal géré quelque part. Il n'y a pas d'intérêt pour le user à réentrer 50x la même donnée. etc …

J'ai du mal te répondre dans un message car le projet n'est pas un protocole, j'ai codé un protocole pour le projet, c'est différent. Après si tu veux utiliser "des protocoles existants plus simples, plus génériques" rien t’empêche de les utiliser.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte