bash

Bash: Reverse Search

No Bash, é comum reexecutarmos comandos o tempo inteiro, especialmente quando precisamos compilar um programa ou mover um arquivo. O que se faz geralmente é ir apertando a tecla “para cima” e encontrar o comando desejado. Essa tarefa pode ser um pouco custosa, uma vez que o comando pode ter sido executado há horas e então, ficar voltando enumeros comandos não deve ser muito interessante.

(mais…)

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…)

python-logo

Utilizando Shared Objects no Python

Python é realmente uma linguagem muito versátil, tendo a mão quase sempre tudo o que se precisa fazer. Então, a algum tempo atrás eu precisava verificar a possibilidade de carregar um Shared Object com o Python, e eis que encontrei. A documentação do Python é realmente muito útil, com exemplos de utilização de módulos, inclusive do módulo em questão.

Para poder carregar a lib, eu utilizei o módulo ctypes. Este módulo provê tipos de dados compatíveis com o C e permite chamar bibliotecas, como DDLs e shared objects. Para iniciar o exemplo, eu criei uma lib, na verdade um shared object, a seguir:

(mais…)

libvirtLogo

Virsh: criando e gerenciando VMs pelo terminal

O virsh é um utilitário criado para gerenciar máquinas virtuais de tecnologias como KVM, Xen, VMware ESX, QEMU entre outras. Esse suporte se deve ao fato do virsh ser construído utilizando a libvirt como base.

De uma forma simples, a libvirt é uma API/daemon criada pela Red Hat para gerenciar máquinas virtuais. Assim como o virsh, outras ferramentas são baseadas na libvirt para gerenciar VMs, como virt-manager, OpenStack e oVirt. Apesar de ser escrita em C, existem bindings para outras linguagens, como Python, Perl, Ruby, Java e PHP.

(mais…)

Vaga para programador Linux/C em Blumenau

O profissional trabalhará para empresa com sede em Blumenau-SC, que por sua vez foi contratada  para prestar serviços a uma empresa com Sede nos Estados Unidos (www.zpesystems.com) , no desenvolvimento de Software.

Desenvolvedor de Software para ambiente Linux e C

Responsabilidades: Esta posição é responsável por desenhar e
implementar aplicativos em SW para sistema operacional em Linux,
incluindo desenvolvimento de novos aplicativos, melhorias e correções
em aplicativos existentes, instalação de pacotes de aplicativos de
código aberto. Esta posição responde para o supervisor do time.

(mais…)

Captura de tela de 2015-06-08 23-26-13

Hands on: quilt

Quilt é uma ferramenta para criação e manipulação de patches de código fonte. Sua utilização é bem simples e permite criar patches de forma bem prática. Ele foi originalmente criado pelo desenvolvedor Andrew Morton, sendo uma série de scripts para gerenciar patches no Linux. Mas Andreas Grünbacher, um outro desenvolvedor, melhorou os scripts de Andrew para gerar constumizações do kernel para o SuSe Linux.

Para um exemplo prático, vejamos a seguinte estrutura de arquivos:

[[email protected] pytabs]$ ls
main.py  new_tab.py  new_tab.pyc  new_tab.ui  window.ui

Para criar um novo patch, execute:

quilt new alteracao1.patch

Após a execução deste comando, será criada uma pasta “patches”, que conterá todos os patches criados. Por hora esta pasta contém apenas o arquivo series, já que não adicionamos e nem alteramos nenhum arquivo para adicionar ao patch recem criado. O arquivo series mostra a ordem em que os patches criados serão aplicados.

(mais…)

index

Interagindo com a câmera do Raspberry Pi

Interagir com a câmera do Raspberry Pi é muito simples, graças ao módulo criado pelo desenvolvedor Dave Jones (veja seu github aqui). Este módulo torna simples tirar fotos, fazer vídeos e alterar parâmetros da câmera.

A câmera que iremos utilizar foi fornecida pela Loja Mundi e você pode comprá-la aqui.

Primeiro, segue um vídeo de como deve-se instalar a câmera no Raspberry:

Para fazer este tutorial, foi utilizada a distribuição Raspbian. Este mesmo tutorial pode ser utilizado com outras distribuições, basta ter o mesmo pacote python instalado. Para instruções de como baixar e instalar o Raspbian no seu Raspberry Pi, basta verificar aqui.

O pacote necessário para interagir com a câmera se chama python-picamera. Para instalar este pacote no Raspbian, primeiro atualize o repositório e execute o apt-get:

apt-get update
apt-get install python-picamera

Para mostrar sua simplicidade, segue abaixo o código necessário para tirar uma foto com a câmera:
O código é auto explicativo: é importado o módulo da câmera, instanciado o objeto e chamado o método para tirar uma foto, e esta é salva no arquivo foto.jpg. Segue um “selfie” tirado do Raspberry com este código:
foto

Para tirar fotos a cada 10 segundos:

Além disto, o módulo picamera consegue utilizar a câmera para mostrar em tempo real a câmera, funcionando como uma webcam, e ainda consegue gravar vídeos. Para mostrar imagens da câmera em tempo real, basta executar:

camera.start_preview()
camera.stop_preview()

O preview sobrepoe a seção atual do python. Para parar o preview, precione Ctrl-D.

Para gravar um vídeo de 5 segundos:
Segue vídeo gravado como exemplo:

Este módulo ainda suporta configurações da câmera, como saturação, brilho, flip vertical e horizontal da imagem, e vários outros recursos:

E a imagem tirada com estas configurações:
foto_config

Existem outras configurações e seus valores padrão são estes:

camera.sharpness = 0
camera.contrast = 0
camera.brightness = 50
camera.saturation = 0
camera.ISO = 0
camera.video_stabilization = False
camera.exposure_compensation = 0
camera.exposure_mode = 'auto'
camera.meter_mode = 'average'
camera.awb_mode = 'auto'
camera.image_effect = 'none'
camera.color_effects = None
camera.rotation = 0
camera.hflip = False
camera.vflip = False
camera.crop = (0.0, 0.0, 1.0, 1.0)

Um efeito interessante é gravar e ir alterando estes efeitos durante a gravação:

Clique aqui para a documentação completa sobre o módulo picamera. Espero que tenham gostado, e que se divirtam tanto quanto eu me diverti fazendo esta postagem. Até a próxima!

Referência: Página Oficial Raspberry Pi – Câmera