Skip to content

Instantly share code, notes, and snippets.

View voidnerd's full-sized avatar
:octocat:
Debugging

Ndifreke Friday voidnerd

:octocat:
Debugging
View GitHub Profile
@voidnerd
voidnerd / mail.js
Created October 4, 2022 14:28
Typescript Mail Service (SMTP, Mailgun)
import nodemailer from 'nodemailer'
import ViewService from './view' // https://gist.github.com/ndiecodes/6e964e716a2b5b2aa22438912da2b3f3
import Mailgun from 'mailgun.js'
import FormData from 'form-data'
import { MailgunMessageData } from 'mailgun.js/interfaces/Messages'
interface LooseObject {
[key: string]: any
}
import { Edge } from 'edge.js'
import path from 'path'
import { LooseObject } from '../types'
export default class ViewService {
public constructor(
public view: string,
private data: LooseObject | null = null
) {}
public get path(): string {
@voidnerd
voidnerd / buildspec.yaml
Created June 26, 2022 08:50
Buildspec for typescript project on AWS CodeBuild
version: 0.2
phases:
install:
runtime-versions:
nodejs: 14.x
commands:
- npm install -g typescript
- npm install
pre_build:
commands:
@voidnerd
voidnerd / 20190417131115_test-setup.ts
Created October 22, 2021 18:48 — forked from jukkatupamaki/20190417131115_test-setup.ts
How to use Knex.js in a TypeScript project
import { Knex } from 'knex'
export async function up(knex: Knex): Promise<any> {
await knex.schema.createTable('test_setup', (table: Knex.TableBuilder) => {
table.integer('foobar');
});
}
export async function down(knex: Knex): Promise<any> {
await knex.schema.dropTable('test_setup');
module.exports = {
apps: [
{
name: 'nuxtapp',
exec_mode: 'cluster',
instances: 'max', // Or a number of instances
script: './node_modules/nuxt/bin/nuxt.js',
args: 'start',
watch: '.',
watch_delay: 3000,
@voidnerd
voidnerd / Mail.js
Last active July 17, 2020 03:57
Email Templating Nodejs Helper
const nodemailer = require("nodemailer");
const path = require("path");
const hbs = require("nodemailer-express-handlebars");
const exphbs = require("express-handlebars");
const Handlebars = require("handlebars");
const {
allowInsecurePrototypeAccess,
} = require("@handlebars/allow-prototype-access");
/** Start Mail Helper */
@voidnerd
voidnerd / dna.py
Last active September 29, 2022 10:27
CS50 Problem Set 6 - DNA Solution
from csv import reader, DictReader
from sys import argv, exit
sequences = {}
#validate input
if len(argv) < 3:
print("Usage:", "python dna.py data.csv sequence.txt")
exit(1);
@voidnerd
voidnerd / dictionary.c
Created June 13, 2020 01:32
cs50 Problem Set 5 - Speller Solution
// Implements a dictionary's functionality
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
#include <stdint.h>
#include <ctype.h>
#include "dictionary.h"
@voidnerd
voidnerd / recover.c
Created June 13, 2020 01:31
cs50 Problem Set 4 - Recover Solution
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
//eliminate magic numbers
#define BLOCK_SIZE 512
typedef uint8_t BYTE;
int main(int argc, char *argv[])
@voidnerd
voidnerd / helpers.c
Created June 13, 2020 01:29
cs50 Problem Set 4 - Filter (more) Solution
#include "helpers.h"
#include <math.h>
// Convert image to grayscale
void grayscale(int height, int width, RGBTRIPLE image[height][width])
{
float rgbGray;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++) {