sexta-feira, março 31, 2006

Código em Perl

sub setSubtraction {     
    my ($min, $st) = @_;          
    my @minuendo = @{$min};
    my @subt = @{$st};     
    my %hm;    
    my %hs;     
    my @res;     

    foreach(@minuendo){ $hm{$_} = 1;}         
    foreach(@subt){$hs{$_} = 1;}     

    while (($key, $value) = each(%hm)){  
        if($hs{$key} != 1){     
            push @res, $key;   
        }    
    }
     
    return @res;   
}
O código acima ilustra alguns pontos pelos quais eu demorei muito pra aprender Perl. E mesmo já tendo feito alguns programas em Perl, ainda tenho extrema dificuldade em ler um programa....porque nunca me lembro o que %, @ e $ representam, e para qual variável $_ aponta. As coisas são pouco intuitivas, e os programas em geral são feios e difíceis de serem lidos (sobre tudo se tiverem expressões regulares). Tá certo que eu não sou um grande expert de Perl, mas mesmo pessoas que conhecem a linguagem demoraram pra ver o que o programa fazia. E pior: cada uma das pessoas que viu o código usaria outra síntaxe para escrever alguns trechos do programa (cada uma deu uma sugestão diferente para trechos diferentes). Sem mudar o algoritmo e as estruturas de dados usadas, existem N variantes de sintaxe possíveis. Acho que muita flexibilidade às vezes atrapalha. Como diria o Raphael, autor do código acima: "Write once, never read it again". Fico imaginando o trabalho que deve ser manter grandes sistemas. Agora, reconheço o poder de Perl para tratar strings, textos e afins, e por sua rapidez para escrever protótipos. Foi por isso que escolhi essa linguagem (que na época não conhecia) para escrever um programa que lia um texto e etiquetava as palavras segundo a posição da sílaba tônica e número de sílabas. Em C teria sido muito mais difícil. Alguém sabe me dizer o que o programinha acima faz ?

quarta-feira, março 29, 2006

Bug de segurança

Implementação de aplicações web públicas (ou seja, que tem IP público e que seja acessível or qualquer pessoa) deve ser extremamente cuidadosa, sobretudo se o sistema inclui subsistemas de administração, de acesso restrito. Existem várias técnicas possíveis para proteger acesso à páginas restritas, como cookies, javascript, verificação de página de proveniencia, validação de tamanho de campos na interface para evitar buffer overflow, etc.... Dá pra fazer um curso universitário de um semestre sobre esse assunto. E não sei se sou a pessoa mais indicada para isso, apesar de já ter aprendido bastante na minha curta carreira de desenvolvedor de aplicações Web. O fato é que o seguro morreu de velho, e as vezes o perigo pode vir de lugares inesperados, como do próprio Google :-) O artigo "The Spider of Doom" relata que todo o conteúdo de um CMS foi apagado pelo spider do google (programinha que varre a internet para cadastrar páginas em seu buscador), simplesmente porque este seguiu um link da página contendo instruções para apagar a página. Wooops.

sexta-feira, março 24, 2006

Vida longa para os Macs

Quem tem Macs em casa ou no trabalho sabe que são máquinas que aguentam o tranco por muito tempo. Além do mais, é sempre complicado se desfazer de um, porque em geral macmaníacos tem uma relação quase afetiva com suas máquinas (essa relação inclusive salvou a Apple muitas vezes...). Em casa, tudo começou com um Mac SE , em 1989. Na época, tínhamos mouse e interface gráfica enquanto boa parte do mundo usava o DOS. Depois, tivemos um Performa 6300, que na época (1994) já estava ficando fora de linha. Também tivemos dois laptops: um PowerBook 140 e um PowerBook 5300. Hoje temos um iMac G3 e dois iBooks, e em breve, um MacBookPro.
Os laptops mais antigos jáo não existem mais, mas aguentaram o tranco quase 8 anos. Já o Performa e o SE estão firmes e fortes em casa. Obviamente, os softwares de hoje não podem ser executados nessas máquinas, mas elas ainda podem servir para coisas como terminal internet, jogos clássicos, editor simples de texto, ou até mesmo avançado (caso use programas como Latex), bases de dados para o dia a dia....tudo depende das características da máquina e do dono. Foi com o intuito de tentar recuperar algumas dessas máquinas que eu descobri um site bem interessante, o Low End Mac, que contém uma lista de todos os modelos de Macs, com características técnicas e upgrades possíveis, fabricantes e lojas de hardware onde é possível encontrar material, além de artigos e forum de trocas e vendas de máquinas. Foi lá que eu descobri entre outras coisas que era possível fazer upgrade do processador do meu iMac (que eu fiz, prolongando bastante sua vida realmente útil) e do SE, e também encontrei uma loja que vende memória para o SE ($1 dolar o pente) e um fabricante que faz leitor de DVD embutido para meu iMac.


quinta-feira, março 16, 2006

Windows XP no Mac

Desde o lançamento dos novos Macs rodando processador Intel, duas grandes dúvidas pairaram no ar: será possível rodar Windows no Mac e Mac OS X em PCs ? (outras dúvidas ficaram no ar, mas para este post, estas duas são suficientes). Bom, a segunda dúvida acho que ainda não foi respondida...mas caso não tenham encontrado uma maneira de rdar Mac OS X em PCs, acho queé uma questão de tempo. A segunda foi respondida esta semana.

