Loading...
 

No Food for Thought

Food is something you should provide to your brain long before coming to this blog. You will find no food recipes here, only raw, serious, non-fake news for mature minds.

Victory for the Liberals, Defeat for Governance; Disgust for Canadian Politics

admin Saturday February 4, 2017



During the last federal election, an unprecedented share of political parties favored electoral reform. In a bad position, with a mere 10% of the seats, Canada's most popular party - and therefore the one most favored by the flaws of First-past-the-post voting, the Liberal Party - made the unthinkable: an unequivocal promise to get rid of FPTP, by 2019 (presumably because they considered a majority victory equally unthinkable anyway).

Unfortunately, the 2015 elections doubled the popular vote of the Liberal Party, which brought the liberals back from the parties disadvantaged by FPTP to the parties advantaged by FPTP - so much so, that their 39% popular vote granted the liberals not only the government, but a majority government. Surely, at this point the liberals would break their promise.

But the hope survived. It might have been too selfish to break their main promise right after benefiting from the status quo, but instead of becoming silent on the issue, the government renewed its commitment to electoral reform in its December 2015 Speech from the Throne. Yours truly - despite all his knowledge of politics and cynicism - was still enthusiastically wondering what would happen in 2016. Even in June 2016, the liberals weren't ready to break their promise and constituted the ERRE special committee on electoral reform, and yours truly went to an ERRE hearing last autumn wondering if change could still happen; after all, a strong majority of voters chose a party promising electoral reform.

Unsurprisingly, the experts and the public urged the government to abandon FPTP. It wasn't before October that it became difficult to stay hopeful. After millions had been spent, the Minister of democratic institutions then criticized the committee she had formed and dismissed its recommendation to adopt a more proportional electoral system. The liberals then designed their own biased survey on electoral reform.

And only after that much more money was wasted were the liberals willing to admit no reform would take place under their government. This week, after the Minister of Democratic Institutions was changed, electoral reform was removed from the mandate of the new Minister.

In more than a year, the liberals could not find better than an insulting bunch of misleading and pitiful excuses (served just one week after a certain candidate was elected president of a certain neighbor of Canada despite the will of its citizens, thanks to that country's broken electoral system).

I would like to thank those who contributed to this battle, despite the difficulty and high risk of failure, notably Fair Vote Canada (in particular Anita Nickerson and Executive Director Kelly Carmichael), which is outraged by this abandonment, as well as Quebec's MDN, which is also denouncing and calling for protests.

It is hard to accept defeat when a victory seemed so much more likely than ever. Although I signed petition e-616, I consider this battle lost. But if advocates of decent governance have lost one battle, the war is far from over. As for the liberals, they may have won another election, but they permanently lost any credibility (the one thing won permanently being a place in a certain activist's Political Party Blacklist).

See also
Why we broke our electoral reform promise. Signed, a Liberal MP.

Losing your cool with Lenovo's Ideapad Flex? Get rid of Yoga Mode Control

admin Saturday December 31, 2016

I gave a new laptop with Microsoft Windows to my parents in October. Unfortunately, the best deal I found, Lenovo's Ideapad Flex 4, was not a Signature Edition. But it was my first time buying Lenovo, and I thought they may not be so bad.

Things went rather smoothly initially, but I did not realize there were sometimes processes monopolizing a whole CPU core. This became hard to ignore the day there were 4 such rundll32.exe processes running simultaneously, each using up 25% of the CPU, causing fans to spin at maximum speed and incredible unresponsiveness.

Sometimes, Windows 10 even refused to let any user "login" because there was a lack of unspecified resources. Windows says it won't let you open new sessions until you free resources. The only issue being that even the sessions already opened cannot be used, so you cannot go investigate the problem, and are only left able to restart Windows.

This unspecific symptom was difficult to research. I uninstalled several useless pre-installed Lenovo packages unsuccessfully. We endured this problem for more than a month on a fully up-to-date system, even following Lenovo's upgrade recommendations, without obtaining a solution. I then uninstalled every pre-installed Lenovo package, again without solving the issue. I was about to reformat this morning when I found this Lenovo forum thread reporting the issue, at the last minute. The culprit is ymc.exe, Lenovo's "Yoga Mode Control", which manages the switch between classic laptop usage and tablet usage. I had noticed a "Yoga Mode Control" running, and since my parents have not practiced yoga in decades, had considered the possibility it was malware which had infected Windows, but I had verified it was just a strangely-named Lenovo application which was not supposed to be harmful.

The proposed workaround works. Apparently, the only downside of disabling ymc is that the visual keyboard is no longer managed automatically, which is not a problem if you do not use the Ideapad as a tablet. Disabling the service seems to kill the processes, but they apparently reappear right away. You need to make the service Manual and restart Windows to really get rid of the processes.

Congratulations, Lenovo, for leaving software you pre-install go out of control for months. Next time you want to keep your computers and their users in a cool mode, try fixing your serious bugs before deploying Yoga Mode Control.

ManageEngine NetFlow Analyzer on Debian 8

admin Monday December 19, 2016

ManageEngine's NetFlow Analyzer is probably the best NetFlow analysis software. It supports GNU/Linux and is even free for a maximum of 2 network interfaces.

NetFlow Analyzer 12.1 can be installed on Debian 8, but that does not mean there are no issues. The software is heavyweight. Once the service was started with # /etc/init.d/OpManagerServer start; you still need to give a some time before the service is usable.

The init scripts unfortunately lack LSB headers. While that apparently does not prevent proper functioning nor even pollute logs in general, it seems to cause much confusion when dpkg has to upgrade a service. Therefore, upgrading Samba brought a pretty scary output:

Préconfiguration des paquets... (Lecture de la base de données... 83617 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../libnss-winbind_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de libnss-winbind:i386 (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../libpam-winbind_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de libpam-winbind:i386 (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../samba-vfs-modules_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de samba-vfs-modules (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../samba-dsdb-modules_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de samba-dsdb-modules (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../python-samba_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de python-samba (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../libwbclient0_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de libwbclient0:i386 (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../winbind_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de winbind (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../smbclient_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de smbclient (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../libsmbclient_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de libsmbclient:i386 (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../samba-libs_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de samba-libs:i386 (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../samba_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de samba (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../samba-common-bin_2%3a4.2.14+dfsg-0+deb8u2_i386.deb ... Dépaquetage de samba-common-bin (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Préparation du dépaquetage de .../samba-common_2%3a4.2.14+dfsg-0+deb8u2_all.deb ... Dépaquetage de samba-common (2:4.2.14+dfsg-0+deb8u2) sur (2:4.2.10+dfsg-0+deb8u3) ... Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ... Traitement des actions différées (« triggers ») pour systemd (215-17+deb8u5) ... Paramétrage de samba-common (2:4.2.14+dfsg-0+deb8u2) ... debconf: Impossible d'initialiser l'interface : Gnome debconf: (Can't locate Gtk2.pm in @INC (you may need to install the Gtk2 module) (@INC contains: /etc/perl /usr/local/lib/i386-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/i386-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/i386-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Gnome.pm line 91.) debconf: Utilisation de l'interface Dialog en remplacement Paramétrage de libwbclient0:i386 (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de samba-libs:i386 (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de python-samba (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de samba-common-bin (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de samba-dsdb-modules (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de samba (2:4.2.14+dfsg-0+deb8u2) ... insserv: warning: script 'K98OpManagerServer' missing LSB tags and overrides insserv: warning: script 'OpManagerServer' missing LSB tags and overrides insserv: There is a loop at service rmnologin if started insserv: There is a loop between service OpManagerServer and mountnfs if started insserv: loop involving service mountnfs at depth 10 insserv: loop involving service nfs-common at depth 9 insserv: There is a loop between service OpManagerServer and networking if started insserv: loop involving service networking at depth 7 insserv: loop involving service urandom at depth 6 insserv: loop involving service mountnfs-bootclean at depth 12 insserv: loop involving service rpcbind at depth 9 insserv: There is a loop between service OpManagerServer and mountall-bootclean if started insserv: loop involving service mountall-bootclean at depth 6 insserv: loop involving service mountall at depth 5 insserv: There is a loop between service rmnologin and checkroot if started insserv: loop involving service checkroot at depth 3 insserv: loop involving service keyboard-setup at depth 2 insserv: loop involving service hwclock at depth 3 insserv: There is a loop between service rmnologin and udev if started insserv: loop involving service udev at depth 1 insserv: loop involving service checkfs at depth 5 insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Max recursions depth 99 reached insserv: loop involving service irqbalance at depth 2 insserv: There is a loop at service OpManagerServer if started insserv: loop involving service rsyslog at depth 13 insserv: loop involving service OpManagerServer at depth 1 insserv: loop involving service mountkernfs at depth 1 insserv: exiting now without changing boot order! update-rc.d: error: insserv rejected the script header dpkg: erreur de traitement du paquet samba (--configure) : le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1 dpkg: des problèmes de dépendances empêchent la configuration de winbind : winbind dépend de samba (= 2:4.2.14+dfsg-0+deb8u2) ; cependant : Le paquet samba n'est pas encore configuré. dpkg: erreur de traitement du paquet winbind (--configure) : problèmes de dépendances - laissé non configuré dpkg: des problèmes de dépendances empêchent la configuration de libnss-winbind:i386 : libnss-winbind:i386 dépend de winbind (= 2:4.2.14+dfsg-0+deb8u2) ; cependant : Le paquet winbind n'est pas encore configuré. dpkg: erreur de traitement du paquet libnss-winbind:i386 (--configure) : problèmes de dépendances - laissé non configuré dpkg: des problèmes de dépendances empêchent la configuration de libpam-winbind:i386 : libpam-winbind:i386 dépend de winbind (= 2:4.2.14+dfsg-0+deb8u2) ; cependant : Le paquet winbind n'est pas encore configuré. dpkg: erreur de traitement du paquet libpam-winbind:i386 (--configure) : problèmes de dépendances - laissé non configuré Paramétrage de samba-vfs-modules (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de libsmbclient:i386 (2:4.2.14+dfsg-0+deb8u2) ... Paramétrage de smbclient (2:4.2.14+dfsg-0+deb8u2) ... Traitement des actions différées (« triggers ») pour libc-bin (2.19-18+deb8u6) ... Des erreurs ont été rencontrées pendant l'exécution : samba winbind libnss-winbind:i386 libpam-winbind:i386 E: Sub-process /usr/bin/dpkg returned an error code (1) Échec de l'installation d'un paquet. Tentative de récupération : Paramétrage de samba (2:4.2.14+dfsg-0+deb8u2) ... insserv: warning: script 'K98OpManagerServer' missing LSB tags and overrides insserv: warning: script 'OpManagerServer' missing LSB tags and overrides insserv: There is a loop at service rmnologin if started insserv: There is a loop between service OpManagerServer and mountnfs if started insserv: loop involving service mountnfs at depth 10 insserv: loop involving service nfs-common at depth 9 insserv: There is a loop between service OpManagerServer and networking if started insserv: loop involving service networking at depth 7 insserv: loop involving service urandom at depth 6 insserv: loop involving service mountnfs-bootclean at depth 12 insserv: loop involving service rpcbind at depth 9 insserv: There is a loop between service OpManagerServer and mountall-bootclean if started insserv: loop involving service mountall-bootclean at depth 6 insserv: loop involving service mountall at depth 5 insserv: There is a loop between service rmnologin and checkroot if started insserv: loop involving service checkroot at depth 3 insserv: loop involving service keyboard-setup at depth 2 insserv: loop involving service hwclock at depth 3 insserv: There is a loop between service rmnologin and udev if started insserv: loop involving service udev at depth 1 insserv: loop involving service checkfs at depth 5 insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Starting OpManagerServer depends on rmnologin and therefore on system facility `$all' which can not be true! insserv: Max recursions depth 99 reached insserv: loop involving service irqbalance at depth 2 insserv: There is a loop at service OpManagerServer if started insserv: loop involving service rsyslog at depth 13 insserv: loop involving service OpManagerServer at depth 1 insserv: loop involving service mountkernfs at depth 1 insserv: exiting now without changing boot order! update-rc.d: error: insserv rejected the script header dpkg: erreur de traitement du paquet samba (--configure) : le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1 dpkg: des problèmes de dépendances empêchent la configuration de winbind : winbind dépend de samba (= 2:4.2.14+dfsg-0+deb8u2) ; cependant : Le paquet samba n'est pas encore configuré. dpkg: erreur de traitement du paquet winbind (--configure) : problèmes de dépendances - laissé non configuré dpkg: des problèmes de dépendances empêchent la configuration de libpam-winbind:i386 : libpam-winbind:i386 dépend de winbind (= 2:4.2.14+dfsg-0+deb8u2) ; cependant : Le paquet winbind n'est pas encore configuré. dpkg: erreur de traitement du paquet libpam-winbind:i386 (--configure) : problèmes de dépendances - laissé non configuré dpkg: des problèmes de dépendances empêchent la configuration de libnss-winbind:i386 : libnss-winbind:i386 dépend de winbind (= 2:4.2.14+dfsg-0+deb8u2) ; cependant : Le paquet winbind n'est pas encore configuré. dpkg: erreur de traitement du paquet libnss-winbind:i386 (--configure) : problèmes de dépendances - laissé non configuré Des erreurs ont été rencontrées pendant l'exécution : samba winbind libpam-winbind:i386 libnss-winbind:i386


Thankfully, Samba and everything other than dpkg seemed to work perfectly, but to get rid of this nastiness, I had to add a dummy LSB header to /etc/init.d/OpManagerServer:

### BEGIN INIT INFO # Dummy LSB header # Required-Start: $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start or stop ManageEngine NetFlow Analyzer ### END INIT INFO

And then run

# insserv /etc/init.d/OpManagerServer


This is apparently the result of Debian bug #587587.

Unintentionally coined terms

admin Wednesday December 14, 2016

This week our network was hit by the Osiris ransomware. Ransomware is a huge waste of time, but perhaps not as much as the term I unintentionally coined today: randomware.

I still have to reflect on whether randomware can include hardware and settle on a precise definition. Typos in source code are usually a source of bugs and a perceived higher randomness. Rarely do typos provide such an opportunity. I cannot believe that an anti-randomware activist became the person who would coin the term "randomware" coincidentally. I take this apparent chance very seriously and will carefully craft the best definition possible before making it official; no coin-flipping involved in this historical task.

Windows Firewall: a threat waiting for any occasion to strike

admin Saturday September 17, 2016

Just 4 days after writing Windows Firewall dangers - Is your Windows [8] PC's networking broken after you joined a domain?, I did my first major Windows upgrade (from Windows 7). And noticed that Windows Firewall had been completely re-enabled, as well as the warnings telling you that Windows Firewall is disabled.

Not even a year later, that same PC was hit by Windows 10 Anniversary Update, which caused the very same issues. But I finally understood what happened this time. When Windows upgrades, it assumes it knows better than the administrator and re-enables warnings about the Windows Firewall being disabled, which causes a notification to appear in the notification pane. The administrator who does not know by heart how to re-disable warnings might click that notification hoping to be offered to get rid of these. Unfortunately, the only visible effect of clicking that notification is that the notification disappears. But that is not the only effect. When that notification receives a single click, Windows re-enables the firewall, without providing any feedback to that effect. Brilliant deceptiveness!

Oh, Microsoft. How could we earn such a direct ticket to Heaven if it wasn't for enduring you and your silly tricks? I'll refrain from explaining how pitiful the upgrade to Windows 10 and then Windows 10 Anniversary Update was until I find an answer to that question.

DEWALT Multi-Bit Ratcheting Screwdriver: Avoid

admin Monday September 5, 2016

When I got my hands on the DEWALT Ratcheting Screwdriver, it took me 5 minutes to tell whether I would use it as a multi-bit screwdriver. The weird mountable rack it came with made me wonder if it could store all of its bits inside the handle. After I decided to try it, I opened the package and put the bits in the internal bit storage. After putting 1 or 2 bits, I struggled to put the next in place. At first, I thought there must have been a manufacturing defect. But after trying more slots and bits, and considering the mountable rack, I started to smell a design error.

And indeed, the online reviews are poor. This review of a variant of mine says it all. Visibly, Dewalt didn't intend to have internal storage initially and rushed a broken solution. Or, it tried to patch its faulty internal storage with the mountable rack.

In any case, if you are looking for a multi-bit screwdriver, do the world a favor and do not encourage DEWALT by buying its ratcheting screwdriver.

SQL Anywhere and Interactive SQL quietly losing transactions in default configurations

admin Wednesday July 20, 2016

SAP SQL Anywhere and its GUI Sybase Central (now SQL Central) have been part of my 5 most important tools for 4 years now. A few times, I noticed some oddities, but it wasn't until yesterday that I realized what was going on.

First, Interactive SQL starts transactions which are not automatically committed. By default, commits happen when closing or disconnecting (see the SQL Anywhere tab in Options). There is no warning to that effect. Second, the default SQL Anywhere isolation level for database transactions (at least in versions 11 to 17) is 0, "read uncommitted": http://dcx.sap.com/index.html#sqla170/en/html/3bf0ef526c5f1014b372935839b121fc.html
Which means that the changes from uncommitted transactions are all visible, from different sessions and even from different users. Which is why I did not realize how Interactive SQL behaved before now.

So far, this may be surprising, but perhaps nothing incorrect. Unfortunately, this comes with a ultimate surprise. When you execute a query in Interactive SQL in these default configurations, the transaction started is not committed. And after some time, it appears that the transaction is quietly cancelled, automatically. I reproduced this at the first attempt. If the abortion was indeed triggered by a timeout, I do not know how long the delay is, but it is inferior to 16 hours. The Interactive SQL window was still open, there was no popup, nor any indication that the transaction had expired. The Interactive SQL closed normally, without indicating that the transaction had timed out.

This happened with Sybase Central 16 and SQL Anywhere 11. Commit after every statement will workaround this, but will not cause automatic commits when modifying with the results table (either modifying cells or deleting rows).

Transactions are great, but when implemented properly. Thinking about all the manipulations which we must have lost due to this bug leaves a taste which is quite bitter, and certainly not ACID.

Duplicate form sections with jQuery - Improved

admin Friday May 27, 2016

Based on David Carr's excessively simple technique to duplicate form sections using JavaScript, here is my enhanced but still minimalist take, adding support for:

  1. select multiple
  2. starting the form with several sections already
  3. easy backend usage


This changes indices so they start at 0.
Image Duplicate Form Sections

//define template var template = $('#sections .section:first').clone(); //define counter var sectionsCount = jQuery('div.section:last').data('number'); function incrementIdentifier(id, sectionsCount) { if (id.substr(-1) == '0') { id = id.substr(0, id.length - 1); } return id + sectionsCount; } //add new section $('body').on('click', '.addsection', function() { //increment sectionsCount++; //loop through each input var section = template.clone().find(':input').each(function(){ //set id to store the updated section number newId = incrementIdentifier(this.id, sectionsCount); //update for label $(this).prev().attr('for', newId); //update id this.id = newId; var baseName = this.name; var array = false; if (baseName.substr(-2) == '[]') { array = true; baseName = baseName.substr(0, baseName.length - 2); } baseName = incrementIdentifier(baseName, sectionsCount); if (array) { baseName = baseName + '[]'; } this.name = baseName; }).end() //inject new section .appendTo('#sections'); jQuery('input[name=lastSection]').val(sectionsCount); return false; }); //remove section $('#sections').on('click', '.remove', function() { //fade out section $(this).parent().fadeOut(300, function(){ //remove parent element (main section) $(this).parent().parent().empty(); return false; }); return false; });


As a bonus, the PHP function I quickly crafted to ease processing the resulting $_REQUEST:

<?php /** * Treat $_REQUEST when working with duplicate-form-sections.js * $_REQUEST['numberedParameters'] contains the base name of the parameters to be converted into arrays * $_REQUEST['lastSection'] is the number of the last section (the number of sections minus 1) * Alters neither $_GET nor $_POST * @author Philippe Cloutier * @license MIT * @return boolean false on failure */ function numberedParametersToArrays() { if (! isset($_REQUEST['lastSection'])) { return false; } $numberedParameters = $_REQUEST['numberedParameters']; $lastSection = $_REQUEST['lastSection']; foreach ($numberedParameters as $numberedParameter) { $_REQUEST[$numberedParameter] = array(); for ($i = 0; $i <= $lastSection; $i++) { if (isset($_REQUEST[$numberedParameter . $i])) { $_REQUEST[$numberedParameter][] = $_REQUEST[$numberedParameter . $i]; } else { $_REQUEST[$numberedParameter][] = array(); } // We could unset the numbered parameters. } } return true; } ?>


And here is an adjusted usage example:

<form> <div id="sections"> <div class="section" data-number="0"> <fieldset> <legend>User</legend> <p> <label for="firstName">First Name:</label> <input name="firstName0" id="firstName0" value="" type="text" /> </p> <p> <label for="lastName">Last Name:</label> <input name="lastName0" id="lastName0" value="" type="text" /> </p> <p> Friends: <select name="friends1[]" id="friends1" size="2" multiple> <option>Alice</option> <option>Bob</option> </select> </p> <p><a href="#" class='remove'>Remove Section</a></p> </fieldset> </div> </div> <p><a href="#" class='addsection'>Add Section</a></p> <input type="hidden" name="numberedParameters[]" value="firstName"> <input type="hidden" name="numberedParameters[]" value="lastName"> <input type="hidden" name="numberedParameters[]" value="friends"> <input type="hidden" name="lastSection" value="0"> </form>


Note that there are similar solutions elsewhere. I am not saying this one is better than these.

You know you're getting old when...

admin Saturday May 7, 2016

You know part of your life is behind you when Debian is dropping support for your first computer (as well as your second). I can't help but feeling nostalgic when thinking about my good old Pentium 120 MHz (80502) and my AMD 450 MHz (K6-2). Ah, the good old times when CPU-s were the stars. Today, I do not even remember the model or frequency of the computers I work on, even though I chose them alone.

That being said, I'm happy Debian is finally making that move.

Are beta credit cards the right choice?

admin Sunday April 17, 2016

Tangerine bank started promoting its new Money-Back Credit Card several months ago. Wanting to avoid spending time on anything "beta", I did not request a card until, last month, I fell under the impression that the card was ready.

The ordering process was not bad, except for asking you to make a ridiculous choice between purchase categories granting extra money-back rewards. The process lets you define your credit limit.

When the package arrived, I was surprised to find the contract was printed on 4 unbound sheets of paper. But even more surprised to see the card's design:
Tangerine

Out of 4 adults asked, a single one could tell the right direction in which the card must be inserted (which is chip first, of course).

Fully Free

Kune ni povos is seriously freethough not completely humor-free:

  • Free to read,
  • free to copy,
  • free to republish;
  • freely licensed.
  • Free from influenceOriginal content on Kune ni povos is created independently. KNP is entirely funded by its freethinker-in-chief and author, and does not receive any more funding from any corporation, government or think tank, or any other entity, whether private or public., advertisement-free
  • Calorie-free*But also recipe-free
  • Disinformation-free, stupidity-free
  • Bias-free, opinion-free*OK, feel free to disagree on the latter.
  • Powered by a free CMS...
  • ...running on a free OS...
  • ...hosted on a server sharedby a great friend for free