Skip to content

Instantly share code, notes, and snippets.

View mildmojo's full-sized avatar
💃
Not much. You?

Tim mildmojo

💃
Not much. You?
View GitHub Profile
@mildmojo
mildmojo / GoogleAnalytics.cs
Last active December 11, 2015 22:09
Reporting Unity game events to Google Analytics from the Unity Webplayer. Calls out to the Google javascript library loaded on the page, so the class is configuration-free.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
/* Google Analytics integration. Web page must be configured for GA with Google's javascript snippet.
*
* Based on a comment from 2010 found here:
* http://blog.mostlytigerproof.com/2009/10/06/gathering-statistics-using-google-analytics-and-unity-3d/
*
* Analytics category/action/label/value descriptions:
@mildmojo
mildmojo / arel_math_named_functions.rb
Created November 22, 2012 02:29
ARel named function helpers
# Collection of helpers for math-related ARel NamedFunctions.
#
# Include this in classes that need to do trig with DB functions. Lets you write
# cleaner code, like:
#
# dist = acos(sin(lat) * sin(arel_lat_field) +
# cos(lat) * cos(arel_lat_field) * cos(arel_lng_field)) * EARTH_RADIUS_KM
# band_num = round(dist / ring_width, 0)
# band_num.to_sql
# # => round(abs(acos(
@mildmojo
mildmojo / active_record_left_join.rb
Created November 16, 2012 22:27
Adding #left_joins to ActiveRecord::Base
# Adds left joins to ActiveRecord.
#
# = Description
#
# This patch adds a #left_joins method to ActiveRecord models and relations. It
# works like #joins, but performs a LEFT JOIN instead of an INNER JOIN.
#
# = A warning about +count+
#
# When using with #count, ActiveRecord 3.2.8 is hard-coded to act as if
@mildmojo
mildmojo / left_join_arel_example.rb
Last active April 5, 2024 16:00
LEFT JOIN in ARel for ActiveRecord in Ruby on Rails
# Here's a contrived example of a LEFT JOIN using ARel. This is an example of
# the mechanics, not a real-world use case.
# NOTE: In the gist comments, @ozydingo linked their general-purpose ActiveRecord
# extension that works for any named association. That's what I really wanted!
# Go use that! Go: https://gist.github.com/ozydingo/70de96ad57ab69003446
# == DEFINITIONS
# - A Taxi is a car for hire. A taxi has_many :passengers.
# - A Passenger records one person riding in one taxi one time. It belongs_to :taxi.
@mildmojo
mildmojo / gist:3641946
Created September 5, 2012 18:24
Getting the exit status from the command at the head of a pipeline in dash vs. bash
DASH
----
Not actually supported by POSIX alone. Googled from http://www.spinics.net/lists/dash/msg00327.html:
$ exec 3>&1 # duplicate original stdout
$ result=$(
exec 4>&1 >&3 3>&- # move cmd subst stdout, and restore original
{ ./main.sh; echo $? >&4 # run command, and record its status
} | head -n 3)
$ echo $result # status from ./main.sh
@mildmojo
mildmojo / config.ru
Created June 21, 2012 18:07
Sitewide Rack HTTP basic auth with exceptions for publicly-accessible paths
require File.expand_path("../init", __FILE__)
require 'rack/ssl-enforcer'
# Require HTTPS for all requests (not required; remove if unavailable)
use Rack::SslEnforcer
AUTH_CREDS = { user: 'user', pass: 'password' }
# Create a middleware to add HTTP basic auth to all but the whitelisted paths
class ProtectedApp
@mildmojo
mildmojo / gist:2044883
Created March 15, 2012 15:45
Add Firefox buttons to manipulate about:config settings
/*
I needed a button in the Firefox UI to toggle the default page zoom level
setting offered by the NoSquint extension (shown as "extensions.nosquint.fullZoomLevel"
in about:config). Since this isn't likely to be provided directly and I
wasn't interested in writing my own extension for something so simple, I
looked for an extension that would expose about:config settings to buttons.
Instead, I found the Custom Buttons extension: