Archive for abril, 2009

Sobre Cups

abril 30, 2009

Esse texto escrevi faz um tempo, vou postar aqui para não perde-lo!
CUPS significa: Common Unix Printing System (Sistema Unix Comum de Impressão), foi desenvolvido para tornar-se uma interface simples e padrão para todos os sistemas baseados em UNIX. CUPS tem uma interface de administração via web, onde se pode modificar, adicionar e gerenciar impressoras, no entanto essas mesmas funções pode ser realizadas no prompt do bash.

Instalando o CUPS

Provavelmente sua distribuição já deverá vir com o CUPS instalado, junto com os drivers para as impressoras, mas caso não venha você pode baixar os pacotes já compilados de sua distribuição ou baixar os fontes. Para a compilação dos fontes é necessário ter instalado os pacotes de desenvolvimento do cups em seu sistema, você pode encontrar os pacotes em

ftp.easysw.com/pub/libraries

Adicionando uma Impressora

Embora seja mais simples utilizar a interface web para a configração do cups, eu estarei escrevendo como você pode instalar sua impressora no prompt do bash.

Antes de adicionarmos uma impressora devemos verificar se ela existe, para isso utilizamos o comando lpinfo, que nos mostra uma lista de dispositivos de impressão e os modelos de impressoras disponíveis:

lpinfo -v

network socket
network beh
network bluetooth
direct usb://HP/Deskjet%203840?serial=BR67A2K0VV040R
direct hp:/usb/Deskjet_3840?serial=BR67A2K0VV040R
network http
network ipp
network lpd
direct parallel:/dev/lp0
direct canon:/dev/lp0
direct epson:/dev/lp0
network smb

A opção -v específica uma lista de dispositivos, sendo as primeiras palavras o tipo do dispositivo, onde direct significa impressoras que estão diretamente conectadas ao computador local e network aos outros tipos de conexão.

No exemplo acima tenho uma impressora conectada a uma porta USB de meu computador, é uma impressora da HP modelo Deskjet 3845, mas para que ela tenha um funcionamento correto é necessário que seja especificado um driver. Você pode ter uma lista de drivers suportados no Linux no site:

http://www.linuxprinting.org

Verificado se a impressora é compatível ao Linux é necessário descobrir se há driver da impressora disponível no sistema, para isso execute o seguinte comando:

lpinfo -m

Esse comando mostrará uma lista de drivers disponíveis em seu sistema, verifique o driver correspondente ao modelo de sua impressora esta instalado, se não o encontrar pode ser necessário instalar os drivers para o cups, são eles:

footomatic
gimpprint
gutenprint

No meu caso a utilizarei o seguinte driver:

lpinfo -m |grep 3845

hpijs/HP/HP-DeskJet_3845-hpijs.ppd HP DeskJet 3845 Foomatic/hpijs (recommended) – HPLIP 0.9.7

Bom agora você tem todas as informações de sua impressora, localização modelo e driver, basta instalar.

A maioria do processo de administração do cups é realizado pelo comando lpadmin, esse comando auxilia a configuração das impressoras no cups e suas classes.

lpadmin -p minhaprinter -E -v usb://HP/Deskjet%203840?serial=BR67A2K0VV040R -m hpijs/HP/HP-DeskJet_3845-hpijs.ppd

O comando acima adicionou minha impresosra local ao cups onde :

-p indica o nome para impressora
-E ativa tarbalhos para impressora
-v o endereço do dispositivo
-m O modelo da impressora

Lembrando que não é necessário especificar o caminho inteiro da do arquivo ppd a não ser que seja um driver que esteja em um outro diretório ou que haja a necessidade de especifica-lo em outro local, para isso utilize a opção -P seguido do caminho do arquivo .ppd.

Caso a impressora que será adicionado esteja em outro computador com um servidor cups devidamente funcional, basta você mudar o caminho do dispositivo para aquele que é mencionado na lista do comando lpinfo -v

Com a impressora adicionada você pode definir ela como sua impressõra padrão com o comando

lpadmin -d minhaprinter

Substitua o nome “minhaprinter” pelo nome dado pela sua impressora, feito isso sua impressora já estará instalada e pronta para usar, para realizar um teste basta mandar para impressão um arquivo qualquer em txt por exemplo:

cat teste_impressorao.txt |lpr

Administração Básica

O comando lpstat fornece imformações sobre sua impressora, classes ou trabalhos de impressão:

lpstat -p impressora

Mostra trabalhso ativos da impressora (onde impressora deve ser o nome da impressora)

lpstat -c

Mostra as classes de impressoras

lpstat -d

Mostra o destino atual, onde os trabalhos são encaminhados por padrão se a impressora não for especificada.

O comando cancel, cancela os trabalhos existentes:

cancel -a

Cancela todos os trabalhos

