From: Greg Burri Date: Sat, 17 May 2008 16:45:55 +0000 (+0000) Subject: ADD election des trolls par un daemon chaque semaine X-Git-Tag: 1.0.0^2~62 X-Git-Url: https://git.euphorik.ch/?a=commitdiff_plain;h=221a44d7aeaf467ef9854fe21af93bc964e92ef1;p=euphorik.git ADD election des trolls par un daemon chaque semaine --- diff --git a/doc/installation.txt b/doc/installation.txt index b5abb24..4f71285 100644 --- a/doc/installation.txt +++ b/doc/installation.txt @@ -21,12 +21,13 @@ Voici les diff listen = 0.0.0.0 docroot = /euphorik allowed_scripts = [yaws] - appmods = + appmods = + start_mod = euphorik_daemon c) Editer '/etc/init.d/yaws' et remplacer cette ligne : script="$DAEMON -I $YAWS_ID $@" par celle ci : - script="$DAEMON --erlarg \"-smp auto\" --sname yaws --mnesiadir '\"/euphorik/BD\"' -I $YAWS_ID $@" + script="$DAEMON --sname yaws --mnesiadir \"/euphorik/BD\" -I $YAWS_ID $@" FIXME : trouver une méthode plus élégante. 3. Créer la base de donnée diff --git a/doc/technique.txt b/doc/technique.txt index 0f63fc0..1d45db1 100644 --- a/doc/technique.txt +++ b/doc/technique.txt @@ -5,16 +5,7 @@ Euphorik - doc technique Sequences : * Chargement d'une page -=== Client === -Etats : - Un client peut avoir trois états - * Non Identifie -> Enregistre, Identifie - Etat initial. - * Identifie -> Enregistre, Non Identifie - Nécessaire (et automatique) pour pouvoir poster des messages. - * Enregistre -> Non Identifie - Nécessaire pour pouvoir poster des trolls et gérer un profile. - +=== Client === == pageMinichat.js == === Classes === * Messages diff --git a/js/euphorik.js b/js/euphorik.js index 5a15c00..29e85ad 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -939,7 +939,8 @@ $(document).ready( initialiserListeStyles(client) - // TODO : pourquoi $(document).unload ne fonctionne pas ? + // FIXME : ne fonctionne pas sous opera + // voir : http://dev.jquery.com/ticket/2892#preview $(window).unload(function(){client.flush()}) $("#menu .minichat").click(function(){ pages.afficherPage("minichat") }) diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 7fac81d..6efd76b 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -21,6 +21,7 @@ update_pseudo_user/2, print_users/0, print_users/1, + print_user/1, user_by_cookie/1, user_by_id/1, user_by_login/1, @@ -67,9 +68,7 @@ % utiles : resultat_transaction/1 ]). - -import(qlc, [e/1, e/2, q/1, cursor/1]). - -include("../include/euphorik_bd.hrl"). -include("../include/euphorik_defines.hrl"). -include_lib("stdlib/include/qlc.hrl"). @@ -250,28 +249,48 @@ print_users(N) -> Users = qlc:next_answers(C, N), lists:foreach( fun(U) -> - #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = U, - {{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date), - io:format( - "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n", - [ - Id, - if Ek_master -> "*"; true -> "" end ++ Pseudo, - "(" ++ Login ++ ")", - Jour, Mois, Annee, Heure, Min - ] - ) + print_user(U) end, Users ), qlc:delete_cursor(C) end)). - + % Affiche tous les users. print_users() -> print_users(all_remaining). + +print_user(User) when is_record(User, user) -> + #user{id = Id, pseudo = Pseudo, login = Login, ek_master = Ek_master, date_derniere_connexion = Date} = User, + {{Annee, Mois, Jour}, {Heure, Min, _}} = calendar:now_to_local_time(Date), + io:format( + "~4w : ~10.10..s~10.10..s ~2w.~2.2.0w.~w - ~2wh~2.2.0w~n", + [ + Id, + if Ek_master -> "*"; true -> "" end ++ Pseudo, + "(" ++ Login ++ ")", + Jour, Mois, Annee, Heure, Min + ] + ); +% Affichage d'un user en fonction de son login +print_user(Login) when is_list(Login) -> + case user_by_login(Login) of + {ok, User} -> + print_user(User); + _ -> + {erreur, "Login pas trouvé : " ++ Login} + end; +% Affichage d'un user en fonction de son id +print_user(Id) when is_integer(Id) -> + case user_by_id(Id) of + {ok, User} -> + print_user(User); + _ -> + {erreur, "Id pas trouvé : " ++ integer_to_list(Id)} + end. + % Est-ce qu'un utilisateur existe en fonction de son cookie ? % Renvoie {ok, User} ou erreur diff --git a/modules/erl/euphorik_daemon.erl b/modules/erl/euphorik_daemon.erl index f50affe..051e26d 100755 --- a/modules/erl/euphorik_daemon.erl +++ b/modules/erl/euphorik_daemon.erl @@ -1,24 +1,30 @@ -% Module tournant en background s'occupant periodiquement de certaines tâches. -% Auteur : G.Burri -% Date : 05.11.2007 +% Module tournant en background s'occupant periodiquement de certaines tâches : +% - Élection du prochain troll chaque semaine +% Date : 05.11.2007 +% @author G.Burri -module(euphorik_daemon). -export([start/1]). - --include("../include/euphorik_defines.hrl"). +-include("../include/euphorik_defines.hrl"). % Démarre le démon -start(A) -> - loop(A). - - -loop(A) -> - euphorik_bd:elire_troll(), - % - - timer:sleep(1000), - loop(A). - - +start(_A) -> + loop(). + +loop() -> + % on attend une minute de plus pour prevenir une dérive négative + timer:sleep(1000 * trunc(temps_prochaine_election() + 60)), + euphorik_bd:elire_troll(), + loop(). + + +% Renvoie le nombre de seconde qu'il reste jusque au prochain lundi à l'heure donnée (l'heure est sur 24heures) +% 86400 est le nombre de seconde dans un jour +temps_prochaine_election() -> + {Date, {H,M,S}} = calendar:local_time(), + Delta = (?JOUR_ELECTION_TROLL - 1) * 86400 + ?HEURE_ELECTION_TROLL * 60 * 60 + -((calendar:day_of_the_week(Date) - 1) * 86400 + H * 60 * 60 + M * 60 + S), + % attention au cas où les deux dates (maintenant et la date d'élection) ne se trouvent pas dans la même semaine. + if Delta =< 0 -> Delta + 7 * 86400; true -> Delta end. diff --git a/modules/erl/euphorik_minichat_conversation.erl b/modules/erl/euphorik_minichat_conversation.erl index 2530327..1e76e40 100755 --- a/modules/erl/euphorik_minichat_conversation.erl +++ b/modules/erl/euphorik_minichat_conversation.erl @@ -12,10 +12,8 @@ -export([ conversations/4 ]). - -include("euphorik_bd.hrl"). -include_lib("stdlib/include/qlc.hrl"). - -import(lists, [reverse/1, any/2, map/2, sublist/3, filter/2]). -import(euphorik_bd, [resultat_transaction/1]). -import(qlc, [e/1, q/1, keysort/3]). diff --git a/modules/erl/euphorik_protocole.erl b/modules/erl/euphorik_protocole.erl index cf1fbbc..08624ae 100755 --- a/modules/erl/euphorik_protocole.erl +++ b/modules/erl/euphorik_protocole.erl @@ -17,8 +17,7 @@ mod_troll/1, del_troll/1, erreur/1 -]). - +]). -include_lib("xmerl/include/xmerl.hrl"). -include("../include/euphorik_bd.hrl"). -include("../include/euphorik_defines.hrl"). diff --git a/modules/erl/euphorik_requests.erl b/modules/erl/euphorik_requests.erl index edc0e17..f8dad51 100755 --- a/modules/erl/euphorik_requests.erl +++ b/modules/erl/euphorik_requests.erl @@ -9,7 +9,6 @@ tester/0, out/1 ]). - -include_lib("xmerl/include/xmerl.hrl"). -include_lib("yaws/include/yaws_api.hrl"). diff --git a/modules/erl/old/euphorik_deamon.erl b/modules/erl/old/euphorik_deamon.erl deleted file mode 100755 index a957475..0000000 --- a/modules/erl/old/euphorik_deamon.erl +++ /dev/null @@ -1,25 +0,0 @@ -% Module tournant en background s'occupant periodiquement de certaines tâches. -% Auteur : G.Burri -% Date : 05.11.2007 - --module(euphorik_deamon). --export([start/1]). - -% L'age max que peut avoir les fichier se trouvant dans le dossier 'tmp' (en second) --define(AGE_MAX_TMP, 86400). % 24 heures - -% Démarre le démon -start(A) -> - loop(A). - - -loop(A) -> - verifier_tmp_captcha(), - timer:sleep(100000), % attend 100 secondes - loop(A). - - -% 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 diff --git a/modules/include/euphorik_defines.hrl b/modules/include/euphorik_defines.hrl index 9be2226..03c7ff1 100755 --- a/modules/include/euphorik_defines.hrl +++ b/modules/include/euphorik_defines.hrl @@ -20,3 +20,8 @@ -define(NB_MAX_TROLL_WAITING, 10). % chaque admin peut proposer 1 seul troll à la fois -define(NB_MAX_TROLL_WAITING_BY_USER, 2). + + +% Le jour ainsi que l'heure à laquelle est élu un nouveau troll (lundi à 3 heure du mat) +-define(JOUR_ELECTION_TROLL, 1). % 1 = lundi +-define(HEURE_ELECTION_TROLL, 3). % 3 heure du matin \ No newline at end of file diff --git a/sessions/doc.session b/sessions/doc.session index 6b25f56..f576177 100755 --- a/sessions/doc.session +++ b/sessions/doc.session @@ -1,14 +1,17 @@ # SciTE session file -buffer.1.path=/home/gburri/projets/euphorik/doc/protocole2.txt -buffer.1.position=1 +buffer.1.path=/home/gburri/projets/euphorik/doc/technique.txt +buffer.1.position=572 -buffer.2.path=/home/gburri/projets/euphorik/doc/technique.txt -buffer.2.position=1 +buffer.2.path=/home/gburri/projets/euphorik/doc/TODO.txt +buffer.2.position=181 +buffer.2.current=1 -buffer.3.path=/home/gburri/projets/euphorik/doc/TODO.txt -buffer.3.position=751 -buffer.3.current=1 +buffer.3.path=/home/gburri/projets/euphorik/doc/protocole3.txt +buffer.3.position=248 -buffer.4.path=/home/gburri/projets/euphorik/doc/protocole3.txt +buffer.4.path=/home/gburri/projets/euphorik/doc/description.txt buffer.4.position=1 + +buffer.5.path=/home/gburri/projets/euphorik/doc/installation.txt +buffer.5.position=1231