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

architecture – How much is too much Dependency Injection? – Software Engineering Stack Exchange

Posted by jpluimers on 2019/04/02

Mark Seeman posted a great answer with insights into how to architect applications: [WayBack] architecture – How much is too much Dependency Injection? – Software Engineering Stack Exchange

Some topics covered:

  • small code bases
  • pure DI over DI container
  • cases for both coarse and fine-grained DI
  • favour functional programming over OOP
  • both functional and DI ports and adapters

It links to a ton of other good reads for a quiet long weekend as well:

–jeroen

via: [WayBack] Favour Pure DI – Linas Naginionis – Google+

Posted in Design Patterns, Development, Software Development | Leave a Comment »

Interface methods are not assignment compatible with method references or methods of object.

Posted by jpluimers on 2019/04/02

Boy I wish that QC was still up and QualityPortal was publicly indexable as that would have saved me quite a bit of time tracking this down. Luckily I got help from Stefan Glienke (who maintains the awesome Spring4D library based on modern Delphi compiler support) when I mentioned

How good are you with reference to function?
I’ve an odd compiler thing throwing errors when using interfaces but not with classes.

So, for posterity:

Unlike C#, in Delphi interface methods are not compatible with method references or methods of object.

This has many manifestations, which means you can get a variety of compiler errors. I’ve listed the ones I could find below, but presume there are more and if I find more will update this post.

These are the errors you can get:

  • E2010 Incompatible types: ‘T’ and ‘Procedure’
  • E2035 Not enough actual parameters
  • E2250 There is no overloaded version of ‘FirstOrDefault’ that can be called with these arguments

These are the (now defunct, but used to be publicly accessible) QC and QualityPortal (needs sign on) entries (thanks Stefan Glienke and Blaise Thorn for reporting these):

The really frustrating part is that the RSP is marked as “new feature” whereas clearly it isn’t, so it probably never will be fixed.

A workaround for now is to wrap the interface method references with:

  • either anonymous methods (when you have just a few classes to cover, but maybe more than a few methods on the interface)
  • or instance methods on a class (when there are many classes to cover and preferably few methods on the interface)

Examples are in the code below that also shows this works fine and dandy in C#.

–jeroen

Read the rest of this entry »

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 10.2 Tokyo (Godzilla), Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development, Spring4D | Leave a Comment »

Google Local Guides Nederland after G+

Posted by jpluimers on 2019/04/02

For my information archive as G+ died:

From the (unarchived, but disappeared) Is er al iemand een slack kanaal gestart waar we als localguides heen kunnen?

Read the rest of this entry »

Posted in Google, GoogleMaps, Local Guides, Power User | Leave a Comment »

Requirements to write multi threaded code

Posted by jpluimers on 2019/04/01

Steps:

  1. get gist.github.com – Developers must be this tall to write multi threaded code
  2. render to PNG/PDF/HTML
  3. print
  4. attach to wall

Via [WayBack] Kristian Köhntopp – Google+

Related:

Bernd Paysan’s:

The three most 2. common race
1. off-by-one software conditions
errors:
counting
core dumped (Segmentation fault in printf)

–jeroen

Read the rest of this entry »

Posted in Development, Fun, Multi-Threading / Concurrency, Software Development | Leave a Comment »

CV installaties optimaliseren en inregelen

Posted by jpluimers on 2019/04/01

Een aantal interessante linkjes:

–jeroen

Posted in LifeHacker, Power User | Leave a Comment »

debugging – Find what javascript changes the DOM? – Stack Overflow

Posted by jpluimers on 2019/04/01

I know I’m going to need this one day: [WayBackdebugging – Find what javascript changes the DOM? – Stack Overflow

Via: [WayBack] Javascript “Why”: Wenn ich eine fertig geladene Webseite sehe und wissen möchte, warum “dieses Element da” (Bild, Script, div) geladen worden ist, wie… – Kristian Köhntopp – Google+

–jeroen

Posted in Chrome, Development, JavaScript/ECMAScript, Power User, Scripting, Software Development, Web Browsers, Web Development | Leave a Comment »

Geek Prank 😈😂😜 Windows XP Desktop Prank

Posted by jpluimers on 2019/04/01

Prank your friends by secretly opening this website on their computer while they’re away. Wait for them to return and watch their reaction

[WayBack] Geek Prank 😈😂😜 Windows XP Desktop Prank

There are others too, for instance:

Via: [WayBack] geekprank.com Simulate Windows XP, Windows 7, Windows 10 and other annoyances in the browser (and switch it to full screen). – Thomas Mueller (dummzeuch) – Google+

Edit 20250730: per comments below there is also [Wayback/Archive] Windows XP – Full Screen || Geek Pranks which has two other pranks as well:

  1. [Wayback/Archive] Hacker Typer Online | GeekPrank
  2. [Wayback/Archive] Fake Broken Screen Prank || Geek Prank (these images are too low a resolution to be usable)

--jeroen

Posted in Apri1st, Fun, Prank | 3 Comments »

Sending SMS from your PC using a web browser through your Android Phone

Posted by jpluimers on 2019/03/29

I have been a long-time PushBullet user, but I bumped into an alternative if you just want to send SMS from a PC using a web browser through your Android Phone.

You will miss out all the other neat PushBullet features (like clipboard support), but it does work:

There is even a Mac warpper for it:

–jeroen

Posted in Android Devices, Power User | Leave a Comment »

ESXi 6.5: mount a datastore that does not automount; esxcfg-volume to the rescue

Posted by jpluimers on 2019/03/29

I had a 1.5 TB SATA disk with VMFS5 created on ESXi 5.1 that would not want to mount on ESXi 6.5 automatically, not even after a rescan, or fresh boot, so I did this:

[root@ESXi-X10SRH-CF:~] esxcfg-volume --help
esxcfg-volume
-l|--list                                List all volumes which have been
                                         detected as snapshots/replicas.
-m|--mount              Mount a snapshot/replica volume, if 
                                         its original copy is not online.
-u|--umount             Umount a snapshot/replica volume.
-r|--resignature        Resignature a snapshot/replica volume.
-M|--persistent-mount   Mount a snapshot/replica volume
                                         persistently, if its original copy is
                                         not online.
-U|--upgrade            Upgrade a VMFS3 volume to VMFS5.
-h|--help                                Show this message.
[root@ESXi-X10SRH-CF:~] esxcfg-volume --list
Scanning for VMFS-3/VMFS-5 host activity (512 bytes/HB, 2048 HBs).
VMFS UUID/label: 59a5306c-a8793061-4a23-001f29022aed/ST1500LM0032D9YH148-backup
Can mount: Yes
Can resignature: Yes
Extent name: naa.5000c5002dba6642:1 range: 0 - 1430527 (MB)

Scanning for VMFS-3/VMFS-5 host activity (512 bytes/HB, 2048 HBs).
VMFS UUID/label: 532cd010-6e8c01d1-45be-001f29022aed/Raid6SATA
Can mount: Yes
Can resignature: Yes
Extent name: naa.600605b00aa054a0ff000021022683ae:1 range: 0 - 1830143 (MB)

[root@ESXi-X10SRH-CF:~] esxcfg-volume -m 532cd010-6e8c01d1-45be-001f29022aed/Raid6SATA
No matching volume 532cd010-6e8c01d1-45be-001f29022aed/Raid6SATA found!
[root@ESXi-X10SRH-CF:~] esxcfg-volume --mount 532cd010-6e8c01d1-45be-001f29022aed
Mounting volume 532cd010-6e8c01d1-45be-001f29022aed

Based on: [WayBackMount VMFS Datastore – via GUI or via CLI [Guide] – ESX Virtualization

–jeroen

Posted in ESXi5.1, ESXi6.5, Power User, Virtualization, VMware, VMware ESXi | Leave a Comment »

ssh from Mac OS X to ESXi: “WARNING: terminal is not fully functional”

Posted by jpluimers on 2019/03/29

When connecting from my Mac to my ESXi rig, some commands (especially less) show this output:

WARNING: terminal is not fully functional

So I created this alias to connect from my Mac to the internal address of my ESXi rig:

alias ssh-esxi-X10SRH-CF-internal='TERM=xterm ssh -p 22 root@192.168.71.91'

The trick is the bold part: TERM=xterm (which you can also replace by export TERM=xterm; if you want future ssh sessions to use the same [wayback] TERM setting).

The reason is that the Mac defines the TERM variable as containing xterm-256 which is defined on the Mac itself, but ESXi has a hard time coping with it.

Some Mac OS and Xcode combinations had a problem with xterm-256 not being present ([WayBackmacos – Terminal strangeness after installing Xcode on Lion – Super User), but this isn’t the case on my system:

$ ls -alh `find /usr/share/terminfo | grep 'xterm-256color'`
-rw-r--r-- 1 root wheel 3.2K Jul 30 2016 /usr/share/terminfo/78/xterm-256color

On the Mac you really want to use xterm-256color as it looks way better than xterm-color or xterm: [WayBacklinux – What is the difference between xterm-color & xterm-256color? – Stack Overflow (thanks [WayBack] Chris Page!)

It seems I already did something similar on ESXi itself to get esxtop working: ESXi: when esxtop shows garbage. That was on the ESXi side and works as well for this problem too.

However, it is a bit harder to have a script run during ESXi boot time that sets this, so it is easier to fix this on the Mac side.

It works for all OS X and ESXi versions I’ve tested so far.

–jeroen

Posted in *nix, Apple, ESXi5.1, ESXi5.5, ESXi6, ESXi6.5, iMac, Mac, Mac OS X / OS X / MacOS, Mac OS X 10.4 Tiger, Mac OS X 10.5 Leopard, Mac OS X 10.6 Snow Leopard, Mac OS X 10.7 Lion, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, macOS 10.12 Sierra, OS X 10.10 Yosemite, OS X 10.11 El Capitan, OS X 10.8 Mountain Lion, OS X 10.9 Mavericks, Power User, Virtualization, VMware, VMware ESXi | Leave a Comment »