Project

General

Profile

BORDEL » History » Version 6

Greg Burri, 01/26/2011 04:48 PM

1 1 Greg Burri
h1. TODO
2
3
h2. Notes
4
5
* Regarder du coté de qTorrent pour voir comment sont packagé les dll de Qt : http://qbittorrent.sourceforge.net/
6
7
* How a user can choose a shared directory when the core is remote ? The choose dialog must show the remote file structure !? See here : http://doc.trolltech.com/4.5/qfiledialog.html#setProxyModel
8
9
* Serveur d'intégration, tâches quotidiennes (dans l'ordre) :
10 4 Greg Burri
** Création d'un dossier d nommé avec la date courante
11
** Pull du repo d'integration depuis le repo de reference
12
** Génération de la doc (doxygen)
13
** Compilation de tous les composants (+ tests) en debug et en release -> rapport 'compilation.log' dans d
14
** Execution des tests de chaque composants -> rapport 'tests.log' dans d
15
** Réalisation de versions d'installation : debug + release -> rapport 'install.log' + les installs (.deb, install.exe) dans d
16
** Pouvoir afficher les rapports dans redmine ?
17 1 Greg Burri
18 6 Greg Burri
* Pouvoir mettre un commentaire pour chaque shared directory, celui ci s'affiche alors sous la forme d'un tooltip lors du browsage
19 1 Greg Burri
20
* Pouvoir changer de langue à la volé dans les options. La langue par défaut est définit à l'installation.
21
22 5 Greg Burri
* Afficher les shared folder avec une couleur différente par volume
23 1 Greg Burri
24
* Prendre en compte le 64 bits ? Idéalement il faudrait que l'installeur inclut les deux versions et choisisse à l'installation en fonction de la plateforme courante.
25
26
27
* Mettre à jour protobuf et l'utiliser comme dll (comportement par défaut à partir de la 2.3
28
29
30
* Faire attention au erreur d'allocation throwé par new, les catcher (std::bad_alloc). Est-ce que cette exception peut être lancé depuis Qt ? (par exemple lors de l'insertion d'un élément dans un tableau). Est-ce vraiment utile ?
31
32
33
* Utilisation de splice pour les transferts ? : 
34
35
Linux : http://www.kernel.org/doc/man-pages/online/pages/man2/splice.2.html
36
Windows : http://msdn.microsoft.com/en-us/library/ms740565%28VS.85%29.aspx
37
Déroulement :
38
1) peerManager ~> uploadManager.newUpload(socket)
39
2) upload -> fileManager.getChunk(hash).sendChunkToSocket(offset, socket)
40
41
    * Pour protéger le cache de fichier un QReadWriteLock pourrait être pas mal :
42
    * Lors de la mise à jour un lock de type write est posé
43
    * Lors d'une recherche c'est un lock de type read qui est utilsé.
44
45
Cela peut permettre de faire plusieurs recherches simultanéments.
46
47
* Il faut prévoir de pouvoir modifier dynamiquement le nombre de 'chunk downloader' (via des settings)
48
49
* Afficher un splash screen pour la version beta publique du type : "Attention, Ceci est une version BETA, à n'utiliser qu'à des fin de tests!
50
51 4 Greg Burri
une anomalie peut être reporté ici : <redmine>"
52 1 Greg Burri
53
* Logger toutes les prises de lock, les attentes, la création et la descruction des threads, etc..
54
55
* Concernant l'i18n :
56 4 Greg Burri
** Choisir à l'installation, présélectionner en fonction de la langue du système
57
** La langue est stocké dans un fichier de paramètre (dossier utilisateur ou base de registre)
58
** Tous les fichiers de langue compilés sont installé
59
** Un fois installé, dans les paramètres du logiciel il est possible de switcher dynamiquement de langue.
60 1 Greg Burri
61
* La vitesse de hashage d'un ensemble de fichiers DOIT être plus rapide que celle de DC++ (pas forcément moins économe en CPU). Utilisation de plusieurs threads si plusieurs disques durs.
62
* ça va être difficile car on utilise sha-1 qui demande plus d'effort à calculé que Tiger-Hash
63
* Un thread par partage ?
64
65
66 4 Greg Burri
* Bien penser la sécurité notamment au niveau d'attaque par flood ou d'usurpation d'id, réaliser un ban d'IP si nécessaire. Écrire ici toutes les possibilités d'attaque : http://dev.euphorik.ch/wiki/pmp/Security
67 1 Greg Burri
68 4 Greg Burri
* Créer un système d'envoie de rapport d'erreur automatique incluant le log et le message d'erreur ainsi qu'un maximum d'autres infos (hardware, software?). Post sur HTTP ? (Attention aux données personnelles)
69 1 Greg Burri
70
* Passer en revu les bugs de DC++ pour éviter de refaire les mêmes erreurs :) : https://bugs.launchpad.net/dcplusplus/+bugs
71
* Ainsi que les problèmes décrits dans la FAQ : https://answers.launchpad.net/dcplusplus/+faqs
72
73
* Mettre en place une team de développement 'Ek dev Team'
74
75
* Utiliser les notifications de Win7 (pour le Core). Voir si Qt fournit une abstraction.
76
77
* Recherche de phrases tel que "I have a dog", utilisation de guillemets comme pour google :
78
79
1) chercher le noeud correspond à chaque mots "i", "have", "a", "dog"
80
2) prendre le noeud ayant le moins d'élément
81
3) tester la phrase avec chaque élément du noeud
82
83
* Voir cette page pour des algos de recherche dans des chaines : http://en.wikipedia.org/wiki/String_searching_algorithm
84
85 4 Greg Burri
* Voir cette page pour de l'allocation par block (pool) : http://www.flipcode.com/archives/Fast_Allocation_Pool.shtml -> A été essayé sans grande différence sur le word index
86 1 Greg Burri
87
* Chat - Rooms
88
** La liste des rooms est listés en dessous de la liste des peers. Un textbox suivit d'un bouton 'join' se trouve just au dessus, il permet d'entrer le nom d'une room et de la rejoindre, si la room existe déjà on la rejoint sinon elle est créé. Il est possible de sélectionner une room existante, son nom s'inscrit alors dans la text box. En double cliquant sur une room existante on la rejoint automatiquement.
89
** Les rooms sont listées par ordre alphabétique et le nombre de participant est indiqué
90
** Lorsque que l'utilisateur joint une room un nouvelle fenêtre lui étant dédié s'affiche. Cette fenêtre montre sur le coté les personnes présente dans la room.
91
** Lors de la création d'une room, un hash généré aléatoirement lui est associé. La room est alors mise dans les rooms connues et l'utilisateur est définit comme faisant partie de la room.
92
** Les rooms dans lesquels on se trouve sont envoyées périodiquement via le message 'IMAlive'.
93
** Lorsqu'une room est vide, plus personne ne la liste dans le message 'IMAlive', elle disparait alors naturellement.
94
** Lorsqu'un message est envoyé dans une room, un datagrame UDP est envoyé à chaque personne de la room
95
96
* Chat - Private Rooms
97
** Les private rooms ne sont joignable que sur invitation
98
** Elles ne sont pas envoyé dans le message 'IMAlive'.
99
** L'envoie d'un message se fait de la même manière qu'une roome publique
100
** Pour inviter une personne on lui envoie simplement le nom de la room, son id et les participants, il peut décliner
101
** S'il accepte il le s'annonce auprès de tous les participants
102
** Une personne peut quitter une room, il le signale aux participants.
103
*** Une private room peut-être transformé en public room mais pas l'inverse
104
105
* Chat - privé entre deux personnes
106
** Une personne peut initier un dialogue privé avec une autre personne de la liste via le menu contextuel
107
** Dans ce cas une private room est créé entre les deux personnes
108
** D'autres personne peuvent être inviter à joindre la discussion
109
110 4 Greg Burri
* Chat - Lors du lancement permettre au GUI de récupérer les n derniers message (chat) :
111
** Un datagramme multicast est envoyé, "GET_NB_CHAT_MESS_KNOWN"
112
** Un datagramme unicast est retourné : "NB_CHAT_MESS_KNOWN" avec le nombre de message connu
113
** Une connexion TCP est ouverte  vers le peer avec un nombre de messages connu suffisant et les derniers messages lui sont demandé.
114
** Chat message doit être tagé avec un ID pour éviter d'insérer des messages à double
115
116 1 Greg Burri
* Est-ce que Common::Hash doit être "thread-safe" ? (macro à activer)
117
118 4 Greg Burri
* En même temps que la première release, publier une documentation sur le protocole utilisé dans redmine. Sous la forme d'un pdf?
119 1 Greg Burri
120
* Packaging
121
* Slogan : "For Great Justice!"
122
* Logo : un vaisseau spatial (remake du vaisseau dans Zero wings) suivit du texte AYBABTU écrit de manière futuristique (et penché^^)
123
* (mieux) Ou une tentacule stylisé en référence aux monstres du jeu. La tentacule pourrait encercler un fichier en rapport aux 'byte'
124
* Couleur : noir, rouge et bleu (voir le site 'coming soon')
125
* Style oldschool
126
* Features :
127
* No configuration needed, just launch and download
128
* Very low ressource usage : you can play a game and download in the same time
129 4 Greg Burri
* Utiliser un site spécialisé dans le streaming de fichiers pour la distribution des releases : http://put.io
130 1 Greg Burri
131
* Problème subtile au sujet des dossiers partagé en sortie (read/write) :
132 4 Greg Burri
** Deux dossiers partagés a et b
133
** un ensemble de dossiers/sous-dossiers sont téléchargés et vont dans a
134
** a n'a plus de place
135
** b est donc choisit comme destination, les dossiers/sous-dossiers sont alors recréé à double, il appartiendra à l'utilisateur de merger ces deux dossiers
136
** Dans un cas très dégénéré un ensemble de dossiers/sous-dossiers peuvent être éclaté sur n partage
137
** Solution actuelle : l'utilisateur se démerde ;)