Advertisement · 728 × 90

Posts by Luiz Felipe

enum do TS (usando a keyword enum) é basicamente a mesma coisa de Java, C#, etc: uma lista de valores (geralmente escalares) do mesmo domínio/tipo

Union é outra coisa. Em TS você tem isso usando o `|`

1 year ago 3 0 1 0

Nao

1 year ago 1 0 1 0

Programa em Rust q vc descobre; ou em alguma outra lang com sum types

TS tb dá pra ter isso com discriminated unions, mas imo é um pouco mais convoluto no caso simples pq na maioria dos casos vc precisa explicitamente definir a tag

1 year ago 3 0 0 0

IMHO o money do PG nao é muito aconselhável porque só suporta um locale (configurado ao nível do database inteiro!)

Numeric (aka decimal) já traz toda a precisão necessária e a flexibilidade

1 year ago 5 1 2 0

Aí não é fã o suficiente

1 year ago 2 0 0 0

Provinha de FTC na segunda né

1 year ago 3 0 1 0

Jeff dando aulas

1 year ago 3 0 1 0

Yeah, por ora eu só tô usando pra gerenciar uma infinidade de PDFs e ler alguns deles… Tô aprendendo conforme vou usando

1 year ago 1 0 0 0
Advertisement

Zotero é muito bom pra ler PDF também, dá até pra adicionar tags em highlights

1 year ago 4 1 1 0

já tem bastante coisa, mas nao esquece de isolation levels :P

1 year ago 2 0 1 0

Rings of Power tem todos os seus problemas etc etc, mas a cena de introdução do Tom Bombadil foi tão boa :v

1 year ago 2 0 1 0

Eu tive que apagar o aplicativo do twitter por causa disso

1 year ago 1 0 0 0

Isso garante a tal da serialização, assim como o lock :)

1 year ago 2 0 1 0

E o canal de mensagens consegue fazer isso justamente porque é implementado de modo a ser capaz de receber várias mensagens de vários atores ao mesmo tempo, *mas* só fornece *uma mensagem por vez* para o ator que consome seus elementos (afinal, o recurso só está na posse de um "ator").

1 year ago 2 0 1 0

A resposta é: fazendo a operação usando algum tipo de mensagem. O ator "dono" do recurso (a memória, por ex) fica continuamente processando essas mensagens e agindo de acordo com o que deve fazer.

Nesse caso o "elemento de sincronia" (que antes era o mutex) passa a ser o próprio canal de mensagens!

1 year ago 2 0 1 0
Advertisement

A outra abordagem, message passing, elimina a necessidade de sincronização com locking porque garante que uma região de memória *sempre* irá pertencer a um "ator"/"processo" por vez.

Mas aí você se pergunta: como outros processos vão usar aquele recurso (que eles precisam, afinal).

1 year ago 2 0 1 0

Um mutex, por exemplo, sincroniza os dados de modo a garantir que em um momento possa existir apenas um leitor/escritos mexendo na região compartilhada.

1 year ago 2 0 1 0

Shared memory é quando os processos concorrentes podem ler e escrever em uma mesma região de memória. Naturalmente, se você fizer isso de forma "descontrolada" (sem sincronização), você terá problemas graves, como data races. Na maior parte dos casos, dá pra sincronizar o acesso usando lock.

1 year ago 2 0 1 0

Vou reduzir o escopo para simplificar. Em um mesmo computador, existem duas "grandes" abordagens para se estruturar código concorrente dentro de um mesmo processo. Shared memory e message passing.

1 year ago 2 0 1 0

O problema de ter um único recurso que precisa ser compartilhado por mais de um processo de forma concorrente é bem comum--seja em um mesmo computador (paralelismo via multi-threading, por ex.) ou, como no exemplo do @zanfranceschi.bsky.social, em um sistema distribuído (vários nós).

1 year ago 3 0 1 0

Famigerada serialização por fila!!

Em um projetinho de Rust que participei há um tempo a gente (ab)usou bastante de message-passing pra não precisar de shared memory sincronizado com lock :)

1 year ago 5 1 1 0

Feedback-loop muito longo? Ou outra coisa?

1 year ago 1 0 0 0

Muuuuuuuito bom mesmo!! (embora o autor seja intragável no twitter)

1 year ago 1 0 1 0

oq vc faria?

1 year ago 0 0 1 0
Advertisement

A semântica é a mesma inclusive por fora do iex. Lembrando que em Elixir quase tudo é expressão, então quase tudo retorna um valor mesmo.

1 year ago 1 0 2 0
Pattern matching — Elixir v1.17.2

Btw: hexdocs.pm/elixir/patte...

1 year ago 1 0 0 0

O ponto é que, em posição de pattern, um identificador sempre vai aceitar tudo. Por isso você precisa "dizer" para a linguagem que não quer usar um pattern-identificador, mas sim usar o *conteúdo* da variável como discriminante. O ^ faz isso.

1 year ago 1 0 1 0

No primeiro braço, você usa o pattern `^pie` (repare o carret antes, que faz com que o matcher "siga" a variável para usar o seu valor para fazer o pattern matching), que é a mesma coisa que `3.14`.

Obviamente a string "cherry pie" não dá match com `3.14`, então só resta o último braço.

1 year ago 1 0 1 0

Eu fico é feliz por ser forçado a abandonar aquele site.

1 year ago 2 0 0 0