Skip to content

Instantly share code, notes, and snippets.

@tompave
tompave / async_rake.rb
Last active July 5, 2023 17:13
how to run rake tasks asynchronously from controllers by spawning child processes
class ApplicationController < ActionController::Base
private
# Runs a rake task asyncronously in a child process
#
# for example, in any controller:
# async_rake("async:import_fixtures")
# async_rake("db:maintenance:cleanup", table: "things", ids: [12, 114, 539])
#
@tompave
tompave / nginx.conf
Last active August 15, 2022 10:18
commented nginx.conf for Ruby on Rails
# A commented nginx configuration file for Ruby on Rails
#
# Author: Tommaso Pavese
# tommaso@pavese.me
# http://tommaso.pavese.me
#
# License: http://www.wtfpl.net/
#
#
# Tested with:
@tompave
tompave / actors_and_messages.rb
Created November 10, 2018 18:43
Actors and Messages in Ruby
require "colorize"
REGISTRY = {}
DEBUG = false
SLEEP = 0.5
def register(id)
mailbox = Queue.new
Thread.current[:process_id] = id
REGISTRY[id] = mailbox
@tompave
tompave / thread_memory_overhead.rb
Created March 14, 2018 11:13
Find the memory overhead of threads in Ruby
def memory_kb
`ps -o rss= -p #{Process.pid}`.chomp.to_i
end
MEM_LOG = "current memory: %{mem} kB (+%{incr})".freeze
THR_LOG = "New Thread!".freeze
current_mem = 0
loop do
m = memory_kb()
@tompave
tompave / timing.exs
Last active August 20, 2016 15:44
Fun with Elixir macros and Streams
defmodule Timing do
def now do
:os.system_time(:milli_seconds)
end
# broken! the block is executed immediately
#
def ftime([do: block]) do
t0 = now
{ :ok, block, now - t0 }
@tompave
tompave / middleman_build.sh
Last active May 30, 2016 18:02
Build a Middleman site and commit it to an orphan master branch, see the related blog post for the setup: http://tommaso.pavese.me/2016/05/22/how-to-deploy-a-middleman-website-to-github-pages/
#!/bin/bash
middleman build &&
echo "--- middleman build complete"
git checkout master &&
echo "--- cleaning old build"
(ls -1 | grep -v 'build' | xargs rm -rf ) &&
require 'digest/md5'
require 'base32'
require 'rqrcode'
require 'rotp'
def print_as_qr(string)
qrcode = RQRCode::QRCode.new(string)
filename = File.expand_path "~/Desktop/qr_#{rand(10_000)}.png"
qrcode.as_png.save(filename, :fast_rgb)
end
@tompave
tompave / mark_red_rouge.rb
Last active January 4, 2016 15:29
simple markdown script. It uses Redcarpet for markdown and Rouge for code syntax highlighting.
#! /usr/bin/env ruby
# Author: Tommaso Pavese
# tommaso@pavese.me
# www.wonderingmachine.com
#
# Simple script for markdown using:
#
# Redcarpet: https://github.com/vmg/redcarpet
# Rouge: https://github.com/jayferd/rouge
#define ENDPOINT_URL @"http://www.myawesomeserver.com/data/images"
// elsewhere: we will need this to send the request asynchronously
self.httpQueue = [[NSOperationQueue alloc] init];
/**
* upload method
*/
- (void)uploadImage:(UIImage*)image withImageName:(NSString*)imageName andParams:(NSDictionary*)paramsDict
@tompave
tompave / simple_redirect_server.rb
Last active December 21, 2015 07:59
A simple ruby HTTP server that listens on 127.0.0.1:80 and redirects all requests to a specific URL.
#! /usr/bin/env ruby
require 'webrick'
require 'uri'
TARGET_URL = URI.parse "http://tommaso.pavese.me/back_to_work/"
redirect_callback = Proc.new do |request, response|
response.set_redirect WEBrick::HTTPStatus::TemporaryRedirect, TARGET_URL