Hibernate is probably the most well-known ORM tool for Java. I first used it on version 1.X back on 2002. It even influenced the JPA (Java Persistence API), which is a standard ORM API.
The problem is: the application (has about 200 entities) was taking up +- 350MB of heap size on startup right after forcing a garbage collect (using jvisualvm).
That was too much. But things would improve. There was a setting which I've always mislooked as a batch size equivalent, called hibernate.default_batch_fetch_size, which we had with value 20.
After some investigation, I found it was used to load several records at once, at the expense of memory. So, just to test out, I changed it to 1 and, surprise... The same application was now taking up +- 150MB! What a change for something misunderstood!
But I was not satisfied, and decided to try another JPA provider. From some researches, I decided to go with EclipseLink. Result? The same application now starts up (after a garbage collection) with +- 35 MB!!!
Ok, what a huge difference! But performance should be worst, shouldn't it? No!!! On the load tests I did, EclipseLink was actually 2.5x faster than Hibernate!
There were some bumps, several queries were done with some non-standard (from JPA's point of view) elements, and so on. But they all could be resolved, one at a time.
Conclusion: After being a loyal Hibernate user for several years (well, not that loyal, as some projects I did with plain JDBC using Querydsl SQL module), I'll now try to avoid it as much as possible, and use EclipseLink instead. Even a future possibility is Batoo JPA, which claims to be 15-20x faster than Hibernate. However, as it cannot be used with Spring's LocalContainerEntityManagerFactoryBean (at least for now, as it requires a persistence.xml, and I like bootstrapping things programmatically), I'll stick with EclipseLink for now.
Syntax coloring
domingo, 20 de janeiro de 2013
quarta-feira, 6 de junho de 2012
Tutorial: Instalando o Cyanogen Mod no LG Optimus ME (P-350) pelo Linux
Tenho um telefone LG Optimus ME (P-350, pecan), e o sistema dele ficou progressivamente mais lento, ao ponto de me fazer aventurar pelo mundo dos ROMs customizadas.
Procurei por aí e só vi tutoriais para aquele sistema operacional da tela azul. Como ele não é muito bem vindo por aqui, tive que experimentar um pouco, e resolvi reportar os passos aqui.
Se você tem este telefone, usa o Linux e quer instalar o Cyanogen Mod, aqui vão os passos. Eles foram realizados no Ubuntu 12.04 Precise Pangolin, mas podem facilmente ser adaptados a outras distribuições.
Atenção: como de costume, estes passos funcionaram para mim, e não me responsabilize caso algo não dê certo... Além disso, obter acesso root no aparelho provavelmente invalide a garantia do aparelho. Siga por sua conta e risco.
Atenção 2: ao realizar este processo, TODOS os dados (contatos, aplicativos, etc) do telefone serão perdidos. Faça um backup de seus dados antes.
Uma vez instalado, Habilite o debug por USB em Configurações > Aplicações > Desenvolvimento e certifique-se de ter um cartão SD montado. Rode o aplicativo, selecionando a opção de root. Depois disso, o aparelho vai reiniciar, já com o acesso root obtido.
Depois, é necessário configurar o UDEV para reconhecer o dispositivo. Para tal, baixe o arquivo http://www.joescat.com/linux/51-android.rules, copie-o para o local correto e edite-o, com os seguintes comandos:
sudo cp 51-android.rules /etc/udev/rules.d/
sudo chown root:root /etc/udev/rules.d/51-android.rules
sudo chmod 644 /etc/udev/rules.d/51-android.rules
gksu gedit /etc/udev/rules.d/51-android.rules
Agora, com o editor de textos, remova o comentário na linha logo abaixo do fabricante LG, para que fique assim:
Depois, execute sudo /etc/init.d/udev restart
Talvez seja necessário instalar a versão 32 bits do libncurses se você estiver usando o Linux em 64 bits. Caso tenha algum problema executando o adb, rode sudo apt-get install libncurses5:i386
Teste o adb com o telefone conectado por USB. Depois, rode no console: adb devices
Você deve ver 1 linha abaixo de "List of devices attached".
Dentro do zip, tem os arquivos flash_image e recovery-RA-pecan-2.2.1-GNM-drap.img. Copie ambos para a raiz do cartão SD.
Você também vai precisar da ROM do Cyanogenmod e do Google Apps (para ter acesso, por exemplo, ao Google Play). Baixe ambos. O GApps, conforme o wiki do próprio Cyanogenmod pode ser baixado de http://cmw.22aaf3.com/gapps/gapps-gb-20110828-signed.zip. Já a ROM eu usei esta aqui: http://forum.xda-developers.com/showthread.php?t=1610605.
Copie também ambos os arquivos zip (do Google Apps e do ROM) para a raiz do cartão SD, sem extrair nenhum.
Você vai ver a tela do recovery, que é um menu com algumas opções que podem ser navegadas com as teclas de volume, e confirmadas com o botão menu.
Faça um backup da sua imagem atual (tem essa opção no menu inicial do recovery). Depois, temos que limpar os dados anteriores do telefone. Isto é muito importante, o telefone pode não bootar sem isto!
Vá na opção Wipe e selecione as seguintes opções, uma a uma:
Wipe ALL data/factory resetWipe Dalvik-cache
Wipe battery stats
Com o botão voltar no telefone, volte ao menu anterior e selecione
Flash zip menu, e depois Choose zip from sdcard. Selecione o zip com o ROM do Cyanogenmod.
Espere terminar e novamente selecione Choose zip from sdcard e selecione o zip com o Google Apps.
Depois, volte e selecione Reboot system now.
Você verá o pinguinzinho do Linux e depois o splash do Cyanogenmod. O primeiro boot demora bastante. Dá uma tensão, mas é assim mesmo. Depois disso, bem vindo ao seu novo sistema!!!
Após o boot, aparecerá a tela do recovery. Limpe o Dalvik cache, na opção Wipe (isto é muito importante!!!), e vá no Flash zip menu, selecionando o arquivo zip contendo o ROM. Reinicie e pronto!
Quando o telefone tiver iniciado totalmente, remova o carregador e deixe a bateria acabar totalmente (o telefone desligar por causa dela). Depois carregue-o e use-o normalmente. No meu caso, tenho cerca de 5 dias com cada carga.
Procurei por aí e só vi tutoriais para aquele sistema operacional da tela azul. Como ele não é muito bem vindo por aqui, tive que experimentar um pouco, e resolvi reportar os passos aqui.
Se você tem este telefone, usa o Linux e quer instalar o Cyanogen Mod, aqui vão os passos. Eles foram realizados no Ubuntu 12.04 Precise Pangolin, mas podem facilmente ser adaptados a outras distribuições.
Atenção: como de costume, estes passos funcionaram para mim, e não me responsabilize caso algo não dê certo... Além disso, obter acesso root no aparelho provavelmente invalide a garantia do aparelho. Siga por sua conta e risco.
Atenção 2: ao realizar este processo, TODOS os dados (contatos, aplicativos, etc) do telefone serão perdidos. Faça um backup de seus dados antes.
1. Acesso root no aparelho
Baixe o aplicativo Gingerbreak, versão 1.20 em http://forum.xda-developers.com/showthread.php?t=1044765. Para instalá-lo, você necessita da opção de permitir instalar aplicativos de fontes desconhecidas. Se preferir, baixe o apk usando o seu computador, copie-o para o cartão SD e instale-o com um aplicativo como o AppInstaller.Uma vez instalado, Habilite o debug por USB em Configurações > Aplicações > Desenvolvimento e certifique-se de ter um cartão SD montado. Rode o aplicativo, selecionando a opção de root. Depois disso, o aparelho vai reiniciar, já com o acesso root obtido.
2. Obtendo e configurando o ADB
O ADB é um comando que permite executar comandos no celular quando ele está conectado por USB ao computador. Seguindo o que está descrito em http://forum.xda-developers.com/showthread.php?t=1067273, baixe o arquivo http://forum.xda-developers.com/attachment.php?attachmentid=588859&d=1304719623 e extraia o zip para um caminho executável, por exemplo, com o comando:
sudo unzip fastboot-and-adb.zip -d /usr/bin
Depois, é necessário configurar o UDEV para reconhecer o dispositivo. Para tal, baixe o arquivo http://www.joescat.com/linux/51-android.rules, copie-o para o local correto e edite-o, com os seguintes comandos:
sudo cp 51-android.rules /etc/udev/rules.d/
sudo chown root:root /etc/udev/rules.d/51-android.rules
sudo chmod 644 /etc/udev/rules.d/51-android.rules
gksu gedit /etc/udev/rules.d/51-android.rules
Agora, com o editor de textos, remova o comentário na linha logo abaixo do fabricante LG, para que fique assim:
# LG Ally/Optimus One/Vortex/P500 618f, 618e=(debug)
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="618e", ENV{adb_matched}="yes"
ATTRS{idVendor}=="1004", ATTRS{idProduct}=="618e", ENV{adb_matched}="yes"
Depois, execute sudo /etc/init.d/udev restart
Talvez seja necessário instalar a versão 32 bits do libncurses se você estiver usando o Linux em 64 bits. Caso tenha algum problema executando o adb, rode sudo apt-get install libncurses5:i386
Teste o adb com o telefone conectado por USB. Depois, rode no console: adb devices
Você deve ver 1 linha abaixo de "List of devices attached".
3. Obtendo o custom recovery e a ROM
Primeiro, baixe o custom recovery. Neste caso, usei o AmonRA custom recovery. Para o p350, pode-se usar o seguinte link: http://leaveme.in/wp/wp-content/uploads/2012/01/recovery-RA-pecan-2.2.1-GNM-drap.img_.zip.Dentro do zip, tem os arquivos flash_image e recovery-RA-pecan-2.2.1-GNM-drap.img. Copie ambos para a raiz do cartão SD.
Você também vai precisar da ROM do Cyanogenmod e do Google Apps (para ter acesso, por exemplo, ao Google Play). Baixe ambos. O GApps, conforme o wiki do próprio Cyanogenmod pode ser baixado de http://cmw.22aaf3.com/gapps/gapps-gb-20110828-signed.zip. Já a ROM eu usei esta aqui: http://forum.xda-developers.com/showthread.php?t=1610605.
Copie também ambos os arquivos zip (do Google Apps e do ROM) para a raiz do cartão SD, sem extrair nenhum.
4. Flash da imagem e acesso ao custom recovery
Com o flash_image, o .img do AmonRA recovery e os zips do ROM do Cyanogenmod e do Google Apps todos na raiz do cartão SD, vamos aos comandos pelo ADB. O debug USB tem que estar ativo.
$ adb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock1 /system
cat /sdcard/flash_image > /system/bin/flash_image
chmod 755 /system/bin/flash_image
sync
flash_image recovery /sdcard/recovery-RA-pecan-2.2.1-GNM-drap.img
sync
reboot recovery
Você vai ver a tela do recovery, que é um menu com algumas opções que podem ser navegadas com as teclas de volume, e confirmadas com o botão menu.
Faça um backup da sua imagem atual (tem essa opção no menu inicial do recovery). Depois, temos que limpar os dados anteriores do telefone. Isto é muito importante, o telefone pode não bootar sem isto!
Vá na opção Wipe e selecione as seguintes opções, uma a uma:
Wipe ALL data/factory resetWipe Dalvik-cache
Wipe battery stats
Com o botão voltar no telefone, volte ao menu anterior e selecione
Flash zip menu, e depois Choose zip from sdcard. Selecione o zip com o ROM do Cyanogenmod.
Espere terminar e novamente selecione Choose zip from sdcard e selecione o zip com o Google Apps.
Depois, volte e selecione Reboot system now.
Você verá o pinguinzinho do Linux e depois o splash do Cyanogenmod. O primeiro boot demora bastante. Dá uma tensão, mas é assim mesmo. Depois disso, bem vindo ao seu novo sistema!!!
5. Dica: atualizando o ROM
Você pode ficar monitorando a página do ROM para ver se saiu uma nova versão. Caso tenha saído, basta baixá-la e colocá-la na raiz do cartão SD (apague a anterior caso ainda esteja lá para não se confundir). Depois, pressione o botão de desligar por alguns segundos, selecione Reiniciar > Recuperação.Após o boot, aparecerá a tela do recovery. Limpe o Dalvik cache, na opção Wipe (isto é muito importante!!!), e vá no Flash zip menu, selecionando o arquivo zip contendo o ROM. Reinicie e pronto!
6. Dica: aumentando a duração da bateria
É possível fazer uma recalibragem da bateria. Basta carregar até 100% (não se engane pelo ícone verde, vá em Configurações, Sobre o telefone, Status e veja se está totalmente carregada). Depois reinicie no recovery (da mesma forma como no item anterior) e selecione Wipe, Wipe battery stats. Reinicie o telefone (de preferência com o carregador ainda ligado).Quando o telefone tiver iniciado totalmente, remova o carregador e deixe a bateria acabar totalmente (o telefone desligar por causa dela). Depois carregue-o e use-o normalmente. No meu caso, tenho cerca de 5 dias com cada carga.
Considerações finais
Espero ter ajudado. Muitos tutoriais por aí ensinam a fazer este processo pelo Windows, mas pra que precisar de um Windows para configurar o telefone que roda Linux? ;-)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:
What a revange!
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:
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:
- 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.
- 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.
- Baixe o driver da LG para o telefone: http://www.mediafire.com/?qvdbresp5nntb6x.
- Baixe o KDZ firmware uploader: http://www.unclenet.de/files/KDZ_FW_UPD_EN.7z.
- Instale o driver da LG.
- Extraia o KDZ_FW_UPD_EN.7z.
- Instale o msxml.msi que está dentro do arquivo do KDZ.
- Com o telefone desligado e desconectado da porta usb, segure as teclas de aumentar volume, baixar volume e ligar ao mesmo tempo.
- O telefone vai iniciar em modo de emergência.
- Conecte o telefone no micro pela porta USB.
- Passe o controle do dispositivo USB para o VirtualBox: No menu Dispositivos > Dispositivos USB, Marque o telefone LG.
- Execute o programa KDZ_FW_UPD.exe, que está dentro do arquivo do KDZ.
- Selecione as opções 3GQCT no “Type” e DIAG no “PhoneMode”.
- Selecione o arquivo do firmware (V10C_00.KDZ no meu caso).
- 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.
- 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!
- 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.
domingo, 3 de julho de 2011
The day I've faced a kernel panic in Linux
I've been tempted to switch back from Unity to KDE for several days.
So, today I decided to actually do it.
Everything was fine, then, at some point, after setting up everything, I restarted and...
kernel panic!!!
Wow. For those who haven't seen it, it kind of scares. The numlock and capslock leds on the keyboard keep blinking and nothing else works.
I rebooted again. Same thing. Then again. Sometimes, it was even a hard freeze: not even the blinking leds.
All this happened right after entering the login password in KDM.
Then, I just decided to reinstall everything (I had just installed kubuntu-desktop and uninstalled everything from gnome, as explained here.
After reinstalling, upgrading, configuring... Guess what?
The same thing.
Then I just realized it was when connecting to the wireless network that the system froze.
So, my guess was the wireless card driver. Bingo!!!
I have a Dell Vostro 3300, which comes with a Broadcom BCM4313 board. The default driver for it is brcm80211.
I had seen several days before in the Hardware Drivers program that another driver was available for it: Broadcom STA driver.
As I had nothing to loose, I just tried, and it worked! \o/
So, here is my tip if anyone encounters a hard freeze or a kernel panic and has the same hardware: install the Broadcom STA driver!
Just as a note, neither KDE nor Kubuntu are to blame here: it was the wireless driver's fault.
So, today I decided to actually do it.
Everything was fine, then, at some point, after setting up everything, I restarted and...
kernel panic!!!
Wow. For those who haven't seen it, it kind of scares. The numlock and capslock leds on the keyboard keep blinking and nothing else works.
I rebooted again. Same thing. Then again. Sometimes, it was even a hard freeze: not even the blinking leds.
All this happened right after entering the login password in KDM.
Then, I just decided to reinstall everything (I had just installed kubuntu-desktop and uninstalled everything from gnome, as explained here.
After reinstalling, upgrading, configuring... Guess what?
The same thing.
Then I just realized it was when connecting to the wireless network that the system froze.
So, my guess was the wireless card driver. Bingo!!!
I have a Dell Vostro 3300, which comes with a Broadcom BCM4313 board. The default driver for it is brcm80211.
I had seen several days before in the Hardware Drivers program that another driver was available for it: Broadcom STA driver.
As I had nothing to loose, I just tried, and it worked! \o/
So, here is my tip if anyone encounters a hard freeze or a kernel panic and has the same hardware: install the Broadcom STA driver!
Just as a note, neither KDE nor Kubuntu are to blame here: it was the wireless driver's fault.
terça-feira, 10 de maio de 2011
Não usa Internet Explorer? Você não é mais bem-vindo ao www.smiles.com.br
Sou usuário Linux (o último Windows que usei foi o XP).
Até algum tempo atrás eu acessava sem problemas o site do Smiles (www.smiles.com.br).
Este fim-de-semana tentei acessar e me deparei com um erro, dizendo que eu precisava usar o Microsoft Internet Explorer.
Desiludido, entrei em contato com o "Fale conosco", e, realmente desisti do site.
Me mandaram baixar o Internet Explorer para o meu sistema operacional...
Credo.
Em pleno 2011 ver sites importantes depender de uma plataforma específica é algo que só se explica com ignorância ou mala preta...
Aqui o e-mail na íntegra (salvo os dados pessoais):
Até algum tempo atrás eu acessava sem problemas o site do Smiles (www.smiles.com.br).
Este fim-de-semana tentei acessar e me deparei com um erro, dizendo que eu precisava usar o Microsoft Internet Explorer.
Desiludido, entrei em contato com o "Fale conosco", e, realmente desisti do site.
Me mandaram baixar o Internet Explorer para o meu sistema operacional...
Credo.
Em pleno 2011 ver sites importantes depender de uma plataforma específica é algo que só se explica com ignorância ou mala preta...
Aqui o e-mail na íntegra (salvo os dados pessoais):
Prezado Senhor Luis Fernando:
N° de atendimento: 1-412064905.
Em atenção ao seu e-mail, orientamos verificar e se possível, baixar uma versão do navegador Internet Explorer compatível com seu sistema operacional, pois terá um melhor desempenho durante o acesso ao site Smiles.
Esclarecemos que estamos trabalhando incessantemente para a melhoria de nosso atendimento, com atualizações de sistemas e o Site Smiles.
Pedimos sua compreensão.
Estamos à sua disposição.
Atenciosamente,
Janaina Oliveira
Programa Smiles
VRG Linhas Aéreas S.A - Grupo GOL
www.smiles.com.br/smiles/content/faleconosco/index.htm
Central de Atendimento Smiles: 4003 7001 / 4003 7007
Para localidades não atendidas pelo serviço 4003 ligue para 0800-883-2245.
Favor não responder esta mensagem, caso seja necessário utilize Site “www.smiles.com.br” “My Smiles” “Fale Conosco”, ou utilize o link abaixo. “http://www.smilescom.br/smiles/content/faleconosco/index.htm”.
Texto confidencial para uso exclusivo do destinatário. Não divulgue e apague-o imediatamente se o recebeu por engano.
This is a confidential text to be exclusively used by the recipient. Do not disclose to anybody and delete it immediately if you received it by mistake.
Texto confidencial para uso exclusivo del destinatario. Si usted lo recibi por error no lo divulgue y exclúyalo inmediatamente
Antes de imprimir, pense em sua responsabilidade com o MEIO AMBIENTE.
----- Mensagem Original -----
De: smilesfaleconosco@golnaweb.com.br
Para: smiles.portugues@golnaweb.com.br
Enviada em: 09/05/2011 10:15:59
Assunto: Fale Conosco: Crítica
Fale Conosco - Crítica
Assunto: SITE
Nome: Luis Fernando
Sobrenome: Planella Gonzalez
CPF: XXXXXXX
E-mail: XXXXXXX
Numero Smiles: XXXXXXX
Contato: XXXXXXX
Localizador:
Origem:
Destino:
Data do vôo:
Número do vôo:
Data de ocorrência:
Número Protocolo:
Comentários: É lamentável que não posso mais acessar minha conta no Smiles porque agora o site exige o uso do Microsoft Internet Explorer.
De onde vocês tiraram a ideia infeliz de restringir o acesso a esse navegador, que é sabidamente o mais inseguro de todos?
Sou usuario Linux. Além de me excluir, excluiram os usuarios Mac, iPhone, iPad, Android, Blackbarry ou qualquer coisa que não seja Windows.
Vocês tomaram um passo na contramão da tecnologia, e, apesar de duvidar que isto possa ser solucionado a curto prazo (porque provavelmente investiram milhões no novo sistema mais "seguro"), pelo bem da própria empresa, espero que isto seja mudado algum dia.
As 40.000 milhas que tenho no programa (que ainda não consegui utilizar) serão as últimas investidas no smiles.
Lamentável.
N° de atendimento: 1-412064905.
Em atenção ao seu e-mail, orientamos verificar e se possível, baixar uma versão do navegador Internet Explorer compatível com seu sistema operacional, pois terá um melhor desempenho durante o acesso ao site Smiles.
Esclarecemos que estamos trabalhando incessantemente para a melhoria de nosso atendimento, com atualizações de sistemas e o Site Smiles.
Pedimos sua compreensão.
Estamos à sua disposição.
Atenciosamente,
Janaina Oliveira
Programa Smiles
VRG Linhas Aéreas S.A - Grupo GOL
www.smiles.com.br/smiles/content/faleconosco/index.htm
Central de Atendimento Smiles: 4003 7001 / 4003 7007
Para localidades não atendidas pelo serviço 4003 ligue para 0800-883-2245.
Favor não responder esta mensagem, caso seja necessário utilize Site “www.smiles.com.br” “My Smiles” “Fale Conosco”, ou utilize o link abaixo. “http://www.smilescom.br/smiles/content/faleconosco/index.htm”.
Texto confidencial para uso exclusivo do destinatário. Não divulgue e apague-o imediatamente se o recebeu por engano.
This is a confidential text to be exclusively used by the recipient. Do not disclose to anybody and delete it immediately if you received it by mistake.
Texto confidencial para uso exclusivo del destinatario. Si usted lo recibi por error no lo divulgue y exclúyalo inmediatamente
Antes de imprimir, pense em sua responsabilidade com o MEIO AMBIENTE.
----- Mensagem Original -----
De: smilesfaleconosco@golnaweb.com.br
Para: smiles.portugues@golnaweb.com.br
Enviada em: 09/05/2011 10:15:59
Assunto: Fale Conosco: Crítica
Fale Conosco - Crítica
Assunto: SITE
Nome: Luis Fernando
Sobrenome: Planella Gonzalez
CPF: XXXXXXX
E-mail: XXXXXXX
Numero Smiles: XXXXXXX
Contato: XXXXXXX
Localizador:
Origem:
Destino:
Data do vôo:
Número do vôo:
Data de ocorrência:
Número Protocolo:
Comentários: É lamentável que não posso mais acessar minha conta no Smiles porque agora o site exige o uso do Microsoft Internet Explorer.
De onde vocês tiraram a ideia infeliz de restringir o acesso a esse navegador, que é sabidamente o mais inseguro de todos?
Sou usuario Linux. Além de me excluir, excluiram os usuarios Mac, iPhone, iPad, Android, Blackbarry ou qualquer coisa que não seja Windows.
Vocês tomaram um passo na contramão da tecnologia, e, apesar de duvidar que isto possa ser solucionado a curto prazo (porque provavelmente investiram milhões no novo sistema mais "seguro"), pelo bem da própria empresa, espero que isto seja mudado algum dia.
As 40.000 milhas que tenho no programa (que ainda não consegui utilizar) serão as últimas investidas no smiles.
Lamentável.
terça-feira, 1 de março de 2011
An example of anti-code
When doing some code review, I've faced this:
OMG
var stateOptions = null;
var typeOptions = null;
function hideOptions() {
if(stateOptions == null) {
stateOptions = new Array();
stateOptions[0] = document.getElementById('status').options[0];
stateOptions[1] = document.getElementById('status').options[1];
stateOptions[2] = document.getElementById('status').options[2];
stateOptions[3] = document.getElementById('status').options[3];
stateOptions[4] = document.getElementById('status').options[4];
stateOptions[5] = document.getElementById('status').options[5];
}
document.getElementById('status').remove(1);
document.getElementById('status').remove(1);
document.getElementById('status').remove(1);
}
function showOptions() {
document.getElementById('status').remove(0);
document.getElementById('status').remove(0);
document.getElementById('status').remove(0);
try {
document.getElementById('status').add(stateOptions[0], null);
document.getElementById('status').add(stateOptions[1], null);
document.getElementById('status').add(stateOptions[2], null);
document.getElementById('status').add(stateOptions[3], null);
document.getElementById('status').add(stateOptions[4], null);
document.getElementById('status').add(stateOptions[5], null);
} catch(ex) {
document.getElementById('status').add(stateOptions[0], 0);
document.getElementById('status').add(stateOptions[1], 1);
document.getElementById('status').add(stateOptions[2], 2);
document.getElementById('status').add(stateOptions[3], 3);
document.getElementById('status').add(stateOptions[4], 4);
document.getElementById('status').add(stateOptions[5], 5);
}
}
...
OMG
Assinar:
Postagens (Atom)