The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • 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

Mac OS X: restarting Google Drive when it shows a spinning wheel

Posted by jpluimers on 2017/03/29

Every now and then, Google Drive on Mac OS X gets confused and starts showing the spinning wheel when hovering over the menu bar icon similar to for instance DropBox does every once in a while.

This is how to terminate and restart Google Drive from the terminal (no need for su):

killall -v -SIGKILL Google\ Drive
open -a Google\ Drive

Alternatively you can start Google Drive using this:

/Applications/Google\ Drive.app/Contents/MacOS/Google\ Drive &

I found this executable through osx – Find all executable files within a folder in terminal – Ask Different

Note that this won’t kill Google Drive as it sends the TERM signal (SIGTERM):

killall -v Google\ Drive

–jeroen

Posted in Apple, bash, Development, Google, GoogleDrive, iMac, Mac, Mac OS X / OS X / MacOS, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, OS X 10.10 Yosemite, OS X 10.11 El Capitan, OS X 10.8 Mountain Lion, OS X 10.9 Mavericks, Power User, Scripting, Software Development | 1 Comment »

Heroku Node.js in the cloud (free hosting!) – via: Smart Mobile Studio

Posted by jpluimers on 2017/03/28

Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

Source: Cloud Application Platform | Heroku

via:

As mentioned in the first part, node.js was initially developed for the cloud. While there are enough paid hosting providers available, much nicer is of course to get it running for free! :). We will try to get our node.js server of part 2 up and running in the cloud…

Source: Server-side Node.js (part 3): Node.js in the cloud (free hosting!) – Smart Mobile Studio [WayBack]

Heroku is ideal for experimenting as their free plan allows for sleeping dyno instances that only get activated when there is a need for it (they sleep after 30 minutes of inactivity) and rain from the pool of 1000 free dyno hours per month.

See these links for more information

–jeroen

Posted in Development, Heroku, JavaScript/ECMAScript, Node.js, Scripting, Software Development | Leave a Comment »

wintee/wintee at master · jpluimers/wintee

Posted by jpluimers on 2017/03/28

I salvaged one of the many incarnations of wintee: wintee/wintee at master · jpluimers/wintee

So I’ve another tee implementation apart from my C# port of tee.

–jeroen

via: cmd – Displaying Windows command prompt output and redirecting it to a file – Stack Overflow

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

The eigenvector of “Why we moved from language X to language Y” · Erik Bernhardsson

Posted by jpluimers on 2017/03/27

Interesting usage of R and Google info: [WayBackThe eigenvector of “Why we moved from language X to language Y” · Erik Bernhardsson

The source behind the extensive article above is on GitHub: [WayBack] erikbern/eigenstuff: Use the first eigenvector (stationary distribution) of Google searches for “move from X to Y” to say something about future popularity

via:

–jeroen

Read the rest of this entry »

Posted in Development, Software Development | Leave a Comment »

Poor man’s MMX: Delphi Live Templates for creating a property with a type which will auto- create the getter/setter

Posted by jpluimers on 2017/03/23

Delphi Live Templates for creating a property with a type which will auto- create the getter/setter: [XML] ipropgs – Pastebin.com by Oliver Münzberg.

For when you think you can beat Model Maker Code Explorer.

via: Do any IDE add-ins have “interface completion”? I figure somebody must have done this by now? David Nottage – Google+

 

Posted in Delphi, Development, Software Development | 2 Comments »

Kylix: The Real Lowdown – I wrote this in 2000 too

Posted by jpluimers on 2017/03/23

A while ago – while researching yesterdays post – I came across the below article that I wrote back in august 2000 for The Delphi (by Pinnacle Publishing – long gone by now) and on-line at http://www.delphidevelopernewsletter.com/dd/DDMag.nsf/WebIndexByIssue/B8FC16D8103A3760852568F600559A83

I found a cached copy first at http://www.txsz.net/xs/delphi/2/%E6%8A%80%E5%B7%A7%E5%8F%8A%E7%BB%8F%E9%AA%8C/KYLIX%EF%BC%9A%20%E7%9C%9F%E7%9B%B8.HTM and back-tracked from there.

Since the wayback machine isn’t indexed, I salvaged the copy below.

On the Delphi Tokyo release yesterday [WayBackTokyo is available today! – Martin Sedgewick – Google+: I will only try that after Update 1 is released, but based on the [WayBackWhat’s New – RAD Studio:

Like

  • Reintroduction of Linux support. Finally.
  • 64-bit as target: server side, the 32-bit days have been over for a long time
  • one-based strings (boy, I’m glad they didn’t continue on the zero-based strings they did on mobile)

Dislike

  • No openSUSE support where SuSE was the primary partner during Kylix development and launch, just search SuSE kylix; heck the registration guide is still up at [WayBackSDB:Kylix – openSUSE
  • LLVM compiler as it is way too slow for my development cycles
  • ARC based

Time will tell if it works better for me than the .NET Core for Linux I’ve been using until now.

–jeroen
Read the rest of this entry »

Posted in *nix, Delphi, Development, History, Kylix, Linux, openSuSE, Power User, Software Development, SuSE Linux | 4 Comments »

Kylix: Delphi for Linux is on the Way! – I wrote this in 2000

Posted by jpluimers on 2017/03/22

Last year, when Warren Postma wrote, I started digging for some articles I wrote about Kylix (the Delphi for Linux at the start of this century).

The second article I found (Delphi for Linux is on the Way!) was actually the first one I wrote, so I’ve put the copy below. The second article will be in my blog tomorrow.

The article below first appeared at the Pinnacle Publishing site at http://www.pinpub.com/delphi/kylix1.htm as an article for “Delphi Developers Journal” that went out of business just like “Hardcore Delphi” and “Delphi Informant Magazine” went before (actually Blaise Pascal Magazine is about the only Delphi related magazine left).

I found the title of my article through http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FDelphi%2FAboutDelphi%2FKylix%2FM.967808208.A then back-tracked the title via http://www.inner-smile.com/delphin.phtml

–jeroen

Read the rest of this entry »

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

GExperts – when your predecessor has put it under the Tools menu

Posted by jpluimers on 2017/03/21

I totally forgot that GExperts can be under the Tools men

GExperts IDE configuration

GExperts IDE configurationu (I’m so accustomed that Alt-X is GExperts and Alt-M is ModelMaker Code Explorer).

These keyboard shortcuts are only assigned when you install GExperts before you install ModelMaker Code Explorer.

If you reverse, then you have to fiddle by removing the ModelMaker Code Explorer expert, then re-add it.

Anyway: you can configure this in the “IDE” tab of the GExperts Configuration.

After that you have to restart the Delphi IDE to reflect the change.

–jeroen

Source: GExperts Help

Posted in Delphi, Development, GExperts, Keyboards and Keyboard Shortcuts, ModelMaker Code Explorer, Power User, Software Development | 2 Comments »

defrag.exe: tracking an already in progress operation can be done from non-admin session

Posted by jpluimers on 2017/03/17

When you want to defrag.exe (the built-in Windows one, not the SysInternals Windows NT4 one, so make sure SysInternals comes last in your path) a volume, you have to run it with an elevated UAC Admin token.

But I just found out that you can do this without an Admin token:

C:\Windows\System32>Defrag.exe C: /t /v /u
Microsoft Drive Optimizer
Copyright (c) 2013 Microsoft Corp.

Tracking operation on (C:)...


Performing pass 2:
        Free Space Consolidation:  31% complete...

This makes it much easier to separate monitoring scripting from execution.

–jeroen

Posted in Batch-Files, Development, Scripting, Software Development | Leave a Comment »

Decode URLs from The Great Suspender after a browser restart fails to reload them

Posted by jpluimers on 2017/03/16

Hosted at: Decode URLs from The Great Suspender after a browser restart fails to reload them

Converts URLs like these:
chrome-extension://klbibkeccnjlkjkiokjodocebajanakg/suspended.html#url=http%3A%2F%2Fwww.barryodonovan.com%2F2012%2F06%2F29%2Fmigrating-svn-with-branches-and-tags-to-git
back into
http://www.barryodonovan.com/2012/06/29/migrating-svn-with-branches-and-tags-to-git

Source below.

It decodes a URL encoded by The Great Suspender which is a cool Google Chrome plugin that suspends pages after some idle time.

The uncool thing is that when Google Crome restarts after a crash (it’s software, it does that, especially as it consumes truckloads of memory and is full of memory leaks) it often fails to restore some (but not many) of the suspended pages into a usable state: it shows only the encoded URLs.

–jeroen


<!DOCTYPE html>
<!–
Resurrect
Based on 20160531-Google-Plus–403.-That’s-an-error.–Your-client-does-not-have-permission-to-get-URL–sorry–IndexRedirect–workaround.html
at https://gist.github.com/jpluimers/4f07a2f3f9b9890a3a44e184c1abadf2
Converts URLs like these:
chrome-extension://klbibkeccnjlkjkiokjodocebajanakg/suspended.html#url=http%3A%2F%2Fwww.barryodonovan.com%2F2012%2F06%2F29%2Fmigrating-svn-with-branches-and-tags-to-git
back into
url=http://www.barryodonovan.com/2012/06/29/migrating-svn-with-branches-and-tags-to-git
The Great Suspender Google Extension:
https://chrome.google.com/webstore/detail/the-great-suspender/klbibkeccnjlkjkiokjodocebajanakg
Test at http://jsbin.com/yukidaferu/1/edit?html,console,output
–>
<html>
<title>Decode URLs from The Great Suspender after a browser restart fails to reload them</title>
<body>
<h1>Decode URLs from The Great Suspender after a browser restart fails to reload them</h1>
<p>Please URL encoded by <a href="https://github.com/deanoemcke/thegreatsuspender&quot; target="_blank">The Great Suspender</a>:</p>
<input id="suspenderUrl" size="200">
<button type="button" onclick="decodeSuspenderUrlMethod()">Submit</button>
<div id="decodedUrlsCaptionDiv">
<p id="decodedUrlsCaption">Here you will see the decoded URLs so you can follow them:</p>
</div>
<ul id="decodedUrlsUl">
</ul>
<script>
// based on http://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_validate
function decodeSuspenderUrlMethod() {
var decodedUrl = "";
var errorText = "";
// Get the value of the input field with id="numb"
var suspenderUrl = document.getElementById("suspenderUrl").value;
var stripPrefix = "chrome-extension://klbibkeccnjlkjkiokjodocebajanakg/suspended.html#url=";
var prefix = stripPrefix + "http";
// Am I a SO developer now? At least I'm quickly learning some JavaScript basics…
// http://stackoverflow.com/questions/1767246/check-if-string-begins-with-something/9430330#9430330
// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/substring
if (suspenderUrl.indexOf(prefix) == 0) {
// now strip the bits we don't need, then decode what is left.
// I always wondered why they call it substring instead of subString
var googlePlusEncodedUrl = suspenderUrl.substring(stripPrefix.length);
// decoding got a new new a while ago: http://stackoverflow.com/questions/4292914/javascript-url-decode-function/4292961#4292961
decodedUrl = decodeURIComponent(googlePlusEncodedUrl);
} else {
errorText = "URL is missing this prefix: <<" + prefix + ">>";
};
// for now, just add the output; in the future, only add unique output.
// Based on http://stackoverflow.com/questions/5519747/how-to-add-anchor-tags-dynamically-to-a-div-in-javascript/5519795#5519795
var decodedUrlsUl = document.getElementById("decodedUrlsUl");
var decodedUrlLi = document.createElement('li');
if (errorText == ""){
var aTag = document.createElement('a');
aTag.setAttribute('href', decodedUrl);
aTag.innerHTML = decodedUrl;
decodedUrlLi.appendChild(aTag);
} else {
var aDiv = document.createElement('div');
aDiv.innerHTML = errorText + " " + suspenderUrl;
decodedUrlLi.appendChild(aDiv);
}
decodedUrlsUl.appendChild(decodedUrlLi);
}
</script>
</body>
</html>

Posted in Chrome, Development, Google, HTML, HTML5, JavaScript/ECMAScript, Power User, Scripting, Software Development, Web Development | Leave a Comment »