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

Archive for the ‘Software Development’ Category

Cursor Movement in bash: either echo escape sequences or use tput

Posted by jpluimers on 2020/06/03

I read [WayBackCursor Movement earlier than [WayBack] Colours and Cursor Movement With tput and [WayBack] The Floating Clock Prompt.

So in one of my scripts I’ve now used an escape sequence, but I might change it to tput in a future version:

## Move one line up, then write finished scripts:
echo -e "\033[1A$finished\r"

I would probably have started with put if I had read [WayBack] bash – Set or change vertical position of the cursor – Stack Overflow first.

–jeroen

Posted in *nix, *nix-tools, bash, bash, Development, Power User, Scripting, Software Development | Leave a Comment »

Are there any static code analysis tools for Delphi/Pascal? – Stack Overflow

Posted by jpluimers on 2020/06/02

Still interesting question: [WayBack] Are there any static code analysis tools for Delphi/Pascal? – Stack Overflow

The basic problem here is that there is no formal language definition for the Delphi or Object Pascal language.

[WayBack] GitHub – RomanYankovsky/DelphiAST: Abstract syntax tree builder for Delphi (which also supports FreePascal and Lazarus) comes closest, and is used by FixInsight.

All other tools have more or less problems parsing various language constructs.

This starts with the built-in tooling that is based on [WayBack] Modeling Applications with Together which basically has not been maintained since the Delphi 2007 era.

Then there is for instance [WayBack] Code Healer Group CodeHealer for Delphi, but their [WayBack] Code Healer Group Forums – Index page have no messages since 2016.

Another wrapper around DelphiAST, is [WayBack] GitHub – MikhailIzvekov/DelphiSCA: Static code analysis tools for Delphi, which has a visual way to walk that AST. But it has not been maintained for years. The cool thing however, is that the AST is in sync with the code editor.

Finally, TestInsight uses DelphiAST to go to the right source code location.

--jeroen

Read the rest of this entry »

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

SysUtils.pas Why parameters of these anonymous not const? TProc = …

Posted by jpluimers on 2020/06/02

At [WayBack] SysUtils.pas Why parameters of these anonymous not const? TProc = reference to procedure (Arg1: T1; Arg2: T2); TProc = reference … – Jacek Laskowski – Google+, Hallvard Vasbotn made this nail on the head comment:

It could have been solved if the const’ness had been seen as a implementation detail by the compiler (which it really is) and made const and non-const signatures assignment compatible.

It was changes like the above that I had hoped for when writing Source: 15 months later: what happened to Delphi Language Enhancements? « The Wiert Corner – irregular stream of stuff.

Now we are another 27 months later, so this again is a reminder to check what the compiler team (man?) has improved on the language side.

–jeroen

Posted in Delphi, Development, Software Development | 2 Comments »

How do I delete a Bash function? – Stack Overflow

Posted by jpluimers on 2020/06/02

I hardly do this, so I tend to forget that unset -f functionname deletes a function and unset variablename or unset -v variablename deletes a variable.

From:

I have done this:bash $ z() { echo ‘hello world’; }How do I get rid of it?

Source: [WayBackHow do I delete a Bash function? – Stack Overflow

Reference: [WayBack] unset Man Page – Bash – SS64.com

–jeroen

Posted in *nix, *nix-tools, bash, bash, Development, Power User, Scripting, Software Development | Leave a Comment »

GitHub – kzahel/web-server-chrome: An HTTP Web Server for Chrome (chrome.sockets API)

Posted by jpluimers on 2020/06/01

Cool: [WayBack] GitHub – kzahel/web-server-chrome: An HTTP Web Server for Chrome (chrome.sockets API)

This allows you to develop HTTP applications that live in Chrome:

[Archive.is1/Archive.is2Web Server for Chrome – Chrome Web Store: A Web Server for Chrome, serves web pages from a local folder over the network, using HTTP. Runs offline.

Of course you could to python -m SimpleHTTPServer 8888 or python -m http.server 8888, but this runs within chrome and can be used from inside JavaScript projects.

Features

  • serve local files
  • configure listening port
  • configure listening interface (e.g. localhost or all interfaces)
  • custom http handlers possible
  • websocket support available
  • works nice with chrome.runtime.onSuspend
  • options for autostart, start in background, etc etc.
  • handles range requests, HEAD, etc
  • options for CORS
  • optional PUT, DELETE request (for upload files)
  • sets MIME types
  • can render directory listing
  • See relevant options: https://github.com/kzahel/web-server-chrome/blob/master/polymer-ui/options.js

Via [WayBack] This is super useful: A# web #server that runs in #Chrome! Makes it super easy to do local web dev without the hassle of setting up a complex back end s… – Jason Mayes – Google+

–jeroen

Posted in Chrome, Development, Google, JavaScript/ECMAScript, Power User, Scripting, Software Development, Web Development | Leave a Comment »

Remote Desktop Auto Login Powershell Script · GitHub

Posted by jpluimers on 2020/05/29

Interesting: some PowerShell scripts that pipe a user and password through cmdkey.exe /generic:TERMSRV/$Computer /user:$User /pass:$Pass

–jeroen

Posted in *nix, Development, Linux, Power User, Software Development | Leave a Comment »

Davidlohr Bueso on Twitter: A programmer had a problem. He thought to himself, “I know, I’ll solve it with threads!”. has Now problems. two he

Posted by jpluimers on 2020/05/27

When doing multi-threading, I’m always reminded of [WayBack/Archive.isDavidlohr Bueso on Twitter: A programmer had a problem. He thought to himself, “I know, I’ll solve it with threads!”. has Now problems. two he

Even with the advent of multi-core architectures long behind us (multi core hardware has been in a mature state for a long time), software for it often is not.

It is not just that programmers are not ready to do it (indeed often they are not: multi-threading is hard), but also that many pieces of software run perfectly fine in a single thread.

So when you do want to implement multi-threading, think twice.

It is one of the reasons I ported a C# version of the Deadlock Empire game (written in HTML + JavaScript) to generate Delphi code and examples. I was really glad that Dalija Prasnikar pointed to it in [WayBack] What is thread safety anyway?, and also pointed to the very important [WayBack] What is this thing you call “thread safe”? – Fabulous Adventures In Coding.

That last one stresses that multi-threading has vague definitions. It will stay vague because the problems you can encounter are virtually endless. There is no silver bullet: Lars Fosdal made this really nice remark in [WayBack] Multithreading can be hard to do right… – Dalija Prasnikar – Google+:

Locking too much is even worse than locking too little. It is very easy to deadlock with overly detailed locking. Applying locking in the wrong place, can serialize threads through a lock bottleneck.

Learning multithreading is a long series of mistakes that you probably can’t avoid, even if told about them up front. You are probably best off having to make the mistakes yourself and then learn from them ;)

To which Asbjørn Heid added:

… after a while I came to the realization that recursive locks are evil. They make it so easy to “just lock everything”. In contrast, non-recursive locks forces you to have explicit “thread-safety borders” in your code. And such borders really leads to better designs.

Here are the games:

Related:

–jeroen

 

 

Posted in Conference Topics, Conferences, Development, Event, Multi-Threading / Concurrency, Software Development | Leave a Comment »

Need to look at monospaced programmers fonts again

Posted by jpluimers on 2020/05/27

At the time of looking, FiraCode would not work in Delphi but would in Visual Studio. Reminder for me to look at it again: [WayBack] GitHub – tonsky/FiraCode: Monospaced font with programming ligatures.

A cool feature of the font is that it has ligatures for common multi-character combinations like := or ...

Back when scheduling this, I was still at Lucida Console because of its large x-height and small line spacing.

It is time to revisit my font choice, so lets include at least these candidates:

–jeroen

related:

Edit 20200527: observations by Uwe Schuster

Posted in .NET, Delphi, Development, Font, Power User, Programmers Font, Software Development, Visual Studio 2015, Visual Studio and tools, vscode Visual Studio Code | Leave a Comment »

Beyond console.log() – Matt Burgess – Medium

Posted by jpluimers on 2020/05/26

Not yet structured logging, but it brings more structure to your console.log() output:

There is more to debugging JavaScript than console.log to output values. It might seem obvious I’m going to pimp the debugger, but…

[WayBack]: Beyond console.log() – Matt Burgess – Medium

Via: [WayBack] Really useful article for #JavaScript developers: Going beyond #console.log for #debugging and #logging. Some gold i nthis article that may just save yo… – Jason Mayes – Google+

–jeroen

Posted in Development, JavaScript/ECMAScript, Scripting, Software Development, Web Development | Leave a Comment »

How to move Git submodule to sub-directory? – Stack Overflow

Posted by jpluimers on 2020/05/26

It’s a few steps as per [WayBackHow to move Git submodule to sub-directory? – Stack Overflow, so I’m not sure it is the best solution, but it at least works (thanks Philzen):

Had the same problem just the moment ago and ended up deleting the submodule reference (as outlined in this article) and recreating it where i wanted it to go.

To follow your example of moving submodule jquery into repos/jquery

  1. Delete the (typically three lines) submodule reference from .gitmodules.
  2. Check .git/config for references to the submodule and remove them, if existent
  3. do git rm --cached jquery to cut the submodule reference out of the repository
  4. remove the old submodule folder
  5. recreate you submodule reference (as you possibly did before) with git submodule add git://github.com/jquery/jquery.git repos/jquery

In case your submodule was set to specific tag, respectively commit (which you’ll surely have in a stable project) you will have set it again.

Due to this complex process i am strongly hoping there is (or will be, at least on the git roadmap) a more straightforward way of achieving this. If not, surely some scripts could be fumbled together to do this quicker…

References:

–jeroen

Posted in Development, DVCS - Distributed Version Control, git, Software Development, Source Code Management | Leave a Comment »