segunda-feira, 30 de novembro de 2009

Reduzir Tamanho de Executaveis

Usando o aplicativo upx, por exemplo:
x:\caminhoparaupx\upx.exe nomedoarquivo.exe

Voce pode baixar o aplicativo em:
http://upx.sourceforge.net/

quarta-feira, 11 de novembro de 2009

gerando executáveis Win32 estando no Linux

Cross-compile Lazarus, gerando executáveis Win32 estando no Linux

Filed under: Lazarus

Lazarus logo

Fazendo download

Primeiramente você deve ter o Lazarus devidamente instalado, no site Vivaolinux você encontrar diversos artigos focando a instalação do Lazaus.

Eu como bom Slackuser já fui nos fontes, na edição deste artigo estamos na versão recém lançada do Lazarus 0.9.22 e FPC 2.0.4.

No link você encontra os requisitos mínimos para funcionamento: FPC, FPC SRC e Lazarus

Depois do Lazarus devidamente instalado, configurado e funcionando no seu Linux passamos a nos preocupar com o cross-compile.

Faça download do FPC-CrossCompile no mesmo link.

Instalação e configuração

O processo é bem simples, se fez download e instalação dos RPM, é só fazer o mesmo com o FPC-CrossCompile.

Mas se como eu preferiu descompactar os RPMs e instalar manualmente os software devem estar em:

  • Lazarus /usr/local/lazarus
  • FPC /usr/local/lib/fpc
  • FPC SRC /usr/local/src/fpc

Descompactando o RPM do FPC-CrossCompile será criado um diretório chamado usr no diretório local, agora vamos copiar algumas coisas:

# cp -a ./usr/lib/fpc/2.0.4/units/i386_win32 /usr/local/lib/fpc/2.0.4/units

# cp ./usr/bin/* /usr/local/bin

Preste muita atenção, estamos copiando do {DIR ATUAL}/usr que surgiu ao descompactar o RPM do FPC-CrossCompile.

Precisamos agora editar o arquivo /etc/fpc.cfg, ele contém informaçõs usadas pelo Lazarus para encontrar as units entre outras coisas.

Parte do /etc/fpc.cfg (atual)

# searchpath for units and other system dependent things

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl

#-Fu~/fpc/packages/base/*/units/;~/fpc/fcl/units/;~/fpc/rtl/units/

Vamos edita-lo para que fique da seguinte forma:

# searchpath for units and other system dependent things

#IFDEF win32

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl

-XPfpc-i386-win32-

-FD/usr/local/bin

#ELSE linux

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*

-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl

#-Fu~/fpc/packages/base/*/units/;~/fpc/fcl/units/;~/fpc/rtl/units/

#ENDIF

FPC configurado, agora falta dar uma atenção ao Lazarus, precisamos recompilar as units para que tenhamos suporte a win32.

Digite:

# cd /usr/local/lazarus/lcl

# make clean

# make all OS_TARGET=win32

# cd /usr/local/lazarus/

# make clean

# make all OS_TARGET=win32

Lembre-se de ajustar os paths, se instalou pelos RPMs substitua /usr/local por /usr.

CrossCompile finalmente

No Lazarus para configurar entre compilar Win32 ou Linux é muito facil e rápido, basta acessar o menu Project >> Compiler Options

Na aba Path em LCL Widget Type selecionar win32
LCL Widget Type

Na aba Code em OS Target selecionar Win32.

OS Target

Pronto, agora basta compilar, será gerado um .EXE que pode ser executado sem problemas no Windows, se for inteligente já deve ter um QEMU ou vmplayer rodando para nunca mais ter que usar Dual-Boot.

vmplayer

Conclusão

“Seu problemas acabaram” Sr. Cleison
Neste artigo foi abordado Cross-compile Windows sobre o Linux mas também pode ser feito MacOS, Darwin, Solares, etc sobre Linux, batando somente obter os pacotes, link-editores necessários para outras plataformas.

Quem usa Lazarus for Windows já sabe que a compilação é muito lenta, isso se deve ao linkador inteligente for Windows e se você desativar, o executável fica maior do que já é, problema que é resolvido com o Cross-compile.

Autor Francis David Donato Pereira

http://blog.fdavid.com.br

domingo, 13 de setembro de 2009

Editar video no UBUNTU

Converter de RMVB para AVI

mencoder filme.rmvb -oac mp3lame acodec=libmp3lame:abitrate=96 -ovc xvid -xvidencopts bitrate=-265000 -quiet -o filme.avi

ou

mencoder input.rmvb -oac mp3lame -lameopts br=192 -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

Converter de FLV para AVI

ffmpeg -i nome_do_ficheiro.flv nome_do_ficheiro.avi

Retirar o áudio do vídeo

mencoder -ovc copy -nosound ficheiro_original.avi -o ficheiro_sem_som.avi

Substituir o áudio do vídeo

mencoder -ovc copy -audiofile audio.mp3 -oac copy video_sem_som.avi -o video_com_audio.avi

Incluir legendas (.srt) num AVI

mencoder video_original.avi -sub video_original.srt -oac copy -ovc lavc -o video_com_legendas.avi -subcp latin1 -font /usr/share/fonts/msttcorefonts/arial.ttf -subfont-text-scale 3.8


