Skip to content

Instantly share code, notes, and snippets.

@noodlehaus
noodlehaus / detach.js
Created Feb 14, 2017
detach methods as functions
View detach.js
function detach(fn, cls) {
if (typeof cls.prototype[fn] !== 'function') {
throw new Error(fn + ' is not an instance function');
}
return cls.prototype[fn].call.bind(cls.prototype[fn]);
}
var slice = detach('slice', Array);
var map = detach('map', Array);
@noodlehaus
noodlehaus / private.xml
Last active Oct 7, 2016
Karabiner bindings for pok3r
View private.xml
<?xml version="1.0"?>
<root>
<!-- mac management -->
<item>
<name>Set Command_L + Esc to Window Switch</name>
<identifier>private.cmd_l_esc_to_window_switch</identifier>
<autogen>
__KeyToKey__
KeyCode::ESCAPE,
@noodlehaus
noodlehaus / header-flush.php.text
Last active Mar 22, 2016
header flushing code from zend-diactoros
View header-flush.php.text
array_walk($headers, function ($value, $key) {
# validate header key (ref: zend-diactoros)
if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $key)) {
throw new InvalidArgumentException("Invalid header name - {$key}");
}
# validate header values (ref: zend-diactoros)
$values = is_array($value) ? $value : [$value];
foreach ($values as $val) {
@noodlehaus
noodlehaus / php-recipes.markdown
Last active Aug 10, 2017
Some patterns I use in plain old PHP apps
View php-recipes.markdown

pulling values from arrays

$name = @$_POST['name'];
# => null or the value for name

defaults for associative arrays

@noodlehaus
noodlehaus / mysqli-extras.php
Created Dec 25, 2015
mysqli + extras, php7
View mysqli-extras.php
<?php declare(strict_types=1);
# Executes a select and returns a single row.
function mysqli_select_one($db, string $sql, ...$params) {
$stmt = mysqli_interpolate($db, $sql, ...$params);
if (
!mysqli_stmt_execute($stmt) ||
false === ($result = mysqli_stmt_get_result($stmt))
@noodlehaus
noodlehaus / routes-example.php
Last active Sep 21, 2015
simple routing library with type hints
View routes-example.php
<?php
require __DIR__.'/routes.php';
use badphp\routes\{
function get,
function post,
function lookup
};
# let's create some routes
View 00-aphpy-concept.php
<?php
// bootstrap file
use aphpy as app;
$blogs = app\load(__DIR__.'/fruits.php');
$books = app\load(__DIR__.'/books.php');
$v1 = app\prefix('v1', [
'books' => $books,
@noodlehaus
noodlehaus / .tmux.conf
Last active Aug 15, 2016
tmux settings
View .tmux.conf
# behaviour
set -g base-index 1
set -g pane-base-index 1
set -g visual-activity on
set -g default-terminal "screen-256color"
setw -g monitor-activity on
# ctrl-a instead of ctrl-b
# set-option -g prefix C-a
View 00-badphp-context-concept.php
<?php
require __DIR__.'/request.php';
require __DIR__.'/response.php';
use badphp\context\request;
use badphp\context\response;
/**
* Request handling examples
View .bashrc
# get bash completion for brew
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
# git prompt
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \(\1\)/'
}