The Troll's factory

Geekeries & pensées
-->

Archive pour décembre, 2009

Connaître / récupérer le prochain ID AUTO_INCREMENT d’une table SQL

Aujourd’hui je vous fais part d’une chose que bien des gens ont cherché sur Internet et que bien des webmasters ont abandonné de trouver… la méthode pour connaître la valeur du prochain ID d’un champ de type AUTO_INCREMENT dans une table SQL.

Attention cependant, cette méthode fonctionne pour une table ne comprenant qu’un seul champs de type auto_increment et pour MySQL. Je vous laisse le soin de tester (et de nous dire ce que ça donne en laissant un petit commentaire ;-) ) et d’adapter pour d’autres situations, celle situation-ci restant la plus courante.

L’astuce est d’appeler la commande SHOW TABLE STATUS.

En effet si vous tapez par exemple cette requête SQL dans PhpMyAdmin, vous verrez apparaître plein d’informations sur toutes les tables de votre base de données courante.

Si vous souhaitez réduire les lignes à une table précise :

SHOW TABLE STATUS
LIKE 'NomDeLaTable'

Vous allez alors voir qu’une colonne est nommée Auto_increment (attention à la majuscule, importante !). Cette colonne contient la prochine valeur que prendra le champs de type auto_increment de cette table. Attention : la PROCHAINE. Si vous souhaitez connaître la dernière valeur prise par l’auto_increment il faut donc soustraire 1. Je rappelle au passage que l’utilisation de la commande MAX() ou d’un SELECT avec un ORDER BY DESC LIMIT 0,1 derrière ne fonctionnera pas car vous avez la possibilité que des lignes de la table aient été supprimées.

Si vous utilisez par exemple PHP et la fonction mysql_fetch_assoc() (ou mysql_fetch_array() pour les non-éclairés ou ceux qui ont besoin des clés numériques & textuelles), vous récupérerez alors dans votre tableau associatif cette valeur dans la clé nommée ‘Auto_increment’.

posté par Troll dans Scripts, astuces, dév. web avec 5 commentaires

Joyeux Noël à tous !

Voilà, quand même, il aurait été malvenu de ne pas faire un petit billet pour vous souhaiter à toutes et à tous, un Joyeux Noël et de bonnes fêtes de fin d’année.

On se retrouve en 2010, peut-être avant, pour une nouvelle décénnie =)

posté par Troll dans Non classé avec aucun commentaire

Ce dont j’aurais pu vous parler ces deux dernières semaines

Voici un résumé [très] rapide des petits coups de buzz ou infos’ intéressantes dont je n’ai pas eu le temps de faire le relais mais que je lie quand même histoire que ceux que ça intéresse et qui n’ont pas encore trouvé l’info l’ait :

Buzz :

L’UMP en string : Un candidat UMP aux régionales se fait faire un site Internet sur mesure… Sauf que les petits malins qui font son site Internet n’ont pas tout à fait mesuré l’ampleur de mettre une vidéo trop déplacée, malgré le buzz généré et l’humour (de mauvais goût tout de même) utilisée sur le site d’un élu. Ainsi, comme il paraît qu’en France ça fonctionne par « partis » (ah ! s’ils pouvaient être « partis » ailleurs ceux-là !) tout l’UMP est embarqué dans la polémique… plus d’infos ici : l’UMP en string (on arrive un peu trop tard d’ailleurs, vidéo YouTube retirée, dommage !).

Le LipDub de l’UMP plus cher que prévu : Ici c’est un anti-hadopi bien connu (auteur du blog LinuxManua) qui nous parle d’une petite erreur supplémentaire dans la gestion des relations aux droits d’auteurs à l’UMP… Pour la deuxième fois, l’UMP Pirate ! Les Canadiens devraient récupérer 30 000 environs, cool… mais qui finance l’UMP au fait ? Nos sous en fumée chez BlueTouff’s blog.

Microsoft toujours aussi « téléchargeable » : Un outil confectionné par Microsoft pour la police (Française notamment) regroupant tout un tas de petits outils, ayant pour but de pouvoir infiltrer et récupérer le plus d’informations possible d’un ordinateur rapidement via une simple clé USB (en d’autres termes, pirater rapidement l’ordinateur du particulier qui a contredit l’omniprésident) s’est retrouvé disponible au téléchargement sur Internet.
Non seulement maintenant on va pouvoir se servir de leur propre outil contre eux-même, mais en plus, du coup, les hackers n’ont pas mis longtemps à sortir… un antidote !! (bien plus rapidement que ce que Microsoft avait fait pour confectionner l’outil… à mon humble avis !!). Petite review de l’outil « Cofee »[en] et DECAF, son antidote (DECAF = Décaféïné ? Le logiciel d’origine s’appelle « Cofee » (Café sans le deuxième « f »)… )

