How to dump the content of PHP sessions files

Here is a handy CLI oneliner to inspect the content of a user’s session file:

# php -r 'session_start();session_decode(file_get_contents($argv[1]));var_export($_SESSION);' /path/to/php/session/sess_707484e735ad7aa9a108b23ad20cc46f
Publié dans system | Laisser un commentaire

Libération a 40 ans

Le 5 Février 1973 naissait le journal Libération.

Le 5 Février 2013, Libération ressort la première édition du journal.

Une phrase retient mon attention dans cette première édition :

Qui d’entre nous, en lisant son journal du matin, n’a pas l’impression d’être le jouet des marchands de publicité, des politiciens ?

Cette question a 40 ans, et pourtant elle apparaît tellement d’actualité.

On lit de moins en moins son journal le matin, mais on lit de plus en plus son journal sur Internet : sur les sites des journaux papier, des sites d’actualité, des agrégateurs de flux d’info, etc. Le journal papier comme support se perd, mais le contenu, la matière, l’information persiste et perdure sur d’autres supports.

Le support de l’information change, et avec elle, la publicité change aussi de support.

La publicité est omniprésente sur Internet : résultats sur un moteur de recherche, bannières/encarts/cadres publicitaire sur les sites d’information, spot publicitaire avant les vidéos, etc.

La publicité c’est très bien adaptée à ce changement de support, peut-être même mieux que le contenu lui même.

Qui d’entre nous, en surfant sur Internet, n’a pas l’impression d’être le jouet des marchands de publicité ?

 

Publié dans Uncategorized | Laisser un commentaire

You can spend your whole life doing no more than preparing for the life and thinking.

Terrance Hayes

Publié le par me | Laisser un commentaire

Locking in PHP to serialize execution of critical sections

Sometimes, execution of some code in parallel can lead to troubles: this is known as race-conditions, where parallel execution of some specific operations leads to corruption and/or unexpected results.

In these cases, the solution is to use locking techniques to force sections of code to execute sequentially rather than in parallel.

Note: for those not familiar with locking, it is important to understand that the same locking algorithm should be implemented by each party that will be executing a critical section! Locking is useless if only one party implements it.

Here I’ll show two techniques in PHP (one for local locking, and one for cross-server locking).

Continuer la lecture

Publié dans Uncategorized | Laisser un commentaire

WDC WD1002FAEX-00Z3A0 with Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH)

Dear lazy web,

Are there any known incompatibilities between Western Digital SATA disks (WD1002FAEX / Firmware version 05.01D05) and ICH9 SATA controlers?

I have a remote server (don’t have physical access to it) with an ICH9 SATA controler and two different disks  in a MD RAID1 volume: one Hitachi and one WD.

The problem is that I have poor write performance and iostat is always reporting a 100% utilization (%util field) on the Western Digital disk, while the Hitachi (HDT721010SLA360) does not reports such high %util usages.

The WD disk as been changed with another (same model) WD disk, and I’m still having 100% utilization on this disk.

Could there be an incompatibility between theses WD disks and ICH9 controlers?

Initialy the server was running with two Hitachi disks, and one of them failed, so it was replaced by these WD disk. Since then, I’m stuck with theses 100% util usages on this disk.

Publié dans system | Laisser un commentaire

Rollout your own DomainKeys-like signature verification in PHP

Reading documentation on DKIM I found it usefull to be able to distribute public keys through DNS to allow recipient to check signed content against it.

So, here is a couple of DomainKeysSigner and DomainKeysVerifier PHP classes that implement the sign and verify operations, with the verify operation fetching the public key through a custom DNS TXT record.

To start with, you need a public/private RSA key that you can obtain with openssl:

# openssl genrsa -out my.service.example.net.private.key 1024

Extract the public key:

# openssl rsa -in private.key -text -pubout

Now, you need to setup a DNS TXT record for your host/domain containing the base64 key from the previous command, without the « —–BEGIN PUBLIC KEY—– » and « —–END PUBLIC KEY—– » tags.

Let say you wan’t to set the key on « foo.example.net »:

foo.example.net. IN TXT "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyvgpjWK2w6FmlFxdxcSBwP0P50jsIUB3ZV0xYXolLF0jipXdjN/TgZjBAlRYlF7u/iXW7WmrbU/mwpdlyiK0+dZvwZMGUzqBOC1ULz5i8xPVidutkBhMMWFovipibnvU6TePJjMdeBTlEDpi1p4/V66yOxJ8sU1nYCTYJIqaX1QIDAQAB"

Now you can use the DNSPubKeySigner and DNSPubKeyVerifier classes to sign and verify a data signature with the public key fetched from the DNS TXT record.

– https://github.com/eguaj/DNSPubKeyVerifier

Publié dans code, system | Laisser un commentaire

RFC: Dead-WAN-Detection protocol

Is there a « standard » protocol for a device connected to a Wifi network to detect when the WAN/uplink connection is dead, and behave as if there was no Wifi at all?

Here is a use case I’m seing for such a protocol:

Given a mobile device that can do Wifi or 3G.

When the device is in the vicinity of a known (or open) Wifi network, it connects to it in order to get access to the Internet.

Now, if the DSL (or any other broadband access) connection on the Wifi router is dead, then my device can’t connect to the Internet, and it will stay connected to this Wifi network trying endlessly to get Internet connection through this Wifi router.

In these cases, the Dead-WAN-Detection protocol could instruct the device that the Internet/uplink connection is dead (although the Wifi connection is up), and the device could react by switching to 3G in order to get Internet connection.

Then, when the uplink connection get back on the Wifi router, the router could broadcast a signal indicating that the connection is up, and the device would then switch back from 3G to Wifi for its Internet connection.

 

Publié dans Uncategorized | Laisser un commentaire

« Kobo by FNAC » versus « Kobo »

Mise à jour le 2012/10/18 : la mise à jour iOS est enfin arrivée !

L’application « Kobo by FNAC » est inutilisable depuis la sortie de iOS 6.

Depuis le 19 Septembre 2012, date de sortie de iOS 6, les commentaires négatifs s’accumulent donc sur la page de l’application dans l’App Store : 109 commentaires négatifs contre 29 positifs.

À l’heure actuelle il n’y a toujours pas de mise-à-jour disponible, et la version disponible est toujours celle du 23 Novembre 2011…

Par curiosité, si on va faire un tour sur l’App Store U.S., on a alors la surprise de voir qu’il existe une app « Kobo » (sans FNAC) et qui semble être à jour et supporter correctement iOS 6.

Malheureusement, on a pas le droit de télécharger cette application avec un compte iTunes FR.

Continuer la lecture

Publié dans Uncategorized | Laisser un commentaire

Remotely open a session on a Ubuntu desktop from Mac OS X

You have an idle Ubuntu desktop machine running somewhere in your office, and you want to open-up an X session to run some Linux specific software, but you don’t want to physically be in front of the machine?

Continuer la lecture

Publié dans network, system | Laisser un commentaire

Amazon, Adrexo et Colissimo sont dans un bateau…

Parfois on a un pressentiment, et la fin n’a absolument rien à voir avec ce qu’on pressentait.

Et parfois, on a un pressentiment, et la tournure des choses semble aller dans le sens du pressentiment. Alors, on attend la fin, en espérant qu’elle donnera tort au pressentiment initial.

J’ai donc commandé un livre chez Amazon vendredi dernier (28 Septembre).

Continuer la lecture

Publié dans Uncategorized | 5 commentaires