maio 13, 2014

Criando e Gravando uma ISO de DVD

Em determinados momentos, precisamos fazer uma cópia de um DVD, de backup, arquivos, etc.
Para resolver este problema, é necessário um gravador de DVD na máquina, e somente três passos.

O primeiro passo é referente a identificar qual o ponto do montagem do DVD, insirir o DVD no driver, e em seguida digitar o seguinte comando:
cat /pro/mounts
Serão listados todos os pontos de montagem, onde podemos identificar qual é o do DVD. No exemplo /dev/sr0.

O próximo passo, é fazer a imagem do DVD, para isso utilizamos o comando dd:
dd if=/dev/sr0 of=filename.iso
Este processo é um pouco demorado, e não há atualização na tela, portanto deve-se espera a conclusão.

O terceiro passo, a gravação, requer o software growisofs, que no debian pode ser instalado com o seguinte comando (como root):
#apt-get install dvd+rw-tools
Deve-se colocar um dvd vazio no driver, e inserir o seguinte comando (como root, caso seu sistema não permita a gravação de dados em devices diretamente):
#growisofs -dvd-compat -Z /dev/sr0=filename.iso
Este processo também é demorado, porém há atualizações na tela, onde são mostradas a porcentagem de conclusão, velocidade de gravação e outros detalhes.
Ao final do processo uma mensagem parecida com esta deve ser mostrada:
builtin_dd: 657008*2KB out @ average 4.1x1352KBps
/dev/sr0: flushing cache
/dev/sr0: updating RMA
/dev/sr0: closing disc

Pronto, o DVD está copiado e pode ser utilizado!

maio 16, 2013

Criando um pacote deb V2

O processo padrão continua sendo como descrito no post original, porém vou adicionar mais alguns detalhes.

Há um momento em que se torna necessária a inclusão de bibliotecas terceiras no seu código, e a execução de algum comando antes ou após a instalação e antes do usuário utilizar seu aplicativo.

Para adicionarmos uma dependência no pacote deb, devemos adicionar a linha abaixo, com o nome da lib utilizada, no exemplo as libqtcore4 e libqtgui4.
Depends: libqtcore4, libqtgui4

Para adicionarmos um script, o segredo é onde e com quem nome esse script deve ser criado.
Há alguns tipos de script, vou falar sobre dois, o preinst e postinst.
O preinst é executado antes da instalação e o postinst apósa instalação.
Os scripts devem ser salvos com estes nomes, senão não serão executados, e eles devem ser colocados dentro da pasta DEBIAN, junto com o arquivo control, no momento da criação do pacote.
Além disso eles devem estar marcados como para execução (chmod +x).
Dentro destes arquivos é possível fazer o que for necessário, como copiar arquivos, criar links simbólicos, etc.

setembro 12, 2012

Primeiro teste...

Como primeiro teste com o android estou fazendo este post do app do blogger para android. Este aplicativo pode ser baixado pela google play.
Aproveito aqui para relatar um teste, acessei a google play do pc, naveguei até a página do aplicativo, como eu já havia instalado outros e já estava com minha conta aberta, apareceu uma mensagem de que o software era compatível com o meu celular e um botão para instalar.
Pensei, por que não tentar? Clique  no botão, e como o cel estava conectado na internet o aplicativo logo começou a ser baixado e instalado, e cá estou utilizando.

Android... Ah o android!

Me rendi ao android, ainda não aposentei definitivamente o meu N900, na verdade quero utilizá-lo para algum desenvolvimento mais perto do hardware, tentarei fazer alguma comunicação com um algum microcontrolador, mas relatarei as tentativas.

Agora com um dispositivo android na mão tentarei desenvolver alguns aplicativos para ele, os próximos post devem ser relacionados a isto.

Ainda não terminei de escrever os posts sobre postfix, mas ficarão para depois na fila.

Criando e aplicando um Patch no svn

Algumas vezes há a necessidade de enviar as modificações do nosso código para outro lugar, para isto pode-se utilizar um patch do svn, caso nosso código esteja sobre este controle de versão.
Um patch nada mais é que um arquivo texto contendo todas as alterações , como por exemplo linhas adicionadas ou removidas. Este patch pode ser relacionado a um ou mais arquivos, em em diferentes pastas, desde que estejam no mesmo checkout do svn.

