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 ‘JavaScript/ECMAScript’ Category

Bash that JSON (with jq) — Librato Blog

Posted by jpluimers on 2017/04/18

Glueing together APIs requires working with JSON: parsing it, extracting it, transforming it. JQ is a fast, lightweight, flexible, CLI JSON processor, that does the job well. Learn how to use it by getting your hands dirty with a JSON blob that represents the open issues in the public Docker GitHub repository.

via: http://blog.librato.com/posts/jq-json – Joe C. Hecht – Google+

–jeroen

Source: http://blog.librato.com/posts/jq-json

Posted in bash, Development, JavaScript/ECMAScript, jq, JSON, Scripting, Software Development | Leave a 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 »

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 »

node.js – a nightmare to get started. Did I try the wrong technology for my problem?

Posted by jpluimers on 2017/03/08

Most of my web-stuff is on Apache. Which works fine, has TLS/SSL enabled, etc.

But I wanted to do server-side JavaScript. Which somehow is a forrest without trees, or a nightmare to get started, especially on OpenSuSE.

First of all, virtually all examples explain how to run node as a script. But none explain where to save it, how to run it as a service (and restart when it crashes: it will crash) or how to run multiple sites under it. And the scripts seems to listen to a TCP port by themselves so they operate as a full server by themselves. Nice for a fully fledged portal, but not for some one-offs.

Some links below hopefully will get me re-started later on, but for now, I’ve given up: the out-of-the-box experience is totally non-intuitive.

Maybe what I really want is something else: I want JavaScript stuff that normally renders a page in the browser through the dom to run server side so I can run XMLHttpRequest to various places without bumping into CORS stuff but still render a page DOM.

If you know a better way to do what I want (serving small mostly single-page scripts written in an easy to debug/trace language) let me know.

So basically work around this:

XMLHttpRequest cannot load http://myApiUrl/login. No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'null' is therefore not allowed access.

Read the rest of this entry »

Posted in *nix, Apache2, Development, JavaScript/ECMAScript, Linux, openSuSE, Power User, Scripting, Software Development, SuSE Linux | 1 Comment »

How to enable JavaScript in your browser and why

Posted by jpluimers on 2017/03/02

Just in case it’s not enabled yet: How to enable JavaScript in your browser and why

It even has some html to redirect to it, which I’ve replaced with the wayback machine (and put into a gist as WordPress kills noscript tag blocks and everything they contain.


<noscript>
For full functionality of this site it is necessary to enable JavaScript.
Here are the <a href="http://web.archive.org/web/20160402005258/http://www.enable-javascript.com/&quot; target="_blank">
instructions how to enable JavaScript in your web browser</a>.
</noscript>

I needed it as at a client site, one of the embedded devices would show the message “Javascript is required to use this web portal” in various web browsers so I had to check the JavaScript status in each browser.

–jeroen

Posted in Chrome, Chrome, Development, Firefox, Google, Internet Explorer, JavaScript/ECMAScript, Opera, Power User, Safari, Scripting, Software Development, Web Browsers | Leave a Comment »

JavaScript. Sigh. No real RegExp support. Sigh. Google Search results. Sigh.

Posted by jpluimers on 2017/03/01

Prologue

Every time I need to use JavaScript there’s this tiny voice in the back of my head “Please don’t”, for instance because of

JavaScript has two sets of equality operators: === and !==, and their evil twins == and !=.

Verify a URI in JavaScript with a Regular Expression using Google Search examples

This time it did it again: I used JavaScript. My need was to verify a basic URI in JavaScript, so I wrote this function based on RFC 3986 [WayBack] which in Appendix B has a nice regular expression: ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?

function isValidUri(uri){
    var uriRegExPattern = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?";
    var uriRegEx = new RegExp(uriRegExPattern); 

    return (uriRegEx.test(uri));
} 

It would crash. But JavaScript is JavaScript, so even a site like JSFiddle wouldn’t show an error (later I found out that enabling the console on http://jsbin.com/wamavacuco/edit?html,console,output does show the error in the console complete with stack trace).

Read the rest of this entry »

Posted in Development, JavaScript/ECMAScript, JSFiddle, JSON, RegEx, Scripting, Software Development | Leave a Comment »

Found as a byproduct of following +Jeroen Wiert Pluimers …

Posted by jpluimers on 2017/01/18

Found as a byproduct of following +Jeroen Wiert Pluimers …:

Found as a byproduct of following +Jeroen Wiert Pluimers
http://youmightnotneedjs.com/

Which is a cool site:

Examples of common UI elements and interactions with HTML and CSS alone.

Source: You Might Not Need JavaScript

–jeroen

Posted in CSS, Development, HTML, HTML5, JavaScript/ECMAScript, Scripting, Software Development, Web Development | Leave a Comment »

Angular 2: Show me the Money!

Posted by jpluimers on 2016/11/15

In the enterprise, Angular is a safe bet!

Source: Angular 2: Show me the Money!

Posted in Angular 2, Development, JavaScript/ECMAScript, Scripting, Software Development | Leave a Comment »

nst/JSONTestSuite: A comprehensive test suite for RFC 7159 compliant JSON parsers

Posted by jpluimers on 2016/11/01

Cool: nst/JSONTestSuite: A comprehensive test suite for RFC 7159 compliant JSON parsers

Which is the result of the presentation seriot.ch – Parsing JSON is a Minefield 💣[WayBack]

Both the tests and presentation are well worth reading.

The graph gives me ambivalent feelings and make me wonder how various .NET and Delphi based JSON parsers stack up.

I wonder how Delphi and C# libraries stack up against these results especially since questions like What is the best JSON library to use for Delphi 10.1? To read and write JSON. – Godfrey Fletcher – Google+ [WayBack].

Hopefully the results by David Berneda will be published soon: I’ll do a quick test with TeeBI json import and the different libraries (System.Json, SuperObject etc)

Edit: Stefan Glienke mentioned he wrote a DUnit testsuite at http://pastebin.com/k5ktBxh9 [WayBack] that shows the built-in TJSONObject [WayBack] parser fails at least 25 of the tests.

–jeroen

via: David Berneda – Google+ [WayBack]

Read the rest of this entry »

Posted in .NET, C#, Delphi, Development, JavaScript/ECMAScript, JSON, Scripting, Software Development | 1 Comment »

TypeScript 2.0 is now available! | TypeScript

Posted by jpluimers on 2016/09/29

As it got live last week, this is required reading if you do web development:

–jeroen

Posted in Development, JavaScript/ECMAScript, Scripting, Software Development, TypeScript | Leave a Comment »