Skip to content

Instantly share code, notes, and snippets.

View fxn's full-sized avatar

Xavier Noria fxn

View GitHub Profile
module Simulation
# Clocks in a Linux system
# ========================
#
# A Linux system has two clocks: The hardware clock, and the system clock.
#
# The hardware clock, also known as RTC or real-time clock, is a physical
# clock. This clock runs always, even when the system is shut down or
# unplugged the clock keeps running because it has an independent source of
# power, normally a lithium battery. See
n = 3004953
start = n/2 + 1
play = [*start..n, *1...start]
while n > 1
play.shift
play << play.shift if n.odd?
n -= 1
end
// We use a circular double-linked list, and two pointers: one to the current player,
// and another one to their target, the player across the circle.
//
// By using a cicular list, API is intuitive.
//
// By using a double-linked list, deletion is cheap.
//
// By maintaining both pointers in each turn, we avoid seeks.
const (
@fxn
fxn / 01 main.rs
Last active August 23, 2021 15:13
Mandelbrot set generator from "Programming Rust", with ports to Crystal and Ruby.
// Mandelbrot set generator from "Programming Rust", with I/O removed (the
// original code writes a PNG file).
use std::env;
use std::str::FromStr;
use num::Complex;
fn main() {
let args: Vec<String> = env::args().collect();
require "concurrent"
class BatchWriter
MAX_BATCH_SIZE = 100
TIMER_OPTS = { execution_interval: 1, timeout_interval: 1 }.freeze
cattr_accessor :buffer
self.buffer = []
cattr_accessor :mutex
@fxn
fxn / sidekiq.rb
Last active March 15, 2021 13:37
Sidekiq.configure_server do |config|
config.on(:startup) do
BatchWriter.start_timer
at_exit do
BatchWriter.stop_timer
BatchWriter.flush
end
end
end
class LocationsJob < ApplicationJob
queue_as :high_priority
def perform(location)
BatchWriter.push(location)
end
end
queue = Queue.new
workers = Array.new(N) do
Thread.new do
while record = queue.pop
# insert record
end
end
end
records.each do |record|
# insert record
end