mercredi 25 mars 2015

Harbour Project - Beginner Guide

Ce n'est pas la première fois que je parle d'Harbour-Project, un compilateur Clipper/DBase libre et multiplateforme que j'utilise depuis quelques années maintenant.

Je viens de trouver une référence intéressante pour les débutants et les moins débutant.
Il faut quand même avouer qu'Harbour est assez puissant.
 
Une petite info à partager donc ;-)

mercredi 18 mars 2015

Python: Les Imports, créer un setup.py, mettre sa bibliothèque en ligne sur Pyp

Sam & Max, encore une fois ;-) ...
Un article qui vient à point dans mes travaux autour de ZPL (GitHub) organiser une bibliothèque et la mettre en ligne.
Ce n'est pas tout d'offrir une bibliothèque, il faudrait qu'elle soit aussi suffisamment sympa pour faire des import facilement et "user-friendly".

Merci les gars de bloguer et partager librement.

mardi 17 mars 2015

Windows tue mon disque! Impossible de bosser tellement c'est lent

Difficile de rester vraiment Zen quand la machine devient lente au point de devoir attendre l'affichage des fenêtres... c'est un cauchemar... même la frappe clavier devient lente (plusieurs secondes).
Ce n'est plus un OS mais un paquebot!
La cause, un disque qui n'arrête pas de faire des lectures... à qui la cause?

Virus?
Le PC est sous protection Kaspersky. Léger mais efficace. Il est peut probable que cela soit un Virus.

Un petit nettoyage
Après un sérieux nettoyage des logiciel et services, rien de superflu n'est gardé sur la machine.
Exit Flash, Java, Python, etc.

Pourtant, le problème persiste... si ça continue comme cela, mon PC passe par la fenêtre!

Process Explorer
Le très bel outil "Process Explorer" m'annonce qu'il n'y a presque pas d'activité disque!?!?... pourtant, au vu des LEDs sur mon PC, c'est plutôt le contraire... c'est "le manque d'activité" qui fait défaut!
Conclusion, c'est plutôt la faute à Windows (un truc qu'il nous cache) plutôt qu'un soft Lambda qui ne pourrait pas cacher ses accès disques.

Moniteur des Ressources
He bien, de façon surprenante, c'est encore une fonctionnalité Windows qui va nous aider... le moniteur de ressource système.
Accessible via le Gestionnaire des tâches | Volet "Performance" | Bouton "Ressource Monitor"
Ce qui nous intéresse est bien entendu les accès disque... nous sautons donc dans le volet "Disk" du "Ressource Monitor"

Surprise dite donc, dans les plus gros consommateurs, il y a le PageFile.sys (donc un processus trop gourmand en mémoire) dans le processus "System"!?!?
Mais aussi "SvcHost.exe" (voir image ci-dessous). SvcHost est utilisé pour exécuter d'autres processus sous son aile... qui est donc ce processus qui me rend la vie si difficile!
En sélectionnant "svchost.exe", nous découvrons de nombreux échanges autour de "DataStore.edb"


A qui appartient DataStore.edb?
Et bien en fouillant un peu sur le Net, on tombe assez rapidement sur.... "Windows Update"!
Ce serait donc lui qui transforme ma vie en cauchemar depuis plusieurs semaine?
La question qui se pause... vaut-il mieux une "machine à jour inexploitable" ou une "machine pas à jour exploitable".
Pour moi, le choix est vite fait, je vais arrêter Windows Update et vérifier si je retrouve des performances descentes.

Arrêter Windows Update

1) Arrêter les mise-à-jours automatiques
Voyez cet article "Turn Automatic Update On / Off" de Microsoft.

2) Arrêter le service Windows Update
Il serait opportun de faire en sorte que SvcHost ne fasse plus son tralala avec le fichier DataStore.edb.
Il faut donc arrêtre le service "Windows Update" dans le gestionnaire de service (j'ai aussi mis "Windows Defender" sur la paille pendant un petit moment).
Pour arrêter le service définitivement... il faut

  1. Arrêter le service
  2. Passer le service en "démarrage manuel" pour qu'il ne redémarre pas au prochain reboot.

Pour la petite histoire, j'ai un plantage losque j'essayer d'arrêter le service "Windows Update" (il boude et ne répond plus au gestionnaire de service! pas étonnant vu l'état lamentable de mon système).

Il va donc falloir que je reboote mon PC et, par conséquent, quitter cet article.

Addendum: Think twice before doing!
Voila, je viens de rebooter ma machine... et je suis au Paradis. Je vais enfin pouvoir bosser!
Si vous avez un doute pour votre propre machine, ne foncez pas tête baissée dans l'arrêt du service "Windows Update", c'est une action lourde de sens et il vaut mieux le faire pour une bonne raison.
Je vous propose donc de lire l'article et vérifier vos constatations avec les propos que j'y partage.

samedi 7 mars 2015

Burn-Out, Musique et Physiologie: découvrir des relations inattendues entre différents domaines

Avant-propos
Ce n'est pas la première fois que le terme Burn-Out sort sur ce Blog... voici une nouvelle publication qui vient argumenter les propos abordés "Appendre pour le plaisir, une histoire parmi tant d'autres" et "Citation: Oubliez tout ce que vous savez du Handicap".

J'y annonce:
Le savoir se nourris et se construit de curiosité, de différences et d'accointance entre les différents domaines artistique (le coding, le hacking electronique, métiers techniques ont aussi leur forme d'art au même sens que les art graphiques, art culinaire, musique, etc).
Tous ces domaines ont des accointances... parfois bien caché.
Vibrer par sympathie
Aujourd'hui, je vais vous entretenir d'un phénomène particulier "la vibration par sympathie"... qui sera aborder dans le cadre du Burn-Out mais touchera également les domaines de la musique, de la physiologie et inévitablement de la psychologie (la dite "emphatie", wikipedia) et neuro-science (les "neurones miroirs", wikipédia).

Mise en garde:
Je tiens à préciser que je ne suis nullement un professionnel de la santé. Cet article ne parle que d'interprétation et "pseudo" découverte d'ordre personnel. Il ne s'agit pas de conclusion d'ordre médical et je pourrais fort bien faire de grossières erreurs d'interprétation. Je reste pourtant convaincu du bien fondé de l'existence de relation inattendues entre différents domaines du savoir. Cet article est un exemple d'une conviction personnelle... au pire, vous découvrirez quelque-chose d'intéressant. Bonne lecture.

Mise en place: Le burn-out
Il se fait que dans mon entourage proche, quelqu'un connais un épisode de Burn-Out professionnel assez prononcé. Ce burn-out causé par l'usure du travail dans des conditions de relation hiérarchique compliquée (non "bien-vaillante").
Durant de nombreux mois, j'ai relevé et attiré l'attention sur les signes avant coureurs. Le problème du Burn-Out, c'est que l'on croit avoir la situation en main jusqu'au dernier instant et que lorsque celui-ci se déclare, la dégringolade est soudaine, fulgurante et déstructurante.
Je crois que la perte de "ses valeurs", de "son engagement", de "ses repères" et parfois de sa "personnalité" sont assez représentatifs de ce qui arrive soudainement et prend place en moins de 24 heures.  Bref... un avion à réaction qui s'écrase sur une ville.

Un constat personnel
C'est à cause de ce constat personnel que j'écris cet article sur la "vibration par sympathie". Il faut donc que je m'étende un peu sur mon ressenti.

Je l'ai dit, cette personne est assez proche. Je connais bien l'état et les phases du Burn-out pour en avoir vécu un il y a de nombreuses années.
Ce qui m'étonne plus, c'est d'en ressentir/revivre les effets aujourd'hui. Loin de connaître un nouvel épisode (ouf!), je constate que mon corps se souvient et reproduit des symptômes (atténué) par sympathie. La barre au front, la difficulté de concentration, le besoin de sommeil trop présent mais trop court, le retour du mal de dos. Whoaw! c'est étonnant!

Mais je vous rassure, tout va bien :-).

Vibrer par sympathie... pas de l'empathie
Ce ressenti physique, c'est une expression physiologique (le mal était bien là) causée par mes neurones miroirs (wikipédia). Nous les savons impliqués dans les processus affectifs, dont l'empathie. C'est eu qui permettent de comprendre la "douleur" d'autrui et d'adapter notre comportement en fonction de la situation d'autrui.
Mon corps connais les symptômes et les reproduits physiologiquement (cela va plus loin que la compréhension), j'écarter le terme empathie et privilégier la "vibration par sympathie" qui va plus loin que l'empathie.

Un peu de musique: la vibration par sympathie
La vibration par sympathie n'a rien d'une invention personnelle. Elle existe bien, dans le mode de la musique (et certainement aussi dans la théorie des cordes).
Je pense que cette analogie dans le cadre emphatique+physiologie est tout à fait pertinent!

Sur une guitare acoustique, il y a plusieurs cordes. Ces cordes sont toutes utilisables à vide et ont toutes une note particulière à vide.
Source: Clement Vigier
Nous allons nous intéresser à la cinquième corde qui produit un "La" à vide.

Il est également possible de produire un La sur la dernière corde Mi en plaçant son doigt en 5ième position (voir image ci-dessous).
Source: Jp Bourgois

Vibration par sympathie: en étant attentif, en frappant le "La" de la dernière corde (la 6ième, avec un minimum de tension), il est possible de faire vibrer la corde du La à vide (5ième corde). Ont dit alors qu'elle vibre "par sympathie".

Cela est également possible avec des autres notes comme le "Sol" (3ieme à vide et 4ieme corde) ou le Mi grave (6ieme corde) et le Mi de la première corde... effet que j'ai également eu l'occasion d'expérimenter.

Une corde vibre physiquement et fait vibrer physiquement l'autre corde.

Voila pourquoi je parlais de "vibration par sympathie" dans un cadre aussi éloigné que le Burn-Out... cet effet physiques/physiologiques qui se propage comme des vibrations sur une guitare.

Comme quoi, le savoir peu parfois réserver des découvertes surprises entre des domaines du savoir sans relation apparente.

Pour la petite histoire, c'est pour cette même raison de vibration par sympathie qu'Antoine Dufour utilise un bandana sur sa guitare (pour éviter les désagréables petites vibrations sur les petits bouts de corde de  la tête de guitare).


Vous pouvez également accéder directement à la vidéo sur youtube.

lundi 2 mars 2015

Transformer une image en BMP 2 couleurs pour une impression PCL

Dans le cadre du projet PythonPcl (GitHub), je me suis mis en tête d'imprimer un logo sur une page... en PCL bien entendu!

Les premiers travaux de  hp-ip-raster-unencoded-v2.py m'ont déjà permit d'envoyer une "image" dite Raster contrôlée point-par-point.  Pour le moment, l'image Raster envoyée en PCL n'est pas compressée (mode appelé "unencoded" dans le manuel HP).

Voyez les petits graphiques juste au dessus du texte "End of test".

Le but final n'est pas de coder une image en point-par-point dans le code Python... mais c'est déjà un début.
Il faudrait maintenant pouvoir envoyer une image noir et blanc (he oui! notre HP 3015 n'est pas en couleur!).

Mais un problème se pose:
comment obtenir une image noir et blanc sans que celle-ci soit immonde une fois imprimée?

La réponse:
Il faut faire du dithering au moment de la transformation noir et blanc.
Il est certainement possible de réaliser cette opération en Python... pour ma part, je vais opter pour une préparation avec Gimp.

Réaliser une bitmap 2 couleurs + dithering avec Gimp.

Le but de ce tutoriel - The aim of this tutorial
Le but de ce mini-tutoriel n'est pas de dégrader le logo "open source initiative" mais de montrer comment transformer une image pour qu'elle soit imprimée en PCL (Printer Command Langage) tout en préservant un aspect visuel agréable.

The aim of this tutorial is not to degrade the "open source initiative" logo but to explain how to transform one picture to be printed with PCL (Printer Command Langage) while preserving a nice printed visual aspect.

Commençons par charger notre image d'origine.
J'ai opté pour le logo open-source suivant que vous trouverez ici sur opensource.org
Source: opensource.org
Passer en deux couleurs
Une fois chargée dans Gimp, passez par le menu Image > Mode > Indexed... pour passer en couleur indexée.
Nous allons:
  • Limiter le nombre de couleur à 2 et 
  • Utiliser  de sélectionner "Floyd-Steinberg" comme "Color Dithering"
   
Cela produira une image deux couleurs mais pas forcement en noir et blanc!
image en 2 couleurs avec dithering
Mais nous allons corriger cela.

Passer en noir et blanc
Pour ce faire, nous allons rechanger le mode le l'image en niveau de gris.
Menu Image > Mode > Grayscale

Ce qui nous permettra ensuite d'appeler l'outil de seuil :-)
Menu Colors > Threshold  (ou Couleurs > Seuil)

En travaillant sur les paramètres (si cela est seulement nécessaire), vous tomberez vite sur une image en noir et blanc.

Repasser en 2 couleurs + sauver en Bitmap
maintenant que nous avons notre image en noir et blanc, nous allons la sauver en tant que bitmap deux couleurs (noir et blanc).

Menu Image > Mode > Indexed...

Fixez:
  • le nombre de couleur à deux couleurs
  • Retirer l'option de dithering (plus nécessaire cette fois)
  • convertissez une fois de plus 


Voila, il ne reste plus qu'a exporter notre belle image en BMP via le menu "File > Export..." (ou "Fichier > Exporter...").

Le but étant de recharger l'image en Python, il est important de faire attention aux paramètres d'exportation Bitmap.
  • Run-Length Encoded doit être décoché
  • Do not write color space information doit être coché

Nous avons maintenant une image prête pour nos impressions en PCL (Printer Command Langage)

Petite information complémentaire
Voulant imprimer une image sur ma Zebra ZPL2824, j'ai voulu réutiliser ce tutoriel pour produire une image 2 bits assez facile à lire. Le Hic, c'est que Gimp 2.8 pour Windows ne propose pas de modifier les options Run-Length Encoded... etc.
C'est franchement Agaçant!!!

Il est possible d'exporter au format SUNRAS avec l'extension IM1 (je suspecte ce format d'encoder 1 bit par pixel). Utilisez le format standard.
Une fois sauvez, nous pouvons ouvrir le fichier avec un editeur Hexa décimal.
Nous pouvons clairement constater une similitude entre les données et le graphique (voyez l'antenne de la voiture)

Il faudra juste sauter les premiers octets de l'entête du fichier (contenant une signature).


Une inspection attentive couplée à un unique point placé dans le coin supérieur de l'image (donc valeur binaire 1000000 correspondant à la valeur hexadécimale 80 révèle


qu'il faut enlever les 32 premiers octets :-)

J'ai également remarqué que chaque ligne (le 16ieme octet) se termine par un 00. Mon image ne faisant que 120px de large, il me faut uniquement 120/8 = 15 octets/bytes pour coder une ligne de mon image. Le format travaille certainement par multiple de 8 octets (à vérifier dans la spec)

Tadaa.

dimanche 1 mars 2015

Comment démarrer une application graphique sur un Linux distant via SSH

Je voulais faire une petite surprise à ma tit femme en transférant et affichant sur son PC (Linux Mint) une petite collection d'image en utilisant une connexion SSH.

Le transfert de fichier SSH était déjà abordé dans un précédent article "Transfert des fichiers vers son Raspberry-Pi", cela fonctionne également avec n'importe quel PC Linux supportant les connexions ssh (sudo apt-get install openssh-server)

Reste alors à faire ouvrir le dossier (sur l'ordinateur distant) en utilisant une ligne de commande. Comme le navigateur de fichier sur Mint est "caja", suffit de saisir les commandes suivantes:

oli@bert:~$ ssh tim
oli@tim:~$ export DISPLAY=:0
oli@tim:~$ caja repertoire_a_afficher
Et voila....

Source: How to start a GUI software on a remote Linux PC via SSH