DatabaseCast 65: front-end, back-end e DBA

Olá, pessoal! Neste episódio, Mauro Pichiliani (Twitter | Blog) e os convidados Felipe Montanha (@femontanha) e Ramon Sanches (@raymonsanches), do podcast DevNaEstrada (@devnaestrada), falam sobre front-end, back-end e DBA. Hoje você vai aprender a classificar um cargo por uma sigla com duas vogais, usar a palavra engenheiro e hacker para tudo, colocar a culpa pela lentidão do site no JavaScript e julgar a organização da mesa dos colegas!

Não deixe de nos incentivar acessando o site do …

[Leia mais]
Gerenciando o fluxo assíncrono de operações em NodeJS

O desenvolvimento de aplicações NodeJS aumenta a cada dia, talvez pela facilidade de desenvolvimento, bibliotecas em crescente evolução ou simplesmente pelo fato de utilizar JavaScript em ambientes que exijam performance e assincronia. Como sabemos, aplicações deste tipo não resolvem todos os problemas. Conforme a aplicação vem crescendo, precisamos nos atentar à alguns detalhes. Hoje falaremos sobre como escrever um código limpo para funções assíncronas, explorando o uso dos padrões criados para aplicações deste tipo.

Callbacks     

A programação assíncrona não usa o retorno da função para informar que a função foi finalizada. Ela trabalha com o “estilo de passagem de continuação (continuation-passing style), CPS”. Em definição, uma função escrita neste estilo recebe como argumento uma “continuação explícita”. Quando a função resulta um valor, ela …

[Leia mais]
Python para DevOps: uma habilidade para se desenvolver

A complexidade das camadas que compõem um sistema web exige cada vez mais esforço dos full stack developers ou full stack integrators, que devido à natureza dinâmica dos requisitos da indústria de software precisam se manter atualizados com as novas linguagens de programação e ferramentas que surgem e se provam eficazes com o passar dos anos.

Tim Peters, um guru da linguagem Python e muito influente na comunidade, escreveu em uma lista (muito famosa) que deve existir um e, preferencialmente um, jeito óbvio de solucionar um problema.

Podemos implementar uma lista de requisitos de várias formas, mas a produtividade que cobiçamos está diretamente relacionada à nossa capacidade de escolher os melhores acessórios possíveis para a realização do trabalho.

Todas as linguagens de programação têm seus contras e …

[Leia mais]
Monitoramento refinado para Amazon RDS (MySQL 5.6, MariaDB e Aurora)

O Amazon Relational Database Service (RDS) facilita a configuração, a operação e a escalabilidade de bancos de dados relacionais na nuvem. Como é frequentemente o caso com modelos AWS de alto nível, nós cuidamos de todos os detalhes, a fim de dar-lhe o tempo para se concentrar no seu aplicativo e na sua empresa.

Monitoramento refinado

Usuários avançados do RDS pediram-nos para mais detalhes sobre o funcionamento interno do serviço e estamos felizes em anunciar o novo recurso de monitoramento refinado!

Depois de ativar esse recurso para uma instância de banco de dados, você terá acesso a mais de 50 nova métricas de CPU, memória, sistema de arquivos e discos de I/O. Você pode ativar esses recursos em uma base por instância e pode escolher a granularidade (até 1 segundo). Aqui está a lista de métricas disponíveis:

[Leia mais]
Instalação MySQL 5.7 no Ubuntu 15.10


Ubuntu é hoje uma das distribuições Linux mais populares, principalmente pela facilidade de instalação e configuração. O MySQL 5.7 oferece novos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. Neste tutorial veremos como instalar o MySQL 5.7 no Ubuntu 15.10.

Nota: usei o Ubuntu em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalados, basta executar:shell> vagrant init boxcutter/ubuntu1510shell> vagrant up --provider virtualbox

3 opções de instalaçãoTemos 3 …

[Leia mais]
Desenvolvendo uma aplicação web com Lumen e MySQL

