jump to navigation

Multimedia Converter – um bom frontend para o ffmpeg 18/Fev/2009

Posted by orielfrigo in debian, kde.
1 comment so far

Pessoal, pra quem está se batendo para converter formatos de vídeo no GNU/Linux, e sabe do poder do ffmpeg, mas não tem muito tempo para aprender a utilizar todos os parâmetros do mesmo via console, aqui vai uma dica: Multimedia Converter.

Segue abaixo texto retirado do blog http://manualdolinux.wordpress.com (http://manualdolinux.wordpress.com/2007/06/08/multimedia-converter-convertendo-qualquer-formato-no-linux/)

Ele converte todos esses formatos:

AVI >> DVD
AVI >> VCD
AVI >> WMV
AVI >> MPEG
AVI >> MP4
AVI >> FLV
AVI >> ASF
AVI >> MOV
AVI >> 3GP

MPG >> AVI
MPG >> WMV
MPG >> DVD
MPG >> FLV

FLV >> AVI
FLV >> MPG
FLV >> MP4

RMVB >> AVI

WMV >> AVI
WMV >> MP4
WMV >> FLV

E muito mais. Sem contar os arquivos de música.

WAV para MP3, OGG, AU, ACC, AC3, FLAC
MP3 para OGG, WAV, AC3, ACC, AMR, FLAC, RA, AMR
OGG para WAV
WMA para MP3

Além de RA, RM, MPG e muitos outros.

—————————————————-

>>> Instalação

Segue as dependências do Multimedia Converter:

> Kommander (Instale o pacote kdewebdev)
> FFmpeg
> menconder
> MPlayer
> Lame MP3 Encoder
> Win32 Codecs
> libogg / libvorbis / vorbis-tools / oggenc

Faça o download do Multimedia Converter (acompanha pacote deb, rpm e o source):
http://www.kde-apps.org/content/download.php?content=53610&id=1&PHPSESSID=36c0825aa45d5bf5160176fde6c3dc87

Descompacte o arquivo:

tar -vzxf 53610-mc.tar.gz

Acesse os documentos que foram extraídos:

cd mc/english

Agora é a hora de instalar. Se você usa Debian, Ubuntu, Kurumin ou derivados:

dpkg -i mconverter1.0_i386_en.deb

Caso sua distro utilize pacotes rpm, como Mandriva, Fedora:

rpm -i mconverter-1.0-2.i386.rpm

Bom se você for usuário de outra distribuição que não foi citada acima, don’t worry. =)

Pegue o pacote mconverter-1.0.tgz e descompacte na raiz do sistema ( / ).

Uma nova entrada deve ser criada no menu do KDE, na parte multimídia. Caso isso não aconteça, ou você usa outro window manager use o seguinte comando para iniciar o programa e posteriormente criar um atalho:

kmdr-executor /usr/local/LinConverter/LinConverter.kmdr

Configurando Wireless no Dell Vostro 1510 rodando Gnu/Linux Debian Lenny 12/Out/2008

Posted by alfakini in debian.
Tags: , , , ,
add a comment

Olá! Se você adquiriu um Dell Vostro com as configurações padrões de fábrica, esse tutorial ensina como configurar o drivrer da placa de rede wireless:

http://www.alfakini.com.br/blog/?p=23

Mais informações sobre configurações dos outros dispositivos ou outros modelos de laptops: http://www.linux-on-laptops.com/dell.html

ZZ

Emergindo grandes pacotes em hardwares fracos com o auxílio de outro computador no Gentoo Linux 22/Set/2008

Posted by demoncyber in Uncategorized.
Tags:
add a comment

Emergindo grandes pacotes em hardwares fracos com o auxílio de outro computador no Gentoo Linux

Autor: Aaron Kim Binner da Silva <aaron.binner at gmail.com>
Data: 22/09/2008

Os hardwares utilizados e a configuração do kernel

A idéia é montar o sistema de arquivos do “PC 1″ em uma pasta em “PC 2″ e fazer CHROOT nesta mesma pasta, podendo assim compilar os pacotes necessários utilizando o hardware do “PC 2″ e economizar tempo.

O primeiro PC é um AMD Duron 750 MHZ, 128 MB de ram. Duas placas de rede, sendo uma ligada diretamente à internet e outra ligada ao outro PC através de um cabo cross-over. De agora em diante o chamaremos de PC1.

O “auxiliar” é um notebook acer aspire 5050 (AMD Turion 64 2.2Gz 1GB de ram). O chamaremos de PC2.

Ambos rodam Gentoo Linux.

Para compartilhar a conexão com a internet precisaremos do IPTABLES e o módulo IPTABLE_NAT, e precisaremos também do NFS para podermos montar o hd do PC1 no PC2.

Preparando o seu kernel (versão 2.6)

Certifique-se de que estas opções estão habilitadas no seu kernel:

Networking —>
Networking options  —>
[*] Network packet filtering framework (Netfilter)  —>
[*]   Advanced netfilter configuration
[*]     Bridged IP/ARP packets filtering
IP: Netfilter Configuration  —>
<M> IPv4 connection tracking support (required for NAT)
[*]   proc/sysctl compatibility with old connection tracking
<M> IP Userspace queueing via NETLINK (OBSOLETE)
<M> IP tables support (required for filtering/masq/NAT)
<M>   “recent” match support
<M>   “ttl” match support
<M>   “addrtype” address type match support
<M>   Packet filtering
<M>     REJECT target support
<M>   LOG target support
<M>   ULOG target support
<M>   Full NAT
<M>     MASQUERADE target support
<M>     REDIRECT target support
<M>     NETMAP target support
<M>     Basic SNMP-ALG support
<M>   Packet mangling
<M>     ECN target support
<M>     TTL target support
<M>     CLUSTERIP target support (EXPERIMENTAL)
<M>   raw table support (required for NOTRACK/TRACE)
<M> ARP tables support
<M>   ARP packet filtering
<M>   ARP payload mangling

