Required tools for playing around with memory:
hexdumpobjdumpreadelfxxdgcore
| class Array | |
| def heapsort! | |
| #heapify | |
| 1.upto(self.length - 1) do |i| | |
| #move up | |
| child = i | |
| while child > 0 | |
| parent = (child - 1) / 2 | |
| if self[parent] < self[child] | |
| self[parent], self[child] = self[child], self[parent] |
| Latency Comparison Numbers (~2012) | |
| ---------------------------------- | |
| L1 cache reference 0.5 ns | |
| Branch mispredict 5 ns | |
| L2 cache reference 7 ns 14x L1 cache | |
| Mutex lock/unlock 25 ns | |
| Main memory reference 100 ns 20x L2 cache, 200x L1 cache | |
| Compress 1K bytes with Zippy 3,000 ns 3 us | |
| Send 1K bytes over 1 Gbps network 10,000 ns 10 us | |
| Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD |
| #!/usr/bin/env ruby | |
| # -*- coding:utf-8 -*- | |
| require 'socket' | |
| require 'openssl' | |
| require 'timeout' | |
| require 'pp' | |
| include OpenSSL | |
| timeout=15 |
| # ruby-2.5.0 | |
| user system total real | |
| YAML 15.112795 0.030577 15.143372 ( 15.190573) | |
| JSON 0.648957 0.001520 0.650477 ( 0.652856) | |
| Marshal 0.474775 0.000922 0.475697 ( 0.477678) | |
| MessagePack 0.326430 0.001763 0.328193 ( 0.330159) | |
| # ruby-2.4.3 | |
| user system total real | |
| YAML 20.400000 0.050000 20.450000 ( 20.517600) |
| # Pass in an enumeration of data and | |
| # (optionally) a block to extract the grouping aspect of the data. | |
| # | |
| # Optional: sort_by lambda (operates on group key and count) | |
| # | |
| def puts_hist(data, sort_by:nil, &blk) | |
| data = data.map(&blk) if blk | |
| counts = data.each_with_object(Hash.new(0)) {|k,h| h[k]+=1} | |
| max = counts.values.max | |
| width = Pry::Terminal.size!.last |
| package main | |
| import ( | |
| "bytes" | |
| "encoding/gob" | |
| "fmt" | |
| "github.com/ugorji/go/codec" | |
| "io/ioutil" | |
| "labix.org/v2/mgo" | |
| "labix.org/v2/mgo/bson" |
| #!/bin/bash | |
| # Slack notification script for Munin | |
| # Mark Matienzo (@anarchivist) | |
| # | |
| # To use: | |
| # 1) Create a new incoming webhook for Slack | |
| # 2) Edit the configuration variables that start with "SLACK_" below | |
| # 3) Add the following to your munin configuration: | |
| # |
| require 'benchmark/ips' | |
| Benchmark.ips do |x| | |
| SingleFilterStruct = Struct.new(:method, :values) do | |
| def call(value) | |
| Array(value).any? { |v| v.send(method, *values) } | |
| end | |
| end | |
| class SingleFilterClass |
| #!/usr/bin/env bash | |
| declare -i last_called=0 | |
| declare -i throttle_by=2 | |
| @throttle() { | |
| local -i now=$(date +%s) | |
| if (($now - $last_called >= $throttle_by)) | |
| then | |
| "$@" |