Ne sais plus coder dès lors que ça sort du local

a marqué ce sujet comme résolu.

Bonsoir,

J'ai commencé à programmer depuis peu, je n'ai vraiment aucun problème lorsqu'il s'agit de coder des choses en local, des petits scripts par exemple, par contre, dès lors que ça touche au réseau, je suis tout simplement perdu. Un exemple tout bête : créer un blog, je n'ai aucun mal à penser (grossièrement tout du moins) les systèmes du blog en globalité, par contre, aucune idée de comment envoyer les données traitées vers un serveur. J'imagine que ça se fait via une requête "POST" vers le serveur HTTP, mais je n'ai aucune idée de comment l'envoyer, tout simplement ? Dois-je recoder tout un client HTTP pour espérer communiquer avec le serveur ? J'ai l'impression de tout mélanger, je me sens bête et cela est très déplaisant. ^^

HTTP n'est qu'un exemple, j'ai le même problème à partir du moment où ça sort du local.

Ma question est donc :

Les protocoles, ça se gère comment ?

PS : Pas la peine de me dire de choisir un framework pour mon site web, les frameworks c'est sympa, mais je pense en apprendre plus si je code tout moi-même (quitte à coder un genre de mini-framework pour rendre le tout pas trop dégueux)

Fon-

Par curiosité, peux tu nous montrer l'architecture que tu as en tête ?

Tel que je le vois, typiquement, la requête HTTP POST, c'est l'utilisateur qui la fait grâce à son navigateur pour envoyer un contenu au serveur.

Cela dit je comprends un peu ton problème, et l'approche que j'estime être la bonne pour apprendre ne consiste ni en utiliser une usine à gaz ni à tout recoder mais prendre la tangente entre les deux :

  • comprendre comment communiquent les acteurs du système deux à deux : le service web et le navigateur, le service web et la base de données…

    • ouvre une socket qui écoute sur le port 8888, fais une requête dans ton navigateur sur http://localhost:8888/, regarde ce que ton navigateur envoie sur ta socket, remarque qu'il affiche une erreur parce qu'il n'a pas reçu de réponse, cherche une donnée valable à lui répondre sur le web (un HTTP 200 OK) et adapte ton code, etc.
    • installe une base de données sur un serveur quelque part ou bien crées en une locale toute simple avec sqlite, manipule la un peu, stocke des trucs et fais des requêtes SQL…
  • utiliser des outils minimalistes qui font une partie du boulot pour toi.

    • tu auras découvert a l'étape d'avant que gérer les echanges HTTP à la main, c'est super chiant et impraticable parce que le protocole est gloutonnesque et beaucoup plus complexe qu'il n'en a l'air en pratique, expérimente avec une "petite" surcouche comme wsgi ou flask pour comprendre ce que ça fait pour toi.
    • tu te sens de gérer ta base de données à la main avec du SQL ? OK pourquoi pas, ça se fait, mais jette quand même un oeil par curiosité à un ORM minimaliste (par exemple PeeWee) et regarde comment ça rend ton code plus lisible et plus safe.
    • T'en as marre de générer tout le html de façon ad-hoc dans ton code parce que tu trouves pas ça maintenable ? Jette un oeil à un moteur de templates comme Jinja2.

À la fin tu auras compris à quoi sert chaque outil, comment il fonctionne, ce qu'il fait pour toi et tout ça de façon incrémentale. Et surtout l'architecture basique de ton blog sera devenue intuitive.

Tu te seras aussi aperçu que le moindre service web utilisable par un humain (comme le plus simplissime de tous les blogs) est en réalité un système foutrement complexe, ce qui explique aussi pourquoi tu galères en ce moment à chercher un angle d'attaque.

+6 -0

Est-ce qu'un article comme celui-ci http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ t'aide à comprendre ?

J'ai l'impression que la question que tu poses est une évidence pour beaucoup d'entre nous, mais qu'aucun d'entre nous n'a vraiment envie de pondre un pavé sur le forum pour expliquer comment ça fonctionne.

(Aussi, je sais pas si y'a un malentendu ou pas, mais c'est pas une question de local. Tu peux pas vraiment développer un blog en local sans avoir un serveur http en local pour ne pas faire les choses à l'aveugle.)

+1 -0

Ceci dit si la finalité est de faire un site web, tu n'as pas à traiter tout ça toi même manuellement, tu va utiliser un framework web comme Django ou Flask.

Ce dernier, comme bottle, est relativement petit et facile à comprendre. Hésite pas à regarder les sources pour voir comment ça se passe.

En fait je pense que le PO cherche surtout à comprendre les bases pour concevoir un système distribué en réseau, et pas specifiquement à réaliser un site web ou un blog.

Le truc c'est que très peu de tutoriels de programmation ou de réseaux font vraiment le lien entre "voilà comment on crée une socket TCP, pour faire de l'UDP utilisez tel flag, BLAM !" et "le protocole http sert à faire des services web". Pour le web spécifiquement ça commence toujours par "installez WAMP ou Django ou Rails ou Symphony et écrivez telle ligne dans tel fichier et magie ! Ça marche !".

Le problème spécifique de HTTP c'est que ces introductions old-school ne donnent absolument pas les billes pour comprendre une application moderne qui ne se contente plus de faire du requête/réponse, mais qui va utiliser des extensions bâtardes comme le long polling ou les websockets. Ou s'ils s'y essayent ça reste hyper directif.

Pour bien faire, il faudrait introduire le web non pas sur un vrai-faux exemple minimaliste d'IHM comme un blog, mais plutôt sur un service réellement minimaliste, comme une API JSON, et seulement après, servir des pages statiques (qui ont des ressources extérieures complexes) et d'élaborer par la suite.

Tout de suite c'est moins sexy que d'appâter le débutant avec un "crée ton propre site web rien qu'à toi", mais ça permettrait de transmettre des connaissances tellement plus durables et moins sujettes à la volatilité des technos web…

+2 -0

Salut,

Pour l'exemple d'HTTP, tu peux par exemple regarder des architectures existantes et comprendre pourquoi elles sont populaire.

Je parle par exemple de REST qui pour le développement d'API est juste essentiels de nos jours ! :)

J'ai aussi eu du mal à comprendre le tout au début, c'est normal, on ne connais pas tout de suite.

Sinon, bonne chance pour ton site (pédagogique?) mais n'hésite pas après à utiliser un framework, c'est bien plus agréable à utiliser que de réinventer la roue à chaque fois.

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