sábado, 4 de janeiro de 2020

Witcher 2: Direct3D 9 device initialization error - Solved

This post will fix a specific Witcher 2 game startup error.

Symptoms: Trying to start the game (by clicking the Launch Game link on the game splash screen) brings up a black screen and an error popup saying "Direct3D 9 device initialization error". You have an Nvidia graphics card with the latest drivers. 

Solution: Reinstall the graphics card drivers, but this time choose "custom (advanced)" unselect everything related to "3D Vision" and mark "clean install". When the reinstall is complete, reboot and try to run the game again.


quarta-feira, 13 de fevereiro de 2019

Instalar Battle.net no Linux OpenSUSE

Starcraft é um jogo que tradicionalmente sempre funcionou bem no Wine. Infelizmente, o instalador da Battle.net tem dado dor de cabeça pra quem tenta emular os jogos da Blizzard no Linux.
Neste post vou explicar como instalar o aplicativo da Battle.net e os dois Starcraft no OpenSUSE Linux, versão Leap 42.3, que é minha distro atual.

O OpenSUSE Leap não tem os pacotes mais recentes, porque visa estabilidade e não novidade. Caso você tenha instalado o Wine do repositório padrão, comece desinstalando-o. Se havia criado um wineprefix, apague-o. Por padrão, o wineprefix é a pasta ~/.wine. Renomear a pasta também funciona.

Para instalar a versão mais nova do Wine, adicione o seguinte repositório (YAST -> Software Repositories -> Add) :
http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_Leap_42.3/

O repositório varia de versão para versão do Opensuse. Confira aqui o link da sua versão.
Se pedir um nome para o repositório, diga "emulators". Em seguida, execute o seguinte comando para que os pacotes do repositório emulators sejam instalados em vez dos do repositório padrão:

zypper dup --from emulators --allow-vendor-change

Agora instale o pacote wine-staging. Essa é uma versão de teste do Wine, com os recursos mais recentes.
Agora basta baixar o aplicativo da Battle.net e instalar com o Wine.

terça-feira, 5 de fevereiro de 2019

Como ver a documentação da linguagem C no próprio terminal do Linux

Usuários de Linux geralmente sabem que é possível ver a documentação de um programa ou comando usando man nome-do-comando. Também é possível ver a documentação da própria linguagem C, com todas as funções, conceitos e boas práticas com o comando:

$ info libc

O programa info é parecido com man, mas ele mostra a documentação com tópicos navegáveis. O que esse comando faz é invocar info para mostrar a documentação da biblioteca libc, que é a implementação da linguagem C do sistema.
Também é possível buscar informação de uma função específica com, por exemplo:

$ info printf

Que irá mostrar várias funções semelhantes. É uma boa ajuda.

domingo, 27 de janeiro de 2019

Princípios gerais para o desenvolvimento de sistemas de TI na administração pública

Considerando o grande número de dificuldades que tenho encontrado ao usar, e ao ajudar no uso de,  sistemas das diferentes esferas do governo, decidi fazer uma lista de princípios que deveriam ser seguidos por todos os envolvidos em desenvolvimento de sistemas para a administração pública.
  1. Um sistema governamental deve ser tratado como uma necessidade vital para o cidadão, e não como um luxo ou um favor benevolente.
  2. O usuário deve ser tratado, por padrão, como um cidadão que deseja exercer seus direitos e cumprir seus deveres, e não como um criminoso ou um falsário.
  3. O acesso a um sistema não deve ser prejudicado por dificuldades administrativas, financeiras ou de pessoal que um órgão esteja enfrentando.
  4. O sistema deve ser feito para a realidade do país e do cidadão. Não é o cidadão que deve se adaptar à realidade do órgão.
  5. O acesso ao sistema deve ser feito da forma mais simples que seja segura.
  6. O usuário jamais deve ser forçado ou instruído a fazer algo inseguro para usar um sistema.
  7. O usuário jamais deve ser forçado ou instruído a utilizar uma tecnologia proprietária e paga para usar um sistema, exceto na falta de alternativas.
  8. Todo sistema deve ter um manual que explique todas as suas funcionalidades, que liste os problemas conhecidos e como resolvê-los.
  9. Mensagens existem para informar o usuário, e não apenas para facilitar debug.
  10. Um erro sério deve gerar uma mensagem por escrito e clara sobre qual o problema e, de preferência, como resolvê-lo.
  11. Caso, por questões práticas, uma mensagem não possa mostrar como resolver um problema, então ela deve ao menos indicar um site com a solução.
  12. Sistemas web devem funcionar em clientes que usam proxies e firewalls complexos, possivelmente usando caches, de preferência sem configuração adicional alguma.
  13. Caso a existência de um proxy ou firewall exija alguma configuração adicional, ela deve estar bem instruída por escrito no manual do sistema e em um site público, em uma área fácil de encontrar. 
  14. O uso do protocolo HTTP deve ser feito pela porta 80.
  15. O uso do protocolo HTTPS deve ser feito pela porta 443.
  16. O protocolo FTP não deve ser utilizado. 
  17. Todos os recursos de um site estatal devem estar em um domínio estatal (.gov.br, .jus.br, .edu.br, etc.). 
  18. Controles ActiveX não devem ser utilizados.
  19. Applets Java não devem ser utilizados.
  20. A tecnologia websocket não deve ser utilizada.
  21. Caso o front-end do site dependa de bibliotecas CSS ou Javascript, essas devem estar hospedadas no mesmo servidor que o próprio site.
  22. Em caso de indisponibilidade de ordem técnica, o usuário deve ser informado e não apenas deixado no escuro.
  23. Dizer "recomendamos o uso do navegador X" não é desculpa para que o sistema não funcione no navegador popular Y.

quarta-feira, 23 de janeiro de 2019

Bons jogos de estratégia simples para celular

Gostaria de recomendar aqui alguns excelentes jogos de estratégia minimalista para celular:
Eles são de estratégia minimalista, o que significa que eles fazem uso dos elementos mais básicos de estratégia e apenas eles. A ideia deles é basicamente a mesma. O mapa é bidimensional. Há um certo número de "bases" que produzem unidades e podem ser conquistadas.  É preciso usar as unidades para conquistar as bases. O objetivo final é aniquilar o(s) inimigo(s), desapropriando-o(s) de suas bases.

Esse estilo de jogo usa bem os recursos táteis do celular e é muito viciante. Muito bom para passar o tempo e viagens prolongadas e filas de espera.

terça-feira, 22 de janeiro de 2019

Sobre a falta de inteligência artifical em jogos

Uma coisa que sempre me irrita em jogos, tanto antigos quanto recentes, é a absoluta falta de emotividade. Quando se representa humanos, ou até animais, há certos comportamentos que são esperados e que não aparecem. São apenas ignorados e espera-se que o jogador apenas entenda que em um jogo não é assim que as coisas acontecem. Eu vou listar alguns exemplos:
  • Três NPCs atacantes estão trocando tiros com o jogador. O jogador mata dois deles rapidamente. É de se esperar que o terceiro entre em pânico e fuja. Também faria sentido ele demonstrar choque pela perda dos parceiros. No mínimo ele deveria se esconder, vendo que está enfrentando uma máquina mortífera. Mas não, ele apenas continua atirando, como se não tivesse nenhuma conexão com os outros NPCs.
  • O jogador fala com um NPC desconhecido na rua. É de se esperar que o NPC talvez se recuse a conversar e demonstre aborrecimento. Mesmo que aceite conversar, é razoável que ele ou ela espere uma pergunta do jogador. Mas não, o NPC diz uma frase pronta e segue seu caminho programado.
  • O jogador entra em um cenário e eis vários NPCs parados, esperando uma iniciativa por parte do jogador. É como se fosse um museu de cera: algo estático, efetivamente morto. 
Esses casos demonstram como a inteligência artificial ainda hoje em jogos é algo incompleto, visto como mais desnecessário do que gráficos e som. O foco na aparência é muito maior do que no comportamento. Não há esforço em imitar a vida, apenas em mostrar movimento. Isso é muito entediante e frustrante.

Jogos deveriam ter um mínimo de IA que tornasse crível a reação de cada NPC. Eu entendo perfeitamente os desafios que trazem essa afirmação, mas acredito que a essa altura do desenvolvimento da tecnologia isso já deveria ser possível.

quarta-feira, 16 de janeiro de 2019

Dicas para acessar sites que precisam de certificado digital

Usar sistemas web que dependem de certificados digitais pode ser uma tortura. Cada navegador impõe suas próprias restrições, cada token exige seu próprio driver e cada site traz suas próprias complicações. Vou tentar listar aqui o máximo de informação que eu souber para facilitar o acesso a esses sites e poupar o cabelo dos meus leitores. O foco do post são sites de natureza jurídica, mas as regras são gerais o bastante para servir à maioria dos sites que exigem certificados digitais.

Regras gerais

  • Certificados A1 são arquivos e podem ser instalados diretamente no navegador. 
  • Certificados A3 são objetos físicos e precisam ser conectados ao computador e configurados para funcionar.
  • Os termos A1 e A3 só existem no Brasil. Buscar ajuda em inglês para esses termos é inútil.
  • Cada modelo de certificado, para cada fornecedor diferente, precisa de um driver diferente. 
  • Alguns sites precisam de ActiveX e só funcionam no Internet Explorer.
  • Sites que precisam de applets Java precisam de uma instalação atualizada de Java e não vão funcionar nas versões mais novas do Firefox e do Chrome.
  • Infelizmente, é comum sites que usam a tecnologia de certificação digital não seguirem boas práticas de segurança, o que significa mensagens de alerta assustadoras pipocando a todo instante. A ironia é triste, mas real.

Passo-a-passo geral

  1. Instale a versão mais nova do Java. Seu seu SO for 64 bits, instale tanto as versões 32 bits quanto 64 bits de Java 
  2. Instale os drivers necessários. Se você usa cartão inteligente, você precisa de dois drivers: da leitora e do cartão. Cada modelo de certificado A3 precisa de um driver diferente. Baixe apenas os drivers recomendados pela sua fornecedora do cartão inteligente ou token.  Ou seja, se seu token for da Safenet, instale os drivers da Safenet e, se for da Certisign, instale os drivers da Certisign. É possível que o driver de uma fornecedora funcione com um token de outra fornecedora para alguns sites, mas eu garanto que não vai funcionar para todos os sites.
  3. Se estiver no Windows, instale a versão mais nova do Internet Explorer que for compatível com seu SO e instale a versão mais nova do Dotnet Framework. 
  4. Instale os seguintes navegadores: Pale Moon (versão 32 bits) e Navegador PJE.
  5. Se você usa firewalls ou proxies, libere completamente o site que você pretende acessar, em todas as portas. Sites que usam certificados digitais às vezes fazem uso de portas obscuras e não informam isso. Essa regra também se aplica a alguns anti-vírus.
  6. Se for usar o Pale Moon ou o Internet Explorer, instale toda a cadeia de certificados raiz da ICP-Brasil. Isso significa baixar um por um todos eles e aceitar a instalação manualmente.
  7. Especificamente para sites jurídicos, instale o Shodô e o PJE-Office.
  8. Reduza a segurança do Java ao mínimo possível. Abra o painel de controle Java, vá na parte de segurança, marque "Alta" e adicione os sites que você quer acessar na lista de exceções de sites. Depois vá na aba "Avançado" e marque tudo que disser "não verificar" ou "desativar verificação".
  9. Ative os pop-ups no seu navegador.
  10. Se alguma coisa deu errado em um navegador, tente em outro. 
Espero que seja útil.