Arquivo da tag: slackware

Dor de cabeça

ATENÇÃO: Este conteúdo foi publicado há 10 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.

Anteontem formatei o laptop e instalei o slamd64. Por ordem de prioridade, lá vão os problemas…

Problema 1: placa ATI Radeon Xpress 1100. O “ati” do Xorg não suporta. Eu não consigo instalar os drivers proprietários. Baixei lá do site da ATI e rodei normalmente o arquivo e ele não abre o instalador gráfico que deveria abrir:

root@laptop:~# ./ati-driver-installer-8.32.5-x86.x86_64.run 
Creating directory fglrx-install
Verifying archive integrity... All good.
Uncompressing ATI Proprietary Linux Driver-8.32.5........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
==================================================
 ATI Technologies Linux Driver Installer/Packager 
==================================================
Detected configuration:
Architecture: x86_64 (64-bit)
X Server: X.Org 6.9.x 64-bit
Removing temporary directory: fglrx-install
root@laptop:~#

(e, sim, não estou em root por su, o que poderia fazer eu não ter um DISPLAY, mas entrei no X como root mesmo)

Essa série 1100 parece ser nova porque há pouca informação sobre ela na internet. Alguém sabe ajudar?

Sem configurar a placa, não consegui usar 1280×800, aí tudo está “gordo” e desfigurado, porque estou usando 1024×768 num monitor widescreen (driver vesa).

Problema 2: 64 bits. Firefox com Flash, codecs proprietários do mplayer, Java. Achei que fosse mais fácil… O hlegius fez um comentário bem pessimista lá no outro post… E ele tem razão. Estou com o live-cd do Gentoo amd64 baixado esperando um CD virgem pra gravar (devo comprar hoje a tarde), todo mundo fala bem do Gentoo pra 64bits. Ainda tô baixando também o Ubuntu pra 64bits pra ver como é que é…

Eu não sei como se faz pra emular um subsistema de 32bits pra rodar Flash por exemplo. Depois também vou precisar de ajuda… mas a prioridade agora é o monitor mesmo.

Problema 3: Resto do hardware. Gravador de DVD, webcam, wireless. Nunca useu nenhum dos três. Vai ser uma experiência nova super divertida, com mais dor de cabeça ainda.

Problema 4: Teclado. Depois tenho que dar uma olhada no Xmodmap (acho que é isso que eu tenho que usar) pra fazer o ponto de interrogação (Altgr+W) funcionar.

Problema 5: O som hdaudio funciona, mas dá um monte de erro quando o udev detecta e inicia o alsa. Depois tenho que verificar…

Conclusão: Pelo visto esse mês (no mínimo) vai ser só dor de cabeça. Mas o aprendizado com certeza vai ser grande. ;) Quem já tiver passado por esses problemas e quiser me ajudar nessa aventura será muito bem recompensado (por Deus ou algum cara assim que você acreditar, porque meu dinheiro acabou na compra desse laptop… hehehe).

I’ve got the power!

ATENÇÃO: Este conteúdo foi publicado há 10 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.

Pequeno post feito a 64 bits

Acer Aspire 5050-3205 comprado por 2500 reais num camelódromo de Balneário. Posto melhor sobre ele quando acabar de baixar, instalar e configurar o slamd64, que aí vou conhecê-lo melhor. Primeira impressão: lindo, portátil, a webcam é muito legal!

Veio com um Windows XP que estou pra tirar; no mais, tudo parece funcionar perfeitamente. Só não gostei do layout do teclado que é, em uma palavra, ridículo. Para usar o ponto de interrogação é necessário pressionar AltGr+W e a barra é AltGr+Q ou Fn+; (não sei qual é pior).

Inédito! Fotos do recém-nascido!

Teoria da conspiração (ou: Hail Eris!)

ATENÇÃO: Este conteúdo foi publicado há 10 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.

Conheci o discordianismo semana retrasada, quando vi uma comunidade no orkut chamada 23 e perguntei ao Schneider do que se tratava. Para me responder, ele sugeriu que eu escrevesse ddate no meu Slackware… E não é que eu tinha mesmo esse aplicativo discordiano?

tiago@laptop:~$ ddate
Today is Sweetmorn, the 49th day of The Aftermath in the YOLD 3172

Depois daquele dia, em todo lugar que eu passo eu vejo uma referência discordiana escondida! Parece que temos muito discordianos entre nós e eles parecem estar tomando conta de tudo, para em breve tomar o poder. Será que eu fui o único a perceber a conspiração? Se era secreto, não duvido que este post suma em algum tempo, porque a Dreamhost também deve ter discordianos!

Mas vejam só… Hoje eu descobri que o Rafael e o Cardoso lêem o 1001 gatos! O Patrick (do Slackware) também deve estar envolvido (pô, o foco da distribuição é simplicidade e ele coloca um aplicativo discordiano nela?). Agora pessoas próximas também começam a se envolver. Acho que vou ler o Principia Discordia pra entrar nessa nova religião agora no início e não ser eliminado depois como o resto do mundo.

udev e suas regras maravilhosas

ATENÇÃO: Este conteúdo foi publicado há 10 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.

Participei nos dias 8 e 9 do IV Encontro Nacional Linuxchix Brasil em Florianópolis. O evento teve umas palestras interessantes, entre as quais destaco as do pessoal do FreeBSD, a do Luiz Fernando Capitulino sobre o desenvolvimento do Kernel, a do Hélio Castro sobre interfaces gráficas 3D, mas em especial a do Piter PUNK sobre o udev (talvez porque eu sou um usuário Slackware =). E é sobre o udev que eu resolvi falar nesse artigo…


Tenho até vergonha de dizer que até semana passada eu não tinha percebido que o hotplug não estava mais sendo inicializado no meu Slackware… Só depois da palestra que aprendi que o Kernel 2.6 acaba com a necessidade do hotplug substituindo por um novo e poderoso aplicativo chamado udev. Isso é uma mudança e tanto, que traz alguns prós e contras (na verdade, eu só vi prós).

O que é o udev?

Bom… Segundo a Wikipedia, udev is the device manager for the Linux 2.6 kernel series. Its primary function is managing device nodes in /dev. It is the successor of devfs and hotplug, which means that it handles the /dev directory and all user space actions when adding/removing devices, including firmware load.

Como funciona o udev

Na inicialização do sistema, o udev vê no /sys que dispositivos foram encontrados pelo Kernel e adiciona os dispositivos ao /dev (por enquanto, vou fingir que ele só adiciona os dispositivos ao /dev).

Depois, seu daemon fica rodando para adicionar novos dispositivos assim que eles aparecerem.

É bem mais rápido que no hotplug e parece funcionar bem.

E onde está a mágica?

O udev possue um diretório de regras (/etc/udev/rules.d) onde adicionamos arquivos de texto com uma sintaxe super fácil para dizer o que queremos fazer com cada dispositivo que é adicionado ao sistema.

E o que queremos fazer com cada dispositivo que é adicionado ao sistema?

Hmmm… Isso depende muito da sua necessidade, mas deixe-me citar algumas possibilidades das regras do udev:

  • Dar nome aos dispositivos – Pra que uma pasta /dev cheia de nomes difíceis que você não entende? Com o udev, você pode chamar seu sda1 de pendrive ou o seu hdc de cdrom.
  • Dar nomes diferentes para dispositivos iguais – Hoje em dia vivemos pluggando pendrives, máquinas digitais, MP3 players, etc. em nossas placas USB. Com o udev, podemos fazer com que a nossa máquina da Canon chame-se /dev/canon, a nossa máquina da Sony chame-se /dev/sony, o pendrive da mamãe chame-se /dev/mamae e o nosso MP3 Player chame-se /dev/mp3player.
  • Adicionar links simbólicos aos dispositivos – Podemos fazer nosso CD-ROM ter vários links como cdrom, dvd, cdrw, cdwriter
  • Mudar permissões dos dispositivos – Podemos fazer com que o pendrive da mamãe possa, logo que for pluggado em qualquer porta USB, ser acessado por ela (e somente por ela).
  • Executar comandos quando ocorrem alterações nos dispositivos – Sempre que a mamãe colocar o seu pendrive numa porta USB podemos montá-lo para ela e já abrir o dispositivo no Konqueror e quando ela pluggar a sua máquina digital da Canon podemos mudar suas permissões, linká-la para /dev/camera e abrir o digiKam.
  • … entre provavelmente muitas outras coisas que eu não me lembro ou não sei fazer (eu só conheço o udev há quatro dias!)

Claro que o udev pode ser útil para servidores também, para trocar hardware ou reiniciar o computador com segurança (ex.: você pode dizer que o HD principal seja sempre /dev/principal e assim mesmo que ele passe a ser o seu Second Slave ele funciona), mas estou focando mais o uso doméstico. A “mamãe” é um usuário leigo que não precisa saber montar dispositivos ou qual o nome do programa que baixa as fotos da máquina. Ela simplesmente plugga a sua máquina e o digiKam abre.

Legal… E como é que eu faço essas regras?

A sintaxe dos arquivos em /etc/udev/rules.d é muito simples. Você simplesmente separa por vírgulas as condições que você quer para que as ações que você quer fazer e as ações.

A máquina fotográfica da mamãe

ACTION=="add", BUS=="usb", SYSFS{product}=="Canon Digital Camera", 
GROUP="camera", MODE="0660", SYMLINK+="camera", RUN:="/bin/su mamae -c 
'/usr/bin/abredigikam.sh'"

Aqui em casa, usei um “abredigikam.sh” assim:

#!/bin/bash
 
export DISPLAY=":0"
/opt/kde/bin/digikam
Sinais do exemplo
  • Os dois iguais (==) são para expressar condição, como no C (e em um monte de linguagens derivadas dele).
  • O “=” atribui
  • O “+=” atribui “mais uma coisa” (append)
  • O “:=” atribui uma coisa como constante (ou seja, neste caso eu ou os scripts de regras da minha distro não conseguem mais mudar o valor do “RUN”).
Variáveis do exemplo
  • ACTION: A ação que está sendo feita com o dispositivo (neste caso é a adição dele – add)
  • BUS: Barramento. Neste caso, a USB.
  • SYSFS: Variáveis específicas deste dispositivo (depois vou mostrar como encontramos elas)
  • GROUP: Grupo em que o dispositivo está.
  • MODE: Permissões do dispositivo.
  • SYMLINK: Links simbólicos para o dispositivo.
  • RUN: Comando Shell para executar.

Não conheço todas as variáveis, mas para saber mais você pode consultar o Writing udev rules (o objetivo desse post não é entrar em detalhes).

udevmonitor

O udevmonitor é um aplicativo que imprime os eventos recebidos pelo Kernel e o evento que o udev manda depois do proessamento de regras em tempo real. Veja o que acontece, por exemplo, quando pluggo uma máquina digital na minha porta USB:

UEVENT[1158086870.385094] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1
UEVENT[1158086870.388950] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0
UEVENT[1158086870.389571] add@/class/usb_device/usbdev1.3
UDEV  [1158086870.390983] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1
UDEV  [1158086870.404378] add@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0

É interessante para acompanharmos os dispositivos que são encontrados pelo udev. Veja agora o udevmonitor quando eu despluggo a minha máquina:

UEVENT[1158089965.438657] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0
UEVENT[1158089965.438765] remove@/class/usb_device/usbdev1.3
UEVENT[1158089965.438794] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1
UDEV  [1158089965.440899] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1/1-1:1.0
UDEV  [1158089965.443341] remove@/class/usb_device/usbdev1.3
UDEV  [1158089965.444795] remove@/devices/pci0000:00/0000:00:02.0/usb1/1-1

