Pensando do ponto de vista do videogame, quais seriam os principais tipos (arquétipos) de personagens?

Resposta originalmente postada no Quora, por Renato de Pìerri em 28/07/2019

Personagens Clássicos

Por que contamos histórias? A motivação de contarmos histórias, segundo Carl Jung, pode ser explicada a partir da noção do inconsciente coletivo. Trata-se de um conhecimento nato que podemos passar a vida inteira sem nunca o notarmos.

Dentro desse inconsciente coletivo há temas universais e personagens que se manifestam em nossa cultura na forma de histórias e estão presentes na literatura, música, arte, filme e jogos.

O inconsciente coletivo do Jung é a base de nossa conexão a certos tipos de personagens universais e esses personagens são utilizados em toda a área do entretenimento para aumentar a conexão entre a audiência e a história.

Herói:

O herói é o personagem central em um jogo single player. Ao criar um personagem herói, tenha em mente que esse herói será o avatar do jogador e o jogador deve se identificar e gostar desse personagem. Ao herói sempre é apresentado um problema no início do jogo e ele entra em uma jornada, física ou emocional, a fim de resolver o desafio. O herói executa a maioria das ações e assume a maioria dos riscos e responsabilidades. Luke Skywalker é um tipo clássico de personagem herói

Fonte da foto: Star Wars Luke Skywalker Wallpaper

Sombra (Shadow):

O sombra é um personagem extremamente importante. Ele representa o oposto do herói, é o vilão da história. Trata-se do responsável por todos os problemas do herói. Dependendo do jogo, esse personagem fica escondido até chegar ao climax da história e nada impede que o shadow seja o lado negro do herói. Darth Vader, por exemplo.

Fonte da foto: Darth Vader Wallpaper

Mentor:

O mentor orienta o heroi dentro da trama da história (ou jogo). Provê informações para o herói, faz a função de conselheiro e pode orientar pois tem experiência prévia. Obi Wan Kenobi e Yoda são exemplos de mentores. Ah! O mentor também pode dar orientações furadas e colocar o herói em apuros.

Fonte da foto: Yoda Walpaper

Aliado:

O aliado é um personagem que ajuda na evolução do heroi durante a jornada e pode ajudá-lo em tarefas difíceis de se executar sozinho. Han Solo e Chewbacca do Star Wars são exemplos de aliados.

Guardião:

O guardião está lá para “atrapalhar” o progresso do herói se valendo de todas as artimanhas que forem necessárias, até que o herói prove seu valor e o guardião o libere. Podemos considerar um guardião clássico a Esfinge que guarda os portões de Tebas na peça grega Édipo. A Esfinge (guardiã) testa o Édipo (herói), propondo uma charada. Édipo a responde corretamente e consegue entrar em Tebas continuando sua jornada, caso contrário seria devorado.

Trickster (trambiqueiro):

O trambiqueiro é um personagem neutro que está lá para enganar. Pode causar um dano severo por conta de suas pegadinhas, interrompendo a evolução do personagem ou podem ser um personagem cômico para suavizar a trama da história. C3PO E R2D2 são exemplos de personagens trickster e podem assumir a posição de co-adjuvante do heroi ou até assumir o papel de sombra.

Herald (mensageiro):

O mensageiro serve para facilitar a mudança de rumo (ou de level) na história e fornecer orientação. Um exemplo de personagem ‘herald’ seria a princesa Leia que pede por ajuda e acaba motivando Luke Skywalker a seguir sua jornada.

Protagonista:

Dentro dos arquétipos de Carl Jung, o primeiro deles é o protagonista, que pode se confundir com o arquétipo do herói. Trata-se do personagem principal. Jogos single-player são centrados nesse personagem e a história do jogo é contada a partir do ponto de vista do dese personagem, mesmo que o jogo não seja em primeira pessoa. Gordon Freeman em Half-Live, por exemplo.

Fonte da foto: Half Life 2

