Skip to content


Meu objetivo para o blog: um post por semana

Desde 2006 eu tento manter um blog. Mas, como em diversas outras coisas, tenho épocas que me empolgo e escrevo bastante, e épocas onde não escrevo nada. Normalmente, como dá pra perceber, eu não escrevo nada. Nos últimos meses, conheci o posterous, através do Alan Kelon, e gostei.

Apesar de demorar muito para postar no blog, eu escrevo diversos e-mails diariamente. Assino ~10 listas e recebo ~50 e-mails por dia. Então resolvi tentar uma coisa: vou atualizar o blog a partir do e-mail. É aí que entra o posterous.

Ele tem um serviço muito interessante: você envia qualquer coisa para post@posterous.com e, automaticamente, ele atualiza sua página e todas as redes sociais que você cadastrar. E o mais legal: mandou uma foto? Ele adiciona. Mandou várias fotos? Ele faz um slideshow. Mandou vídeo? Música? Tudo ele trata. Até, se você cadastrar o YouTube ou o Flickr, ele já envia as coisas pra lá também.

Enfim, gostei muito da ideia deles, e da implementação. Veremos se é o suficiente…

Viaje de graça pela Azul, sem sorteio!

Azul

Descobri uma ótima promoção da Azul aqui na Campus Party. Você precisa entrar no Viajamos, se cadastrar e fazer algumas coisas que eles pedem. Como postar no blog sobre a promoção :P . Se cadastrar em grupos, postar sobre uma viagem, convidar amigos, etc.

Se você for um dos 200 primeiros a fazer isso, ganha uma passagem pra qualquer lugar do Brasil. Bom, não é?

Aproveitando, uma das tarefas é criar um grupo e 10 pessoas entrarem. Quando vocês se cadastrarem, entrem no meu, de Camping.

Tags , , .


Fazendo um benchmark do HD no GNU/Linux (ou ext3 VS ext4)

Sempre li que os SSDs são infinitamente mais velozes que os atuais HDs. Usar um computador com um drive desses dá um belo ganho de performance. Por curiosidade, fui testar a velocidade do meu HD.

Usando:

$ udevadm info –query=all –path /sys/block/sda

achei o serial do meu HD. Com uma rápida busca, descobri que ele é o Seagate Momentus 7200.3, com 320gb, 7200rpm e 16mb de cache. Nada mal. Ok, vamos ao benchmark.

Para gerá-lo, usei o bonnie++ v1.03c. No Ubuntu, basta:

$ sudo aptitude install bonnie
$ bonnie++

Por curiosidade, rodei ele em uma partição ext3 e em uma ext4. Sempre com um arquivo de 6 GB.

——Sequential Output——
–Sequential Input-
-Per Chr-
–Block–
-Rewrite-
-Per Chr-
–Block–
FS
K/sec
%CP
K/sec
%CP
K/sec
%CP
K/sec
%CP
K/sec
%CP
ext3
40421
89
48745
25
28304
16
47321
90
66517
22
ext4
46671
96
72506
24
32927
15
49627
91
78888
23

!!!

Impressionante. Não tinha procurado nenhum benchmark ext3 VS ext4. Sabia que este era mais rápido, mas não tanto. Agora entendo o porquê das versões novas das distros (ao menos Ubuntu e Fedora) terem acelerado tanto o boot. Chegaram a incríveis 20 segundos.

Mesmo assim, reza a lenda que os SSDs chegam a 150 MB/s de leitura, o que é mais que o dobro do ext4. Talvez valha a pena comprar um SSD de 16gb para deixar só o SO e aplicativos.

Daqui a alguns anos, quando fizer um upgrade no notebook, certamente será esse.

Tags , , , , , .


Lula no FISL 10.0

Lula Red Hat

O Lula é nerd!

Tags , , .


Transferindo o áudio do microfone via SSH

