LOGICIEL DE SAUVEGARDE DES CONNAISSANCES

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 22 févr. 2005 à 13:02
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 - 10 oct. 2007 à 13:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29703-logiciel-de-sauvegarde-des-connaissances

cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
10 oct. 2007 à 13:42
Salut,

Désolé, j'ai pas vraiment eu le temps de m'y remettre ces derniers jours. Je vais tenter de faire ça dès que possible !
cs_platinum07 Messages postés 11 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 1 août 2006
10 oct. 2007 à 13:28
salut !

du nouveau ?
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
3 oct. 2007 à 16:07
Re !

En fait, je pensais faire une évolution de l'outil en question. Je ne sais pas si tu as remarqué, mais le fait de mettre des lourdes images dans la zone de texte par le biais de copiers-coller fait que la sauvegarde et le chargement du fichier sont lents (sérialisation lente). J'ai un moyen de remédier à ça : faire un fichier zip qui contient une sérialisation de l'objet principal, ainsi que des rtf qui correspondent chacun à une connaissance. J'ai déjà testé la méthode ailleurs sans la mettre en place ici, et je sais faire. Une petite utilisation des références faibles pourrait d'ailleurs améliorer grandement l'outil (j'ai fait une source là dessus, si tu veux aller y jeter un coup d'oeuil).

Je m'y mets dans les heures/jours à venir.
cs_platinum07 Messages postés 11 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 1 août 2006
3 oct. 2007 à 15:58
ah ! peut-être voudrais-tu jeter un oeil ou repartir de ce que j'ai fait avec ta source..
si c'est le cas, fais moi signe ! ;)
cs_platinum07 Messages postés 11 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 1 août 2006
3 oct. 2007 à 15:56
bon pour info, je l'ai mis au "goût du jour", simplement en corrigeant les erreurs générées par VS.net 2005 sous le framework 2.0. Le RaftContainer ne faisant plus parti du FW(remplacé par les ToolStripContainer), j'ai retiré les morceaux de code y faisant référence et ai adapté la propriété Dick de chaque contrôle "majeur" pour que le rendu soit identique à ta version de départ.
Si tu mets ce projet de côté, je m'attelerais bien à la mise place d'un système de recherche par mots-clés et un affichage d'un ListView (nouveau panel dans le SplitContainer principal ?) afin profiter pleinement de l'outil. :)
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
3 oct. 2007 à 14:20
Platinum07 -> Je dois pouvoir retrouver ça dans mes vieux cartons, effectivement. J'y regarderais dès que j'en aurais le temps et je posterais une nouvelle version.
cs_platinum07 Messages postés 11 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 1 août 2006
3 oct. 2007 à 12:37
Bonjour yoannd !
l'application a l'air sympa mais plus trop compatible avec l'actuel Framework 2.0, très différent de la bêta (RaftingContainer, etc.. plus dispo). Je voudrais simplement savoir si tu as adapté, voire redéveloppé cette application avec le FW 2.0.
merci !
Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005
19 mars 2005 à 12:28
>> Les plus de la version 2 du framework sont à priori difficiles à détecter

Honnêtement je ne compte plus les améliroations par apport au Framework v1.1 et Visual Studio 2005, et pourtant j'utiles qu'une petite partie du Framework (je fais pas ASP.NET, pas ADO.NET, pas de Remoting, pas de Web Services)

