Skip to main content
p de Podcast

p de Podcast

By Marcio Frayze David e Julianno Martins Silva

Podcast sobre arquitetura de software, boas práticas de programação e outros temas relacionados a desenvolvimento de software.

// p de Podcast
var p;
Available on
Apple Podcasts Logo
Castbox Logo
Google Podcasts Logo
Overcast Logo
Pocket Casts Logo
RadioPublic Logo
Spotify Logo
Currently playing episode

REST: você (provavelmente) está fazendo isso errado

p de PodcastNov 20, 2020

00:00
54:42
Pattern Matching for instanceof
Apr 30, 202131:54
Feedback
Apr 23, 202149:03
Teste A/B (e porquê isso importa)
Apr 16, 202101:08:10
Coragem
Apr 09, 202146:38
Generics mais avançado: Invariância, Covariância, Contravariância e Bivariância

Generics mais avançado: Invariância, Covariância, Contravariância e Bivariância

Apr 02, 202141:49
Generics Básico
Mar 26, 202131:19
Migrations

Migrations

Como publicar alterações no BD? Como sincronizar a alteração do BD com a nova versão da aplicação? Já ouviu falar de "Migrations"? Play no p de Podcast!


Participantes
Marcio Frayze David

marcio@segunda.tech
https://twitter.com/marciofrayze
https://segunda.tech
https://masto.donte.com.br/web/accounts/138458
https://linkedin.com/in/marcio-frayze

Julianno Martins Silva
juliannoms@gmail.com
https://twitter.com/juliannoms
https://linkedin.com/in/juliannoms

Links:

Artigo da Amanda Sposito. Migrations in databases with large amount of data:
http://blog.plataformatec.com.br/2019/02/migrations-in-databases-with-large-amount-of-data/

Criando íncides no PostgreSQL sem lock:
https://www.postgresql.org/docs/9.1/sql-createindex.html

Undo no flyway (não recomendado):
https://flywaydb.org/documentation/command/undo

Definição de Database refactoring:
https://en.wikipedia.org/wiki/Database_refactoring

Livro Refactoring Databases:
https://www.goodreads.com/book/show/161302.Refactoring_Databases

Blue-green deployment:
https://martinfowler.com/bliki/BlueGreenDeployment.html

Evolutionary Database Design, Pramod Sadalage:
https://www.martinfowler.com/articles/evodb.html

Boas práticas de Migration em Java na Heroku:
https://devcenter.heroku.com/articles/running-database-migrations-for-java-apps

Ferramentas de migrations:

Java:
https://flywaydb.org/
https://www.liquibase.org/

.NET:
https://docs.microsoft.com/pt-br/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli

Ruby on rails:
https://edgeguides.rubyonrails.org/active_record_migrations.html

Mar 19, 202152:22
Vazamento de memória

Vazamento de memória

Sua aplicação fica lenta com o passar do tempo? Recebe exceções por falta de memória? Pode ser "Vazamento de Memória". Aperte o play e confira!

Participantes

Marcio Frayze David  
marcio@segunda.tech  
https://twitter.com/marciofrayze  
https://segunda.tech  
https://masto.donte.com.br/web/accounts/138458  
https://linkedin.com/in/marcio-frayze  


Julianno Martins Silva  
juliannoms@gmail.com  
https://twitter.com/juliannoms  
https://linkedin.com/in/juliannoms  


Links:

Analisador on-line de logs do GC (identifica possíveis vazamentos):
https://gceasy.io/

Visual VM:
https://visualvm.github.io/

Try with resources do Java:
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

Git lab memory leads issues:
https://duckduckgo.com/?t=ffab&q=gitlab+memory+leak&atb=v223-1&ia=web

Memory Leak no Rust:
https://doc.rust-lang.org/book/ch15-06-reference-cycles.html#reference-cycles-can-leak-memory

Microsoft 70% dos bugs de segurança:
https://www.zdnet.com/article/microsoft-70-percent-of-all-security-bugs-are-memory-safety-issues

Podcast do Marcio sobre Livros:


