Anotações do SC Dev Summit 2016

O SC Dev Summit foi um seminário sobre desenvolvimento de software que ocorreu em Joinville, Santa Catarina, nos dias 20 e 21 de maio de 2016. Ele foi dividido em duas partes: o dia do back-end e o dia do front-end. Apesar dessa divisão, parece que isso mais uniu do que dividiu o público.

Docker, Kubernetes & Openshift

Palestra de Mateus Caruccio

  • Docker = containers. Kubernetes = deploy e escala desses containers
  • Rolling deployment = levanta as novas imagens conforme as antigas deixam de ser usadas e vão sendo derrubadas (ou seja, não dá kill all pra levantar as imagens novas).
  • Usuário acessa um router/balanceador que aponta pro serviço (composto por vários containers), que por sua vez se comunica com outros serviços.
  • Microserviços atômicos, centrados em APIs e que usam HTTP.
  • 12factor.net
  • Log centralizado com ELK (ElasticSearch, Logstash, Kibana)

Introdução a Worker

Palestra de Sérgio Siqueira.

  • Message Queue = fila, gerenciamento das tarefas
  • Worker = executa as tarefas

Integração Contínua

Palestra de Thiago Paes

  • Programação orientada a tapa na cara: merge somente com Pull Request e build verde. Tudo passa por code review.
  • Testes? Obrigatório senão o merge não rola. Estilo? Acusa os problemas, mas não impede o merge.
  • Mesmo trabalhando sozinho, ele cria Pull Requests pra si mesmo pra passar pelo CI.

Let's Log!

Palestra de Elton Minetto

  • Importante pensar: quem vê? O que precisa saber? Quando expira?
  • Hoje fica fácil trocar de componente de log com o padrão PSR-3 (interfaces de logger).
  • Monolog foi criado pelo criador do Composer. Ele possui: handlers (filtra o conteúdo), processors (adiciona informações adicionais) e o logger.
  • Existem diversas faixas de níveis de erro, importadas do modelo de logs do Linux.
  • Monolog-viewer para ver os logs locais com uma interface maneira.

A revolução dos Middlewares

Palestra de Paulo Rezende

  • É uma espécie de “pipe” onde um middleware passa pro próximo da fila até que algum retorne.

Stand-Up do Pokemao

Stand-up de Rodrigo Wanderley

Microservices e RabbitMQ

Palestra de Leandro Lugaresi

  • Sugere usar UUIDs ao invés de sequências para as mensagens, para evitar colisão de IDs.
  • Usar um "Correlation ID", para rastrear uma requisição ao longo de múltiplos microserviços.
  • Cuidado com mensagens duplicadas, pois de vez em quando podem aparecer e o sistema tem que estar preparado pra isso.
  • É importante monitorar as filas. Ver se não estão muito cheias e começando a travar (existe uma quantidade de mensagens após a qual o RabbitMQ começa a ficar lento).
  • Perguntei sobre o que fazer quando preciso de uma informação de outro microserviço para gerar um relatório (exemplo: quero a descrição de produto no microserviço de vendas e no de estoque também). Ele sugeriu duas alternativas: PrestoDb (uma ferramenta de SQL em múltiplas bases que o Facebook desenvolveu) ou a duplicação. Me parece que dada a redução de complexidade, a duplicação não é uma alternativa tão ruim assim.

Torne-se um Jedi com streams

Palestra de Matheus Marabesi

  • Existem vários wrappers: php://, file://, http://, ftp://, compress.zlib://, glob://, dataL//, etc.
  • Podemos criar wrappers personalizados estendendo uma classe StreamWrapper.
  • Ao invés de ter que aprender várias funções (biblioteca zlib, biblioteca FTP, biblioteca CURL, etc.) posso simplesmente usar o fopen ou file_get_contents.
  • Precisa fazer um post? Não precisa de CURL, dá pra criar o contexto com stream_context_create e passar pro fopen/file_get_contents
  • É possível encadear wrappers: ftp + zlib, por exemplo.

Flexbox, uma visão geral

Palestra do Maujor

  • Flexbox serve para componentes da página. Para o layout em si, há outra coisa chamada Grid Layout que ainda está em fase de rascunho na W3C.
  • O IE 11 suporta parcialmente. Existem polyfills pros browsers antigos.

Entendendo JavaScript

Palestra de Diego Faria

  • Tipos primitivos são passados por cópia, objetos são passados por referência nos argumentos de um método.

Pure Functions no JavaScript

Palestra de Rafael Cianci

  • Funções puras sempre retornam o mesmo resultado para os mesmos parâmetros e não causam efeitos colaterais.

Reduxing your sadness

Palestra de Rodolfo Pereira

  • Falaram sobre um framework próprio que tinham, mas que a documentação não era boa e ficava na cabeça das pessoas.
  • Começaram a usar React, porque tiveram uma experiência ruim com Angular.
  • Começaram a usar Flux para gerenciar o estado entre componentes. O fluxo é unidirecional (não é 2-way como no Angular). Documentação ruim e difícil gerir múltiplas stores.
  • Acharam a felicidade no Redux. Tem uma documentação ótima (Dan Abramov) e resolve problema das múltiplas stores.

O poder da linha de comando

Palestra de Aurélio Jargas

  • Podemos executar pelo terminal muitas tarefas repetitivas que na IDE não conseguimos fazer.
  • Tudo é texto. Cada comando faz uma única coisa, muito bem e muito rápido. Encadeamentos tudo para fazer operações complexas.
  • >> faz um append, > zera o arquivo.
  • pbcopy copia pra área de transferência no MacOSX.

Por que você deveria usar IONIC

Palestra de Daniel Jesus

  • O ganho de performance de fazer aplicativo nativo pode não compensar a perda de produtividade em relação a um aplicativo híbrido.
  • Antigamente era difícil, pois só havia Phonegap + Sencha + jQuery Mobile.
  • Hoje temos o Ionic, que une Gulp + Sass + Angular + Cordova. Ele é um conjunto de diretivas pro Angular que abstrai o Cordova.
  • Alguma ferramentas legais: Ionic Creator (criar views clicando e arrastando), Ionic Lab (hub de aplicativos), Ionic Push (push notifications), Ionic View (ver e testar aplicações sem compilar o .apk/.ipa), Ionic Deploy.
  • A versão 2.0 suportará Angular 2 e a Internet das coisas (iBeacons, relógios, etc.).

Componentes CSS

Palestra de Luiz Rodrigues

  • Princípios do CSS: especificidade (1º estilos do usuário, 2º estilos da página, 3º estilo padrão do navegador), efeito cascata (peso do seletor de acordo com importância, origem, etc.) e herança (regras do elemento pai passam pro filho, exceto width/height/margin/padding).
  • Explicou como se formam as gambiarras os componentes CSS (melhor ver os slides para ver o exemplo).
  • Componentes precisam ser autossuficientes, encapsular sua função e ter uma API de acesso.
  • Pré-processadores (SASS, LESS, etc.) permitem o uso de coisas que não existem no CSS, como mix-ins e extends.
  • CSS Modules encapsula bem, mas é meio gambiarra. Gera IDs únicos para nomes de classes CSS.
  • Existem metodologias sobre como organizar os componentes, como a BEM e a SMACSS.
  • PostCSS permite usar recursos de CSS que ainda não foram homologados. Espécie de polyfill.

HTML 5

Palestra de Yoseph Santos

Written by

Software development nerd. In 💙 with Ruby, PHP, JavaScript, Crystal, and other techy stuff.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store