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

Show SCSI / HBA modules in ESXi 6.5 with file and version information

Posted by jpluimers on 2019/05/02

A small script I made: Show SCSI / HBA modules in ESXi 6.5 with file and version information:

MODULES=`esxcfg-scsidevs --hbas | awk 'FNR > 0 {print $2}'`
for MODULE in $MODULES ; do
    # echo "Probing $MODULE"
    vmkload_mod --showinfo $MODULE | grep 'file: \|Version'
done

The script is based on ideas from [WayBackDetermining Network/Storage firmware and driver version in ESXi 4.x and later (1027206) | VMware KB

It works in at least ESXi 6.5 where it shows this on one of my systems:

 input file: /usr/lib/vmware/vmkmod/lsi_msgpt3
 Version: 12.00.02.00-11vmw.650.0.0.4564106
 input file: /usr/lib/vmware/vmkmod/vmw_ahci
 Version: 1.0.0-39vmw.650.1.26.5969303
 input file: /usr/lib/vmware/vmkmod/vmw_ahci
 Version: 1.0.0-39vmw.650.1.26.5969303
 input file: /usr/lib/vmware/vmkmod/vmw_ahci
 Version: 1.0.0-39vmw.650.1.26.5969303
 input file: /usr/lib/vmware/vmkmod/lsi_mr3
 Version: 6.910.18.00-1vmw.650.0.0.4564106
 input file: /usr/lib/vmware/vmkmod/megaraid_sas
 Version: Version 6.603.55.00.2vmw, Build: 4564106, Interface: 9.2 Built on: Oct 26 2016
 input file: /usr/lib/vmware/vmkmod/vmkusb
 Version: 0.1-1vmw.650.1.26.5969303

–jeroen

Read the rest of this entry »

Posted in bash, Development, ESXi6.5, Power User, Scripting, Software Development, Virtualization, VMware, VMware ESXi | Leave a Comment »

Note that the Delphi superobject library has changed to “not maintained” in december 2018, has problems with large address aware

Posted by jpluimers on 2019/05/02

A while ago I found out the [WayBack] not maintained status · hgourvest/superobject@f1c42db · GitHub.

This means you should not use the [WayBack] superobject JSON library in Delphi any more: there won’t be any fixes.

Many people use it, especially because it used to be much more stable than the built-in JSON support of Delphi.

One breaking issue in superobject is the lack of large address space support: due to the pointer calculations in various places, it does not support pointers above the 2 gibibyte boundary as filed in the 2016 [WayBack] Issues with {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} · Issue #22 · hgourvest/superobject · GitHub

This gives problems in at least this case:

  • enabling {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} (in older Delphi 7 through 2006 also versions this was {$SetPEFlags $20})
  • using top-down memory allocation, for instance by:
    • a user setting HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management value AllocationPreference to hex value 00100000
    • using FastMM4 with the (default) {$define AlwaysAllocateTopDown} setting

Example registry file and batch file to enable top-down memory (reboot afterwards):

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"AllocationPreference"=dword:00100000

Command to view:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" | findstr "AllocationPreference"

Command to enable:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v AllocationPreference /t REG_DWORD /d 00100000 /f

Command to disable:

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v AllocationPreference /f

Large Address Aware is a nightmare

Be very very very careful with this, and by enabling Large Address Aware to your executables, as many times they can load 3rd party libraries that often are beyond your control.

Even if there is a slight chance that your code is being used with Large Address Aware enabled, then follow guidelines line in [WayBack] windows – Unit Testing for x86 LargeAddressAware compatibility – Stack Overflow

Summary of [WayBack] memory – Drawbacks of using /LARGEADDRESSAWARE for 32 bit Windows executables? – Stack Overflow:

blindly applying the LargeAddressAware flag to your 32bit executable deploys a ticking time bomb!

by setting this flag you are testifying to the OS:

yes, my application (and all DLLs being loaded during runtime) can cope with memory addresses up to 4 GB.
so don’t restrict the VAS for the process to 2 GB but unlock the full range (of 4 GB)”.

but can you really guarantee?
do you take responsibility for all the system DLLs, microsoft redistributables and 3rd-party modules your process may use?

Edit 20240628

Earlier this year, the SuperObject Delphi library got archived on GitHub. Definitely unmaintained: [Wayback/Archive] GitHub – hgourvest/superobject: This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

The XSuperObject library mentioned below in a comment has not been maintained for 4 years either ( [Wayback/Archive] GitHub – onryldz/x-superobject: Delphi Cross Platform Rapid JSON: “vkrapotkin Now ParseFromFile can read UTF8-BOM files (#136) 2d3ec01 · 2020-12-09”), so I wonder what alternatives are still available.

--jeroen

Posted in Conference Topics, Conferences, Delphi, Development, EKON, Event, Software Development | 4 Comments »

@rw@mastodon.social on Twitter: “Personally, I prefer to increase the spacing for each successive indent according to the Fibbonaci sequence:… “

Posted by jpluimers on 2019/05/01

Awesome! [WayBack@rw@mastodon.social on Twitter: “Personally, I prefer to increase the spacing for each successive indent according to the Fibbonaci sequence:… “

Via [WayBack] The indentation debate just ended – G+ – CodeProject

–jeroen

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

Delphi function result assignments before the function returns…

Posted by jpluimers on 2019/05/01

Eric Grange:

Actually it is not that assignments of function return values can happen “when the function raises an exception” but rather than they can happen before the function returns.

Note that this is not limited to large return types, it can also happen on reference counted types (string, dynamic array, variant and interface), though this is contextual as well…

Got bit by the interface thing a few months ago, an interface release was triggering an exception when the result was assigned, the call stack looked way out of synch with the code, so various compilation and and map file mismatch issues got investigated, before I dropped in asm view in the debugger, which made it all obvious.

I’ve quoted it in full as I’ve been bitten by this a few times as well, but never got to making a proper blog post on it.

Thanks Eric for phrasing this and David for bringing it up.

It actually has been the case since somewhere toward the end of the Turbo Pascal era.

Source: [WayBackThis program: {$APPTYPE CONSOLE} uses System.SysUtils; type TRec1 = r…

–jeroen

Posted in Delphi, Development, History, Pascal, Software Development, Turbo Pascal | Leave a Comment »

1N73LL1G3NC3 15 7H3 4B1L17Y 70 4D4P7 70 CH4NG3. 573PH3N HAWKING

Posted by jpluimers on 2019/05/01

It might not be from him at all, but still a nice T-Shirt worthy quote:

1N73LL1G3NC3 15 7H3 4B1L17Y 70 4D4P7 70 CH4NG3.
573PH3N HAWKING

–jeroen

via: https://plus.google.com/+KevinPowick/posts/9D9hsyTwdFu

 

Posted in Fun, Quotes, T-Shirt quotes | Leave a Comment »

No, Visual Studio Community 2017 is not a 30 day trial – via Stack Overflow

Posted by jpluimers on 2019/04/30

Visual Studio Community 2017 needs a license renewal every ~30 days with a Microsoft account: [WayBack] Visual Studio Community 2017 is a 30 day trial? – Stack Overflow.

This means it is not a trial, but it does not a Microsoft account, and communicate with it every ~30 days which you can get at [WayBack] Microsoft account | Sign In or Create Your Account Today.

Messages you can get:

  • “We could not download a license. Please check your network connection or proxy settings” – meaning: sign in with a Microsoft account by clicking “Add an account…”
  • “We could not download a license, Please ensure your accounts are authenticated.” – meaning you have to click “Reenter your credentials”

–jeroen

Posted in .NET, Development, Software Development, Visual Studio 2017, Visual Studio and tools | Leave a Comment »

bash – aliasing cd to pushd – is it a good idea? – Unix & Linux Stack Exchange

Posted by jpluimers on 2019/04/30

On my research list: [WayBackbash – aliasing cd to pushd – is it a good idea? – Unix & Linux Stack Exchange

It has a nice discussion on complements to pushd/popd/cd/dirs including a very nice set of navd scripts that eases the navigation of the directory stack.

I found it because the ESXi busybox does not have pushd and popd and a cd won’t work from inside a shell script: [WayBacklinux – Why doesn’t “cd” work in a bash shell script? – Stack Overflow

It also made me find out that the ESXi busybox does support cd - to go to the previous directory. More info on that cd syntax is at [WayBack] bash – Difference between “cd -” and “cd ~-” – Unix & Linux Stack Exchange

–jeroen

Posted in *nix, bash, Development, ESXi5, ESXi5.1, ESXi5.5, ESXi6, ESXi6.5, Power User, Scripting, Software Development, Virtualization, VMware, VMware ESXi | Leave a Comment »

compiling – Where do executables look for shared objects at runtime? – Unix & Linux Stack Exchange

Posted by jpluimers on 2019/04/30

Thanks Gilles for answering [WayBackcompiling – Where do executables look for shared objects at runtime? – Unix & Linux Stack Exchange.

Abstract:

In a nutshell, when it’s looking for a dynamic library (.so file) the linker tries:

  • directories listed in the LD_LIBRARY_PATH environment variable (DYLD_LIBRARY_PATH on OSX);
  • directories listed in the executable’s rpath;
  • directories on the system search path, which (on Linux at least) consists of the entries in /etc/ld.so.conf plus /lib and /usr/lib.

–jeroen

Posted in Development, Software Development | Leave a Comment »

osx lion – osx change printer ip address without adding new printer – Super User

Posted by jpluimers on 2019/04/29

From [WayBack] osx lion – osx change printer ip address without adding new printer – Super User:

Q

Is there a way to change a printer’s IP address in OSX (Lion) without having to add a new printer? I did find Printer IP Remedy, but was curious if there was an ‘official’ method.

A

You can do this in the CUPS web interface with the following steps:

  1. Open Terminal.app and run cupsctl WebInterface=yes. This enables the CUPS web interface
  2. Open http://127.0.0.1:631/printers in your web browser
  3. Click on the printer you want to change. From the “Administration” drop down, select “Modify Printer”.
  4. Log in with your local admin account
  5. Select the new printer IP either from “Discovered Network Printers” or add it manually with “Other Network Printers”. Make sure that you keep the same connection protocol as it says in “Current Connection” (for me, this was LPD).

Once you’re done with this, Mac OS X will directly print to the new IP address. There is no need to reboot or so. If you want to disable the CUPS web interface again, run cupsctl WebInterface=no.

The CUPS solution works splendid in MacOS as well, so there was no need for [Archive.is] Printer IP Remedy 1.3 free download for Mac | MacUpdate.

Without the CUPS web interface enabled, the web-interface at http://127.0.0.1:631/printers looks like this:

Web Interface is Disabled

The web interface is currently disabled. Run “cupsctl WebInterface=yes” to enable it.

After enabling it like the CUPS web interface wit cupsctl WebInterface=yes, you can see I have the same printer configured multiple times with different communication protocols and output languages:

Printers

Search in Printers:

Showing 6 of 6 printers.

Queue Name Description Location Make and Model Status
OKI_MC342_36855D OKI-MC342-PSO-36855D Office MC342-AirPrint Idle
OKI_MC342_36855D_PCL OKI-MC342-36855D PCL 1060NP-Office Generic PCL Laser Printer Idle
OKI_MC342_IPP OKI-MC342-IPP Office Generic PostScript Printer Idle
OKI_MC342_LPR OKI-MC342-LPR Office Generic PostScript Printer Idle

The first two printers were mapped by DNS, but the last two were mapped by IP address.

Changing the IP address was simple:

  1. Click on each link
  2. Select “Modify printer”
  3. Authenticate (only needed for the first printer change)
  4. For IPP: note the current address (like ipp://192.168.71.52/), then
    1. Choose “Internet Printing Protocol (ipp) “
    2. Click “Continue”
    3. Enter the correct ipp://…./ address (help is at http://127.0.0.1:631/help/network.html or http://127.0.0.1:631/help/network.html?PRINTABLE=YES)
    4. Click “Continue”
    5. Check the modifications (optionally change Description/Location)
    6. Click “Continue”
    7. Keep the driver
    8. Click “Modify printer”
  5. For LPD, note the current address (like lpd://192.168.71.52/), then follow the IPP steps, but choose “LPD/LPR Host or Printer” and enter a valid lpd address.

This is also the place where you can change “Default options”, like paper size (which – for all but the first – somehow defaulted to US Letter 11 inch, while it is actually filled with A4 paper).

At the end, disable the web interface: cupsctl WebInterface=no.

Related:

–jeroen

Read the rest of this entry »

Posted in *nix, *nix-tools, Apple, iMac, Mac, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, macOS 10.12 Sierra, macOS 10.13 High Sierra, Power User | Leave a Comment »

LSI 9260-8i: all disks are “Unconfigured bad”

Posted by jpluimers on 2019/04/29

This is the second time in about 6 years that somehow after an ESXi reboot all of the drives on an LSI 9260-8i controller got into the state “Unconfigured bad”.

The trick to solve this is to:

  1. go into the WebBIOS of the LSI card
  2. mark all drives as “Unconfigured good”
  3. rescan for devices
  4. import the existing configuration
  5. reboot

More in depth steps with images:

–jeroen

Posted in LSI/3ware, Power User, RAID | Leave a Comment »