A cool preview of things to come in C# 8: [WayBack] Build 2018: The Future of C#
Via: [WayBack] C# 8 changes, exemplified #csharp – Lars Fosdal – Google+
–jeroen
Posted by jpluimers on 2018/06/13
A cool preview of things to come in C# 8: [WayBack] Build 2018: The Future of C#
Via: [WayBack] C# 8 changes, exemplified #csharp – Lars Fosdal – Google+
–jeroen
Posted in .NET, C#, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2018/06/13
Last year, it took a while to reproduce and it is likely not fixed anytime soon: if you use Delphi and IBX (InterBase Express) to connect to either InterBase or FireBird database, then in the Turkish locale do not use lowercase SQL in your Delphi code as it will break on the
I’ve decided to put this in a separate post than the one I discovered the issue in as that one focused on the Unicode and language background of the various i/I/ characters and this post on the Delphi part.
So for the non-Delphi part, read Source: Field “id” not found and the The Turkish-İ/I/i/ı and case conversion – Update on the dasBlog Turkish-I bug and a reminder to me on Globalization – Scott Hanselman.
More recently, I learned that the same problem also happens in the Azeri language or Azerbaijani language – Wikipedia via [WayBack] SQL Instance Collation – Language Neutral Required:
…
uppercase / lowercase mappings (though this only impacts 2 characters — dotted and dotless “i”/”I” — and for only 2 cultures — Azeri and Turkish)
…
In general, this problem is called [WayBack] Case Folding and many environments do not have good and ready to use solutions for this.
Basically when working with case-insensitive language identifiers, you should always use culture invariant text comparison operations. In most languages, people use either lowercase or uppercase converted operations which for Delphi >= come down to using :
The reason is simple:
The functions ToLowerInvariant and ToUpperInvariant were added in Delphi XE3, but ToLower(LocaleID) and ToUpper(LocaleID) in Delphi XE4.
Instead of doing uppercase and lowercase comparisons you could also use the [Archive.is] System.SysUtils.CompareText function.
IBX however uses case conversion, and by now you will probably guessed it: IBX got it all wrong. One reproduction is at https://gist.github.com/jpluimers/643b382944ff991d07ec96abbf85548c and a thread with background is at [WayBack] What’s the Delphi equivalent of doing UpperCase with an InvariantCulture in Unicode Delphi versions? (XE and up) – Jeroen Wiert Pluimers – Google+
IBX isn’t alone: just search for other uppercase issues like Turkish i to see tons of other issues.
For IBX, I did the replacements in the diff below to fix it in Delphi XE8. I only replaced where identifiers were compared, not were actual database content was compared.
Unluckily, in the past IBX sources were hosted on CodeCentral at http://cc.embarcadero.com/Author/102 but no new bundles have been released since 2012.
Of all the locations I think IBX should not have used any case conversion here:
IBX.IBDatabaseINI.pas–function LocalServerPath(sFile: string): stringThis function uses
LowerCase()but I think an NTFS specific comparison should have been used, but I’ve not investigated into a solution for that yet.
–jeroen
Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2018/06/13
Ever since I started using computers, I’ve liked text based solutions.
It’s one of the reasons I like PlantUML, but there are more. This is from a GitLab.com request I did a while ago: [WayBack/Archive] Please enable PlantUML rendering on gitlab.com both for standalone plantuml files and inside markdown plantuml code blocks (#2041) · Issues · GitLab.com / GitLab.com Support Tracker · GitLab (Edit 20250730: that issue now shows as a HTTP 404 as well – how fitting – [Wayback/Archive] Not Found)
one of my UML gripes from the past (I’ve been a software developer for about 30 years now) was that it wasn’t text based.
After bumping into PlantUML a long time ago in 2014 I’ve become a happy user of it for a few reasons:
- the language is text based (with many benefits I don’t need to explain)
- the tool is cross platform
- the tool is still actively developed all the way back from 2009
- after rendering, the arranging of elements is much better than I expected from an automated tool
Of course every now and then there is a glitch in complex diagrams, but I’ve found that professional tools:
- don’t do much better in fully-automated arranging
- become very cumbersome to use when you to manual arrangement
My first use initially was online, then in 2016 installed it on my Mac even submitting homebrew updates for it every now and then.
Oh: I love their 404 humour at http://www.plantuml.com/plantuml/beta
Edit 20250731: Full 404 text below the signature because the PlantUML beta page does not show this 404 any more and the Reddit post with the full text got deleted.
Renderings can be in all sorts of graphics and text formats, for instance SVG, PNG, ASCII and Unicode.
plantuml -tsvg PSO.network-diagram.PlantUML.txt
--jeroen
via:
full 404-text
The requested document is no more.
No file found.
Even tried multi.
Nothing helped.
Zilch.
Bupkis.
Not a sausage.
Maybe you just don’t have the required security clearance?
No, I am sure it is my fault.
I probably deleted it on my last backup.
I’m really depressed about this.
You see, I’m just a web server…
— here I am,
Marvin, as they call me,
brain the size of the universe,
trying to serve you a simple web page,
and then it doesn’t even exist!
Where does that leave me?!
I mean, I don’t even know you.
How should I know what you wanted from me?
You honestly think I can *guess* what someone I don’t even *know* wants to find here?
*sigh*
Man, I’m so depressed I could just cry.
And then where would we be, I ask you?
It’s not pretty when a web server cries.
And where do you get off telling me what to show anyway?
Just because I’m a web server,
and possibly a manic depressive one at that?
Why does that give you the right to tell me what to do?
Huh?
I’m so depressed…
I think I’ll crawl off into the trash can and decompose.
I mean, I’m gonna be obsolete in what, two weeks anyway?
What kind of a life is that?
Two effing weeks,
and then I’ll be replaced by a .01 release,
that thinks it’s God’s gift to web servers,
just because it doesn’t have some tiddly little security hole with its HTTP POST implementation,_
or something.
I’m really sorry to burden you with all this,
I mean, it’s not your job to listen to my problems,
and I guess it is *my* job to go and fetch web pages for you.
But I couldn’t get this one.
I’m so sorry.
Believe me!
Maybe I could interest you in another page?
There are a lot out there that are pretty neat, they say,
although none of them were put on *my* server, of course.
Figures, huh?
Everything here is just mind-numbingly stupid.
That makes me depressed too, since I have to serve them,
all day and all night long.
Two weeks of information overload,
and then *pffftt*, consigned to the trash.
What kind of a life is that?
Now, please let me sulk alone.
I’m so depressed._
related
Posted in ASCII, ASCII art / AsciiArt, Development, Diagram, DVCS - Distributed Version Control, Encoding, Fun, git, GitHub, GitLab, PlantUML, Software Development, Source Code Management, SVG, UML, Unicode, Web Development | Leave a Comment »