Geek Vault » 2008 » April

April 2008


Bom, dito e feito, realmente para criar um servidor que não ficasse bloqueando no read(), ou no accept(), a melhor forma(talvez única) era utilizando fcntl(). O código está um pouco sujo ainda (por exemplo, temos o readLine.c e readLine.h que eu iria utilizar para ler do buffer, mas encontrei uma forma mais “rápida”), estamos lendo do pipe duas vezes, acredito que podemos ler apenas uma vez. Detalhes, detalhes bons para um patch que farei assim que possível. Junto com o patch, vou escrever e descrever esse código completamente, para que ninguém tenha dúvidas sobre o que o fork() faz, como fazer comunicação entre filho e pai e como trabalhar com funções não bloqueadoras, mas que deveriam ser (read() e accept() neste caso).
Enfim, façam o update do svn. A documentação já foi passada para a versão 1.0.

Uma boa lista com os mais famosos font managers que existem para Linux. Vi lá no Linux.com.

Extremamente interessante a visão de Adrian Kingsley-Hughes sobre Linux para iniciantes (ou “12:00 flashers” como ele chama), vale a pena dar uma olhada aqui.

Encontrei um ótimo texto explicando as diferenças entre MyISAM e InnoDB no MySQL. Vale a pena dar uma conferida aqui (em inglês).

Mais um para a biblioteca de programas C, dessa vez é um servidor ECHO modificado que aceita até 10 conexões, concorrentes, ouve na porta 7777 e se receber a string “STOP SERVER” termina o servidor.
Mais tarde eu comento sobre esse programa, mas ele limpa todos os processos, e possui relativamente uma boa manutenção de memória. Fiz esse programa mais para demonstrar como funciona o fork() e como fazer um filho sair corretamente e o pai pegar essa saida e tratar caso ela seja um erro, nada mais clássico que um servidor.
Porém, como nada é perfeito, a função read() é do tipo locking, ou seja ela trava o programa até conseguir ler alguma coisa do buffer, travando o servidor. Ainda estou trabalhando em como arrumar isso, acredito que com fcntl() consigo resolver isso.
Quem quiser ver essa primeira versão, o svn está http://svn.geekvault.org/c/echo/.
A documentação você encontra aqui.

Foi encontrado um bug no Windows XP SP2, causando uma escalação de privilégios (usuários comuns se tornando admin), eu ainda não testei, mas parece que é real. Update necessário ASAP. Esse exploit é local. Veja no milw0rm.

O criador do sistema de arquivos ReiserFS foi considerado culpado por assassinato em 1º grau. Se me lembro corretamente da história, no ano passado sua mulher foi assassinada, tudo indicando para o culpado ser Hans Reiser, porém não haviam provas, evidências, corpo, nada. Finalmente ele foi considerado culpado.
Honestamente, até onde a mente humana pode ser capaz? Obviamente esse não é o único caso do mundo, infelizmente, porém isso me faz pensar, até onde um ser humano pode chegar? Simplesmente muito triste. Veja aqui a notícia.

Outro dia, tentando fazer um servidor de bucket-sort, eu me deparei com um problema que a muito tempo eu não via, o quicksort. Pensei então, ai está uma coisa legal de colocar no servidor.
O quicksort é um problema clássico de ordenação em C. Estranhamente, esse algoritmo é ruim na teoria, mas para todos os casos práticos ele é um dos melhores.
Existem várias versões de quicksorte, mas a idéia é sempre a mesma, dividir um vetor, escolher um pivô, ordenar cada vetor em 3 vetores diferentes (menores que o pivô, maiores, e iguais), fazer novamente essa ordenação para cada vetor, e no final, concatenar tudo. Para saber mais (e de onde eu tirei o algorítmo em sí para fazer esse primeiro programa), de uma olhada na Wikipedia.
O programa está no SVN, em um novo repositório chamado C, onde o endereço é: http://svn.geekvault.org/c/quicksort. Para compilar, execute o clássico

./configure
make

Um detalhe sobre os programas feitos de agora em diante, eles sempre terão documentação feita utilizando Doxygen. O que isso quer dizer? Quer dizer que com aqueles poucos comentários que temos nos arquivos de cabeçalho (.h), temos toda a estrutura de documentação vista aqui, o que quer dizer que temos mais um domínio, http://docs.geekvault.org, que em breve terá uma index “bonitinha” com todas as documentações de todos os programas que eu fizer.

Bom, para hoje foram bastantes novidades ;). Em breve teremos outras versões mais complexas do quicksort, atualizadas no svn obviamente.

PS: Caso você não sabia como utilizar o svn, de uma olhada nesse post.

Sai o Kernel 2.6.25, quentinho do forno. Leiam a “carta” de Linus Torvalds aqui.

O que mais temiamos aconteceu, a Sun começou a fechar o código fonte do MySQL. Leia a história por completo no Slashdot.

Next Page »