PureBasic

Forums PureBasic
Nous sommes le Mar 18/Juin/2019 4:06

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 28 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 15:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8667
@Micoute..
Je rejoints Falsam.
Même si l'intention est bonne, ton 1er code est hors sujet et le second (conversion en module) n'est pas un exemple à suivre du fait qu'un module doit pouvoir être importé par autrui sans que cela ne puis générer de conflits. Et oui c'est censé être une série de fonctions à part entière plutôt qu'un truc autonome.

Même si les données intra modules sont censée être protégées dedans, si un utilisateur mets un
Code:
Enumeration Fenetres
    #Fenetre_edition
  EndEnumeration

dans son code (car il ne se souviendra pas forcément des constantes de ton module) je me dis que ça peut chinoiser.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 15:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 26/Nov/2011 13:04
Messages: 463
Bonjour Falsam et merci pour ta proposition.
Je viens de jeter un coup d'oeil sur les fichiers Json. Je voudrais juste savoir pourquoi choisir Json (avantage par rapport à sqlite par exemple)
Merci

_________________
Win7 (x86) 32 bits Pb 5.70


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 15:43 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8667
Parce que c'est simple, c'est un format de données ouvert donc interprété par x langages JavaScript, PHP, Perl, Python, Ruby, Java,...
Permet de stocker des données de différents types : chaînes de caractères (y compris des images en base64), nombres, tableaux (array), objets, booléens (true, false), la valeur null.
Sa structure en arborescence et sa syntaxe simple lui permet de rester très "léger" et efficace.
plus d'infos ici : https://www.alsacreations.com/article/lire/1675-json-stockage-leger-pratique-donnees-multitypes.html

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 16:03 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1564
Citation:
Je viens de jeter un coup d'oeil sur les fichiers Json. Je voudrais juste savoir pourquoi choisir Json (avantage par rapport à sqlite par exemple)
Savoir que comme pour les fichiers XML, les fichiers JSON au niveau disque, on lit ou écrit tout le fichier à chaque fois.

C'est logique, ce sont des flats files (fichiers plats, c'est à dire du texte brut) C'est un avantage (lisibilité) et un inconvénient: il faut "pousser" tout quand on remplace une donnée par une autre de taille différente.

De plus, si on travaille sur plusieurs enregistrements et qu'on ne sauvegarde pas à chaque modification (ou qu'on ne stocke pas les données "modifiées" dans une autre structure), si on fait une erreur sur un enregistrement on perd les autres modifications effectuées depuis à moins de recopier les données validées avant dans la structure à écrire.

Si plusieurs utilisateurs travaillent sur la même source de données, ils ont chacun une copie des données et aucune synchro de données ou alors il faut gérer un verrou en manuel.

Les fichier JSON c'est bien pour sauver un paquet de données disparates ou pour de petites bases type carnet d'adresse, mais pour quelques centaines d’enregistrements ou plus ce n'est pas adapté.

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 20:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 26/Nov/2011 13:04
Messages: 463
Citation:
Les fichier JSON c'est bien pour sauver un paquet de données disparates ou pour de petites bases type carnet d'adresse, mais pour quelques centaines d’enregistrements ou plus ce n'est pas adapté.
J'ai besoin au moins de 3000 enregistrements (c'est le contenu de mon fichier livraison (base sqlite).

_________________
Win7 (x86) 32 bits Pb 5.70


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 22:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1590
Localisation: Belgique
Le problème avec un fichier Json qui n'est rien d'autre qu'un fichier texte balisé, il faudra charger tous les records en mémoire. Cette opération est faite au lancement du soft donc cela ne se sentira pas.

Par contre chaque recherche va demander de parcourir toute la liste jusqu’à trouvé le bon record et si c'est dernier. Maintenant avec 3000 records cela ne devrais pas prendre trop de temps par contre avec plus.

_________________
Linux Mint / Windows 10 64 bits PB: 5.61 ; 5.62 beta


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Lun 20/Aoû/2018 22:54 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
microdevweb a écrit:
Par contre chaque recherche va demander de parcourir toute la liste jusqu’à trouvé le bon record
Non pas du tout.

Un fichier JSON contenant une suite d'enregistrements est obligatoirement associé à une liste chaînée ou une map. Tu auras compris que associée à une map la recherche est ultra rapide.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Mar 21/Aoû/2018 0:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1590
Localisation: Belgique
falsam a écrit:
Un fichier JSON contenant une suite d'enregistrements est obligatoirement associé à une liste chaînée ou une map. Tu auras compris que associée à une map la recherche est ultra rapide.


Oui ça je sais mais avec une structure du genre
Code:
Structure contact
  id.l
  nom.s
  adresse.s
  localite.s
