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

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!

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

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

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…

XUL é legal!

Por influência da Semana Azul, acabei pesquisando e procurando aprender algo sobre XUL. Achei o máximo! Nas palestras, sinceramente, não consegui retirar muita informação útil, mesmo achando que os caras que deram as palestras eram muito bons. Foi mais uma explicação básica sobre conceitos não tão relacionados ao XUL. Na de quarta-feira, sobre Tableless, por exemplo, o Diego só passou o conceito. Bom… Penso que deve ser difícil fazer um evento desses dar certo, mas achei muito legal a idéia e a iniciativa. Acho que as próximas “Semanas azuis” serão cada vez melhores.

Mas o importante disso tudo é que eu acabei conhecendo o XUL olhando o site da Semana Azul, do XUL:Brasil, entre outros links deles. E achei essa linguagem muito massa! É realmente uma forma bem legal de trabalhar com interfaces gráficas multi-plataforma e é uma linguagem bem simples (parece um XHTML).

O problema é que só o Mozilla roda XUL… Então é difícil fazer programas como sites em XUL porque visitantes de todas as maneiras vão acessar e não vão conseguir (na verdade, os navegadores delas é que não vão conseguir) interpretar o XUL.

Mas mesmo assim, principalmente pra sistemas internos ou áreas de administração de sites (onde todos os admins usam Mozilla), acho bem legal começar a utilizar o XUL. Fiz algumas aplicações básicas e depois começarei a trabalhar mais com JavaScript e também PHP pra ver o que sai… :)

Observação: É, esse post “inútil” é só pra sugerir que vocês aprendam XUL mesmo! E vale a pena!

Seletiva IOI

O resultado “final” da seletiva pra Olimpíada Internacional de Informática na Polônia ainda não saiu, mas parou de mudar. Estou em sexto (o sr. Helder Suzuki passou pra quinto e, aliás, lamento ele não ter ido ainda mais pra cima – ele deve estar bem mais desapontado com o resultado do que eu), com 240 pontos. Cada coisa de besteira que eu errei…! Mas tudo bem, ainda tenho mais três anos. :D

Internet Explorer 7

O Internet Explorer 7 Beta 1 saiu! Mas eu não tô conseguindo baixar… Quem quiser saber mais a respeito leia BrunoTorres.net e Tableless.com.br, além do IEBlog (oficial da Microsoft). Enjoy!

[update] Baixei e achei uma porcaria! Mas pelo menos dá pra navegar com abas, embora o recurso seja meio lagger (não é instantâneo como no Mozilla)… Não vou falar muito porque já falaram muita coisa sobre isso na internet! [/update]

© 2005–2020 Tiago Madeira