Skip to content

Instantly share code, notes, and snippets.

View fuck_you.php
/**
* fUCK yOU php
*
* @craig552uk
*/
<?php
You echo to the browser, not to std out.
So I hunt for bugs in XHRs or (here or (there about))
@craig552uk
craig552uk / cache.py
Created Aug 8, 2014
A Simple Python Memory Cache Library
View cache.py
# -*- coding: utf-8 -*-
#
# A simple memory cache library
# Author: Craig Russell <craig@craig-russell.co.uk>
#
import time
class Cache(object):
@craig552uk
craig552uk / basics_of_unix_philosophy
Last active May 10, 2021
Basics of the Unix Philosophy
View basics_of_unix_philosophy
Basics of the Unix Philosophy
=============================
Rule of Modularity: Write simple parts connected by clean interfaces
Rule of Clarity: Clarity is better than cleverness
Rule of Composition: Design programs to be connected with other programs
Rule of Separation: Separate policy from mechanism; separate interfaces from engines
@craig552uk
craig552uk / mysql.service.ts
Last active Jun 18, 2020
MySQL Wrapper for NodeJS
View mysql.service.ts
import { Connection, createPool, createConnection, Pool } from 'mysql';
import { MYSQL_DATABASE, MYSQL_HOST, MYSQL_PASSWORD, MYSQL_PORT, MYSQL_USER } from './config.service';
import { InternalServerError } from 'http-errors';
import { LoggerService } from './logger.service';
import { isEmpty } from '../lib/utilities';
const logger = LoggerService.getInstance();
export class MySQLService {
@craig552uk
craig552uk / Chart.html
Created Sep 28, 2012
Blog: Google Spreadsheet Powered Interactive
View Chart.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Chart</title>
<meta charset="utf-8">
</head>
<body>
<p class="my-chart" style="text-align:center"></p>
@craig552uk
craig552uk / promise_chains.js
Last active Feb 16, 2016
Options for passing multiple data down a promise chain
View promise_chains.js
// Promises can only resolve (return) a single value
// Sometimes, you want to collect multiple values as you progress through a promise chain
// e.g. Customer, Product, Basket, Payment Details
//
// I can only think of three options for handling this type of scenario (below)
// NB: Assume that FOO, BAR & BAZ are the result of some complex action (DB query etc.)
//
// What are the Pro's & Cons?
// Are there others?
@craig552uk
craig552uk / test_errors.js
Created Feb 15, 2016
The Right and Wrong way to use Errors in Promises
View test_errors.js
//
// Wrong ways to use Errors in Promises
//
// Passes Error constructor to next step in Promise chain
Promise.resolve('foo').then(val => {
return Error('Bad Thing 1');
}).then(val => {
console.log('LOG 1', val);
View mit-license.txt
The MIT License (MIT)
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
View .bashrc
# Colours
txtgrn='\[\e[0;32m\]' # Green
txtylw='\[\e[0;33m\]' # Yellow
txtblu='\[\e[0;34m\]' # Blue
txtpur='\[\e[0;35m\]' # Purple
txtcyn='\[\e[0;36m\]' # Cyan
txtwht='\[\e[0;37m\]' # White
bldblk='\[\e[1;30m\]' # Black - Bold
bldred='\[\e[1;31m\]' # Red - Bold
bldgrn='\[\e[1;32m\]' # Green - Bold