Syntax coloring

sexta-feira, 30 de setembro de 2011

Yet another Internet Explorer issue: Java applets created by JavaScript

In Cyclos, I've been working to implement support for printing in a local receipt printer.
We found the jZebra project which is a Java applet that prints in a receipt printer on the local computer.
So, as this is an optional feature, and will only be used by few users, we didn't want to load the applet on every page. Instead, only when the user clicks print, the applet tag is created and appended to the document with JavaScript (using document.createElement("applet") and friends).
Then, the usual sequence:
  • Test in Firefox: check.
  • Test in Chrome: check.
  • Test in Opera: check.
  • Find a computer running windows somewhere to test in Internet Exporer: fail.
Why I wasn't surprised?
When adding the applet through JavaScript, MSIE somehow doesn't makes the public applet methods visible for JavaScript. So, no .findPrinter(), no .append(), no .print(). 
Result? As this feature won't be used by most users, we decided to disable it on MSIE, at least until some workaround is found. ..

What a revange!

sábado, 24 de setembro de 2011

Atualizando o firmware do LG Optimus ME (P350) com VirtualBox no Linux

Eu comprei recentemente um celular LG Optimus ME (P350), que vem com o Android 2.2.2.
O problema é que ele vem com o firmware bem desatualizado 10a. Ele tem um bug que, ao tocar na tela, a cpu vai lá em cima... Emfim.
Baseei-me neste post para realizar o procedimento: http://www.sleetherz.com/2011/09/how-to-update-lg-optimus-p350-to-firmware-v-10c/
Mas tem um detalhe extra: Como não tenho o windows instalado (uso somente o Linux), e o software é só para windows, temos um probleminha. Mas, como nem tudo é perfeito, tenho um VirtualBox com um winxp pra esses casos... Então tá.

Atenção! Este procedimento foi o que eu fiz, e funcionou para mim. Não me responsabilizo caso dê algo errado...

Primeiro: Quando o telefone está em modo de emergência, ele é detectado pelo Linux como um modem. Assim, o kernel sobe o módulo cdc_acm, para poder utilizar o dispositivo. O problema é que se o Linux usa o dispositivo, não tem como ele ser usado pelo VirtualBox. Então, a primeira coisa a fazer é impedir o carregamento desse módulo. Edite o arquivo /etc/modprobe.d/blacklist.conf e adicione a seguinte linha:
blacklist cdc_acm. Depois que o procedimento terminar, você pode remover essa linha.

Segundo
: Tenha o VirtualBox com o Extension Pack instalado. Dê uma olhada na página de downloads: http://www.virtualbox.org/wiki/Downloads.

Agora, execute estas operações dentro da máquina virtual:

  1. O artigo no qual me baseei recomenda que o micro esteja desconectado da Internet. No VirtualBox, basta ir em Dispositivos > Adaptadores de Rede e desmarcar o Cabo conectado.
  2. Baixe o firmware em http://www.lg-phones.org/lg-optimus-me-firmwares-download.html. Instalei o 10c por ser o último com suporte a português do Brasil. Mas tem até o 10f.
  3. Baixe o driver da LG para o telefone: http://www.mediafire.com/?qvdbresp5nntb6x.
  4. Baixe o KDZ firmware uploader: http://www.unclenet.de/files/KDZ_FW_UPD_EN.7z.
  5. Instale o driver da LG.
  6. Extraia o KDZ_FW_UPD_EN.7z.
  7. Instale o msxml.msi que está dentro do arquivo do KDZ.
  8. Com o telefone desligado e desconectado da porta usb, segure as teclas de aumentar volume, baixar volume e ligar ao mesmo tempo.
  9. O telefone vai iniciar em modo de emergência.
  10. Conecte o telefone no micro pela porta USB.
  11. Passe o controle do dispositivo USB para o VirtualBox: No menu Dispositivos > Dispositivos USB, Marque o telefone LG.
  12. Execute o programa KDZ_FW_UPD.exe, que está dentro do arquivo do KDZ.
  13. Selecione as opções  3GQCT no “Type” e DIAG no “PhoneMode”.
  14. Selecione o arquivo do firmware (V10C_00.KDZ no meu caso).
  15. Inicie a atualização. O post no qual eu me baseei diz que caso haja algum problema, pode-se tentar com o telefone sem a bateria.
  16. No meio da atualização, o telefone é desligado. O controle do dispositivo deve novamente ser passado para o VirtualBox (Dispositivos > Dispositivos USB, como anteriormente). Não sei quanto tempo você tem para fazer isso antes que o KDZ desista, portanto, esteja atento!
  17. Agora ele deve ir até o fim...
A primeira vez que o telefone é ligado, demora bastante para iniciar. Paciência!
Ah, não esqueça de remover a linha no /etc/modprobe.d/blacklist.conf.

Era isso.