Skip to content

Instantly share code, notes, and snippets.

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
@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(",")
@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
defmodule App do
def bench do
:timer.tc(fn -> start() end)
end
defp start do
run()
wait()
end
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)
@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")
@wstucco
wstucco / find_similar_ip.ex
Last active July 21, 2017 09:51
most similar ip Elixir
{:ok, ips} = :inet.getif()
ips
|> Enum.map(fn {ip, _broadaddr, _mask} -> ip |> Tuple.to_list |> Enum.map_join(".", &to_string/1) end)
|> Enum.map(fn ip -> {ip, String.jaro_distance(ip, "192.168.99.100")} end)
|> Enum.sort(fn {_, score1}, {_, score2} -> score1 > score2 end)
|> List.first
|> elem(0)
@wstucco
wstucco / example-1.1.go
Last active December 27, 2015 01:59
I tried Go and I liked it
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
@wstucco
wstucco / git_rewrite_email
Last active December 17, 2015 08:28
change committer email and rewrite history
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "<email>" ];
then
GIT_COMMITTER_EMAIL="<new-email>";
GIT_AUTHOR_EMAIL="<new-email>";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
@wstucco
wstucco / require_valid_argument_1.php
Last active December 15, 2015 02:39
three different versions of a function handling parameters validation
<?php
// Takes the parameter value and validate it against a
// list of known validators and throws an exception if it doesn't
//
// params:
// mixed $value
// string $validator
//