Projets site

Sur cette page, vous vous baladerez entre le design d'un site selon l'heure qu'il est , la récupération et l'utilisation des éphémérides , la gestion de films sans oublier un parser aMsn (chaque lien est un accès direct à la section) .

Un design changeant selon l'heure

Petite description

Au cours d'une discussion, j'ai entendu parler d'une société qui désirait avoir un site dont les couleurs et les images s'adapteraient en fonction du jour et de la nuit. De nombreuses solutions avec du JS ou encore un CSS complètement généré par PHP existent mais je trouvais cela trop lourd. Je voulais donc trouver une solution plus légère.

Mise en place

J'ai commencé par séparer le CSS entre la structure et les couleurs (qui elles pourront changer). En plus du CSS pour la structure générale de la page et de celui pour les couleurs de jour, j'ai créé un troisième CSS pour les couleurs de nuit. J'ai également placé un petit script PHP qui récupère l'heure et s'occupe de charger le CSS correspondant : entre 9h et 20h, ce sera le CSS de jour et le reste du temps, celui de nuit.

Compétences acquises

  • CSS : idée de séparer les couleurs du design (si on inclut les images via le CSS, elles aussi peuvent changer) de la structure, et approfondissement ;
  • PHP : date() avec paramètres différents.

Les éphémérides de coucher et lever du soleil

Petite description

Le script explicité au-dessus faisait très bien son travail mais j'ai pensé : comment définir les heures qui sont les plus optimales pour passer en mode nuit ou jour, et je me suis simplement dit : et si on se basait sur le soleil? Que le site passe en mode nuit quand le soleil se couche ?!

Mise en place

J'ai retrouvé les données des éphémérides "officielles", donc avec un certain gage de qualité, à l'observatoire d'Uccle. Je récupère les données via cURL les données brutes pour une position (géographique) et un mois donné. Je cache les données brutes. Et pour finir, Je nettoie et lis ces données et les sauvegarde dans un tableau sérialisé. Les données ainsi récoltées sont utilisées pour passer le site en mode jour ou nuit.

Compétences acquises

  • cURL : utilisation pour poster et récupérer des données et des formulaires ;
  • coordonnées de géolocalisation (degrés, minutes, secondes vs entiers, décimales) ;
  • géolocalisation d'IP via API, et utilisation des coordonnées en découlant ;
  • base64 modifié pour le nommage valide (géoloc) des fichiers caches ;
  • gestion d'une table de correspondances : coordonnées de géoloc/Base64 associé pour faciliter un diagnostic humain ;
  • phpAssert : jeu de tests complet et poussé.

Films

Petite description

Ma chérie allait régulièrement voir les nouvelles sorties de films sur Allociné, et les notait dans un petit fichier texte pour savoir ceux qui valaient la peine d'être vus ou cinéma ou achetés. Je ne trouvais pas cela très pratique, je me suis donc mis à faire une gestion de librairie permettant de savoir ceux qui sont en attente de sortie, ceux qui sont déjà sortis et ceux qui sont déjà vus.

Compétences acquises

  • PHP : utilisation de PDO avancée (classes PDO personnalisées afin d'accroître la sécurité) et requêtes préparées ;
  • utilisation de groupes d'option ;
  • application du système d’éphémérides à un site ;
  • jQuery : Ajax, effets d'apparition et de disparition d'éléments ;
  • jQuery : mise en place et utilisation d'une barre de statut ;
  • PHP : gestion de formulaires pour ajout, suppression et modification de films.
Tout ceci représente quand même : 580 lignes de code PHP, 260 lignes de CSS, 15 images, 120 lignes de jQuery et 11 requêtes SQL différentes.

aMsn Log Parser

Petite description

aMsn (Un clone de MSN Messenger pour Linux) sauvegarde ses logs dans un format assez particulier que j'ai voulu faire interpréter par PHP pour m'affranchir du parser intégré au client aMsn

Mise en place

Pour ce projet-ci, ayant la conviction que je n'allais pas être le seul bénéficiaire du produit fini, j'ai décidé d'utiliser des technologies de partage et de mise en commun de code. J'ai donc utilisé SVN et très fortement commenté le code. Pour ce projet-ci, je vais faire exception à la règle et indiquer tout ce qui est supporté dans ce code

  • listage des fichiers avec l'extension *.log avec possibilité de cliquer dessus pour les ouvrir ;
  • vérification de l'url 'cliquée' pour voir si c'est bien un mail valide ;
  • transformation des timestamps Unix en version lisible humaine avec une version différente pour le début de chaque conversation et de chaque ligne ;
  • auto-coloration du texte selon la coloration d'origine de la conversation ;
  • prise en compte des bbcodes MSN Messenger + (gras, italique, souligné, barré, couleur) ;
  • table de correspondance entre code couleur MSN Messenger + et hexadécimal ;
  • table de correspondance entre cote hexadécimaux et codes couleurs W3C compatibles uniquement ;
  • suppression de la mention '(Mail Address Not Verified)' si présente ;
  • conversion de toutes les émoticons MSN ainsi que de plusieurs autres courantes en leur image correspondante ;
  • utilisation d'une base de données SQlite embarquée avec mise en cache afin d'éviter des requêtes incessantes dans la db pour connaître le chemin d'une image donnée ;
  • utilisation des requêtes PDO ;
  • comptabilisation du nombre d'interventions d'un utilisateur dans une conversation et comptabilisation des externes ou autres pseudos de la personne séparées ;
  • mise en relief de la personne parlant le plus dans la conversation comme "Propriétaire de l'adresse mail de la conversation" ;
  • système permettant d'anonymiser une adresse mail assez facilement et de garder la même anonymisation tout le long de la conversation ;
  • réduction des adresses (mail+HTTP) trop longues ;
  • repérage et mise en liens des adresses HTTP et mailto ;
  • système anti spam empêchant la répétition de la même URL dans la même conversation plusieurs fois de suite ;
  • possibilité d'exclure son/ses pseudos via un simple fichier ini disponible dans data (nametoforget.ini) ;
  • génération d'un fichier .CSS pour la coloration du fichier log généré ;
  • création de classe CSS correctement nommées pour la coloration (cf. ci dessus) afin d'éviter la redondance.

Compétences acquises

  • PHP : timestamps Unix, RegExp, Listage de dossier/fichier ;
  • SQlite (bd reprise depuis MySQL) via PDO avec cache statique (pour éviter les requêtes incessantes) ;
  • anonymisation d'adresse mail avec cache ;
  • réduction de liens ou d'adresses mail trop longs ;
  • utilisation et génération de fichier CSS avec classes 'correctement' nommées.