Luiz Felipe's Avatar

Luiz Felipe

@luizfelipe.dev.bsky.social

106 Followers  |  332 Following  |  29 Posts  |  Joined: 25.09.2023  |  2.1391

Latest posts by luizfelipe.dev on Bluesky

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 `|`

30.12.2024 00:28 — 👍 3    🔁 0    💬 1    📌 0

Nao

30.12.2024 00:26 — 👍 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

30.12.2024 00:26 — 👍 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

30.12.2024 00:25 — 👍 5    🔁 1    💬 2    📌 0

Aí não é fã o suficiente

09.12.2024 15:15 — 👍 2    🔁 0    💬 0    📌 0

Provinha de FTC na segunda né

12.09.2024 04:02 — 👍 3    🔁 0    💬 1    📌 0

Jeff dando aulas

12.09.2024 03:54 — 👍 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

09.09.2024 01:51 — 👍 1    🔁 0    💬 0    📌 0

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

09.09.2024 01:23 — 👍 4    🔁 1    💬 1    📌 0

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

06.09.2024 02:18 — 👍 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

06.09.2024 00:53 — 👍 2    🔁 0    💬 1    📌 0

Eu tive que apagar o aplicativo do twitter por causa disso

05.09.2024 23:27 — 👍 1    🔁 0    💬 0    📌 0

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

05.09.2024 23:24 — 👍 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").

05.09.2024 23:24 — 👍 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!

05.09.2024 23:23 — 👍 2    🔁 0    💬 1    📌 0

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).

05.09.2024 23:23 — 👍 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.

05.09.2024 23:22 — 👍 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.

05.09.2024 23:22 — 👍 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.

05.09.2024 23:22 — 👍 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).

05.09.2024 23:21 — 👍 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 :)

05.09.2024 22:48 — 👍 5    🔁 1    💬 1    📌 0

Feedback-loop muito longo? Ou outra coisa?

05.09.2024 21:56 — 👍 1    🔁 0    💬 0    📌 0

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

03.09.2024 15:30 — 👍 1    🔁 0    💬 1    📌 0

oq vc faria?

03.09.2024 00:13 — 👍 0    🔁 0    💬 1    📌 0

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.

01.09.2024 13:50 — 👍 1    🔁 0    💬 2    📌 0
Pattern matching — Elixir v1.17.2

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

01.09.2024 13:44 — 👍 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.

01.09.2024 13:43 — 👍 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.

01.09.2024 13:40 — 👍 1    🔁 0    💬 1    📌 0

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

30.08.2024 22:24 — 👍 2    🔁 0    💬 0    📌 0

@luizfelipe.dev is following 20 prominent accounts