I thought i might throw out some simple examples of using regexes with ruby for when i forget
command = `mpstat -P ALL`
regex = /(?<NAME0>load)\s+average:\s+(?<NAME1>\S+),\s+(?<NAME2>\S+),\s+(?<NAME3>\S+)/x
result = command.match(regex)
# Print your regex
puts " #{result['NAME0']} #{result['NAME1']} #{result['NAME2']} #{result['NAME3']}"
#or
puts " #{result[1]} #{result[2]} #{result[3]} #{result[4]}"
annndd… something more complicated in context of something else
#!/usr/bin/env ruby
require "getopt/long"
require 'socket'
opt = Getopt::Long.getopts(
["--server", "-s", Getopt::REQUIRED],
["--port", "-p", Getopt::REQUIRED],
["--environment", "-e", Getopt::REQUIRED]
)
unless opt["s"] and opt["p"] and opt["e"]
unless opt["p"] =~ /\d+/
currentFile = File.basename(__FILE__)
puts "usage: ./#{currentFile} -s graphiteServer -p graphitePort -e siteEnvironment"
puts "usage: ./#{currentFile} -s someserver -p 2003 -e dev"
exit 1
end
end
statprefix = 'stats'
hostname = `hostname`.chomp
command = `mpstat -P ALL`
epoch = (Time.now.to_i).to_s
graphiteServer = opt["s"]
graphitePort = opt["p"]
siteEnv = opt["e"]
regexTitles = /(?<TITLEID>CPU\s.*)/x
partsTitle = command.match(regexTitles)
partsTitle = partsTitle['TITLEID'].split
regex = /(?<CPUID>all.*)/x
parts = command.match(regex)
parts = parts['CPUID'].split
hash = Hash[partsTitle.zip(parts)]
sock = TCPSocket.new(graphiteServer, graphitePort)
hash.each_pair do |title,value|
title = title.sub(/^\%/,"")
sock.puts "#{statprefix}.#{siteEnv}.#{hostname}.cpu.all.#{title} #{value} #{epoch}"
end
sock.close
If you just want to have a good ol time then play this game.
Slots is basically the easiest game, where you don’t really have to implement any gaming tactics, you just need to trust that luck is on your side and that you will be able to sweep in the cash at the end of a few rounds. Find some Unicorn cupcake toppers or an edible image of one of these magical horned horses to put on your birthday cake.