git config --global init.templatedir '~/.git-templates'
mkdir -p ~/.git-templates/hooks
-
create ~/.tig-brother/checkouts.db (sqlite3) from the dump
-
copy the hook script
-
git init
in the git repo
git config --global init.templatedir '~/.git-templates'
mkdir -p ~/.git-templates/hooks
create ~/.tig-brother/checkouts.db (sqlite3) from the dump
copy the hook script
git init
in the git repo
class InstagramRealTimeUpdatesController < ActionController::Base | |
def callback | |
case request.method_symbol | |
when :get | |
render text: Instagram.meet_challenge(params, ENV['INSTAGRAM_VERIFY_TOKEN']) | |
when :post | |
Instagram.process_subscription(request.body.read) do |handler| | |
handler.on_user_changed do |user_id, data| | |
media_id = (data['data'] || {})['media_id'] | |
InstagramJob.perform_later user_id, media_id |
require 'mechanize' | |
require 'kuromoji' | |
dom = Mechanize.new.get("http://tatoeba.org/eng/sentences/show/jpn") | |
jp_sentence = dom.parser.at("//div[@lang = 'ja']").text | |
# => "万一に備えて傘を持っていった方がいいだろうな。" | |
jp_sentence_w_furigana = dom.parser.at("//div[@lang = 'ja-Latn']").text | |
# => "万一[まんいち] に[] 備え[そなえ] て[] 傘[かさ] を[] 持っ[もっ] て[] いっ[] た[] 方[ほう] が[] いい[] だろ[] う[] な[] 。[]" | |
en_sentence = dom.parser.at("//div[@lang = 'en']").text | |
# => "Perhaps I should take an umbrella with me just in case." |
# using the awesome squeel gem | |
has_many :shares, dependent: :destroy | |
has_many :stories, through: :shares | |
has_many( | |
:stories_this_month, -> do | |
where do | |
date_part('month', created_at).eq(Date.today.month) & | |
date_part('year', created_at).eq(Date.today.year) |
-- cards are what you review. easy! | |
CREATE TABLE cards ( | |
id integer primary key, | |
-- the epoch milliseconds of when the card was created | |
nid integer not null, | |
-- notes.id | |
did integer not null, | |
-- deck id (available in col table) | |
ord integer not null, | |
-- ordinal, seems like. for when a model has multiple templates, or thereabouts |
### app access token | |
graph = Koala::Facebook::OAuth.new APP_ID, APP_SECRET | |
graph.get_app_access_token # => APP_TOKEN | |
### create test users with permissions | |
test_users = Koala::Facebook::TestUsers.new app_id: APP_ID, secret: APP_SECRET | |
user = test_users.create true, 'email,user_birthday,user_posts', name: 'Bob' | |
# => | |
# { "id" => USER_ID, | |
# "access_token" => USER_ACCESS_TOKEN, |
git log --graph --pretty=format:'%C(auto)%h -%d %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit |
module MyApp | |
module V1 | |
class API < Grape::API | |
version 'v1', using: :path | |
format :json | |
before do | |
header['Access-Control-Allow-Origin'] = '*' | |
header['Access-Control-Request-Method'] = '*' |
class Note < ActiveRecord::Base | |
# The true polymorphic association | |
belongs_to :subject, polymorphic: true | |
# The trick to solve this problem | |
has_one :self_ref, class_name: self, foreign_key: :id | |
has_one :volunteer, through: :self_ref, source: :subject, source_type: Volunteer | |
has_one :participation, through: :self_ref, source: :subject, source_type: Participation | |
end |
require 'venice' | |
data = %{ewoJInNpZ25hdHVyZSIgPSAiQXBNVUJDODZBbHpOaWtWNVl0clpBTWlKUWJLOEVkZVhrNjNrV0JBWHpsQzhkWEd1anE0N1puSVlLb0ZFMW9OL0ZTOGNYbEZmcDlZWHQ5aU1CZEwyNTBsUlJtaU5HYnloaXRyeVlWQVFvcmkzMlc5YVIwVDhML2FZVkJkZlcrT3kvUXlQWkVtb05LeGhudDJXTlNVRG9VaFo4Wis0cFA3MHBlNWtVUWxiZElWaEFBQURWekNDQTFNd2dnSTdvQU1DQVFJQ0NHVVVrVTNaV0FTMU1BMEdDU3FHU0liM0RRRUJCUVVBTUg4eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVNZd0pBWURWUVFMREIxQmNIQnNaU0JEWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVURXpNREVHQTFVRUF3d3FRWEJ3YkdVZ2FWUjFibVZ6SUZOMGIzSmxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1CNFhEVEE1TURZeE5USXlNRFUxTmxvWERURTBNRFl4TkRJeU1EVTFObG93WkRFak1DRUdBMVVFQXd3YVVIVnlZMmhoYzJWU1pXTmxhWEIwUTJWeWRHbG1hV05oZEdVeEd6QVpCZ05WQkFzTUVrRndjR3hsSUdsVWRXNWxjeUJUZEc5eVpURVRNQkVHQTFVRUNnd0tRWEJ3YkdVZ1NXNWpMakVMTUFrR0ExVUVCaE1DVlZNd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNclJqRjJjdDRJclNkaVRDaGFJMGc4cHd2L2NtSHM4cC9Sd1YvcnQvOTFYS1ZoTmw0WElCaW1LalFRTmZnSHNEczZ5anUrK0RyS0pFN3VLc3BoTWRkS1lmRkU1ckdYc0FkQkVqQndSSXhleFRldngzS |