Configure sua própria rede privada com o OpenVPN
O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes
O Redmine é uma ferramenta de gerenciamento de projetos gratuita e de código aberto baseada na Web. Está escrito em Ruby on Rails e suporta vários servidores de banco de dados para armazenar o banco de dados. É um aplicativo rico em recursos que suporta vários projetos, ACL baseado em funções e sistema de rastreamento de problemas. Ele também possui suporte a gráficos e calendário de Gantt, gerenciamento de arquivos, por wiki e fórum do projeto, além de muitos outros recursos. Ele suporta sistemas de controle de versão como Git, SVN ou CVS. Também é multilíngue, suportando até 49 idiomas.
Este guia foi escrito para o Redmine 3.4.4, mas também pode se aplicar a versões mais recentes.
Neste tutorial, usaremos 192.168.1.1
como endereço IP público e redmine.example.com
como nome de domínio apontado para a instância do Vultr. Certifique-se de substituir todas as ocorrências do exemplo de nome de domínio e endereço IP pelo nome real.
Atualize seu sistema básico usando o guia Como atualizar o CentOS 7 . Depois que seu sistema for atualizado, continue com a instalação das dependências.
O Redmine é escrito em Ruby on Rails, portanto, exigiremos que o Phusion Passenger se integre ao servidor da web Apache para atender ao aplicativo. Instale o Apache.
sudo yum -y install httpd httpd-devel libcurl-devel
Para criar o aplicativo Redmine, precisaremos de algumas ferramentas de desenvolvimento também. Instale as ferramentas necessárias.
sudo yum -y install ImageMagick ImageMagick-devel git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel
O Redmine suporta vários tipos de servidores de banco de dados, como MySQL, PostgreSQL e MSSQL. Neste tutorial, usaremos o PostgreSQL para hospedar o servidor de banco de dados Redmine.
O PostgreSQL é um sistema de banco de dados objeto-relacional. O yum
repositório padrão contém uma versão antiga do PostgreSQL; portanto, adicione o repositório PostgreSQL ao sistema.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Instale o servidor de banco de dados PostgreSQL.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Inicialize o banco de dados.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Inicie o servidor PostgreSQL e ative-o automaticamente no momento da inicialização.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Mude a senha do usuário padrão do PostgreSQL.
sudo passwd postgres
Efetue login como usuário do PostgreSQL.
sudo su - postgres
Crie um novo usuário do PostgreSQL para o Redmine.
createuser redmine
Você tem permissão para usar qualquer nome de usuário em vez de redmine
. O PostgreSQL fornece o psql
shell para executar consultas no banco de dados. Mude para o shell do PostgreSQL.
psql
Defina uma senha para o usuário recém-criado para o banco de dados Redmine.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Substitua DBPassword
por uma senha segura. Crie um novo banco de dados para a instalação do Redmine.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Saia do psql
shell.
\q
Mude para o sudo
usuário.
exit
Edite o pg_hba.conf
arquivo para habilitar a autenticação baseada em MD5.
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Encontre as seguintes linhas e altere os valores peer
e ident
na METHOD
coluna para trust
e md5
, respectivamente.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Uma vez atualizada, a configuração deve ficar assim.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Reinicie o PostgreSQL para que as alterações entrem em vigor.
sudo systemctl restart postgresql-10
Instale mais algumas dependências necessárias do PostgreSQL.
sudo yum -y install libpqxx-devel protobuf-devel
É recomendável usar um usuário sem privilégios para executar o aplicativo para mantê-lo isolado do restante do sistema. Crie um novo usuário para o Redmine e alterne para o usuário recém-criado.
sudo adduser redmine
sudo su - redmine
Instalaremos a versão mais recente do Ruby usando o Ruby Version Manager ou RVM. É usado para instalar e gerenciar várias versões do Ruby.
Adicione a chave GPG do RVM ao seu servidor.
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Instale o RVM.
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
Busque a lista das versões disponíveis do Ruby.
rvm list known
Você verá uma longa lista de versões do Ruby.
[redmine@vultr ~]$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head
...
Instale a versão mais recente do Ruby da lista.
rvm install 2.4
Use a versão instalada do Ruby.
rvm use 2.4
Você pode verificar sua versão.
ruby -v
Você verá uma saída semelhante.
[redmine@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Instale o empacotador, que é o gerenciador de dependências do aplicativo Ruby.
gem install bundler
Ruby agora está instalado. Antes de instalar o Redmine, precisaremos instalar o Phusion Passenger.
Execute o seguinte comando para instalar o Passenger.
gem install passenger
Forneça permissão de execução ao diretório inicial do redmine
usuário. O passageiro precisa executar os binários para atender ao aplicativo.
chmod o+x "/home/redmine"
Instale o módulo Apache para Passenger.
passenger-install-apache2-module
O script do instalador fará algumas perguntas. Primeiro, ele fornecerá informações sobre o processo de instalação. Em seguida, ele solicitará que você selecione o idioma que você usará. Como nosso aplicativo está escrito em Ruby on Rails, selecione Ruby no menu e pressione " Enter
" para continuar.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬡ Python
⬡ Node.js
⬡ Meteor
O instalador agora verificará os requisitos. O instalador não encontrará dependências ausentes e prosseguirá automaticamente para compilar e instalar o módulo.
Depois que o módulo estiver instalado, você será solicitado a adicionar o módulo ao arquivo de configuração do Apache.
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerDefaultRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
</IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
Press ENTER when you are done editing.
Ignoraremos isso por enquanto e o concluiremos posteriormente no tutorial, pois o usuário com o qual estamos logados agora não tem sudo
permissões. Pressione " Enter
" para pular esta etapa.
Por fim, o script do instalador validará a instalação e você verá um aviso informando que o módulo Passenger não está especificado na configuração do Apache.
Validating installation...
* Checking whether this Passenger install is in PATH... ✓
* Checking whether there are no other Passenger installations... ✓
* Checking whether Apache is installed... ✓
* Checking whether the Passenger module is correctly configured in Apache... (!)
You did not specify 'LoadModule passenger_module' in any of your Apache
configuration files. Please paste the configuration snippet that this
installer printed earlier, into one of your Apache configuration files, such
as /etc/httpd/conf/httpd.conf.
Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
Agora que instalamos o módulo Passenger para Apache, faça o download e instale o Redmine.
Faça o download da versão mais recente do Redmine na página oficial de download do Redmine .
cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz
Extraia o arquivo morto e renomeie o diretório por conveniência.
tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/
Copie os arquivos de configuração de exemplo para seu local de produção.
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
Abra o arquivo de configuração do banco de dados que acabamos de copiar para inserir os detalhes do banco de dados.
nano config/database.yml
Por padrão, o arquivo de banco de dados está configurado para o MySQL. Encontre as configurações para produção e desenvolvimento, e teste que usa o adaptador MySQL. Comente todas essas linhas.
#production:
# adapter: mysql2
# database: redmine
# host: localhost
# username: root
# password: ""
# encoding: utf8
#development:
# adapter: mysql2
# database: redmine_development
# host: localhost
# username: root
# password: ""
# encoding: utf8
#test:
# adapter: mysql2
# database: redmine_test
# host: localhost
# username: root
# password: ""
# encoding: utf8
Furthur, encontre as linhas comentadas, com production
configuração para o postgresql
adaptador. Remova o comentário dessas linhas e atualize o nome do banco de dados e as credenciais do usuário. Certifique-se de usar o recuo correto, que é dois espaços.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Configure o aplicativo para usar a configuração do PostgreSQL.
bundle config build.pg --with-pg-config=/usr/pgsql-10/bin/pg_config
Instale as dependências do aplicativo exigidas pelo aplicativo.
bundle install --without development test
Você verá a seguinte mensagem no final da instalação.
Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
O comando a seguir gera tokens secretos usados para codificar os dados da sessão.
bundle exec rake generate_secret_token
Escreva o banco de dados PostgreSQL.
RAILS_ENV=production bundle exec rake db:migrate
Execute o seguinte comando, que grava os dados padrão no banco de dados PostgreSQL.
RAILS_ENV=production bundle exec rake redmine:load_default_data
O comando acima solicitará que você escolha o idioma padrão a ser usado com o aplicativo. A opção padrão é inglês; escolha de acordo com sua preferência.
[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.
A instalação do aplicativo Redmine está concluída. Altere a propriedade e as permissões dos diretórios e arquivos.
mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets
Configuramos tudo o que precisamos do usuário não privilegiado. Volte para o sudo
usuário executando su - <username>
.
Adicione o módulo Passenger para Apache ao arquivo de configuração do Apache. Isso carregará automaticamente o módulo Passenger.
echo "LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/httpd/conf.modules.d/00-base.conf
Crie um novo arquivo de host virtual para o seu aplicativo Redmine.
sudo nano /etc/httpd/conf.d/redmine.conf
Preencha o arquivo com o seguinte conteúdo.
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /home/redmine/redmine/public
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
PassengerUser redmine
<Directory /home/redmine/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Certifique-se de substituir redmine.example.com
pelo seu nome de domínio real. Além disso, verifique se o caminho para PassengerRoot
e PassengerRuby
está correto. O caminho para os binários pode mudar quando houver uma nova versão do Ruby ou do Passenger. Para encontrar esses caminhos, execute o seguinte comando.
sudo su redmine -c "passenger-config about ruby-command"
Você receberá a seguinte saída.
[user@vultr ~]$ sudo su redmine -c "passenger-config about ruby-command"
passenger-config was invoked through the following Ruby interpreter:
Command: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
Version: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
To use in Apache: PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
To use in Nginx : passenger_ruby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
To use with Standalone: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/bin/passenger start
Depois que o arquivo do host virtual for criado, reinicie o servidor da web Apache.
sudo systemctl restart httpd
Modifique a configuração do firewall para permitir a porta 80
através do firewall.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
Agora você pode acessar sua interface do Redmine http://redmine.example.com
. Entre com nome de usuário admin
e senha admin
. No seu primeiro login, o Redmine solicitará que você atualize a senha.
Como nossa instalação do Redmine está em um servidor público, é recomendável usar o SSL para garantir a troca de dados do servidor.
Instale o Certbot, que é o aplicativo cliente do Let's Encrypt CA.
sudo yum -y install epel-release
sudo yum -y install certbot mod_ssl
Antes de solicitar os certificados, você precisará permitir a porta 80
e / 443
ou serviços HTTP
e padrão HTTPS
através do firewall. Como já permitimos a porta 80
anteriormente, vamos permitir a porta 443
.
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Nota: Para obter certificados da Let's Encrypt CA, o domínio para o qual os certificados devem ser gerados deve estar apontado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do domínio e aguarde a propagação do DNS antes de fazer a solicitação de certificado novamente. O Certbot verifica a autoridade do domínio antes de fornecer os certificados.
Gere os certificados SSL.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
É provável que os certificados gerados sejam armazenados /etc/letsencrypt/live/redmine.example.com/
. O certificado SSL será armazenado como cert.pem
e a chave privada será armazenada como privkey.pem
.
Os certificados Let's Encrypt expiram em 90 dias, portanto, é recomendável configurar a renovação automática dos certificados usando trabalhos Cron.
Abra o arquivo de trabalho Cron para o root
usuário.
sudo crontab -e
Adicione a seguinte linha no final do arquivo.
30 5 * * * /usr/bin/certbot renew --quiet
O trabalho acima de Cron será executado todos os dias às 5:30 da manhã. Se o certificado estiver vencido, ele será renovado automaticamente.
Edite o arquivo do host virtual que criamos anteriormente para o Redmine.
sudo nano /etc/httpd/conf.d/redmine.conf
Modifique o arquivo host virtual para parecer com o seguinte.
<VirtualHost *:80>
Redirect permanent / https://www.example.com/
ServerName redmine.example.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName redmine.example.com
DocumentRoot "/home/redmine/redmine/public"
<Directory "/home/redmine/redmine/public">
Options None
Require all granted
</Directory>
PassengerAppEnv production
PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
PassengerUser redmine
PassengerHighPerformance on
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/redmine.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
<IfModule headers_module>
Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
</IfModule>
</VirtualHost>
Salve o arquivo e saia do editor.
Reinicie o Apache para que as alterações tenham efeito.
sudo systemctl restart httpd
Agora você pode acessar Redmine mais HTTPS
sobre https://redmine.example.com
.
Parabéns, você instalou o Redmine com êxito na sua instância do CentOS 7. Comece a desenvolver seu projeto, criando ou importando seu projeto.
O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes
Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi
Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim
Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade
Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud
Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens
Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i
Usando um sistema diferente? Gradle é um conjunto de ferramentas de automação de compilação de código aberto e gratuito baseado nos conceitos do Apache Ant e Apache Maven. Gradle fornece
Usando um sistema diferente? Neste guia, veremos como configurar um servidor FTP (ProFTPd) para transferir arquivos entre o seu PC e o seu servidor.
Usando um sistema diferente? O Netdata é uma estrela em ascensão no campo do monitoramento de métricas do sistema em tempo real. Comparado com outras ferramentas do mesmo tipo, o Netdata:
Usando um sistema diferente? O Apache Cassandra é um sistema de gerenciamento de banco de dados NoSQL gratuito e de código aberto, projetado para fornecer escalabilidade, alta
Neste tutorial, aprenda como configurar um servidor multiplayer Just Cause 2. Pré-requisitos Verifique se o sistema está totalmente atualizado antes de começarmos
Usando um sistema diferente? Neste tutorial, explicarei como configurar um servidor Starbound no CentOS 7. Pré-requisitos Você precisa ser o proprietário deste jogo
O ZNC é um segurança IRC gratuito e de código aberto que permanece permanentemente conectado a uma rede para que os clientes possam receber mensagens enviadas enquanto estiverem offline. Thi
O Django é uma estrutura Python popular para escrever aplicativos da web. Com o Django, você pode criar aplicativos mais rapidamente, sem reinventar a roda. Se você quiser você
Outubro é um sistema de gerenciamento de conteúdo de código aberto baseado no Laravel PHP Framework. Com uma interface elegante e uma arquitetura modular concisa
Após alterar a porta SSH, configurar a batida na porta e fazer outros ajustes para a segurança SSH, talvez haja mais uma maneira de protegê-lo
Introdução O MyCLI é um cliente de linha de comando para MySQL e MariaDB que permite concluir automaticamente e ajuda na sintaxe de seus comandos SQL. MyCL
Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece
Usando um sistema diferente? O Reader Self 3.5 é um leitor de RSS auto-hospedado, simples e flexível, gratuito e de código aberto, e uma alternativa ao Google Reader. Leitor Sel
Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane
ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.
O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+
Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.
Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais
13 Ferramentas de Extração de Dados Comerciais de Big Data
Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true
À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.
Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1
A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA na área da saúde ainda está crescendo dia a dia.