Skip to content

Instantly share code, notes, and snippets.

@ajmas
ajmas / markdownToFaq.js
Last active November 6, 2020 17:27
Converts Markdown formatted text representing a FAQ to an array of FAQ entries
const md = require('markdown-it')()
.use(require('markdown-it-attrs'))
.use(require('markdown-it-header-sections'));
const { XMLSerializer, DOMParser } = require('xmldom')
const sampleMarkdown = `
# XYZ
## Question 1
@ajmas
ajmas / conversions.md
Last active November 1, 2020 22:19
CLI File Conversion methods, with open source tools

Note, all commands represent the bare minimum need to do the conversion. Optimisations are generally not indicated, unless they are really needed. Also, you'll need to install the necessary tools, since many are are unlikely to be installed by default. This list is by no means definitive and is more something I put together as a reference for myself.

Text and Marked Up Documents

PDF to text

Using pdftotext: pdftotext -layout input.pdf output.txt

Doc/Docx to text

@ajmas
ajmas / mongoose-and.ts
Last active October 7, 2020 20:13
Testing performance advantage of `$and` in mongodb
/* eslint-disable no-console */
import mongoose from 'mongoose';
let User;
function generateRandomString (length = 6) {
return Math.random().toString(20).substr(2, length)
}
async function createEntries () {
@ajmas
ajmas / numberformat.js
Created September 2, 2020 17:01
International Number Formatting in JS
const suffixes = {
en: {
one: 'st',
two: 'nd',
few: 'rd',
other: 'th'
},
fr: {
one: 'er',
two: 'e',
@ajmas
ajmas / date-utils.js
Last active August 25, 2020 00:24
JS Date Utilities
/**
* Given an array of days of week, return in how many days the
* next candidate day is. If no candidate is found, then -1 is
* returned, since delta is always positive and non-zero.
*
* The following chart expresses the logic, where 'X' represents
* the `dayOfWeek` and `daysOfWeek` represent the days of next
* possible occurrence.
*
* ```
@ajmas
ajmas / status-check
Last active August 4, 2020 23:32
Simple server health check, that sends failure to a discord or slack channel
#!/bin/sh
## simple server health checker. when the service does not respond it calls a
## Discord or Slack webhook
## adjust values below according to you needs:
server=www.google.com
service=discord
webhook_url="https://discordapp.com/api/webhooks/...."
@ajmas
ajmas / post-checkout
Created July 22, 2020 18:40
Git hook for NodeJS development
#!/bin/sh
## Checks to see if the package.json changed following a checkout or merge and then automatically
## runs `npm install`. If you use yarn or pnpm, then change the line with `npm install` as needed.
##
## add this code to both .git/hooks/post-checkout and .git/hooks/post-merge
file="package.json"
if [[ $(git diff HEAD@{1}..HEAD@{0} -- "${file}" | wc -l) -gt 0 ]]
then
@ajmas
ajmas / asyncArrayFunction.js
Created May 4, 2020 17:13
Async Array functions in NodeJS
/**
* This module provides a set of async friendly functions that
* mirror the non-async versions in array.
*
* They are not necessarily optimised, but they do work when we
* need to deal with async or promise based operations in the
* handler.
*/
/**
@ajmas
ajmas / 502.html
Created April 15, 2020 20:56
502 Error Page for NodeJS hosting
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>502 Bad Gateway</title>
<!-- Browser icons from https://github.com/alrra/browser-logos -->
@ajmas
ajmas / deploy-myapp.sh
Last active April 15, 2020 18:17
Deployment Script
#!/bin/sh
project=myapp
repo_path=~/repositories/${project}
dist_path=~/repositories/${project}
deploy_dir=/usr/local/${project}
export env=prod
cd "${repo_path}"