Posts filed under 'Classes'
Comme j'en avais marre de devoir constament verrifier si les chemins avec lesquels je travaillais finissaient oui ou non par "/", j'ai décidé de faire une classe pour gérer ça de la manière la plus simple possible. Vous pouvez télécharger cette classe aux formats 7zip, Bzip2 ou Zip.
Voici l'exemple d'utilisation que j'ai fait :
PHP:
-
<?php
-
// First of all, we need to include the class
-
require_once "class.path.php";
-
-
// Then we'll create a new path, with all options
-
// In order, the options are : the path string, is the path pointing a
-
// directory, is there some string to put before the path, and what is the
-
// separator ?
-
$path = new Path("/some/path/to/test/", true, "http://", "/");
-
-
// Obviously, I want to output an URL, just look
-
echo "It's looking like an URL: $path\n";
-
-
// Now I create a new path with a completely different delimiter
-
$path2 = new Path("\a\file.php", false, null, "\\");
-
-
// And I can just append it to the previous one
-
$path->a($path2);
-
// We could have done $path->b($path2), but it would have returned a new object
-
// with $path2 appened instead of changing $path
-
-
// And turn this into a SMB share
-
$path->setHead("\\\\");
-
$path->setSeparator("\\");
-
echo "Now it's a SMB share: $path\n";
-
-
// You can also use new basename() and dirname()
-
// Note that dirname() returns a Path and not a string
-
echo "The parent directory is: " .
$path->
dirname() .
"\n";
-
echo "The pointed file is: " .
$path->
basename() .
"\n";
-
echo "But without its extension it would be: " .
$path->
basename(".php") .
"\n";
-
?>
March 12th, 2008
Youpi
J'ai gagné =D
October 1st, 2007
Et voilà, mon uncentralizedDownloader est nominé sur phpclasses pour le mois d'aout 2007 =)
--> La classe
September 4th, 2007
Quand on a voulu faire des téléchargements directs sur TGS, nous avons été obligé d'utiliser free comme hébergeur, car je n'ai pas assez de bande passante ni de place sur mon serveur pour héberger de la musique. Mais on s'est heurté à divers obstacles :
- Free est plutôt limité dans la liberté de configuration du serveur et les possibilités de PHP
- Des serveurs se retrouvent hors ligne on ne sait pas bien pourquoi
- Des sites hotlinkent nos fichiers (ils font des liens vers nos fichiers en faisant comme si ils venaient de leur site)
La solution pour le 2eme problème était de faire une gestion décentralisée des téléchargements : au lieu qu'un fichier ne soit que sur un seul serveur, on le met sur plusieurs serveurs, comme ça si un des serveurs plante les autres serveurs peuvent continuer à proposer le fichier. Le rôle de UD est de scanner les différents serveurs pour trouver le fichier quelquepart et générer un lien de téléchargement valide.
Pour le 3eme problème, la solution aurait facile si je n'avait pas eu le 1er problème. Malheureusement je l'avait... J'ai commencé par essayer de détourner les erreurs 404, mais pour diverses raisons ça n'était pas très stable et puis la plupart des firewalls empêchaient le système de fonctionner comme il faut. La parade a été de faire en sorte que le nom du dossier qui contient les fichiers change assez fréquement, de manière à ce que faire un lien permanant soit impossible. On envoi donc l'utilisateur sur une page qui verrifie que l'utilisateur vient du bon site, puis qui scanne tout les serveurs pour trouver les fichiers et ensuite créé un lien pour télécharger sur un des serveurs.
Ça n'est évidament pas une protection ultime, puisque même un codeur moyen pourra facilement faire sauter ce genre de protection, cependant ça reste une bonne arme contre la majorité des hotlinks : les blogs et tout les sites qui ne demandent aucune connaissance technique, car leurs webmasters n'ont justement aucune connaissance technique...
Comme mon blog est là pour faire profiter à ceux qui le veulent de mon code, voici les sources de ce gestionnaire de téléchargements, que j'espère suffisament documenté (en anglais). En cas de questions, n'hésitez pas à m'envoyer un mail
.
--> Télécharger uncentralizedDownloader : 7zip - Bzip2 - Zip
--> La classe sur PHP Classes
July 23rd, 2007
Vous pourrez trouver la nouvelle version de phpSerial, ma classe pour lire/écrire sur le port série depuis linux ou windows (sauf que windows gère pas la lecture) en PHP sur le site PHP Classes.
June 1st, 2007
Voici une classe PHP capable d'effectuer un ping sous Windows et sous Linux. Requiert Pear (n'importe quelle version devrait faire l'affaire). (attention: je n'ai pas testé cette classe très largement, il se peut qu'il faille l'adapter à votre système)
Télécharger la classe
January 10th, 2007
J'ai récupéré un afficheur de caisse Citizen C2202, que j'ai programmé pour pouvoir afficher une fortune, lire mes mails et pinger mes serveur. En gros ça sert à rien, mais en tout cas c'était marrant à programmer ^^. Voici donc le code écrit à l'occasion (vous pourrez constater une classe de contrôle du port série), qui ne fonctionne que sous linux (ou peut être certains unix, mais j'ai pas testé).
Télécharger les fichiers
Vous remarquerez que la classe de contrôle de l'afficheur hérite de la classe de contrôle du port série, donc ne comptez pas utiliser l'une sans l'autre. Toutes les fonctions de l'afficheur ne sont pas implémentées (pour la simple raison que j'ai rien compris à certaines), et je ne converti pas non plus le charset vers quelquechose que l'afficheur pourrait comprendre (trop la flemme pour ça).
Et voici la documentation que le constructeur m'a fourni : Citizen C2202-PDUME
January 9th, 2007