Skip to content

Générer un ficher Excel en C++

Pour générer un fichier XLSX en C++ (sans nécessité d'avoir les produits offices installés), il existe plusieurs bibliothèques disponibles. Il est parfois difficile de s'y retrouver car nombres de bibliothèques s'avèrent n'être plus maintenues. Voici une petite sélection :

- libxlsxwriter : bibliothèque en C, simple à utiliser, très bien documentée et avec peu de dépendances.
- openxlsx : simple à utiliser, permet aussi de lire et manipuler des fichiers Excel.
- xlnt : même démarche de la bibliothèque précédente.
- qtxlswriter : simple a utilisée, elle est basée sur la bibliothèque Qt (Qtlib - est-ce encore du C++ ?)
- libxl : très complète, peut utilisée pour lire et modifier des fichier xlsx mais aussi xls. Pb : c'est la seule bibliothèque présentée ici qui n'est pas open-source. Elle nécessite en outre l'achat d'une licence dont le prix est de l'ordre de 200$ par développeur et par environnement (Windows, Linux, Ios, ...) - existe en version C, C++, C# et Delphi

Il serait intéressant aussi de voir quels outils utilise libre-office (écrit en C++) pour manipuler les fichier Excel...

Arrêter la carte Nvidia Optimus Prime sous Ubuntu 20.04

Ubuntu 20.04 fonctionne sans problème sur les portables utilisant une carte graphique hybride Nvidia Optimus (Prime). Le problème est que la carte Nvidia reste alimentée même si on ne l'utilise pas, ce qui est le cas lorsque l'on ne joue pas. Voici comment l'éteindre. Sur un ZeenbooK UX392FN, cela permet de diviser par deux la consommation (qui devient inférieur en mode surf internet à 4W), et donc de doubler l'autonomie. Par ailleurs, cela évite le démarrage du ventilateur qui bien que discret est audible dans une pièce très calme.

Pour arriver à cela, il faut
- installer les drivers nvidia
- sélectionner la carte graphique Intel
- installer bbswitch
- empêcher le driver open-source "nouveau" de se lancer au démarrage
- lancer bbswitch au démarrage pour éteindre la carte Nvidia

source : https://medium.com/@agathver/nvidia-gpu-optimus-prime-and-ubuntu-18-04-woes-f52e7f850f3d Continuer à lire "Arrêter la carte Nvidia Optimus Prime sous Ubuntu 20.04"

Pb de PhpMyAdmin avec PhP 7.2 : count(): Parameter must be an array or an object that implements Countable

Si un message de type Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable - apparaît lors de l'utilisation de PhpMyAdmin, il faut effectuer des modification à la main dans les fichiers php de la bibliothèque qui gère le SQL

Source : https://openclassrooms.com/forum/sujet/erreur-dans-phpmyadmin Continuer à lire "Pb de PhpMyAdmin avec PhP 7.2 : count(): Parameter must be an array or an object that implements Countable "

Mode portrait et touchpad sous Ubuntu

La Recherche, plus lisible en portrait...

Il est assez facile de réorienter l'écran sous Ubuntu, mais cela ne suffit pas. Il peut aussi être utile de retourner en même temps l'écran tactile et le touchpad (sinon il reste la possibilité d'utiliser une souris).

La commande xinput permet d'appliquer une matrice de transformation aux entrées de ces périphériques et d'inverser ainsi l'axe des X et celui des Y.

Sources :

⎡ X ⎤   ⎡ a11 a12 a13 ⎤   ⎡ X réél ⎤
⎜ Y ⎥ = ⎜ a21 a22 a23 ⎥ . ⎜ Y réél ⎥
⎣ Z ⎦   ⎣ a31 a32 a3  ⎦   ⎣ Z réél ⎦                          

Pourquoi un axe des Z alors que le périphérique n'est qu'en deux dimensions ? Hypothèse le Z représenterait la dimension max de l'écran. Si un coefficient est inférieur à 0 sur un ligne N, il faudrait ajuster le coefficient an3 de manière à ce que : an1+an2+an3=0.

Je ne peux véirifier l'hypothèse n'ayant pas d'écran tactile sous la main, étant donné que le touchpad, n'envoie, lui, que des (x,y) relatifs. Pour ce périphérique, les coefficient an3 ne semblent pas avoir d'effets.

Voici en pratique comment passer en portrait et revenir en paysage avec l'exemple de trois scripts.

Continuer à lire "Mode portrait et touchpad sous Ubuntu"

Google et site en JS

Processus d'indexation de Google
Google Indexe un site web en deux phases :

1) une indexation purement HTML
2) une indexation à l'aide un moteur de rendu (Chrome 41) qui permet de prendre en compte le Javascript.

Problème : la phase II n'est réalisée que lorsque des ressources sont disponibles dans les datacentres de Google. Dans la pratique; pluiseurs semaines peuvent s'écouler entre les deux phases.

Voir la vidéo : https://youtu.be/PFwUbgvpdaQ

Source : https://www.searchenginejournal.com/google-strongly-recommends-using-html-to-get-content-indexed-quickly/269841/ Continuer à lire "Google et site en JS"

Générateurs de sites web statiques

Les générateurs de sites statiques sont apparus en 2008 (Jeckyll, Middleman). Ils permettent à partir d'un CMS, typiquement un logiciel de blog dynamique de type Wordpress, de générer des pages statiques. Cette approche permet de mettre en ligne un site très performant et offrant très peu de surface aux attaques. Il n'impose de plus que peu de contrainte à l'hébergeur.

Cet article liste quelques générateurs de sites statiques.

Sources :

Continuer à lire "Générateurs de sites web statiques"

Headless CMS - decoupled CMS - idées théoriques

Bien que souvent confondues, les notions de CMS headless et de CMS découplé sont distinctes. Cet article présente les principales caractéristiques de ce type d'architecture de manière théorique, c'est à dire indépendamment des outils réels existants sur le marché.

Dans un CMS classique comme Drupal, le backend (qui permet de composer les pages) et le frontend (qui affiche ces pages) sont inséparables.
Un CMS headless ne fournit que le backend et une API qui permet d'exposer le contenu saisi. La partie frontend (head) est absente.
Un CMS découplé est un CMS headless auquel est associé un frontend par défaut qui utilise l'API pour récupérer les contenus et les mettre en forme.

Sources :
- https://www.coredna.com/blogs/headless-vs-decoupled-cms
- https://www.contentful.com/blog/2019/02/04/difference-between-headless-decoupled-contentful/ Continuer à lire "Headless CMS - decoupled CMS - idées théoriques"

Installer un imprimante canon MG5350 sur Ubuntu 19.10

Télécharger à partir du site de Canon

mkdir drivers
cd drivers
mv ../Téléchargements/cnijfilter-mg5300series-3.60-1-deb.tar.gz .

wget http://old-releases.ubuntu.com/ubuntu/pool/universe/t/tiff3/libtiff4_3.9.7-2ubuntu1_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.32-3ubuntu1_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/g/gtk+2.0/libgtk2.0-common_2.24.32-3ubuntu1_all.deb
wget -O libpng12-0_1.2.54-1ubuntu1b_amd64.deb https://www.dropbox.com/s/79x3imq73tcqyw4/libpng12-0_1.2.54-1ubuntu1b_amd64.deb?dl=1
wget http://ftp.br.debian.org/debian/pool/main/g/glibc/multiarch-support_2.28-10_amd64.deb

sudo dpkg -i libgtk2.0-common_2.24.32-3ubuntu1_all.deb libgtk2.0-0_2.24.32-3ubuntu1_amd64.deb libpng12-0_1.2.54-1ubuntu1b_amd64.deb libtiff4_3.9.7-2ubuntu1_amd64.deb multiarch-support_2.28-10_amd64.deb

tar xfz cnijfilter-mg5300series-3.60-1-deb.tar.gz
cd cnijfilter-mg5300series-3.60-1-deb/

sudo ./install.sh

suivre ensuite les instructions.

Source : https://medium.com/@domdomegg/installing-canon-mg5200-series-drivers-on-ubuntu-19-10-f82c6c8fcc88

Installer Visual Studio Code sous Ubuntu 18.04

source : https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/

sudo apt install software-properties-common apt-transport-https wget
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update
sudo apt install code Continuer à lire "Installer Visual Studio Code sous Ubuntu 18.04"

Installer Ubuntu 18.04 sur un Acer R3-131T

La version apporte certaines améliorations comme le fonctionnement des touche pour régler la luminosité de l'écran, ou encore une meilleur stabilité du bluetooth. En revanche, et c'est un gros problème, le touchpad qui fonctionnait parfaitement dans la version 16.04 ne fonctionne plus.

Les logs (/var/log/syslog) sont les suivants :

kernel: [ 11.996098] i2c_hid i2c-ELAN0501:00: failed to reset device.
kernel: [ 18.140114] i2c_hid i2c-ELAN0501:00: failed to reset device.
kernel: [ 24.284140] i2c_hid i2c-ELAN0501:00: failed to reset device.
kernel: [ 30.428116] i2c_hid i2c-ELAN0501:00: failed to reset device.
kernel: [ 31.452131] i2c_hid i2c-ELAN0501:00: can't add hid device: -61
kernel: [ 31.452753] i2c_hid: probe of i2c-ELAN0501:00 failed with error -61

voici comment régler ce problème. Continuer à lire "Installer Ubuntu 18.04 sur un Acer R3-131T"