O Lumen é um novo microframework PHP desenvolvido por Taylor Otwell, o mesmo autor do famoso framework Laravel. Eu quis lhe dar uma chance e estou aqui para compartilhar as minhas experiências. Não sou um especialista em Lumen (ainda), mas acho que uma das melhores características desse framework é que ele torna realmente muito fácil iniciar um novo projeto. Então, para provar isso, vamos agora construir um aplicativo totalmente funcional suportado por um banco de dados MySQL em menos de 30 minutos. Você está pronto para começar?

Uma frase motivacional diária

Nosso aplicativo deve ser bastante simples, mas eu gostaria também de fazer algo útil. Sou um grande fã de citações motivacionais, e se …

[Leia mais]
Forçando transação vitima de rollback em deadlock

Se você utiliza uma Storage Engine que suporta transações, você provavelmente já enfrentou ou ouviu falar de deadlock's.

Na Documentação do MySQL podemos ver:
“Always be prepared to re-issue a transaction if it fails due to deadlock. Deadlocks are not dangerous. Just try again.”
“Sempre esteja preparado para re-executar uma transação se ela falhar por causa de deadlock. Deadlocks não são perigosos. Apenas re-execute a transação.”

Na empresa em que trabalho, temos um importante processo que de vez em quando falha por causa de deadlock. Decidi então melhorar este processo e fazer o que a documentação diz (re-executar a transação).
Para fazer isso, Eu queria poder reproduzir o scenario do deadlock e a transação vitima do rollback teria que ser a do processo em questão.

[Leia mais]
10 coisas para não fazer no PHP 7

Com o lançamento do PHP 7, surge a oportunidade de podermos, de certa forma, melhorarmos algumas práticas que vínhamos executando.

Neste artigo estão reunidas algumas “manias” que é melhor deixarmos de lado para poder aproveitar tudo que de melhor o PHP tem a nos oferecer.

1. Não utilize funções mysql_*

Finalmente chegou o tempo em que não seremos mais apenas orientados a não utilizar as funções mysql_*. No PHP 7 essas funções foram retiradas, o que significa que você terá que mudar para as funções (muito melhores, por sinal) mysqli_*, ou então utilizar alternativas melhores ou mais flexíveis como PDO ou um ORM.

2. Evite desperdício de código

Em outras palavras: não escreva código inútil que desperdice o desempenho. Na verdade, a velocidade no PHP 7 aumentou …

[Leia mais]
Trabalhando com o INFORMATION_SCHEMA

Olá pessoal!

Hoje eu vou falar um pouco sobre o INFORMATION_SCHEMA e as informações contidas nesta base de dados.

O que é o INFORMATION_SCHEMA?

O INFORMATION_SCHEMA é um banco de dados somente leitura que fornece acesso aos METADADOS (metadata) do servidor. Os metadados são dados sobre os dados, tais como o nome de uma base ou de uma tabela, o tipo de dados de uma tabela, ou privilégios de acesso. Outros termos que às vezes são usados para estas informações são: data dictionary e system catalog. É o banco de dados de informações, informações sobre todos os outros bancos de dados que o servidor MySQL mantém. Dentro do INFORMATION_SCHEMA existem várias tabelas que são somente leitura, não são tabelas de base, não existem arquivos associados a elas. Além disso, não há nenhum diretório de banco de dados com esse nome.

Embora você possa selecionar o INFORMATION_SCHEMA como banco de …

[Leia mais]
Trabalhando com o INFORMATION_SCHEMA

Olá pessoal!

Hoje eu vou falar um pouco sobre o INFORMATION_SCHEMA e as informações contidas nesta base de dados.

O que é o INFORMATION_SCHEMA?

O INFORMATION_SCHEMA é um banco de dados somente leitura que fornece acesso aos METADADOS (metadata) do servidor. Os metadados são dados sobre os dados, tais como o nome de uma base ou de uma tabela, o tipo de dados de uma tabela, ou privilégios de acesso. Outros termos que às vezes são usados para estas informações são: data dictionary e system catalog. É o banco de dados de informações, informações sobre todos os outros bancos de dados que o servidor MySQL mantém. Dentro do INFORMATION_SCHEMA existem várias tabelas que são somente leitura, não são tabelas de base, não existem arquivos associados a elas. Além disso, não há nenhum diretório de banco de dados com esse nome.

Embora você possa selecionar o INFORMATION_SCHEMA como banco de …

[Leia mais]