Как установить Taiga Project Management Tool на Ubuntu 16.04

Taiga - это бесплатное приложение с открытым исходным кодом для управления проектами. В отличие от других инструментов управления проектами, Taiga использует поэтапный и гибкий подход для управления развитием проекта. Тайга - очень мощное и полностью настраиваемое приложение. Бэкэнд Taiga написан на Python с использованием фреймворка Django. Интерфейс написан на JavaScript с использованием сред CoffeeScript и AngularJS. Тайга включает в себя такие функции, как совместная работа над проектом, доска объявлений Канбан, отслеживание ошибок, создание отчетов, отслеживание времени, задержек, вики и многое другое.

Предпосылки

В этом уроке мы будем использовать taiga.example.comимя домена, указывающее на сервер. Замените все вхождения taiga.example.comс вашим фактическим доменным именем.

Обновите свою базовую систему, используя руководство Как обновить Ubuntu 16.04 . После обновления системы перейдите к установке PostgreSQL.

Установить PostgreSQL

PostgreSQL - это объектно-реляционная система баз данных, известная своей стабильностью и скоростью. Тайга использует PostgreSQL для хранения своей базы данных. Добавьте репозиторий PostgreSQL в систему.

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

Импортируйте ключ подписи GPG и обновите списки пакетов.

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

Установите сервер базы данных PostgreSQL.

sudo apt -y install postgresql

Запустите сервер PostgreSQL и включите его автоматический запуск во время загрузки.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Измените пароль для пользователя PostgreSQL по умолчанию.

sudo passwd postgres

Войдите как пользователь PostgreSQL.

sudo su - postgres

Создайте нового пользователя PostgreSQL для Taiga.

createuser taiga 

PostgreSQL предоставляет psqlоболочку для выполнения запросов к базе данных. Переключитесь на оболочку PostgreSQL.

psql

Установите пароль для вновь созданного пользователя для базы данных Taiga.

ALTER USER taiga WITH ENCRYPTED password 'DBPassword';

Замените DBPasswordна безопасный пароль. Создайте новую базу данных для установки Тайги.

CREATE DATABASE taiga OWNER taiga;

Выход из psqlоболочки.

\q

Переключиться на sudoпользователя.

exit

Установить Python

Taiga требует Python версии 3.4 или новее, а Python 3.5 уже предустановлен в дистрибутиве Ubuntu 16.04. Установите еще несколько необходимых пакетов.

sudo apt -y install python3 python3-pip python3-dev python3-dev virtualenvwrapper

Виртуальная среда Python используется для создания изолированной виртуальной среды для проекта Python. Виртуальная среда содержит свои собственные установочные каталоги и не разделяет библиотеки с глобальными и другими виртуальными средами. Как только Python 3 будет успешно установлен, вы сможете проверить его версию.

python3 -V

Вы увидите следующее.

user@vultr:~$ python3 -V
Python 3.5.2

Обновление pip, которое является приложением менеджера зависимостей.

sudo pip3 install --upgrade setuptools pip 

Кроме того, установите несколько инструментов сборки, которые потребуются позже для компиляции зависимостей.

sudo apt -y install build-essential binutils-doc autoconf flex bison libjpeg-dev libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev automake libtool libffi-dev curl git tmux gettext

Установить RabbitMQ

Тайга использует RabbitMQ для обработки очереди сообщений. RabbitMQ требует библиотеки Erlang для работы. Установите Erlang.

sudo apt -y install erlang

Добавьте хранилище RabbitMQ.

echo 'deb http://www.rabbitmq.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

Импортируйте ключ подписи RabbitMQ GPG.

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

Обновите информацию о хранилище.

sudo apt update

Установите RabbitMQ.

sudo apt -y install rabbitmq-server

Запустите и включите сервер RabbitMQ.

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

Добавьте пользователя RabbitMQ и vhost. Также предоставьте разрешение пользователю через хост.

sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"

Обязательно замените его StrongMQPasswordна безопасный пароль.

Установить Nodejs

Node.js версии 7 или новее необходим для компиляции внешнего интерфейса Taiga. Добавьте репозиторий Node.js версии 8.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Установите Node.js и pwgenутилиту.

sudo apt install -y nodejs pwgen npm

pwgenбудет использоваться позже для генерации сильной секретной строки. Установите CoffeeScript, так как он будет использоваться для компиляции файлов Taiga, написанных в среде CoffeeScript.

sudo npm install -g coffee-script gulp

Установить Тайга Бэкэнд

Добавьте нового системного пользователя для Taiga, чтобы гарантировать, что процессы Taiga работают как непривилегированный пользователь.

sudo adduser taiga
sudo su - taiga

Примечание . С этого момента все команды необходимо запускать как непривилегированный пользователь, taigaпока вас не попросят вернуться обратно к sudoпользователю.

Создайте новый каталог для хранения файлов журнала.

mkdir -p ~/logs

Клонируйте хранилище Taiga backend из GitHub и оформите последнюю стабильную ветку.

git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable

Теперь создайте новую виртуальную среду для Тайги, используя Python 3.

mkvirtualenv -p /usr/bin/python3 taiga
pip3 install --upgrade setuptools

Установите необходимые зависимости Python, используя pip.

pip3 install -r requirements.txt

Заполните базу данных необходимыми исходными данными.

python3 manage.py migrate --noinput
python3 manage.py loaddata initial_user
python3 manage.py loaddata initial_project_templates
python3 manage.py compilemessages
python3 manage.py collectstatic --noinput

Вышеуказанные команды будут записывать данные в базу данных PostgreSQL. Тайга также отправляет некоторые демонстрационные данные или образцы данных, которые могут быть полезны для оценки продукта. Если вы хотите установить образец данных, выполните следующее.

python3 manage.py sample_data

Примечание . Установка примеров данных не является обязательной и предназначена только для оценки продукта.

Прежде чем приступить к созданию файла конфигурации для бэкэнда Taiga, нам нужно сгенерировать секретную строку. Эта строка будет использоваться для шифрования данных сеанса.

Генерация случайной строки из 64 символов.

pwgen -s -1 64

Вы должны увидеть результат в виде случайной строки.

(taiga) taiga@vultr:~/taiga-back$ pwgen -s -1 64
fhDfyYVJ4EH3tvAyUzmfWSeCXuf5sy5EEWrMQPaf9t3JSFrpiL6yvUEOWsFOTscP

Создайте новый файл конфигурации для Taiga Backend.

nano ~/taiga-back/settings/local.py

Заполните файл следующим кодом.

from .common import *

MEDIA_URL = "https://taiga.example.com/media/"
STATIC_URL = "https://taiga.example.com/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "taiga.example.com"

SECRET_KEY = "Generated_Secret_Key"

DEBUG = False
PUBLIC_REGISTER_ENABLED = True

DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL

#CELERY_ENABLED = True

EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga"}

# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#EMAIL_PORT = 25

# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"

Убедитесь, что заменили на example domain nameфактический в приведенном выше коде. Также замените Generated_Secret_Keyдействительным секретным ключом и StrongMQPasswordдействительным паролем для пользователя очереди сообщений «Тайга». Если у вас есть готовый SMTP-сервер и вы хотите немедленно использовать функции отправки электронной почты, вы можете раскомментировать параметры электронной почты и установить соответствующее значение. Если у вас нет готового почтового сервера, вы можете на данный момент пропустить настройку функции электронной почты и настроить ее позже в этом файле конфигурации.

Если вы хотите включить вход в GitHub, создайте приложение в GitHub и предоставьте идентификатор клиента API и секрет клиента.

Чтобы сразу проверить, можно ли запустить бэкэнд Taiga, запустите встроенный сервер Django.

workon taiga
python manage.py runserver

Вы увидите следующий вывод, если сервер успешно запущен.

(taiga) taiga@vultr:~/taiga-back$ workon taiga
(taiga) taiga@vultr:~/taiga-back$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...

System check identified no issues (0 silenced).
October 28, 2017 - 10:29:38
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Чтобы проверить, доступен ли API, откройте другой сеанс терминала и выполните следующее.

curl http://127.0.0.1:8000/api/v1/

Вы увидите похожий вывод, возвращаемый вызовом API.