Um usuário de Mac chamado Colin Nederkoorn propôs oferecer dinheiro a quem encontrasse uma forma de rodar Windows XP em um MacIntel, sendo que o requisito básico é que a solução encontrada permitisse um verdadeiro sistema de dual-boot na máquina. A oferta inicial era de $100, mas Nederkon criou um sistema de doações que permitiu que o prêmio chegasse a quase 14000 dólares.

Uma dupla da california bolou uma solução, que foi testada por grupos diferentes de pessoas em Macs Mini, iMac e MacBookPro. Aparentemente a solução consiste em criar uma cópia customizada do CD de instalação do Windows.
Mas infelizmente, a notícia tá fazendo tanto sucesso que é impossível acessar os sites oficiais do concurso com a solução (aliás, ta fazendo sucesso exatamente neste momento, porque eu consegui acessar o site com as regras do concurso a duas horas atrás). Por favor, quem encontrar a receita, entre em contato.

A ZDNet publicou uma entrevista com Nederkoorn, que pode ser lida aqui.

E agora a pergunta que não quer calar: será que eu vou conseguir rodar o Flight Simulator 2004 no meu futuro MacBookPro ? Quem viver verá !

quarta-feira, março 15, 2006

Google bombing na Casa Branca

Não sei se quando você estiver lendo este post, o resultado apresentado aqui vai ser válido ainda...mas:

Abra seu navegador preferido, vá para google.com e digite Failure na caixa de busca. Veja qual o primeiro link encontrado :-) Esse lance de Googlebombing pode produzir resultados loucos.

E o mais legal: nos links patrocinados (à direita da tela), o primeiro endereço é de uma página do blog oficial do Google, justificando o acontecido.


Frase do dia

"Deus só criou o mundo em 7 dias, pq não tinha sistema legado pra mexer"

(Da sabedoria popular, ou de autor desconhecido. Credito temporariamente ao Leonardo, mas preciso verificar)

quinta-feira, março 09, 2006

Falando em usabilidade

Aproveitando o tópico anterior sobre usabilidade, deixo aqui uma pergunta, porque perguntar não ofende: quem foi o engenheiro espertão da Microsoft que achou que era uma boa idéia traduzir atalhos do Office ??????? Eu penso absurdos da mãe dele sempre que eu faço Ctrl + S pra salvar um documento no Office aqui do trabalho, que é em português, e me aparece uma palavra sublinhada. Mais legal foi quando abri um Office em alemão e não consegui fazer absolutamente nada.

Porque até onde eu sei, atalhos são feitos pra heavy user poder ser mais produtivo no seu trabalho. E me corrijam se eu estiver errado, mas uma vez que você conhece os atalhos, não importa se você sabe a palavra que deu origem à letrinha que vem após o Ctrl, você simplesmente usa !

E para aqueles que disserem que é mais intuitivo o atalho ter alguma coisa a ver com a língua do pacote, pergunto: qual seria a palavra que deu origem ao B, de Ctrl+B, que no Office em português executa a ação Salvar arquivo ?

quarta-feira, março 08, 2006

Construindo interfaces

É notório e sabido que hackers e programadores em geral odeiam pensar em interfaces, e acham isto absolutamente inútil. Afinal, é muito mais divertido manipular as coisas na raça...e de qualquer forma, nenhuma interface é complicado para experts...... Apesar de não concordar 100% com isso, assumo que muitas vezes abro mão de interfaces gráficas bonitinhas para mexer em arquivos tenebrosos. Sobretudo quando tenho que configurar uma máquina com Linux. Mas o fato e que, por sorte, 99.9% das pessoas não são hackers, e nem ao menos tem intimidade com computador [nda: essa porcentagem é completamente fictícia e saiu da minha cabeça, mas serve pra ilustrar o fato que a maioria das pessoas não são hackers] . E ao usar um software, a maioria das pessoas não irão ficar impressionadas se o seu algoritmo é recursivo, roda em O(n), ou usando apenas um loop [nda: se você entendeu o que eu escrevi agora, não tem dúvida: você é geek :-)]. Interface gráfica, para quem desenvolve softwares comerciais desktop, web, para palm, celular e qualquer outro dispositvo gráfico, é crucial. Eu encaro interfaces como encaro engenharia de software: deve ser um porre de se pesquisar e estudar, mas são ferramentas essenciais para qualquer bom programador comercial. Encontrei hoje um artigo do Joel Spolsky bastante longo (9 capítulos), mas bem interessante e agradável de se ler, sobre princípios básicos que devem ser utilizados para se construir uma boa interface gráfica. É basicamente um resumo de um curso universitário de IHC. Vale a pena dar uma olhada. />

terça-feira, março 07, 2006

Voltando das férias

Após 3 semanas de férias, ainda não entrei no ritmo de trabalho e meu lado geek tá meio fraco e enferrujado :-) Mas só pra retomar o hábito de escrever aqui, segue o link de um artigo que eu achei interessante do Joel Spolsky sobre o problema de precificar softwares. Ele trás bons elementos para pensar no problema. Provavelmente quem já fez um curso de economia, mercado e coisas correlatas irá achar inútil. Mas eu não fiz nenhum curso desses....ou melhor, fiz, mas não de uma forma que pudesse render frutos mais tarde. If you know what I mean.

Para ler o artigo, clique aqui