Je lis actuellement l'excellent article "Flash d'Adobe à l'agonie" sur LinuxFR.
En plus de revenir sur l'historique de flash (et sa déchéance qui n'en fini pas), l'article fait également une part belle à la relève (HTML5, le format SVG, les outils)
En article connexe, j'ai trouvé la présentation "YouTube Player API Reference" très intéressante. Car oui, Google est passé au support HTML5 dès 2010-2011.
Bonne lecture :-)
mercredi 2 novembre 2016
mardi 18 octobre 2016
Gandi: config SPK et DKIM / dig - l'outil linux pour intérroger les serveurs DNS.
Il n'y a pas longtemps, j'ai modifié les enregistrements DNS de notre société pour autoriser la société mailjet à devenir notre point relay (pour l'envoi d'émail).
Chez Gandi, cela se fait en mode expert en ajoutant la ligne suivante:
@ 10800 IN TXT "v=spf1 include:spf.mailjet.com ?all"
Et vous pouvez également ajouter une clé DKIM... (format de l'enregistrement conseillé par gandi, clé fournit par MailJet)
mailjet._domainkey 10800 IN TXT "k=rsa; p=MI........QAB"
Après la propagation DNS (environ 3H), vient le moment où il serait intéressant de savoir si l'enregistrement TXT est correctement publié sur le DNS.
Note: l'interface d'administration de MailJet pense obstinément que ce n'est pas en ordre
Prenez une machine Linux et saisissez la commande:
dig TXT mondomaine.be +short
Et l'on obtient la réponse suivante:
Ou nous pouvons contacter que l'enregistrement TXT pour spf1 est bien présent.
Chouette alors ;-)
Chez Gandi, cela se fait en mode expert en ajoutant la ligne suivante:
@ 10800 IN TXT "v=spf1 include:spf.mailjet.com ?all"
Et vous pouvez également ajouter une clé DKIM... (format de l'enregistrement conseillé par gandi, clé fournit par MailJet)
mailjet._domainkey 10800 IN TXT "k=rsa; p=MI........QAB"
Après la propagation DNS (environ 3H), vient le moment où il serait intéressant de savoir si l'enregistrement TXT est correctement publié sur le DNS.
Note: l'interface d'administration de MailJet pense obstinément que ce n'est pas en ordre
Prenez une machine Linux et saisissez la commande:
dig TXT mondomaine.be +short
Et l'on obtient la réponse suivante:
; <<>> DiG 9.9.5-3ubuntu0.9-Ubuntu <<>> TXT mondomaine.be ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28806 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;mondomaine.be. IN TXT ;; ANSWER SECTION: mondomaine.be. 10800 IN TXT "v=spf1 include:spf.mailjet.com ?all" ;; Query time: 48 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Tue Oct 18 13:48:03 CEST 2016 ;; MSG SIZE rcvd: 89
Ou nous pouvons contacter que l'enregistrement TXT pour spf1 est bien présent.
Chouette alors ;-)
vendredi 16 septembre 2016
Python: Découverte des possibilités vidéo de GStreamer et FFmpeg grâce à FWomaj
En consultant les news de Linuxfr.org, je tombe sur l'article "Fwomaj 0.3 : Vidéos à la coupe au rayon frais".
Bien que je ne m'intéresse pas spécialement à la vidéo, le fait de Fwomaj utilise Python 3 m'incite à faire une petite lecture... fructueuse puisque je découvre de nouveaux outils pour mon environnement favoris.
Si l'article décrit le travail de l'auteur dans son projet, il énumère surtout certaines dépendances et donne des liens vraiment utiles.
Couteaux Suisse de la vidéo, je découvre donc les possibilités de GStreamer et FFmpeg qu'il est possible commander depuis Python et d'inclure dans une application GTK.
FFmpeg - codage/décodage/transcodage
FFmpeg est un Framework Multimedia très populaire capable de décoder, encoder, transcoder mixer (mux), démixer (demux), streamer, filtrer et jouer (play) presque tout ce que l'homme et la machine ont créés. Il support la plupart des anciens formats obscur jusqu'au tout dernier standard hi-tech.
Très portable, FFmpeg compile, s'exécute et passe avec succès l'infrastructure de test FATE sous Linux, Mac OS X, Microsoft Windows, les BSDs, Solaris, etc. Sous une large variété d'environnement de compilation, architecture logiciel et configuration.
Pour reprendre la note de l'article d'origine:
Comme rien ne vaut un beau dessin pour comprendre rapidement
Ressources:
Bien que je ne m'intéresse pas spécialement à la vidéo, le fait de Fwomaj utilise Python 3 m'incite à faire une petite lecture... fructueuse puisque je découvre de nouveaux outils pour mon environnement favoris.
Si l'article décrit le travail de l'auteur dans son projet, il énumère surtout certaines dépendances et donne des liens vraiment utiles.
Couteaux Suisse de la vidéo, je découvre donc les possibilités de GStreamer et FFmpeg qu'il est possible commander depuis Python et d'inclure dans une application GTK.
FFmpeg - codage/décodage/transcodage
FFmpeg est un Framework Multimedia très populaire capable de décoder, encoder, transcoder mixer (mux), démixer (demux), streamer, filtrer et jouer (play) presque tout ce que l'homme et la machine ont créés. Il support la plupart des anciens formats obscur jusqu'au tout dernier standard hi-tech.
Très portable, FFmpeg compile, s'exécute et passe avec succès l'infrastructure de test FATE sous Linux, Mac OS X, Microsoft Windows, les BSDs, Solaris, etc. Sous une large variété d'environnement de compilation, architecture logiciel et configuration.
- Documentation - https://ffmpeg.org/documentation.html
Source: Fwomaj 0.3 : Vidéos à la coupe au rayon frais |
Pour reprendre la note de l'article d'origine:
On peut faire plein de choses avec GStreamer. C'est un langage de pipes vidéo assez fascinant, qu'on prototype à l'aide de l'utilitaire gst-launch, pour construire des "tuyaux" d'images qui bougent:
gst-launch-1.0 videotestsrc pattern=1 ! video/x-raw,format=AYUV,framerate=\(fraction\)10/1,width=100,height=100 ! videobox border-alpha=0 top=-70 bottom=-70 right=-220 ! videomixer name=mix sink_0::alpha=0.7 sink_1::alpha=0.5 ! videoconvert ! xvimagesink videotestsrc ! video/x-raw,format=AYUV,framerate=\(fraction\)5/1,width=320,height=240 ! mix.
Comme rien ne vaut un beau dessin pour comprendre rapidement
Source: GStreamer Cheat Sheet |
Source: GStreamer Cheat Sheet |
Ressources:
- GStreamer Cheat Sheet
Une excellente ressource à propos de GStreamer incluant de nombreux exemples (capture webcam, network stream, generator, etc)
vendredi 12 août 2016
Python Logging & Logger - CE QU'IL NE FAUT PAS RATER
Petit détour sur les méthodes de logging Python et une erreur assez répandue (je pense).
Dans le blog victorlin, j'ai trouvé l'exemple suivant à propos du logging, exemple qui recèle une erreur dans la façon d'utiliser le logger :
Il y a comme un bug!
Si ce code est parfaitement fonctionnel, il y a quelque-chose qui me choque.
Découpler logging et logger
Le plus approprié, il me semble, est de faire du logging agnostique, sans se préoccuper de la question "si cela intéresse un logger ou non"! En gros, découpler le logger et les opérations de logging dans le code.
Cela se fait très simplement en écrivant les traces directement sur "logging".
Ensuite, au besoin, il suffit de créer un logger pour garder une trace des messages qui passent comme ceci:
Et toutes les opérations loggin.info, logging.debug, etc tomberons dans logger :-)
Cela va singulièrement simplifier la codage des opérations de logging dans vis classes :-)
Dans le blog victorlin, j'ai trouvé l'exemple suivant à propos du logging, exemple qui recèle une erreur dans la façon d'utiliser le logger :
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) logger.info('Start reading database') # read database here records = {'john': 55, 'tom': 66} logger.debug('Records: %s', records) logger.info('Updating records ...') # update records here logger.info('Finish updating records')
Il y a comme un bug!
Si ce code est parfaitement fonctionnel, il y a quelque-chose qui me choque.
- Il faut créer un "logger" pour pouvoir logger
- Ou passer le logger d'objet en objet si on ne veut pas en créer à tour de bras.
Découpler logging et logger
Le plus approprié, il me semble, est de faire du logging agnostique, sans se préoccuper de la question "si cela intéresse un logger ou non"! En gros, découpler le logger et les opérations de logging dans le code.
Cela se fait très simplement en écrivant les traces directement sur "logging".
import logging logging.debug(' %r _fire_select(): %r ' % (self, selection) ) logging.debug('%r _fire_cancel()' % self )Utiliser un logger pour garder une trace
Ensuite, au besoin, il suffit de créer un logger pour garder une trace des messages qui passent comme ceci:
logger = logging.getLogger() handler = logging.StreamHandler() # Logging vers console formatter = logging.Formatter( '%(asctime)s [%(levelname)s] -> %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) # ou DEBUG
Et toutes les opérations loggin.info, logging.debug, etc tomberons dans logger :-)
Cela va singulièrement simplifier la codage des opérations de logging dans vis classes :-)
PythonMegaWidget (Pmw) - Ressources utiles
Voici une liste de ressources collectées durant mes recherches et apprentissage sur TkInter et PythonMegaWidget.
Cette liste est destinée à être régulièrement agrémentée.
Cette liste est destinée à être régulièrement agrémentée.
- Comment construire des Pmw MegaWidget (pmw.sourceforge.net, anglais)
Détaille et commente la création d'un MegaWidget. Incontournable dès que l'on veut spécialiser un composant. - Origine de la MultiListBox, une sorte de TableView (mypythonadventure.com, anglais)
- SimpleTable (stackoverflow.com, anglais)
Créer une table avec des libellés et un Grid geometry manager. Une approche simple qui peut se révéler utile. - Calculating the pixel size of a string with Python (stackoverflow.com, anglais)
Ressource très intéressante pour estimer la hauteur d'un texte dans un Widget - Listbox.Autowidth (http://stackoverflow.com, anglais)
Permet d'évaluer la largeur en Pixel des entrées d'une Listbox et d'ajuster la largeur du composant en conséquence. Font et taille de texte. Excellente ressource! - x
- DataQ/DataTools.py (github.com/pythonadventurer, anglais)
Un ensemble d'outils pour ouvrir et manipuler les données d'un fichier csv - x
- Creating a simple Dialog (effbot.org, anglais)
Quelques lignes de code... mais également l'utilité de destroy() et root.wait_window().
Simple et très pertinent. - Tk Named Color (wiki.tcl.tk)
Toutes les couleurs dispo dans Tk (et TkInter). Un Must!. - xxx
vendredi 5 août 2016
PyhtonMegaWidget (Pmw) StrictComboBox
Dans l'article "PythonMegaWidget (Pmw) ComboBox restreind à une liste de valeur" j'expliquais comment avoir configuré une combobox pour n'accepter qu'une liste finie de valeur.
Ce hack est maintenant transformé en classe StrictComboBox .
In the previous article "PythonMegaWidget (Pmw) ComboBox restreind à une liste de valeur" I did explain how to restrict the selected value to a given list of values.
That hack has been converted to the StrictComboBox class.
Qui s'utilise comme ceci:
And you can use it like that:
Ce hack est maintenant transformé en classe StrictComboBox .
In the previous article "PythonMegaWidget (Pmw) ComboBox restreind à une liste de valeur" I did explain how to restrict the selected value to a given list of values.
That hack has been converted to the StrictComboBox class.
class StrictComboBox( Pmw.ComboBox ): """ Pmw.ComboBox that strictly restrict the selection to the list of items stored in the "items" keyword Thank to RL_ScrolledText class for their wonderfull example http://www.reportlab.com/examples/frml/old/rlextra/src/rlextra/graphics/guiedit/guidialogs.py """ _items = None # List of combobox items def __init__( self, *args, **kw ): # Take a local copy of some property for a in ['items']: print( a ) if a in list(kw.keys()): print( ' --removed') v=kw[a] del kw[a] else: v=None setattr(self,a,v) # add the items to combobox + validator kw['scrolledlist_items'] = self.items kw['entryfield_extravalidators'] = { 'strictselect' : (self.strictselect_validate, self.strictselect_stringtovalue) } kw['entryfield_validate'] = { 'validator' : 'strictselect' } Pmw.ComboBox.__init__( *(self,)+args, **kw ) w = self._entryfield = self.component('entryfield') self.initialiseoptions(StrictComboBox) def destroy(self): Pmw.ComboBox.destroy( self ) def strictselect_validate(self, avalue): """ called by ComboBox entry field to validate the keyIn value """ print( 'validate: %s' % avalue ) if avalue in self.items: return Pmw.OK elif any( [avalue in v for v in self.items] ): return Pmw.PARTIAL else: return Pmw.ERROR def strictselect_stringtovalue(self, avalue): """ Not called since we did not defined min and max values """ return None
Qui s'utilise comme ceci:
And you can use it like that:
# StrictComboBox f = Frame( fbody ) l = Label( f, text="Prefered Parent", anchor=W, width=15 ).pack( side=LEFT, expand=N ) combobox4 = StrictComboBox( f, items=['Dady','Mom','Sister','Grandpa'], labelpos='wn', listbox_width=24, dropdown=1, # selectioncommand=choseEntry, entry_state = 'disabled', entry_bg='white', entry_fg='black' ) combobox4.pack( side=LEFT, expand=N ) fields.append( (combobox4, None) ) # the Field and the string variable f.pack( side=TOP, expand=N, fill=X )
PythonMegaWidget (Pmw) ComboBox restreind à une liste de valeur
Bonjour a tous, j'essaye de restreindre la sélection de valeur d'un Pmw.ComboBox aux seules valeurs disponibles dans la liste. Voici comment j'ai utilisé extravalidators pour y arriver.
Code en beta mais fonctionnant correctement
Hello there, I'm trying to restrict the selected value of a Pmw.Combox to the only possible values in the list. Here how I did use the extravalidators to reach that goal.
Roughly beta code but worked fine
Le truc: le Pmw.ComboBox utilise un Pmw.EntryField, il est donc possible d'utiliser les fonctionnalités de Pmw.EntryField
The Tip: the Pmw.ComboBox use a Pmw.EntryField, it is then possible to use the features of Pmw.EntryField
Code en beta mais fonctionnant correctement
Hello there, I'm trying to restrict the selected value of a Pmw.Combox to the only possible values in the list. Here how I did use the extravalidators to reach that goal.
Roughly beta code but worked fine
from tkinter import * import Pmw root = Tk() root.option_readfile('optionDB') ... ... combovalues = ['v1','v2','v3'] f = Frame( root ) l = Label( f, text="Combo", anchor=W, width=15 ).pack( side=LEFT, expand=N ) def strictselect_validate(avalue): print( 'validate: %s' % avalue ) if avalue in combovalues: return Pmw.OK elif any( [avalue in v for v in combovalues] ): return Pmw.PARTIAL else: return Pmw.ERROR def strictselect_stringtovalue(avalue): # Not used in this case print( 'stringtovalue: %s' % avalue ) return None combobox2 = Pmw.ComboBox( f, labelpos='wn', listbox_width=24, dropdown=1, entry_bg='white', entry_fg='black', scrolledlist_items=combovalues, entryfield_extravalidators = { 'strictselect' : (strictselect_validate, strictselect_stringtovalue) }, entryfield_validate = { 'validator' : 'strictselect' } ) combobox2.pack( side=LEFT, expand=N ) fields.append( (combobox2, None) ) # the Field and the string variable f.pack( side=TOP, expand=N, fill=X )
Le truc: le Pmw.ComboBox utilise un Pmw.EntryField, il est donc possible d'utiliser les fonctionnalités de Pmw.EntryField
The Tip: the Pmw.ComboBox use a Pmw.EntryField, it is then possible to use the features of Pmw.EntryField
jeudi 4 août 2016
Python: faire un breakpoint en mode interactif pour faire du débogage
Dans les IDE évolués nous disposons généralement d'une fonctionnalité "Breakpoint" pour arrêter le programme et pouvoir inspecter le contenu des variables locales.
Il est possible de réaliser quelque-chose de similaire en mode console (python interactif) qui fonctionne aussi bien sous Windows que sous Linux. Très utile si l'on se trouve sur un environnement sans facilité.
Je bosse sur un projet TkInter et j'aurais trouvé intéressant de pouvoir inspecter le contenu d'un événement en mode interactif... bref, sauter dans un débogueur mais "sans débogueur" à disposition.
J'ai trouvé ce petit bout de code qui fonctionne à merveille et qui lance un python interactif là où j'en ai besoin.
La réponse se trouve dans code.interact()
N'oubliez pas de démarrez votre programme avec python.exe et non pythonw.exe pour disposer d'une console ;-)
Souce: http://stackoverflow.com/questions/13432717/enter-interactive-mode-in-python
Il est possible de réaliser quelque-chose de similaire en mode console (python interactif) qui fonctionne aussi bien sous Windows que sous Linux. Très utile si l'on se trouve sur un environnement sans facilité.
Je bosse sur un projet TkInter et j'aurais trouvé intéressant de pouvoir inspecter le contenu d'un événement en mode interactif... bref, sauter dans un débogueur mais "sans débogueur" à disposition.
J'ai trouvé ce petit bout de code qui fonctionne à merveille et qui lance un python interactif là où j'en ai besoin.
La réponse se trouve dans code.interact()
>>> import code >>> def foo(): ... a = 10 ... code.interact(local=locals()) ... return a ... >>> foo() Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> a 10
- Presser Ctrl+Z pour terminer la session interactive.
- Il n'est pas possible de modifier les variables locales (cela n'a pas d'implication sur le code appelant).
- Vous pouvez lister inspecter les variables locales en utilisant dir()
N'oubliez pas de démarrez votre programme avec python.exe et non pythonw.exe pour disposer d'une console ;-)
import code ... ... def focus_next_window(event): """ Move focus to next item, Bind it for""" print( type(event.widget) ) code.interact(local=locals()) event.widget.tk_focusNext().focus() return("break")
Souce: http://stackoverflow.com/questions/13432717/enter-interactive-mode-in-python
mardi 26 juillet 2016
Utiliser Curses avec Python sous Windows
Curse pour créer une interface console
J'ai déjà touché un peu à Curse avec python sous Linux.
Je trouvais cette bibliothèque d'interface rudimentaire mais suffisante pour réaliser des applications en mode console (ce que nous avons déjà avec de vielle applications clipper qu'il faudra un jour ré-écrire).
Le Hic c'est qu'il n'existait pas de portage Python's curses sous Windows... jusqu'à assez récemment.
Donc, curses sous Python était uniquement cantonné au machine Linux... mais maintenant accessible sous Windows
Des binaires non-officiel pour Python sous Windows
En grattant une nouvelle fois sur le Net, j'ai trouvé
Où il propose justement des packages curses pour Windows.
Curses, an extension based on the PDCurses library.
Unicode characters are not supported.
whl est un fichier wheel (pythonwheels.com) est le nouveau standard de distribution des bibliothèque python qui remplacera à terme les fichiers .egg
Vous pouvez installer un fichier whl avec votre utilitaire pip.
Dans mon cas, j'ai utilisé la signe de commande suivante sous Windows:
Et j'ai pu utiliser du code curses suivant sous Windows
Une chouette avancée pour le portage des applications d'une plateforme à l'autre... à voir si cela tient vraiment ses promesses.
Basé sur PDCurses
Le bibliothèque curse installée (celle mentionnée ci-avant) est basé sur PDCurses.
http://www.projectpluto.com/win32a.htm
Support des accentués sous Windows
Je me suis littéralement cassé les dents dès l'impression du premier texte contenant des accentués.
Voyez ce billet sur IndexError (http://indexerror.net/4170/python-3-4-curses-sous-windows-7-erreur-dencodage).
L'utilisation de différents code pages dans le système d'exploitation (voir le billet) ne simplifie rien... et même en passant ma console en cp1252 (comme supporté par curse puisque la doc mentionne qu'il utilise du local.preferredencoding() - soit cp1252 - pour l'encodage des chaine unicode)... curse détruit toujours l'affichage de mes accentués.
Au détour de différentes lectures (a confirmer), j'ai appris que cette bibliothèque curses utilise PDCurses s'appuie elle-même sur la SDL. La SDL qui, elle, n'intègre le support Unicode que depuis peu. C'est peut être normal que cela cafouille un peu.... et c'est franchement regrettable.
J'ai déjà touché un peu à Curse avec python sous Linux.
Je trouvais cette bibliothèque d'interface rudimentaire mais suffisante pour réaliser des applications en mode console (ce que nous avons déjà avec de vielle applications clipper qu'il faudra un jour ré-écrire).
Le Hic c'est qu'il n'existait pas de portage Python's curses sous Windows... jusqu'à assez récemment.
Donc, curses sous Python était uniquement cantonné au machine Linux... mais maintenant accessible sous Windows
Des binaires non-officiel pour Python sous Windows
En grattant une nouvelle fois sur le Net, j'ai trouvé
Où il propose justement des packages curses pour Windows.
Curses, an extension based on the PDCurses library.
Unicode characters are not supported.
- curses-2.2-cp27-none-win32.whl
- curses-2.2-cp27-none-win_amd64.whl
- curses-2.2-cp34-none-win32.whl
- curses-2.2-cp34-none-win_amd64.whl
- curses-2.2-cp35-none-win32.whl
- curses-2.2-cp35-none-win_amd64.whl
- curses-2.2-source.zip
whl est un fichier wheel (pythonwheels.com) est le nouveau standard de distribution des bibliothèque python qui remplacera à terme les fichiers .egg
Vous pouvez installer un fichier whl avec votre utilitaire pip.
Dans mon cas, j'ai utilisé la signe de commande suivante sous Windows:
c:\Users\Stock\Downloads>pip3 install curses-2.2-cp34-none-win32.whl Processing c:\users\stock\downloads\curses-2.2-cp34-none-win32.whl Installing collected packages: curses Successfully installed curses-2.2
Et j'ai pu utiliser du code curses suivant sous Windows
from curses import wrapper def main(stdscr): # Clear screen stdscr.clear() for i in range(0, 10): v = i-10 stdscr.addstr(i, 0, '10 divided by {} is {}'.format(v, 10/v)) stdscr.refresh() stdscr.getkey() wrapper(main)
Une chouette avancée pour le portage des applications d'une plateforme à l'autre... à voir si cela tient vraiment ses promesses.
Basé sur PDCurses
Le bibliothèque curse installée (celle mentionnée ci-avant) est basé sur PDCurses.
http://www.projectpluto.com/win32a.htm
Support des accentués sous Windows
Je me suis littéralement cassé les dents dès l'impression du premier texte contenant des accentués.
Voyez ce billet sur IndexError (http://indexerror.net/4170/python-3-4-curses-sous-windows-7-erreur-dencodage).
L'utilisation de différents code pages dans le système d'exploitation (voir le billet) ne simplifie rien... et même en passant ma console en cp1252 (comme supporté par curse puisque la doc mentionne qu'il utilise du local.preferredencoding() - soit cp1252 - pour l'encodage des chaine unicode)... curse détruit toujours l'affichage de mes accentués.
Au détour de différentes lectures (a confirmer), j'ai appris que cette bibliothèque curses utilise PDCurses s'appuie elle-même sur la SDL. La SDL qui, elle, n'intègre le support Unicode que depuis peu. C'est peut être normal que cela cafouille un peu.... et c'est franchement regrettable.
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
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
mercredi 8 juin 2016
Monter un lecteur reseau sous Linux - Samba share
Si vous cherchez à monter une "lecteur réseau" sous Linux (Linux Mint dans mon cas, donc Ubuntu), il va falloir redescendre dans les montage Samba CIFS.
Mon dieux que cela faisait longtemps.... terriblement longtemps
Voici une référence d'article qui vous aidera indéniablement:
Pour commencer, il faut créer un point de montage, dans /mnt puisqu'il s'agit d'un lecteur présent en permanence (pas comme une carte sd qui, elle, doit être montée dans /media .
En ligne de commande, cela ressemble à ceci
Une fois la commande saisie, il vous sera demandé le mot de passe du lecteur réseau (celui correspondant à user=) pour faire le montage
Les paramètres:
FSTAB - montage automatiquement
il est aussi possible d'ajouter le montage dans le fichier nano /etc/fstab
Et pour une raison qu'il m'échappe, la le paramètre password fonctionne comme un charme!!
Le paramètre _netdev informe fstab qu'il faut attendre que le périphérique réseau soit disponible avant de procéder au montage.
Pour recharger le fichier fstab, il suffit de faire un mount -a
Mon dieux que cela faisait longtemps.... terriblement longtemps
Voici une référence d'article qui vous aidera indéniablement:
- Mounting samba shares from a unix client sur samba.org
Pour commencer, il faut créer un point de montage, dans /mnt puisqu'il s'agit d'un lecteur présent en permanence (pas comme une carte sd qui, elle, doit être montée dans /media .
sudo mkdir /mnt/netstock
En ligne de commande, cela ressemble à ceci
sudo mount -t cifs -o user=share_username,uid=local_user_owning_files //192.168.1.2xx/netstock /mnt/netstock
Une fois la commande saisie, il vous sera demandé le mot de passe du lecteur réseau (celui correspondant à user=) pour faire le montage
Les paramètres:
- share_username : c'est le nom d'utilisateur windows a utiliser pour connecter le lecteur réseau
- local_user_owning_files : si ce paramètre est omis, les fichiers du share seront vu comme appartenant à root. Perso, je préfère qu'il soient détenu par l'utilisateur courant (utilisez votre login Linux pour ce paramètre)
FSTAB - montage automatiquement
il est aussi possible d'ajouter le montage dans le fichier nano /etc/fstab
Et pour une raison qu'il m'échappe, la le paramètre password fonctionne comme un charme!!
# NetStock share //192.168.1.xxx/netstock /mnt/netstock cifs user=share_username,_netdev,uid=local_user_owning_files,password=XXXXX 0 0
Le paramètre _netdev informe fstab qu'il faut attendre que le périphérique réseau soit disponible avant de procéder au montage.
Pour recharger le fichier fstab, il suffit de faire un mount -a
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.
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"
Faites une recherche sur les paramètres relatif à l'impression.
Saisissez "print" dans la zone de recherche.
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
Options d'impression de Thunderbird |
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 |
Saisissez "print" dans la zone de recherche.
Editer les paramètres d'entête et de pied de page |
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
jeudi 31 mars 2016
CoreUtils: si la commande LS vous manque trop sous Windows...
Je passe souvent d'une machine Linux à Windows et vice-versa.
Le plus dure, c'est de se passer des commandes ls, cp, mv et nano sous Windows... Arf
Il existe bien CygWin mais ce dernier n'a pas la meilleure réputation (surtout pour son côté usine à gaz). Voici donc une alternative.
CoreUtils
Je vous propose de jeter un coup d'oeil sur le projet "CoreUtils : GNU Core Utils" qui permet de retrouver cet outils et de nombreux autres sur votre machine Windows.
CoreUtils propose un programme d'installation sous Windows :-)
Il vous suffira d'ajouter le répertoire "C:\Program Files (x86)\GnuWin32\bin" dans la variable PATH de votre système Windows.
CoreUtils dispose également d'une excellente documentation (176 pages) au format pdf et chm accessible via le menu Windows.
Nano
Nano est un éditeur en mode console. Barbare de prime abord, c'est un outil que l'on manipule régulièrement dès que l'on utilise une connexion SSH, soit un Raspberry Pi où il est incontournable.
Une fois habitué, il est très commode d'usage et surtout accessible en ligne de commande.
Nano est téléchargeable depuis http://www.nano-editor.org/
Pour installer nano:
Le plus dure, c'est de se passer des commandes ls, cp, mv et nano sous Windows... Arf
Il existe bien CygWin mais ce dernier n'a pas la meilleure réputation (surtout pour son côté usine à gaz). Voici donc une alternative.
CoreUtils
Je vous propose de jeter un coup d'oeil sur le projet "CoreUtils : GNU Core Utils" qui permet de retrouver cet outils et de nombreux autres sur votre machine Windows.
CoreUtils : GNU Core Utils |
Il vous suffira d'ajouter le répertoire "C:\Program Files (x86)\GnuWin32\bin" dans la variable PATH de votre système Windows.
CoreUtils dispose également d'une excellente documentation (176 pages) au format pdf et chm accessible via le menu Windows.
Nano
Nano est un éditeur en mode console. Barbare de prime abord, c'est un outil que l'on manipule régulièrement dès que l'on utilise une connexion SSH, soit un Raspberry Pi où il est incontournable.
Une fois habitué, il est très commode d'usage et surtout accessible en ligne de commande.
Nano est téléchargeable depuis http://www.nano-editor.org/
Editeur Nano - www.nano-editor.org |
- Placez nano.exe et les dll de nano dans c:\windows\sysWOW64\ (pour un système Win7)
samedi 20 février 2016
Python : Lecture de carte eID Belge avec Python
Bien que cet article concerne la lecture de eID Belge sur Raspberry-Pi, la bibliothèque et le code doivent pouvoir être utilisé avec d'autres systèmes.
Bonne lecture
Dominique
En Belgique, les carte d'identités sont équipées de puce Smart Card. Cela permet d'emporter:
Des spécifications ouvertes... c'est génial, du coup, nous avons une connaissance qui s'est lancé dans le projet fou de faire lire des cartes d'identités beid (carte d'identité Belge) par un Raspberry-Pi sous Jessie et en Python 3 s'il vous plaît! C'est trop de la balle.
Vous trouverez pythonbeid sur le GitHub de Lapin Blanc.
Un grand merci pour ce partage avec la communauté.
Dominique
Bonne lecture
Dominique
En Belgique, les carte d'identités sont équipées de puce Smart Card. Cela permet d'emporter:
- Un certificat CitizenBE utilisé pour la signature et authentification numérique du citoyen (protégé par une mot de passe).
- D'autres informations librement accessible comme le nom, prénom, ....
Des spécifications ouvertes... c'est génial, du coup, nous avons une connaissance qui s'est lancé dans le projet fou de faire lire des cartes d'identités beid (carte d'identité Belge) par un Raspberry-Pi sous Jessie et en Python 3 s'il vous plaît! C'est trop de la balle.
from beid.beid import scan_readers, read_infos, triggered_decorator from pprint import pprint from time import sleep # retrieve a list of available readers r = scan_readers()[0] # declare a function that will be executed automatically when a card is removed/insterted # funcion arguments should be : # - action : which will be "inserted" or "removed" when the function will be called # - card : which will be the card if inserted # - reader : which will hold the name of the reader to use @triggered_decorator def basic_read(action, card, reader=r.name): if action=="inserted": i = read_infos(card) pprint(i) sleep(5) infos = read_infos(r, read_photo=True) with open("photo.jpg", "wb") as f: f.write(infos['photo'])
Vous trouverez pythonbeid sur le GitHub de Lapin Blanc.
Un grand merci pour ce partage avec la communauté.
Dominique
Libellés :
Développement,
Python,
Python-module
Inscription à :
Articles (Atom)