Blog criado para documentar e disseminar o conhecimento tecnológico adquirido por Thiago Campos Pereira e colaboradores.
terça-feira, setembro 05, 2006
Palm - Tipos de Reset
Vire e mexe aparece novos usuários pedindo que se explique como fazer Resets e Hard Resets, pois bem aí vai tudo explicadinho:
1 - Soft Reset (reset suave)
Descrição:
Um soft reset diz a nosso PDA que deixe de fazer o que estava fazendo e comece de novo. Toda a informação que nele temos se conserva. Quando fazemos um soft reset uma tela de boas-vindas aparece e posteriormente nos leva a Preferências.
Procedimento:
Para fazer um soft reset é necessário introduzir pelo orifício atrás do PDA uma ponta de um clipes ou a ponta de algumas stylus apropriadas para isto (como a stylus das séries Tungstens), solte e pronto. É importante lembrar que é um toque leve e suave . JAMAIS USE PONTAS EXTREMAMENTE FINAS: EX.ALFINETES E AGULHAS.
2 - Duplo Soft Reset (duplo reset suave)
Descrição:
Se depois de fazer um soft reset no PDA o mesmo não se acende e está comprovado que tudo está bem (tem carga na bateria, o contraste (Brilho) está bem, etc) pode provar o duplo soft reset.
Procedimento:
Para fazer o duplo soft reset faz o mesmo que fez para o soft reset mas duas vezes seguidas (apertar 2 vezes o botão de reset atrás do palm em menos de 1 segundo)
3 - Warm Reset (reset medio)
Descrição:
Quando fazemos um warm reset em nosso PDA, ele se reinicia, mas ao fazer o carregamento das extensões (os hacks, os programas gestores de hacks, os patches do sistema, as preferências de alarmes, etc) pode ser esta a fonte do problema. Se for este o caso, o PDA te dará error cada vez que carregue, detendo o processo de carregamento dos programas ao tentar carregar a aplicação danificada. Como com o warm reset estas aplicações não se carregam, te dará a oportunidade de descobrir aquilo que está dando conflito com o sistema (normalmente apagando a fonte do problema) e reiniciando normalmente.
Procedimento:
Para fazer o warm reset aperta o botão de rolamento para cima (Direcional para cima) e simultaneamente aperte o botão de reset (atrás do palm), solta o botão de reset e quando aparecer a tela de boas-vindas solta o botão de rolamento (scroll). Deste modo não se perde a informação de PDA.
Se não estiver seguro de que programa está causando o "error", pode usar um programa como ResetEmu depois do warm reset para detectá-lo.http://www.79bmedia.com/resetemu/d_index.html
4 - Hard Reset (reset duro)
Descrição:
Com um hard reset você apagará tudo que estiver armazenado na memória do PDA, exceto as aplicações e preferências de fábrica (veja extendendo hard reset). Uma vez resetado o PDA será necessário restaurar tudo que tinha com um Hotsync (Se usas Palm OS 3.1 ou anterior e não tiver nenhum programa de Backup, como BackupBuddy ou BackupMan, é muito possivel que terá que reinstalar tudo outra vez.
Por isso, é aconselhavel só fazer o hard reset se todos os métodos anteriores não funcionaram ou se quiser eliminar toda a informação de seu PDA (Por exemplo: na hora de vender o seu PDA, ou se quiser fazer uma limpeza geral).
Procedimento:
Para fazer um hard reset siga os passos seguintes:
Mantenha apertado o botão de Liga-Desliga do PDA.
Ao mesmo tempo em que mantém apertado o botão Liga-Desliga, dê um reset por trás (no furinho).
Solta o botão de reset.
Quando o "logo" da Palm aparecer no visor, pode soltar o botão de Liga-Desliga.
Se tiver feito o procedimento corretamente, aparecerá uma mensagem no visor anunciando que você vai apagar toda a informação do seu PDA, permitindo confirmar a ação ao pressionar o botão direcional para cima. Se não quiser confirmar, é só apertar qualquer outro botão, que o mesmo só dará um soft reset.
5 - Extended Hard Reset (reset duro extendido)
Descrição:
O extended hard reset fará exatamente o mesmo que o hard reset, só com uma diferença: impede a criação de algumas bases de dados que o fabricante pôs (números de telefones do suporte nos contatos, alguma nota de texto no Notepad, as conexões em Preferências, sons de alarme MIDI, a mensagem de boa vinda no Correo, alguns exemplos de fotos, etc). Atente que apagará todas estas informações do seu PDA.
Se fizer o extended hard reset e logo instalar alguma aplicação, te dará um "error"; por isso é recomendável depois de um extended hard reset, entrar em cada uma das aplicações do palm (Agenda, contatos, notas, Correio, Tarefas, etc) para assegurar que foi criado a base de dados. Depois de um extended hard reset não terá mais sons de alarmes adicionais.
Procedimento:
Para fazer um extended hard reset:
Aperta e mantém apertado o botão de Liga-Desliga do seu PDA.
Enquanto o mantém apertado, dê um reset por trás.
Solte o botão de reset.
Quando o "logo" da Palm aparecer no visor, pode soltar o botão de Liga-Desliga.
Quando te perguntar se realmente deseja fazê-lo, aperte e MANTENHA APERTADO o botão direcional (scroll) para cima.
Lembre-se em mantê-lo apertado, ao mantê-lo apertado,aperte em qualquer ordem, o botão de AGENDA, CONTATOS, TAREFAS, e NOTAS.
Solte o botão direcional (scroll) e o processo do extended hard reset terminará.
Tenha em mente que se não chegar a apertar os 04 BOTÕES enquanto mantém o botão direcional para cima apertado, só ocorrerá um soft reset.
6 - FlashPro Reset
Descrição:
Nos PDAs que usam FlashPro (aplicação que permite acessar a memória Flash sobrando) é possivel que uma aplicação que estiver corrompida (danificada) na memória Flash impeça o PDA de responder aos RESETS.
Só deve usar o Flash Pro reset se seu PDA não reage frente à um Hard reset!
Procedimento:
Para fazê-lo:
Aperte e mantenha apertado o botão de Notas de seu PDA.
Enquanto o mantem apertado, dê um reset por trás.
Solte o botão de reset.
Quando o "logo" da Palm aparecer no visor, solte o botão de Notas.
Quando aparecer esta mensagem: "hit the ToDo button to reformat flash" no visor, aperta o botão de tarefas para completar o reset.
Todas as aplicações ou dados que estiverem armazenados na memória Flash se apagará e será necessário reinstalar-las.
7 - JackFlash Reset
Descrição:
Nos PDAS que usam Jack Flash (aplicação que permite acessar a memória Flash sobrando) é possivel haver movido uma aplicação danificada, corrompida ou que não pode ser instalada na memória Flash, impedindo que o PDA responda aos resets.
Procedimento:
Para fazer um JackFlash reset:
Aperte o botão de reset na parte de trás de seu PDA.
Solte o botão de reset.
Imediatamente depois do passo anterior, aperta e mantém apertado o botão de Notas. Se foi feito corretamente, soará um apito do alarme.
Uma vez que haja apitado o alarme, solte o botão de Notas.
Uma vez completado, use o JackFlash para mover as aplicações danificadas ou que não podem ser instaladas na memória Flash para a memória RAM.
O conteúdo da memória Flash não será visivel até que execute o JackFlash ou faça um hard reset. Este método não apaga nada da Flash, com o qual poderá iniciar bem seu PDA e usar o JackFlash para acessar as informações ali guardadas.
8 - Debug Reset
Descrição:
Algumas vezes, quando se tenta atualizar o Palm OS, pode haver uma interrupção no processo que pode ocasionar em seu PDA, uma falha no sistema, na qual ele acusa que seu PDA não tem sistema operativo.
Este reset abrirá O Nº de SERIE do seu PDA para permitir gravar diretamente na memória Flash o sistema operativo.
Este reset só deve ser feito quando na utilização de atualização do sistema nos for necessário.
Procedimento:
Para fazê-lo:
Aperta e mantém apertado o botão de rolagem(direcional) para baixo.
Aperta o botão de reset atrás.
Quando o "logo" da Palm aparecer no visor, solta o botão direcional.
Em alguns modelos de PDA aparecerá um pequeno quadro piscando em um canto do visor.
Aí estão todos os RESETS possíveis....(até o momento)
terça-feira, agosto 22, 2006
Oracle – Diferença no Group By no 10G
A partir do Oracle 10G, o Order By não ocorre mais, sendo necessário realizar a ordenação manual. Este procedimento está documentado no manual do Oracle 10G.
A partir desta mudança vai uma dica. Nunca confie no que o SGBD faz implicitamente. Se você quer o resultado do Group By ordenado, utilize o Order By para garantir isso.
Oracle - Trabalhando com duas transações
Eu tinha um bloco pl/sql que, apesar de ter alguns delete, insert e update no seu conteúdo, deveria fazer um commit apenas no final da execução, geralmente o processamento é feito em segundos. Acontece que o update, sem um motivo aparente, começou a demorar mais que o normal. Com isso logo veio a pergunta, porque não fazer um commit a cada comando? Considerando o contexto da rotina, o commit a cada comando não seria possível, exceto em um update. Mas como fazer um commit isolado no meio da transação? A resposta é pragma autonomous_transaction;
Funciona apenas dentro de uma procedure, você cria uma procedure e coloca a declaração pragma autonomous_transaction; pronto essa procedure será considerada uma transação a parte, execute o seu comando e execute o commit.
PS: Funciona desde o Oracle 8i
Exemplo
Begin
Insert ......
Delete ......
Chamada da procedure com a transação autônima.......esse pedaço terá um commit a parte
Etc.......
Commit;
End;
sexta-feira, julho 07, 2006
VisualStudio 2005 - Trabalhando com GridLayout no ASP.Net
Oracle - Performance X uso de funções
sexta-feira, junho 23, 2006
PowerBuilder - Bugs no Build 8716 da versão 9
quinta-feira, junho 22, 2006
PowerBuilder - Conectando ao Oracle 10G utilizando Cliente do Oracle 8i
terça-feira, junho 06, 2006
PowerBuilder - Usando DataWindow para manipular XML
segunda-feira, junho 05, 2006
PowerBuilder - Utilizando HTTP Post
String Vls_headers
Long Vll_ret
VISMSG = ""
elseif vll_ret = -1 then
VISMSG = "Erro ao chamar o objeto de acesso a internet."
Return -1
elseif vll_ret = -2 then
VISMSG = "A URL informada é inválida."
Return -1
elseif vll_ret = -4 then
VISMSG = "Não foi possível conectar a Internet."
Return -1
elseif vll_ret = -5 then
VISMSG = "Não foi possível conectar a Internet utilizando protocolo seguro (HTTPS)."
Return -1
elseif vll_ret = -5 then
VISMSG = "Ocorreu um erro na requisão a Internet."
Return -1
else
VISMSG = "Ocorreu um erro não documentado no acesso a Internet. - Codigo :" + string(vll_ret)
return -1
end if
PowerBuilder - Abrindo um documento
long ret
if ret = -1 then
vismsg = 'Não foi possível executar '+VLSArquivo+'!'
return 0
end if
return 1
quarta-feira, maio 17, 2006
PowerBuilder - Bloqueando o Teclado
terça-feira, maio 16, 2006
PDA - Sites interessantes
- http://mobile.msn.com/
- http://www.palmland.com.br/Avantgo/
- http://www.google.com.br/
- https://my.avantgo.com/home/
- http://www.itau.com.br/wap.wml
- http://wap.abril.com.br/tc/info/index.php
- http://wap.abril.com.br/tc/index.php
- http://www.apontador.com.br/iapyx
- http://www.odontopalm.com.br/gsf/
- http://www.mundosemfio.com.br/
- http://www.palmland.com.br/
- http://www.palmbrasil.com.br/materias/pm.html
- http://www.palminfocenter.com/
- http://news.com.com/2300-1041_3-6053916-1.html?tag=ne.gall.pg
- http://www.palmzone.net/
- http://www.zdnet.com.au/reviews/coolgear/pdas/0,39023392,39116317-1,00.htm
- http://palmtops.about.com/cs/pdafacts/a/Palm_Pocket_PC.htm
- http://www.mobileinfo.com/Versus_Compare/PalmVsPocketPC.htm
- http://www.gantrygroup.com/Papers/TCO%20WP%20-%20WEB%20Final.pdf
- http://celular.grupolg.net/
- http://www.gsmarena.com/
- http://www.handango.com/
- http://www.pocketgear.com/
- http://www.aximsite.com/
- http://www.pdair.com/
Palm – Problemas com o Treo 650
Este problema ocorre porque existe um Bug no Treo. Para resolvê-lo, você tem que fazer a atualização da ROM do aparelho, que pode ser baixada direto no site da PALM USA (http://www.palm.com/us/support/downloads/treo650updater/).
Após o update, a qualidade do som melhorou muito, mas ainda perde para muitos telefones celulares disponíveis. A solução adotada por vários usuários é a utilização de fones de ouvido bluetooth.
PowerBuilder – Problemas ao retornar valores por output no Oracle
Oracle : 8.1.7.4
Forma de conexão : API O84 Oracle8/8i (8.x.4+)
Recentemente estava tendo erro ao retornar valores VARCHAR2 como OutPut de uma procedure. A definição da minha procedure era :
create or replace PROCEDURE SP_GERA_XML_POS
(p_numcdc cconta.numcdc_cad%type,
p_CodAgente varchar2,
p_CodEmpresa Number,
p_retorno_xml out varchar2) As ...........
No PowerBuilder, criei um UserObject do tipo Transaction e criei uma External Function apontando para o procedure, da seguinte forma:
subroutine SP_GERA_XML_POS(double P_NUMCDC,string P_CODAGENTE,long P_CODEMPRESA,ref string P_RETORNO_XML) RPCFUNC ALIAS FOR "SP_GERA_XML_POS"
Chamei a procedure utilizando seguinte código :
sqlca.sp_gera_xml_pos( 444, 'zzz', 10, xmlretorno)
if sqlca.sqlcode <> 0 then
xmlretorno = sqlca.sqlerrtext
end if
messagebox('teste',xmlretorno)
Este código me retornava a mensagem :
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Para resolver o problema, descobri que tenho que inicializar a variável que será utilizada para receber o retorno. Como o Oracle possui um limite de 4000 caracteres, alterei o meu código para ficar da seguinte forma:
xmlretorno = space(4000)
sqlca.sp_gera_xml_pos( 444, 'zzz', 10, xmlretorno)
if sqlca.sqlcode <> 0 then
xmlretorno = sqlca.sqlerrtext
end if
messagebox('teste',xmlretorno)
Desta forma, o problema foi solucionado.
quinta-feira, maio 04, 2006
VisualStudio 2005 – Problemas com o Help
Microsoft Document Explorer cannot be shown because the specified help collection 'ms-help://MS.MSDNQTR.v80.en' is invalid
Analisei vários sites e fóruns e descobria a origem e como resolver o problema:
Origem
A minha instalação foi feito a partir de uma imagem de DVD (Arquivo .BIN). Para abrir o arquivo .BIN, utilizei o WINRAR e extrai os arquivos para o meu drive local.
Instalei o VisualStudio e nenhum erro foi informado.
De acordo com artigos que li, o problema está na utilização do WINRAR para extrair arquivo do .BIN. Por algum motivo, o WINRAR modifica alguns arquivos, corrompendo-os e causando o erro acima.
Solução.
Instalei a última versão do Software DAEMON TOOLS, que cria um drive virtual para o arquivo BIN, simulando um drive de DVD.
Apenas pedi para corrigir a instalação do MSDN e o mesmo passou a funcionar.
terça-feira, maio 02, 2006
Oracle – Dica de Performance
Recentemente fiz um trabalho em conjunto com um excelente DBA Oracle para analisarmos alguns pontos de baixa performance.
Um dos pontos que mais causou problemas foi o tratamento dado ao desenvolvedores para os parâmetros opcionais.
Por exemplo, vamos dizer que em uma consulta você tem três parâmetros e todos eles são opcionais. Abaixo estou listando as soluções adotadas e o que podemos concluir das mesmas:
1) Passar Nulo no parâmetro não informado
Where ( Campo1 = :Parametro1 or :Parametro1 is null)
And ( Campo2 = :Parametro2 or :Parametro2 is null)
And ( Campo3 = :Parametro3 or :Parametro3 is null)
Nesta solução, se o parâmetro for informado ele é passado para a query, ao contrário passa-se nulo.
Essa é a pior solução que pode ser adotada. O otimizador do Oracle identifica o OR e verifica que a mesma coluna não é utilizada nas duas comparações e por isso não utiliza índice, degradando em muito o tempo de resposta da query.
2) Passar o valor por limite
Where ( Campo1 Between :Parametro1_ini and :Parametro1_fim)
And (Campo2 Between :Parametro2_ini and :Parametro2_fim)
And (Campo3 Between :Parametro3_ini and :Parametro3_fim)
Nesta solução, se o parâmetro for informado, o valor é passado para o parâmetro inicial e final, por exemplo Campo1 between 45 and 45. Ao contrário, é passado um valor de forma a não filtrar os dados, por exemplo Campo1 between 0 and 9999.
Essa solução, apensar de funcionar, deve ser evitada, pois em algumas situações o Oracle armazena o plano de execução para utilizá-lo futuramente, com a intenção de melhorar a performance da query, evitando a analise necessária para identificar o melhor plano. Como os valores passados por limite podem vária, este tipo de query pode prejudicar o trabalho do otimizador.
Além disso, se você passa apenas um parâmetro, você está gerando trabalho extra para o Oracle, que tem que avaliar se os dois outros parâmetros devem ou não ser utilizados pelo filtro.
3) Montar a Query Dinamicamente
Essa é a melhor solução, onde alteramos a query em tempo de execução passando apenas os valores necessários. Dessa forma, o otimizador pode trabalhar com uma query mais simples e montar o plano de execução com mais precisão.
Devo lembrar que em algumas situações, como a utilização de Composites complexas, essa solução não poderá ser adotada. Neste caso, recomendo utilizar a solução B.
Oracle - Query com Recursividade
O nome deste comando é CONNECT BY PRIOR
Abaixo estou enviando o trecho do e-mail que um amigo meu enviou sobre este comando:
Pessoal, hoje eu aprendi um recurso interessante do oracle utilizado para trazer um result set com recursividade.
Talvez seja útil para vocês.
SELECT lpad(' ', 2*level) ID ID, NOME, REC_ID FROM RECURSIVIDADE start with id = 3 CONNECT BY PRIOR ID = REC_ID
Escrito por : Wellington Fernandes do Carmo
domingo, abril 30, 2006
CodeWarrior - Memory is getting low
Estou tentnado utilizar o Constructor do CodeWarrior em uma máquina com 1GB de memória RAM e a ferramenta me retorna o erro abaixo.
"Memory is getting low. Try closing some windows, or give Constructor a largermemory partition."
Procurei em vários sites e não obtive sucesso na solução do problema.
No site da Metrowerks, proprietária od CodeWarrior, achei o seguinte artigo:
Each time I run Constructor on my system, I receive an error window that reads,
"Memory is getting low. Try closing some windows, or give Constructor a larger
memory partition."
This error message is a bug within Constructor. It reports a low memory error on any
system that contains 512 MB or more of RAM. Usually, the error is triggered if you have a
multiple of 512 MB on your system, so 1024 MB would cause the error, but 768 MB may
not.
Therefore, the solution would be to try increasing or decreasing the amount of RAM the
system is currently using. However, various users have had this problem go away by
changing the amount of virtual memory the system uses in the System settings, so this is
another option to try. Palm is aware of this problem and should be working on a fix for
future releases of Constructor. Since Constructor is maintained and distributed by Palm as
part of the Palm OS SDK, any bug fixes or feature requests for Constructor can be
implemented only by Palm.
Após N dias e muita pesquisa tentando resolver este problema, consegui a solução que é instalar o Constructor for Palm OS 1.9. Então começou outra luta, onde encontrar a atualização!!!
Foram gastos mais N dias para achar essa atualização, que se encontra no SDK R3 para PALM OS 5. Aproveitei e já baixeis a versão 1.9.1, que é a mais recente.
Mas, o melhor de tudo, que após este trabalho todo, o problema agora está resolvido.
Fico muito feliz em poder publicar este problema aqui e puder ajudar outras pessoas. Afinal, foram um mês e meio de pesquisa para resolver este problema.
segunda-feira, abril 24, 2006
PowerBuilder 11 - Versão de Avaliação
Apesar dessa versão possuir muito bugs, vale apena entrar no Link e dar uma olhada.
Além do DotNet, houve mudanças no visual da ferramenta e inclusão de recursos para desenvolvimento Mobile.
Diversos - Problemas com Monitor 15' LCD da Proview
Após vários testes, identifiquei que se eu reiniciasse o computador com o cabo do monitor ligado, o mesmo apresentava o problema. Mas se eu desligasse o cabo do monitor, aguardasse o tempo suficiente para aparecer a tela de Login e ligasse o cabo novamente, funcionava 100%.
Fiz o teste com o monitor em outro computador e o mesmo funcionou 100%. Então, comecei a desconfiar da minha placa de vídeo. Como ela funcionava com outros monitores, percebi que poderia ser alguma incompatibilidade.
Possuo uma placa de vídeo NVIDIA GeForce4 MX 4000. Essa placa possui um recurso de desabilitar a aceleração gráfica. Utilizei este recurso, e o monitor funcionou 100%.
Explicando o problema. No momento que o Windows e inicializado, a minha placa de vídeo tenta identificar qual a melhor configuração do monitor. Por algum problema, ela configura a taxa de atualização para um valor muito alto e o monitor perde o sinal.
Entrei em contato com a Proview e após vários dias e muitos e-mails/telefonemas. Eles me passaram a seguinte resposta:
Boa tarde
Thiago para resolvermos este problema , voce tem que levar sua cpu e o monitor ao um posto autorizado proview, pois teremos que atualizar a bios do monitor para este tipo de placa.
Fico pensando em um usuário leigo, que não tem experiência e que acha que fez um excelente negocio comprando uma placa top de linha e um monitor bacana e que descobre que tem uma dor de cabeça ao invés de alegria.
Como a assistência técnica mais próxima de mim fica a 300 KM (RJ). Vou ficar um bom tempo sem solução para o meu monitor. A minha sorte é que raramente faço um boot no meu computador.