As configured in my dotfiles.
start new:
tmux
start new with session name:
| For each Ruby module/class, we have Ruby methods on the left and the equivalent | |
| Clojure functions and/or relevant notes are on the right. | |
| For clojure functions, symbols indicate existing method definitions, in the | |
| clojure namespace if none is explicitly given. clojure.contrib.*/* functions can | |
| be obtained from http://github.com/kevinoneill/clojure-contrib/tree/master, | |
| ruby-to-clojure.*/* functions can be obtained from the source files in this | |
| gist. | |
| If no method symbol is given, we use the following notation: |
| # | |
| # Get development tools installed | |
| # | |
| sudo yum install -y git cvs zlib-devel | |
| sudo yum groupinstall -y "Development Tools" | |
| # | |
| # Install RVM | |
| # | |
| bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) |
| # 1) Put 's3' gem in Gemfile. | |
| # 2) Create as3.yml configuration for S3 | |
| # 3) Create initializer for as3.yml | |
| # 4) Make "assets" folder inside your bucket | |
| # 5) After running task run "RAILS_ENV=production rake assets:precompile" | |
| # 6) Invoke task by running "rake as3:upload" | |
| namespace :as3 do | |
| desc "Uploads compiled assets (public/assets) to Amazone AS3" | |
| task :upload do |
| require 'eventmachine' | |
| require 'socket' | |
| require 'kgio' | |
| server = Kgio::TCPServer.new('0.0.0.0', 4242) | |
| module Dispatch | |
| def notify_readable | |
| io = @io.kgio_tryaccept or return | |
| EventMachine.attach(io, Server) |
| Vagrant::Config.run do |config| | |
| # ... | |
| config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] | |
| end |
| # Do you ever define #method_missing and forget #respond_to? I sure | |
| # do. It would be nice if we could do them both at the same time. | |
| module MatchMethodMacros | |
| def match_method(matcher, &method_body) | |
| mod = Module.new do | |
| define_method(:method_missing) do |method_name, *args| | |
| if matcher === method_name.to_s | |
| instance_exec(method_name, *args, &method_body) | |
| else |
| module WebmachineExample | |
| # GET /notes/1 | |
| # returns a 404 | |
| # GET /notes/2 | |
| # returns a 200 | |
| # POST /notes | |
| # with an invalid content type | |
| # returns a 415 | |
| # does not set the location |
| class Optipng < Nanoc3::Filter | |
| identifier :optipng | |
| type :binary | |
| def run(filename, params={}) | |
| system( | |
| 'optipng', | |
| '-quiet', | |
| '-o', params[:level].to_s, | |
| filename, |
As configured in my dotfiles.
start new:
tmux
start new with session name:
Orien is correct, it is the fork() system call triggered by ProcessBuilder or Runtime.exec or other means of the JVM executing an external process (e.g. another JVM running ant, a git command, etc.).
There have been some posts on the Jenkins mailing lists about this: Cannot run program "git" ... error=12, Cannot allocate memory
There is a nice description of the issue on the SCons dev list: fork()+exec() vs posix_spawn()
There is a long standing JVM bug report with solutions: Use posix_spawn, not fork, on S10 to avoid swap exhaustion. But I'm not sure if this actually made it into JDK7 as the comments suggest was the plan.
In summary, on Unix-like systems, when one process (e.g. the JVM) needs to launch another process (e.g. git) a system call is made to