Entries from maio 2009 ↓

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.

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/

O “Jeito” Engenheiro

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/

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