Skip to content

Instantly share code, notes, and snippets.

@jjb
jjb / gist:979da7562e3b46ea456bbe38e350cc72
Created July 12, 2021 12:19
Blocking Outbrain and Taboola in /etc/hosts
127.0.0.1 paid.outbrain.com traffic.outbrain.com www.outbrain.com outbrain.com vrt.outbrain.com amplify.outbrain.com outbrainimg.com widgets.outbrain.com taboola.com
@jjb
jjb / file.sh
Last active February 7, 2022 07:04
How to build a Dockerfile and open a shell in it
# "foo" is not a placeholder, it's a name that needs to be given
# this exact command will work if a Dockerfile is present
docker build -t foo . && docker run -it foo
# if you want to force creation of an amd64 image when on an M1/arm64 Mac
docker build --platform linux/amd64 -t foo . && docker run -it foo
# if your container doesn't have a shell as an entrypoint
# e.g. node:@latest
docker build --platform linux/amd64 -t foo . && docker run -it --entrypoint bash foo
sudo port selfupdate
sudo port install shared-mime-info
sudo mkdir -p /usr/local/share/mime/packages/
sudo ln -s /opt/local/share/mime/packages/freedesktop.org.xml /usr/local/share/mime/packages
# minimal test to see if it's working - if it is, now include in Gemfile like normal
gem install mimemagic -v '0.3.7' --source 'https://rubygems.org/'
ObjectSpace.each_object(File) do |f|
unless f.closed?
printf "%s: %d\n", f.path, f.fileno
end
end
@jjb
jjb / dns.rb
Last active January 8, 2021 14:16
#!/usr/bin/ruby
# save in ~/bin/dns and chmod 755
unless ARGV[0]
print `networksetup -getdnsservers Wi-Fi`
exit
end
servers = case ARGV[0]

This recipe is a work in progress and has never been run as-is.

  • timeouts are in ms
  • lock timeout: in postgres, when a statement that wants a restrictive lock waits on another lock, other statements that want locks can't jump the queue. so even though the statement that is waiting might only take a very short amount of time, when it starts running, while it is waiting no other statements can begin. So we set the lock timeout pretty low and retry if we don't get it.
  • statement timeout: we set a short statement timeout before statements which do lock and which we expect to take a short amount of time, just in case something about our assumptions/understanding is wrong and the statement ends up taking a long time. if this happens the statement will bail early without causing harm, and we can investigate what is wrong with

Here's something I spent a long time debugging, so I'm making this gist to help others find the solution when searching.

Summary

postgres 12 on MacOS will cause crashes when forking. The solution is to do one of these two things:

  • add gssencmode: "disable" to database.yml
  • if using homebrew: uninstall postgres, update homebrew, reinstall postgres

Here's some discussion:

test results for https://github.com/puma/puma/pull/2228
run 1 - nothing
273.3 MB
27.4 MB
27.3 MB
27.3 MB
27.3 MB
27.3 MB
lines = `find . -name '*.rb'`.split("\n")
problems = []
lines.each_slice(100) do |slice|
threads = []
slice.each do |l|
threads << Thread.new do
result = `ruby -c #{l}`
if "Syntax OK" == result.strip
print "."
class GraphqlController < ApplicationController
def create
ScoutApm::Transaction.rename("Graphql/" + params["_json"].first["operationName"])