Как установить Anchor CMS на CentOS 7 LAMP VPS
Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.
Buildbot - это инструмент непрерывной интеграции с открытым исходным кодом, основанный на Python, для автоматизации создания, тестирования и развертывания программного обеспечения. Buildbot состоит из одного или нескольких мастеров Buildbot и нескольких рабочих. Мастер Buildbot или Buildmaster имеет центральное командование системой. Он отвечает за управление средой сборки рабочих и принимает все решения об отправке рабочих мест работникам. Buildmaster обнаруживает изменения в хранилище кода и отправляет команды или задания рабочим для выполнения. Рабочие выполняют задания и возвращают результат мастеру сборки. Затем Buildmaster уведомляет разработчиков по нескольким поддерживаемым каналам. В этом руководстве мы установим мастер и рабочий Buildbot на CentOS 7. Мы также настроим аутентификацию и Nginx в качестве защищенного обратного прокси-сервера.
В этом руководств�� мы будем использовать 192.168.1.1
в качестве общедоступного IP-адреса и в ci.example.com
качестве имени домена, указывающего на экземпляр Vultr. Обязательно замените все вхождения примера доменного имени и IP-адреса фактическим.
Обновите базовую систему, используя руководство Как обновить CentOS 7 . После обновления системы перейдите к установке PostgreSQL.
Установите Pip, который является менеджером пакетов для Python.
sudo yum -y install epel-release
sudo yum -y install python-pip gcc python-devel git
sudo pip install --upgrade pip
Buildbot поддерживает несколько типов серверов баз данных, таких как MySQL, PostgreSQL и SQLite. В этом руководстве мы будем использовать PostgreSQL для размещения сервера базы данных Buildbot.
PostgreSQL - это объектно-реляционная система баз данных, известная своей стабильностью и скоростью. yum
Репозиторий по умолчанию содержит старую версию PostgreSQL, поэтому добавьте репозиторий PostgreSQL.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Установите сервер базы данных PostgreSQL.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Инициализируйте базу данных.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Запустите сервер PostgreSQL и включите его автоматический запуск во время загрузки.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Измените пароль для пользователя PostgreSQL по умолчанию.
sudo passwd postgres
Войдите в систему как пользователь PostgreSQL.
sudo su - postgres
Создайте нового пользователя PostgreSQL для Buildbot.
createuser bb_user
Вы можете использовать любое имя пользователя вместо bb_user
, если хотите. PostgreSQL предоставляет psql
оболочку для выполнения запросов к базе данных. Переключитесь на оболочку PostgreSQL.
psql
Установите пароль для вновь созданного пользователя.
ALTER USER bb_user WITH ENCRYPTED password 'DBPassword';
Замените DBPassword
на безопасный пароль.
Создайте новую базу данных для установки Buildbot.
CREATE DATABASE buildbot OWNER bb_user;
Выход из psql
оболочки.
\q
Переключиться на sudo
пользователя.
exit
Отредактируйте pg_hba.conf
файл, чтобы включить аутентификацию на основе MD5.
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Найдите следующие строки и измените значения peer
и ident
, в METHOD
столбце, чтобы trust
и md5
, соответственно.
# 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
После обновления конфигурация будет выглядеть следующим образом.
# 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
Сохраните файл и выйдите из редактора. Установите адаптер базы данных PostgreSQL для Python.
sudo pip install psycopg2
Перезапустите PostgreSQL, чтобы изменения вступили в силу.
sudo systemctl restart postgresql-10
Установите Buildbot с помощью Pip.
sudo pip install 'buildbot[bundle]' pyopenssl service_identity
Эта команда установит BuildBot вместе с buildbot-www
, buildbot-worker
и несколько веб - плагинов , таких как buildbot-waterfall-view
.
Чтобы убедиться, что Buildbot был успешно установлен, вы можете проверить, проверив версию Buildbot.
buildbot --version
Вывод должен напоминать следующий текст.
[user@vultr ~]$ buildbot --version
Buildbot version: 0.9.15.post1
Twisted version: 17.9.0
Измените правила брандмауэра, чтобы разрешить порт 8010
. Buildbot использует этот порт для прослушивания веб-запросов.
sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload
Создайте нового непривилегированного пользователя для запуска основных и рабочих процессов Buildbot. Не рекомендуется запускать мастер-сервисы Buildbot как root
пользователь.
sudo adduser buildbot
sudo passwd buildbot
Войдите как вновь созданный buildbot
пользователь.
sudo su - buildbot
Настройте мастер Buildbot в /home/buildbot/master
каталоге. Этот каталог будет содержать конфигурацию, статус и файлы журналов каждой сборки.
buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
Обязательно замените учетные данные пользователя базы данных в приведенной выше команде.
Примечание. Если вы хотите использовать базу данных SQLite вместо PostgreSQL, просто опустите --db 'postgresql://bb_user:DBpassword@localhost/buildbot'
опцию. База данных SQLite будет создана в том же каталоге.
Приведенная выше команда создаст ~/master
каталог для хранения файлов Buildmaster. Он также запишет данные в базу данных PostgreSQL. Вы получите следующий вывод.
[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
Скопируйте пример файла конфигурации в оперативный файл конфигурации.
cp ~/master/master.cfg.sample ~/master/master.cfg
Отредактируйте файл конфигурации.
nano ~/master/master.cfg
Найдите следующие строки.
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",
}
Приведенная выше конфигурация имеет запись для примера работника. Мы изменим пример записи для работника, на котором мы будем работать localhost
. Измените example-worker
любое подходящее имя для localhost
работника и измените pass
какой-либо другой пароль. Запишите имя и пароль работника, так как это потребуется нам позже в руководстве. Измените имя работника в списке строителей. Измените название приложения и URL проекта в соответствии с вашими потребностями.
Измените URL-адрес Buildbot с localhost
вашего фактического имени домена или общедоступного IP-адреса. Также убедитесь, что информация базы данных в файле конфигурации соответствует вашим действительным учетным данным.
В конце файла добавьте c['buildbotNetUsageData'] = None
. Этот параметр отключит отправку разработчикам информации о версии программного обеспечения и использовании плагина. Однако, чтобы разрешить отправку информации об использовании, измените параметр на Full
.
Конфигурация должна выглядеть следующим образом.
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
Сохраните файл и выйдите из редактора. Проверьте файл конфигурации на наличие ошибок.
buildbot checkconfig ~/master
Если в файле конфигурации нет ошибок, вы увидите следующий вывод.
[buildbot@vultr ~]$ buildbot checkconfig ~/master
Config file is good!
Теперь, когда все настроено правильно, вы можете запустить мастер Buildbot.
buildbot start ~/master
Вы увидите следующий вывод.
[buildbot@vultr ~]$ buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.
Теперь, когда мастер Buildbot запущен правильно, веб-интерфейс пользователя доступен по адресу http://192.168.1.1:8010
. Вы должны увидеть следующий интерфейс Buildbot.
Поскольку мы уже изменили рабочую конфигурацию в ~/master/master.cfg
, мы можем приступить к созданию нового рабочего.
buildbot-worker create-worker ~/worker localhost localhost-worker Password123
Убедитесь, что вы используете точно такое же имя и пароль работника, как указано в ~/master/master.cfg
файле. В случае несоответствия имени или пароля работника работник не сможет подключиться к мастеру Buildbot. Вы увидите следующий вывод после успешного выполнения.
[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
Информация о работнике хранится в /info
справочнике. Изменить административную информацию о разработчике.
nano ~/worker/info/admin
Замените имя примера на ваше настоящее имя и адрес электронной почты.
Your Name <[email protected]>
Теперь откройте файл, содержащий информацию о хосте.
nano ~/worker/info/host
Замените примерную инструкцию фактической информацией о хост-системе.
Localhost, CentOS 7
Рабочая администратор и информация о хосте используются только для того, чтобы рассказать пользователям о системе. Вы также можете добавить дополнительную информацию о системе, такую как версия Buildbot и версия Twisted.
Начать рабочий.
buildbot-worker start ~/worker
Вывод будет выглядеть как следующий текст.
[buildbot@vultr ~]$ buildbot-worker start ~/worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.
Чтобы проверить, зарегистрирован ли работник, зайдите в веб-интерфейс Buildbot и перейдите к Builds >> Workers
левой навигационной панели . Вы должны увидеть, что рабочий уже готов и готов к сборке.
Чтобы запустить пример сборки, чтобы проверить, успешно ли работает работник Buildbot, перейдите к Builds >> Builders
. Нажмите на runtests
имя строителя, чтобы открыть интерфейс строителя, и нажмите на Force
кнопку, чтобы вызвать сборку. Укажите свое имя и нажмите на Start Build
кнопку, чтобы начать сборку. Поскольку это тестовый пример сборки для проверки среды Buildbot, он завершится через пару секунд. Вы получите сообщение об успехе и результат сборки.
Хотя мастер и рабочий Buildbot могут быть легко запущены с помощью приведенных выше команд, рекомендуется использовать модули Systemd для запуска и управления сервисами Buildbot. Это обеспечит их ��втоматический запуск при перезагрузке системы и сбоях.
Примечание: Переключение на sudo
пользователь снова работает либо exit
или su <username>
. Отныне все команды должны выполняться sudo
пользователем.
Остановите работающий рабочий Buildbot и мастер-сервис.
sudo su buildbot -c "buildbot stop /home/buildbot/master"
sudo su buildbot -c "buildbot-worker stop ~/worker"
Создайте новый файл модуля Systemd для мастера Buildbot.
sudo nano /etc/systemd/system/buildbot.service
Заполните файл.
[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
Запустите мастер Buildbot и включите его автоматический запуск во время загрузки.
sudo systemctl start buildbot
sudo systemctl enable buildbot
Создайте новый файл модуля Systemd для работника Buildbot.
sudo nano /etc/systemd/system/buildbot-worker.service
Заполните файл.
[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
Запустите рабочий Buildbot и включите его автоматический запуск во время загрузки.
sudo systemctl start buildbot-worker
sudo systemctl enable buildbot-worker
Вы можете проверить статус услуг.
sudo systemctl status buildbot buildbot-worker
Если службы работают без сбоев, вы увидите это в выводе.
[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.
По умолчанию аутентификация не включена в веб-интерфейсе Buildbot. Для интернет-сайтов настоятельно рекомендуется настроить аутентификацию, чтобы только авторизованные пользователи могли выполнять административные задачи. Чтобы настроить аутентификацию, снова откройте главный файл конфигурации Buildbot.
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
Добавьте следующие строки в конец файла.
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'})
Замените оба вхождения admin_user
фактическим именем пользователя, которое вы хотите использовать, и AdminPassword
надежным паролем.
Проверьте на наличие ошибок в файле конфигурации.
sudo su buildbot -c "buildbot checkconfig /home/buildbot/master"
Перезапустите главную службу Buildbot, чтобы изменения вступили в силу.
sudo systemctl restart buildbot
Снова просмотрите веб-интерфейс и убедитесь, что анонимные пользователи могут просматривать только основные сведения о сервере сборки. Теперь войдите в систему, используя учетные данные, установленные в master.cfg
файле, и вы увидите, что все остальные административные функции доступны только зарегистрированному администратору.
По умолчанию Buildbot прослушивает порт 8010
по незащищенным соединениям. HTTPS
Рекомендуется обеспечить безопасность веб-интерфейса с помощью, чтобы гарантировать безопасность данных при передаче из браузера на сервер. В этом разделе руководства мы установим и защитим Nginx с помощью бесплатных SSL-сертификатов Let's Encrypt. Веб-сервер Nginx будет работать в качестве обратного прокси-сервера для пересылки входящих запросов в конечную точку HTTP Buildbot.
Установите Nginx.
sudo yum -y install nginx
Запустите Nginx и включите его автоматический запуск во время загрузки.
sudo systemctl start nginx
sudo systemctl enable nginx
Установите Certbot, который является клиентским приложением для Let's Encrypt CA.
sudo yum -y install certbot
Прежде чем вы сможете запросить сертификаты, вам необходимо разрешить порты 80
и / 443
или стандартные HTTP
и HTTPS
сервисы через брандмауэр. Также удалите порт 8010
, который прослушивает незащищенные соединения.
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
Примечание. Чтобы получить сертификаты от Let's Encrypt CA, домен, для которого должны быть созданы сертификаты, должен быть направлен на сервер. Если нет, внесите необходимые изменения в записи DNS домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.
Создайте сертификаты SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Сгенерированные сертификаты, вероятно, будут храниться в /etc/letsencrypt/live/ci.example.com/
каталоге. Сертификат SSL будет сохранен как, fullchain.pem
а закрытый ключ - как privkey.pem
.
Срок действия сертификатов Let's Encrypt истекает через 90 дней, поэтому рекомендуется настроить автоматическое обновление сертификатов с помощью заданий Cron.
Откройте файл задания cron для root
пользователя.
sudo crontab -e
Добавьте следующую строку в конец файла.
30 5 * * * /usr/bin/certbot renew --quiet
Вышеуказанная работа cron будет выполняться каждый день в 5:30. Если срок действия сертификата истекает, он автоматически обновляет их.
Теперь измените файл конфигурации Nginx по умолчанию, чтобы убрать default_server
строку.
sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf
Создайте новый файл конфигурации для веб-интерфейса Buildbot.
sudo nano /etc/nginx/conf.d/buildbot.conf
Заполните файл.
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;
}
}
Проверьте на наличие ошибок в новом файле конфигурации.
sudo nginx -t
Если вы видите следующий вывод, конфигурация без ошибок.
[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
Если вы получили какую-то ошибку, не забудьте дважды проверить путь к сертификатам SSL. Перезапустите веб-сервер Nginx, чтобы внести изменения в конфигурацию.
sudo systemctl restart nginx
Откройте файл конфигурации Buildmaster.
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
Найдите следующую строку.
c['buildbotURL'] = "http://192.168.1.1:8010/"
Измените URL в соответствии с именем домена, которое вы используете.
c['buildbotURL'] = "https://ci.example.com/"
Перезапустите мастер-сервис Buildbot.
sudo systemctl restart buildbot
Теперь вы можете получить доступ к панели инструментов Buildbot по адресу https://ci.example.com
. Вы увидите, что соединения с Buildbot теперь защищены с помощью SSL.
Войдите, используя учетные данные администратора, и добавьте свой первый конвейер, чтобы начать сборку приложения.
Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.
При настройке нового сервера Linux рекомендуется обновить ядро системы и другие пакеты до последней стабильной версии. В этой статье
Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам
Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья
Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания
OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через
OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в
Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я
MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns
Используете другую систему? Netdata - восходящая звезда в области мониторинга показателей системы в режиме реального времени. По сравнению с другими инструментами того же рода, Netdata:
Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе
RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Широко используется в корпоративных приложениях
Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия
Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и
Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.
Традиционные подходы к анализу данных невозможно использовать, когда наборы данных достигают определенного размера. Современная альтернатива анализу огромных массивов данных, которые я
Elasticsearch - популярный движок полнотекстового поиска и аналитики с открытым исходным кодом. Благодаря своей универсальности, масштабируемости и простоте использования, Elasticsearch широко используется
Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на
Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер
Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше