Todos os post de seiti

Wodpress Logo

WordPress 3.0

Atualizei o site para o WordPress 3.0, em PT-BR e, como sempre, sem problemas! E junto vem o novo tema default Twenty Ten, que finalmente substitui o tema anterior, Kubrick.

E não é só para dar um tapa no visual, o novo tema mostra os novos recursos do WordPress, como podemos ver no vídeo.

Acho que está na hora de trocar a cara do site (se bem que, com o Google Reader e demais leitores de feeds, ninguém mais visita blogs)

butler

Erro no deploy automático: Hudson versus MSBuild

Usamos o excelente Hudson como servidor de integração contínua, junto do plugin MSBuild.

O fiel mordomo

Mas estes dias criei um projeto no Hudson, referente à uma solução já no framework .NET v4, escrita no Visual Studio 2010 (v10).

O primeiro passo foi entrar nas configurações do Hudson e criar outra entrada para o plugin MSBuild, apontando para a versão 4 do mesmo. Basta ir para Gerenciar HudsonConfigurar SistemaMSBuild e incluir:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

Feito isto, configurei o novo projeto para usar esta nova entrada do MSBuild. E o projeto falhou na construção com a seguinte mensagem:

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

O jeito foi atender a demanda: criei as respectivas pastas e copiei o arquivo do meu micro para o servidor. Pronto. Agora só resta resolver alguns pepinos com assemblies

Update: parece que preciso instalar ou o Visual Studio 2010 ou o Windows 7 SDK  no servidor em questão. Mas ocorrem dois problemas: (1) o VS2010 é caro e (2) o SDK ainda não saiu. O jeito é aguardar meados de junho.

Apps favoritos no Milestone

Logo que consegui meu Motorola Milestone publiquei um post com os apps mais interessantes que encontrei. Passado quase 5 meses com o aparelho, e já com o Android 2.1 nos circuitos, é hora de mais uma lista!

Permaneço fie à alguns apps, como o APNDroid, NetCounter, MotoID,  Nesoid e o SNesoid. Mas muita coisa mudou.  O Twidroid eu deixei de lado pelo Seesmic, que também foi deixado de lado.  O wpToGo foi descontinuado, com o programador sendo contratado pela própria WordPress. O site da Wikipédia se tornou um exemplo de site projetado para browsers de dispositivos móveis, tornando o Wapedia quase obsoleto.

twitter para Android

É o cliente oficial do twitter, para Android. Possui uma excelente integração com o resto do sistema. Embora o Seesmic também seja excelente e venha com um bom widget, o twitter oficial será páreo duro. Só precisa de um tema com mais culhões.

EStrongs File Explorer

Um gerenciador de arquivos. Permite que você copie, cole, apague e abra tudo que estiver em seu SD, numa rede local ou até num ftp.

EStrongs Task Manager

Gerenciado de tarefas que as apresenta de uma maneira mais clara que o do próprio Android.

Super Mario Sounds & Ringtones

Este aqui baixei para poder personalizar as notificações. Ao receber um SMS ouço o som de um cogumelo verde.

Evernote

Um caderno de notas. Eu uso para visualizar as notas que guardo. Para criar as notas eu so o  email mesmo. É mais prático. Mas o app é bom para guardar fotos com comentários. Bem útil para levar nas lojas e mercados, para comparar os preços em outros lugares.

Para subir imagens no Flickr e notas no Evernote, como comentei acima, uso o bom e velho email (ou Gmail).

Dropbox

Dropbox. Em seu bolso.

Raging Thunder 2 Lite

Algo que sinto falta no Android são jogos bons. Que tenham produção caprichada, música e gráficos idem. Este jogo, apesar de ser uma versão light, atende a estes quesitos.  Finalmente um jogo que usa o poder do Milestone.  Muito bacana para jogar no metrô ou na fila.

MotoTorch LED

Finalmente uma lanterna útil. Diferente dos outros apps flashlight, este aqui não usa a tela do aparelho. Ele usa o flash LED, o mesmo da câmera. Ilumina bem mais, além de ser mais direcionável. E ainda vem com um widget para facilitar o uso. Uma mão na roda para quando falta luz.