Estamos a 2 dias do III ENSOL. Na palestra do Richard Stallman haverá tradução e transmissão simultânea. Com a tradução eu não preciso me preocupar, pois contratamos uma empresa para isto. Já a transmissão é um pouco mais complicada.

O LAViD está nos apoiando nisto. Vamos ter uma câmera HD para gravar algumas palestras e transmitir a do RMS para as outras 2 salas. Só que, pensando com o pessoal, decidimos que o áudio a ser transmitido não vai ser o do Stallman, mas o do tradutor. Aí vem o problema: como transmitir o áudio da cabine de trasmissão para as outras duas salas? Lembrava que dava pra fazer isso com o SSH, então fui testar.

Fazer localmente é fácil. Basta executar:

dd if=/dev/dsp of=/dev/dsp

O que isto faz? Simples. Lembre-se que nos sistemas POSIX tudo é um arquivo. E /dev/dsp é o arquivo que representa a placa de som. Numa linguagem natural, o comando acima quer dizer “Copie o que tem em /dev/dsp para /dev/dsp.”

Como assim? Se eu copiar um arquivo para ele mesmo, o resultado não deveria ser… o mesmo arquivo? Depende. Neste caso, por exemplo, ler da placa de som (/dev/dsp) significa “capturar o audio que vem do microfone.” E escrever significa “tocar.” Juntando, você está “capturando o audio que vem do microfone e tocando.”

Fácil. Agora, como fazer isso em dois computadores diferentes? Eu sei que vou ter que ler do /dev/dsp de um computador e escrever no /dev/dsp do outro, mas como?

Vamos por partes. Primeiro, para ler o /dev/dsp, usamos:

dd if=/dev/dsp

O dd vai ler o arquivo e escrever na saída padrão. Neste caso, a tela. Então, precisamos redirecionar isso para o outro computador. É aí que entra o SSH. Se fizermos:

ssh [destino]

Ele vai abrir um shell no destino. Não é o que queremos. Temos a opção de usar:

ssh [destino] dd of=/dev/dsp

Ao invés de abrir um shell, o SSH vai executar o comando que passamos (dd of=/dev/dsp). Neste caso, o dd escreve tudo que receber da entrada padrão (teclado) para o arquivo /dev/dsp. Se você escrever algumas coisas aleatórias, vai ouvir uns barulhos na caixa de som. Ele está interpretando o que você está escrevendo como som. Ótimo! Estamos chegando perto. Agora só precisamos ligar a saída do primeiro comando, que lê do /dev/dsp de uma máquina, a entrada do ssh. Como? Usando pipes, é claro!

dd if=/dev/dsp | ssh [destino] dd of=/dev/dsp

O que essa barrinha discreta aí faz é conectar a saída padrão do comando a esquerda com a entrada padrão do da direita. Pronto! Executando isso, já conectamos o microfone de um PC com a caixa de som de outro. Para melhorar um pouco, podemos pedir pro SSH comprimir o tráfego, adicionando a opção -C.

dd if=/dev/dsp | ssh -C [destino] dd of=/dev/dsp

Mesmo assim, ainda não fica muito bom. Aqui, apesar dele usar só 5 KB/s de banda e as máquinas estarem na mesma rede wifi, fica uma latência muito grande. Talvez seja culpa do SSH ou do dd, e não da velocidade da conexão. Não sei.

Mas pode dizer. Muito foda, não é? :P

Tags , , , , .


PDI ao resgate!

Hoje tive um problema com uma imagem. Estou organizando junto com alguns amigos o III ENSOL, e a UEPB nos apoiou pagando 75 inscrições para seus alunos. Então, precisei encontrar o logo deles para colocar no site do evento. A melhor que encontrei foi esta:
uepb
Como dá pra ver, ela não tem o fundo branco. O do site do ENSOL é laranja. E agora?

Tentei usar o GIMP para resolver, usando a Magic Wand, mas ele não consegue pegar tudo, pois parte do fundo não é 100% branco. Colocando sobre um fundo preto, ficou assim:
uepb-fundopreto

