Chrome deprecated console.info some time ago.
Here's a workaround that will actually make you happier than with console.info :)
Keeping track of interesting places I put my feet on in the software development world.
Search This Blog
Showing posts with label Javascript. Show all posts
Showing posts with label Javascript. Show all posts
Sunday, June 21, 2020
Sunday, December 15, 2019
Create circle with google map api with mousemove event to enlarge / shrink area
function addCircle_new(lat, lng, radius, alreadyDrawn) {
function createCircle(lat, lng, radius) {
var coordinates = new google.maps.LatLng(lat, lng);
var options = {
strokeColor: '#910000',
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: '#FC7341',
fillOpacity: 0.35,
map: map,
center: coordinates,
radius: radius
};
// Add the circle for this city to the map.
circle = new google.maps.Circle(options);
return circle;
}
var circle;
if (alreadyDrawn) {
circle = createCircle(lat, lng, radius * 1000);
drawObject = circle;
pois.push(circle);
}
else {
//google.maps.event.removeListener(clickListener);
google.maps.event.addListenerOnce(map, 'click', function (x) {
//circle = createCircle(x.latLng.lat(), x.latLng.lng(), radius * 1000);
circle = createCircle(lat, lng, radius * 1000);
var clickEventParameters = x;
var mouseMoveEventParameters;
var mouseMove = google.maps.event.addListener(map, 'mousemove', function (y) {
mouseMoveEventParameters = y;
var xOffset = mouseMoveEventParameters.qa.x - clickEventParameters.qa.x;
var yOffset = mouseMoveEventParameters.qa.y - clickEventParameters.qa.y;
var radiusOffset = Math.sqrt(Math.pow(xOffset, 2) + Math.pow(yOffset, 2)) * 100000;
circle.setRadius(radiusOffset);
});
var dblClick = google.maps.event.addListener(map, 'dblclick', function (w) {
drawObject = circle;
google.maps.event.removeListener(mouseMove);
pois.push(circle);
//clickListener = google.maps.event.addListener(map, 'click', map_MouseClick);
});
});
}
}
function createCircle(lat, lng, radius) {
var coordinates = new google.maps.LatLng(lat, lng);
var options = {
strokeColor: '#910000',
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: '#FC7341',
fillOpacity: 0.35,
map: map,
center: coordinates,
radius: radius
};
// Add the circle for this city to the map.
circle = new google.maps.Circle(options);
return circle;
}
var circle;
if (alreadyDrawn) {
circle = createCircle(lat, lng, radius * 1000);
drawObject = circle;
pois.push(circle);
}
else {
//google.maps.event.removeListener(clickListener);
google.maps.event.addListenerOnce(map, 'click', function (x) {
//circle = createCircle(x.latLng.lat(), x.latLng.lng(), radius * 1000);
circle = createCircle(lat, lng, radius * 1000);
var clickEventParameters = x;
var mouseMoveEventParameters;
var mouseMove = google.maps.event.addListener(map, 'mousemove', function (y) {
mouseMoveEventParameters = y;
var xOffset = mouseMoveEventParameters.qa.x - clickEventParameters.qa.x;
var yOffset = mouseMoveEventParameters.qa.y - clickEventParameters.qa.y;
var radiusOffset = Math.sqrt(Math.pow(xOffset, 2) + Math.pow(yOffset, 2)) * 100000;
circle.setRadius(radiusOffset);
});
var dblClick = google.maps.event.addListener(map, 'dblclick', function (w) {
drawObject = circle;
google.maps.event.removeListener(mouseMove);
pois.push(circle);
//clickListener = google.maps.event.addListener(map, 'click', map_MouseClick);
});
});
}
}
Monday, June 24, 2019
Print call stack in javascript
From https://til.hashrocket.com/posts/478143b559-print-call-stack-on-javascript
Print call stack on Javascript
If you want to print the javascript **call stack** you can use:
```javascript
console.log(new Error().stack);
```
Here it is an **example**:
```javascript
function firstFunction() {
secondFunction();
}
function secondFunction() {
thridFunction();
}
function thridFunction() {
console.log(new Error().stack);
}
firstFunction();
//=> Error
// at thridFunction (<anonymous>:2:17)
// at secondFunction (<anonymous>:5:5)
// at firstFunction (<anonymous>:8:5)
// at <anonymous>:10:1
```
h/t @rondale_sc
viniciusnegrisolo
June 10, 2016
Sunday, February 10, 2019
Javascript Array Distinct functionality
https://codeburst.io/javascript-array-distinct-5edc93501dc4
Thursday, December 20, 2018
Javascript Obfuscation via Jenkins using Node Js and the open source Javascript Obfuscator
A javascript snippet with which I obfuscate javascript files during our building process, via Jenkins (via Node js commands), using the open source Javascript Obfuscator (written in javascript).
var walkSync = function(dir, filelist, dirIgnores, fileIgnores) {
var fs = fs || require('fs');
//if dir is to be ignored, return doing nothing
for (var i = 0; i < dirIgnores.length; i++) {
if (dir.toLowerCase().endsWith("/" + dirIgnores[i].toLowerCase())) {
return;
}
}
files = fs.readdirSync(dir);
filelist = filelist || [];
//lists file starting names to not obfuscate
dirIgnores = dirIgnores || [];
fileIgnores = fileIgnores || [];
files.forEach(function(file) {
var fullPath = dir + '/' + file;
if (fs.statSync(fullPath).isDirectory()) {
filelist = walkSync(fullPath, filelist, dirIgnores, fileIgnores);
} else {
var skip = false;
for (var i = 0; i < fileIgnores.length; i++) {
if (file.toLowerCase().startsWith(fileIgnores[i].toLowerCase())) {
skip = true;
break;
}
}
if (file.endsWith('js') && !skip) {
filelist.push(fullPath);
}
}
});
return filelist;
};
var JavaScriptObfuscator = require('javascript-obfuscator');
// folder will be assigned in jenkins via windows batch string replacement
const folder = '#|#';
const fs = require('fs');
//we obfuscate only our javascript code, all third party libraries (located under folder js) are ignored
var files = walkSync(folder, null, ["js"], null /*["jquery", "leaflet", "dx", "knockout", "jstree"]*/ );
//console.log(files);
var errors = [];
for (var i = 0; i < files.length; i++) {
var file = files[i];
var jsFileContents = fs.readFileSync(file, 'utf8');
console.clear();
console.log('File being obfuscated: ' + file + '...');
try {
//obfuscate
var obfuscationResult = JavaScriptObfuscator.obfuscate(
jsFileContents,
/*************************************************************************/
/* Javascript-obfuscator preset: Medium obsfuscation, optimal performace */
/*************************************************************************/
{
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 0.75,
deadCodeInjection: true,
deadCodeInjectionThreshold: 0.4,
debugProtection: false,
debugProtectionInterval: false,
disableConsoleOutput: true,
identifierNamesGenerator: 'hexadecimal',
log: false,
renameGlobals: false,
rotateStringArray: true,
selfDefending: true,
stringArray: true,
stringArrayEncoding: 'base64',
stringArrayThreshold: 0.75,
transformObjectKeys: true,
unicodeEscapeSequence: false
}
);
//obfuscated content
var obfuscatedJs = obfuscationResult.getObfuscatedCode();
//fs.writeFileSync(file.replace('.js', '_o.js'), obfuscatedJs, {encoding: 'utf8'});
fs.writeFileSync(file, obfuscatedJs, {
encoding: 'utf8'
});
} catch (e) {
errors.push('Error obfuscating ' + file + ': ' + e);
//console.log('Error obfuscating ' + file + ': ' + e);
}
}
console.log(files.length + ' files obfuscated. Errors: ' + errors.length);
if (errors.length > 0)
for (var i = 0; i < errors.length; i++)
console.log(errors[i]);
var walkSync = function(dir, filelist, dirIgnores, fileIgnores) {
var fs = fs || require('fs');
//if dir is to be ignored, return doing nothing
for (var i = 0; i < dirIgnores.length; i++) {
if (dir.toLowerCase().endsWith("/" + dirIgnores[i].toLowerCase())) {
return;
}
}
files = fs.readdirSync(dir);
filelist = filelist || [];
//lists file starting names to not obfuscate
dirIgnores = dirIgnores || [];
fileIgnores = fileIgnores || [];
files.forEach(function(file) {
var fullPath = dir + '/' + file;
if (fs.statSync(fullPath).isDirectory()) {
filelist = walkSync(fullPath, filelist, dirIgnores, fileIgnores);
} else {
var skip = false;
for (var i = 0; i < fileIgnores.length; i++) {
if (file.toLowerCase().startsWith(fileIgnores[i].toLowerCase())) {
skip = true;
break;
}
}
if (file.endsWith('js') && !skip) {
filelist.push(fullPath);
}
}
});
return filelist;
};
var JavaScriptObfuscator = require('javascript-obfuscator');
// folder will be assigned in jenkins via windows batch string replacement
const folder = '#|#';
const fs = require('fs');
//we obfuscate only our javascript code, all third party libraries (located under folder js) are ignored
var files = walkSync(folder, null, ["js"], null /*["jquery", "leaflet", "dx", "knockout", "jstree"]*/ );
//console.log(files);
var errors = [];
for (var i = 0; i < files.length; i++) {
var file = files[i];
var jsFileContents = fs.readFileSync(file, 'utf8');
console.clear();
console.log('File being obfuscated: ' + file + '...');
try {
//obfuscate
var obfuscationResult = JavaScriptObfuscator.obfuscate(
jsFileContents,
/*************************************************************************/
/* Javascript-obfuscator preset: Medium obsfuscation, optimal performace */
/*************************************************************************/
{
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 0.75,
deadCodeInjection: true,
deadCodeInjectionThreshold: 0.4,
debugProtection: false,
debugProtectionInterval: false,
disableConsoleOutput: true,
identifierNamesGenerator: 'hexadecimal',
log: false,
renameGlobals: false,
rotateStringArray: true,
selfDefending: true,
stringArray: true,
stringArrayEncoding: 'base64',
stringArrayThreshold: 0.75,
transformObjectKeys: true,
unicodeEscapeSequence: false
}
);
//obfuscated content
var obfuscatedJs = obfuscationResult.getObfuscatedCode();
//fs.writeFileSync(file.replace('.js', '_o.js'), obfuscatedJs, {encoding: 'utf8'});
fs.writeFileSync(file, obfuscatedJs, {
encoding: 'utf8'
});
} catch (e) {
errors.push('Error obfuscating ' + file + ': ' + e);
//console.log('Error obfuscating ' + file + ': ' + e);
}
}
console.log(files.length + ' files obfuscated. Errors: ' + errors.length);
if (errors.length > 0)
for (var i = 0; i < errors.length; i++)
console.log(errors[i]);
Thursday, October 11, 2018
Wednesday, August 10, 2016
Javascript learning resources
I found in Felix Kling's stackoverflow profile 3 really interesting links about learning javascript.
Eloquent JavaScript (free online edition)
You don't know JavaScript (free online edition)
quirksmode.org - especially DOM and event handling
I was surprised to find the sources look very good and are free.
Eloquent JavaScript (free online edition)
You don't know JavaScript (free online edition)
quirksmode.org - especially DOM and event handling
I was surprised to find the sources look very good and are free.
Sunday, December 13, 2015
Enforcing a given number of digits in a numeric value in Javascript
Javascript does not a built-in functionality like C#'s .ToString("0000").
To accomplish the same I came up with the following:
function setNumericFormat(value, numOfDigits, paddingChar) {
var length = value.toString().length;
if (length < numOfDigits) {
var prefix = "";
for (var i = 1; i <= numOfDigits - length; i++) {
prefix += paddingChar;
}
return prefix + value.toString();
}
return value.toString();
}
Resembles a LeftPad function...
To accomplish the same I came up with the following:
function setNumericFormat(value, numOfDigits, paddingChar) {
var length = value.toString().length;
if (length < numOfDigits) {
var prefix = "";
for (var i = 1; i <= numOfDigits - length; i++) {
prefix += paddingChar;
}
return prefix + value.toString();
}
return value.toString();
}
Resembles a LeftPad function...
Subscribe to:
Posts (Atom)