docker-100275159-orig

Utilizando a API REST do Docker com Python

O Docker é uma plataforma para construir e executar aplicações distribuídas. Com ele é possível executar um bash em um ambiente Debian mesmo estando dentro um Fedora, por exemplo. Seu funcionamento se assemelha ao de uma máquina virtual, mas as aplicações executadas no Docker estão de fato sendo executados no sistema host, ou seja, não existe a camada de emulação.

Isso se deve à utilização de templates de imagens do Debian (existem imagens de sistemas inteiros, como Debian, Ubuntu, e também de aplicações, como Apache, MySQL e etc). Para mais informações sobre o Docker, basta verificar a página do projeto.

Este tutorial não tem como foco instalar o Docker, então antes de tudo, verifique como instalá-lo em sua distribuição. Após instalado, você precisará iniciá-lo através do docker daemon para receber requisições HTTP, além das requisições por socket (este é utilizado pelo docker client). Antes de iniciá-lo com estas opções, você precisará ter certeza que o mesmo não esteja executando. Para tal, basta executar: (mais…)

Logo_Google_Analytics

Usando a API do Google Analytics no Python

Hoje vou mostrar como utilizar a API do Google Analytics a partir do Python.

Para quem não conhece, o Google Analytics permite que você avalie seu ROI de publicidade, bem como acompanhar seus sites e aplicativos em Flash, vídeo e redes sociais. É uma ferramente indispensável para aqueles que gostam de monitorar seus sites e saber informações relacionadas aos acessos. Claro que existem outras ferramentas similares, mas hoje mostrarei como buscar dados desta.

Primeiramente, para utilizar no Python, faremos uso da biblioteca gdata. Sua instalação é bem simples:

pip install gdata

Após instalado vamos à brincadeira.

Código

Abaixo você pode observar como recuperar algumas informações do Google Analytics. O exemplo está comentado para melhor entendimento.

Considerações

Para obter os dados é bem simples, precisamos de um cliente para a API, que no nosso caso é o AnalyticsClient. Antes de obter qualquer informação é necessário fazer a autenticação no serviço. Eu fiz uso do ClientLogin, que requer usuário e senha. Mas também podemos usar a AuthSub e a OAuth.

Se você está fazendo um serviço que ficará em um servidor, recomento o uso de ClientLogin ou OAuth, já que AuthSub requer um browser para autenticar. Já o OAuth, requer apenas uma chave de autenticação, semelhante ao ClientLogin, que requer usuário e senha da conta.

Toda busca de informações deve ser feita a partir do DataFeedQuery, que é uma classe para simplificar a busca de informações.

Se você está na dúvida de quais os parâmetros a serem usados ou os seus resultados, você pode fazer uso do Query Explorer, uma ferramenta Web para consulta de dados customizados. Ou ainda, você pode consultar a documentação Analytics Core Reporting API para obter detalhes mais precisos.

Gostou? Então continue ligado no nosso blog e veja como utilizar APIs de outros serviços nas próximas publicações.

Já posso adiantar que iremos ver APIs do Twitter, Facebook e SoundCloud.

pipes

Conhecendo Pipe e FIFO (parte final)

Esta é a última parte desta série de postagens que têm como foco explicar o funcionamento básicos de pipes e fifos no Linux. Se você não viu as primeiras duas partes, clique aqui e aqui.

Nesta postagem será explicado o funcionamento do fifo. Fifos funcionam da mesma forma que os pipes. Sua única diferença é que eles são criados no sistema de arquivos. Por serem objetos de um sistema de arquivo, o fifo deve ter um nome por onde deve ser acessado. Por esta razão o fifo é também comumente chamado de named pipe. Como o fifo se trata de um arquivo, isso permite que processos não afiliados podem utilizar o canal para trocar informações. Isto não era permitido com a utilização dos pipes, pois o fifo existia somente no contexto dos processos criados a partir do processo que criava o pipe.

Segue abaixo a verificação de um arquivo fifo no sistema de arquivos:

[[email protected] ~]$ ls -l meu_fifo
prw-rw-r-- 1 marcos marcos 0 Mar  7 14:25 meu_fifo
[[email protected] ~]$ file meu_fifo
meu_fifo: fifo (named pipe)

