Как да инсталирате и конфигурирате Concourse CI на CentOS 7

Въведение

Непрекъснатата интеграция е практика за разработка на софтуер DevOps, която позволява на разработчиците често да обединяват модифицирания код в споделеното хранилище много пъти на ден. След всяко сливане се извършват автоматични компилации и тестове за откриване на проблеми в кода. Той позволява на разработчиците да намират и разрешават бързо грешките, за да подобрят качеството на софтуера и да осигурят непрекъсната доставка на софтуера. Превключването насам-натам от Concourse е много лесно, тъй като запазва цялата си конфигурация в декларативни файлове, които могат да бъдат проверени в контрола на версиите. Той също така предоставя уеб потребителски интерфейс, който показва интерактивно информацията за изграждане.

Компоненти на зала.
  • ATC е основният компонент на Concourse. Той отговаря за работата на уеб потребителския интерфейс и API. Той също така се грижи за цялото планиране на тръбопровода.
  • TSA е персонализиран SSH сървър. Той отговаря за сигурното регистриране на работник в ATC.
  • Освен това Workers управлява две различни услуги:
    1. Garden е среда за изпълнение на контейнери и интерфейс за дистанционно организиране на контейнери на работник.
    2. Baggageclaim е сървър за управление на кеша и артефакти.
  • Fly е интерфейс на командния ред, използван за взаимодействие с ATC за конфигуриране на Concourse Pipelines.

Предпоставки

Не забравяйте да замените всички поява на 192.0.2.1и ci.example.comс вашия действителен публичен IP адрес на Vultr и действителното име на домейн.

Актуализирайте базовата си система с помощта на ръководството Как да актуализирате CentOS 7 . След като вашата система бъде актуализирана, продължете да инсталирате PostgreSQL.

Инсталирайте и конфигурирайте PostgreSQL база данни

PostgreSQL е система за обектна релационна база данни. Concourse съхранява своите тръбопроводни данни в PostgreSQL база данни. Добавете хранилището на PostgreSQL.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Инсталирайте сървъра на база данни PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib

Инициализирайте базата данни.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

initdbсъздава нов клъстер от база данни PostgreSQL, който е колекция от бази данни, които се управляват от един сървърен екземпляр. Редактирайте pg_hba.confфайла, за да активирате MD5 базирано удостоверяване.

sudo nano /var/lib/pgsql/9.6/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 сървъра и го активирайте да стартира автоматично при стартиране.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

Променете паролата за потребителя на PostgreSQL по подразбиране.

sudo passwd postgres

Влезте като потребител на PostgreSQL:

sudo su - postgres

Създайте нов потребител на PostgreSQL за Concourse CI.

createuser concourse

Забележка : Потребителят на PostgreSQL по подразбиране може да се използва за удостоверяване на базата данни, но се препоръчва да се използва специален потребител за удостоверяване на базата данни Concourse в производствена настройка.

PostgreSQL предоставя обвивка за изпълнение на заявки към базата данни. Превключете към обвивката на PostgreSQL, като изпълните:

psql

Задайте парола за новосъздадения потребител на база данни Concourse.

ALTER USER concourse WITH ENCRYPTED password 'DBPassword';

Важно : Заменете DBPasswordсъс силна парола. Запишете си паролата, тъй като тя ще се изисква по-късно в урока.

Създайте нова база данни за Concourse.

CREATE DATABASE concourse OWNER concourse;

Излезте от psqlчерупката.

\q

Превключете към потребителя на sudo от текущия потребител на postgres.

exit

Изтеглете и инсталирайте Concourse CI

Изтеглете най-новата версия на изпълнимия файл Concourse и го запазете /usr/bin, за да може да се изпълнява директно. Най-новата версия на двоичните файлове Concourse и Fly може да бъде намерена на страницата за изтегляне на Concourse . Новите издания са много чести. Заменете връзката по-долу с новата връзка за най-новата версия.

sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse

По с��щия начин изтеглете най-новата версия на изпълнимия файл fly и го запазете в /usr/bin.

sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly

Fly е интерфейсът на командния ред за свързване към ATC API на Concourse CI. Fly се предлага за множество платформи като Linux, Windows и MacOS.

Задайте разрешение за изпълнение на изтеглените concourseи flyдвоични файлове.

sudo chmod +x /usr/bin/concourse /usr/bin/fly

Проверете дали Concourse и Fly работят правилно, като проверите тяхната версия.

concourse -version
fly -version

Генериране и настройка на RSA ключове

RSA двойките ключове осигуряват начин за криптиране на комуникацията между компонентите на Concourse.

