Skip to content

Instantly share code, notes, and snippets.

@kuon
kuon / Rakefile
Created May 10, 2014 22:56
How to use nanoc with rerun
task :server do
fork do
exec 'bundle exec rackup -p 4567'
end
exec %{rerun -p "{Rules,Gemfile,content/**/*,lib/**/*,static/**/*,layouts/**/*}" -x nanoc compile}
end
@kuon
kuon / Guardfile
Created June 25, 2014 10:55
Guard with rack process
guard 'nanoc' do
watch('nanoc.yaml')
watch('Rules')
watch(%r{^(content|layouts|static|lib)/.*$})
callback(:start_begin) do
fork do
exec 'bundle exec rackup -p 4567'
end
end
@kuon
kuon / ports.yml
Created August 26, 2014 15:46
Mapping groups to ports in ansible
vars:
fw_ports:
- ["5000", "6000"]
- "{{ groups['api-server'] }}" # this should map to a list of IP
tasks:
- name: Open ports
firewalld:
permanent={{ permanent }}
state=enabled
@kuon
kuon / rules.v4
Created November 6, 2014 12:59
docker
# Generated by iptables-save v1.4.21 on Thu Nov 6 12:58:14 2014
*nat
:PREROUTING ACCEPT [106:10938]
:INPUT ACCEPT [98:10528]
:OUTPUT ACCEPT [187:13179]
:POSTROUTING ACCEPT [194:13627]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
@kuon
kuon / gist:8153e6c253e089836ef8
Created December 22, 2014 08:24
Share host variables with ansible
---
- hosts: etcd
gather_facts: false
sudo: false
tasks:
- command: etcdctl get somepassword
register: somepassword
- hosts: other
@kuon
kuon / Rakefile
Created April 10, 2015 16:06
Rakefile for js project
require_relative 'config/commands'
root = File.expand_path('..', __FILE__)
ENV['PATH'] = "#{File.join(root, 'node_modules', '.bin')}:#{ENV['PATH']}"
scss_dir = File.join(root, 'app', 'css')
css_dir = File.join(root, 'build', 'css')
image_dir = File.join(root, 'app', 'images')
js_dir = File.join(root, 'app', 'js')
@kuon
kuon / FocusView.h
Last active August 29, 2015 14:23
Quick focus ring
#import <Cocoa/Cocoa.h>
@interface FocusView : NSTextView
@end
var editor = new SGU.ScreenEditor('SGScreenEditor',
{screenWidth: SG.screenLayoutController.get('width'),
screenHeight:SG.screenLayoutController.get('height')});
SG.currentScreenEditor = editor;
var surfaces = SG.screenLayoutController.get('surfaces');
editor._surfaces = surfaces;
surfaces.forEach(function (s) {
s._zone = new SGU.ScreenEditor.Zone(editor);
s.addObserver('status', {cb:function(obj) {
console.log('status');
didCreateLayer:function() {
var bl = SG.broadcastLocationsController.get('firstObject');
console.log('createLayer');
if(!bl) return;
var redMarker = new google.maps.MarkerImage(
static_url('/images/2.png'),
new google.maps.Size(20, 20),
new google.maps.Point(0, 20)
);
broadcastLocationsBinding:'SG.broadcastLocationsController',
_broadcastLocationsDidChange:function() {
console.log('bl changes');
}.observes('broadcastLocations.[]'),