Skip to content

Instantly share code, notes, and snippets.

View tomnomnom's full-sized avatar
☺️
Taking it easy

Tom Hudson tomnomnom

☺️
Taking it easy
View GitHub Profile
@tomnomnom
tomnomnom / zend_hash_rehash_annotated.c
Created April 2, 2013 16:13
Annotated version of zend_hash_rehash
ZEND_API int zend_hash_rehash(HashTable *ht)
{
Bucket *p;
uint nIndex;
IS_CONSISTENT(ht);
if (UNEXPECTED(ht->nNumOfElements == 0)) {
return SUCCESS;
}
@tomnomnom
tomnomnom / sorted-array-access.php
Last active December 15, 2015 16:49
It seems that when using sort() (i.e. the keys are re-assigned), array access slows down; but with asort() (i.e. the keys are not re-assigned) access speed is not affected.
<?php
const INT_COUNT = 1000000;
// Fill an array with random ints
$ints = [];
for ($i = 0; $i < INT_COUNT; $i++){
$ints[] = rand(0, 255);
}
// Sort the ints
@tomnomnom
tomnomnom / spec-1.2.7.json
Created February 19, 2013 14:15
Example Etherpad Lite API spec file
{
"version": "1.2.7",
"methods": [
{
"name": "createGroup",
"httpMethod": "POST",
"arguments": [
]
},
@tomnomnom
tomnomnom / tweet-fetch.php
Last active December 11, 2015 06:08
A quick and dirty way to get recent tweets
#!/usr/bin/env php
<?php
date_default_timezone_set('GMT');
$params = array(
"screen_name" => "tomnomnom",
"include_rts" => "true"
);
if (!file_exists('last-id')){
touch('last-id');
@tomnomnom
tomnomnom / cv-server.go
Created January 5, 2013 18:53
POC Go web server for online CV
package main
import (
"net/http"
"html/template"
"runtime"
"os"
"os/signal"
"syscall"
"log"
@tomnomnom
tomnomnom / trait-deps.php
Created December 30, 2012 14:00
An experiment: using traits for dependency injection
<?php
// An experiment: using traits for dependency injection
// A trait provides a way to inject a Logger and a way to use it
trait aLogger {
protected $logger = null;
public function setLogger(Logger $logger){
$this->logger = $logger;
}
public function log($msg){
@tomnomnom
tomnomnom / bucket-split.js
Created November 3, 2012 16:04
Splitting test files into roughly similar buckets
// Files vs. tests in file
var files = {
'one.js': 12,
'two.js': 22,
'three.js': 14,
'four.js': 10,
'five.js': 19,
'six.js': 10,
'seven.js': 18,
'eight.js': 10,
@tomnomnom
tomnomnom / simple-mvc.php
Created June 18, 2012 13:51
Very Simple MVC
<?php
// "M"
function getUsers(){
// Fetch from DB
// ...
return $arrayOfUsers;
}
// "C"
$users = array();
@tomnomnom
tomnomnom / xdebug-trigger.patch
Created May 15, 2012 21:59
XDEBUG_PROFILE trigger from CLI patch
From a7209454d1817f0e79b62d78b370cd8390fb1069 Mon Sep 17 00:00:00 2001
From: Tom Hudson <mail@tomnomnom.com>
Date: Tue, 15 May 2012 22:55:24 +0100
Subject: [PATCH] Enabled use of XDEBUG_PROFILE trigger from CLI via _ENV
globals
---
xdebug.c | 3 +++
1 file changed, 3 insertions(+)
@tomnomnom
tomnomnom / vim-in-ambient-exercise.html
Created May 7, 2012 12:06
Vim "in" and "ambient" motions exercise
<!doctype html>
<html lang="en">
<head>
<title>My awesome homepage</title>
<script type="text/javascript">
(function(){
// Press ci" (Change In quotes) with the cursor between