Uma das funções do protagonista é levar a história adiante, agir antes de reagir e fazer as coisas acontecerem. O protagonista pode até perder o controle por conta de um ataque, mas ele sempre recupera o controle da situação. Lara Croft (Tomb Raider) e Ezio Auditore da Firenze (Assasin’s Creed II) são protagonistas.

Outro ponto importante no protagonista é que ele tenha falhas como qualquer humano, aproximando-o de sua audiência e gerando empatia. As falhas podem ser na forma física como uma paralisia, ser feio, ter culpa por um crime cometido no passado ou ser como o Super Homem que não aguenta nem uma Kriptonita.

Antagonista:

É o contrário do herói. É o vilão do jogo. Do ponto de vista do Jung seria o arquétipo do sombra, porém nem sempre o antagonista é malvado. O pró e o antagonista podem simplesmente ter pontos de vista diferentes como liberal x conservador, privado x público ou mesmo estilo de vida diferentes entre um e outro.

Caso protagonista e antagonista tenham um mesmo objetivo em uma história, eles podem se aliar, o que é chamado de união de opostos, dado que a resolução de um determinado conflito é mais importante no momento.

Co-Protagonista:

Co-Protagonista une forças com o protagonista na história. Muitas vezes esses personagens aparecem em games multiplayer massivos (MMOs) que precisam de times. Esse tipo de personagem pode iniciar no jogo como antagonista, mas no decorrer do game se tornam co-protagonistas a partir de um determinado evento ou embate.

Fonte:

NOVAK, Jeannie. GAME DEVELOPMENT ESSENTIALS: AN INTRODUCTION. 3. ed. United States: Delmar Cenage Learning, 2012. 514 p. ISBN 13: 978-1-111-30765-3.

Cuidados ao instalar o Maven no Windows

Se você instalou o Maven para Rodar com o Windows e está tentando usar o Oracle JDeveloper ou alguma outra IDE da Oracle e as coisas não estão funcionando muito bem, talvez seja a hora de ajustar algumas configurações no seu Windows.

  1. Baixe o Maven do site da Apache próprio para o Windows, descompacte e mova a pasta com o Maven para a pasta Arquivos de Programas ou para o diretório de sua escolha.
  2. Em propriedades do sistema do Windows, adicione a variável de ambiente M2_HOME com o valor do caminho do Maven
  3. Adicione a variável de ambiente M2 nas variáveis ​​de ambiente com o valor %M2_HOME%\bin
  4. Adicione a variável de ambiente MAVEN_OPTS com o valor -Xms256m -Xmx512m
  5. Adicione a variável de ambiente JAVA_HOME. Ela deve apontar para o diretório raiz do JDK (o diretório do JRE não serve para nada).
  6. Inclua %M2% na variável de ambiente Path
  7. Inclua %JAVA_HOME%\bin na variável de ambiente Path
  8. No prompt de comando execute mvn –version para verificar se o Maven instalou ok.

Para saber mais: JDeveloper / Maven integration

Post publicado em 21/11/2019 por Renato de Pierri

Qual é a diferença entre requisitos funcionais e requisitos não funcionais na engenharia de software?

Resposta originalmente publicada no Quora em 01/11/2019

Olha, dei uma lida no Sommerville e lá está escrito mais ou menos o seguinte:

Requisitos funcionais:

É a definição das funcionalidades que um sistema de software deve fornecer. Esse tipo de requisito informa como o sistema deve trabalhar os dados de entrada e quais informações devem ser geradas na saída.

Serve para definir o comportamento do sistema em situações específicas. Os requisitos funcionais também servem para definir o escopo do sistema de software ao limitarem explicitamente o que o sistema deve ou não deve fazer.

Requisitos não funcionais:

Esse tipo de requisito trata das limitações nos serviços ou funções oferecidas pelo sistema baseando em parâmetros como “número de transações por segundo”, “número de usuários operando o sistema ao mesmo tempo” ou limitações impostas por padronizações, por exemplo.

Requisitos não funcionais muitas vezes se aplicam à implementação e operação do sistema como um todo ao contrário de focar em funcionalidades e ou serviços individuais de sistemas.


Na verdade, há uma linha não muito clara entre o que é requisito funcional e não funcional. Dependendo da abordagem isso pode ficar confuso.

Um requisito de usuário de segurança como limitar o tempo de acesso de usuários autenticados, pode se enquadrar como requisito não funcional.

Entretanto quando visto com mais detalhes, o requisito de limitar o tempo de acesso de usuário pode se desdobrar em outros requisitos claramente funcionais.

Esse desdobramento pode levar o requisito da limitação do tempo de acesso a ser tratado como um requisito funcional.

Isso mostra que requisitos de um sistema de software são interligados e um requisito pode gerar limitações, influenciar ou mesmo acabar gerando outros requisitos.

Os requisitos de sistema entretanto não só especificam serviços ou funcionalidades do sistema.

Eles também especificam o que é necessário para assegurar que os serviços e funcionalidades sejam efetivamente entregues.

Fonte: SOMMERVILLE, Ian. Software Engineering: Tenth Edition. 10. ed. Boston: Pearson, 2016. 796 p. ISBAN 13: 978-0-13-394303-0. página 91

Como o levantamento de histórias e cenários podem ajudar na elucidação de requisitos para o desenvolvimento de um sistema de software?

Pergunta publicada originalmente no Quora em 01/11/2019

Aí galera, segue a minha visão sobre o assunto depois de dar uma lida no Sommerville.

Um dos objetivos do processo de elucidação de requisitos é conhecer o trabalho que os stakeholders (interessados no projeto) querem implementar no sistema, de forma a ajudá-los em suas atividades.

Durante a elucidação de requisitos, os engenheiros de software trabalham junto com os stakeholders para entender o domínio da aplicação.

Os engenheiros de software levantam as atividades trabalhadas, os serviços, as funcionalidades que precisam ser implementadas no sistema, bem com tomam conhecimento da performance desejada e assimilam as limitações impostas pelo hardware, dentre outros pontos.

Dado que pessoas, incluindo stakeholders, normalmente tem dificuldades em definirem requisitos de forma abstrata, muitas vezes eles são levantados a partir de exemplos da vida real, mais fáceis de serem obtidos.

Pessoas são capazes de descrever como enfrentam situações particulares ou são boas em descreverem como seria possível, a elas, melhorarem seus métodos de trabalho.

Levantamento de histórias e cenários é uma ferramenta poderosa para que engenheiros de software capturarem esse tipo de informação, normalmente descrita em linguagem natural.

De posse dessas histórias e cenários, o engenheiro de software os utiliza nas reuniões com os stakeholders para definir quais funcionalidades do software devem ser implementadas e ou deprecadas.

Para saber mais:

SOMMERVILLE, Ian. Software Engineering: Tenth Edition. 10. ed. Boston: Pearson, 2016. 796 p. ISBN 13: 978-0-13-394303-0. –

Tópicos:

  • Requirements elicitation
  • Stories and scenarios.

Em que situação um programador pode dizer “ainda bem que sei programar”?

Isso não é um tutorial.

Pergunta adicionada no Quora em 12/10/2019

Esses dias eu estava acessando alguns sites e começou a dar aquele maldito erro informando que a conexão não é confiável, cada vez que tentava acessar sites do governo.

Isso acontece porque o governo emite seus certificados de segurança e por algum motivo o certificado raiz não consta na instalação do Windows e Linux. Fica faltando e é uma droga.

Como faz para resolver esse B.O?

O incomodado tem que sair procurando o certificado certo, fazer o download e instalar. É um inconveniente no calor das entregas das tarefas do escritório, fora que se formatar o computador, tem que fazer tudo de novo.

Isso é um saco para quem manja de TI e deve ser Aramaico para quem é de humanas.

Bom, recentemente resolvendo esse problema no meu micro, obviamente tendo dificuldades para achar o certificado correto, descobri que uma boa alma do Instituto Nacional de Tecnologia da Informação fez um prensadão de todos os certificados existentes e postou nessa página aqui -> Certificados das ACs da ICP-Brasil – Arquivo Único Compactado.