Estas opções devem estar habilitadas em ambas as máquinas:

File Systems —>
Network File Systems —>
<M> NFS file system support
[*]   Provide NFSv3 client support
<M> NFS server support
[*]   Provide NFSv3 server support

Na dúvida acabei marcando alguns módulos a mais, afinal nunca se sabe quando se vai precisar deles. Se necessário recompile o seu kernel. :)

Compartilhando sua conexão

Com o kernel devidamente configurado, agora basta carregar o módulo iptable_nat e instalar o pacote iptables.

PC1 – ligado diretamente à internet

$ emerge net-firewall/iptables

Se você preferiu marcar as opções no kernel como módulos, agora basta carregar o módulo:

$ modprobe iptable_nat
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Substitua “eth0″ pela sua placa de internet.

Agora sua conexão está compartilhada com todas as outras placas de rede instaladas na máquina.

Você pode agora configurar suas placas com o ip fixo através do comando “ifconfig” ou colocar um servidor DHCP rodando.

Optei pela segunda opção. Para configurar um servidor DHCP precisaremos do pacote net-misc/dhcp.

$ emerge dhcp

Agora edite o arquivo /etc/dhcp/dhcpd.conf. Este é um exemplo de configuração:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.201;
option domain-name-servers 200.177.250.10, 200.204.0.10;
option routers 192.168.254.4;
option broadcast-address 192.168.0.255;
}

Só isto já é suficiente para funcionar o servidor DHCP.

Inicie o serviço:

# /etc/init.d/dhcpd start

PC2 – auxiliar

Basta se conectar via DHCP e verificar o seu DNS em /etc/resolv.conf, se tudo correu bem, agora o PC1 deve estar compartilhando a conexão com o PC2 (não se esqueça de utilizar um cabo cross-over para ligar os dois PCs).

Colocando a idéia em prática

Para podermos colocar toda essa gambiarra pra funcionar precisaremos do pacote nfs-utils instalado em ambos os PCs, então:

# emerge nfs-utils – execute nas duas máquinas

Ao instalar este pacote poderá haver problemas com “Blocked Packages”, caso isso aconteça:

# emerge –buildpkgonly –nodeps PACOTEBLOQUEADO && emerge -C PACOTEBLOQUEANDOAINSTALAÇÃO && emerge –usepkgonly PACOTEBLOQUEADO

Agora basta pôr tudo para funcionar.

PC1 – duron 750

Edite o arquivo /etc/exports, ele provavelmente estará em branco, adicione esta linha:

/ “IP_DO_PC2″ (rw,no_root_squash,sync,no_subtree_check)

Inicie o serviço:

# /etc/init.d/nfs start

PC2 – laptop

# /etc/init.d/nfsmount start
# mkdir /pcmanco
# mount “IP_DO_[PC'1']“:/ /pcmanco -o rsize=1024,wsize=1024,rw
# mount -t proc none /pcmanco/proc -o nodev,nosuid,noexec
# mount -o bind /dev /pcmanco/dev
# mount -t devpts none /pcmanco/dev/pts -o nosuid,noexec,gid=5,mode=620
# mount -o bind /tmp/ /pcmanco/var/tmp/portage
# mount -t tmpfs none /pcmanco/dev/shm -o nodev,nosuid,noexec
# mount -o bind /usr/portage /pcmanco/usr/portage

Faça o CHROOT!!

(substitua o asterisco pelo arch do respectivo processador EX:. i386 ou i486)

# setarch * chroot /pcmanco /bin/bash

Pronto, agora você pode emergir pacotes com grande velocidade até em um pentium 100 com 16MB de ram e ainda ganhar tempo.

Espero ter ajudado.

Referências

Configurando a saida de VGA em notes Toshiba U305 17/Set/2008

Posted by demoncyber in Uncategorized.
add a comment

Bem, tenho um notebook toshiba U305, um belo dia quis testa-lo no meu monitor 17″ da samsung
e nao conseguia de jeito nenhum fazer ele funcionar, tentei mudar driver, o escambau… mas nada dava certo, levando em consideraçao q a tecla de atalho ALT + F5 estava desativada…

Pesquisando mais um pouco descobri o seguinte comando:

xrandr –outup VGA –auto

e aih sim… reconheceu o monitor pela saida VGA ;D
existem mais parametros pro xrandr, segue uma lista abaixo
-display or -d
-help
-o
or –orientation
-q or –query
-s /x or –size /x
-r or –rate or –refresh
-v or –version
-x (reflect in x)
-y (reflect in y)
–screen
–verbose
–dryrun
–prop or –properties
–fb x
–fbmm x
–dpi /
–output
–auto
–mode
–preferred
–pos x
–rate or –refresh
–reflect normal,x,y,xy
–rotate normal,inverted,left,right
–left-of
–right-of
–above
–below
–same-as
–set
–off
–crtc
–newmode

[+HSync] [-HSync] [+VSync] [-VSync]
–rmmode
–addmode
–delmode

eu aconselho a utilizar o -size para setar a resoluçao ;D

o/

Referência:

http://chavesfop.blogspot.com/2008/03/configurando-saida-de-vga-em-notes.html

