depois que eu vi aquele gringo codando um sistema em um único arquivo PHP de 14 mil linhas e ganhando 60 mil dólares por mês eu não ligo mais pra nada que envolva clean code / separation of concerns
devs java: programando e subindo pra prod
devs c#: programando e subindo pra prod
devs PHP: programando e subindo pra prod
devs go: programando e subindo pra prod
devs python: programando e subindo pra prod
devs JS: não pode usar else nem try catch se não vou barrar o teu PR
🤷
Agora é o meu momento de cagar regra na bolha dev (mas é pela segurança das suas aplicações):
JWT nem deveria ser usado pra sessão de usuário, quem dirá ser armazenado nos cookies
🧵 Por que você deveria usar cURL ao invés de Postman ou Insomnia para testar suas APIs REST:
- não é necessário subir uma aplicação pesada feita em electronjs para testar
- tudo da requisição se encontra num shellscript, não é necessário ficar trocando de aba (melhor DX)
tô desenvolvendo um substituto ao postman / insomnia baseado em shellscript chamado HTTPest
com ele, você é capaz de ler e armazenar variáveis de ambiente em um json
pra testar um endpoint, basta informar o ambiente e o script
segue o repo
Imagina ser da bolha dev e não participar da rinha de backend
A galera não sabe o que tá perdendo de aprendizado técnico, antes de participar eu ACHAVA que conhecia alguma coisa de backend
A live da
@rinhadebackend
foi sensacional! Foi emoção do primeiro ao último segundo, o trabalho do
@zanfranceschi
,
@wilcorrea
e do
@coproduto
foi sensacional, espero que organizem mais rinhas. O maior vencedor aqui foi a comunidade com os aprendizados. Parabéns a todos!
Pessoal que está me seguindo pela Rinha de Backend, gostaria de falar um pouco sobre mim.
Tive meu primeiro contato com programação (sem saber), com 8 / 9 anos de idade, criando jogos no RPG Maker.
Na época, cheguei a ver um tutorial de RGSS, que é o sistema de scripting em Ruby+
Acho que vale falar um pouco aqui sobre carreira de dev no Banco Itaú
Não existe formalmente uma distinção entre "backend" e "frontend" aqui. Todos são engenheiros.
Lógico que existem pessoas mais focadas em backend e frontend
Quando eu entrei no banco meu foco era total backend+
@luisarbez
@lucasmds198
Nesse meu caso eu tava como front em outra empresa e aceitei a proposta como backend na que estou hoje, mas mesmo assim a gestão daqui é bem aberta a mudanças de carreira, já vi PO virando Arquiteto de software, coordenador virando especialista
🚨 Primeiro gráfico da minha implementação em Rust + Axum pra
@rinhadebackend
Latência máxima de 26ms. Foi a menor latência máxima de todas as postagens que vi até agora. Usei uma stored procedure tanto pra crédito como pra débito, sem lock distribuído e sem rollback.
i run 16 docker apps on a single $40/month AWS Lightsail instance
that's $2.5/month per app
and each has access to 8gb RAM, 2 vCPUs, 160 GB SSD
on
@Hetzner_Online
it's about $16/mo
when you compare the price of self hosting to AWS, DigitalOcean, Vercel, Neon and other
E aí devs,
Só passando para lembrar que hoje às 20h tem live sobre a Rinha de Backend 🐓
Também vou dar uma de palestrinha sobre alguns temas 🤓
Não percam no meu canal na Twitch
Introducing AlexDB - NoSQL Atomic Ledger Database
✅ Lock-free and consistent mutations with in-memory atomics
✅ Query mutation logs through REST API or shared volume
✅ Manage and mutate atomics through REST API
✅ Unix Sockets compatible
sei que tem o lado da zoeira pelo java ter ficado em 18º na rinha, mas muita gente também não conhece os benchmarks reais de frameworks e podem realmente achar que o node é mais rápido do que Java, o que não é verdade. infelizmente a desinformação está maior que a zoeira
Pensando muito em começar a criar conteúdo sobre design de sistemas utilizando AWS, somente soluções serverless
Vai ser uma forma de sedimentar o que tenho estudado nos últimos meses e contribuir pra bolha e aprender mais ainda
atualmente ocupo um cargo de engenheiro de software
sou formado em engenharia? não
pago a anuidade do CREA? não
faço questão de ser chamado de engenheiro? também não, e tá tudo bem
a única questão que faço é que o dinheiro caia na minha conta, simples assim
@GideaoCerqueira
@FlatEarthOrg
Erastótenes, matemático e astrônomo da Grécia Antiga, já provou que a Terra é redonda no século III a.C. e inclusive calculou sua circunferência.
🚨 VAI TER LIVE SOBRE A RINHA 🚨
Rinha de Backend 2023 Q3 - Epilogue
Dia 31/08 às 20:00 irei falar sobre a minha experiência na rinha. Também quero falar sobre a Raikiri Edge e compartilhar conhecimentos
Acompanhem no meu canal na Twitch
@fIaviogarage
Imagina o Felipe Neto printando os tweets do Gugu. KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
@girordo_
@X8ING_
@sseraphini
Tem um site da AWS () que fornece treinamentos GRATUITOS com os próprios engenheiros de lá explicando o conceito de cada serviço
Acho que vale a pena dar uma olhada, tem até trilha pra tirar certificado
is now almost 14,000 lines of raw PHP mixed with inline HTML, CSS in <style> and raw JS in <script> tags
I did not use TS, flexbox or frameworks except jQuery
A lot of $.ajax() and float:left though
It has 1,872 paying customers making $61,808 per month
não conhecia muito NGINX, melhorei um pouco no docker compose, também foi a minha primeira vez usando redis, aprendi bastante sobre índices em bancos de dados, também aprimorei meus conhecimentos sobre ownership em Rust, aprendi como identificar gargalos, foi muita coisa
Especialistas em Java e C++ irão inspecionar urna eletrônica:
O Ministério da Defesa requisitou o acesso de nove militares à sala de inspeção dos códigos-fonte da urna e do sistema eletrônico de votação na sede do TSE.
Pior que não quis mesmo treta. O que me motivou foi ter visto uma recomendação de vídeo do FogueteAssento ensinando como armazenar JWT no cookie.
Daí surgiu a NECESSIDADE URGENTE de iluminar vocês sobre esse assunto para que NUNCA usem JWT como sessão
🚨 MAIS UMA ATUALIZAÇÃO DA API EM RUST NA RINHA DE BACKEND
Aumentei o máximo de conexões no pool do Redis. Resultado: Zero erros, 20591 registros salvos, 100% das requisições abaixo dos 800ms, média de 270 TPS.
cc
@zanfranceschi
Amigo, após ver a sua observação eu tive que fazer uns ajustes.
Realmente, o FTS do Postgres não tem suporte a suffix matching (***word), então decidi trocar o TSVECTOR por TRGM + GIST. Após adaptar estas mudanças, o resultado foi este (latência máxima de 20ms):
Tava dando uma olhada nos códigos da
@rinhadebackend
e tem muita coisa maneira, só que eu reparei que talvez tenha gente se esquecendo desse caso aqui da busca:
Segundo (e talvez último) gráfico para a rinha.
p99 de 2ms. Dessa vez utilizei atomics para o saldo na memória, network_mode = host e batch insert.
Se surgir outra oportunidade de otimização, posto outro gráfico
@FlavioCuter
a favela mental é tão real que tenho 2 vizinhos aqui no prédio que parecem esperar as 11 da noite pra fazer todo tipo de barulho (criança pulando, grito na janela em dia de jogo, funk alto atravessando as paredes)
@alexrribeiro
Composição em funções menores + early return
Mas são só estilos diferentes de alcançar o mesmo resultado
O early return é mais legível do que if-else porém não acho que deveriam barrar uma implementação usando if-else só porque early return é mais "bonitinho"
bootstrap ganha de lavada dessas lib CSS q vcs usam
só dar ctrl C ctrl V da tag link no HTML e pronto
sem necessidade de npm install, criar config.js, extensão no vscode
jQuery a mesma coisa
bootstrap + jQuery = DX 10x melhor que nextjs e react
Hoje não tem gráfico do Gatling mas já comecei minha implementação pra Rinha de Backend 2 usando Rust + Axum + PgSQL com Stored Procedures
Amanhã (se eu tiver tempo) eu começo a bateria de testes
Gostaria de citar algumas otimizações que fiz na minha API da Rinha de Backend:
- Cache de resposta no Redis;
- Cache de chave única no Redis;
- Validação do tamanho de campos;
- Criação de índices em campos utilizados nas buscas;
- Utilização de pools + loop de eventos (Tokio).
Pra quem queria fazer ranking de linguagens, a Rinha de Compiladores é o lugar certo pra isso
Ao contrário da Rinha de Backend esse desafio é CPU bound. Vai ganhar a menor complexidade na linguagem mais rápida
Dica: usem hyperfine
buscar por tutoriais de como fazer certas implementações de alto nível em C é tão divertido porque ao invés de encontrar o que você quer você é orientado a fazer algo tão kernel-level e acaba entrando numa toca de coelho de documentações de chamadas de SO (geralmente linux) +
Just one more state variable bro. Just one more hook and the page will have everything it needs. Just one more state variable please bro. Bro? Add one more state variable please bro
uma curiosidade de java pra vocês
no mundo corporativo o "console.log" do java é mais complicado que "System.out.println"
é algo como
class App {
private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
void metodo () {
logger .info("hello world");
}
}
@Matmuggshot
@DesejoDeMatar
O professor Pierluigi Piazzi dizia que o sistema educacional brasileiro emburrece os alunos. Mas não imaginava que emburrecia a ponto de diminuir 10 pontos no QI médio
decidi fazer um teste mais agressivo na API da rinha de backend, aumentando o TPS do gatling pelo script da simulação e mantendo os mesmos recursos
a API aguentou bem até umas 800 reqs/s
porém apresentou 3% de falha, com latência máxima de 6.2 segundos
cc
@zanfranceschi
@ocodista
O responsável pelo efeito "I/O não-bloqueante" é uma abstração chamada epoll (kqueue no Mac OS). Através dele você recebe um batch de eventos com informações dos file descriptors. Eu cheguei a implementar um servidor simples em C que utiliza epoll:
Introducing AlexDB - NoSQL Atomic Ledger Database
✅ Lock-free and consistent mutations with in-memory atomics
✅ Query mutation logs through REST API or shared volume
✅ Manage and mutate atomics through REST API
✅ Unix Sockets compatible
Esse é o fim desse tutorial, se você leu até aqui que Deus te abençoe e se você está procurando emprego, que Deus te abra uma porta de emprego. Mais tarde posto um link pro Github contendo o código-fonte final do projeto rodando em TS.