syncthing

Installer syncthing sur recalbox

Publié dans Geekeries | Laisser un commentaire

J’ai récemment installé l’OS Recalbox, l’émulateur de consoles de jeux, sur mon RaspberryPi3. Une petite manette USB, et… ah oui il me faudra une manette USB ou Bluetooth supplémentaire, et prendre le temps de retrouver des jeux sympas… et cela devrait animer les soirées d’hiver !

Mon objectif est d’avoir un RaspberryPi près du bureau pour :

  • Faire console de jeux (checked)
  • Ah tiens Recalbox est fourni avec le media center Kodi (à creuser)
  • Rendre mon imprimante utilisable via le réseau (peut-être compliqué avec Recalbox, c’est mon prochain défi)
  • Rajouter un noeud Syncthing à la maison (checked)

Mais comment installer synchting sur Recalbox ? Puisque comme le disent certains sur les forums : il n’y a pas de gestionnaire de paquet sur Recalbox.

Continuer la lecture
Grub

Grub rescue après mise à jour Windows

Publié dans Geekeries | Laisser un commentaire

Contexte
Sur un Dell Inspiron 155000, j’ai un dual boot Windows 10 / Kubuntu. Lors d’une mise à jour Windows, ce dernier semble avoir purement et
simplement supprimé grub. J’avais déjà eu le cas où Windows modifie le disque d’amorçage, et il faut donc reconfigurer grub à la main, mais cette
fois-ci, je n’avais carrément plus de grub, juste un prompt “grub rescue”. Génial !


Solution
Dans le prompt grub rescue :
grub rescue> ls # affiche la liste des disques, pour moi cela allait de gpt9 à gtp1
grub rescue> set # affiche la configuration courante, pour moi gtp8 était sélectionné
grub rescue> set prefix=(hd0,gtp5)/boot/grub
grub rescue> set roothd0,gpt5
grub rescue> insmod linux # Maybe useless
grub rescue> insmod normal
grub rescue> normal # Linux will start

J’ai fait plusieurs tentatives pour trouver la bonne partition car je ne me rappelais plus laquelle c’était ! (petite piqûre de rappel de qwerty en
prime) Il n’y a pas de risque à faire des essais, quand ce n’est pas correct, la commande insmod linux déclare unknown filesystem.
Pour rendre cette modification permanente, il faut utiliser les commandes suivantes une fois qu’on a un prompt digne de ce nom :
sudo os-prober
sudo update-grub
sudo grub-install /dev/sda

Ressources

  • https://doc.ubuntu-fr.org/tutoriel/comment_restaurer_grub
  • http://forum.ubuntu-fr.org/viewtopic.php?id=358656
wine logo

Office 2010 sous Linux Debian

Publié dans Geekeries | Laisser un commentaire

Aujourd’hui j’ai réussi à installer une version official de Microsoft Office 2010 (32bits version Academic) sur mon Linux : une Debian Bulleyes avec wine 4.0.1. J’ai utilisé les commandes suivantes :

sudo apt install winetricks winbind WINEARCH=win32 WINEPREFIX=~/.wineoffice2010 winetricks dotnet20 msxml6 corefonts WINEPREFIX=~/.wineoffice2010 wine ../hubiC/Olivier/WorkTrialog/Software/Office_2010_ProPlusAc_SP1_French_x32.exe

Après cela, Word et Excel ont fonctionné correctement (une fois activé en ligne). Mais PowerPoint ne démarrait pas… Il semble que PowerPoint on wine « does not automatically use the riched20 installed by Office ».  Donc, nous devons sélectioner riched20 to native in winecfg. C’est ce que j’ai fait avec succès en lançant :

WINEPREFIX=~/.wineoffice2010 winecfg

Et voilà ! Bon courage avec votre installation d ‘Office sous Linux ! Pour info, j’ai aussi une version d’Office 2016, mais c’est juste mort pour l’installer sous Linux ! Une histoire de version d’ActiveX pas (encore) supporté par Wine.

wine logo

Office 2010 under Linux Debian

Publié dans Geekeries | Laisser un commentaire

