Pesquisar

sábado, 29 de novembro de 2008

Os altos e baixos da qualidade na conexão 3G!

Atualmente uso o link da BrT 3G para acessar a Internet. Notei que sempre houve altos e baixos, um dia a conexão está ótima outro está péssima, procurei na Internet e não encontrei nada que me ajudasse, liguei pra BrT e tive a seguinte resposta o "Windows Vista não está listado na blá blá blá blá.. por isso a rede pode apresentar altos e baixos" e a última coisa foi tentar mudar alguns parametros de configuração pra ver se alterava algo na qualidade.

Basicamente só mudei o modo preferencial da rede, pra acessar esse menu tenha certeza que ainda não está conectado na rede, clique em 1,2,3 e 4 note que o 3 (os números são referências pra figura abaixo) permite alterar o modo que a rede é escolhida.

Veja as estatísticas de quando configurei o modem pra "Preferir 3G" (neste modo há uma oscilação entre os vários protocolos : HSDPA, UMTS e EDGE [ao menos os que percebi])

* Quando digo estatísticas me refiro a saída do comando ping www.google.com.br -n 25 que executei em ambiente Windows.
Estatísticas do Ping para 209.85.193.99:
Pacotes: Enviados = 25, Recebidos = 18, Perdidos = 7 (28% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 714ms, Máximo = 4140ms, Média = 2017ms
Estatísticas do Ping para 209.85.193.104:
Pacotes: Enviados = 25, Recebidos = 19, Perdidos = 6 (24% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 578ms, Máximo = 3849ms, Média = 2697ms
Estatísticas do Ping para 209.85.193.99:
Pacotes: Enviados = 25, Recebidos = 24, Perdidos = 1 (4% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 211ms, Máximo = 4195ms, Média = 2318ms
Estatísticas do Ping para 209.85.193.99:
Pacotes: Enviados = 25, Recebidos = 25, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 920ms, Máximo = 3914ms, Média = 1890ms

Estatísticas do Ping para 209.85.193.104:
Pacotes: Enviados = 25, Recebidos = 12, Perdidos = 13 (52% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 1366ms, Máximo = 4155ms, Média = 2586ms

Estatísticas do Ping para 209.85.193.99:
Pacotes: Enviados = 25, Recebidos = 25, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 132ms, Máximo = 3696ms, Média = 1206ms
Usando o modo "Preferir 3G" quando a rede usou o protocolo HSDPA a qualidade da conexão ficou boa.
Estatísticas do Ping para 209.85.193.99:
Pacotes: Enviados = 25, Recebidos = 25, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 129ms, Máximo = 156ms, Média = 139ms
Depois que mudei o modo para "Apenas 3G" veja as novas estatísticas.
Estatísticas do Ping para 209.85.193.104:
Pacotes: Enviados = 20, Recebidos = 19, Perdidos = 1 (5% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 109ms, Máximo = 332ms, Média = 137ms
Estatísticas do Ping para 209.85.193.104:
Pacotes: Enviados = 20, Recebidos = 20, Perdidos = 0 (0% de perda),
Aproximar um número redondo de vezes em milissegundos:
Mínimo = 121ms, Máximo = 218ms, Média = 142ms
Claramente houve uma melhoria consideravel. Mesmo configurando para "Somente 3G" ainda existe a oscilação entre os protocolos HSDPA e UMTS, sempre que se usa o UMTS a qualidade da conexão é reduzida.

Conversando com alguns técnicos da BrT eles me informaram que em alguns locais o sinal 3G pode ser bem fraco ou inexistente, nesses casos é bom deixar "Preferir 3G". Eu sempre uso o "Somente 3G", até porque eu paguei foi por isso. Minha conexão ficou bem melhor após essas "mudanças", claro que as oscilações continuam mas agora são bem menores.

quarta-feira, 12 de novembro de 2008

Jpcsp - Estado (status) atual e alguns screenshots do emulador de psp feito em java






Para o jogo Tales of Eternia (ToE) o problema de antes (a grid que aparecia na renderização) desapareceu. Novos desenvolvedores que têm ótimas habilidades com opengl somaram mais ao grupo !



Nesse momento estamos trabalhando em algumas otimizações, cacheamento de texturas, melhorando código em partes que são extremamente executadas... e claro sempre "evoluindo", o jpcsp oferece um ótimo debugger além de um sistema de logging que AJUDA muito.

segunda-feira, 3 de novembro de 2008

Login - autenticação e autorização usando JavaServer Faces (jsf)

Este post trará (ou tentará trazer) informações básicas para o desenvolvimento de um sistema de login para aplicações web javaserver faces (jsf) . Com estas informações creio que será possível pra você implementar seu sistema de Login.
Basicamente...

O Usuario tem um nomeDeUsuario uma senha e um ou mais Perfis.
Cada Perfil está vinculado a uma ou mais páginas. (ou recursos ou qualquer nomenclatura que você quiser usar)
Uma Página é um objeto simples que tem uma descrição.
Na tentativa de resumir a estrutura seria algo semelhante a essa pseudo-modelagem...
Pagina paginaAdmin = new Pagina("/admin.jsf");
Pagina paginaNormal= new Pagina("/principal.jsf");

Perfil admin = new Perfil();
admin.temAcesso(paginaAdmin).temAcesso(paginaNormal);

Perfil normal = new Perfil();
normal.temAcesso(paginaNormal);

Usuario homerSimpsons = new Usuario("homer99","senha");
homerSimpsons.temPerfilDe(admin);
Crie um PhaseListener como abaixo.
package meu.pacote.br;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;

public class AuthorizationListener implements PhaseListener {

public void afterPhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
//adiquirindo o FacesContext.
String currentPage = facesContext.getViewRoot().getViewId();
//armazenando a página que fez a requisição. (a string da pág. atual ex: "/pag.jsf")
boolean isLoginPage = (currentPage.lastIndexOf("login.xhtml") > -1);
//fazendo a verificação mais básica de todas... se é a página de login.
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
//adquirindo a sessão (essa mesma onde você deverá guardar seu usuário no nível de sessão com descritor currentUser).
Usuario user = (Usuario) session.getAttribute("currentUser");
//apenas recuperando o valor da sessão.
if (!isLoginPage && user == null) {
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "loginPage");
//bem, se não está logado redireciona pra lógica que (navigatio rule) atende a loginPage
} else {
//verificar se o usuario atual tem acesso a página atual.
boolean temAcesso = user.temAcesso(new Pagina(currentPage));
if (!temAcesso){
//aqui a logica de não ter acesso... redicione novamente? faça algo... ???
}
}
//caso contrário o jsf passa tranquilamente por aqui!!!

}

public void beforePhase(PhaseEvent event) {
//poderia ter sido escrito nesse evento antes da "fase" (lembra do básico do jsf, o ciclo de vida e as fases...
}

public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}

E uma lógica pra logar o usuário na sessão...
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("currentUser", user);
E registre essa classe no arquivo faces-config.xml. Claro, registre também um navigation que atenda a qualquer chamada para loginPage.

<lifecycle>
<phase-listener>
org.gpro.filter.AuthorizationListener
</phase-listener>
</lifecycle>

<navigation-rule>
<from-view-id>/*</from-view-id>
<navigation-case>
<from-outcome>loginPage</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>

Claro que o código pode e deve ser modificado para questões de flexibilidade, legibilidade e até mesmo performance. O propósito inicial era mostrar como desenvolver um sistema de login com jsf. O código mostrado foi feito apenas pra exemplificar qualquer erro ou dúvida postem aqui.
Mais informações em:

sábado, 1 de novembro de 2008

Jpcsp - já mostra tela de jogo comercial

Depois de algum (MUITOOOOOOOO) trabalho veja a primeira screen de um jogo comercial rodando no jpcsp.