Podemos ver na execução do comando ls a letra p no início máscara de permissões do arquivo. Esta letra nos informa que o arquivo em questão se trata de um fifo. E ainda, executando o comando file podemos constatar o nome named pipe para o fifo.

A seguir serão mostrados dois programas, um que irá ler os dados enviados ao fifo, e outro que escreverá no fifo. Leitura:

Explicações sobre o código:

Nesta parte, é verificada a existência do arquivo meu_fifo com a chamada stat. Se esta falhar, significa que o arquivo não existe, ou que não temos permissão para ler o arquivo. Se não existir o arquivo, a chamada mkfifo cria o fifo. Esta chamada recebe um caminho, e uma máscara para a criação do arquivo. Esta máscara é a mesma que utilizada na criação de arquivos simples.

O resto do código trata de operações normais de IO. O fifo é aberto para leitura, e a cada chamada read, ele fica bloqueado até ter dados. Quando existirem dados, estes são impressos no console. Se a chamada read retornar zero, significa que o lado que escreve no fifo fechou seu file descriptor. Este mesmo comportamento ocorre com sockets: quando um dos lados fecha o seu fd, o outro lado recebe zero na chamada read, sinalizando o fim da troca de dados.

Segue agora o código do programa que escreverá no fifo:

Na parte de escrita, o programa em si é bem simples: Verifica a existência do fifo, abre o fifo como escrita, espera por entradas do usuário e as envia para o fifo.

Para compilar os programas, execute:
gcc ler.c -o ler
gcc escrever.c -o escrever

Segue abaixo os programas sendo executados:
[[email protected] fifo]$ ./ler &
[1] 11884
fifo meu_fifo previamente criado
[[email protected] fifo]$ ./escrever
Teste
Lido: Teste
Novo Teste
Lido: Novo Teste
fifo
Lido: fifo

Espero que tenham gostado desta sequência de artigos. Se houverem comentários ou dúvidas, coloquem estas nos comentários. Não se esqueça de se inscrever em nossas redes sociais. Até mais!

Referências:
fifo
mkfifo
pipe
stat

NodeJS

Node.js v0.12.0 já está disponível

Nesta sexta-feira (06/02), foi liberada a nova versão do Node.js, a v0.12.0.

O Node.js é uma plataforma para desenvolvimento ágil de aplicações Web escaláveis, construída sobre o V8 (Chrome’s JavaScript runtime). O V8 é uma engine JavaScript de código aberto desenvolvida pelo Google e utilizado no Chrome.

O Node.js v0.12.0 vem com a versão 3.28.73 do V8, que foi lançada em agosto de 2014.

Entre a versão v0.10 e a v0.12 existem várias mudanças na API, e provavelmente necessitará atualização de outras dependências.

Confira abaixo algumas das novidades

  • maxSockets não é mais limitado a 5
  • Novo mecanismo TLS
  • Adicionada API assíncrona para callbacks SNI, OCSP staplinge e eventos de armazenamento
  • Novo mecanismo para alocação de memória, diminuindo o overhead
  • Suporte inicial a ECMAScript Internationalization API 1.0 (ECMA-402)
  • Adicionada API para criptografar/descriptografar chaves pública e privada RSA

Veja a nota oficial com todas as alterações aqui.

youtube_logo

Introdução a API do Youtube com jQuery

Veremos basicamente neste artigo como utilizar a API do Youtube, caso você não saiba, API quer dizer Aplication Programm Interface, ou interface de programação de aplicações, em outras palavras é uma camada de abstração que permite ao programador fazer chamadas a serviços.

O exemplo para utilizar a API estarei colocando abaixo, mas antes você precisa saber que a maioria dos serviços que você utilizará da Google seguem um padrão de segurança para utilização, antes de mais nada você precisa acessar o console do desenvolvedor da sua conta da Google através deste link, e para adquirir uma credencial para utilizar a API siga o vídeo abaixo:

Abaixo segue o código de exemplo:

Segue imagem de exemplo de saída:

resultado_youtube-api-sample