Pages

Affichage des articles dont le libellé est Très. Afficher tous les articles
Affichage des articles dont le libellé est Très. Afficher tous les articles

Le rwriting ne fonctionne pas très bien sujet

mardi 8 avril 2014




Bonjour à tous,

J'ai mon hébergeur, j'ai créé un sous domaine "toto"

mon domaine : www.modomaine.ch
à la racine je peux voir maintentn un nouveau dossier : toto.mondomaine.ch

Dans ce dernier, j'ai mi un fochier tout bete, index.php avec le mot toto.

Donc quand je tape


Citation:





toto.mondomaine.ch




toto doir s'afficher sur la page

Simplement mon url change ainsi

et evidement, je ne veux pas ca.

J'ai pour le moement MODx et mon fichier doit pas etre compatible avec les sous-domaine.

Qu'es-ce que je pourrais ajouter à mon fihcier .htaccess, pour qu'il conserve l'url

Citation:





toto.mondoamine.ch




wt qu'il ne la transorme pas ainsi

?

Merci beaucoup




SELECT, INSERT et UPDATE sur un très grand nombre de lignes pour faire un classement sujet

vendredi 28 mars 2014




Bonjour à tous,

je me pose certaines questions sur ma manière de procéder sur une problématique de classement à un QCM, voilà mon cas:

Je propose des QCM de 10 questions max avec entre 2 à 4 choix possibles, 1 seul des choix étant correct.
Les réponses des utilisateurs sont enregistrés sous la forme d'une chaine de caractères numériques où le numéro inscrit correspond à la radiobox coché (ex s'il coche que les 1ères radiobox de chaque question du QCM => 0000000....)

J'enregistre le tout sous la table suivante => membre_id mediumint(8), qcm_id smallint(4), reponse int(10)
où les champs membre_id, qcm_id sont des index et le couple membre_id,qcm_id est un index unique

(Noter que cette table peut devenir très volumineuse le nb d'utilisateur et de QCM augmentant)

Pour calculer le score des utilisateurs et leur classement, je compare leur réponse au résultat officiel (ex: $bonne_reponse='1234512345';)

Ma problématique est dans ma manière de faire, si celle ci me semble correcte quand il y a peu d'utilisateurs,
je me demande si ce serait toujours le cas, s'il devait y en avoir beaucoup plus (potentiellement des centaine de milliers) (soyons optimistes)

Je procède ainsi, ce sera plus facile à comprendre:


Code:


1
2
3
4

$a=strlen($bonne_reponse); // le nb de caractères de la bonne réponse correspondant au nombre de questions du QCM
$quoi=array(); // ici sera inséré le score des utilisateurs
$zql=array();


1) je sélectionne les réponses de tous les membres ayant répondu au questionnaire en une seule requête:


Code:


1
2
3
4

$sql='SELECT membre_id,reponse FROM ma_table WHERE qcm_id='.$value;
$result=mysql_query($sql) or die('Echec 1');
$num=mysql_num_rows($result);


la table ma_table est là où sont enregistrées toutes les réponses des membres aux différents qcm


2) je calcule pour chaque ligne retourné, donc chaque membre, son score en comparant sa réponse à la bonne réponse (je schématise):


Code:


1
2
3
4
5
6

while ($Res = mysql_fetch_row($result) ){
$k=0;
for($i=0;$i<$a;$i++)if($bonne_reponse[$i]==$Res[1][$i])$k++;
$quoi[$Res[0]]=$k; // le score de l'utilisateur membre_id=$Res[0] vaut $k
}


Notez que l'array quoi (ainsi que ci après l'array zql) pourrait avoir des centaines de millers d'entrée, y aura -t-il une problématique à cela ?

3) pour faire le classement je trie par ordre décroissant le tableau des scores en conservant les clés = id des membres


Code:


1
2
3
4
5
	
arsort($quoi);
foreach ($quoi as $key => $val) {
$zql[]='('.$key.','.($val*10).')'; // $key représente membre_id et $val son score (ici dans l'ordre décroissant)
}


4) Après avoir préalablement créé une table spécifique à ce questionnaire-là (donc vide), j'y insère dans l'ordre voulu les membres_id et leur score


Code:


1
2
3
	
$sql2='INSERT INTO qcm_'.$value.' (membre_id,score) VALUES '.implode(',',$zql);
$result2=mysql_query($sql2) or die('Echec 2');


Question => la requête INSERT multiple est-elle efficace pour des centaines de miliers de lignes à insérer ?

La table specifique serait ainsi faite => id (auto_increment), membre_id (index unique), score // ainsi en lisant l'id du membre, on a son classement

5) Enfin, je dois incrémenter le score total de chaque utilisateur sur une table_score existante, malheureusement je crois être obligé de passé par une boucle:


Code:


1
2
3
4
5
6

for($j=0;$j<$num;$j++){

$sql3="UPDATE table_score SET score=score+".$zql[$j][1]." WHERE membre_id='".$zql[$j][0]."'";
$result3=mysql_query($sql3) or die('Echec 3');
}


Bref, voilà donc comment je compte procéder, je n'ai finalement que 2 requêtes toutes simples mais pouvant porter sur un très grand nombre de lignes,
ainsi qu'une 3ème requête Update toute aussi simple mais répétée potentiellement un très grand nombre de fois

Voyez-vous des moyens d'améliorer tout cela, voyez-vous des erreurs ou des améliorations que je pourrais porter à ce script ?
Pour faire court, vos avis, critiques et conseils seront la bienvenue

PS: ce script sera executé en tâche cron pendant la nuit vers les 3h du mat', l'idéal est biensur qu'il dure le moins longtemps possible,
mais si vous pensez qu'il durerea un temps raisonnable sur le serveur dédié suivant http://www.soyoustart.com/fr/offres/sys-e32-1.xml , cela me conviendra

D'ailleurs si vous pourriez me conseillé des modif à effectuer du côté de mysql je suis preneur aussi

Merci d'avance
A bientôt




Pour ceux qui cherchent un compte à rebour très original sujet

vendredi 31 janvier 2014





Code:


<!DOCTYPE html> 
<html lang="fr"> 
        <head> 
    <meta charset="utf-8">
          <title></title> 
          <link rel="stylesheet" type="text/css" media="screen" href="../style.css" />
          <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
                <style type="text/css">
                        ul { list-style-image: none; }

                        #countdown-blog {color:#000;height:200px; margin-left: 40px;}
                        #countdown-blog div.set{float:left}
                        #countdown-blog h2{text-align:center; font-size:18px}
                        #countdown-blog ul{list-style-type:none;height:103px;padding:20px 0px 5px}
                        #countdown-blog li{float:left;background:url(filmstrip_countdown_9-0.png) 0 0 no-repeat;width:53px;height:103px}
                        #countdown-blog li#s0, li#m0{background:url(filmstrip_countdown_5-0.png) 0 0 no-repeat}
                        #countdown-blog li#h0{background:url(filmstrip_countdown_2-0.png) 0 0 no-repeat}
                        #countdown-blog li.comma{background:url(comma.png) 2px 75px no-repeat;width:12px}
                        #countdown-blog div.separator{float:left; font:80px Arial,sans-serif; height:103px; padding:25px 0 0;}
                </style>
       
       
       
  </head>

        <body>
   
   
   
                <div id="countdown-blog"></div>
                <script type="text/javascript">
//<![CDATA[

// SET TARGET DATE HERE
var target = 'February 28, 2014';

// That's all you need to do.

/************************************************************************/
// Initial digit position for each number graphic
// 9-0
var initialPosCountdown = [-5562, -4944, -4326, -3708, -3090, -2472, -1854, -1236, -618, 0];
// 5-0 (first minute and second digit)
var initialMidPosCountdown = [-3090, -2472, -1854, -1236, -618, 0];
// 2-0 (first hour digit)
var initialSmallPosCountdown = [-1236, -618, 0];
var classNamesCountdown = ['jours', 'heures', 'minutes', 'secondes'];
var idNamesCountdown = ['d', 'h', 'm', 's'];
var animationFramesCountdown = 5;
var frameShiftCountdown = 103;

// If no number in URL (?date=1/1/11), then use default one
target = (window.location.search == "") ? target : window.location.search.substring(6);

// Starting numbers
var nowCountdown = new Date().getTime();
var endCountdown = Date.parse(target);
// Fix if date is in past
if (endCountdown < nowCountdown){
}
var theDiffCountdown = endCountdown-nowCountdown;
var theDiffStringCountdown = getTimeStringCountdown(theDiffCountdown);

// Increment (count one second at a time)
var incrementCountdown = 1000;
// Pace of counting in milliseconds (refresh digits every second)
var paceCountdown = 1000;



// Function that controls counting
function doCountCountdown(){
        var x = getTimeStringCountdown(theDiffCountdown);
        theDiffCountdown -= incrementCountdown;
        var y = getTimeStringCountdown(theDiffCountdown);
        // For debugging
        //console.log(y);
        digitCheckCountdown(x,y);
}

// This checks the old value vs. new value, to determine how many digits need to be animated.
function digitCheckCountdown(x,y){
        var a = x.split(':');
        var b = y.split(':');
        for (var i = 0, c = a.length; i < c; i++){
                if (a[i].length < 2) a[i] = '0' + a[i];
                if (b[i].length < 2) b[i] = '0' + b[i];
                var countA = a[i].toString().length;
                var countB = b[i].toString().length;
                if (countB < countA) removeDigitCountdown(i, countB);
                for (var j = 0; j < countB; j++){
                        if (b[i].charAt(j) != a[i].charAt(j)){
                                var which = idNamesCountdown[i] + j;
                                animateDigitCountdown(which, a[i].charAt(j), b[i].charAt(j));
                        }
                }
        }
}

// Function to break the time into day:hour:minute:second
function getTimeStringCountdown(d){
        var diff = d;
        var days = Math.floor(diff / 86400000);
        diff -= days * 86400000;
        var hours = Math.floor(diff / 3600000);
        diff -= hours * 3600000;
        var minutes = Math.floor(diff / 60000);
        diff -= minutes * 60000;
        var seconds = Math.floor(diff / 1000);

        if ((days==0) && (hours==0) && (minutes==0) && (seconds==0))
        {
        window.location.replace("test.php");
        }

        return days + ':' + hours + ':' + minutes + ':' + seconds;
       
}

// Looks in correct array to get the digit's position
function getPosCountdown(id, digit){
        if (id == 's0' || id == 'm0'){
                return initialMidPosCountdown[digit];
        }
        else if (id == 'h0'){
                return initialSmallPosCountdown[digit];
        }
        else{
                return initialPosCountdown[digit];
        }
}

// Animation function
function animateDigitCountdown(which, oldDigit, newDigit){
        var speed = 80;
        var pos = getPosCountdown(which, oldDigit);
        var newPos = getPosCountdown(which, newDigit);
        // Each animation is 5 frames long, and 103px down the background image.
        // We delay each frame according to the speed above.
        for (var k = 0; k < animationFramesCountdown; k++){
                pos -= frameShiftCountdown;
                if (k == (animationFramesCountdown - 1)){
                        $("#" + which).delay(speed).animate({'background-position': '0 ' + pos + 'px'}, 0, function(){
                                // At end of animation, shift position to new digit.
                                $("#" + which).css({'background-position': '0 ' + newPos + 'px'}, 0);
                        });
                }
                else{
                        $("#" + which).delay(speed).animate({'background-position': '0 ' + pos + 'px'}, 0);
                }
        }
}

// Remove digit
function removeDigitCountdown(i,count){
        $("li#" + idNamesCountdown[i] + count).remove();
}

// Sets the correct digits on load
function initialDigitCheckCountdown(initial){
        // Creates the html
        var a = initial.split(':');
        for (var i = 0, c = a.length; i < c; i++){
                if (a[i].length < 2) a[i] = '0' + a[i];
                var count = a[i].toString().length;
                var html = '<div class="set"><ul class="' + classNamesCountdown[i] + '">';
                var bit = count;
                for (var j = 0; j < count; j++){
                        bit--;
                        html += '<li id="' + idNamesCountdown[i] + j + '"></li>';
                        if (bit != 0 && bit != (count) && bit % 3 == 0) html += '<li class="comma"></li>';
                }
                html += '</ul><h2>' + classNamesCountdown[i].toUpperCase() + '</h2>';
                // If you don't like the ':' separator, remove the following line
                if (i != 3) html += '</div><div class="separator">:</div>';
                //
                $("#countdown-blog").append(html);
        }
        // Sets digits to the right number
        for (var n = 0, cn = a.length; n < cn; n++){
                count = a[n].toString().length;
                for (var m = 0; m < count; m++){
                        var thisID = idNamesCountdown[n] + m;
                        var thisPos = getPosCountdown(thisID, a[n].charAt(m));
                        $("#" + idNamesCountdown[n] + m).css({'background-position': '0 ' + thisPos + 'px'});
                }
        }
}

// Start it up
initialDigitCheckCountdown(theDiffStringCountdown);
setInterval(doCountCountdown, paceCountdown);

//]]>               
        </script>
        </body> 
</html>



Merci pour vos commentaires !!!!




[Problème] montage images qualités très différentes sujet

mercredi 29 janvier 2014




je ne sais pas trop ou poster ça mais bon...je dois filmer une conférence (pour dépanner) mais je n'ai pas vraiment le matériel pour ...je vais faire un plan fixe sur le conférencier au 5D mark III probablement avec mon 24-105 avec la plus longue focale. Je récupere le son sur mon H4n depuis la table de mixage. J'ai deux cameras amateur: une canon HG20 et une Sony dont je ne connais pas la référence mais même genre que la HG20. Je comptais faire des plans de coupe avec ces deux cams, sur le conférencier, les projections sur écran et le public. J'ai peur qu'il y ait une différence de qualité très importante selon les cams. Que me suggérez vous au montage pour équilibrer ça? Avec vous une idée de dispositif différent pour filmer?