Visualizor de DANFE

Posted by Rique Costa on October 15th, 2011

Olá pessoal,

Como vocês sabem nos últimos tempos eu vinha me dedicando a um projeto solo que lancei recentemente chamado Imprimir Danfe http://www.imprimirdanfe.com.br.
O Imprimir Danfe tem como objetivo fazer com que seja possível a visualização do xml da DANFE, já que isso se torna uma tarefa muito difícil se não tivermos alguma interface para nos ajudar. O Imprimir Danfe exporta o arquivo XML da NFe (Nota Fiscal Eletrônica) para PDF, JPG e até HTML sendo assim o usuário poderá ver com mais facilidade o seu xml.

Estou recebendo sugestões sobre funcionalidades deste projeto, portanto se vocês tiverem alguma crítica ou sugestão acessem o site http://www.imprimirdanfe.com.br e depois o menu Sugestões.

Desde já agradeço a todas as pessoas que me apoiaram com o projeto, obrigado pessoal!

Alterar o idioma UI do Visual Studio

Posted by Rique Costa on February 9th, 2010

VisualStudioLogoA algum tempo instalei uma nova versão do SQL Server na minha máquina, essa versão é em português e acabou deixando o meu Visual Studio também em português. É até legal no começo, mas depois pode ser que você queira mudar isso e voltar para o inglês, então, vamos lá:

  1. Clique para mostrar todas as configurações;
  2. No menu Ferramentas, clique em Opções;
  3. Na caixa de diálogo Opções, expanda Environment e clique em Configurações Internacionais;
  4. Na lista suspensa Linguagem, selecione o idioma que você pretende usar para o texto da UI do ambiente de desenvolvimento.

Pronto ;)

Você já conhece o Yahoo Query Language?

Posted by Rique Costa on November 23rd, 2009

yql128O YQL é uma API da Yahoo, que quer dizer Yahoo Query Language.

Essa poderosa API tem o objetivo de facilitar a vida dos desenvolvedores, a grande vantagem é poder encontrar muitas APIs em forma de open data table num lugar só (convergência), de um jeito simples de usar.

A linguagem é basicamente SQL Language, sim, você poderá selecionar os dados a partir de uma simples select, ou combinando com subselects, cross e etc! Incrível!

Você pode por exemplo selecionar os títulos de notícias do site da CNN e trazêlos já traduzidos para o português, numa única select. Pra isso você terá de combinar 2 Selects, uma com a API da CNN e outra com a API do google translator. Você também pode ainda, filtrar as notícias por categoria ou alguma palavra chave.

O YQL aceita Selects, Inserts, Deletes e Updates.

Tudo começa pelo console YQL, lá você poderá executar e testar todos os seus SQLs. Você escolhe o seu tipo de retorno, pode ser um XML ou JSON.

Exemplos:

Para inserir um novo tweet pelo YQL basta fazer:
insert into twitter.status (status,username,password) values (”Playing with INSERT, UPDATE and DELETE in YQL”,     “twitterusername”,”twitterpassword”)

Para buscar a timeline de um usuário no twitter faça:
select * from twitter.user.timeline where id=’riquecosta’

No próprio console do YQL é possível capturar a URL REsT da query.

O exemplo abaixo mostra como deve ser feito para buscar e exibir no html a timeline de um usuário no twitter, clique aqui pra ver o exemplo online ou clique aqui pra fazer o download.

As open data tables fazem parte de um projeto (http://www.datatables.org/), o YQL já possui diversas open data tables próprias e ainda outras data tables feitas pela própria comunidade YQL.

Mas, você pode precisar de uma data table que ainda não existe, então, você poderá fazer a sua ;)

Não sei se a americanas.com disponibiliza uma API para realizar busca em seu site, mas, vamos fazer a nossa própria para poder fazer buscas lá

Sabemos que site da americanas.com a busca é feita através da da URL http://www.americanas.com.br/busca/palavra_chave

Então, fazemos com que o YQL busque o documento HTML:
select * from html where url=”http://www.americanas.com.br/busca/corinthians”

Agora, você precisará identificar onde esses resultados aparecem nos elementos HTML, como na imagem abaixo:

Path

Copie o Xpath através do firebug, em seguida coloque no console e faça o teste!

Você terá uma query parecida com essa:
select * from html where url=”http://www.americanas.com.br/busca/corinthians” and xpath=’//*[@class="searchResultList"]‘

console

Aí é só correr pro abraço, você terá o resultado da pesquisa serializado em XML ou JSON, veja a demonstração on-line aqui ou faça o download do arquivo aqui.

Saiba mais sobre o YQL na página aqui

Palestra na Unimar

Posted by Rique Costa on November 19th, 2009
Adriano Nakamura, Beto, Rique e Júlio

Adriano Nakamura, Beto, Rique e Júlio

Ontem fizemos uma palestra na Unimar, em Marília, falando sobre algumas tendências web.

No início falamos um pouco da história da web e dividimos em 4 ciclos, passamos um pouco mais a fundo sobre alguns conceitos da web 2.0 e em seguida falamos sobre as tendências.

.

.

.

Falamos basicamente de 7 tendências web:

  1. Linked Data ou Dados estruturados;
  2. Web em tempo real;
  3. Personalização e recomendação;
  4. Realidade aumentada;
  5. Web móvel
  6. Internet das coisas;
  7. Cloud Computing.