-les améliorations de C#: les génériques (qui justifient à eux seuls à mon avis le passage au Framework 2.0), la possibilité de ne pas avoir la même accessibilité pour 'get' et 'set' d'une propriété (plus de SetXXXInternal), les méthodes anonymes...
-grâce aux génériques et à EventHandler<T> on n'a plus à créer un délégué pour chaque type d'événement (même si on doit toujours créer l'EventArgs)
-les collections génériques plus performantes que les collections pour les types valeurs, on n'a plus à créer des collection personalisées tout le temps
-quand on ajoute un fichier à une ressource ResX, Visual Studio ne copie plus le contenu du fichier en Base64 dedans mais spécifie un lien vers le fichier spécifié (moins de gâchis d'espace pour les ressources)
-générations de wrappers pour les ressources
-les classes statiques
-compression GZip et Deflate (Zip)
-gestion des permissions Windows avec les ACLs (pas essayé mais ca a l'air super puissant et beaucoup plus simple que les API de Windows)
-String.IsNullOrEmpty
-[Type scalaire].TryParse
-on peut lancer un thread avec un paramètre avec ParameterizedThreadStart
-une classe StopWatch qui permet de faire des mesures de performances très précises (équivalent à QueryPerformanceCounter de Windows)
-tous les nouveaux contrôles WinForms (nouveaux menus, barre d'outils, un SplitContainer plus facile à utiliser, meilleure support des thèmes de Windows XP)
...
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
16 mars 2005 à 22:05
:)

En fait, tu as raison, la version beta doit certainement être incomplète et pas complètement testée non plus. Cependant, moi, j'adore tester des trucs, même si c'est pas une version finale. Les plus de la version 2 du framework sont à priori difficiles à détecter, à part si on lit la doc et plus précisément les "wat's new". On se rend compte des petits plus ajoutés comme les ports com, une meilleure gestion de la transparence des contrôles (enfin je crois)... tout un tas de petits détail quoi... Trouver ces petites différences par le fait du hasard me fait toujours un peu marrer ! lol. Non, plus sérieusement, j'ai fait ca avec le framework 2 aussi parceque c'est un logiciel créé pour apprendre (dans son concept, mais aussi dans le fait que je propose le code aux autres développeurs). Utiliser le framework pour un projet comme celui-ci, c'est un peu comme dire "hmmm, voyons ce que ce truc à dans le ventre".

Enfin voila... Au fait, désolé pour le ton de mon précédent post. J'avais aucunement l'intention d'être agressif, et pourtant, quand je relis le post, je trouve qu'il est pas très "tendre" ! lol... enfin bref, faut le lire sur le ton de la discution courtoise et distinguée (un peu à la Bernard Pivot, you see ?)

Tchao
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
16 mars 2005 à 17:22
lol non du tout de 1 ce n'est pas un forum et de 2 si il mette aux yeux de tout le monde la beta c'est qu'elle a des atouts en plus et ça je le nie pas, car il ne faut pas l'oublié c'est la première qui intègre la gestion du port com. Mais bon pour moi tout ce qui n'est pas en version final n'est pas fiable. Donc il faut éviter de programmer avec. Pour ce qui est de la recompilation bien sur qu'on peut toujours le faire et c'est meme ce que j'ai fait, juste dommage que le fichier projet marche pas chez moi :( faut tout faire à la main, mais bon comme tu dis ça n'enlève rien à la qualité de ton travail ;)

Amicalement tmcuh
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
15 mars 2005 à 22:10
hmmmmm... c'est pas très fondé, comme reproche. tu as des exemples de trucs qui ne fonctionent pas avec la beta 2 ?

Et d'ailleurs, le fait que ce soit compilé avec la v2.0 ne t'empèche pas de recompiler avec la version 1, si ca t'amuse. De plus, ça n'enlève aucunement de la qualité (ou de la non qualité) à mon code. Enfin bref, je suis pret à entendre tes arguments contre le framework 2, ca peut être interessant d'engager un débat là-dessus, même si je sais très bien que ca va finir comme d'habitude : les pro et les anti-microsoft... :)
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
15 mars 2005 à 19:50
qu'il n'est qu'en version béta, déjà chez microsoft la version final est pas toujours top, alors en béta :s ...
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
15 mars 2005 à 09:46
Qu'es ce que tu reproches au framework 2.0 ?
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
15 mars 2005 à 09:37
par contre j'ai parlé un peu trop vite... tu as fait ça en framework 2.0 :(
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
25 févr. 2005 à 16:31
Merci pour les infos :)

Pour ce qui est des commentaires, le pire, c'est que je le savais, mais j'avais oublié ! lol
Bref, je suis en train d'ajouter mes commentaires au code, ce qui le rendra plus lisible, et je vais certainement ajouter une ou deux fonctions prochainement qui concerneront :
- La liste des fichiers récents
- La détection des modifications du fichier s'il est modifier en dehors du logiciel (tu sais, le genre de truc qui te dis "Le fichier a été modifié par un autre programme, voulez-vous le recharger ?")...
- La gestion des langues par l'intermédiaire des resources...
- L'enregistrement automatique (toutes les 5 minutes, par exemple).

Bref, je pense que je peux trouver pas mal d'idées pour faire de ce logiciel quelque chose de pas trop mal.
Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005
25 févr. 2005 à 13:49
Salut Yoann,

j'ai juste deux petits commentaires pour tes commentaires:

2: C'est vrai que j'avais pas pensé à ça :) sinon avec Visual Studio 2003 le débogueur récupérait ce qu'on écrivait dans la console pour l'afficher dans la fenêtre de sortie, mais plus avec la version 2005 (beta 1 en tout cas), donc faut utiliser Debug pour faire la même chose, c'est dommage.

4: Pour les infos de complétion, on peut les mettre dans le code en rentrant /// devant la déclaration d'une classe, d'une méthode, d'un propriété, etc, et l'éditeur de code rajoute des balises XML qu'on a plus qu'à remplir, par ex:

/// <summary>
/// Représente un bloc de données.
/// </summary>
public struct DataBlock
(...)
/// <summary>
/// Tableau d'octets contenant le bloc de données.
/// </summary>
public byte[] Data
{
get
{
return data;
}
}
(...)
/// <summary>
/// Lit des données depuis un flux et les copie dans le bloc.
/// </summary>
/// Flux depuis lequel lire les données.


/// Offset du début des données à écrire dans le bloc.


/// <returns> Nombre d'octets lus. </returns>
public int Read( Stream s, int dstOffset )

Voilà, voilà, j'espère que ces deux commentaires t'aideront un peu dans ton projet :)

