Skip to content

Instantly share code, notes, and snippets.

View shunwen's full-sized avatar
🐢

shunwen shunwen

🐢
View GitHub Profile
// XPath CheatSheet
// To test XPath in your Chrome Debugger: $x('/html/body')
// http://www.jittuu.com/2012/2/14/Testing-XPath-In-Chrome/
// 0. XPath Examples.
// More: http://xpath.alephzarro.com/content/cheatsheet.html
'//hr[@class="edge" and position()=1]' // every first hr of 'edge' class
@shunwen
shunwen / Vagrantfile_example.rb
Last active August 26, 2018 00:37
Vagrant up with chef client
Vagrant.configure("2") do |config|
config.vm.hostname = "NODE NAME" # will be the node name on chef-server.
config.vm.box = "BOX NAME"
config.vm.box_url = "BOX IMAGE DOWNLOAD URL WHEN BOX DOES NOT EXIST"
config.vm.boot_timeout = 180 # Raise error when bootup takes too long
config.omnibus.chef_version = :latest # Use the latest chef version on this box
#config.vm.network :private_network, ip: "33.33.33.10" # THIS CAUSES SSH PROBLEM, remove it
def foo
some_function(true, { :before => {a: 1},
:after => {b: 2} })
call_block { do_something }
end
def bar
case @var
when 1
print [1..42]
@shunwen
shunwen / ssl_puma.sh
Created June 24, 2017 03:17 — forked from tadast/ssl_puma.sh
localhost SSL with puma
# 1) Create your private key (any password will do, we remove it below)
$ cd ~/.ssh
$ openssl genrsa -des3 -out server.orig.key 2048
# 2) Remove the password
$ openssl rsa -in server.orig.key -out server.key
require 'flickraw'
require 'mini_magick'
require 'parallel'
def get_photo_urls_from_photoset(flickr, photoset_id)
total_pages = nil
current_page = 1
urls = []
opts = {
photoset_id: photoset_id,
name 'base'
description 'Create users and sudoers, configure ssh, set timezone and swap'
run_list "recipe[apt]", "recipe[user::data_bag]", "recipe[base::bootstrap]",
"recipe[build-essential]", "recipe[git]"
default_attributes(
users: ['config'],
authorization: {
sudo: {
mkdir test_prj
cd test_prj
berks init
create Berksfile
create Thorfile
create .gitignore
run git init from "."
create Gemfile
create Vagrantfile
# See http://docs.opscode.com/config_rb_knife.html for more information on knife configuration options
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "YOUR OPSCODE USERNAME" # The actual name will be set when provisioning
client_key "#{ENV['HOME']}/.chef/USERNAME.pem"
validation_client_name "ORGANIZATION_NAME-validator"
validation_key "#{ENV['HOME']}/.chef/ORGANIZATION_NAME-validator.pem"
chef_server_url "https://api.opscode.com/organizations/ORGANIZATION_NAME"
@shunwen
shunwen / log_json_to_csv.rb
Created September 9, 2013 08:18
Replace Rails log with json format, then convert each json entries from the log file to csv.
require 'json'
require 'csv'
SAMPLE_DATA = {"key1": "value1", "key2": "value2", "key3": "value3"}
headers = JSON.parse(SAMPLE_DATA).keys
input_lines = File.readlines "path/to/log/file"
parsed_line = 0
csv_file = CSV.open "path/to/file.csv", "w"
module RomanNumeral
VALUES_OF_LETTERS = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000 }
MODERN_ROMAN_PATTERNS = { CM: 900, CD: 400, XC:90, XL: 40, IX: 9, IV: 4 }
def self.i_to_old_roman int
i_to_roman int, VALUES_OF_LETTERS
end
def self.i_to_modern_roman int