Git – Sistema de controle de versões distribuído

Logotipo do GitSe você trabalha com desenvolvimento e não registra as alterações feitas no seu projeto, você está praticamente perdido. O que fazer se uma alteração for enviada para produção e der algum erro? Tira tudo do ar? Restaura um backup? Da mesma forma, como descobrir quem fez essa alteração – no caso de você trabalhar em uma equipe de 5, 10, 20 pessoas? – e ainda, como separar o trabalho de cada um de tal forma que seja possível criar vários recursos novos para um mesmo projeto, paralelamente, juntando todas as alterações no final, sem necessitar do uso de pendrives para copiar arquivos para lá e para cá? Bom, é com o objetivo de facilitar todas essas tarefas que hoje eu vou falar um pouco (e apresentar um breve tutorial) sobre o Git, um poderoso sistema de controle de versões distribuído.

Continuar lendo Git – Sistema de controle de versões distribuído

Falando um pouco sobre custos e a “melhor solução” para tudo

E aí, que decisão tomar?No desenvolvimento de aplicações, sites, e tudo o mais, é comum lidar com muito material falando sobre performance. “Vamos fazer desta forma porque vai economizar 10ms do carregamento da página”, “vamos usar essa plataforma pois vai permitir que a gente escale de 1 a 1000 servidores em 10 segundos”, “vamos utilizar essa linguagem porque ela é assíncrona e vai permitir atender picos muito rapidamente”. São muitas as escolhas que você realmente pode e na verdade deve fazer durante o desenvolvimento, mas, ao mesmo tempo que todo mundo fala dos pontos positivos, é raro você ver alguém falando sobre os custos e sobre as eventuais dificuldades que você vai enfrentar. E é sobre isso que eu vou falar um pouco hoje.

Continuar lendo Falando um pouco sobre custos e a “melhor solução” para tudo

SGBDs – O que são, o que fazem e alguns fatos importantes sobre eles

você sabe qual a importância dos SGDBs em relação aos seus dados?

Praticamente toda aplicação criada hoje precisa armazenar informações de algum jeito. Entretanto, lidar com armazenamento de informações não é algo exatamente simples, pois é necessário tratar inúmeros problemas, como modificação concorrente de dados, criação de índices para realização de consultas mais eficiente, leitura dos dados no disco de maneira eficiente, compressão de dados (em alguns casos), cache das consultas para consultas muito frequentes, e também garantir que só para citar alguns dos casos de uso.  Hoje, apresentaremos alguns exemplos de SGBDs, o que são, numa definição mais precisa, e alguns exemplos que você pode encontrar facilmente na web e dos quais falaremos mais em outros posts aqui no blog.

Continuar lendo SGBDs – O que são, o que fazem e alguns fatos importantes sobre eles

Docker – O que é, o que não é, e alguns detalhes a mais

Logotipo do DockerNo último post, eu falei um pouco sobre o Vagrant,  que é uma ferramenta que permite criar e distribuir máquinas virtuais voltadas especificadamente para desenvolvimento de software. Pois bem, quem já é mais antenado nas últimas novidades, ao ler o último post, deve ter pensado algo como “nossa, mas já temos o Docker, e containers são muito melhores que máquinas virtuais!!!!!”. E bem, na verdade, tempos atrás, eu mesmo teria dito o mesmo sobre quem ousasse comentar sobre Vagrant, máquinas virtuais e tal. Por isso, hoje, vou falar sobre o Docker, o que ele faz, o que ele não faz, seus recursos, uma breve comparação com o Vagrant e todo o contexto das máquinas virtuais e também um breve tutorial de uso.

Continuar lendo Docker – O que é, o que não é, e alguns detalhes a mais

Vagrant – Máquinas virtuais automatizadas para desenvolvimento

Logotipo do VagrantQuando você começa a trabalhar com programação, é a principio normal que sua máquina fique um pouco bagunçada. Bibliotecas pra cá, interpretadores pra lá, compiladores ali, e assim vai. Depois de algum tempo, você até se encontra de forma que consegue usar tudo o que você mesmo colocou e dessa forma consegue fazer o que quer, ou seja, programar. O problema é quando você precisa efetivamente replicar este mesmo ambiente em outras máquinas, como a máquina dos seus colegas de trabalho,  por exemplo, ou quando você por algum motivo perde todos os dados da máquina (como quando o HD resolve pifar, o que costuma acontecer com certa frequência, pelo que vejo). É aí que a situação complica, e por causa disso hoje vou falar um pouco sobre o Vagrant e inclusive apresentar um breve tutorial sobre como usá-lo da maneira devida.

Continuar lendo Vagrant – Máquinas virtuais automatizadas para desenvolvimento

FlexboxFroggy – Como aprender CSS Flexbox, jogando

Froggy - O sapinho que você tem que posicionar usando CSS Flexbox no FlexboxFroggyQuando a internet começou, tínhamos recursos muito básicos implementados nos navegadores, e por isso os sites normalmente eram feitos sem muita estrutura, apenas contendo textos e sem muitos estilos aplicados. Depois de algum tempo, a internet evoluiu um pouquinho, e os sites começarem a ser mais estruturados, com barras laterais, menus, cabeçalho e rodapé melhor definidos, através do uso de tags <table>. Depois de mais algum tempo, começou a surgir a prática do tableless, que usava CSS para criar sites estruturados sem o uso de tags <table>. E, a partir dessa prática do tableless, surgiu incontáveis bibliotecas de grid, normalmente (mas não necessariamente) integrada a frameworks CSS, como o Bootstrap e o Foundation, que facilitam e muito a criação de sites tableless com o uso de grids pré-definidas (normalmente de 12 colunas). Com a evolução do HTML5 e do CSS3, entretanto, novas técnicas de organizar conteúdo na tela estão surgindo, e hoje vou falar sobre um jeito prático de aprender uma dessas novas técnicas, chamada Flexbox, jogando.

Continuar lendo FlexboxFroggy – Como aprender CSS Flexbox, jogando

Jimple – Container de Injeição de Dependências desenvolvido em ES6

Em aplicações simples, é normal você não precisar lidar com muitas classes, funções ou variáveis. No NodeJS, por exemplo, para fazer um “Hello World” usando ExpressJS você normalmente precisa lidar com apenas 2 variáveis (no máximo do máximo). Mas, quando a aplicação vai ficando maior, é normal você começar a lidar com dezenas de classes, e, se bem projetadas, com suas dependências. Hoje, vou falar um pouco sobre o Jimple, uma biblioteca prática que desenvolvi para resolver esse problema no desenvolvimento com NodeJS. Continuar lendo Jimple – Container de Injeição de Dependências desenvolvido em ES6