Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Redacteur
    Inscrit en
    juin 2016
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Redacteur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2016
    Messages : 1 035
    Points : 27 825
    Points
    27 825
    Par défaut PostgREST : un serveur Web autonome qui transforme une base de données PostgreSQL en une API RESTful
    PostgREST : un serveur Web autonome qui transforme une base de données PostgreSQL
    directement en une API RESTful

    PostgREST est un serveur Web autonome qui transforme votre base de données PostgreSQL directement en une API RESTful. Les contraintes structurelles et les autorisations dans la base de données déterminent les points de terminaison et les opérations de l'API. Sa version 6.0.2 a été publiée en août dernier avec de nouveaux ajouts et quelques modifications. PostgREST permet d'exposer une base de données PostgreSQL sous forme d'API REST directement consommables par des applications mobiles, des portails Web ou bien des partenaires.

    PostgREST sert une API entièrement RESTful à partir de tout type de base de données PostgreSQL existante. Selon l’équipe de développement, PostgREST fournit une API plus propre, plus conforme aux normes et plus rapide que celle que vous êtes susceptible d'écrire à partir de zéro. Elle estime que son utilisation est une alternative à la programmation manuelle CRUD. PostgREST est un middleware open source et les API exposées par PostgREST sont conforme à la spécification OpenAPI (anciennement connue sous le nom de spécification Swagger).

    Selon sa documentation, il gère nativement les dépendances entre les tables de votre base de données, ce qui vous permet au travers d'une simple requête REST de récupérer des données provenant d'une jointure entre deux tables. PostgREST serait très rapide avec un temps de réponse inférieur à la seconde pour jusqu'à 2000 demandes/seconde sur le niveau gratuit Heroku. « Si vous êtes habitué aux serveurs écrits dans des langages interprétés, préparez-vous à être agréablement surpris par les performances de PostgREST », explique l’équipe.

    Trois facteurs contribuent cette vitesse selon l’équipe. Tout d'abord, le serveur est écrit en Haskell à l'aide du serveur HTTP Warp (un langage compilé avec des threads légers). Ensuite, il délègue autant de calculs que possible à la base de données, y compris la sérialisation des réponses JSON directement dans SQL, la validation des données, etc. Enfin, il utilise la bibliothèque Hasql pour garder un pool de connexions à la base de données, le protocole binaire PostgreSQL et reste sans état pour permettre une mise à l'échelle horizontale.

    Nom : logo.png
