CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question sur le backend d'une application

barney_stinson2
barney_stinson2
Niveau 7
14 septembre 2016 à 21:01:40

Bonjour à tous,

Depuis cet été je me suis mis de façon sérieuse à la programmation grâce à mon stage où j'ai dû développer sous Android studio. Pour préparer mon mastère de l'année prochaine j'ai pour objectifs d'apprendre plusieurs langages (Java que je commence à maitriser un peu, MySQL, et sûrement PHP pour le backend) et pour éviter d’enchaîner les cours sans pratique, je me suis donné pour objectif de créer un clone de snapchat (seulement la partie échange de photos sans suppression pour le moment)

Seulement après avoir pu coder le frontend en java je suis bloqué sur le backend, je ne sais pas du tout par quoi commencer ni comment m'y prendre. J'ai lu un peu partout qu'il était pratique d'utiliser Google cloud platform (ce que snap utilise) mais j'avoue ne rien comprendre du tout, je suis perdu avec la multitude de services qu'ils proposent, entre l'app engine, le cloud storage (et j'en passe).
J'ai eu beau cherché un peu partout je n'ai pas trouvé de tuto sur le développement backend d'une appli avec serveur + base de données, et la documentation de GAE ne parle que de webapp, ce qui n'est pas vraiment le cas de snapchat, qui ne passe pas par un site internet (si j'ai bien tout compris).

Que me conseillez vous donc ? De continuer à apprendre le PHP et Mysql et ensuite d'essayé d'appliquer mes connaissance pour créer l'appli, ou bien puis-je créer un backend sous google à mon niveau ? puisque j'ai pu lire un peu partout que c'était beaucoup plus facile que de tout faire soit même.

Dans tous les cas j'apprendrai PHP et SQL, mais j'avoue que le google cloud platform m'intrigue et j'aimerais apprendre à utiliser le service.

Merci :)

godrik
godrik
Niveau 30
14 septembre 2016 à 21:05:06

Si j'etais toi, je commencerai par faire ca dans PHP/mySQL ou un truc du genre. Ca devrait t'aider a comprendre le fonctionnement de ce genre de service. Ensuite passer a un service ecrit par quelqu'un d'autre devrait etre plus simple.

barney_stinson2
barney_stinson2
Niveau 7
14 septembre 2016 à 21:13:09

Ok c'est donc faisable de faire l'application avec seulement java php et mysql donc ? (sans prendre en compte les problèmes de sécurité etc...)
Et est-ce que ça demanderait une grande maîtrise des deux concepts ou bien quelqu'un qui a suivi un cours à la openclassroom pourrait y arriver ? :hap:

godrik
godrik
Niveau 30
14 septembre 2016 à 21:16:48

Ca fait des annees que je n'ai pas regarder les cours OCR. Mais de memoire, c'etait pas terrible. Cependnat, en l'occurence ca a l'air plutot simple comme probleme. (Passer a l'echelle est un autre probleme, mais un prototype devrait etre simple.)

_Anjou
_Anjou
Niveau 9
15 septembre 2016 à 06:39:08

Un clone de Snapchat, Xamarin pour le client (C#) et une API javascript qui tourne sur Azure.
https://github.com/pierceboggan/Moments

Après, c'est propre à Azure donc ça varie si tu utilises Google App Engine. J'avais aussi essayé de faire un clone Snapchat en "m'aidant" :hap: de son code mais j'ai vite abandonné. Tu peux y jeter un oeil mais si tu ne comprends rien, je te conseille de pas trop t'attarder dessus.

Je ne sais pas trop ce que tu comptes faire de l'application une fois finie mais tu n'es pas forcément obligé de passer par le service de Google. Tu peux très bien faire une API en PHP (oui c'est possible avec le cours d'Open Classroom, quelques recherches Google et de la patience) qui tourne sur ta machine. C'est probablement mieux, tu risques de passer beaucoup de temps à comprendre les différents service que Google App Engine propose, surtout si tu n'y connais pas grand chose en backend, plutôt que de programmer.

Ce que je te conseille donc c'est :

  • Te renseigner sur les API REST (c'est ce que Snapchat et la plupart des applications mobiles utilisent). Ici tu as une description de leur API (plus très à jour mais ça te donnera une idée) http://gibsonsec.org/snapchat/fulldisclosure/
  • Faire ton API en PHP/MySQL qui tourne en local, donc les images, la base de données,... tout sera sur ton PC.

Ca sera déjà une bonne étape de réussie.

  • Une fois tout ça fait, si tu es partant, essayer de déployer sur le Google App Engine.

(Notes qu'il n'y a pas que le service de Google, il me semble que Snapchat l'utilise car ils ont eu une promo mais tu peux aussi regarder du côté d'Amazon AWS et Microsoft Azure)

barney_stinson2
barney_stinson2
Niveau 7
15 septembre 2016 à 15:09:54

Merci pour le lien _Anjou c'est super intéressant :-d
Je ne comprends pas tout évidemment mais ça me sera très certainement utile par la suite. En fait si je veut créer un clone de snap c'est parce que j'ai une idée d'application qui aurait comme base le partage de photo, du coup je me dis que si je suis capable de reproduire les fonctionnalités de snap avec plus ou moins de réussite je pourrais faire mon appli beaucoup plus facilement et rapidement ensuite. Bien sûr le but reste d'en apprendre le plus possible sur la programmation, je ne fais pas tout ça juste pour créer une application :-)))