cancel -u username

Cancela trabalhos por nome de usuários

Configurando a Impressora

Você pode especificar ao cups o tipo de papel de sua impressora e definir opções padrões a sua impressão pelo comando lpoptions

lpoptions -o media=A4

Definindo formato de papel A4

lpotions -r ou lpotions -p nome_da_impressora -r

Removendo as configurações

lpoptions -p nome_da_impressora -l

Mostra as configurações atuais da impressora




Catalyst on Debian

abril 28, 2009

Instalando Catalyst

aptitude install libcatalyst-view-tt-perl libcatalyst-modules-perl libcatalyst-modules-extra-perl libcatalyst-perl

Criando projeto

catalyst.pl teste

cd teste/

Acessando

script/teste_server.pl

http://localhost:3000/

Criando Controller

script/teste_create.pl controller Site

Editando Controller

vim lib/teste/Controller/Site.pm

Adicione a linha:

sub hello :Local {
my ( $self, $c ) = @_;

$c->res->body(‘Hello World’);
}

Acessando a URL:

script/teste_server.pl

http://localhost:3000/site/hello

A View

script/teste_create.pl view TT TT

Adicione  ao arquivo Root.pm

vim lib/teste/Controller/Root.pm

sub index :Private {
my ( $self, $c ) = @_;
$c->stash->{app_name} = ‘teste’;
$c->stash->{template} = ‘index.tt’;
}

Comente a linha:

sub end : ActionClass(‘RenderView’) {}

e adicione:

sub end :Private {
my ( $self, $c ) = @_;

$c->forward(‘teste::View::TT’);
}

Crie o arquivo index.tt

vim root/index.tt

com o conteúdo:

<h1> Bem vindo ao [% app_name %] </h1>

<hr>

Acesse a url:

script/teste_server.pl

http://localhost:3000/

TDD ( http://en.wikipedia.org/wiki/Test-driven_development)

simples teste dentro do diretório do projeto:

prove –lib lib  t t/01app.t

testando o controller

CATALYST_DEBUG=0 prove –lib lib  t t/controller_Site.t

Mais sobre testes: http://search.cpan.org/dist/Catalyst-Manual/lib/Catalyst/Manual/Tutorial/Testing.pod

Métodos com Atributos são Ações …. Divirtam-se!

Unix File System

abril 10, 2009

Pela primeira vez ando mexendo com servidores FreeBSD. Devido a necessidade específica da atividade que estou fazendo, em conjunto com a equipe que estou, chegamos a conclusão que o FreeBSD nos atenderia de uma forma muito melhor.

Assim, com um mundo novo na minha frente, a primeira coisa que me chamou a atenção foi o sistema de arquivos, o UFS. Algumas vezes é possivel achar referências que UFS pode ser chamado de Berkeley Fast File System, BSD Fast File System ou FFS,mas isto é errado. UFS e FFS são sistemas de arquivos diferentes, sendo o FFS o sistema de arquivos padrão na maioria dos “Unixes”.

Basicamente, a diferença entre FFS e UFS é que o UFS define o layout do disco enquanto o FFS roda em cima do UFS provendo informações da estrutura de diretórios, e uma varidade de otimizações de acesso ao disco. Acredito que posso considerar que UFS e o FFS sejam dois lados de um mesmo sistema de arquivos, sendo que o UFS pode ser compartilhado com outros sistemas de arquivos usando uma política de armazenamento diferente.

UFS2 teve uma mudança em seu layout em relação a UFS1, isto para um melhor suporte a “Extensão de Atributos”, no mais, as principais caracteristicas do UFS1 são mantidas. Em relação a performance, o UFS2, diferencia-se devido a inicialização preguiçosa dos inodes, sendo executado muito mais rápido.

Uma coisa que me chamou a atenção no sistema de arquivos, é o uso de Soft Updates, diferentemente do Journaling.

Soft Updates é uma alternativa para Journaling para se manter a integridade dos dados em disco. Diferentemente de um sistema com journaling, Soft Updates trabalha ordenando os meta-dados escritos para garantir a consistência após um crash. Uma vantagem em relção aos sistemas com Journaling, e que sistemas de arquivos com Soft Updates podem ser montados imediatamente após um crash, pois não tem um log de resposta como os sistemas com Journaling. Com Sof Updates os dados são ecritos de modo assíncrono, impedindo a incosistência do sistema de arquivos.

É possível implementar a checagem de integridade do sistema de arquivos com Journaling no UFS2 usando GEOM, nesse documento tem mais informações:

http://www.freebsd.org/doc/en_US.ISO8859-1/articles/gjournal-desktop/article.html

Neste link, há uma comparação interessante entre UFS e XFS:

http://linux-xfs.sgi.com/projects/xfs/papers/xfs_white/xfs_white_paper.html