Skip to content

Instantly share code, notes, and snippets.

View brenofreire's full-sized avatar
💡
Having consecutive insights

Breno Freire brenofreire

💡
Having consecutive insights
  • Arionkoder
  • Vitória da Conquista, Bahia, Brazil
View GitHub Profile
@brenofreire
brenofreire / alura_java_clean_architecture.md
Last active August 28, 2021 20:40
Alura Anotações - Java e Clean Architecture: Descomplicando arquitetura de software

O que abrange à Arquitetura de Software?

From the book Documenting Software Architectures:

Views and Beyond (2nd Edition), Clements et al, AddisonWesley, 2010:

  • The set of structures needed to reason about the system, which comprises software elements, relations among them, and properties of both. how the elements relate to each other.

From the book Software Architecture in Practice

(2nd edition), Bass, Clements, Kazman; AddisonWesley 2003:

  • This means that architecture specifically omits certain information about elements that does not pertain to their interaction.
@brenofreire
brenofreire / alura_angular_rxjs.md
Created August 28, 2021 17:34
Alura Anotações - Angular e RxJS: Programação reativa

Sobre RxJS

Think of RxJS as Lodash for events. Pensar dessa forma é interessante porque criar um mecanismo de eventos não é um conceito raro ou complexo, contudo o RxJS tem funcionalidades builtin que facilitam o manuseio de eventos, como por exemplo o uso de operadores. É importante ressaltar que esses operadores são funções puras que tornam seu código menos propenso a erros.

O RxJS usa o Observer pattern, no qual as principais vantagens são:

  • A one-to-many dependency between objects should be defined without making the objects tightly coupled.
  • It should be ensured that when one object changes state, an open-ended number of dependent objects are updated automatically.
  • It should be possible that one object can notify an open-ended number of other objects.
@brenofreire
brenofreire / alura-anotacoes-angular-tests-1.md
Created August 10, 2021 13:34
Alura Anotações - Angular Testes Automatizados Jasmine Karma

Fail fast

  • É importante desenvolver pensando em testes, ou fazer os testes pensando em desenvolver...
  • Programas que apresentam a falha rápido ajudam na hora de validar o teste

Um bom template na hora de descrever o teste

  • Estrutura: #function should action when condition

Testando Throws no Jasmine

  • Quando for pra testar throw tem que chamar a função com arrow function expect(() => function()).toThrow()
@brenofreire
brenofreire / gist:2881f6ddbeb5f198b6fb28e7b259532e
Created August 2, 2021 20:44
Alura Anotações - Angular: Boas práticas em arquiteturas e formulários Angular: Boas práticas em arquiteturas e formulários

Alguns pontos interessantes que encontrei nesse curso

Sobre a criação de componentes via CLI

  • Você pode usar o -d te mostrar antes de criar, como vai fica a estrutura/path daquele componente

Lazy Loading

  • A estratégia de Lazy Loading de componentes diminui o bundle da aplicação e o download sob demanda faz diminuir o consumo de banda.

Você pode criar uma referência ao componente usando #, similar ao useRef do React

  • #nomeDoCampo = nome do attr pra referenciar um elemento
@brenofreire
brenofreire / medium-socketio-adonisv5.md
Last active November 22, 2023 15:04
[MEDIUM] Usando Socket.io + AdonisJS V5

Usando Socket.io + AdonisJS V5

Recentemente me propus um desafio novo, construir um boilerplate de uma API em NodeJS usando TypeScript como parte de uma demanda do meu setor.

Por ter uma boa experiência com Angular, alinhado com a necessidade de criar uma API que fosse de fácil acesso à desenvolvedores frontend que já mexiam com TypeScript. Conversando em um canal no Telegram um amigo me falou sobre o AdonisJS em sua versão 5.

Foi amor a primeira vista.

@brenofreire
brenofreire / paginacaoOtimizada.js
Last active February 28, 2020 17:37
Paginação otimizada
currentPage(direcao) {
const [minPages, maxPages] = [1,5];
if(direcao === 'next') {
return Math.min(++currentPage, maxPages);
}
return Math.max(--currentPage, minPages);
}
@brenofreire
brenofreire / understandingReduce.js
Created February 25, 2020 16:15
Entendendo melhor o "reduce" de array do JavaScript
// Função que a recorrência de caracteres em uma frase.
function countChars(string) {
return string.split('').reduce((init, current) => {
return init[current] = (init[current] || 0) + 1;
}, {});
}
// Esse segundo parâmetro do reduce é um valor inicial.
// Por ele iniciar com {} isso significa que eu posso manipular
// o retorno como um objeto.
@brenofreire
brenofreire / likePhrase.js
Last active February 24, 2020 00:45
Monta a frase de curtidas como no facebook
function likes(names) {
const templates = [
'no one likes this',
'{name} likes this',
'{name} and {name} like this',
'{name}, {name} and {name} like this',
'{name}, {name} and {n} others like this',
];
// Isso aqui é genial, porque se tiver muito nome ele não explode o template
const max = Math.min(names.length, templates.length - 1);
@brenofreire
brenofreire / toCapitalize.js
Last active February 22, 2020 16:38
Retorna uma string capitalizada
// O método map retorna um valor mapeado pro array original.
// Ou seja nesse caso, ele retorna a string obedecendo aquela regra.
// Vale lembrar que o uso dos objeto global de string nesse caso é bem inteligente.
String.prototype.toCapitalize = () => {
return this.split(" ").map(word => {
return word.charAt(0).toUpperCase() + word.slice(1);
}).join(" ");
}
@brenofreire
brenofreire / countSheeps.js
Created February 21, 2020 01:48
Conta quantos items são verdadeiros em um array
// O array filter do JS te ajuda muito quando você quer fazer uma seleção específica (filtro ;)
function countSheeps(arrayOfSheeps) {
return arrayOfSheeps.filter(Boolean).length;
}