Skip to content

Instantly share code, notes, and snippets.

@wstucco
wstucco / one_million_processes.exs
Last active September 27, 2017 15:18
One million threads VS one million Erlang processes
defmodule Processes do
@compile :native
def create_and_forget do
1..1_000_000
|> Enum.each(fn x ->
Task.async(fn -> x + 1 end) |> Task.await
end)
IO.puts("Maximum number of threads per process is = 1000000")
defmodule A do
use GenServer
def start do
GenServer.start_link(__MODULE__, [])
end
def send_after(pid) do
1..10
|> Enum.each(fn _ -> Process.send_after(pid, :message, 1_000) end)
defmodule App do
def bench do
:timer.tc(fn -> start() end)
end
defp start do
run()
wait()
end
@wstucco
wstucco / main.rb
Last active May 28, 2019 00:24
Opal Meteor
if Meteor.client?
user = User.new('Admin')
puts user
puts user.admin?
puts "hello from client #{user.name}!"
end
if Meteor.server?
user = User.new('Massimo')
puts user
@wstucco
wstucco / NumberParser.ex
Created March 19, 2020 16:34
NimbleParser excercise: parse numbers in "it_IT" locale format
defmodule NumberParser do
import NimbleParsec
@moduledoc """
In most European countries decimal separator is the , (comma)
This is a simple parser for numbers formatted that way
"""
nat = integer(min: 1)
sep = string(",")
defmodule Brainfuck do
# opcodes
@op_vinc "+" # increment value at memory address
@op_vdec "-" # decrement value at memory address
@op_pinc ">" # increment memory address
@op_pdec "<" # decrement memory address
@op_putc "." # output byte at memory address
@op_getc "," # input byte into memory address
@op_lbeg "[" # loop begin