Questions de débutant ... (liées à  l'interaction entre 1 Appli et 1 BD)

macjeremmacjerem Membre
novembre 2010 modifié dans Apple Developer Programs #1
Bonjour,

Je suis nouveau sur le forum, car j'avais envie d'apprendre à  développer une appli pour Iphone / Ipad. Je n'ai pas encore d'idées ou de sujets de développement, mais j'ai qd même envie de savoir...

Pour me situer, je maà®trise déjà  bien le php et MySQL (et la gestion des bases de données en général).
En revanche, peu d'exp en C... et langage compilable.

J'ai déjà  lu la doc suivante : "Become an Xcoder francais 20v1_0.pdf".


Et j'aurais des questions sur la consultation des données d'une base de données depuis une application Iphone/Ipad.


J'ai lu le tutorial fort intéressant pour un débutant qui se trouve ici : http://ressources.mediabox.fr/tutoriaux/apple/xcode/mysql


Je vois en Prérequis : Mac Intel, Snow Leopard, avoir installé le package Developer

1/ Cette installation se fait sur Windows ? ou seulement sur Linux / Unix ?

2/ C'est quoi exactement le "Mac Intel, Snow Leopard" ? Est ce l'équivalent du Xcode"Apple's IDE ?
Puis je faire tout mon dév dans l'environnement de travail Xcode ?


3/ Quand vous parlez d'installer une base MySQL... c'est l'installer dans l'environnement Cocoa ?
Et quel intérêt d'installer une BD sur l'environnement Cocoa, car j'ai cru comprendre que l'appli Iphone n'allait pas lire directement la BD, mais un fichier XML / JASON, généré par exemple par un fichier PHP qui aura exécuté une req sur la BD elle même.

4/ J'ai lu que pour les appli Ipad / Iphone, il fallait utiliser SQLite ?  Fait on la même chose avec MySQL ?

5/ Savez vous si je pourrais trouver un complément de tutorial m'indiquand comment réaliser une simple page affichant le contenu d'une table de base de données (répondant donc à  une req SELECT ... FROM ... WHERE ...) ?
En gros, mon appli va envoyer une req via une URL, appelant donc un fichier php (contenant la req SQL)... et ce fichier php va me générer mon JASON ou XML. Mais à  ce moment là , le fichier JASON ou XML se trouve sur le serveur Web, n'est ce pas ? ... comment et où le renvoyer vers l'appli Iphone / Ipad ?


6/ J'ai lu : "MySQL est installé sur le poste en local. Le serveur MySQL est lancé et testé dans le Terminal."
Question peut-être un peu bête !! : Mon appli Cocoa peut elle communiquer avec une base MySQL installé avec EasyPhp ?  ... je présume que non,


Je vous remercie par avance, si vous aviez des éléments de réponse à  me proposer.


Cdt,
Jérémie

Réponses

  • macjeremmacjerem Membre
    17:54 modifié #2

    En lisant d'autres articles, je note qu'en fait il faut extraire de la base de données les données dont on a besoin sous forme d'une fichier XML, et l'exploiter pour alimenter un fichier PLIST.

    Euh... c'est quoi exactement ce fichier PLIST ?

    Et c'est également cette technique que l'on utilise si notre req renvoie plusieurs 100aines / milliers de lignes ?

    N'est il vraiment pas possible de se brancher directement sur la base de données ? et pourquoi ?



  • CéroceCéroce Membre, Modérateur
    novembre 2010 modifié #3
    Bonjour à  toi,

    dans 1290013615:

    Je vois en Prérequis : Mac Intel, Snow Leopard, avoir installé le package Developer
    1/ Cette installation se fait sur Windows ? ou seulement sur Linux / Unix ?

    On ne peut développer pour iOS qu'avec un Mac avec processeur Intel.


    dans 1290013615:

    Puis je faire tout mon dév dans l'environnement de travail Xcode ?

    Oui, c'est fait pour.

    dans 1290013615:

    3/ Quand vous parlez d'installer une base MySQL... c'est l'installer dans l'environnement Cocoa ?

    Non, c'est l'installer en local sur le Mac... j'y reviens.

    dans 1290013615:

    4/ J'ai lu que pour les appli Ipad / Iphone, il fallait utiliser SQLite ?  Fait on la même chose avec MySQL ?


    Oui et non. On consulte la base et on la remplit en utilisant des requêtes SQL.
    Par contre, la BdD est forcément locale (ça sert à  enregistrer les Documents, si tu veux).

    dans 1290013615:

    6/ J'ai lu : "MySQL est installé sur le poste en local. Le serveur MySQL est lancé et testé dans le Terminal."
    Question peut-être un peu bête !! : Mon appli Cocoa peut elle communiquer avec une base MySQL installé avec EasyPhp ?  ... je présume que non,

    EasyPHP n'existe pas sous Mac, on utilise plutôt MAMP, mais c'est le même principe (installation locale d'Apache et MySQL simplifiée).
    Comme la base est locale, on peut l'attaquer avec des requêtes SQL.

    dans 1290013615:

    7/ Une dernière question IMPORTANTE : une fois l'application terminée, la base de données se situe où ? elle est embarquée dans l'appli elle-même ? ou bien pouvons-nous la stockée sur un serveur web ?  ... et donc, l'appli Iphone / Ipad, peut-elle aller lire des données d'une base MySQL utilisée par un site web ?


    En fait, les hébergeurs sérieux empêchent, pour des raisons de sécurité, de se connecter à  une base mySQL depuis l'extérieur.
    Du coup, il est impossible d'attaquer la BdD par des requêtes SQL avec une appli iOS.
    La solution est de prévoir un protocole d'échange en http (connexion à  une URL, et le serveur renvoie les données sous forme de XML ou de JSON).
  • macjeremmacjerem Membre
    17:54 modifié #4
    Bonjour et merci pour votre réponse.

    En fait, j'avais modifié mon message initial au moment même où vous m'écriviez votre réponse.


    On ne peut développer pour iOS qu'avec un Mac avec processeur Intel.



    Je ne connais pas du tout l'environnement MAC.
    Je possède actuellement un ordi portable avec Windows Vista.

    Vous voulez dire que je ne peux rien faire avec Windows ?
    XCode ne peut s'installer sur un Windows Vista par ex ?
  • muqaddarmuqaddar Administrateur
    17:54 modifié #5

    Vous voulez dire que je ne peux rien faire avec Windows ?
    XCode ne peut s'installer sur un Windows Vista par ex ?


    Non. Absolument pas.
    Il faut obligatoirement un Mac pour programmer pour iPhone.
  • Eric P.Eric P. Membre
    17:54 modifié #6
    dans 1290016181:

    ...
    Je ne connais pas du tout l'environnement MAC.
    ...


    Bonjour,

    Oui et d'ailleurs, c'est Mac, iPhone, iPad, iOS, Xcode
  • macjeremmacjerem Membre
    novembre 2010 modifié #7
    Merci pour vos réponses successives.

    Non. Absolument pas.
    Il faut obligatoirement un Mac pour programmer pour iPhone.


    Je ne suis pas sur de bien comprendre.
    Puis-je faire de la programmation iOS avec Xcode SUR WINDOWS pour développer des applications pour iPhone / iPad ou pas ?
    (ma question était : XCode NE peut s'installer sur un Windows Vista par ex ? )

    Oui et d'ailleurs, c'est Mac, iPhone, iPad, iOS, Xcode


    Que voulez vous dire ?



    En installant Xcode, je possède tout l'environnement de dév pour développer des applications pour iPhone / iPad, n'est ce pas ?
  • muqaddarmuqaddar Administrateur
    17:54 modifié #8
    Xcode ne s'installe pas sur Windows.
    C'est un environnement de développement pour les Mac.

    Donc, je réitère mes propose, tu ne peux ni installer Xcode ni programmer pour iPhone et iPad avec Windows. Je peux pas être plus clair...
  • macjeremmacjerem Membre
    17:54 modifié #9
    Ok ok...

    et en installant un client UNIX (tel que CygWin) ? ... qu'en pensez vous ?

  • DrakenDraken Membre
    novembre 2010 modifié #10
    dans 1290024352:

    Puis-je faire de la programmation iOS avec Xcode SUR WINDOWS pour développer des applications pour iPhone / iPad ou pas ?

    Non, ce n'est pas possible. Il te faut un MacIntosh. Ce n'est pas compatible avec Windows parce que .. euh .. probablement pour forcer les développeurs à  acheter du Mac.  :(

    J'ai eu la même surprise que toi, l'an dernier. Au final, j'ai dus acheter un Mac d'entrée de gamme à  600 euros pour me plonger dans le développement iPhone.

    dans 1290024352:

    En installant Xcode, je possède tout l'environnement de dév pour développer des applications pour iPhone / iPad, n'est ce pas ?

    Pour créer des applications iPhones, il faut installer le SDK iPhone qui est fournis gratuitement par Apple. Il contient Xcode et les bibliothèques spécifiques à  iOS.

    ATTENTION : Cet environnement gratuit ne permet pas de tester les applications sur un iPhone/iPod Touch/iPad, juste sur un simulateur "émulant" un device physique. Cet émulateur est fourni avec le SDK iPhone.

    Pour installer et tester les applications sur un vrai iPhone/iPod Touch/iPad, il faut souscrire au programme de développeur iPhone (99 $/an, environ 70 €). Cela donne également le droit de soumettre les applications sur l'AppStore.

  • macjeremmacjerem Membre
    17:54 modifié #11
    Merci Draken pour l'info.

    Aie ... je ne te cache pas ma déception !!!
    Ne pas pouvoir dév une appli parce que l'on est sur du Windows !!!

    Tant pis.
  • 17:54 modifié #12
    dans 1290026359:

    Merci Draken pour l'info.

    Aie ... je ne te cache pas ma déception !!!
    Ne pas pouvoir dév une appli parce que l'on est sur du Windows !!!

    Tant pis.


    J'imagine pas le résultat si ça avait été possible.
  • DrakenDraken Membre
    17:54 modifié #13
    Plus d'un million d'applications sur l'AppStore ? :o

  • neospiritneospirit Membre
    17:54 modifié #14
    Bonjour,

    je ressors ce sujet car je m'interroge toujours sur l'emploi de la bonne méthode à  adapter pour communiquer entre une application iPhone et une BDD MySQL sur un serveur distant.

    Dans mon cas je souhaite juste recevoir la valeur de 2 variables, les traiter avec l"application puis mettre à  jour ces 2 valeurs dans la BDD sur le serveur.

    Est-il vraiment nécessaire de passer par un webservice ? Ou une simple UIWebView avec NSURLRequest suffiraient ?

    Merci

    neospirit
  • CéroceCéroce Membre, Modérateur
    décembre 2010 modifié #15
    Afficher une webview n'est certes pas compliqué, mais comment vas-tu faire pour trouver les bons champs à  remplir et valider le formulaire ?

    Dans le cas que tu présentes, un webservice n'est pas forcément complexe à  concevoir:

    [tt]http://www.monsite.com/monscript.php?valeur1=toto&valeur2=tata[/tt]

    L'appel à  cette URL est trivial avec NSURLRequest.
    ça devient plus compliqué quand on veut sécuriser la communication.
  • neospiritneospirit Membre
    17:54 modifié #16
    dans 1293728550:

    Afficher une webview n'est certes pas compliqué, mais comment vas-tu faire pour trouver les bons champs à  remplir et valider le formulaire ?

    Dans le cas que tu présentes, un webservice n'est pas forcément complexe à  concevoir:

    [tt]http://www.monsite.com/monscript.php?valeur1=toto&valeur2=tata[/tt]

    ça devient plus compliqué quand on veut sécuriser la communication.


    Si c'est juste ça l'instruction pour un webservice  alors ça me va. Je pensais que c'était beaucoup plus compliqué. Limite, même pas besoin de faire d'UIWebView caché. Je peux directement appeler cette instruction dans une classe ou un ViewController pour récupérer les valeurs.

    En plus je n'ai nullement besoin de sécurité.
  • neospiritneospirit Membre
    17:54 modifié #17
    Bonjour,

    j'ai essayé mon webservice via firefox sur pc et ça fonctionne !! Je peux envoyer des valeurs vers ma BDD MySQL et les lire sur une page web classique. J'ai créé un fichier .PHP avec ma requete.

    Maintenant si je transpose cela dans XCode, je crée mon url :

    NSString *mysqlUrl = [NSString stringWithFormat: @&quot;http://www.monsite.fr/get.php?id=%d&quot;, id];<br />
    


    Je suppose que l'application enverra bien cet url mais par contre comment récupérer les valeurs suite à  la requête qui a été envoyée ?

    Là  je vois pas trop bien.

    neospirit
  • LeChatNoirLeChatNoir Membre, Modérateur
    17:54 modifié #18
    Slt,
    ben tu alloue une NSUrlConnection et tu lances le téléchargement. Tu implémentes les méthodes dans le delegate de la connection et ca va te récupérer les données.
  • pantergapanterga Membre
    17:54 modifié #20
    Bonjour
    J'ai bien compris que pour dev sur Ipad et Iphone il faut avoir un mac  , j'en ai un Macpro 500go  Bla bla,  1 Ipad 64go , 1 Iphone 3GS    Voilà  le décor est planté 

    Maintenant le plus important  :
    je connais bien l'univers Visual studio 8 pour dev sur PPC

    Mais je voudrais savoir quels sont les outils minimum pour développer sur mac
    (Produit, Version , coût , où se les procurer , bouquins etc ...)

    Si quelqu'un (ou quelqu'une) peut me briffer la dessus , je lui en serais reconnaissant  (presque éternellement...)

    PS : J'ai cru lire que pour dev sur Ipad , il faut s'inscrire à  l'année sur un site ??? je ne veux que dev des applis pour moi ...
    est ce vrai ?

    Merci tout plein de vos réponses  H
  • muqaddarmuqaddar Administrateur
    17:54 modifié #21
    Pour développer sur iPhone et iPad ou n'importe quel appareil utilisant iOS, il faut prendre une licence chez Apple de 79€ TTC/an.

    Tu auras accès à  toute la doc Apple, les SDK à  télécharger, les outils de dev en avant-première, et bien sûr la possibilité de distribuer.
    Ensuite, des bouquins, il y en a à  la pelle maintenant, sur Objective-C ou le développement iOS.
  • pantergapanterga Membre
    17:54 modifié #22
    Merci de ta réponse plus que rapide  et sinon question logiciel de dev  : avec les 79 € je pourrais telecharger un logiciel ?
    sinon quel est le meilleur (et simple) ?  merci
  • DrakenDraken Membre
    17:54 modifié #23
    Tu trouveras la réponse à  toutes tes questions, ici :

    http://developer.apple.com/devcenter/ios/index.action

  • zoczoc Membre
    17:54 modifié #24
    C'est simple, il n'existe qu'un seul environnement de développement: Xcode, qui est gratuit et que tu as déjà  sur le DVD d'installation fourni avec ton Mac (sans doute un peu ancien, la dernière version est accessible gratuitement sur http://developer.apple.com) ;)


    Les 79€ par an te permettront d'installer tes propres applications sur ton iBidule. Il est par contre possible de développer gratuitement, mais les applications ne pourront pas être installées, elle pourront uniquement être testées sur le simulateur.



  • En fait, les hébergeurs sérieux empêchent, pour des raisons de sécurité, de se connecter à  une base mySQL depuis l'extérieur.




     


    Bonjour


     


    Je suis un peu surpris.


     


    Cela veut dire qu'il n'est pas sérieux de créer une application mac, par exemple pour administrer une base de donnée d'un serveur SGBD externe ?


    Quid de PgAdmin qui permet d'administrer un serveur PostgreSQL à  distance ?


     


    Merci.

  • AliGatorAliGator Membre, Modérateur
    Non en effet ce n'est pas une bonne pratique question sécurité (à  part si tu ouvres l'accès uniquement à  une IP fixe donnée par exemple, et encore), il est préférable que la base et le serveur HTTP soient sur le même serveur et exposer le contenu de la base via un WebService. Ou avoir un serveur HTTP pour les WebServices sur un autre serveur que celui où est la base, mais ne donner accès à  la base qu'à  ce serveur HTTP, par restriction d'IP ou mieux encore, par l'infrastructure réseau côté hébergeur qui fait que le serveur où est la base n'est pas accessible sur le net par une IP publique mais seulement dans un réseau local, etc.


  • Non en effet ce n'est pas une bonne pratique question sécurité (à  part si tu ouvres l'accès uniquement à  une IP fixe donnée par exemple, et encore), il est préférable que la base et le serveur HTTP soient sur le même serveur et exposer le contenu de la base via un WebService. Ou avoir un serveur HTTP pour les WebServices sur un autre serveur que celui où est la base, mais ne donner accès à  la base qu'à  ce serveur HTTP, par restriction d'IP ou mieux encore, par l'infrastructure réseau côté hébergeur qui fait que le serveur où est la base n'est pas accessible sur le net par une IP publique mais seulement dans un réseau local, etc.




     


    Pourrais-tu en dire plus sur la "question sécurité" ?


    Quels sont les risques et où sont-ils dans la chaà®ne client-serveur ?


     


    En ce qui me concerne, il s'agit d'un client (application mac) qui gère une base de données d'un serveur Postgresql externe via le lan, en utilisant la bibliothèque libpq.dylib pour la connexion et la manipulation des données de la base.


     


    Il existe des fonctions ssl dans cette bibliothèque. Est-ce que leur utilisation pourrait assurer un niveau acceptable de sécurité de ton point de vue ?

  • AliGatorAliGator Membre, Modérateur


    Pourrais-tu en dire plus sur la "question sécurité" ?

    Quels sont les risques et où sont-ils dans la chaà®ne client-serveur ?

    Par où commencer ? Le risque d'injection SQL est la plus grande, mais aussi l'escalade de sécurité, même non-cloisonnement (tant de l'authentification que des opérations réalisables), attaque Man in the Middle... recherche sur le net, je vais pas réécrire ici tous les articles qui en parlent.


    Maintenant si ce n'est pas ouvert sur Internet mais restreint sur un réseau local (LAN) et que tu utilises une connexion sécurisée type SSL (à  condition de l'utiliser correctement, entre autres utiliser des certificats signés par une CA et non pas auto-signés, et vérifier leur signature, sinon ça sert à  rien...) ça restreint le risque.
  • machine Ai (osx, application cliente)    <=Internet=>    Machine B (ubuntu, serveur PostgeSQL)


     


    Dans la doc PostgreSQL 9.3, il existe pas mal de choses pour "sécuriser" la connexion entre un client et le serveur.


    17.7. Empêcher l'usurpation de serveur


    17.8. Options de chiffrement


    17.9. Connexions tcp/ip sécurisées avec ssl


    17.10. Connexions tcp/ip sécurisées avec des tunnels ssh tunnels


     


    Est-ce que ça vaut la peine de passer du temps à  comprendre et à  mettre en place ces techniques ?


    J'utilise déjà  l'authentification basique par md5.


     


     


  • AliGatorAliGator Membre, Modérateur


    machine Ai (osx, application cliente) <=Internet=> Machine B (ubuntu, serveur PostgeSQL)


    Dans la doc PostgreSQL 9.3, il existe pas mal de choses pour "sécuriser" la connexion entre un client et le serveur.
    17.7. Empêcher l'usurpation de serveur
    17.8. Options de chiffrement
    17.9. Connexions tcp/ip sécurisées avec ssl
    17.10. Connexions tcp/ip sécurisées avec des tunnels ssh tunnels


    Est-ce que ça vaut la peine de passer du temps à  comprendre et à  mettre en place ces techniques ?

    Clairement, oui et 100x oui !!


    Surtout encore + si comme tu le dis dans ton schéma ça passe par internet (je croyais que tu avais parlé de LAN dans un post précédent ?! Faudrait savoir ^^)

    J'utilise déjà  l'authentification basique par md5.

    qui n'est en aucun cas une autentification sécurisée puisque le mot de passe circule quasi en clair (un MitM peut intercepter le md5 et le rejouer à  volonté donc c'est du coup d'une simplicité enfantine de se faire passer pour quelqu'un d'autre dans ces conditions : même pas besoin de connaà®tre le mot de passe d'origine, en plus ! Suffit d'envoyer le même md5 sur le réseau et hop on se fait passer pour l'admin de la BDD sans même avoir eu à  déchiffrer le mdp !
  • Bon, donc au boulot...


     


    Merci pour tout, en particulier de ta patience

Connectez-vous ou Inscrivez-vous pour répondre.