Outros artigos:
https://martinfowler.com/articles/qa-in-production.html
https://deepsource.io/blog/exponential-cost-of-fixing-bugs
https://developers.redhat.com/blog/2014/08/14/find-fix-memory-leaks-java-application
https://www.toptal.com/java/hunting-memory-leaks-in-java
https://www.baeldung.com/java-heap-dump-capture
https://www.dynatrace.com/news/blog/the-top-java-memory-problems-part-1/

Mar 12, 202146:00
Diga, não peça (Tell, don’t ask)

Diga, não peça (Tell, don’t ask)

Como seus objetos se  relacionam? Conhece o "Tell Don't Ask"? E o "Train Wreck"? O que isso  tem a ver com encapsulamento? Aperte o play e confira!


Participantes

Marcio Frayze David  
marcio@segunda.tech  
https://twitter.com/marciofrayze  
https://segunda.tech  
https://masto.donte.com.br/web/accounts/138458  
https://linkedin.com/in/marcio-frayze


Julianno Martins Silva  
juliannoms@gmail.com  
https://twitter.com/juliannoms  
https://linkedin.com/in/juliannoms


Links:

Um dos artigos originais onde o termo é criado (Andy Hunt and Dave Thoma), 2003:

http://media.pragprog.com/articles/jan_03_enbug.pdf

Definição de Tell don't ask, Martin Fowler:

https://www.martinfowler.com/bliki/TellDontAsk.html

Vídeo (em inglês) com alguns exemplos:

https://www.youtube.com/watch?v=ZJ6bH6Df4K8

Texto do Giovanni Bassi:

https://www.lambda3.com.br/2009/07/tell-dont-ask-ou-fique-longe-das-minhas-propriedades/

Exemplo TDA: Statement recebe um printer pra impressão do extrato, e não pega o extrato pra imprimir

https://github.com/sandromancuso/Bank-kata/blob/master/src/main/java/org/craftedsw/domain/Statement.java

Screencast Sandro Mancuso

https://www.youtube.com/watch?v=XHnuMjah6ps

https://www.youtube.com/watch?v=gs0rqDdz3ko

https://www.youtube.com/watch?v=R9OAt9AOrzI

http://www.mockobjects.com/2006/10/tell-dont-ask-and-mock-objects.html?m=1

Artigo sobre TDD que cita TDA

https://martinfowler.com/articles/mocksArentStubs.html#DesignStyle

Link sobre TrainWreck

https://wiki.c2.com/?TrainWreck

Mar 05, 202140:44
Código como Documentação

Código como Documentação

Qual a documentação  necessária pro sistema? O código fonte é o suficiente? Conhece 'código  como documentação'? Vem trocar ideia com a gente.


Participantes


Marcio Frayze David   
marcio@segunda.tech   
https://twitter.com/marciofrayze  
https://segunda.tech  
https://masto.donte.com.br/web/accounts/138458  
https://linkedin.com/in/marcio-frayze  


Julianno Martins Silva   
juliannoms@gmail.com   
https://twitter.com/juliannoms
https://linkedin.com/in/juliannoms


Links:

Artigo do Fowler:

https://www.martinfowler.com/bliki/CodeAsDocumentation.html


Artigos do Jack Reeves recomendados pelo Fowler:

https://www.developerdotstar.com/mag/articles/reeves_design.html

https://www.developerdotstar.com/mag/articles/reeves_13yearslater.html

https://www.developerdotstar.com/mag/articles/reeves_originalletter.html


Spring REST Docs:

https://spring.io/projects/spring-restdocs


Vídeo da Punk do DevOps falando sobre padrões nas mensagens de commit:

https://www.youtube.com/watch?v=vXOVl6TxuOE&t=388s


Outra convenção para mensagens de commit:

https://www.conventionalcommits.org/pt-br/v1.0.0/


Mais uma convenção para mensagens de commit:

https://karma-runner.github.io/6.1/dev/git-commit-msg.html


Artigo contrário à  nossa ideia, com baixa abstração:

https://medium.com/it-dead-inside/self-documenting-code-is-mostly-nonsense-1de5f593810f

Feb 26, 202156:19
Programação em Par