udevinfo

O udevinfo imprime informações sobre um dispositivo. Para descobrir que o SYSFS{product} da minha máquina era Canon Digital Camera foi este comando que eu utilizei, da seguinte maneira:

# udevinfo -q all -n usbdev1.4
P: /class/usb_device/usbdev1.4
N: usbdev1.4
S: bus/usb/1/4

(descobri que ela estava na usbdev1.4 usando o udevmonitor)

Aí agora sabendo o path eu descobri todo o resto: (a saída é grande, use a barra de rolagem)

# udevinfo -a -p /class/usb_device/usbdev1.4
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/class/usb_device/usbdev1.4':
    KERNEL=="usbdev1.4"
    SUBSYSTEM=="usb_device"
    DRIVER==""
    SYSFS{dev}=="189:3"

  looking at parent device '/devices/pci0000:00/0000:00:02.0/usb1/1-1':
    ID=="1-1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{product}=="Canon Digital Camera"
    SYSFS{manufacturer}=="Canon Inc."
    SYSFS{maxchild}=="0"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="4"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="8"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="00"
    SYSFS{bcdDevice}=="0001"
    SYSFS{idProduct}=="30f9"
    SYSFS{idVendor}=="04a9"
    SYSFS{bMaxPower}=="  2mA"
    SYSFS{bmAttributes}=="c0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"

  looking at parent device '/devices/pci0000:00/0000:00:02.0/usb1':
    ID=="usb1"
    BUS=="usb"
    DRIVER=="usb"
    SYSFS{configuration}==""
    SYSFS{serial}=="0000:00:02.0"
    SYSFS{product}=="OHCI Host Controller"
    SYSFS{manufacturer}=="Linux 2.6.17.11 ohci_hcd"
    SYSFS{maxchild}=="4"
    SYSFS{version}==" 1.10"
    SYSFS{devnum}=="1"
    SYSFS{speed}=="12"
    SYSFS{bMaxPacketSize0}=="64"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bDeviceClass}=="09"
    SYSFS{bcdDevice}=="0206"
    SYSFS{idProduct}=="0000"
    SYSFS{idVendor}=="0000"
    SYSFS{bMaxPower}=="  0mA"
    SYSFS{bmAttributes}=="e0"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bNumInterfaces}==" 1"

  looking at parent device '/devices/pci0000:00/0000:00:02.0':
    ID=="0000:00:02.0"
    BUS=="pci"
    DRIVER=="ohci_hcd"
    SYSFS{modalias}=="pci:v000010B9d00005237sv0000103Csd00000024bc0Csc03i10"
    SYSFS{local_cpus}=="1"
    SYSFS{irq}=="10"
    SYSFS{class}=="0x0c0310"
    SYSFS{subsystem_device}=="0x0024"
    SYSFS{subsystem_vendor}=="0x103c"
    SYSFS{device}=="0x5237"
    SYSFS{vendor}=="0x10b9"

  looking at parent device '/devices/pci0000:00':
    ID=="pci0000:00"
    BUS==""
    DRIVER==""

Os contras

Hmmm… Na verdade, pelo que eu me lembro da palestra, o udev só tem um contra. Ele vai detectando os dispositivos e jogando-os no /dev na ordem em que ele vai encontrando-os. Então, às vezes a minha placa de rede SiS pode ser detectada como eth0 e a Realtek como eth1 e no outro dia o contrário. Mas contornar isso é muito simples, usando aquelas regras (e inclusive podemos dar os nomes /dev/placa-sis e /dev/placa-realtek para nossas placas). =)

Encontrou um erro?

Eu ainda tô conhecendo o udev (como eu disse, conheci ele nesse final de semana), então meu texto pode ter alguma falha ou pode estar faltando alguma informação. Por favor, comente se encontrar algum erro ou quiser sugerir algo legal… =)

