TISSNet5 ANS

Essa levou o dia inteiro. Como sempre, começando com a historinha…

Comecei um trampo novo para uma softwarehouse, eles tem um sistema de laboratório fodão, completo, cheio de funcionalidades e tudo mais.

Esses vagabundos da ANS inventaram um padrão de comunicação entre os bandidos dos convênios e os pilantras que fazem exames.

O problema é que o padrão não é padrão… Estranho, cada corno de t.i. de cada convênio faz uma merda diferente e se acha o rei da cocada preta. Com seus milhões de bugs. Alguns convênios começaram a dar problema alegando calculo de hash inválido, erro em dado, etc. A galera de bio, medicina, laboratório, só responde: “Não sou de T.I. como assim clicar com o botão direito do mouse no arquivo xml?”

Aí tem um programa perdido por chamado TISSNet feito em java que a ANS disponibilizou. Parece que parou na versão 5.0 e não tem no site deles, alguns sites apontam para links quebrados no site da ANS. Esse tal TISSNet valida os xmls, então é bom ter ele pra dizer pros convênios: FUNCIONA NELE! VOCÊS QUE TÃO ERRADOS.

Google é meu pastor e nada me faltará, encontrei esses caras:

http://www.solus.inf.br/beta/TissNet5.0.zip

http://www.unimed.com.br/pct/index.jsp?cd_canal=54473&cd_secao=54888

O programa é em java, instalei o java em uma máquina virtual qualquer, coloquei os schemas atualizados:

http://www.ans.gov.br/padroes/tiss/schemas/

Para pegar todos schemas, usei um “wget -r”

Detalhe, a merda do programa só funciona com o java 6, instalei o java7 e ficava irritando dizendo “O documento é inválido: nenhuma gramática encontrada”. Usando o jre6u32 funcionou.

Um blog muito ninja que ajuda muito a galera que apanha de TISSNet que achei:

http://blog.aplataforma.com.br/

 

 

Webm com html5

Pensei em reformular o site para da minha empresa, descobri problemas no público.

Ultimamente, observei que ninguém lê. Tem tanto lixo na internet, que nossos olhos só procuram palavras-chave, os adolescentes mal conseguem ler 140 caracteres e interpretar. No facebook tem fdp postando imagem escrita com letras grandes porque ninguém lê o que é escrito normalmente na timeline.

Inventaram uma sigla pra textos longos TLDR (Too Long, Didn’t Read). Com tanta imagem, video, áudio, podcasts, radio online, tv online, pra que ficar lendo textos longos? O negócio é procurar um videozinho explicativo, uma imagem com gráfico, ou um podcast contando uma história.

Admito que também faço isso, ler textos longos na internet requer concentração, paciência, muita vontade de querer entender o que se passa. Muitas vezes está no primeiro parágrafo do texto de 200 parágrafos, já não concorda com o lixo escrito pelo autor e começa correr os olhos pelo texto furioso em busca de algum conteúdo que interessa.

Com essas conclusões, percebi que os sites corporativos, institucionais de empresas pararam no tempo. No máximo um flash porco, um blipblop no som, uma barra social com curtir do facebook, um retweet, um g+ etc.

O chefão que fecha negócio nos assuntos que sou especialista, geralmente é super ocupado, não tem tempo nem pra cagar em paz, a internet tá entupida de lixo. Texto pode deixar a mensagem com duplo sentido. Com esse perfil, nunca esse cara vai ler um site padrão completo no estilo “bem vindo”, “quem somos”, “produtos”, “fale conosco”.

Poucos vão ler, eu poderia escrever uma receita de tapioca recheada com carne-seca no “quem somos” no site da empresa que passaria despercebido.

Em uma botecada com minha esposa, pensado no novo site, novo conteúdo, já bem bêbado surge a epifania.

Fazer site com vídeo interativo! Grande coisa, já existe isso no youtube de monte. Mas não achei uma empresa que eliminasse seu site e colocasse videos interativos no lugar de conteúdo padrão atual.

Alguns dizem: “mas e as pessoas que não tem banda larga? Como vão ver o site? Vai perder clientes assim!”