Please support us by using Babylon search engine

Como instalar o zenmap de várias maneiras 17/Set/2008

Posted by demoncyber in slackware.
Tags:
2 comments

Como instalar o zenmap de várias maneiras

Bom me empolguei em auxiliar um cara no fórum do slackware :) e fiz muitas formas de instalar o zenmap no slackware :) . O mais interessante é o script que fiz que sincroniza com a ultima versão do zenmap lancada, baixa compila e instala (la moda do gentoo)

Code:
wget http://repository.slacky.eu/slackware-12.1/libraries/pysqlite/2.4.1/pysqlite-2.4.1-i486-1sl.tgz
wget http://repository.slacky.eu/slackware-12.1/database/sqlite/2.8.17/sqlite-2.8.17-i486-2sl.tgz
installpkg pysqlite-2.4.1-i486-1sl.tgz
installpkg sqlite-2.8.17-i486-2sl.tgz

ou

Code:
slapt-get install pysqlite

Pegando o pacote oficial da versao estável do slackware:

Code:
wget http://packages.slackware.it/package.php?q=12.1/nmap-4.60-i486-3
installpkg nmap-4.60-i486-3

Utilizando gerenciador de pacote

Code:
slapt-get install nmap

Compilando o pacote

Code:
mkdir /tmp/nmap
cd /tmp/nmap
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.SlackBuild
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.png
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap-4.60.tar.bz2
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/slack-desc
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/zenmap.desktop.gz
bash nmap.SlackBuild

Pegando o rpm da ultima versão e convertendo e instalando

Code:
wget http://nmap.org/dist/zenmap-4.76-1.noarch.rpm
rpm2tgz zenmap-4.76-1.noarch.rpm
instalplkng zenmap-4.76-1.noarch.tgz

Compilando o nmap com a ultima versao (4.76)

Para compilar e criar o pacote você deve alterar o nmap.Slackbuild em uma linha com a versao que você quer. A obviamente também baixando o arquivo com a versão que você quer do site

Altere o arquivo nmap.Slackbuild a linha que tem

Code:
VERSION=${PKGVERSION:-4.60}

para

Code:
VERSION=${PKGVERSION:-4.76}
Code:
mkdir /tmp/nmap
cd /tmp/nmap
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.SlackBuild
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.png
wget http://nmap.org/dist/nmap-4.76.tar.bz2
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/slack-desc
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/zenmap.desktop.gz
bash nmap.SlackBuild

Criando script para sincronizar com a ultima versão do zenmap direto no servidor
vamos lá fazer um script para ficar sincronizando com o servidor baixar e compilar a ultima versão. Fim nao tem mais o q fazer eu acho hauuha )

Code:
wget http://nmap.org/dist/
NAME_VERSION_UPDATE=`grep "nmap.*\.tar\.bz" index.html | cut -f 6 -d '"' | tail -n 1 | sed "s/\.tar\.bz2//g"`
VERSION_UPDATE=`echo $NAME_VERSION_UPDATE | cut -f 2 -d -`
NAME_VERSION=`ls -w 1 /var/log/packages | grep nmap | sed "s/-i.*$//g"`
VERSION=`echo $NAME_VERSION | cut -f 2 -d -`
for i in `seq 2`
do
cmp1=`echo $VERSION_UPDATE | cut -f $i -d . `
cmp2=`echo $VERSION | cut -f $i -d . `echo $VERSION_UPDATE
echo $VERSION

if(( $cmp1 > $cmp2 ));then
mkdir /tmp/nmap
cd /tmp/nmap
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.SlackBuild
sed “s/4.60/$VERSION_UPDATE/g” nmap.SlackBuild > nmap.SlackBuild2 && mv nmap.SlackBuild2 nmap.SlackBuild
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/nmap.png
wget http://nmap.org/dist/nmap-$VERSION_UPDATE.tar.bz2
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/slack-desc
wget ftp://ftp.slackware-brasil.com.br/slackware-12.1/source/n/nmap/zenmap.desktop.gz
bash nmap.SlackBuild
upgradepkg /tmp/nmap-$VERSION_UPDATE-i486-3.tgz
fi
done

Obs: achei a página do nmap muito baguncada muito colorida )
Obs2: seria legal mudar o slackdesc )

Marco Carvalho de Oliveira

Colméia Grupo de Pesquisa em Software Livre

Como verificar as conexões abertas na sua máquina de muitas maneiras 8/Set/2008

Posted by demoncyber in slackware.
Tags:
1 comment so far

Estivemos com um problema em um projeto o qual precisava encontrar se o serviço do xdmcp estava aberto e nota ele não é um processo independente ele interligado ao X, kdm, gdm xdm, para tanto a solução mais cabível era procurar saber se a porta estava aberta na máquina e acionada, sim talvez poderia existir outras maneiras mas esta se fez mais interessante. A clássica solução que me veio a cabeça foi usar o netstat, mas pensei e porque não ir mais à fundo e venho por este artigo mostrar algumas coisas que aprendi.

As formas que executei este processo foram:

Geek hacker ninja style form – procura no proc pelas conexões abertas ( mais interessante e a que mais aprendi )
Status network – usa o comando de status de rede para listar
Open Files – Procura baseado nos arquivos abertos o que está ligado a porta


Geek hacker ninja style form

A forma mais baixo nível e estilosa =], vamos aos arquivos de kernel analizar a suas saídas, está e a base utilizada por programas como o netstat o qual converte os dados deste e mostra com uma saída personalizada. Bom foi publicado um artigo antes explicando sobre a conversão de bases então para tanto não vou abordar este assunto aqui.

