06
abr 15

Como saber seu IP externo

Dica rápida sobre como obter seu IP externo.

Eu sei dosi sites para obter o IP em texto puto (plain text)

http://xmlip.com/none

http://echoip.com

Para guardar o valor em um arquivo para consulta por qualquer programa ou rotina pode-se usar o comando abaixo usando curl:

curl -s echoip.com > meuIP.txt

ou com wget:

wget echoip.com --no-cache -qO-

Abs.


02
abr 14

Links importantes dos produtos Oracle Java Embedded

A ideia dessa lista é simplificar a vida que que deseja estudar os produtos Java para embarcados. Como existe muito material no site da Oracle tentei condensar aqui o que seria mais útil para iniciar. Separei por produto para facilitar ainda mais 😉

Se sentirem falta de alguma coisa é só falar que atualizo a lista.

Java SE Embedded 

Java Embedded Suite – JES

Oracle Event Processing for Oracle Java Embedded – OEP

Java Mission Control

Se algum link estiver quebrado, por favor me informe para que eu possa atualizar a lista.

Abs. Marco.

UPDATE

  • 18/09/2014 – Tutorial passo a passo para desenvolver uma aplicação usando OEP Embedded.
  • 09/04/2014 – Java Mission Control adicionado.
  • 02/05/2014 – Adicionado link “Overview of Creating Oracle Event Processing Applications”

19
mar 14

Explicando os preços para Java Embedded

Esse texto é a tradução desse post do Jim Connors que explica como calcular o preço dos produtos Oracle Java para usar em seus projetos embarcados. Também atualizei alguns dados.

Você provavelmente está se perguntando: “Preços? Sério? Em um blog técnico?”, e eu normalmente concordaria plenamente com sua avaliação. Mas em alguns instantes o tópico pode valer a pena. Não existe, como se costuma dizer, tal coisa como um almoço grátis. Se você pagar pelo direito de um software, ou desenvolver o seu próprio com projetos de código aberto, um custo deve ser pago.

Como um relógio, recebemos regularmente consultas sobre informações de Java embarcado que são mais ou menos assim:

Prezada Oracle, Nós baixamos e avaliamos Java SE-Embedded e achamos que é uma plataforma muito interessante para executar o nosso aplicativo embarcado. Entendemos que esse é um software comercial; antes de decidirmos implantar nossa solução com o seu runtime, você pode nos dar uma idéia dos royalties associados a “chipagem” de x número de unidades?

Parece bastante simples, certo? Bem, sim, exceto que no passado, a Oracle requeria que o potencial cliente assinasse um acordo de não divulgação antes de receber qualquer informação sobre preços de produtos embarcados. Não importa se o cliente estava interessado na implantação de dez unidades ou dez mil, todos eles tiveram que passar por este processo. Hoje certos aspectos de preços ainda podem requerer acordos confidenciais, mas por que não disponibilizar uma lista de preços para uma unidade? Com o lançamento deste documento, as informações sobre preços é agora público.

A prova está lá fora, tanto anedótica [Nota do Tradutor: sério que ele usou essa palavra? rsrsrs] e real, demonstrando que a plataforma Java SE-Embedded da Oracle é, sem dúvida, superior em qualidade e desempenho comparada com as variantes OpenJDK. Para o exemplo mais recente, dê uma olhada neste post. Portanto, a questão torna-se, vale mais a pena pagar por uma plataforma comercial que é totalmente suportado, mais rápido e mais confiável, ou optar por uma plataforma “livre” e suportá-la você mesmo?

Então, qual o custo de Java SE-Embedded?

A resposta universal para essa pergunta é: depende. Isto quer dizer que depende da capacidade do processador embarcado. Antes de perdermos você, vamos mostrar o preço de lista para o licenciamento de Java embedded associados a três plataformas e, em seguida, explicar como chegamos aos números. Até essa postagem, 19 de março de 2014, aqui estão elas:

  1. Custo por unidade para um Raspberry Pi: US $ 0,71
  2. Custo por unidade para um sistema baseado em Intel Atom Z510P : US $ 2,68
  3. Custo por unidade para um Compulab Trim-Slice : US $ 5,36

