Arquivo de Janeiro, 2006

Visual complexity

Achei muito interessante o visualcomplexity.com, quer do ponto de vista técnico como do ponto de vista “artístico”. Apanhei umas ideias muito promissoras para um projecto em que tenho andado a pensar. Recomendo não só a quem se interesse por computação gráfica como também a quem goste simplesmente de ver umas coisas bonitas a piscar :)

Name Voyager

Querem saber quando é que o vosso nome esteve na moda? Ou talvez se o nome dos vossos pais esteve à frente do seu tempo?
A Name Voyager é uma applet Java que apresenta qual o período “áureo” de um determinado nome.

Muito bem conseguido graficamente .

Star UML

StarUML - The Open Source UML-MDA Platform

Indicou-me hoje o Hugo uma ferramenta de UML bastante promissora, de seu nome Star UML e com uma relação qualidade preço muito boa, ou, por outras palavras, gratuíta ;)

É uma aplicação já em desenvolvimento desde 1996 pela pLASTIC software, mas só tornada gratuíta e open source recentemente; e isso talvez explique porque é que nunca tinha ouvido falar dela antes.

O projecto está alojado na Tigris.org.

History of Programming Languages

Já tinha visto este diagrama em tempos, mas esta versão está com particular bom aspecto.

É nestas alturas em que gostava de ter acesso a uma plotter.

Lógica poética ou poeticamente lógico

Acredito que qualquer pessoa, seja de que área for, tem de gostar daquilo que faz como condição essencial para ser um bom profissional. Na informática há alguns “sobresaltos” típicos que mais tarde ou mais cedo aparecem, com mais ou menos intensidade.

Não tenho muitos motivos de queixa, mas quando a “paixão” pelo trabalho do dia a dia falha torna-se necessário ir em busca de novas fontes de “inspiração” :)

Tudo isto só para dizer que gostei bastante de ler os seguites posts recentemente:

Expressões regulares

Estive ontem a desenferrujar um pouco o meu conhecimento de expressões regulares com umas brincadeiras em PHP e cheguei à conclusão que excluir uma palavra é mais complicado do que parece.

Tomando como exemplo a expressão regular abcde[^fghi]*jklmn:

  1. O texto “abcdejklmn” valida positivamente
  2. O texto “abcdefjklmn” não passa na expressão regular
  3. O texto “abcdefghijklmn” também não passa

O meu problema é entre o 2ª e o 3ª caso. Como ei de fazer se pretender que a comparação falhe para as sequências “fghi” que possam surgir mas não falhe se surgir qualquer dos caracteres “f”, “g”, “h”ou “i” isoladamente?

Aceitam-se sugestões; mais um pouco a investigar o assunto sem sucesso e acabo por recorrer a substrings encadeados para resolver a questão :| Feio… mas funcional.

Oldies

Recomendo a todos que, como eu, tiveram uma NES e/ou uma Mega-Drive uma visita ao Game Oldies (descoberto via Vitor Azevedo).

Cuidado! muuito cuidado! é altamente viciante ;)

Como reiniciar a ligação de um modem

Demorou mas sempre consegui arranjar um processo de reiniciar a ligação do modem/router após a uma da manhã para que o tráfego desde essa altura até as oito da manhã seja considerado pelo meu ISP (a Clix) como dentro das happy hours.

O único pré-requisito é que o modem tenha uma interface Web de administração.

Usei duas aplicações facilmente obtíveis:

ProxyTrace

Trata-se de uma proxy que permite inspeccionar os conteúdos das comunicações HTTP que sejam efectuadas.

WGet

GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.

Processo:

  1. Fazer download da última versão do ProxyTrace
  2. Configurar no browser o ProxyTrace como sendo a proxy em uso e utilizar a interface Web do router para terminar a ligação à Internet iniciando-a novamente logo de seguida. O ProxyTrace deverá ter registado o tráfego produzido durante essas operações devendo ser fácil identificar os dois registos que provocaram a queda e o restauro da ligação; no meu caso tratam-se de dois pedidos POST que submetem quatro valores cada um.
  3. Fazer download da última versão do WGet.
  4. Usar as informações que o ProxyTrace nos deu para compor um comando wget. No meu caso, com um WAG354G, o comando final para desligar a ligação foi algo deste género (as mudanças de linha servem só para melhor legebilidade, o comando deveria estar numa única linha):
    wget --user="admin" --password="password_do_router"
    -O httpOut.txt -o wgetOut.txt --tries="1"
    --post-data="
        submit_button=Status_Router&
        submit_type=disconnect&
        change_action=gozila_cgi&
        wan_proto=dhcp"
    http://192.168.1.1/apply.cgi
    

    O nome de utilizador e a password do modem são utilizados no comando para passar na autenticação HTTP do modem.

  5. Configurar uma tarefa que corra diariamente, à hora pretendida, um script (bat, bash, ou outro qualquer) com os comandos de fecho e início da ligação. Para correr a tarefa diariamente pode ser usado o Cron em Linux e o Task Scheduler em Windows.

De notar que não tive em particular atenção questões de segurança. A password de acesso ao modem ficou hardcoded no script e devem ser tomadas outras precauções para que esse ficheiro não possa ser lido por qualquer um.

CoMIC 2006

A conferência CoMIC – Conferência em Metodologias de Investigação Científica – terá a sua primeira edição no próximo dia 9 de Janeiro de 2006 na Faculdade de Engenharia da Universidade do Porto e pretende ser um fórum privilegiado de discussão de projectos de doutoramento realizados dentro e fora da Universidade do Porto. A edição deste ano conta com 10 conferencistas que apresentarão comunicações relativas aos seus projectos de doutoramento, desenvolvidos em diversas áreas.

A participação na conferência é livre, mas de inscrição obrigatória no sítio Web da conferência, onde está também disponível o programa.

Má markup

Quase caí da cadeira quando, por mero acaso, vi o source da página do cgd.pt e reparei na seguinte linha:

<meta name="GENERATOR" content="Microsoft FrontPage 4.0">

Depois reparei também que todo o layout está defenido com tabelas, e fechei a janela antes que me desse qualquer coisinha má. Já lá vai o tempo em que era seguro pôr-me a ver o código fonte de páginas alheias sem ter ataques de coração. :)