Xya
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
25 févr. 2005 à 10:19
Salut Xya,

En effet, certaines choses sont à revoir dans mon code et je te remercie autant pour tes informations, que pour avoir pris le temps de regarder le code.
J'ai cependant quelques trucs à rajouter... prennons points par points.

1 -dans Serialize et Deserialize tu ouvres ou tu crées un fichier et tu ne le fermes pas de façon sûre (try ... finally ou using), si une exception est levée à la ligne avant l'appel à Close le fichier ne sera pas fermé
--> Très juste, je corrige la chose de suite, et j'essaye une autre méthode.

2 -toujours dans ces mêmes fonctions tu affiches le message d'erreur dans la console alors que c'est un programme WinForms, je vois pas l'intérêt...
L'intérêt est en fait pour le développement du logiciel. Je préfère mettre mon programme en mode console lorsque je développe, et ainsi récupérer les erreurs par le biais de la console. Une fois le logiciel "terminé" (ou du moins mis à disposition des utilisateurs), je le remet en winform simple. Lorsqu'une erreur survient au chargement ou à l'enregistrement du fichier (par exemple), j'affiche un message à l'utilisateur par le biais d'une messagebox, mais je ne veux pas forcément que l'utilisateur soit perdu dans des informations de déboggage trop complexes... voila voila... :)


3 -à chaque sérialisation/désérialisation tu crées un nouvel BinaryFormatter, alors que tu pourrais le créer dans le constructeur de ta classe et économiser des ressources après plusieurs appels -ou-
-si l'objet ne sert que pour une seule sérialisation, rendre les deux fonctions staiques et rajouter un argument (obj à la place du champ m_Obj)

--> Très juste, je choisis la première solution. Par contre, il semble que l'objet BinaryFormatter n'ait pas de destructeur...