EndStructure


On prendra par exemple l'id comme clé, mais si on doit trouvé un nom ? Alors il faut faire plusieurs map mémorise l'id. Maintenant si on veut faire une recherche du type like ?

Donc pour moi une base Sqlite est plus approprié et pas plus compliqué à mettre en place.

_________________
Linux Mint / Windows 10 64 bits PB: 5.61 ; 5.62 beta


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Mar 21/Aoû/2018 7:27 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1564
Si on sauvegarde dans un fichier JSON, ça veut dire qu'on a peu de données, qu'on charge tout en RAM et donc que l'indexation ne sert à rien.

(Au siècle dernier, FoxPro 2 (DOS) conseillait de ne faire des fichiers d'index qu'à partir de 100 000 enregistrements... et on fonctionnait sur des PC 286 à 12MHz, c'est dire si on sous évalue les possibilités actuelles des PC et on fait des fichiers d'index pour rien le plus souvent, sauf pour gérer les doublons sur les clés)

Bref, si on charge toutes les données en mémoire, dans une liste structurée, il est facile de parcourir tous les champs (avec ForEach)
Pour une recherche LIKE, il suffit d'utiliser Left(), Right(), Ucase(), Lcase()
(C'est par contre plus compliqué pour faire une recherche par phonème.)
(Programmation propre, enfin j’essaye)
Code:
EnableExplicit

Structure Type_contact
  id.l
  nom.s
  adresse.s
  localite.s
EndStructure

NewList Contact.Type_contact()

With Contact()
    AddElement(Contact()) : \id = 1 : \nom = "AAA"   
    AddElement(Contact()) : \id = 2 : \nom = "BBB"   
    AddElement(Contact()) : \id = 3 : \nom = "CCC"   
    AddElement(Contact()) : \id = 4 : \nom = "DDD"   
    AddElement(Contact()) : \id = 5 : \nom = "EEE"   
EndWith

ForEach Contact()
    With Contact()
        Debug "ID: " + \id + " Nom: " + \nom
    EndWith
Next

ForEach Contact()
    If Contact()\nom = "DDD"
        Debug ""
        Debug "Trouvé par nom: " + Contact()\nom + " ID: " + Contact()\id
        Break
    EndIf
Next

ForEach Contact()
    If Left(Contact()\nom, 1) = "C"
        Debug ""
        Debug "Commence par C: " + Contact()\nom + " ID: " + Contact()\id
        Break
    EndIf
Next

End

Mais cela dit, JSON n'est pas une base de données, c'est une structure qu'on sauvegarde dans un fichier texte.
C'est comme un fichier XML
C'est même moins bien qu'un fichier pref (fichier INI) qui lui est capable de faire des lectures écritures partielles.

Ça n'a rien à faire dans un programme de gestion de stock, de compta, de facturation qui va vite avoir plusieurs milliers d'enregistrements.

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Mar 21/Aoû/2018 7:53 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
>>>>>>>>>>>[TUTO débutants] les modules<<<<<<<<<<<<<<<<

Et donc sinon le Json... On disait quoi à propos d'un forum illisible ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Mar 21/Aoû/2018 8:17 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1564
boby a écrit:
>>>>>>>>>>>[TUTO débutants] les modules<<<<<<<<<<<<<<<<
Et donc sinon le Json... On disait quoi à propos d'un forum illisible ?
Un forum est un lieu de conversation, et toute conversation humaine peut dériver.
Même les chatbost qu'on trouvent sur les sites de e-commerce dérivent aussi :P (mais à cause de la pauvreté de l'« intelligence artificielle »)

Quand ça dérive trop, ou sur demande aimablement formulée auprès d'un modo, celui-ci a une fonction pour scinder le topic en 2 au bon endroit et donner un nouveau titre.
(ici, il faudra couper à partir de la réponse d'Omega page 1 et déplacer la suite ailleurs)

:idea: Tu as un petit point d’exclamation rouge en bas à droite (si tu es connecté) pour signaler directement aux modos n'importe quel message.

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Mar 21/Aoû/2018 14:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 26/Nov/2011 13:04
Messages: 463
Regardez ce que j'ai trouvé sur le net:The absolute maximum length is the largest possible length for a JSON type. This limit is 16776192 bytes.
https://info.teradata.com/htmlpubs/DB_T ... 28253.html

_________________
Win7 (x86) 32 bits Pb 5.70


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [TUTO débutants] les modules
MessagePosté: Mar 21/Aoû/2018 14:32 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
https://www.purebasic.fr/french/viewtopic.php?f=1&t=17398&start=10


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 28 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye