2 jours que ca tourne !!

Bon, ben après deux jours de fonctionnement sans problème technique, ni reboot intempestif, je peux dire que je suis content de ma configuration. Le niveau de bruit est nickel, la performance tout à  fait correcte et compiz … top !

Tout ne s’arrête pas là  pour le site pour autant … arrivent bientôt des mousse isophonique pour la tour (ça résonne un peu comme dans une pièce vide dans le bousin !) ainsi qu’un ventillo de boîtier (120mm) sensé être très silencieux (8db) ….

Juste pour dire : Faut pas désespérer !

Compizzzz … la classe !

Totalement inutile donc parfaitement indispensable comme on dit ! comme je me devais de tester compiz sur ma nouvelle carte nvidia … et bien c’est fait .. et ça fonctionne … je ne sais pas mais ce soir … c’est le jour à  jouer au loto là … comme quoi, comme on dit .. ya des jours!

Rien à  dire sur l’install, je l’ai déja décrite précédemment, sauf que là , ça fonctionne.

Merci cédric une idée lumineuse

Je vais peut être bien tapauter un peu vite sur ce coup mais bon … Ce matin, je dis à  un collègue qui avait utilisé un 7300GS sous linux …
– P’tain t’as pas eu des soucis avec ta 7300 machin … j’ai des crash à  la con
– Bah non !
– Tu t’en servait en xinerama ?
– Ouai à  fond avec 2 écran + un vidéo …
– Quel driver ?
– Le dernier …
– mais tu t’en servait longtemps
% – ouaip … toute une aprem, nickel !

là  … /me …. la déprime … grave !
lui :
– T’as pas un soucis d’alim, c’est que ca pompe c’te daube !
– Meredddeeeeeuuuuuu …. mon alim moisie ….

Ben oui, comme je l’ai dit hier, l’alim a fini par merder grave grave hier … Du coup, je rentre, je change de carte vidéo, pour remettre la nvidia … réinstallation des drivers (les derniers, ceux qui ne tenaient pas 5 minutes sans rebooter) et depuis, ca fonctionne !!

Pourvu que ça dure ! Ca me donne même envie de retenter un coup de compiz ca !

Journée déprimante !!!!!!!!!

Voila un dimanche de fichu !!! Alors que je pensai être sorti d’un mois de problème avec ce matos et suite à  l’achat d’une seconde carte vidéo Nvidia cette fois, je me suis retrouvé confronté à  des problèmes de reboot du PC intempestif et aléatoires. La cause les drivers NVidia visiblement et quelles que soit les versions utilisées… Bien sûr le driver “nv” de xorg ne supporte pas la carte et le fbdev ne gere pas le dual screen … Donc après des heures de galère, retour à  la carte Radeon HD 2600 qui bien entendu n’a pas voulu refonctionner avant un bon moment ; le driver radeon lui non plus ne détecte pas le HD 2600 et les catalist ont toujours ce bug extrêmement désagréable qui interdit de passer d’une console à  une autre ou en tout cas d’un utilisateur à  un autre… pénible !

Comme tout cela n’était pas suffisent pour gàcher ma journée, mon alim fanless Fortron Zen 300 a décidé de ne plus démarrer, alors qu’elle m’avait fait pas mal de fois le coup mais ce qui avait été réglé par le débranchement du lecteur CD puis par le changement de carte video, a remis le couvert. Plus moyen de démarrer, y compris sans carte vidéo…

Franchement à  vous dégouter de l’informatique pour un moment… Je vais donc essayer avec une carte nvidia 2600 …. en espérant qu’un chip un peu plus light et plus ancien sera mieux supporté. Mais là, c’est film tv et pc puni ! yen a marre !

Régulation de le température, le script qui va bien…

Je vous en ai parlé … maintenant qu’il tourne depuis 10 jours sans que mon processeur ait fumé, je vous le soumet…. à  utiliser à  vos risques et périls… Son principe est simple, lorsque la machine n’est pas utilisée, il passe en basse fréquence et il adapte la vitesse des ventilos à  la température du cpu et la charge en cours pour anticiper la chauffe. Le script régule bien ma machine et ce, en silence.

Arborescence de fichier progressive

(Article rédigé par un groupe d’étudiants d’IUT dans le cadre d’un projet tutoré)

Sur la toile, plusieurs scripts vous proposent d’afficher une arborescence de votre système de fichier tout d’un bloc. Sympathique, mais si vous possédez beaucoup de dossier le chargement risque d’être (très) long… Avec l’Ajax, nous allons charger les branches de l’arbre au fur et à mesure des clics de l’utilisateur !

D’abord, avant de nous lancer à corps perdu dans le code pure et dure, réfléchissons à l’organisation de notre fichier HTML. Voici une proposition :

<p>Dossier racine

<p onclick=”javascript:ouvrir()”>Premier dossier</p>

<p onclick=”javascript:ouvrir()”>Second dossier</p>

<p>Fichier 1</p>

<p>Fichier 2</p>

<p>Fichier 3</p>

</p>

 

Bon, cela n’a pas l’air mal. Imaginons qu’on clique sur le second dossier, on aurait alors un code du genre :

 

<p>Dossier racine

<p onclick=”javascript:ouvrir()”>Premier dossier</p>

<p onclick=”javascript:ouvrir()”>Second dossier

<p onclick=”javascript:ouvrir()”>Premier sous-dossier</p>

<p onclick=”javascript:ouvrir()”>Deuxième sous-dossier</p>

<p>Fichier divers</p>

</p>

<p>Fichier 1</p>

<p>Fichier 2</p>

<p>Fichier 3</p>

</p>

 

 

Actuellement notre principe est faillible :

– On ne peut pas fermer les dossiers

– On inclus des balises utilisant “onclick” dans d’autres balises “onclick”, donc les fonctions risquent d’entrer en conflit

 

On va donc mettre le “onclick” à l’intérieur dans les deux cas grâce à la balise “span” de cette façon :

 

<p>Dossier racine

<p><SPAN onclick=”javascript:ouvrir()”>Premier dossier</SPAN></p>

<p><SPAN onclick=”javascript:fermer()>Second dossier</SPAN>

<p><SPAN onclick=”javascript:ouvrir()”>Premier sous-dossier</SPAN></p>

<p><SPAN onclick=”javascript:ouvrir()”>Deuxième sous-dossier</SPAN></p>

<p>Fichier divers</p>

</p>

<p>Fichier 1</p>

<p>Fichier 2</p>

<p>Fichier 3</p>

</p>

 

 

Si on clique sur le nom du dossier, le “onclick” est écrasé par la liste des sous-dossiers et sous-fichiers. Ainsi, plus aucune inclusion mutuelle conflictuelle. Vous remarquerez que de cette manière on met aussi en place la fonction de fermeture du dossier. Cela soulève un nouveau problème : Quand la fonction de fermeture est appelée par le “span”, comment fait-elle pour vider l’intérieur “p” en parent ? Il faut trouver un moyen de récupérer ce “p”, et nous allons le faire grâce aux identifiant :

 

<p>Dossier racine

<p ID=”Premier dossier”>

<span onclick=”javascript:ouvrir()”>Premier dossier</span></p>

<p ID=”Second dossier”><span onclick=”javascript:fermer()”>Second dossier</span>

<p ID=”Second dossier/Premier sous-dossier”>

<span onclick=”javascript:ouvrir()”>Premier sous-dossier</span></p>

<p ID=”Second dossier/Deuxième sous-dossier”>

<span onclick=”javascript:ouvrir()”>Deuxième sous-dossier</span></p>

<p>Fichier divers</p>

</p>

<p>Fichier 1</p>

<p>Fichier 2</p>

<p>Fichier 3</p>

</p>

 

 

Le “span” contenant la fonction de fermeture contient dans son innerHTML l’identifiant du dossier à vider ! En d’autres termes, la fonction connaît la balise à vider lors de la fermeture. Après mise en forme, voilà donc à quoi ressemble notre page arborescence.html :

 

<html>
 <head> 
 <link rel="stylesheet" type="text/css" href="arborescence.css" media="all">
 <script type="text/javascript" src="arborescence.js"></script>
 </head>
 <body>
 <h1>Arborescence</h1>
 <p id="C:"><span onclick="javascript:ouvrir('C:');">Cliquez ici pour ouvrir l'arbre</span></p>
 </body>
</html>

 

C’est tout ! La récursivité et l’Ajax feront le reste. Notez qu’ici le dossier racine sera le lecteur C:, si vous n’êtes pas sous Windows nous vous conseillons vivement de prendre un autre répertoire. Sachez tout de même qu’il ne faut pas mettre de “/” à la fin.

 

Nous avons déterminé la façon dont sera structuré notre page HTML, passons aux fonctions javascript grâce à notre fichier arborescence.js. D’abord implémentons notre fameuse fonction de création de requête Ajax :

 

/*

Fonction qui crée un objet XHR.

Cette fonction initialisera la valeur dans la variable globale “requete”

*/

 

var requete = null; /* On crée une variable qui contiendra l’objet XHR */

 

function creerRequete() {

try {

requete = new XMLHttpRequest(); /* On essaye de créer un objet XmlHTTPRequest */

} catch (microsoft) {

/* Si cela ne marche pas, on a peut-être affaire

à un navigateur de Microsoft. On tente alors de créer un objet ActiveX */

try {

requete = new ActiveXObject(‘Msxml2.XMLHTTP’);

} catch(autremicrosoft) {

/* Autre méthode si la première n’a pas marché */

try {

requete = new ActiveXObject(‘Microsoft.XMLHTTP’);

} catch(echec) {

/* Si aucune méthode ne fonctionne, on laisse l’objet vide*/

requete = null;

}

}

}

if(requete == null) {

alert(‘Votre navigateur ne semble pas supporter les objets XMLHttpRequest.’);

}

}

 

 

Ensuite travaillons sur la fonction d’ouverture des dossiers. Il s’agit tout simplement de récupérer le dossier dans les paramètres et de l’envoyer à la page PHP. On redirige ensuite le tout vers la balise portant l’identifiant du dossier.

 

function ouvrir(id) {

 

/* On récupère la balise doté de l’identifiant précisé */

src = document.getElementById(id);

 

/* On crée notre super objet XHR global */

creerRequete();

 

/* On construit à l’avance notre URL en passant les paramètre en GET */

var url = ‘arborescence.php?dir=’+id;

 

/* On édite les propriété de l’objet : type de paramètre,

url (avec paramètres) et une option autorisant une réponse du serveur */

requete.open(‘GET’, url, true);

 

/* On initialise la fonction de renvoi d’information */

requete.onreadystatechange = function() {

if(requete.readyState == 4) {

if(requete.status == 200) {

src.innerHTML = requete.responseText;

}

}

};

 

/* C’est partit ! On envoi la requête XHR au serveur */

requete.send(null);

}

 

 

La fonction de fermeture n’est pas beaucoup plus complexe. A partir du chemin complet du dossier, il faut récupérer le nom simple. Ensuite on doir remplacer le contenu de la balise identifiée par le chemin complet par la balise du dossier, mais fermée, comme ceci :

 

<span onclick=”javascript:ouvrir(‘le chemin complet’);”>le nom simple</span>

 

 

Voilà la fonction implémentée :

 

function fermer(id) {

 

/* On récupère la dernière partie du chemin complet du dossier, c’est à dire juste le nom du dossier */

var nom = new RegExp(‘/’);

nom = id.split(nom);

nom = nom[nom.length-1];

 

/* Le chemin complet du dossier est aussi son identifiant, à partir de celui-ci on peut récupérer la balise le représentant */

src = document.getElementById(id);

 

/* On écrase le contenu de la balise par le ‘span’ permettant l’ouverture du dossier */

src.innerHTML = ‘<span onclick=”javascript:ouvrir(\”+id+’\’);”>’+nom+'</span>’;

}

 

 

Bon, notre fichier Javascript est fait, attaquons nous au script PHP : arborescence.php. Le but de celui-ci sera de récupérer le chemin du dossier, d’analyser sont contenu et de le renvoyer formaté en HTML de façon à ce que les dossiers trouvés puissent être à leur tour ouverts.

 

<?php

if(isset($_GET[‘dir’]))

