PureBasic

Forums PureBasic
Nous sommes le Lun 16/Sep/2019 13:28

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 37 messages ]  Aller à la page Précédente  1, 2, 3  Suivante
Auteur Message
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Mer 04/Juil/2018 20:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Je doute que SB le fasse un jour. Parce que ça voudrait dire que tous les programmes développés avec auraient tous les les même failles.

Dès qu'on rentre dans le domaine du serveur, on joue avec des règles de sécurité qui sont assez importantes, autant utiliser des normes qui sont développés et mise à jour rapidement et par de grande communautés que par un seul gars. C'est pas contre Fred, je refuserai de déployer un serveur développé par une seule personne quelle qu'elle soit. En l'état, un petit nginx (ou apache) -> un serveur PB en fast CGI = la meilleure sécurité disponible. Et on parle ici de 3 outils (dont deux, SB et PB, sont quasi jumeaux), pas de 25 et 52 pirouettes.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Mer 04/Juil/2018 20:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 27/Jan/2004 10:07
Messages: 877
A partir du moment où on veut faire du web de toute façon on rentre dans le monde du serveur. C'est pour cela que ce genre d'appli correspond bien à Java. Mais Java ce n'est pas forcément simple (et il n'y a pas que Java d'ailleurs pour ce genre d'appli). Mais rien n'est impossible. A voir dans le temps.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Mer 04/Juil/2018 21:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Si si, un serveur sécurisé, qui tourne sur toutes les configurations (hardware et software), et qui correspond à tous les besoin, c'est impossible.
En fait, chacune de ces 3 propositions est déjà impossible en soit, donc les trois ensembles...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Mer 04/Juil/2018 21:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 27/Jan/2004 10:07
Messages: 877
Pourquoi toutes les configurations ? Il ne me viendrait pas à l'idée de faire tourner un serveur web ou java sous windows (à part en local dev mais pas en production).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Mer 04/Juil/2018 21:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Parce qu'on utilise pas tous le même OS ni le même jeu d'instruction?
Je connais des serveurs sous Linux (et ça veut surtout dire sous une chié distributions différentes...), d'autres sous FreeBSD et d'autres encore sous Windows (même si ça ne te vient pas à l'idée, il y a des gens qui sont bloqués par des applications spécialisés...); je connais des serveurs en i386, d'autre en AMD64 et même certain en ARM...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Mer 04/Juil/2018 22:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 27/Jan/2004 10:07
Messages: 877
En fait on parle pas du tout de la même chose ^^ Toi tu parles de coder un serveur ou d'une app qui utilise l'os et ses jeux d'instructions moi je te parle d'utiliser l'existant (apache, tomcat...) pour handle des messages/requêtes pour une webapp (peu importe l'os derrière, le message est universel et utilise la technologie web). Un message ou une requête que tu vas balancer à tomcat, que tu aies fedora, mint , desbian ou autre chose on s'en fout, c'est tomcat qui gère.

Mais dans le cas que tu présentes, c'est différent effectivement.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 05/Juil/2018 6:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Je crois surtout que tu ne comprends pas ce dont tu parles : je t'ai parlé d'utiliser l'existant au dessus et tu n'étais pas d'accord. Ensuite, ça ne change rien : tout le monde n'utilise pas Tomcat (parce que c'est sous Java...), tout le monde n'utilise pas Apache (parce que c'est lent, lourd et chiant à configurer). Tout le monde n'a pas la même config.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 05/Juil/2018 8:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 27/Jan/2004 10:07
Messages: 877
Sisi je comprend très bien ce dont je parle, seulement depuis le début on est pas sur la même longueur d'onde, donc ce n'est pas grave :-) On va pas se friter pour une histoire de serveur ^^ D'autant plus qu'on est passé de l'utilisation possible de SB sur un sujet plus général. Pour l'existant tomcat était juste un exemple.

Mon idée était un peu de savoir les possibilités de SB et de ce qu'il propose "out in a box".

Cela dit, peu importe les avis sur le comment faire ou comment gérer, ma question de départ était purement sur SB, notamment sur ce qu'il propose concernant la persistance des données. Etant donné que pour le moment il n'agit uniquement que du côté client, la réponse (local storage etc...) est tout à fait logique. Merci.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 05/Juil/2018 21:46 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 27/Jan/2004 10:07
Messages: 877
Désolé pour le double post !

Je me permet de rebondir sur le sujet, j'ai pas mal étudié ce soir, la doc de sb et le forum officiel sur des sujets particuliers. Revenant de pas mal de Java et JSP où le tout fonctionne un peu "out in a box" dans le sens où finalement t'as un serveur, un code java, et des view jsp qui fonctionnent ensemble, d'un côté la partie métier qui comprend d'ailleurs toutes les classes et méthodes de ton projet, la partie DAO (classes et méthodes bdd), une partie contrôleur pour faire la liaison entre les demandes utilisateurs et la partie métier et DAO, et le côté jsp/web pour le retour utilisateur, UI etc.., le tout s'orchestrant sur un serveur type tomcat (ou glassfish).

