[WayBack] Exit Vim 2 Win shows the use of vim.js for a challenge.
Source code at [WayBack] GitHub – idoco/exit-vim-2-win: Exiting vim eventually
–jeroen
Posted by jpluimers on 2021/04/01
[WayBack] Exit Vim 2 Win shows the use of vim.js for a challenge.
Source code at [WayBack] GitHub – idoco/exit-vim-2-win: Exiting vim eventually
–jeroen
Posted in Apri1st, Development, Fun, JavaScript/ECMAScript, Software Development | Leave a Comment »
Posted by jpluimers on 2021/03/31
Based on [WayBack] linux – How can I execute a series of commands in a bash subshell as another user using sudo? – Stack Overflow:
alias restart-spotlight-service-as-root="sudo bash -c 'echo stop;launchctl stop com.apple.metadata.mds;echo start;launchctl start com.apple.metadata.mds;echo started'"
The bold bits above sudo bash -c 'echo stop;launchctl stop com.apple.metadata.mds;echo start;launchctl start com.apple.metadata.mds;echo started' allow the commands between single quotes to executed in one new bash shell under sudo.
–jeroen
Posted in *nix, *nix-tools, Apple, bash, bash, Development, Mac OS X / OS X / MacOS, Power User, Scripting, Software Development | Leave a Comment »
Posted by jpluimers on 2021/03/31
Passing verbosity levels to msbuild on the one hand can help to quickly locate issues that go otherwise unnoticed, but also make your output so large that it is hard to search through.
Some build targets (Delphi!) do not pass the verbosity to their underlying tools, so for those cases you have to find other means to increase underlying verbosity.
You can always pass msbuild options by using the commandline (even abbreviate them as described in [WayBack] MSBuild Command-Line Reference – Visual Studio | Microsoft Docs: You can specify the following verbosity levels: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]).
Often you also can use your IDE can also specify verbosity levels, for instance:
Under Tools – Options – Projects and Solutions – Build and Run, there’s the MSBuild project build output verbosity combo box.
To control the level of output from MSBuild, use the Verbosity field on the Tools
-> Options ->
Environment Options page.
The currently specified verbosity values in ascending order according to [WayBack] LoggerVerbosity Enum (Microsoft.Build.Framework) | Microsoft Docs:
Quiet0 Quiet verbosity, which displays a build summary. Minimal1 Minimal verbosity, which displays errors, warnings, messages with MessageImportance values of High, and a build summary. Normal2 Normal verbosity, which displays errors, warnings, messages with MessageImportance values of High, some status events, and a build summary. Detailed3 Detailed verbosity, which displays errors, warnings, messages with MessageImportance values of High or Normal, all status events, and a build summary. Diagnostic4 Diagnostic verbosity, which displays all errors, warnings, messages, status events, and a build summary.
Note that in the past, Detailed was called Details:
[WayBack] visual studio 2010 – What is output at the different MSBuild output verbosity levels? – Stack Overflow:
- Quiet: only shows the result of your build.
- Minimal: shows some configurations of your msbuild, and the CSC task.
- Normal: This will show all the targets and its mainly steps.
- Details: In addition to normal, this flag shows the task and it’s implementation within the each target.
- Diagnostic: Contains all the information that a MSBuild need and produce, it’s switches, parameteres, prerequisites and etc. The input parameter of the target and task, and also contains the value of the input and output parameter, the detail steps of the task execution. The time execution for each task.
In matrix form, as per [WayBack] Obtaining Build Logs with MSBuild – Visual Studio | Microsoft Docs:
The following table shows how the log verbosity (column values) affects which types of message (row values) are logged.
Quiet Minimal Normal Detailed Diagnostic Errors ✅ ✅ ✅ ✅ ✅ Warnings ✅ ✅ ✅ ✅ ✅ High-importance Messages ✅ ✅ ✅ ✅ Normal-importance Messages ✅ ✅ ✅ Low-importance Messages ✅ ✅ Additional MSBuild-engine information ✅
–jeroen
Posted in Continuous Integration, Delphi, Development, msbuild, Software Development | 1 Comment »
Posted by jpluimers on 2021/03/31
Did you ever get this run-time error in a console or test project?
EOleException with message 'Microsoft MSXML is not installed'
It means that CoInitialize or CoInitializeEx needs to be called in the thread that uses MSXML.
Then an easy workaround is to:
System.Win.ComObj in any unit that (indirectly) uses Xml.XMLDoc (for instance any unit using an XML Data Binding generated unit),TProcedure used below)initialization section (which is what VCL TApplication.Initialize does):
if InitProc <> nil then TProcedure(InitProc); // Calls CoInitialize for the main thread and prevents "EOleException with message 'Microsoft MSXML is not installed'"
The initialization section of System.Win.ComObj sets up InitProc to cals CoInitialize for the main thread, which usually suffices for these simple VCL projects, but not for most console or test projects.
Based on ideas I got after reading [WayBack] 为什么LoadXMLDocument在线程类中使用会报错?-CSDN论坛 (for which Google Translate actually does a goot job [Archive.is])
–jeroen
Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development, Undocumented Delphi | Leave a Comment »
Posted by jpluimers on 2021/03/30
Well known in the software development bubble: Adapter pattern – Wikipedia.
If you ever are going to apply the below ones at the hardware level, please warn me in advance when and where you are going to.
~0.5 Ampère over an almost zero sized contact surface is for sure going to result in some burns eventually.
Juha is an irresponsible father of two, Nikita reckless, and it’s not just Julien’s tweets that have a life expectancy.
Posted in Development, LifeHacker, Power User, Software Development | Leave a Comment »
Posted by jpluimers on 2021/03/30
For my research list: [WayBack] flyover-reverse-engineering/README.md at master · retroplasma/flyover-reverse-engineering · GitHub
–jeroen
Posted in Apple, Development, Go (golang), Mac OS X / OS X / MacOS, Power User, Software Development | Leave a Comment »
Posted by jpluimers on 2021/03/30
For my link archive: [WayBack] How to Convert a Mercurial Repository to Git on Windows.
Let’s see how this maps to MacOS or Linux…
It is based on hg-git:
Other solutions are based on [WayBack]fast-export or [WayBack] gitifyhg.
If I am going to do this beyond a one-off conversion, I need to figure out their differences.
Related:
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Mercurial/Hg, Software Development, Source Code Management | Leave a Comment »
Posted by jpluimers on 2021/03/25
A great way for testing REST JSON calls is using the [WayBack] JSONPlaceholder – Fake online REST API for developers:
Fake Online REST API for Testing and Prototyping
Serving ~200M requests per month
Powered by JSON Server [WayBack] + LowDB [WayBack]
It is like [WayBack] Placeholder.com: Placeholder Images Done For You [JPG, GIF & PNG] but for JSON and supports both CORS and JSON-P for cross domain requests.
You can either use that site (which has a predefined set of REST calls) or the basic [WayBack] My JSON Server – Fake online REST server for teams that allows you to respond it to a db.json file from github:
Fake Online REST server for teams
Create a JSON file on GitHub
github.com/user/repo/master/db.json{ "posts": [ { "id": 1, "title": "hello" } ], "profile": { "name": "typicode" } }Get instantly a fake server
my-json-server.typicode.com/user/repo/posts/1{ "id": 1, "title": "hello" }
There is basic documentation at the repository [WayBack] GitHub – typicode/jsonplaceholder: A simple online fake REST API server:
Posted in Communications Development, Development, HTTP, Internet protocol suite, JavaScript/ECMAScript, JSON, REST, Scripting, Software Development, TCP | Leave a Comment »
Posted by jpluimers on 2021/03/25
From a while back, but still so very relevant: [WayBack] Any idea why Delphi (At least since Seattle) does this to Dproj files: <DeployClass …> nodes change places – Tommi Prami – Google+.
Luckily most of the thread is archived by now, as G+ is dead.
This thread brought DProjNormalizer to my attention, but by now you should be better using Project Magician.
DProjNormalizer normalizes the XML structure of Delphi .dproj files, both during IDE save actions, and manually using the command-line tool DprojNormalizerCmd.exe too.
Note that the manual tool does an in-place modification of your .dproj files, so better use version control, have good backups, or use
InplaceExeWrapper.
In the mean time, Project Magician has been released that too has a command-line tool ProjectMagicianCmd.exe:
The general usage is:
ProjectMagicianCmd [-v:<version> | -n | -r | -x | -f] [<filepath>]<filename> [-l:<logfile>] [-s]The parameters have the following meaning:
-v= SetsVersionInfoin dproj files to a given value. Clears all version info entries in child build configurations.
<version>up to 4 numbers separated by dots-n= Normalize-r= Removes unused platforms-x= Removes “Excluded Packages”-f= Refreshes and adds missing form type entries<filename>may contain wildcards. If no extension is given.dprojis assumed
Project Magician adds more functionality, including the ability to specify settings on project, project group and global levels. An explanation of settings is at [WayBack] Keep Your Project Files Clean With Project Magician – The Art of Delphi Programming.
These are my global default settings from the Tools -> Options menu option, then following these bits of the tree
:
You can get to all levels via the Project -> Project Magician menu option, then following the various tabs:
Note that if you have combinations of installed previous versions before, that you should ensure you install the most recent versions of these, as there have been incompatibility issues between them:
ProjectMagician (or DProjNormalizer)SelectiveDebugging+Walter Prins interesting tool! Do you know of a tool that can downgrade .dproj files so you can use them with older Delphi versions? (the opposite of what the IDE does)?
Or someone that has written more than my XSD on .dproj files? My one is so small that’s hardly a real attempt. https://wiert.me/2013/08/31/delphi-first-try-on-an-xsd-for-groupproj-files/
+Jeroen Wiert Pluimers Sorry I see I missed out the word installer in my comment: It’s the Jedi JCL/JVCL installers that uses xml templates etc.
But the point stands: I guess it should be (perhaps) possible to reuse its infrastructure for ones own projects, though as I say I keep meaning to look into this but haven’t really done so.
(BTW I’m assuming you are familiar with the JCL/JVCL and in in particular their installers that bootstrap from source code? If not then perhaps my comments may not be that useful?)
Anyway, not sure if or where there’s particular documentation about this (kind of doubt it), but if you have the JCL/JVCL installed somewhere, then first of all have a look at the “xml” folders e.g. “<jclroot>\jcl\packages\xmls” and “<jvclroot>\jvcl\packages\xml“.
These files appear to define projects and packages in a seemingly abstract/somewhat minimal way using XML. This seemingly is then used to automatically produce .dproj and .dpk files which are placed in e.g. “<jclroot>\jcl\packages\dXX” and “<jvclroot>\jvcl\packages\dXX” where dXX corresponds to a folder for each of the supported Delphi versions and compiled/used during installation.
Having just looked into this briefly a bit further as a result of this conversation: Key units here (in the case of JVCL) seems to be “jvclroot>\devtools\PackagesGenerator\PackageGenerator.pas“, “<jvclroot>\install\JVCLInstall\PackageUtils.pas” and “jvclroot>\devtools\common\PackageInformation.pas” (used predictably by <jvclroot>\JVCLInstall.dproj)
(Additionally, having looked at this a bit more closely, it also appears that the JCL does not actually replace all or even most of its .dproj and .dpk files after all, but ships version specific .dproj and .dpk files in most cases, though the JVCL does appear to mostly do so. )
Edit: The JCL also has this interesting sounding unit “<jclroot>\source\windows\JclMsBuild.pas” which appears to be an MSBuild project file parser…
–jeroen
Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »