ago 18

Olá,

Recentemente criei este jogo(Jogo dos Animais) de demonstração para um teste e apesar de simples deu bastante trabalho para fazer, devido a complexidade da lógica a ser criada.

Mas no final deu tudo certo.

Acesse o link abaixo para ver mais detalhes:

http://www.prsolucoes.com/site/artigo/jogodosanimaisemflash

Segue uma imagem do jogo:

http://www.prsolucoes.com/site/artigo/jogodosanimaisemflashhttp://www.prsolucoes.com/site/artigo/jogodosanimaisemflash
jul 19

Olá,

Recentemente fiz um experimento para um projeto que ainda está sendo formulado e este experimento consciste em enviar mensagem SMS pelo celular, mas conectando diretamente na porta.

Funciona +/- assim, você pluga o celular no computador, o computador criará uma porta de comunicação entre ele e o celular(que também pode ser feito via bluetooth), e o sistema envia comandos específicos para o celular para que seja feito o envio da mensagem.

É bem simples, mas funciona e você pode integrar esta funcionalidade a qualquer sistema e usar qualquer celular que permitda você enviar SMS dessa forma.

Vou colocar uma aplicação de exemplo para quem quiser baixar.

Esta versão eu desenvolvi usando C++ com Qt. E em meus testes eu usei meu N95 conectado via bluetooth. Quem realizar testes, poste aqui o equipamento usado para eu adicionar na lista. Eu só disponibilizei a versão para Windows, mas quem quiser testar no Linux, é só falar que compilo uma versão para Linux e posto aqui.

Link para download: http://www.prsolucoes.com/downloads/prmobiletracker.zip

Algumas screenshots:

Equipamentos testados:

Windows XP com N95 – Conexão Bluetooth

Windows 7 com N95 – Conexão Bluetooth

jul 2

Olá,

Recentemente tive a necessidade de trocar todo o código javascript que estava usando prototype para jquery, porém surgiu o seguinte problema, todos os elementos que eu precisava buscar pelo ID tinha um ponto (.) no ID, por exemplo:

<input type=”text” id=”individualCustomer.name” value=”" />

Mas se você usar o jquery da forma normal para pegar este elemento pelo ID, você não vai conseguir, algo como:

<script type=”text/javascript”>

alert($(‘individualCustomer.name’).val());

</script>

Isso porque no jquery pensa que o que está depois do ponto, e uma classe (class).

Então como resolver?

Após vários testes, descobri a seguinte solução:

<script type=”text/javascript”>

alert($(‘individualCustomer\\.name’).val());

</script>

O que mudou? Bastou colocar duas barras antes do ponto, assim: “\\.”

Com isso você faz um escape da barra e deixa pro jquery trocar o que sobrar, que será “\.”, pelo próprio ponto.

Bem simples a solução, mas não tinha encontrada nada sobre isso no Google, e quase refatorei todo o código, mas o problema é que o próprio framework Wicket do Java, adiciona o ponto no namespace quando um componente faz parte de uma hierarquia, como uma caixa de texto de um form.

jun 30

Olá,

O Adobe AIR é uma excelente oportunidade para quem quer desenvolver um software multi-plataforma, sendo 100% uma aplicação html/js ou flash/flex.

Na verdade, o Adobe AIR nada mais é do que um navegador webkit contando com o auxílio de bibliotecas javascript nativas a mais, que são as bibliotecas que ficam no pacote air.*.

Hoje vou apresentar como usar o NativeProcess do Adobe AIR 2 para chamar por exemplo o “notepad/gedit” pela sua aplicação AIR.

Eu estou desenvolvendo usando o Aptana, que é uma IDE free e muito boa para aplicações com Adobe AIR e Ajax, possuindo até mesmo debug.

Vamos lá.