За да работи Concourse, трябва да се генерират поне три чифта ключове. За криптиране на данните за сесията генерирайте session_signing_key. Този ключ също ще се използва от TSA за подписване на заявките, които прави към ATC. За да защитите TSA SSH сървъра, генерирайте tsa_host_key. Накрая генерирайте worker_keyза всеки работник.

Създайте нова директория за съхраняване на ключовете и конфигурацията, свързани с Concourse CI.

sudo mkdir /opt/concourse

Генерирайте необходимите ключове.

sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key

Разрешете публичния ключ на работниците, като копирате съдържанието му във authorized_worker_keysфайла:

sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys

Начална зала

Concourse предоставя два отделни компонента, които трябва да бъдат стартирани, уеб и работника. Стартирайте мрежата Concourse.

sudo concourse web \
  --basic-auth-username admin \
  --basic-auth-password StrongPass \
  --session-signing-key /opt/concourse/session_signing_key \
  --tsa-host-key /opt/concourse/tsa_host_key \
  --tsa-authorized-keys /opt/concourse/authorized_worker_keys \
  --postgres-user=concourse \
  --postgres-password=DBPassword \
  --postgres-database=concourse \
  --external-url http://192.0.2.1:8080

Променете потребителското име и паролата на, basic-authако желаете. Уверете се, че пътят към ключовите файлове е правилен и се уверете, че е предоставена правилната стойност за потребителско име и парола в конфигурацията на базата данни PostgreSQL.

Забележка : ATC ще слуша порта по подразбиране, 8080а TSA ще слуша порта 2222. Ако удостоверяването не е желано, предайте --no-really-i-dont-want-any-authопцията, след като премахнете основните опции за удостоверяване.

Once the web server is started, the following output should be displayed.

{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}

Stop the server for now, as a few more things still must be setup.

Start the Concourse CI Worker.

sudo concourse worker \
  --work-dir /opt/concourse/worker \
  --tsa-host 127.0.0.1 \
  --tsa-public-key /opt/concourse/tsa_host_key.pub \
  --tsa-worker-private-key /opt/concourse/worker_key

The above command will assume that the TSA is running on localhost and listening to the default port 2222.

Though the Concourse web and worker can be started easily using the commands above, it is recommended to use Systemd to manage the server.

Configure Environment and Systemd Service

Using Systemd service for managing the application ensures that the application is automatically started on failures and at boot time. The Concourse server does not take data from any configuration file, but it can access the data from environment variables. Instead of setting global environment variables, create a new file to store the environment variables and then pass the variables to the Concourse CI using the Systemd service.

Create a new environment file for Concourse web.

sudo nano /opt/concourse/web.env

Populate the file.

CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys

CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse

CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080

Change the username and password of the BASIC_AUTH if desired. Make sure that the path to the key files are correct and make sure that the correct value for username and password in the PostgreSQL database configuration is provided.

Similarly, create an environment file for the worker.

sudo nano /opt/concourse/worker.env

Populate the file.

CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1

As the environment files contain username and passwords, change its permissions so that it cannot be accessed by other users.