O arquivo em questão utilizado é o /proc/net/tcp

Exemplo de /proc/net/tcp

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
0: 9E00A8C0:D3FD E1D7BCCD:1F4A 01 00000000:0003163C 00:00000000 00000000  1000        0 383991 1 cb042500 102 12 4 2 100
1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 626508 1 c299db80 750 0 0 2 -1

sl: O número de indentificador da linha

local_address: O endereço local e o número da porta do socket. O endereço local está condificado em little-endian em quatro sequencias de números em hexadecimal, isso significa que o byte mais importa é listado primeiro, e você necessita fazer a inversão da ordem dos bytes para converter para o enderço de ip. O número da porta é um hexadecimal simples utilizado pelo programa.

rem_address – O endereço remoto e o número da porta do socket. O endereço local está condificado em little-endian em quatro sequencias de números em hexadecimal, isso significa que o byte mais importa é listado primeiro, e você necessita fazer a inversão da ordem dos bytes para converter para o enderço de ip. O número da porta é um hexadecimal simples.

st: status do socket ( Depois de muita busca encontrei onde estavao o padrão de código daqui e o or que do valor ficar com 0A segue tabela de referência no final )

tx_queue:rx_queue O tamanho de transmissão e recebimento das filas de pacotes

tr:tm->when:  tr é o campo que indica se o medidor de tempo está ativo para este socket. Um valor de zero indica que o medidor de tempo não está ativo. O tm->when indica tempo que o sock está sendo utilizado em jiffies. ( usado basicamente para debug )

retrnsmt: campo de informação interna do socket do kernel ( usado basicamente para debug )

uid: o uid do usuário dono da conexão

time-out: campo de informação interna do socket do kernel ( usado basicamente para debug )

inode: Um número encriptado de indetificado do socket para o sistema de arquivos do Linux.( não encontrei qual é a criptofrafia utilizada aqui )

Achei a representação padrão do cat do arquivo /proc/net/tcp muito larga entao refiz ela na horizontal para melhor explanar o exemplo à cima. E traduzi alguns dados

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
0: 9E00A8C0:D3FD E1D7BCCD:1F4A 01 00000000:0003163C 00:00000000 00000000  1000        0 383991 1 cb042500 102 12 4 2 100
1: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 626508 1 c299db80 750 0 0 2 -1

sl : 0 – linha indicadora da primeira conexão
local_adress: 9E00A8C0:D3FD – convertendo fica 192.168.0.158:151775
rem_adress: E1D7BCCD:1F4A – convertendo fica 205.188.215.225:8010
st: 01 – TCP ESTABELISHED – conexão estabelecida
tx_queue rx_queue: 00000000:0003163C – fila de dado transmitida
tm->when retrnsmt: 00:00000000 00000000 – dados utilizado para debug
uid: 1000 – id do usuário dono da conexão
timeout: 0 – dado utilizado para debug
inode: 383991 1 cb042500 102 12 4 2 100 – identficador criptografado

sl : 1 – linha indicadora da primeira conexão
local_adress: 00000000:0016 – convertendo fica localhost:22
rem_adress: 00000000:0000 – não tem ninguem conectado
st: 0A – TCP_LISTEN – escutando conexão
tx_queue rx_queue: 00000000:0003163C – fila de dado transmitida
tm->when retrnsmt: 00:00000000 00000000 – dados utilizado para debug
uid: 1000 – id do usuário dono da conexão
timeout: 0 – dado utilizado para debug
inode: 383991 1 cb042500 102 12 4 2 100 – identficador criptografado

———————————————————
Status network

Podemos ver as conexões abertas atráves do comando netstat.O mesmo é um programa de estatisticas de rede utilizado amplamente para este fim. Não tem muitos segredos e as informações que ele mostram são muito legíveis, a alguém percebeu a similiridade com um outro arquivo no modo que as informações aparecem :) .

netstat -tl – lista as conexões abertas de tcp em modo de escuta
netstat -t – lista as conexões tcp estabelecidas
netstat -p – lista os programas que estão usando a conexão
netstat –numeric-ports – não converte o número da porta para ser listado
netstat –numeric-hosts – não converte o número de ip para nome do host

Comando que resolveu meu problema

netstat -t -l -p –numeric-ports

—————————————————————————————
Open Files

Vendo as conexões abertas atráves do comando lsof.O comando lsof lista os arquivos abertos, átraves disto vamos procurar o arquivo aberto relacionado as portas tcp.

Obs: Ele pode pegar muitas informações interessantes sobre os arquivos abertos, mas não é escopo deste artigo :)

lsof -i protocolo

lsof -i tcp

—————————————————————————————

Tabela de dados para o status do socket versão do kernel 2.6.21.5 slackware 12

—————————–
|  st status socket values  |
—————————–
|  significado      | valor |
—————————–
|  TCP_ESTABLISHED  |   01  |
|  TCP_SYN_SENT     |   02  |
|  TCP_SYN_RECV     |   03  |
|  TCP_FIN_WAIT1    |   04  |
|  TCP_FIN_WAIT2    |   05  |
|  TCP_TIME_WAIT    |   06  |
|  TCP_CLOSE        |   07  |
|  TCP_CLOSE_WAIT   |   08  |
|  TCP_LAST_ACK     |   09  |
|  TCP_LISTEN       |   0A  |
|  TCP_CLOSING        |   0B  |
|  TCP_MAX_STATES   |   0C  |
—————————–

Ambiente de teste

