Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

24 agosto, 2007

24 de Agosto de 1995

Esta entrada é para aborrecer meio mundo. Ora digam lá que sistema operativo viu a luz do dia a 24 de Agosto de 1995.

23 agosto, 2007

Somos os primeiros

Por vezes sou um verdadeiro sacana, gosto daquelas diatribes sem sentido que por vezes aparecem na net sobre assuntos completamente idiotas como as questões relativas a quem fez primeiro determinada coisa, como se fosse possível a alguém fazer as coisas fora de um contexto apropriado. Por exemplo a história do TubarãoEsquilo ser a primeira rede editorial de blogues ou a história do YouTube ser o primeiro a sobrepor publicidade num desses repositórios de vídeo.

A percepção de que quando se faz algo em primeiro lugar, o fazer em primeiro lugar é bom está de tal modo errada que sou tentado a não explorar muito mais isto a não ser que prefiro ser, o segundo,... 560.000 (ou qualquer outro número) desde que faça algo bom bem feito. Não há necessidade de andar em bicos de pés.

Por exemplo a série de artigos do Mário Gamito sobre instalação de um servidor caseiro é interessante (talvez para o meu gosto tenha alguns comentários colaterais desnecessários e também ligeiramente mais rápida do que eu julgava razoável para um artigo para o público, mas como método de tomada de notas está na conta certa) não é seguramente o primeiro guia on-line sobre o assunto e está bem feito.

A sua admissão que determinada aplicação de ftp foi a escolhida porque era aquela a que estava habituado só demonstra limpeza.Só vale a pena inovar quando algo não funga (não resisti) bem, ou quando se está em exploração

