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

Archive for the ‘Software Development’ Category

Functions over read-only properties: you cannot mark a property as deprecated in delphi – via Stack Overflow

Posted by jpluimers on 2017/06/07

I learned one of the reasons you might want to use functions instead of read-only properties from properties – How can I mark a property as deprecated in delphi? – Stack Overflow [WayBack]:

Delphi hinting directives: deprecated, experimental, library and platform cannot be used on properties but can be on other members (like fields, procedures and functions).

Since a read-only property is very much like a read-only field, but fields cannot be read-only it can make sense to replace the read-only property with a function. Then on the function you can place hint directives.

This can help enormously refactoring large code bases where – because of size – you cannot perform a certain replacement in one step.

–jeroen

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

APC 7xxx models, DHCP Option 43 and Mikrotik DHCP servers

Posted by jpluimers on 2017/06/07

When switching my DHCP to a Mikrotik CCR1009, both the AP7920 and AP7921 failed to get IP addresses. The APC7921 would look bounce between waiting and offered states like this:

The cause is the need of DHCP Option 43 (Vendor Class Identifier) specified in RFC2132 – based on [WayBack] RFC 2131 – Dynamic Host Configuration Protocol and [WayBackRFC 1533 – DHCP Options and BOOTP Vendor Extensions – which I found first via these links:

Read the rest of this entry »

Posted in Development, Internet, MikroTik, Power User, RouterOS, routers, Scripting, Software Development | 3 Comments »

Fiddler2 direct download

Posted by jpluimers on 2017/06/06

For automated installs that cannot have UI interaction:

The install is “per user” as it is a user-local application; it installs in %LocalAppData%\Programs\Fiddler\Fiddler.exe.

Docs

Note that Fiddler acts as a HTTP proxy. When Fiddler starts, it hooks itself into the default WinINET proxy (which is used by any tool using the WinINET API, including Edge, Internet Explorer, Chrome, but not FireFox).

If you kill your Windows machine before stopping Fiddler, it cannot restore the WinINET proxy, so you have to do that by hand (otherwise you cannot browse web pages any more).

Manual restore:

  1. Run "C:\Windows\System32\rundll32.exe" shell32.dll,Control_RunDLL inetcpl.cpl,,4
  2. Press “LAN settings” (Dutch: “LAN-Instellingen”)
  3. Uncheck the proxy server checkbox “Use a proxy server for your LAN” (Dutch “Een proxy-server voor uw LAN gebruiken”)
  4. Confirm
  5. Close the control panel wizard

–jeroen

Read the rest of this entry »

Posted in Development, Fiddler, Software Development, Web Development | Leave a Comment »

Embarcadero QualityCentral is dead; man-decades of customer work down the drain

Posted by jpluimers on 2017/06/05

Without announcing an actual date, right before the weekend Embarcadero killed their [WayBack] QualityCentral publicly accessible and search engine indexed issue database.

So I wrote this on Google Plus:

Embarcadero just flushed down the drain man-decades of work and useful information. Mainly nilling the work done by their customers to document and inform about known issues, knowing search engines indexed it well and having some hope it would assist into maybe some getting resolved.

The documentation has not been updated and still references qc.embarcadero.com, for instance from [WayBackdocwiki.embarcadero.com/RADStudio/Tokyo/en/Quality_Central

They say the web service is still up, but that likely will die at the snap of a finger as well. Besides, these links mentioned in QualityCentral web services guide are dead too:

These still work though:

So all is left are memories from the past. And dead links from Stack Overflow, blogs and other sites to a defunct repository.

Dead links: q=-site%3Aqc.embarcadero.com+qc.embarcadero.com%2Fwc%2Fqcmain.aspx even from for instance EDN: q=”qc.embarcadero.com”+site%3Aedn.embarcadero.com

Luckily some of the links have been saved in the WayBack machine: https://web.archive.org/web//http://qc.embarcadero.com/

It would have been better if Embarcadero had put some time to archive everything there.

I doubt they will. There was a habit of reclassifying bugs in QC as “feature requests” which continues in Quality Portal (which requires login and is not indexed by search engines so has way less value).

[WayBack] And here is why I think twice before spending time to report feature requests to QP. And even bugs/unexpected behavior are regularly being sweeped under the carpet reclassified as new feature… – Stefan Glienke – Google+

Memories:

Oh well, life goes on and relying on one development tool or vendor is never a good idea.

–jeroen

 

Posted in Delphi, Development, QC, Software Development | 18 Comments »

delphi – How do I parse a web URL? – Stack Overflow

Posted by jpluimers on 2017/06/01

It looks like the platform-neutral TIdURI from Indy solves some corner cases that WinInet.InternetCrackUrl doesn’t.

Someday I’ll check it against the .NET Uri class and report back about this.

An addition, you might want to extend it as it lacks some features: Indy, TIdURI.PathEncode, URLEncode and ParamsEncode and more | Marc Durdin’s Blog [WayBack]

–jeroen

Source: delphi – How do I parse a web URL? – Stack Overflow

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

Makefile Assignments are Turing-Complete « null program

Posted by jpluimers on 2017/06/01

The picture tricked me into thinking it was a Makefile for Tic-Tac-Toe, but it is in fact a 174 kilobyte makefile for Conways’ game of life which proofs that make macros are Turing complete.

Source: Makefile Assignments are Turing-Complete « null program

via: Abusing POSIX make to implement Conway’s game of life to demonstrate that make macros are Turing complete, even if there are no if and loop macros. – Kristian Köhntopp – Google+

While running on my Mac, the recursivity will make it fail on lack of resources though.

If seen both these:

sleep: Resource temporarily unavailable

and

make[119]: /bin/sh: Resource temporarily unavailable
make[119]: *** wait: No child processes. Stop.
make[119]: *** Waiting for unfinished jobs....
make[119]: *** wait: No child processes. Stop.

 

–jeroen

Posted in Development, Makefile, Scripting, Software Development | Leave a Comment »

Some notes on stripping NULL characters and BOMs from files

Posted by jpluimers on 2017/05/31

A while ago I bumped into applications that write alternating UTF-16 and UTF-8 to files without checking what type of encoding the files were using.

So here are some notes to at least save some of the contents.

TODO: figure out how to strip the BOM.

–jeroen

Posted in Development, Encoding, Software Development, UTF-16, UTF-8, UTF16, UTF8 | Leave a Comment »

KirillOsenkov/MSBuildStructuredLog: A logger for MSBuild that records a structured representation of executed targets, tasks, property and item values

Posted by jpluimers on 2017/05/31

Cool: KirillOsenkov/MSBuildStructuredLog: A logger for MSBuild that records a structured representation of executed targets, tasks, property and item values

Basically it parses the XML output into something manageable.

Via Matthijs ter Woord.

–jeroen

Posted in .NET, Continuous Integration, Development, msbuild, Software Development | Leave a Comment »

Working around “[dcc32 Fatal Error] F2084 Internal Error: DBG3133” or “[dcc32 Fatal Error] F2084 Internal Error: MA1243

Posted by jpluimers on 2017/05/30

Since Google has a hard time searching G+: [WayBackAnyone ever encountered a “[dcc32 Fatal Error] F2084 Internal Error: DBG3133″… – G+ – Jeroen Wiert Pluimers:

Anyone ever encountered a [dcc32 Fatal Error] F2084 Internal Error: DBG3133 in XE8 or newer?

I get it in XE8 version 22.0.19908.869 intermittently on a huge* project when compiling or building.

If it occurs, I have to:

  1. restart the IDE
  2. delete all DCU files
  3. build

Without deleting the DCU files, even a build throws the error after restarting the IDE.

The project never throws an AV while compiling as described in [WayBackQC #127380: F2084 Internal error AV0B8A47D2-R3E1D3CF8-0 when compiling project unless the IDE runs out of memory (which I now resolved with DDevExtensions).

Every now and then on compile it also throws [dcc32 Fatal Error] F2084 Internal Error: MA1243.

For the other error, the same solution applies: if you don’t, then the next one is a [dcc32 Fatal Error] F2084 Internal Error: DBG3133.

Both errors occur during the Linking stage.

–jeroen

*huge as in that I needed DDevExtensions to work around [WayBack] Is there any tool that clears the Delphi memory overhead when a “build all” switches to the next project in a project group? XE8 constantly runs out of memory… – Jeroen Wiert Pluimers – Google+

 

Posted in Delphi, Delphi XE8, Development, F2084, QC, Software Development | Leave a Comment »

MiloszKrajewski/LibZ: the alternative to ILMerge (Resolve instead of merge assemblies)

Posted by jpluimers on 2017/05/30

ILMerge has all sorts of drawbacks with things like XAML, WPF, NHibernate, dynamically loaded assemblies and reflection.

Jeffrey Richter: Excerpt #2 from CLR via C#, Third Edition | Microsoft Press blog has an interesting approach based on adding a callback to the AppDomain’s ResolveAssembly event with some steps so you can embed assemblies as resources which you then – unlike ILmerge- dynamically resolve.

Those steps require a bit of manual labour which is taken away by MiloszKrajewski/LibZ: LibZ, the alternative to ILMerge.

The repository on github even compresses your assembly resources.

–jeroen

Posted in .NET, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 3.0, C# 4.0, C# 5.0, C# 6 (Roslyn), Development, Software Development | Leave a Comment »