Vamos deixar a web mais rápida!

Posted by Rique Costa on June 25th, 2009

O Google liberou uma série de artigos do tipo howto explicando como aumentar a velocidade do seu website.

Acredito que fizeram isso para tentar “ensinar” a grande quantidade de pessoas que se utilizam de suas APIS.

Talvez isso já esteja indomodando, já que deve gerar uma lentidão absurda nos serviços do google.

Pensando (acredito eu) o google resolveu montar uma página de boas práticas para a programação de sites.

São diversos artigos como:

  1. Dicas de CSS, usando várioas declarações no CSS;
  2. Como funciona a compactação gzip;
  3. HTTP Caching;
  4. Melhorando a performance do seu website com Page Speed;
  5. Dicas de performance no PHP;
  6. Otimizando gráficos web;
  7. e muitos outros...

Clique aqui e veja todos os artigos!

Além desses artigos eu ainda recomendo o as extensões para o firefox: FireBug e também o WebDeveloper.

Aproveite!

Acesse já o site e vamos deixar a web mais rápida!

Programação poliglota

Posted by Rique Costa on June 19th, 2009

Li ontem um artigo chamado Polyglote Programming do Neal Ford, autor do “The Productive Programmer” comentado pelo Erich aqui no TecBlog.

Esse artigo, publicado numa antologia de artigos de funcionários da ThoughtWorks, fala sobre a necessidade de saber programar em várias linguagens não só para saber usar a linguagem mais apropriada para cada sistema mas também, dentro de um único sistema, saber usar a linguagem mais apropriada para a tarefa a ser resolvida.

De uma certa forma, o desenvolvimento de sistemas web já é poliglota, pois precisamos saber SQL, javascript, XML, HTML e alguma linguagem (Ruby, PHP, Java, etc.) para unir tudo. Mas a idéia do Neal Ford é ir além e usar as plataformas poliglotas (JVM, C#) para desenvolver cada pedaço de código com a linguagem mais apropriada para o que aquele pedaço de código precisa resolver.

Um exemplo que ele cita é a leitura de arquivos, que pode ser bastante trabalhosa em Java:

package com.nealford.polyglot.linenumbers;

import java.io.*;
import static java.lang.System.*;

public class LineNumbers {
  public LineNumbers(String path) {
    File file = new File(path);
    LineNumberReader reader = null;
    try {
      reader = new LineNumberReader(new FileReader(file));
      while (reader.ready()) {
        out.println(reader.getLineNumber() + ":"
          + reader.readLine());
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        reader.close();
      } catch (IOException ignored) {
      }
    }
  }

  public static void main(String[] args) {
    new LineNumbers(args[0]);
  }
}

Mas que em Groovy, que roda em JVM, ficaria:

def number=0
new File (args[0]).eachLine { line ->
  number++
  println "$number: $line"
}

Outro exemplo é um pedaço de código tirado do projeto Apache Commons para determinar em Java quando um string é vazio:

public static boolean isBlank(String str) {
  int strLen;
  if (str == null || (strLen = str.length()) == 0) {
    return true;
  }
  for (int i = 0; i < strLen; i++) {
    if ((Character.isWhitespace(str.charAt(i)) == false)) {
      return false;
    }
  }
  return true;
}

Usando Jruby teríamos:

class String
  def blank?
    empty? || strip.empty?
  end
end

E os testes para comprovar que está tudo certo:

require "test/unit"
require "blankness"

class BlankTest < Test::Unit::TestCase
  def test_blank
    assert "".blank?
    assert " ".blank?
    assert nil.to_s.blank?
    assert ! "x".blank?
  end
end

Outra dica que ele dá é usar uma linguagem funcional (Haskell, Scala, F#) para resolver a dificuldade que linguagens imperativas como Java e C# tem em lidar com threading:

class SafeArray{
  private final Object[] _arr;
  private final int _begin;
  private final int _len;
  public SafeArray(Object[] arr, int len){
    _arr = arr;
    _begin = begin;
    _len = len;
  }

  public Object at(int i){
    if(i < 0 || i >= _len){
      throw new ArrayIndexOutOfBoundsException(i);
    }
    return _arr[_begin + i];
  }
  public int getLength(){
    return _len;
  }
}

A mesma funcionalidade em Jaskell, a implementação de Haskell para JVM:

newSafeArray arr begin len = {
  length = len;
  at i = if i < begin || i >= len then
    throw $ ArrayIndexOutOfBoundsException.new[i]
  else
    arr[begin + i];
}

E o último exemplo do artigo compara construção de testes com JMock, para testar a interação entre uma classe Order com uma classe Warehouse:

package com.nealford.conf.jmock.warehouse;

import org.jmock.Mock;
import org.jmock.MockObjectTestCase;

public class OrderInteractionTester extends MockObjectTestCase {
  private static String TALISKER = "Talisker" ;

  public void testFillingRemovesInventoryIfInStock() {
    //setup - data
    Order order = new OrderImpl(TALISKER, 50);
    Mock warehouseMock = new Mock(Warehouse.class);

    //setup - expectations
    warehouseMock.expects(once()).method("hasInventory" )
      .with(eq(TALISKER),eq(50))
      .will(returnValue(true));
    warehouseMock.expects(once()).method("remove" )
      .with(eq(TALISKER), eq(50))
      .after("hasInventory" );

    //exercise
    order.fill((Warehouse) warehouseMock.proxy());

    //verify
    warehouseMock.verify();
    assertTrue(order.isFilled());
  }
}

E com JRuby:

require 'test/unit'
require 'rubygems'
require 'mocha'

require "java"
require "Warehouse.jar"
%w(OrderImpl Order Warehouse WarehouseImpl).each { |f|
  include_class "com.nealford.conf.jmock.warehouse.#{f}"
}

class OrderInteractionTest < Test::Unit::TestCase
  TALISKER = "Talisker"

  def test_filling_removes_inventory_if_in_stock
    order = OrderImpl.new(TALISKER, 50)
    warehouse = Warehouse.new
    warehouse.stubs(:hasInventory).with(TALISKER, 50).returns(true)
    warehouse.stubs(:remove).with(TALISKER, 50)
    order.fill(warehouse)
    assert order.is_filled
  end
end

Para terminar esse post, aqui vai um link para um vídeo do Neal Ford explicando o conceito de programação poliglota:

http://www.nofluffjuststuff.com/media.jsp?id=28

*Post retirado do blog Tecnologia da Internet da locaweb

Vem aí o Firefox 3.5

Posted by Rique Costa on June 10th, 2009

Rediscover the web

Fique ligado no lançamento…

Erro no SQL Server Management 2008 ao acessar base do SQL Server 2000

Posted by Rique Costa on June 9th, 2009

Já algum tempo que eu estava tendo esse problema, ao acessar uma base do SQL Server 2000 com o SQL Server Management 2008 dava este problema:

Falha ao recuperar dados para essa solicitação. (Microsoft.SqlServer.Management.Sdk.Sfc)
Server user ‘xyz’ is not a valid user in database ‘e-Pocurement_A’. (Microsoft SQL Server, Erro: 916)

Ocorreu uma exceção ao executar um lote ou uma instrução Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

The server principal “xz” is not able to access the database “kk” under the current security context. (.Net SqlClient Data Provider)

A Microsoft confirma o erro para outros produtos além do SQL Server Management 2008 listados abaixo

Outros softwares afetados:

  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Reporting Services

PS: Este problema também pode acontecer se não for um usuário do grupo Sysadmins.

Para solucionar o problema:

  1. Para contornar este problema, siga estes passos:
  2. Feche a mensagem de erro.
  3. Pressione F7 para abrir o painel de detalhes do Explorador do objeto .
  4. Clique os cabeçalhos da coluna com o botão direito do mouse e desmarque a coluna Agrupamento.
  5. Clique com o botão direito do mouse no nó de bases de dados e, em seguida, clique em Atualizar .

Agora tudo deverá voltar ao normal ;)

Acessibilidade na Web: Custo ou Benefício?

Posted by Adalberto on April 16th, 2009

A acessibilidade no desenvolvimento de sites não é uma concessão, um ato de boa vontade para com usuários com necessidades específicas: é uma visão estratégica e lucrativa.

Imagine o site de uma loja ou de um banco construídos sem a acessibilidade adequada: uma pessoa com deficiência ou com qualquer tipo de dificuldade de acesso – potenciais clientes – estarão automaticamente excluídos. E o que dizer dos sites de serviços públicos?

Esse vídeo de 12 minutos sobre a Acessibilidade Web, mostra algumas das principais barreiras de diversos sites e suas soluções. Ele foi produzido pela equipe do Acesso Digital e resume a idéia do que é acessibilidade na web. O grupo Acesso Digital é formado por consultores com diversas experiências de mercado, formação e de vida. Eles estudam, pesquisam e trabalham para melhorar o acesso à Tecnologia da Informação.

Observações importantes sobre o vídeo, de acordo com a equipe do Acesso Digital:

  1. Todos os exemplos mostrados no vídeo foram extraídos da experiência real. Ao selecionar os sites que seriam utilizados, foi levado em conta: a variedade dos problemas de acessibilidade; a clareza com que esses problemas poderiam ser apresentados; a diversidade dos sites (de serviços públicos, de empresas privadas, de compras, de notícias, de bancos, etc). Como a esmagadora maioria dos sites brasileiros tem sérios problemas de acessibilidade, a utilização de determinados sites não significa que estes sejam menos acessíveis do que outros, que poderiam também estar ali; significa apenas que as páginas escolhidas ofereciam melhores exemplos, na época em o vídeo foi gravado, além de serem, em sua maioria, sites muito visitados, os quais um significativo número de pessoas gostaria de poder acessar sem limitações.
  2. O vídeo possui legenda em português, para pessoas com surdez ou deficiência auditiva. Contudo, a equipe do Acesso Digital ainda não conseguiu colocar a Língua Brasileira de Sinais (LIBRAS). O preço do software que poderia fazer a tradução é muito alto, bem como o preço de um competente intérprete desta linguagem, além do custo da filmagem para poder colocar no canto da tela, conforme padrão.
  3. Também por motivos financeiros, o vídeo ainda não está contemplado com áudio-descrição. Algumas imagens não serão conhecidas pelas pessoas com deficiência visual. No entanto, não será difícil entender perfeitamente todo o conteúdo transmitido, pois as imagens são ilustrações do que está sendo falado.
  4. À medida que acontecia a pesquisa e consultoria a alguns especialistas no assunto, chegou-se à conclusão de que, até o presente momento, não existe nenhum trabalho semelhante disponível. Assim, para dar maior visibilidade ao tema, há o projeto de criar versões do vídeo noutras línguas, começando pelo inglês.
  5. Caso você tenha ou conheça alguma maneira de nos ajudar a concretizar algum dos projetos citados acima, quer seja através de patrocínio ou de trabalho voluntário qualificado, basta entrar em contato com o Acesso Digital!

jQuery Cheat Sheet

Posted by Rique Costa on April 7th, 2009

Uma coleçao de funcionalidades do jQuery, separadas por segmento, deixe de papel de parede do seu computador :)

Você sabia? 3.0

Posted by Rique Costa on April 4th, 2009

Sou fascinado por videos na internet, o youtube tornou a incrível capacidade do ser humano em se meter em encrencas (e ser filmado) mais acessível ao mundo. Talvez daí surgiu aquela frase da Intercon 2008: “A internet não deixa você mais idiota, só deixa a tua idiotice mais acessível aos outros”.

Acredito que essa seja a grande sacada da web 2.0. O poder do usuário em criar, marcar, comentar…

Pra entender melhor isso, o pessoal criou o video “The Machine is us” ou “A máquina somos nós”, depois disso ainda veio o “Super Mercado 2.0” e um video que está fazendo um grande sucesso é “Did you now? 3.0″ ou “Você sabia? 3.0″.

Bom, prefiro deixar que vocês avaliem o vídeo…

Se você gostou desse vidoes, ainda tenho mais uma dica, o video sobre “A visão dos estudantes” ou “The students vision“, este não achei a legenda.

Aplicações do orkut sumiram do profile

Posted by Rique Costa on March 25th, 2009

Se você faz aplicações para o opensocial deve estar se perguntando: Porquê a aplicação não aparece no perfil?
Eu também fiquei com a pulga atrás da orelha, mas fazendo contato com alguns desenvolvedores descobri que o Orkut bloqueou as aplicações para aparecer no no profile. Isso ocorreu pelo fato de muitos desenvolvedores estarem se aprovietando para fazer pishing.

Pishing… alguém faz pishing por acaso? rsrs

No Orkut Developer Blog fala sobre isso, mas é desde fevereiro… Disseram que vão verificar app por app para pegar quem faz abuso.  Rola um comentário que existe até uma white list…

Os apps mais populares devem voltar mais rápido com certeza, alguns até já voltaram.

Vamos ver o que vai dar.

Minha aplicação já está pronta, e a sua?

[ATUALIZADO]
Recebi um email de um desenvolvedor que disse que talvez, se você fizer sua aplicação com templates a chance dela entrar no perfil é maior, veja o anúncio no blog dos desenvolvedores (http://orkutdeveloper.blogspot.com/2009/03/using-templates-and-data-pipelining-for.html)

ImageSwitch efeitos incríveis com um código simples

Posted by Rique Costa on March 17th, 2009

O ImageSwitch é um plugin para o JQuery que faz efeitos de transições entre imagens com um código realmente muito simples!

página principal do plugin você pode testar todos os efeitos disponíveis e e nesta página você pode ver todos os exemplos.

Hieu Pham, autor do plugin, acatou a nossa idéia e disse que irá implementar um PreLoad() das imagens na próxima versão (deve sair amanhã), assim você não corre o risco de fazer o efeito sem a imagem ter sido carregada primeiro. Isso acontece muito, principalmente se a internet do usuário não for lá aquelas coisas…

Vale a pena conferir e fazer o download.

Lovely Charts – Diagramas on-line

Posted by Rique Costa on February 18th, 2009
Lovely Charts

Lovely Charts

Diversas vezes precisamos fazer diagramas para demonstrar um processo, uma hierarquia, redes e até mesmo site maps.

Pensando nisso, o site Lovely Charts (http://www.lovelycharts.com/) preparou uma excelente ferramenta para nos ajudar nessa tarefa.

Para fazer uso da ferramente é necessário um cadastro (totalmente gratuito).

Com o Lovely Charts é possível fazer on-line os diagramas do tipo:

  1. Flowcharts
  2. Network diagrams
  3. People diagrams
  4. Basic symbols
  5. Misc.
  6. Wireframes
  7. Site maps

Totalmente intuitivo, ainda é possível salvar o seu projeto e exportar para imagem (jpg ou png).

o Lovely Charts é uma excelente ferramenta e segue um conceito que vem crescendo nos últimos anos, os de aplicativos on-line, com uma aplicação rica em internet.

Bom proveito pessoal, será muito útil!


Copyright © 2007 AFL Sistemas. All rights reserved.