Skip to content

Instantly share code, notes, and snippets.

@ajmas
ajmas / asciiFriendlyText.js
Last active November 1, 2017 21:02
Remove accents and symbols not compatible with Latin base alphabet
/*
This works by converting text to decomposed unicode form, such that the
accents are treated as separate characters. We then select the characters
we want, by means of a regex and then join the matched groups.
There are certain characters that won't work with this, such as 'ø', since
it is not an 'o' with a slash accent.
*/
@ajmas
ajmas / appctl.sh
Created October 18, 2017 21:04
Shell script to control the start, stop and restart of a node application.
#!/bin/sh
## Script to control the applicaion start and stop
## Note, if the application was started separate to this script,
## then there is a risk that it will be started twice.
## Also note if you plan to use this with systemd, then you need to ensure
## the 'Service' section looks as follows:
## [Service]
@ajmas
ajmas / screenctl
Last active October 4, 2017 16:46
Script for turning on and off a connected screen, on a Raspberry Pi
#!/bin/bash
## script for turning and off the connected screen
## taken from https://www.raspberrypi.org/forums/viewtopic.php?t=7570
if [ $1 = 'on' ]; then
tvservice -p
fbset -depth 8
fbset -depth 16
fbset -depth 32
@ajmas
ajmas / addAll.js
Last active September 4, 2017 20:51
Javascript function, for adding all numbers from 1 to n, inclusive
/**
* Adds all numbers from 1 to maxInteger, inclusive
*/
function addAll (maxInteger) {
let n = maxInteger;
let m = 0;
if (n%2 === 1) {
m = n;
n = n - 1;
}
@ajmas
ajmas / array-functions.js
Created February 27, 2017 20:29
Collection of array function
// ref: http://stackoverflow.com/questions/1068834/object-comparison-in-javascript
function anyOfInArray (array1, array2, findIndexComparator) {
var i=0;
var containsAny= false;
findIndexComparator = function (currentValue, index, arr) {
return JSON.stringify(currentValue) === JSON.stringify(this)
//return currentValue === this;
}
@ajmas
ajmas / confgurable-password-checker.js
Last active February 2, 2017 18:54
Configurable Password Checker
// This version work on simply checking something that fails a rule, though
// it may be useful to check based on estimated password strength. For this
// each function would return a value indicating strength. This value could
// be positive or negative. For example, a string longer than 16 characters
// could get a rating of +5, but being digit only get a -5. Other methods
// could simply return 0/+1.
var ruleFunctions = {
duplicateChars: function(password, min) {
var prevChar, i;
/**
* Creates an HTTP server to allow to read the sensor data via
* HTTP. Improvements could include caching the data, to avoid
* the sensor being hit too frequently.
*
* Not tested in-situ.
*/
const express = require('express');
const app = express();
const net = require('net');
@ajmas
ajmas / download-from-google-drive.js
Last active January 4, 2017 19:58
Downloads a directory structure from Google Drive. Also handles exporting of the Google Docs.
const fs = require('fs-extra');
const google = require('googleapis');
const OAuth2 = google.auth.OAuth2;
const key = require('./key.json');
var baseFolder = 'base';
function downloadFile(file, path) {
setTimeout(function () {
var filePath = path.concat(file.name).join('/');
// depends on turf and having a copy of the countries.gejson file for the value of the countryOutlines
// see: https://github.com/johan/world.geo.json as one source
findCountryName (latlon) {
var features, i, j, poly;
var point1 = turf.point([latlon[1], latlon[0]]);
if (this.countryOutlines) {
features = this.countryOutlines.features;
for (i=0; i<features.length; i++) {
@ajmas
ajmas / CoordinateParser.js
Last active March 31, 2016 21:43
Parsing text and producing a geo coordinate
CoordinateParser = {
convertDegMinSecToDecDeg: function (deg, min, sec, direction) {
var value;
if (min === undefined) { min = 0; }
if (sec === undefined) { sec = 0; }
deg = parseFloat(deg);
min = parseFloat(min);