Avec cette idée en tête je me disais qu'on aurait pu avoir une sorte d'organisation un peu de ce style sur SB (et j'ai vite oublié l'idée quand on a parlé du fait que finalement SB ne fonctionne que du côté client sans aucune composante serveur).

J'ai vu quelques exemples d'interfaçage avec php et le http request qui peut être une solution pour une connexion bdd (ou tout autre chose) sur le serveur sur lequel tourne l'appli sb. J'ai aussi vu Spiderbyte mais la doc étant en allemand je n'ai pas trop regardé comment cela marche.

Gardant cette idée et ce pattern en tête en fait j'étais pas du tout dans le bon axe, ce qui explique qu'on parlait tous les deux finalement de choses complètement différentes ! La lobotomisation Java de ces dernières années a laissé des traces ;) Donc je présente toutes mes excuses pour cette incompréhension ! Mea culpa.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 09/Aoû/2018 13:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Patrick88 insistant sur le chat de Purebasic , et bien que Poshu a déja posté une réponse sur une base de données persistante, je poste un autre exercice de base de données persistante.

:idea: J'ai crée un APK du code et exécuté l'application sous Android puis j'ai passé CCleaner (version Android).
La base de données n'a pas été détruite.


Explication dans le code
Code:
EnableExplicit

Global FileName.s = "games.sqlite"
Global DataBase

;Plan de l'application
Declare Start()
Declare InsertRecords()                               ;Insertion de quelques enregistrements
Declare SelectRecords()                               ;Selection des enregistrements
Declare SaveDatabase()                                ;Sauvegarde de la base de données en local storage

Declare onReadFile(Status, Filename$, File, SizeRead) ;CallBack si lecture d'un fichier en local storage
Declare onSaveFile(Status, Filename$, File, SizeRead) ; Callback si ecriture d'un fichier en local storage

Start()

