Mostrando postagens com marcador google. Mostrar todas as postagens
Mostrando postagens com marcador google. Mostrar todas as postagens

quarta-feira, 15 de setembro de 2010

Texto para colunas no Google Spreadsheets - Parte 1

Tenho utilizado com uma certa frequência o pacote de aplicativos de Escritório (Office) do Google, o famoso Google Docs. Os fatores que me fazem gostar do pacote são:
  1. centraliza meus documentos em um só lugar,
  2. me dá a possibilidade de compartilhar meus documentos com quantas pessoas eu quiser,
  3. permite que as pessoas com acesso aos documentos colaborem na sua confecção, etc.
Não sou um hard user de suites de Escritório. Utilizo apenas para fazer trabalhos da faculdade e escrever pequenos textos. Justamente por esse motivo algumas das limitaçãos do pacote não me incomodam tanto.

Esse final de semana resolvi adiantar os trabalhos da faculdade e utilizei o Docs quase sem nenhum problema. Sim vocês acabaram de ler "quase". Não tive problema nenhum quanto na confecção de documentos tipo Word, que no pacote Google são chamados apenas de Documentos. Porém em um exercicio de lógica resolvi fazer um uso um tanto quanto incomum das planilhas (SpredSheet) do Docs.

O exercicio consistia em utilizar a tabela ASCI para converter a cadeia abaixo de bits (zeros e uns) em uma frase intelegível por humanos.

01000101.01110011.01110100.01110101.01100100.01100001.01110010.00000000.01101100.10100010.01100111.01101001.01100011.01100001.00000000.10000010.00000000.01101100.01100101.01100111.01100001.01101100.0010000

Ah existiam N maneiras de escamotear esse exercício. Seriam poucas linhas em Perl. Em Python não precisaria nem de arquivo seria só utilizar o shell interativo. Ex:




Mas a maneira mais rápida "parecia" ser utilizar o uma planilha de Excel. Os passos seriam:
  1. Colar os bits na celula A1 do Excel.
  2. Utilizar a função texto para colunas para isolar cada segmento delimitado por ponto em uma coluna.
  3. Utilizar a formula =bin2dec(A1) na célula A2 ctrl+c ctrl+v nas outras colunas da linha 2
  4. Utilizar a formula =caract(A2) na célula A3 ctrl+c ctrl+v nas outras colunas da linha 3
Dessa forma teríamos a primeira linha com os binários, a segunda com suas representações decimais e a terceira com a conversão dos decimais para o ASCII.

Então eu leria a terceira linha e colaria na area de respostas da questão.

Simples e bem mais rápido do fazer 23 conversões de binário para decimal na munheca e depois consultar 23 vezes. É claro que fazendo 23 conversões e 23 consultas os objetivos pedagógicos seriam efetivamente alcançados, mas eu quero mais é que o meu P#@$ cresça.

Qual foi primeira dificuldade encontrada? Adivinha? Eu simplesmente não tinha Excel instalado na máquina. Pensei Excel de c# é r#l@ vou mandar o "Gato" utilizando a planilha do Docs. Fácil hein ! Vamos ao check:
  • Passo 1 - Colar o bagulho na coluna A1 - OK
  • Passo 2 - Texto para colunas - Eeeeepa!
Caraca cadê o função de texto para colunas nas planilhas dos Docs?
-Mãaaaaaaaaaae !!! Cadê a função de texto pra colunas do Docs!
Cri-cri-cri...(onomatopéia de grilo).

É senhores! Acreditem! Non Ecziste! E agora? Agora fu#eu. Minha abordagem foi invibializada no segundo passo. Mas como assim?... uma coisa básica e tão útil, um simples texto para colunas!

Agora é a hora de abrir a mente procurar caminhos alternativos. Quais são as opções?
  1. Copiar e colar cada um dos 23 dos segmentos de 8 bits em uma coluna e seguir para os seguintes passos.
  2. Substituir os <.> (pontos) que separam os segmentos de 8 bits por pois esse caracter a planilha reconhece automáticamente como delimitador já colaria cada segmento em uma coluna.
  3. Etc..
Enquanto analisava as alternativas, eu fuçava os menus pois não me conformava com não exitência de funcionalidade tão banal. Fuçando então encontrei dentro do menu Ferramentas o submenu Script. Aí minha cabeça explodiu. Descobri que era possível programar no Docs macros de maneira bem semelhante ao que se faz com Excel da Microsoft no Desktop. Não tive mais dúvidas. Vou criar minha própria função de texto pra colunas. Dessa vez eu entro para história.

Agora minha lista estava assim:
  1. Copiar e colar cada um dos 23 dos segmentos... solução trabalhosa mas que funcionará. Não quero.
  2. Substituir os <.> (pontos) que separam... solução mais rápida e inteligente e que funcionará . Não quero.
  3. Criar uma funcionalidade de texto para colunas na ferramanta... solução mais demorada com grande probabilidade de falhar ou ser abortada devido a dificuldade apresentada. - Minha campeã.
É camaradas, inconformado com a ausência da funcionalidade me embui do desafio e comecei a ler a documentção e a API de script do Docs.

Umas 3 horas depois a primeira versão da função TextoParaColunas estava pronta, e eu pude terminar meu trabalho utilizando ela. Mas apesar de funcional ela tinha algumas limitações:
  1. Funcionava apenas para uma linha, enquanto que a função original do excel funciona para quantas linhas forem selecionadas.
  2. O separadaor só poderia ser ponto pois estava hardcoded.
  3. Necessitava que o usuário entrasse no Script Manager para executar a função.