Como isso funciona?

Estes itens vão nos ajudar a descrever o processo, então vamos mostrar como chegamos a nossos três preços das plataformas de amostra.

  • O preço é feito em uma base por-core.
  • Os processadores são classificados de acordo com sua capacidade e atribuído um fator de core, core factor [NT: vamos chamar de core factor, pq eu odeio traduzir termos técnicos :p]. Quanto maior a capacidade do processador, maior seu core factor.
  • Preço por core é determinado multiplicando-se o preço padrão por core do produto Java-Embedded pelo core factor.
  • Uma taxa de 19% para licença de Atualização de software e Suporte (opcional) é adicionado em cada sistema.

A tabela de core factor que se segue, encontrada em Oracle Java Embedded Global Price List, datada de Agosto de 2014, agrupa os processadores por capacidades semelhantes em categorias chamadas classes de chips. A cada classe de chip é atribuído um core factor.

Exemplo 1

Para calcular o custo por unidade, use esta fórmula:

Taxa de licença do Oracle Java Embedded por-core * core factor * número de cores * suporte

O valor padrão da taxa de licença por-core é sempre US $ 300. O Raspberry Pi é um dispositivo da Classe I e, portanto, tem um core factor de 0,002. Existe apenas um núcleo no Raspberry Pi, e a taxa de atualização e suporte é sempre 19%. Então se juntarmos os os números, temos:

$ 300 * 002 * 1 * 1,19 = 0,714 dólares [NT: isso mesmo 0,71 centavos por unidade. Quase dado ;)]

Exemplo 2

O processador nesse exemplo, um Intel Atom Z510P, é um dispositivo da Classe II e tem um core factor de 0,0075. Usando a mesma fórmula do Exemplo 1, aqui está o que temos:

$ 300 * 0,0075 * 1 * 1.19 = $ 2,6775

Exemplo 3

O processador para o Trim-Slice é baseado no ARM Cortex-A9, um dispositivo da Classe II. Além disso, é um sistema de dual-core. Usando a mesma fórmula como os exemplos anteriores, chegamos ao seguinte preço por unidade :

$ 300 * 0,0075 * 2 * 1.19 = $ 5,355

Conclusão

Com suas especificações de hardware em mãos, agora você deve ter informações suficientes para fazer uma estimativa razoável dos custos de licenciamento dos produtos Java-Embedded da Oracle. No mínimo, isso pode ser uma ajuda no seu processo de tomada de decisão baseado em ” comprar versus desenvolver o seu próprio”. E, claro, se você tiver alguma dúvida, não tenha medo de perguntar.


28
ago 13

[Dica] Extrair uma lista de arquivos ZIP em diretórios separados

Dica rápida.

Precisei extrair uma lista de arquivos JAR, mas queria todos nos diretórios com seus nomes. Usando Linux ou Mac OS X.

Por exemplo: asm.jar, dwr.jar e xdoclet.jar nas pastas

asm/
dwr/
xdoclet/
for i in *.zip; do unzip -d "${i%*.zip}" "$i"; done

Explicando:

for i in *.zip

> Lista os arquivos zip, jar, etc, o que for, e a cada iteração do for guarda o nome do arquivo na variável i.

unzip -d "${i%*.zip}" "$i"

> Parâmetro -d cria o diretório usando o nome do arquivo que está na variável i, mas removendo o .zip do final. O último parâmetro pode  “$i” informa o nome do arquivo a ser descompactado.

É isso.

Abs.


10
jun 12

[Tutorial] Usando a biblioteca Twitter Library for Arduino com OAuth

Nesse tutorial vou mostar como usar a Twitter Library for Arduino, uma biblioteca muito legal para tuitar usando somente um Arduino e um Ethernet Shield.

Esse projeto é MUITO útil e facilitou demais minha vida. Ele possibilita o envio de tweets pelo Arduino sem a necessidade de nenhum desenvolvimento extra para comunicação com a API do Twitter. Bem legal, pois depois que o Twitter adotou o OAuth como protocolo de autenticação, não era mais possível enviar tweets do Arduino somente informando usuário e senha. 🙁

