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.
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.
Em propriedades do sistema do Windows, adicione a variável de ambiente M2_HOME com o valor do caminho do Maven
Adicione a variável de ambiente M2 nas variáveis de ambiente com o valor %M2_HOME%\bin
Adicione a variável de ambiente MAVEN_OPTS com o valor -Xms256m -Xmx512m
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).
Inclua %M2% na variável de ambiente Path
Inclua %JAVA_HOME%\bin na variável de ambiente Path
No prompt de comando execute mvn –version para verificar se o Maven instalou ok.
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.
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. –
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.
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.
O Game Design Document (GDD) é muito mais que um documento de conceito ou proposta de negócio.
É
normal que um GDD tenha algo entre 50 e passe de 200 páginas. O
propósito do GDD não é servir de apoio para vender uma ideia. Pelo
contrário, seu principal objetivo é ser um guia de referência ao
processo de desenvolvimento de um jogo (game).
O
GDD tem que focar no modo de jogo (gameplay), roteiro (storyline),
personagens, interface e regras do jogo. O GDD deve especificar o
projeto com detalhes suficientes e de tal forma que seja possível, em
teoria, jogar o jogo sem o uso de um computador.
Inclusive
poder jogar uma versão em papel do jogo construida a partir do GDD é na
verdade um modo barato de se entender e depurar o projeto do jogo. A
prototipagem em papel sempre deve ser considerada durante o processo de
desenvolvimento do game.
Devido
ao tamanho do GDD, um índice deve ser inserido logo após a página de
título do documento. Esse documento tem que ser entendido como parte do
processo de desenvolvimento do jogo e deve ser atualizado constantemente
à medida que o projeto é desenvolvido.
Como
boa prática deve-se ter certeza que o GDD esteja disponível a todos no
projeto de tal forma que os membros do time possam fazer as atualizações
conforme o necessário a qualquer tempo (obviamente um controle de
versionamento tipo GIT deve ser adotado).
O GDD deve conter em sua descrição basicamente os seguintes elementos, não se limitando à lista abaixo:
Interface do jogo
– indicando os elementos do jogo, tempo de produção, custo, requisitos
das interfaces, viabilidade da interface, audiência e gênero do jogo.
Mundo do jogo
– níveis e elementos presentes em cada nível do jogo bem como a
descrição dos mesmos. Inclui arte, cinemática, animações, itens
disponíveis e informações acerca de itens perigosos.
Habilidades dos personagens e itens – como funciona o ataque e defesa dos personagens, o que faz cada NPC, o que e como os personagens podem pegar de itens.
Game engine
– o que pode ser feito e o que não pode ser feito no desenvolvimento do
jogo. Esta parte do GDD serve para manter todos desenvolvedores
alinhados com os recursos disponíveis e comportamento geral do jogo
abordando tópicos como número de personagens por tela, animações por
personagem, restrições de câmera, paleta do mapa de textura e outras
informações que padronizem o desenvolvimento do game.
Você
utilizará como game engine a interface 2D do GameSalad, ou utilizará a
engine 3D do Unity? Sites exibidos logo a seguir. Essa decisão, por
exemplo, é definida na seção Game Engine.
Tenha
em mente que o GDD pode variar dependendo no nível de detalhes e
demandas do projeto, mas é para isso que ele serve e o que ele
basicamente deve conter.
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.
Resposta originalmente postada no Quora em 16/07/2019
Tem sempre alguma coisa que a gente faz..
Vou citar uma aqui..
Certa feita tive de instalar um dual boot, Linux e Windows.
O Windows teve um update logo depois da instalação e zoou grandão o GRUB. O computador parou de funcionar.
Saquei meu script ‘reparagrub’ e rodei ele.
Programadores entenderão:
sudo mount /dev/sdb7 /mnt
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
sudo chroot /mnt
update-grub
grub-install /dev/sda
update-grub
exit
O
OS Kernel ou Núcleo do Sistema Operacional é um programa de computador
que é o coração do sistema operacional de um computador. Ele tem
controle completo sobre tudo que acontece no sistema.
Abaixo tem a estrutura básica de um sistema operacional Unix, situando o modo núcleo.
Fonte: TANENBAUM
E aqui tem a estrutura básica de um sistema operacional Windows 7 situando o modo núcleo do sistema operacional:
Fonte: TANENBAUM
Na
maioria dos sistemas ele é um dos primeiros programas a serem
carregados na inicialização, logo após do carregador inicial
(bootloader). Ele gerencia as demais inicializações assim como as
requisições de entrada e saída do software, traduzindo-as em instruções
de processamento de dados para o processador do computador. Ele também
manuseia a memória e periféricos como teclado, monitor, impressoras e
interface de áudio.
O Kernel faz a interface entre o software da aplicação e o hardware do computador.
A
parte crítica do código do Kernel é normalmente carregada em uma área
separada da memória a qual é protegida de ser acessada pelos programas
ou outras partes menos críticas do sistema operacional.
O
Kernel executa suas tarefas como rodar processos, gerenciar
dispositivos de hardware com o HD, fazer o gerenciamento de interrupções
dentro da área protegida do Kernel.
Por
outro lado, tudo o que o usuário faz é executado na área do usuário
(user space) como escrever um texto no editor de texto, rodar programas
em uma interface gráfica (GUI) e etc.
Essa
separação previne que os dados dos programas do usuário e os dados do
Kernel acabem interferindo um no outro o que pode causar instabilidade
no sistema, lentidão no processamento, erros nos programas e até causar
erros catastróficos no sistema operacional.
Resposta originalmente traduzida no Quora em 06/07/2019.
Sistema Operacional de Tempo Real (Real Time Operating System) é um sistema operacional especializado que é responsável por gerenciar os processos em um sistema de tempo real ( real time system.)
Ele é responsável pelo gerenciamento de processos e alocação de recursos.
O
sistema operacional em tempo real pode ser baseado em um kernel padrão
que é usado inalterado ou modificado para uma aplicação específica.
Normalmente, não inclui recursos como gerenciamento de arquivos.
Componentes do Sistema Operacional de Tempo Real:
Relógio de tempo real: (Real-time clock) Ele fornece informação para agendamento de tarefas
Gerenciador de interrupções: (Interrupt handler) Gerencia solicitações de serviços assíncronas .
Agendador: (Scheculer) Seleciona o próximo processo a ser executado.
Gerenciador de recursos: (Resource Manager) Aloca os recursos de processador e memória.
Despachante: (Dispatcher) Inicia a execução dos processos.
Os componentes de um sistema operacional de tempo real pode ser conforme abaixo:
Ele faz o gerenciamento automático e dinâmico da memória da seguinte forma:
Aloca memória do e a devolve para o sistema operacional.
Gerencia a memória para a aplicação à medida em que a aplicação requisita memória.
Determina quais partes da memória irão permanecer em uso pela aplicação.
Realoca memória não utilizada destinando-a para outra aplicação.
O Java HotSpot garbage collectors empregam várias técnicas para melhorar a eficiência dessas operações, entre elas:
Utiliza
o algoritmo de reclamação de armazenamento de memória “generational
scavenging” em conjunção com métodos de datação dos dados na memória a
fim de concentrar os esforços nas áreas que contenham mais dados
suscetíveis a serem reclamados.
Utiliza múltiplas threads para
execução de operações paralelas, ou executa operações de longo tempo de
execução em segundo plano enquanto rodando uma aplicação principal.
Procura liberar grandes blocos contíguos de memória pela compactação de objetos ativos (live objects).
Qual vantagem de se utilizar o Garbage Collector?
A
vantagem de se utilizar o garbage collector é que ele libera o
desenvolvedor de aplicações da tarefa manual de se fazer o gerenciamento
de alocação de memória.
O
desenvolvedor é liberado da necessidade de cuidar das alocações e
liberações de memória e fica livre de ter que tomar conta das tarefas
que alocam dinamicamente a memória.
Isso
elimina completamente alguns tipos de erros relacionados a
gerenciamento de memória bem como otimiza o tempo de execução da
aplicação. O Java HotSpot VM possui um conjunto de algoritmos que
executam essa tarefa.
Em tempo: Mas Renato, dá para usar macro para popular os campos da planilha junto com a desativação da GUI quando fazendo os cálculos … Isso faria o cálculo muito mais rápido =\. -> Meu caro, a ideia é mostrar que dá para resolver o caso utilizando apenas conhecimento de Excel básico. Quem manja VBA sabe que tem ferramentas muito melhores ;D