Deepfreeze

Les développeurs sont coutumiers des backups (vous trouverez plus d’information à ce sujet dans l’article “Backups et media de stockage”) et de la protection de leur machine contre toute attaque.

A la recherche d’une manière de portéger votre machine contre tout type d’attaque?

Sous Windows OS, le développeur consciencieux devra installer et configurer un lot de logiciels :

  • un firewall comme Sunbelt,
  • un logiciel anti-viruscomme Avast,
  • un logiciel anti-spyware comme Spybot,
  • et un optimiseur système comme CCleaner

Il y a une autre méthode qui peut se révéler plus simple pour protéger une machine locale : DeepFreeze est un logiciel qui permet de geler la partition du système d’exploitation et de laisser les autres partitions dégelées. Ainsi, même en cas d’attaque sévère, les fichiers système seront intact au redémarrage de la machine. Ce logiciel comporte 2 contraintes dont je me suis affranchi :

  • DeepFreeze est payant (32,40 euros pour l’édition Standard – version Windows)
  • Il faut désactiver le logiciel et redémarrer avant de modifier le registre (installe un logiciel,…)

Ce logiciel a aussi été développé en versions Mac et Linux.

Sous Linux OS, une attaque par virus est beaucoup plus difficile grâce à l’architecture du système, à ses stratégies d’utilisateurs et de groupes et à une communauté d’utilisateur beaucoup plus confidentielle. Mais n’oubliez cependant pas de configurer l’OS correctement.

Webliographie

Faronics – DeepFreeze

Deepfreeze

Developers have usual tricks concerning backups (please read “Backups and storage media”) and protecting their machine against attacks.

Looking for a way to protect pcs from any kind of attack?

Under Windows OS, the user will have to install and configure a series of softwares :

There’s another way that can make it easier to protect a local machine : DeepFreeze is a software that freezes the OS partition and leaves the other partitions thawed. So, even under the heaviest attack, the system files will be intact at reboot. This software has 2 constraints :

  • you need to purchase it (32,40 euros for a Standard Edition – Windows version)
  • you need to deactivate DeepFreeze and reboot before modifying the registry (installing a software,…)

This software has also been developed in Mac and Linux versions.

Under Linux OS, virus subversion is much more difficult thanks to the OS architecture, its user and group permission strategies and its moderate spread in the general public. But do not forget to configure your OS correctly, though.

Webliography

Faronics – DeepFreeze

 

OS Linux

Programmer en PHP et MySql mène le développeur, un jour ou l’autre, à travailler sur un système d’exploitation autre que Microsoft Windows.

Solutions WAMP sous Windows

Wamp logoPour faire fonctionner un site dynamique PHP-MySql sur une machine local Microsoft Windows, le développeur a besoin d’installer un logiciel WAMP (i.e. Windows, Apache, MySql, Php) comme WampServer (mon favori) ou EasyPhp (dont le développement est un temps resté inactif, il y a quelques années, mais qui a été depuis mis à jour). Ces plates-formes de développement Web proviennent des solutions LAMP, un acronyme pour Linux, Apache, MySql, Php. LAMP sont des logiciels libres et font partie de beaucoup de distributions Linux.

Choisir un système d’exploitation Linux

linux logoComme le mentionne Netcraft, les sites Web tournent principalement sous serveur Apache. Développer des sites Web sous Linux OS peut se révéler être la bonne solution si le développeur :

  • se sent à l’aise avec les lignes de commande du terminal (quelle que soit la distribution, les réflexes seront les mêmes)
  • peut trouver des versions de drivers hardware développés pour Linux OS (chercher=>trouver)
  • peut s’adapter aux logiciels Linux

Si ces exigences peuvent être remplies, le développeur est prêt à changer de système d’exploitation et choisir la distribution Linux qui lui convient le mieux. Un grand nombre de distributions gratuites existent sur Internet. S’il hésite sur labonne distribution à choisir, il peut passer le Test de distribution Linux (multilingue).

Une fois la distro choisie, voici comment l’installer.

Ayant essayé quelques Live CDs et DVDs au préalable (distro Linux que l’on installe pas mais que l’on charge au démarrage de la machine pour avoir un aperçu de l’interface et de la distro), le développeur aura une bonne idée de l’environnement de Bureau (KDE ou Gnome). Mon expérience m’a poussé à choisir la distribution Linux Serveur OpenSuse.org.

Vérification Md5sum de la distro téléchargée

OpenSuse 11Une fois le fichier ISO téléchargé, il faut vérifier l’intégrité d’OpenSuse DVD avant installation. Il est assez simple de faire cette vérification en vérifiant la some md5 du fichier en question. Vous pouvez utilier Fastsum à cette fin. Le résultat que Fastsum vous donnera après analyse devra correspondre strictement à la valeur md5sum fournie par OpenSuse.org pour ce fichier.

Où et comment installer?

Pour ma première installation de Linux comme débutant, j’ai acheté un nouveau disque dur sata (DD) bought a new sata hard disk (HD). Je ne voulais courir aucun risque avec mon DD Windows. J’ai donc déconnecté mon DD Windows et ai connecté mon nouveau DD vierge.

J’ai démarré l’ordinateur et ai changé la configuration de la séquence de boot dans le BIOS pour que l’ordinateur commence par vérifier le lecteur DVD au lieu du DD. Ainsi, au redémarrage, le DVD Opensuse inséré, l’ordinateur démarre sur le DVD et l’installation démarre.

Installer OpenSuse

Opensuse est fourni avec une interface graphique d’installation qui vous permet de l’installer par clic (pas de connaissance de ligne de commande nécessaire à ce stade).

Linux-Windows multi-boot

Il est évidemment possible de démarrer Windows à partir de Linux. Souvenez-vous que j’ai choisi d’installer Linux et WIndows sur 2 disques durs séparés. Mon OpenSuse est mon DD primaire. J’ai ensuite connecté mon DD secondaire Windows. Sous Linux, vous devrez changer le GRUB pour pouvoir démarrer Windows de la fenêtre de démarrage Linux. En effet, Windows ne démarrera pas s’il n’est pas le DD primaire.

En tant que root, vous devrez changer le grub dans /boot/grub/menu.lst. Changez les lignes concernant Windows (ou ajoutez-les au besoin) :

title Windows
map (hd0) (hd1)
map (hd1) (hd0)
chainloader (hd1,0)+1

Ceci re-mappera vos DD et fera croire au système que le HD0 est le DD Windows.

Les drivers Linux

Quelle que soit votre configuration hardware, elle devrait tourner (peu ou prou) sous Linux. Linux n’est livré qu’avec des drivers Open Source. Vous pourriez donc être surpris au premier démarrage par le comportement de votre carte graphique, par exemple. Vous trouverez sans doute des ressources utiles sur Internet en la matière. Dans mon cas particulier, NVidia a développé des drivers spécifiques pour Linux.

Webliography :

Netcraft survey – November 2009

WampServer

Linux distribution Chooser

OpenSuse.org

Md5sum check

Linux OS

Dealing with PHP and MySql will some day lead the web developer to scripting on another OS than Microsoft Windows.

WAMP solutions under Windows

Wamp logoIn order to run a dynamic PHP-MySql website on a local Microsoft Windows machine, the developer needs to install a WAMP software (i.e. Windows, Apache, MySql, Php) like WampServer (my favourite) or EasyPhp (the development of which stayed inactive for a while, some years ago, but which has now been updated). Those webdevelopment platforms all come from LAMP solutions, an acronym for Linux, Apache, MySql, Php. LAMP is free software and is part of many Linux OS distributions.

Choosing a Linux OS

linux logoAs Netcraft states it, websites across the net are mainly run under Apache Servers. Developing websites under a Linux OS may be the right solution if the developer :

  • feels at ease with Linux terminal command lines
  • can find hardware driver versions developed for Linux OS
  • can adapt to linux softwares

If the above requirements can be fulfilled, the developer is ready to change OS and choose the Linux distribution that suits him best. A large number of free solutions are available on the internet. If he is hesitating about the right distribution to choose, he may take the Linux distribution Chooser test (multi-lingual).

Once the distro is chosen, let’s see how it can be installed.

Having tried some Live CDs and DVDs beforehand, the developer will have a good idea of the Desktop environment (KDE or Gnome). My experience led me to choose the linux Server Distro OpenSuse.org.

Md5sum check of the downloaded distro

OpenSuse 11Once downloaded as an ISO file, OpenSuse DVD should be checked before install. This is easily done by checking the md5sum of the downloaded file. You can run Fastsum to achieve this. The result Fastsum gives you after analysis must be strictly equivalent to the md5sum provided by OpenSuse.org.

Where and how to install?

For my first Linux install as a newbie, I bought a new sata hard disk (HD). I did not want to run any risk with my Windows HD. I disconnected my Windows HD and connected the brand new HD.

I started the computer and changed configuration of the boot sequence in BIOS for my computer to start checking the DVD drive instead of the HD. So at reboot, Opensuse DVD inserted, my computer boots on the DVD drive and setup loads.

Installing OpenSuse

Opensuse is provided with a graphic install interface that allows you to install it by clicking (no command line knowledge necessary at this stage).

Just follow the steps and configure your OS. I chose KDE Desktop as environment because it provides me with softwares I need as a developer.

Linux-Windows multi-boot

It is of course possible to start Windows from Linux. Remember I chose to install Linux and Windows on 2 physical separate HD. My OpenSuse is my primary HD. I then connected my secondary Windows HD. Under Linux, you’ll have to change GRUB to be able to start Windows from Linux prompt. Indeed, Windows won’t start if it is not primary HD.

As root, you’ll have to change grub loader in /boot/grub/menu.lst. Change the line concerning Windows (or add it if necessary) :

title Windows
map (hd0) (hd1)
map (hd1) (hd0)
chainloader (hd1,0)+1

This will re-map your HD and make the system believe HD0 is the Windows HD.

Linux drivers

Whatever your hardware configuration, it should run (somehow) under Linux. Linux is only delivered with Open Source drivers, so you may have surprises at first boot with your graphics card, for example. Refer to the Internet for support in this matter. Nvidia has developed specific drivers for Linux.

Webliography :

Netcraft survey – November 2009

WampServer

Linux distribution Chooser

OpenSuse.org

Md5sum check

SEO en 2 mots

Je tiens à remercier tout particulièrement Mehdi Laanait pour ses conseils avisés en SEO (Search Engine Optimization, référencement naturel, optimisation d’un site pour les moteurs de recherche)

Les Smart Urls ou urls optimisées pour les moteurs de recherche permettent aux robots comme GoogleBot d’identifier les mots-clefs dans l’url de la page visitée. Le pagerank d’une page Web (le résultat numérique que Google donne à une page Web après analyse) en est amélioré. Ces moteurs parcourent les urls, les balises title, description, (la balise keywords est désormais passablement ignorée) et le contenu de la page pour le référencement.

Les bases

L’inclusion de réflexes SEO dans le développement Web nécessite

  • des changements au niveau du fichier Apache .htaccess
  • des changements dans les urls que le développeur donne à chaque page

Construire des Urls pertinentes pour un référencement optimisé

Si un site Web n’est pas optimisé pour les moteurs de recherche, les pages du site sont générées par PHP et ont la forme suivante :

http://www.myphotography.net/index.php?cat=1&scat=32

et afficheront les articles associés à la catégorie 1 (disons “photographie au cerf-volant”) et à la sous-catégorie 32 (“Cerf-volants Rokkaku”). Les problème est que l’url ne donne ni à l’internaute ou au robot aucune indication quant au contenu de l’article.

Pour des raisons de référencement, le développeur veillera à changer les urls qui mènent au différents contenus. Les nouvelles urls générées partout dans le site auront la forme :

http://www.myphotography.net/cerf-volant/rokkaku

Le sous-répertoire “cerf-vloant” n’existe pas sur le serveur Web. Il s’agit d’un nom de répertoire virtuel généré par PHP pour optimiser le référencement en incluant les mots-clefs importants dans l’url même. La seule chose que le développeur devra prévoir est la manière dont le serveur Apache se comportera face à ce style d’url. La solution s’appelle “url rewriting”.

Apache .htaccess : url rewriting : .htaccess file

L’URL rewriting est l’art de transformer des urls générées par PHP faisant référence à des nom de répertoires et de fichiers virtuels en urls physiques existant effectivement sur le serveur d’hébergement.

Le fichier .htaccess d’Apache permet au développeur d’activer le moteur de réécriture qui analysera la requête et la transformera en adresse plausible pour éviter une erreur 404.

Ce fichier .htaccess contiendra les lignes suivantes

Options +FollowSymlinks -MultiViews #Line 1 : indique à Apache de suivre les liens symboliques

RewriteEngine on #Line 2 : RewriteEngine on active le module mod_rewrite d’Apache

RewriteRule ^([a-z]+)/([a-z]+)$ index.php?cat=$1&scat=$2 [L] #Line 3 : règle de ré-écriture

Exemple de règle de ré-écriture .htaccess

Considérons la règle suivante :
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?cat=$1&scat=$2 [L]

Apache cherche la chaîne de caractères située entre ^ et $

Apache cherche une chaîne décomposée en

  • un nombre quelconque de lettres minuscules de a à z. Cette chaîne sera stockée dans la variable $1
  • suivi d’un slash /
  • suivi d’un nombre quelconque de lettres minuscules de a à z. Cette chaîne sera stockée dans la variable $2

La seconde partie de la règle de réécriture est le fichier php qui sera chargé par Apache en lieu et place de l’url demandée :

index.php?cat=$1&scat=$2 [L] : le flag [L] permet d’indiquer à Apache d’arrêter le traitement sans se préoccuper des éventuelles règles de réécritures suivantes puisque la règle courante aiguille l’internaute vers le bon fichier.

Conclusion

L’Url rewriting est un passage obligé pour aider Google à mieux référencer les pages d’un site web. Les back links (liens vers votre site), la sélection de vos mots-clefs, les sitemaps, les tags html (h1, strong, alt,…),… contribuent tout autant à un référencement digne de ce nom.

Une fois que le développeur a compris l’importance des mots-clefs à tous les niveaux du site, qu’il laisse les robots faire leur travail…

Voici quelques références non-wikipedia :

Source Google
Apache mod_rewrite doc
Webconfs / outils SEO
Website Grader

SEO in a nutshell

I really want to thank Mehdi LAANAIT for his suggestions concerning SEO (Search Engine Optimization).

Smart urls or search engine optimized urls allow bots like Google to identify keywords in urls. Website ranking then gets an added value. Parsing urls, title tags, description tags (keywords tags are now deprecated) and the body of a webpage allow search engines to rank web pages.

The basics

Including SEO concerns inside Web development requires

  • Apache .htaccess changes
  • urls changes

Building SEO-friendly URLs

Let’s assume a PHP website has to be re-written. Dynamic pages were formerly generated by PHP with the form :

http://www.myphotography.net/index.php?cat=1&scat=32

to display articles belonging to category 1 (let’s say “kite photography”) and to subcategory 32 (“Rokkaku kites”). The problem with that url is that it does not tell the visitor or the bot about the content of the article. For SEO concerns, it should.

New urls will have to be generated throughout the website and be of the form :

http://www.myphotography.net/kites/rokkaku

The subdirectory “kites” doesn’t exist on the web server. It is only a virtual directory name generated by PHP for the sake of better SEO. The only thing the developer still has to manage is the way Apache server will treat the request to

Apache .htaccess : url rewriting

URL rewriting is the art of making php-generated urls human readable.

Apache’s .htaccess file will allow the developer to activate the Rewrite Engine which will analyse the url request and transform it into what’s necessary for the website not to end on a 404 error page.

This file will contain the following lines :

Options +FollowSymlinks -MultiViews #Line 1 : tells Apache to follow symbolic links

RewriteEngine on #Line 2 : activates RewriteEngine (Apache mod_rewrite module)

RewriteRule ^([a-z]+)/([a-z]+)$ index.php?cat=$1&scat=$2 [L] #Line 3 : rewriting rule

.htaccess Rewriting rule example

Let’s consider the following line :
RewriteRule ^([a-z]+)/([a-z]+)$ index.php?cat=$1&scat=$2 [L]

Apache will look for the string of characters between ^ et $ in the url.

This string is divided into :

  • a number of lower case characters from a to z. This string will be stored in variable $1
  • followed by a slash /
  • followed by a number of lower case characters from a to z.This string is stored in variable $2

The second part of the rewriting rule is the php file Apache will load if the rewriting rule is to be applied :

index.php?cat=$1&scat=$2 [L] : flag [L] tells Apache to stop treatment without checking the following rewriting rules since the current rule drives the client to the right file.

Conclusion

Url rewriting is part of the solution to help google ranking your pages better. Back links, keyword selection, sitemaps, html tags (h1, strong, alt,…),… also contribute to a better ranking.

Once the developer has understood keywords are the key to success… let bots do their job…

Here are some non-wikipedia references :

Google source
Apache mod_rewrite doc
Webconfs / SEO tools
Website Grader

SEO et domaines

Les noms de domaine ne sont pas toujours très efficaces termes de référencement. On a parfois cherché à les raccourcir à outrance.

Enregistrer un nombre de noms de domaine pour le même projet

 

Tout registrar digne de ce nom facturera entre 7 et 15 euros par nom de domaine. Le développeur peut suggérer 2 noms de domaine au client :

  • un nom de domaine pratique, facile à retenir pour un accès rapide (à inscrire sur les cartes de visite, la publicité,…). Ce nom de domaine contient souvent des abréviations, un acronyme,…
  • et un autre nom de domaine contenant les mots-clefs associés à l’activité liée au site Web.

Si plusieurs domaines pointent vers le même site Web, le développeur doit changer le fichier Apache .htaccess pour rediriger automatiquement et de manière transparente tous les noms de domaine vers le nom de domaine principal.

Exemple de redirection du domaine

Les développeurs enregistrent régulièrement 2 noms de domaine : un avec et un sans www. Imaginez les 2 noms de domaine suivants :

www.od2dev.be et od2dev.be

Ces 2 noms de domaine devraient pointer vers le même nom de domaine principal (c-à-d : www.od2dev.be)

Changez votre fichier .htaccess avec les lignes suivantes :

Options +FollowSymlinks -MultiViews
#ErrorDocument 404 /seo/404.php
RewriteEngine on
rewritecond %{http_host} ^bulluc.be [nc]
rewriterule ^(.*)$ http://www.bulluc.be/$1 [r=301,nc]

 

Options +FollowSymlinks -MultiViews #Ligne 1 demande à Apache de suivre les liens symboliques

RewriteEngine on #Ligne 2 actiove le moteur Rewrite d’Apache (module mod_rewrite)

rewritecond %{http_host} ^od2dev.be [nc] #Ligne 3 : la condition de réécriture vérifie si la réécriture doit avoir lieu => si http_host (le host name courant) est od2dev.be. [NC] flag est utilisé pour rendre la condition insensible à la casse

rewriterule ^(.*)$ http://www.od2dev.be/$1 [r=301,nc] #Ligne4 Apache envoie un en-tête 301 de redirection à www.od2dev.be. La règle de réécriture s’assure que le chemin de la requête est enoyé également par l’expression régulière (.*) qui est envoyée à http://www.od2dev.be grâce à la variable $1

Le temps a de l’importance

Une recherche rapide Whois indiquera au développeur si un nom de domaine est disponible ou non. Enregistrer un nom de domaine peut être fait pour une année ou plus. Ce critère de temps est utilisé par l’algorithme Google pour le calcul du pagerank : un domaine réservé pour plusieurs années bénéficiera d’un capital confiance supérieur à un nom de domaine réservé pour une année seulement.

SEO and domains

Domain names are often less human readable than expected since the developer usually tries to make it as short as possible.

Register a number of domain names for the same project

Any registrar worth their salt will charge between 7 and 15 euros per domain name. The developer can suggest 2 domain names to his customer :

  • one easy-to-remember domain name for quick access (to be printed on visiting cards, advertisements,…). This domain name often contains abbreviations, is an acronym,…
  • and another one containing relevant keywords regarding the activity related to the web site.

If several domain names point to the same website, be sure to change your Apache .htaccess file to auto-redirect all your domain names to the same principal domain.

Domain redirect example

Developers regularly register 2 domain names : one with and the second with no www. Imagine the 2 following domains :

www.od2dev.be and od2dev.be

Both should point to the same principal domain (i.e. www.od2dev.be)

Change your .htaccess file with the following lines :

Options +FollowSymlinks -MultiViews
#ErrorDocument 404 /seo/404.php
RewriteEngine on
rewritecond %{http_host} ^bulluc.be [nc]
rewriterule ^(.*)$ http://www.bulluc.be/$1 [r=301,nc]

Options +FollowSymlinks -MultiViews #Line 1 tells Apache to follow symbolic links

RewriteEngine on #Line 2 activates Apache Rewrite Engine (mod_rewrite module)

rewritecond %{http_host} ^od2dev.be [nc] #Line 3 rewrite condition checks if rewrite rule is to be applied => if http_host (current host name) is od2dev.be. [NC] flag is used to make the condition case insensitive

rewriterule ^(.*)$ http://www.od2dev.be/$1 [r=301,nc] #Line4 Apache sends a 301 redirect header to www.od2dev.be. The rewrite rule ensures the path is sent as well with regex (.*) that is sent to http://www.od2dev.be thanks to the variable $1

Time matters

A quick Whois lookup tells the developer if the requested domain name is available or not. Registering a domain name can be done for one year or more. This time criteria is used in the Google algorithm for page ranking since a domain name that will last longer will be considered to be more trustworthy.

Bienvenue sur od2dev

Bienvenue sur od2dev

Lancé fin 2009, ce blog a pour objet le partage d’informations et d’expériences dans le développement web PHP & Mysql.

En constante évolution, le web force les développeurs à s’adapter constamment dans plusieurs domaines spécialisés.

Le développeur freelance doit donc être prêt à endosser les métiers de :

  • Administrateur de base de données (analyse des besoins, normalisation de bases de données, importation et traitement de données, langage des requêtes, configuration du serveur de base de données, versions de serveurs de données,…)
  • Administrateur serveur (gestion Apache)
  • Programmation côté serveur (PHP5 dans mon cas, programmation orientée objet)
  • Programmation côté client (standards W3C, (X)HTML, CSS, javascript,…)
  • intégration HTML
  • Design Web (création de lay-outs professionnels et adaptés à la charte graphique de l’entreprise)
  • gestion des ventes, service à la clientèle
  • analyse, expertise et résolution de problèmes en tous ces domaines

N’hésitez pas à commenter là où cela vous semble pertinent.

Welcome to od2dev

Welcome to od2dev.

Launched in the Fall of 2009, this blog is meant as a reminder to share PHP & MySQL developer’s hints and concerns.

As the web is constantly evolving, developers have to adapt in a number of specialized fields.

Freelance Web developers have to be ready to take up :

  • Database Administration (needs analysis, database normalization, query language terminology, data import and treatment, database server configuration and versions,…)
  • Web Server Administration (handling Apache)
  • Server-side programming (PHP5 in my case, object -oriented programming)
  • Client-side programming (W3C standards, (X)HTML, CSS, javascript,…)
  • HTML integration
  • Web design (the building of professional lay-outs, perfectly suiting the client’s needs in terms of communication)
  • Sales manager and customer service
  • troubleshooting in all these fields

Feel free to comment where relevant.