Programação em Par

Já praticou Programação Pareada? Quais as vantagens desta prática? Existem desvantagens?

Neste episódio conversamos sobre Programação em Par com duas convidadas, uma líder de equipe e um desenvolvedor.


Participantes  
Marcio Frayze David  
marcio@segunda.tech  
https://twitter.com/marciofrayze  
https://segunda.tech  
https://masto.donte.com.br/web/accounts/138458  
https://linkedin.com/in/marcio-frayze  

  

Julianno Martins Silva  
juliannoms@gmail.com  
https://twitter.com/juliannoms  

  

Roberta Monteiro  
https://linkedin.com/in/roberta-fernandes-monteiro  

  

Leonardo Leite  
https://www.ime.usp.br/~leofl/  
https://www.linkedin.com/in/leonardo-alexandre-ferreira-leite-17194322/  
https://twitter.com/leonardofl  


Links:

Definição de Pair Programming

https://en.wikipedia.org/wiki/Pair_programming

Definição de Mob Programming

https://en.wikipedia.org/wiki/Mob_programming

Ferramenta Code with me:

https://www.jetbrains.com/help/idea/code-with-me.html

Palestra To pair or not to pair, thoughtworks

https://youtu.be/u_eZ-ae2FY8

Palestra da Pia Nilsson: Knowing Me, Knowing You - Growing Teams to Continuously Deliver

https://youtu.be/S92vVAEofes

Palestra do Woody Zuill: Mob Programming: A Whole Team Approach

https://youtu.be/SHOVVnRB4h0

Palestra I've Pair Programmed for 30,000 Hours: Ask Me Anything!

https://www.youtube.com/watch?v=RCDfBioUgts

FunFunFunction: Pair Programming a Facebook Messenger Bot

https://www.youtube.com/watch?v=zFO1cRr5-qY

Artigo The Shame of Pair Programming

https://diaryofascrummaster.wordpress.com/2013/09/30/the-shame-of-pair-programming/

Feb 19, 202157:12
Estrangulamento de Software
Feb 12, 202144:43
Transações Distribuídas
Feb 05, 202147:40
ACID, BASE e o Teorema CAP

ACID, BASE e o Teorema CAP

ACID ou BASE, qual escolher? Conhece o teorema CAP? Neste episódio falamos sobre as propriedades destes dois modelos transacionais.

Marcio  
https://twitter.com/marciofrayze

Julianno
https://twitter.com/juliannoms

Links:

Artigo "ACID vs. BASE: What are the differences?"

https://phoenixnap.com/kb/acid-vs-base

Teorema CAP:

https://en.wikipedia.org/wiki/CAP_theorem

https://dzone.com/articles/understanding-the-cap-theorem

https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html

https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed/


Modelo ACID

    Atômico – Cada transação é devidamente realizada ou o processo para e o banco de dados volta para o estado antes do início da transação (rollback), garantindo que todos os dados no banco de dados sejam válidos.

    Consistente – Uma transação processada nunca colocará em risco a integridade estrutural do banco de dados. A transação cria um novo estado válido tanto para a estrutura como para os dados ou reverte para o estado anterior.

    Isolado – As transações não podem comprometer a integridade de outras transações interagindo com elas enquanto ainda estão em andamento.

    Durável – Os dados relacionados à transação concluída persistirão mesmo nos casos de quedas de rede ou energia. Se uma transação falhar, ela não afetará os dados manipulados.

Modelo BASE

    Basically Available – Em vez de impor consistência imediata, os bancos de dados BASE garantirão a disponibilidade de dados espalhando-os e replicando-os nos nós do cluster de banco de dados.

    Soft State – Devido à falta de consistência imediata, os valores dos dados podem ser diferentes dependendo do nó que atender a requisição.

    Eventually Consistent – O fato de não impor consistência imediata não significa que ela nunca a alcance. No entanto, até que isso ocorra, as leituras de dados ainda são possíveis (mesmo que não reflitam a realidade mais atual).

