Skip to content

Instantly share code, notes, and snippets.

View alexandreservian's full-sized avatar

Alexandre Servian alexandreservian

View GitHub Profile
@alexandreservian
alexandreservian / BoxCastDrawer.cs
Created February 11, 2023 22:49 — forked from SolidAlloy/BoxCastDrawer.cs
A class that allows to visualize Unity Physics2D.BoxCast() method.
using UnityEngine;
/// <summary>
/// A class that allows to visualize the Physics2D.BoxCast() method.
/// </summary>
/// <remarks>
/// Use Draw() to visualize an already cast box,
/// and BoxCastAndDraw() to cast a box AND visualize it at the same time.
/// </remarks>
@alexandreservian
alexandreservian / todo-list-web-component.ts
Last active June 9, 2021 17:38
Todo List made with web component
class TodoList extends HTMLElement {
private root: ShadowRoot;
private $form: HTMLFormElement | null = null;
private $input: HTMLInputElement | null = null;
private $ul: HTMLUListElement | null = null;
constructor() {
super();
this.root = this.attachShadow({ mode: 'open' });
}
@alexandreservian
alexandreservian / usando-stacksupervisor-iex.ex
Created March 24, 2020 19:45
Usando StackSupervisor no iex
iex> StackSupervisor.start_link
{:ok, #PID<0.230.0>}
iex> StackSupervisor.which_children
[
{ProcessInElixir.StackNormal, #PID<0.231.0>, :worker,
[ProcessInElixir.StackNormal]}
]
iex> ProcessInElixir.StackNormal.push pid(0,231,0), "Japão"
{:push, "Japão"}
iex> ProcessInElixir.StackNormal.show pid(0,231,0)
@alexandreservian
alexandreservian / stack_supervisor.ex
Created March 24, 2020 19:27
Exemplo de Supervisor
defmodule StackSupervisor do
use Supervisor
def start_link(_arg \\ []) do
Supervisor.start_link __MODULE__, :ok, name: __MODULE__
end
def init(:ok) do
children = [ProcessInElixir.StackNormal]
Supervisor.init(children, strategy: :one_for_one)
end
def which_children(), do: Supervisor.which_children __MODULE__
@alexandreservian
alexandreservian / usando-stacknormal-iex.ex
Created March 24, 2020 18:23
Usando StackNormal no iex
iex> alias ProcessInElixir.StackNormal
ProcessInElixir.StackNormal
iex> {:ok, pid} = StackNormal.start_link
{:ok, #PID<0.326.0>}
iex> StackNormal.push pid, "Japão"
{:push, "Japão"}
iex> StackNormal.push pid, "Alemanha"
{:push, "Alemanha"}
iex> StackNormal.push pid, "Brasil"
{:push, "Brasil"}
@alexandreservian
alexandreservian / stack_normal.ex
Last active March 24, 2020 19:38
Stack usando spawn
defmodule ProcessInElixir.StackNormal do
def start_link(initialStack \\ []) do
pid = spawn_link __MODULE__, :loop, [initialStack]
{:ok, pid}
end
def child_spec(opts) do
%{
id: __MODULE__,
start: {__MODULE__, :start_link, [opts]},
type: :worker,
iex> pid = spawn fn -> 5 + 5 end
iex> Process.alive? pid
false
@alexandreservian
alexandreservian / after-com-receive.ex
Created March 24, 2020 16:10
Exemplo usando after na macro receive
iex> receive do
...> msm -> msm
...> after
...> 1000 -> "nada aconteceu depois de 1s"
...> end
"nada aconteceu depois de 1s"
@alexandreservian
alexandreservian / comunicacao-entre-processos.ex
Created March 24, 2020 15:23
Exemplo de comunicação entre processos
iex> pid = self() # pega o pid atual do processo
#PID<0.105.0>
iex> send pid,{:ok, "mensagem com padrão 1"}
iex> send pid,{:ok, "mensagem com padrão 2"}
iex> Process.info pid, :messages # mostra as mensagens salvas na mailbox
{:messages, [ok: "mensagem com padrão 1", ok: "mensagem com padrão 2"]}
iex> receive do {:ok, msg} -> IO.puts msg end # macro que lida com as mensagens
mensagem com padrão 1
:ok
iex> Process.info pid, :messages
@alexandreservian
alexandreservian / personalizacao-celulas.js
Created February 13, 2020 02:09
Personalização das Células da tabela
const Cell = ({ className, cellData, column }) => {
const { dataKey } = column;
switch(dataKey){
case 'thumbnail':
return <Thumbnail src={cellData} />
case 'type':
return <Types types={cellData} />
default:
return <div className={className}>{cellData}</div>;
}