; Lecture de la
Procedure Start()
  Debug "Lecture de la base de données en cours ...."
  ReadFile(0, FileName, @onReadFile(), #PB_LocalStorage)
EndProcedure

;Insertion de quelques enregistements
Procedure InsertRecords()
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Command & Conquer : Alerte Rouger', '1996')")
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Doom', '1993')")
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Worms', '1995')")
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Quake', '1996')")
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Wolfenstein 3D', '1992')")
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Duke Nukem 3D', '1996')")
  DatabaseUpdate(DataBase, "Insert Into games (game, year) Values ('Blood', '1997')")
EndProcedure

;Selection des enregistrements
Procedure SelectRecords()
  Protected ReqSql.s = "select year, game From games order by year"
 
  If DatabaseQuery(DataBase, ReqSql)
    While NextDatabaseRow(DataBase)
      Debug GetDatabaseString(DataBase, 0) + " : " + GetDatabaseString(DataBase, 1)
    Wend
   
    FinishDatabaseQuery(DataBase)
  Else
    Debug "Une erreur c'est produite : " + DatabaseError()
  EndIf 
EndProcedure

Procedure SaveDatabase()
  Protected *Buffer = ExportDatabaseMemory(DataBase)
 
  If CreateFile(0, FileName, @onSaveFile(), #PB_LocalStorage)
    WriteData(0, *Buffer, 0, MemorySize(*Buffer))
    CloseFile(0)
  EndIf
EndProcedure


; CallBack si lecture d'un fichier en local storage
Procedure onReadFile(Status, Filename.s, File, SizeRead)
  Protected *Buffer, ReqSql.s
 
  Select Status
     
    Case #PB_Status_Loaded
      ; La base de données existe
      ; - Memorisation de la base dans un buffer de travail
      ; - Visualisation des enregistrements
      Debug "Ouverture de la base de données " + Filename
     
      ; Mémorisation de la base de données dans un buffer
      *Buffer = ExportFileMemory(File)
     
      ; Ouverture de la base de données
      DataBase = OpenDatabase(#PB_Any, *Buffer)
      If DataBase
        SelectRecords()
      EndIf
     
    Case #PB_Status_Error
      ; La base de données n'existe pas
      ; - Création de la base de données
      ; - Insertion de quelques enregistrements
      ; - Visualisation des enregistrements
      ; - Sauvegarde des données en Local Storage
      Debug "Création de la base de données " + Filename
     
      DataBase = OpenDatabase(#PB_Any)
     
      If DataBase
        ; Creation de la table des jeux
        ReqSql = "create table games (game TEXT, year TEXT)"
        DatabaseUpdate(DataBase, ReqSql)
       
        ; Insertion de quelques enregistrements
        InsertRecords()       
       
        ; Visualisation des enregistrements
        SelectRecords()
       
        ; Sauvegarde de la base de données en "Local Storage"
        SaveDataBase()
       
        CloseDatabase(DataBase)
      Else
       
        Debug "Impossible d'ouvrir la base de données !!"
      EndIf
  EndSelect
EndProcedure

; Callback si ecriture d'un fichier en local storage
Procedure onSaveFile(Status, Filename.s, File, SizeRead)
  Select Status
    Case #PB_Status_Saved
      Debug "Fichier " + Filename.s + "(" + SizeRead + " bytes) sauvegardé"
     
    Case #PB_Status_Error
      Debug "Impossible de sauvegarder le fichier " + Filename
  EndSelect
EndProcedure

_________________

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

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

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Jeu 09/Aoû/2018 14:04, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 09/Aoû/2018 13:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Le code suivant permet de visualiser les données
Code:
EnableExplicit

Global FileName.s = "games.sqlite"
Global DataBase

;Plan de l'application
Declare Start()
Declare SelectRecords(DataBase)
Declare onReadFile(Status, Filename.s, File, SizeRead)

Start()

Procedure Start()
  ReadFile(0, FileName, @onReadFile(), #PB_LocalStorage) 
EndProcedure

Procedure SelectRecords(DataBase)
  Protected ReqSQL.s = "select * from games"
 
  If DatabaseQuery(DataBase, ReqSQL)   
    While NextDatabaseRow(DataBase)
      Debug GetDatabaseString(DataBase, 1) + "," + GetDatabaseString(DataBase, 0)
    Wend
    FinishDatabaseQuery(DataBase)   
  Else
    Debug "DatabaseQuery() failed" + DatabaseError()
  EndIf 
EndProcedure

Procedure onReadFile(Status, Filename.s, File, SizeRead)
  Protected *Buffer
  Select Status
    Case #PB_Status_Loaded
      Debug "File loaded: " + Filename
     
      ; Get all the file as a new buffer
      *Buffer = ExportFileMemory(File)     
      DataBase = OpenDatabase(#PB_Any, *Buffer)
     
      If DataBase
        SelectRecords(DataBase)
      EndIf
     
    Case #PB_Status_Error
      Debug "La base de données " + FileName + " n'existe pas"
  EndSelect
EndProcedure

_________________

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

➽ 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: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 09/Aoû/2018 17:37 
Hors ligne

Inscription: Mer 21/Jan/2004 18:24
Messages: 1528
Mmmerci Falsam (ça a eu du mal à sortir...) :roll: en attendant que tu ME fasses en exemple qui utilise une base de donnée SQLite (je t'avais gentiment suggéré, je suis pas KCC)

j'étais en train de reprendre l'exemple "localForage.sb" du dossier "examples" de SpiderBasic qui crée un fichier et y ajoute des lignes et les relit
je l'ai modifié en remplaçant le opendialog par une boite de dialog XML comme l'exemple "Simple resizable dialog"...

hum, bon ... j'ai du mal à piger à quoi sert la procedure onSaveFile vu que le fichier ce crée avec SaveDatabase
je suppose que c'est dans le cas ou il y aurait des erreurs, histoire de les intercepter et de les traiter
mais alors pourquoi il n'y a pas un appel à la création du fichier dans le cas de #PB_Status_Error ??

Patrick


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 09/Aoû/2018 19:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Mon implémentation habituelle : https://forums.spiderbasic.com/viewtopic.php?f=8&t=1393#p5384.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: SQLite dans le local-storage du navigateur.
MessagePosté: Jeu 09/Aoû/2018 23:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Patrick88 a écrit:
j'ai du mal à piger à quoi sert la procedure onSaveFile vu que le fichier ce crée avec SaveDatabase
La procédure SaveDatabase() lance la sauvegarde de la base de données et fait appel à la procédure onSaveFile() quand la sauvegarde est terminée ou qu'il y a une erreur durant la sauvegarde. L'un ne va pas sans l'autre.

_________________

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

➽ 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: SQLite dans le local-storage du navigateur.
MessagePosté: Ven 10/Aoû/2018 8:28 
Hors ligne

Inscription: Mer 21/Jan/2004 18:24
Messages: 1528
falsam a écrit:
La procédure SaveDatabase() lance la sauvegarde de la base de données et fait appel à la procédure onSaveFile() quand la sauvegarde est terminée ou qu'il y a une erreur durant la sauvegarde. L'un ne va pas sans l'autre.


donc c'est bien ce que j'avais compris, si y'a erreur durant la sauvegarde, faut pas "juste" afficher un message "ça a foiré..." et bast' mais traiter l'erreur, chercher pourquoi...
ça correspond grosso modo au try - catch du C# VB.net Javascript etc

vu également.
Par défaut, Internet Explorer alloue 10 Mo par espace de stockage, et les autres navigateurs (Firefox, Chrome, Opera, Safari) 5 Mo par domaine.
source -> dans le paragraphe "Examen et espace alloué" https://www.alsacreations.com/article/lire/1402-web-storage-localstorage-sessionstorage.html

Patrick


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

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