Web Deployment Project e o Visual Studio 2008

O Web Deployment Project é uma extensão do Visual Studio 2008 que permite a prévia compilação de páginas e controles de uma aplicação web. Assim podemos detectar se determinada página apresentará erro antes de algum usuário visitar a página em questão.

A parte chata é que isto impossbilita a edição das páginas e controles à quente, direto no servidor. Opa, na verdade esta é parte boa.

Após instalar basta clicar com o botão direito sobre o seu projeto no Visual Studio que surgirá uma opção Add Web Deployment Project…. Clicando nesta opção o projeto deveria ser criado. Deveria. Ao menos aqui no Windows 7 não funciona.

Um erro surge dizendo, entre outras coisas: Unable to create the project file.

Como solucionar? Você deve rodar o Visual Studio como Administrador. Simples assim.

Login failed for user ‘NT AUTHORITY\NETWORK SERVICE’

Acabou de instalar o SQL Server? Surgiu um dos seguintes erros?

Login failed for user ‘NT AUTHORITY\NETWORK SERVICE’

ou

Falha no login ‘AUTORIDADE NT\SERVIÇO DE REDE’

Não se preocupe. Execute o seguinte no banco de dados master no SQL Server:

sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'

ou

sp_grantlogin 'AUTORIDADE NT\SERVIÇO DE REDE'

Pronto, sua aplicação conversará com seu banco de dados.

Impressora Epson TX600FW

A  Epson TX600FW é uma multifuncional de rede, direcionada ao mercado SOHO – escritórios pequenos ou em casa -  oferecendo interfaces tanto ethernet quanto Wi-Fi. Isto significa independência de um computador conectado e ligado.  Para quem tem em sua casa mais de um computador, significa comodidade e facilidade de uso. Mas infelizmente facilidade de uso não é igual a facilidade na instalação.

Epson TX600FW

Windows Vista

Com o CD de instalação que acompanha o produto só consegui identificar e configurar a impressora na rede. A instalação final da impressora no próprio Windows Vista não deu muito certo, sempre falhando ao final, acusando falta de drivers. O jeito foi baixar o pacote com os drivers mais recentes:

Drivers para Windows e Mac OS

Mas ao instalar não havia a opção TCP/IP ou Rede nas portas disponíveis. O que fiz foi escolher o USB e proceder com a instalação. Após instalado, acessei as propriedades da impressora, na guia portas, e adicionei uma porta do tipo TCP/IP, apontando para o endereço 192.168.1.4. Este IP é o da impressora, que eu mesmo verifiquei através do roteador.

Após este procedimento a impressora finalmente ficou disponível para uso no Windows Vista.

Quanto ao scanner, instalei os drivers obtidos no link acima. Mas o software de digitalização da EPSON simplesmente não funcionou. Achei que era por falta de configuração e entrei no Definições EPSON Scan. Aha! Precisava mesmo configurar o IP da multifuncional. Mas  mesmo após identificá-lo, o EPSON Scan dava pau. Bom, ainda bem que existe o GIMP, que consegue digitalizar facilmente usando a TX600FW. Quer dizer que os drivers estão ok, mas o software de digitalizaçao da EPSON não.

Windows 7

No mesmo link indicado acima existem os drivers para Windows 7. Ou então acesse este: http://www.suporte-epson.com.br.
Usando o Firefox eu não consegui baixar o arquivo de primeira. Analisando o código fonte do popup dá pra ver que o culpado é um javascript sem vergonha. Assim montei na mão mesmo a URL para o arquivo. Ou use o IE.

O link para o arquivo é bem lento e propenso a interrupções. Mas com paciência consegue-se o driver.

Ubuntu

Num primeiro momento eu ia baixar e instalar os drivers do site da Avasys: drivers para Linux (Ubuntu e cia.). Mas infelizmente não existem os drivers para a arquitetura 64bits lá no site.

Mas então me ocorreu tentar instalar a impressora sem o uso de drivers externos. Bom, o Ubuntu deu conta do recado. Identificou, configurou e adicionou a impressora em dois cliques. E dizem que Windows é que é simples de usar! Bah.