Teorema CAP

    Eric Brewer provou que em um modelo distribuído de armazenamento você só consegue atender simultaneamente duas de três opções:

    Consistência (C): Cada leitura recebe a gravação mais recente ou um erro.

    Disponibilidade (A): Cada solicitação recebe uma resposta de sucesso, sem a garantia de que contém a gravação mais recente.

    Tolerância à partição (P): O sistema continua a operar apesar de um número arbitrário de mensagens sendo retiradas (ou atrasadas) pela rede entre nós.

    Na prática você precisará ter suporte a tolerância a partição, então a escolha se resume a: quando ocorre um particionamento na rede, o que você quer priorizar: consistência ou disponibilidade?


Jan 29, 202147:03
Software Resiliente
Jan 22, 202155:29
Monólito Primeiro e Design Simples
Jan 15, 202156:05
Retrospectiva 2020
Dec 25, 202001:00:41
Arquitetura Baseada em Serviços (Service-based Architecture)
Dec 18, 202055:58
Linguagem onipresente

Linguagem onipresente

Já se deparou com um termo com dois significados? Os especialistas de domínio parecem falar grego? O nome das classes e  métodos representam o negócio? Conhece a linguagem onipresente? Confira!


Participantes

Marcio Frayze David  
marcio@segunda.tech  
https://twitter.com/marciofrayze  
https://segunda.tech  
https://masto.donte.com.br/web/accounts/138458

Julianno Martins Silva  
juliannoms@gmail.com  
https://twitter.com/juliannoms


Links:

Livro DDD, Eric Evans:
https://www.goodreads.com/book/show/179133.Domain_Driven_Design


Livro Implementing Domain-Driven Design, Vaughn Vernon:
https://www.goodreads.com/book/show/15756865-implementing-domain-driven-design


Vídeos do Elemar Junior:
https://www.youtube.com/watch?v=HnvmpyUAITs


Outros Links:
https://medium.com/@felipefreitasbatista/developing-the-ubiquitous-language-1382b720bb8c
https://medium.com/ingeniouslysimple/constructing-your-ubiquitous-language-7a57e36e3e82
https://medium.com/@kamil/distilling-business-domains-from-a-ubiquitous-language-b9fc42fe8c28

Dec 11, 202057:30
Programação Assíncrona
Dec 04, 202050:41
O resto do REST
Nov 27, 202001:02:27
REST: você (provavelmente) está fazendo isso errado
Nov 20, 202054:42
Refatoração: o que é e como fazer
Nov 13, 202048:30
SRP x CRUD (Bônus)
Nov 13, 202007:41
SRP: O Princípio da Responsabilidade Única
Nov 06, 202049:05
Injeção de dependência e inversão de controle
Oct 30, 202055:22
Por que usar programação funcional em linguagens OO?
Oct 23, 202001:09:42
UX: Por que todo mundo está falando disso?
Oct 16, 202057:18
Integração Contínua não é (apenas) automatizar a build

Integração Contínua não é (apenas) automatizar a build

No  episódio de hoje falamos sobre Integração Contínua e como ela é  importante no desenvolvimento de software. Já automatizou o processo de  build da sua aplicação? Faz testes automatizados? Conhece chaveamento de  funcionalidades? Será mesmo que seu time pratica Integração Contínua?  Confira!

Participantes 

Marcio Frayze David
marcio@segunda.tech
https://segunda.tech
https://masto.donte.com.br/web/accounts/138458
https://twitter.com/marciofrayze

Julianno Martins Silva
juliannoms@gmail.com

Leonardo Leite
https://twitter.com/leonardofl
https://www.linkedin.com/in/leonardo-alexandre-ferreira-leite-17194322
https://radarparlamentar.polignu.org/

Links

https://trunkbaseddevelopment.com
https://www.thoughtworks.com/continuous-integration
https://medium.com/@marciofrayze/integra%C3%A7%C3%A3o-cont%C3%ADnua-e-feature-toggles-329055e96de9
https://martinfowler.com/bliki/CanaryRelease.html
https://radarparlamentar.polignu.org/

Canal Continuous Delivery do Dave Farley:
https://www.youtube.com/channel/UCCfqyGl3nq_V0bo64CjZh8g