Esse funcionário público que teve essa ideia merece uma caixa de Bis de presente. Quem o conhecer, mande os parabéns!

Uma vez encontrado um arquivo com todos certificados, bastaria descompactar e instalar os certificados, mas aí o problema complica:

São 164 certificados (em 2022)!

  • Cada um tem que dar uma meia dúzia de cliques nos locais certos.
  • Se fizer errado, o certificado não instala direito, fica tudo zoado e não funciona.
  • Há risco de esquecer de instalar alguns certificados.
  • Há o risco de ficar reinstalando certificados já instalados.
  • O processo é demorado pra caramba, leva cerca de 1 hora por computador, muito tempo para uma pequena empresa, por exemplo.

“Ainda bem que sei programar” entra a partir desse ponto.

Após uma breve internetada, achei um script de PowerShell, o ajustei para as minhas necessidades e mandei rodar.

Como eu fiz?

O código pronto está aí embaixo. em linhas gerais:

  • Baixei e descompactei o arquivo em um diretório temporário
  • Abri o editor do PowerShell e naveguei até o diretório
  • Dei um “ls>diretorio.csv” para listar o diretório em um arquivo csv
  • Abri o arquivo no Excel e com umas fórmulas, montei o caminho dos arquivos
  • Depois usei essa informação para montar o script

Instalou todos certificados de uma vez em menos de 1 minuto.

Na prática fazer isso pela primeira vez levaria o mesmo tempo que fazer manualmente, mas dessa forma todos certificados foram instalados corretamente (com certeza), com os cliques corretos e sem esquecer de ninguém. Fora que nas próximas, supostamente sofrerei menos com a instalação de certificados, fora que hoje 07/2022 eu tive de repetir essa instalação e rodou em minutos, pois eu já tinha feito o caminho das pedras 🙂

Programadores entenderão:

O script está aqui, é específico para minha máquina e não segue nenhuma das boas práticas de programação, mas resolveu o B.O.

$caminhos ="C:\Users\antenor\Downloads\ACcompactado\AC-A-DIGIFORTE-RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-ACD-v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-CERTISIGN-ICP-BRASIL-CODE.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-CERTISIGN-ICP-BRASIL-SSL-G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-CERTISIGN-ICP-BRASIL-SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-DIGITAL-MAIS.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-INFOCO-DIGITAL-v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-PRIME-v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-PRODESP-RFB-v1.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-PRODESP-SP-SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-PRODESP-SP.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-QUALITYCERT-v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-REDEBRASIL-v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SEMPRE-RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SERASA-SSL-EV.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SERPRO-SSLv1-v10.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SOLUTI-CS-EV.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SOLUTI-SSL-EV-G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SOLUTI-SSL-EV.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SOLUTI-v5-G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-SyngularID.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-VALID-CODE-SIGNING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC-VALID-SSL-EV.crt",
"C:\Users\antenor\Downloads\ACcompactado\ACIMPRENSAOFICIALRFBSSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_A_R_A_CERTIFICACAO_DIGITAL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_BoaVista.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_BR_RFB_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CACB_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CACB_RFB_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTBANK_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTDATA_BRASIL.crt",
"C:\Users\antenor\Downloads\ACcompactado\ac_certfacil_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\ac_certifica_anapolis_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTIFICA_MINAS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTISIGN-JUS_CODESIGNING_G6.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTISIGN-JUS_G5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTISIGN-JUS_SSL_G6.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_G7.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_JUS_G6.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_Multipla_CodeSigning.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_Multipla_G7.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_Multipla_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_RFB_G5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_SPB_G6.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Certisign_Tempo_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CERTMAIS_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CNDL_RFB_v3.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_CONSULTI_BRASIL_RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Defesa_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Digital.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Digitalsign_ACP.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITALSIGN_ACP_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITALSIGN_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITALSIGN_RFB_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITALSIGN_RFB_G3.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITALSIGN_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITAL_MULTIPLA_G1.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DIGITAL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DOCCLOUD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_DOCCLOUD_RFB_v2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_EGBA_Multipla_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_EGBA_RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_FCDL_SC_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_FENACOR_RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Imprensa_Oficial_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Imprensa_Oficial_SP_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Imprensa_Oficial_SP_RFB_G5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Imprensa_Oficial_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Instituto_Fenacon_G3.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Instituto_Fenacon_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Instituto_Fenacon_RFB_G3.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_INTERCERT_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_LINK_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_LINK_RFB_v2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_MAXIMUS_TECNOLOGIA_E_EVENTOS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_META_CERTIFICADO_DIGITAL_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\ac_mult_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Notarial_RFB_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_OAB_G3.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_ONLINEBRASIL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_ONLINE_RFB_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_PLANO_DIGITAL_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_PREMIUM_CERTIFICADORA_DIGITAL_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_BR.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_Codesigning.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_Codesigning_v2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_PRODEMGE_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_MG.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_MG_v2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_RFB_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Prodemge_SSL_v2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_PRODESP_v1.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_REDE_IDEIA_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_REDE_IDEIA_RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SAFEIDBRASIL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SAFETECH_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SAFEWEB_CD.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SAFEWEB_RFB_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SAFEWEB_TIMESTAMPING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Safeweb_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Secretaria_da_Receita_Federal_do_Brasil_v4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SENHA_DIGITAL_BRASIL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Serasa_JUS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Serasa_RFB_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SERPRO_JUS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SIC_BRASIL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SIC_RFB.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SIG_BRASIL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SINCOR_G4.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Sincor_RFB_G5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SINCOR_RIO_RFB_G2.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI-JUS_CODESIGNING_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI-JUS_SSL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI-JUS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Soluti.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI_Multipla_CODESIGNING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI_Multipla_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI_Multipla_TIMESTAMPING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Soluti_Multipla_v1.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI_Multipla_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SOLUTI_RFB_V5.crt",
"C:\Users\antenor\Downloads\ACcompactado\ac_soluti_spb_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_Soluti_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_SyngularID_Multipla.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID-JUS_CODESIGNING_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID-JUS_SSL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID-JUS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_BRASIL_CODESIGNING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_BRASIL_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_BRASIL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_PLUS_CODESIGNING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_PLUS_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_PLUS_TIMESTAMPING.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_PLUS_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_RFB_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_SPB_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\AC_VALID_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_ALTERNATIVE.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_da_Casa_da_Moeda_do_Brasil_v3.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_da_Justica_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_da_Presidencia_da_Republica_v4.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_da_Presidencia_da_Republica_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_do_Serpro_Final_SSL.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_do_Serpro_Final_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_INFOCOMEX.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_INVIA.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_NACIONAL.crt",
"C:\Users\antenor\Downloads\ACcompactado\AUTORIDADE_CERTIFICADORA_PROCERTI.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_SDI.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_SEFAZCE.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_SERPRORFBv5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Autoridade_Certificadora_Serpro_v4.crt",
"C:\Users\antenor\Downloads\ACcompactado\ICP-Brasil.crt",
"C:\Users\antenor\Downloads\ACcompactado\ICP-Brasilv10.crt",
"C:\Users\antenor\Downloads\ACcompactado\ICP-Brasilv11.crt",
"C:\Users\antenor\Downloads\ACcompactado\ICP-Brasilv2.crt",
"C:\Users\antenor\Downloads\ACcompactado\ICP-Brasilv5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Instituto_Nacional_de_Metrologia_Qualidade_e_Tecnologia_INMETRO.crt",
"C:\Users\antenor\Downloads\ACcompactado\Serasa_AC_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Serasa_Autoridade_Certificadora_Principal_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Serasa_CD_SSL_v5.crt",
"C:\Users\antenor\Downloads\ACcompactado\Serasa_CD_v5.crt"

foreach ($caminho in $caminhos) {
	$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($caminho)
	$rootStore = Get-Item cert:\LocalMachine\Root
	$rootStore.Open("ReadWrite")
	$rootStore.Add($cert)
	$rootStore.Close()
}

Como que eu começo um manual?

Pergunta originalmente respondida no Quora em 28/08/2019

Antes de começar:

  • Tem gente que tem muita dificuldade para ler e entender textos. Pense no seu público. Dependendo da situação, um manual com figuras, sem palavras pode ser a solução.

Há basicamente dois modos de criar um manual:

Criando o sumário (ou índice) primeiro

  • Faça o índice constando todos os tópicos e sub tópicos na sequência que o manual deve abordar.
  • Preencha cada um dos tópicos listados no índice.

Criando o sumário por último

  • Escreva sobre o produto da maneira que se sentir confortável, use parágrafos e sentenças pequenas, um para cada assunto.
  • Organize os parágrafos na sequência lógica que você entender melhor.
  • Agrupe os parágrafos em tópicos.
  • Mude o Word para o modo “Estrutura de Tópicos” (1) e configure o nível dos parágrafos na área de “Ferramentas de Estrutura de Tópicos” (2) conforme print abaixo:
Exemplo de estrutura de tópicos
Exemplo de estrutura de tópicos.
  • Feche o modo de exibição da estrutura de tópicos, vá para a página que você quer inserir o sumário (índice) e o insira selecionando a aba Referências (1) e clicando no ícone Sumário (2).
Exemplo de criação de índice
Exemplo de criação de índice.

Considerações ao criar manuais:

  • O manual deve ter capa, nome do autor nem que sejam as iniciais ou a matrícula funcional, número da versão, data da publicação e um email ou telefone para comunicar falhas.
  • A primeira versão do manual, mesmo revisada, sempre será uma droga. Basta divulgar para o público geral e alguém não irá entender o que foi escrito, irão achar erros e uma nova versão deverá ser liberada.
  • Peça para seu inimigo revisar o manual, é uma chance de estreitar laços profissionais e mitigar conflitos. Aceite as sugestões propostas.
  • Toda figura ou gráfico devem ser numerados e referenciados no texto. Colocou uma figura ou gráfico, o texto tem que falar claramente deles. Esses elementos gráficos não podem ser um boi voando no manual. Esses elementos gráficos devem estar localizados próximos de sua explicação escrita.
  • Manuais são lineares. O leitor não pode ficar trocando de páginas para entender o manual. Não fale na página 11 de um assunto abordado na página 5. Ou se junta os assuntos ou se repete o assunto.
  • Não use frases negativas como: não ligue, não feche, não solte e prefira frases afirmativas como: mantenha desligado, deixe aberto, assegure que esteja fixo.
  • Considere que alguns leitores irão entender melhor a frase “não deixe o motor da bomba ligado pois ele irá queimar, e outros leitores irão entender melhor a frase “para evitar que o motor da bomba queime, assegure que ele esteja desligado“. Em pontos importantes, coloque as duas frases.
  • NÃO USE LETRAS GARRAFAIS, NÃO FIQUE DESTACANDO O TEXTO COM NEGRITO E NÃO FIQUE USANDO O ITÁLICO COMO SE FOSSE PIPOCA DE CINEMA. ISSO VAI DEIXAR SEU LEITOR P*** DA VIDA. QUEM É ESSE AUTOR FOLGADO QUE FICA DANDO ORDENS IDIOTAS?
  • Evite usar letras em caixa alta bem como aplicar formatações em negrito e itálico constantemente. Isso polui o texto e o leitor pode fazer exatamente o contrário do que está escrito, só para desacreditar o manual. Note que acabei de colocar o texto negativo e positivo.
  • Ao usar siglas, para evitar confusões, sempre explique o que elas significam. Se o manual constantemente usa a frase “Guarde o Local Bem Trancado”, tudo bem associar com a sigla “GLBT”, desde que isso seja explicado na primeira vez que a sigla for utilizada como: Guarde o Local Bem Trancado (GLBT). Considere criar um dicionário de abreviações.
  • Coloque no rodapé o número das páginas no formato “Página 1 de 14”. Conforme figura abaixo, vá na aba “Layout” (1) do Word e use o recurso “Partes rápidas” (2). Escolha a opção “Campo” (3) e os campos “Page” e “NumPages” na janela que irá abrir.
Inserindo número da página atual e número total de páginas
Inserindo número da página atual e número total de páginas.
  • Formate a página com bordas. Isso é feito na aba “Design” (1), “Bordas de Página” (2). Configure na janela “Bordas e Sombreamento” (3) a borda da página de acordo com sua preferência.
Inserindo bordas na página.
Inserindo bordas na página.

Use quebra de seções e quebra de páginas que fica na aba “Layout” para organizar o texto e abuse do modo de exibição”Estrutura de Tópicos” que fica na aba “Exibir” para organizar o documento inteiro, incluindo o sumário.

Espero que ajude.

Em lógica digital, qual é a diferença entre um inversor comum e um inversor Schmitt-trigger?

Resposta publicada originalmente no Quora em 26/07/2019

Em eletrônica:

Um Schmitt trigger é um circuito comparador com histerese implementado pela aplicação de realimentação positiva à entrada não inversora de um comparador ou amplificador diferencial.

Ele é um circuito ativo que converte um sinal de entrada analógica em um sinal de saída digital.

O circuito é chamado de “gatilho” (trigger) porque a saída retém seu valor até que a entrada mude o suficiente para disparar uma mudança no sinal de saída.

O Schimitt trigger possui dois níveis de disparo que são o ‘limiar superior’ e o ‘limiar inferior’ conforme indicado na função de transferência exibida abaixo:

Os eixos horizontal e vertical correspondem respectivamente à tensão de entrada e de saída. T e −T são os limites de comutação, e M e −M são os níveis de tensão de saída.

O diagrama abaixo compara o comportamento de um circuito Schimitt triger com um buffer, ambos não inversores.

Configuração inversora e não inversora:

Na configuração não inversora, quando a entrada é maior que o limiar superior, a saída é alta. Quando a entrada está abaixo do limiar inferior, a saída é baixa e, quando a entrada está entre os limiares inferior e superior, o valor na saída do circuito é constante.

Na configuração inversora, quando a entrada é maior que o limiar superior, a saída é baixa. Quando a entrada está abaixo do limiar inferior, a saída é alta e, quando a entrada está entre os limiares inferior e superior, o valor na saída do circuito é constante.

Esse comportamento de limiar de disparo duplo que o sinal de saída muda quando o sinal de entrada atinge valores limiares distintos, é chamada de histerese. Podemos até dizer que o Schimitt trigger possui memória e pode atuar como um multivibrador biestável (latch ou flip-flop).

Existe uma estreita relação entre os dois tipos de circuitos: um Schimitt trigger pode ser convertido em um latch e vice versa.

Schimitt trigger serve para fazer o condicionamento de sinais em circuitos digitais reduzindo o ruído dos mesmos, particularmente reduzindo (não elimina completamente em alguns casos) o efeito de repique (bounce) de chaves eletromecânicas. Também são utilizados em configurações com feedback em loop negativo, implementando osciladores de relaxamanto que encontram aplicação em geradores de função e fontes de alimentação chaveadas.

Há várias maneiras de se implementar um circuito Schmitt trigger e uma delas seria pela utilização de um amplificador operacional.

Pode-se fazer um conversor analógico-digital utilizando um amplificador operacional cuja entrada analógica recebe o sinal e a saída do amplificador operacional fornece o sinal de saída digital.

Isso é possível por conta do alto ganho do amplificador operacional e quando o sinal passa de um certo limite, a saída satura ou corta imediatamente como em um processo de avalanche.

Abaixo seguem dois diagramas básicos (não são circuitos completos), um utilizando a entrada não inversora e outro utilizando a entrada inversora de um amplificador operacional:

Comparador não inversor:

Para o comparador não inversor os dois resistores R1 e R2 formam um somador de tensão paralela. Ele soma uma parte da tensão de saída à tensão de entrada, aumentando-a durante e após a comutação, que ocorre quando a tensão resultante está próxima de zero. Este feedback positivo paralelo cria a histerese necessária que é controlada pela proporção entre as resistências R1 e R2. A saída do somador de tensão paralela é em relação ao terra, então o circuito não precisa de um amplificador com entrada diferencial. Como os amplificadores operacionais convencionais têm uma entrada diferencial, a entrada inversora é aterrada para criando o ponto de referência zero volts.

Comparador inversor:

Para a versão utilizando o comparador inversor, a atenuação e a soma são separadas. Os dois resistores R1 e R2 atuam apenas como um divisor de tensão (atenuador “puro”). O loop de entrada atua como um somador de tensão simples que soma uma parte da tensão de saída em série à tensão aplicada no circuito de entrada. Este feedback positivo em série cria a histerese necessária que é controlada pela proporção entre as resistências de R1 e a resistência do conjunto R1 e R2. A tensão efetiva aplicada à entrada do amplificador operacional está flutuando, logo, o amplificador operacional deve ter uma entrada diferencial.

Maiores detalhes sobre essa configuração pode ser vista na Wikipedia e está bem detalhada no livro The Art of Electronics.

Na eletrônica digital:

A implementação desse tipo de circuito é representada pelos símbolos abaixo e normalmente estão dentro de circuitos integrados:

Símbolo que representa um Schmitt trigger. Ele possui o desenho de uma curva de histerese dentro do símbolo lógico de um buffer, cuja saída pode ser normal ou inversa (com a bolinha). Detalhes acerca do comportamento de um circuito integrado Schmitt trigger deve ser verificada na documentação do componente, que é fornecida pelo fabricante.

Para saber mais, temos as seguintes opções:

Em computação e lógica digital, como funciona o código Gray e qual é a sua aplicação?

Texto publicado inicialmente no Quora em 23/07/2019

O código binário refletido (reflected binary code – RBC), também conhecido como código binário refletido (reflected binary RB) ou código cinza (Gray code – depois dos estudos de Frank Gray), consiste da ordenação do sistema numeral binário de maneira tal que dois valores binários sucessivos tenham apenas um bit de diferença entre ambos.

O código Gray foi inicialmente projetado para minimizar o efeito de ruídos aleatórios causados pelo chaveamento de dispositivos eletromecânicos como relés.

Hoje em dia o código Gray é largamente utilizado para facilitar a correção de erros em sistemas de comunicação digital como em televisão e em alguns sistemas de TV a cabo.

Considerando um sistema de posicionamento eletromecânico que faz uso de uma contagem binária, é muito improvável que interruptores físicos consigam comutar simultaneamente à medida que ocorre o posicionamento desse sistema e essa falta de sincronismo causa ruídos no circuito. Para contornar essa limitação, foi criado o Gray Code, que somente uma chave por vez muda de estado à medida que o posicionamento acontece, contornando o problema da falta sincronização na atuação das chaves mecânicas.

Abaixo segue uma tabela exibindo a diferença entre o código binário e o código Gray. Conforme dito, note que no código Gray, apenas um bit muda entre o valor anterior e o valor posterior.

Aplicações:

Em matemática pode ser aplicado na resolução do problema da Torre de Hanoi.

Émile Baudot utilizou o código Gray nos telégrafos em 1878.

Frank Gray patenteou em 1953 um método para converter sinais analógicos para o código Gray utilizando válvula,que fez o sistema “pegar o seu nome”.

Minimização de circuitos booleanos (lógica digital) na rotulação dos eixos do mapa de Karnaugh.

É utilizado em sistemas de posicionamento tanto lineares como rotativos (encoder). Inicialmente era eletromecânico e atualmente utiliza sensores óticos, de efeito hall ou usa outras tecnologias eletrônicas.

Figura: Petruzella

Também pode ser aplicado em outras áreas como algoritmos genéticos, minimização de circuitos eletrônicos e correção de erros, por exemplo.

Fontes:

Wikipedia

PETRUZELLA, Frank D.. Programmable Logic Controllers. 4. ed. New York: Mc Graw Hill, 2005. 396 p. ISBN 978-0-07-351088-0.