Arquivo mensais:agosto 2005

Feed RSS, Google e OBM

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Finalmente implementei o feed RSS que estava faltando na minha página… O Gustavo Custódio, do Colégio, me lembrou de criá-lo e fiz isso agora a noite mesmo…

Segui o padrão do Bruno Torres, porque não tenho muita experiência com feeds XML/RSS e criei até um XSL para não ficar só o feed mesmo, mas ter um “estilo associado a ele”, como diz o Mozilla.

Hmmm… Então agora vocês já podem ver o conteúdo do site via os feeds (o que facilita bastante)… E aproveitem para se encontrarem algum erro (eu fiz na pressa) me avisarem. :)

Hoje coloquei também em minha página o programa Google Adsense. Coloquei um pequeno banner (de 468×60) localizado embaixo do primeiro post da página e outro no rodapé da página e acho que não poluiu e aliás, as cores ficaram discretas e bonitas. :D (hehehe, sou o primeiro cara que diz que gosta de ads no mundo!).

E por falar em Google, nessa semana testei vários serviços deles. Começou com o GoogleTalk e depois que meu irmão colocou rótulo pra “todos” os lugares do mundo no GoogleEarth acabamos realmente nos viciando em Google. Mas os serviços deles são ótimos!

Boatos dizem que o Google vai dominar o mundo e o Pink e o Cérebro trabalham lá. Não sei se é verdade, mas cada vez mais acho que isso realmente faria sentido! Hehehe…

Sábado é a segunda fase da OBM (Olimpíada Brasileira de Matemática) e também começa o Festival de Música de Itajaí. Na Olimpíada, acho que não tenho muita chance e, aliás, nessa semana também andei estudando um pouco (com o César Kawakami inclusive, que me passou umas coisas bem legais sobre Teoria dos Números). No festival, me inscrevi para fazer piano mesmo com o Michel Friedenson.

Depois da semana do festival de música, quero voltar a programar logicamente. Essa semana só tentei fazer coisas em GTK, mas sem muito sucesso (aprendi um pouco de C/GTK, mas depois resolvi PHP/GTK porque PHP é uma linguagem mais completa, mas ainda não decidi nada)…

Linux: XDirectFB e Wine

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.


Flash e transparencias XDirectFB

Por dica do Paulo Matias (um amigo que conheci no Curso de Programação da OBI deste ano), instalei um CVS do XDirectFB no meu Linux (patchando o Xorg) e estou curtindo bastante! É um sistema bem rápido (mais rápido que o X normal) e que tem transparências nativas muito legais (e instantâneas). O site é directfb.org e para instalar só precisa do DirectFB e do XDirectFB (tem vários outros pacotes lá, mas que não servem para isso). Coloquei alguns screenshots no Flickr. :) O único ponto fraco do XDirectFB (talvez só a versão CVS) é que eu não consegui configurar o teclado (habilitando Xkb e fazendo tudo “direitinho”, o layout do meu teclado US internacional até funciona, mas aí as teclas direcionais param de funcionar!) e tem um bug um pouco esquisito… (aliás, não sei se é um bug ou eles fazem isso por querer): Quando iniciamos uma seção (startx/xinit) ele continua no console 1 e precisamos dar um CTRL+ALT+F7 para ir para o modo gráfico que ele está abrindo… :blink:

E por falar em fotos no Flickr e em evolução no Linux, eu aproveitei o final de semana também para instalar Wine no laptop e já estou conseguindo rodar programas que antes não funcionavam. Eu consegui rodar o Flash MX tranquilamente (mas antes já tinha conseguido) e ficou mais rápido que antes. Também rodei Twinsen’s Odissey (um jogo bem antigo que não roda no WinXP! Hehehe) sem problema algum e Age of Kings (o segundo da série Age of Empires da Microsoft) por alguns momentos. Com a Radeon configurada direitinho e o Wine também, gostei bastante das emulações.

Eu fiz mais coisas ultimamente, mas foram tantas que resolvi separar em dois posts. Portanto, continuo no próximo… ;)

Mensageiros Instantâneos, OBM, Novos Programas, Música

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Em primeiro lugar, venho por meio deste post comunicar que não uso mais MSN Messenger. O mensageiro instantâneo da Microsoft saiu da minha lista de contas do CenterICQ para a entrada de dois novos e melhores: IRC e GoogleTalk/Jabber. Cheguei a conclusão de que quem quer falar comigo deve usar o que eu uso e não ao contrário, por um motivo óbvio: o meu é melhor que o deles.

Esta decisão fez com que eu perdesse centenas de contatos, mas acho que foi a decisão certa a ser tomada. Quem quiser me contatar agora, pode me adicionar no ICQ como 147330555, GoogleTalk como tmadeira em gmail.com e no IRC/Freenode, como tiagomadeira.

O segundo ponto importante deste post é o anúncio da OBM, Segunda Fase. A prova acontecerá no sábado que vem, dia 03 de setembro. Acho difícil eu conseguir medalha nesse ano (Terceira Fase é difícil!), mas vou tentar me esforçar o máximo possível… Esta semana tivemos o treino para olimpíadas com o Vavá, aprendi algumas coisas úteis. E ontem conversei com o César Kawakami no ICQ que me deu umas dicas interessantes também sobre Teoria dos Números. Vou tentar aprender alguma coisa sobre isso nos próximos dias…

As aulas de matemática dessa semana foram pouco produtivas porque eu andei faltando algumas para a divulgação do fórum do colégio. Então, só deu pra fazer dois problemas: a implementação da Máxima Subcadeia Comum (LCS/Programação Dinâmica):

//LCS - Longest Common Subsequence
//Programação Dinâmica - MSC - Maior Subcadeia Comum
 
#include <stdio.h>
#define SMAX 1001
#define DIAGONAL 1
#define LADO 2
#define CIMA 3
 
 
//n = tamanho de x
//m = tamanho de y
 
int c[SMAX][SMAX], b[SMAX][SMAX], n, m;
char x[SMAX], y[SMAX];
 
int lcs_recupera(int i, int j) {
	if (i==0||j==0) {
		return 0;
	}
	if (b[i][j]==DIAGONAL) {
		lcs_recupera(i-1, j-1);
		printf("%c", x[i]);
	} else if (b[i][j]==CIMA) {
		lcs_recupera(i-1, j);
	} else {
		lcs_recupera(i, j-1);
	}
}
 
int main() {
	int i, j;
 
 
	printf("LCS - Longest Common Subsequence\nPor Tiago Madeira\n\n");
	printf("Digite o tamanho da string X: ");
	scanf("%d", &m);
	printf("Digite o tamanho da string Y: ");
	scanf("%d", &n);
 
	scanf("%*c");
	printf("Digite a string X: ");
	for (i=1; i<=m; i++) {
		scanf("%c", &x[i]);
		c[i][0]=0;
	}
	scanf("%*c");
	printf("Digite a string Y: ");
	for (i=1; i<=n; i++) {
		scanf("%c", &y[i]);
		c[0][i]=0;
	}
 
	printf("\nPrograma raciocinando...\n");
	for (i=1; i<=m; i++) {
		for (j=1; j<=n; j++) {
			if (x[i]==y[j]) {
				c[i][j]=c[i-1][j-1]+1;
				b[i][j]=DIAGONAL;
			} else {
				if (c[i][j-1]>c[i-1][j]) {
					c[i][j]=c[i][j-1];
					b[i][j]=LADO;
				} else {
					c[i][j]=c[i-1][j];
					b[i][j]=CIMA;
				}
			}
		}
	}
 
/*	printf("\nMATRIX C\n");
	for (i=1; i<=m; i++) {
		for (j=1; j<=n; j++) {
			printf("%d ", c[i][j]);
		}
		printf("\n");
	}
 
	printf("\nMATRIX B\n");
	for (i=1; i<=m; i++) {
		for (j=1; j<=n; j++) {
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
*/
 
	lcs_recupera(m, n);
	printf("\n");
}

e um programa bem ridículo para calcular os termos e a soma de uma PA (é o que o prof. tá ensinando, aí achei bom pra fazer os exercícios mais rápido…):

//Aplicar as fórmulas das PAs
 
//Progressão Aritmética
//Programa desenvolvido por Tiago Madeira (c) 2005.
 
#include <stdio.h>
#define MAX 1000001
 
long double a[MAX], s[MAX];
 
int main() {
	long double r;
	int n;
 
	printf("Primeiro termo da PA: ");
	scanf("%Lf", &a[1]);
	printf("Razão da PA: ");
	scanf("%Lf", &r);
 
	//Eu podia fazer só pros que vão ser usados, mas não sei porquê, deu vontade de fazer assim... =)
	printf("\nAguarde o problema raciocinar tudo que ele tem para raciocinar...\n");
	for (n=2; n<MAX; n++) {
		a[n]=a[1]+r*(n-1);
		s[n]=(a[1]+a[n])*n/2;
	}
 
	printf("\nE agora, digite números para o programa dizer A e S dele.\n");
	do {
		printf("Número: ");
		scanf("%d", &n);
		if (!n) {
			break;
		}
		printf("Número na posição N = %.Lf\nSoma de 1 a N = %.Lf\n\n", a[n], s[n]);
	} while (n);
 
}

No começo do mês que vem é o Festival de Música de Itajaí. Acho que vou fazer oficina de Piano Popular avançado com o Prof. Michel Freidenson, que foi quem me deu aulas numa oficina semelhante há dois anos. A semana da música vai contar também com uns shows bem legais e o site oficial é este aqui.

O HD chegou!

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Finalmente de HD novo, já intalei WinXP e Slackware (aliás, coloquei umas fotos no Flickr). Dessa vez, dividi o HD em sete partições.

  • hda1 – 10gb, Linux ext3, Slackware
  • hda2 – 7,5gb, NTFS, Windows XP
  • hda3 – 7,5gb, FAT32, Windows 98*
  • hda5 – 5gb, Linux, **
  • hda6 – 1gb, Linux Swap
  • hda7 – 5gb, FAT32, ***
  • hda8 – 4gb, Linux ext3, homes****

* – Ainda não instalei o Windows 98 nela, mas farei-o em breve. “Por que você quer ter um Win98 aí?” Porque eu gosto do DOS e quero fazer uns testes lá.

** – É uma partição que eu criei pra instalar outros sistemas para testar. O hda1 sempre vai ser alguma coisa mais estável, como esse Slackware que eu tô usando agora.

*** – Uma FAT para passar dados do NTFS para o Linux e vice-versa. “Por que não uso o do Win98?” Pelo mesmo motivo que eu separo o home do sistema (veja abaixo o ****)

**** – Resolvi deixar as Home fora dos sistemas, porque além de poder acessar das duas partições o mesmo home (os mesmos arquivos de configuração, por exemplo), quando eu quero formatar um sistema ou reinstalar, fico mais tranquilo.

Ficou legal, né?

Baixei o Grub (agora só tô usando ele em todos os computadores que tenho instalado Linux), refiz alguns programas em Bash, reconfigurei todo o sistema, coloquei até as extensões no meu Firefox e aqui estou de volta outra vez.

Ultimamente, já que estava sem computador, andei brincando com dois computadores. O primeiro, do laboratório de informática do Colégio, é o que eu vou usar a partir de agora para fazer o site. Instalei Slackware, Fluxbox e tá bem legalzinho. O segundo é o computador que meu pai usa no trabalho. Um Pentium 4 animal, instalei Slack com KDE (que pra abrir o sistema inteiro, porque coloquei o runlevel dele pra 4, demora uns 20s).

Além disso, andei fazendo outras coisas legais também, como apresentando o fórum do Colégio para os alunos: Quer saber? e iniciando um projeto de software livre para leigos: http://sl.tiagomadeira.net. Aqui tem a explicação de porquê estou criando essa página.

Bom, por enquanto é isso. Ontem foi a primeira vez que desenvolvi um problema lógico desde o curso da OBI (também, não deu tempo, o computador pifado aqui!), que foi de geometria (ver se um ponto está dentro ou fora de um polígono). Mas ainda estou corrigindo-o, então depois coloco na seção de códigos.

Instalando winprinters no Slackware

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Este artigo é um pouco velho (de janeiro deste ano) e foi originalmente postado no SOSPHP. Mas percebi que ainda não tinha colocado ele aqui no site (na época em que escrevi ainda nem tinha o site). Já que eu tô sem HD e, por causa disso, sem fazer nada de útil/novo no computador, resolvi colá-lo aqui. Não mudei o texto e nem re-testei a dica. Qualquer coisa, comentem.

Baseando-me num problema recente que tive com a minha HP Deskjet 820Cxi que é uma winprinter (a diferença entre ela e uma impressora normal é como a de modem e winmodem) que usa PPA ao invés do PLD das HPs (e que é um sistema muito pior – coisa que não sabia quando comprei – e inclusive eles já pararam de fabricar esse tipo de impressora), resolvi escrever esse pequeno artigo que é meio que uma tradução deste site porque não consegui encontrar material em português sobre a instalação de winprinters (consegui encontrar, mas só notícias ruins sobre ela e maneiras que não davam totalmente certo).

Algumas distros (acho que o Kurumin e o Knoppix) já possuem suporte nativo para essas impressoras, mas no meu Slackware não foi mole instalar.

Esta receita foi testada somente no Slackware 10 (testei com o Kernel 2.6.9, mas acho que funciona com a série 2.4 também) e não tive problema algum seguindo estes passos.

Este artigo serve para instalar as impressoras:

  • HP Deskjet 710C
  • HP Deskjet 720C
  • HP Deskjet 722C
  • HP Deskjet 820Cse
  • HP Deskjet 820Cxi
  • HP Deskjet 1000Cse
  • HP Deskjet 1000Cxi

E para instalar a impressora você precisará: (clique no link para entrar na página dele e fazer download)

Instalação em alguns passos:

  1. Baixe e instale todos os arquivos dos locais descritos acima. Na maioria dos Linux, já tem Ghostscript e CUPS.
    O pnm2ppa precisa ser compilado usando # make e # make install. Daí vá em /etc/pnm2ppa.conf e altere o valor da primeira variável que aparece no arquivo (VERSION=0) para a versão da sua impressora (no meu caso VERSION=820)
    O driver CUPS PPD da impressora deve ser baixado e copiado para sua pasta de modelos da CUPS (no meu Slackware é /usr/share/cups/model)
    Os foomatics precisam ser copiados para /usr/local/bin e depois linkados na pasta de filtros do cups (# ln -s /usr/local/bin/foomatic-rip /usr/lib/cups/filter/foomatic-rip e a mesma coisa com o outro)
  2. Inicie o daemon do cups escrevendo # cupsd no console e abra no Firefox, Lynx ou qualquer browser de sua preferência o endereço http://localhost:631.
  3. Adicione a impressora (a localização é /dev/lp0, /dev/lp1… ou no meu caso foi smb://windows/hp820c porque tá configurada no meu Windows 98; o nome pode ser o de sua preferência – sem espaços – coloquei hp820c)

Se tudo tiver dado certo, quando chegar na parte de driver vai existir lá o driver da sua impressora e a instalação vai sair sem problemas.

Bronze na Olimpíada de Maio

ATENÇÃO: Este conteúdo foi publicado há 12 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Ontem saiu no site da OBM o resultado do Brasil na Olimpíada de Maio nesse ano. Ganhei bronze com 30 pontos! Mais um bicampeonato nesse ano… Hehehe… :D

Nessa semana, o laptop voltou a ter um problema de HD (quer dizer, o problema é o mesmo que aquela vez, mas voltou a dar pau e eu tive que formatar tudo de novo!). Tô revoltado aqui, ainda mais porque nessa semana tô refazendo as provas e trabalhos da semana que eu faltei por causa do curso da OBI. Tenho um trabalho (Flash, The Little Dog Corporation) sobre o Pitágoras que devo acabar até sexta-feira e não tô nem com um sistema estável aqui…

Não sei ainda o que vou fazer com o laptop. Eu mandei um e-mail pra HP e o cara (muito educado e rápido, por sinal) respondeu sugerindo que eu fizesse três coisas. Primeira: tirar e colocar o HD de novo. Segunda: rodar o “Killdisk”. Terceira: comprar um hd novo! :( Tomara que não seja a última, porque um HD de 40gb pro laptop tá 350 reais…

A parte boa é que já que eu formatei, eu acabei reconfigurando tudo e daí eu sempre acabo aprendendo algo novo. Dessa vez, eu parei de vez de usar KDE (nem instalei pra não dar vontade). Tô usando Fluxbox com Eterm e aprendi a deixar o Fluxbox bem bonito… Depois eu vou ter que formatar o HD para qualquer uma das sugestões do cara da HP, então vou ter que configurar tudo de novo, mas foi legal só pra aprender…

Não tenho mais programado NADA (com exceção de durante as aulas de matemática, porque o professor ainda tá ensinando como descobrir vértices de funções de segundo grau), mas baixei uns PDFs legais do professor Cid da UNICAMP e vou ler esse material assim que possível (sobre NP-Completude e Programação Dinâmica).

O Colégio tá inaugurando um fórum novo. Quem estiver disposto a contribuir com dúvidas ou respostas: Quer saber?

Para quem não sabe…

A Olimpíada de Maio é uma olimpíada iberoamericana (acontece em países colonizados por Portugal e Espanha, e nestes dois países também) de matemática dividida em dois níveis: Até 13 anos e até 15 anos. Este ano eu participei do nível 2, 15 anos.

Esta notícia em outros lugares…