quarta-feira, 30 de abril de 2008

Convertendo arquivos de audio em linha de comando

E ai galera!
Blz? Desculpem pela demora para a atualização, mas sabe como eh neh?
Facul, trabalho, etc...
Bom, vai ai uma dica rapidinha de como se converter arquivos de audio com o faad:

numa pasta que contenha arquivos .m4a e vc quer transforma-lo em mp3 use o seguinte script:

for i in *.m4a; do
`faad -o - "$i" | lame - "$i.mp3";
done;

Pronto, depois de um tempinho vai estar tudo no formato mp3!
PS: Sim, eu sei que o arquivo de output vai ficar *.m4a.mp3 mas me deu uma certa "falta de vontade" de pensar como fazer ele ficar bonitinho heheheh
PS2: Usei isso de transformar m4a para mp3 pq não sei por que raios que o amarok não edita as idtags de m4a!

Bom, eh isso galera!
Vou tentar achar novamente tempo para postar novidades aqui!
Até mais!

segunda-feira, 7 de janeiro de 2008

Esconder o cursor do mouse no X


E ai pessoal,
Depois de me bater um pouco para descobrir como fazer para ocultar o cursor do mouse no XFree, consegui achar uma solução.

O X não deixa retirar o ponteiro, mas ele nos deixa alterar o bitmap dele, de forma que ele possa ficar transparente.
O arquivo que ele gera o bitmap é: /usr/X11R6/lib/X11/fonts/misc/cursor.pcf.gz
Este arquivo é um arquivo compactado e compilado.
Para podermos altera-lo, precisamos do fonte.
Podemos baixa-lo de algum dos mirrors listados aqui.
Depois de baixado, vamos editar o fonte:

Abra com o editor de sua preferência o arquivo cursor.bdf

Agora, vamos alterar algumas partes, completando com 0000 todas as posições do arquivo que tenham código hexadecimal.
Importante: A quantidade de linhas que existiam antes de editar o arquivo, deve continuar depois que for salvo.
Então vamos substituir tudo por 0000 nas partes onde as STARTCHAR tenham os seguintes rótulos:


X_cursor
X_cursor_mask
left_ptr
left_ptr_mask


Após isso, vamos compilar para gerar o formato esperado pelo X, que no caso é o pcf.

Utilize o software bdftopcf para fazer o trabalho sujo por você:

$ bdftopcf cursor.bdf -o cursor.pcf

Depois disso, se ele não tiver reclamado de nada, (como aconteceu comigo, pois troquei todas as linhas que deveriam ser editadas por somente um conjunto de 0000 heheheh), você pode compactar esse cara:

$ gzip cursor.pcf cursor.pcf.gz

Agora como root, você pode copiar para a pasta de destino. Eu recomendo fazer uma cópia de segurança do arquivo original, pois esta alteração vai fazer com que o mouse fique completamente transparente durante o X. Não sei se o KDE ou o Gnome pode quebrar essa regra, mas não é esse meu objetivo, caso alguém teste, deixe um comentário depois para que eu possa ficar sabendo, por favor.

# cp /usr/X11R6/lib/X11/fonts/misc/cursor.pcf.gz /usr/X11R6/lib/X11/fonts/misc/cursor.pcf.gzOrig
# cp cursor.pcf.gz /usr/X11R6/lib/X11/fonts/misc/cursor.pcf.gz

E pronto. Estamos sem ponteiro de mouse atrapalhando.
Caso não funcione de imediato, reinicie o X que ele vai pegar a nova configuração.

Por hoje é só pessoal!
Até a próxima!

segunda-feira, 10 de dezembro de 2007

Leitura de arquivo de configuração


E ai galera!
Blz? Bom, desculpem pela demora de atualização, mas estou corrido mesmo no trabalho, e na faculdade também. Mas esta é a última semana de aula, e depois é só alegria! Bom, quanto as postagens, pretendo me policiar melhor, e começar o ano com uma meta de pelo menos uma postagem por semana. Digo começar o ano, porque estarei em Floripa para o natal e o ano novo, e pretendo me manter saudável o suficiente e não utilizar o computador durante essa semana hehehe.
Bom, o que irei passar hoje, é uma função que criei, onde faz uma leitura de um arquivo de configuração, e retorna para a string passada como argumento, e retorna 0 em sucesso ou 1 em erro, como padrão no Linux.

O código vem logo abaixo:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int readConf(FILE *pfile, int delim, const char *key, char *buf){

char tmp[256];
char tmp2[256];

char tmp3[256];
int i, j;

while(fgets(tmp, 256, pfile)){

if(strchr(tmp, '#')){
strcpy(tmp3, strchr(tmp, '#'));

if(strlen(tmp3) == strlen(tmp)){

continue;
}
}
memset(tmp3, 0, 256);

if(strcpy(tmp3, strstr(tmp, key))){

memset(tmp2, 0, 256);
if(strchr(tmp3, '#')){

memset(tmp, 0, 256);
strcpy(tmp, strchr(tmp3, '#'));

strncpy(tmp2, tmp3, strlen(tmp3) - strlen(tmp)+1);

memset(tmp3, 0, 256);
strcpy(tmp3, strchr(tmp2, delim));

}
else
strcpy(tmp3,strchr(tmp, delim));

memset(tmp2, 0, 256);
for(i=1, j=0; i<strlen(tmp3)-1; i++){

if(tmp3[i] == ' ') {
continue;

}
tmp2[j]=tmp3[i];
j++;

}
strcpy(buf, tmp2);

return 0;

}
}
return 1;
}



Para compilar este código, basta inclui-lo como um reader, ou fazer um .so (shared object) mas isso não é um assunto para hoje.
Esta função deve ser utilizada dessa forma:

if(readConf(file, ':', "path_arquivos", buf)){
printf("Erro no leitura do path_arquivos!")
}


onde:
readConf -> Nome da função;
file -> Arquivo aberto onde será localizada a string;
: -> Caracter delimitador de configuração (pode ser alterado com '=' por exemplo);
path_arquivos -> string a ser localizada dentro do arquivo 'file'
buf -> String onde será retornado o valor da configuração

Para o arquivo ser lido, eu optei por passar o parametro do 'file' como um arquivo aberto lá fora mesmo, na main por exemplo, onde ele deve ser de um tipo FILE *
Outra coisa, o arquivo pode ser comentado também, na minha implementação, ele aceita o valor '#' para isso, mas caso queira alterar, fique a vontade, não é nem um pouco difícil!

Obrigado a todos e até a próxima!

sexta-feira, 23 de novembro de 2007

.:Converter Imagem No Terminal:.


I ai amigos não sumi não estou passando aqui para deixar uma dica =)
Eu precisei converter um formato de imagem para outro e pensei bom vou mandar essa dica afinal todos nós já
fomos iniciantes e não sabiamos fazer isso.
É uma dica Simples e muito necessária precisa ter o pacote ImageMagick instalada em seu sistema:


Nós que usamos Slack já somos agraciados com o pacote do ImageMagick isso no Slack(FULL).

Para Converter. (Abra seu Bash seu Terminal preferido)

# convert imagem_do_Boot.png nova_imagemBoot.jpg

Pronto Converteu !!
Sim pode acreditar converteu mesmo =)

Abraço Amigos, aos Users bom todo mundo e ao meu Amigo Diego.=)

[]'s
Razec
mrazec@gmail.com
razec@linuxmail.org
Linux User: 443515

quarta-feira, 7 de novembro de 2007

OpenGL Parte II


Dae pessoal!
Perdão pela demora na atualização, mas meu trabalho está realmente exigindo muito de mim.
E a faculdade então, nem tenho o que falar.
Mas chega de choro, e vamos ao que interessa.

Vamos fazer uma pequena animação, onde desenharemos um retângulo e colocaremos cores em cada vértices.
A cada delay passado, será atualizada a cor de cada vértice, então teremos um efeito bem legal no nosso tutorial.
Bom, como normalmente, abra um editor de textos e mande ver.


#include <
GL/glut.h>
#include
<stdio.h>
#include <stdlib.h>
#define DELAY 200

float r1=0.7, r2=0.2, r3=0.5, r4=0.0;
float g1=0.3, g2=0.9, g3=0.3, g4=0.5;
float b1=0.1, b2=0.0, b3=0.8, b4=0.7;

void anima(){
r1+=0.1; g1+=0.1; b1+=0.1;
r2+=0.1; g2+=0.1; b2+=0.1;
r3+=0.1; g3+=0.1; b3+=0.1;
r4+=0.1; g4+=0.1; b4+=0.1;

if(r1>=1) r1=0; if(g1>=1) g1=0;
if(b1>=1) b1=0; if(r2>=1) r2=0;
if(g2>=1) g2=0; if(b2>=1) b2=0;
if(r3>=1) r3=0; if(g3>=1) g3=0;
if(b3>=1) b3=0; if(r4>=1) r4=0;
if(g4>=1) g4=0; if(b4>=1) b4=0;

glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glColor3f(r1,g1,b1); glVertex3f(-0.5,-0.5,0);
glColor3f(r2,g2,b2); glVertex3f(0.5,-0.5,0);
glColor3f(r3,g3,b3); glVertex3f(0.5,0.5,0);
glColor3f(r4,g4,b4); glVertex3f(-0.5,0.5,0);
glEnd();
glFlush();
glutTimerFunc(DELAY,anima, 0);
}

void display(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glVertex3f(-0.5,-0.5,0);
glColor3f(1,0,0);
glVertex3f(0.5,-0.5,0);
glColor3f(0,1,0);
glVertex3f(0.5,0.5,0);
glColor3f(0,0,1);
glVertex3f(-0.5,0.5,0);
glColor3f(0,0,0);
glEnd();
glFlush();
}

void init(){
glClearColor(0,0,0,0);
}
int main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
glutInitWindowSize(1024,768);
glutInitWindowPosition(0,0);
glutCreateWindow("Draw Colors");

init();
glutDisplayFunc(display);
glutTimerFunc(DELAY,anima, 0);
glutMainLoop();

return 0;
}


Compile-o como fizemos anteriormente:
gcc -o teste main.c -lglut

Agora execute-o.

Agora vou explicar algumas coisas para todos nos situarmos:

Na Main, o que temos de novo é somente a função glutTimerFunc(DELAY, anima, 0);
Esta função como o próprio nome diz, cria um timer no programa, e chama uma função.
No primeiro argumento, você passa o delay em milisegundos. Coloquei um define para facilitar.
No segundo, se passa o rótulo da função. E o terceiro seria um parâmetro para a função.

Ok, dessa forma inicializamos uma animação. Mas se você reparar, dentro da função anima, esta função é chamada novamente. Isso é feito, porque a cada interação, ele perde o tempo, então, temos que reinicializa-la.

Agora que já explicamos a Main, vamos ver o que temos de novo em na função anima.
Depois de todos aqueles r's, g's e b's (que são as cores) temos o início de nosso retângulo, com o glBegin(GL_QUADS);.
Logo depois, antes de cada ponto glVertex3f(x, y, z); temos um cara chamado glColor3f(r,g,b);. Esse cara, faz com que cada vértice logo após ele, tenha a cor determinada. O legal do openGL, é que ele já faz a "mistura" das cores.
Fora isso não temos mais nenhuma novidade nessa função. Repare que temos novamente a chamada da glutTimerFunc(DELAY,anima, 0); no final da função. Isso é pelo motivo já explicado anteriormente.

Bom pessoal. O resto do software já foi explicado anteriormente, neste post.
Peço desculpas pela demora na atualização, e pretendo arranjar mais tempo para atualizar isso aqui com mais frequência.
Valeu pessoal! Qualquer dúvida/sugestão comments estão aí!
Abraços a todos!

buscapé

dell
Saiba onde tem o melhor preço antes de comprar