Skip to content

Instantly share code, notes, and snippets.

@ajmas
ajmas / pre-push
Last active April 29, 2019 21:06
Git 'pre-push' script to prevent pushing to a given branch on a remote
#!/bin/bash
# Simple 'pre-push' script to prevent an accidental push to a
# specific branch on a specific remote. Mainly needed when a
# remote branch is not protected.
#
# Place this in the .git/hooks folder of your project and then
# ensure you make it executable. Modify according to your needs.
restricted_branch=master
@ajmas
ajmas / no-content-type.js
Created January 2, 2019 05:03
Allow express body-parser to deal with missing content-type headers
// I was dealing with such an issue, where there was no content-type
// curl --upload-file '/Users/myuser/Movies/VID-20171025.mp4' -H http://localhost:3000/api/upload/path/to/myfile.xyz
const bodyParser = require('body-parser');
function req(req, res, next) {
const fileName = req.params.name;
if (Buffer.isBuffer(req.body)) {
fs.writeFileAsync("/tmp/" + fileName, req.body)
@ajmas
ajmas / CircularProgress.vue
Created February 8, 2018 05:40
Vue Component for drawing a circular progress bar
<!--
Vue Component for drawing a circular progress bar
-->
<template>
<div class="circular-progress" ref="circularProgress">
<svg :height="height" :width="width">
<path class="channel" :d="channel"/>
<path class="progress" :d="progress" />
<text x="55%" y="55%" :font-size="fontSize">
{{percent}}%
@ajmas
ajmas / vt100-to-html.js
Last active January 5, 2018 04:38
Quick attempt to convert ansi/vt100 escape sequence to HTML
let text = "\u001b[H\u001b(B\u001b[mtop - 02:11:23 up 36 days, 18:31, 0 users, load average: 4.25, 5.34, 5.98\u001b(B\u001b[m\u001b[39;49m\u001b(B\u001b[m\u001b[39;49m\u001b[K\r\n\r\n%Cpu(s):\u001b(B\u001b[m\u001b[39;49m\u001b[1m 21.7 \u001b(B\u001b[m\u001b[39;49;35;43mus,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 8.7 \u001b(B\u001b[m\u001b[39;49msy,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 0.0 \u001b(B\u001b[m\u001b[39;49mni,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 68.3 \u001b(B\u001b[m\u001b[39;49mid,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 0.0 \u001b(B\u001b[m\u001b[39;49mwa,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 0.0 \u001b(B\u001b[m\u001b[39;49mhi,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 1.1 \u001b(B\u001b[m\u001b[39;49msi,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 0.3 \u001b(B\u001b[m\u001b[39;49mst\u001b(B\u001b[m\u001b[39;49m\u001b(B\u001b[m\u001b[39;49m\u001b[K\r\nKiB Mem :\u001b(B\u001b[m\u001b[39;49m\u001b[1m 62916344 \u001b(B\u001b[m\u001b[39;49mtotal,\u001b(B\u001b[m\u001b[39;49m\u001b[1m 3671244 \u001b(B
@ajmas
ajmas / Demo.vue
Last active December 26, 2017 00:37
dabeng/OrgChart adapted to work with Vue Single File Component
<template>
<div>
<div id="orgchart" class="orgchart">
<node :model="nodeData" v-on:node-click="nodeClick"></node>
</div>
<p><button id="add">Add</button><button id="remove">Remove</button></p>
<p>(You can double click on an item to turn it into a folder.)</p>
<ul id="demo">
@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;
}