Affichages : 57459
Taille : 187,0 Ko

    PostgREST gère l'authentification (via JSON Web Tokens) et délègue l'autorisation aux informations de rôle définies dans la base de données. Cela garantit qu'il n'y a qu'une seule source déclarative de vérité pour la sécurité. En traitant avec la base de données, le serveur assume l'identité de l'utilisateur actuellement authentifié, et pour la durée de la connexion ne peut rien faire que l'utilisateur lui-même ne pourrait pas faire. D'autres formes d'authentification peuvent être construites sur la primitive JWT. Vous pouvez obtenir plus d'informations dans la documentation.

    Lorsqu’il s’agit de l’intégrité des données, plutôt que de s’appuyer sur un ORM (Object Relational Mapper) et sur un codage impératif personnalisé, ce système impose de mettre des contraintes déclaratives directement dans votre base de données. Par conséquent, aucune application ne peut corrompre vos données (y compris votre serveur API). PostgREST expose l'interface HTTP avec des sauvegardes pour éviter les surprises, notamment l'application de requêtes PUT idempotentes. Autrement dit, il n'y a pas d'ORM impliqué.

    La création de nouvelles vues se produit en SQL avec des implications connues en matière de performances. Un administrateur de base de données peut désormais créer une API à partir de rien, sans programmation personnalisée. Pour certains, PostgREST est également une alternative intéressante à une base de données NoSQL ou GraphQL nativement exposée en API si vous avez besoin de garder un modèle relationnel. Ils trouvent dommage que ce middleware ne soit pas disponible en standard dans les dépôts de package des grandes distributions Linux.

    Sources : PostgREST, GitHub

    Et vous ?

    Qu'en pensez-vous ?

    Voir aussi

    Microsoft fait l'acquisition de Citus Data l'extension qui transforme PostgreSQL en une base de données distribuée

    PostgreSQL 12 est disponible et apporte des améliorations sur la performance des requêtes, cette version introduit les « colonnes calculées » et supporte les colonnes générées stockées

    Depuis 20 ans, PostgreSQL aurait mal utilisé fsync(), compromettant la cohérence des données, des solutions ont été proposées au FOSDEM 2019
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    août 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : août 2019
    Messages : 20
    Points : 46
    Points
    46
    Par défaut
    On utilise deja ceci sur Oracle, c'est tres pratique et ca permet d'eviter a coder pas mal de code bete type CRUD sans aucune valeur ajoutée cote WS/API (C# dans notre cas).
    Ca fait toujours une couche de moins a coder dans nos API REST et bonne alternative pour mettre a dispo des services en 0-dev.

    A tester donc sur PostGreSql.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 138
    Points : 399
    Points
    399
    Par défaut
    C'est définitivement intéressant, cependant j'ai toujours eu des difficultés à exprimer certain types de contraintes.

    Par exemple avec CHECK on ne peut faire de requête pour vérifier une condition complexe. De fait j'ai donc souvent une première couche d'intégrité en BDD et une autre côté applicatif.

    Une autre possibilité serait donc à mapper une URL vers une procédure stockée plutôt que la table en elle-même qui peut effectuer les contrôles complémentaires.

    Enfin l'authentification est souvent plutôt côté applicatif de nos jours, ne serait-ce que pour faire des pools de connexions. D'après ce que dit cet article, je ne sais pas si l'authentification proposé fonctionne comme une authentification applicative ou s'il faut passer par la gestion des utilisateurs et rôles de la base, ce dernier serait gênant sur le type d'application que je développe et la complexité de la gestion des droits qui en résulte.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 503
    Points : 2 130
    Points
    2 130
    Par défaut
    Citation Envoyé par cecedu26 Voir le message
    On utilise deja ceci sur Oracle, c'est tres pratique et ca permet d'eviter a coder pas mal de code bete type CRUD sans aucune valeur ajoutée cote WS/API (C# dans notre cas).
    Ca fait toujours une couche de moins a coder dans nos API REST et bonne alternative pour mettre a dispo des services en 0-dev.

    A tester donc sur PostGreSql.

    Question de néophyte:

    N'y-a-t-il pas un risque plus élevé de piratage en suppriment une couche REST et en connectant directement la base de données au réseau?

    Merci pour vos réponses d'experts

  5. #5
    Membre éprouvé
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : juin 2004
    Messages : 830
    Points : 1 140
    Points
    1 140
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Question de néophyte:

    N'y-a-t-il pas un risque plus élevé de piratage en suppriment une couche REST et en connectant directement la base de données au réseau?

    Merci pour vos réponses d'experts
    Il y a probablement un protocole pour authentifier les requêtes. Je n'utiliserais pas ce truc pour faire des entrées, mais pour des sorties uniquement. mais pour une application personnelle, ça pourrait-être utile pour quelqu'un qui ne connais aucun truc comme Rails.

    Mais ce que j'en déduis, c'est que PostgreSQL pourrait être aussi simple à utiliser que MySQL.

    À suivre ...
    intel i7
    OpenSuse Leap 42.2
    Plasma et Cinnamon

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur étude et développement

    Informations forums :
    Inscription : janvier 2012
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Le fait que cette api REST est conforme au standard OpenApi est une bonne chose ! Cela veut dire que nous pouvons générer un client d'accès aux données AUTOMATIQUEMENT et GRATUITEMENT pour n'importe quel langage suportant HTTP !

    Sauf que je me pose la question : est ce que cela revient moins cher de maintenir et payer un serveur de plus que de payer pour l'écrire manuellement avec jdbc par exemple ?

  7. #7
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    août 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : août 2019
    Messages : 20
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Question de néophyte:

    N'y-a-t-il pas un risque plus élevé de piratage en suppriment une couche REST et en connectant directement la base de données au réseau?

    Merci pour vos réponses d'experts
    Non, puisque la couche est "supprimée" en terme de codage de notre coté (donc 0-dev) mais elle reste bien malgré tout presente. Il faut bien que quelqu'un fasse l'interface avec la BDD. Je prefere une mecanique intégrée et gérée par le fournisseur que de devoir recoder de la securité de notre coté (ou il y a plus de chances de laisser passer des choses).

    Ce qui est interessant c'est qu'en plus on a de base la portabilité multi plateforme (la ou on devrait coder une couche en C# pour telle ou telle plateforme dans un mode classique), là c'est la BDD deja multiplateforme qui fait le job (visiblement c'est une appli java qui fait l'interface donc portabilité de fait). Donc gagnant sur toute la ligne.

  8. #8
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    août 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : août 2019
    Messages : 20
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par mohamedimli Voir le message
    Sauf que je me pose la question : est ce que cela revient moins cher de maintenir et payer un serveur de plus que de payer pour l'écrire manuellement avec jdbc par exemple ?
    Coder c'est passer des heures donc ca a un cout; au taux horaire des boites ca chiffre vite si on mulitplie par le nb de tables d'un modele de données.
    En plus pour faire du CRUD (qui n'a donc aucun valeur ajoutée), ca permet de passer du temps a faire du vrai fonctionnel et pas de la mecanique bete.
    La ce n'est pas un serveur supplementaire, juste un service d'interfaces supplementaires avec la BDD ("service java" si j'ai bien lu).

  9. #9
    Membre habitué
    Homme Profil pro
    PHP - HTML5 - CSS3 - Symfony - C/C++ - python
    Inscrit en
    juillet 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : PHP - HTML5 - CSS3 - Symfony - C/C++ - python

    Informations forums :
    Inscription : juillet 2012
    Messages : 42
    Points : 150
    Points
    150
    Par défaut Est-ce que ça supporte des donnéess SIG (PosGIS)?
    Peut-on l'utiliser pour un webservice SIG avec lequel on a des données, de type geometry par exemple, gérées avec PostGis?

  10. #10
    Membre du Club
    Inscrit en
    septembre 2012
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : septembre 2012
    Messages : 37
    Points : 63
    Points
    63
    Par défaut Pas totalement compris l’avantage
    Pour les utilisateurs Dot.Net , il y à déjà pas mal d’API qui font cela et ils le font très bien voir même de manière considérablement facile et déconcertante pour l’avenir des développeurs Dot.Net .Entity framework en est un exemple. En cinq minutes on peut créer une application MVC qui map une base de données entièrement avec en cadeau la possibilité d’avoir les Views adéquates à l’insertion, mise à jour ou effacement et tout ça sans écrire une ligne de code , ou peut-être 6 et en un temps records . Évidemment les contrôleurs peuvent être dissociés des Views , pour éventuellement les exposer à d’autres Clients, et ça date pas d’hier tout ça , ce qui implique que j’ai du mal à saisir l’avantage d’une tel structure pour un rendement assez similaire que l’on peut faire en ajoutant juste un Nuget à notre projet en cinq secondes , à moi qu’évidemment je n’ai pas tout compris à cette nouveauté.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 56
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par walfrat Voir le message
    C'est définitivement intéressant, cependant j'ai toujours eu des difficultés à exprimer certain types de contraintes.

    Par exemple avec CHECK on ne peut faire de requête pour vérifier une condition complexe. De fait j'ai donc souvent une première couche d'intégrité en BDD et une autre côté applicatif.

    Une autre possibilité serait donc à mapper une URL vers une procédure stockée plutôt que la table en elle-même qui peut effectuer les contrôles complémentaires.

    Enfin l'authentification est souvent plutôt côté applicatif de nos jours, ne serait-ce que pour faire des pools de connexions. D'après ce que dit cet article, je ne sais pas si l'authentification proposé fonctionne comme une authentification applicative ou s'il faut passer par la gestion des utilisateurs et rôles de la base, ce dernier serait gênant sur le type d'application que je développe et la complexité de la gestion des droits qui en résulte.
    Tu as aussi la possibilité (lourde) d'utiliser des triggers, qui correspondent plus ou moins à une contrainte CHECK

  12. #12
    Candidat au Club
    Profil pro
    tzet
    Inscrit en
    avril 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tzet

    Informations forums :
    Inscription : avril 2007
    Messages : 1
    Points : 3
    Points
    3
    Par défaut
    PostgREST est un produit que j'ai mis en place chez mon ancien employeur, il est en production depuis 1-2 ans en tant que fournisseur de services sur des référentiels de données.
    Cela fonctionne super bien et évite d'avoir à développer un couche web d'accès aux données.
    Je ne l'ai mis en place que pour de la restitution de données, je ne sais pas ce que vaut la partie MAJ de données.

    Par contre, je n'ai exposé que des vues (en l'occurrence matérialisées) pour faciliter la maintenance. En effet, si l'on expose des tables avec PostgREST, en cas de modification de structure, il est nécessaire de modifier tous les consommateurs (les services sont auto-générés à partir des tables). En passant par des vues, il est possible de modifier la requête de la vue pour ne pas impacter les clients. Au pire, si la modification de structure nécessite de changer la vue pour bénéficier de toutes les nouvelles données, il est possible de créer une deuxième vue (marquée V2) et garder l'ancienne vue (avec requête mise à jour) pour les logiciels utilisant l'ancienne structure.

    Le gros avantage de PostgREST, c'est que le consommateur fait un pseudo-SQL lorsqu'il utilise le service web. Pas besoin de développer des services spécifiques lorsqu'il est nécessaire de retourner des jeux de données complexes, le développeur de l'application consommatrice est libre de faire à peu près ce qu'il veut.

    PostgREST est en Haskell, pas en Java.

  13. #13
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut Et pur les autres sgbd
    Bonjour

    connaissez vous le même type d'outil pour les bases de types sqlserver, oracle, mysql, db2?

  14. #14
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    19 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 19 405
    Points : 46 112
    Points
    46 112
    Par défaut
    ça existe sous SQL Server depuis la version 2005 via les web services.

    Cependant pour des raisons de sécurité cela est strictement déconseillé !

    En effet, le point noir de la problématique est que dès lors que c'est le moteur qui fait les requêtes et non plus l'utilisateur qui a la mainmise dessus, il n'est plus possible d'appliquer une, sécurité aussi fine que celle qui est possible en SQL (privilèges).

    Cela a été la même chose pour Oracle....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  15. #15
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Auditeur
    Inscrit en
    juillet 2012
    Messages
    7 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2012
    Messages : 7 502
    Points : 74 137
    Points
    74 137
    Billets dans le blog
    15
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    janvier 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : janvier 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je suis étonné de la relative "simplicité" de postgREST et que beaucoup s'en accommode (à priori).
    Je gère actuellement une application "moyenne" (FrontEnd HTML/AJAX + Middleware sous Oracle Glassfish) / et 99% du code des web services REST est écrit en PL/SQL ORACLE (plutôt orienté RPC donc) . Je souhaite ré-écrire cette application mais changer d'architecture BDD pour PostgreSQL. Un FrontEnd en node.js + suite "vue.js" et un backend en ... :
    - Django DRF mais il faut constamment contourner le fonctionnement de base et c'est un peu lourd pour une application moyenne
    - Peut être FASTAPI + SQLAlchemy (donc en python et en mode ORM)
    - je viens de tomber sur PostgREST ...
    Pour reprendre les avis déjà écris je me demande qu'elle type d'application moderne peut se contenter de simples appels CRUD mono-table en update/delete ...?? Lorsque j'update un enregistrement, outre des vérifications last minute des paramètres, je mets à jour une table de logs (utilisateur, paramètre d'appels, temps d'execution du ws service ...), et suivants les cas je met bien souvent à jour d'autres tables (qui plus est dans une transaction - obligatoirement - ...)
    Lors d'un delete dans une table, il n'est pas rare de devoir supprimer logiquement ou mettre à jour des enregistrement dans une autre. Evidemment on peut faire certaines de ces actions via des triggers mais le debugage risque d'être long et délicat.
    Si je devais choisir PostgREST ce n'est pas pour repasser sur des procédures stockées (RPC) quasiment tout le temps.
    Outre la vitesse, j'ai du mal à croire que PostgREST puisse convenir pour gérer 100% des accès data (autres qu'en lecture) d'un petit back-office.

  17. #17
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    DBA au CERN (Genève), Oracle ACE Director, OCM 12c, Oak Table
    Inscrit en
    novembre 2007
    Messages
    1 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : DBA au CERN (Genève), Oracle ACE Director, OCM 12c, Oak Table
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2007
    Messages : 1 746
    Points : 6 161
    Points
    6 161
    Par défaut
    Citation Envoyé par fbenoist68 Voir le message
    Pour reprendre les avis déjà écris je me demande qu'elle type d'application moderne peut se contenter de simples appels CRUD mono-table en update/delete ...??
    Effectivement, c'est en général une grosse erreur voir la base de donnée comme un ensemble de fichiers indexés des années 70 sur lequel 4 opérations CRUD suffirait. Et encore plus en REST lorsque chaque appel à l'API est un appel réseau!

    Mais PostgREST peut aussi interfacer des vues et des procédures stockées. Et là on a un vrai service où la logique est proche des données, déployée et exécutée dans la base de données.
    Franck Pachot - DBA au CERN - Oracle ACE Director - OCM 12c - Oak Table member - twitter: @FranckPachot - blog: blog.pachot.net

Discussions similaires

  1. Connexion à une Base de données PostgreSQL ou à un WebService REST ?
    Par transact dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 30/05/2016, 15h34
  2. Erreur sur Web service qui retourne une String
    Par Delphi-ne dans le forum WinDev
    Réponses: 9
    Dernier message: 26/05/2016, 13h39
  3. web service qui affiche une table depuis la BDD
    Par leilusha dans le forum NetBeans
    Réponses: 5
    Dernier message: 03/11/2015, 11h16
  4. Web Service qui sert de base de données logiciels
    Par smalldebian dans le forum Services
    Réponses: 3
    Dernier message: 04/05/2010, 16h35
  5. fonction qui transforme une chaine en majuscule
    Par kawther dans le forum Langage
    Réponses: 3
    Dernier message: 23/04/2007, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo