IE8 compatível por padrão

March 4th, 2008 § 12 comments § permalink

Peço perdão antecipados pelo trocadilho não-intencional do título, mas a notícia é boa: a Microsoft, em uma das poucas vezes em que resolveu seguir a opinião contrária dos desenvolvedores, resolveu tornar o modo de renderização do IE8 padrão e servir o do IE7 somente por requisição.

Esse é um ganho significativo para o mercado e uma promessa implícita de que o IE8 não vai começar a ficar para trás, puxando o desenvolvimento Web na direção contrária como o IE7 e IE6 fizeram. Também é uma forma de tornar os desenvolvedores que trabalham somente com ele mais conscientes do que está acontecendo fora do seu mundo.

De qualquer maneira, boa notícia. Espero que mais coisas como essa continuem a acontecer.

Seaside em ação

February 28th, 2008 § 0 comments § permalink

Estou sem muito tempo para postar, mas para quem tem interesse o Michael Lucas-Smith–o homem do Seaside na Cincom Smalltalk–postou um vídeo demonstração da versão alpha do WebVelocity.

O WebVelocity é a combinação de Seaside mais ORM que a Cincom Smalltalk está desenvolvendo e, pelo vídeo, dá para ver que o produto é muito promissor. A transposição de um ambiente dinâmico como o Smalltalk para a Web parece que está se dando sem maiores problemas. Agora é só esperar.

The Seaside Bookshelf, RSS edition

February 19th, 2008 § 2 comments § permalink

Para os que ainda não fugiram do meu blog depois de tanto ouvir falar Seaside nos últimos dias, eu implementei um feed na aplicação desenvolvida.

O mais interessante dessa modificação é que eu tive que reorganizar a estrutura de classes da aplicação, mover alguns métodos e acrescentar variáveis de instância em algumas classes. Quando fiz a carga do pacote de mudanças no sistema, a aplicação continuou rodando normalmente e todas as classes em memória foram modificadas transparentemente. Se o sistema estivesse sendo acessado por milhares de usuários, nenhum deles teria sentido qualquer mudança e nenhuma sessão teria caído. Isso é, pelo menos para mim, o maior exemplo do poder de Smalltalk e similares.

Isso fecha o meu desenvolvimento básico e eu prometo não voltar a falar disso tão cedo.

O código está abaixo:

O próximo passo é migrar o sistema para Couch DB e ver o que acontece.

The Seaside Bookshelf, Redux

February 18th, 2008 § 0 comments § permalink

Para quem se interessou pela aplicação Seaside que eu estou desenvolvendo, eu completei uma pequena atualização para otimizar o sistema. Com as pequenas atualizações efetuadas, o sistema agora roda em uma velocidade aceitável mesmo no servidor pequeno onde está e não está mais usando nada em memória.

Por causa das otimizações, o código agora está mudando algumas classes básicas do Magritte e por isso os dois pacotes são necessários para rodar o sistema corretamente.

O código está abaixo:

O próximo passo é migrar o sistema para Couch DB e ver o que acontece.

Uma pergunta

February 16th, 2008 § 6 comments § permalink

Uma pergunta para desenvolvedores Web: se você pudesse melhorar ou mudar uma característica do seu framework Web favorito, qual seria?

Responda e justifique, se possível. :-)

Amazon S3 sobe no telhado

February 15th, 2008 § 3 comments § permalink

E o Amazon S3 sofre o que Nick Carr descreve como um “falha maciça”, do qual ainda não se recuperou. Espero que não tenha sido nenhum dos meus experimentos de ontem.

Brincadeiras à parte, uma salva de palmas para a escalabilidade ultra-redundante que em tese seria capaz de lidar com qualquer problema eventual que afetasse parte da estrutura. Pelo visto, não era tão redundante assim. Até eu que sou peixe pequeno estou sendo afetado já que os áudios do Pão de Cast ficam no S3 e estão fora no momento.Como não dependo disso para viver, não estou ligando muito. Mas já existem empresas que vivem na “nuvem” do Amazon S3 e EC2.

Estou me sentindo semi-presciente. Não foi uma worm, mas a previsão se cumpriu mais cedo do que eu pensava.

The Seaside Bookshelf

February 13th, 2008 § 4 comments § permalink

Para quem tem curiosidade de saber como é uma aplicação Seaside depois de ler tanto sobre o assunto aqui, estou disponibilizando o código inicial de um experimento meu: um pequeno sistema para guardar informações sobre os livros que estou lendo, quero ler ou já li.

A propósito, antes que alguém pergunte, já passo minhas desculpas ao Caffo pela cópia explícita do formato que ele usa. É claro que a dele é bem mais bonita–e bem mais rápida no momento.

Alguns pontos sobre o código que está rodando no servidor como demonstração:

  • Essa é uma versão alpha. Não espere sutilezas no código;
  • O aplicativo depende de uma instância do OODBMS GOODS. Os dados dessa instância podem ser configurados na própria aplicação;
  • O login é uma gambiarra terrível. Eu comecei a fazer um sistema de usuário, fiquei com preguiça e fixei em um único usuário embora o modelo esteja lá para suporte futuro;
  • A versão no servidor é lenta, muito lenta. Eu não estou usando nenhuma das técnicas usuais de deployment e o servidor onde a aplicação está é muito pequeno;
  • A aplicação está armazenando quase tudo em memória no momento e gerando os thumbnails on-the-fly, o que piora as coisas;
  • O código é específico do Squeak.

Dito isso, o sistema ilustra o fluxo básico de uma aplicação Seaside e o uso de Magritte para a modelagem de objetos. Com isso dá para ter uma idéia de como o Seaside diferente dos demais frameworks Web.

O código pode ser obtido nos endereços abaixo:

Para quem quer aprender como configurar uma VM Squeak para rodar os exemplos, em fiz um screencast sobre o assunto há um tempo atrás. Para uma imagem base, eu recomendo a Squeak-Web do Damien Cassou. Com ela, basta carregar o GOODS.

Dúvidas, sugestões, críticas e indicações veladas (ou explícitas) de como o código é péssimo podem ser feitos na área de comentários.

Atualização: Para configurar o GOODS sob o Linux, o processo é simples:

  1. Baixe e descompacte o código da última versão.
  2. Rode ./config no diretório para gerar o Makefile do sistema.
  3. Rode make para compilar
  4. Se necessário, ajuste Makefile.usr para indicar os caminhos de instalação que você deseja.
  5. Rode sudo make install para instalar

O arquivo de configuração que eu estou usando é o seguinte (bookshelf.cfg):

1
0:127.0.0.1:9081

O arquivo de opções do banco é o seguinte (bookshelf.srv):

server.admin_telnet_port="127.0.0.1:8081"

Para rodar, algo como o seguinte, onde bookshelf é o arquivo bookshelf.cfg:

sudo /opt/local/bin/goodsrv bookshelf &

OpenID e os gigantes

February 7th, 2008 § 2 comments § permalink

A notícia de hoje, que eu só vi agora depois de ficar quase todo o dia enfiado em um projeto e sem acesso, é que os grandes nomes da indústria–Google, Microsoft, Yahoo!, IBM e Verisign–entraram para a OpenID Foundation. Considerando que essas empresas representam a maior parte dos usuários de sistemas múltiplos onde um signon único seria mais do que interessante, parece que o OpenID realmente vai decolar esse ano.

É claro que, como já tinha sido comentando em um Pão de Cast passado, de todos os implementadores acima, somente o Google já permite que alguns de seus serviços sejam acessados com uma identificação externa, ou seja, funciona como um relying party que, afinal de contas é o motivo da história toda. Enquanto as empresas insistirem em somente fornecer o provimento de identidades, a confusão entre os potenciais usuários só aumentará.

Mesmo assim, o fato de que todas essas empresas estão procurando fazer parte de iniciativas de portabilidade já é uma enorme mudança que eventualmente vai representar o fim de muitos jardins fechados na Web.

Proceduralismo e MVC

January 28th, 2008 § 0 comments § permalink

Continuando minhas reflexões sobre novas possibilidades em paradigmas de desenvolvimento Web, eu comecei a pensar um pouco mais sobre a questão de fragmentação conceitual e como isso é possivelmente o maior problema com os frameworks atuais.

Fragmentação conceitual, no sentido que eu estou usando aqui, é a tentativa de quebrar um determinado domínio de problema em trechos de código gerenciáveis ao invés de tentar tratar o problema com um todo e resolvê-lo em termos do processo que o mesmo representa.

Isso me levou a pensar que a maioria dos frameworks atuais, ao tentar resolver essa questão, adota um faceta mais procedural. Isso pode ser visto até mesmo na organização das URLs que a aplicação expõe. Geralmente são direcionadas a um determinado objeto dentro do programa, a um método específico e dentro de certos parâmetros fixos. Raramente é feita uma tentativa de coordenar o estado entre múltiplas requisições e múltiplos objetos. O resultado final é que a aplicação é uma coleção de métodos fragmentados–daí o conceito–que não tem muita relação entre si além de pertenceram a um escopo comum.

Pensar nesse aspecto deixou claro para mim o que eu considero o maior problema com as implementações REST atuais: elas não são realmente orientadas a recursos como entidades completas que obedecem a um determinado protocolo de acesso e modificação. Antes, a maioria delas é usada como forma de mapear transições independentes entre diferentes estados de uma aplicação (ou um domínio de problema) sob uma capa de recursos. Mesmo frameworks que não usam REST acabam sofrendo de um problema similar.

Um dos motivos pelos quais eu gosto tanto de Seaside vem da sua heresia em dizer que REST é algo fundamentado em uma visão arcaica da Web que não tem muito a ver com as possibilidades atuais. Seaside, ao deixar REST de lado, adota a visão processual de uma aplicação–em contrapartida à visão procedural. A aplicação é vista com um todo, tendo estados específicos que são manipulados através de representações igualmente específicas. Isso não quer dizer que Seaside esteja absolutamente correto no que faz. É uma evolução, mas não o estado final.

A ressurgência de MVC nos frameworks atuais talvez tenha a maior parcela de culpa nesse fechamento. O surgimento de controllers em aplicações Web como um endpoint REST talvez não seja a melhor alternativa. Da mesma forma, limitar modelos como recursos é algo tão fundamentalmente incorreto que eu fico imaginando de onde teria vindo essa interpretação incorreta do que é MVC e REST–e simultaneamente.

Para finalizar, eu devo repetir que o que estou postando aqui são considerações sobre o meu próprio trabalho e sobre o que está norteando meu pensamento nesse momento. Eu posso–e devo–estar errado em muitas considerações e gostaria do feedback de leitores interessados nos mesmos assuntos.

DataPortability Workgroup e Microsoft

January 23rd, 2008 § 2 comments § permalink

Em mais uma surpresa relacionada ao DataPortability Workgroup, o Read/Write Web está reportando que agora foi a vez da Microsoft se juntar ao grupo. Nada formal ainda, mas um anúncio deve sair logo.

A adesão da Microsoft é a última em uma cadeia de pesos pesados que incluiu Google e Facebook inicialmente, seguiu com SixApart, LinkedIn e Flickr, e finalizando com um interesse geral no assunto.

Como o pessoal do Read/Write Web aponta, não dá para deixar de ficar curioso com o que a Microsoft pretende com sua entrada na iniciativa, considerando que a empresa é sinônimo de lock-in e práticas anti-competitivas.

Há também o fato que o OpenID é uma parte essencial do esforço de portabilidade, uma aceitação real por parte da Microsoft implicaria em pelo menos um suporte paralelo ao mesmo em sua estrutura Passport. Transformar cada idetidade Passport em uma identidade equivalente OpenID seria algo extremamente vantajoso para a conscientização e suporte geral de uma enorme fatia da população Web.

De qualquer forma, o momento em favor da adoção de padrões portáveis abertos está aumentando e mesmo que a Microsoft esteja se juntando ao barco somente para não perder o PR agregado, isso não implica que benefícios colaterais virão desse suporte. É claro que sempre há a possibilidade de que ela introduza algum “padrão” incompatível–o que não seria grande surpresa, inclusive–mas esperamos que a presença dos outros pesos da indústria tenha um fator mitigador em qualquer tentativa da empresa de gerar alguma vantagem para si subvertendo os esforços atuais.

Where Am I?

You are currently browsing the Web category at Superfície Reflexiva.