Skip to content

Instantly share code, notes, and snippets.

View grantmacken's full-sized avatar
🏠
Working from home

Grant MacKenzie grantmacken

🏠
Working from home
View GitHub Profile
@grantmacken
grantmacken / devConfig.sh
Last active December 16, 2015 04:59
My Nginx config
# ./nginx-production.sh
#===========
#Grant MacKenzie <grantmacken@gmail.com>
#v0.1, May 2013
#................................................................................
# dBin='~/bin'
# if [ ! -d ~/bin ] ; then
# mkdir ~/bin
# fi
# git clone https://gist.github.com/5381105.git
@grantmacken
grantmacken / nginx-install.sh
Last active December 16, 2015 04:59
my compile from source Nginx and install bash script for Ubuntu Server
#######################################
# nginx-install.sh
#Grant MacKenzie <grantmacken@gmail.com>
#v0.1, April 2013
#
#Installing nginx
#^^^^^^^^^^^^^^^^
#
#Nginx server: the latest stable version of
# http://wiki.nginx.org/Install
@grantmacken
grantmacken / gist:6528369
Created September 11, 2013 19:12
My ant build target for building and uploading xar from project folder.
<target name="xar-build-upload" >
<buildnumber file="build.version"/>
<property name="project.version" value="${version.major}.${build.number}"/>
<property name="xar-location" value="${dir.project}/${dir.build}/${project.abbrev}-${project.version}.xar"/>
<property name="repo.url" value="http://${host.local}:8080/exist/apps/public-repo/public/"/>
<property name="repo.update" value="http://${host.local}:8080/exist/apps/public-repo/modules/update.xql"/>
<property name="xar-file" value="${project.abbrev}-${project.version}.xar"/>
<echo>project.version: ${project.version}</echo>
<antcall target="deployment-folder"/>
@grantmacken
grantmacken / a-shortURLB60.xq
Last active January 4, 2016 11:09
base60 in xquery. Look at shortURLB60.xq first
xquery version "3.0";
let $createShortDate := function ($date){
let $nYear := substring(format-date($date, "[Y]", 'en', (), ()), 3, 4)
let $nDaysOfYear := format-date($date, "[d]", 'en', (), ())
let $padDaysOfYear :=
if( string-length($nDaysOfYear) = 1) then ( '0' || '0' || $nDaysOfYear )
else if( string-length($nDaysOfYear) = 2) then ( '0' || $nDaysOfYear )
else($nDaysOfYear)
let $nStr := $nYear || $padDaysOfYear
@grantmacken
grantmacken / hashtag.xq
Last active August 29, 2015 13:55
twitter hashtag autolinking in query
xquery version "3.0";
let $trim := function($arg){
replace(replace($arg,'\s+$',''),'^\s+','')
}
let $hashTag := function( $input ){
let $flags := ''
let $pattern := "(^|\s)((#)([A-Za-z]+[A-Za-z0-9_]{1,15}))(\s|$)"
let $replacement := '<span>$1<a href="/tag/$3">$4</a>$5</span>'
@grantmacken
grantmacken / md2-pygments.py
Last active August 29, 2015 13:56
Markdown2 fenced blocks and Pygments. Out of the I box I just couldn't get it work. So I don't use fenced blocks and hacked my own solution.
from lxml.html import tostring, fromstring, html5parser
from pygments import highlight
from pygments.formatters import HtmlFormatter
from pygments.lexers import guess_lexer, get_lexer_by_name
from pygments.filters import VisibleWhitespaceFilter
# hack hack ...
# ignore code contained in pre. I just want the text in the pre
def flatten(elem, include_tail=0):
text = elem.text or ""
for e in elem:
@grantmacken
grantmacken / post-to-twitter.py
Last active August 29, 2015 13:56
post to twitter from a markdown file
# -*- coding: utf-8 -*-
import re
import sys
import datetime
import math
import codecs
import argparse
import fileinput
import markdown2
@grantmacken
grantmacken / archive-trigger.xqm
Last active February 15, 2019 15:32
a existdb trigger which syncs localhost to remotehost ( http://markup.co.nz/archive/2014/02/12/publishing-posts )
xquery version "3.0";
module namespace trigger = "http://exist-db.org/xquery/trigger";
declare namespace xhtml = "http://www.w3.org/1999/xhtml";
declare namespace atom = "http://www.w3.org/2005/Atom";
declare namespace repo="http://exist-db.org/xquery/repo";
import module namespace system = "http://exist-db.org/xquery/system";
import module namespace util = "http://exist-db.org/xquery/util";
import module namespace xmldb = "http://exist-db.org/xquery/xmldb";
@grantmacken
grantmacken / group-by-date.xqm
Last active August 29, 2015 13:56
Xquery 3 function that uses 'group by' to list entries by year month day
declare
function post:archive-feed($node as node(), $model as map(*)) {
let $itemCount := function( $seq ){
if( count( $seq ) eq 1 )
then( string(count( $seq )) || ' post')
else( string(count( $seq )) || ' posts') }
let $getMonth := function( $month ){
('January', 'February', 'March', 'April', 'May', 'June','July', 'August', '
September', 'October', 'November', 'December')[$month]
@grantmacken
grantmacken / hashURL.xq
Last active August 29, 2015 13:57
Generate a base64 md5 hash from a URL, which can become a 'unique' URL safe resource or file name
xquery version "3.0";
import module namespace util="http://exist-db.org/xquery/util";
let $href := "${url}"
let $base64flag := true()
let $alogo := 'md5'
let $hash := replace(util:hash($href, $alogo, $base64flag), '(=+$)', '')
return
translate( $hash, '+/', '-_')