Skip to content

Instantly share code, notes, and snippets.

View troelskn's full-sized avatar

Troels Knak-Nielsen troelskn

View GitHub Profile
<?php
class ArrayPermutator implements IteratorAggregate {
protected $result = array();
function __construct($items) {
$this->permute($items);
}
function getIterator() {
return $this->result;
}
protected function permute($items, $perms = array()) {
[alias]
merge-all = "!sh -c 'for BRANCH in $(git branch -r | grep origin | grep -v HEAD | grep -v master | sed \"s/ *origin.//\") ; do git checkout $BRANCH && git merge master ; done ; git checkout master'"
up = "!sh -c 'git fetch origin ; for BRANCH in $(git branch -r | grep origin | grep -v HEAD | sed \"s/ *origin.//\") ; do git checkout $BRANCH && git pull origin $BRANCH ; done ; git checkout master && git submodule update --init'"
@troelskn
troelskn / gist:1287893
Created October 14, 2011 18:24
Luhn's algorithm in php
<?php
function is_valid_luhn($number) {
settype($number, 'string');
$sumTable = array(
array(0,1,2,3,4,5,6,7,8,9),
array(0,2,4,6,8,1,3,5,7,9));
$sum = 0;
$flip = 0;
for ($i = strlen($number) - 1; $i >= 0; $i--) {
$sum += $sumTable[$flip++ & 0x1][$number[$i]];
@troelskn
troelskn / gist:1294011
Created October 17, 2011 22:15
iban checksum validation in php
<?php
function is_valid_iban($str) {
static $charmap = array (
'A' => 10, 'C' => 12, 'D' => 13, 'E' => 14, 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19, 'K' => 20, 'L' => 21, 'M' => 22, 'N' => 23, 'O' => 24, 'P' => 25, 'Q' => 26, 'R' => 27, 'S' => 28, 'T' => 29, 'U' => 30, 'V' => 31, 'W' => 32, 'X' => 33, 'Y' => 34, 'Z' => 35,
);
if (!preg_match("/\A[A-Z]{2}\d{2} ?[A-Z\d]{4}( ?\d{4}){1,} ?\d{1,4}\z/", $str)) {
return false;
}
$iban = str_replace(' ', '', $str);
$iban = substr($iban, 4) . substr($iban, 0, 4);
import sys
import os
import subprocess
def git(args, **kwargs):
environ = os.environ.copy()
if 'repo' in kwargs:
environ['GIT_DIR'] = kwargs['repo']
if 'work' in kwargs:
environ['GIT_WORK_TREE'] = kwargs['work']
@troelskn
troelskn / gist:1934675
Created February 28, 2012 19:48
week_diff.sql
select ceil((datediff(now(), created_at) - (dayofweek(now()) - 2)) / 7) ;
@troelskn
troelskn / custom.css
Created March 27, 2012 21:06
Winter Theme for Gitit
@import url("reset-fonts-grids.css");
@import url("hk-pyg.css"); /* for syntax highlighting */
html { background: #f9f9f9; color: black; }
body { margin: 10px; font-family: verdana; }
fieldset { border: 1px solid #ccc; padding: 1em; }
legend { font-weight: bold; margin-left: 1em; padding: 4px; }
h1, h2, h3, h4, h5, h6 { font-weight: normal; }
table, tr, td, th { border: none; }
hr { height: 1px; color: #aaa; background-color: #aaa; border: 0; margin: .2em 0 .2em 0; }
@troelskn
troelskn / app.rb
Last active August 12, 2021 17:25 — forked from dstrelau/app.rb
Gollum protected by HTTP Basic
require 'gollum/frontend/app'
require 'digest/sha1'
class App < Precious::App
User = Struct.new(:name, :email, :password_hash, :can_write)
before { authenticate! }
before /^\/(edit|create|delete|livepreview|revert)/ do authorize_write! ; end
helpers do
@troelskn
troelskn / image_thumb.php
Created October 31, 2012 11:26
image_thumb.php
<?php
/**
* Default settings for image_thumb.
*/
$GLOBALS['image_thumb'] = array(
// FS path to location of image cache. Must be writable by web server. Must end with slash.
'local_path' => '/var/www/imagery/',
// HTTP path to local_path. Must end with slash.
'http_root' => '/imagery/',
// TTL for cached images, in sec.
@troelskn
troelskn / fileutil.inc.php
Created October 31, 2012 11:27
fileutil.inc.php
<?php
/**
* @package fileutil
*/
interface fileutil_FileHandler {
function handleFile(fileutil_File $file);
}
/**
* @package fileutil