Thotbox - application collaborative de partage de codes sour

Sujets variés concernant le développement en PureBasic
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: application collaborative de gestion de code source

Message par Geo Trouvpatou »

Maintenant Typhoon va devoir tirer à pile ou face :lol:.

@Guimauve : Hormis que je n'aime pas le résultat de "Debug Directory" à cause du double slash/backslash final, pas mal le FileSize(Directory) sur le chemin final.
Tu aurais aussi pu mettre FileSize(Path).
Ta procedure supprime l'addition à chaque dossier créé.
On pourrait faire un bench si on devait créer 30 millions de dossiers, mais là, j'pense que ça va pas être la peine :mrgreen:.

Maintenant Guimauve si on veut optimiser ton code.
1) Remplacer PathSep par une constante, fait que celle-ci est remplacé par sa valeur à la compil, alors que PathSep prend de la place en mémoire (J'espère pas dire de bêtise).
2) Pour supprimer une autre variable (Success), tu pourrais faire ça :

Code : Tout sélectionner

If FileSize(Directory) = -2
      ProcedureReturn #True
Else
      ProcedureReturn #False
EndIf
Je n'ai aucun problème à ce que ce soit ta solution qui soit choisie.


Pour le Futur du développement, il faudrait peut-être penser à mettre :

Code : Tout sélectionner

; Utile pour la portabilitée du code.
CompilerSelect #PB_Compiler_OS
      CompilerCase #PB_OS_Windows : #EOL$ = #CRLF$ : #SeparatorDir = "\"
      CompilerCase #PB_OS_Linux   : #EOL$ = #LF$ : #SeparatorDir = "/"
      CompilerCase #PB_OS_MacOS   : #EOL$ = #CR$ : #SeparatorDir = "/"
CompilerEndSelect
pour la suite des Procedure ajoutées/modifiées.

J'ai pris ma version (Qui est d’ailleurs de Progi1984 à la base), parce que je trouve que les constantes rendent le code plus clair.

Après il faudrait décider du nom à donner : #SeparatorDir, #PathSep, #DirectorySep etc...

A plus.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: application collaborative de gestion de code source

Message par Guimauve »

@Geo Trouvepatou

Lorsque j'écris un code il y a quelques règles strictes en place :