Devido a falta de internet no local da palestra nós não conseguimos apresentar o site que oferece a experiência de realidade aumentada, portanto se você tem webcam experimente entrar neste site (http://www.weareautobots.com/ww/index.php) é sensacional!

Também falamos um pouco sobre o mercado de trabalho para os desenvolvedores web.

Você também pode ver os videos que colocamos na palestra:

  1. A máquina somos nós;
  2. Aplicativo brasileiro de realidade aumentada;
  3. Realidade aumentada;
  4. Você sabia?

No final,  ainda sorteamos alguns brindes para a platéia que respondesse corretamente as perguntas.

Foram 3 felizardos ;)

Desde ja agradecemos a toda a platéia presente e principalemente aos feedbacks que estamos tendo pelo twitter e por email.

Obrigado pessoal, abaixo segue a palestra

Microsoft Tech Day 2009 – Piracicaba

Posted by Rique Costa on July 2nd, 2009

Sábado dia (27/06/2009) fomos até Piracicaba para participar do MS Tech Day.

O evento tinha uma grade muito interessante quando nos inscrevemos, mas ao longo do tempo a grade foi sendo alterada, sem haver qualquer notificação no site. Ficamos sabendo das alterações somente na apresentação das palestras.

Algumas palestras foram alteradas, outras excluídas e outras simplesmente jogadas ao vento. Logo no começo do evento alguém pegou o microfone e já avisou que poderiam ocorrer falhas (neste momento eles ja tinham falhado mas ninguém sabia ainda).

Logo no credenciamento recebia-se a instrução para que quem fosse participar das palestras de desenvolvimento deveria ficar na sala vermelha. Se fosse participar das palestras sobre infra deveria ir pra sala verde.

Algumas pessoas da sala verde reclamaram bastante, pois as palestras da parte da manhã só aconteceram na sala Vermelha, e na sala verde recebiam um streaming de audio/video. Reclamaram pois a qualidade do video não era das melhores.

Depois da apresentação do modelo do evento alguns palestrantes tiveram que “rebolar” para entreter a platéia por aproximadamente 20 minutos, pois o coffe break (?) ainda não estava pronto.

Após o coffe break tivemos uma palestra sobre a plataforma Azure, o palestrante dominava o assunto e a palestra foi boa. Logo em seguida nos foi apresentado alguns métodos de desenvolvimento com o VS2010 para Azure.

Após essa palestra teve um intervalo para o almoço, quando voltamos já estava rolando a palestra sobre o Project. Essa palestra também foi legal, porém muito rápida! Muitos palestrantes reclamaram de tempo, porém o evento acabou bem antes da programação que estava no site.

Alguns palestrantes tiveram que “cobrir buracos”, já que alguns palestrantes convidados simplesmente não foram ao evento. A palestra sobre Ajax e JQuery não existiu. Teve uma pequena demonstração do VS2010 e uma introdução sobre o Team Foundation. Além disso ainda teve uma palestra de um fabricante de painéis para o VS.

Depois do coffe break da tarde o volume de pessoas caiu drasticamente.

Resumindo: O evento foi realmente muito mal organizado. Das palestras que aconteceram tivemos muitas ruins e só algumas boas, isso do ponto de vista de desenvolvimento. Os brindes sorteados foram excelentes! Sorteram um SQL Server 2008, VS 2005, Team Foundation, Camisetas, bonés entre outros…

Alguns comentários sobre o Evento:

“Muito desorganizado em relação a horários e grades.
Conteúdo das palestras muito fraco e superficial.
Deu a impressão que alguns palestrantes estavam brincando.”
Daniel Buona

Organização fraca e conteúdo pobre na maioria das palestras
Luiz Henrique Rocha e Costa

Este foi o 1º evento MS Techday realizado pelos organizadores de Piracicaba, por esse motivo ocorreram diversos problemas neste âmbito, que prejudicaram muito as palestras de desenvolvimento.

Nas palestras de desenvolvimento faltaram 2 palestrantes, como eram 4 palestras, isso contribuiu muito para o evento deixar a desejar. Além disso a palestra sobre MS Project foi prejudicada pelo fato de não disponibilizarem acesso à internet.

O que foi valido, pelo que conversei com todos, foram as palestras de infra-estrutura (só o Rafa participou) e as palestras sobre Cloud Computing (computação nas nuvens) e Windows Azure (SO para gerenciamento do Cloud Computing), que participamos.

Com isso foi agregado conteúdo sobre novas tecnologias como Windows 7 e Server 2008, em infra, e desenvolvimento em Cloud Computing e a estrutura/funcionamento do Windows Azure.
Beto Lima

Veja um video sobre uma palestra de infra (O pessoal disse que foi bem interessante) :
<a href="http://video.msn.com/?mkt=en-us&#038;playlist=videoByUuids:uuids:0426b37b-50e7-4d76-8cd9-b91fff3078b2&#038;showPlaylist=true" onclick="javascript:pageTracker._trackPageview('/outbound/article/video.msn.com');" target="_new" title="Microsoft TechDay 2009">Video: Microsoft TechDay 2009</a>
.

Você também estava lá? Deixe um comentários e conte-nos o que achou.

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!

Copyright © 2007 AFL Sistemas. All rights reserved.