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

Delphi Berlin version numbers: Release/Update1/Update2

Posted by jpluimers on 2017/01/04

Vendors should post these, but alas Embarcadero is not the only one failing here, so here are build/version numbers of the various Delphi Berlin releases until now:

Sébastien Paradis:

  • Berlin initial release -> 24.0.22858.6822

Horácio Filho:

  • Berlin Update 1 -> 24.0.24468.8770
  • Berlin Update 2 -> 24.0.25048.9432

Via: [WayBackHi everyone How to know wheter my installed Berlin instance includes update 2?. … G+

If you need the ISO images: Positive: Delphi 10.1 Berlin Update 2 is out – ISO links.

–jeroen

Posted in Delphi, Delphi 10.1 Berlin (BigBen), Development, Software Development | 1 Comment »

History on line: Client Access/400 API Planning Guide Document Number GG24-4422-00 October 1994

Posted by jpluimers on 2017/01/04

About 12 years ago, I did some Client Access/400 work. When cleaning up “the attic”, I bumped into a paper copy of the below manual. To my surprise that document is still available on-line: http://www.redbooks.ibm.com/redbooks/pdfs/gg244422.pdf

Client Access/400 API Planning Guide

Document Number GG24-4422-00 October 1994

International Technical Support Organization Rochester Center

Then there is ” This table lists the AS/400 Version 3, Release 7 books that are available in Portable Document Format (PDF).”: http://publib.boulder.ibm.com/html/as400/online/V3R7PDF.HTM which contains a link to SC41-3513-01 “AS/400 Client Access for Windows 95/NT API and Technical Reference V3” which I also used: http://publib.boulder.ibm.com/pubs/pdfs/as400/V3R7PDF/QBKACO01.PDF

These were (for me back then) the most important chapters of the first book:

12.2 Typical Usage of the API

An application using the Remote Command/Distributed Program Call function will make use of two objects. Each of these objects are identified to the application through a handle. The objects are:

  • System object – This represents the AS/400 system. Commands can be run and programs can be called on this object.
  • Program object – This represents the AS/400 program. Parameters can be added and the program sent to the system to run the program.

There is not a separate object for commands. The command string is sent directly to the system object.

Table 16 shows how these API functions would be typically used.

Table 16. Remote Command / Distributed Program Call – Typical Usage Examples

Action

Start the host server and program.

Create a program object.

Add parameter 1 (input) to the program object.

Add parameter 2 (input/output) to the program object.

Add parameter 3 (output) to the program object.

Call the program with parameters in the same order that they were added to the program object with the cwbRC_AddParameter() calls.

API Function Call an AS/400 program

cwbRC_StartSys(′′SYS01′′, &hSystemHandle)

cwbRC_CreatePgm(′′PROG01′′, ′′LIB01′′,

&hPgmHandle)

cwbRC_AddParm(hPgmHandle, CWBRC_INPUT ,

uParm1Length, pchBuffer1)

cwbRC_AddParm(hPgmHandle, CWBRC_INOUT,

uParm2Length, pchBuffer2)

cwbRC_AddParm(hPgmHandle, CWBRC_OUTPUT,

uParm3Length, pchBuffer3)

cwbRC_CallPgm(hSystemHandle, hPgmHandle,

&hMsgHandle)

Run a CL command on the AS/400

cwbRC_RunCmd(hSystemHandle, pszCommandString,

&hMsgHandle)

Clean up at the end

cwbRC_DeletePgm(hPgmHandle) cwbRC_StopSys(hSystemHandle)

Run a command.

Delete the program object.

Terminate the conversation with the AS/400 server.

12.3 Remote Command / Distributed Program Call API Functions

Table 17 lists the API functions. For a complete list with parameters see the Client Access/400 Optimized for OS/2 API and Technical Reference, SC41-3511.

Table 17. Remote Command / Distributed Program Call – List of API Functions

API Function

cwbRC_StartSys()

cwbRC_GetSysName()

cwbRC_StopSys()

cwbRC_RunCmd()

cwbRC_CreatePgm() cwbRC_AddParm()

cwbRC_CallPgm()

cwbRC_GetParmCount()

cwbRC_GetParm()

cwbRC_GetPgmName()

cwbRC_GetLibName()

cwbRC_DeletePgm()

Description Original API

Starts a conversation with the – specified system.

Gets the name of the system for this – conversation.

Stops the current conversation with EHNSRSTC() the AS/400 system.

Issues the command on the system EHNSRSBM() identified by the handle.

Creates a program object. –

Adds a parameter to the program – object identified by the handle.

Calls the program identified by the – handle.

Gets the number of parameters for – this program object.

Retrieves the parameter identified by – the index (index value for the first parameter is 1).

Gets the name of the program that – was used when creating this program object.

Gets the name of the library that was – used when creating this program
object.

Deletes the program object identified – by the supplied handle (the AS/400
program object is NOT deleted).

–jeroen

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

Windows batch file – setting space as delimiter when parsing files

Posted by jpluimers on 2017/01/04

for /f "tokens=* delims= " %%f in (myfile) do

If you put delims as the last parameter, then an ending space will be included as delimiter (at the start or in the middle it won’t).

A great tip by jeb and Joey in an answer for windows – Batch file FOR /f tokens – Stack Overflow

–jeroen

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

Compiler Explorer – how various C++ compilers translate code into various machine code targets

Posted by jpluimers on 2017/01/03

The first implementation of Compiler Explorer supports many versions of the gcc, clang and icc compilers on ARM, ARM64, AVR and x86 targets.

On the left you type your C++ code, on the right you see the resulting assembler code optionally with byte code and colorised so you can correlate the C++ lines with the assembly.

A great way to start the year: learning new things!

Related:

–jeroen

via:

Some videos:

Read the rest of this entry »

Posted in ARM, Assembly Language, C++, Conference Topics, Conferences, Development, Event, Software Development, x86 | Leave a Comment »

Regularly forcing Microsoft Silverlight to be a hidden Windows Update

Posted by jpluimers on 2017/01/03

I got a bit fed-up with the deprecated Microsoft Silverlight reappearing as KB3056819 in each Windows Update within minutes of hiding it (I’m not alone on this, it does this when you have configured to favour the Microsoft Update Servers – that also update Office – in favour of the Windows Update Servers).

Two really odd things:

  1. In the past, I hid “Skype for Windows desktop 7.3 (KB2876229)” which stayed hidden.
  2. I never installed Silverlight, there is no Silverlight on the system (I checked the registry, file system with Everything and more), but the update keeps re-appearing (like KB960353 does for others).

So I wanted a script that every minute could check for a Microsoft Silverlight update, then hide it.

That appeared a lot more cumbersome than I anticipated, hence this blog post.

The reason is that unlike many other operating systems, Windows does not come with a build-in package manager that you can script (there is Windows Installer, but is’s not easily scriptable).

Read the rest of this entry »

Posted in Development, PowerShell, Scripting, Software Development | Leave a Comment »

Geek And Poke: Architectural Best Practices – annual rings

Posted by jpluimers on 2017/01/01

Geek And Poke: Architectural Best Practices – annual rings

Happy new year!

–jeroen

via: Aus der Abteilung “Universelle – Wahrheiten” – Jens Schwehn – Google+

PS: Bigger pictures at 1 and 2.

 

Posted in Development, Software Development | Leave a Comment »

The curse of vulnerable OpenSSL DLLs

Posted by jpluimers on 2016/12/30

When you ship OpenSSL DLLs, you should provide an update mechanism outside of your regular product cycle that updates these shortly after vulnerabilities are fixed.

Few if any products do that. So I made an overview from products and OpenSSL DLL versions I had installed on various systems.

I’m a developer, so the list is biased towards tools I use often.

All of them are vulnerable: [WayBackhttps://www.openssl.org/news/vulnerabilities.html

  • 1.0.2.h by ContinuaCI 1.8.1.185 PostgreSQL and Avast 12.3
  • 1.0.2.g by SourceTree 1.9.x embedded git_local
  • 1.0.2d by Git for Windows 2.6.1
  • 1.0.2a by SQLite browser 3.7.0
  • 1.0.1m by Delphi 10.0 Seattle
  • 1.0.1l by Ruby 2.3
  • 1.0.1f by SlikSvn 1.8.5
  • 1.0.1g by Delphi XE8, Delphi XE7, VMware Workstation OVF tool and Adobe Creative Cloud 2.8.1
  • 1.0.0g by Delphi XE6, Delphi XE5, Delphi XE4, Delphi XE3, Appmethod 1.13 and CollabNet SVN Client 1.7.5
  • 1.00d by MarkdownPad 2
  • 1.0.0 by FinalBuider 7 XE2 and FinalBuilder 7 EE
  • 0.9.8za by VMware Remote Console Plug-in 5.1 and VMware Virtual Infrastructure Client 5.1
  • 0.9.8y by VMware VIX Workstation 10
  • 0.9.8t by Veaam Backup and Replication
  • 0.9.8r by ContinuaCI 1.8.1.185 hg support, VMware VIX and VMware Workstation 8.0.2
  • 0.9.8q by Veeam Backup Transport, Veaam Backup, xampp 1.7.4 and Replication and VMware Virtual Infrastructure Client 5.0
  • 0.9.8o by xampp 1.7.4
  • 0.9.8l by xampp 1.7.4
  • 0.9.8n by Delphi XE2, Delphi XE and VMware VIX Workstation 7.1.0
  • 0.9.8m by VMware VMRC Plug-in, VMware VIX and VMware Workstation 8.0.2
  • 0.9.8i by VMware Virtual Infrastructure Client 4.1
  • 0.9.8d by Database Workbench Pro 4.4.3, Database Workbench Pro 5.2.4 and VMware vSphere CLI Perl
  • 0.9.8b by Adobe Creative Suite 5
  • 0.9.7m by VMware VIX server 1.0.9
  • 0.9.7l by VMware VIX VIServer 2
  • N/A by Adobe Create Suite 5 and VMware VIX server 1

–jeroen

via: [WayBackDoes Delphi installer install OpenSSL dll’s?

PS: Below some Software Archeology related links in the comments.

Posted in .NET, CollabNet, Delphi, Development, DVCS - Distributed Version Control, git, OpenSSL, Power User, Ruby, Security, Software Development, Source Code Management, SourceTree, Subversion/SVN | 7 Comments »

When you get “TfsScript.Execute” throwing a “Unregistered version of FastScript.” MessageBox

Posted by jpluimers on 2016/12/29

In recent Delphi version, FastReport version 5 ships. But for parts of FastReport, it’s a trial. This includes the FastScript part. The trial is very close to the real FastReport 5 thing. So real that when you compile you don’t see a difference, not even when trial and official things are mixed.

The only difference is that the trial will have a ShowMessage result like this:

ShowMessage('Unregistered version of FastScript');

ShowMessage(‘Unregistered version of FastScript’);

[Window Title]
Fastscriptexecute

[Content]
Unregistered version of FastScript.

[OK]

This occurred when I tried to move a the build process to a build server; a very tiny program will show this:

program FastScriptExecute;

uses
  Vcl.Forms,
  fs_iinterpreter;
{$R *.res}
var
  fs: TfsScript;
begin
  fs := TfsScript.Create(nil);
  try
    fs.Execute();
  finally
    fs.Free();
  end;
end.

The build server had Delphi installed but not FastReports 5. I put all the sources in version control and fiddled with the project search paths until it built on the server.

Wrong!

Since the trial is so close to the real version, it will compile even if you don’t include all directories. In fact some permutations of the FastReports source and Delphi XE8 FastReports trial DUCs build perfectly fine.

Read the rest of this entry »

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

The Eight Fallacies of Distributed Computing

Posted by jpluimers on 2016/12/28

Thanks James Gosling for writing this, and Kristian Köhntopp for pointing me to it:

The Eight Fallacies of
Distributed Computing

by Peter Deutsch

Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences.

1. The network is reliable
2. Latency is zero
3. Bandwidth is infinite
4. The network is secure
5. Topology doesn’t change
6. There is one administrator
7. Transport cost is zero
8. The network is homogeneous
For more details, read the article by Arnon Rotem-Gal-Oz

Summary of the full PDF paper

With almost 15 years since the fallacies were drafted and more than 40 years since we started building distributed systems – the characteristics and underlying problems of distributed systems remain pretty much the same. What is more alarming is that architects, designers and developers are still tempted to wave some of these problems off thinking technology solves everything.

Remember that (successful) applications evolve and grow so even if things look Ok for a while if you don’t pay attention to the issues covered by the fallacies they will rear their ugly head and bite you.

I hope that reading this paper both helped explain what the fallacies mean as well as provide some guidance on what to do to avoid their implications.

–jeroen

Posted in Development, Software Development | Leave a Comment »

Delphi class constructors and initialisation order

Posted by jpluimers on 2016/12/27

A long while ago, but still an interesting discussion: Is there a predictable order of execution for Class Constructors? leading to these links:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Delphi 10 Seattle, Delphi 2010, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Event, Software Development | Leave a Comment »