O scanner ainda não configurei, mas posso adiantar que só instalar o pacote do site Avasys não é suficiente. As instruções que consegui nos fóruns do Ubuntu são:

- instalar os driver da Avasys;

- instalar o plugin do sane iscan-network-nt;

- editar o arquivo /etc/sane.d/dll.conf, certificando-se de comentar as linhas epson e epson2 e incluir o epkowa;

- editar o arquivo /etc/sane.d/epkowa.conf incluindo a linha net 192.168.1.4 (troque pelo IP da tua máquina).

(ok, ok, o Windows é que é fácil de usar…)

Se alguém conseguir, é só dizer aí embaixo!

Sem computador

A Epson TX600FW ainda digitaliza imagens e guarda automaticamente em um cartão de memória inserido nela, dispensando o uso de um computador. Uma pasta chamada EPSCAN é criada e uma outra pasta numerada dentro dela, contendo a imagem digitalizada.

Guia EPSON

Imagem digitalizada direto para o cartão de memória

Só faltou criar um PDF, mas para isto ela precisa de um computador.

Outras funções que não necessitam de um computador são de cópia de documentos – ou “xerox”, impressão de fotos a partir do cartão de memória e os serviços de fax  (que nem se funcionam, pois uso VoIP. Aliás usar FAX sobre uma linha de telefone criada em cima de uma conexão de internet usando pacotes TCP/IP em cima de uma infraestrutura de cabos coaxiais me lembra uma massa folhada…). Um dia ainda testo isso.

Linked Server: consultando o PostGreSQL através do MS SQL Server

Antes de tudo é necessário instalar os drivers ODBC do PostGreSQL no servidor em que se encontra o MS SQL Server.

Depois registre um System DSN, ou Fonte de Dados do Sistema. Para isto basta se encaminhar para:

Painel de Controle → Ferramentas Administrativas → Fontes de Dados ODBC.

Basta preencher as caixinhas e depois testar. Com a conexão funcionando,  agora é hora de se criar um Linked Server entre o MS SQL Server e o PostGreSQL.

EXEC master.dbo.sp_droplinkedsrvlogin
          @rmtsrvname=N'LINKEDSERVERNAME'
	, @locallogin=NULL

EXEC master.dbo.sp_dropserver
	  @server = 'LINKEDSERVERNAME'

EXEC master.dbo.sp_addlinkedserver
	  @server = 'LINKEDSERVERNAME'
	, @provider = 'Postgresql OLE DB'
	, @datasrc = 'Postgresql ANSI'

EXEC master.dbo.sp_addlinkedsrvlogin
	  @rmtsrvname=N'LINKEDSERVERNAME'
	, @useself=N'False'
	, @locallogin=NULL
	, @rmtuser='usuariopostgres'
	, @rmtpassword='senhapostgres'

Agora você pode fazer consultas assim:

SELECT * FROM openquery(LINKEDSERVERNAME, 'SELECT * FROM TABELADOPOSTGRES')

Funções Geoespaciais do MS SQL Server 2008

O MS SQL Server 2008 (MSSQL) possui um tipo próprio para guardar geometrias: geometry (tem um geography também, mais útil para representar feições mais extensas).

E ainda implementa os métodos definidos pela OGC.

Isto possibilita operações CRUD sobre o dados georreferenciados, diretamente através de comandos SQL.

Os métodos estáticos, acessíveis através de geometry::NomeDoMétodo(),  são:

E os métodos do objeto geometry:

Estes métodos podem ser chamados da seguinte forma, por exemplo:


SELECT coluna1.STArea() FROM tabela

onde coluna1 é do tipo geometry.

Lua de Mel em Natal – Rio Grande no Norte

Em uma de minhas poucas viagens para fora de SP, fui conhecer em lua de mel, com minha querida esposa,  Natal  – RN.

A cidade possui praias lindas. Mesmo quem, como eu, não costuma mergulhar ou se banhar nas àguas do mar, não se cansa de admirar o visual. Areias claras contrastando com o um mar esverdeado brilhante,  com o céu azul  e límpido. Parecia que havia um photoshop em ação sobre minha visão.

Divi-Divi

Adeus, dividivi

Bar e psicina do Divi-Divi

Ficamos no hotel Divi-Divi, que apesar de pequeno, tinha o quarto e banheiros bem grandes. Duas piscinas — uma delas é aí na foto — e um jardim pequeno, mas bem colorido, cercando o bar.

Ponta Negra

Morro do careca

Vista para o Morro do Careca

O hotel fica na praia de Ponta-Negra, que me parece ser a porta de entrada para os turistas. Possui vários hotéis, pousadas, restaurantes, bares.

É nela que se encontra um dos cartões postais de Natal: o Morro do Careca. Antigamente faziam o ski-bunda para descer pelo morro, mas hoje a prática é proibida, mesmo subir o morro é proibido. Parece que a movimentação estava destruindo o morro, com a areia toda descendo morro abaixo.

A praia é bem urbanizada, tendo pela orla um calçadão correndo ao lado da rua. Durante a noite ela é bem iluminada, cheia de casais sentados nos bancos,  se pegando namorando. Apesar de alertas dos guias locais quanto à segurança e tudo mais, achei a praia bem calma para passear durante a noite. E anoitece bem rápido por lá: às 18 horas o céu já está escuro.

Durante o dia vários quiosques, restaurantes, bares e ambulantes.  Mas com a citada urbanização surgem os problemas que te impedem de relaxar.  A todo momento alguém te oferece alguma coisa, pede dinheiro, e, o pior e mais irritante,  os carrinhos de som . Estes carrinhos são empurrados pela areia, tocando invariavelmente alguma música que você não suporta, em um volume que você não agüenta. E existem VÁRIOS deles. Em um dia em que fui aproveitar a praia durante o dia, estacionaram uns três carrinhos logo ao lado, tocando algo que ainda escuto em meus pesadelos. Ok, forcei a barra, mas era duro de agüentar.

Outro problema era andar pelo calçadão. Deve-se tomar cuidado para não ser atropelado por ciclistas e motociclistas que correm entre os pedestres. Quase me levaram o braço. E, pelo que percebi, geralmente os motociclistas são entregadores, levando produtos para os quiosques e quase atropelando seus clientes.

Pensando bem, parecia uma praia de SP, mas com um visual lindo e águas limpas. Bom, mas se quiser sossego o jeito é ir para as outras praias da cidade.

Passeios

As agências oferecem vários passeios. Eu não fiz todos, na verdade não fechei quase nenhum pacote. Mas um que fechei e recomendo é o passeio de buggy. O buggy te leva desde a porta do hotel até a praia de Muriú (se não me engano), passando pela Via Costeira, pelo parque das Dunas e outras praias do litoral norte.

Em meio às Dunas tinham até dromedários, que podem ser montados caso você se disponha a gastar R$30 reais (nem só o mar é salgado). Muitos turistas se contentam em tirar fotos.

Outro passeio foi o City Tour, que passa pelo centro histórico da cidade e depois vai em visita ao maior cajueiro do mundo, uma anomalia genética que se estenderá por todo o planeta, ao lado da praia de Pirangi. Na praia fica a marina Badauê, que oferce passeio de barco e mergulho em piscinas naturais.

Na praia optei por não comer no resturante da marina, querendo experimentar o peixe preparado numa barraca na praia. O peixe estava bom, acompanhado de arroz e fritas.

Aliás, uma das coisas que mais fiz por lá foi comer. Comer camarão. Natal é a capital do camarão, sendo a principal exportadora do crustáceo no país – a “plantação” de camarões é chamada carcinicultura. E, comparando com São Paulo, o camarão lá é barato e sempre fresco. Para quem adora, como eu, dá para aproveitar para comer todo dia.

Outro passeio que eu queria experimentar era de ver  o pôr do Sol em João Pessoa, ao som do bolero de Ravel. Opa, João Pessoa? Também achei estranho que um dos passeios mais oferecidos na região fosse de ir para a capital do estado vizinho. Deve ser bacana mesmo! Mas eu não quis fechar pacote (economizar para comer camarão!) e pegamos um dia para alugar um carro e ir pro litoral Sul.

Passamos primeiro na praia de  Tibau do Sul. Lá um garoto, um dos guias mirins da região, se ofereceu para nos levar para a praia de Pipa.  Aliás, este garoto contava umas histórias muito curiosas. Ao chegar na gente, ele disse ser amigo do Sérgio, da locadora em que alugamos o carro.  Super simpático, disse que às vezes passeava com o Sérgio e tudo mais.  Após darmos uma volta pela praia e tomar uma água de coco, aceitamos a oferta e pegamos o carro e o garoto em direção à praia de Cacimbinha e Ponta da Madeira.

Não lembro bem em qual delas é preciso descer uma escadaria de madeira. Deve ser a Ponta da Madeira, acho. Só sei que se não fosse o garoto eu teria passado direto por esta praia. E perdido a bela paisagem.  A entrada é direto pela estrada, por um portão estreito em um muro. Estranho, mas verdade. Tiramos fotos, demos outra volta, olhamos de longe a Praia do Amor e  rumamos para Pipa, afinal, teríamos de estar em João Pessoa antes do anoitecer.  E na viagem a gente ia conversando, e o menino disse saber falar várias línguas, por conta do bico de guia. Até já tinha tinha ido para a Suíça para a casa da tia. Mas lá era chato e ele preferia o Brasil.

Chegamos a última praia em nosso roteiro. Todas as praias são lindas, e Pipa não é exceção. Mas Pipa é mais badalada, tem um cidadezinha antes da praia que se parece com um vilarejo rústico. E é um vilarejo rústico, a não ser por várias lojas de moda praia, decoração presentes etc, que se encontram por lá, além de restaurantes e café, que pareciam bem caros.

Bom, demos uma volta, tiramos umas fotos, cortei a sola do pé nas pedras da praia, comemos alguns pastéis, largamos o garoto na saída da cidade e zarpamos para Paraíba. Pelo caminho ainda acompanhamos a orla de algumas praias, uma mais linda que a outra. Durante a viagem a gente ia acompanhando o sol já descendo no horizonte… Será que vai dar tempo?

Rumo a Paraíba

Seguindo placas finalmente chegamos em João Pessoa. Restava achar o pôr do Sol. A informação que tínhamos era que existia, em João Pessoa, um pôr do Sol ao som do bolero de Ravel. Onde? Paramos num posto e perguntamos ao frentista:

- Onde a gente consegue ver o pôr do Sol ao som do bolero de Ravel?

E ele responde de bate pronto:

- Em Cabedelo, é só seguir adiante e ir vendo as placas.

Parecia um diálogo cifrado do Agente 86…

E com Sol já meio baixo, rumamos para Cabedelo. Chegando em Cabedelo me lembrei de um tal de praia do Jacaré, onde ficava o pôr do Sol. E fizemos um retorno seguindo para a praia do Jacaré. Chegamos! Uns 15 minutos antes do Sol ir embora. E o mistério de ver o pôr do Sol na praia, no Brasil, foi desvendado. A gente assistiu o Sol se pondo na margem oposta do Rio Jacaré.  Com o Jurandy do Sax tocando o bolero de Ravel, com a última nota sendo lançada no momento do último brilho do Sol.  Espetacular!

Pôr do Sol na praia do Jacaré

Pôr do Sol na praia do Jacaré

Depois da epopéia de um dia, voltamos para descansar em Natal. No dia seguinte devolvemos o carro e descobrimos que o garoto, guia mirim, era paieiro. Não conhecia Sérgio nenhum e que na verdade todos os guias mirins da cidade conheciam de cor os carros de locadoras, inclusive sabendo a placa e de que locadora era, inclusive o nome das pessoas responsáveis pelas locadoras. o.O

E a história de vários idiomas e ter ido para a Suíca? Mistério…

Restaurantes

Comer é viver, e vice-versa. Então relaciono os lugares em que comi:

  • Camarões e Camarões – Potiguar – EXCELENTE:  ótimos restaurantes,  comida muito boa, assim como o atendimento. O preço é razoável, mas pensando num restaurante do mesmo nível em  Sampa, fica barato. Se puder comer fora apenas uma vez quando estiver na cidade, coma em algum deles. Mas escolha mesa para não-fumante. A proibição só existe em São Paulo!
  • O Peixe -  BOM: prato bom e bem servido por um preço camarada. Fica ao lado do restaurante Camarões. Muito bom para comer camarão no almoço sem esvaziar (muito) a carteira. Encher a barriga de camarão ficou em torno de 30 ~40 reais para o casal.
  • Taiyo -BOM: comida japonesa, passei lá para jantar e comer um teppan de, adivinhe. Isso, camarão. Muito boa comida e os donos são excelentes pessoas, daquelas de passar a noite toda conversando, mesmo sendo a primeira vez que encontra na vida.
  • Divi Divi – BOM: o restaurante do próprio hotel em que fiquei também tinha uma comida muito boa . O preço ficava na média da região.
  • Terra do Camarão – BOM para RUIM: este oferecia um rodízio de camarão.  Tinha desde estrogonofe de camarão até espaguete ao sugo com camarão, camarão frito e tudo mais.  Alguns pratos eram bons. Por exempo,  o caldinho estava uma delícia, assim como o bobó. Mas alguns pecavam e não tinham muito gosto, como o espaguete e outros cheios de óleo, como o à francesa. Pelo preço achei que não compensou.
  • Parada Obrigatória – RUIM: atendimento muito demorado, mesmo considerando o talento da região. E meio ríspido também. A comida também deixou a desejar. Existem muito lugares para comer na cidade. Pule este.
  • Pittsburg – RAZOÁVEL: nem toda refeição pode ter camarão. Esta é uma hamburgueria estilo McDonalds, Bobs etc.  Enfim, a comida da minha terrinha: fast food. Mas pelo menos pedi uma porção de macaxeira frita, ao invés das batatas de sempre.
  • Pastelaria na Praia de Pipa – BOM: lá comi um pastel que nunca tinha experimentado. Pastel de lagosta. Era a carne de lagosta desfiada, recheando bem um pastel frito na hora. Nipônico de São Paulo,  já comi muitos pastéis nesta vida, e os da praia estavam apenas ok. Mas vale a pena pelos recheios: lagosta, caranguejo etc.

Inserindo registros geoespaciais: ArcSDE e SQL Server

Inserir registros diretamente através de comandos SQL é bem simples. Note que estou usando como tipo de dado geoespacial o GEOMETRY, nativo do SQL Server 2008.

Primeiro  é necessário criar uma tabela no SQL Server e registrá-la junto ao ArcSDE. Isto é bem simples de se realizar utilizando o ArcCatalog (note que também dá para se criar a tabela via SQL e registrá-la no ArcSDE via linha de comando).  Basta entrar no ArcCatalog, conectar-se com sua instância do ArcSDE e clicar com o botão direito no ícone do banco de dados. Depois é só escolher o Feature Class:

Feature Class

Criando um Feature Class

É apresentada então uma caixa de diálogo para criar sua tabela que conterá sua feição. Criei uma tabela chamada MeuFeatureClass. As colunas OBJECTID e SHAPE são criadas por padrão. Adicionei um campo1 e um campo2 também. E escolhi o tipo da geometria como POINT.

Criada a tabela é bem simples de se inserir um registro através de comando SQL:

INSERT INTO
MeuBD.sde.MeuFeatureClass
(OBJECTID, campo1, campo2, shape)
VALUES
(1, valor1, valor2, geometry::STGeomFromText('POINT (-46.616667 -23.533333)', 4674))

O comando acima insere um registro na tabela contendo um ponto localizado no município de São Paulo – SP, usando o SRID 4674 (SIRGAS 2000).

Note que não usamos uma função típica do T-SQL  para transformar o texto dado em uma coordenada válida pro sistema.  Isto me deixou confuso no início, pois eu não encontrava funções geoespaciais no banco de dados. Liste as funções existentes no banco de dados do ArcSDE que oê não encontrará nada relacionado ao sistema geo.

Estas funções ficam disponíveis como métodos da classe e objetos  geometry.  No caso acima, o STGeomFromText é um método estático da classe geometry. Os mundos da Orientação a Objetos e do SQL se mesclam cada vez mais…