Skip to content

Instantly share code, notes, and snippets.

View phillipoertel's full-sized avatar

Phillip Oertel phillipoertel

View GitHub Profile
require 'open-uri'
`mkdir files`
URL = 'https://www.cia.gov/library/abbottabad-compound/index_video.html'
html = URI.open(URL).read
files = html.scan(/"\.(.*Jerry.*\.rm(vb)?)">/i)
urls = files.map { |a| URL.gsub('/index_video.html', a.first) }
module Cs
module Hanami
class PathResolver
def self.call(env)
new.call(env)
end
def call(env)
path = env['REQUEST_URI'].split('?').first # path without query string
return 'root' if path == '/'
@phillipoertel
phillipoertel / omegametrix.pl
Last active November 29, 2019 11:09
Perl script to submit Omegametrix' test results to Cerascreen
sub sendFTPs($) {
my $lftpfile = shift;
# apt install liblwp-protocol-https-perl libfile-slurp-perl
use HTTP::Request qw();
use HTTP::Headers qw();
use LWP::UserAgent ();
use File::Slurp qw(read_file);
# Cerascreen hostnames:
created_organizations = {}
MedlineOrganization.find_each do |organization|
# ...
key = new_organization[:organization][:external_id]
if created_organizations[key]
print "x"
else
created_organizations[key] = zendesk_account.organizations.create(new_organization[:organization])
print "."
module Cm
module Shared
# Calculates a percentage of the amount passed in and returns it rounded to 2 decimals (i.e. cents),
# as a BigDecimal object.
#
# Some takeaways from "Invoices: How to properly round and calculate totals" (https://goo.gl/cHvuPa)
# - it is very easy to create invoices where numbers don't add up and a few cents are missing.
# - don't pass around unrounded values. Once you round, use the rounded value for all further totals.
# - the rounding of money amounts is *not* a matter of presentation, and should never happen in a view.
# - don't ever use the float data type in Ruby or MySQL for money
# Right now these checks add more noise than value; may change as the team grows.
CommitMsg:
ALL:
enabled: false
# Right now these checks add more noise than value; may change as the team grows.
PreCommit:
ALL:
enabled: false
PrePush:
RakeTarget:
require 'active_record'
require 'mysql2'
ActiveRecord::Base.establish_connection(adapter: :mysql2, username: 'root')
(Date.new(2000, 01, 01)..Date.new(2020, 12, 31)).each do |date|
mysql_week = ActiveRecord::Base.connection.execute("SELECT WEEK('#{date.to_s}', 3)").first.first
ruby_week = date.cweek
unless mysql_week == ruby_week
puts "Week numbers differ for date #{date} (mysql: #{mysql_week}, ruby: #{ruby_week})"
@phillipoertel
phillipoertel / csv_converters.rb
Created September 2, 2016 20:41
Ruby CSV library: using converters to clean up data
# given this CSV:
#
# agency_id;award_name;importance;years;description;ignore;is_further_award
# 5683;Deloitte Technology ;x;2014 2013;Fast 50 (2013), Fast 500 (2014);x;
#
# the following code will return:
#
# #<CSV::Row
# agency_id:5683
@phillipoertel
phillipoertel / test.rb
Last active April 26, 2016 11:10
test.rb
def hr
puts
puts '-' * 80
puts
end
# Number comparsion
def number_comparison(a, b)
difference = a - b
puts "#{a} is #{difference} larger than #{b}"