Twitter Library  envia seu tweet à um site (http://arduino-tweet.appspot.com/) hospedado no meu querido Google App Engine (mais detalhes do GAE com Arduino aqui e aqui). Esse site é que é o responsável por enviar o tweet por você. O serviço do site é uma ponte de acesso facilitado a API do Twitter.

Arduino tuitando em 3 passos:

Dar autorização e obter a chave de acesso

Acesse http://arduino-tweet.appspot.com/ e clique no link Step 1 : Get a token to post a message using OAuth.

Esse link abrirá a página do Twitter para você permitir o acesso da aplicação aos recursos da sua conta.

Depois de autorizar você será redirecionado para uma página informando a sua chave de acesso para essa aplicação (como abaixo). É através desta chave de acesso que você utilizará a Twitter Library. Copie essa chave, mas se perde-la basta repetir o processo e copiá-la novamente.

Your token : XXcv3513-qoiw9hSEDnILynutcIqKXx0IZCP44mWm3pgZfM9dH

Instalar a biblioteca na sua IDE Arduino

Baixe o zip da biblioteca aqui, descompacte o zip e copie a pasta Twitter para dentro de ~/Documents/Arduino/libraries (Mac ou Linux) ou para Meus Documentos\Arduino\libraries\ (Windows). Em alguns casos a pasta libraries ainda não está criada, mas a do Arduino, sim. Nesse caso basta criar a pasta libraries no caminho informado e copiar a Twitter lá para dentro.

Se sua IDE estiver aberta, então a feche e abra novamente. Deverá aparecer um menu como mostrado na imagem abaixo.

Criar um programa, configurar e rodar

Para testar basta acessar os menus File > Examples > Twitter > SimplePost. Um exemplo de uso será criado. Inserira sua chave de acesso (obtida lá em cima) no lugar do texto YOUR-TOKEN-HERE.

Importante: Informe um IP válido da sua rede interna. A linha abaixo é o exemplo da lib, e pode não funcionar na sua rede.

byte ip[] = { 192, 168, 2, 250 };

Faça o Upload  (File > Upload) do programa para o Arduino (com a Ethernet Shield conectada, claro! duhhhh). Ao final do upload abra o monitor da porta serial (Tools > Serial Monitor). Se tudo der certo o resultado ficará assim:

Simples, não?

Obs. 1: O Twitter adotou o protocolo OAuth para autenticação das requisições em sua API. Isto permite que terceiros sejam autorizados a acessar determinadas contas do twitter, com permissão do usuário e sem que o mesmo precise saber sua senha ou dados pessoais. Isso mesmo! Nenhuma informação sua será armazenada por esse serviço. Objetivo deste serviço é ser apenas um autenticador e um atalho para a API do Twitter. Assim fica MUITO fácil comunicar o Arduino com o Twitter, não?

Obs. 2: A qualquer momento você pode revogar a permissão de acesso a essa aplicação pela URL http://twitter.com/settings/connections.

Obs. 3: Se você enviar o mesmo tweet mais de uma vez o Twitter irá responder como a mensagem 403. Ele não permite mensagens duplicadas em um curto espaço de tempo, nem que você envie diversas mensagens seguidas. Isso é para evitar spam de tweet 😉

Conclusão

Gostei muito de usar essa lib, principalmente pela possibilidade de enviar um tweet “diretamente” pelo Arduino de maneira bem transparente e simples. Se você já programou alguma integração com a API do Twitter sabe que não é nada complicado, mas dá um certo trabalho inicial. Além disso é preciso manter uma aplicação fora do Arduino para se comunicar. Com a Twitter Library você não precisa se preocupar com isso. Pode dedicar mais tempo somente ao projeto Arduino 😉

Levando em conta que é um projeto apresentado no próprio site do Arduino eu fico bem tranquilo quanto a confiabilidade dessa solução. Agora vou brincar mais um pouco e crio novo post se achar algo interessante.

Espero que tenham gostado.

Abs. Marco.