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 January, 2022

On my research list: “ESXi” “Secure Boot” – Google Search

Posted by jpluimers on 2022/01/12

On my research list: [Wayback] “ESXi” “Secure Boot” – Google Search.

Some links about it:

–jeroen

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

Covid-19/Coronavirus – Mondneusmaskers en andere PBE: Instructie beschermingsmiddelen en zelftests mantelzorgers en pgb | Publicatie | Rijksoverheid.nl

Posted by jpluimers on 2022/01/12

[Wayback/Archive Instructie beschermingsmiddelen en zelftests mantelzorgers en pgb | Publicatie | Rijksoverheid.nl

Instructie beschermingsmiddelen en zelftests mantelzorgers en pgb

Mantelzorgers en pgb-gefinancierde zorgverleners kunnen bij hun werk gebruikmaken van persoonlijke beschermingsmiddelen of mondneuskapjes. Cliënten kunnen onder voorwaarden gebruik maken van gratis zelftests. In deze instructie staat wanneer zorgverleners persoonlijke beschermingsmiddelen kunnen aanvragen. En wanneer cliënten zelftests kunnen aanvragen.

Download ‘Instructie beschermingsmiddelen en zelftests mantelzorgers en pgb (staand, A3)’1/2

[Wayback] PDF document | 1 pagina | 95 kB

Publicatie | 08-10-2021

Download ‘Instructie beschermingsmiddelen en zelftests mantelzorgers en pgb (liggend, A4)’2/2

[Wayback] PDF document | 2 pagina’s | 130 kB

Publicatie | 08-10-2021

Via:

–jeroen

Posted in LifeHacker, Power User | Leave a Comment »

Het moment om Schiphol te laten krimpen is nu – Follow the Money – Platform voor onderzoeksjournalistiek

Posted by jpluimers on 2022/01/12

[Wayback/Archive] Het moment om Schiphol te laten krimpen is nu – Follow the Money – Platform voor onderzoeksjournalistiek

Via [Archive] Eric Smit on Twitter: “In Europa zijn boekwerken volgeschreven over de vraag hoe je een groeiende capaciteit tussen luchtvaartmaatschappijen verdeelt, maar is er nooit nagedacht over de consequenties van een afnemende capaciteit … via @ftm_nl” / Twitter

jeroen

Posted in Uncategorized | Leave a Comment »

Delphi SetRoundMode: gets sets part of the 8087 control word (related: GetRoundMode and TFPURoundingMode)

Posted by jpluimers on 2022/01/12

I thought I had written about this a long time ago, as Math.SetRoundMode (and now System.Math.SetRoundMode) has been introduced since at least Delphi 2007. There are also related GetRoundMode and TFPURoundingMode.

Delphi 2009 also introduced TFPUPrecisionMode, GetPrecisionMode and SetPrecisionMode.

Delphi 2010 also introduced TFPUException, TFPUExceptionMask, TFPUPrecisionMode, TFPURoundingMode, ClearExceptions, GetExceptionMask, and SetExceptionMask.

Delphi XE2 introduced namespaces, so prepended the unit Math with the namespace System. to become unit System.Math. It also introduced $EXCESSPRECISION (for x64), GetMXCSR, SetMXCSR, ResetMXCSRClearFPUExceptionsTSSEException, TSSEExceptionMask, GetSSEExceptionMask, SetSSEExceptionMask, ClearSSEExceptions, TSSERoundingMode, GetSSERoundMode, SetSSERoundMode.

The documentation basically only had formatting changes. This is the most important part of SetRoundMode:

function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;

Call SetRoundingMode to specify how the FPU handles rounding issues. The rounding mode can be any of the following values:

Value
Meaning
rmNearest
Rounds to the closest value.
rmDown
Rounds toward negative infinity.
rmUp
Rounds toward positive infinity.
rmTruncate
Truncates the value, rounding positive numbers down and negative numbers up.

This is the most important bit of SetPrecisionMode:

function SetPrecisionMode(const Precision: TFPUPrecisionMode): TFPUPrecisionMode;

Call SetPrecisionMode to specify the level of precision that the FPU (floating-point unit) uses for floating-point calculations. The precision control mode can be any of the following values:

Value
Meaning
pmSingle
single precision
pmReserved
not used
pmDouble
double precision
pmExtended
extended precision

SetPrecisionMode returns the previous precision control mode.

Both are functions, so so they return the previous value which you can use to set it back later: this is important as it is a process wide. SetPrecisionMode documents this, but SetRoundMode does not!

Global side effects and avoiding them

Since SetRoundMode and SetPrecisionMode set the 8087 CW (and on XE2 and up SetMXCSR), it means all usual Set8087CW caveats apply: changing the global 8087 CW setting impacts all running code, which means that threads, DLLs (especially ones written in other languages), etc might malfunction. You can find some of the caveat effects on my bog by searching for [Wayback] Set8087CW site:wiert.me – Google Search.

If you want to avoid global side effects, you might try the solution in [Wayback] c# – What is the equivalent of Math.Round() with MidpointRounding.AwayFromZero in Delphi? – Stack Overflow by [Wayback] Andreas Rejbrand.

On MXCSR

[Wayback/Archive.is] SSE Instruction Set (not sure why Embarcadero used this as reference material from their docwiki, but hey, Intel documentation is likely outdated):

SSE — MXCSR

The MXCSR register is a 32-bit register containing flags for control and status information regarding SSE instructions. As of SSE3, only bits 0-15 have been defined.

Pnemonic Bit Location Description
FZ bit 15 Flush To Zero
R+ bit 14 Round Positive
R- bit 13 Round Negative
RZ bits 13 and 14 Round To Zero
RN bits 13 and 14 are 0 Round To Nearest
PM bit 12 Precision Mask
UM bit 11 Underflow Mask
OM bit 10 Overflow Mask
ZM bit 9 Divide By Zero Mask
DM bit 8 Denormal Mask
IM bit 7 Invalid Operation Mask
DAZ bit 6 Denormals Are Zero
PE bit 5 Precision Flag
UE bit 4 Underflow Flag
OE bit 3 Overflow Flag
ZE bit 2 Divide By Zero Flag
DE bit 1 Denormal Flag
IE bit 0 Invalid Operation Flag

FZ mode causes all underflowing operations to simply go to zero. This saves some processing time, but loses precision.

The R+R-RN, and RZ rounding modes determine how the lowest bit is generated. Normally, RN is used.

PMUMMMZMDM, and IM are masks that tell the processor to ignore the exceptions that happen, if they do. This keeps the program from having to deal with problems, but might cause invalid results.

DAZ tells the CPU to force all Denormals to zero. A Denormal is a number that is so small that FPU can’t renormalize it due to limited exponent ranges. They’re just like normal numbers, but they take considerably longer to process. Note that not all processors support DAZ.

PEUEMEZEDE, and IE are the exception flags that are set if they happen, and aren’t unmasked. Programs can check these to see if something interesting happened. These bits are “sticky”, which means that once they’re set, they stay set forever until the program clears them. This means that the indicated exception could have happened several operations ago, but nobody bothered to clear it.

DAZ wasn’t available in the first version of SSE. Since setting a reserved bit in MXCSR causes a general protection fault, we need to be able to check the availability of this feature without causing problems. To do this, one needs to set up a 512-byte area of memory to save the SSE state to, using fxsave, and then one needs to inspect bytes 28 through 31 for the MXCSR_MASK value. If bit 6 is set, DAZ is supported, otherwise, it isn’t.

Architectures Software Developer’s Manual: Intel® 64 and IA-32 includes supporting processors programming environment and architecture.

[Wayback] Intel® 64 and IA-32 Architectures Developer’s Manual: Vol. 1

[Wayback]

https://web.archive.org/web/20130603170547/http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf

Documentation links

Some of the documentation links (that regrettably do not explain what happens behind the scenes with the 8087 CW) are these:

 

–jeroen

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

Twitter: find my new-style retweets that have images

Posted by jpluimers on 2022/01/11

This gets the tweets I retweeted and have images in them:

from:@jpluimers filter:images filter:nativeretweets

Based on:

  • [Wayback] twitter – How do I find my retweets of a certain account? – Web Applications Stack Exchange
    from:@someone filter:nativeretweets [KEYWORD(s)]
    

    This shows all retweets of @someone (including the optional KEYWORD(s)). If you retweeted the same tweet you can use @yourtwittername instead of @someone.

  • This article gives you a robust overview of everything you need to know about advanced TweetDeck features.[Wayback] About advanced TweetDeck features

    To search for mentions of #space from verified accounts, excluding Retweets, type the following in the search box: #space filter:verified -filter:nativeretweets

  • [Wayback] Difference between -filter:retweet and -filter:nativeretweets in Twitter Search API 1.1 – Stack Overflow

    I believe per TweetDeck documentation (https://support.twitter.com/articles/20170322) this is the difference:

    filter:nativeretweets shows retweets from users who have hit the retweet button. filter:retweets shows old style retweets (“RT”) + quoted tweets.

    Those are filtering FOR those types of results, but as you’ve done, the – is necessary to filter them out -filter:nativeretweets or -filter:retweets

  • [Wayback/Archive.is] Twitter API 1.1 tweets / favorites (likes) / following / followers backup in web browser
    /* Twitter API 1.1 tweets / favorites (likes) / following / followers backup in web browser
     * Get your access keys to use Twitter API 1.1: https://dev.twitter.com/docs/auth/tokens-devtwittercom
     * You can change Twitter API URL and Twitter screen_name, then execute script from a trusted web page without CSP protection like about:blank in a web browser console (F12 or Ctrl+Shift+K shortcut)
     * A textarea will appear so you can copy/paste to save data as a CSV file or search tweets / users in your web browser (Ctrl+F shortcut)
     * You can then view your backup in a spreadsheet editor like LibreOffice Calc
     * You can also compare the backup with another one to see who unfollowed you, who changed their Twitter username by looking at the user ID or which tweet you retweeted / favorited was deleted (e.g. with the Linux diff command)
     * 
     * Note about the tweets backup:
     * Usually you will search tweets that you retweeted using Twitter web version (https://twitter.com/search) with a search like "from:your_username filter:nativeretweets keyword"
     * But it is limited to the retweets of the last 7 days, like for the free version of the search API (https://developer.twitter.com/en/docs/tweets/search/overview/standard)
     * An alternative is to search tweets in your user timeline with this script but it is limited to your last 3200 tweets (including retweets and replies)
     * This script can be combined with the Twitter feature to backup data, which is not limited to your last 3200 tweets but you can only request a backup every 30 days
     * To find tweets that you retweeted or favorited / liked from a specific person, you can open the CSV file with LibreOffice Calc, click on the column you want to search and press Ctrl+H to search a username
    */

–jeroen

Posted in Development, JavaScript/ECMAScript, Power User, Scripting, SocialMedia, Software Development, Twitter | Leave a Comment »

Security questions are evil because of social media “games” phishing for them

Posted by jpluimers on 2022/01/11

Via [Archive.is] Jilles Groenendijk on Twitter: “what @AppSecBloke said… “, from:

I don’t normally do this but here goes:

First job STOP
Current job SENDING
Dream Job YOUR
Favorite food POTENTIAL
Favorite dog PASSWORDS
Favorite footwear OR
Favorite Chocolate bar MEMORABLE
Favorite Ice Cream DATA
Your Vehicle color TO
Favorite Holiday PEOPLE
Night owl or earlybird WHO
Favorite day of the week COLLECT
Tattoos THIS
Favourite colour INFORMATION
Do you like vegetables FOR
Do you wear glasses SOCIAL
Favourite season ENGINEERING

Read the rest of this entry »

Posted in Facebook, Instagram, LifeHacker, Pen Testing, Power User, Security, SocialMedia | Leave a Comment »

VMware ESXi and vSphere: vmNIC speeds are limited by your CPU and RAM speeds, only in part by the vNIC drivers

Posted by jpluimers on 2022/01/11

Still a lot of people think that network speed depends on the vNIC driver and vNIC speed settings.

This is not true: it mainly depends on CPU and RAM speeds as that is where the bottleneck of virtual network processing is.

What does matter is the VM/host overhead is far less when drivers use paravirtualisation (i.e. shortcutting calls from the guest OS to the hypervisor) like PVSCSI for disk or VMXNET3 for networking. This means that VMXNET3 has even more performance than E1000.

Read the rest of this entry »

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

Some notes on ESXi and SMART information from HDD/SSD devices

Posted by jpluimers on 2022/01/10

For my link archive:

  1. [WayBack] VMware ESXi S.M.A.R.T Health Monitoring | ESX Virtualization based on the built-in tooling, showing how /usr/lib/vmware/vm-support/bin/smartinfo works (contrary to the article, this is a binary, not a smartinfo.sh script, at least in ESXi 6.0 and higher). Note this does not list all SMART parameters, so can give you a false sense of being on the safe side.
  2. [WayBack] Determine TBW from SSDs with S.M.A.R.T Values in ESXi (smartctl) | Virten.net which is based on smartctl from [WayBack] smartmontools and provides a link to the [WayBack] smartctl-6.6-4321.x86_64.vib.
    1. Download smartctl-6.6-4321.x86_64.vib
    2. Copy the VIB to the /tmp/ directory of an ESXi host
    3. SSH to the ESXi host
    4. Set the VIB acceptance level to CommunitySupported
      # esxcli software acceptance set --level=CommunitySupported
    5. Install the package (Maintenance Mode or Reboot is not required)
      #esxcli software vib install -v /tmp/smartctl-6.6-4321.x86_64.vib

    The tool is located at /opt/smartmontools/smartctl and works just like the Linux version.
    Locate physical disks with ls -l /dev/disks/

    /opt/smartmontools/smartctl -d [Device Type] –all /dev/disks/[DISK]

  3. [WayBack/Archive.is] ESXi S.M.A.R.T. health monitoring for hard drives (2040405) describing the internal tools from an ESXi 5.x perspective

The first two links are via [WayBack/Archive.is] esxi 6 monitor sata temperature – Google Search; the last links via [WayBack/Archive.is] esxi 6 view smart – Google Search.

–jeroen

Posted in Power User, Virtualization, VMware, VMware ESXi | 2 Comments »

Since I always have trouble with German word-gender (Geschlecht) and grammatic case (Falle): “Er wohnt in DER Schweiz” (Wo?) “Ich fahre in DIE Schweiz” (Wohin?)

Posted by jpluimers on 2022/01/10

Thanks for this example: [Archive.is] Grote Lange Dikke Trien on Twitter: “In der Schweiz. “Er wohnt in DER Schweiz” Wo? “Ich fahre in DIE Schweiz” Wohin?… “

–jeroen

Posted in LifeHacker, Natural Languages, Power User | Leave a Comment »

Topotijdreis: 200 jaar topografische kaarten

Posted by jpluimers on 2022/01/10

200 year old topography of The Netherlands:

Hoe zag jouw omgeving er vroeger uit? Kijk nu zelf op Topotijdreis.nl. De website van het Kadaster met kaarten tot 200 jaar oud.

[WayBack/Archive.is] Topotijdreis: 200 jaar topografische kaarten

Via:

–jeroen

Read the rest of this entry »

Posted in LifeHacker, Power User | Leave a Comment »