Criando um Path
Para criar um arquivo path, deve-se ir até a pasta raiz do checkout, onde encontram-se as modificações, e executar o comando abaixo:

svn diff > ~/patch_my_project.diff

Um arquivo com a extensão diff será gerado. Esta extensão é reconhecida por muitos editores de texto e também pela versão gráfica para windows do svn, o tortoise.

Aplicando um patch
Antes de se aplicar um patch, deve-se abrir em um editor de textos e ler as modificações existentes, para que se tenha certeza do que estará sendo aplicado. Após aplicar o patch, as modificações devem ser testadas e verificadas novamente antes de um commit ser realizado.
Para aplicar o patch utilizamos o comando abaixo, novamente na pasta raiz do checkout.

patch -p0 -i ~/patch_my_project.diff

A opção -p0 garante que todos os arquivos sejam achados corretamente. A opção -i informa que o parâmetro a seguir será utilizado como entrada para o patch.

Para aplicar pelo tortoise, de dentro da pasta raiz do checkout  acessa-se o menu de contexto "TortoiseSVN", e em seguida o menu "Apply patch...", uma tela onde as diferenças serão mostradas é aberta, além de uma caixa de diálogo para se escolher o arquivo de diferença. Após o arquivo ser escolhido, uma lista dos arquivos contidos no patch será mostrada, onde pode-se escolher o arquivo para verificar as modificações, além de aplicar o patch.

Após este comando a aplicação pode ser compilada, testada e então o commit pode ser realizado.

setembro 05, 2012

Instalando Python e PyQT no Windows

Em alguns passos será demonstrado como instalar, criar e rodar um simples programa em PyQT.

Primeiro é necessário instalar o Python, utilizaremos a versão 2.7.3:
1 - Vá em python.org/download e faça o download do instalador para windows (Python 2.7.3 Windows Installer);
2 -  Rode o instalador e siga as instruções em tela.

Após a instalação do Python, é necessária a instalação do PyQT, utilizaremos a versão 4.9.4:
1 - Vá em riverbankcomputing.co.uk/software/pyqt/download e faça o download do arquivo PyQt-Py2.7-x86-gpl-4.9.4-1.exe;
2 - Rode o instalador e siga as instruções em tela. (A instalação deve ser feita no mesmo diretório em que o Python foi instalado).

 Com estes dois aplicativos instalados, o ambiente para desenvolvimento com PyQT já está pronto, para criar uma aplicação deve-se acessar o menu "Iniciar" >> "Todos os programas" >> "Python 2.7" >> "IDLE (Python GUI)".
Nesta tela serão exibidas algumas informações referentes ao script que será criado.
Acesse o menu "File" e em seguida "New Window", digite o seguinte código e para rodar aperte F5, uma janela simples com um botão deve aparecer.

import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
button = QPushButton("Hello World", None)
button.show()
app.exec_()

A partir deste momento já há uma aplicação em PyQT rodando na sua máquina.

agosto 09, 2012

Redirecionando a saída do console para arquivo

As vezes a saída de texto de algum programa é grande de mais, e precisamos analisar o início, a melhor maneira seria se tivéssemos esta saída em um arquivo.
Existem 3 tipos de streams de dados

STDIN
  • Entrada padrão de dados
STDOUT
  • Saída padrão de dados
STDERR
  • Saída padrão de erro

Os programas podem receber dados do STDIN através do pipe ( comando | segundo_comando) ou através de um direcionamento de conteúdo de um arquivo (comando < arquivo.log).
Geralmente a saída dos programas é direcionada para o STDOUT, e a saída de erro para o STDERR. Estas duas saídas mostram no mesmo local (tela), porém são direcionadas por canais diferentes, e portanto se utilizarmos o pipe para direcionar esta saída para outro programa, ou então para um arquivo utilizando ">", somente a saída STDOUT será redirecionada, e a STDERR será apresentada na tela.
Esta maneira é boa caso a necessidade de log se baseie somente na saída padrão. Para adicionar a saída de erro para o arquivo podemos utilizar os seguintes comandos:

comando < arquivo.log Redireciona do arquivo para STDIN
comando > arquivo.log Redireciona STDOUT para arquivo
comando 2>&1 Redireciona STDERR para STDOUT
comando 2>&1 > arquivo.log Redireciona STDERR para STDOUT e depois para arquivo
comando &> arquivo.log Redireciona STDOUT e STDERR direto para arquivo