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 Buildbot é uma ferramenta de integração contínua de código aberto, baseada em Python, para automatizar a criação, teste e implantação de software. O Buildbot consiste em um ou mais mestres do Buildbot e vários trabalhadores. O mestre do Buildbot ou o Buildmaster tem o comando central do sistema. É responsável por gerenciar o ambiente de construção, os trabalhadores e toma todas as decisões sobre o envio de trabalhos para os trabalhadores. O Buildmaster detecta alterações no repositório de códigos e envia os comandos ou tarefas para os trabalhadores executarem. Os trabalhadores executam os trabalhos e retornam o resultado ao Buildmaster. O Buildmaster notifica os desenvolvedores através de vários canais suportados. Neste tutorial, instalaremos o mestre e o trabalhador do Buildbot no CentOS 7. Também configuraremos a autenticação e o Nginx como um proxy reverso seguro.
Neste tutorial, usaremos 192.168.1.1
como endereço IP público e ci.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 do PostgreSQL.
Instale o Pip, que é um gerenciador de pacotes para Python.
sudo yum -y install epel-release
sudo yum -y install python-pip gcc python-devel git
sudo pip install --upgrade pip
O Buildbot suporta vários tipos de servidores de banco de dados, como MySQL, PostgreSQL e SQLite. Neste tutorial, usaremos o PostgreSQL para hospedar o servidor de banco de dados Buildbot.
O PostgreSQL é um sistema de banco de dados objeto-relacional, conhecido por sua estabilidade e velocidade. O yum
repositório padrão contém uma versão antiga do PostgreSQL, então adicione o repositório PostgreSQL.
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 Buildbot.
createuser bb_user
Você pode usar qualquer nome de usuário em vez de bb_user
, se preferir. 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.
ALTER USER bb_user WITH ENCRYPTED password 'DBPassword';
Substitua DBPassword
por uma senha segura.
Crie um novo banco de dados para a instalação do Buildbot.
CREATE DATABASE buildbot OWNER bb_user;
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
Depois de atualizada, a configuração será semelhante ao texto a seguir.
# 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
Salve o arquivo e saia do editor. Instale o adaptador de banco de dados PostgreSQL para Python.
sudo pip install psycopg2
Reinicie o PostgreSQL para que as alterações entrem em vigor.
sudo systemctl restart postgresql-10
Instale o Buildbot usando o Pip.
sudo pip install 'buildbot[bundle]' pyopenssl service_identity
O comando acima irá instalar Buildbot juntamente com buildbot-www
, buildbot-worker
e vários web plugins, tais como buildbot-waterfall-view
.
Para garantir que o Buildbot tenha sido instalado com sucesso, você pode verificar verificando a versão do Buildbot.
buildbot --version
A saída deve se parecer com o texto a seguir.
[user@vultr ~]$ buildbot --version
Buildbot version: 0.9.15.post1
Twisted version: 17.9.0
Modifique suas regras de firewall para permitir a porta 8010
. O Buildbot usa essa porta para ouvir as solicitações da web.
sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload
Crie um novo usuário não privilegiado para executar os processos mestre e de trabalho do Buildbot. Não é recomendável executar os serviços principais do Buildbot como root
usuário.
sudo adduser buildbot
sudo passwd buildbot
Efetue login como o buildbot
usuário recém-criado .
sudo su - buildbot
Configure o mestre do Buildbot no /home/buildbot/master
diretório Este diretório conterá os arquivos de configuração, status e log de cada build.
buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
Certifique-se de substituir as credenciais do usuário do banco de dados no comando acima.
Nota: Se você deseja usar o banco de dados SQLite em vez do PostgreSQL, simplesmente omita a --db 'postgresql://bb_user:DBpassword@localhost/buildbot'
opção. O banco de dados SQLite será criado no mesmo diretório.
O comando acima criará o ~/master
diretório para armazenar os arquivos do Buildmaster. Ele também gravará os dados no banco de dados PostgreSQL. Você obterá a seguinte saída.
[buildbot@vultr ~]$ buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
mkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (postgresql://bb_user:DBPassword@localhost/buildbot)
buildmaster configured in /home/buildbot/master
Copie o arquivo de configuração de amostra para um arquivo de configuração ativo.
cp ~/master/master.cfg.sample ~/master/master.cfg
Edite o arquivo de configuração.
nano ~/master/master.cfg
Encontre as seguintes linhas.
c['workers'] = [worker.Worker("example-worker", "pass")]
...
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
...
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
...
c['buildbotURL'] = "http://localhost:8010/"
...
c['db'] = {
'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
A configuração acima tem uma entrada para um trabalhador de amostra. Modificaremos a entrada de amostra para o trabalhador em que executaremos localhost
. Altere example-worker
para qualquer nome adequado para o localhost
trabalhador e pass
para outra senha. Anote o nome e a senha do trabalhador, conforme exigido posteriormente no tutorial. Altere o nome do trabalhador na lista de construtores. Mude o nome do URL do aplicativo e do projeto de acordo com suas necessidades.
Altere o URL do Buildbot de localhost
para o seu nome de domínio real ou endereço IP público. Além disso, verifique se as informações do banco de dados no arquivo de configuração correspondem às suas credenciais reais.
No final do arquivo, adicione c['buildbotNetUsageData'] = None
. Este parâmetro desativará o envio das informações da versão do software e dos detalhes de uso do plug-in para os desenvolvedores. No entanto, para ativar o envio das informações de uso, altere a opção para Full
.
A configuração deve se parecer com o texto a seguir.
c['workers'] = [worker.Worker("localhost-worker", "Password123")]
...
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["localhost-worker"],
factory=factory))
...
c['title'] = "My Application CI"
c['titleURL'] = "https://example.com/my-app"
...
c['buildbotURL'] = "http://192.168.1.1:8010/"
...
c['db'] = {
'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
...
c['buildbotNetUsageData'] = None
Salve o arquivo e saia do editor. Verifique o arquivo de configuração quanto a erros.
buildbot checkconfig ~/master
Se o arquivo de configuração não apresentar erros, você verá a seguinte saída.
[buildbot@vultr ~]$ buildbot checkconfig ~/master
Config file is good!
Agora que tudo está configurado corretamente, você pode iniciar o mestre do Buildbot.
buildbot start ~/master
Você verá a seguinte saída.
[buildbot@vultr ~]$ buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.
Agora que o mestre do Buildbot foi iniciado corretamente, a interface do usuário da web está acessível em http://192.168.1.1:8010
. Você deve ver a seguinte interface do Buildbot.
Como já modificamos a configuração do trabalhador ~/master/master.cfg
, podemos criar um novo trabalhador.
buildbot-worker create-worker ~/worker localhost localhost-worker Password123
Certifique-se de usar exatamente o mesmo nome e senha do trabalhador, conforme mencionado no ~/master/master.cfg
arquivo. Se houver uma incompatibilidade no nome ou na senha do trabalhador, o trabalhador não poderá se conectar ao mestre do Buildbot. Você verá a seguinte saída após a execução bem-sucedida.
[buildbot@vultr ~]$ buildbot-worker create-worker ~/worker localhost example-worker pass
mkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker
As informações sobre o trabalhador são armazenadas no /info
diretório Edite as informações administrativas sobre o desenvolvedor.
nano ~/worker/info/admin
Substitua o nome do exemplo pelo seu nome e email reais.
Your Name <[email protected]>
Agora, abra o arquivo que contém informações sobre o host.
nano ~/worker/info/host
Substitua a instrução de exemplo pelas informações reais sobre o sistema host.
Localhost, CentOS 7
As informações de administrador e host do trabalhador são usadas apenas para informar os usuários sobre o sistema. Você também pode adicionar informações adicionais sobre o sistema, como a versão Buildbot e a versão Twisted.
Inicie o trabalhador.
buildbot-worker start ~/worker
A saída será semelhante ao texto a seguir.
[buildbot@vultr ~]$ buildbot-worker start ~/worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.
Para verificar se o trabalhador está registrado, vá para a interface da Web do Buildbot e navegue para a Builds >> Workers
partir da navegação esquerda. Você deve ver que o trabalhador está pronto e pronto para construir.
Para executar uma amostra de compilação, para verificar se o trabalhador do Buildbot está sendo executado com êxito, navegue até Builds >> Builders
. Clique no runtests
nome do construtor para abrir a interface do construtor e clique no Force
botão para forçar uma construção. Forneça seu nome e clique no Start Build
botão para iniciar a compilação. Como é um teste de construção de amostra para verificar o ambiente do Buildbot, ele será concluído em alguns segundos. Você receberá uma mensagem de sucesso e o resultado da compilação.
Embora o mestre e o trabalhador do Buildbot possam ser facilmente iniciados usando os comandos acima, é recomendável usar unidades Systemd para executar e gerenciar os serviços do Buildbot. Isso garantirá que eles sejam iniciados automaticamente na reinicialização e falhas do sistema.
Nota: Alterne para o sudo
usuário novamente executando exit
ou su <username>
. A partir de agora todos os comandos precisam ser executados pelo sudo
usuário.
Pare o trabalhador Buildbot e o serviço mestre em execução.
sudo su buildbot -c "buildbot stop /home/buildbot/master"
sudo su buildbot -c "buildbot-worker stop ~/worker"
Crie um novo arquivo de unidade Systemd para o mestre do Buildbot.
sudo nano /etc/systemd/system/buildbot.service
Preencher o arquivo.
[Unit]
Description=BuildBot master service
After=network.target
[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/master
ExecStart=/usr/bin/buildbot start
ExecStop=/usr/bin/buildbot stop
ExecReload=/usr/bin/buildbot restart
[Install]
WantedBy=multi-user.target
Inicie o mestre do Buildbot e ative-o automaticamente no momento da inicialização.
sudo systemctl start buildbot
sudo systemctl enable buildbot
Crie um novo arquivo de unidade Systemd para o trabalhador Buildbot.
sudo nano /etc/systemd/system/buildbot-worker.service
Preencher o arquivo.
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/worker
ExecStart=/usr/bin/buildbot-worker start
ExecStop=/usr/bin/buildbot-worker stop
ExecReload=/usr/bin/buildbot-worker restart
[Install]
WantedBy=multi-user.target
Inicie o trabalhador do Buildbot e ative-o automaticamente no momento da inicialização.
sudo systemctl start buildbot-worker
sudo systemctl enable buildbot-worker
Você pode verificar o status dos serviços.
sudo systemctl status buildbot buildbot-worker
Se os serviços estiverem funcionando sem problemas, você verá isso na saída.
[user@vultr ~]$ sudo systemctl status buildbot buildbot-worker
● buildbot.service - BuildBot master service
...
Active: active (running) since Fri 2018-01-12 16:00:59 UTC; 1min 25s ago
...
Jan 12 16:00:59 vultr.guest systemd[1]: Started BuildBot master service.
● buildbot-worker.service - BuildBot worker service
...
Active: active (running) since Fri 2018-01-12 16:02:00 UTC; 24s ago
...
Jan 12 16:02:00 vultr.guest systemd[1]: Started BuildBot worker service.
Por padrão, a autenticação não está ativada na interface da Web Buildbot. Para sites de acesso à Internet, é altamente recomendável configurar a autenticação para que apenas os usuários autorizados possam executar tarefas administrativas. Para configurar a autenticação, reabra o arquivo de configuração principal do Buildbot.
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
Adicione as seguintes linhas ao final do arquivo.
c['www']['authz'] = util.Authz(
allowRules = [
util.AnyEndpointMatcher(role="admins")
],
roleMatchers = [
util.RolesFromUsername(roles=['admins'], usernames=['admin_user'])
]
)
c['www']['auth'] = util.UserPasswordAuth({'admin_user': 'AdminPassword'})
Substitua ambas as ocorrências admin_user
pelo nome de usuário real que você deseja usar e AdminPassword
por uma senha forte.
Verifique se há erros no arquivo de configuração.
sudo su buildbot -c "buildbot checkconfig /home/buildbot/master"
Reinicie o serviço mestre do Buildbot para que as alterações tenham efeito.
sudo systemctl restart buildbot
Navegue na interface da web novamente para ver se os usuários anônimos podem visualizar apenas os detalhes básicos sobre o servidor de construção. Agora, efetue login usando as credenciais definidas no master.cfg
arquivo e você verá que todas as outras funções administrativas estão disponíveis apenas para o usuário administrador logado.
Por padrão, o Buildbot escuta a porta 8010
em conexões não seguras. HTTPS
Recomenda-se a proteção da interface da web para garantir que os dados estejam seguros durante o transporte do navegador para o servidor. Nesta seção do tutorial, instalaremos e protegeremos o Nginx com certificados SSL gratuitos Let's Encrypt. O servidor da web Nginx funcionará como um proxy reverso para encaminhar as solicitações recebidas ao terminal HTTP do Buildbot.
Instale o Nginx.
sudo yum -y install nginx
Inicie o Nginx e permita que ele inicie automaticamente no momento da inicialização.
sudo systemctl start nginx
sudo systemctl enable nginx
Instale o Certbot, que é o aplicativo cliente do Let's Encrypt CA.
sudo yum -y install certbot
Antes de solicitar os certificados, você precisará permitir portas 80
e / 443
ou serviços HTTP
e padrão HTTPS
através do firewall. Além disso, remova a porta 8010
, que escuta as conexões não seguras.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8010/tcp --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 /usr/share/nginx/html -d ci.example.com
Os certificados gerados provavelmente serão armazenados no /etc/letsencrypt/live/ci.example.com/
diretório O certificado SSL será armazenado como fullchain.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 tarefa 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 cron acima será executado todos os dias às 05:30. Se o prazo de validade do certificado for vencido, ele será renovado automaticamente.
Agora, altere o arquivo de configuração padrão do Nginx para remover a default_server
linha.
sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf
Crie um novo arquivo de configuração para a interface da web Buildbot.
sudo nano /etc/nginx/conf.d/buildbot.conf
Preencher o arquivo.
upstream buildbot {
server 127.0.0.1:8010;
}
server {
listen 80 default_server;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
server_name ci.example.com;
root html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
access_log /var/log/nginx/buildbot.access.log;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host;
location / {
proxy_pass http://buildbot;
}
location /sse/ {
proxy_buffering off;
proxy_pass http://buildbot/sse/;
}
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://buildbot/ws;
proxy_read_timeout 6000s;
}
}
Verifique os erros no novo arquivo de configuração.
sudo nginx -t
Se você vir a seguinte saída, a configuração está livre de erros.
[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Se você recebeu algum tipo de erro, verifique o caminho para os certificados SSL. Reinicie o servidor da web Nginx para implementar a alteração na configuração.
sudo systemctl restart nginx
Abra o arquivo de configuração do Buildmaster.
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
Localize a seguinte linha.
c['buildbotURL'] = "http://192.168.1.1:8010/"
Mude o URL de acordo com o nome do domínio que você está usando.
c['buildbotURL'] = "https://ci.example.com/"
Reinicie o serviço principal do Buildbot.
sudo systemctl restart buildbot
Agora você pode acessar o painel do Buildbot em https://ci.example.com
. Você verá que as conexões com o Buildbot agora estão protegidas com SSL.
Efetue login usando as credenciais de administrador e adicione seu primeiro pipeline para começar a criar seu aplicativo.
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.