Droits des internautes, IMPORTANT !

Deux liens très importants cette semaine :

La cours de cassation confirme qu’il sera dorénavant considéré comme un délit pénal que de mettre en ligne des informations sur l’exploitation d’une faille de sécurité informatique : tous les sites de sécurité illégaux ? Ca, ça rappelle le principe du radar automatique !! Cour de cassation confirme le délit pénal de tous les sites de sécurité sur Numerama

Hadopi encore retardée : On en attendait pas moins de la CNIL, qui, ne bénéficiant que d’un avis consultatif, bénéficie tout de même d’un avis légalement et procéduralement obligatoire. Ainsi pour bloquer encore un peu la publication de cette stupide loi anticonstitutionnelle contre laquelle la CNIL avait émis plusieurs lettres de dénonciation, la CNIL a tout bonnement décidé de refuser de donner son avis (sous prétexte d’attendre un autre papier de la part du gouvernement). Comme tout ça c’est du fonctionnariat et que les fêtes de fin d’année arrive, on prévoit que la loi ne puisse être définitivement terminée & autorisée à appliquer vers Février pour les plus optimistes et Avril pour les plus réalistes. Hadopi encore retardée, merci la CNIL !

Voilà c’est fini pour les liens de la semaine :) Oui on est pas en fin de semaine, mais étant donné que les fêtes de Noël vont commencer, je pense qu’on peut approximer ce jour à une fin de semaine =)

Et pour finir, si la fibre optique ne passe pas chez vous, il vous reste les toilettes !!

posté par Troll dans High-tech,politique avec aucun commentaire

Les tâches planifiées sous Linux (cron, crontab) : première approche

Mise à jour : La deuxième partie de ce guide sur les tâches planifiées, intitulée Tâches planifiées sous Linux (cron, crontab) : Seconde approche est dorénavant disponible ici : Tâches planifiées sous Linux (cron, crontab) : Seconde approche.

Article original :
Salut la compagnie,

Aujourd’hui, et malgré les touffes de poils que le Troll s’est arrachées toute la journée en se battant avec le fameux vilain cron et son accolite crontab, je vais vous parler de quelque-chose de bien utile, voire tout simplement indispensable, pour n’importe quel administrateur d’un serveur web, ou même d’un site internet (mais il est assez rare que vous ayiez la possibilité de mettre des cron sans avoir un dédié (ou au moins un VPS) ) : les tâches planifiées.

Les tâches planifiées c’est quoi ? Que vous soyiez GNU/Linuxien ou Windowsien (bouuuuuuh, bon ok, j’arrête) vous ne le savez peut-être pas mais votre système est capable de faire des choses sans que vous lui demandiez, sans que vous n’ayiez quoi que ce soit à faire, de manière automatique.

Cela s’appelle les tâches planifiées , concrètement cela signifie qu’une tâche, va être planifiée (jusque-là, vous suivez ?), et qu’une fois que c’est fait, elle s’exécutera de manière automatique soit une fois, soit plusieurs fois, suivant la manière dont on la planifie.

Planifier ? Késako ?

Tout d’abord, considérons que vous n’avez jamais eu à faire à ce genre de choses, et partons du début : Planifier ? Késako ? (si vous n’avez jamais vu ce mot… euh… je plains votre patron) Planifier, cela signifie que l’on va fixer une date, une heure, un moment précis, où l’on souhaite exécuter une tâche.

Si c’est une tâche unique, que l’on a besoin d’effectué qu’une seule fois, parce-qu’on est pas là à ce moment-là par exemple (comment que vous programmiez votre magnétoscope pour enregistrer le film débile du samedi soir (pour vos enfants bien sûr… vous, vous ne regardez rien de stupide, Arte©® Powered, n’est-ce pas ?) ).

Si c’est une tâche récurrente c’est-à-dire qu’il faudra l’exécuter régulièrement (comme faire le ménage !), dans ce cas il sera possible de la programmer de manière à ce qu’elle s’effectue de manière récurrente, toujours au même moment, à la même heure, etc. … (et de la même façon, on a à faire à des ordinateurs standards, pas d’IA encore).

Cron & Crontab : Je planifie, tu planifies…

Sous Linux, le principal outil de planification se nomme cron, et très vite nous (et vous aussi) appelerons tout simplement une tâche planifiée un cron.

Tout d’abord, avez-vous cron d’installé ? Cron est installé sur un bon 80% des distributions, donc il y a des chances. Pour le savoir tapez :

ls -l /etc/init.d/ | grep cron

Pour ceux sous archlinux, /etc/init.d c’est /etc/rc.d/ de mémoire.

Si vous êtes sous un système basé sur debian, avec aptitude :

sudo aptitude show cron

Sous Fedora :

sudo yum install cron

(si cron est déjà installé ça vous le dira, sinon, ça l’installera !!)

Comme on est pas encore sûr que cron soit déjà lancé, faisons un petit restart :

sudo /etc/init.d/cron restart

(il est possible que le fichier soit nommé « crond » chez vous)

Bon, on est prêt, cron est lancé. Maintenant que faire ?

Dans cette première partie, comme c’est écrit dans le titre, je ne vais pas vous donner toutes les « clés » de cron, nous allons simplement voir ensemble comment utiliser la commande de base, qui permet en fait à elle seule de tout faire, juste d’un manière parfois moins « propre » qu’en passant par certains fichiers un peu plus « complexes » (pas vraiment complexes en fait, mais ça vous fais manipuler des fichiers etc. etc. … puis faut être root, alors ne commençons par les bêtises tout de suite).

La commande dont vous allez dorénavant tomber amoureux est la suivante :

crontab -e

La commande crontab permet, de manière générale, de mettre à jour et modifier les tâches cron d’un utilisateur donné.

Donnons tout de même quelques précisions dessus :

- Si vous voulez remplacer la totalité de votre crontab (c’est-à-dire toutes les tâches qu’il contient, comme nous allons le voir après) par le contenu d’un fichier, utilisez la commande comme ceci :

crontab /chemin/vers/mon/fichier

- Ensuite, par défaut la commande crontab va éditer le fichier crontab de l’utilisateur courant (oui, c’est vous qui courez),  si vous voulez modifier le crontab d’un autre utilisateur (notamment pratique quand on exécute la commande en root !!)  il faut lui préciser le paramètre « -u » comme ceci :

crontab -u user

- Et puis allez, un petit dernier pour la route, pour voir le contenu de votre crontab sans l’éditer (le « -e » que nous allons voir) :

crontab -l

Les paramètres peuvent bien entendus se combiner :

crontab -l -u troll

(affiche le contenu du crontab de l’utilisateur troll (c’est moi) )

Voilà, maintenant passons aux choses sérieuses, donc, l’édition :

crontab -e

Vous voilà maintenant dans un fichier texte, ne vous souciez pas de savoir où il est ni ce que c’est, car c’est en réalité un fichier temporaire.

Vous êtes certainement (95% de chance) sous l’éditeur en console « Nano« ,  si vous savez utiliser vim (ou vi pour les courageux) et que vous êtes (comme moi) allergiques à nano, je vous file quand même la magouille :

EDITOR="vim" crontab -e

Je me contenterai pour ma part de décrire les actions à faire sous nano, supposant que si vous utilisez vim, c’est que vous savez vous en servir (vraiment trèèèès compliqué… (ironie) ).

Dans ce fichier, vous mettrez une tâche planifiée par ligne, et UNE SEULE !

Suivant la longueur de votre « ligne » cell-ci peut s’afficher sur plusieurs « lignes » en console, mais tant que vous n’avez pas mis de retour ligne (Entrée) cela reste la même ligne. Lorsque qu’une ligne est trop longue pour être affichée en plein, nano la coupe en général et met un « $ » à la fin pour vous dire que tout n’est pas affiché.

Maintenant voyons la syntaxe des « cron » :  ceux-ci sont constitués de deux parties distinctes : le moment d’exécution, et la commande à exécuter (ou tâche). Les deux parties sont séparées par un espace (comme souvent sous GNU/Linux).

Ce qui donnera donc à la fin :

partie_date partie_tache

Voyons ce qu’on met à la place de partie_date (dans l’ordre, avec un espace entre chaque donnée à chaque fois) :

  1. minute : la minute (00 à 60) de l’heure à laquelle exécuter la tâche
  2. heure : l’heure (0 à 23), de l’heure de planification de la tâche
  3. jour du mois : de 0 à 31 (ou autre, suivant les mois), le jour, dans la date de planification de la tâche
  4. mois : nombre correspondant au mois (00 à 12) de la date à laquelle vous voulez planifier.
  5. jour de la semaine : Le nom abrégé (mon, tue, wed, thu, fri, sat, sun) ou le numéro (1 à 7) du jour de la date de planification au sein de sa semaine : Lundi = 1, mardi = 2, etc…

Voilà, petit exemple, admettons que je veuille exécuter une date le 1er de l’an 2010 à une heure de l’après-midi, la partie « partie_date » sera la suivante :

00 13 01 01 fri

Vous devez avoir au total 5 données : minute heure jourdumois mois jourdelasemaine Voilà, pour la partie « date », nous nous contenterons des dates fixes dans cette première approches.

Venons-en à la tâche à éxécuter : Ici, rien de plus compliqué que de taper dans une console. Cron lira la tâche à exécuter avec bash, ce qui signifie qu’il le lira de la même manière (enfin presque) qu’il lit les choses quand vous, vous tapez dans la console.

Un petit détail cependant : mettez toujours toutes les commandes en chemin ABSOLU ! ! ! Même les commandes qui paraissent évidentes et qui sont dans /usr/sbin, rajoutez bien le /chemin/vers/mon/fichier . ;)

Ce qui vous donnera, une fois les deux parties remplies :

minute jour jourdumois mois jourdelasemaine /chemin/vers/ma/commande

Maintenant que vous avez écrit votre tâche planifiée, il n’y a plus qu’à enregistrer et fermer !

Pour ça, faites CTRL + X, puis appuyez sur « O » pour répondre oui à la question, et enfin appuyez sur ENTREE pour confirmer votre « oui ».

Sous vi/vim : sortez du mode édition (CTRL + C) puis tapez le traditionnel :wq

Voilà, je vous écris très prochainement la partie suivante : seconde approche.

On y abordera : les jokers, les répétitions, les sélections multiples dans les dates.

Dans les tâches : comment gérer leur sortie et enregistrer leurs résultats et leurs erreurs, ou au contraire ne pas le faire, et ne pas recevoir de « mail » du logger. On parlera peut-être également de la modification manuelle des fichiers cron auxquels la commande « crontab » ne touche pas. Petite note : si vous avez un quelconque problème avec ces explications, laissez un comm’ pour demander de l’aide ;-)

Mise à jour : La deuxième partie de ce guide sur les tâches planifiées, intitulée Tâches planifiées sous Linux (cron, crontab) : Seconde approche est dorénavant disponible ici : tâches planifiées sous Linux (cron, crontab) : Gestion et commandes avancées.

posté par Troll dans Administration serveur,Geekeries avec 10 commentaires

Des fonctionnaires qui ont de l’humour

Bon, ok, je vais aligner les clichets sur les fonctionnaires, mais c’est pas grave, c’est tellement bon !

Vous devez certainement savoir que l’AFNIC, l’agence française chargée de la gestion des noms de domaine, qui a d’ailleurs été capable de mettre presque deux semaines pour me transférer un domaine cet été, gère les demandes de « whois » (ou en française « qui est-ce ? ») vers tous les .fr ?

Eh bien comme il semble qu’ils n’aient pas assez de demandes à valider en ce moment, ils ont encore le temps de faire des petites blagues, certes rigolotes pour le premier venu, mais moins drôles pour celui qui attend qu’on valide son domaine : un joli sapin de Noël sur tous les whois de .fr !

Exemple avec la TF :

On s'amuse bien à l'AFNIC

On s'amuse bien à l'AFNIC

Si je me permets de critiquer, au-delà des fonctionnaires, les gagars de l’AFNIC, c’est parce-qu’en plus vous n’êtes peut-être pas au courant mais depuis que notre pays a été renommé (bah oui, de Chiraquie on est passé à Sarkozaquie, ou Sarkostie suivant les variantes), l’AFNIC a un nouvel amendement qui dit tout bonnement est simplement… qu’on est en Chine.

En effet, si la Chine a même récemment décrété qu’il serait absolument interdit à toute personne individuelle d’avoir un nom de domaine en .cn (l’extension chinoise) et qu’il faudrait de plus en plus de justificatif pour prouve que l’on est une entreprise etc. etc. et qu’il est vrai que nous ne sommes pas encore à ce point en France, ça commence déjà : il est désormais interdit depuis plusieurs années de créer un nom de domaine en .fr si le site pour lequel le nom de domaine sera utilisé (en supposant qu’il sera utilisé pour un site Internet, ce qui représente tout de même une grosse majorité (99% ?) des réservations de .fr) à des fins… de dérisions ! Enfin en pratique, de dérision du pouvoir publique (ou en d’autre mots, de l’omniprésident).

C’est ainsi que du jour au lendemain on été fermés par l’AFNIC (ce qui revient à une modification sans préalable de contrat etc. etc. …) tous les sites qui tournaient notre petit Nicolas en dérision comme Sarkostique.fr etc. etc. ( décret n°2007-162 du 6 février 2007 ).

Alors, l’AFNIC, au final, a tous les inconvénients des Chinois, mais mêmes pas les avantages (le travail) !

Sans oublier pour en revenir au sujet initial, que si je suis un marchand d’arme (en tout légalité hein) et que j’ai mon domaine en .fr qui fait vitrine, je pense que je ne vais pas apprécier d’avoir un petit message gentillais (orthographe de ce mot ? Pas trouvé !) dans mon WhoIs, dans une partie non modifiable qui plus est. Bon ok, faire la défense des marchands d’arme, il y a mieux, mais c’était l’exemple le plus « frappant » (pour ne pas dire « hyper mortel ») que j’avais :)

posté par Troll dans Geekeries,humour avec aucun commentaire

Du safe_mode avec DTC : danger & sécurité

Comme je vous le promettais hier je vous parle aujourd’hui des enjeux et des dangers que j’ai découverts pour le safe_mode (ou plutôt sa désactivation) utilisé avec le panel de gestion de serveur DTC.

Tout d’abord, petit retour rapide sur le fonctionnement de DTC :

DTC crée un utilisateur « dtc » et un groupe « dtcgrp » avec lesquels il fait la plupart de ce qu’il a à faire. Ainsi le ftp est géré par l’utilisateur DTC, les connexions en SSH également (mais justement il y a de sacrés bugs là-dessus), les connexions imap, smtp, etc… etc… et également les connexions HTTP, et donc les lancements d’Apache2 !

Concrètement, DTC est fait pour gérer un serveur dédié et donc proposer divers hébergements à divers sites.

Il crée toute une arborescence à laquelle on adhère ou non mais qui a le mérite d’être relativement claire et facile à utiliser et retenir.

Tous les fichiers de tous les sites appartiennent ainsi à un seul et unique couple user/groupe : dtc/dtcgrp.

DTC utilise énormément le principe plus ou moins bon des chroot pour lancer ses scripts de manière à les « endiguer » et qu’ils n’aillent pas faire n’importe quoi, particulièrement sur les fichiers appartenant à DTC sur le serveur.

Cependant DTC n’a pas prévu une chose… c’est l’utilisation de la commande shell_exec() de PHP (PHP 5 notamment, je ne sais pas pour le 4).

Par défaut, le safe_mode étant activé avec PHP, la commande shell_exec est quasiment inutilisable.

Cependant, si par malheur vous désactiver le safe_mode sur un domaine particulier… catastrophe ! Vous venez d’autoriser la personne qui s’occupe du site de ce domaine, à faire n’importe quoi sur le serveur (enfin sauf tâches d’administration (root) ).

Non seulement parce-qu’elle peut maintenant utiliser shell_exec() pour effectuer des actions au niveau de l’utilisateur dtc, mais surtout parce-que, même si certaines commandes sont bridées, shell_exec() permet d’utiliser la commande crontab.

Or, crontab permet de définir des tâches cron (je vous renvoie à Google si vous ne savez pas ce que c’est : cron est un gestionnaire de tâches planifiées). Or, quand cron lance la tâche, qu’elle qu’elle soit, elle est lancée au niveau de l’utilisateur auquel le cron appartient.

Concrètement si je fais ceci :

file_put_contents('temp.cron', '* * * * * cp /chemin/dun/autre/site/includes/passwordsdatabase.inc.php /chemin/de/mon/site/');
shell_exec('crontab -u dtc /chemin/de/mon/site/temp.cron');

Hop, plus qu’à attendre une minute et j’aurais dans mes fichiers… les mots de passe de la base de données de mon voisin sur le serveur.

C’est un problème très important, donc, et je ne sais pas du tout comment DTC compte gérer les choses dans le futur puisque le safe_mode est amené à disparaîre : déjà considéré comme obsolète dans PHP 5, il sera définitivement supprimé avec PHP 6.

Il est possible que – comme souvent en informatique – GPLHost (éditeur de DTC) dise simplement « Logiciel compatible uniquement avec les versions suivantes de PHP : …. ».

En attendant, vous êtes donc maintenant au courant : NE DESACTIVEZ PAS LE SAFE_MODE PHP SI VOUS UTILISEZ DTC AVEC PLUSIEURS SITES DIFFERENTS.

Cependant, il y a certainement une alternative à cela : j’imagine bien que PHP ou Apache ont la possibilité d’interdire certaines commandes. Ainsi lorsque vous désactivez le safe_mode, pensez à interdire l’utilisation de la commande shell_exec().

Voilà c’était le bulletin sécurité (en exclu !!) du Troll :)

posté par Troll dans Scripts, astuces, dév. web avec aucun commentaire

Neige qui tombe : Un peu de gaieté sur votre site web pour Noël

Salut à tous,

Alors aujourd’hui et comme tous les ans à Noël j’ai décidé de mettre un petit peu de nouveau, un petit détail qui met du piment dans la vie du visiteur, sur mes sites Internet. Mise à part changer – quand on a un graphiste sous la main – la bannière ou son avatar pour y rajouter des décos de Noël, quand on est plutôt tourné développement web, on fait tomber des flocons !

Le code que je vais vous proposer n’est pas de moi, mais j’y ai tout de même fait un certain nombre de modification, et notamment une qui permet de le rendre compatible avec Google Chrome et Firefox quand un doctype est présent (car cela ne fonctionnait, sous ces navigateurs, que lorsqu’il n’y avait pas de doctype :o ).

Ce code est à placer où vous voulez, il a été modifié de manière à attendre la fin du chargement de la page pour se lancer, pour éviter les problèmes de compatibilité des commandes faites sur document.XXX et puis tout simplement pour ne pas ralentir l’affichage de la page :)

Après m’être battu une bonne demi-heure avec WordPress pour gagner le droit d’insérer du code dans un post, et qui plus est, sans que celui-ci soit interprété, voici donc le code à utiliser :

Je vous remercie d’avance d’HEBERGER L’IMAGE SUR VOTRE PROPRE SITE et non de la charger depuis l’url qui est dans le script.
De toutes façons ça va planter car je vais mettre un .htaccess anti-pompage d’image ;)

<SCRIPT type="text/javascript" >
var snowsrc='http://trollfactory.fr/img/snow.gif'; // VOUS ETES PRIE DE BIEN VOULOIR HEBERGE L'IMAGE CHEZ VOUS !
var no = 12;
var ns4up, ie4up, nn6up, doc_width, doc_height;
var dx, xp, yp;
var am, stx, sty;

dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();

var snowspeed = 100;

function snowNS() {
for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
dx[i] += stx[i];
document.layers["dot"+i].top = yp[i];
document.layers["dot"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout("snowNS()", snowspeed);
}

function snowIE() {
for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx[i] += stx[i];
document.all["dot"+i].style.pixelTop = yp[i];
document.all["dot"+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);
}
setTimeout("snowIE()", snowspeed);
}

function snowNN6() {
for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height-50) {
xp[i] = Math.random()*(doc_width-am[i]-30);
yp[i] = 0;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
dx[i] += stx[i];
document.getElementById("dot"+i).style.top = yp[i]+'px';;
document.getElementById("dot"+i).style.left = Math.abs(xp[i] + am[i]*Math.sin(dx[i]))+'px';
}
setTimeout("snowNN6()", snowspeed);
}

var initsnow = function() {
ns4up = (document.layers) ? 1 : 0;
ie4up = (document.all) ? 1 : 0;
nn6up = (document.getElementById) ? 1 : 0;
var i=0;
doc_width = screen.width;
doc_height = screen.height;

if (ns4up) {
doc_width = self.innerWidth;
doc_height = self.innerHeight;
} else if (ie4up) {
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
} else if (nn6up) {
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
for (i = 0; i < no; ++ i) {
dx[i] = 0;
xp[i] = Math.random()*(doc_width-50);
yp[i] = Math.random()*doc_height;
am[i] = Math.random()*20;
stx[i] = 0.02 + Math.random()/10;
sty[i] = 0.7 + Math.random();
if (ns4up) {
if (i == 0) {
document.write("<layer name=dot"+ i +" left=15 top=15 visibility=show><img src='"+snowsrc+"' border=0></layer>");
} else {
document.write("<layer name=dot"+ i +" left=15 top=15 visibility=show><img src='"+snowsrc+"' border=0></layer>");
}
} else if (ie4up || nn6up) {
if (i == 0) { document.write("<div id=dot"+ i +" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><img src='"+snowsrc+"' border=0></div>");
} else {
document.write("<div id=dot"+ i +" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><img src='"+snowsrc+"' border=0></div>");
}
}
}

if (ns4up) {
snowNS();
} else if (ie4up) {
snowIE();
} else if (nn6up) {
snowNN6();
}
}

document.onload=initsnow();
</SCRIPT>

Les paramètres suivantes sont modifiables :

Variable « no » : Nombre d’images / flocons qui seront affichés.
Variable « speed snow » : Sa valeur peut varier de 1 (pas 0 sinon ça risque fort de planter) à 500, mais je vous déconseille d’aller au delà de 200 ou en dessous de 10. Plus la valeur est petit, plus les flocons bougent vite (oui c’est un peu l’inverse du mot « speed », mais ça vous ira !).

Et… c’est tout :) Ca ne fait pas beaucoup de paramètres, mais pour faire tomber des flocons, on est quand même pas en train de paramétrer Gentoo non plus :)

Pour ceux qui utilisent WordPress et qui souhaiterait mettre en place cette animation sympathique (à noter que ce n’est pas du flash mais du javascript, donc compatibilité avec une grand majorité de navigateurs) je vous conseille de placer le code dans le fichier « Pied de page » (footer.php). Que vous pouvez modifier en faisant depuis votre tableau de bord : Apparence >> Editeur >> Cliquer sur « Pied de page » dans la colonne de droite.

Voilà, enjoy ;)

Demain je vous parle (en théorie) du safe_mode de PHP utilisé avec le panel DTC (Digital Technology Control) ainsi que la création d’un principe de tâches cron léger et réellement géré en cron… mais contrôlé par PHP :) (ça aurait dû être aujourd’hui, mais petit contre-temps dirons-nous :D )

PS : Je ne connais pas l’auteur initial du script, je l’ai trouvé sur un petit site dont j’ai la certitude totale que ce n’est pas le gérant qui a créé le script, c’est pourquoi je n’ai pas cité de source :)

posté par Troll dans Scripts, astuces, dév. web avec 6 commentaires

Ils nous engloutiront, d’une manière… ou d’une autre !

Sacrés Chinois !

Il est bien connu qu’un jour les Chinois nous engloutiront, cependant la thèse la plus commune repose sur leur force de travail, leur nombre, leur expansion économique, technologique etc. plus rapide que n’importe quoi d’autre dans l’histoire (à part l’informatique ? :D ), or une nouvelle thèse apparaît… Les Chinois nous engloutiront… avec un trou noir !

Comment ça ? Eh bien figurez-vous que l’information est peut-être passée inaperçue pour un certain nombre d’entre vous (et moi également) mais en octobre dernier, des chercheurs chinois auraient réussi à créer un trou noir artificiel.

Alors que toute une polémique tournait autour du lancement du LHC en Europe il fut un temps, pour les Chinois on a pas entendu de polémique décriant l’expérience de manière aussi large que pour le LHC, et on a pas non plus vu de procès par-ci par-là.

Non, les Chinois, eux, ont le droit de s’amuser à créer des tous noirs stables, en laboratoire, pour faire joujou et faire un démonstration concrète de la théorie des metamatériaux (que je me passerai de vous expliquer en détails).

Concrètement, en octobre dernier, deux chercheurs chinois, donc, ont réussi une expérience fascinante, terrifiante et édifiante ( si vous avez d’autres adjectifs en -ante qui iraient bien, laissez les en commentaire ! ) : la création d’un trou noir artificiel, ou du moins, d’un pseudo-trou noir. En effet, le trou noir duquel nous parlons s’est révélé capable de d’absorber de manière définitive des microondes d’une fréquence de 18GHz sans jamais les laisser ressortir. Mais les premières informations ne parlent pas des autres types de matières.

L’énergie ainsi emmagasinée serait reproduite à la sortie du trou noir sous forme de chaleur (ou comment créer un méga réchauffeur de pâtes du samedi soir ?).

Satire mise à part, et malgré les dangers que cela peut entraîner, il est difficile de parler de l’expérience de Qiang Cheng et Tie Jun Cui sans les féliciter pour l’avancée technologique que cela procure en réalité. En effet les trous noirs de cette sorte auraient de nombreuses applications, mise à part l’application à la transformation d’énergie solaire par un procédé « complet » (absolument toute l’énergie d’entrée est transformée en chaleur, pas de « pertes » intermédiaires : c’est un trou noir !) de tranformation de la lumière en chaleur, de nombreux scientifiques (et businessmen) sont déjà prêts à trouver des applications à ce genre de technologie.

Applications qui, bien entendu, iront une fois de plus, comme toutes les précédentes, dans le sens de la bonnification de l’espèce humaine et aideront certainement les pays émergents (ou dans le langage commun, les pays (de) mourrants) à sortir de leur état de misère…

Une chose est sûre, si les Chinois commencent à maîtriser ce genre de procédés, il faut clairement arrêter de mettre l’adjectif  « potentiels » devant les qualificatifs tels que « dangers », « ennemis », ou encore « futurs maîtres du monde » quand on parle d’eux dans les médias :)

posté par Troll dans sciences avec aucun commentaire

Ahhh… Mais qu’il fait froid !

Un petit billet dont la bivalence du titre représente bien la bivalence de mon état physico-mentale en ces temps avancés…

A la fois étrangement ému de savoir que pendant deux semaines je ne me lèverai pas le matin en pensant que la journée va être dure et que je vais manger des choses horribles à midi (copyright Castor & Pollux (C)(R) ), je ne saurai être insensible à l’horrible froid qui, dans nos contrées habituellement chaudement ensoleillée, cause tant de chahut dans mon chauffage biologique interne !

Petite constatation du samedi soir, donc : les vacances, c’est meilleur au chaud ! :)

posté par Troll dans Pensées avec 4 commentaires

Le temps, cette denrée rare…

Qui n’a jamais… non, formulons plutôt les choses ainsi : Qui a la chance de n’avoir jamais pensé « Ah ! Si j’avais un peu plus de temps [+ allocution de votre choix] » ?

Si vous êtes concernés par une possible affectation de « qui » à votre profil, alors vous êtes prié de me laisser en commentaire votre boulot, salaire, nationalité, comment vous avez fait aussi accessoirement… histoire que je vous rejoigne !

Bon, introduction plutôt houleuse, hasardeuse, tout ce qu’on aura le courage de trouver comme synonymes à cette heure tardive de notre chaleureux et valeureux (oui, il revient toutes les semaines, malgré ce qu’on lui fait subir !) week-end, qui une fois de plus touche à sa fin sans que… la Troll-Factory n’ait reçu de billet intéressant :-/

Eh oui, car ce billet est consacré à une petite excuse au possible lectorat qui passerait (on ne sait jamais) par ici quelques-fois : je manque de temps en ce moment pour rendre la Troll-Factory un peu vivante. Mais je promet, après m’être repenti, de me faire pardonner ;-)

Je prévois notamment de partager progressivement la plus grande partie possible de mes découvertes techniques en matière de webmastering, rédaction web, geekeries, serveur linux etc. … :) Notamment tous ces petits bouts de codes qu’on trouve partout qui trainent sur les blogs, mais qu’on est bien content de trouver quand on galère sur le même sujet que le bloggueur, sauf que le bloggueur, lui, il a trouvé la solution ! (non pas qu’on soit de tendance fégnante, mais si on peut économiser du temps… ! (tiens, ça revient encore, cette notion !) ).

En tout cas si le temps c’est de l’argent, heureusement que le manque de temps n’est pas encore directement relié au manque d’argent de manière implicative, sinon je serai bon pour me pointer aux restos’ du coeur cette hiver, ou à la soupe populaire, pour un peu que ça existe encore pas trop loin d’ici :-)

Ce petit billet sur le temps qui manque encore est toujours est en fait une petite réponse cachée à une remarque forte intéressante de BlogExperience (lue il y a déjà un certain temps, mais fallait que ça fasse le tour de mon cerveau de Troll :D ), et je dois avouer que cela m’a un peu inspiré l’envie de parler de ce temps, qui coule, sans arrêt, de manière tellement sereine et à la fois dramatiquement constante. Temps qui pourtant, vous le savez j’espère tous (sinon, dépêchez-vous de le découvrir) passe inévitablement plus vite auprès de certaines personnes… ;-)

(et passe aussi beaucoup moins vite dans un certain nombre de distorsions temporelles : dans la queue à Casino, dans la salle d’attente chez le dentiste, sur les quais de la sncf et sous les arrêts de tram… )

posté par Troll dans Pensées avec 3 commentaires