out 27

Olá,

Recentemente precisei desabilitar o recurso “auto-complete” imposto pelos navegadores, pois isso em certos momentos fica desagradável e confuso para o usuário.

Meu problema era o seguinte:

Eu tenho um formulário html com 3 campos(nome, senha e repetir senha) sendo que no campo “nome” o navegador(Chrome) estava colocando meu “email de login” toda vez que eu exibia este formulário, e criou algo extremamente irritante pois sempre que eu ia alterar meu “nome”, o navegador já preenchia o campo com meu “email de login”, então eu tinha que ficar apagando o email e lembrar do que estava escrito antes. Agora imagina um usuário leigo ter que ficar fazendo isso no seu novo site, não dá.

Então achei uma solução bem bacana, trata-se do atributo “autocomplete” para os “inputs html” e “form”, onde você pode usar da seguinte forma.

Para o “form” todo:

<form autocomplete=”off”>

… input 1

… input 2

</form>

Para o “input html” individual:

<form>

<input type=”text” autocomplete=”off” name=”email” id=”email” />

<input type=”text” autocomplete=”off” name=”senha” id=”senha” />

</form>

Bem simples, não?

Fica ai a dica para todos.

set 29

Olá,

Ontem liberei as novas versões e repositórios da engine que criei, chamada Evangel.

É uma engine para jogos MMO feita com Actionscript3, FlashBuilder4 usando como servidor o Red5 ou PlayerIO.

Quem quiser colaborar, fique a vontade.

Veja o artigo oficial em português e em inglês:

PT-BR: http://www.prsolucoes.com/site/artigo/evangel_projeto_jogo_opensource

EN – http://www.prsolucoes.com/site/artigo/evangel_opensource_game

set 29

Olá,

Ontem (28/09/2010) almocei com a galera do grupo PythonOnRio no restaurante DayTrade(Rua do Ouvidor, 22, Centro do RJ).

Quem quiser ir almoçar lá com agente é só chegar umas 12:30 no restaurante.

Um abraço a todos do grupo.

Eu sou o segundo da esquerda, de baixo para cima.

set 18

PUBLIQUEI O CÓDIGO FONTE DA MINHA ENGINE CHAMADA Evangel.

TRATA-SE DE UMA ENGINE PARA CRIAÇÃO DE JOGOS MMO EM FLASH.

UTILIZA FLASHPUNK e PLAYERIO.

VOCÊ PODE BAIXAR AQUI:
http://github.com/prsolucoes/Evangel

set 15

Hi,

This post is to share the code that i have been created to make a smooth camera movement with FlashPunk engine.

First download the file Camera.as

To use it on your game, you import this file and on game start call the method adjustToPlayer to set camera first time position. Like this:

var camera:Camera = new Camera(800, 600, 32, 1);

camera.adjustToPlayer(myMapEntity.width, myMapEntity.height, myPlayerEntity);

To always set camera focus on the player call the method followPlayer, like this:

package
{
public class GameWorld extends World
{

override public function update():void
{
if (myPlayerEntity)
{
camera.followPlayer(myMapEntity.width, myMapEntity.height, myPlayerEntity);
}

super.update();
}
}
}

If you want change the distance offset to the camera focus on player, you can set another value when creating your camera object, like this

var camera:Camera = new Camera(800, 600, 100, 1);

Or if you want make the camera more fast when focus on player, you change the fourty parameter of constructor, like this:

var camera:Camera = new Camera(800, 600, 100, 5);

Basically is this. If you have any question you can post here.

EDITED – 16/09/2010:

- More precise camera, now fit on player with correct position

- Refatored code

- Default camera speed is 1.5 now

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.

« Posts Anteriores Próximos Posts »