segunda-feira, 8 de outubro de 2018

41

Amanheceu um glorioso 7 de Setembro no planalto central. A esplanada dos ministérios estava pronta para o desfile da independência. Um enorme objeto de formas nunca vistas ocupava o gramado. Os primeiros trabalhadores a passarem por ali pensaram tratar-se de alguma estrutura para as comemorações cívicas. A polícia e o exército também não deram importância apesar do volume imenso que fazia sombra sobre vários prédios.

O desfile corria aborrecidamente igual a todos os outros quando uma abertura descomunal começou a surgir na lateral do objeto que ainda despertava curiosidade. O presidente estava ansioso para saber que novidade surgiria dali e apenas isso o mantinha acordado.

Assim que uma fresta formou-se, o objeto exalou uma fumaça densa. A abertura separou-se aos poucos e transformou-se lentamente numa rampa. Desceria algum cantor famoso? A multidão gritava e aplaudia.

Um ruído ensurdecedor calou a todos. O presidente ficou preocupado que essa falha técnica afetasse sua imagem.

Então, várias criaturas pequenas desceram pela rampa. Tinham a aparência de camarões, mas eram de vários tons de verde e alguns eram azulados. A multidão aplaudiu.

Duas dessas criaturas dirigiram-se ao palanque presidencial. A segurança ainda achava graça. Pararam a alguns metros das autoridades e exibiram uma figura com muitos riscos. Quarenta e um riscos.

Quando um soldado começou a ficar nervoso e apontou seu rifle aos visitantes, o som ensurdecedor tocou novamente. A dor intensa levou muitos ao chão.

Agora todos perceberam que aquilo não fazia parte do desfile. Eram visitantes de outro mundo! O pânico espalhou-se rapidamente e a multidão dispersou-se em minutos. Alguns poucos fãs de Guerra nas Estrelas ficaram para conversar com os visitantes.

- Quarenta e um é um número primo, disse um, orgulhoso de sua descoberta.

Buscaram um papel num ministério próximo e desenharam 43, o próximo número primo.

Os visitantes não pareceram muito satisfeitos. Trouxeram um pequena artefato de ferro e um desenho com 26 traços.

- Ferro! Vinte e seis é ferro! Eles querem o elemento quarenta e um. O que será isso?

A Wikipédia logo revelou sua utilidade: era nióbio. Os visitantes queriam nióbio.

O presidente reuniu-se com os militares e o ministro de minas e energia. Concordaram que haveriam de pedir algo em troca. Os visitantes adiantaram-se e fizeram uma pequena demonstração com uma arma que parecia emitir um laser.

Os militares ficaram muito impressionados e exigiram que o nióbio fosse trocado pelas armas novas. Fizeram um desenho com 1.000 riscos. Após extensa negociação mimética, o acordo final foi de cerca de mil toneladas de nióbio por 500 armas (os engenheiros da UnB estavam certos de que poderiam descobrir como produzir mais).

Os visitantes trabalharam durante meses levando a carga até uma nave que orbitava marte, cujo clima eles pareciam apreciar mais.

Finalmente, eles partiram e deixaram o pagamento com o exército.

Durante meses,  tentaram de todas as formas usar os artefatos sem qualquer sucesso e lamentando muito não terem pedido um manual, mesmo que em língua alienígena (não podia ser muito pior que chinês, afinal). Quando finalmente desistiram, entregaram um par de artefatos aos engenheiros do ITA e outro aos engenheiros da UnB.

Um mês depois, o ministro de Ciências e Tecnologia levou o resultado ao presidente.

- Presidente, o resultado não é bom.
- Fale logo, homem, qual o problema?
- É só uma luzinha que pisca.
- Putaquepariu! Como é que eu vou ficar? Entreguei uma fortuna para esses ETs por nada??
- Parece que sim, presidente.
- Engraçadinho, tu vais levar a culpa; eu é que não vou ficar mal com isso.
- Não se preocupe presidente, o povo não reclamou quando os gringos ficaram com o pré-sal. Isso não é nada.



quinta-feira, 4 de outubro de 2018

Extraindo a Versão de Vários Arquivos .class

Um erro "Bad version number in .class file" estava no meu caminho, então resolvi descobrir quais as diferentes versões de classes que estavam sendo usados.

A solução natural seria usar o executável javap, mas ele depende do classpath e aceita o nome de uma classe, não o nome de seu arquivo.

Felizmente, o Linux não nos deixa na mão em questão de manipulação de arquivos. O executável xxd permite extrair bytes quaisquer.

find /tmp -name *.class | xargs -I{} xxd -p -l4 -s4 {} | sort | uniq

Usei o find para encontrar todos os .class no diretório onde estavam. Depois o xargs usei para invocar o xxd com os seguintes parâmetros:
  • -p imprime o resultado de forma simplificada;
  • -l4 imprime quatro bytes;
  • -s4 inicia no byte 4 (quinto byte).
Finalmente, o sort | uniq elimina as repetições.
O resultado final foi:

00000031
00000032

E isso significa que há classes compiladas com java versão 5.0 e versão 6.0.