MOD mise à jour mineur sur la présentation du code
authorGreg Burri <greg.burri@gmail.com>
Mon, 3 Mar 2008 14:04:37 +0000 (14:04 +0000)
committerGreg Burri <greg.burri@gmail.com>
Mon, 3 Mar 2008 14:04:37 +0000 (14:04 +0000)
MOD quelques modifs du todo

doc/TODO.txt
modules/erl/euphorik_bd.erl
modules/erl/euphorik_deamon.erl [deleted file]
modules/erl/euphorik_minichat.erl
modules/erl/euphorik_minichat_conversation.erl
modules/erl/euphorik_protocole.erl
modules/erl/euphorik_requests.erl
modules/erl/old/euphorik_deamon.erl [new file with mode: 0755]
modules/include/euphorik_bd.hrl

index f0b48ff..f475334 100755 (executable)
 [ok] Ne pas effacer le message (dans le <input>) si l'on recoit un "pas ok" lors de l'envoie\r
 \r
 * Transfert des messages XML (AJAX) en https et le noter dans la faq (même la mafia chinoise ne peut pas sniffer les messages)
-* Problème d'utf-8 avec opera
+* Problème d'utf-8 avec opera\r
+   * Problème d'utf-8 avec firefox et konqueror (voir peut être du coté de <script charset="utf-8"...)\r
+* Tester avec des caractères exotiques (jap, coréen, etc..)
 * Utiliser une listbox pour la liste de css
-* Ralentir volontairement le connexion lors d'un mauvais login \r
+* Ralentir volontairement le connexion lors d'un mauvais login (ou après n mauvais login)\r
 * Shift-enter pour ajouter une ligne dans la ligne de saisie (retour à la ligne)\r
-  * Crée un <br /> XHTML\r
+   * Crée un <br /> XHTML\r
 * réduire les pseudo trop long en mettant un ".." à la fin et permettre de le voir en entier lorsque le curseur le survol.\r
-* Problème d'utf-8 avec firefox et konqueror (voir peut être du coté de <script charset="utf-8"...)\r
-* Tester avec des caractères exotiques (jap, coréen, etc..)\r
 * Rendre compatible IE 7\r
 * Pouvoir switcher entre un affichage "pseudo" ou "pseudo (login)"
 * Faire une page faq et raconter n'importe quoi (entre autre la limitation avec firefox) "pourquoi ce site à des couleurs qui ne veulent rien dire ?"\r
    * "interrogation" genre http://forum-images.hardware.fr/icones/confused.gif\r
    * http://forum-images.hardware.fr/images/perso/dao.gif ou http://forum-images.hardware.fr/icones/redface.gif\r
    * http://forum-images.hardware.fr/icones/ohwell.gif\r
-* Cleaner le code et eventuellement profiler un peu (le refresh est lent sous opera)\r
+* Ajouter un skin "simple" sans images ni fioritures (éventuellement le proposer par défaut)\r
+* Cleaner le code (erl, js, xhtml, css) et eventuellement profiler un peu (le refresh est lent sous opera)\r
 * Gestion de l'historique au niveau du navigateur (pouvoir revenir aux pages précédentes)\r
 * Intégrer les totoz : http://www.totoz.eu/ (avec une limite de 3 par messages par exemple) \r
    * avoir une option pour les cacher ou les voir\r
-   * Cacher systématiquement ceux qui dépassent d'une certaine taille\r
+   * Masquer systématiquement ceux qui dépassent d'une certaine taille (en pixel?)\r
    * modifier la syntaxe des smiles actuels (pour pas qu'ils entre en conflit avec totoz)\r
-* Mettre un icone (genre sablier) lorsque le chat se charge (lors changement d'un changement de page par exemple)\r
-* traitementComplet() de euphorik.js est très très lent à executer\r
-* gestin des timezone (fuseaux horaire)\r
+* Mettre un icone (genre sablier) lorsque le chat se charge (également lors d'un changement de page par exemple)\r
+* gestion des timezone (fuseaux horaire) :\r
+   * L'utilisateur peut simplement définit une timezone dans son profil, les \r
 * Créer un style "super old school" (couleur 8 bit, pas de smiles/images, font fixe)\r
 * Un statut "EK" avec plein de privilège à la con. (avoir une petite étoile à coté de son nick ou le nick d'une certaine couleur)\r
 * Tests de monter en charge coté serveur, analyse de la complexité (regarder du coté des TODO dans le code)\r
 * Profiling pour améliorer les performances (client et serveur)\r
+   * traitementComplet() de euphorik.js est très très lent à executer\r
 * Traiter les tags TODO dans le code\r
-* Ajouter un skin "simple" sans images ni fioritures\r
 \r
 -- Bugs --\r
 1 : Critique\r
 \r
 [3] Amélioration des requêtes MNESIA, voir : http://mail.google.com/mail/#label/Erlang+mailing-list/117f688280569a58\r
 [2] Quand on revient en arrière dans firefox le message en rédaction est perdu\r
-[2] En changeant de page puis en revenant sur la page principale les smiles ne sont plus highlighté lorsque le curseur les survol\r
+[2] En changeant de page puis en revenant sur la page principale les smiles ne sont plus highlightés lorsque le curseur les survol\r
 [2] Après un register le pseudo est effacé - le pseudo n'est pas mémorisé dans le profil lors d'un envoie de mess en l'ayant changé\r
 [3] "Return" ne marche pas sous safari\r
 [1] Apparement les process liés aux connexions ne sont jamais terminé même quand l'utilisateur coupe la connexion à cause de minichat:attends_nouveau_messages()\r
    * Il est possible d'ouvrir plusieurs conversation\r
    * Les messages faisant partie des conversations ne sont plus visibles dans le flux général\r
    * (une colonne peut avoir le focus, dans ce cas on répond automatiquement à la dernière personne qui nous a répondu)\r
-   \r
 [1] Avoir un thème de discussion affiché en haut des messages genre appellé "troll de la semaine" : "troll de la semaine : linux sera-t-il desktop ready en 2008?"\r
 [2] Pouvoir cacher les dates\r
 [4] Pouvoir choisir une couleur pour son pseudo\r
 [3] Gestion de l'historique (calendrier)\r
 [4] Créer un gamebot pour lancer des jeux. Par exemple un jeu d'énigmes\r
-[4] Utiliser XMLRPC ou SOAP ou JSON pour la communication client -> serveur\r
+[4] Utiliser XMLRPC ou SOAP ou JSON pour la communication client -> serveur (boah, faut pas déconner :))\r
 [4] Image animée à la http://www.google.co.kr/ cf http://www.google.co.kr//ig/f/AaEyQnOaAr4/intl/ALL_kr/svc_sprite_all.gif\r
 [4] Bot de traduction\r
 [4] RSS\r
 [4] Voir les personnes connectées\r
+[4] Avoir une liste d'amis\r
 [4] Restreindre la consultation d'un message posté à un ou plusieurs utilisateurs définis. Les messages de la conversation ne sont alors vus que par cet ensemble d'utilisateurs.\r
 [4] Plusieurs canaux\r
 \r
index 56a659a..49bb334 100755 (executable)
@@ -1,9 +1,13 @@
 % Module de création de la base de données euphorik.
-% Auteur : G.Burri
-% Date : 14.10.2007
+% @author G.Burri
 
 -module(euphorik_bd).\r
--export([create/0, create_tables/0, vers_version2/0, vers_version3/0, peupler/0, tester/0]).\r
+-export([\r
+   create/0,\r
+   create_tables/0,\r
+   vers_version/1,\r
+   peupler/0\r
+   ]).\r
 \r
 -include("../include/euphorik_bd.hrl").\r
 
@@ -43,7 +47,7 @@ create_tables() ->
    ]).
 
 
-vers_version2() ->
+vers_version(2) ->
    mnesia:transform_table(
       user,
       fun({user, Id, Cookie, Pseudo, Date_creation, Date_derniere_connexion, Css}) ->
@@ -52,8 +56,9 @@ vers_version2() ->
       record_info(fields, user),
       user
    ).
+\r
 
-vers_version3() ->
+vers_version(3) ->
    mnesia:transform_table(
       user,
       fun({user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css}) ->
@@ -73,7 +78,4 @@ peupler() ->
       end
    ).
 
-\r
-tester() ->\r
-   ok.
 
diff --git a/modules/erl/euphorik_deamon.erl b/modules/erl/euphorik_deamon.erl
deleted file mode 100755 (executable)
index a957475..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-% Module tournant en background s'occupant periodiquement de certaines tâches.\r
-% Auteur : G.Burri\r
-% Date : 05.11.2007\r
-\r
--module(euphorik_deamon).
--export([start/1]).\r
-\r
-% L'age max que peut avoir les fichier se trouvant dans le dossier 'tmp' (en second)\r
--define(AGE_MAX_TMP, 86400). % 24 heures\r
-
-% Démarre le démon
-start(A) ->\r
-   loop(A).
-\r
-\r
-loop(A) ->\r
-   verifier_tmp_captcha(),\r
-   timer:sleep(100000), %  attend 100 secondes\r
-   loop(A).
-\r
-
-% Vérifie le repertoire tmp où se trouve les captcha et efface les plus vieux.
-verifier_tmp_captcha() ->
-   ok.
-   
\ No newline at end of file
index a507027..d45ca1c 100755 (executable)
@@ -2,8 +2,7 @@
 % Ce module permet de gérer les données persistantes lié au minichat d'euphorik.ch
 % Il permet d'ajouter des message, de demande les messages sur une page donnée, etc..
 % Ce module utilise la base mnesia créée par le module euphorik_bd.
-% Auteur : G.Burri
-% Date : 22.10.2007
+% @author G.Burri
 
 -module(euphorik_minichat).\r
 -export([
@@ -35,7 +34,8 @@
    nouveau_message/3,
    reset/0,
    % reservé :
-   resultat_transaction/1]).\r
+   resultat_transaction/1\r
+]).\r
 \r
 -include("../include/euphorik_bd.hrl").\r
 -include_lib("stdlib/include/qlc.hrl").\r
index 0c762fb..57c48d6 100755 (executable)
@@ -2,10 +2,12 @@
 % Ce module permet la gestion des conversations du minichat d'euphorik.
 % Un message (enfant) peut répondre à des messages (ses parents).
 % Un message (parent) peut avoir plusieurs réponses (enfants)
-% Auteur : G.Burri
-% Date : 09.02.2008
+% @author G.Burri
 
--module(euphorik_minichat_conversation).
+-module(euphorik_minichat_conversation).\r
+-export([\r
+   conversations/4\r
+]).
 
 -include("euphorik_bd.hrl").
 -include_lib("stdlib/include/qlc.hrl").
@@ -14,7 +16,6 @@
 -import(euphorik_minichat, [resultat_transaction/1]).
 -import(qlc, [e/1, q/1, keysort/3]).
 -import(mnesia, [table/1, transaction/1]).
--export([conversations/4]).
   
    
 % Renvoie les conversations sous la forme d'une liste de conversation.
index 99eb300..2f4a5a3 100755 (executable)
@@ -1,11 +1,10 @@
 % coding: utf-8
-% Ce module gére les différents message envoyé par le client (javascript)
+% Ce module gére les différents message envoyé par le client (javascript) via AJAX.
 % Par exemple le client peut demander les derniers messages du minichat.
 % Les messages sont au format XML, la plus part des fonctions accepte un xmlDocument() et renvoie un string()
 % qui est la réponse XML.\r
-% Example XML : http://www.erlang.org/doc/apps/xmerl/xmerl_ug.html
-% Auteur : G.Burri
-% Date : 29.10.2007
+% Example XML : http://www.erlang.org/doc/apps/xmerl/xmerl_ug.html.
+% @author G.Burri
 
 -module(euphorik_protocole).
 -export([
    profile/1,
    refreshMessage/1,
    message/1
-]).
+]).\r
+
 -include_lib("xmerl/include/xmerl.hrl").
 -include("../include/euphorik_bd.hrl").\r
 -include("../include/euphorik_defines.hrl").\r
 
 
