Archive for novembro, 2007

Extensões para o Perl com C

novembro 30, 2007

Hoje fui ao PHP conference, e estava empolgado em ver uma palestra sobre como criar extensões para o PHP; e a vi.

A palestra foi ministrada pelo Marcelo Araujo, e me impressionei com a “facilidade” em se desenvolver uma extensão para este linguagem.

Quando cheguei em casa imaginei; como será que se desenvolve uma extensão em C para o Perl?

andre@debian-casa:/tmp/teste$ h2xs -A -n ExtensaoC

andre@debian-casa:/tmp/teste$ ls
ExtensaoC

andre@debian-casa:/tmp/teste$ cd ExtensaoC/
andre@debian-casa:/tmp/teste/ExtensaoC$ ls
Changes ExtensaoC.xs lib Makefile.PL MANIFEST ppport.h README t

andre@debian-casa:/tmp/teste/ExtensaoC$ vim ExtensaoC.xs

#include “EXTERN.h”
#include “perl.h”
#include “XSUB.h”

#include “ppport.h”

MODULE = ExtensaoC PACKAGE = ExtensaoC

void
mostra()
CODE:
printf(“Essa é minha extensão em C para o Perl\n”);

andre@debian-casa:/tmp/teste/ExtensaoC$ perl Makefile.PL


andre@debian-casa:/tmp/teste/ExtensaoC$ make

debian-casa:/tmp/teste/ExtensaoC# make install

andre@debian-casa:/tmp$ vim teste.pl

#!/usr/bin/perl -w

use strict;
use ExtensaoC;

ExtensaoC::mostra();

andre@debian-casa:/tmp$ perl teste.pl
Essa é minha extensão em C para o Perl

Mais simples ainda…..

Maiores informações: man h2xs

Ainda vou estudar mais isto, e postarei aqui!

Conversor.pl

novembro 17, 2007

Para quem usa um live CD em suas aulas de faculdade, e chega cansado para realizar contas de conversão de dados binários, abaixo tem um link do script em Perl que fiz para me ajudar nesses casos:

http://www.oz.railsplayground.com/down/conversor.txt 

Baixe o arquivo .txt e renomeie para conversor.pl

Para usar é simples, por exemplo:

Converter o binário 1010 :

andre@debian-casa:~/Perl$ perl conversor.pl -b 1010
****************************************************************************
Valores para o Binário: 1010
Decimal: 10
Hexadecimal: A
Octal: 12

A saída é os valores Decimal, Hexadecimal e Octal do valor binário passado.

Você pode passar tudo de uma vez só :

andre@debian-casa:~/Perl$ perl conversor.pl -b 1010 -d 10 -h A -o 12
****************************************************************************
Valores para o Binário: 1010
Decimal: 10
Hexadecimal: A
Octal: 12
****************************************************************************
Valores para o Decimal: 10
Binário: 1010
Hexadecimal: A
Octal: 12
****************************************************************************
Valores para o Hexadecimal: A
Binário: 1010
Decimal: 10
Octal: 12
****************************************************************************
Valores para o Octal: 12
Binário: 1010
Decimal: 10
Hexadecimal: A

Criticas, dúvidas ou sugestões … manifeste-se.

setterm [on|off]

novembro 2, 2007

Setterm define atributos ao terminal, aqui vai algumas dicas:

Desligando ou ligando o cursor :
setterm -cursor [off|on]
Mudando a cor do texto
setterm -foreground cor
Mudando a cor de fundo do texto
setterm -background cor
Sendo as cores disponíveis
black, red, green, yellow, blue, magneta, cyan  e white.

“Negrito”
setterm -bold [on|off]

Imprimindo mensagens do printk() do Kernel no console
setterm -msg [on|off]

Aplicando mudanças no console atual
setterm  -foreground blue -store

Definindo tudo como padrão para o console:

setterm -default 

Exemplo:

setterm -foreground blue -background white -store 

Dicas de uso do VIM com C

novembro 2, 2007

Auto completando

Se você possui código em C com funções de nomes longos e utiliza o VIM como seu
editor de códigos oficial, basta usar o comando CTRL+P para auto completar os nomes das funções e variáveis.

CTRL+P procura a seqüencia de palavras que é digitada, ou seja, ele mostra em uma
lista uma opção de termos presentes no código com aquele início.

Você pode auto completar arquivos, informando arquivos de cabeçalhos ou mesmo arquivos
.c, com a opção:

#include “f CRTL+X CRTL+F

Esse comando te mostra uma opção de arquivos.h e .c disponíveis que você
pode realizar a inclusão em seu código.

Identando automaticamente o código

:set cindent