The Wiert Corner – irregular stream of stuff

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

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

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

    Join 1,861 other subscribers

Archive for August, 2021

Unicode superscript and subscript alphabetic letters

Posted by jpluimers on 2021/08/04

Not all letters have superscript or subscript counterparts. The counterparts are from different ranges, so might not look nice when next to each other.

I think 20th using Unicode lowercase superscript looks ugly 20ᵗʰ. With uppercase superscript it is somewhat OK: 20ᵀᴴ.

The list is from [WayBack] javascript – How to find the unicode of the subscript alphabet? – Stack Overflow:

Take a look at the wikipedia article Unicode subscripts and superscripts. It looks like these are spread out across different ranges, and not all characters are available.

Consolidated for cut-and-pasting purposes, the Unicode standard defines complete sub- and super-scripts for numbers and common mathematical symbols ( ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ), a full superscript Latin lowercase alphabet except q ( ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ ), a limited uppercase Latin alphabet ( ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ ), a few subscripted lowercase letters ( ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ ), and some Greek letters ( ᵅ ᵝ ᵞ ᵟ ᵋ ᶿ ᶥ ᶲ ᵠ ᵡ ᵦ ᵧ ᵨ ᵩ ᵪ ). Note that since these glyphs come from different ranges, they may not be of the same size and position, depending on the typeface.

After a nice chat with my nephew EWD, I did some research and found the above via

–jeroen

Posted in Development, Encoding, internatiolanization (i18n) and localization (l10), Power User, Software Development, Unicode | Leave a Comment »

Naming of naming styles should reflect their casing · Issue #35243 · dotnet/roslyn · GitHub

Posted by jpluimers on 2021/08/04

If this is still open, please vote for it: [WayBack] Naming of naming styles should reflect their casing · Issue #35243 · dotnet/roslyn · GitHub

Having the drop down of naming styles reflect the actual output in one way or the other will make it way easier to select the correct one.

Besides that, a few new naming styles are suggested in this issue, like snake_case which is great for translating APIs that are already in that form.

Via:

–jeroen

Posted in .NET, C#, C# 6 (Roslyn), C# 7, C# 8, Development, Software Development | Leave a Comment »

TestInsight: when you think the math does not add up…

Posted by jpluimers on 2021/08/04

You’d think the math does not add up:

But it does: both “Success” and “Warnings” are counted as “passed”.

 

TL;DR: ensure the yellow “Warning” triangle is enabled

–jeroen

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

Windows: starting Chrome in full-screen kiosk mode from a batch file

Posted by jpluimers on 2021/08/03

When configuring a web-based kiosk for someone with Alzheimer’s disease, I wanted to start Chrome in full-screen kiosk mode.

Chrome full-screen kiosk mode

The secret for full-screen kiosk mode is to pass the -start-fullscreen command-line option. Thanks [WayBack] User ginomay89 – Super User for answering that in [WayBack] tablet – How to set Google Chrome to automatically open up and in full screen – Super User.

Finding chrome

At first I thought about differentiating on the chrome.exe location that you can find in the registry. This turned out to be depending on how you install Chrome:

  • locally for the current user by a non-local-administrator user (by default the location is under %LocalAppData%)
  • globally for all users by a local-administratator user (by default is under %ProgramFiles(x86)%)

Oddly, there is no way (not even by denying UAC elevation!) for a local administrator to install Chrome for only the current user.

This is odd, as when non-local-administrator denies UAC, the installation is locally to the user.

Then I remembered there are two ways for Windows to find an application

The cool thing is that the start command does the latter, so I came up with this batch file that starts chrome with the -start-fullscreen parameter that will initiate kiosk mode with the default chrome settings:

start "Chrome Kiosk Mode" chrome --start-fullscreen

In case I want to compare the registry settings

Basically sorting out the registry settings would mean parsing the references to chrome.exe (often with extra parameters) in the below registry key/value-name pairs.

One day I might need to do this for different reasons, but currently the start trick suffices.

Read the rest of this entry »

Posted in Batch-Files, Development, Power User, Scripting, Software Development, Windows | Leave a Comment »

Firefox: disable DNS over HTTPS (which they call TTR)

Posted by jpluimers on 2021/08/03

There are many reasons to disable DNS over HTTPS (DoH), of which enough are discussed in the links below.

Disabling DoH always talks about setting TTR (the abbreviation Mozilla uses for it) to 5 (like [WayBack] Thread by @isotopp: “Firefox is about to break DNS by enabling DNS-over-HTTP by default […]”), but hardly ever explains the meaning of 5, or any other potential values.

After some searching, I found [WayBack] Firefox disable trr | Knowledge Base:

  • 0: Off by default
  • 1: Firefox chooses faster
  • 2: TRR default w/DNS fallback
  • 3: TRR only mode
  • 5: Disabled

I imagine the setting we’re all looking for is: user_pref(“network.trr.mode”, 5); (emphasis mine)

It pointed me to [WayBack] Trusted Recursive Resolver – MozillaWiki:

Read the rest of this entry »

Posted in Cloud, Cloudflare, Communications Development, Development, DNS, Firefox, Infrastructure, Internet protocol suite, Power User, TCP, Web Browsers | Leave a Comment »

Parser generator toolset for Delphi (Yacc & Lex)

Posted by jpluimers on 2021/08/03

The most current Lex and Yacc for Delphi is [WayBack] GitHub – RomanYankovsky/ndyacclex: Parser generator toolset for Delphi (Yacc & Lex).

It came up during a funny Twitter thread, where one of the Delphi team members asked for it, despite – after decades of asking – there still being no official Delphi grammar available from the Delphi team, nor Google Search skills [WayBack].

Basically a parser generator is only as useful as the grammar you have for it.

There is no open source grammar for Delphi yet, so the best you can start with is from the same author: [WayBack] GitHub – RomanYankovsky/DelphiAST: Abstract syntax tree builder for Delphi

With DelphiAST you can take real Delphi code and get an abstract syntax tree. One unit at time and without a symbol table though.

Relevant tweets:

–jeroen

Posted in Delphi, Development, Software Development, Undocumented Delphi | 1 Comment »

Factory reset a MikroTik hEX PoE RB960PGS using the reset button

Posted by jpluimers on 2021/08/02

[WayBack] Manual:Reset – MikroTik Wiki:

 unplug the device from power

2) press and hold the button right after applying power

Note: hold the button for 5 seconds (USER LED will start flashing)

3) release the button to clear configuration.

Icon-note.png Note: If you wait until LED stops flashing, and only then release the button – this will instead launch Netinstall mode, to reinstall RouterOS.

Initial configuration

(see also [WayBack] Manual:First time startup – MikroTik Wiki)

  1. Connect your machine to port 1 on the Mikrotik hEX PoE RB960PGS (after the reset, this port will have IPv4 address 192.168.88.2 with netmask 255.255.255.0)
  2. Ensure your local machine to IPv4 address 192.168.88.2 with netmask 255.255.255.0 (otherwise WinBox might not see the router, not even in discovery mode):

  3. Have WinBox auto discover it:

  4. Connect with user admin and no password:

     

  5. Configure your Mikrotik hEX PoE RB960PGS as router or switch

For switch, I prefer a setting like this (the bold portions are different from the default configuration):

/interface bridge
add admin-mac=64:D1:54:13:98:E6 auto-mac=no comment=defconf name=bridgeLocal
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip hotspot profile
set [ find default=yes ] html-directory=flash/hotspot
/interface bridge port
add bridge=bridgeLocal comment=defconf interface=ether1
add bridge=bridgeLocal comment=defconf interface=ether2
add bridge=bridgeLocal comment=defconf interface=ether3
add bridge=bridgeLocal comment=defconf interface=ether4
add bridge=bridgeLocal comment=defconf interface=ether5
add bridge=bridgeLocal comment=defconf interface=sfp1
/ip dhcp-client
add comment=defconf dhcp-options=hostname,clientid disabled=no interface=bridgeLocal
/ip dns static
add address=192.168.88.1 name=router.lan
/system clock
set time-zone-name=Europe/Amsterdam
/system identity
set name="RB960PGS <<location-name>>"
/system ntp client
set enabled=yes server-dns-names=0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org

–jeroen

Posted in Internet, MikroTik, Power User, routers | Leave a Comment »

Geurthee nr. 5 theebuiltjes – De Pelikaan Zutphen – Koffie/theespecialist sinds 1816

Posted by jpluimers on 2021/08/02

[WayBack] Geurthee nr. 5 theebuiltjes – De Pelikaan Zutphen – Koffie/theespecialist sinds 1816

Een huisgemelangeerde zwarte thee met een gerookt tintje. Perfecte keuze als u van Earl Grey houdt en opzoek bent naar een extra smaaksensatie

Onze Geurthee nr. 5 is een gemelangeerde zwarte thee. Naast dat wij onze Geurthee nr. 2 hiervoor gebruiken, zitten er nog meer theesoorten in verwerkt zoals Lapsang Souchong. Lapsang Souchong is een zwarte theesoort uit China en is erg sterk van smaak. Deze thee wordt in bamboemanden gedroogd boven brandend naald- of cypressenhout. Dit zorgt ervoor dat er zich een sterke rooksmaak ontwikkeld. Ook is de Geurthee nr. 5 sterk gearomatiseerd met Bergamot-olie. Bergamot is een citrusvrucht die wordt gebruikt als smaakmaker in Earl Grey. Door al deze ingrediënten met elkaar te melangeren, ontstaat er een heerlijke Earl Grey met een gerookt tintje

____

Theekopje Pelikaan   ZETADVIES (1 kop): 1 zakje, water opschenken (95°C -100°C), 2-3 minuten laten trekken. Één zakje kan zelfs voor een hele pot gebruikt worden!

____

15 piramide theebuiltjes

Via [WayBack] Frederike op Twitter: “Dan vind jij Geurthee 5 van @pelikaankoffie vast ook lekker.… “

–jeroen

Read the rest of this entry »

Posted in LifeHacker, Power User | Leave a Comment »

Create & use pivot tables – Computer – Docs Editors Help

Posted by jpluimers on 2021/08/02

This was way easier than I thought it would be; it’s just that the meny items are different from Excel: [WayBack] Create & use pivot tables – Computer – Docs Editors Help.

The page has much more, but these are the initial steps:

Add or edit pivot tables

  1. On your computer, open a spreadsheet in Google Sheets.
  2. Select the cells with source data you want to use. Important: Each column needs a header.
  3. In the menu at the top, click Data and then Pivot table. Click the pivot table sheet, if it’s not already open.
  4. In the side panel, next to “Rows” or “Columns,” click Add, then choose a value.
    • Note: Sometimes, you’ll see recommended pivot tables based on the data you choose. To add a pivot table, under “Suggested,” choose a pivot table.
  5. In the side panel, next to “Values,” click Add, then choose the value you want to see over your rows or columns.
  6. You can change how your data is listed, sorted, summarized, or filtered. Next to what you want to change, click the Down Arrow Down Arrow.

–jeroen

Read the rest of this entry »

Posted in Google, GoogleDocs, GoogleSheets, Power User | Leave a Comment »