Slackware 12.0
kernel 2.6.21.5

Conclusão

Estas foram apenas algumas maneiras devem ter mais, espero que tenham gostado e que algum dia isto seja útil a alguém =], bom para mim foi um grande aprendizado.
(Desculpe qualquer erro de portugues :X)

Definições

jiffy – medida utilizada para representar o uso de uma tarefa em chamadas de interrupção no processador. ( Medida em um Linux com kernel 2.6.13 em um Intel 386 é de 4 ms, ou 1/250th de um segundo)
little-endian – codificação a

Referências

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8145 – conversão de base hexadecimal, binário …
http://www.linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html – link sobre dispositivos do proc
http://en.wikipedia.org/wiki/Jiffy_(time) – link sobre a medida Jiffy
www.lisha.ufsc.br/wso/papers/2004/real2004.pdf – Escalonamento interativo do kernel do Linux, texto onde encontrei um dos lugares onde o jiffies é utilizada ( detalhe texto escrito por um dos participantes do gobolinux )
http://catb.org/~esr/jargon/html/J/jiffy.html – enciclopedia de termos nerds, falando sobre jiffy
http://www.vivaolinux.com.br/scripts/verFonte.php?codigo=1808 – calculadora de conversão de base feita em c
http://www.vivaolinux.com.br/scripts/verFonte.php?codigo=2818&arquivo=hex.sh – calculadora de conversão de base feita em shellscript
http://pt.wikipedia.org/wiki/Little_endian – wikipedia sobre a numeração Little_endian
http://www.mail-archive.com/linux-net@vger.kernel.org/msg01930.html – email perguntando sobre o status code do tcp
man /proc
man lsof
man netstat


Marco Carvalho de Oliveira
Colméia – Grupo de Pesquisa em Software Livre
UDESC – Ciência da Computação Joinville
Certificate Linux Professional I – LPI

Ativando o DRI em seu GNU/Linux 12/Ago/2008

Posted by orielfrigo in gentoo, kernel, xorg.
add a comment

Introdução

Criei o costume de utilizar o Tilda, um simulador de terminal de shell baseado em GTK, que se comporta como o terminal de comandos do Quake, subindo e descendo como uma cortina. Mas percebi que estava lento o efeito de subir e descer do Tilda, e então percebi que o DRI estava inativo, o que me motivou a ativá-lo e escrever este artigo :)

O que é DRI?

O DRI (Direct Rendering Infrastructure), também conhecido como aceleração de hardware 3D, é um framework para permitir acesso direto ao hardware da placa de vídeo através do sistema de janelas X, de uma forma eficiente e segura. Por exemplo, jogos ou programas gráficos podem enviar comandos diretamente para a placa de vídeo, enquanto a CPU fica livre para realizar outros trabalhos. Isso é conhecido como renderização direta, ou direct rendering. Isso inclui modificações no servidor X, em algumas bibliotecas e pelo kernel (DRM, Direct Rendering Manager).

O uso mais importante do DRI é criar implementações rápidas no OpenGL oferecendo aceleração de hardware para o Mesa. Muitos drivers acelerados 3D tem sido escrito para a especificação, incluindo drivers para os chipsets produzidos por 3DFX, AMD (formalmente ATI), Intel e Matrox.

Uma boa motivação para se ativar o DRI é executar o comando glxgears e observar o comportamento das engrenagens 3D. Se o recurso não estiver ativo, geralmente pode-se observar que as engrenagens se movimentam com dificuldade, e em baixa velocidade. Com o recurso ativo, utilizando a placa de vídeo Intel 82852/855GM, obtive o pico de 2397 frames in 5.0 seconds = 479.355 FPS como saída do glxgears. Com o DRI inativo  obtia no máximo 300 FPS.

Algumas distribuições GNU/Linux podem ativar o DRI automaticamente, mas em muitos casos é preciso fazer isso manualmente. Para verificar se o recurso DRI está ativo, digite glxinfo | grep rendering

Ativando o suporte a DRI

O primeiro passo para ativar o DRI é verificar se a placa de vídeo instalada possui suporte ao recurso,consulte no site da fabricante da placa e no Google para obter essa informação.

O segundo passo é possuir uma versão atual do servidor X. No caso, eu tive problemas com a versão 1.3 do xorg e precisei atualizar para a versão 1.4.2.

Para saber que versão do xorg está instalada, use o comando xdpyinfo | grep version

Para se ativar o DRI no X, utiliza-se o DRM (Direct Rendering Manager), que é um reforço para o Xorg. O DRM adiciona aceleração 3D acrescentado o módulo de kernel necessário para o direct rendering.

Bom, agora que os pré-requisitos foram atendidos, é importante lembrar que existem duas formas de se ativar o DRI. A primeira é compilar o kernel com o suporte nativo, a segunda é compilar o kernel com suporte modular ao drm, e então carregar o módulo após o boot do kernel.

As duas alternativas são eficientes dependendo de cada caso. No Gentoo, por exemplo, existe um pacote na árvore do portage (x11-xdm) que compila o módulo do DRM, e a grande vantagem é que esse pacote é atualizado com uma boa periodicidade, bastando reinstalá-lo a cada versão, o que seria inviável com um drm compilado dentro do kernel (imagine recompilar o kernel cada vez que se deseja atualizar o pacote). Dessa forma, optei por compilar o kernel com um (M) marcado em DRM.

Configurando o kernel

Configure o kernel com make menuconfig e selecione o Direct Rendering Manager como módulo (tecle M) ou compilado embutido (tecle Y).

