The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • 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

Dutch daily weather data: KNMI – Daggegevens van het weer in Nederland

Posted by jpluimers on 2017/12/29

Cool data, in large parts suitable for statistical processing: [WayBack] KNMI – Daggegevens van het weer in Nederland

Thanks to Helga van Leur:

–jeroen

 

 

Posted in History, LifeHacker, Power User, science | Leave a Comment »

Consolidating NTFS free space

Posted by jpluimers on 2017/12/29

For shrinking VM disk images, it’s important to consolidate NTFS free space towards the end of the this.

I’ve tried many tools, starting with defrag C: /X (which tries, but doesn’t give good results) and found out these steps give the best results:

  1. Perform an Ultradefrag full optimisation,
  2. Perform a MyDefrag Consolidate free space script on the drive.

If shrinking still fails then:

  1. Try the Ultradefrag at boot time
  2. Verify what kind of file(s) prevent shrinking: they show up in red after the MyDefrag session:
    1. Zoom in them (they can initially as small as 1 red pixel) by clicking on or near them, repeating the zoom long enough so you can hover over with the mouse and the lower part of the screen shows a filename like  where you cannot find much information about “$badclus:$bad:$data” but appear to be clusters marked as bad on NTFS level using something like chkdsk /B.
    2. If it was a bad sector like above, then try to resolve it with [WayBackntfsfix which ships with GParted live boot:
      1. boot a [WayBackGParted — Live CD/USB/PXE/HD drive,
      2. run GParted to see the drive path (for instance /dev/sda1)
      3. start a terminal
      4. run this command:
        ntfsfix -b /dev/sda1
        which will give output like this:

        Mounting volume... OK
        Processing of $MFT and $MFTMirr completed successfully.
        Checking the alternate boot sector... OK
        NTFS volume version is 3.1.
        Going to un-mark the bad clusters ($BadClus)... OK
        NTFS partition /dev/sda1 was processed successfully.
      5. boot back into Windows
      6. on an administrative command prompt run this for the affected drive letter:
        chkdsk D: /B
        (reboot if needed)
  3. Shrink the drive using diskmgmt.msc

If you still cannot shrink, then try [WayBackhttp://ftp.raxco.com/pub/download/pd14.0/pd14.0_pro.exe PerfectDisk by Raxco free trial.

Note:

MyDefrag (formerly named JkDefrag) is not maintained any more but the 4.3.1 version in the WayBack machine still works very well as the underlying defragmentation APIs in Windows haven’t changed.

References:

For FAT32:

For GParted / ntfsfix:

PerfectDisk via:

–jeroen

Posted in Power User, Windows, Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Vista | Leave a Comment »

cyber- (prefix): (1) A linguistic cue informing the reader that the meaning of…

Posted by jpluimers on 2017/12/29

cyber- (prefix): (1) A linguistic cue informing the reader that the meaning of the word to follow should only be construed in the context of vaguely imminent threats and the need for more federal funding. (2) Something “computery.”

via: [WayBackcyber- (prefix): (1) A linguistic cue informing the reader that the meaning of…

Many more words are here:

The New Devil’s Dictionary: 249 words for the end of the world

[WayBackThe New Devil’s Dictionary

–jeroen

Posted in Fun, History, Quotes | Leave a Comment »

Time to Grow Up: Counterproductive Security Behaviors That Must End // Speaker Deck

Posted by jpluimers on 2017/12/29

Good end-of-year re-reading (hopefully there is a video link by now) by Chris Eng (@chriseng) [WayBack] Time to Grow Up: Counterproductive Security Behaviors That Must End // Speaker Deck

via: [WayBackThats a decent keynote – G+ Kristian Köhntopp.

Read the rest of this entry »

Posted in Development, Infrastructure, Security, Software Development | Leave a Comment »

C# – All About Span: Exploring a New .NET Mainstay

Posted by jpluimers on 2017/12/28

Interesting new .NET feature already available for .NET 4.5, but much faster in future .NET versions: [WayBackC# – All About Span: Exploring a New .NET Mainstay

Documentation (only quoted first paragraph):

Span<T> is a new type we are adding to the platform to represent contiguous regions of arbitrary memory, with performance characteristics on par with T[]. Its APIs are similar to the array, but unlike arrays, it can point to either managed or native memory, or to memory allocated on the stack.

Further on in that document are the Design specifications.

Via:

–jeroen

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

Delphi: it is better to use ifndef rather than ifdef to keep the IDE working properly…

Posted by jpluimers on 2017/12/28

[WayBackDear diary, today I learned that it is better to use ifndef rather than ifdef if I want the IDE to keep working properly. I had a uses clause with an i… – Stefan Glienke – Google+

I promised to remind myself, so here it is (:

–jeroen

 

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

Idera / Embarcadero at least fixed some of their security issues…

Posted by jpluimers on 2017/12/27

Some security improvements

A long while ago I quoted [WayBack] Ideara / Embaracdero is flushing away user trust in their ability to do secure computing… – Jeroen Wiert Pluimers – Google+.

Since then they have fixed some of the issues:

  • EDN password reset email messages do not contain the plain text password any more
  • The https sites now have much better security certificates

Still, parts of their infrastructure run over http or use other insecure patterns.

Infrastructure and DevOps are hard, but an integral aspect of any company.

Hopefully, their most important new-years resolution is to improve on that.

AppAnalytics still down

I don’t hold my breath as [Archive.ishttps://appanalytics.embarcadero.com/ for more than a month now has been showing

503 Service Unavailable

No server is available to handle this request.

On the other hand: they have improved, so let’s keep our fingers crossed, and it had been running since 2015: [WayBack]Embarcadero Introduces AppAnalytics, the First Usage Analytics Service for Desktop, Mobile, and Wearable Applications

Disabling AppAnalytics in Delphi

There are three ways to disable AppAnalytics in the Delphi IDE to phone home (this is for Delphi XE8, change the version numbers accordingly):

That should at least get rid of the 30 second shut-down timeout in some Delphi versions while they try to post the usage data to AppAnalytics (thanks Uwe Raabe for this great tip!)

–jeroen

Related:

Posted in Delphi, Development, Power User, Security, Software Development | 5 Comments »

Valid reasons for having Delphi AnsiString on Mobile platform…not only for Internet but for Shaders also. //…

Posted by jpluimers on 2017/12/27

It’s too bad that you need workarounds to get ByteStrings working on mobile devices as there are APIs there (like shaders) that work best with them.

There was a nice discussion on this last year at [WayBack] I miss AnsiString on Mobile…not only for Internet but for Shaders also.// FMX.Context.GLES.pasconstGLESHeaderHigh: array [0..24] of byte =(Byte(‘p), … – Paul TOTH – Google+ based in this code example in the FMX library undocumented unit FMX.Context.GLES:

// FMX.Context.GLES.pas

const
  GLESHeaderHigh: array [0..24] of byte =
    (Byte('p'), Byte('r'), Byte('e'), Byte('c'), Byte('i'), Byte('s'), Byte('i'), Byte('o'), Byte('n'), Byte(' '),
     Byte('h'), Byte('i'), Byte('g'), Byte('h'), Byte('p'), Byte(' '), Byte(' '), Byte(' '), Byte('f'), Byte('l'),
     Byte('o'), Byte('a'), Byte('t'), Byte(';'), Byte(#13));

There are more than 500 places in the Delphi library sources that uses this construct and even more that do other fiddling (like [WayBackTEncoding.GetBytes) to get from strings to bytes.

I wonder if by now we still need the workarounds that Andreas Hausladen provides:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Encoding, Event, Software Development | 6 Comments »

c# – Why does Try-Catch require curly braces – Stack Overflow

Posted by jpluimers on 2017/12/27

From my SO Question Archive:

Just curious: Why is the syntax for try catch in C# (Java also?) hard coded for multiple statements? Why doesn’t the language allow:

int i;
string s = DateTime.Now.Seconds % 2 == 1 ? "1" : "not 1";
try
   i = int.Parse(s);
catch
   i = 0;

The example is for trivial purposes only. I know there’s int.TryParse.

[WayBackc# – Why does Try-Catch require curly braces – Stack Overflow.

I asked this question partially because of my Delphi background where there are two try statements (one for finally and one for except a.k.a. catch) neither having the braces problem as try/finally/except all are block boundaries.

The most interesting bit was the [WayBackanswer by [WayBack] Eric Lippert (ex C# compiler team, now at Facebook after an intermediate position at Coverty) referring to his [WayBackWhy are braces required in try-catch-finally? | Fabulous adventures in coding  blog entry.

The answer and blog entry come down to preventing ambiguity.

His answer reveals that a compound try/catch/finally statement is converted by two try statements like this:

try
{
  try
  {
      XYZ();
  }
  catch(whatever)
  {
     DEF();
  }
}
finally
{
  ABC();
}

This emphasises that catch and finally are conceptually indeed two different things which statistics show.

I need to dig up the numbers (I remember researching this for Java and Delphi code a very long time ago – think Delphi 7 era – and C# code a long time ago – think C# 2 era), but this comment should still hold:

My observation in most code I’ve seen is that the combination of catch and finally is hardly (i.e. far less than 1%) used in the same statement (or in other languages in nested statements), because they serve two very different purposes. That’s why I prefer not to mix them, and if I do, use the nested construction to both emphasize the difference in purpose, and execution order. Learning new things every day: How often is your occasionally percentage wise? – Jeroen Wiert Pluimers Dec 23 ’12 at 19:34

–jeroen

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

Maximum filename length 60 characters, le-sigh

Posted by jpluimers on 2017/12/26

It is still better than a maximum password length of 20 characters, but limits like these keep being reason for frustration:

  • : De bestandsnaam, inclusief extensie, mag maximaal 60 tekens lang zijn.

–jeroen

Posted in LifeHacker, Power User | Leave a Comment »