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

Archive for October, 2019

How to access a BitLocker-encrypted drive in Ubuntu 16.04?

Posted by jpluimers on 2019/10/07

Interesting: [WayBack] I am using Ubuntu 16.04 along with windows 10. I have encrypted my drives using BitLocker. Now my encrypted drives are not visible in ubuntu 16.04. But I want to access my encrypted drives using.

References: [WayBack] How to access BitLocker encrypted drive in Linux? This article introduces one way to access Bitlocker encrypted drive in Linux

via:

–jeroen

Posted in *nix, Power User, Windows | Leave a Comment »

Excel on Mac OS X / macOS: character that sorts after Z

Posted by jpluimers on 2019/10/04

Sometimes in a table, you want to have a key column where one of the rows sorts after Z (for instance having a total value further on).

The A-Z sort order sorts all non-letter ASCII characters in front of A-Z and a-z because [WayBack] Excel sorting is not in ASCII order – Microsoft Community, see ASCII Sort.xlsm – Microsoft Excel Online.

Using =NA() (which displays as  #N/A  ) is too visually intrusive (but works, see: [WayBack] Forcing an item to sort last in Excel [Archive] – Actuarial Outpost)

Luckily, putting in an Arabic character like  works. You can even put it in front of normaal ASCII characters like in 'ٴ ----- which then displays it at the right (since Arabic is Right-to-Left) -----ٴ .

The character is high Hamza – Wikipedia; [WayBack] Unicode Character ‘ARABIC LETTER HIGH HAMZA’ (U+0674)

via:

–jeroen

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

Fastener Reference Cheat Sheets, by @pighixxx | #ManufacturingMonday

Posted by jpluimers on 2019/10/04

[WayBackFastener Reference Cheat Sheets, by @pighixxx | #ManufacturingMonday

From pan flange to button washer, from socket cap to trim screw heads, not to mention threading types and drive head options, every workbench and workshop should have this fastener reference guide …

via:

–jeroen

Read the rest of this entry »

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

Excel Pivot notes: Table, Pivot Formula, 2D, 3D charts and secondary axes.

Posted by jpluimers on 2019/10/04

Since I don’t do Excel visualisations often enough, I always forget the details on Pivot Charts, some links and tips below.

TL;DR

You can’t have enough axes

The tips below assume you can create a pivot table from an existing table (that already can contain formulas), then show you:

  • additional formulas in your original table can make life easier
  • formulas for pivot tables themselves (named “Calculated Fields”)

Problem at hand

Creating graphs out of up and down time durations over time, aggregated by day.

Ideas for correlations that might matter:

  1. linear over time during a few weeks
  2. by week and by day of week

Incoming data:

  • end-timestamp
  • state (down or up)
  • duration of that state

Calculations

First of all, I needed “day of month”, “day of week”, and “week number” so I could group by those. Based on Readable weekdays in Excel, you get formulas like these:

  • =DAY(B4)
  • =WEEKDAY(B4) and =TEXT(B4;"dddd")
  • =WEEKNUM(B4)

Then I needed to split the duration of the state in distinct up/down durations. So I made a few formulas:

  • =("Up", A4) to have a boolean for up/down
  • =("Up", A4) to have a boolean for up/down
  • =IF(D4;C4;0)to split the up duration from the state duration
  • =IF(NOT(D4);C4;0)to split the down duration from the state duration

A pivot table could aggregate total up and down durations, but I wanted a measure of up ratio, so I needed a formula inside the pivot table itself.

Following the steps at [WayBackCalculate values in a PivotTable Use different ways to calculate values in calculated fields in a PivotTable report in Excel 2010, I got to this one:

This aggregates nicely: drag it to the aggregates column, then change the aggregation to “Average”:

Putting it in a 3D Pivot Chart

Read the rest of this entry »

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

How to properly cleanup/shutdown a Delphi ISAPI (which uses Threads) | Mathias Pannier programmiert

Posted by jpluimers on 2019/10/03

For my link archive:

If you use Threads or global Objects (which are created in the initialization section for example) You have to cleanup/shutdown them in the OnTerminate event of the ISAPI Application. If You destroy/shutdown them in the finalization section in a unit it could end up in a hanging application pool in IIS on shutdown/reuse and some windows event log entries.

//added
procedure DoTerminate;
begin
  //free global objects and wait/terminate threads here
end;
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
begin
  ReportMemoryLeaksOnShutdown := true;
  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
  Application.WebModuleClass := WebModuleClass;
  TISAPIApplication(Application).OnTerminate := DoTerminate; //added
  Application.Run;
end.

Source [WayBack] How to properly cleanup/shutdown a Delphi ISAPI (which uses Threads) | Mathias Pannier programmiert

Related:

–jeroen

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

Delphi; on my research list `Error creating form: Root class not found: “”.`

Posted by jpluimers on 2019/10/03

On my Delphi research list:

[Window Title]
Error

[Content]
Error creating form: Root class not found: "".

[OK]

I think it has to do with form inheritance, but a quick glance didn’t raise any warning signs.

–jeroen

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

Ubiquity: The End of (Numeric) Error

Posted by jpluimers on 2019/10/03

Interesting read: [WayBackUbiquity: The End of (Numeric) Error

Crunching numbers was the prime task of early computers. The common element of these early computers is they all used integer arithmetic. John Gustafson, one of the foremost experts in scientific computing, has proposed a new number format that provides more accurate answers than standard floats, yet saves space and energy. The new format might well revolutionize the way we do numerical calculations.

via:

–jeroen

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

How to break a Monolith into Microservices

Posted by jpluimers on 2019/10/02

Long read, worth it too: [WayBack] How to break a Monolith into Microservices

A guide to the common steps we’ve observed in breaking a monolithic application up into microservices

–jeroen

Via [WayBack] How to break a Monolith into Microservices https://martinfowler.com/… – Jeroen Wiert Pluimers – Google+

 

Posted in Development, Software Development, Systems Architecture | Leave a Comment »

Terminate threads during application or not?

Posted by jpluimers on 2019/10/02

I got an interesting question a while ago: should an application terminate (anonymous) threads or not?

A problem is that a thread might not execute unless you call WaitFor before Terminate is called. The reason is that the internal function ThreadProc does not start Execute if the thread is already terminated.

The ThreadProc in the System.Classes unit is an ideal place to set breakpoints in order to see which threads might start.

Other useful places to set breakpoints:

  • TAnonymousThread.Execute
  • TExternalThread.Execute

Execute not being called by ThreadProc is a bug, but it is not documented because QC is gone (taking the below entry with it), it is not in QP and the docwiki never got updated.

Given QC has so much information, I am still baffled that Embarcadero took it down.

Sergey Kasandrov (a.k.a. serg or sergworks) wrote in [WayBack] Sleep sort and TThread corner case | The Programming Works about this bug and refers to WayBack: QualityCentral 35451 – TThread implementation doesn’t guarantee that thread’s Execute method will be called at all .

The really bad thing are the WayBack: QualityCentral Resolution Entries for Report #35451 Resolution “As Designed” implying the design is wrong.

In his post, sergworks implemented the Sleep sorting in Delphi. Related:

Note that application shutdown is a much debated topic. Best is to do as little cleanup as possible: your process is going to terminate soon anyway. No need to close handles or free memory: Windows will do that for you anyway. See for instance:

 

Related to waiting:

Related to executing:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Multi-Threading / Concurrency, Software Development, The Old New Thing, Windows Development | Leave a Comment »

The Myth of Advanced TDD

Posted by jpluimers on 2019/10/02

[WayBack] The Myth of Advanced TDD

People frequently ask me for “advanced TDD”. I have good news and bad news.

TL;DR:

if you think you need to to “advanced TDD”, then you don’t do TDD.

If TDD hurts, then you need to improve your design or code. It’s like going to the gym: it’s not the exercise that causes the hurt, but the lack of physical condition.

via: [WayBack] “If you want advanced testing techniques, then you’re probably looking for techniques that will make your code worse, not better.” – J.B. Rainsberger @j… – Marjan Venema – Google+

–jeroen

Posted in Development, Software Development, TDD, Testing | Leave a Comment »