Como resolver? Sei que, se eu diminuísse a precisão da Magic Wand, fazendo ela pegar não só 100% branco, mas entre 90% e 100%, por exemplo, melhoraria. Quiçá, resolvesse. Mas, como? Não encontrei essa configuração. Sei que poderia criar um plugin em Python pro GIMP que resolveria, mas como nunca fiz isso, iria demorar.

Então eu vi a luz.

Relembrando as aulas de PDI – Processamento Digital de Imagens -, que paguei semestre passado. Uma das cadeiras mais interessantes até agora, uma pena que, por uma razão qualquer, não aproveitei tanto. Mas aprendi a programar usando o Octave.

O GNU Octave é uma linguagem para fazer cálculos matemáticos, muito parecida com o MatLab. Nela a gente consegue trabalhar com matrizes sem problema algum. Por exemplo, se você tiver uma matriz 3×3 e quer somar com uma outra de mesmo tamanho o que faz? Um for por cada elemento da matriz somando um com o outro? Não! Simplesmente matrizA + matrizB. E o que são imagens que não grandes matrizes de pixels?

A idéia é: passar por cada pixel da imagem e, se ele for mais claro que um determinado valor, transformo ele em magenta. Daí nasceu o Magentinizator!

Fazer isto em Octave é trivial. O código comentado é:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Magentinizator v 0.42 - 2009
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revisão 42):
# <vitor@vitorbaptista.com> escreveu este arquivo. Contanto que mantenha este 
# texto, você pode fazer o que quiser com esse software. Se nos conhecermos
# algum dia, e você achar que esse programa vale, você pode me pagar uma cerveja
# em troca.
#                                                               Vitor Baptista
# ----------------------------------------------------------------------------
 
path = "uepb.png";                # Caminho para a imagem
threshold = 0xB4;                 # Pixels com cor maior que 0xB4B4B4
                                  # se tornarão 0xFF00FF
 
im = imread(path);                # Lê a imagem. im agora tem uma matriz
                                  # Largura x Altura x 3 (RGB)
 
tam = size(im);                   # Pega o tamanho da imagem
 
for i = 1:tam(1)                  # De 1 até a largura
  for j = 1:tam(2)                # De 1 até a altura
 
    if (im(i, j, 1) > threshold   # Se o R for maior que o threshold, e
        && im(i,j,2) > threshold  # se o G for maior, e
        && im(i,j,3) > threshold) # se o B for maior.
 
      im(i,j,1) = 255;            # Torna aquele pixel
      im(i,j,2) = 0;              # em
      im(i,j,3) = 255;            # magenta!
    end
  end
end
 
imwrite([path, ".magentinized"], # Concatena strings
        im(:,:,1),               # R
        im(:,:,2),               # G
        im(:,:,3));              # B

O resultado ficou ótimo. Não perfeito, mas bem melhor que usando o GIMP e mais que o suficiente pro site do ENSOL.
UEPB Magentinized
Se precisar tirar mais o branco, só diminuir o threshold. Lembrando que vai chegar um momento que vai tornar outras partes da imagem também magenta.

Você pode baixar o Magentinizator aqui.

Tags , , .


Chamada para a megablogagem

Na última semana tivemos grandes e poderosas vitórias: O ministro da Justiça manifestou publicamente seu apoio ao veto dos artigos “draconianos” do PL de Cibercrimes, o PL 84/99, ou o PL do Azeredo, ou ainda popularmente conhecido como o AI5 digital. No último dia 14 tivemos uma grande vitória com o Ato Público na Assembléia Legislativa de São Paulo contra o AI5 digital, onde novos e poderosos aliados se juntaram ao combate ao vigilantismo. Estranhamente a mídia tradicional não deu muita importância ao evento, não lembro de ter visto nenhuma noticia na TV sobre o Ato, a excessão ficou com a Folha, aquela da “Ditabranda” que mandou para o evento uma jornalista com as piores das intenções, e segundo os presentes com as perguntas mais descabidas possíveis.

Há algum tempo haviamos percebido um argumento típico dos vigilantistas na novela da Globo da Globo caminho das Indias, onde um personagem advogado fala para outra personagem algo como: Olha, não sei como andam estas leis, mas é dificil isto, nem a Policia Federal consegue rastrear sobre casos de pedofilia. Conseguimos um contato com a assessora da Glória Perez, que nos “cozinhou” e acabamos não conversando com a autora para expor nosso ponto de vista, na verdade acredito que a Glória pouco poderia fazer a respeito, já que ela é funcionária da Globo, e provavelmente deve ter de seguir as determinações da Empresa.

Nesta semana, justamente a semana de grande vitórias, a mídia atacou a Internet de forma extremamente agressiva, estão promovendo uma verdadeira engenharia social, tentando a todo custo convencer as pessoas de que a Internet é um antro de criminosos e pedófilos. O SBT fez uma matéria a respeito, a Globo esta atacando em todas as esferas, no programa Ana Maria Braga onde tenta envolver a Internet no caso do “Mussunzinho” apenas pelo fato de alguem ter tido acesso ao email dele para responder à uma entrevista. O jornal da Globo, RJ TV, Fantástico e ontem o Globo Reporter que falou de pedofilia, não citou nenhum caso de pedofilia na Internet, o que sabemos que não existe, mas falou que a maioria dos casos de pedofilia se dá na Internet. Para fechar, a Veja desta semana esta detonando com a Internet da forma mais escrota e descabida como parece peculiar desta publicação.

O que estamos assistindo é na verdade um ato de desespero, os apoiadores do vigilantismo, como a FEBRABAN, APCN, Operadoras de telefonia, a Industria Cultural, só para citar alguns, devem estar patrocinando, ops, quero dizer pressionando os nove empresários que comandam a mídia no Brasil, ou seriam estes empresários também interessados? Será que tem algum Senador que tem ligação com veículos de comunicação? A mídia deixou de ser sutil, de parecer imparcial, e num ato de desespero esta tomando uma posição clara, a favor do vigilantismo, com o objetivo de manipular a opinião pública para que o nosso ativismo seja desmoralizado e minimizado e AI5 digital seja aprovado.

Sendo assim, convocamos todos a uma blogagem coletiva hoje, dia 17 de maio, dia Internacional da Internet para uma blogagem coletiva com o objetivo de critica a atitude de nossa imprensa mentirosa, de investigar e de desmascarar a midia que mente e vai contra a democracia. Não vamos deixar o vigilantismo ganhar, Mega Não, Mega Blogagem já !!!

Usem as tags “ciberativismo”, “meganao” e “megablogagem” para que possamos identificar os posts participantes, e mandem um ping para cá. Publiquem, twittem seus posts, divulguem no Orkut, Facebook, neste dia 17 temos de fazer as mídias sociais gritarem um Mega Não ao vigilantismo.

http://meganao.wordpress.com/2009/05/17/chamada-para-a-megablogagem/

Tags , , .


O “Jeito” Engenheiro

Tags , , .


May the 4th be with you!

Devido ao trocadalho do carilho da frase do título, nerds de todo o mundo comemoram hoje o Star Wars Day. Então eu, fazendo meu dever de cidadão, divulguei a informação nas listas que participo. Então, um nerd amigo me mostrou algo totalmente demais: todos os Star Wars em ASCII Art!

Star Wars ASCII Art

Já posso morrer feliz.

O que o tédio, tempo livre e falta de mulher dedicação não fazem com uma pessoa. Gravei até um vídeo e tentei disponibilizar pelo TTYShare que falei alguns post atrás, mas o serviço está fora do ar. De qualquer forma, você pode ter o prazer de assistir 12h de Star Wars sem sair do shell fazendo:

$ telnet towel.blinkenlights.nl

Valeu, Erison!

P.S.: Ah, coincidentemente (ou não), hoje também é o aniversário de uma de minhas melhores amigas. Parabéns, Mari!

EDIT: Convertam-se, infiéis! http://www.jedichurch.org/

Tags , .


Análises Estruturada e Essencial

Na faculdade estou pagando Especificação de Requisitos de Software e, como avaliação, devo escrever alguns textos sobre o assunto. O primeiro é uma (breve) apresentação sobre Análise Estruturada e Análise Essencial.

O que é análise?

“É o estudo das características que o sistema deverá ter para atender às necessidades e expectativas do cliente.” [1] Usualmente são usados modelos para representar graficamente os componentes do sistema e as relações entre si e com o ambiente.

Pra que serve?

Antes de codificarmos, é importante entendermos o que queremos fazer. Para isto, análise nos dá uma visão geral do sistema e dos relacionamentos de seus componentes entre si e com os usuários. Com isto, conseguimos estimar melhor a complexidade, custos (de tempo e dinheiro), e detectar erros, além de gerar um documento com o qual podemos comparar as funcionalidades finais do sistema com as propostas, para determinar se ele cumpre ou não com seu objetivo.

Análise Estruturada

Nela construímos o sistema de forma top-down (do geral para o particular) criando um Diagrama de Fluxo de Dados (DFD) e refinando-o sucessivamente. Inicialmente obtemos uma visão geral do sistema, então decompomos cada módulo detalhando suas funcionalidades. Com isto, começamos a ter pistas sobre os processos e as entidades, os quais, estruturaremos usando o Diagrama Entidade Relacionamento (DER).

Desenvolvimento de software pelo método da Análise Estruturada

Desenvolvimento de software pelo método da Análise Estruturada

Uma técnica comumente usada é, na descrição dos requisitos, separar os verbos e os substantivos, como candidatos para tornarem-se processos e entidades, respectivamente. A conexão entre eles se dá através de um fluxo dos dados.

Etapa Questão-chave Atividades Principais
Concepção do software Quais são os problemas? Especificação da delimitação e objetivos. Identificação de mais de uma alternativa.
Estudo de viabilidade Há uma solução viável? Análise geral do custo/benefício das alternativas
Projeto lógico Em geral, como os problemas devem ser resolvidos? DFD, DER, Especificação dos processos
Projeto físico Especificamente, como o projeto deve ser implementado? Codificação e testes
Implantação Os usuários e a organização estão prontos para utilizar o sistema? Treinamento e acompanhamento
Manutenção Existem alterações requeridas? Modificar o sistema conforme necessário. Ajudar documentação. Apoio ao usuário.

Análise Essencial

É um melhoramento da análise estruturada. Nela, o problema é inicialmente estudado concentrando-se na identificação das funcionalidades lógicas, sem se preocupar com as exigências físicas de como o sistema será implementado. Para isso, definimos o modelo essencial, que é subdividido em ambiental, que vai definir a fronteira entre ele e o ambiente; comportamental, que descreve as partes internas necessárias para interagir com o ambiente, e; de informação, que nos dá os dados necessários as atividades do sistema. Assim, tem-se a solução ideal do problema, a qual desejaríamos se não tivéssemos limites de custos, velocidade, armazenamento, etc..

Depois, definimos o modelo de implementação, que é quem vai trazer o modelo essencial para dentro de nossas limitações e requisitos físicos. É nele que definimos o modelo lógico de dados, a interface homem-máquina, a plataforma de execução, a linguagem, etc.. Enfim, tudo que diga respeito a implementação de nosso sistema.

Referências

1. http://pt.wikipedia.org/wiki/Análise_de_requisitos
2. http://www.creupiapostilas.hpg.ig.com.br/analise_estruturada.doc
3. http://www.noginfo.com.br/arquivos/AES_Aula_05.pdf
4. http://www.creupiapostilas.hpg.ig.com.br/AnaliseEssencial.doc

Tags , .