Today I manage to make my official Office 2010 (32bits Academic version) working under my Linux, a Debian Bulleyes with wine 4.0.1. I simply used the following commands:

sudo apt install winetricks winbind
WINEARCH=win32 WINEPREFIX=~/.wineoffice2010 winetricks dotnet20 msxml6 corefonts
WINEPREFIX=~/.wineoffice2010 wine ../hubiC/Olivier/WorkTrialog/Software/Office_2010_ProPlusAc_SP1_French_x32.exe

At this stage, Word and Excel seem to work correctly once you activate them online. PowerPoint is not starting…

Apparently, PowerPoint on wine « does not automatically use the riched20 installed by Office ». Therefore, we need to set riched20 to native in winecfg. This is what I did with success using:

WINEPREFIX=~/.wineoffice2010 winecfg

That’s it! Good luck for the installation of Office on Linux!

Oh by the way: I also have an Office 2016, but this is just dead to install it under Linux due to the last version of ActiveX, still not supported by Wine. Too bad.

The Rules of Life

Règle #2 – Changelogs & Release notes

Publié dans Développement | Laisser un commentaire

Une bonne pratique de taille pour fiabiliser le développement logiciel, c’est de toujours garder une liste « humaine » des changements apparus de versions en versions.

On peut noter 3 degrés d’historique :

  • Git history : pour le développeur
    • git log, gitk
    • Moi je me suis créé un alias Git pour afficher joliment les derniers commits dans ma ligne de commande: git lasts
      • Ajouter l’alias suivant dans le fichier ~/.gitconfig: lasts = log -35 --pretty=tformat:"%C(red)%h%x20%C(magenta)%ad%C(auto)%d%x20%C(green)%s%C(white)%x20-%x20%an%C(auto)" --date=short --abbrev-commit --graph --decorate
  • Changelogs : pour l’utilisateur averti, pour le validateur
  • Release notes : pour le client, pour le « non technique »
    • Format à définir avec les personnes concernées
    • Focus sur les fonctionnalités et les changements visibles

The Rules of Life

Règle #1 – Numéro de version

Publié dans Développement | Laisser un commentaire

Règle #1 pour livrer du logiciel : définir un numéro de version !

Quel numéro choisir ?

Le must du must est d’utiliser et de suivre le Semantic versioning. C’est-à-dire, d’utiliser trois chiffres :

MAJOR.MINOR.PATCH

  • MAJOR : incompatible API / ABI changes,
  • MINOR : functionality added in a backwards-compatible manner
  • PATCH : backwards-compatible bug fixes

Ce qui implique que si je trouve un bug dans ma bibliothèque v3.1.2, que je corrige ce bug, je vais publier ce correctif dans une nouvelle v3.1.3 uniquement si je n’ai pas fait de changements bloquants (c’est-à-dire que mon soft qui tournait avec la v3.1.2 de cette bibliothèque pourra utiliser v3.1.3 sans rien changer). Si mon correctif implique des changements bloquants (pas de bol), il faut changer le numéro de version majeur (v4.0.0), eh oui.

Trouver le numéro de version

Il n’y a rien de pire que de faire tourner un soft et de ne pas savoir quelle est la version qui tourne. Avoir un numéro de version c’est bien beau, mais il faut aussi l’afficher quelque part :

  • Au démarrage du soft
  • Dans un log
  • Sur l’IHM
  • Dans l’API

N’importe où, mais quelque part !

Modifier le numéro de version

Un autre corollaire de cette règle #1, c’est qu’il faut pouvoir modifier facilement ce numéro de version. Il doit être défini en un unique endroit. Par exemple :

  • Qt : Le fichier .qmake.conf est inclue au début de chaque fichier .pro et .pri, c’est le candidat idéal
  • PHP / Symfony : app/config/config.yml

Selon son architecture de développement, on peut aussi s’assurer qu’un tag Git vient préalablement mettre à jour le numéro de version dans le code.

Logo OpenSSL

OpenSSL et i2d_PublicKey

Publié dans C / C++ | Laisser un commentaire

