[SOCPB 2006] Projet # 1 : Rendre facile la gestion de MySQL
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
[SOCPB 2006] Projet # 1 : Rendre facile la gestion de MySQL
Projet #1
Leader : Flype
Membres :
Bon Code
Note :
Le Leader a pour but :
+ d'orienter le développement du projet
+ de regrouper les codes recus
+ de formater le code final (lisibilité, commentaire)
Donc ses paroles sont lettres d'évangiles
Liens :
Payants :
-Access : http://office.microsoft.com/access/ (Version d'essai)
-Oracle : http://www.oracle.com/technology/softwa ... index.html
-Interbase : http://www.borland.com/fr/products/interbase/index.html (essai)
-Sybase : http://www.sybase.fr/products/informationmanagement/#ds
-DB2 : http://www-306.ibm.com/software/data/db2/windows/
-4D : http://www.4d.fr/documentation/4DDoc67/ODC/ODCMDUS.HTM
-HyperFile : http://www.pcsoft.fr/accueilpub/hyper-file.htm (démo)
-Adabas : http://www1.softwareag.com/Corporate/pr ... efault.asp
-InterSystem : http://www.intersystems.fr/france/cache ... ageID=1721 (mais téléchargeable gratuitement et illimité)
-FileMaker : http://www.filemaker.fr/ (version d'évaluation)
-SQL Server : http://www.microsoft.com/france/sql/sql ... fault.mspx (version d'évaluation)
-Progress : http://www.progress.com/products/deploy ... /index.ssp
-OpenBase : http://store.openbase.com/index.html
Gratuits :
-Firebird2: http://www.firebird-fr.eu.org/
-PostgreSQL8: http://www.postgresqlfr.org/
-SQLite: http://www.sqlite.org/
-MySQL5: http://www-fr.mysql.com/
-EyeDB : http://www.eyedb.org/
-Ingres : http://opensource.ingres.com/projects/ingres/
-Kexi : http://www.kexi-project.org/
-MyLittleBase : http://www.framasoft.net/article1519.html
-MaxDB : http://www.framasoft.net/article1591.html
Je ne sais pas ?
-Informix : http://www-5.ibm.com/fr/software/data/i ... ormix.html
-Paradox : http://en.wikipedia.org/wiki/Paradox_(database)
-Dbase : http://www.dbase.com/
Leader : Flype
Membres :
Bon Code
Note :
Le Leader a pour but :
+ d'orienter le développement du projet
+ de regrouper les codes recus
+ de formater le code final (lisibilité, commentaire)
Donc ses paroles sont lettres d'évangiles
Liens :
Payants :
-Access : http://office.microsoft.com/access/ (Version d'essai)
-Oracle : http://www.oracle.com/technology/softwa ... index.html
-Interbase : http://www.borland.com/fr/products/interbase/index.html (essai)
-Sybase : http://www.sybase.fr/products/informationmanagement/#ds
-DB2 : http://www-306.ibm.com/software/data/db2/windows/
-4D : http://www.4d.fr/documentation/4DDoc67/ODC/ODCMDUS.HTM
-HyperFile : http://www.pcsoft.fr/accueilpub/hyper-file.htm (démo)
-Adabas : http://www1.softwareag.com/Corporate/pr ... efault.asp
-InterSystem : http://www.intersystems.fr/france/cache ... ageID=1721 (mais téléchargeable gratuitement et illimité)
-FileMaker : http://www.filemaker.fr/ (version d'évaluation)
-SQL Server : http://www.microsoft.com/france/sql/sql ... fault.mspx (version d'évaluation)
-Progress : http://www.progress.com/products/deploy ... /index.ssp
-OpenBase : http://store.openbase.com/index.html
Gratuits :
-Firebird2: http://www.firebird-fr.eu.org/
-PostgreSQL8: http://www.postgresqlfr.org/
-SQLite: http://www.sqlite.org/
-MySQL5: http://www-fr.mysql.com/
-EyeDB : http://www.eyedb.org/
-Ingres : http://opensource.ingres.com/projects/ingres/
-Kexi : http://www.kexi-project.org/
-MyLittleBase : http://www.framasoft.net/article1519.html
-MaxDB : http://www.framasoft.net/article1591.html
Je ne sais pas ?
-Informix : http://www-5.ibm.com/fr/software/data/i ... ormix.html
-Paradox : http://en.wikipedia.org/wiki/Paradox_(database)
-Dbase : http://www.dbase.com/
Dernière modification par Progi1984 le jeu. 29/juin/2006 15:17, modifié 6 fois.
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Bien, on va pouvoir commencer.
Etant au travail, on verra ce soir pour le regroupement des idées.
En attendant, l'heure du cahier des charges à commencé, donc n'hésitez pas à proposer vos idées içi.
Ceux qui ont décider de travailler sur ce sujet merci de le faire savoir içi, histoire de mieux connaitrel'équipe.
Bonne chance à tous les projets.
Etant au travail, on verra ce soir pour le regroupement des idées.
En attendant, l'heure du cahier des charges à commencé, donc n'hésitez pas à proposer vos idées içi.
Ceux qui ont décider de travailler sur ce sujet merci de le faire savoir içi, histoire de mieux connaitrel'équipe.
Bonne chance à tous les projets.

-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Bon, j'ai un peu réfléchit à la question.
j'ai besoin de connaitre votre avis sur plusieurs choses.
1/
Etes-vous réellement utilisateur (via purebasic ou non) de base de données (mysql, sqlite, access, oracle, ...) ?
et quelles sont justement les BDD que vous aimeriez voir supportées dans purebasic.
On parlait de MySQL, mais après tout j'aimerais 'penser' dès le départ à un système qui permettrait de supporter autant de BDD différentes qu'on veut.
J'ai actuellement en ma possession les includes/api pour
MySQL5: http://www-fr.mysql.com/
PostgreSQL8: http://www.postgresqlfr.org/
Firebird2: http://www.firebird-fr.eu.org/
SQLite: http://www.sqlite.org/
( une autres BDD ? faites des propositions... )
2/
Vous me dites ce que vous en pensez mais j'ai l'intention d'utiliser, pour notre projet, la particularité des 'SubSystem' de Purebasic 4.0 pour intégrer toutes ces BDD. J'ai étudié la question et c'est ce qui semble le plus raisonnable/adapté.
Ainsi, un programmeur Purebasic désireux de se connecter à une base de données via ODBC n'a rien de plus à faire que d'utiliser les commandes 'database' de purebasic. Bref, comme d'habitude.
Par contre, le programmeur désireux de se connecter à un serveur MySQL sans passer par ODBC, précisera au compilateur le sous-système 'MySQL' ou 'PostgreSQL', etc... (voir la page de configuration du compilateur) tout en utilisant les commandes 'databases' classiques.
3/
Grâce à ce support, on pourra aussi penser dans un second temps à créér des outils de gestions/reporting de bases de données intégrés à l'IDE PureBasic. ( à la phpmyadmin comme on l'a déjà évoqué ).
4/
Créer un sous-système pour PureBasic 4.0, comment faire ?
En fait c'est pas dur,
çà se construit exactement comme une userlibrary classique, donc soit en ASM, soit en C, soit plus probablement (sauf difficulté incontournable) via Tailbite. SAUF que les noms des fonctions doivent respecter les noms des fonctions natives de purebasic. Ce n'est techniquement pas obligatoire de respecter à l'identique le nom des fonctions natives, mais çà permet et c'est le but, de rendre l'utilisation transparente pour le programmeur final.
Le but sera donc de subsituer le fichier :
\PureBasic\PureLibraries\Database
Par ceux-ci :
\PureBasic\SubSystems\MySQL\PureLibraries\Database
\PureBasic\SubSystems\PostgreSQL\PureLibraries\Database
\PureBasic\SubSystems\Firebird\PureLibraries\Database
\PureBasic\SubSystems\SQLite\PureLibraries\Database
Donc autant de library 'database' que de sous-système.
Toutefois, étant donné les nombreuses fonctions supplémentaires qu'apportent les API pour MySQL et les autres, on rajoutera peut-être des fonctions spécifiques à chaque base de données. Ce n'est pas le plus urgent, à mon avis çà, çà viendra au moment où on développera les outils tierces.
j'ai besoin de connaitre votre avis sur plusieurs choses.
1/
Etes-vous réellement utilisateur (via purebasic ou non) de base de données (mysql, sqlite, access, oracle, ...) ?
et quelles sont justement les BDD que vous aimeriez voir supportées dans purebasic.
On parlait de MySQL, mais après tout j'aimerais 'penser' dès le départ à un système qui permettrait de supporter autant de BDD différentes qu'on veut.
J'ai actuellement en ma possession les includes/api pour
MySQL5: http://www-fr.mysql.com/
PostgreSQL8: http://www.postgresqlfr.org/
Firebird2: http://www.firebird-fr.eu.org/
SQLite: http://www.sqlite.org/
( une autres BDD ? faites des propositions... )
2/
Vous me dites ce que vous en pensez mais j'ai l'intention d'utiliser, pour notre projet, la particularité des 'SubSystem' de Purebasic 4.0 pour intégrer toutes ces BDD. J'ai étudié la question et c'est ce qui semble le plus raisonnable/adapté.
Ainsi, un programmeur Purebasic désireux de se connecter à une base de données via ODBC n'a rien de plus à faire que d'utiliser les commandes 'database' de purebasic. Bref, comme d'habitude.
Par contre, le programmeur désireux de se connecter à un serveur MySQL sans passer par ODBC, précisera au compilateur le sous-système 'MySQL' ou 'PostgreSQL', etc... (voir la page de configuration du compilateur) tout en utilisant les commandes 'databases' classiques.
3/
Grâce à ce support, on pourra aussi penser dans un second temps à créér des outils de gestions/reporting de bases de données intégrés à l'IDE PureBasic. ( à la phpmyadmin comme on l'a déjà évoqué ).
4/
Créer un sous-système pour PureBasic 4.0, comment faire ?
En fait c'est pas dur,
çà se construit exactement comme une userlibrary classique, donc soit en ASM, soit en C, soit plus probablement (sauf difficulté incontournable) via Tailbite. SAUF que les noms des fonctions doivent respecter les noms des fonctions natives de purebasic. Ce n'est techniquement pas obligatoire de respecter à l'identique le nom des fonctions natives, mais çà permet et c'est le but, de rendre l'utilisation transparente pour le programmeur final.
Le but sera donc de subsituer le fichier :
\PureBasic\PureLibraries\Database
Par ceux-ci :
\PureBasic\SubSystems\MySQL\PureLibraries\Database
\PureBasic\SubSystems\PostgreSQL\PureLibraries\Database
\PureBasic\SubSystems\Firebird\PureLibraries\Database
\PureBasic\SubSystems\SQLite\PureLibraries\Database
Donc autant de library 'database' que de sous-système.
Toutefois, étant donné les nombreuses fonctions supplémentaires qu'apportent les API pour MySQL et les autres, on rajoutera peut-être des fonctions spécifiques à chaque base de données. Ce n'est pas le plus urgent, à mon avis çà, çà viendra au moment où on développera les outils tierces.
Dernière modification par Flype le mar. 20/juin/2006 14:10, modifié 1 fois.
Voici ma trame de départ pour programmer les sous-systèmes :
Cette trame reprends les fonctions 'database' de purebasic.
à nous de reprogrammer chaque fonction.
C'est pas trop dur mais attention tout de même.
Par example comment 'émuler' les #PB_Any ?
Dr Dri vient justement de balancer un code intéressant à ce sujet.
Il faudrait l'étudier de plus près.
Certaines fonctions comme DatabaseDriverDescription()
n'ont de sens que sous ODBC, on lui fera donc retourner une chaine de caractères vide par ex, ou alors on renvoie la version du serveur MySQL. Bref, il y a moyen de s'amuser...
Allez stop, j'attends vos réactions maintenant.

Cette trame reprends les fonctions 'database' de purebasic.
à nous de reprogrammer chaque fonction.
Code : Tout sélectionner
;- Trame de sous-système de bases de données pour Purebasic 4.0
XIncludeFile "libmysql5.pb"
Procedure.l CloseDatabase(database.l)
ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseColumnName(database.l, column.l)
ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseColumnType(database.l, column.l)
ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseColumns(database.l)
ProcedureReturn #Null
EndProcedure
Procedure.s DatabaseDriverDescription()
ProcedureReturn #Null$
EndProcedure
Procedure.s DatabaseDriverName()
ProcedureReturn #Null$
EndProcedure
Procedure.s DatabaseError()
ProcedureReturn #Null$
EndProcedure
Procedure.l DatabaseQuery(database.l, query.s)
ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseUpdate(database.l, query.s)
ProcedureReturn #Null
EndProcedure
Procedure.l ExamineDatabaseDrivers()
ProcedureReturn #Null
EndProcedure
Procedure.l FirstDatabaseRow(database.l)
ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseDouble(database.l, column.l)
ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseFloat(database.l, column.l)
ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseLong(database.l, column.l)
ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseQuad(database.l, column.l)
ProcedureReturn #Null
EndProcedure
Procedure.s GetDatabaseString(database.l, column.l)
ProcedureReturn #Null$
EndProcedure
Procedure.l InitDatabase()
ProcedureReturn #Null
EndProcedure
Procedure.l IsDatabase(database.l)
ProcedureReturn #Null
EndProcedure
Procedure.l NextDatabaseDriver()
ProcedureReturn #Null
EndProcedure
Procedure.l NextDatabaseRow(database.l)
ProcedureReturn #Null
EndProcedure
Procedure.l OpenDatabase(database.l, host.s, user.s, passwd.s)
ProcedureReturn #Null
EndProcedure
Procedure.l OpenDatabaseRequester(database.l)
ProcedureReturn #Null
EndProcedure
Procedure.l PreviousDatabaseRow(database.l)
ProcedureReturn #Null
EndProcedure
Par example comment 'émuler' les #PB_Any ?
Dr Dri vient justement de balancer un code intéressant à ce sujet.
Il faudrait l'étudier de plus près.
Certaines fonctions comme DatabaseDriverDescription()
n'ont de sens que sous ODBC, on lui fera donc retourner une chaine de caractères vide par ex, ou alors on renvoie la version du serveur MySQL. Bref, il y a moyen de s'amuser...
Allez stop, j'attends vos réactions maintenant.