Processor type and features —>

<*> MTRR (Memory Type Range Register) support

Device drivers —>

<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

Configurando Xorg.conf

Abra o arquivo /etc/X11/xorg.conf com seu editor favorito e o edite ativando DRI e GLX da seguinte forma:

.

Section “Module”

Load “dri” # Carrega o suporte ao DRI

Load “glx” # Carrega o binding que conecta OpenGL e o X

EndSection

Section “Device”

Driver “i810″  #(Substitua com o driver de sua placa de vídeo.)

EndSection

Section “dri”

Mode 0666 # Essa linha dá privilégios de leitura e escrita do dri a todos os usuários(modo 666)

EndSection

Testando

Com o módulo do DRM carregado, dentro do diretório /dev/dri são criados dois pseudoarquivos, card0 e card1, que representam o acesso ao DRI. Verifique se esses pseudoarquivos foram criados com ls /dev/dri.

Agora faça novamente o teste das roldanas, glxgears, e o comando glxinfo | grep rendering deve retornar Yes.

Referências

http://dri.freedesktop.org/wiki/

http://dri.sourceforge.net/doc/DRIbeginner.html

http://www.gentoo.org/doc/en/dri-howto.xml

Como configurar o file type do seu firefox 27/Mai/2008

Posted by demoncyber in firefox, slackware.
Tags: , , , ,
1 comment so far

Eis que um colega que está começando a utilizar Slackware me pergunta porque quando ele mandava abrir um arquivo pdf pelo firefox ele não abria, e responde porque o Slackware não vem com isto configurado é apenas um caso de setar o mimetype ou filetype, daí lhe falo vai lá edit->preferences aba content e clica no botão Manage em File Types, e aí em seguida que nasce o problema aquele X.X trubisco não serve para editar e adicionar um novo file type de geito maneira, aquilo me revoltou … ( como devem perceber estes artigos ultimamente sobre firefox é porque não gosto dele mesmo… ) então instalei um plug in de firefox que fazia isto resolvi fazer engenharia reversa no bixinho para descobrir qual arquivo precisava alterar e enfim achei que é o mimeTypes.rdf, seguindo na minha procura encontrei mais sobre como configurar ele em um dos sites da mozilla que está nas referências do texto.

Atributos

RDF:about – identificador ( Atributo especial pertecente a raíz )

NC:description – O nome do tipo de arquivo que será mostrado dentro da janela de download
NC:fileExtension – Extensão do arquivo que será manipulado
NC:value – O tipo do MIME de arquivo a ser manipulado
NC:path – caminho da aplicação que será usada para abrir este arquivo
NC:useSystemDefault – true (usa o sistema padrão do seu window manager para este tipo de MIME) ou false (define uma ação diferente para especificar no arquivo qual programa usar)
NC:saveToDisk – true (ação padrão que é baixar o arquivo) ou false ( não baixa o arquivo na máquina)
NC:alwaysAsk – true (perguntar qual a ação ao tratar deste tipo de arquivo) or false (não pergunta ação)
NC:editable – true (entrada pode ser modificada pelo usuário) ou false (entrada como travado)
NC:prettyName – um curto nome da aplicacão que será usada para abrir

———————————————————

Cabeçalho do arquivo

Esta é a sessão inicial do seu arquivo de configuração, mantém o cabeçalho indicando onde estão os arquivos de padrão da sintaxe xml do arquivo rdf a ser utilizado.

<?xml version=”1.0″?>
<RDF:RDF xmlns:NC=”http://home.netscape.com/NC-rdf#”
xmlns:RDF=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>

</RDF:RDF>

/.mozilla/firefox/identificador.defaults/mimeTypes.rdf

———————————————————

Identificador do tipo de arquivo

Neste exemplo estamos criando um identificador global “office/pdf” para o nosso arquivo, passando os atributos de identificação explandos à cima.

( NC:handlerProp – Apesar de ter procurado em muitos sites e nas rfcs do MIME não encontrei o atributo handlerProp e o meu empenho em fazer engenharia reversa nos arquivos de especificação do xml utilizado para analizar o arquivo de xml em questão já estavam no máximo -.-, nota eu acredito que o handlerProp serve para apontar para o identificador que contém o recurso do manipulador da especificação descrita)

<RDF:Description RDF:about=”urn:mimetype:office/pdf”
NC:fileExtensions=”pdf”
NC:description=”PDF Files”
NC:value=”office/pdf”
NC:editable=”true”>
<NC:handlerProp RDF:resource=”urn:mimetype:handler:office/pdf”/>
</RDF:Description>

———————————————————

Identificador do manipulador do tipo de arquivo

Neste exemplo estamos criando o manipulador do tipo de arquivo identificador global “office/pdf” para o nosso arquivo, passando os atributos de identificação explandos à cima.

( NC:externalApplication – Apesar de ter procurado em muitos sites e nas rfcs do MIME não encontrei o atributo externalApplication e o meu empenho em fazer engenharia reversa nos arquivos de especificação do xml utilizado para analizar o arquivo de xml em questão já estavam no máximo -.-, nota eu acredito que o externalApplication serve para apontar o identificador que contem o recurso de aplicativo externo)

<RDF:Description RDF:about=”urn:mimetype:handler:office/pdf”
NC:alwaysAsk=”false”
NC:handleInternal=”false”
NC:useSystemDefault=”false”
NC:saveToDisk=”false”>
<NC:externalApplication RDF:resource=”urn:mimetype:externalApplication:office/pdf”/>
</RDF:Description>

———————————————————