1 – Baixe e instale o Aptana(http://www.aptana.com/)

2 – Baixe e instale o Adobe AIR 2 SDK (http://get.adobe.com/br/air/)

3 – Abra o Aptana e instale o plugin para Adobe AIR

4 – Adicione o SDK na lista de SDK do Adobe AIR dentro do Aptana, no menu Window->Preferences

5 – Crie um novo projeto do tipo “Adobe AIR”, no menu “File->New->Project”, item “web->Adobe AIR Project”

6 – Agora vou colocar um código de exemplo:

var process;

function abrirPrograma()

{
var file = null;

if (air.Capabilities.os.toLowerCase().indexOf(“win”) > -1)
{
file = file.resolvePath(“c:\\windows\\system32\\notepad.exe”);
}
else
{
file = file.resolvePath(“gedit”);
}

var arguments = new air.Vector["<String>"]();
arguments.push(‘teste.txt’);

var nativeProcessStartupInfo = new air.NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = arguments;
process = new air.NativeProcess();
process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
process.addEventListener(air.ProgressEvent.STANDARD_INPUT_PROGRESS, inputProgressListener);

process.start(nativeProcessStartupInfo);

if(process && process.running){
alert(‘rodando’);
}
}

function inputProgressListener(event)
{
process.closeInput();
}

function onOutputData(event)
{
var bytes = process.standardOutput;
alert(bytes.readUTFBytes(bytes.bytesAvailable));
}

Bom, o código esta ai, é bem simples de entender.

Adicionei até mesmo a chamada com parâmetros, pois quase ninguém conhece que o Adobe AIR disponibiliza uma imitação de vetor para javascript, para que seja feita a conversão entre tipos, caso precise integrar JS + Flex/Flash.

Eu estou fazendo um projeto onde estou colocando dentro da minha aplicação AIR o JRuby e chamando desta mesma forma ai, basta copia a pasta do jruby para dentro da aplicação e chamar assim:

if (air.Capabilities.os.toLowerCase().indexOf(“win”) > -1)
{
file = file.resolvePath(“jruby/bin/jruby.exe”);
}
else
{
file = file.resolvePath(“jruby/bin/jruby”);
}

Funciona no Linux, Windows e Mac.

Ah, não esqueça de adicionar no arquivo “application.xml” da sua aplicação AIR o seguinte:

<supportedProfiles>extendedDesktop</supportedProfiles>

Antes de:

</application>

Isso permite sua aplicação executar o NativeProcess, senão o Adobe AIR vai gerar uma exceção dizendo que o sistema não permite usar esta API.

jun 2

Olá,

Decidi fazer este tutorial por uma necessidade própria e que pode ajudar a algumas pessoas que estão começando também com o Maven:

Vou ter como base que o nome do meu projeto se chamará “nome_projeto” e que ficará na pasta “/home/[seu_usuario]/projetos”, então onde você achar esta string, basta trocar pelo nome do seu projeto, mas também pode ser feita qualquer outra alteração depois que você entender o conceito.

Não esqueça de trocar o [seu_usuario] pelo nome do seu usuário no Ubuntu, e no Windows basta informar o caminho normalmente, exemplo: “c:\workspace”.

No tutorial, estou usando ubuntu, mas funciona em qualquer computador com o maven e eclipse instalado.

Não vou cobrir a parte de instalação do Eclipse por ser bem básico, que é somente baixar o ZIP em eclipse.org e extrair para uma lugar qualquer.

O tempo para fazer este tutorial é de 3 minutos, apesar de ter bastante texto, é super simples, mas detalhei o clique de cada botão em cada processo para não surgir dúvidas.

Tópico 1: Instalando o Maven

- NO LINUX (Ubuntu)

http://www.mkyong.com/maven/how-to-install-maven-in-ubuntu/

- NO WINDOWS

http://wiki.indivohealth.org/index.php/Installing_and_Configuring_Maven_-_Windows

Em ambos é bem simples este passo, no Ubuntu você apenas usa o apt-get e no windows basta baixar o zip, adicionar no path e criar o repositório.

Tópico 2: Criação do projeto [nome_projeto]

>mkdir ~/projetos

>cd ~/projetos

>mvn archetype:create -DgroupId=br.com.dominio.nome_projeto -DartifactId=nome_projeto -DarchetypeArtifactId=maven-archetype-webapp

>cd nome_projeto

>mvn eclipse:clean

>mvn eclipse:eclipse

>mvn -Dwtpversion=2.0 compile eclipse:eclipse

Tópico 3: Importando projeto no Eclipse

3.1 – Abra o Eclipse

3.2 – Clique no menu FILE > IMPORT

3.3 – Selecione o item: Existing project into Workspace

3.4 – Informe o caminho onde a pasta do projeto foi criada, que no nosso exemplo é: /home/[seu_usuario]/projetos, que seria o nosso “~/projetos”, mas no eclipse precisa informar o caminho completo, pois o comando “~/projetos” só o terminal reconhece.

3.5 – Clique no botão FINISH

Tópico 4: Configurando no Eclipse, a variável do repositório do Maven

Ao importar o projeto, provavelmente aparecerá umas marcações de erro pois é preciso alterar os seguintes itens:

4.1 – Vá na opção “properties” do seu projeto (clique com o botão direito em cima do projeto)

4.2 – Menu: Java build path

4.3 – Aba: Libraries

4.4 – Clique no botão: Add variable

4.5 – Clique no botão: Configure variables

4.6 – Clique no botão: New

4.7 – Preencha os dados:

4.7.1 – Name: M2_REPO

4.7.2 – Path: /home/[seu_usuario]/.m2/repository  (no windows você informa a pasta onde você criou o repositório)

4.8 – Clique em OK para confirmar tudo e volte para a tela inicial do Eclipse

Tópico 5: Resolvendo problema de versão do Facet

5.1 – Na aba “Markers” do Eclipse terá um item em vermelho, clique na seta ao lado deste item para expandir

5.2 – Clique com o botão direito no subitem “Java compiler level does not match the version of the installed Java project facet”

5.3 – No menu que aparecer vá em “Quick fix” (ou control+1)

5.4 – Marque: “Change java project facet version to java 6″ e clique em “Finish”

Tópico 6: Finalizando

Pronto, agora basta adicionar o servidor de sua preferência e fazer o deploy nele e acessar pela url:

http://localhost:8080/nome_projeto

Espero ter ajudado. Em breve vou colocar os plugins de clean e copy-dependencies no Maven para facilitar mais ainda a vida de quem usa o Maven.

mai 25

Olá,

Recentemente disponibilizei um framework desenvolvido por mim (Paulo Coutinho) e que utilizamos em alguns de nossos projetos com Delphi.

O framework é rápido e simples, e envolve todo o conceito de orientação a objetos no Delphi.

As informações completas você confere no link:

http://www.prsolucoes.com/site/artigo/prfwk

abr 1

Olá,

Pois bem, todo sabem que cansaram de falar ai que o Flash Player iria morrer devido a HTML5 e eu já até postei aqui algo sobre isso.

Mas o que na verdade acontece é que isso tem se tornado uma grande mentira ao longo dos dias, e para confirmar mais ainda o que eu já havia falado chegamos a mais esta GRANDE novidade, que o navegador do Google, o Chrome, terá embutido em si o Flash Player, que será atualizado em cada nova versão, MAS não é na forma tradicional criada pelo Netscape(como um plugin), em que o navegador apenas deixa a responsabilidade de renderização para o plugin e vemos ai alguns problemas ocorrerem e a única coisa que você consegue fazer fora dele é algo com o ExternalInterface, mas simplesmente eles irão permitir que o Flash Player seja integrado ao navegador, acabando de vez com problemas de performance, segurança e estabilidade.

Esse novo modelo de “plugin” permitirá inclusive acesso à API do hardware. Bom, vamos ver quem vai ser o primeiro a imitar.

E o Flash está só crescendo cada vez mais. E o combustível deste crescimento são os “invejosos” que ficam apedrejando ele.

Referências:

http://techcrunch.com/2010/03/30/flash-player-to-come-bundled-with-google-chrome-new-browser-plugin-api-coming/

http://blog.digitalbackcountry.com/2010/03/flash-player-and-chrome-sitting-in-a-tree/

Editado (02/04/2010)

Do iG Tecnologia:

A Google acaba de lançar um update para seu canal Dev do browser Chrome, que traz a integração com o software Flash como padrão para Windows, Mac e Linux.

No blog de lançamentos do Chrome, a Google diz que a razão para a ação é facilitar o uso do browser para seus usuários.

Agora, ao realizar o download do Chrome, o usuário também receberá a versão mais atual do Adobe Flash Player, sem precisar instalá-lo separadamente.

As atualizações do Flash serão recebidas automaticamente ao utilizar o browser, explica o site Life Hacker, outra maneira de evitar o download separado e reduzir os riscos à segurança devido ao uso de versões antigas.

mar 19

Olá,

Recentemente comecei a desenvolver um prototipo de jogo em Flash com Actionscript 3 e a API playerio.

Como trata-se de um prototipo e sem equipe de design, está tudo em fase inicial e nem tão bonito.

Como sempre quis ingressar nesta área, venho sempre desenvolvendo e estudando algumas bibliotecas como SDL, HGE, OpenGL, Slick2D, Ogre3D, Irrlicht, FIFE(engine), PushButton(engine) e outras.

Inclusive aqui no blog tem vários exemplos e projetos que desenvolvi, na categoria “projetos”.

Você pode acessar a página do projeto em Flash aqui:

http://www.prsolucoes.com/site/artigo/evangel

Algumas imagens:

mar 11

Olá,

Muito tem se falado por ai que o html5 vai bater o Flash,  que o Flash consome muita memória e que ele é o causador de todos os males e tudo mais, mas antes de eu entrar num fato e em uma prova real para mostrar que isto é mentira, vou dar minha humilde opinião:

1 – O html5 é um padrão que embora alguns navegadores já tenham, cada um implementa de uma forma e exibe de uma forma, ou seja, se você quer usar o player de vídeo nativo do html5 e quer deixar ele bonito visualmente e com recursos diferentes, ou seja, personalziar, é melhor parar para pensar e se preocupar, pois cada navegador exibe o vídeo de uma forma(óbvio), com sua aparência personalizada pro navegador, então se você quer que seu vídeo seja exibido bonitinho em todos os navegadores e que dentro dele ainda tenha aquelas famosas propagandas e brincadeirinhas, recursos avançados e tudo mais, quem você vai usar? O player do Flash :)

2 – Ao invés de pensar que o html5 vai detonar o Flash, pense assim, o html5 só vai contribuir com o Flash, pois trabalhará em CONJUNTO fazendo o papel dele, e o Flash fará o dele :)

3 – Pense em todos os recursos que o Flash tenha, XMLSockets, uso de código em c/c++ nativo(como fizeram de brincadeira o doom rodando no flash usando este recurso do flash player), uso de CSS para customizar os controles/interface, aceleração 3D, utilização de periféricos como câmera e microfone, comunicação em tempo real como FMS ou ES4, recursos 3D nativo, entre outros inúmeros fatores que levam ao Flash ser muito mais do que essas pessoas conheçam e querem falar daquilo que nunca colocaram a mão para conhecer/saber antes de falar.

Agora para fechar, vamos aos fatos, mas vou deixar isso para ser lido por cada um, já que é grande o excelente artigo(com testes e provas da própria Adobe):

http://www.readwriteweb.com/archives/does_html5_really_beat_flash_surprising_results_of_new_tests.php

Ah e por favor, aos que ficam perdendo tempo escrevendo estas besteiras, sugiro uma melhor pesquisa ou aprofundamento na plataforma Flash, para que ela não detone você mesmo, e por favor, já que ela vai morrer, aproveita e desinstala o plugin do seu computador, pode ser ele a causa de “tanto travamento” e depois me fala se conseguiu viver sem ele.

Editado:

Link para saber sobre porque o Flash veio para ficar e não para ser substituido pelo HTML5:

http://devgrow.com/why-flash-is-here-to-stay/

fev 23

Olá,

Ontem finalizei o site do Daniel do Acordeon, um trabalho indicado pelo Alexandre do site AgitaPara.com.br .

Realizei toda a parte de programação do site, tanto do front-end como do backend, além da montagem do html apartir do design que o Alexandre enviou.

Link do site:

http://www.danieldoacordeon.com.br

Segue algumas fotos:

« Posts Anteriores