C'est ce que je compte faire en effet, je préfère évité de perdre trop de temps sur GAE (ou AWS) pour le moment.
Par contre j'ai lu partout ce mot "API" et j'ai encore beaucoup de mal à comprendre ce que c'est. En gros cela revient-il à une classe sous java que l'on peut appeler pour effectuer une action ? Par exemple il y aurait une API pour uploader une photo, une pour l'encryper etc...
Ou bien est-ce un programme qui regroupe toutes les fonctionnalités de l'appli ?

_Anjou
_Anjou
Niveau 9
15 septembre 2016 à 21:15:09

Une API c'est une sorte d'interface pour faciliter la communication entre deux programmes.
Comme tu l'as dit, tu as des API en Java pour Android par exemple. Pour interagir avec la caméra d'un téléphone, tu as à disposition une API pour gérer la prise de photo/vidéo avec des méthodes très simple à mettre en place plutôt. Ainsi, tu peux prendre une photo avec une simple méthode comme takePicture (c'est juste pour l'exemple) plutôt que d'aller chercher trop loin. Ca permet à ton application d'interagir avec le système d'exploitation de façon très simple.

Une bonne analogie serait celle d'un restaurant. Tu as le client, le serveur et la cuisine(avec les cuisinier, etc.) Le client, tout ce qui l'intéresse c'est d'avoir son repas. Il lit la carte et trouve son menu, il passe la commande au serveur (API) qui va en cuisine et dire au cuisinier. Le cuisinier prépare le repas mais ni le client ni le serveur (serveur de restaurant, ne confond pas avec un serveur informatique, pareil pour le client) ne sont intéressés par la façon dont est préparé le repas. Une fois le repas prêt, le serveur l'amène au client. Le client a passé sa commande via le serveur(API), qui agit comme messager, qui a ensuite communiqué la commande au cuisinier(système), qui l'a exécutée, transmis la réponse au serveur(API) qui l'a retournée au client.

Après tu as différentes sortes d'API, celles qui agissent sur l'OS par exemple, avec certaines classes Java et les API Web.

Un exemple concret avec Paypal. Tu veux implémenter un mode de paiement sur ton application avec Paypal. L'utilisateur entre sa carte de crédit sur ton application et cliques sur "Payer". Ton application envoies une requête à l'API Paypal avec les informations de paiement (carte de crédit, vendeur, montant), l'API transmet le message au système de Paypal, le système traite la requête d'une façon ou d'une autre, ça ne t'intéresse pas, contacte l'API une fois le travail terminé et l'API retourne une réponse à ton application. Par exemple : Erreur, carte de crédit non valide ou Succès, le montant a été prélevé.
Ainsi, avec une simple requête, tu as mis en place le système de paiement plutôt que d'implémenter toi même un moyen de stocker les cartes, de les prélevées, etc.

J'espère avoir été clair, sinon tu peux regarder cette vidéo : https://www.youtube.com/watch?v=s7wmiS2mSXY (c'est de là que vient l'exemple du restaurant)

Donc ce qui t'intéresse c'est une API de type REST : regardes cette vidéo et si tu as des questions, hésite pas :)
https://www.youtube.com/watch?v=7YcW25PHnAA

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment