15 juillet 2014

MASM pour Boost et MinGW

Certaines librairies de Boost contiennent du code écrit en assembleur. Contrairement à C++ qui utilise la même syntaxe quel que soit le système (Linux, Mac, Sun, Windows) l’assembleur n’est pas standardisé. Bien que le processeur soit le même, le même le code ne s’écrit pas de la même façon sous Linux ou Windows parce que l’assembleur par défaut de ces plateformes n’est pas le même.

L'assembleur inclus avec gcc est 'as'. Il est présent sous Windows et Linux mais les mainteneurs de Boost refusent d’avoir deux versions du même code pour la même plateforme. Hors de question pour eux d’avoir une version pour 'MASM' de Microsoft et une autre version pour 'as' de GNU. Pour Windows la seule version disponible est celle pour MASM.

Donc, si vous voulez utiliser la suite gcc de MinGW pour compiler les librairies de Boost il vous faudra malgré tout MASM de Microsoft et, en théorie, une version anglaise de Visual Studio C++ Express Edition. En effet à l’installation de MASM requiert MSVS C++ Express.


En soit rien de grave car les deux produits sont librement et gratuitement téléchargeables chez Microsoft.
Cependant on peut vouloir éviter d’installer toute une suite C++ pour juste pouvoir assembler quelques lignes d’assembleur.  

Voici donc comment installer MASM sans MSVC Express.

Pour cette manipulation on utilisera 7zip : http://www.7-zip.org/
  1. Télécharger MASMsetup.EXE chez Microsoft
    http://www.microsoft.com/en-us/download/details.aspx?id=12654.


  2. Bouton droit sur le fichier qui vient d’être téléchargé,
    dans le sous menu 7-Zip sélectionner « open archive ».

    Ceci ouvrira 7-Zip et vous montrera le contenu du fichier MASMsetup.EXE c’est-à-dire le fichier setup.exe.




  3. Bouton droit sur ‘setup.exe’ puis choisir l’option « Open Inside ».
    Le nom des deux fichier inclus dans setup.exe vont s'afficher.


  4. Bouton droit sur  « vc_masm1.cab » puis à nouveau choisir « Open Inside ».




  5. Un nom de fichier ‘compliqué’ va apparaitre.


     
  6. Faire glisser ce fichier sur le bureau et le renommer « ml.exe »
     
  7. Déplacer ml.exe dans un répertoire présent dans le PATH ou créez en un pour l’occasion.
     
  8. Pour vérifier que tout est ok, ouvrir une ligne de commande (cmd) et taper « ml ». Vous devez obtenir la version du Macro Assembler .



Et voila !



27 novembre 2013

Mozilla Plugins registry

Les plugins de Firefox ne sont pas stockés dans un répertoire spécifique mais chaque plugins ajoute des entrées dans la registry pour indiquer où se trouve la dll à charger, pour quels mime-types il doit être invoqué ect. Il est est facile d'ajouter un plugins sans que l'utilisateur de Firefox s'en rende compte.
Des applications très honnêtes font cela (VLC, Adobe, Java ect).
D'autres applications font cela en douce comme  Google Chrome ou Microsoft...

Malheureusement on ne peut que désactiver un plugins. Pour qu'il ne figure plus dans la liste des plugins il faut supprimer ses entrées de la registry. Pour cela il faut lancer regedit et chercher toutes les clefs "MozillaPlugins" et supprimer les entrées correspondant aux plugins indésirables dans chacune de ces entrées:

HKEY_CURRENT_USER\Software\MozillaPlugins
HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MozillaPlugins  (64bits)


Note: Supprimer la clef ne supprime aucun fichier du disque.

Une bonne habitude est de régulièrement visiter: http://www.mozilla.org/en-US/plugincheck/

19 septembre 2013

GNU radio pour Windows

GNU radio est à l’origine une application spécialisée dans le traitement des signaux radio. Son but est de traiter ces signaux de manière logicielle. C’est ce que les anglais appellent « Software Defined Radios : SDR ». Cette approche logicielle à l’avantage d’être plus souple et moins onéreuse que la méthode matérielle. Avec le temps GNU radio est devenu un système de traitement du signal numérique au sens large.

GNU radio inclus une interface graphique « GNU radio compagnon : GRC » qui permet d’interconnecter très facilement les blocks logiciels nécessaires aux traitements d’un signal. Si vous programmez en C++ et python vous pourrez ajouter vos propres blocks à la librairie de GNU radio.

GNU radio est une application open source écrite principalement en python sauf les parties critiques pour les performances qui sont écrites en C++ et utilisent la librairie Boost. GNU radio s’interface avec le matériel (carte son, dongle usb) et est donc en partie lié à l’OS. Son développement se fait principalement sous Linux mais il existe un portage 32 bits vers Windows.


Avant de commencer à télécharger...

* Python existe en deux grandes versions : 2.7.x et 3.x
Beaucoup de librairies ou modules utilisés par GNU radio fonctionnent avec python 3.x, mais pas tous. Par exemple PyGTK et wxPython ne fonctionnent pas avec python 3.x. On doit donc en rester (pour le moment) à python 2.7.x qui est la version de python la plus stable.

* Même remarque pour 32 bits et 64 bits. On doit en rester aux versions 32 bits, même si vous utilisez un Windows 64 bits.

* A l’exception de PyQwt qui requiert les droits d’administrateur pour s’installer dans c:\program-files\Pyqwt5, tous les autre composant s’installent dans le répertoire python qui par défaut est C:\python27 et ne requiert pas les droits admin

Si vous voulez faire simple: Installez tout en étant administrateur et installez python dans son répertoire par défaut C:\Python27. En respectant cela les installations se feront en gardant toutes les options par défaut.


INSTALLATIONS  ~ Ce qui suit a été testé sur XP 32 bits et Seven 64 bits.

Installez les 10 ou 11 logiciels qui suivent dans l'ordre indiquez ci-dessous

Pour info, voici les versions disponibles en sep/2013
soit ~170 Mo à télécharger.

1) Python ~ http://www.python.org/
Download : http://www.python.org/download/releases/
Choisir la version 2.7.x pour win32 la plus récente.
Exemple : python-2.7.5.msi

Important: Ajoutez C:\Python27 au PATH de Windows dés maintenant.


2) NumPy ~ http://www.numpy.org/
Un package python absolument fondamental pour le calcul scientifique.
Download : http://sourceforge.net/projects/numpy/files/NumPy/
Sélectionnez la version supportée par PyQwt (voir plus bas)
Prendre le superpack.
Exemple : numpy-1.7.1-win32-superpack-python2.7.exe


3) lxml ~ http://lxml.de/
API python pour les librairies libxml2 et libxslt. Les blocks manipulés par GRC sont décrit en XML.
Download : https://pypi.python.org/pypi/lxml/
Example : lxml-3.2.3.win32-py2.7.exe


4) PyOpenGL ~ http://pyopengl.sourceforge.net/
API python pour OpenGL
Download : https://pypi.python.org/pypi/PyOpenGL/
Exemple : PyOpenGL-3.0.2.win32.exe


5) Cheetah template engine ~ http://www.cheetahtemplate.org/
Generateur de code.Utiliser pour convertir en python les schémas logiques de GRC.
Download : https://pypi.python.org/pypi/Cheetah/
Exemple : Cheetah-2.4.4.tar.gz
Ceci n’est pas un exécutable. Il faut le décompresser, et exécuter la commande :
  python setup.py install
On peut ensuite supprimer le répertoire contenant Cheetah.

Si vous êtes attentif vous verrez que l’installation de Cheetat se termine par:
One or more C extensions failed to build.
Performance enhancements will not be available.
Pure Python installation succeeded.
Ceci est normal pour deux raisons:
- Conflit de noms ne se distinguant que par la case dans le même répertoire : Cheetah.h et cheetat.h.
Windows ne faisant pas la différence un seul fichier subsiste sur le disque.
- De toute façon on ne peut pas compiler sous Windows.
Mais rien de grave, on en reparlera plus bas...


6) PyQt ~ http://www.riverbankcomputing.com/software/pyqt/
API python pour utiliser le Framework Qt.
Download : http://sourceforge.net/projects/pyqt/files/PyQt4/
Sélectionner la version supportée par PyQwt (voir plus bas)
Exemple : PyQt-Py2.7-x86-gpl-4.9.6-1.exe


7) PyQwt ~ http://pyqwt.sourceforge.net/
Une extension de Qt pour le tracé de graphiques.
Il faut que les versions installées de NumPy et de PyQt soient en adéquation avec PyQwt.
Mais attention les versions requises par PyQwt sont rarement les plus récentes.
En principe on télécharge PyQwt ici : http://pyqwt.sourceforge.net/download.html
Mais actuellement (sept/2013) la version PyQwt la plus récente est ici : http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqwt
Exemple : PyQwt-5.2.1-py2.7-x32-pyqt4.9.6-numpy1.7.1.exe
Cette version 5.2.1 de PyQwt est conçue pour fonctionner avec
- Python  2.7
- Mode 32 bits
- PyQt  4.9.6  (voir #6)
- NumPy  1.7.1  (voir #2)
Attention :
- Il faut obligatoirement les droits d’administrateur car PyQwt s’installe en partie dans C:\ProgramFiles\PyQwt5
- Si vous avez installé python ailleurs que dans son répertoire par défaut, PyQwt ne le trouvera pas et s’en plaindra. Continuez l’installation puis indiquez le répertoire où  se situe votre python.


8) PyGTK  ~ http://www.pygtk.org/
API python pour utiliser la librairie graphique GTK+.
Download : http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/
Prendre le package all-in-one
Exemple : pygtk-all-in-one-2.24.2.win32-py2.7.msi


9) wxPython ~ http://www.wxpython.org/
API python pour utiliser le framework wxWidgets (écrit en C++)
Download : http://www.wxpython.org/download.php
Ne pas prendre la version ansi, mais unicode.
Example : wxPython2.8-win32-unicode-2.8.12.1-py27.exe


10)  GNU Radio ~ http://gnuradio.org/
Logiciel de traitement de signaux numeriques
Download : http://files.ettus.com/binaries/gnuradio/
Exemple : gnuradio_3.6.4.1_Win32.exe
Il y a toujours un délais de plusieurs semaines (ou mois) entre la disponibilité d'une version sous Linux et sont portage sous Windows.


Environment
Cette variable est deja mise en place pendant l'installation de GNUradio
    GRC_BLOCKS_PATH=C:\Program Files\gnuradio\share\gnuradio\grc\blocks
Mais celle là, vous devez l’ajouter à la main:
    PYTHONPATH=C:\Program Files\gnuradio\lib\site-packages

Rappel: Avec un Windows 64bits les applications 32 bits sont dans: "Program Files (x86)"

Si jamais...
En cas de besoin (car il n’est pas rare de déjà les avoir sur sa machine) les bibliothèques de Visual C++ 2010 sont dispo chez Microsoft : http://www.microsoft.com/en-us/download/details.aspx?id=5555

Executer GNUradio companion (enfin !)
Double cliquer sur le script python
    C:\Program Files\gnuradio\bin\gnuradio-companion.py
ou
    C:\Program Files (x86)\gnuradio\bin\gnuradio-companion.py

Ecran d’accueil de GNU radio Companion
Si vous êtes attentif vous verrez dans la console le message suivant :
You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames options as it is painfully slow with the Python version of NameMapper ect..
Rien de grave. C'est juste la conséquence de ce qu'on a vu pendant l’installation de Cheetah.

NB: Cette console est à surveiller pendant l’exécution GRC car c'est là que l'on trouve les détails des éventuelles erreurs.

Comprendre et apprendre
Pour comprendre comment GNU radio companion fonctionne commencez par  puis ici.
Il y a aussi ce tuto de 5 videos HD-720p.

Des exemples sont dans C:\Program Files\gnuradio\share\gnuradio\examples
Mais si vous voulez pouvoir les utiliser sans être admin, il faudra les copier ailleurs.

Si vous n'avez pas de sources réelles pour alimenter GNU radio vous pouvez trouver des fichiers ici :
http://signals.radioscanner.ru/base/
http://crawdad.cs.dartmouth.edu/


11) USRD Hardware Driver (UHD)
Driver pour les périphériques USRD (Universal Software Radio Peripheral).
Ceci ajoutera de nouveaux blocks logiciels pour communiquer avec les périphériques USRD.
Exemple : uhd_003.005.003-release_Win32.exe

Pendant l’installation sélectionnez l’option “add UHD to the system PATH for all user”, sinon vous devrez faire l’ajout de la variable UHD_PKG_DATA_PATH à la main.

Exemples de périphériques USRD : https://www.ettus.com/product/category/USRP-Bus-Series
Plus d’info sur UHD : http://ettus-apps.sourcerepo.com/redmine/ettus/projects/uhd/wiki


QRV ?...

07 juin 2013

MySQL setup

Voici un rapide mémo pour la configuration de base de MySQL.

Avec Fedora on installe et démarre MySQL en 3 commandes (en root) :
 # yum install mysql-server
 # systemctl start mysqld
 # systemctl enable mysqld


Par défaut MySQL attend les connexions sur le port 3306. Pour changer cette valeur éditer le fichier /etc/my.cfg et ajouter (ou modifier) le paramètre 'port' dans la section [mysqld]
[mysqld]
port=1234
Puis redémarrer
 # systemctl restart mysqld

Notes:
- Dans ce qui suit "www.example.com" està remplacer par le nom de votre serveur.
- On va utiliser le user root de MySQL mais ce n'est pas le root du serveur. 

- Ce qui suit peut être fait par n'importe quel utilisateur.

> mysql -u root
 

-- etape 1: lister les users existants:

mysql> select user,host,password from mysql.user;
+------+-----------------+----------+
| user | host            | password |
+------+-----------------+----------+
| root | localhost       |          |
| root | www.example.com |          |
| root | 127.0.0.1       |          |
| root | ::1             |          |
|      | localhost       |          |
|      | www.example.com |          |
+------+-----------------+----------+


-- etape 2: supprimer les users inutiles:

mysql> delete from mysql.user where user='root' and host='::1';
mysql> delete from mysql.user where user='';

mysql> select user,host,password from mysql.user;
+------+-----------------+----------+
| user | host            | password |
+------+-----------------+----------+
| root | localhost       |          |
| root | www.example.com |          |
| root | 127.0.0.1       |          |
+------+-----------------+----------+


-- etape 3: donner un mot de passe au user root de MySQL:

mysql> set password for root@localhost=password('secret');
mysql> set password for root@'127.0.0.1'=password('secret');
mysql> set password for root@'www.example.com'=password('secret');

mysql> select user,host,password from mysql.user;
+------+-----------------+-------------------------------------------+
| user | host            | password                                  |
+------+-----------------+-------------------------------------------+
| root | localhost       | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | www.example.com | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | 127.0.0.1       | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+------+-----------------+-------------------------------------------+


La valeur de la colonne 'password' change suivant le mot de passe. Ici on voit le codage de 'secret'.

-- pour autoriser root à se connecter à MySQL via le réseau :

mysql> update mysql.user set host="%" 
       where user="root" and host="www.example.com";
mysql> flush privileges;


mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | %         | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | 127.0.0.1 | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+------+-----------+-------------------------------------------+


mysql> quit

ATTENTION:
% matche tout host, sauf localhost !
Donc l'entrée avec localhost n'est pas redondante avec l'entrée %

On se reconnecte et là il faut utiliser l'option -p puisque root a maintenant un mot de passe.
>mysql -u root -p
Enter password:    <-- entrer le mot de passe ('secret' dans notre example)

-- utiliser MySQL
mysql> quit


Après cela on peut tout faire en ligne de commande, avec phpMyAdmin ou MySQL Workbench.