The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘Development’ Category

Converting html fragments to reStructuredText

Posted by jpluimers on 2019/01/09

Though normally you would write documentation in reStructuredText, then generate HTML or PDF, often you find a part of the documentation source in HTML.

Here are some sites and tools I’ve used to convert HTML fragments to reStructuredText. I favour on-line over local command-line tools as usually these kinds of conversions are “one-time only”.

–jeroen

Posted in Development, Lightweight markup language, reStructuredText, Software Development | Leave a Comment »

List of Shell GUIDs for various Windows versions for use in shortcuts and batch files

Posted by jpluimers on 2019/01/09

In my search for starting the Windows Credential Manager from the console, I found [WayBackCredential Manager Shortcut – Create – Windows 7 Help Forums explaining:

%windir%\explorer.exe shell:::{1206F5F1-0569-412C-8FEC-3204630DFB70}

This reminded me of From batch file or shortcut: start Windows Update (via: Windows 7 Help Forums) and batch-file trick: Starting Windows Explorer and selecting a file (“explorer” commandline parameters “/n” “/e” “/select” “/root” “/start” site:microsoft.com).

The odd thing is that some of the GUID shortcuts works fine using the shell::: syntax, but fail with the /e:: syntax, for instance Windows Update until Windows 8.1:

%windir%\explorer.exe shell:::{36eef7db-88ad-4e81-ad49-0e313f0c35f8}
%windir%\explorer.exe /e,::{36eef7db-88ad-4e81-ad49-0e313f0c35f8}

One day I’ll create a table of permutations for various Windows versions and execute options.

For now these links need to suffice:

–jeroen

Posted in Batch-Files, Development, Power User, Scripting, Software Development, Windows, Windows 10, Windows 7, Windows 8, Windows 8.1, Windows 9 | 1 Comment »

Delphi sorcery: Loop wars – measuring performance

Posted by jpluimers on 2019/01/08

[WayBack] Delphi sorcery: Loop wars – measuring performance – already showing some nice optimisations that should have been in the RTL into the first place, – sprouted into a nice discussion at [WayBack] Since there was this offtopic argument going on about performance of for-in versus for-to. – Stefan Glienke – Google+ with some relatively straightforward forand for ... in loop compiler optimizations that could be done, but we have dreamt of for like the last decade or two.

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

OpenSuSE Tumbleweed on RaspberryPi 3: adding ” modprobe.blacklist=vc4″ to the kernel commandline was a lot tougher than I hoped for.

Posted by jpluimers on 2019/01/08

I run most of my Raspberry Pi systems headless, so I was a bit surprised that OpenSuSE tumbleweed on a Raspberry Pi 3B didn’t show anything on my HDMI monitor after I installed KDE after it switches away from text-mode boot output.

[WayBackHCL:Raspberry Pi3 – openSUSE suggests to

I see HDMI output in U-Boot, but not in Linux

The upstream Linux graphics driver for the Raspberry Pi has problems with a few monitors. The same applies to the 7″ LCD displays. In those cases, please fall back to the efi frame buffer console by passing the following into the kernel command line:

 modprobe.blacklist=vc4

However, it does not explain how to modify that “the kernel command line”.

Searching for obvious ways via “Raspberry Tumbleweed Kernel Command Line” got me to for instance

which all suggest editing /boot/cmdline.txt, however that file does not exist:

# ls -al /boot
total 34624
drwxr-xr-x  6 root root     4096 Jul 23 21:05 .
drwxr-xr-x 24 root root     4096 Jul 16 02:02 ..
-rw-r--r--  1 root root       65 Jul 16 12:42 .Image-4.4.76-7-default.hmac
-rw-r--r--  1 root root        0 Jul 16 16:56 0x75b762d5
lrwxrwxrwx  1 root root       22 Jul 16 16:34 Image -> Image-4.4.76-7-default
-rw-r--r--  1 root root 14878208 Jul 16 12:20 Image-4.4.76-7-default
-rw-r--r--  1 root root  3217519 Jul 16 12:20 System.map-4.4.76-7-default
lrwxrwxrwx  1 root root        1 Jul 16 02:00 boot -> .
-rw-r--r--  1 root root     1725 May 24 20:11 boot.readme
-rw-r--r--  1 root root     2405 Jul 16 16:56 boot.scr
-rw-r--r--  1 root root     2333 Jul 16 16:56 boot.script
-rw-r--r--  1 root root   152522 Jul 16 08:39 config-4.4.76-7-default
lrwxrwxrwx  1 root root       12 Jul 23 16:13 dtb -> dtb-4.11.6-1
drwxr-xr-x  3 root root     4096 Jul 23 16:13 dtb-4.11.6-1
drwxr-xr-x  5 root root    16384 Jan  1  1970 efi
drwxr-xr-x  7 root root     4096 Jul 24 18:27 grub2
lrwxrwxrwx  1 root root       23 Jul 16 16:34 initrd -> initrd-4.4.76-7-default
-rw-------  1 root root  8080932 Jul 23 21:05 initrd-4.4.76-7-default
-rw-r--r--  1 root root   288571 Jul 16 12:42 symvers-4.4.76-7-default.gz
-rw-r--r--  1 root root      377 Jul 16 12:42 sysctl.conf-4.4.76-7-default
-rw-r--r--  1 root root  1484762 Jul 16 16:56 unicode.pf2
drwxr-xr-x  2 root root     4096 Jul 24 09:05 vc
-rw-r--r--  1 root root  7282031 Jul 15 07:00 vmlinux-4.4.76-7-default.gz

There are other config.txt files:

# find / | grep config.txt
/boot/efi/config.txt
/boot/vc/config.txt

However, these seems to be unclear which of the two is actually used and what options can be set at all: [WayBackRaspberry Pi • View topic – aarch64 on Pi3.

So the quest continues, as a lot of settings can be applied in these files:

Setting “modprobe.blacklist=vc4”

I’ve temporarily given up on the /boot/config.txt editing, but continued searching for “modprobe.blacklist=vc4”, which lead to a few interesting results:

All of those suggest adding modprobe.blacklist=vc4 to the grub configuration. The second post actually has the most elaborate steps for this, which I’ve paraphrased into:

  1. As root, edit /etc/default/grub (make a backup first)
  2. Search for the variable GRUB_CMDLINE_LINUX
  3. Add the modprobe.blacklist=vc4to the end of the variable initialisation (ensure there is a space before it and you keep the terminating double-quote)
  4. Re-generate the grub configuration file used at boot time (make a backup first): grub2-mkconfig > /boot/grub2/grub.cfg

This solved my problem: no text output on HDMI.

Note that in order to get graphical output, you need to install any of the non-JeOS images. Installing just kde+kdm and dependencies isn’t enough to get the X server going.

–jeroen

Posted in Development, Hardware Development, Raspberry Pi | Leave a Comment »

What RDBMS do you use when doing location-aware things? 

Posted by jpluimers on 2019/01/08

There was a nice discussion on [WayBack] What RDBMS do you use when doing location-aware things?More specifically, I am looking into a simple app with use of GPS… – Andrea Raimondi – Google+

TL;DR: use PostGIS on top of PostgresSQL.

–jeroen

Posted in Database Development, Development, PostGIS | Leave a Comment »

Lock conflict on no wait transaction

Posted by jpluimers on 2019/01/04

Just in case I ever run into this again: [WayBack] Lock conflict on no wait transaction

–jeroen

Posted in Database Development, Development, Firebird, Power User | Leave a Comment »

DBA Blog 2.0: Installing Zabbix into Azure using a MySQL PaaS

Posted by jpluimers on 2019/01/04

Interesting: [WayBack] DBA Blog 2.0: Installing Zabbix into Azure using a MySQL PaaS

–jeroen

Posted in *nix, Azure Cloud, Cloud, Cloud Development, Development, Infrastructure, Monitoring, Power User, Software Development, Windows Azure, Zabbix | Leave a Comment »

The IOTAComponent.SetPropByName, when used for an integer property, always sets that property to 0 instead of the desired value.

Posted by jpluimers on 2019/01/03

Reminder to self: [WayBack…The IOTAComponent method SetPropByName, when used for an integer property, always sets that property to 0 instead of the desired value…. – Thomas Mueller (dummzeuch) – Google+

Fix in GExperts for the Rename Component functionality in [WayBack] GExperts / Code / Commit [r2318]: Workaround for an apparent OTA-bug: IOTAComponent.SetPropByName for integers always sets the property to 0 instead of the given value. Now we compare the values and if they don’t match use RTTY on the NativeObject to set it. This seems to work. (The bug exists on Delphi 2007 and 10.2, I haven’t tested other versions. The bugfix also works on these versions.):

         VInteger := StrToInt(Value);
         Result := AComponent.SetPropByName(PropertyName, VInteger);
+        if AComponent.GetPropValueByName(PropertyName, TempInt) then begin
+          // Setting an integer property often (always?) fails, so we check the value here and if
+          // it is different, we use the native object to set the value. This works.
+          // (Example: Try to set the Interval property of a TTimer. It always gets set to 0.)
+          // This happens in Delphi 2007 and 10.2, I haven't tested other versions.)
+          // -- 2018-07-16 twm
+          if TempInt <> VInteger then
+            SetPropValue(NativeObject, PropertyName, VInteger);
+        end;

Only the IOTAComponent interface is mentioned (only once!) in the documentation at [Archive.is] Using Editor Interfaces – RAD Studio, so I have ambivalent feelings on how important this is for Embarcadero to fix IOTAComponent.SetPropByName.

It has been broken since at least Delphi 2007 as per GExperts fix and XE3 as per [RSP-20895] IOTAComponent.SetPropByName always sets an integer to zero – Embarcadero Technologies.

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

Testing SMTP from the console on Linux, BSD and Mac OS: swaks and smtp-cli Perl script clients

Posted by jpluimers on 2019/01/03

Testing SMTP using telnet is tedious as you have to remember the commands and responses in the SMTP protocol. It gets even harder when doing SMTP AUTH, as then you have to base encode a bunch of strings [WayBackHow to Test SMTP AUTH using Telnet [Wiki] | NDCHost

Luckily there is a Perl script swaks: [WayBackSwaks – Swiss Army Knife for SMTP which does ESMTP and LMTP as well as TLS.

The funny thing is that the repository at jetmore/swaks: Swaks – Swiss Army Knife for SMTP only has the readme, but the not the script which you can get from [WayBack] swaks.pl.

Despite that, most Linux distributions have an installation package.

[WayBackswaks for OpenSuse is in the [WayBacknetwork repository, so for Tumbleweed (actually: Factory) on Raspberry Pi you need to perform this:

zypper addrepo http://download.opensuse.org/repositories/network/openSUSE_Factory_ARM/network.repo
zypper refresh
zypper install swaks

On Mac OS X it is even easier: if you have the homebrew package manager installed, you just install the [WayBackswaks formula using the [WayBack] swaks.rb script:

brew install swaks

Note there is also the smtp-cli Perl script which I mentioned before at Fake/Mock SMTP servers and services for use during development, which also does TLS, but few environments have ready built packages for them. If you still want to try it out:

For SMTP AUTH:

swaks -tls --to jeroen.wiert.me@pluimers.com --from jeroen.wiert.me@pluimers.com --server smtp.xs4all.nl --auth-user username

Which prompts for the password, then outputs like this:

=== Trying smtp.xs4all.nl:25...
=== Connected to smtp.xs4all.nl.
<- 220 smtp-cloud3.xs4all.net ESMTP ESMTP server ready -> EHLO rmbpro1tbjwp
<-  250-smtp-cloud3.xs4all.net hello [188.206.68.219], pleased to meet you
<-  250-HELP
<-  250-AUTH LOGIN PLAIN
<-  250-SIZE 157286400
<-  250-8BITMIME
<-  250-STARTTLS
<- 250 OK -> STARTTLS
<- 220 Ready to start TLS === TLS started with cipher TLSv1:DHE-RSA-AES256-SHA:256 === TLS no local certificate set === TLS peer DN="/OU=Domain Control Validated/OU=PositiveSSL Wildcard/CN=*.xs4all.nl" ~> EHLO rmbpro1tbjwp
<~  250-smtp-cloud3.xs4all.net hello [188.206.68.219], pleased to meet you
<~  250-HELP
<~  250-AUTH LOGIN PLAIN
<~  250-SIZE 157286400
<~  250-8BITMIME
<~ 250 OK ~> AUTH LOGIN
<~ 334 ############ ~> anA=
<~ 334 ############ ~> ############################
<~ 235 ... authentication succeeded ~> MAIL FROM:<jeroen.wiert.me@pluimers.com>
<~  250 <jeroen.wiert.me@pluimers.com> sender ok
 ~> RCPT TO:<jeroen.wiert.me@pluimers.com>
<~  250 <jeroen.wiert.me@pluimers.com> recipient ok
 ~> DATA
<~ 354 enter mail, end with "." on a line by itself ~> Date: Wed, 19 Jul 2017 09:09:57 +0200
 ~> To: jeroen.wiert.me@pluimers.com
 ~> From: jeroen.wiert.me@pluimers.com
 ~> Subject: test Wed, 19 Jul 2017 09:09:57 +0200
 ~> Message-Id: <20170719090957.052207@rmbpro1tbjwp>
 ~> X-Mailer: swaks v20170101.0 jetmore.org/john/code/swaks/
 ~> 
 ~> This is a test mailing
 ~> 
 ~> .
<~ 250 smtp-cloud3.xs4all.net accepted mail mXA71v00C4jr6ac01XA9Bo for delivery ~> QUIT
<~  221 smtp-cloud3.xs4all.net ESMTP closing connection
=== Connection closed with remote host.

–jeroen

Posted in *nix, *nix-tools, Communications Development, Development, Hardware Development, Internet protocol suite, Linux, openSuSE, Power User, Raspberry Pi, SMTP, SuSE Linux, Tumbleweed | Leave a Comment »

Various online CSV to Markdown converters: best is Markdown Tables generator – TablesGenerator.com

Posted by jpluimers on 2019/01/03

TL;DR: use Markdown Tables generator – TablesGenerator.com as it has the most features.

A few tools that help converting CSV (with separators like comma, semicolon and tab) to Markdown online:

  1. [Archive.csMarkdown Table Maker
    • Supports:
      • Use first line as headers
      • Auto detection of separator
      • Tab separated
      • Comma separated
      • Semicolon separated
    • Does not support:
      • Quote characters
  2. [WayBack] CSV to Markdown Table Generator — Donat Studios
    • Supports:
      • Use first line as headers
      • Tab separated
      • Comma separated
      • Semicolon separated
    • Does not support:
      • Quote characters
  3. [WayBackMarkdown Tables generator – TablesGenerator.com
    • Supports auto detection of:
      • Use first line as headers
      • Tab separated
      • Comma separated
      • Semicolon separated
      • Quote characters

–jeroen

Posted in CSV, Development, Lightweight markup language, MarkDown, Power User, Software Development | Leave a Comment »