Identificador do programa externo utilizado para

<RDF:Description RDF:about=”urn:mimetype:externalApplication:office/pdf”
NC:path=”/usr/bin/kpdf” />

———————————————————

Identifiador percente a raíz que serve para adicionar os identificadores utilizados pelo webbrowser
- Mostrar texto das mensagens anteriores -

<RDF:Seq RDF:about=”urn:mimetypes:root”>
<RDF:li RDF:resource=”urn:mimetype:image/png”/>
<RDF:li RDF:resource=”urn:mimetype:office/pdf”/>
</RDF:Seq>

———————————————————
Segue um exemplo concluído

<?xml version=”1.0″?>
<RDF:RDF xmlns:NC=”http://home.netscape.com/NC-rdf#”
xmlns:RDF=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>
<RDF:Description RDF:about=”urn:mimetype:office/pdf”
NC:fileExtensions=”pdf”
NC:description=”PDF Files”
NC:value=”office/pdf”
NC:editable=”true”>
<NC:handlerProp RDF:resource=”urn:mimetype:handler:office/pdf”/>
</RDF:Description>
<RDF:Description RDF:about=”urn:mimetype:externalApplication:image/png”
NC:path=”/usr/bin/gimp”
NC:prettyName=”Gimp” />
<RDF:Description RDF:about=”urn:mimetype:handler:image/png”
NC:alwaysAsk=”false”
NC:handleInternal=”false”
NC:useSystemDefault=”false”
NC:saveToDisk=”false”>
<NC:externalApplication RDF:resource=”urn:mimetype:externalApplication:image/png”/>
</RDF:Description>
<RDF:Description RDF:about=”urn:mimetype:externalApplication:office/pdf”
NC:path=”/usr/bin/kpdf”
NC:prettyName=”KPDF” />
<RDF:Description RDF:about=”urn:mimetype:image/png”
NC:fileExtensions=”png”
NC:description=”PNG Image”
NC:value=”image/png”
NC:editable=”true”>
<NC:handlerProp RDF:resource=”urn:mimetype:handler:image/png”/>
</RDF:Description>
<RDF:Description RDF:about=”urn:mimetype:handler:office/pdf”
NC:alwaysAsk=”false”
NC:handleInternal=”false”
NC:useSystemDefault=”false”
NC:saveToDisk=”false”>
<NC:externalApplication RDF:resource=”urn:mimetype:externalApplication:office/pdf”/>
</RDF:Description>
<RDF:Seq RDF:about=”urn:mimetypes:root”>
<RDF:li RDF:resource=”urn:mimetype:image/png”/>
<RDF:li RDF:resource=”urn:mimetype:office/pdf”/>
</RDF:Seq>
</RDF:RDF>

Espero que tenham gostado =] ….

” Existem aqueles que se contentam em apenas resolver os problemas e existem aqueles que não se contentam resolver sem entender ….” – Demoncyber

Referências:
(Lidas na integra)
http://en.wikipedia.org/wiki/MIME – wikipedia sobre mim
http://www.iana.org/assignments/media-types/ – lista completa de mime media types
http://kb.mozillazine.org/MimeTypes.rdf – exemplo e documentação sobre o arquivo configurado
http://www.w3schools.com/media/media_mimeref.asp – referência para o padrões MIME

RFS
( Obs nenhuma destas RFS foram lidas apenas foi procurado pelos campos chaves os quais não foram encontradas as documentações referentes )
http://www.rfc-editor.org/rfc/rfc2047.txt
http://www.rfc-editor.org/rfc/rfc822.txt
http://www.rfc-editor.org/rfc/rfc2045.txt
http://www.rfc-editor.org/rfc/rfc2046.txt
http://www.rfc-editor.org/rfc/rfc2047.txt
http://www.rfc-editor.org/rfc/rfc2048.txt
http://www.rfc-editor.org/rfc/rfc2049.txt

Tunning Firefox 9/Mai/2008

Posted by demoncyber in utilitarios.
Tags: ,
5 comments

Este artigo visa mostrar algumas dicas colhidas na net para otimizar o firefox, para ajudar à todas aquelas pessoas que acham o Firefox pesado tornar ele mais rápido. A necessidade disto veio por causa de um dos projetos o qual esta ferramenta estava consumindo muito processamento e memória.

Segue as configurações mudadas e os processo que utilizamos no projeto.( Lembrete antes de fazer as alterações faça backups )

Inicialmente trabalhamos com a sessão de configuração do firefox que pode ser acessada por about:config dentro do seu browser.

Flags modificadas para obter melhor desempenho:

Nome:content.notify.interval
Type: Integer
Value: 2000000
Chave: Teve que ser criada manualmente

- Diminui o intervalo de renderização das paginas do firefox

Nome:content.notify.ontimer
Type: Boolean
Value: true
Chave: Teve que ser criada manualmente

- É uma chave depentende para ativar o content.notify.interval

Nome: browser.tabs.closeButtons
Type: interger
Value: 0 (valor opcional, você pode tentar outros valores citados acima) (valor padrão: 1) (valores opcionais: 0, 1, 2, 3)

- Áqui vem uma das partes que as pessoas nao percebem mas consome bastante memória e desempenho botao de fechar nas abas com a opção 0 este botao somente aparece na janela corrente.

Nome: browser.cache.memory.enable
Status: user set
Type: boolean
Value: false

- A chave milagrosa a que deixa o firefox rápido pra caramba, esta chave sabilita o cache de memória do firefox nada de ficar sobrecarregando e criando firefox utilizando 100 ou mais de ram.

Nome: browser.sessionhistory.max

Nome: browser.sessionhistory.max_total_viewers

Status: user set
Type: integer
Value: 0 (valor opcional, desativa o cache completamente)

- Reduz o tamanho do cache de memória do histórico .

Para fazer com que estas flags sejam ativas para todos o usuarios do firefox é necessário mudar os arquivos que mantém a configuração:

No arquivo defaults/pref/firefox.js altere a linha para o valor 0

pref(“browser.tabs.closeButtons”, 0);

E inseridas as linhas no final do arquivo

pref(“content.notify.ontimer”,true);
pref(“content.notify.interval”,2000000);

No arquivo /usr/lib/firefox/greprefs/all.js

pref(“browser.cache.memory.enable”, false);
pref(“browser.sessionhistory.max_total_viewers”, 0);

Pronto agora você está com o seu firefox Tunado esse sim é um 2.0 XD

Agradecimentos ao Cidoloco e a sua publicação no fórum do slackbr, a comunidade do Slackware e principal ao autor do artigo na computerworld.

Referências:
http://www.slackbr.org/forum/viewtopic.php?t=15050
http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9020880&pageNumber=1


Marco Carvalho de Oliveira
Certificate Linux Professional I – LPI
Colméia – Grupo de Pesquisa em Software Livre
Joinville – UDESC – Ciencia Da Computação

Pesquisa em arquivos pdf de forma recursiva no Linux com Slackware 9/Mai/2008

Posted by demoncyber in slackware.
Tags: , ,
add a comment
Certo dia um professor me procurou pergutando como ele poderia fazer uma busca recursiva em vários arquivos de pdf em várias pastas para saber se existia uma determinada expressão neles, utilizando shellscript e aí está a resposta.

Processo adotado:
- Converter arquivos pdf em texto
- Fazer a busca por expressão regular no arquivo com a expressao requisitada
- Escrever em um outro arquivo os documentos que contém a expressão procurada

Para converter um arquivo de pdf para texto devemos utilizar uma biblioteca de conversão e um programa chamado pdftotext tome cuidado para não trocar pdftext por pdftxt -.- sim eu vivo escrevendo trocado . Desde a versão 12 o slackware adotou como padrão a biblioteca Poppler desenvolvida por Derek Noonburg então para tanto é necessário checar se a você possui esta biblioteca instalada caso não você pode instalar baixando do link a sequir.

http://packages.slackware.it/package.php?q=12.0/poppler-0.6.2-i486-1_slack12.0

Lembrando que nas versões anteriores ao slackware 12 como a 11 o pacote que continham o programa xpdftotext era o xpdf-utils

Nota: caso você não utilize o slackware você pode procurar em sua ambiente pela mesma biblioteca

Estrutura do comando do xpdf

pdftotext [opções] <PDF-arquivo> [<texto-arquivo>]

Exemplo:

pdftotext teste.pdf /tmp/teste.txt

Pesquisa no texto

Para fazer a pesquisa em texto podemos utilzar o programa grep ( convenhamos qualquer distribuição linux possui :D ), ele usa como base expressões regulares para busca como referência para aprendizado sobre expressões regulaes recomendo o livro do Aurélio Marinho Jargas segue o link:

http://guia-er.sourceforge.net/

Estrutura do comando do grep

grep [OPÇÃO]… PADRÃO [ARQUIVO]…

grep marco /tmp/teste.txt

Por fim segue o script que chamei de procura-recursiva:

——–
#!bin/bash

IFS=$’\n’
#seta o separador de comandos para quebra de linha isto é para resolver caso tenhamos a indesejável utilização de espaços nos nomes dos arquivos

MYTMP=/tmp/procura-recursiva/
# pasta utilizada pelo programa

rm -rf $MYTMP
mkdir $MYTMP

for files_pdf in `find -type f | grep “\.pdf$” | sed “s/\.//”`
do
LOC_FILE=`pwd`$files_pdf
# diretorio onde se encontra o arquivo seguido do seu nome
NAME_FILE=`basename $files_pdf`
# nome dp arquivo pdf analizado
FIND_FILE=$MYTMP$NAME_FILE.txt
# Arquivo temporário de pdf em forma de texto para ser utilizado na busca rescursiva
pdftotext $LOC_FILE $FIND_FILE
# Converte o arquivo pdf para um arquivo de texto para executar a busca
grep $1 $FIND_FILE >> /dev/null
# Procura no arquivo de texto e joga o resultado para o buraco negro
if [ $? = 0 ]
then
#verifica se a busca foi bem sucedida caso sim imprime que foi econtrada a palavra chave no arquivo
echo “Expressao encontrada no arquivo $NAME_FILE”;
fi
done

Para executar o script basta executar o comando:

bash procura-recursiva expressao

———

Lembrando que apesar deste artigo ser baseado para o Slackware e explicado como executar em outras distros, caso use este documento como referência colocar os creditos. Se perguntarem porque shell? resposta é pq não shell?

:D espero que tenham gostado sugestões e críticas:

e-mail: demoncyber@gmail.com
marco@colmeia.udesc.br

Referência

http://www.dicas-l.com.br/dicas-l/20050226.php
http://thobias.org/doc/sosed.html
man find
http://packages.slackware.it/package.php?q=12.0/poppler-0.6.2-i486-1_slack12.0
http://guia-er.sourceforge.net/


Marco Carvalho de Oliveira
Certificate Linux Professional I – LPI
Colméia – Grupo de Pesquisa em Software Livre
Joinville – UDESC – Ciencia Da Computação