3 horas depois das 3 horas anteriores... todas as limitações estvam sanadas e agora realmente existia um "Texto para colunas" do qual eu poderia me orgulhar. Ficou tão jeitosinho que tomei até coragem para publicar o script na Script Galery, para que qualquer pessoa que sinta falta dessa funcionalidade possa inserir e utilizar em suas planilhas.

Aqui vai o caminho das pedras para quem quiser dar uma bisbilhotada no código ou simplesmente utilizar a funcionalidade.
  1. Abra o docs e crie uma nova planilha ou abra uma planilha existente.
  2. Na planilha já aberta acesse o menu ferramentas >> script >> inserir. Surgirá o Script Galery.
  3. Digite "Texto para colunas" na caixa de pesquisas e clique em pesquisar.
  4. Selecione o script que aparece com o meu e-mail: glauco.$%$ˆ@gmail.&ˆˆ) e clique em inserir.



Pronto está instalado. Deverá surgir um menu novo na sua Spredsheet chamado Dados.



A operação é bem simplificada em relação ao MS Excel, mas isso eu explicarei em outro post.

Espero que tenham gostado.

segunda-feira, 10 de novembro de 2008

Google StrikeBacks - Mais Dicas de pesquisa.

Estava eu brincando com as pesquisas do google "amodi" preparar mais uma dica "preste" blog quando o resultado foi tela a tela abaixo:
O texto diz:

Infelizmente...

... sua consulta é semelhante a solicitações automatizadas de um vírus de computador ou aplicativo spyware. Para proteger os nossos usuários, não podemos processar sua solicitação no momento.

Restauraremos o seu acesso o mais rápido possível. Tente novamente em breve. Enquanto isso, se você suspeita que seu computador ou que sua rede foi infectada, execute um verificador de vírus ou um programa de remoção de spyware para garantir que os seus sistemas não contêm vírus ou outros softwares falsos.

Se você estiver recebendo esse erro constantemente, talvez seja possível resolver o problema excluindo o cookie do Google e visitando novamente a página do Google. Para obter instruções específicas do navegador, consulte a central de suporte on-line do navegador.

Se a sua rede inteira estiver afetada, consulte a Central de Ajuda da Pesquisa na web do Google para obter mais informações.

Pedimos desculpa pela inconveniência e esperamos ver você novamente no Google.

O que eu estava fazendo ? Como vocês podem ver em detalhes aqui Bloqueio do Google. Clique para aumentar.

minha pesquisa constava do prefixo "filetype" seguido de : seguido da palavar "asp" seguido de "odbc error" entre aspas. Isso quer dizer que eu estou procurando a ocorrência da cadeia "odbc error" especificamente em páginas(arquivos) cuja extensão seja asp(.asp). Por exemplo experimente a pesquisa:

filetype:pdf "macarrão"
O google irá retornar para você a ocorrência da palavra macarrão especificamente em arquivos com a extensão pdf. É claro que você pode combinar essa técnica com outras que você já saiba e que esse tipo de pesquisa pode ser feita sem muito conhecimento apenas clicando-se na"pesquisa avançada". Veja como fica nossa última pesquisa fica na "pesquisa avançada" do google:

Print da pesquisa avançada. Clique para aumentar.

Agora você quer saber porque o danado me impediu de ficar consultando? Eu explico a pesquisa que eu estava fazendo estava procurando por erros odbc em páginas asp. Esses tipos de erros geralmente expõe informações que geralmente os donos das páginas não gostariam que os hackers ficassem sabendo como por exemplo o nome das tabelas do seu sistema. Então os hackers utilizavam esse tipo de consulta para obter esse tipo de informação que aliada aos seus outros conhecimentos hackers podem causar prejuízos que variam de uma simples dor de cabeça a alguns milhões de dolares. Portanto o famigerado sitema de busca me convidou gentilmente a preencher uma "captcha" para que eu possa provar que eu sou humano e não um bot ou vírus infectando alguma máquina querendo extrair informações maliciosas da base de dados deles.

Bem diplomático esse Gugu não é ?

quarta-feira, 5 de novembro de 2008

Quer saber qual página têm link para a sua no Google?

Vou começar hoje uma série de dicas sobre o Google. Serão dicas gerais sobre como otimizar suas pesquisas e como melhor utilizar as ferramentas desse ótimo motor de busca.

Imagine digitar uma url, a do seu blog por exemplo, na caixa de pesquisa do Google e ter como resposta todos as página que contém um link para a sua página ? Imaginou ? Você pode realmente fazer isso e por sinal é muito fácil. Vou mostrar como.

Eu quero saber por exemplo como anda a popularidade do site de cestas do meu primo. Basta eu digitar na caixa de pesquisa do Google:
link:http://www.tricyacestas.com.br
E pronto o Google retorna todos os sites de sua base de dados que tem um link para o site do meu primo. Mas essa é só uma maneira mais simplificada de se alcançar esse resultado outra maneira seria clicar em "pesquisa avançada" e na área "Pesquisar por página específica" preencher o campo Links

Bom o site do meu primo anda meio caidinho mas não vou deixar de fazer o jabazinho dele aqui. É um execelente site de cestas de café da manhã para diversas ocasiões e atende a Região do Grande Rio.