Minha resposta: “Se o cliente em potencial não tem dinheiro para pagar uma banda larga na empresa ou na casa dele, não vai ter dinheiro para contratar meus serviços”. Indo mais longe, se o tal cliente em potencial não gosta de gastar com tecnologia, ainda usa o pentium3 que pagou R$ 5.000,00 na época com windows 98, não sou eu quem vai convencer esse dinossauro a mudar.

Vamos ao que interessa. Criei esse post por causa da luta com os lixos de html5.

Fiz roteiro, fui em estúdio, contratei ator, gravamos tudo. Com os videos na mão, começou a brincadeira.

Escolhendo o codec:

Navegando por aí, vai ver que tem tabelas explicando onde roda o que. Logo de cara eu ignorei o IE. Já que só o IE9 roda vídeo, e só no formato h264. Vou testar o google chrome frame para não se preocupar com IE.

http://www.youtube.com/html5

Optei pelo container webm, que já roda no firefox a partir do 4, Opera, no chromium e google chrome. A compressão fica boa, é aberto e o tio Google tá apoiando total. Inclusive comprou a empresa que cuidava do webm e arreganhou a documentação e fonte.

Editei e salvei os pedaços usando o Pitivi no ubuntu no formato webm.

Html5, tag video no portal w3cschools.com:

<video width=”320″ height=”240″ controls=”controls”>
<source src=”movie.mp4″ type=”video/mp4″ />
<source src=”movie.ogg” type=”video/ogg” />
Your browser does not support the video tag.
</video>

Modifiquei um pouco, coloquei outras tranqueiras, aproveitei o evento “onended” para disparar javascripts.

<video width=”320″ height=”240″ autoplay=”autoplay” onended=”funcaoFromHell();”>
<source src=”movie.webm” type=”video/webm” />
</video>

Testando no chromium, no firefox, tudo ok funcionando localmente com file:///home/nils/video/blablabla.html

Quando coloquei em produção, a surpresa… o video não funcionava. Em http://www.minhaempresa.com.br/minhapagina.html só funcionava na última versão do chromium ou do google chrome. Firefox não funcionava.

Caçando por aí, achando que era bug do firefox, estudando os html5 perdidos por aí, descobri que faltava alguma coisa no cabeçalho do arquivo para avisar o firefox que é um video.

Quando eu acessava http://www.minhaempresa.com.br/meuvideo.webm pelo firefox, ele pedia para salvar. Não tocava automaticamente igual quando era local em file://

Pensei em usar pilantragem no php, para usar a função head com content_type ou algo do tipo. Mas fazer o server sofrer com load de videos em memória ram só para mudar o cabeçalho é muito porco.

Solução simples, editar o .htaccess que fica no servidor apache, com mod_rewrite.

<IfModule mod_rewrite.c>
AddType video/ogg .ogv
AddType video/webm .webm
AddType video/mp4 .mp4
</IfModule>

No final fiquei um pouco assustado com o chrome. Ele se virou pra funcionar, e o firefox não. Se o chrome deixar programadores editar html e javascript porcamente desconsiderando alguns padrões o chrome será o IE do futuro.

Vmware Player com Win98 raw

Sabadão fui no dentista para ver se o bafo de bode tinha jeito. Como sempre, os usuários olham sua profissão “programador” e perguntam: “legal, você conserta computadores também?”. Enquanto o doutor tá lá raspando o tártaro, com espelho, motorzinho, e tudo mais, trocando idéia comigo e perguntando se dava pra arrumar uma parada lá no micro velho.

A parada é a seguinte, tem um sistema de controle de consultório de dentista, com cadastro de pacientes, etc. Está no micro velho, que inclusive roda windows 98. Agora tem um micrão novo com winxp e na tentativa de copiar tal programa, o ninja que fez usou uma técnica para detectar se está no micro certo, e avisa: “Este micro não está autorizado a rodar esta porcaria de programa porco! ligue para o suporte e compre uma versão nova”.

Bom, o dentista pagou na época pelo tal programa porco, e não quer suporte nem atualização. Quando ele foi atrás da nova versão, a fabriqueta de software descontinuou aquela versão e agora a versão nova só funciona pagando por mês.

Sem os disquetes de instalação, sobra para o paciente do dentista ver se tem uma solução. Fim de semana chuvoso, beleza, vou levar esse micro velho pra casa e ver o que posso inventar para copiar o tal sistema.

Chego em casa e a muié me vê com um micro debaixo do braço. “PQP foi no dentista e volta com um micro? Já não tinha dito que tinha parado com o trampo de formatador?”.

Bom, fds com chuva, um desafio legal, poderia crackear esse software e colocar no piratebay para outros dentistas do Brasil já que ele está descontinuado pelo fabricante.

Resolvi fazer rodar o micro inteiro no vmware player. Pensei em usar o vbox, mas lembrei que o desempenho do vbox com win98 é muito ruim e não tem guestadditions.

Criada a imagem do enorme hd inteiro (15gb) em um linux qualquer:

dd if=/dev/sda conv=sync,noerror bs=64K of=/home/nils/hdwin98.img

depois rodar um programa em java que cria o vmdk.

http://sourceforge.net/projects/raw2vmdk/

java -jar raw2vmdk.jar hdwin98.img hdwin98.vmdk

achei que o jar ia criar um vmdk enorme de 15gb, mas só criou um arquivo de poucos bytes, de arquivo texto legivel pelo vmware player.

Após isso, máquina virtual deu boot, detectou uns hardwares do vmware e pronto. Win98 ligado com 16 cores, o tal DentistaControlFucker abriu.

Começou a saga para fazer funcionar o hardware do vmware corretamente.

Pro win98 extraído de um pc velho funcionar precisa:

– ter um cd do win98 copiado na máquina virtual, ou o iso montado.

– entrar no modo de segurança e arrancar TODOS dispositivos no gerenciador de hardware.

– iniciar no modo normal, e deixar detectar os dispositivos pnp, se isso não acontecer normalmente, entrar no painel de controle / adicionar novo hardware, mandar detectar tudo.

– reiniciar muitas vezes, típico de windows, até parar de detectar hardware.

– Aparentemente um dispositivo do vmware chamado pci-to-pci-bridge é detectado em loop infinito. Pesquisando por aí, descobri que ele é detectado 32 vezes. Então só adicionar as 32 vezes que tudo funcionará como esperado. Alguns dizem que dá para editar o arquivo vmx da maquina virtual e colocar pciBridge.present = False. Não tentei, adicionei todos.

– Depois de todos hardwares detectados, instalar o vmware-tools. Como não achei o iso de forma fácil, baixei a versão trial 60 dias de um vmware server fodão qualquer só pra pegar o iso do vmware-tools. Acabei achando um site da própria vmware que tem todas as atualizações do vmware-tools. Instalei o vmwarexpto trial fodão atoa.

O link é: http://softwareupdate.vmware.com/cds/vmw-desktop/ dentro de player/versao/build/windows/packages baixar o tools-winPre2k-x.y.z.exe.tar

Depois de descompactar o tar, chamar o executavel para extrair:

tools-winPre2k-x.y.z.exe /e dirqqer

Depois descompactar o .msi que aparecer, lá dentro tem o iso.

Agora tenho uma máquina virtual que funciona o tal programa travado só para ela. Tendo uma que funciona e outra que não funciona agora fica fácil estudar o programa do dentista e crackear com um editor hexa qualquer.

Vbox phpvbox

Então, como prometido, e de tanto passar raiva com o vmware, decidi migrar para o virtualbox. Vou explicar o que fiz.

O Ubuntu prometia sair com o vbox-ose (open source edition) mais novo, que vinha com vnc embutido. Pretendo usar tudo opensource para evitar problemas com licença nos servidor dos outros. Poderia usar a versão puel com rdp e mandar a oracle se foder, mas sou teimoso, e dizem por aí que quem usa software pirata vai pro inferno igual quem trepa antes do casamento (vamos todos de mãos dadas).

Assim que saiu o Ubuntu 10.10 instalei no meu micro cobaia o Ubuntu server 10.10 x64. Após alguns apt-get install saiu tudo ok. Usei o virtualbox-ose.

Legal, mas e para controlar as maquinas virtuais? Tudo na mão? Vboxheadless start, stop, ssh -Y userfromhell@192.168.0.x e rodar o virtualbox gui. Mas e para fazer isso tudo funcionar remoto?