Dans OpenSSL, il y a des pièges ! Petit exemple avec i2d_PrivateKey et i2d_PublicKey :

i2d_PrivateKey(EVP_PKEY *, uchar **), comme escompté, prend en paramètre une paire de clé source EVP_PKEY et un tableau d’octet en destination. La clé privé est extraite de la paire de clé et envoyé au format DER / ASN 1 dans le tableau d’octet.

i2d_PublicKey(EVP_PKEY *, uchar **) a la même signature, une paire de clé source EVP_PKEY et un tableau d’octet en destination. La clé publique est extraite de la paire de clé, mais cette fois-ci elle est envoyé sous forme d’un EC point dans le tableau d’octet ! Piège !

L’équivalent de i2d_PublicKey(EVP_PKEY *, uchar **) est en réalité i2d_PUBKEY(EVP_PKEY *, uchar **) ! Et c’est la même chose pour d2i_PublicKey/PUBKEY. Comme quoi… « rien n’est jamais facile » !

La déclaration anticipée en C++

Publié dans C / C++ | Laisser un commentaire

Un problème de référence croisée / inclusion croisée / cross reference en C++ ? Utilisez la déclaration anticipée ! Ou forward declaration dans la langue de Shakespear !

Qu’est-ce qu’une référence croisée ?

Une référence croisée, ce sont tout simplement 2 classes qui dépendent l’une de l’autre. MyClassA dépend de MyClassB et vice-versa. On devrait alors inclure le header de l’un dans celui de l’autre et le compilateur ne sait pas par quel bout commencer. Ce problème apparemment rarement avec seulement deux classes, mais plus souvent dans un cycle : MyClassA <- MyClassB <- … <-MyClassZ <- MyClassA.

Exemple de référence croisée simple entre 3 classes

La solution

La solution : déclaration anticipée ou forward declaration.

Continuer la lecture

Enable WiFi on a Dell E7470 Laptop

Publié dans Geekeries | Un commentaire

When I received my new Dell Latitude E7470, I installed immediatly a Debian testing (Stretch) on it. This laptop, is really, really great, and is working like a charm with Linux. I still have to install manually a WiFi firmware iwlwifi-8000C. A simple « sudo dpkg -i *.deb », and it worked quite well!

Recently, in the beginning of 2017, a Debian update (maybe to due to testing freeze? Or something else?) has broken it… The WiFi was not available anymore, as if no WiFi board were loaded! Let’s fix this!

Latitude E7470

Continuer la lecture

VirtualBox

Quelques tips VirtualBox

Publié dans Geekeries | Laisser un commentaire

Partager des répertoires avec l’hôte

Configurer la machine virtuelle pour qu’elle accède à des dossiers de l’hôte  (Settings > Shared Folders) n’est pas suffisant pour que cela fonctionne ! Il faut aussi que l’OS de l’hôte l’accepte, et pour cela, il faut démarrer la machine virtuelle, puis dans la barre d’outil faire : « Devices > Insert Guest Additions CD image… ». Après avoir éventuellement télécharger ce que VirtualBox propose, VirtualBox devrait avoir chargé un fichier ISO dans le lecteur de CD virtuel. A vous de jouer pour l’installer !

Puis il faut encore avoir les droits pour accéder à ces dossiers :

sudo usermod -aG vboxsf $(whoami)

Reste à redémarrer ou se reloguer, et voilà !

Ah oui, une chose importante : la machine virtuelle ne peut créer de liens symboliques sur la machine hôte ! (pour des raisons de sécurité, cf. superuser) Cela peut se réactiver à l’aide de la commande suivante (pour chaque dossier partagé)(merci à Github) :

VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

Donc par exemple pour pouvoir créer des liens symboliques sur le dossier hôte « MyDoc », je fais :

VBoxManage setextradata MyVMName VBoxInternal2/SharedFoldersEnableSymlinksCreate/MyDoc 1

Cela implique de redémarrer la VM.

Augmenter la taille d’un disque dur

Visiblement, ça marche assez bien et sans perte de données. En ligne de commande :

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB