It has been in the queue for a really long time. In fact, all started when chatting with Anders Ohlsson during the inception of the Embarcadero MVP program.
But then the paper work (you know, the thing with written signatures, fax machines, etc) got buried under some projects that lasted both a lot longer than initially anticipated, and were far more consuming also meaning I could not make it to the developer conferences I originally planned.
Given the time frame, and increase of information about a Delphi for Android product, it might be out or available for beta blogging by then. You can sign up for the beta here, and according to the roadmap it is estimated for release later this year. I hope to be able to play with that soon enough to at least demo a few bits and pieces of it using my Nexus 4 and HTC Sensation on some of those events.
Gbak recognizes the literal strings ‘stdin’ and ‘stdout’ as source or destination filenames. In POSIX systems, when the standard input and/or standard output channels are used, it is not permitted to execute seek operations on these channels. Using ‘stdin’ or ‘stdout’ as file names with gbak will force gbak to use processing that will not seek on the input or output channels, making them suitable for use in pipes
You may use gbak to create a clone of a database, on the same server, without needing to create a potentially large dump file. To do this, you pipe the output of a gbak backup directly to the input of a gbak restore, as follows.
tux> # Clone a test database to the same server, without requiring a dump file.
tux> gbak -backup emptest stdout | gbak -replace stdin emptest_2
Two years ago, I posted a batch file that gets the parent directory of the batch file that runs.
It was convoluted, using substrings and intermediate environment variables so you needed setlocal.
This one does not any more: for both the directory of the batch file, and the parent directory of that directory, one-liners suffice:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Programmers scale: time versus project completeness
I totally agree that Paint.NET is the best free image and photo editor on Windows.
Writing quality software takes time, not only when writing it in spare time like Rick Brewster does. Getting things “right” is a tedious process and often will set you back: just watch the graph on the right.
It paves the way for Paint .NET 4.0 update in the future, and fixes/improves quite a few things.
A few quotes from it:
This is probably not the update you were expecting I need to push out an update to v3.5 in preparation for the eventual release of v4.0 […] releasing a “beta” today […] I’ll be pushing out the Final/RTM in a few days.
The primary goal of this update is preparing for the v4.0 release: v3.5.10 will not be able to offer the v4.0 update, but v3.5.11 will. […]
Everyone knows there is a size difference between a gigabyte of memory, and a gigabyte of disk space.
The former is 102410241024, the latter is 100010001000.
To facilitate this, I’ve created a C# class UnitPrefixes containing quite a few constants and readonly values.
The class is below, but a few interesting facts first:
Most values are const, but a few are readonly static variables because they cannot calculated at compile time (the C# compiler by design does very limited calculations at compile time; it is complex enough as it already is).
As Jon Skeet explains, there are some other differences between const and readonly static, which is why I favour const.
Though all consts are positive, I could have used UInt32 and UInt64, but the .NET framework favours signed Int32 and Int64 types for parameters, so to avoid casting, I used the signed ones.
There is no Int128 or UInt128, but there is System.Numerics.BigInteger which I use for values too large for 64-bit integers.
Note that BigInteger is relatively new, so this code will only work in C# 4 or higher, and requires .NET 4 or higher.
This is also the place where I use the public readonly static fields, as I need to call the BigInteger constructor to initialize it.
While researching some other historic information about Delphi, I bumped into this thread: New DPMI host – delphi.
If is a small thread describing what kinds and versions of DPMI hosts were available to run Turbo Pascal based programs.
DPMI stands DOS Protected Mode Interface: a way for real mode DOS programs to access protected mode features (mainly memory above the 1 megabyte barrier).
I had plainly forgotten that the DPMI host shipped with Delphi 1, and wasn’t aware you could have a 32-bit DPMI host at all.