Achei no site oficial do virtualbox isso aqui: http://code.google.com/p/phpvirtualbox/

Funciona muito bem, facil instalar, tem que arrancar a autenticação do vboxwebsrv,
Seguindo o wiki deles, só rodar o comando “VBoxManage setproperty websrvauthlibrary null ”
http://code.google.com/p/phpvirtualbox/wiki/Installation.

Primeiro problema, para as maquinas virtuais ligarem junto com o server, tem que editar na mão algum script de inicialização, então coloquei no próprio /etc/init.d/virtualbox-ose

Detalhe, o virtualbox cria as maquinas virtuais no diretório home do usuário logado (~/.VirtualBox). Então para ligar e desligar as maquinas virtuais usando o comando VBoxHeadless precisa ser com o usuário que criou a máquina. No caso o todo poderoso root pode chamar com o comando su  (su userqualquer -c “VboxHeadless –startvm nomedamaq_ou_id_da_maquina”).

Mas como eu vejo a maquina? Se eu rodo pelo Virtualboxgui tudo bem, e não tem rdp na ose, só vnc, e a api do vbox atualmente não tem chamada para vnc, só rdp.

Fiquei sabendo disso no projeto phpvirtualbox, aí fiz uma gambiarra master, já que fazer patch para corrigir a api do virtualbox e esperar os manda-chuva do projeto aceitarem o patch ia demorar muito.

http://code.google.com/p/phpvirtualbox/issues/detail?id=33

Então postei minha gambiarra lá no tracker do phpvirtualbox.

Funcionando em:
Ubuntu 10.10 x86 64bits server.
Virtualbox 3.2.8_OSE do apt-get install

passos:

passo 1 – renomear VBoxHeadless para VBoxHeadless_bin
mv /usr/lib/virtualbox/VBoxHeadless /usr/lib/virtualbox/VBoxHeadless_bin

passo 2 – criar um bash script com o nome /usr/lib/virtualbox/VBoxHeadless:
—-
#!/bin/bash
pos=`expr index “$2″ ‘;’`
argvnc=””
if [ $pos -ne 0 ]
then
pos=`expr $pos – 1`
argvnc=${2:pos:999}
argvnc=${argvnc/;/  –vnc –vncport }
fi
exec “/usr/lib/virtualbox/VBoxHeadless_bin” “$@” $argvnc
—-

passo 3 – setar permissões de execução
chmod +x /usr/lib/virtualbox/VBoxHeadless
chmod +s /usr/lib/virtualbox/VBoxHeadless

passo 4 – Nome da máquina deve ter ;numero_porta_vnc
Exemplo: Windows7Pirata;5900

Iniciar a maquina e conectar com um cliente vnc qualquer.

Pronto, tá feita a gambiarra.

Só fica esperto que o nome da maquina pode ter shell injection. Mas como o phpvbox é arreganhado e só o dono vai usar, então não tem problema.

O mouse fica um lixo sem instalar o virtualbox-additions. Com o tempo da pra pegar a manha do bagulho. Outro problema é o teclado, mesmo com vboxadittions, fica estranho no vnc. Aparentemente o shift está pressionado ao abrir a maquina virtual, e o teclado só funciona se o mouse estiver apontado na tela do vnc. Então tem que clicar no meio da tela, e apertar shift algumas vezes para o teclado funcionar.

O vnc do virtualbox deixa a desejar, mas só uso para instalar o sistema-não-muito-operacional. Depois configuro um acesso remoto qualquer. Geralmente ssh ou rdp do windows mesmo, alguns casos um servidor vnc dentro da maquina guest, uso o freenx também.

Ubuntu 10.04 adaptador usb wifi TPLINK tl-wn422g

Como sempre, suporte no micro dos outros é refresco.

Um notebook de parente que instalei ubuntu, o mesmo que tive problemas com a placa de video chipset sis. Usa uma rede sem fio sem vergonha usb interna, da realtek. O ubuntu 10.4 cru sem atualizações funcionava muito bem, aí atualizando a rede ficou horrivel.

Trocando o roteador por um mais potente, ficou melhor, mas é só sair da sala e ir pro quarto ao lado, que as paredes impediam de acessar a internet.

Culpando a placa de rede sem fio da realtek vagabunda (RTL8187B), já que nem no windows ela tem potência. No linux ela fica pior, mas mesmo no windows o alcance é vergonhoso.

Então, compramos no mercado livre um dongle usb da tp-link (tl-wn422g), com pigtail para colocar antena externa. No anúncio dizia ser chipset atheros. Legal, da até pra brincar de aircrack, dizem que atheros roda perfeito no madwifi, então vamos comprar. Ao chegar a encomenda… o Ubuntu não rodou de primeira.

A decepção por alguns dias, e quebrando a cabeça para ver como instalar, descobri que o chipset atheros do tal dongle que compramos é o ath9k_htc. As dicas encontradas era baixar os fontes, kernel headers, mudar configurações parametros fenomenais e tal. Foda, usuário ubuntu recompilando kernel e aplicando patches, complicou.

Pesquisando achei esse tópico:
http://georgia.ubuntuforums.org/showthread.php?p=9813793

Que mandou baixar esse wizard:
http://sourceforge.net/projects/ath9k-htc/files/

Aparentemente o wizard faz tudo o que o tutorial mandava, inclusive compilar o modulo para o kernel. Não sei se ele instala as dependências como kernel-headers, buildutils, gcc e outras coisas para compilar. Como eu já tinha esses pacotes de compilar instalados foi transparente.

No final funcionou bem, o alcance é muito bom, não comparei com windows, nenhum dos 3 notebooks está com windows instalado.

Detalhe que o iwconfig mostra somente 1mbps de velocidade conexão. Não testei pra saber se é real. O link de internet daqui é de 1mbps e ninguém vai trocar arquivos pela rede. Então um dia eu testo.

Quem sabe a canonical coloca um pacote do ath9k_htc na versão 11.04. Por enquanto, vamos assim mesmo.

Ubuntu 10.4 sun java jre

Odeio atualizações automáticas. Desde o windows 98. O sistema está ok, rodando, aí uma atualização sobe, e pronto, nada mais funciona, ou estraga alguma coisa.

Percebi em alguns dos meus “evangelizados para linux” que instalei ubuntu, ao atualizar para o 10.4 não conseguiam acessar suas contas no banco do brasil. E o cabeçudo do banco do brasil diz: vá para o site do java, e se vira negão! E o site do java não está preparado para usuários ubuntu.

Me ligavam e diziam: “qual eu instalo? Linux rpm? Linux rpm64? Linux 64? Linux?”

Bom, não tenho ubuntu rodando nas minhas máquinas pessoais, só nas dos outros, é mais fácil dar suporte por telefone do que windows ou um linux mais hardcore.

Descobri que o jre (java runtime enviroment) da sun saiu do repositório por motivos obvios, não é opensource, e colocaram o openjdk no lugar. Nunca consegui fazer funcionar aplicações java de terceiros no openjdk, desconheço as diferenças, nem sei o nível de compatibilidade. Só sei que não funcionou, vou ver um jeito de reportar isso pra comunidade.

Pesquisando por aí, encontrei que o jre da sun mudou de repositório, e não vem por padrão nas instalações. Então adicionar o repositório:

sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”

Ou o seu mirror favorito. Eu sugiro usar o da canonical direto, pra eles sentirem a merda que fizeram quando os logs e estatísticas de acesso para baixar opacote jre da sun causarem um certo consumo de banda.

Antes de instalar o jre da sun, desinstale qualquer coisa do openjdk, procure no gerenciador de programas a string “openjdk” na busca. Remova o que tiver instalado.

Depois atualizar a base de dados do repositório, e instalar o jre sun e uns lixos adicionais.

pode ser por linha de comando:
sudo apt-get update
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

Ou no gerenciador de atualizações, depois no gerenciador de programas.

Ubuntu Desktop 10.4 64 Sis 771/671

Percebi ultimamente que o indexador do google tem que ser mais rápido, pois tem coisas que a solução sai de um dia para o outro, e simplesmete o google demora mais de 2 meses para indexar. Para achar estas coisas, é preciso navegar à moda antiga… Acha um site, e vai navegando, lendo e clicando.

Neste caso, lendo, testando, reiniciando, matando o Xorg, configurando arquivos, etc.

Como alguns me conhecem, eu odeio atualizações automáticas, sempre desligo elas, pois os micros se atualizam, e nunca se sabe o que o programador do outro lado fez. Pode dormir hoje funcionando, e acordar amanhã com algum problema inexplicável.

Fiz a atualização do Ubuntu 9.10 em um notebook CCE com chipset SIS. Ao pesquisar, todos os tutoriais, desenvolvedores, hackers, técnicos, blogueiros, faxineiros, matadores de aluguel, atores pornôs e crianças de 8 anos de idade dizem em coro: “não compre chipset SIS”. Realmente não funciona direito nem no windows. É um chipset barato. Para quem vai usar cartas, planilhas e navegar na internet serve. Mas se vai ver youtube em tela cheia ou assistir um dvd, já começa sentir a porca qualidade do tal chip.

Desde minha infância brincando de linux, lembro que me fodi para instalar o chipset sis530 onboard em um pentium 233mmx com o slack.

Segue o link do cara que postou a solução mastigada:

http://diversosassuntosbrasil.blogspot.com/2010/04/sis-671-672-mirage-3-funcionando-no.html

Jquery draggable droppable resizable

Este foi um teste para implementar em um projeto ultra-secreto com jquery e jquery-ui. Já que levei uma surra pra fazer com javascript, então resolvi aprender jquery. Impressionante a facilidade.

No exemplo estou usando as apis hospedadas no google, mas eu baixei as minhas próprias para brincar localmente.

Só com esses poucos códigos em javascript consegui tudo o que eu queria, sendo que na minha versão anterior eu escrevi muitas linhas e várias bibliotecas. Foi tudo pro lixo, já que o jquery faz tudo bem melhor, funciona em varios navegadores e o código fica muito mais limpo e legível.

Isso seria algo como “arrastar um produto de uma loja virtual para seu carrinho de compras”. Ou no meu caso, manipular componentes de um form, odeio fazer form então estou montando um robô que faça isso por mim.

Mas com um pouco de criatividade, este recurso do jquery é muito interessante.

—-início—-

<!DOCTYPE html>
<html>
<head>

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

<script type='text/javascript'>
function get_tudo(obj){
alert("obj id: " + obj.attr("id") +"\n"+'x: ' + obj.css("left") + ' / y: ' + obj.css("top") + "\n"+"width: " + obj.css("width") + " height: "+ obj.css("height"));
}

$(document).ready(function(){
$("#div_drag").draggable();
$("#div_drag").resizable({
stop: function(event, ui) {get_tudo(ui.helper); }
});
$("#div_drop").droppable({
drop: function(event, ui) { get_tudo(ui.draggable); }
});
});
</script>

</head>
<body style="margin: 0px;">
<div id="div_drop" style="position: absolute; top: 100px; left: 0px; width: 800px; height: 500px; background-color: #0f0">
<div id="div_drag" style="position: absolute; top: 0px; left: 0px; width: 50px; height: 50px; background-color: #00f">
</div>
</div>
</body>
</html>

—-fim—-

WinXP sp3 virtual rdp

Mais uma das descobertas, vou anotar também…

Ao instalar uma máquina virtual com winxp sp3, definindo senha para o usuário padrão, para que seja possível acesso remoto pelo rdp.

Abrir a ferramenta de serviços, e colocar em automático os serviços de terminal.

Assim, logo que a máquina iniciar, será possivel logar remotamente.

gpedit

Magavilhas do windows… tem que executar algo pela rede, e ele fica avisando o usuário assustando com warning dizendo que é perigoso, atenção, virus, conteúdo de risco, etc.

Executando um compartilhamento \\nomedamaquina\compartilhamento\porcaria.exe aparece o aviso de segurança, com X vermelho na tela, assustando o pobre usuário newbie.

Procurando na net achei o seguinte:

executar gpedit.msc

config de usuario-> modelos administrativos->componentes do windows -> gerenciador de anexos

editar propriedades de “lista de inclusao de tipos de arquivo de baixo risco”

marcar ativado e colocar .exe

pronto, a merda tá feita, agora os worms se instalam sem avisar.