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

Archive for the ‘Software Development’ Category

Reminder to self: find open source tool that strips TDS / TD32 debug information from EXE

Posted by jpluimers on 2020/10/14

There is StripTDS from SmartBear, but it is not open source or downloadable without their full product install.

So either find an open source tool that can strip TDS / TD32 symbol information from EXE files, or make one.

Related:

–jeroen

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

Notes a on a step by step .NET standard based stack of applications with a central core

Posted by jpluimers on 2020/10/14

The idea is to have a stack of things that can be later put into multiple micro-service pillars.

Helpful: enable “Track Active Item in Solution Explorer”:

  1. Start with an empty repository; add an origin
  2. Add .gitignore / .gitattributes appropriate for C#, for instance from github.com/Microsoft/vswhere, git commit it, and push it withgit push -u origin master.
  3. Add a blank solution using Creating a blank Visual Studio solution without a directory, and sln Format Version numbers and EmptyVisualStudioSolution
  4. Open the solution
  5. Add an “ASP.NET Core Web Application”
  6. Choose “API” in the list of ASP.NET templates, without Authentication or Docker support (let’s keep the balance bit simple enough for now)
  7. Run with Ctrl-F5, then confirm the SSL development certificate, and install it:

    ---------------------------
    Security Warning
    ---------------------------
    You are about to install a certificate from a certification authority (CA) claiming to represent:
    
    localhost
    
    Windows cannot validate that the certificate is actually from "localhost". You should confirm its origin by contacting "localhost". The following number will assist you in this process:
    
    Thumbprint (sha1): 09EA054F 14D5D4CE 6B22C5F1 3E7EBDB5 F7583116
    
    Warning:
    
    If you install this root certificate, Windows will automatically trust any certificate issued by this CA. Installing a certificate with an unconfirmed thumbprint is a security risk. If you click "Yes" you acknowledge this risk.
    
    Do you want to install this certificate?
    
    
    ---------------------------
    Yes   No   
    ---------------------------
  8. Your browser now opens at a port for debugging: https://localhost:<port>/api/values, then tries to download the result as values.json.

    This is configured in Properties\launchSettings.json under "launchUrl": "api/values" (for the browser URL) and Controllers\ValuesController.cs under // GET api/values for the actual implementation.

  9. a

 

 

 

a

a

 

IHostedService

Have any service related stuff implement IHostedService, so it is easy to deploy it in all kinds of processes:

  • console to test
  • windows service
  • ASP.NET Core service
  • Linux host application

Background information at .NET: IHostedService « The Wiert Corner – irregular stream of stuff.

–jeroen

Related:

 

Posted in .NET, .NET Core, Development, Software Development | Leave a Comment »

Dimensions – Chrome Web Store

Posted by jpluimers on 2020/10/13

[WayBack/Archive.isDimensions – Chrome Web Store: A tool for designers to measure screen dimensions

This extension measures the dimensions from your mouse pointer up/down and left/right until it hits a border. So if you want to measure distances between elements on a website this is perfect. It doesn’t really work with images because there the colors change a lot pixel to pixel.

# Images & HTML Elements

Measure between the following elements: images, input-fields, buttons, videos, gifs, text, icons. You can measure everything you see in the browser.

# Mockups

Your designer handed you mockups as PNGs or JPEGs? Just drop them into Chrome, activate Dimensions and start measuring.

# Keyboard Shortcut

You can start and stop dimensions with the ALT + D shortcut.

# Area Boundaries

Wanna get the radius of a circle? Is text standing in your way? Press Alt to measure the dimensions of a connected area.

–jeroen

Via:

Posted in Chrome, Chrome, Development, Google, HTML, Power User, Software Development, Web Browsers, Web Development | Leave a Comment »

Unicode is hard, also for the Delphi compiler and IDE

Posted by jpluimers on 2020/10/13

The Delphi compiler does not see a unicode non-breaking space (0x00A0 as whitespace, and the Delphi IDE does not warn you about it: [WayBack] Delphi revelations #2 – Space characters are not just space characters.

Given that this character was introduced in 1993, I wonder how the compiler tests look like.

These also will not be recognised as whitespace:

Related, as many other tools also do not properly support various whitespace characters:

Via: [WayBack] A Delphi “Aha” experience – Kim Madsen – Google+

–jeroen

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

The alphabet, in alphabetical order, in various languages – The Old New Thing

Posted by jpluimers on 2020/10/09

I had to lough so loud when I bumped into this [WayBackThe alphabet, in alphabetical order, in various languages – The Old New Thing.

I got there because I wanted a few examples of languages having more than 26 ASCII letters in their alphabet.

Basically all non English languages (:

–jeroen

 

Posted in Development, Fun, LifeHacker, Power User, Software Development, The Old New Thing, Windows Development | Leave a Comment »

Delphi icons to distinguish various Delphi versions

Posted by jpluimers on 2020/10/08

When installing many Delphi versions, all have similar icons. So I asked this a while ago: [WayBack] I remember someone creating version specific icons for Delphi a while ago (around XE4 era I think), but cannot find them any more. Anyone who can prov… – Jeroen Wiert Pluimers – Google+.

Luckily Achim Kalwa responded quickly with a set of icons he designed and put them up at https://drive.google.com/drive/folders/1VoYeMmsr6FYgoe9EkR-psrV7aPO7Gv-v

Hopefully by now I have had time to edit them for more Delphi versions (he had them for Delphi XE7 until 10.2 Tokyo).

Delphi XE2 and lower icons seem to be at [Archive.is] Delphi versions and icons, mortenbs.com

–jeroen

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

Some free test SOAP web service endpoint sites

Posted by jpluimers on 2020/10/08

In the past, [WayBack] WebserviceX.NET used to be a great reference for publicly accessible SOAP web-services. Nowadays their listing contains ~2K of entries marked as DISCONTINUED in [WayBack] WebserviceX.NET API catalogue.

So below are a few sites mentioning web-services that have worked for me. No guarantee however they still work (:

Maybe I’m going to provide something myself.

–jeroen

Posted in Development, SOAP/WebServices, Software Development | Leave a Comment »

UTC is Enough for Everyone, Right?

Posted by jpluimers on 2020/10/07

A very long read, worth every minute: [WayBackUTC is Enough for Everyone, Right? on Programming with dates, times, and timezones is hard. But here’s some help.

It covers a truckload of topics, like the history of time, the use of time zones, storing and transmitting time, user experience (like displaying and entering time), events, duration and much more.

Via: [WayBack] UTC is enough for everyone… right? If you have some time on your hands, you might find this rather long article quite interesting and, possibly, entertaining… – Kevin Powick – Google+

–jeroen

 

Posted in Development, Software Development | Leave a Comment »

Reverse engineering Delphi and Turbo Pascal unit interfaces (and maybe DCP files too)

Posted by jpluimers on 2020/10/07

Boy, I wish there was both an Embarcadero sanctioned grammar (see Delphi code completion fail with anonymous methods – Stack Overflow) and a DCU parser.

This might work for DCP files as well, since the PKX0 signature at the start of DCP files is in [WayBack] DCU32INT/DCP.pas at master · rfrezino/DCU32INT · GitHub.

Being able to dump DCP files makes it way easier to create documenting a matrix of all DCP files and units, to their interdependencies and containments become clear (including any unit scopes).

Right now that is only documented from the unit to the package on the page of the unit (see for instance [WayBack] System.SysUtils – RAD Studio API Documentation), not the other way around. This is a pain to select which packages you need in your project when building with packages.

The list at [WayBack] Unit List – RAD Studio API Documentation (which actually is an “Alphabetical list of unit scopes, along with miscellaneous units that have no unit scope.” is only partially helpful, especially as for instance the System unit page at [WayBack] System – RAD Studio API Documentation is 90% about the System unit scope, has the System unit itself about a 3rd down and does not mention it lives in the rtl.dcp package.

The list at [WayBack] Deciding Which Runtime Packages to Use – RAD Studio is even worse than the unit list, as it misses many useful packages (like dsnap)

For my link archive:

Johan wanted to create a compiler symbol table from the binary DCU files (unlike DelphiAST which does it from the Pascal source files).

From the pre-Delphi era, I found back some info from my own archive:

In the Turbo Pascal days, you had TW1UNA and TPUUNA by William L. Peavy, which I think led to INTRFC from Duncan Murdoch (or maybe vice versa) which got updated to Turbo/Borland Pascal 7 format by Milan Dadok (see [Wayback/Archive] http://sources.ru/pascal/hacker/intrfc70.htm). Since the basic format of DCU files is very similar to that, my guess is that DCU32INT built on that.

Later I found [Wayback/Archive] The Programmer’s Corner » TPU60C.ZIP » Pascal Source Code also by William L. Peavy and Wayback/Archive] Duncan Murdoch’s Programs .

Edit 20220621:

  • moved the www8.pair.com links to murdoch-sutherland.com
  • added more Wayback and Archive links

–jeroen

Posted in Borland Pascal, Conference Topics, Conferences, Delphi, Development, Event, History, Pascal, Software Development, Turbo Pascal | Leave a Comment »

Naming: avoid abbreviations and acronyms in identifiers

Posted by jpluimers on 2020/10/07

I see lots of code using abbreviations. Please avoid those, just like many development stacks urge you to do so.

Two important reasons:

  1. avoid confusion
  2. make it easier to read code (you read code far more often than you write code)

This is not limited to the software development field; for similar reasons, the medical field also limits the use of abbreviations and acronyms:

Read the rest of this entry »

Posted in Conference Topics, Conferences, Development, Event, Software Development | Leave a Comment »