Adapter le favicon à la couleur du site

Comme je bosse presque tout le temps sur BoZoN 3.0, je profite de la récriture complète du code pour y ajouter des fonctions et des améliorations deci delà...

L'une de ces améliorations réside dans la possibilité de changer la couleur de base du thème en ne changeant qu'une variable dans le fichier dédié.

 

Problème, le favicon n'est plus adapté

Bon, ben on y va alors... 


 

Pour faire simple, je veux coller le logo de l'appli sur un fond de couleur. J'ai donc fait une fonction qui se charge de:

  • lire le logo en question
  • créer une image avec le fond de la couleur choisie
  • superposer le logo
  • sauver le tout à la place du favicon.png

La fonction sera appelée depuis le fichier php de chargeant de créer les css à partir des couleurs choisies.

 

Mais, car il y a un mais, on ne souhaite pas que le favicon soit généré à chaque chargement mais juste dans le cas où on change la couleur du thème...

Fastoche comme tout, il suffit de tester le filemtime du fichier favicon.png et celui de colors.php (qui contient les variables de couleur) et de ne générer le fichier favicon qu'en cas de différence

 

La fonction, la voilà :

function makeFavIcon($background_color){
  # Si on a changé la couleur dans color.php
  if (filemtime('favicon.png')!=filemtime('colors.php')){
    # on charge le logo
    $logo=imagecreatefrompng ('img/logo.png');
    # ça c'est pour la transparence
    imageAlphaBlending($logo, true);
    imageSaveAlpha($logo, true);

    # on crée l'image de fond
    $fav=imagecreatetruecolor(140,140);
    imageAlphaBlending($fav, true);
    imageSaveAlpha($fav, true);

    # on extrait la couleur (passée en #fff ou #ffffff)
    preg_match('/#?([a-fA-F0-9]{1,2})([a-fA-F0-9]{1,2})([a-fA-F0-9]{1,2})/',$background_color,$color);
    if (strlen($color[1])<2){
      $color[1]=$color[1].$color[1];
      $color[2]=$color[2].$color[2];
      $color[3]=$color[3].$color[3];
    }
    $color=array_map("hexdec",$color);
    $color = ImageColorAllocate ($fav,$color[1],$color[2],$color[3]);

    # on crée le fond dans la couleur
    imagefilledrectangle ($fav,0,0,140,140,$color);
    imagecopy($fav,$logo,0,0,0,0,140,140);

    # on sauve l'image
    imagepng($fav, 'favicon.png');

    # on libère la mémoire
    imagedestroy($fav);

    # on change le filemtime du fichier de couleurs
    touch('colors.php');
  }
}

 

Je la mets sur mon snippetvamp aussi, allez

 

Tchou !

Bookmarklet pour virer l'overlay de Soocurious

Bon, Soocurious a foutu une div en overlay sur toutes ses pages quand tu as un adblocker... faut le virer ou adhérer à un truc  .
Ben non: je me suis bricolé vite fait un bookmarklet pour ça .


Glissez le lien suivant dans la barre de favoris puis cliquez dessus quand vous êtes sur le site, il virera le div en question.
SoocuriousAdBlocker

Bon c'est assez simple, mais comme on est samedi et que la rubrique s'appelle «Le tuto du samedi», je fais une rapide explication pour faire genre.    

Les gars de soocurious se sont dit qu'ils allaient filer une ID aléatoire à leur div plein écran... Moui, bonne idée, c'est vrai...

 

Toutefois, le ciblage d'un élément en javascript ne saurait se limiter au seul  getElementById().

La commande querySelector() permet plus de choix. Comme le div bloquant est le premier juste après le body, un simple document.querySelector("body>div") suffit à le cibler .

Le virer ou le faire disparaître relève alors une tâche enfantine dont même le plus dégénéré des descendants consanguins du plus abruti des monarques s'aquiterait en à peine deux tentatives.

 

javascript:(function()%7Bdocument.querySelector("body>div").setAttribute("style"%2C"display%3Anone")%7D)()

 

Et voilà ! 

Voilà qui ne brise point trois membres postérieurs à un palmipède, mais ça fait le job pis ça prend une minute montre en main à coder...

Allez, tchuss et à l'année prochaine, vu le rythme de publication qui est le mien en ce moment.

 

Réinstall de Linux Mint: mon pense-bête

Bon, j'en avais assez de rechercher toutes les pages successives pour ma réinstall, donc je me fais ma propre check-list des manips à faire quand je réinstalle linux Mint et je la mets à dispo si ça peut aider.

 

J'ai compilé des résumés de tutos de Timo ainsi que quelques autres glanés deci delà sur le net (les liens d'origine sont en fin d'article): cette page n'est pas là pour piquer les visiteurs des copains, leurs pages sont plus complètes...

 

Si j'en ai oublié, je complèterai au fur et à mesure.

 

1- Backup éventuel des données

Bon, ben copier-coller le dossier home dans une partoche à part, comme ça j'oublie rien

 

Pour mémoire, les chemins de configs de logiciels:

Thunderbird 

 : ~/.thunderbird : on copie le dossier de profil et le fichier profiles.ini.

Firefox 

 : ~/.mozilla

Chromium 

 : ~/.config/chromium

Sublime text 

 : ~/.config/sublime-text-3

Transmission 

 : ~/.config/transmission

Filezilla 

 : ~/.filezilla

 

2-Install particulière: SSD + /home à part

Au lieu de faire une installation automatique de base, je passe par l'option «autre chose» pour pouvoir spécifier le disque dur contenant linux et une partition différente pour y placer le /home.

Lorsqu'on choisit la partoche en question, on choisit le système de fichiers EXT4.

Ensuite on choisit la partoche de swap en la sélectionnant (ou en la créant) et en lui donnant le type «swap».

La suite est la même que pour l'install habituelle.

A noter que si on veut se passer de swap, il suffit de ne pas choisir de partoche de ce type, apparemment...

 

3-Changement du DNS 

Merci à Timo (encore ) pour le tuto original (voir section sources) que je me résume ici:

 

 

sudo apt-get install unbound

 

Puis dans les paramètres réseau sélectionner les options de la connexion, puis l'onglet ipv4:

 

sudo sed -i 's/dns=dnsmasq/#dns=dnsmasq/g' /etc/NetworkManager/NetworkManager.conf
sudo service network-manager restart
sudo service unbound stop
sudo /etc/init.d/dns-clean restart
sudo unbound -c /etc/unbound/unbound.conf
sudo unbound-anchor -a "/var/lib/unbound/root.key"
sudo service unbound start

 

4-Changement des dépôts

 

Dans les sources de logiciels

 

 

Puis:

sudo aptitude update && sudo aptitude safe-upgrade

 

Dans la foulée, empêcher les paquets en cache sur le disque:

sudo sh -c "echo 'Dir::Cache \"\";\nDir::Cache::archives \"\";' >> /etc/apt/apt.conf.d/02nocache"

 

4-Installation de logiciels

 

Ajout du dépôt de btsync & Jdownloader:

sudo add-apt-repository ppa:tuxpoldo/btsync
sudo add-apt-repository ppa:jd-team/jdownloader
sudo apt-get update

 

 

Installation des logiciels:

sudo aptitude install audacity compiz compizconfig-settings-manager compiz-fusion-bcop compiz-plugins-default compiz-plugins-extra compiz-plugins-main compiz-plugins-main-default smart-notifier gsmartcontrol ntfs-config apache2 php5 libapache2-mod-php5 php5-gd php5-sqlite sqlite mysql-server mysql-client php5-curl virtualbox-4.3 gimp-data-extras  gimp-plugin-registry gimp-texturize gimp-gap opera gnome-do unetbootin dconf-tools gnome-tweak-tool nautilus-open-terminal adobe-flashplugin calibre curlftpfs openssh-server gparted gpart btsync-gui pinta numlockx filezilla djmount jdownloader

 

 

6- optimisation pour le SSD

Réduire la fréquence d'écriture des partitions

sudo gedit /etc/fstab

Changer la ligne pour ajouter noatime (pour éviter les modifications de dernier accès au fichier)

UUID=57480a3f-e7db-4a5e-9fca-7df45f5a7d9d / ext4 defaults,noatime,errors=remount-ro 0 1

Placer les fichiers temporaires en mémoire vive

Comme je me fous des journaux log

sudo gedit /etc/fstab

Ajouter les lignes suivantes:

tmpfs      /tmp            tmpfs        defaults,size=1g           0    0
tmpfs /var/log tmpfs defaults,nosuid,nodev,noatime,mode=0755,size=5% 0 0

 

Gérer le swap 

On le vire carrément

sudo gedit /etc/fstab

Commenter la ligne suivante en ajoutant «#»:

#UUID=bd746caf-bd0c-4649-baa7-d680bb91a6d0 swap swap defaults 0 0

 

Ou alors on en limite l'utilisation

sudo gedit /etc/sysctl.conf

Ajouter à la fin

vm.swappiness=0
 

7- Configs diverses

 

Changement de la touche Compose permettant de taper les caractères espagnols:

clavier > Agencement du clavier > Options > Position de la touche compose:

 

 

Ensuite, les caractères sont accessibles par

  • Compose puis apostrophe (touche 4 du clavier avec l'accolade en alt) puis la touche à accentuer
  • Alt + ?/! => ¿/¡
  • Compose puis alt+~ puis n => ñ 

 


Configuration de PHP

Php.ini :

sudo xed /etc/php/7.0/apache2/php.ini

Modifier les valeurs suivantes:

post_max_size = 20M
upload_max_filesize = 1000M
error_reporting = -1
display_errors = On

 

Apache2.conf: limiter le nombre de processus & activer le mod_rewrite

sudo a2enmod rewrite
sudo xed /etc/apache2/apache2.conf

Ajouter les lignes suivantes:

 

<IfModule mpm_prefork_module>
StartServers          2
MinSpareServers       1
MaxSpareServers       3
MaxClients           12
MaxRequestsPerChild   3
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>

Puis relancer apache.

sudo service apache2 restart

 


 

Déplacer le var/www vers ~/www

mkdir ~/www
mkdir ~/www/html
sudo chmod 777 ~/www
sudo mv /var/www /var/www_old
sudo ln -s ~/www /var/www

Puis relancer apache.

sudo service apache2 restart
 

En cas de soucis d'écriture des fichiers log, éditer les fichiers en question:

sudo gedit /etc/apache2/conf-enabled/other-vhosts-access-log.conf
sudo gedit /etc/apache2/apache2.conf

Pour y remplacer le chemin vers les logs par celui du nouveau www par exemple (ou un sous-dossier logs) : c'est peut-être pas le plus propre, mais ça a marché pour moi

 

Et pour l'erreur «Could not reliably determine the server's fully qualified domain name»

sudo gedit /etc/apache2/apache2.conf

et ajouter 

ServerName localhost

 


Forcer le pavé numérique au démarrage

Si c'est dispo et que ça marche, dans les préférences de la fenêtre de connexion:

 

Sinon, ouvrir les applications au démarrage, ajouter une commande:

/usr/bin/numlockx on

Ensuite éditer le fichier /etc/mdm/Init/Default

sudo gedit /etc/mdm/Init/Default

Ajouter le code suivant:

if [ -x /usr/bin/numlockx ]; then
exec /usr/bin/numlockx on
fi

 

Voir le contenu des serveurs Upnp du réseau: configurer djmount

On crée le dossier média et monte le client Upnp.

sudo mkdir /media/UPnP
sudo chmod 777 /media/UPnP
djmount /media/UPnP

Puis on lance le mount au démarrage:

 


Sources:

 

Crack, boum, hue... l'a pris le gros tarif mon wiko !

Note pour plus tard: Les poches d'un short ne constituent qu'exceptionnellement un abri sûr pour un portable, surtout quand on revient des courses avec des sacs bourrés comme un punk à chiens...

C'est-y bête de péter un écran comme ça (si tant est qu'il existe une façon intelligente de le briser...)

 

 

Bon, ben ya plus qu'à réparer...


 

Déroulement des opérations

1- achat du kit et récupération des tutos

Le kit se trouve partout et j'ai mis les tutos suivis en fin de billet, donc je passe

Le kit complet avec outils et écran de remplacement.

 

2- pas à pas et en images...

On retire la coque et on enlève les vis

 

Au fur et à mesure que je retire les vis - et parce que je connais ma propention à tout paumer dans un geste malheureux d'une part et la tendance de ma progéniture à aggraver cette situation d'autre part - j'ai réutilisé un aimant de disque dur pour empêcher les vis de se barrer dans des endroits aussi inaccessibles qu'improbables...

 

 

On vire le chassis

Grâce au petit levier fourni, on déclipse le châssis: on l'insère dans un interstice, puis on le fait glisser sur le côté, le long d'un bord, un peu comme on pèlerait des patates, voyez ?

 

Et hop: plus de châssis !

 

Démontage de la carte-mère

On dévisse puis on doit déconnecter les nappes: attention, elles sont fragiles... il faut d'abord relever les clapets du dessus à l'aide du levier puis ensuite tirer sur la nappe pour la décrocher (utilisez une aiguille ou un cure-dents de couteau-suisse, inséré derrière la nappe pour tirer sur toute la largeur en même temps.)

 

La carte-mère est retirée \o/

Dans la foulée on procède de même pour les autres périphériques connectés.

 

Retrait de l'écran tout pété

A l'aide du levier ou de l'outil en forme de médiator, on retire l'écran: attention, il est collé... il faut donc le chauffer un peu au sèche-cheveux avant de procéder.

 

La dalle tactile est retirée !

La réparation proprement dite

On se munit du nouvel écran sur lequel on place des morceaux du double-face fourni (pour les gros doigts, bon courage ! )

On insère la nappe de la dalle à travers le châssis puis on recolle l'écran en le réinsérant...

 

 

It's alive !!!!  \o/
Koumbayaaa !

 

Références:

J'héberge mes données: Dropbox alternative

Une des choses qui ont motivé ma migration, c'était le fait que Windows était vraiment à la solde des états ayant entrepris leur lente et inexorable marche vers le totalitarisme et le contrôle de l'expression et des échanges numériques. 

J'avais remplacé la plupart des logiciels et services que j'utilise par des versions open-sources ou carrément par des applis de mon crû.

 

Seul un service restait une épine obstinément fichée dans mon fondement: Dropbox.

Il reste absolument indispensable pour toute personne bossant sur plus d'un ordinateur quotidiennement  tant il regroupe nombre de vertus pour peu de travers.

Toutefois, au nombre de ces derniers figure les conditions d'utilisation du service qui livrent purement et simplement vos données à l'hébergeur...

 

 


Des besoins très précis

Notons au passage que je cherchais une solution pour moi mais également pour les collègues au boulot; il me fallait par conséquent un équivalent noobproof  présentant les avantages suivants:

  1. exécution en temps réel et transparente pour l'utilisateur,
  2. configuration minimale et très simple,
  3. hébergeable chez soi ou sur un serveur,
  4. qui passe à travers les filtrages de l'établissement où je bosse (ce que ne fait pas dropbox)
  5. multiplate-forme,
  6. rapide et capable d'utiliser le lan at home,
  7. capable de synchroniser des dossiers spécifiques (www ou Documents par exemple)
  8. idéalement, le versionning, mais je pourrais m'en passer et le remplacer par un backup automatique incrémenté.

 

Exit donc FTPbox (windows only), syncany (encore en alpha use-at-your-own-risks), owncloud (fonctionnement aléatoire et configuration encore trop compliquée), sparkleshare (serveur GIT qui ne passe pas au boulot, config compliquée), bittorrentsync (pas de serveur réplicant les données), Seafile (qui ne semble pas passer à travers les filtres du boulot) et tous les dropbox like utilisant un hébergeur proprio...
 
Reste... rien.
 
A force de me balader sur le net, j'ai de plus en plus été alléché par... le rasperryPI. 
C'est typiquement le genre de trucs qu'on a envie de se payer même si on ne sait pas quoi en faire à l'avance...
 
Mais au bout du compte, plutôt que de chercher à se synchro avec un serveur hébergé, autant en faire un à la maison et se synchro avec...  
 
Du coup, une solution s'est imposée à moi: bittorrentSync...
Il n'est pas open-source mais il fait tout ce dont j'ai besoin... le seul bémol était qu'il synchronise les clients entre-eux sans héberger un backup sur un serveur servant d'intermédiaire... mais avec le Raspberry jouant ce rôle, c'est tout bon...
 

 

Achat et installation du raspberryPI

Je ne vous ferai pas le coup de la partie unboxing, vu que le pi est déjà largement utilisé et que ça n'apporte absolument rien au propos  
Une fois la bestiole reçue, j'ai récupéré l'image la plus adaptée sur le site : http://www.raspberrypi.org/downloads/
A mon sens, la Noob est la mieux: on copie les fichiers sur la carte, on démarre le pi, on choisit le système et basta... c'est fait. 
 

Installation et configuration de bittorrentSync

Ensuite, j'ai récupéré l'archive de bittorrentsync sur leur site, je l'ai décompressée dans le dossier home/pi. 

Il suffit de le lancer pour que... rien ne se passe !  

Bon, il faut dire que bittorrentSync n'a pas d'interface directement accessible; rien n'est toutefois perdu, puisqu'on accède à la config et à l'ajout de dossiers via le navigateur à l'adresse 127.0.0.1:8888 (ouf)

 

Lors de la première connexion, on choisit les login/passe d'accès et pis voilà.

 

On arrive ensuite à un truc comme ça:

Pour synchroniser un dossier, on clique sur Ajouter le dossier

La clé secrète est à générer lors du premier partage du dossier ou à copiercoller lors des partages suivants car c'est elle qui servira à BTsync pour reconnaître le dossier et le synchroniser sur une machine différente.

 

Accès à distance au RaspberryPI (pas de moniteur/clavier)

Pour pouvoir accéder à mon RPI même sans écran/clavier, j'ai bien entendu installé ssh et tightvnc... Inutile de réinventer la roue, je vous renvoie directement vers http://the-raspberry.com/  (SSH et VNC) : les tutos sont très clairs et bien foutus
 
 
 
 
 

 

Désormais, me voilà avec un dropbox like à moi: pour une somme très modique je pisse à la raie de la NSA, des clauses abusives de Dropbox et tout ça... 

 

 

Je ne suis pas un numéro (de sécu), je suis un homme libre !!! (un peu)

 

Fil RSS des articles de cette catégorie