Skip to content

Instantly share code, notes, and snippets.

@dpick
dpick / scrape_imdb.rb
Created October 20, 2010 04:54
Scraping IMDB user reviews
require 'rubygems'
require 'open-uri'
require 'hpricot'
movie = tt0379786
0.upto(5) do |page|
@url = "http://www.imdb.com/title/#{movie}/usercomments?start=#{page * 10}"
open(@url) { |f| @response = f.read }
require 'rubygems'
require 'sinatra'
require 'pony'
get '/' do
Pony.mail(:to => 'pickdp@rose-hulman.edu',
:from => ENV['SENDGRID_USERNAME'],
:subject => 'xyzpqrst',
:body => 'test',
:via => :smtp, :via_options => {
factorial = Hash.new do |h,k|
if k > 1
h[k] = h[k-1] * k
else
h[k] = 1
end
end
@dpick
dpick / gist:815767
Created February 8, 2011 03:00
Vendoring Gems
Dir.glob("vendor/*").each { |gem| $LOAD_PATH.unshift "#{gem}/lib" }
# Print the vaportrail of a ruby file in a git repo, i.e.,
# the complexity level at each commit.
#
# Requires: >= bash ?.?
# >= git 1.7.1
# >= ruby 1.9.2
# >= flog 2.5.0
# >= gruff 0.3.6
#
@dpick
dpick / vigenere
Created March 16, 2011 19:20
Algorithm to decrypt ciphertext created using a vigenere cipher
key_length = key_length_guess(ciphertext)
dot_values, shift_values = [ ], [ ]
1.upto(key_length).each do |start_letter|
letter_frequency_array = ciphertext.every_nth_letter(key_length, start_letter).letter_frequencies
dot_values << letter_frequency_array.dot_product(ENGLISH_FREQUENCIES)
1.upto(ENGLISH_FREQUENCIES.size - 1).each do |i|
user.restaurants << Restaurant.new(:name => params[:name]) unless user.restaurants.inject { |bool, rest| bool ||= true if rest.name == params[:name] }
before(:each) do
@key = "0111111101001001110000101000001100011100000011101111010011101001".split("").map { |i| i.to_i }
@text = "0101010101010101010101010101010101010101010101010101010101010101".split("").map { |i| i.to_i }
@text_bitfield = BitField.new(@text)
@right = @text_bitfield.right
@left = @text_bitfield.left
@keys = KeySchedule.sub_keys(@key)
end
<html>
<head>
<style type="text/css">
div.ex
{
/* for firefox, safari, chrome, etc. */
-webkit-transform: rotate(-15deg);
-moz-transform: rotate(-15deg);
/* for ie */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
require 'rubygems'
require 'parslet'
class Mini < Parslet::Parser
root(:lines)
rule(:lines) { line.repeat }
rule(:line) { (title | ingredient | step) >> newline.maybe }