P.S. O título deve-se a uma incorrecção gramatical praticada quando eu era moço e aluno no Colégio Algarve (já agora nunca consegui chegar em nenhuma corrida em primeiro lugar nem nada que se parecesse, a probabilidade de chegar em último lugar com os meus colegas era de 100% e nem o meu irmão me "deixou" ganhar numa volta para aí com os seus 70m deu-me só 20 metros de abada (outro termo dessa época).

22 agosto, 2007

Joyent não não agradável como isso

Para não dizerem que só digo mal de sites portugueses aqui vai um pouco de vinagre sobre um site na berra da Web 2.0, o Joyent, com a seguinte pérola de usabilidade. No final de um texto promocional pedem ao visitante após o terem convencido a usar os seus serviços que ele carregue no botão grande de cor laranja à esquerda. Só que em vez de se ser enviado para a página de registo vai parar-se à página do prémio. Porquê, porque o botão que querem que seja carregado está no topo à esquerda em vez de meramente à esquerda. Bem o podiam repetir no fim do texto.

Quando se faz um sítio é necessário ter muito cuidado. Não devemos usar botões de cores similares (para mim a cor destes dois botões é perfeitamente indistinta embora saiba que são de cor diferente depois de verificar o seu valor numérico) e o nosso texto tem que ser ultracuidadoso (cuidado com a revisão) quando indica alguma acção. É assim que se pode perder umas lecas.

19 agosto, 2007

Follow up democracia

Algumas pessoas acham que os concursos públicos cá estão enviesados. Na minha entrada sobre democracia disse que não publico comentários com denúncias pessoais sobre comportamentos reprováveis. Claro que estava a dizê-lo para evitar que alguém resolvesse lavar roupa suja em praça pública sem substanciar a sua denúncia. Esta foi a razão que me levou a não publicar um comentário pródigo em «denúncias» que terminavam sempre por indicar "fontes" que não podia verificar. O tipo de comentário semelhante ao que Joe Clark tem na minha opinião uma tese muito bem suportada em relação a um concurso público para o desenvolvimento de um sítio web para a autoridade de transito de Toronto.

Eu já o acho há algum tempo algo deprimido talvez isto não o ajude.

Isto quer dizer-nos na prática que temos que ser mais rigorosos quando nos queixamos dos nossos governantes e ou organismos públicos, temos que ser mais esforçados na crítica e na sua sustentação.

Num concurso público aquilo que gostaria de poder ver seria como tinham sido escritos os documentos do concurso, lembro-me há uns anos ter tentado participar num concurso em que vinha uma fotocópia de um catálogo de um fabricante de determinado material com a indicação nas condições que não podiam ser apresentadas alternativas que não correspondessem exactamente ao solicitado, como se aquilo que fosse importante não fosse a finalidade do equipamento que se estava a tentar adquirir mas a marca e modelo do que se estava a adquirir.

Admito que haja sectores onde isso possa ter que ser feito, mas não conheço.

18 agosto, 2007

ODF ou OOXML ou os atrasos na adopção deste último

Uma discussão sobre a adopção do ODF vs OOXML surge no blogue do genni com comentários para todos os gostos.

17 agosto, 2007

Preguiçoso ou Trabalhador


class Empregado
  def emails
    @emails ||= []
  end
end

ou


class Empregado
  def initialize
    @emails = []
  end
end

A motivação para passar a iniciar cedo atributos (ser trabalhador) é a da legibilidade do código. A mudança de valor de atributos inicados tardiamente, à lá Calvin (ver imagem não é a que queria mas não tenho scanner para a que quero e não estou para ir procurar), ocorre no seu acesso. Os atributos iniciados tardiamente podem ser problemáticos para depurar porque o seu valor muda quando se lhes acede. Os atributos iniciados cedo iniciam os seus atributos no construtor da classe.

08 agosto, 2007

06 agosto, 2007

Ajaxulação

O melhor remédio para a ajaxulação é a abstinência.

05 agosto, 2007

Um sistema de comunicações para as comunidades imigrantes

Quando não se faz o trabalho de casa depois aparecem-nos coisas que queríamos ter indicado mas que não o fizemos por ignorância.

Não sabia que existia uma organização TSF à imagens dos médicos sem fronteiras para as telecomunicações. A TSF (não confundir com a rádio portuguesa) possui sistemas de telecomunicações por satélite que podem ser instaladas rapidamente em locais em crise como por exemplo no Perú após o terramoto de há poucos dias ou em Moçambique aquando das cheias.

Hoje em Portugal existe uma comunidade de pessoas vindas das mais diversas origens. Muitas dessas pessoas são de estratos económicos relativamente baixos.

Contudo quando chega o momento de comunicar com os seus entes queridos nos países de origem recorrem frequentemente ao uso de telemóvel tanto cá em Portugal como no respectivo país de origem.

Recorrem nesses países com frequência à partilha do terminal (vulgo do telemóvel). Esta forma de comunicação exige uma de duas coisas ou que a comunicação tenha sido previamente acordada e nesse caso o familiar estará na proximidade do terminal ou quando tal não suceda a um sistema de chamada em dois passos. No primeiro passo faz-se uma chamada que não se destina a falar mas a identificar quem quer falar e normalmente quem recebe saberá quem chamar sendo seguido do segundo passo para efectuar uma chamada para falar. Há claro outras alternativas como a de deixar recado.

Este sistema pode ser complementado com algo em que tanto na origem como no destino houvesse sistemas equipados com microfone, auscultadores e câmara, eventualmente um scanner e impressora (ou em alternativa um multifunções) que permitisse às pessoas não só falarem e escutarem mas também verem-se (algo que é importante numa comunicação para linguagem não vocal), copiarem e imprimirem documentos.

O sistema poderia não ser totalmente igual em todos os sítios.

Por exemplo, poderia haver num local um servidor que se encarregaria de fazer a ligação ao sistema de telecomunicações locais, alguns computadores do género do olpc, ou outros de baixo custo, distribuídos nas escolas. Em Portugal o sistema passaria por servidores asterisco e por PC (que não necessitam de ser o último grito tecnológico) equipados com software livre com capacidade de arrancarem a partir de CD ou de dispositivo USB instalados nas associações de imigrantes, ONGs ou outras agremiações de utilidade pública.

01 agosto, 2007

As mulheres e a tecnologia

Estava a pensar falar das mulheres que considero mais importantes para a evolução da ciência e da técnica, depois dessa nota, optei por falar de mulheres que me estão mais próximas.

A minha mãe actualmente com 78 anos normalmente ouve a sua música usando um leitor de mp3.

As minhas irmãs em alguns usos tecnológicos foram pioneiras cá em casa. A minha irmã Luísa foi emancipada para poder tirar a carta de condução, a minha irmã Teresa também a tirou nenhum de nós rapazes o fez (por puro comodismo claro).

A Luísa por razões profissionais tem que usar quotidianamente um portátil, uma trelamóvel e alguns outros artefactos tecnológicos. Habituou-se a usar a trela a par do portátil nas suas tarefas. Tirar fotografias enviá-las por mms ou passá-las para o computador. Ligar-se à VPN da empresa onde trabalhar quer pelo télele (que é uma verdadeira trela) quer pelo computador.

A Nazaré tem cerca de 50 anos. Nos seus tempos de docente de Alemão tinha por levava por vezes um leitor de cassetes para as suas aulas quando os seus colegas mal queriam ouvir falar de uma tecnologia que ultrapassa-se o giz e quando muito umas fotocópias.

A minha irmã mais nova foi a única que foi iniciada nas lides informáticas por mim. Ainda estávamos no tempo do DOS e dei-lhe uns rudimentos do excelente processador de texto WordPerfect. Uns meses depois apareceu-me com um manual para construção de expressões matemáticas de sua lavra.

30 julho, 2007

Concurso Agile - Vídeos

Para os agilistas que por aí andem há um concurso de vídeos sobre desenvolvimento Agile no youtube. Parece que até os bonecos dos legos gostam de desenvolvimento Agile.

Planeta Terra

Cem dias a comemorar fotografia: (seguem-se dois vídeos)

28 julho, 2007

Got API

GotAPI Este é um daqueles sítios que não posso chamar de cábulas mas é claramente uma grande referência para programadores.

div e span - II

Há uns poucos dias alguém comentava no meu artigo div vs span que gostava de conhecer um pouco melhor os elementos div e span. Eis uma primeira vista de olhos a esses dois elementos, claro está que para um melhor esclarecimento devemos recorrer às fontes do w3c.

div

Definição

As div são uma maneira genérica de agrupar áreas de conteúdo

Exemplo

O elemento div pode ser usado para criar o arranjo da página Web. O exemplo serve de apresentação à natureza de agrupamento do elemento div:


 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt">
 <head>
 <title>Casa da Mata</title>
 <style type="text/css">
 navigacao {width: 200px; float: left;}
 conteudo {margin-left: 205px;}
 rodape {clear: both;}
 </style>
 </head>
 <body>
 <div id="cabecalho">
 ... [aqui deve ficar o anúncio e ou o logótipo] ...
 </div>
 <div id="navigacao">
 ... [aqui deve ficar o menu principal] ...
 </div>
 <div id="conteudo">
 ... [o conteúdo principal da página fica aqui] ...
 </div>
 <div id="rodape">
 ... [informação legal fica aqui] ...
 </div>
 </body>
 </html>

Boas práticas

O elemento div não contém significado semântico. É uma maneira genérica de agrupar áreas de conteúdo. Assim mesmo sendo permitido, pela especificação do XHTML, conter texto e elementos em linha considera-se melhor prática envolver texto e elementos em linha em elementos bloco com significado tais como p, ol, ul, dl, de h1 a h6, blockquote, etc. O exemplo seguinte mostra um enlace e texto e imagens dentro de um elemento div:


 <div class="bala semanal">
   <a href=   "/multimedia/interior/conteudo=408746">
       <img src="/armazem/ng1017428.jpg" class="chamada" alt="A semana em fotos">
       <br />
       <img src="/Comum/Imagens/2007/icone_fotog.gif" alt="" class="Icone">
       <p class="destaque medio">Fotogaleria</p>
       <br />
    ...
 </a>
  </div>

Note-se o uso de um atributo class na div com dois nomes.

span

Definição

O elemento span propicia uma maneira genérica de adicionar estrutura ao conteúdo. Trata-se de um elemento em linha

Exemplo

O elemento span pode ser usado com o uma maneira de aplicar formatação CSS ao conteúdo. No exemplo seguinte o elemento span no cabeçalho irá ter um fundo a ciano e o elemento span no parágrafo irá ter um fundo cinza.


 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt">
 <head>
 <title>A Casa da Mata</title>
 <style type="text/css">
h1 span {background-color: cyan}
 p span {background-color: gray}
 </style>
 </head>
 <body>
 <h1>A <span>Casa da Mata</span> - É um descanso do guerreiro</h1>
 <p>A <span>Casa da Mata</span> foi construída como estalagem há 22 anos.</p>
 </body>
 </html>
 

Atributos

Atributos comuns

class
Este atributo atribui um nome ou um conjunto de nomes de classe a um elemento. Pode atribuir-se o mesmo nome de classe ou conjunto de nomes de classe a vários elementos. Quando se atribuir um conjunto de nomes os nomes devem ser separados por caracteres de espaço em branco. Normalmente usam-se nomes de classe para aplicação de regras de formatação CSS a um elemento.
id
Este atributo atribui uma ID a um elemento. Esta ID deve ser única no documento. Esta ID pode ser usada em guiões aplicados do lado do cliente (tais como os escritos em JavaScript) para seleccionar elementos ou para aplicar regras de formatação CSS ou para criar relações entre elementos.
text
Este atributo propicía informação auxiliar. Alguns navegadores irão apresentar esta informação em janelas de ponto. As tecnologias de assistência podem disponibilizar esta informação aos utilizadores como informação adicional sobre o elemento.

Atributos de internacionalização

xml:lang
Este atributo específica o idioma base dos valores do atributos de um elemento e do seu conteúdo textual.
dir
Este atributo específica a direcção base do texto. Este atributo pode tomar os seguintes valores:
  • ltr: da Esquerda para a direita
  • rtl: da Direita para a esquerda

Pode conter

  • Elementos em linha
  • Texto

27 julho, 2007

ruby-lang pt

Ontem estive à noite com o Joaquim, a sua namorada, o Francisco, o Pedro, e o João no Peters para o lançamento da versão portuguesa do sítio da ruby. Aquilo foi um mero evento social. Nele falou-se de tudo um pouco e a certa altura derivou-se para a forma como se gasta dinheiro, como há mesmo algum novo riquismo na forma de o gastar (Ver conta geral do estado).

Mesmo com esse nível de gastos podemos continuar a encontrar sítios como este: O sítio do Ministério da Cultura mostra o lado oposto uma pobreza franciscana (nenhuma referência ao Francisco) nos seus código e conteúdos.

Parece que o sítio foi concebido por um imberbe em desenvolvimento de sítios web, talvez até esteja a criticar a pessoa errada. Talvez me esteja a equivocar e a acusar o trolha de não saber de electricidade (como o da manutenção do semáforo).

Tenho que admitir que não esperava ver código com <font... ou <b num sítio oficial. Claro está que isto é um sítio com tabelas para tratar de arranjos.

Além da pobreza do código, a pobreza dos conteúdos é fantástica. Por exemplo fui ver a agenda, hoje 27 de Julho apresentam como destaques dança, música, exposições e teatro. Na dança destacam algo sucedido em 21 de Julho, algo que já não pode ser apreciado ao vivo. Tudo bem, será que tinham algo sobre as reacções do público ao espectáculo, não, isso seria demais.

Fico parvo quando veja que o estado gasta uma pipa de massa a auditar sítios oficiais, ou a tarefa encomendada aos auditores é algo que não gera alterações ou estão a auditar algo errado ou a própria auditoria enferma de defeitos ou uma combinação disto, não sei.

Acho que um dia destes crio um pastiche do site só para experimentar. Não parece muito difícil. O único problema é que aquilo parece tudo reles, uns botões animados que já ficavam mal em 1999.

26 julho, 2007

Off-Topic

Sempre gostei de uma boa estória e esta conta-se em poucas linhas.

Há uns anos a minha irmã mais velha dava aulas. Tinha hábitos fora do vulgar. Um dia resolveu levar um leitor de cassetes e uma k7 com a 5ª Sinfonia. Momentos depois de iniciar a aula surge um rapaz a transmitir um pedido do Sr. Prof. Caeiro, para baixar a música pois não conseguia dar a sua aula. Uns minutos depois aparece o mesmo rapaz a pedir para subir o som pois os alunos não conseguiam suportar a aula do Sr. Prof. Caeiro.

Isto é resultado da "minha" comemoração da alta da minha irmã. Boas vindas.

Planet I18n

O planeta i18n foi lançado pela actividade de internacionalização do w3c. Neste planeta surgem entradas de blogues (que exprimem as suas próprias opiniões) de todo o mundo sobre o que vai surgindo de interessante na área de internacionalização. Por exemplo, surge um artigo do blogamundo sobe Idioma perdido na agregação (como a de um planeta).

Como a internacionalização é tema central do ILG do WaSP tento (nos últimos 3 meses isto não tem sido verdade) acompanhar o que vem sendo escrito sobre este assunto. Este agregador vem ajudar nessa tentativa de acompanhamento.

i18n vem dos 20 caracteres da palavra inglesa internationalization menos os dois caracteres i e n (inicial e final).

Suporte Mozilla

A Mozilla está a criar um série de artigos sobre o funcionamento do firefox. Esperam que os candidatos a autores se autoproponham.

23 julho, 2007

Rake - Um Ajudante da Automatização das Tarefas

Necessita de automação? Use Rake ou Sake!

Para quem não conheça o Rake é uma linguagem de domínio específico escrita em Ruby.

Neste artigo vou introduzir a rake e descrever algumas pistas para automatização de tarefas repetitivas que se fazem no dia a dia.

Teoria

A Rake foi desenvolvida por Jim Weirich e baseia-se em Ruby, o que quer dizer que temos acesso completo às capacidades da Ruby de dentro da Rake. A Rake não está limitada aquilo que conhece em ferramentas similares é muito mais poderosa e flexível (isto é aliás um sinal de perigo).

A Rake funciona à base de dependências. Quando se escreve um guião Rake iremos dizer-lhe que uma dada tarefa depende de outra e assim sucessivamente. Deste modo podemos construir uma receita completa para explicar como fazer as coisas e a respectiva ordem de execução.

Como a Rake é construída em Ruby podemos fazer o que quisermos nas suas tarefas:

  • manipular ficheiros
  • compilar os nossos programas
  • limpar o nosso (do computador claro) sistema de ficheiros
  • gerar esqueletos de aplicações
  • e ainda muito mais

Primeira Tentativa: Adicionar uma tarefa e fazer com que seja executada por omissão


task :default => [:ola]
desc "Esta é a nossa primeira tarefa"
task :ola do
  puts "Olá! Sou a primeira tarefa escrita por nós!"
end

desc "Execução de Teste"
task :test do 
  require 'rake/runtest'
  Rake.run_tests 'tests/*.rb'
end

Na primeira linha dizemos ao rake que a nossa tarefa por omissão, a que é chamada quando usamos rake na linha de comando sem aditivos será a tarefa designada por ola. Pode ainda tentar chamar-se explicitamente essa tarefa usando o comando rake ola

Depois na linha seguinte descrevemos a tarefa que vamos executar. Esta descrição irá ser impressa quando usamos o comando rake -T para ficarmos a saber quais as tarefas disponíveis no nosso Rakefile.

Finalmente definimos a nova tarefa ola usando a palavra chave task. Aquilo que colocamos dentro da tarefa é código Ruby perfeitamente normal.

A Rake oferece algumas capacidades de manipulação de ficheiros, criação de gemas e coisas que tais. Deve ler a sua API para mais informação.

Usamos essas capacidades para a tarefa testes ao carregar a biblioteca distribuida com a Rake e chamando um desses métodos. Por exemplo estamos a carregar a biblioteca runtest e executar cada ficheiro de teste que se encontre na pasta de "tests".

Encadear tarefas


task :carregar_ficheiros do
  # fazer o carregamento
end

task :ligacaossimbolicas => :carregar_ficheiros do
  # criar ligações simbólicas do lado do servidor
end

task :instalar => :ligacaossimbolicas do
  # instalar a última revisão do nosso projecto
end

Agora temos uma série de tarefas que podemos usar. Se escrevermos rake instalar, essa tarefa irá chamar a tarefa ligacoessimbolicas que depende da tarefa carregar_ficheiros. Assim a Rake irá executar a tarefa carregar_ficheiros em primeiro lugar, depois a tarefa ligacoessimbolicas e depois instalar.

É assim que pode encadear tarefas e assegurar-se que todos os passos exigidos são executados antes de executar o que está a pedir ao Rake.

Conclusão

Se começar a usar Rake para automatizar as suas tarefas rapidamente compreenderá que é uma ferramenta poderosa e fácil de usar. Uma das coisas mais interessantes é que a Rake foi construída em Ruby e que Ruby pode correr em qualquer sistema operativo. Claro que saber Ruby irá ajudar a aprender realmente a usar a Rake e a escrever a suas próprias tarefas simples mesmo que seja s o um principiante em Ruby.

A Rake não é só para utilizadores de Ruby, pode ser usada para montar programas em C, limpar o sistema de ficheiros, instalações, administração das suas bases de dados, ...

19 julho, 2007

Os Desafios dos Navegadores

Mozilla, produtores (talvez seja um termo excessivo) do firefox possuem disponível e visível uma lista de desafios que podem vir a encontrar dos seus concorrentes (do firefox)