Para mais informações…

$ man udev

… e a página do udev

Onde anda o Slackware 11?

ATENÇÃO: Este conteúdo foi publicado há 10 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.

Ok… O Patrick tá trabalhando pra caramba, tem bastante gente colaborando, estamos tendo um monte de atualizações todo dia no slackware-current, o Slackware 11.0 vai ser estável do jeito que deve ser, mas… Tá demorando, né?

  1. 15/06: Although there’s still quite a bit in the TODO queue here I’m making my steps carefully as -current is very stable, and I think it should ship as a stable 11.0 soon so that we can get back to the business of breaking things in -current.
  2. 14/07: We *are* getting closer to 11.0, friends. I’m hoping for a larger changeset soon, but this should be fun to play with for now as I work on the TODO list; merging, compiling, and initial testing.
  3. 03/08: I know I told at least a few people that I wasn’t planning on including this in Slackware 11.0 at the last minute, and there have been a couple of patches needed for it already. Please test quickly.
  4. 14/08: There are still a few changes yet to happen, but let’s call this Slackware 11.0 release candidate 1.
  5. 19/08: This is mostly frozen now unless bugs (or irresistible upgrades) come up, so I’ll call this update Slackware 11.0 release candidate 2.

Se realmente forem só bugs ou atualizações irresistíveis, acho que na semana que vem poderemos ter uma versão nova da nossa tão querida distribuição.

A última versão do Slackware (a 10.2) é do dia 14 de setembro do ano passado. Um ano sem uma versão é um tempo considerável (claro que, pra não ser injusto com o Bill, não vale comparar com os atrasos dos sistemas proprietários). A rápida correção de bugs e lançamento de novas versões é uma entre as \infty{} vantagens que vejo no software livre; espero que essa versão saia logo! =D

Ainda estou vivo…

ATENÇÃO: Este conteúdo foi publicado há 10 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.

Escrevo este post só pra dizer que ainda não morri. Embora eu esteja sem inspiração nenhuma pra escrever, eu juro que estou tentando. Comecei três artigos para a Série Algoritmos e tentei fazer de tudo para explicar a busca em profundidade de uma maneira legal, mas por não conseguir fazer nada muito surpreendente é que a série está parada há seis meses. Mas não pensem que a esqueci…

Ando lendo muito mais do que antes; a blogosfera anda bem agitada… No início, achei até que isso podia me ajudar a escrever, mas está tornando mais difícil. Os feeds que eu assino já são tão bons! Não gosto muito de copiar uma coisa e fazer um comentário mínimo, até porque isso eu estou fazendo no meu novíssimo del.icio.us, então acabo sem escrever nada. Aliás, sobre o del.icio.us, confesso que antes eu não gostava desse serviço (não me perguntem por quê), mas agora venho percebendo que esse serviço é fascinante…

Estou esperando o Slackware 11 desde o começo de julho. Ele está “pra sair” há um tempão! Ando conferindo o changelog umas três vezes por dia esperando uma grande novidade, mas nada além das habituais mudanças. =(

Por falar em Linux, vai haver um evento muito legal nesse ano aqui em Santa Catarina, em Florianópolis. O IV Encontro Nacional Linuxchix Brasil vai ter umas palestras muito interessantes, entre elas uma sobre o udev com o Piter Punk, aquele cara power do grupo de usuários do Slackware no Brasil que está sempre contribuindo para fazer meu sistema preferido melhor do que ele já é. =) Pra quem mora aqui, esse evento é imperdível.

Entrei numa aula de piano… Eu já estava há uns sete anos sem estudar formalmente; Essa aula está sendo bem legal para eu ter um pouco mais de técnica, ter uma rotina de estudo musical melhor e aprender um pouco de música erudita.

