Affichage des articles dont le libellé est Ubuntu. Afficher tous les articles
Affichage des articles dont le libellé est Ubuntu. Afficher tous les articles

samedi 5 août 2017

wxPython pour réaliser des interfaces graphique sous Python

Il n'y a pas si longtemps, je suis tombé sur cet article qui à retenu toute mon attention


Pour en revenir à l'article, il propose de réaliser:
  1. Une interface graphique à l'aide de wxFormBuilder
  2. Exporter l'interface dans un fichier python (directement depuis wxFormBuilder)
  3. Créer le code (vraiment très rudimentaire) pour coder l'exemple en python
Exemple wxFormBuilder et Python

Je me suis donc lancé dans l'expérimentation en installant wxFormBuilder sur mon Linux Mint (Ubuntu).

Petite surprise
En suivant les instructions mentionnées dans l'article pour l'installation de wxFormBuilder, j'ai vite remarqué que le code Python généré par wxFormBuilder (compilé depuis GitHub) n'était pas compatible avec wxPython  (installé depuis les packages pythons avec "pip install -U wxPython").

Ce n'est pas grand chose... juste un appel de fonction à modifier dans le fichier Python généré par wxFormBuilder.
Ce n'est quand même pas très "propre", sans savoir ce que cela cache comme autre surprise.

Cause et solution
Je me doutais que la version de wxPython (des dépots Python) n'était pas en concordance avec la version wxFormBuilder disponible sur GitHub.
La solution:
  • re-compiler wxPython 
  • compiler wxFormBuilder
Recette pour recompiler wxPython et wxFormBuilder
Recompiler wxPython ne fut pas de tout repos et il n'aura fallut pas loin d'une journée pour y arriver.
Voici donc la recette magique:

# === Installer les essentiels ===
# essentiels de compilation
sudo apt-get install build-essential g++

# Installer GTK 2.0
sudo apt-get install gtk2.0

# === Install wxPython ===
# comme mentionné sur https://www.wxpython.org/pages/downloads/
# l intruction suivante ne compatible pas bien:
#
# pip install -U wxPython

# Comme indiqué dans l'article, l'instruction suivante 
# ne fournit pas une compatibilité optimale entre le code 
# Python généré par wxFormBuilder et le package Python 
#
# sudo apt-get install python-wxgtk3.0

# === Compilation de wxPython ===
# Installer GStreamer requis pour compiler wxPython
sudo apt-get install libgstreamer0.10
sudo apt-get install libgstreamer0.10-dev
sudo apt-get install libgstreamer-plugins-base0.10
sudo apt-get install libgstreamer-plugins-base0.10-dev
sudo apt-get install gir1.2-gst-plugins-base-0.10
sudo apt-get install gir1.2-gstreamer-0.10

# Installer WebKit requis pour compiler wxPython 
# NB: identifier les module WebKit avec "sudo apt-cache search libwebkit"
# NB: pas suffisant "sudo apt-get install libwebkit2gtk-3.0-dev"
sudo apt-get install libwebkitgtk-3.0-0 libwebkitgtk-dev 

# Installer python3-dev, requis pour avoir python3-config.
# python3-config utilisé par la compilation de wxPython
sudo apt-get install python3-dev

# Installer wxPython 4.0 pour python3
# La compilation peut prendre plus d'une heure
sudo pip3 install -U \
    -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
    wxPython

# === Compilation de wxFormBuilder ===
# Conformément au projet GitHub
# https://github.com/wxFormBuilder/wxFormBuilder

sudo apt-get install libwxgtk3.0-dev libwxgtk-media3.0-dev libboost-dev

cd /tmp
git clone --recursive --depth=1 https://github.com/wxFormBuilder/wxFormBuilder
cd wxFormBuilder
./create_build_files4.sh
cd build/3.0/gmake
make config=release

=== Exécuter la version compilée ===
cd ../../../output/bin/
./wxformbuilder

== Installer wxFormBuilder (Ubuntu/Mint) ==
# copy software to /usr/bin/
sudo mkdir /usr/share/wxformbuilder

# COPIER TOUS les fichiers de 
#   /tmp/wxFormBuilder/output/
# vers
#   /usr/share/wxformbuilder

# Reconstruire le lien symbolique de share/wxformbuilder 
# vers le répertoire "share" de notre installatin
sudo rm /usr/share/wxformbuilder/share/wxformbuilder
cd /usr/share/wxformbuilder/share
sudo ln -s /usr/share/wxformbuilder wxformbuilder

# Créer un lien symbolique dans /usr/bin
# pour pouvoir appeler wxformbuilder depuis la ligne 
# de commande
cd /usr/bin
ln -s /usr/share/wxformbuilder/bin/wxformbuilder wxformbuilder

Ressources

dimanche 10 juillet 2016

Faire une mise-à-jour de Linux Mint en ligne de commande

Bonjour à tous,

J'ai trouvé un chouette article (en Français) pour faire une mise-à-jour (distribution upgrade) d'un Linux Mint.

http://www.linuxtricks.fr/wiki/mettre-a-niveau-linux-mint-vers-une-nouvelle-version

Très utile
  • http://www.linuxtricks.fr/wiki/mettre-a-niveau-linux-mint-vers-une-nouvelle-version

lundi 16 mai 2016

Thunderbird - Modifier l'entête et pied de page de façon définitive

Dans Thunderbird, vous avez la possibilité de modifier l'information imprimée dans l'entête et le pied de page lors de l'impression de vos messages.
Options d'impression de Thunderbird
C'est cool... mais c'est aussi ce qui, ce soir, énerve plus particulièrement Françoise (Thunderbird sous Linux Mint).

Si, comme Françoise, vous ne désirez pas voir ces informations imprimés sur avec vos mails... vous aurez la mauvaise surprise de devoir les modifier pour chaque nouvelle impression... heure après heure, jour après jour.
Cela en énerverais plus d'un!

Voici la marche à suivre pour modifier définitivement ce paramètrage:

1) Ouvrir les préférences de Thunderbird
2) Vous rendre dans les paramètres "Avancés"
3) Sélectionner le voler "Général"
4) Cliquer sur l "éditeur de configuration"

Ouvrir l'éditeur de configuration
Faites une recherche sur les paramètres relatif à l'impression.
Saisissez "print" dans la zone de recherche.
Editer les paramètres d'entête et de pied de page
Cherchez ensuite "print.print_footerleft" et compagnie.
Il ne vous reste plus qu'a modifier les différents paramètres (pour ce qui nous concerne, nous avons effacé le contenu pour ne plus avoir de pied de page et d'entête).




x
x

lundi 14 décembre 2015

fwbackups - le programme de backup equivalent à "Cobian Backup" pour Linux

Cela fait maintenant des années que j'utilise Cobian Backups sous Windows (Windows, c'est pour travail).

Mais je suis plutôt addict Linux à la maison. Cela faisait longtemps que je cherchais un système de backup plutôt proche des fonctionnalités de "Cobian Backup", simple et efficace.
Je l'ai trouvé, il s'appelle fwbackups et fonctionne en python (léger et très largement supporté par les plateforme Linux).

fwbackups de Diffingo

Utilisée depuis plusieurs mois maintenant, je me prépare à en faire le déploiement. Pourquoi ne pas faire la publicité d'une bonne solution.


Pour démarrer le programme de backup, il suffit de saisir la commande suivante sur une ligne de commande:

fwbackups

Téléchargement:
Installation:

Note:
Par le passé, j'avais trouvé "Areca Backup" vraiment génial mais ce dernier nécessitait l'installation de Java... pas trop a mon goût pour être tout à fait honnête. Entre Java et Python mon coeur balance franchement vers Python.
Cela ne signifie pas qu'une solution Java ne soit pas une bonne solution, loin de là, c'est juste une question de préférence personnel.


Voir aussi:

dimanche 11 octobre 2015

Activer Google comme moteur de recherche par Defaut dans Firefox

Nous sommes quand même nombreux à vouloir utiliser Google comme moteur de recherche dans Firefox.
Comme c'est un moteur commercial, il n'est pas installé par défaut... et la recherche sur le net est un peu fastidieuse.

Voici donc comment faire:
1) Télécharger le greffons/plug-in "Google Search" sur le site de mozilla.

Cliquer sur le lien suivant et installer le plug-in

https://addons.mozilla.org/en-US/firefox/addon/google-default/

2) Ensuite, allez cliquer sur l'icone en forme de loupe dans la barre de recherche.

Cela affiche un menu et tout en bas, vous pouvez voir "paramètres de recherche".
Cliquez sur le point de menu "Paramètres de recherche"

3) Dans la fenêtre des paramètres de recherche, sélectionnez simplement le moteur de votre choix.... dans notre cas "Google"


Voili, voilou,

vendredi 18 septembre 2015

Recharger un module Python à la volée

Il y a peu, je vous parlais d'IEP dans ce billet "IEP: un éditeur Python interactif convivial (Windows, Mac, Linux)".

Environnement bien pratique pour faire des tests et je découvre justement SqlAlchemy.
J'étais justement entrain de coder un petit module de test model.py lorsque je me suis demandé comment recharger mon module!
IEP - édition d'un module "model.py"

J'avais déjà fait un import model ... mais ayant modifié le code, je voulais savoir comment le recharger.
Voici donc comment faire...

Option 1 - à la dure
import sys
del( sys.modules['model'] ) # virer le module "model.py"
from model import *         # ré-importer le module "model.py"

Option 2 - importlib.reload()
import importlib
import sys
a = sys.modules['model'] # Référence vers le module
importlib.reload( a )    # Demander à Python de recharge le module

vendredi 4 septembre 2015

IEP: un éditeur Python interactif convivial (Windows, Mac, Linux)

IEP est un outil vraiment très pratique et agréable permettant de faire du prototypage en Python dans un milieu ergonomique.
Nous ne parlons pas de développement (qui est un autre domaine) mais de Python Interactif (et même IPython).
IEP - Un python interactif vraiment convivial.
J'aime employer Python en mode interactif... c'est vraiment pratique pour faire du prototypage ou essayer des nouvelles fonctions. Il y a aussi son grand frère IPython que je ne connais pas encore très bien.

Limite de Python Interactif en mode console
Par contre, si ces environnements consoles sont plus que pratique du fait de leur mode console, ils deviennent également pénibles lorsqu'il faut faire un "fix" dans une fonction mal définie.
Il faut recommencer la saisie ligne a ligne... ce n'est pas gênant si c'est une fois mais autrement plus ennuyant en usage intensif.

Je voulais charger dynamiquement le contenu d'une table postgresql dans un objet SqlAlchemy (via l'ORM)... puis sauver les objets dans un fichier JSON. Le but est d'exporter les données sur un serveur FTP pour rechargement dans une DB en ligne. Alors oui, vu le nombre de manipulation, j'étais un peu à l'étroit dans la version console.

IEP... KASEKO?!?

J'ai donc cherché un environnement Python Interactif plus convivial - aussi sous Windows - et je suis tombé sur Interactive Editor for Python (IEP)

C'est toujours un Python interactif (IPython) auquel est associé une gestion de fichier, quelques outils, un logger et des fonctionnalités vraiment efficaces.
Une combinaison idéale pour une utilisation en mode Interactif:
  • Exécution du texte sélectionné à la volée (dans l'interpréteur)
  • Exécution du script ou du contenu du fichier
  • Explorateur de fichier
  • Explorateur de classe
  • Auto complétion
  • Python Interactif fonctionnant dans un thread séparé
    Autorise donc la poursuite du coding pendant une phase d'éxécution.
  • Excellent support de raccourcis clavier!
    Capital pour allez vite.
  • etc
L'installer Windows ne fait que 10Mb... tout à fait raisonnable pour les services rendus.

Ressources

jeudi 16 avril 2015

Ubuntu / Mint - monter une carte SD en ligne de commande

Voici une petite recette de cuisine pour monter une carte SD en ligne de commande.

J'ai une machine juste derrière moi, bien utile mais son clavier est mort... je travaille donc en SSH (donc ligne de commande). J'ai pourtant besoin de récupérer les photographiques qui y sont stockées par mon Nikon D5000.
Voici donc une petite recette de cuisine:

Identifier le device (périphérique)
Insérer la carte SD puis taper la commade dmesg.
Les messages de debug nous indiquerons le périphérique /dev ou nous pourrons trouver notre carte SD.

[  557.134222] perf samples too long (2524 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
[  576.595295] EXT4-fs (mmcblk0): VFS: Can't find ext4 filesystem
[  576.595747] EXT4-fs (mmcblk0): VFS: Can't find ext4 filesystem
[  576.596201] EXT4-fs (mmcblk0): VFS: Can't find ext4 filesystem
[  576.596552] FAT-fs (mmcblk0): bogus number of reserved sectors
[  576.596557] FAT-fs (mmcblk0): Can't find a valid FAT filesystem
[  576.597091] FAT-fs (mmcblk0): bogus number of reserved sectors
[  576.597095] FAT-fs (mmcblk0): Can't find a valid FAT filesystem
[  586.441706] FAT-fs (mmcblk0): bogus number of reserved sectors
[  586.441713] FAT-fs (mmcblk0): Can't find a valid FAT filesystem
[  625.835340] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[  952.916270] mmc0: card 0007 removed
[ 1660.553681] mmc0: new SDHC card at address 0007
[ 1660.553936] mmcblk0: mmc0:0007 SD8GB 7.63 GiB
[ 1660.556428]  mmcblk0: p1


Le log nous indique clairement un périphérique mmcblk0 et en faisant un peu plus attention, nous avons même l'information sur la partition p1

Le périphérique est donc mmcblk0p1

Pour s'en convaincre, il suffit de faire un petit ls /dev/mmcblk0* et nous obtenons:

/dev/mmcblk0 
/dev/mmcblk0p1

Monter la carte SD
Dans Linux Mint 17, les périphériques externes sont montés dans /media/nom_utilisation/ .

Nous allons commencer par créer le répertoire sur-lequel nous allons monter la carte SD.
Dans l'exemple ci-dessous, dom est le nom d'utilisateur.

cd /media/dom
mkdir sdcard


Puis effectuer le montage en fat32 (type "vfat") très communément répandu pour les cartes SD d'appareil photo.

sudo mount -t vfat /dev/mmcblk0p1 /media/dom/sdcard

Voila, reste plus qu'a aller explorer la carte.

cd /media/dom/sdcard
cd DCIM
cd 100D5000
ls *.JPG

Démonter la carte

Avant d'éjecter la carte du lecteur, vous devez vous assurer que toutes les données sont bien écrites dessus. Pas besoin d'espionner les entrées/sorties, il suffit de démonter le périphérique (unmount), cette commande se chargera de faire le ménage et les dernière opérations d'écritures en attente.

Démonter un périphérique est aussi simple que:

sudo umount /media/dom/sdcard

Ne pas oublier de retirer le répertoire sur lequel nous avons monté le périphérique... ce dernier n'est plus utile.

cd /media/dom
rmdir sdcard



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

dimanche 22 février 2015

Linux Mint: Améliorer votre réseau domestique Linux avec Avahi (Zeroconf)

IntroductionPetit article qui ravira les utilisateurs Debian, Ubuntu et notre bien aimé Linux Mint.
Avoir plusieurs machines Linux sur un réseau domestique, c'est franchement sympa. Partage de fichier, commande à distance en ssh, etc c'est vachement cool.
Par contre, il y a quand même un truc vachement énervant, c'est quand il faut localiser les autres machines sur le reseau alors que l'on a un service DHCP. A moins d'opter pour une IP fixe, c'est pas franchement cool de découvrir l'adresse IP du jour du PC de Madame pour y faire un

ssh utilisateur@192.168.1.adresse_du_jour
Harf!!!

Heureusement, il y a Ahavi (Zeroconf) qui permet d'avoir un service de découverte sur le réseau domestique sans se prendre la tête à partir du nom de la machine.

Ainsi, le ssh pourri avec l'adresse_ip_du_jour devient

ssh utilisateur@nom_de_la_machine.local

Là, ce devient cool... sauf si le nom de la machine à atteindre est à coucher dehors comme "acer-xya123-maison-z". Il sera toujours temps de changer le nom de la machine plus tard pour rendre les choses plus agréables.

Avahi (Zeroconf) sur Linux... kaseko?!?!
Avahi exécute un service mDNS plus DNS-SD: il s'agit d'un DNS multicast + service de découverte DNS. Le DNS Multicast signifie que chaque hôte (ordinateur) stocke ses propres enregistrement DNS. Une adresse multicast (224.0.0.251) est utilisé par les clients qui désirent obtenir l'adresse IP d'un hôte donné (à partir de son hostname), et l'hôte répond à la requête du client avec sont adresse IP. DNS-SD utilise la même technologies, mais en plus des informations DNS habituelle, les hôtes publient également des informations sur les services disponibles: l'hote annone donc les services qu'il fournit et comment contacter ces services. Le but de tout cela est de permettre la connexion sur un hôte et ses services sans nécessiter la configuration de la part d'un utilisateur: ce procédé est connu comme "Zeroconf sharing" ("partage Zeroconf" en français, Zeroconf signifiant "sans configuration"). Ce type de service logiciel est idéal pour les personnes n'étant pas l'aise avec la configuration manuelle -- ou qui n'ont pas envie de se prendre la tête!

ATTENTION
Il va de soi qu'il ne faut pas installer ce type de service sur les machines d'un reséau accessible depuis Internet. Cela offrirait beaucoup de trop d'informations et de facilité pour les fouineurs opportunistes voulant s'offrir une petite séance de cracking.

A vrai dire, comme il n'y a pas beaucoup de soft Linux qui utilise vraiment mDNS. Apple à fait un usage plutôt intensif de celui-ci: leur logiciel s'appele Bonjour (aussi disponible sur le Pi), et prend en charge la configuration des imprimantes, partage de musique via iTunes, partage de photo via iPhoto, Skype, iChat et toute une série d'autres services logiciels.
Cependant, en terme d’implémentation technique, Avahi est une excellent brique logicielle capable de réaliser/faire tout ce que Bonjour fait. Il se dit sur le Net que les équipes de développements Debian/Ubuntu essayent de donner un petit coup de pouce à mDNS en incluant avahi. Du coup, les amoureux de Mint en profite aussi.
Autant dire que c'est de la balle... ça marche comme sur des roulettes.

Quels services Avahi peut rendre à votre Linux box?
Pour commencer, adresser vos machines par leur nom plutôt que leur adresse IP. Une autre utilisation est le partage de la musique en réseau. En particulier, si certaines de vos musiques sont sur votre pc portables, elles apparaissent et disparaissent du réseau en fonction des déplacements de votre machine sur le réseau... shutdown et boot. La découverte automatique de musique est un service vraiment très pratique. C'est la même technologie que celle utilisée par Apple et iTune.

Si vous êtes intéressé par le partage de musique avec les machines apple, je pense que vous devriez consulter l'article suivant Avahi (Zeroconf) on Linux: What is it Good For? (Hélas, il n'y a pas que Microsoft qui prend des libertés vis-à-vis des standards).

Installer Avahi

sudo apt-get install avahi-daemon avahi-discover libnss-mdns

Vérifier le statut du service

sudo service avahi-daemon status

Si Avahi n'était pas démarré, vous pourriez utiliser

sudo service avahi-daemon start

scanner le réseau pour découvrir les services disponibles

avahi-browse -at | grep IPv4


Exemple de résultat offert par avahi-browse

Il est également possible de résoudre facilement l'IP avec l'option "r"

avahi-browse -atr

Une fois la machine identifiée, vous pouvez facilement utiliser des services tels que ssh

ssh NomUtilisateur@Acer-Aspire-xxx.local

Hé hop c'est parti

Ce n'est pas tout, d'autres services sont plus facilement accessibles
  • Ping ping hostname.local
  • Samba nautilus smb://hostname.local 
  • SSH nautilus ssh://hostname.local 
  • Imprimante distante ipp://hostname.local:631/printers/printer_name 
Outil graphique

L'outil avahi-discover affiche le résultat des découvertes dans une fenêtre de votre environnement graphique.
Outils très pratique.

Si avahi-discover n'est pas encore installé, vous pouvez facilement le faire en vous pliant d'un petit apt-get install

sudo apt-get install avahi-discover

Pour lancer l'outil, vous pouvez utiliser la commande suivante depuis un terminal (ou le menu de mint)

avahi-discover

Changer le nom du PC Linux
Maintenant, il ne faut pas oublier qu'avoir un nom de pc (hostname) compréhensible et facilement utilisable sur le réseau et en ligne de commande.
Petit conseil:
  • rendez le hostname simple et facilement compréhensible.
  • Utilisez exclusivement des minuscules (sous Linux, "Bonbon" et "bonbon" ce n'est pas pareil... autant s'éviter les erreurs et l'usage de la touche shift ;-) ).
  • Utilisez exclusivement des "-" en séparateur de mot.
  • Un petit truc bien pratique dans le milieu domestique, c'est d'identifier le propriétaire et le type de machine (à la maison, il arrive souvent qu'une même personne dispose de plusieurs machines).
    Exemples: didier-laptop , didier-desktop, greg-pi
Changer le Hostname
Bref, pour changer le nom d'une machine sur le réseau, vous pouvez suivre ce tutoriel pour Linux Mint (et aussi pour les autres dérivés de Debian).


Ressources

dimanche 8 février 2015

Imprimante Zebra USB, ZPL et CUPS - Damned CUPS!!!

Voici un petit bout d'histoire autour d'un imprimante Zebra USB branchée sur une machine Linux (Linux Mint Mate 17) et d'un acharné qui voulait envoyer du ZPL sur sa Zebra.

L'imprimante à étiquette Zebra, ZPL et Linux
Chez MCHobby (shop.mchobby.be) nous utilisons Linux Mint pour toutes nos tâches et développements.
Ainsi, pour améliorer et accélérer notre étiquetage à partir des infos de notre PrestaShop, nous avons branché une Zebra LP 2824 USB sur notre ordinateur.

Comme nous développons nos propres petits outils PrestaShop en Python (cfr Lcd Order Track et PrestaConsole), nous pourrions facilement créer nos étiquettes à la demande. 

Revenons à nos moutons...

Ensuite, nous avons essayer d'envoyer des commandes ZPL vers l'imprimante. Les commandes ZPL permettent de contrôler directement l'imprimante et le contenu à imprimer.

Fichier de démo et agaceries CUPS
Comme suggéré dans la documentation technique de Zebra, nous avons créé un petit petit fichier de démonstration demo.zpl

^XA
^FO100,50^ADN,36,20^FDxxx^FS
^XZ
 
Ce fichier fût créé à l'aide de Geany (un excellent éditeur de code), avec LF (LineFeed) comme séparateur de ligne et un encodage de fichier en UTF-8.

Ensuite, j'ai essayé d'envoyer le fichier directement vers l'imprimante à l'aide de:

  cat demo.zpl > /dev/usb/lp0

pour continuellement recevoir le message d'erreur

  /dev/usb/lp0: Permission denied

Cette erreur étant provoquée par le système de gestion des impressions (CUPS).

Je ne pouvais pas adresser directement le périphérique à cause de CUPS... mais je ne pouvais pas retirer CUPS car nous l'utilisons pour d'autres impressions (par exemple notre imprimante réseau HP3015).

Sacré nom de Dieu de CUPS!
Cette simple tâche d'envoyer un fichier brute (RAW comme disent les anglais) sur notre Zebra fût l'une des tâches les plus complexes à réaliser.
CUPS n'était pas vraiment en cause... c'est plutôt mon manque de connaissance de la gestion des imprimantes CUPS qui est en cause.

Ce que nous devons faire, c'est installer la Zebra comme une imprimante RAW  et non comme une Zebra! 

Installer la Zebra en RAW dans CUPS
Pour commencer,
Branchez votre Zebra USB puis ouvrez le gestionnaire d'imprimante.
Sur Linux Mint, il ressemble à ceci...

Cliquez sur le bouton "+" pour ajouter une imprimante.

A ce stade, vous pouvez sélectionner votre Zebra USB et passer à l'étape suivant.
Attention, c'est à partir ICI qu'il faudra faire le bon choix!!
Pour commencer, sélectionnez l'imprimante Generique (même si Zebra et la bonne imprimante existe dans la liste, c'est une imprimante générique qu'il faut installer)

Ensuite, vous sélectionnez le pilote "Raw Queue" (file d'impression Raw/brute):


De la sorte, tous les fichiers envoyés cette queue d'impression Zebra sera redirigé directement vers l'imprimante sans aucun traitement intermédiaire!

Point final très important... il faut nommer la file d'impression de façon intelligible!
Nous avons remplacé le nom proposé par "zebra-raw". Ce sera bien plus pratique par la suite. Nous vous conseillons vivement de simplifier le nom court.
 
Voila, quand c'est fini, vous vous trouvez vers avec une nouvelle imprimante (Printer queue / File d'impression) nommée zebra-raw et n'utilisant pas de pilote d'imprimante interprétant les données que vous voulez envoyer vers la Zebra


Chouette, c'est enfin prêt!
 
Envoyer le fichier demo.zpl vers la Zebra
Comme vous l'avez vu ci-dessus, nous avons crée une queue de traitement "zebra-raw" pour notre Zebra LP 2824 Plus.

A la suite de cela, il a été possible d'envoyer des données brutes (RAW) contenant des commandes ZPL directement sur l'imprimante à l'aide de l'utilitaire lp:

lp -d zebra-raw demo.zpl


Et voila, maintenant, cela fonctionne parfaitement!

Il nous reste plus qu'a attaquer la file d'impression/printer queue en Python et mon bonheur sera complet...

mardi 13 janvier 2015

PC Portables pour Linuxiens - Configuration à la demande et sans vente liée d'OS

C'est en lisant cet article sur loligrub.be que j'ai découvert le fabriquant Clevo en France (Clevo.fr).

Capable de vous concocter PC et PC Portable avec et SANS Système d'exploitation.

Il est enfin possible de se fournir des PC Portables pour nous Linuxiens sans passer par la case "Licence Microsoft"... de quoi investir la différence dans le Matos!

Livrable en Belgique et en France avec clavier Français ou Belge.
Que demander de plus !

Une référence à retenir:
  • Clevo le spécialiste du pc portable sur mesure.

Clévo propose d'ailleurs un chouette offre permettant de réaliser des micro-serveur Linux pour un prix de départ à 299Eur

samedi 27 décembre 2014

Linux Mint: Démarrer un Script Python depuis de bureau

Cet article décrit les différentes étapes pour démarrer un script python à partir d'un lien sur le bureau de Linux Mint (dérivé d'Ubuntu).

Introduction
PrestaShop est un chouette e-commerce mais il traine malheureusement quelques lacunes parfois très handicapantes.
L'une de ses faiblesses se trouve dans le SAV... il est parfois impossible de localiser un nouveau message client lorsqu'il l'envoi sur un ancien ticket (nous avons +3000 ticket et +5000 messages. Argh!

Utiliser un script Python
Grâce à l'API PrestaShop et à Python, il est possible d'écrire un script qui lit les derniers messages reçu sur le WebShop... ce qui permet de localiser plus facilement un tel message et d'avoir les informations adéquate pour le localiser rapidement (l'ID du fil de discussion dans notre cas).

Les scripts Python et utilisateurs finaux
Si je suis à l'aise avec un terminal Linux, ce n'est pas le cas de tout le monde.
L'idéal, c'est quand même d'avoir une icon sur le Bureau qui permet de lancer le script et afficher les résultats attendu.
Même si l'affichage est en mode texte vilain et méchant, ce n'est pas un problème... par contre, le démarrage du script reste un point critique pour un utilisateur Lambda.
C'est là que les choses sont un poil plus compliquées...

Bloquer le script en fin d'exécution
C'est idiot mais il est important de bloquer le script en fin d'exécution. Dans le cas contraire, le script termine son travail... l’interpréteur Python aussi et la fenêtre disparait de l'écran.
Le but c'est de laisser à l'utilisateur le temps de lire le résultat qui s'affiche à l'écran!
Pour cela, n'oubliez pas de faire un import sys en début de script
        import sys

Puis de terminer votre script python par les lignes pour force l'utilisateur à encoder un caractère pour terminer l'exécution du script
    # read char on keyboard
    char = sys.stdin.read(1)
    return 0


Ce que nous avons fait dans notre script savtrack.py...

Créer un Shell Script
Avant toute chose, il est vivement recommandé de créer un shell script (.sh) pour démarrer le script Python.
Le but de ce dernier est:
1) mettre en place les éléments nécessaires à la bonne exécution du script python
2) lancer le script python... éventuellement dans un terminal plus convivial! 

Dans le cas de notre script savtrack.py, nous devons absolument nous trouver dans le sous répertoire PrestaConsole du répertoire utilisateur (le fameux ~/PrestaConsole).
Notre script python à besoin de lire les fichiers cachefile.pkl et config.ini... faut mieux se trouver dans le bon répertoire avant de démarrer le script!

allons y, créons notre script shell "savtrack.sh"... c'est lui qui sera démarré depuis notre bureau Linux.

#!/bin/bash

echo ==========================================
echo       listing SAV
echo ==========================================

cd /home/domeu/PrestaConsole
mate-terminal -e "/usr/bin/python /home/domeu/PrestaConsole/savtrack.py"

Comme vous pouvez le noter, nous faisons un cd (change directory) dans le bon répertoire avant de lancer le script python à l'aide de:
/usr/bin/python /home/domeu/PrestaConsole/savtrack.py

C'est quoi ce mate-terminal???
En fait, en lançant le script "savtrack.sh" depuis le bureau (voir plus loin), Linux Mint va utiliser le terminal xterm par défaut, terminal efficace mais très rudimentaire et peu convivial de prime abord.

Mon script crache un listing assez long (plus qu'un écran) et il est donc important d'avoir un terminal qui dispose d'une scrollbar permettant de naviguer dans le lonnngggg texte produit par notre script savtrack.py.
C'est pour cela que mate-terminal est utilisé pour démarrer le script python.
Résultat affiché dans mate-terminal
Rendre le script shell exécutable
Ce n'est pas tout d'avoir, un script savtrack.sh pour mettre la machine en branle, il faudrait également que ce dernier soit exécutable. Voici la commande qui rendra cela possible.

chmod +x savtrack.sh

n'hésitez pas a tester directement votre script shell depuis le terminal. Il suffit de taper la commande

./savtrack.sh

(le préfix ./ sert à informer le terminal, sans ambiguité possible, que nous voulons bien exécuter le script).

Installer xterm
Comme précisé, l'icone sur le bureau lancera savtrack.sh dans le terminal xterm (par défaut).
Pour une raison que j'ignore, xterm n'était pas installé sur mon système?!?! Pour y remédier, saisissez la commande suivante dans un terminal.

sudo apt-get install xterm

Création du lien (lanceur) sur le bureau

Faite un clique droit sur votre bureau... puis sélectionnez l'option "Créer un lanceur..." dans le menu contextuel.

Cela affiche une boite de dialogue suivante
Création d'un lanceur
La première chose à faire est de sélectionner le type de lanceur... "application dans un terminal"... c'est cette option qui permet de lancer un script shell. Le terminal utilisé sera xterm (par défaut).

Reste à compléter le restant des information... attention a bien sélectionner le script shell dans la commande (savtrack.sh dans notre cas).

Pressez OK et le raccourci est créé sur le bureau :-)
Voila!

Note pour les puristes:
Il est bien entendu possible de modifier le terminal à utiliser par le lanceur.
Il serait donc possible de remplacer directement xterm par mate-terminal.
Par contre, cela nous impose de se souvenir de la modification si nous voulons installer notre script sur un autre ordinateur....
A contrario, les choses sont "écrites" noir sur blanc dans notre shell script.

dimanche 7 décembre 2014

F3: tester des périphériques de stockage (SD ou USB) sous Linux

Lumière sur le projet F3 (oss.digirati.com.br/f3), ce dernier permet de tester des cartes SD/USB stick.
Le programme est relativement simple et se compose de deux utilitaires f3write (pour écrire des fichiers de tests) et f3read pour effectuer les tests de lecture.

Petite présentation par l'auteur

F3 - une alternative à h2testw
Ce projet à commencé lorsque Michel Machado de F3 à acheté une carte de 32GB microSDHC pour son Android (c'était en 2010). Il a remarqué que la carte présentait toujours des défaillances lorsqu'elle était remplie. En faisant quelques recherches sur Google, il est arrivé sur les blogs Fight Flash Fraud et SOSFakeFlash qui recommande tout deux l'usage du logiciel H2testw (voir ici ou ici) pour tester les mémoires flashs.
Michel à téléchargé H2testw et à été immédiatement confronté a deux problèmes:
  1. H2testw est logiciel Windows uniquement
  2. H2testw n'est pas un logiciel open-source.
Cependant, Harald Bögeholz (l'auteur de H2testw), est assez sympa pour inclure un fichier texte décrivant comment fonctionne son programme (ainsi que le générateur de nombre aléatoire).

Ainsi naquis F3 et sa page oss.digirati.com.br/f3 qui est l'implémentation GPLv3 de H2testw réalisé par Michel Machado. Version qui fonctionne sous Linux, Macs, Windows/Cygwin et FreeBSD.
Cette implémentation s'appelle F3, qui est le raccourci de "Fight Flash Fraud" ou "Fight Fake Flash".

Comment installer F3 sous Linux
Si vous diposez d'Ubuntu ou un de ses dérivé (ex: Linux Mint), un simple apt-get fera l'affaire :-)

sudo apt-get install f3

Utiliser f3
F3 se compose de deux programme f3write et f3read.
F3write est destiné à remplir votre périphérique avec des fichiers de données (attention, il rempli l'espace disponible). f3write remplit le système de fichier avec des fichiers de 1GB nommés N.h2w, où N est un numér.
F3read relit les fichiers et fait une validation du contenu, c'est ainsi que l'on détecte les corruptions.

Voici un exemple pratique (par l'auteur)
$ ./f3write /media/5EBD-5C80/
Free space: 28.83 GB
Creating file 1.h2w ... OK!
Creating file 2.h2w ... OK!
Creating file 3.h2w ... OK!
Creating file 4.h2w ... OK!
Creating file 5.h2w ... OK!
Creating file 6.h2w ... OK!
Creating file 7.h2w ... OK!
Creating file 8.h2w ... OK!
Creating file 9.h2w ... OK!
Creating file 10.h2w ... OK!
Creating file 11.h2w ... OK!
Creating file 12.h2w ... OK!
Creating file 13.h2w ... OK!
Creating file 14.h2w ... OK!
Creating file 15.h2w ... OK!
Creating file 16.h2w ... OK!
Creating file 17.h2w ... OK!
Creating file 18.h2w ... OK!
Creating file 19.h2w ... OK!
Creating file 20.h2w ... OK!
Creating file 21.h2w ... OK!
Creating file 22.h2w ... OK!
Creating file 23.h2w ... OK!
Creating file 24.h2w ... OK!
Creating file 25.h2w ... OK!
Creating file 26.h2w ... OK!
Creating file 27.h2w ... OK!
Creating file 28.h2w ... OK!
Creating file 29.h2w ... OK!
Free space: 0.00 Byte
Average Writing speed: 2.60 MB/s

$ ./f3read /media/5EBD-5C80/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ...       0/  2097152/      0/      0
Validating file 2.h2w ...       0/  2097152/      0/      0
Validating file 3.h2w ...       0/  2097152/      0/      0
Validating file 4.h2w ...       0/  2097152/      0/      0
Validating file 5.h2w ...       0/  2097152/      0/      0
Validating file 6.h2w ...       0/  2097152/      0/      0
Validating file 7.h2w ...       0/  2097152/      0/      0
Validating file 8.h2w ...       0/  2097152/      0/      0
Validating file 9.h2w ...       0/  2097152/      0/      0
Validating file 10.h2w ...       0/  2097152/      0/      0
Validating file 11.h2w ...       0/  2097152/      0/      0
Validating file 12.h2w ...       0/  2097152/      0/      0
Validating file 13.h2w ...       0/  2097152/      0/      0
Validating file 14.h2w ...       0/  2097152/      0/      0
Validating file 15.h2w ...       0/  2097152/      0/      0
Validating file 16.h2w ...       0/  2097152/      0/      0
Validating file 17.h2w ...       0/  2097152/      0/      0
Validating file 18.h2w ...       0/  2097152/      0/      0
Validating file 19.h2w ...       0/  2097152/      0/      0
Validating file 20.h2w ...       0/  2097152/      0/      0
Validating file 21.h2w ...       0/  2097152/      0/      0
Validating file 22.h2w ...       0/  2097152/      0/      0
Validating file 23.h2w ...       0/  2097152/      0/      0
Validating file 24.h2w ... 1916384/   180768/      0/      0
Validating file 25.h2w ...  186816/  1910336/      0/      0
Validating file 26.h2w ...       0/  2097152/      0/      0
Validating file 27.h2w ...       0/  2097152/      0/      0
Validating file 28.h2w ...       0/  2097152/      0/      0
Validating file 29.h2w ...   28224/  1705280/      0/      0

  Data OK: 1.02 GB (2131424 sectors)
Data LOST: 27.81 GB (58322336 sectors)
        Corrupted: 27.81 GB (58322336 sectors)
 Slightly changed: 0.00 Byte (0 sectors)
      Overwritten: 0.00 Byte (0 sectors)
Average Reading speed: 9.54 MB/s

L'exemple ci-dessus indique que la carte Flash est sacrément corrompue. Plus de 27Go de données sont corrompu.

Localiser le /media
Comme vous pouvez le constater dans l'exemple, la carte SD est montée dans le répertoire /media. Le périphérique est directement accessible via /media/5EBD-5C80/
La valeur 5EBD-5C80 change d'un périphérique Flash à l'autre....

Chez MCHobby, nous sommes plutôt accros à Linux Mint. Dans ce cas, la carte SD n'est pas montée dans /media/5EBD-5C80 mais dans /media/votre_login_utilisateur/5EBD-5C80

lundi 28 juillet 2014

ClamAV - Un anti-virus pour mon Linux

Hé oui, ce n'est pas parce que Linux est plus sécurisé qu'il n'est pas totalement immunisé.

En cas de doute, sachez qu'il existe aussi des anti-virus pour Linux

vendredi 2 mai 2014

Sublime Text: Un éditeur de code sympa pour code Python

Vous codez assez régulièrement en Python (ou autre langage) et vous cherchez un éditeur de texte open-source?

Vous pouvez vous pencher sur Geany déjà abordé dans un précédent article.
Si ce dernier ne remplit pas vos attentes, vous pouvez aussi vous pencher sur Sublime Text qui est vraiment pas mal.

Sublime Text - Simple et efficace... avec de nombreuses fonctionnalités
Disponible pour Mac, Windows et Linux.
Pour plus d'information, voir le site officiel de Sublime Text

Merci à Xavier D. pour cette information intéressante.

jeudi 12 décembre 2013

Connexion DHCP... c'est quoi tout ces messages DHCPINFORM, DHCPACK, etc sur mon routeur

Si vous avez un routeur Belgacom et des problème de stabilité Wifi, vous avez certainement été jeter un oeil sur la page de configuration pour découvrir des messages comme...

Thu, 12 Dec 2013 12:00:34 GMT DHCP SERVER: DHCPINFORM from 192.168.1.9
Thu, 12 Dec 2013 12:00:31 GMT DHCP SERVER: DHCPACK on 192.168.1.9 to 94:39:e5:12:6f:0b via br0
Thu, 12 Dec 2013 12:00:31 GMT DHCP SERVER: DHCPREQUEST for 192.168.1.9 from 94:39:e5:12:6f:0b via br0
Thu, 12 Dec 2013 12:00:09 GMT DHCP SERVER: DHCPACK on 192.168.1.12 to 04:54:53:29:95:e5 via br0
Thu, 12 Dec 2013 12:00:09 GMT DHCP SERVER: DHCPREQUEST for 192.168.1.12 from 04:54:53:29:95:e5 via br0
Thu, 12 Dec 2013 11:59:23 GMT DHCP SERVER: DHCPINFORM from 192.168.1.10
 
Il faut avouer qu'ils ne sont pas éloquant.
Pour vous aider, vous pouvez consulter l'article "Le Dynamic Host Configuration Protocol (DHCP) - RFC 2131" rédigé en Français et excellent article de vulgarisation.

Source: l'article mentionné
 
De quoi satisfaire votre curiosité.

lundi 22 juillet 2013

Conversion YouTube vers fichier audio

J'ai récemment eu besoin de récupére le contenu audio (formation en ligne) d'une vidéo YouTubes.

Déjà pas facile d'avance, je dispose de surcroit d'un système Ubuntu.

Voici les différents éléments à mettre en Oeuvre pour y arriver:
  • Video DownloadHelper (plug in pour FireFox) qui d'appuie sur FFMpeg
  • FFMpeg pour la conversion
  • WinFF interface graphique de FFMpeg... toujours utile pour détecter ce qui n'a pas fonctionné
  • libmp3lame comme encodeur MP3
Voici les liens vers les différents éléments:
  • Installer le paquet libmp3lame0
    sudo apt-get install libmp3lame0
Utilisez le gestionnaire de logiciel pour installer FFWin... cela en vaut vraiment la peine.
 

    lundi 29 avril 2013

    Déçu par UBUNTU... optez pour Linux Mint 14 (Nadia) !

    Vous êtes en total désaccord avec la politique Ubuntu? le passage en force d'Unity vous dérange? l'interface d'Unity ne vous convient pas ?
    Essayez donc Linux Mint 14 (Nadia)... et vous ne reviendrez plus a Ubuntu.


    Après de longues années de travail sur Windows, celui-ci m'ayant tellement déçu au fil des versions Vista, Seven, WinHargGrrrBrolbrol 8... je me suis tourné vers Linux.
    Après quelques recherches j'ai opté pour Ubuntu... très prometteur à l'époque et résolument orienté vers l'efficacité.

    Aujourd'hui, c'est Ubuntu qui me désespère... au point de le quitter!
    Les avancées vers gnome 3 ne laisse pas tout le monde indifférent... mais imposer Unity sur les desktops, c'est faire la même erreur que Microsoft avec Windows 8.
    Un environnement Desktop de production... et une tablette ce n'est pas la même chose. Essayer de faire converger les environnement est un non-sens.
    Loin d'avoir appris des erreurs de Microsoft, voila que mon OS favori m'impose des modifications dans mon environnement de travail, mes habitudes et le tout en marge de mon utilisation quotidienne. A moi de m'adapter!
    Heureusement... sur Ubuntu 12 il était possible d'activer gnome-classic... avec quelques déboire (le Alt-Tab pour changer d'appli par exemple)

    Lorsque j'ai appris que Gnome-Classic serait abandonné dans les futures release d'Ubuntu, cela a eu l'effet d'un coup de canon. Et j'ai commencé à envisager une alternative...

    Certes une annonce toute récente prétend la sortie d'une double version 14... Ubuntu-Unity et Ubuntu-Gnome-Classic. Mais pour l'heure cette version n'est pas encore disponible... même en beta.

    Mon laptop se faisant vieux et poussif, j'ai fini par faire l'achat d'un matériel plus récent et nettement plus puissant (8 cores).
    J'ai bien entendu viré EFI et Windows 8... mais pas installé Ubunu pour autant!
    J'ai trouvé ma solution dans Linux Mint 14 Nadia élaboré sur une fondation Gnome 2 et Ubuntu.
    J'y ai trouvé toutes mes marques pour continuer mes activités MCHobby sans me demander où trouver telle ou telle fonctionnalité.
    Tous les logiciels nécessaires sont installés... et l'environnement est fluide, cohérent, épuré... bref EFFICACE!
    Après un week-end de grande satisfaction, je peux déjà annoncé que je ne reviendrais pas dans le giron Ubuntu... j'ai trouvé mieux ailleurs.

    jeudi 20 septembre 2012

    Environnement de developpement graphique + basic sous Ubuntu

    C'est en prenant des renseignement sur Laurux (logiciel comptable OpenSource) que je découvre Gambas.

    Gambas est un environnement de développement graphique en Basic supporté par les librairies Graphique Qt réputée pour sa grande qualité.



    Ressource: