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 »
Posted by jpluimers on 2018/06/12
Interesting: [WayBack] Grammar Zoo – Browsable Borland Delphi Assembler Grammar.
It is very complete, including constructs like the [WayBack] special directives VMTOFFSET and DMTINDEX for Delphi virtual and dynamic methods.
You can contribute to it using https://github.com/slebok/zoo/tree/master/zoo/assembly/delphi
–jeroen
Posted in Assembly Language, Delphi, Development, Software Development, x86 | Leave a Comment »
Posted by jpluimers on 2018/06/12
If you ever get an error like these in Delphi XE8 and up
[dcc32 Fatal Error] MyProject.dpr(23): F2051 Unit GUITestRunner was compiled with a different version of DUnitX.TestFramework.ITest
[dcc32 Fatal Error] MyProject.dpr(23): F2051 Unit TextTestRunner was compiled with a different version of DUnitX.TestFramework.ITestListener
then you are likely your project is:
Solution:
$(BDS)\source\DUnit\src–jeroen
Posted in Delphi, Development, Software Development | 1 Comment »
Posted by jpluimers on 2018/06/11
In this article, we will explain you how to restrict a SSH user access to a specific directory using chrooted jail in Linux systems.
Source: [WayBack] Restrict SSH User Access to Certain Directory Using Chrooted Jail
via: [WayBack] Restrict #SSH User Access to Certain Directory Using Chrooted Jail #Linux – Linux Inside – Google+
–jeroen
Posted in *nix, *nix-tools, Communications Development, Development, Internet protocol suite, Power User, SSH, TCP | Leave a Comment »
Posted by jpluimers on 2018/06/08
Be sure to read the comments at USB serial converters from FTDI are quite popular – Thomas Mueller (dummzeuch) – Google+ [WayBack] as it tells more about how to set genuine and fake FTDI chips apart (often before buying them, you cannot tell) and how to replace fake ones buy genuine ones.
Getting back to original means de-soldering fake chips, and soldering new genuine chips on the boards.
Fake chips:
Note that the workarounds for these fake chips mean you cannot use more recent chips.
Fake chips can cause you a lot of headaches – and time – sorting out communication problems: [WayBack] esptool-ck, esp8266, and FTDI Bug Hunting – vilimblog
Two years ago, this shoot-out (with results on github) had a great conclusion:
Buy either an adapter with a genuine FTDI chip, or one of the Silicon Labs CP2102 chips.
The FTDI chip is the only one attaining 3M baud rates.
Overview articles:
SiLabs chips seem to be the only without much trouble:
cp210x device, no matter the chip source:
I haven’t seen or recognized a fake CP210x chip yet, so my guess would be that these are generally fine no matter where you get them. One big advantage of those is the integrated voltage 3.3V regulator, which can save some space when rolling your own boards.
FTDI related:
ft232r_prog, then re-program using sudo ./ft232r_prog --new-pid 0x6001 as per (already archived original is gone) Unbrick FT232 counterfeit chip | Weird-Lab:
$ sudo apt-get install make gcc libftdi-dev
$ wget http://rtr.ca/ft232r/ft232r_prog-1.24.tar.gz
$ tar -zxvf ft232r_prog-1.24.tar.gz
$ cd ft232r_prog-1.24
$ make
$ sudo ./ft232r_prog —old-pid 0x000 —new-pid 0x6001
Genuine FTDI seems to be the easiest to find:
Prolific has similar issues, driver v3.4.25.218 still works with fake chips:
–jeroen
Related posts where I mentioned some of the trouble with FTDI chips:
Posted in *nix, Development, Hardware Development, Hardware Interfacing, Legacy Ports: COM, Linux, openSuSE, Power User, SuSE Linux | Leave a Comment »
Posted by jpluimers on 2018/06/07
One of the reasons it is so hard to write ARC a compatible source base is that there is no Delphi ARC win32 compiler. So you have to debug your memory issues using the remote debugging capabilities which – besides very slow – are unstable at best.
This is the number 1 reason I have been asking for a Delphi ARC win32 compiler integrated with the native Delphi win32 debugger (in addition to the current Win32 non-ARC compiler). Hopefully [WayBack] A second example of memory usage/leaks on linux using TTask (but only running one at a time) inside a loop will show memory usage increasing depending o… – Andrew Pratt – Google+ will give Embarcadero more motivation to eventually develop one.
This besides the fact that anyone writing for ARC should buy+read [WayBack] Delphi Memory Management eBook for classic and ARC compilers
via [WayBack] I have some questions about Linux & ARC and I’m hoping some experts can share their expertise because I’m not understand the results I’m seeing. For th… – Andrew Pratt – Google+
(see also [WayBack] How to free a component in Android / iOS – Stack Overflow and Delphi ARC: Free versus DisposeOf (via: Ondrej Pokorny – Google+))
–jeroen
Posted in Delphi, Development, Software Development | 3 Comments »
Posted by jpluimers on 2018/06/07
[WayBack] Why Semco Doesn’t Want Your Company To Be Like Semco | Corporate Rebels, but looking at how a traditional hierarchical industrial manufacturing company got turned up-side down and democratised might inspire you.
Via: [WayBack] “The world needs no more Semcos, but it definitely needs more companies who have built their own organizational models and management principles drawn from their real-life, in-the-field experiments… – Marjan Venema – Google+
–jeroen
Posted in Agile, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2018/06/07
Installing go in one go:
$ brew install go Updating Homebrew... ... ==> Downloading https://homebrew.bintray.com/bottles/go-1.10.2.sierra.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/48/4823ec642228f0a3746fe490ebd33f935d1c53424638792c20035ce0c3e8281e?__gda__=exp=1525363605~hmac=ff794ae42583750331da7067db58f71993bbe870b5833fc08e79908ed2afcc06& ######################################################################## 100.0% ==> Pouring go-1.10.2.sierra.bottle.tar.gz ==> Caveats A valid GOPATH is required to use the `go get` command. If $GOPATH is not specified, $HOME/go will be used by default: https://golang.org/doc/code.html#GOPATH You may wish to add the GOROOT-based install location to your PATH: export PATH=$PATH:/usr/local/opt/go/libexec/bin ==> Summary 🍺 /usr/local/Cellar/go/1.10.2: 8,161 files, 336.8MB
–jeroen
Posted in Development, Go (golang), Software Development | Leave a Comment »