Skip to content

Instantly share code, notes, and snippets.

View dcparker's full-sized avatar

Daniel Parker dcparker

View GitHub Profile
@dcparker
dcparker / icalendar.rb
Created January 6, 2009 20:32
ICAL file parser in Ruby
require 'net/http'
require 'uri'
require 'time'
class Time
def self.gcalschema(tzid) # We may not be handling Time Zones in the best way...
tzid =~ /(\d\d\d\d)(\d\d)(\d\d)T(\d\d)(\d\d)(\d\d)Z/ ? # yyyymmddThhmmss
# Strange, sometimes it's 4 hours ahead, sometimes 4 hours behind. Need to figure out the timezone piece of ical.
# Time.xmlschema("#{$1}-#{$2}-#{$3}T#{$4}:#{$5}:#{$6}") - 4*60*60 :
Time.xmlschema("#{$1}-#{$2}-#{$3}T#{$4}:#{$5}:#{$6}") :
@dcparker
dcparker / killCRLF.rb
Created March 5, 2009 21:23
File tree crawler example.
#!/usr/bin/ruby
class WalkDirTree
def each_file(&block)
raise ArgumentError unless block_given?
@each_file = block
end
def walk!(dir='.')
current_directory = Dir.pwd
@dcparker
dcparker / rubygems.rb
Created March 16, 2009 20:46
Rubygems sandboxer for Merb.
local_rubygems = !!($:[0] == '.')
$:.shift if local_rubygems # Takes off the extra '.' put on the beginning. Now the next line will require the real rubygems
# Now require the REAL rubygems.
# (we're going to FREEZE it next)
load 'rubygems.rb'
$:.unshift('.') if local_rubygems
module Gem
Sandbox = {
'merb-core' => '=0.9.7',
@dcparker
dcparker / ftps_implicit.rb
Created March 25, 2009 18:47
ftps_implicit for Ruby
require 'socket'
require 'openssl'
require 'net/ftp'
class Net::FTPS < Net::FTP
end
class Net::FTPS::Implicit < Net::FTP
FTP_PORT = 990
@dcparker
dcparker / msaccess_adapter.rb
Created April 27, 2009 01:27
msaccess_adapter.rb for an older version of ActiveRecord
require 'active_record/connection_adapters/abstract_adapter'
require 'bigdecimal'
require 'bigdecimal/util'
# msaccess_adapter.rb -- ActiveRecord adapter for Microsoft Access Db
#
# "Adapted" from the sqlserver_adapter.rb for Microsoft SQL Sever:
# Author: Joey Gibson <joey@joeygibson.com>
#
@dcparker
dcparker / git-clone-branch
Created May 1, 2009 15:44
Clone a git repo, checking out a specific branch.
# First, mkdir name & chdir name
git init
git remote add -t $2 origin $1
git fetch
git checkout --track -b $2 origin/$2
@dcparker
dcparker / sample_ruby_webserver.rb
Created August 11, 2009 17:19
Mini Ruby web server example!
require 'socket'
socket = TCPServer.new('0.0.0.0', '8080')
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1)
loop do
client = socket.accept
data = ''
loop do
event = select([client],nil,nil,0.5)
if client.eof? # Socket's been closed by the client
@dcparker
dcparker / String.random.rb
Created August 11, 2009 18:37
String.random
String::ALPHANUMERIC_CHARACTERS = ('a'..'z').to_a + ('A'..'Z').to_a
def String.random(size)
length = String::ALPHANUMERIC_CHARACTERS.length
(0...size).collect { String::ALPHANUMERIC_CHARACTERS[Kernel.rand(length)] }.join
end
@dcparker
dcparker / gist:184654
Created September 10, 2009 17:01 — forked from jonmagic/gist:184641
Convert TIFF file to PDF and email it via gmail.
#!/usr/bin/perl -w
# Small program to process a tiff file into a PDF and email it via gmail.
#
# Distributed under the terms of the GNU General Public License (GPL) Version 2
# Copyright 2005 by Rob Thomas (xrobau@gmail.com)
# Additions:
# 2009 Sept 10: Modified to use Gmail (Daniel Parker <daniel@behindlogic.com>)
use Net::SMTP::SSL;
@dcparker
dcparker / mategem
Created September 15, 2009 15:53
mategem command. Opens any rubygem or ruby library file in TextMate.
#!/usr/bin/env ruby
# mategem (bash command)
require 'rubygems'
gemname = ARGV[0]
paths = $:.to_a.dup
begin
gem gemname
new_paths = $:.to_a.dup - paths