4 -tu mets des attributs inutiles puisqu'ils se 'contredisent':
[DefaultValue(typeof(Object), ""),
CategoryAttribute("Object Type"),
DescriptionAttribute("Defines the object's type."),
Browsable(false)]
--> Très juste aussi, mais il y a une raison. Il arrive que parfois, je choisisse de mettre browsable ou non certains
attributs... enfait, celà varie parfois de mon humeur ! lol. Mais la principale rainson, c'est que je me disais que Visual Studio devait certainement afficher les infos mises ici dans la completion du code (tu sais, l'espèce de petit tooltip text). Bref, je voulais tester ca, et en fait, j'ai du être dérangé pendant que j'écrivais le code, ou un truc dans le genre, ce qui fait que j'ai oublié de tester si Visual Studio affichait cette info dans l'éditeur de code. Et comme il ne le fait pas, ben forcément, ca sert à rien de mettre ce code... enfin bref...

5 - -autre part dans ton code, dans ShellExtension, dans SetupKeys tu ne fermes aucune clée de registre que tu ouvres, ça fait peur à voir...
---> Ce code a été pompé sur un site, je sais plus lequel... enfin ca ne m'excuse pas parceque j'aurais du voir l'erreur aussi... bref, je corrige.

6 -quelque part au hasard dans TextEditor

KnownColor enumColor = new KnownColor();
Array Colors = Enum.GetValues(enumColor.GetType());

ce serait plus simple de faire
Array Colors = Enum.GetValues(typeof(KnownColor));
---> Mouis, en effet, c'est plus mieux, bien que ce soit pas non plus super grave.


Bref, je te remercie pour tes remarques qui contribue à faire de ce programme quelque chose d'un peu mieux.

Je posterai une mise à jour dans quelques temps pour corriger tout ca, et aussi pour apporter des commentaires à mon code.

Bye

Yoann
Xya Messages postés 103 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 24 novembre 2005
25 févr. 2005 à 01:06
Honnêtement l'idée est bonne mais le code présenté sur la capture (et qu'on retrouve dans ta source) n'est pas top:

-dans Serialize et Deserialize tu ouvres ou tu crées un fichier et tu ne le fermes pas de façon sûre (try ... finally ou using), si une exception est levée à la ligne avant l'appel à Close le fichier ne sera pas fermé
-toujours dans ces mêmes fonctions tu affiches le message d'erreur dans la console alors que c'est un programme WinForms, je vois pas l'intérêt...
-à chaque sérialisation/désérialisation tu crées un nouvel BinaryFormatter, alors que tu pourrais le créer dans le constructeur de ta classe et économiser des ressources après plusieurs appels -ou-
-si l'objet ne sert que pour une seule sérialisation, rendre les deux fonctions staiques et rajouter un argument (obj à la place du champ m_Obj)
-tu mets des attributs inutiles puisqu'ils se 'contredisent':

[DefaultValue(typeof(Object), ""),
CategoryAttribute("Object Type"),
DescriptionAttribute("Defines the object's type."),
Browsable(false)]

le 2eme et le 3eme décrivent la propriété si elle est affichée dans un éditeur (PropertyGrid) et le 4eme indique qu'il ne faut pas l'afficher...
-autre part dans ton code, dans ShellExtension, dans SetupKeys tu ne fermes aucune clée de registre que tu ouvres, ça fait peur à voir...
-quelque part au hasard dans TextEditor

KnownColor enumColor = new KnownColor();
Array Colors = Enum.GetValues(enumColor.GetType());

ce serait plus simple de faire
Array Colors = Enum.GetValues(typeof(KnownColor));

Enfin voilà, il reste quelques petites choses à améliorer dans ton code même si l'idée reste géniale.
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
23 févr. 2005 à 16:19
WOW ! Merci ;-)
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
23 févr. 2005 à 16:18
sans ouvrir le zip 10 rien que pour le principe. Vraiment une bonne idée.
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
23 févr. 2005 à 16:05
Le zip a été rajouté ;)
cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
22 févr. 2005 à 13:04
Autant pour moi
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
22 févr. 2005 à 13:02
Euh, quelqu'un voit un zip ???