- 1 instruction = 1 ligne de code (Pas de ":" entre deux instructions sur la même ligne)
- 1 ProcedureReturn par procédure (À moins d'être vraiment, vraiment pris au pied du mur)
- Aucun Goto, GoSub, FakeReturn ou Return
- Aucunes variables Globales
- Aucunes variables en vrac dans le code, à l'exception des variables de contrôles de boucle ou de travail local dans une procédure
- Programmation Basée Objet (Objet = Structure) Idéalement 1 fichier = 1 structure
- Les chemins d'accès aux membres d'une structure sont "Wrapés" dans des macros

Disons que dans le cas de ThothBox, je ne peux pas imposer ces règles de manière aussi agressive que lorsque je travaille seul ou lorsque je suis le chef de projet.
Pour les constantes de portabilité, je suggère de les groupés sur un seul et même fichier et les organiser comme ceci :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Constants usefull for code portability

CompilerSelect #PB_Compiler_OS
    
  CompilerCase #PB_OS_Windows 
    #EOL$ = #CRLF$
    #DirectorySeparator = "\"
    
  CompilerCase #PB_OS_Linux   
    #EOL$ = #LF$ 
    #DirectorySeparator = "/"
    
    #White = 16777215
    #LightGray = 15132390
    #Gray = 12500670
    #DarkGray = 6908265
    #Red = 255
    #Orange = 32767
    #Gold = 49151
    #Yellow = 65535
    #Green = 65280
    #DarkGreen = 32512
    #Chartreuse = 65407
    #SeaGreen = 32575
    #Aquamarine = 12582783
    #Turquoise = 12566335
    #Blue = 16711680
    #DarkBlue = 12517376
    #Cyan = 16776960
    #Purple = 16711850
    #Lavender = 16760767
    #Magenta = 16711935
    #Brown = 3755147
    #Black = 0
    
  CompilerCase #PB_OS_MacOS
    #EOL$ = #CR$ 
    #DirectorySeparator = "/"
    
    #White = 16777215
    #LightGray = 15132390
    #Gray = 12500670
    #DarkGray = 6908265
    #Red = 255
    #Orange = 32767
    #Gold = 49151
    #Yellow = 65535
    #Green = 65280
    #DarkGreen = 32512
    #Chartreuse = 65407
    #SeaGreen = 32575
    #Aquamarine = 12582783
    #Turquoise = 12566335
    #Blue = 16711680
    #DarkBlue = 12517376
    #Cyan = 16776960
    #Purple = 16711850
    #Lavender = 16760767
    #Magenta = 16711935
    #Brown = 3755147
    #Black = 0
    
CompilerEndSelect
Et pour la commande de création de répertoire, voici le code corrigé :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : BuiltPathDirectory()
; Nom du fichier : BuiltPathDirectory.pbi
; Version du fichier : 1.0.1
; Programmation : OK
; Programmé par : Guimauve
; Date : 29-04-2008
; Mise à jour : 14-09-2011
; Codé avec PureBasic V4.60
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure.b BuiltPathDirectory(Path.s)
  
  CompilerSelect #PB_Compiler_OS
      
    CompilerCase #PB_OS_Windows 
      #PathSep = "\"
      
    CompilerCase #PB_OS_Linux
      #PathSep = "/"
      
    CompilerCase #PB_OS_MacOS
      #PathSep = "/"
      
  CompilerEndSelect
  
  If Right(Path, 1) <> #PathSep
    Path + #PathSep 
  EndIf
  
  DirectoryQty = CountString(Path, #PathSep)
  
  For DirectoryID = 1 To DirectoryQty
    
    Directory.s = Directory + StringField(Path, DirectoryID, #PathSep) + #PathSep

    If FileSize(Directory) <> -2
      CreateDirectory(Directory)
    EndIf 
    
  Next
  
  If FileSize(Directory) = -2
    Success.b = #True
  Else
    Success = #False
  EndIf

  ProcedureReturn Success
EndProcedure

; Debug BuiltPathDirectory("toto\titi\vovo\aze") ; Windows
; BuiltPathDirectory("toto/titi/vovo/aze") ; Linux

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Et celle que je propose pour Thothbox en fonction des constantes données plus haut :

Code : Tout sélectionner

Procedure.b CreatePath(Path.s)
  
  If Right(Path, 1) <> #DirectorySeparator
    Path + #DirectorySeparator
  EndIf
  
  DirectoryQty = CountString(Path, #DirectorySeparator)
  
  For DirectoryID = 1 To DirectoryQty
    
    Directory.s = Directory + StringField(Path, DirectoryID, #DirectorySeparator) + #DirectorySeparator
    
    If FileSize(Directory) <> -2
      CreateDirectory(Directory)
    EndIf 
    
  Next
  
  If FileSize(Directory) = -2
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
  
EndProcedure
Moi je pars en visite chez ma mère cette week-end (environ 200 km pour y aller) je ne pourrai donc pas toucher à Thothbox avant la semaine prochaine.

A+
Guimauve
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: application collaborative de gestion de code source

Message par Geo Trouvpatou »

Guimauve a écrit :Disons que dans le cas de ThothBox, je ne peux pas imposer ces règles de manière aussi agressive que lorsque je travaille seul ou lorsque je suis le chef de projet.
On propose et ensuite Thyphoon et ceux du projet décident de si c'est bon pour le projet ou rejettent l'idée.
c'est la démocratie de l'open-source :wink:.

@Typhoon : Ce serait bien de mettre le lien de googleCode de la page 7 sur ton tout premier post.

Bye.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: application collaborative de gestion de code source

Message par djes »

Comme nous travaillons avec SVN (via tortoise ou notre appli ;)), vous pouvez tester en direct sur le serveur vos modifications. N'hésitez pas, on peut facilement revenir en arrière, corriger les erreurs, etc. Moi je suis vraiment ouvert aux modifications, y compris de la structure du projet.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: application collaborative de gestion de code source

Message par djes »

Ce serait bien de changer le titre du sujet sur le forum : Thotbox - application collaborative de partage de codes sources
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Thotbox - application collaborative de partage de codes

Message par Thyphoon »

Bonjour,

j'ai changer le titre du sujet et le premier message.
Comme j'ai reçu plusieurs message privé me demandant ou nous en sommes, il faut savoir que actuellement Guimauve est en train de nous faire un gros travail ne nettoyage du code et de rendre le code compatible pour une version linux. Mais comme le week-end dernier et en début de semaine il était pas mal occupé sur d'autre plan... on devrait pas tarder a avoir de nouveau de ses nouvelles.
Une fois le code propre... nous déciderons tous ensemble des améliorations a apporter !
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Thotbox - application collaborative de partage de codes

Message par Guimauve »

Bonjour à tous,

Effectivement j'ai été très occupé lundi, mardi et hier où j'ai sollicité quelques employeurs potentiels pour un poste dans leurs entreprises. Faut laisser agir avant de voir des résultats, je vais tout de même faire un suivit soit la semaine prochaine ou l'autre.

À propos de Thothbox, j'allais justement m'entretenir avec Thyphoon pour avoir sont avis sur le code que j'avais fait pour voir s'il était judicieux de prendre ma version et remplacer le code actuel. Mais à la suite de la lecture du dernier message je pense que ce sera ma version qui sera utilisé.

Présentement, j'essaie encore de trouver une application compatible Linux pour SVN mais ça fonctionne pas très bien pour le moment. J'essaie avec RapidSVN mais ce dernier me retourne le message d'erreur (405 Method Not Allowed). Puisque pour moi c'est la première fois que je travaille avec un truc du genre, cela peut me prendre du temps pour rendre le tout opérationnel.

Il faudrait que je regarde également du coté du FrontEnd disponible dans le dépôt de Thothbox pour voir si ça ne pourrait pas mieux fonctionner. Je vais faire des tests durant la journée et j'espère réussir avant que tout le monde soit parti dormir. (C'est pas évident avec un décalage horaire de 6 heures, ça m'enlève du temps...) Dans le pire des cas Thyphoon et Djes ont un lien de téléchargement des sources modifiés, si je n'ai pas réussi d'ici demain je vais mettre à jour l'archive et quelqu'un pourra peut-être mettre à jour le dépôt.

A+
Guimauve
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Thotbox - application collaborative de partage de codes

Message par Thyphoon »

Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Thotbox - application collaborative de partage de codes

Message par Guimauve »

Je viens de l'installer, je vais voir ce que ça donne.

Édit :
Ça semble ne pas fonctionner sur un système 64 bits

A+
Guimauve
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Thotbox - application collaborative de partage de codes

Message par djes »

Même si elle n'est pas au niveau de tortoise, notre frontend donne de très bons résultats. Je m'en sers couramment pour notre projet. Ca évite de se taper les lignes de commande SVN.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Thotbox - application collaborative de partage de codes

Message par Guimauve »

djes a écrit :Même si elle n'est pas au niveau de tortoise, notre frontend donne de très bons résultats. Je m'en sers couramment pour notre projet. Ca évite de se taper les lignes de commande SVN.
Elle ne compile pas sous Linux à cause de cette commande :

Code : Tout sélectionner

GetKeyState_(#VK_RETURN) > 1
Je pense qu'il faudrait la remplacer par un raccourci clavier pour une meilleur portabilité du code. Pour le moment, je la mets en commentaire. Il y a également cette commande :

Code : Tout sélectionner

URLDownloadToFile_()
Elle vient de l'API Windows. Je présume que cette commande lance une requête de téléchagement et enregistre le fichier là où demandé.

Pas facile l'écriture d'un programme multi plate-forme...

A+
Guimauve
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Thotbox - application collaborative de partage de codes

Message par djes »

Voilà, ces deux fonctions sont corrigées et devraient fonctionner sur Linux.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Thotbox - application collaborative de partage de codes

Message par Thyphoon »

djes a écrit :Voilà, ces deux fonctions sont corrigées et devraient fonctionner sur Linux.
super :o) merci Djes ! tu les a envoyé a Guimauve ?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Thotbox - application collaborative de partage de codes

Message par djes »

Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Thotbox - application collaborative de partage de codes

Message par Thyphoon »

djes a écrit :Ben euh! C'est là quoi ! https://pb-source-repositery.googlecode ... /Thothbox/
ok :) je crois que c'était son souci de ne pas réussir a accéder au svn :p mais bon il peut récupérer les fichiers via le http !
Répondre