Google Analytics : les recommandations de la CNIL [JavaScript]

La loi a changé concernant les cookies déposés chez les utilisateurs. Pour cela la CNIL a créé une page qui explique ce qu’il en est. Ils proposent même un bout de code pour le opt-in et le opt-out, que j’ai légèrement modifié :

// Remplacez la valeur UA-XXXXXX-Y par l'identifiant analytics de votre site.
var gaProperty = 'UA-XXXXXX-Y';
// Désactive le tracking si le cookie d'Opt-out existe déjà
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf('hasConsent=false') > -1) window[disableStr] = true;
//Cette fonction retourne la date d.expiration du cookie de consentement 
function getCookieExpireDate() { 
  var cookieTimeout = 34214400000; // Le nombre de millisecondes que font 13 mois 
  var date = new Date();
  date.setTime(date.getTime()+cookieTimeout);
  var expires = "; expires="+date.toGMTString();
  return expires;
}
// Cette fonction est appelée pour afficher la demande de consentement
function askConsent(){
  var bodytag = document.getElementsByTagName('body')[0];
  var div = document.createElement('div');
  div.setAttribute('id','cookie-banner');
  div.style.width="50%";
  div.style.position="absolute";
  div.style.left="20%";
  // Le code HTML de la demande de consentement
  // Vous pouvez modifier le contenu ainsi que le style
  div.innerHTML =  '<div style="background-color:transparent;color:#fff">Ce site utilise Google Analytics.\
  En continuant à naviguer, vous nous autorisez à déposer des cookies à des fins de \
  mesure d\'audience. Vous pouvez vous <a href="#optout" onclick="gaOptout()">opposer à ce dépôt</a> ou <a href="#optin" onclick="gaOptIn(); document.getElementById(\'cookie-banner\').style.display=\'none\'">ignorer ce message</a>.</div>';          
  bodytag.insertBefore(div,bodytag.firstChild); // Ajoute la bannière juste au début de la page 
  document.getElementsByTagName('body')[0].className+=' cookiebanner';              
}      
// Retourne la chaine de caractère correspondant à nom=valeur
function getCookie(NomDuCookie)  {
  if (document.cookie.length > 0) {        
    var begin = document.cookie.indexOf(NomDuCookie+"=");
    if (begin != -1)  {
      begin += NomDuCookie.length+1;
      var end = document.cookie.indexOf(";", begin);
      if (end == -1) end = document.cookie.length;
      return unescape(document.cookie.substring(begin, end)); 
    }
  }
  return null;
}
// Fonction d'effacement des cookies   
function delCookie(name)   {
  var path = ";path=" + "/";
  var domain = ";domain=" + "."+document.location.hostname;
  var expiration = "Thu, 01-Jan-1970 00:00:01 GMT";       
  document.cookie = name + "=" + path + domain + ";expires=" + expiration;
}
// Efface tous les types de cookies utilisés par Google Analytics    
function deleteAnalyticsCookies() {
  var cookieNames = ["__utma","__utmb","__utmc","__utmz","_ga"]
  for (var i=0; i<cookieNames.length; i++) delCookie(cookieNames[i])
}
// La fonction d'opt-out   
function gaOptout() {
  document.cookie = disableStr + '=true;'+ getCookieExpireDate() +' ; path=/';       
  document.cookie = 'hasConsent=false;'+ getCookieExpireDate() +' ; path=/';
  var div = document.getElementById('cookie-banner');
  // Ci dessous le code de la bannière affichée une fois que l'utilisateur s'est opposé au dépôt
  // Vous pouvez modifier le contenu et le style
  if ( div!= null ) div.innerHTML = '<div style="background-color:#ffffff"> Vous vous êtes opposé \
  au dépôt de cookies de mesures d\'audience dans votre navigateur.</div>'
  window[disableStr] = true;
  deleteAnalyticsCookies();
}
function gaOptIn() {
  document.cookie = 'hasConsent=true; '+ getCookieExpireDate() +' ; path=/';
}
//Ce bout de code vérifie que le consentement n'a pas déjà été obtenu avant d'afficher la bannière
var consentCookie = getCookie('hasConsent');
//L'utilisateur n'a pas encore de cookie de consentement
if (!consentCookie) askConsent()
// Google Analytics
var _gaq = _gaq || [];
_gaq.push(['_setAccount', gaProperty]);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script');
  ga.src = 'http://www.google-analytics.com/ga.js';
  ga.setAttribute('async', 'true');
  document.documentElement.firstChild.appendChild(ga);
})();

FreeFileSync with size only comparison

FreeFileSync is a powerful backup tool for Windows, Linux and Mac that permits to save over the network to a WebDAV drive for example. They can be very useful with some cloud services like Box.com.

However, it’s best to use the comparison by size only, and not size AND date. The reason is that some WebDAV drives don’t support the date. So if you don’t choose « size only » then everything will be synchronized, all the time !

To do so, read the HelpFile of FreeFileSync: « Expert Settings ». They explain it’s possible to do « size only » in changing the FileTimeTolerance setting. Just close the program and edit the « GlobalSettings.xml » file (see the HelpFile to find where it’s located… on Windows it’s under %AppData%\FreeFileSync). Set the value to -1 (for the number of seconds).

Partage sous Windows 7 et « System error 53 has occurred. »

Ma configuration réseau est un peu particulière : j’ai un ordinateur (machine A) sous Windows 7 en WORKGROUP (avec un login et un mot de passe), et une autre machine Windows 7 du boulot avec un login/pass sur un domaine (machine B).

Pour réussir à se connecter aux disques partagés de la machine A, voici comment j’ai dû procéder :

  1. S’assurer que les deux machines sont connectées sur le même réseau
  2. Faire un clic droit sur le disque à partager sur la Machine A, puis Propriétés. Dans l’onglet Partage, cliquez sur Partage Avancé. Cochez la case « Partager ce dossier » et donnez lui un nom. Enfin cliquez sur Autorisations
    partage_windows_1
  3. Assuez vous de cocher « Contrôle Total » pour « Tout le monde ». Puis valider toutes les fenêtres en cliquant sur OK.
    partage_windows_2
  4. Maintenant allez dans le menu Démarrer de Windows de la Machine A toujours et entrez fsmgmt.msc dans la zone de recherche puis tapez sur ENTRER
  5. Dans la fenêtre qui apparait, cliquez sur Partages. Vous devriez alors voir le dernier partage que vous venez de faire. Clique droit puis Propriétés et enfin onglet Sécurité et Modifier.
    partage_windows_3
  6. Cliquez sur Ajouter…, et dans la zone prévue à cet effet entrez « Tout le monde » et cliquez sur Vérifier les noms pour s’assurer que c’est bien reconnu. Vous pouvez valider.
    partage_windows_4
  7. Assurez-vous de donner le contrôle total à tout le monde
    partage_windows_5
  8. Maintenant allez sur la Machine B. Dans « Network » vous devriez voir la Machine A. Si vous cliquez dessus le système pourrait vous demander un login et password (dans ce cas le login est « Nom Machine A\le nom d’utilisateur que vous utilisez pour vous connecter à Machine A » et le mot de passe associé). Puis vous devriez voir les disques que vous avez précédemment partagés !

Configurer son téléphone Android avec Virgin Mobile

Ayant reçu une nouvelle carte Vigin Mobile j’ai bien galéré pour faire fonctionner les données et les MMS…

Voici la configuration.

Pour les données
– Nom : Virgin
– APN : ofnew.fr
– Nom d’utilisateur : orange
– Mot de passe : orange
– MCC : 208
– MNC : 23
– Type d’APN : default,supl

Pour les MMS
– Nom : Virgin MMS
– APN : virgin-mobile.fr
– MMSC : http://virginmms.fr
– Proxy MMS : 10.6.10.1
– Port MMS : 8080
– MCC : 208
– MNC : 23
– Type d’APN : mms

Il faudra aussi essayer d’envoyer un MMS avant d’essayer d’en récupérer un.

Attention depuis la nouvelle carte SIM, les accusés de réception des SMS ne sont plus pris en charge chez Virgin.

Attention à sa vie privée sur Facebook

Facebook change régulièrement les paramètres de postage de vos statuts sur Facebook en en changeant la portée.

Il est facile de s’en rendre compte. Lorsque vous postez un message et que la planète Terre apparait en bas à droite c’est que la Terre entière peut voir votre message, et pas seulement vos amis. Donc si vous voyez l’image ci-dessous, c’est très mauvais :
Facebook en mode public

D’autant que ça ne concerne pas seulement vous, mais vos amis aussi, puisque s’ils aiment ou commentent ce statut/photo/lien alors tous leurs amis, et n’importe qui d’autre, pourront voir qu’ils ont aimé ou commenté. Peut-être que votre pote n’a pas envie que sa mère voit qu’il a écrit une grosse connerie dans votre statut à vous…

Quoi faire alors ?

C’est très simple. Il y a deux choses principales à faire.

Tout d’abord, il faut se rendre dans ses paramètres Facebook, partie Confidentialité et modifier qui peut voir ses statuts :
Paramètres Facebook

Au minima, vous devez sélectionner « Amis » qui indiquent que seuls vos amis Facebook voient vos publications.

La deuxième chose à faire est de vérifier qu’à chaque fois que vous postez quelque chose, c’est bien le logo « Amis » et non « Planète Terre » qui apparait en bas à droite :
Statut bon/mauvais Facebook

C’est d’autant plus vrai sur le téléphone portable où les applications iPhone/Android ont tendance à passer toutes seules en mode « public » ! Le principe est le même :
Statut Facebook mobile

Et voilà, c’est tout.

Mais on peut aller encore plus loin dans votre vie privée et surtout celle de vos amis.

Par exemple il est possible de changer l’audience de nos anciennes publications. C’est particulièrement pratique si vous postez en « Public » depuis des mois sans vous en rendre compte. Pour ce faire, il suffit d’aller dans vos paramètres de confidentialité puis de cliquer sur « Limiter l’audience des anciennes publications » et de suivre les instructions :
Paramètres confidentialité

Mais on peut aller encore plus loin ; en créant des listes d’amis !

Vous souhaitez surement que vos messages ne soient visibles QUE pour une partie de vos amis Facebook. Pour cela vous pouvez créer des listes (= groupes) d’amis. Par exemple vous pouvez faire un groupe « Ma famille », un groupe « Mon travail » et un groupe « Mes potes ». Ainsi quand vous postez un message, une photo ou un lien, vous ne voulez peut-être pas que cette publication soit visible par votre famille ou votre travail, du coup vous pouvez sélectionner le groupe « Potes » et seuls eux la verront.

Comment procéder ?

Il faut retourner dans votre fil d’actualité de vos amis. Sur la gauche vous avez une barre avec « Favoris », « Pages », « Applications », etc. Puis une section « Amis ». Si vous bougez votre souris vers « Amis » vous verrez apparaitre un « Plus » comme ci-dessous, sur lequel vous devez cliquer :
Gérer ses amis facebook

Là vous verrez une liste de groupes d’amis que Facebook a créé de façon automatique. Je vous déconseille de les utiliser et je vous invite plutôt à cliquer sur le bouton « Créer une liste » et à y ajouter ceux qui doivent s’y trouver. On peut reprendre l’exemple d’avant avec une liste « Ma famille », « Mon travail » et « Mes potes ».

Il faudra cependant ajouter les nouveaux amis dans un de ces groupes. C’est particulièrement simple puisqu’une fois l’ami accepté il suffit de cliquer sur le bouton « Amis » qui apparait à droite du profil (c’est valable de PARTOUT dans Facebook où ce bouton apparait) et de choisir de l’ajouter à une autre liste :
Ajout dans une liste

Et lorsque vous posterez, il faut cliquer sur l’audience (l’icône que l’on a vu précédemment pour passer de « public » à « amis ») et choisir la liste que l’on désire. Le rendu sera alors :
Facebook statut liste nouvelle

Il est également possible de « personnaliser » une publication. Par exemple c’est utile si vous voulez que vos potes ET votre famille le voit, mais pas votre travail, ou alors si vous voulez limiter à quelques personnes seulement. Le principe est identique : avant de poster il faut cliquer sur l’audience et choisir « Personnaliser » :
Audience Facebook personnalisée

De là vous pouvez inclure une liste et exclure une personne de cette liste. Par exemple vous voulez que votre famille le voit, mais pas votre grand mère. Ainsi vous mettez « Ma famille » dans les gens qui verront la publication, et vous mettez « Mamie » dans les gens à exclure.

ATTENTION

A noter que Facebook enregistre la dernière audience et l’utilise pour les prochaines publications ! Donc si vous sélectionnez « Mon Travail » depuis votre ordinateur à un moment pour partager un lien sérieux, puis que du téléphone vous postez une photo de vous entrain de faire la fête, alors Facebook utilise automatiquement la dernière audience choisie, c’est-à-dire « Mon Travail » !! D’où l’importance de bien vérifier à chaque fois l’audience qui est sélectionnée.

Configurer SFR LIBERTALK en SIP sur Android et iPhone (avec media5fone)

EDIT : SFR a fermé le service le 2 janvier 2017 (annonce sur le forum SFR)

Il est possible d’activer le SIP chez SFR. Pour ce faire, il faut se rendre sur son compte SFR et dans les jours qui suivent vous recevrez votre mot de passe par courrier.

Une fois le courrier reçu il s’agit de configurer correctement l’application SIP. Ici nous utiliserons l’application media5fone qui est disponible sur iOS et Android.

Point de vue configuration voici les éléments qu’il vous faut.

Tout d’abord, sur l’écran d’accueil, vous devez choisir « Paramètres SIP personnalisés > Définir manuellement ».
Dans « Titre » vous pouvez entrer « SFR LIBERTALK ».
Dans « Nom d’utilisateur » entrez +3399{Votre numéro de ligne sur 10 caractères} (Exemple: +33990123456789)
Dans « Mot de passe », celui qui vous a été envoyé par courrier.
Allez dans « Serveurs » :

  • Pour l’adresse SIP entrez l’adresse « ims.mnc010.mcc208.3gppnetwork.org »
  • Pour le port il faut mettre 5064
  • Concernant le « serveur proxy sortant », vous devez l’activer (« Activer Proxy »).
  • Dans l’adresse du proxy entrez « internet.p-cscf.sfr.net »
  • Dans le port du proxy il faut mettre 5064
  • Activez l’option « Retirer header Route »
  • Maintenant dans la section « Autre » modifiez « Interval d’enregistrement (sec) » avec la valeur 3600
  • Activez aussi « Utiliser rport » dans cette même section

Une fois validé, il va essayer de se connecter et ne va pas réussir, il faut aller dans l’option « Avancé » du compte pour y arriver.
Dans « Avancé » :

  • Configurer le « compte utilisateur », avec « ID Appelant » qui est « {Votre numéro de ligne sur 10 caractères} » (exemple: 0123456789)
  • Le « Nom d’authentification » est « NDI{votre numéro de ligne sur 10 caractères}.LIBERTALK@sfr.fr » (exemple: NDI0123456789.LIBERTALK@sfr.fr)
  • Descendez plus bas jusqu’à la section « SIP Features » et changez « Méthode de transfert » en « BYE »

Et voilà, après avoir validé, et en étant connecté sur du WiFi, vous devriez pouvoir passer tous les appels que vous souhaitez !

Plus d’infos dans l’assistance de SFR et sur le forum de SFR

For the error « Unknown OS character set ‘ISO-8859-15′ »

My crontab keeps sending me this message:

/usr/bin/mysqladmin: Unknown OS character set ‘ISO-8859-15’.
/usr/bin/mysqladmin: Switching to the default character set ‘latin1’.

I followed all that I found on the Internet (resettings my locales, add an export LANG in the init.d script and so on) but the message is still there.

Finally the only thing that worked was to add default-character-set = latin1 in the [client] part of /etc/mysql/my.cnf and also in /etc/mysql/debian.cnf

Subroutine SNMP_Session::pack_sockaddr_in6 redefined

J’ai eu un soucis avec MRTG et ce message d’erreur qui est retourné par le crontab lié à MRTG :

Subroutine SNMP_Session::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67.
at /usr/share/perl5/SNMP_Session.pm line 149
Subroutine SNMPv1_Session::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67.
at /usr/share/perl5/SNMP_Session.pm line 608

J’ai trouvé plusieurs indications sur Internet, mais ça ne corrigeait jamais complètement le problème. Alors voici ce que j’ai dû faire…

  1. Editer le fichier /etc/mrtg.cfg pour activer IPv6 avec EnableIPv6: yes
  2. Editer le fichier /usr/share/perl5/SNMP_Session.pm pour modifier les lignes 149 et 608 en remplaçant import Socket6; par Socket6->import(qw(inet_pton getaddrinfo));
  3. Editer le fichier /usr/bin/mrtg à la ligne 310 pour remplacer import Socket6; par Socket6->import(qw(inet_pton getaddrinfo));

Et le tour est joué !

Encode accented characters of an URL to the hexadecimal version [PHP]

I’m facing an issue with some accented characters (like ‘é’, ‘è’, ‘à’, …) in an URL and I wanted to convert them to an hex value in PHP. I found nothing on Google so I have finally created my own function for my needs :

function encodeURIHex($str) {
  $len=strlen($str);
  $ret="";
  for ($i=0; $i<$len; $i++) {
    $dec = ord($str[$i]);
    if ($dec > 191 && $dec < 256) $ret .= "%".strtoupper(dechex($dec));
    else $ret .= $str[$i];
  }
  return $ret;
}

Example :

encodeURIHex("Mère"); // -> M%E8re

I used this array to find which values of dec version of my char I wanted to use (from 192 to 255 in my case).