commit d70953c4fab463dba3ac6df7f787ff955729ef9b
parent a36696b870fbf1ae04a32f5f1844e5f864656256
Author: John Charron <rm_rf_windows@yahoo.fr>
Date: Thu, 27 Jan 2011 18:34:32 +0100
Merge branch 'master' of https://github.com/jsmaniac/2011-m1s2-ter
Diffstat:
15 files changed, 294 insertions(+), 140 deletions(-)
diff --git a/code/serveur/commands.php b/code/serveur/commands.php
@@ -1,79 +0,0 @@
-<?php
-require_once("./config/config.php");
-
-if(!isset($_POST['cmd']) || !isset($_POST['psd']) || !isset($_POST['passwd']))
- mDie(1,"La requête est incomplète");
-
-$cmd = secure($_POST['cmd']);
-$psd = secure($_POST['psd']);
-$passwd = md5($_POST['passwd']);
-
-$req = "SELECT passwd FROM member WHERE pseudo='$psd'";
-
-$sql = sqlConnect();
-$resp = mysql_query($req);
-
-if(mysql_num_rows($res) < 1)
- mDie(2,"Utilisateur non enregistré");
-
-$data = mysql_fetch_array($resp);
-
-mysql_close($sql);
-
-if(strcmp($data['passwd'],$passwd) != 0)
- mDie(3,"Nom d'utilisateur ou mot de passe incorrect");
-
-
-// Sinon tout est bon on effectu l'opération correspondant à la commande passée.
-if($cmd == 0) // "Get partie"
-{
- // Requête sql de création de partie.
- $req = "...";
-
- $sql = sqlConnect();
- $resp = mysql_query($req);
-
- if(mysql_num_rows($resp) == 0)
- echo mysql_error();
- else
- {
- $sequence = "...";
- echo $sequence;
- }
-
- mysql_close($sql);
-}
-else if($cmd == 1) // "Set partie"
-{
- // Requête sql d'ajout d'informations (et calcul de résultat).
- $req = "...";
-
- $sql = sqlConnect();
- $resp = mysql_query($req);
-
- if(mysql_num_rows($resp) == 0)
- echo mysql_error();
- else
- {
- $sequence = "...";
- echo $sequence;
- }
-
- mysql_close($sql);
-}
-else if($cmd == 2)
-{
-
-}
-else if($cmd == 3)
-{
-
-}
-else if($cmd == 4)
-{
-
-}
-else
- die("Commande inconnue");
-
-?>
-\ No newline at end of file
diff --git a/code/serveur/config/config.php b/code/serveur/config/config.php
@@ -1,17 +0,0 @@
-<?php
-
-/** fichier de configuration */
-
-// Général
-$email_admin = ''; // Adresse e-mail Administrateur.
-
-// Base de donées.
-$sql_serveur = 'localhost'; // Serveur de la Base De Donnée (BDD).
-$sql_login = 'root'; // Login BDD.
-$sql_pass = ''; // Pass BDD.
-$sql_bdd = 'ptitclic'; // Nom de la BDD.
-
-// Quelques fonctions utiles.
-include("function.php");
-
-?>
diff --git a/code/serveur/config/function.php b/code/serveur/config/function.php
@@ -1,42 +0,0 @@
-<?php
-
-/**Ce fichier définit un certain nombre de fonctions utiles */
-
-// Connexion à la base de données.
-function sqlConnect()
-{
- global $sql_serveur, $sql_login, $sql_pass, $sql_bdd;
- //connexion au serveur
- $linkid = @mysql_connect($sql_serveur,$sql_login,$sql_pass) or die ("Erreur lors de la connection au serveur MySQL !");
- //selection de la base
- @mysql_select_db($sql_bdd,$linkid) or die("Impossible de selectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
-
- return $linkid;
-}
-
-function secure($string)
-{
- if(ctype_digit($string))
- {
- $string = intval($string);
- }
- else
- {
- $string = mysql_real_escape_string($string);
- $string = addcslashes($string, '%_');
- }
-
- return $string;
-}
-
-function mDie($err,$msg)
-{
- echo "Error:".$err.":".$msg;
- exit(1);
-}
-
-function writeRequest($request)
-{
-
-}
-?>
-\ No newline at end of file
diff --git a/code/serveur/dump.url b/code/serveur/dump.url
@@ -0,0 +1 @@
+http://www.lirmm.fr/~lafourcade/JDM-LEXICALNET-FR/
diff --git a/code/serveur/dump2mysql.sh b/code/serveur/dump2mysql.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+echo " dump2sql.sh : conversion des dumps de JeuxDeMots vers du sql (mysql)." >&2
+echo " La progression est affichée avec pv. Si vous n'avez pas pv, supprimez la ligne correspondante dans ce script." >&2
+echo " Et c'est parti !" >&2
+echo >&2
+
+# game_played(type) : 0=partie de référence initiale, 1=partie d'un joueur.
+
+cat <<EOF
+start transaction;
+create database if not exists pticlic;
+use pticlic;
+create table node(eid integer auto_increment, name varchar(255), type integer, weight integer, primary key(eid));
+create table relation(rid integer auto_increment, start integer, end integer, type integer, weight integer, primary key(rid));
+create table type_node(name varchar(255), num integer, primary key(num));
+create table type_relation(name varchar(255), num integer, extended_name varchar(16384), info varchar(16384), primary key(num));
+create table user(login varchar(255), mail varchar(255), hash_mdp char(32), primary key(login));
+create table game(pid integer auto_increment, eid_central_word integer, relation_1 integer, relation_2 integer, relation_3 integer, relation_4 integer, reference_played_game integer, primary key(pid));
+create table game_cloud(pid integer, num integer, eid_word integer);
+create table game_played(pid integer, type integer, num integer, relation integer, weight integer);
+EOF
+
+# tr : pour virer le CRLF qui traîne
+# Le gros tas de sed / tr : pour virer le newline dans une des description étendue
+cat "$1" \
+| iconv -f iso-8859-1 -t utf-8 \
+| tr '\r' ' ' \
+| sed -e 's/X/XX/g' | sed -e 's/A/Xa/g' | tr '\n' 'A' | sed -e 's/A")/")/g' | tr 'A' '\n' | sed -e 's/Xa/A/g' | sed -e 's/XX/X/g' \
+| pv -s $(wc -c "$1" | cut -d ' ' -f 1) \
+| sed -e "s#'#''#g" \
+| sed -E -e 's#^// [0-9]+ occurrences of relations ([a-z_]+) \(t=([0-9]+) nom_etendu="([^"]+)" info="([^"]+)"\)$#insert into type_relation(name, num, extended_name, info) values('\''\1'\'', \2, '\''\3'\'', '\''\4'\'');#' \
+| sed -E -e 's#^// [0-9]+ occurrences of nodes ([a-z_]+) \(t=([0-9]+)\)$#insert into type_node(name, num) values('\''\1'\'', \2);#' \
+| sed -E -e 's#^eid=([0-9]+):n="(.*)":t=([0-9]+):w=(-?[0-9]+)$#insert into node(eid, name, type, weight) values(\1, '\''\2'\'', '\''\3'\'', '\''\4'\'');#' \
+| sed -E -e 's#^rid=([0-9]+):n1=([0-9]+):n2=([0-9]+):t=([0-9]+):w=(-?[0-9]+)#insert into relation(rid, start, end, type, weight) values(\1,\2,\3,\4,\5);#' \
+| grep -v 'insert into node(eid, name, type, weight) values(0,' \
+| grep -v '^//' \
+| grep -v '^$'
+
+cat <<EOF
+create index i_relation_start on relation(start);
+create index i_relation_end on relation(end);
+create index i_relation_type on relation(type);
+create index i_relation_end_type on relation(end,type);
+create index i_sessid_login on sessid(login);
+create index i_sessid_sid on sessid(sid);
+commit;
+EOF
diff --git a/code/serveur/dump2sql.sh b/code/serveur/dump2sqlite.sh
diff --git a/code/serveur/parties.json b/code/serveur/parties.json
@@ -0,0 +1,28 @@
+// Requête : http://serveur/pticlic.php?action=getparties&nb=2&mode=normal
+[
+ {
+ id: 1234,
+ cat1: 11,
+ cat2: 23,
+ cat3: 35,
+ cat4: 12,
+ center: { id: 555, "chat" },
+ cloud: [
+ { id: 123, name: "souris" },
+ { id: 111, name: "lait" },
+ { id: 345, name: "machine à laver" }
+ ]
+ },
+ {
+ id: 1235,
+ cat1 : 12,
+ cat2 : 34,
+ cat3 : -1,
+ cat4 : -1,
+ center: { id: 666, "bouteille" },
+ cloud: [
+ { id: 11359, name: "jus de fruit" },
+ { id: 111, name: "lait" }
+ ]
+ }
+]
diff --git a/code/serveur/php/config.php b/code/serveur/php/config.php
@@ -0,0 +1,17 @@
+<?php
+
+/** fichier de configuration */
+
+// Général
+$email_admin = ''; // Adresse e-mail Administrateur.
+
+// Base de donées.
+$sql_serveur = 'localhost'; // Serveur de la Base De Donnée (BDD).
+$sql_login = 'root'; // Login BDD.
+$sql_pass = ' '; // Pass BDD.
+$sql_bdd = 'pticlic'; // Nom de la BDD.
+
+// Quelques fonctions utiles.
+include("function.php");
+
+?>
diff --git a/code/serveur/php/function.php b/code/serveur/php/function.php
@@ -0,0 +1,47 @@
+<?php
+
+/**Ce fichier définit un certain nombre de fonctions utiles */
+
+// Connexion à la base de données.
+function sqlConnect()
+{
+ global $sql_serveur, $sql_login, $sql_pass, $sql_bdd;
+ //connexion au serveur
+ $linkid = @mysql_connect($sql_serveur,$sql_login,$sql_pass) or die ("Erreur lors de la connection au serveur MySQL !");
+ //selection de la base
+ @mysql_select_db($sql_bdd,$linkid) or die("Impossible de selectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
+
+ return $linkid;
+}
+
+function secure($string)
+{
+ if(ctype_digit($string))
+ {
+ $string = intval($string);
+ }
+ else
+ {
+ $string = mysql_real_escape_string($string);
+ $string = addcslashes($string, '%_');
+ }
+
+ return $string;
+}
+
+// TODO Yoann : fonction qui échappe les "
+function escape_json_string($str) {
+ return $str;
+}
+
+function mDie($err,$msg)
+{
+ echo "{ error:\"".escape_json_string($err)."\", msg:\"".escape_json_string($msg)."\"}";
+ exit(1);
+}
+
+function writeRequest($request)
+{
+
+}
+?>
+\ No newline at end of file
diff --git a/code/serveur/php/pticlic.php b/code/serveur/php/pticlic.php
@@ -0,0 +1,111 @@
+<?php
+require_once("./config/config.php");
+
+if(!isset($_POST['cmd']) || !isset($_POST['psd']) || !isset($_POST['passwd']))
+ mDie(1,"La requête est incomplète");
+
+$cmd = secure($_POST['cmd']);
+$psd = secure($_POST['psd']);
+$passwd = md5($_POST['passwd']);
+
+$req = "SELECT passwd FROM member WHERE pseudo='$psd'";
+
+$sql = sqlConnect();
+$resp = mysql_query($req);
+
+if(mysql_num_rows($res) < 1)
+ mDie(2,"Utilisateur non enregistré");
+
+$data = mysql_fetch_array($resp);
+
+mysql_close($sql);
+
+if(strcmp($data['passwd'],$passwd) != 0)
+ mDie(3,"Nom d'utilisateur ou mot de passe incorrect");
+
+
+function random_node() {
+ return mysql("select eid from node where eid = (abs(random()) % (select max(eid) from node))+1 or eid = (select max(eid) from node where eid > 0) order by eid desc limit 1;");
+}
+
+function create_game($cloud_size) {
+ // select random node
+ $eid_center=random_node();
+
+ // select neighbors 1 hop
+ $niveau1=mysql("select end from relation where start = 42 limit $taille_nuage;");
+
+ // select neighbors 2 hops
+ $niveau2=mysql("select * from relation where start in (select end from relation where start = 42) limit $taille_nuage;");
+
+ // select neighbors relative to the end (one hop start->end, one hop start<-end).
+ $niveau3=mysql("select * from relation where end in (select end from relation where start = 42) and type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001) limit $taille_nuage;");
+
+ // pour compléter si nécessaire :
+ // select random words
+ $niveau4=array();
+ for ($i=0; $i < $cloud_size; $i++) {
+ $niveau4[$i] = ???
+ }
+
+ // start transaction;
+ // insert into game $eid_center
+ // insert into game_cloud [$cloud_size mots choisis dans $niveau1, $niveau2, $niveau3, $niveau4]
+ // insert into game_played une partie de référence.
+ // commit;
+}
+
+
+// Sinon tout est bon on effectu l'opération correspondant à la commande passée.
+if($cmd == 0) // "Get partie"
+{
+ // Requête sql de création de partie.
+ $req = "...";
+
+ $sql = sqlConnect();
+ $resp = mysql_query($req);
+
+ if(mysql_num_rows($resp) == 0)
+ echo mysql_error();
+ else
+ {
+ $sequence = "...";
+ echo $sequence;
+ }
+
+ mysql_close($sql);
+}
+else if($cmd == 1) // "Set partie"
+{
+ // Requête sql d'ajout d'informations (et calcul de résultat).
+ $req = "...";
+
+ $sql = sqlConnect();
+ $resp = mysql_query($req);
+
+ if(mysql_num_rows($resp) == 0)
+ echo mysql_error();
+ else
+ {
+ $sequence = "...";
+ echo $sequence;
+ }
+
+ mysql_close($sql);
+}
+else if($cmd == 2)
+{
+
+}
+else if($cmd == 3)
+{
+
+}
+else if($cmd == 4)
+{
+
+}
+else
+ die("Commande inconnue");
+
+?>
+\ No newline at end of file
diff --git a/gantt.planner b/organisation/gantt.planner
diff --git a/organisation/mail b/organisation/mail
@@ -0,0 +1,11 @@
+= Mail =
+
+- demande adresse genre support@pticlic.org à M. Lafourcade
+- Indiquer à M. Lafourcade qu'il peut accéder au code source du projet à l'adresse https://github.com/jsmaniac/2011-m1s2-ter , et s'il veut un accès en écriture, il suffit qu'il s'inscrive sur github et envoie son login à l'un de nous.
+- demander à M. Lafourcade l'installation d'Android + Plugin Eclipse sur postes du bât.6
+ * Pas convaincu des 6h15 pour 10 ETCS !! Ne pas le dire dans le rapport... On a ce volume d'horaires d'un courTDTP en général sans prendre en compte le travail suppl à faire à la maison. Ca me semble pas juste, quoiqu'on lise
+ * publier annonce pour recherche d'Alpha testeurs
+ * annonce AlphaTesteurs Forums Android
+ * mail betatesteurs avec lien vers PtitClic version Lafourcade LUNDI 31/01/2011
+ * download and install Gantt Project
+ * fichier pticlic.gan (github)
diff --git a/organisation/notes b/organisation/notes
@@ -0,0 +1,3 @@
+- Une classe Constante pour toutes les constantes ("symboles" pour les paramètres, ...).
+- Boutons pour les différents modes de jeu directement sur la "page de garde".
+- Créer un splash au démarrage.
diff --git a/pticlic.gan b/organisation/pticlic.gan
diff --git a/rapport/rapport.tex b/rapport/rapport.tex
@@ -66,6 +66,32 @@ The Android operating system software stack consists of Java applications runnin
\item Caractères non échappés dans le dump de la base.% gd
\end{itemize}
+\section{Compte rendu des réunions}
+\subsection{14 janvier 2010}
+Outils :
+\begin{itemize}
+\item Langage Java
+\item Eclipse (version la plus récente)
+\item Plugin ADT (Android Developper Toolkit)
+\item SDK Android
+\item Github
+\item LaTeX
+\item JUnit peut-être
+\end{itemize}
+
+Durée du projet 4 mois (4 itérations de 4 semaines)
+
+Conventions de code : http://java.sun.com/docs/codeconv/html/CodeConventions.doc6.html
+
+Code (noms de variables, etc.) en anglais, commentaires en français, javadoc en français.
+
+\subsection{26 janvier 2011}
+Mettre le serveur (PHP) sur free.fr, pour pouvoir tester facilement
+
+Utilisation d'une classe \verb!Constant!
+
+Écran d'accueil du jeu : Image (splash), puis directement les icônes des modes de jeu + configuration, au lieu d'avoir un écran avec le logo et jouer/config, suivi du choix du mode de jeu.
+
\section{Deuxième section}
\section{Troisième section}
\newpage