Skip to content

Instantly share code, notes, and snippets.

Rob Miller robmiller

Block or report user

Report or block robmiller

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View 12s.rb
#!/usr/bin/env ruby
#
# Solutions to Diamond Geezer's "the digits of the year 2019 add up to twelve" puzzles:
# http://diamondgeezer.blogspot.com/2019/01/the-digits-of-year-2019-add-up-to-twelve.html
def main
# a) How many years ago did this last happen?
a = 2019 - 2018.downto(0).find { |year| sum_digits(year) == 12 }
# b) In what year?
b = 2018.downto(0).find { |year| sum_digits(year) == 12 }
@robmiller
robmiller / spider
Created May 9, 2018
Outputs all of the URLs of pages on a given site
View spider
#!/bin/bash
#
# spider
#
# Author: Rob Miller <rob@bigfish.co.uk>
#
# Outputs all of the HTML pages on a given domain.
wget -r -nd --delete-after -w 1 "$1" 2>&1 |
@robmiller
robmiller / sort-domains.rb
Created Feb 13, 2018
Sort a list of hostnames so that www. versions show up next to non-www. versions of the same domain
View sort-domains.rb
#!/usr/bin/env ruby
#
# Sometimes you want to sort a list of hostnames/domains and want
# example.com to sort next to www.example.com. This does that.
#
# Author: Rob Miller <r@robm.me.uk>
#
# Usage:
#
# $ cat foo.txt | sort-domains
@robmiller
robmiller / smog.rb
Created Jan 5, 2018
A Ruby implementation of SMOG (Simple Measure of Gobbledygook) scoring for measuring text complexity.
View smog.rb
#!/usr/bin/env ruby
#
# Calculates the SMOG (Simple Measure of Gobbledygook) score for a given
# piece of text. A CLI utility that could very easily be adapted into
# a library if I could be be bothered.
#
# More on SMOG: https://en.wikipedia.org/wiki/SMOG
#
# Author: Rob Miller <r@robm.me.uk>
#
@robmiller
robmiller / ssl-expiry.rb
Created Oct 23, 2017
ssl-expiry: displays the expiry date of SSL certificates associated with any domains passed on the command line
View ssl-expiry.rb
#!/usr/bin/env ruby
#
# ssl-expiry
#
# Author: Rob Miller <rob@bigfish.co.uk>
#
# For a given domain or domains, checks to see if an SSL certificate is
# present; if one is, outputs the date of its expiry.
#
# Usage:
@robmiller
robmiller / sitemap.rb
Created Sep 22, 2017
Fetch a sitemaps.org-compatible sitemap file and output all of its URLs on the command-line
View sitemap.rb
#!/usr/bin/env ruby
#
# sitemap
#
# Author: Rob Miller <rob@bigfish.co.uk>
#
# Fetches and parses a sitemaps.org-compatible sitemap file, outputting
# all of the URLs stored in it; useful to start a spidering process, or
# to generate a list of URLs to later redirect.
#
@robmiller
robmiller / ssl-check.rb
Last active Aug 16, 2017
ssl-check: checks for expiring SSL certificates. Useful for piping into Slack on a cron
View ssl-check.rb
#!/usr/bin/env ruby
#
# ssl-check
#
# Checks for expiring SSL certificates, specified on the command line.
#
# Usage:
#
# $ ssl-check hosts.txt
#
@robmiller
robmiller / urls.sh
Last active Sep 26, 2017
Find all unique URLs on a website. Sort them. Output them in nginx rewrite format. Useful when replacing an old website to make sure there are as few 404s as possible
View urls.sh
# Change example.com to the correct host
wget -r -nd --delete-after -w 0.5 'http://www.example.com/' 2>&1 |
grep -B3 text/html |
grep -B2 '200 OK' | egrep 'https?://' |
cut -d' ' -f3- |
sort | uniq |
ruby -ane 'puts "rewrite ^#{$_.strip.sub(%r{^https?://[^/]+/}, "/")}$ / permanent;"'
View euro2016.rb
#!/usr/bin/env ruby
require "json"
require "open-uri"
json = open("http://api.football-data.org/v1/soccerseasons/424/fixtures").read
fixtures = JSON.parse(json)
fixtures = fixtures["fixtures"]
@robmiller
robmiller / wait-rs-server.rb
Last active May 10, 2016
Wait for a Rackspace cloud server to build
View wait-rs-server.rb
#!/usr/bin/env ruby
require "fog"
hostname = ARGV.fetch(0)
compute = Fog::Compute.new(
provider: "Rackspace",
rackspace_api_key: ENV.fetch("RACKSPACE_API_KEY"),
rackspace_username: ENV.fetch("RACKSPACE_USERNAME"),
You can’t perform that action at this time.