Comecei a estudar inglês. Ler um texto na internet tudo bem, mas estou estudando porque quero falar inglês de verdade. O motivo não é levado muito a sério pelas pessoas com quem eu comento, mas eu estou querendo muito me graduar nos Estados Unidos, no MIT. Eu sei que é difícil, mas isso é mais um bom motivo para eu tentar… Adoro desafios… =) O máximo que pode acontecer é eu ser rejeitado, mas mesmo assim valeria a pena porque esse plano teria servido de motivação para eu aprender a falar inglês (por causa do TOEFL), estudado matemática e à física (por causa do SAT*) e ainda sonhar um pouco com um local legal de se estudar, um local que me faça estudar (putz, tenho tido cada aula por aqui…). Além de tentar o MIT, pretendo tentar entrar em Berkeley e em Stanford. Se nada der certo, mesmo assim vou ficar feliz na UNICAMP. =)

* Não coube no último parágrafo, mas preciso comentar que na verdade não é o SAT que vai me fazer estudar muito não… O SAT de matemática parece ser ridículo. Eu peguei umas questões para praticar no próprio site deles e “gabaritei” em alguns minutos.

Estou tentando projetar um design pro meu site há algum tempo (quase desde que o atual foi pro ar). Essas cores atuais não ficaram boas nos monitores normais. Acontece que, no laptop, eu vejo elas as vejo um pouco diferentes… Aí, já que eu fiz nele, é nele que elas ficam mehores. O problema é que só percebi essa diferença depois de publicar… De qualquer maneira, serviu para eu aprender uma lição óbvia: Sempre teste um design em mais de um monitor.

Por último, me desculpem por ficar esse tempo todo sem escrever e começar com um relato sobre a minha vida pessoal que não deve importar muito para ninguém… =) Prometo que o próximo post vai ser mais interessante!

Resumão

ATENÇÃO: Este conteúdo foi publicado há 11 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.

Segunda Fase da OBI2006

Sábado foi a OBI em Blumenau. A prova estava cansativa e difícil pra caramba… Na minha opinião, o nível de dificuldade foi semelhante a da Seletiva para IOI do ano passado.

Fui muito mal, mas pelos comentários parece que ninguém foi muito bem. Essa espera pelo resultado vai ser longa… Hehehe… Teve gente que não me interpretou direito, então vou falar de outra maneira: Estou ansioso pelo resultado, por isso as duas semanas vão demorar pra passar.

Resposta à Veja

Não posso deixar de linkar esse ótimo artigo do Falcon Dark (assinem o feed desse cara… tudo que ele escreve é excelente!): Para o público e o privado sem ideologismo. Ele comenta sobre a reportagem da Revista Veja de 17 de maio de 2006, página 68, O grátis saiu mais caro.

O Laptop do Reinaldo

Instalei GNU/Linux (Slackware) no laptop do Reinaldo. Um Pentium 3 900mhz, 128 mb ram, 6 gb de HD; que tá com uma performance legal agora, sem o Windows XP que possuía (ou melhor, que o possuía).

O legal é que a placa de rede do laptop era PCMCIA e o CD e o disquete não funcionavam direito! Foi uma experiência única e desesperadora… :) Hehehe…

Consegui bootar por um CD velho do Slackware 10.0 (o drive de CD só conseguiu ler esse CD de todos que eu tinha aqui) e só deu pra instalar a série A (os pacotes mais básicos). O resultado foi um sistema sem absolutamente nada (andei até perguntando pro Lorn se tinha como configurar rede sem ifconfig… hehehe). Depois de dois dias, quando quase estava indo entregar para o Reinaldo o laptop destruído (sem sistema operacional), lembrei que tinha um velho zip-drive externo USB aqui em casa. Pluguei, montei e funcionou! Aí consegui instalar a série N (Network) e a AP (aplicações básicas) para conseguir ver o meu computador na rede e copiar o Slackware 10.2 inteiro.

