Инсталирайте Plesk на CentOS 7
Използване на различна система? Plesk е собствен контролен панел за уеб хост, който позволява на потребителите да администрират своите лични и/или клиентски уебсайтове, бази данни
Matrix е отворен стандартен комуникационен протокол за децентрализирана комуникация в реално време. Matrix е реализиран като домашни сървъри, които се разпространяват през интернет; следователно няма единна точка на контрол или провал. Matrix предоставя RESTful HTTP API за създаване и управление на разпределените чат сървъри, което включва изпращане и получаване на съобщения, кани и управление на членове на чат стаята, поддържане на потребителски акаунти и предоставяне на разширени функции за чат като VoIP и видео разговори и т.н. Matrix също така установява сигурна синхронизация между домашни сървъри, които са разпространени по целия свят.
Synapse е реализация на домашен сървър на Matrix, написана от екипа на Matrix. Екосистемата на Matrix се състои от мрежа от много обединени домашни сървъри, разпределени по целия свят. Потребител на Matrix използва чат клиент, за да се свърже с домашния сървър, който от своя страна се свързва с мрежата на Matrix. Homeserver съхранява историята на чата и информацията за влизане на този конкретен потребител.
В този урок ще използваме matrix.example.com
като име на домейн, използвано за Matrix Synapse. Заменете всички поява на matrix.example.com
с вашето действително име на домейн, което искате да използвате за вашия домашен сървър на Synapse.
Актуализирайте базовата си система с помощта на ръководството Как да актуализирате CentOS 7 . След като вашата система се актуализира, продължете да инсталирате Python.
Matrix Synapse се нуждае от Python 2.7, за да работи. Python 2.7 се предлага предварително инсталиран във всички сървърни инстанции на CentOS. Можете да проверите инсталираната версия на Python.
python -V
Трябва да получите подобен изход.
[user@vultr ~]$ python -V
Python 2.7.5
Промяната на версията по подразбиране на Python може да наруши мениджъра на хранилището на YUM. Въпреки това, ако искате най-новата версия на Python, можете да направите алтернативна инсталация, без да заменяте Python по подразбиране.
Инсталирайте пакетите в Development tools
групата, които са необходими за компилиране на инсталационните файлове.
sudo yum groupinstall -y "Development tools"
Инсталирайте още няколко необходими зависимости.
sudo yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel
Инсталирайте Python pip. Pip е мениджърът на зависимости за пакетите на Python.
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
Създайте виртуална среда за вашето приложение Synapse. Виртуалната среда на Python се използва за създаване на изолирана виртуална среда за проект на Python. Виртуалната среда съдържа свои собствени инсталационни директории и не споделя библиотеки с глобални и други виртуални среди.
sudo virtualenv -p python2.7 /opt/synapse
Предоставете собствеността върху директорията на текущия потребител.
sudo chown -R $USER:$USER /opt/synapse/
Сега активирайте виртуалната среда.
source /opt/synapse/bin/activate
Уверете се, че имате най-новата версия на pip
и setuptools
.
pip install --upgrade pip
pip install --upgrade setuptools
Инсталирайте най-новата версия на Synapse с помощта на pip.
pip install https://github.com/matrix-org/synapse/tarball/master
Изпълнението на горната команда ще отнеме известно време, докато изтегля и инсталира най-новата версия на Synapse и всички зависимости от хранилището на Github.
Synapse използва SQLite като база данни по подразбиране. SQLite съхранява данните в база данни, която се съхранява като плосък файл на диск. Използването на SQLite е много просто, но не се препоръчва за производство, тъй като е много бавно в сравнение с PostgreSQL.
PostgreSQL е система за обектна релационна база данни. Ще трябва да добавите хранилището на PostgreSQL във вашата система, тъй като приложението не е налично в хранилището по подразбиране на YUM.
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
Редактирайте, за /var/lib/pgsql/9.6/data/pg_hba.conf
да активирате MD5 базирано удостоверяване.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Намерете следните редове и променете peer
на trust
и idnet
на 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 idnet
# IPv6 local connections:
host all all ::1/128 idnet
След като бъде актуализирана, конфигурацията трябва да изглежда така.
# 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
Влизане.
sudo su - postgres
Създайте нов потребител на PostgreSQL за Synapse.
createuser synapse
PostgreSQL предоставя psql
обвивката за изпълнение на заявки към базата данни. Превключете към обвивката на PostgreSQL, като стартирате.
psql
Задайте парола за новосъздадения потребител за базата данни Synapse.
ALTER USER synapse WITH ENCRYPTED password 'DBPassword';
Заменете DBPassword
със силна парола и си я запишете, тъй като ще използваме паролата по-късно. Създайте нова база данни за базата данни PostgreSQL.
CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;
Излезте от psql
черупката.
\q
Превключете към sudo
потребителя от текущия postgres
потребител.
exit
Вие също ще трябва да инсталирате пакетите, необходими за Synapse да комуникира със сървъра на базата данни PostgreSQL.
sudo yum -y install postgresql-devel libpqxx-devel.x86_64
source /opt/synapse/bin/activate
pip install psycopg2
Synapse изисква конфигурационен файл, преди да може да бъде стартиран. Конфигурационният файл съхранява настройките на сървъра. Превключете към виртуалната среда и генерирайте конфигурацията за Synapse.
source /opt/synapse/bin/activate
cd /opt/synapse
python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
Replace matrix.example.com
with your actual domain name and make sure that the server name is resolvable to the IP address of your Vultr instance. Provide --report-stats=yes
if you want the servers to generate the reports, provide --report-stats=no
to disable the generation of reports and statistics.
You should see a similar output.
(synapse)[user@vultr synapse]$ python -m synapse.app.homeserver --server-name matrix.example.com --config-path homeserver.yaml --generate-config --report-stats=yes
A config file has been generated in 'homeserver.yaml' for server name 'matrix.example.com' with corresponding SSL keys and self-signed certificates. Please review this file and customise it to your needs.
If this server name is incorrect, you will need to regenerate the SSL certificates
By default, the homeserver.yaml
is configured to use a SQLite database. We need to modify it to use the PostgreSQL database we have created earlier.
Edit the newly created homeserver.yaml
.
nano homeserver.yaml
Find the existing database configuration which uses SQLite3. Comment out the lines as shown below. Also, add the new database configuration for PostgreSQL. Make sure that you use the correct database credentials.
# Database configuration
#database:
# The database engine name
#name: "sqlite3"
# Arguments to pass to the engine
#args:
# Path to the database
#database: "/opt/synapse/homeserver.db"
database:
name: psycopg2
args:
user: synapse
password: DBPassword
database: synapse
host: localhost
cp_min: 5
cp_max: 10
Registration of a new user from a web interface is disabled by default. To enable registration, you can set enable_registration
to True
. You can also set a secret registration key, which allows anyone to register who has the secret key, even if registration is disabled.
enable_registration: False
registration_shared_secret: "YPPqCPYqCQ-Rj,ws~FfeLS@maRV9vz5MnnV^r8~pP.Q6yNBDG;"
Save the file and exit from the editor. Now you will need to register your first user. Before you can register a new user, though, you will need to start the application first.
source /opt/synapse/bin/activate && cd /opt/synapse
synctl start
You should see the following lines.
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - SynapseSite starting on 8008
2017-09-05 11:10:41,921 - twisted - 131 - INFO - - Starting factory <synapse.http.site.SynapseSite instance at 0x44bbc68>
2017-09-05 11:10:41,921 - synapse.app.homeserver - 201 - INFO - - Synapse now listening on port 8008
2017-09-05 11:10:41,922 - synapse.app.homeserver - 442 - INFO - - Scheduling stats reporting for 3 hour intervals
started synapse.app.homeserver('homeserver.yaml')
Register a new Matrix user.
register_new_matrix_user -c homeserver.yaml https://localhost:8448
You should see the following.
(synapse)[user@vultr synapse]$ register_new_matrix_user -c homeserver.yaml https://localhost:8448
New user localpart [user]: admin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success.
Finally, before you can use the Homeserver, you will need to allow port 8448 through the Firewall. Port 8448
is used as the secured federation port. Homeservers use this port to communicate with each other securely. You can also use the built-in Matrix web chat client through this port.
sudo firewall-cmd --permanent --zone=public --add-port=8448/tcp
sudo firewall-cmd --reload
You can now log in to the Matrix web chat client by going to https://matrix.example.com:8448
through your favorite browser. You will see a warning about the SSL certificate as the certificates used are self-signed. We will not use this web chat client as it is outdated and not maintained anymore. Just try to check if you can log in using the user account you just created.
Instead of using a self-signed certificate for securing federation port, we can use Let's Encrypt free SSL. Let's Encrypt free SSL can be obtained through the official Let's Encrypt client called Certbot.
Install Certbot.
sudo yum -y install certbot
Adjust your firewall setting to allow the standard HTTP
and HTTPS
ports through the firewall. Certbot needs to make an HTTP
connection to verify the domain authority.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
To obtain certificates from Let's Encrypt CA, you must ensure that the domain for which you wish to generate the certificates is pointed towards the server. If it is not, then make the necessary changes to the DNS records of your domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.
Now use the built-in web server in Certbot to generate the certificates for your domain.
sudo certbot certonly --standalone -d matrix.example.com
The generated certificates are likely to be stored in /etc/letsencrypt/live/matrix.example.com/
. The SSL certificate will be stored as fullchain.pem
and the private key will be stored as privkey.pem
.
Copy the certificates.
sudo cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
sudo cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem
You will need to change the path to the certificates and keys from the homeserver.yaml
file. Edit the configuration.
nano /opt/synapse/homeserver.yaml
Find the following lines and modify the path.
tls_certificate_path: "/opt/synapse/letsencrypt-fullchain.pem"
# PEM encoded private key for TLS
tls_private_key_path: "/opt/synapse/letsencrypt-privkey.pem"
Save the file and exit from the editor. Restart the Synapse server so that the changes can take effect.
source /opt/synapse/bin/activate && cd /opt/synapse
synctl restart
Let's Encrypt certificates are due to expire in 90 days, so it is recommended that you setup auto renewal for the certificates using cron jobs. Cron is a system service which is used to run periodic tasks.
Create a new script to renew certificates and copy the renewed certificates to the Synapse directory.
sudo nano /opt/renew-letsencypt.sh
Populate the file.
#!/bin/sh
/usr/bin/certbot renew --quiet --nginx
cp /etc/letsencrypt/live/matrix.example.com/fullchain.pem /opt/synapse/letsencrypt-fullchain.pem
cp /etc/letsencrypt/live/matrix.example.com/privkey.pem /opt/synapse/letsencrypt-privkey.pem
Provide the execution permission.
sudo chmod +x /opt/renew-letsencypt.sh
Open the cron job file.
sudo crontab -e
Add the following line at the end of the file.
30 5 * * 1 /opt/renew-letsencypt.sh
The above cron job will run every Monday at 5:30 AM. If the certificate is due to expire, it will automatically renew them.
Now you can visit https://matrix.example.com:8448
. You will see that there is no SSL warning before connection.
Apart from the secured federation port 8448
, Synapse also listens to the unsecured client port 8008
. We will now configure Nginx as a reverse proxy to the Synapse application.
sudo yum -y install nginx
Create a new configuration file.
sudo nano /etc/nginx/conf.d/synapse.conf
Populate the file with the following content.
server {
listen 80;
server_name matrix.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name matrix.example.com;
ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.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/synapse.access.log;
location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Restart and enable Nginx to automatically start at boot time.
sudo systemctl restart nginx
sudo systemctl enable nginx
Finally, you can verify if Synapse can be accessed through the reverse proxy.
curl https://matrix.example.com/_matrix/key/v2/server/auto
You should get similar output.
[user@vultr ~]$ curl https://matrix.example.com/_matrix/key/v2/server/auto
{"old_verify_keys":{},"server_name":"matrix.example.com","signatures":{"matrix.example.com":{"ed25519:a_ffMf":"T/Uq/UN5vyc4w7v0azALjPIJeZx1vQ+HC6ohUGkTSqiFI4WI/ojGpb2763arwSSQLr/tP/2diCi1KLU2DEnOCQ"}},"tls_fingerprints":[{"sha256":"eorhQj/kubI2PEQZyBZvGV7K1x3EcQ7j/AO2MtZMplw"}],"valid_until_ts":1504876080512,"verify_keys":{"ed25519:a_ffMf":{"key":"Gc1hxkpPmQv71Cvjyk+uzR5UtrpmgV/UwlsLtosawEs"}}}
It is recommended to use the Systemd service to manage the Synapse server process. Using Systemd will ensure that the server is automatically started on system startup and failures.
Create a new Systemd service file.
sudo nano /etc/systemd/system/matrix-synapse.service
Populate the file.
[Unit]
Description=Matrix Synapse service
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/synapse/
ExecStart=/opt/synapse/bin/synctl start
ExecStop=/opt/synapse/bin/synctl stop
ExecReload=/opt/synapse/bin/synctl restart
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=synapse
[Install]
WantedBy=multi-user.target
Now you can quickly start the Synapse server.
sudo systemctl start matrix-synapse
To stop or restart the server using following commands.
sudo systemctl stop matrix-synapse
sudo systemctl restart matrix-synapse
You can check the status of service.
sudo systemctl status matrix-synapse
Matrix Synapse server is now installed and configured on your server. As the built-in web client for Matrix is outdated, you can choose from the variety of the client applications available for chat. Riot is the most popular chat client, which is available on almost all platforms. You can use the hosted version of Riot's web chat client, or you can also host a copy of it on your own server. Apart from this, you can also use Riot's desktop and mobile chat clients, which are available for Windows, Mac, Linux, IOS and Android.
If you wish to host your own copy of Riot web client, you can read further for the instructions to install Riot on your server. For hosted, desktop and mobile client, you can use your username and password to login directly to your homeserver. Just choose my Matrix ID
from the dropdown menu of the Sign In
option and provide the username and password you have created during the registration of a new user. Click on the Custom server
and use the domain name of your Synapse instance. As we have already configured Nginx, we can just use https://matrix.example.com
as the Home server and https://matrix.org
as Identity server URL.
Riot is also open source and free to host on your own server. It does not require any database or dependencies. As we already have an Nginx server running, we can host it on the same server.
The domain or subdomain you are using for Synapse and Riot must be different to avoid cross-site scripting. However, you can use two subdomains of the same domain. In this tutorial, we will be using
riot.example.com
as the domain for the Riot application. Replace all occurrence ofriot.example.com
with your actual domain or subdomain for the Riot application.
Изтеглете Riot на вашия сървър.
cd /opt/
sudo wget https://github.com/vector-im/riot-web/releases/download/v0.12.3/riot-v0.12.3.tar.gz
Винаги можете да намерите връзката към най-новата версия в Github на Riot .
Разархивирайте архива.
sudo tar -xzf riot-v*.tar.gz
Преименувайте директорията за удобство.
sudo mv riot-v*/ riot/
Тъй като вече сме инсталирали Certbot, можем да генерираме сертификатите директно. Уверете се, че домейнът или поддомейнът, който използвате, е насочен към сървъра.
sudo systemctl stop nginx
sudo certbot certonly --standalone -d riot.example.com
Генерираните сертификати вероятно ще се съхраняват в /etc/letsencrypt/live/riot.example.com/
директорията.
Създайте виртуален хост за приложението Riot.
sudo nano /etc/nginx/conf.d/riot.conf
Попълнете файла.
server {
listen 80;
server_name riot.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name riot.example.com;
ssl_certificate /etc/letsencrypt/live/riot.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/riot.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;
root /opt/riot;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/riot.access.log;
}
Копирайте примерния конфигурационен файл.
sudo cp /opt/riot/config.sample.json /opt/riot/config.json
Сега редактирайте конфигурационния файл, за да направите няколко промени.
sudo nano /opt/riot/config.json
Намерете следните редове.
"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",
Заменете стойността на URL адреса на домашния сървър по подразбиране с URL адреса на вашия Matrix сървър. За URL адреса на сървъра за идентичност можете да използвате опцията по подразбиране или можете също да предоставите стойността му на сървъра за идентичност на Matrix, който е https://matrix.org
.
"default_hs_url": "https://matrix.example.com",
"default_is_url": "https://matrix.org",
Запазете файла и излезте. Предоставете собствеността върху файловете на потребителя на Nginx.
sudo chown -R nginx:nginx /opt/riot/
Рестартирайте Nginx.
sudo systemctl restart nginx
Можете да получите достъп до Riot на https://riot.example.com
. Вече можете да влезете с потребителското име и паролата, които сте създали по-рано. Можете да се свържете с помощта на сървъра по подразбиране, тъй като вече сме променили сървъра Matrix по подразбиране за нашето приложение.
Вече имате начален сървър на Matrix Synapse и работи. Имате и хоствано копие на Riot, което можете да използвате, за да изпратите съобщение до други хора, използвайки техния Matrix ID, имейл или мобилен номер. Започнете, като създадете стая за чат на вашия сървър и поканете приятелите си в Matrix да се присъединят към стаята за чат, която сте създали.
Използване на различна система? Plesk е собствен контролен панел за уеб хост, който позволява на потребителите да администрират своите лични и/или клиентски уебсайтове, бази данни
Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне
Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте
VULTR наскоро направи промени от своя страна и вече всичко трябва да работи добре от кутията с активиран NetworkManager. Ако желаете да деактивирате
Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент
Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока
Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже
Използване на различна система? Mattermost е самостоятелно хоствана алтернатива с отворен код на Slack SAAS услугата за съобщения. С други думи, с Mattermost, вие ca
Какво ви трябва Vultr VPS с поне 1 GB RAM. SSH достъп (с root/административни привилегии). Стъпка 1: Инсталиране на BungeeCord На първо място
Контролният панел на Plesk разполага с много приятна интеграция за Lets Encrypt. Lets Encrypt е един от единствените доставчици на SSL, които предоставят пълно сертификати
Lets Encrypt е сертифициращ орган, посветен на предоставянето на SSL сертификати безплатно. cPanel изгради чиста интеграция, така че вие и вашият клиент
Използване на различна система? Concrete5 е CMS с отворен код, който предлага много отличителни и полезни функции за подпомагане на редакторите при лесното създаване на съдържание и
Използване на различна система? Review Board е безплатен инструмент с отворен код за преглед на изходен код, документация, изображения и много други. Това е уеб базиран софтуер
В това ръководство ще научите как да настроите HTTP удостоверяване за уеб сървър на Nginx, работещ на CentOS 7. Изисквания За да започнете, ще ви трябва
YOURLS (Your Own URL Shortener) е приложение за съкращаване на URL адреси и анализ на данни с отворен код. В тази статия ще разгледаме процеса на инсталиране
Използване на различна система? Въведение ArangoDB е NoSQL база данни с отворен код с гъвкав модел на данни за документи, графики и ключ-стойности. то е
Въведение Директорията /etc/ играе критична роля в начина, по който функционира една Linux система. Причината за това е, че почти всяка системна конфигурация
Много системни администратори управляват големи количества сървъри. Когато файловете трябва да бъдат достъпни на различни сървъри, влизането във всеки от тях поотделно ок
Този урок ще обхване процеса на инсталиране на сървър за игри Half Life 2 на CentOS 6 System. Стъпка 1: Инсталиране на предпоставките За да настроите ou
Laravel GitScrum или GitScrum е инструмент за производителност с отворен код, предназначен да помогне на екипите за разработка да внедрят методологията на Scrum по подобен начин.
Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.
Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.
Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.
Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.
Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…
Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.
Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.
Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.
В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.
Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече