Skip to content

Instantly share code, notes, and snippets.

View piersadrian's full-sized avatar

Piers Mainwaring piersadrian

View GitHub Profile
### Keybase proof
I hereby claim:
* I am piersadrian on github.
* I am piersadrian (https://keybase.io/piersadrian) on keybase.
* I have a public key ASCoeLCUgnYQJT_mGy0DwhKdgcKXx-CEMQNYBLgMtGdosQo
To claim this, I am signing this object:
@piersadrian
piersadrian / Appear.in
Created June 22, 2018 18:02
/Appear.in.app/Contents/MacOS/Appear.in
#!/bin/bash
# 1: create new Space in Mission Control for Desktop 2
# 2: create application structure and remember to chmod +x this file
# 3: fully configure browser and webapp
# 4: set "Options -> Assign to Desktop on Display 2"
skel_dir="$HOME/.chrome-user-data-appear-in"
tmp_dir="/tmp"
{
"extends": [
"plugin:lodash/recommended",
"plugin:react/recommended",
"react-app"
],
"plugins": [
"import",
"flowtype",
"jsx-a11y",
@piersadrian
piersadrian / tab-completion.coffee
Created May 8, 2015 17:26
Atom autocomplete suggestions on tab
{Point} = require 'atom'
atom.commands.add 'atom-text-editor', 'custom:tabcomplete', (e) ->
editor = atom.workspace.getActiveTextEditor()
cursor = editor.getLastCursor()
{row, column} = cursor.getBufferPosition()
precedingCharacter = editor.getTextInBufferRange([[row, column - 1], [row, column]])
if /\S/.test(precedingCharacter)
class GameOfLife
def initialize(size)
@size = size
@grid = make_grid(true)
@next_grid = make_grid(false)
@grid_hash = nil
# Create offset masks excluding [0, 0], which is the cell in question. The
# masks look like [-1, 0] or [1, 1] and represent the offset from the
@piersadrian
piersadrian / seed_data.rb
Created November 24, 2013 23:55
Rails 4 seed data dumper/loader
class SeedData
class << self
FILE_EXT = "json".freeze
MODEL_DIR = "#{ Rails.root }/db/models".freeze
# Dumps the contents every model into pretty-formatted JSON in the given
# directory. This lets us just make quick changes to the JSON structure and
# reimport the data (using #load) directly into the database.
def dump!(output_dir = MODEL_DIR)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseID];
if (! cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseID];
cell = [self addLabelsToCell:cell];
}
NSDictionary *client = [[clientTypes objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
{
"auto_complete_commit_on_tab": true,
"auto_complete_delay": 50,
"bold_folder_labels": true,
"caret_style": "phase",
"color_scheme": "Packages/tomorrow-theme/textmate/Tomorrow-Night.tmTheme",
"create_window_at_startup": false,
"ensure_newline_at_eof_on_save": true,
"file_exclude_patterns":
[
# routes.rb
constraints format: "html" do
get "*path", to: "angular#index", as: "angular"
end
# angular_controller.rb
class AngularController < ActionController::Base
VALID_PATHS = %w(/community /store /challenges /admin/health /admin/activities /admin/challenges /admin/budget)
before_action :verify_path!
module SessionsHelper
...
def authenticate!
raise ActionController::RoutingError.new("Unauthorized") unless signed_in?
end
end
class SomeController