sudo chmod 600 /opt/concourse/*.env

Now create a new user for Concourse to run the web environment. This will ensure that the web server is running in an isolated environment.

sudo adduser --system concourse

Give the concourse user ownership over Concourse CI file's directory.

sudo chown -R concourse:concourse /opt/concourse

Create a new systemd service file for the Concourse web service.

sudo nano /etc/systemd/system/concourse-web.service

Populate the file.

[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service

[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web

[Install]
WantedBy=multi-user.target

Save and close the file. Create a new service file for the Concourse worker service.

sudo nano /etc/systemd/system/concourse-worker.service

Populate the file.

[Unit]
Description=Concourse CI worker process
After=concourse-web.service

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker

[Install]
WantedBy=multi-user.target

The web and worker service can now be started directly by running:

sudo systemctl start concourse-web concourse-worker

To enable the worker and web process to automatically start at boot time, run:

sudo systemctl enable concourse-worker concourse-web

To check the status of services, run:

sudo systemctl status concourse-worker concourse-web

If the service is not started, or in the FAILED state, remove the cache from the /tmp directory.

sudo rm -rf /tmp/*

Restart the services.

sudo systemctl restart concourse-worker concourse-web

Notice that this time the services have started correctly. The output upon verifying the status of the services should be simil.

[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
   Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
 Main PID: 3037 (concourse)
   CGroup: /system.slice/concourse-worker.service
           └─3037 /usr/bin/concourse worker

Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...

● concourse-web.service - Concourse CI web server
   Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
 Main PID: 3036 (concourse)
   CGroup: /system.slice/concourse-web.service
           └─3036 /usr/bin/concourse web

Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.

Adjust your firewall to allow port 8080, on which ATS is running and port 2222, on which TSA is running.

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

Connecting to the Server

Once the server is started, the web interface of the Concourse CI can be accessed by going to http://192.0.2.1:8080 in any browser. Log in using the username and password provided in the environment file.

To connect to the server using Fly, run:

fly -t my-ci login -c http://192.0.2.1:8080

The above command is used for initial login to the server. -t is used to provide a target name. replace my-ci with any desired target name. The above command will log in to the default team main. It will ask for the username and password provided in the environment file.

The output will look like the following.

[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'

username: admin
password:

target saved

The target login will be saved for a day. After that, it will expire.

To log out immediately.

fly -t my-ci logout

fly can be used to login to the server outside of the network, but only if the server has a public IP address and it is accessible from outside the network. The Windows or MacOS binary can be downloaded from the download site or from the web UI of the server.

Setting Up Nginx Reverse Proxy

Logins, and other information sent through the web UI to the Concourse server is not secured. The connection is not encrypted. An Nginx reverse proxy can be set up with a Let's Encrypt free SSL.

Install the Nginx web server and Certbot, which is the client application for the Let's Encrypt CA.

sudo yum -y install certbot-nginx nginx

Start and enable Nginx to automatically start at boot time:

sudo systemctl start nginx
sudo systemctl enable nginx

Преди да може да се направи заявка за сертификатите, порт 80 и 443 или стандартните HTTP и HTTPS услуги трябва да бъдат активирани през защитната стена. Certbot ще провери авторитета на домейна, преди да издаде сертификати.

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

Порт 8080 вече не трябва да се разрешава през защитната стена, защото Concourse вече ще се изпълнява на стандартния HTTPS порт. Премахнете записа на защитната стена, за да разрешите порт 8080.

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

Забележка

To obtain certificates from Let's Encrypt CA, the domain for which the certificates are to be generated must be pointed towards the server. If not, make the necessary changes to the DNS records of the domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.

Генерирайте 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 дни, така че се препоръчва автоматичното подновяване на сертификатите да се настрои с помощта на cronjobs. Cron е системна услуга, която се използва за изпълнение на периодични задачи.

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

sudo crontab -e

Добавете следния ред в края на файла.

30 5 * * 1 /usr/bin/certbot renew --quiet

Горната задача на cron ще се изпълнява всеки понеделник в 5:30 сутринта. Ако срокът на валидност на сертификата изтича, той автоматично ще бъде подновен.

Създайте нов виртуален хост.

sudo nano /etc/nginx/conf.d/concourse-ssl.conf

Попълнете файла.

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

    listen 443;
    server_name ci.example.com;

    ssl_certificate           /etc/letsencrypt/live/ci.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/ci.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/concourse.access.log;

    location / {

      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_pass          http://localhost:8080;
      proxy_read_timeout  90;

      proxy_redirect      http://localhost:8080 https://ci.example.com;
    }
  }

Забележка : Заменете ci.example.comс действителния домейн.

Редактирайте файла на средата, създаден за Concours Web.

sudo nano /opt/concourse/web.env

Променете стойността на CONCOURSE_EXTERNAL_URLи също така добавете още два реда в края на файла.

CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080

Запазете файла и рестартирайте Concourse Web, Worker и Nginx уеб сървър:

sudo systemctl restart concourse-worker concourse-web nginx

Всички данни, изпращани към и от браузъра, вече са защитени със SSL криптиране.


Увеличете производителността със Z и Zsh на CentOS

Увеличете производителността със Z и Zsh на CentOS

Въведение Работата в Linux системи означава, че човек използва командния ред по-често, отколкото не. Трябва да въвеждате дълги имена на директории отново и отново

Настройте RethinkDB Cluster на CentOS 7

Настройте RethinkDB Cluster на CentOS 7

Въведение RethinkDB е NoSQL база данни, която съхранява данни като JSON документи. Той има супер интуитивен език за заявки и има общодостъпни функции i

Инсталирайте DirectAdmin на CentOS 6 или 7

Инсталирайте DirectAdmin на CentOS 6 или 7

DirectAdmin е собствен уеб-базиран контролен панел, който можете да инсталирате на вашия сървър, който предлага разнообразие от функции за системно администриране. В това

Преглед на процеса на зареждане на CentOS 7 и RHEL 7 и отстраняване на неизправности

Преглед на процеса на зареждане на CentOS 7 и RHEL 7 и отстраняване на неизправности

Тази статия описва процеса на зареждане за системи CentOS/RHEL 7.x. Въпреки че може да остане подобен на предишните издания, с RHEL 7, systemd е в сила

Инсталирайте PostgreSQL на CentOS 7

Инсталирайте PostgreSQL на CentOS 7

Въведение PostgreSQL е най-модерната система за управление на релационни бази данни с отворен код (RDBMS). Той е съвместим със стандартите ANSI SQL:2008

Основи на управлението на потребители на CentOS системи

Основи на управлението на потребители на CentOS системи

Управлението на потребителите може да бъде трудна задача: от ежедневна поддръжка, рискове за сигурността и липса на задълбочена онлайн документация. Тази статия ще ви помогне да започнете

Първоначална настройка на сървър CentOS 7

Първоначална настройка на сървър CentOS 7

Въведение Новоактивиран сървър CentOS 7 трябва да бъде персонализиран, преди да може да се използва като производствена система. В тази статия най-важното

Проверете скоростта на интернет със Speedtest-cli на CentOS

Проверете скоростта на интернет със Speedtest-cli на CentOS

Въведение В този урок добре инсталирайте Speedtest-cli, за да тествате скоростта на мрежата на вашия сървър. Speedtest-cli е интерфейс на командния ред за th

Инсталирайте GUI среда на CentOS 6

Инсталирайте GUI среда на CentOS 6

Управлението на вашия сървър само с SSH може да бъде плашещо. Хубавото за нас е, че Vultr има опция View Console. За да използвате напълно Vultrs VNC конзола

Настройте часова зона и NTP на CentOS 6

Настройте часова зона и NTP на CentOS 6

Въведение За администраторите на сървъри е важно да задават и поддържат правилно времето на сървърите. Неправилно конфигурирано време ще предизвика хаос в рамките на th

Как да инсталирате Foreman на CentOS 7

Как да инсталирате Foreman на CentOS 7

Използване на различна система? Foreman е безплатен инструмент с отворен код, който ви помага с конфигурирането и управлението на физически и виртуални сървъри. Forema

Осигуряване и втвърдяване на ядрото на CentOS 7 със Sysctl

Осигуряване и втвърдяване на ядрото на CentOS 7 със Sysctl

Въведение Sysctl позволява на потребителя фина настройка на ядрото, без да се налага да го изгражда отново. Той също така ще приложи промените незабавно, като по този начин сървърът спечели

Използвайте Nethogs за наблюдение на използването на мрежовата честотна лента

Използвайте Nethogs за наблюдение на използването на мрежовата честотна лента

В този урок ще покрием процеса на инсталиране и използване на nethogs на CentOS 6x x64. nethogs е инструмент за наблюдение на мрежата, който позволява Networ

Инсталирайте CentOS Web Panel (CWP) на CentOS 6

Инсталирайте CentOS Web Panel (CWP) на CentOS 6

CentOS Web Panel или CWP е хостинг контролен панел с отворен код, който е предназначен за бързо и лесно управление на сървър. Той включва всички функции o

Настройте Zarafa и Yaffas на CentOS 6

Настройте Zarafa и Yaffas на CentOS 6

Има много решения, които заменят Microsoft Exchange с решение за Linux, но всички те имаха един проблем, който наистина не ми хареса. Когато получавам

Как да инсталирате и конфигурирате Concourse CI на CentOS 7

Как да инсталирате и конфигурирате Concourse CI на CentOS 7

Използване на различна система? Въведение Непрекъснатата интеграция е практика за разработка на софтуер DevOps, която позволява на разработчиците често да обединяват

Внедряване на Glowing Bear Backend сървър на CentOS 7

Внедряване на Glowing Bear Backend сървър на CentOS 7

Glowing Bear е уеб интерфейс за WeeChat IRC клиента и се стреми да бъде модерен интерфейс. Със своите функции като щракване за споменаване, заместване на емоджита

Как да надстроите CentOS 6 до CentOS 7

Как да надстроите CentOS 6 до CentOS 7

Как да надстроите CentOS 6 до CentOS 7

Защитете TMP и TMPFS на CentOS 6

Защитете TMP и TMPFS на CentOS 6

Временни директории като /tmp, /var/tmp и /dev/shm предлагат платформа за хакери да изпълняват скриптове и програми. Тези злонамерени изпълними файлове се използват t

Активирайте EPEL на CentOS

Активирайте EPEL на CentOS

Фон Fedoras Extra Packages for Enterprise Linux (EPEL) хранилище предоставя възможност за инсталиране на софтуерни пакети, които не са включени в

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

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

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

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

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

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

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече