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,854 other subscribers

The magic “procedure Touch(var …” construct

Posted by jpluimers on 2021/02/16

procedure Touch(var Argument);  
begin
end;

I included the above code in my blog a long time ago (2014 in fact: Delphi: always watch the compiler Warnings), but never got around to explain the why and how I got it, why it works and why it will likely work forever.

Background

Ever since the early Delphi days, there are three hints about “never used” of which the second often gets in the way during debugging:

(note that these %s only hold for non-managed types, which I also addressed in Why don’t I get the warning W1036 Variable “‘MyStrings’ might not have been initialized”… and Delphi 10.3 Rio got released; I’ll wait a while hoping to see more positive comments).

Usually the compiler is right, but sometimes it is not: [WayBack] Check your compiler warnings and hints. They may still be errors. | Shiftkey Software Blog

So once every while, you need this workaround:

Solution

The solution is to have a method with one untyped var parameter (a var parameter without any type: this way you can pass any field or variable to it) that just does nothing. Often I included only at the place I need it as this single line fragment: procedure Touch(var Argument); begin end;.

Former Delphi compiler engineer and Borland Chief Schientist Danny Thorpe handed this solution, I think it was during or around his famous BorCon99 in Philadelphi (and later BorCon2005 in San Jose) Reading Tea Leaves: The Fine Art of Debugging talk. The talk is not-online, but luckily there are notes and a StackOverflow post:

The session had seemingly simple things like this [WayBack] Shenoy At Work: Set Next Statement in Delphi? with the picture on the right.

Voiding the solution

I’ve seen teams making this method inline, but that voids it. Usually they do not see it as they already resolved the “never used” problem in another way.

Why it still works

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | 1 Comment »

Eurotec 6-6 uit bedrijf nemen

Posted by jpluimers on 2021/02/15

Even wat linkjes en notities, want Eurotec 6-6 wordt al tijden niet meer gemaakt ([WayBack] Euromatec maakt andere alarmsystemen) en steeds meer worden vervangen door andere alarmapparatuur.

–jeroen

Posted in LifeHacker, Power User | Leave a Comment »

Research list: getting rid of the Windows 10 Delivery Content data and service

Posted by jpluimers on 2021/02/15

Not sure yet if this is still possible, but on my research list as it pollutes low-resource Windows 10 VMs and computers the Delivery Content:

–jeroen

Read the rest of this entry »

Posted in Power User, Windows, Windows 10 | Leave a Comment »

Deleting the WebCache database – The IE browser cache | Apttech’s Blog

Posted by jpluimers on 2021/02/15

[WayBack] Deleting the WebCache database – The IE browser cache | Apttech’s Blog quotes from WayBack: C drive space is using up on terminal server after upgrading to IE10 or IE11 – AsiaTech: Microsoft Azure & Development:

With the new cache implementation, the cache files are saved in %LocalAppData%\Microsoft\Windows\WebCache\ folder. And, the cache files will be created when a new user logs on.

Actually, the database is a file named WebCacheV01.dat in the cache folder, and its initial size could be around 20-32MB. The size of this file will keep increasing along with you browse more and more websites.

save the below contents into ClearIECache.cmd file and try to fun this file.

echo OFF
net stop COMSysApp
taskkill /F /IM dllhost.exe
taskkill /F /IM taskhost.exe
taskkill /F /IM taskhostex.exe
del /Q %LocalAppData%\Microsoft\Windows\WebCache\*.*
net start COMSysApp
echo ON

Furthermore, you’d better deploy the batch file to a logoff script of your local GPO, here are the steps.

Related:

–jeroen

Posted in Internet Explorer, Power User, Web Browsers, Windows, Windows 10 | Leave a Comment »

Badhoevedorp, T106, Amsterdamse Baan, groot onderhoud

Posted by jpluimers on 2021/02/14

Je vindt onderstaande downloads en kaart niet via de detail pagina’s [Wayback] Verkeersoverlast door werkzaamheden Amsterdamse Baan en Lijnderbrug of [Wayback] Werkzaamheden Amsterdamse Baan en Lijnderbrug | Gemeente Haarlemmermeer.

Wel via [Wayback] Wegwerkzaamheden en wegafsluitingen | Gemeente Haarlemmermeer (klik op “Bekijk de kaart met wegwerkzaamheden en wegafsluitingen”) geleend van LTC Wegwerkzaamheden & Evenementen:

LTC Wegwerkzaamheden & Evenementen. Een overzicht van alle wegwerkzaamheden in en rond Haarlemmermeer.

Daar inzoomen op de “T106” brug tussen Lijnden en Amsterdam, en dan klikken op “Badhoevedorp, T106, Amsterdamse Baan, groot onderhoud”:

Badhoevedorp, T106, Amsterdamse Baan, groot onderhoud

Wanneer

Van 1-3-2021 tot en met 19-3-2021 (Periode 1)

Betrokken straten

Amsterdamse baan / S106

Soort

Asfaltering / wegverharding

Hinderklasse

Grote hinder (10-30 minuten)

Wegbeheerder

Gemeente Haarlemmermeer

Status

Plan afstemming gestart

Omschrijving

afsluiting voor gemotoriseerd verkeer

Contact informatie

Dhr. T. Kromwijk (KWS) 0611701477

Bijlage(n)

Omleidingen

Omleiding A

Omleiding B

Streetview

Kaart

Posted in LifeHacker, Power User | Leave a Comment »

Scribbr APA Generator – Genereer je bronvermelding volgens de APA-stijl (American Psychological Association citations of references)

Posted by jpluimers on 2021/02/12

[Archive.is] Scribbr APA Generator – Genereer je bronvermelding volgens de APA-stijl:

Selecteer het type bron, vul de invoervelden in en genereer eenvoudig de bron precies volgens de officiële APA-stijl.

Gerealteerd:

–jeroen

https://www.google.com/search?q=apa%20quoting%20style&cad=h

Posted in LifeHacker, Power User | Leave a Comment »

Word Shortcuts links

Posted by jpluimers on 2021/02/12

I was trying to get the love of my life from using a mouse into keyboard shortcuts.

They come natural to me as I learned them step by step from Word for Windows 1.0 until now as I have been a keyboard person since the early 1990s.

But she has been a mouse person all her life, struggling to become faster using word. The mouse became a hindrance, especially since so much has moved around to deeper levels in the Word user interface over time.

This is what I came up with after doing a few searches on-line:

I was amazed at how scattered out and incomplete the information in these links is.

–jeroen

Posted in Office, Power User, Word | Leave a Comment »

Buzzword Bingo: the words have not changed over the years.

Posted by jpluimers on 2021/02/12

Still as relevant as when introduced at [WayBack] Play Post-CES Buzzword Bingo:

Via: [WayBack] Still vaid … play-post-ces-buzzword-bing/ – Jürgen Christoffel – Google+

–jeroen

Posted in LifeHacker, Power User | Leave a Comment »

Evil environment variables….

Posted by jpluimers on 2021/02/11

I totally agree with Nick Craver “I absolutely hate environmental variables for configuration. They’re brittle, they’re ambient, they can be changed and FUBAR any known state underneath you, they’re an attack vector, just…”.

A little event in the early 1990s made me cautious whenever I see environment variables in use.

One of my clients had a network that had to be separated into three logical areas: one for workstations communicating with a certain server and some equipment, and another for a different server and other equipment, and finally a bunch of semi-local workstations that did some peer-to-peer and specialised equipment communication.

For that era, this was a LOT of stuff to manage.

Since users always were working from the same computers, and there was very little overlap between the areas, I created a bunch of login scripts. Since this was Novell NetWare 3.x era, you only had default, system and user login scripts (see [WayBack] NetWare 3 Login Script Fundamentals), of which only system+default or system+user could be combined. No groups scripts yet (:

So I introduced an environment variable NETWORK that would hold the kind of logical network.

Boy was I surprised that a few days later, the head of administration came to me with a problem: one of his administration programs – despite no documentation mentioning anything about such a feature – suddenly asked for a license!

A few hours of phone calls and trying later, we found the culprit: that software had an undocumented feature: when the NETWORK environment variable was set, it assumed a large corporate, with a very special license feature.

That was the day, I started to be wary of environment variables.

The workaround was simple: have the program being started with a batch file, temporarily clean the NETWORK environment variable, then run the application, and finally restore the environment variable.

Inspired by two tweets I got within a few days time:

–jeroen

Read the rest of this entry »

Posted in History, Power User, Security | Leave a Comment »

Still looking for base64url decoding tools, both on-line and for MacOS homebrew

Posted by jpluimers on 2021/02/11

Remember the screenshot on the right from yesterdays post Kristian Köhntopp explaining theories?

In the end, I:

  1. saved that tweet
  2. in archive.is
  3. then took the screenshot image from there (see below)
  4. cut out the grey parts, then posted the middle part

I much more would have used the screenshot functionality of Google as described here by Terence Eden:

[WayBack] twitter – How to convert a tweet to image – Stack Overflow

Google has a secret screenshot API

For example, you can use it to get a screenshot of a tweet like this

https://www.googleapis.com/pagespeedonline/v1/runPagespeed?screenshot=true&strategy=mobile&url=https%3a%2f%2ftwitter.com%2fedent%2fstatus%2f661570680253755392

At the bottom of that JSON response, you’ll see

"screenshot": {
     "data": "_9j_4AAQSkZJRgAB.....=",
     "height": 569,
     "mime_type": "image/jpeg",
     "width": 320
 }

You will need to Base64 decode it using the URL and Filename safe alphabet.

That will give you a JPG screenshot of the Tweet.

I was hoping for an on-line way, so I followed [WayBack] Google’s Secret Screenshot API – Terence Eden’s Blog.

The blog post pointed me to a Python based script ([WayBack] Python-Twitter-Hacks/websiteScreenshot.py at master · edent/Python-Twitter-Hacks · GitHub) but had no online way.

So I tried out a few on-line things myself that failed:

Then I found out the script was just a proof of concept with hard coded URL and filename.

So I forked the repository, and fixed the script basing it on Python 3.

More on that next week.

Related:

  • [WayBack] RFC 4648 – The Base16, Base32, and Base64 Data Encodings: Base 64 Encoding with URL and Filename Safe Alphabet:
       The Base 64 encoding with an URL and filename safe alphabet has been
       used in [12].
    ...
       An alternative alphabet has been suggested that would use "~" as the
       63rd character.  Since the "~" character has special meaning in some
       file system environments, the encoding described in this section is
       recommended instead.
    ...
       This encoding may be referred to as "base64url".  This encoding
       should not be regarded as the same as the "base64" encoding and
       should not be referred to as only "base64". 
    ...
       This encoding is technically identical to the previous one, except
       for the 62:nd and 63:rd alphabet character, as indicated in Table 2.
    ...
             Table 2: The "URL and Filename safe" Base 64 Alphabet
    
         Value Encoding  Value Encoding  Value Encoding  Value Encoding
             0 A            17 R            34 i            51 z
             1 B            18 S            35 j            52 0
             2 C            19 T            36 k            53 1
             3 D            20 U            37 l            54 2
             4 E            21 V            38 m            55 3
             5 F            22 W            39 n            56 4
             6 G            23 X            40 o            57 5
             7 H            24 Y            41 p            58 6
             8 I            25 Z            42 q            59 7
             9 J            26 a            43 r            60 8
            10 K            27 b            44 s            61 9
            11 L            28 c            45 t            62 - (minus)
            12 M            29 d            46 u            63 _
            13 N            30 e            47 v           (underline)
            14 O            31 f            48 w
            15 P            32 g            49 x
            16 Q            33 h            50 y         (pad) =
    

–jeroen

Read the rest of this entry »

Posted in Apple, Development, Encoding, Home brew / homebrew, Mac OS X / OS X / MacOS, Power User, Software Development, Web Browsers | Leave a Comment »