{

// Si le dernier caractère du chemin complet du dossier n’est pas un slash, en mettre un

if(substr($_GET[‘dir’],-1)!=”/”)

$_GET[‘dir’].=”/”;

 

// Voici nos deux variables de retour, elles sont vides pour le moment

$ret1 = “”;

$ret2 = “”;

 

// Ouvrir le répertoire

$dir = opendir($_GET[‘dir’]);

 

// Tant qu’il y a des choses dedans, s’il ne s’agit

//pas des dossier “.” et “..”, ajouter le fichier ou le dossier selon le formatage HTML

while ( ($v = readdir($dir))!=”” )

if( $v!=”.” && $v!=”..” )

if(is_dir($_GET[‘dir’].$v))

$ret1.='<p id=”‘.$_GET[‘dir’].$v.'”><span onclick=”javascript:ouvrir(\”.$_GET[‘dir’].$v.’\’);”>’.$v.'</span></p>

‘;

else

$ret2.='<p>’.$v.'</p>

‘;

 

// Enfin, on affiche le ‘span’ permettant la fermeture et on met à la suite les dossiers puis les fichiers

echo ‘<span onclick=”javascript:fermer(\”.substr($_GET[‘dir’],0,-1).’\’);” class=”diropen”>’.ereg_replace(“^.*/([^/]*)/”,”\\1″,$_GET[‘dir’]).'</span>

‘.$ret1.’

‘.$ret2;

}

?>

 

 

Pour agrémenter le tout voilà une petite mise en page CSS grâce au fichier arborescence.css :

 

.diropen {

color: #ff0000;

cursor: pointer;

}

 

.dirclose {

color: #0000ff;

cursor: pointer;

}

 

.cadre {

margin-left: 50px;

}

 

.fic {

color: #008800;

margin-left: 50px;

}

 

 

Voilà, notre système doit fonctionner correctement. Notons tout de même que les caractères spéciaux ne sont pas gérés ! Suivant le navigateur l’ouverture d’un dossier contenant des accents peut être cause d’erreur.

Xmms prend 30% de mon CPU

Humm … je viens d’en parler et de trouver une solution du même coup … simplement en changeant le périphérique de sortie, pour qu’il utilise OSS plutot que Alsa ..; étrange … mais bon, tant que ça fonctionne.

En même temps c’est balo, j’avais pas vu mais je suis à  700MHz ! n’empêche que quand même 30% pour 1 mp3 !

Toujours un petit soucis ! cette fois c’est l’USB qui flanche !

Bon, vais-je un jour avoir une machine 100% opérationnelle ?!? 1 mois complet pour monter un PC, c’est un record jamais atteint … bon, ok, je passe pas mal de temps à  taper tout ce texte, mais tout de même … Ca va que lorsque j’ai attaqué tout ça, c’était avec l’envie de bricoler du matos et de me risquer dans l’étrange … et bien j’en ai eu pour mon pogon … et ce n’est pas terminé !!

La nouveauté, c’est que lorsque je branche un truc sur l’usb, il est bien reconnu, c’est à  dire que en tapant dmesg je le voit bien, mais par contre il n’est jamais monté, ni même affecté à  un périphérique …. du coup, inutilisable 🙁 . Par contre, si je branche que je reboot, les éléments branchés au boot sont détectés et montés ! Heureusement, je ne suis pas seul et ce cas a été ouvert chez novell.

Alors voila, encore un problème à  régler … mais après, faut me le promettre, c’est terminé !!!

Mouaip … enfin, si je considère que xmms occupe 30% de ma cpu, je sens qu’il y a encore quelques loup cachés !

Mise à  jour … Coté usb, finalement, tout va bien, sauf que suite à  l’ajout d’un périphérique, KDE ne fait rien et que du coup, Digikam ne voit pas mon appareil photo 🙁 … mais bon, le bug précédent n’a rien à  voir …. snif ; mais en même temps il y a du positif

Bon, finalement, j’ai fini par trouver !!! KDE ne me detecte toujours rien, mais par contre mon appareil photo fonctionne … donc si vous rencontrer le même problème, regardez du coté du /proc/bus/usb qui pour ma part n’etait pas monté. Je ne sais pas si ça joue, mais j’ai, dans fstab, remplacé le “noauto” par les options suivantes :
usbfs /proc/bus/usb usbfs devgid=6,devmode=666,nodev,noexec,nosuid 0 0
Le groupe 6 etant disk auquel mes utilisateurs sont associés.