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

Archive for 2019

Windows Security From The Ground Up — Decent Security

Posted by jpluimers on 2019/06/28

Because so few people actually make more than 10% of these simple steps: [WayBack] Windows Security From The Ground Up — Decent Security (How to secure a Windows computer).

It starts with BIOS update, configuration, TPM, then secure boot into a bitlocker encrypted drive with a Windows installation that has UAC set to high, and a safe web browsing environment.

via

–jeroen

Posted in Power User, Windows | Leave a Comment »

ServiceDependencyViewer

Posted by jpluimers on 2019/06/28

Since CodePlex is sunsetting, some archived locations of ServiceDependencyViewer.zip:

It helps you investigate dependencies of Windows Services.

–jeroen

 

 

Posted in Power User, Windows | Leave a Comment »

Excel: printing top row on every page, and including grid

Posted by jpluimers on 2019/06/28

I hardly print with Excel, so I always forget these two:

–jeroen

Posted in Excel, Office, Office 2011 for Mac, Office 2013, Power User | Leave a Comment »

Solid State vs. Electromechanical Relays | Arrow.com

Posted by jpluimers on 2019/06/27

For my reading list: [WayBack] Solid State vs. Electromechanical Relays | Arrow.com

When you need a power switching solution, you are faced with two competing technologies – electromechanical relays and solid state relays. So which is the right choice for your design?

Keywords: SSR versus EMR, SPDT

via:

–jeroen

Posted in Development, Hardware, Hardware Development, Power User | Leave a Comment »

The Delphi compiler has a hard time coping with circular unit references

Posted by jpluimers on 2019/06/27

In [WayBack] Anyone here with an “F2092 Program or unit ‘?’ recursively uses itself” error in Tokyo? I have this error in Tokyo but the same project compiles ok in Berlin… – Luis Madaleno – Google+, I commented this:

Large circular reference cycles can trip the compiler into emitting this error (next to out-of-memory errors, access violations and internal errors and “unitX.pas F2063 Could not compile used unit ‘unitY.pas'”).

Solution that usually works: quit Delphi, delete .DCU files, start Delphi, build all, then compile. Cumbersome, time consuming, but since the error is intermittent and involves large code bases, it’s was hard to get it to R&D back in the days.

–jeroen

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

Calculating CRC with a tiny (32 entry) lookup-table | Lentz family blog

Posted by jpluimers on 2019/06/27

For my archive:

I happened to notice that the Arduino OneWire library uses a 256 entry lookup table for its CRC calculations.

I did some research on this topic in 1992-1993, while working on Bulletin Board Systems, FidoNet code and file transfer protocols.

These days memory is not at a premium on most computers, however on Arduino and microcontroller environments it definitely is, and I happen to know that table-lookup CRC can be done using two 16-entry tables!

So I’ve dug up my documentation and code from the time, and applied it to the CRC-8 calculation for the Maxim (Dallas Semiconductor) OneWire bus protocol.

I think this provides a neat trade-off between code size and speed.

License For any of the below code, apply the following license (2-clause “simplified” BSD license), which should suffice for any use. If you do require another license, just ask.

Source: [WayBack/Archive.isCalculating CRC with a tiny (32 entry) lookup-table | Lentz family blog

The example on the page is for the CRC-8 implementation used in the [WayBack] 1-Wire Communication protocol – Wikipedia.

The generator works for CRC-8, CRC-16 and CRC-32 polynomials and can be downloaded here:

–jeroen

 

Posted in Algorithms, C, Development, Software Development | Leave a Comment »

Supreme / Pearl Drums – Animal | Soundslice

Posted by jpluimers on 2019/06/27

[WayBack] Supreme / Pearl Drums – Animal | Soundslice. Found based on a low-quality video in a private FB channel.

This one is much better (:

–jeroen

Posted in Fun, LifeHacker, Music | Leave a Comment »

Binding git diff to Beyond Compare

Posted by jpluimers on 2019/06/26

This became a huge batch-file which I need to refactor into smaller bits.

:: based on bc.bat
:: needs to be refactored into find-bc.bat
:: assumes git is on the path

:begin
@echo off

:checkGit
:: https://stackoverflow.com/questions/4781772/how-to-test-if-an-executable-exists-in-the-path-from-a-windows-batch-file/25696405#25696405
  where /q git || echo Cound not find git on the PATH %PATH%. && goto :eof
:: for now, the above is good enough as git installs itself on the path, but Beyond Compare does not.

:findBeyondCompare
  setlocal EnableExtensions EnableDelayedExpansion
  IF /I [%PROCESSOR_ARCHITECTURE%] == [amd64] goto :x64
  IF /I [%PROCESSOR_ARCHITEW6432%] == [amd64] goto :x64
  goto :x86
:x64
  :: OS is 64bit
  set hkcuBaseKey=HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare
  set hklmBaseKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Scooter Software\Beyond Compare
  
  goto :findBC
:x86
  :: OS is 32bit
  set hkcuBaseKey=HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare
  set hklmBaseKey=HKEY_LOCAL_MACHINE\SOFTWARE\Scooter Software\Beyond Compare
  goto :findBC
:findBC
  :: https://gist.github.com/rojepp/634908
  :: http://stackoverflow.com/questions/5369528/windows-batch-reg-query-key-value-to-a-variable-but-do-not-display-error-if-key
  set SupportedBeyondCompareVersions=3, 4
  for %%v in (%SupportedBeyondCompareVersions%) do (
    for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hkcuBaseKey% %%v" /v ExePath 2^>NUL`) do (
      call :do set bcExe="%%d"
    )
  )
  if not [%bcExe%]==[] goto :foundBC
    for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hkcuBaseKey%" /v ExePath 2^>NUL`) do (
      call :do set bcExe="%%d"
    )
  if not [%bcExe%]==[] goto :foundBC
  for %%v in (%SupportedBeyondCompareVersions%) do (
    for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hklmBaseKey% %%v" /v ExePath 2^>NUL`) do (
      call :do set bcExe="%%d"
    )
  )
  if not [%bcExe%]==[] goto :foundBC
    for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hklmBaseKey%" /v ExePath 2^>NUL`) do (
      call :do set bcExe="%%d"
    )
  :: note that FOR /R needs a wildcard!
  if not [%bcExe%]==[] goto :foundBC
    for /r . %%d in (bcompare*.exe) do (
      call :do set bcExe="%%d"
    )
:foundBC
:: https://stackoverflow.com/questions/2772456/string-replacement-in-batch-file
:: note the BCompExe assignment requires at least https://ss64.com/nt/setlocal.html to have EnableDelayedExpansion and likely EnableExtensions 
:: see https://ss64.com/nt/delayedexpansion.html for ! expansion
  if [%bcExe%]==[] ( echo no bc.exe found in registry or relative to batch file) else (
    echo bcExe=%bcExe%
    if exist %bcExe% (
      call :do set bcCompExe=%bcExe:BCompare=BComp%
      :: echo bcCompExe=!bcCompExe!
      echo "Beyond Compare" %bcExe:\=/%
      echo "BComp" !bcCompExe:\=/!
      call :do git config --global diff.tool bc
      call :do git config --global difftool.bc.path !bcCompExe:\=/!
      call :do git config --global merge.tool bc
      call :do git config --global mergetool.bc.path !bcCompExe:\=/!
    )
    if not exist %bcExe% echo not found: [%bcExe%]
  )
:exit
  endlocal
:end
  goto :eof
:do
  echo %*
  call %*
  goto :eof

–jeroen

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

Unicode ligatures: not all software does normalised search forgetting ffi 

Posted by jpluimers on 2019/06/26

Via a private share, I found out that some software forgets to perform a Unicode normalisation when doing a search.

That means that ligatures do not match the non-ligatures in for instance these words:

  • “ff” and “ff”, as in “difference” versus “difference”
  • “fi” and “fi” as in “notification” versus “notification”.

For more information, read [WayBackUnicode equivalence – Wikipedia and make sure you know about these normal forms:

NFD
Normalization Form Canonical Decomposition
Characters are decomposed by canonical equivalence, and multiple combining characters are arranged in a specific order.
NFC
Normalization Form Canonical Composition
Characters are decomposed and then recomposed by canonical equivalence.
NFKD
Normalization Form Compatibility Decomposition
Characters are decomposed by compatibility, and multiple combining characters are arranged in a specific order.
NFKC
Normalization Form Compatibility Composition
Characters are decomposed by compatibility, then recomposed by canonical equivalence.

–jeroen

Posted in Development, Encoding, Software Development, Unicode | Leave a Comment »

Why Isn’t Agile Working? – Hacker Noon

Posted by jpluimers on 2019/06/26

Definitely worth reading when you think you’re being Agile, but you don’t. [WayBackWhy Isn’t Agile Working? – Hacker Noon.

Via:

–jeroen

 

Posted in Agile, Development, Software Development | 1 Comment »