-% Génère un nouveau captchat dans ?DOSSIER_CAPTCHA
-generation_captcha(_) ->
-   {Mot_crypt, Nom_fichier} = captcha:create(5, ?DOSSIER_CAPTCHA),
-   simple_xml_to_string(xml_reponse_generation_captcha(?DOSSIER_CAPTCHA_RELATIF "/" ++ Nom_fichier, Mot_crypt)).
+% Génère un nouveau captchat dans ?DOSSIER_CAPTCHA\r
+% Obsolète
+%~ generation_captcha(_) ->
+   %~ {Mot_crypt, Nom_fichier} = captcha:create(5, ?DOSSIER_CAPTCHA),
+   %~ simple_xml_to_string(xml_reponse_generation_captcha(?DOSSIER_CAPTCHA_RELATIF "/" ++ Nom_fichier, Mot_crypt)).
    
 \r
-% Un nouvel utilisateur doit être créé.
+% Un nouvel utilisateur doit être créé.\r
+% Obolète : le captcha n'existe plus
 % Action est un xmlElement().
-nouveau_user_captcha(Action) ->
-   simple_xml_to_string(\r
-      case {xmerl_xpath:string("captchaCrypt", Action), xmerl_xpath:string("captchaInput", Action)} of\r
-         {[#xmlElement{content = [#xmlText{value = C1}]}], [#xmlElement{content = [#xmlText{value = C2}]}]} ->\r
-            C2_crypt = common:crypt(C2),\r
-            if C1 =:= C2_crypt ->\r
-                  Cookie = generer_cookie(),\r
-                  User = euphorik_minichat:nouveau_user("Paul", Cookie),\r
-                  xml_reponse_login_ok(User);\r
-               true ->
-                  xml_reponse_login_pas_ok("Captcha incorrect")\r
-            end;
-         _ ->
-            xml_reponse_login_pas_ok("XML malformé")\r
-      end
-   ).
+%~ nouveau_user_captcha(Action) ->
+   %~ simple_xml_to_string(\r
+      %~ case {xmerl_xpath:string("captchaCrypt", Action), xmerl_xpath:string("captchaInput", Action)} of\r
+         %~ {[#xmlElement{content = [#xmlText{value = C1}]}], [#xmlElement{content = [#xmlText{value = C2}]}]} ->\r
+            %~ C2_crypt = common:crypt(C2),\r
+            %~ if C1 =:= C2_crypt ->\r
+                  %~ Cookie = generer_cookie(),\r
+                  %~ User = euphorik_minichat:nouveau_user("Paul", Cookie),\r
+                  %~ xml_reponse_login_ok(User);\r
+               %~ true ->
+                  %~ xml_reponse_login_pas_ok("Captcha incorrect")\r
+            %~ end;
+         %~ _ ->
+            %~ xml_reponse_login_pas_ok("XML malformé")\r
+      %~ end
+   %~ ).
    
    
-% Une utilisateur s'enregistre avec un tuple {Login, Password}.
+% Une utilisateur s'enregistre avec un tuple {Login, Password}.\r
+% @spec nouveau_user_login(xmerl:xmlElement()) -> string()
 nouveau_user_login(Action) ->\r
    {Login, Password, Login_deja_pris} = case {xmerl_xpath:string("login", Action), xmerl_xpath:string("password", Action)} of\r
       {[#xmlElement{content = [#xmlText{value = L}]}], [#xmlElement{content = [#xmlText{value = P}]}]} ->\r
@@ -359,14 +362,16 @@ xml_reponse_message(Ok) ->
          ]\r
       }\r
    ].
-   
-xml_reponse_generation_captcha(Chemin, Captcha) ->
-   [
-      {reponse, [{name, "generationCaptcha"}],
-         [
-            {chemin, [], [Chemin]},
-            {captchaCrypt, [], [Captcha]}
-         ]
-      }
-   ].
+\r
+\r
+% Obsolète
+%~ xml_reponse_generation_captcha(Chemin, Captcha) ->
+   %~ [
+      %~ {reponse, [{name, "generationCaptcha"}],
+         %~ [
+            %~ {chemin, [], [Chemin]},
+            %~ {captchaCrypt, [], [Captcha]}
+         %~ ]
+      %~ }
+   %~ ].
 %%%%%%%%% </réponses XML> %%%%%%%%%
index 5b3a6d2..9cec43b 100755 (executable)
@@ -1,7 +1,8 @@
 % coding: utf-8\r
-% Ce module est fait pour répondre à des requêtes 'AJAX'.
-% Auteur : G.Burri
-% Date : 22.10.2007
+% Ce module est fait pour répondre à des requêtes 'AJAX'.\r
+% Il est définit comme 'appmods' pour l'url "request" dans yaws.\r
+% Par exemple http://www.euphorik.ch/request abouti sur la fonction out() de ce module.
+% @author G.Burri
 
 -module(euphorik_requests).\r
 -export([\r
@@ -58,12 +59,14 @@ traiter_xml(Contenu) ->
    traiter_action(XML#xmlElement.attributes, XML).\r
 
 
-% un client demande la génération d'un captcha
-traiter_action([#xmlAttribute{value="generationCaptcha"}], XML) ->
-   euphorik_protocole:generation_captcha(XML); \r
-% un client se log pour la première fois\r
-traiter_action([#xmlAttribute{value="loginCaptcha"}], XML) ->\r
-   euphorik_protocole:nouveau_user_captcha(XML); 
+% un client demande la génération d'un captcha (obsolète)
+%~ traiter_action([#xmlAttribute{value="generationCaptcha"}], XML) ->
+   %~ euphorik_protocole:generation_captcha(XML); \r
+% un client se log pour la première fois (obsolète)\r
+%~ traiter_action([#xmlAttribute{value="loginCaptcha"}], XML) ->\r
+   %~ euphorik_protocole:nouveau_user_captcha(XML); \r
+   \r
+   
 % un client s'enregistre (pseudo + password)
 traiter_action([#xmlAttribute{value="register"}], XML) ->
    euphorik_protocole:nouveau_user_login(XML); \r
@@ -73,10 +76,10 @@ traiter_action([#xmlAttribute{value="login"}], XML) ->
 % modification du profile
 traiter_action([#xmlAttribute{value="profile"}], XML) ->
    euphorik_protocole:profile(XML); \r
-% le client désire les messages\r
+% un utilisateur demande les messages\r
 traiter_action([#xmlAttribute{value="refreshMessages"}], XML) ->\r
  euphorik_protocole:refreshMessage(XML); \r
-% envoie d'un message\r
+% un utilisateur envoie un message\r
 traiter_action([#xmlAttribute{value="message"}], XML) ->\r
    euphorik_protocole:message(XML).\r
  \r
diff --git a/modules/erl/old/euphorik_deamon.erl b/modules/erl/old/euphorik_deamon.erl
new file mode 100755 (executable)
index 0000000..a957475
--- /dev/null
@@ -0,0 +1,25 @@
+% Module tournant en background s'occupant periodiquement de certaines tâches.\r
+% Auteur : G.Burri\r
+% Date : 05.11.2007\r
+\r
+-module(euphorik_deamon).
+-export([start/1]).\r
+\r
+% L'age max que peut avoir les fichier se trouvant dans le dossier 'tmp' (en second)\r
+-define(AGE_MAX_TMP, 86400). % 24 heures\r
+
+% Démarre le démon
+start(A) ->\r
+   loop(A).
+\r
+\r
+loop(A) ->\r
+   verifier_tmp_captcha(),\r
+   timer:sleep(100000), %  attend 100 secondes\r
+   loop(A).
+\r
+
+% Vérifie le repertoire tmp où se trouve les captcha et efface les plus vieux.
+verifier_tmp_captcha() ->
+   ok.
+   
\ No newline at end of file
index 7ffeae4..e380034 100755 (executable)
@@ -1,5 +1,5 @@
-% Auteur : GBurri
-% Version 2
+% @author GBurri
+% Version 3
 
 % Pour générer des id\r
 -record(counter,\r
@@ -12,7 +12,7 @@
 -record(minichat,
    {\r
       id, % integer\r
-      auteur_id, % -> user.id
+      auteur_id, % -> #user.id
       date, % erlang:now()
       pseudo, % chaine de caractère
       contenu % chaine de caractère
@@ -23,8 +23,8 @@
 % 'repondant' repond à 'cible'\r
 -record(reponse_minichat,\r
    {\r
-      repondant, % -> minichat.id\r
-      cible % -> minichat.id\r
+      repondant, % -> #minichat.id\r
+      cible % -> #minichat.id\r
    }). \r
 
 \r