-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Je le dis dès maintenant,
Il faudra un membre de l'équipe pour réaliser la documentation.
Ce ne sera pas une mince affaire mais ce sera un rôle clef.
Car il n'y a pas de projet comme celui-ci sans véritable support derrière. Sinon çà sert à rien car si on est 3 couillons à utiliser notre travail sous prétexte qu'il n'y a pas de documentations, on aura l'air malin.
Un volontaire ?
Il faudra un membre de l'équipe pour réaliser la documentation.
Ce ne sera pas une mince affaire mais ce sera un rôle clef.
Car il n'y a pas de projet comme celui-ci sans véritable support derrière. Sinon çà sert à rien car si on est 3 couillons à utiliser notre travail sous prétexte qu'il n'y a pas de documentations, on aura l'air malin.
Un volontaire ?
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Cool, çà fait plaisirwolfjeremy a écrit :Sa me semble être de bonne idée et je suis sur la même longueur d'onde que toi.
Celle que tu a cité sont les principal utilisé a l'heure actuel je pense.

Utilises-tu toi-même des BDD, si oui laquelle/lesquelles ?
Perso, ma propre expérience (c'est pas phénoménal) :
. PostgreSQL ( il y a longtemps, mais je m'y remets )
. MySQL ( depuis 3 ans )
. SQLite ( j'ai survolé il y a qq temps )
. Firebird ( j'ai découvert récemment, je viens de m'en installée une à la maison pour faire des tests, çà m'a l'air pas mal )
. Access ( un peu en cours, mais aucune idée de l'interface avec purebasic )
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
En ce qui concerne mon code, il a l'air compliqué comme ca (79 lignes je crois ?) mais en fait il ne fait que donner un accès à quelques fonctions
Sinon je pense que le mieux serait de réaliser entièrement le subsystem MySQL qui servira de squelette aux autres bases de données. Aussi l'idéal serait de se borner à recoder toutes les fonctions natives et rien de plus de manière à assurer une compatibilité totale entre les subsystems.
Dri
Si tu utilises ces fonctions, tu ne vas pas émuler le #PB_Any mais bel et bien utiliser le système qu'utilisent les libs natives pour créer des objets (statiques ou dynamiques)Object_GetOrAllocate(*Object, Object.l)
Object_GetObject(*Object, Object.l)
Object_IsObject(*Object, Object.l)
Object_EnumerateAll(*Object, Callback, *VoidData)
Object_EnumerateStart(*Object)
Object_EnumerateNext(*Object, *ID.Long)
Object_EnumerateAbort(*Object)
Object_Free(*Object, Object.l)
Object_Init(StructureSize.l, IncrementStep.l, FreeObject)
Object_GetThreadMemory(MemoryID.l)
Object_InitThreadMemory(Size.l, InitFunction, EndFunction)
Sinon je pense que le mieux serait de réaliser entièrement le subsystem MySQL qui servira de squelette aux autres bases de données. Aussi l'idéal serait de se borner à recoder toutes les fonctions natives et rien de plus de manière à assurer une compatibilité totale entre les subsystems.
Dri
Bon j'ai pas encore attaqué les bases de données mais je pense que sa se révelera comme un point très positif de le mettre en sous-système et de gérer plusieurs moteur de base de données.
Pour le moment je comprend les bases de SQL (les tables, ...) ce qui m'a permi de mettre -666 post à un pote dans son profil et moi 1millions sur son portail PwsPHP.
C'est en attendant de trouver un projet à réaliser
. (enfin hormis le PBSOC qui est un méga projet pour moi
)
Peut-être moins utilisée ici, sa pourrait être simpa de penser à l'intégration des commandes pour Microsoft SQL Server enfin si sa une utilité et que c'est réalisable
Pour le moment je comprend les bases de SQL (les tables, ...) ce qui m'a permi de mettre -666 post à un pote dans son profil et moi 1millions sur son portail PwsPHP.
C'est en attendant de trouver un projet à réaliser



Peut-être moins utilisée ici, sa pourrait être simpa de penser à l'intégration des commandes pour Microsoft SQL Server enfin si sa une utilité et que c'est réalisable

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Un projet qui a l'air bien lancé... 

Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net