Skip to content

Instantly share code, notes, and snippets.

View jemc's full-sized avatar

Joe Eli McIlvain jemc

  • TheoremOne
  • Cascadia
View GitHub Profile
#!/usr/bin/bash
##
# In Pony 0.16.0, we introduced a breaking syntax change that affects all calls
# to partial functions (functions that can raise an error).
#
# All partial function calls are now required to be followed by a question mark.
#
# For example, `iterator.next()` is now `iterator.next()?`, providing a visual
# indication at the call site of any places where an error may be raised.
@jemc
jemc / unreachable.pony
Created February 13, 2017 19:57
A pattern for dealing with unreachable conditions in Pony.
class Unreachable
new create(value: (Stringable | None) = None, loc: SourceLoc = __loc) =>
@printf[I32](
"ABORT: Unreachable condition at %s:%zu (in %s method)\n".cstring(),
loc.file().cstring(), loc.line(), loc.method().cstring())
if value isnt None then
@printf[I32]("%s\n".cstring(), value.string().cstring())
end
@jemc
jemc / inbox.pony
Last active September 10, 2016 05:33
use "collections"
use "debug"
interface tag InboxTarget[M: Any val]
be process(m: M)
actor Inbox[M: Any val]
"""
An inbox that holds the latest posted message of type M,
forwarding the message to the current target if and when the target is ready.

Keybase proof

I hereby claim:

  • I am jemc on github.
  • I am jemc (https://keybase.io/jemc) on keybase.
  • I have a public key whose fingerprint is 8538 31C7 196B A075 1208 3EE4 9C0F CEC6 60C9 F1E8

To claim this, I am signing this object:

# List all mnesia tables used in the server.
rabbitmqctl eval 'mnesia:system_info(tables).'
# => [rabbit_exchange_type_consistent_hash,mirrored_sup_childspec,gm_group,
# rabbit_queue,rabbit_durable_queue,rabbit_runtime_parameters,
# rabbit_exchange_serial,rabbit_exchange,rabbit_durable_exchange,
# rabbit_topic_trie_binding,rabbit_topic_trie_edge,rabbit_topic_trie_node,
# rabbit_reverse_route,rabbit_route,rabbit_semi_durable_route,
# rabbit_durable_route,rabbit_listener,rabbit_vhost,rabbit_user_permission,
# rabbit_user,schema]
@jemc
jemc / oa.pony
Created May 18, 2016 21:22 — forked from SeanTAllen/oa.pony
Pony Solution to the Expression Problem Using Object Algebras see http://i.cs.hku.hk/~bruno/oa/ for more info
interface ExpAlg[E]
fun lit(x: I32): E
fun add(e1: E, e2: E): E
interface Eval
fun eval(): I32
interface EvalExpAlg
fun lit(x: I32): Eval val =>
recover
@jemc
jemc / pipe.pony
Created March 18, 2016 20:11
Pony example of just piping stdin to stdout.
actor Main
let env: Env
new create(env': Env) =>
env = env'
env.input(notify())
be print(data: ByteSeq val) =>
env.out.print(data)
fun tag notify(): StdinNotify iso^ =>
@jemc
jemc / .mtpz-data
Created December 30, 2015 19:50
$HOME/.mtpz-data (extra data for libmtp MTPZ implementation)
10001
b1ce711c1e1b468784a08490d5962216
cad0d4c357342dd7ad959a5029d3d316972b9b9fe234f08ba7b6bff3b522505b16f52d218c693597b2840f90807a7f77899d7454dbc2011724d45603a136682c3b4fa43a21b201ff3d8efe16cdda5ea6d225dd74c68d09b84536d3b2292beb83d1d0dbb692261eeb2ebefeb21b1836c7e19864f4198ce84fe2033fbefcd377e5
79ee227b6da9c905a92e0f9fb205cf19fdb811cf85471e765755df00bd1cec025742fee6f46b2bf50f35a5c5d1f7d33a2259aede755fa5182ce41af203b199de2ba5cf801fcb4c8863b3c40cfdb18c9985ddad8710618802fd8969127c5f0fd52931f74a11082e27890cfbd11ae21b3611e54212d9e4269801f84d4f7e4ea601
02000001350100000000b501000000010000000000000000000000000000000000125a756e6520536f6674776172652043412031000100010080336ee6aa07bfb3ffd04024cec38be6497ef60e3d7f682e0ff15e6c65ff613bde176fad7137884e80a813cf53c3101aa51b9e4f54b24fd514cdc509b6b71e1f48513df06444d9b55963e8121c4c69b67d6a1314f973c9585c29bb990ad7fd151dbbcb4f9ed7dfe292ba4ed9c6acf58e6adeef5b877a1c1545742634916946459b094b259ed85ef02b08a318e67afd68c289a8c6a61bc8023ca87fe367bdcc0856c3d15758c866e53fb52e86ec569c9c070a2
@jemc
jemc / supervisor.rb
Last active November 22, 2017 21:31
Controlling supervisord from Ruby using XMLRPC over Unix sockets.
require "net/http"
require "socket"
gem "libxml-xmlrpc"
require "xml/libxml/xmlrpc"
module Supervisor
class << self
attr_accessor :socket_path
@jemc
jemc / docker_rabbitmqctl.md
Last active September 18, 2021 06:07
Controlling Docker RabbitMQ via rabbitmqctl

Example invocation of a RabbitMQ docker container (use -d instead of -t -i to run in the background):

sudo docker run -t -i --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

Example of controlling the rabbitmq-server inside the container using rabbitmqctl (also inside the container).

sudo docker exec rabbitmq su rabbitmq -- /usr/lib/rabbitmq/bin/rabbitmqctl status