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

Getting the internal TeeChart version numbers

Posted by jpluimers on 2016/08/30

Even though TeeChart uses a year and minor version number during installation, that’s not the only version number available or used.

For instance their bug reporting site bugs.teechart.net uses build versions.

They are easy to get for your product: just look at the units TeeConst, VCLTee.TeeConst or FMXTee.Constants having consts like these:

TeeChartVersion =String('9'); // Cast to String to force CPP *.hpp generation as AnsiString instead of AnsiChar
TeeProductName =String('2015');
TeeVCLMinorVersion ='.15'; // ie: '.01' '.02' , etc
TeeVCLBuildVersion ='150420'; //YYMMDD
TeeVCLBuildVersionInteger = 150420; // <-- Same as above as integer number

You probably get the drift:

  • TeeProductName.TeeVCLMinorVersion is what you see when installed.
  • TeeVCLBuildVersion is what is on the bug report site.
  • TeeChartVersion is in the package names.

It’s sort of documented as well: Steema Central • View topic – How to find TeeChart version number at runtime?

–jeroen

Posted in Uncategorized | Leave a Comment »

Cool little trick to show all the preset variables for your GCC/Clang compiler

Posted by jpluimers on 2016/08/30

Thanks David Berneda for sharing this a while ago:

Cool little trick to show all the preset variables for your GCC/Clang compiler:

clang -E -dM - < /dev/null

I’ve always wondered how to get these. Some are kind of surprising, especially since there are 320 of them, at least on my system.

On my system (Mavericks, I wish the sw_vers console tool would tell that): 170 lines.

Read the rest of this entry »

Posted in Apple, C, C++, Development, Mac OS X / OS X / MacOS, OS X 10.9 Mavericks, Power User, Software Development | Leave a Comment »

4K/5K monitors: when your RDP session has small black bands limiting the height/width to 2048/4096 pixels

Posted by jpluimers on 2016/08/29

Sometimes RDP limits you to 2048 pixels vertical (or 4096 pixels horizontal)

Sometimes RDP limits you to 2048 pixels vertical (or 4096 pixels horizontal)

Just found out why on some Windows versions, the RDP sessions form my 4K monitor has some small black bands on top/bottom: older versions of Windows limit their RDP server to 4096 x 2048.

A 4K monitor will not hit the width limit (as 4K cheats: it is usually “just” 3840 pixels wide), but it does hit the height limitation (2160 is slightly more than 2048: you miss 112 pixels that show as two small black bands).

A 5K monitor is worse: it will hit both limits (5K does not cheat: at 5120 × 2880 it is exactly 5*1024 pixels wide) so you miss 124 pixels horizontally and a whopping 832 pixels vertically.

Don’t buy a 5K monitor yet if you do a lot of RDP work to older Windows versions.

The link below has a table listing various Windows versions, but it omits end-of-life versions so I’ve done some testing: Windows XP, Windows Vista, Windows Server 2003 and Windows Server 2003 R2 share the same limitations as Windows Server 2008 most likely because their latest service packs share the same RDP 6.1 version.

I updated this in the table:

Read the rest of this entry »

Posted in 4K Monitor, 5K monitor, Displays, Hardware, Microsoft Surface on Windows 7, Power User, Windows, Windows 10, Windows 7, Windows 8, Windows 8.1, Windows 9, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Vista, Windows XP | Leave a Comment »

certificate – What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats? – Server Fault

Posted by jpluimers on 2016/08/29

The canonical answer on extensions and formats like csr, pem, key, pkcs12, pfx, p12, der, cet, cer, crt, p7b, crl, PEM, PKCS7, PKCS12, PKCS10, DER, text, binary, ASN1: certificate – What is a Pem file and how does it differ from other OpenSSL Generated Key File Formats? – Server Fault.

Oh and it contains some openssl conversion tips as well, though this link has more: DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them.

–jeroen

Posted in Encryption, OpenSSL, Power User, Security | Leave a Comment »

Invite people to a Google Hangouts session with you by constructing a manual invitation URL

Posted by jpluimers on 2016/08/26

Cool:

Did you know that you could share a link to let people chat with you in Hangouts?

We use these links for certain invites, but they work if you hand build them and share them too.

https://hangouts.google.com/chat/person/ 111111111111

Where the number is your profile id

With vanity urls it’s harder to find that, but the easiest way is to use the public api call here https://developers.google.com/+/web/api/rest/latest/people/get#try-it.
Put “me” into the userId field and it will output your numerical id in the response.

Enter `id` in the `fields` to limit the JSON

Enter `id` in the `fields` to limit the JSON

By constructing such an invitation URL you can get people to directly start a Google Hangouts chat with you.

The above steps will give you a lot of JSON output which includes an id field somewhere in the middle. With one more trick you can get just the id field.

You can limit the output by putting id in the fields to request as the image on the right shows.

Sometimes clicking on G+ posts, you even get the id for free, I’m just not sure under what circumstances G+ builds a G+ URL with username or with id.

–jeroen

Source: We have made a number of changes internally to Hangouts…

via:

Posted in Google, GoogleHangouts, Power User | Leave a Comment »

Webserver cipher hardening links

Posted by jpluimers on 2016/08/26

There are quite a few pages on Webserver Cypher Hardening. This is yet another one born because I didn’t know how to compare these lists and why they were so different.

Apparently, OpenSSL has various ways of naming (groups of) cyphers. OpenSSL also disregards any cyphers it doesn’t have.

Basically there are two far ends for cypher lists:

  1. Fully name all cyphers and their order: long list fine grained control
  2. Name groups including group order and let OpenSSL expand the groups: short list but coarse grained control.

A way to compere them using openssl ciphers -V is answered at ssl – Hardening web server cyphers: which cypher list to choose, or how to map between Mozilla and Hynek – Server Fault.

Some of the cypher lists I found:

There are two great SSL tests I found out. The first one is online, the second one from the shell.

  1. SSL Labs:
  2. shell based SSL/TLS tester: testssl.sh.

–jeroen

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

Why sometimes you *want* to to have your DFM files stored as binary

Posted by jpluimers on 2016/08/25

Delphi Component/Tool vendors have to support a truckload of Delphi and C++ Builder versions which can be a pain: they have to work around problems in Delphi and C++ Builder versions that have long been abandoned by Borland/CodeGear/Embarcadero/Idera/…

This means that sometimes the Delphi Component/Tool vendors have to work around stuff in a way normal applications vendors would never do.

Recently I learned that sometimes this can be a painful thing: keeping DFM files in binary state.

I’m not kidding about either the DFM file format nor about supporting old versions:

  • Delphi has supported text based DFM files since like Delphi 2 for most of the features (yes, ‘most’ is the crucial word here) and by default stored DFM files in text format since Delphi 5.
  • For the Component/Tool Vendors, even Delphi 7 makes money though usually less than Delphi 2007 or the C++ Builder side of things.

The ‘most’ applies to this nice ARM compiler bug in Delphi 19.0.13856.4978 (for mere mortals, that’s Update 1 for RAD Studio XE5, Delphi XE5 and C++Builder XE5; I wish vendors would list those numbers/products in a central place):

  • [Android] MsBuild (dccAarm) error when compile FireMonkeyMobile projects with fmx forms
  • Project:  Delphi
  • Build #:  19.0.13856.4978

Source: [WayBack] QualityCentral

That’s why TeeChart still has most DFM files stored as binary files (again the ‘most’ word).

For version control and searching this is a pain, so normal application developers (the ones not using Delphi XE5 Update 1 for Android work) should run convert.exe with the -t (target=text) switch on DFM binary files.

Oh: this is fixed in version 19.0.13856.4978 (yes, that’s XE5 Update 2).

–jeroen

Via:

 

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Kylix, QC, Software Development | Leave a Comment »

Perl: checking if makedepend is available without using File::Which

Posted by jpluimers on 2016/08/25

Long lasting open source projects often use makedepend to amend Makefiles with C header dependencies.

However, makedepend is old, not available on some systems (like Mac OS X or Windows) and can have different behaviour than the C compiler on those systems. The alternative usually is the -M switch on the C compiler.

In practice, either makedepend, or the alternative is available, so when prepping for a build you have to choose which one to use.

Some of those open source projects use Perl as a bootstrapper. I’ll write more about those boots trappers in the future, but first lets go back to the post title:

First detecting the availability of makedepend from Perl without relying on File::Which which isn’t installed by default on systems having Perl so a gated check-in build like this Travis build fails.

The trick I use is Perl backticks (aka qx) to try and execute makedepend merging the output of both stdout and stderr (using 2>&1 which is available on most shells). If there is no output, then the result is undef which means makedepend is not available.


# http://perldoc.perl.org/perlop.html#Quote-Like-Operators
# ensure to take the stdout and stderror so we get output like this:
# 'makedepend: error: cannot open "Makefile.makedepend"
#'.
my $makedepend_output = `makedepend -f Makefile.makedepend 2>&1`;
if (!$makedepend_output)
{
print "No makedepend executable found on your path.\n";
}
else
{
print "Output of makedepend: '$makedepend_output'.\n";
}

–jeroen

via:

Posted in Development, Perl, Scripting, Software Development | 1 Comment »

Update to List-Delphi-Installed-Packages.ps1 shows HKCU/HKLM keys and doesn’t truncated fields any more

Posted by jpluimers on 2016/08/24

I’ve posted an update to List-Delphi-Installed-Packages.ps1 that:

  • added HKCU/HKLM registry key values for each BDS version
  • doesn’t truncate fields any more when your console has limited width
  • is now in UTF-8 format so the BitBucket web-interface can show it

For the first two: Phry for helping me to force Format-Table to show more than 10 columns and pointing me how find out how to do this with Out-String so it doesn’t truncate fields; blog post about it will follow.

Now – as I can display more than 10 columns- I can start working in integrating all the other info about various BDS versions.

Source is at https://bitbucket.org/jeroenp/besharp.net/src/tip/Native/Delphi/Scripts/List-Delphi-Installed-Packages.ps1?fileviewer=file-view-default

A text dump of the current output is below with the Delphi versions including CompilerVersion, RTLVersion, VERXXX Define, DllSuffix and more.

–jeroen

via: If you need to know underlying information on Delphi versions « The Wiert Corner – irregular stream of stuff

Read the rest of this entry »

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

APC: getting ftp://ftp.apc.com/apc/public/software/pnetmib/mib/417/powernet417.mib turned out to be tricky

Posted by jpluimers on 2016/08/24

I tried updating my downloads for my APC7920 and APC7921 PDUs.

I knew the APC download site http://www.apc.com/nl/en/tools/download/index.cfm was slow and navigation unfriendly (lots of ERR_CACHE_MISS as you cannot ctrl-click on downloads), but it’s also buggy: Some of the ftp download URLs do not contain the authentication and one file would not download at all.

The solution for that is to prepend the credentials as username:password@ like these URLs where each first one is generated by the download site and each second one works:

  • ftp://ftp.apcc.com/restricted/hardware/nmcard/firmware/devipcfg_wiz/502/Device%20IP%20Configuration%20Wizard.exe
  • ftp://restrict:Kop$74!@ftp.apcc.com/restricted/hardware/nmcard/firmware/devipcfg_wiz/502/Device%20IP%20Configuration%20Wizard.exe
  • ftp://ftp.apc.com/restricted/hardware/nmcard/firmware/sec_wiz/104/SecWiz%201.04%20Install.exe
  • ftp://restrict:Kop$74!@ftp.apc.com/restricted/hardware/nmcard/firmware/sec_wiz/104/SecWiz%201.04%20Install.exe

The username is restrict and the password Kop$74! which requires single quotes on the command-line to prevent parameter and event expansion.

Otherwise you will get bash errors like these: event not found for the part starting with an exclamation mark and Login incorrect. for the parts having a dollar.

One file would not download at all: ftp://ftp.apc.com/apc/public/software/pnetmib/mib/417/powernet417 as all download attempts would time out:

  • Chrome with and without username:password@ (you will get a ERR_FTP_FAILED)
  • wget with and without username:password@ (it will result in a )
  • plain curl with and without username:password@ (it will result in a curl: (28) Timeout was reached)

The only command that would work was this:

curl -G ftp://ftp.apc.com/apc/public/software/pnetmib/mib/417/powernet417.mib > powernet417.mib

via: SimplicityGuy/pynoc – Travis CI

The trick is to:

  1. leave username and password away
  2. specify the -G (or –get) parameter forcing GET behaviour (which should be the default).

I’m not sure why it works, but it does.

–jeroen

Posted in *nix, APC Smart-UPS, cURL, Power User, UPS | Leave a Comment »