Palestra do Marcio sobre IC
https://m.youtube.com/watch?v=LYtClxC3wcU

Effects as data, Richard Feldman:
https://www.youtube.com/watch?v=6EdXaWfoslc

Livros

https://www.goodreads.com/book/show/8686650-continuous-delivery
https://www.goodreads.com/book/show/4268826-growing-object-oriented-software-guided-by-tests
https://www.goodreads.com/book/show/1654215.The_Art_of_Agile_Development
https://www.goodreads.com/book/show/67833.Extreme_Programming_Explained
https://www.goodreads.com/book/show/35755822-building-evolutionary-architectures
https://www.martinfowler.com/books/refactoringDatabases.html

Oct 09, 202001:00:05
Pare de usar IF/Else

Pare de usar IF/Else

No episódio de hoje discutimos o impacto do uso excessivo de if/else,  switch/case, for, while, na legibilidade e complexidade do código. Quais  as técnicas você utiliza pra diminuir o uso destas estruturas? Conhece o  Padrão Null Object? Guard Clause? Pattern Matching? Aperte o play!

Participantes

Marcio Frayze David
marcio@segunda.tech
https://segunda.tech
https://masto.donte.com.br/web/accounts/138458
https://twitter.com/marciofrayze

Julianno Martins Silva
juliannoms@gmail.com

Código Haskell para calculo da sequência de Fibonacci

fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)


Links:

https://m.youtube.com/watch?v=AnZ0uTOerUI

https://java-design-patterns.com/patterns/null-object/

https://martinfowler.com/articles/replaceThrowWithNotification.html

https://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html

https://fsharpforfunandprofit.com/posts/expressions-vs-statements/

https://segunda.tech/posts/2020-06-25-oo-design-patterns-serpro/

https://wiki.haskell.org/The_Fibonacci_sequence

https://medium.com/better-programming/refactoring-guard-clauses-2ceeaa1a9da

https://enterprisecraftsmanship.com/posts/fail-fast-principle/

https://medium.com/coding-blocks/tail-call-optimization-in-jvm-with-kotlin-ebdf90b34ec9

https://medium.com/97-things/enums-are-classes-too-bfdd2030cf1d

https://medium.com/@kthsingh.ms/using-enums-as-implementions-for-an-interface-how-and-where-it-can-be-helpful-68a8938306dc

https://pt.wikipedia.org/wiki/Complexidade_ciclom%C3%A1tica

Oct 02, 202048:31
ORM amar ou odiar?

ORM amar ou odiar?

No episódio de  hoje discutimos os frameworks de mapeamento objeto-relacional, os ORM.  

Os ORM são frameworks para todas as aplicações? São eles os verdadeiros  vilões da baixa performance? Quais facilidades eles trazem? Confira!

Sep 25, 202054:58
Imutabilidade e programação defensiva
Sep 18, 202001:01:29
DevOps

DevOps

Neste  episódio discutimos a Cultura DevOps, partindo do significado de termos  como Integração Contínua e Entrega Contínua, passando pela automação necessária no desenvolvimento e na  infraestrutura até como começar a praticar em contextos diferentes. 

Contamos com a participação especial do Leonardo Leite, pesquisador/doutorando da USP.

Não  esqueça de enviar sua opinião pra gente! O que gostou? O que poderíamos  melhorar? Envie sua opinião para marcio@segunda.tech.

Participantes

Marcio Frayze David
marcio@segunda.tech
https://segunda.tech
https://masto.donte.com.br/web/accounts/138458
https://twitter.com/marciofrayze

Julianno Martins Silva

Leonardo Leite
https://twitter.com/leonardofl
https://www.linkedin.com/in/leonardo-alexandre-ferreira-leite-17194322

Links interessantes:

Artigos e palestras de Leonardo Leite:

http://ccsl.ime.usp.br/devops/2019-12-04/devops-survey-published.html
http://ccsl.ime.usp.br/devops/2020-03-17/times-de-plataforma.html
http://ccsl.ime.usp.br/devops/2020-04-16/aula-sistemas-complexos.html
http://ccsl.ime.usp.br/devops/2020-08-25/times-de-plataforma-tdc-2020.html
http://ccsl.ime.usp.br/devops/2020-08-26/devops-e-arquitetura.html