Não se esqueça de alterar os nomes dos ficheiros nos locais apropriados!

fonte:http://pplware.sapo.pt/2009/09/13/linux-5-dicas-de-edicao-de-video-pelo-terminal/#more-27194

quarta-feira, 17 de junho de 2009

sábado, 13 de junho de 2009

"Corrigindo" encoding do PostgreSQL 8.3 para poder usar banco de dados latin1

Se você está como estive tempos atrás: irado, revolto, sem esclarecimento de como as coisas funcionam em um excelente (talvez o melhor) SGDB - Postgres e está sofrendo com os males:

1 - Encoding do Sistema Operacional Debian/Ubuntu Ferrados (sim, você brasileiro e a droga do locale te mostrando coisas de americanos, pode uma coisa destas?)

2 - Mudar o Encoding do Postgres.

Vamos ao ataque

Antemão você precisa saber que o seu sistema foi configurado por algum bestão, isto mesmo, o cara instalou o sistema americano sendo brasileiro.

Ter um porstgres que não aceita nem a pau um encoding diferente (padrão dessa tosquisse sempre é UTF8).

Locale do Sistema

Mãos-a-Obra

Todas as configurações e comandos foram executados como usuário root.

Existem vários arquivos que fazem a configuração do locale, precisamos configurar todos eles e depois executar alguns comandos, vamos lá.

Edite o arquivo /etc/environment e altere os campos LANG e LANGUAGE de forma que fiquem iguais ao abaixo, se não existir, acrescente:

LANG="pt_BR"
LANGUAGE=”pt_BR:pt:en”

O arquivo /etc/default/locale também deve ser editado e seu conteúdo deve ser:

LANG="pt_BR"
LANGUAGE=”pt_BR:pt:en”

Execute o seguinte comando:

# echo "pt_BR pt_BR.ISO-8859-1" >> /etc/locale.alias

Este arquivo grava os aliases para os locales, isso é para facilitar as configurações.

No diretório /var/lib/locales/supported.d alguns arquivos que configuram os locales que serão gerados, por padrão existem três arquivos “en”, “pt” e “local”. Para nosso caso, pode apagar o “en” e o “pt” deixando apenas o “local”.

Feito isso, edite o arquivo local e deixe seu conteúdo como abaixo:

pt_BR.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

Muito bem, configuramos os arquivos necessários para a geração dos locales, agora vamos reconfigurar.

Os comandos abaixo fazem o serviço:

# localedef pt_BR -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO-8859-1 -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO8859-1 -i pt_BR -f ISO-8859-1
# dpkg-reconfigure locales
# locale-gen –purge
# locale-gen

Acredito que apenas um desses três comandos fariam o serviço, mas como eu executei os três quando estava configurando o sistema não vou tirar algum deles, é melhor executar a mais e funcionar do que executar a menos e não funcionar.

Reinicie o sistema e execute o comando abaixo para termos certeza que está tudo conforme o desejado.

# locale
LANG=pt_BR
LANGUAGE=pt_BR:pt:en
LC_CTYPE=”pt_BR”
LC_NUMERIC=”pt_BR”
LC_TIME=”pt_BR”
LC_COLLATE=”pt_BR”
LC_MONETARY=”pt_BR”
LC_MESSAGES=”pt_BR”
LC_PAPER=”pt_BR”
LC_NAME=”pt_BR”
LC_ADDRESS=”pt_BR”
LC_TELEPHONE=”pt_BR”
LC_MEASUREMENT=”pt_BR”
LC_IDENTIFICATION=”pt_BR”
LC_ALL=

# locale -a
C
en_US.iso88591
POSIX
pt_BR.iso88591

Agora sim, está tudo como deveria estar. Nosso sistema já está usando ISO-8859-1.

(ISO-8859-1é LATIN1)

Corrigindo o Encoding do Postgres

Bem, esta é a hora do quebra-quebra, vamos lá:

1 - Crie uma nova instância (cluster) de gestão do Postgres:

sudo pg_createcluster -e LATIN1 -d /caminho/do/novoSGDB 8.3
cluster-8.3-2

Feito isto, a porta que o postgres vai operar neste novo SGDB será 5433

Criando SuperUser para administrar o Postgres

[root@srv:~] # su - postgres

[postgres@srv:~] $ createuser -P

Digite o nome da role a ser adicionada: pglinux
Digite a senha para a nova role:
Digite-a novamente:
A nova role poderá criar um super-usuário? (s/n) s
CREATE ROLE

Quer ver os users?

[postgres@srv:~] $ psql
postgres=# \du
Lista de roles
Nome da role | Super-usuário | Cria role | Cria BD | Conexões | Membro de
————–+—————+———–+———+———–+———–
pglinux | sim | sim | sim | ilimitado |
postgres | sim | sim | sim | ilimitado |
(2 registros)

postgres=# \q

Informações complementares:

http://www.forumdebian.com.br/topico-1583-15.html&sid=64f758c828b395f96e7ae61b4d55897a

http://under-linux.org/7954-configurando-locale-iso-8859-1-no-kubunt-710-gutsy-gibbon.html


Sem Graça

fonte: http://ubuntuforum-br.org/index.php?topic=45345.0
autor: little_oak