user@vultr:~$ curl http://127.0.0.1:8000/api/v1/
{"webhooks": "http://127.0.0.1:8000/api/v1/webhooks", "invitations": "http://127.0.0.1:8000/api/v1/invitations", "severities": "http://127.0.0.1:8000/api/v1/severities", "memberships": "http://127.0.0.1:8000/api/v1/memberships", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "epics/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/epics/(?P<resource_id>\\d+)/voters", "wiki": "http://127.0.0.1:8000/api/v1/wiki", "priorities": "http://127.0.0.1:8000/api/v1/priorities", "userstories/attachments": "http://127.0.0.1:8000/api/v1/userstories/attachments", "epics/(?P<epic>[^/.]+)/related_userstories": "http://127.0.0.1:8000/api/v1/epics/(?P<epic>[^/.]+)/related_userstories", "timeline/user": "http://127.0.0.1:8000/api/v1/timeline/user", "userstories/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/userstories/(?P<resource_id>\\d+)/voters", "wiki-links": "http://127.0.0.1:8000/api/v1/wiki-links", "epics/attachments": "http://127.0.0.1:8000/api/v1/epics/attachments", "issues/custom-attributes-values": "http://127.0.0.1:8000/api/v1/issues/custom-attributes-values

Остановите сервер «Тайга», нажав « ctrl + C», и деактивируйте виртуальную среду.

deactivate

Установить интерфейс

Интерфейс Taiga является компонентом Taiga, который обслуживает веб-интерфейс пользователя. Клонируйте хранилище внешнего интерфейса Taiga от Github и оформите последнюю стабильную ветку.

cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable

Создайте новый файл конфигурации для интерфейса Taiga.

nano ~/taiga-front-dist/dist/conf.json

Заполните файл.

{
    "api": "https://taiga.example.com/api/v1/",
    "eventsUrl": "wss://taiga.example.com/events",
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true,
    "debugInfo": false,
    "defaultLanguage": "en",
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true,
    "feedbackEnabled": true,
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [],
    "tribeHost": null,
    "importers": [],
    "gravatar": true
}

Обязательно замените его example domainна фактический домен. Вы также можете изменить язык по умолчанию и другие параметры в конфигурации выше.

Установить Тайга События

Помимо внешнего интерфейса и внутреннего интерфейса нам также необходимо установить события тайги. События Taiga - это сервер веб-сокетов, и он позволяет интерфейсу Taiga в реальном времени отображать изменения в модулях, таких как backlog, Kanban и другие. Он также использует сервер RabbitMQ для обработки сообщений.

Клон Тайга, хранилище событий от Github.

cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events

Установите зависимости Node.js, используя npm.

npm install

Создайте новый файл конфигурации для событий Тайги.

nano ~/taiga-events/config.json

Заполните файл.

{
    "url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga",
    "secret": "Generated_Secret_Key",
    "webSocketServer": {
        "port": 8888
    }
}

Замените Generated_Secret_Keyдействительным секретным ключом длиной 64 символа, который вы сгенерировали ранее. Секретный ключ должен совпадать с ключом, который вы указали в файле конфигурации бэкенда Taiga. Также обновите StrongMQPasswordпароль, указав фактический пароль для пользователя очереди сообщений «Тайга».

Настроить Цирк

Circus - менеджер процессов для приложений на Python. Мы будем использовать Цирк для запуска бэкэнда и событий Тайги.

Вернитесь к sudoпользователю.

exit

Примечание : теперь вам нужно будет запускать команды, используя sudoпользователя.

sudo apt -y install circus

Создайте новый файл конфигурации Circus для запуска бэкэнда Taiga.

sudo nano /etc/circus/conf.d/taiga.ini

Заполните файл.

[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4

[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.5/site-packages

Создайте новую конфигурацию Цирка для запуска Тайги.

sudo nano /etc/circus/conf.d/taiga-events.ini

Заполните файл.

[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/local/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12

Перезапустите Circus и включите автоматический запуск во время загрузки.

sudo systemctl restart circusd
sudo systemctl enable circusd

Проверьте статус цирка.

circusctl status

Если Цирк запустил все процессы Тайги правильно, то вы увидите следующий вывод.

user@vultr:~$ circusctl status
circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active

Если вы видите, что какой-либо процесс не активен, запустите sudo chmod -R 777 /home/taiga/logsи перезапустите Circus. Еще раз проверьте состояние процессов в Цирке, на этот раз вы обязательно найдете работающий сервис.

Теперь у нас Тайга успешно установлена ​​и работает. Прежде чем мы сможем его использовать, нам нужно выставить установку с использованием любого рабочего веб-сервера.

Установите Nginx в качестве обратного прокси

Мы будем использовать Nginx в качестве обратного прокси-сервера для предоставления приложения пользователям. Мы также получим и установим SSL-сертификаты от Let's Encrypt.

Certbot является официальным клиентом выдачи сертификатов для Let's Encrypt CA. Добавьте в систему репозиторий Certbot PPA.

sudo add-apt-repository ppa:certbot/certbot
sudo apt update

Установите Nginx и Certbot.

sudo apt -y install nginx certbot

Примечание . Чтобы получить сертификаты от Let's Encrypt CA, необходимо убедиться, что домен, для которого вы хотите создать сертификаты, направлен на сервер. Если нет, внесите необходимые изменения в записи DNS вашего домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.

Теперь используйте встроенный веб-сервер в Certbot для генерации сертификатов для вашего домена.

sudo certbot certonly --standalone -d taiga.example.com

Сгенерированные сертификаты, вероятно, будут храниться в /etc/letsencrypt/live/taiga.example.com/каталоге. Сертификат SSL будет сохранен как fullchain.pem, а закрытый ключ - как privkey.pem.

Срок действия сертификатов Let's Encrypt истекает через 90 дней, поэтому рекомендуется настроить автоматическое обновление сертификатов с помощью заданий Cron. Cron - это системный сервис, который используется для периодических задач.

Откройте файл задания cron.

sudo crontab -e

Добавьте следующую строку.

0 0 * * * /usr/bin/certbot renew --quiet

Вышеуказанная работа cron будет выполняться ежедневно в полночь. Если срок действия сертификата истекает, он автоматически обновляет сертификаты.

Генерация сильного параметра Диффи-Хеллмана. Это обеспечивает дополнительный уровень безопасности для обмена данными между хостом и сервером.

sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048 

Создайте новый серверный блок Nginx для обслуживания внешнего интерфейса Taiga.

sudo nano /etc/nginx/sites-available/taiga

Заполните файл следующим.

server {
    listen 80;
    server_name taiga.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name taiga.example.com;

    access_log /home/taiga/logs/nginx.access.log;
    error_log /home/taiga/logs/nginx.error.log;

    large_client_header_buffers 4 32k;
    client_max_body_size 50M;
    charset utf-8;

    index index.html;

    # Frontend
    location / {
        root /home/taiga/taiga-front-dist/dist/;
        try_files $uri $uri/ /index.html;
    }

    # Backend
    location /api {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001/api;
        proxy_redirect off;
    }

    location /admin {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8001$request_uri;
        proxy_redirect off;
    }

    # Static files
    location /static {
        alias /home/taiga/taiga-back/static;
    }

    # Media files
    location /media {
        alias /home/taiga/taiga-back/media;
    }

     location /events {
        proxy_pass http://127.0.0.1:8888/events;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

    ssl on;
    ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

}

Обязательно измените domain nameи path to the SSL certificates. Включить виртуальный хост.

sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga

Теперь вы можете перезапустить веб-сервер Nginx и включить его автоматический запуск при загрузке.

sudo systemctl restart nginx
sudo systemctl status nginx

Наконец, исправьте владение и разрешение на файлы Taiga.

sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/

Вывод

Теперь вы можете получить доступ к установке Taiga, перейдя в https://taiga.example.com. Войдите в систему, используя первоначальную учетную запись администратора с именем пользователя " admin" и паролем " 123123". Ваша установка готова к использованию. Начните с создания нового проекта или оценки продукта. Если вы уже управляете проектом на Github, Jira или Trello, вы можете легко импортировать проекты в Taiga с помощью импортеров .



Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше