Skip to content

Instantly share code, notes, and snippets.

View pricees's full-sized avatar

Ted Price pricees

View GitHub Profile
@pricees
pricees / gist:4142598
Created November 25, 2012 06:19
Alarm Class Implementation
class Alarm < Sequel::Model
DAYS = %w[sunday monday tuesday wednesday thursday friday saturday]
def self.utc_day_and_time(local_day, local_time, zone = "Etc/UTC")
offset = Timezone::Zone.new(:zone => zone).utc_offset
utc_time = Time.at(local_time.to_i - offset).utc
# Handle day math if UTC time is new day
@pricees
pricees / gist:4144864
Created November 25, 2012 19:23
Curses, Part 1: The Standard Screen
#!/usr/local/bin/ruby
require "curses"
def print_at_center(str)
lines, cols = Curses.lines, Curses.cols
Curses.clear
Curses.setpos((lines / 2 ) - 1, ((cols - str.length) / 2) - 1)
Curses.addstr(str)
Curses.refresh
end
@pricees
pricees / gist:4145110
Created November 25, 2012 20:04
Curses Part 2-1: Create a Window
#!/usr/local/bin/ruby
require "curses"
def show_message(message)
width = message.length + 6
win = Curses::Window.new(5, width,
(Curses.lines - 5) / 2, (Curses.cols - width) / 2)
win.box("|", "-")
win.setpos(2, 3)
win.addstr(message)
@pricees
pricees / gist:4145198
Created November 25, 2012 20:27
Curses, Part 2-2: Window fun!
#!/usr/local/bin/ruby
require "curses"
begin
Curses.init_screen # bring it
line = ""
str = "Enter a string ('quit' to quit):"
win = Curses::Window.new(5, 50, 10, 10)
@pricees
pricees / gist:4145263
Created November 25, 2012 20:43
Curses Part 2-3: Multiple windows
#!/usr/local/bin/ruby
require "curses"
begin
Curses.init_screen # bring it
line = nil
win = Curses::Window.new(5, 50, 10, 10)
wout = Curses::Window.new(5, 50, 20, 10)
@pricees
pricees / gist:4145555
Created November 25, 2012 21:53
Curses Part 2-3: Subwindow
#!/usr/local/bin/ruby
require "curses"
begin
Curses.init_screen
Curses.noecho
win = Curses::Window.new(Curses.lines-10, Curses.cols - 10, 5, 5)
win.keypad(true)
@pricees
pricees / gist:4239313
Created December 8, 2012 08:41
Google Drive Companion help
======================
Google Drive Companion
======================
gdriver s # start server
== Upload Files ==
gdpush [local file] [remote file]
gdpush /tmp/foo remote/path/bar # push local file /tmp/foo -> remote/path/bar
gdpush /tmp/foo [remote file] # push local file /tmp/foo -> remote /tmp/foo
@pricees
pricees / hexagonal_helper.rb
Created September 24, 2013 21:52
This is a module I wrote to help our move towards a Cockburn-esque Hexagonal Architecture in Rails
# This purpose of this module is to assist developers in moving towards a more
# hexagonal architecture
#
# Driver demo program for hexagonal helper
#
#
# require "./hexagonal_helper.rb"
#
# module Foo; end
# module Foo::Persistence; end
@pricees
pricees / gist:6814856
Created October 3, 2013 18:41
MSN Money (10 year summary, 10 year key ratios)
13:37 $ cat parse.rb
require "nokogiri"
require "awesome_print"
def ten_year_key_ratios
# investing.money.msn.com/investments/key-ratios?symbol=aapl&page=TenYearSummary
doc = Nokogiri::HTML File.read("./10_yr_key_ratios")
data = []
doc.css("table.mnytbl tr").each do |n|
foo = n.search('th/span').map { |x| x.text.strip }
@pricees
pricees / gist:6900781
Created October 9, 2013 12:54
Morningstar Scraper in progress
require 'rubygems'
require 'capybara'
require 'capybara/dsl'
require "selenium-webdriver"
Capybara.run_server = false
Capybara.app_host = 'http://financials.morningstar.com'
Capybara.register_driver :auto_dl do |app|