Livros:

https://www.goodreads.com/book/show/17255186-the-phoenix-project
https://www.goodreads.com/book/show/35747076-accelerate
https://www.goodreads.com/book/show/113934.The_Goal
https://www.goodreads.com/book/show/44135420-team-topologies
https://www.goodreads.com/book/show/1069827.Release_It_

Vídeo:

Dave Farley: DevOps x Integração Contínua:
https://www.youtube.com/watch?v=MnyvgFDh-kw

Sep 11, 202048:53
Código limpo
Sep 04, 202050:02
Frameworks e o seu impacto na arquitetura de software
Aug 28, 202043:43
TDD: Desenvolvimento Guiado Por Testes
Aug 21, 202058:19
p de Podcast

p de Podcast

Este podcast nasceu para conversarmos sobre arquitetura de software e boas práticas de programação. Mas quem são as pessoas por trás deste projeto? Neste trailer respondemos esta pergunta e apresentamos um pouco mais sobre a proposta deste podcast.

Aug 13, 202012:19
Arquitetura de software no desenvolvimento mobile

Arquitetura de software no desenvolvimento mobile

Arquitetura de software é importante também para o desenvolvimento de Apps? Quais os problemas que podemos ter quando não nos preocupamos com isso? Quais são as particularidades da Arquitetura de Software no que diz respeito ao desenvolvimento de apps? Muita gente tem falado em "gerenciamento de estado". O que seria isso?

Essas e muitas outras perguntas são respondidas neste episódio! Desta vez contamos com a presença de dois convidados especialistas em desenvolvimento de aplicativos móveis.

Não esqueça de enviar sua  opinião pra gente!

O que  gostou? O que poderíamos melhorar? Enviei sua  opinião para marcio@segunda.tech.

Participantes

Marcio Frayze David
marcio@segunda.tech
https://segunda.tech
https://masto.donte.com.br/web/accounts/138458
https://twitter.com/marciofrayze

Julianno Martins Silva

Marco Antonio Porcho Souza
https://www.linkedin.com/in/marco-porcho
maporcho@gmail.com

Abner Silva de Oliveira
https://twitter.com/abneroliveira
https://github.com/abner
https://www.linkedin.com/in/abneroliveira

Links interessantes/referências:

Overview de gerenciamento de estados, do próprio time do Flutter:
https://flutter.dev/docs/development/data-and-backend/state-mgmt

Estudo de caso de migração do nativo para Flutter:
https://segunda.tech/posts/2020-07-12-flutter-em-producao

Guia oficial do Google de arquitetura para Android:
https://developer.android.com/jetpack/guide

MVC, MVP, VIPER, RIBLET, Clean Swift, etc:
https://medium.com/flawless-app-stories/the-only-viable-ios-architecture-c42f7b4c845d

SOLID e Clean Code no Flutterando:
https://www.youtube.com/watch?v=C8mpy3pwqQc&feature=youtu.be

Android Clean Architecture Boilerplate:
https://github.com/bufferapp/android-clean-architecture-boilerplate

Projeto de exemplo do Android disponibilizado pela equipe de  desenvolvimento do Android sugerindo forma de organizar o projeto mobile  em Android:
https://github.com/android/architecture-samples

Projeto organizando aplicação móvel em Android levando em conta princípios do Clean Code:
https://github.com/android10/Android-CleanArchitecture

Similar ao repositório acima, mas com o foco em Kotlin:
https://github.com/android10/Android-CleanArchitecture-Kotlin

Gerador de nomes de arquiteturas pra iOS (hahahaha):
https://iosarchitecture.top

Aug 13, 202058:30
Arquitetura Monolítica versus Microsserviços - parte 3
Aug 06, 202051:36
Arquitetura Monolítica versus Microsserviços - parte 2
Jul 30, 202047:19
Arquitetura Monolítica versus Microsserviços - parte 1
Jul 23, 202034:48
O que é Arquitetura de Software?
Jul 16, 202001:13:04