La visualisation à l’ère de la Réalité Virtuelle

Gros plan sur la fabrication et l’ingénierie.

Si les outils de conception 3D existent depuis quelque temps déjà, la consumérisation de la réalité virtuelle fait émerger des solutions de visualisation à un rythme sans précédent. La visualisation a atteint un tel niveau que les concepteurs peuvent désormais créer des images photoréalistes de produits dans des environnements naturels avec plus de rapidité et de précision.

Lire le livre blanc

oat++ : un framework de Web Services entièrement écrit en C++

Par:
fredericmazue

lun, 15/10/2018 - 17:09

A découvrir, pour ceux qui ont besoin de mettre en place un Web Service très performant.

oat++, totalement écrit en C++ ne requiert aucune dépendance et est 'extrêmement rapide' pour reprendre l'expressions de ses créateurs.

oat++ fournit un serveur multithread et asynchrone, capable de supporter jusqu'à 30 000 connexions simultanées. Il est agnostique au niveau de la connexion (socket, pipe, fichier, etc.) car il ne travaille qu'avec le flux HTTP. oat++ suporte le protocole HTTP1.1. Le support du protocole HTTP2.0 doit arriver prochainement.

Il peut fonctionner en deux modes

1/ le mode API SIMPLE. C'est une approche multithread avec interdictions des IO. Avec ce mode un point de terminaison se crée ainsi

ENDPOINT ( "GET" , "demo / api / hello" , hello) {
   return createResponse (Status :: CODE_200, "Hello World!" );
}

Si le point de terminaison doit recevoir des arguments, le code devient :

ENDPOINT ( "GET" , "demo / api / param / {param}" , getWithParams,
         PATH (String, param)) {
  return createResponse (Status :: CODE_200, "param =" + param);
}

Il est possible de retourner du JSON :

ENDPOINT ( "GET" , "demo / api / json" , getJson) {
  auto dto = MyDto :: createShared ();
  dto-> statusCode = 200;
  dto-> message = "Hello json" ;
  return createDtoResponse (Status :: CODE_200, dto);
}

2/ le mode API Sync. Il s'agit d'une approche avec IO non bloquantes qui utilise des coroutine. Sous ce mode, un point de terminaisons se crée ainsi :

ENDPOINT_ASYNC("GET", "demo/api_async/hello", HelloAsync) {
  ENDPOINT_ASYNC_INIT(HelloAsync)
  Action act() override {
    return _return(controller->createResponse(Status::CODE_200, "Hello World Async API!"));
  }
};

Et s'il doit recevoir des arguements :

ENDPOINT_ASYNC("GET", "demo/api_async/param/{param}", GetWithParamsAsync) {
  ENDPOINT_ASYNC_INIT(GetWithParamsAsync)
  Action act() override {
    auto param = request->getPathVariable("param");
    return _return(controller->createResponse(Status::CODE_200, "param=" + param));
  }
};

oat++ est disponble sur GitHub