Finalizado esse passo, reiniciei o computador bootando pelo CD do Slackware 10.0, deletei tudo do HD (com excessão exceção do CD do Slackware 10.2 que eu tinha copiado) e consegui fazer a instalação. O computador tá excelente agora, com uma performance impecável! :D (usando XFCE como gerenciador de janelas)

Desafio Nacional Acadêmico

Esse ano vai acontecer pela primeira vez o DNA. É um dia com várias provas (segundo eles, quase impossíveis) solucionadas pela internet por equipes de cinco componentes. Tem prêmios para os três melhores colocados e já inscrevi minha equipe. A inscrição custa R$ 50,00. Quem puder, participe! É uma oportunidade legal…

Um pouco de tudo

ATENÇÃO: Este conteúdo foi publicado há 11 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.

Hoje é dia 21… Faltam 4 dias pro natal. Dia 24, vou viajar pra Floripa e não vou voltar para casa provavelmente até provavelmente 2-5 de janeiro.

Estou de férias, em casa, sem nada pra fazer. Eu fiz uma besteira no meu Slackware (com objetivos experimentais) e acabei desinstalando um monte de bibliotecas dele. A partição do Windows ficava com as músicas e já tava meio pesada, então aproveitei pra formatar tudo. Nova tabela de partições:

  • hda1, 10gb, FAT32, músicas apenas
  • hda2, 14gb, FAT32, Windows XP
  • hda3, 500mb, Linux Swap, swap
  • hda5, 500mb, ReiserFS, /boot
  • hda6, 5gb, ReiserFS, nada por enquanto
  • hda7, 6gb, ReiserFS, Slackware (/)
  • hda8, 5gb, ReiserFS, nada por enquanto

Deixei dois espaços estratégicos em branco pra instalar distribuições para teste ou simplesmente fazer experiências (ao invés de desinstalar as libs do Slackware oficial, eu desinstalo as delas! hehehe).

O pior é que quando eu particionei e comecei a instalação do Slackware, eu percebi que o disco tava totalmente riscado e não funcionou aquela instalação. Então instalei primeiro o Windows e dele baixei o ISO do Slackware.

Como sempre, perdi mais tempo personalizando o Windows do que o Slackware, até porque já tô mais acostumado com o Linux. Aí eu aproveitei um pouco as férias, instalando o Age of Empires II (um jogo de estratégia da Microsoft) e tentei emulá-lo no Linux, mas ainda não consegui fazer dar tudo certo.

Pra completar, meu desktop deu pau no HD. Estamos rodando só lives, criei até um script para configurar rede, compartilhar internet e redirecionar algumas portas pro laptop.

Ahh.. E chegaram meus 20 cds do Ubuntu que eu pedi há dois meses! :)


Coisas que tenho lido

Lista de Presentes

Se você quer muito me dar um presente, mas não sabe o que, essa é a solução!

  • iPod 30gb (ou mais, porque menos que isso não cabe minhas músicas)
  • Máquina fotográfica digital
  • HD de 80gb+ para desktop ou laptop HP Pavilion ze4610us

MRxvt e Controle Anti-flood

ATENÇÃO: Este conteúdo foi publicado há 11 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.

Formatei minha partição Linux e instalei o novo Slackware 10.2 para ver quais eram as novidades…

Ainda estou configurando o sistema, mas ele já está bastante estável, com Kernel 2.6, Grub, XDirectFB em desenvolvimento e hoje testei um programa que merece um post especial aqui no blog chamado MRxvt. É um terminal que abre na velocidade do Xterm, mas tem os recursos do Konsole do KDE! Hehehe… :D Abas, transparências, entre outras coisas de uma forma leve que eu nunca tinha visto. Eu descobri o programa quando eu e o Thotypous estávamos pensando em baixar o source do Gnome-Terminal e tentar modificar para deixar bem levinho e só com abas, ou pegar o xterm e implementar abas… :) Mas esse programa é simplesmente fabuloso. Acabou com nossos problemas… Baixem aqui!

O Hélio (a.k.a. hlegius) me deu uma idéia bastante útil que é um controle anti-flood para os comentários do meu site… Já implementei usando sessões… Valeu Hélio!

Bom… Por enquanto é só! ;) Resolvi agora postar mais aqui, e fazer posts menores. Fiz várias mudanças aí no lado direito do site nos últimos dias (e no meio também), deixando o site mais semântico além de mais atualizado e “correto”. Também atualizei a minha biografia (colocando até o MRxvt) e acho que vou dar uma reformulada no sistema de BBCode (ER) do meu blog, porque quando eu coloco um código depois não funciona mais os emoticons embaixo dele.

De volta à resolução de problemas

ATENÇÃO: Este conteúdo foi publicado há 11 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.


Resultado do Superprime Rib

Hoje, depois de umas férias de dois meses, resolvi um problema lógico do USACO Training Gateway: o Superprime Rib é um problema bem simples em que precisa-se determinar os primos de N dígitos (com N máximo = 8 ) que, tirando o último dígito, continuam sendo primos. A solução é trivial, uma função recursiva bastante simples que se auto-explica no meu código:

//Superprime Rib - USACO Training Gateway - 2005
 
/*
ID: contato1
PROG: sprime
LANG: C
*/
 
#include <stdio.h>
#define NMAX 9
#define INFINITO 100000
 
int primos[NMAX][INFINITO], cont[NMAX];
 
int eh_primo(long int num) {
	int i;
 
	if (num==1||(!(num%2)&&num!=2)) {
		return 0;
	}
 
	for (i=3; i*i<=num; i+=2) {
		if (!(num%i)) {
			return 0;
		}
	}
 
	return 1;
}
 
void funcao(int n) {
	int i, j, num;
 
	cont[n]=0;
 
	if (n>1) {
		funcao(n-1);
 
		for (i=0; i<cont[n-1]; i++) {
			for (j=1; j<=9; j+=2) {
				num=primos[n-1][i]*10+j;
				if (eh_primo(num)) {
					primos[n][cont[n]++]=num;
				}
			}
		}
	} else {
		primos[1][0]=2;
		primos[1][1]=3;
		primos[1][2]=5;
		primos[1][3]=7;
		cont[1]=4;
	}
}
 
int main() {
	int n, i;
 
	FILE *in=fopen("sprime.in", "r");
	FILE *out=fopen("sprime.out", "w");
	fscanf(in, "%d", &n);
	fclose(in);
 
	funcao(n);
 
	for (i=0; i<cont[n]; i++) {
		fprintf(out, "%d\n", primos[n][i]);
	}
	fclose(out);
 
	return 0;
}

O problema passou de segunda porque na primeira, por falta de hábito, eu tinha colocado scanf e printf ao invés de usar o sistema da USACO onde deve-se usar arquivos de entrada e saída.

Agora para eu ir para a seção 2 do USACO Training Gateway falta só o programa Checker Challenge, que parece ser complicado.

Instalei os pacotes do Slackware 10.2, que saiu essa semana, no laptop. Não tem nenhuma grande mudança, mas é sempre bom estar com os programas atualizados…

O Paulo Matias (Thotypous) me convidou para fazer parte da equipe de desenvolvimento da distro Guaranix, consertando alguns bugs do XDirectFB (que eu citei aqui). Acho que irei pegar um trabalho com a Meetweb também (o Hugo Dias, para quem eu fiz o serviço da Coalizão Antituberculose me convidou) e estou acabando o site do Colégio Salesiano, que é totalmente administrável em PHP e usa um banco de dados MySql. Ele deve sair semana que vem…

Dia 24 é a segunda fase da Olimpíada Regional de Matemática. Essa semana fiz a folhinha de treinamento e dos seis problemas, consegui fazer cinco (na verdade, alguns problemas – ou todos – eram repetidos do ano anterior e por isso fica mais fácil, porque eu já lembrava o caminho).