[TUTO] Application web dynamique

Proposer ou rechercher un tutoriel concernant le Raspberry Pi

Modérateur : Francois

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » mar. 9 oct. 2018 00:16

adelantejm a écrit :
lun. 8 oct. 2018 09:11
Tout ceci est super et c'est ce que je voudrais faire.
Malheureusement je me suis mis péniblement au C++ (avec l'Arduino) et je voudrais bien ne pas repartir à zéro avec java.
Y aurait-il l'équivalent de tous vos travaux en C++ sur RPI bien sûr?
J’ai déjà réalisé un truc similaire en c++ pour les tous premiers PI. Un daemon qui faisait le dialogue avec des composants SPI, qui hébergeait un serveur TCP multi-connexion pour les commandes client<-> serveur et un broadcaster UDP pour le transfert des datas serveur->client. Tout ça avec comme seule lib ajoutées au PI, la bcm2835 et phtread. La seule chose que j’avais faite en plus, c’était la synchro des données par block avec un web service extérieur développé en php (ce que j’ai remplacé dans le tuto par la génération de csv a la demande). Résultat, plus de 3000 lignes de codes serrées et finalement pour dialoguer aux travers de sockets IP (avec tous les emmerdes qui vont avec ...).

Avec nodeJS, j’ai juste fait la meme chose en 3 ou 4 heures avec en prime l’appli client qui ne requiert aucune installation et qui fonctionne avec n’importe quel navigateur (enfin, au moins ceux de notre siècle) et sans aucun plugin. J’ajoute que pour faire ce genre d’application, tu ne peux pas te poser la question de savoir si tu dois apprendre à coder en Javascript ou pas (et non pas Java qui n’a rien à voir). Tu seras obligé de le faire de toute façon pour la partie client.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: [TUTO] Application web dynamique

Message par adelantejm » mer. 10 oct. 2018 12:48

Merci pour ta réponse.
Je ne suis pas un spécialiste et donc pas sûr d'avoir tout compris.
Pour le client qui sera sur ESP-32, j'ai déjà ce qu'il faut en C++ avec l'IDE Arduino.
Pour le RPI j'ai aussi quelque chose en C++ qui fonctionne en serveur(testé avec NetBeans) et représente environ 160 lignes.
Pour traiter plusieurs clients le programme utilise un fork() et là je suis à la limite de l'implosion (pour moi).
Par curiosité intellectuelle je me demande si les processus enfants vont se dérouler sur des cœurs différents ?
Plus important : le programme (que j'ai pompé sur internet) ne traite pas la communication entre enfants/parent ce qui pourtant me serait bien utile. La doc que j'ai trouvée sur fork() parle duplication en mémoire, du programme ??? des données ???
D'autre part je pense créer une application à part, qui permettrait le pilotage de l'ensemble à partir de mon portable. Je l'ai déjà fait avec un arduino, il faut que je le transpose sur RPI.
Là aussi il faut que j'ai une communication entre applications.
Quand je parle de communication il s'agit simplement d'échanger un bloc d'une trentaine d'octets ayant toujours la même structure.
JM

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: [TUTO] Application web dynamique

Message par destroyedlolo » mer. 10 oct. 2018 13:04

adelantejm a écrit :
mer. 10 oct. 2018 12:48
Par curiosité intellectuelle je me demande si les processus enfants vont se dérouler sur des cœurs différents ?
Ca dépend du schedulers de l'OS. Normalement, si tu n'as pas défini d'affinité (un truc qui permet de grouper les process sur/des coeurs particuliers pour avoir une meilleurs gestion des caches principalement), ils devraient se répandre sur tous les coeurs en fonction de ceux qui ne sont pas déjà en train de faire quelque chose.
adelantejm a écrit :
mer. 10 oct. 2018 12:48
Plus important : le programme (que j'ai pompé sur internet) ne traite pas la communication entre enfants/parent ce qui pourtant me serait bien utile. La doc que j'ai trouvée sur fork() parle duplication en mémoire, du programme ??? des données ???
A nouveau, ca dépend des parametres systemes. Sans bidouille, normale le code est partagé (car marqué constant) et tout ce qui est dynamique donc les données sont dupliqués.
Pour faire du partage, tu as plusieurs possibilité : mémoire partagées, eventfd, socket (et oui encore, c'est l'avantage des sockets : elles fonctionnent que ce soit en local ou a distance).
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: [TUTO] Application web dynamique

Message par adelantejm » mer. 10 oct. 2018 13:44

Oui, pour les cœurs après tout, ce n'est pas mon problème : laissons faire l'OS.
Pour le partage d'infos, intuitivement je dirais que ce qui convient le mieux c'est la mémoire partagée : il faudrait que chaque processus ait sa mémoire (30 octets) que les autres processus pourraient lire mais pas écrire.
C'est quoi les instructions pour ça ?

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: [TUTO] Application web dynamique

Message par destroyedlolo » mer. 10 oct. 2018 14:23

Ce n'est pas aussi simple que ca car si tu as le risque d'avoir des acces concurrents, il faut que tu mettes en place des sémaphores.
Sinon, pour répondre a ta question, regarde tout ce qui correspond aux SHM.
En particulier mmap() te permet de ... mapper tes objets partagés.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » mer. 10 oct. 2018 23:34

adelantejm a écrit :
mer. 10 oct. 2018 12:48
Pour traiter plusieurs clients le programme utilise un fork() et là je suis à la limite de l'implosion (pour moi).
Ouais, bhé quand t’auras fini d’imploser tu pourras commencer à réfléchir sur la méthode, parce que si tu commences forker juste pour faire un simple serveur tcp, t’es pas au bout de tes surprises. Bonne chance pour gérer la concurrence de tout ce bazar et la suite risque d’etre encore moins drôle. Plutôt que de te poser la question de savoir comment tes cœurs vont se repartir tous ces childs, demande toi plutôt si cela a un sens d’en faire autant. Penses que tous ces process enfant que tu vas créer passeront finalement leurs temps à ne rien faire d’autre que de rester attaché à un socket muet. Quel gâchis de ressource pour rien. Sache juste que tu peux très bien traiter des milliers de connexions tcp si tu le veux avec un seul thread et faire tourner toute les opérations dans un seul process (c’est ce que faisaient mes 3000 lignes de code …). Regarde du côté de poll(), select(), epoll() et meme i/o complétion port sur tu vises d’autres plateforme. Ça t’en dira plus sur les bonnes méthodes à employer, mais je te préviens tout de suite que pour un débutant, ça risque de piquer un peu :shock: ...

Ceci dit, c'est bien. A peine commencé, tu parles déjà de fork, d’échange multi-processus, de partage mémoire et ce n’est que le début. Tu verras qu’ensuite tu vas apprendre plein d'autres nouveaux mots comme multi-threading , opérations cross thread,mutex, socket asynchrone, descripteurs, multiplexage ect … très enrichissant pour discuter en société tout ca :lol:
adelantejm a écrit :
mer. 10 oct. 2018 12:48
D'autre part je pense créer une application à part, qui permettrait le pilotage de l'ensemble à partir de mon portable.
Bhé oui, c'est ce que j'avais dut faire après mes 3000 lignes de code serveur. Pis quand t'as fini l'appli smartphone, tu te dis qu'une appli sur l'ordinateur c'est bien pratique aussi quand tas tout un tas de données a exploiter et tu remets ca … Forcement quand tu viens faire la démonstration d'un truc qui demande 10 fois moins de code et qui en plus fourni l'appli client a n'importe quel système sans rien lui installer, tu ne parles pas de ces choses la :lol:

Ma foi, tout ça est bien intéressant et je t’encourage vivement à poursuivre, mais ce n’est pas vraiment l’endroit pour en parler. Ici c’est un topic que j’ai justement écrit pour démontrer que l’on pouvait faire des tas de choses tout aussi performante et beaucoup plus riche avec infiniment moins de code et surtout sans avoir à se soucier de tout ça ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: [TUTO] Application web dynamique

Message par adelantejm » jeu. 11 oct. 2018 13:58

Merci pour les infos.
Oui c'est difficile de trouver le bon endroit pour mon sujet. D'autant plus que mes questions, c'est maintenant sur la portée du WIFI ...
Je vais chercher.
JMS

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » jeu. 11 oct. 2018 14:21

Pour tout ce qui est réseau et asynchrone en c++ tu devais aussi regarder du coté des lib boost.asio. Je n'ais jamais essayé sur le PI mais pas de raison que cela ne le fasse pas. Quand à la porté du wifi sur le PI, elle n'est pas terrible mais ca dépend aussi de ce qu'il y à l'autre bout. Chez moi, il y a une vingtaine de mètre entre la box orange et un Pi3 et ca passe, mais dehors, plus rien. J'ai déjà vu sur le net des types qui avaient soudé un connecteur ufl direct sur le pi ou un bout de coax avec un connecteur sma au bout pour pouvoir y connecter une antenne externe, a rechercher ...
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: [TUTO] Application web dynamique

Message par destroyedlolo » jeu. 11 oct. 2018 15:48

adelantejm a écrit :
jeu. 11 oct. 2018 13:58
Oui c'est difficile de trouver le bon endroit pour mon sujet. D'autant plus que mes questions, c'est maintenant sur la portée du WIFI ...
Ben comme je te le disais dans les autres sujets ou tu es intervenu : pourquoi ne pas simplement ouvrir un nouveau sujet ? ;)
Ca permettrait non seulement de centraliser toutes tes demandes, mais ca évite de "polluer" les autres avec des questions qui n'ont plus beaucoup de rapport.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

adelantejm
Messages : 31
Enregistré le : ven. 5 oct. 2018 09:11

Re: [TUTO] Application web dynamique

Message par adelantejm » ven. 12 oct. 2018 09:22

Oui pour ouvrir un sujet, mais lequel ?
Mon projet n'a rien de bien innovant. Il correspond à mes besoins et c'est tout.
La seule particularité c'est peut-être de vouloir limiter les outils au C++ et à ses librairies. Je devrais même dire au C car moi qui en suis resté à Warnier et Corig, la programmation objet me passe au dessus; même si j'ai compris le principe, je n'ai pas le réflexe.
Merci pour "shm" cela semble bien correspondre à mes besoins en restant assez simple. La question que je me pose c'est : est-ce que ça fonctionne pour 2 programmes différents?
Comme il s'agit "d'ouverture de fichier" ça devrait ?
Quant à "boost.asio" c'est surement beaucoup mieux mais il me faudrait des cours particuliers : je comprends vite mais il faut m'expliquer longtemps ...
JM

Répondre

Retourner vers « Tutoriels »