Kaip įdiegti „Jenkins“ „CentOS 7“.
„Jenkins“ yra populiarus atvirojo kodo CI (nuolatinės integracijos) įrankis, plačiai naudojamas projektų kūrimui, diegimui ir automatizavimui. Šis straipsnis bus
Nuolatinis integravimas yra „DevOps“ programinės įrangos kūrimo praktika, leidžianti kūrėjams dažnai sujungti modifikuotą kodą į bendrą saugyklą daug kartų per dieną. Po kiekvieno sujungimo atliekamos automatinės versijos ir testai, siekiant aptikti kodo problemas. Tai leidžia kūrėjams greitai rasti ir pašalinti klaidas, kad pagerintų programinės įrangos kokybę ir užtikrintų nuolatinį programinės įrangos pristatymą. Perjungti į ir atgal iš „Concourse“ yra labai paprasta, nes visa konfigūracija išsaugoma deklaratyviuose failuose, kuriuos galima patikrinti versijos valdiklyje. Tai taip pat suteikia žiniatinklio vartotojo sąsają, kurioje interaktyviai rodoma kūrimo informacija.
Būtinai pakeiskite visas įvykių 192.0.2.1
ir ci.example.com
su savo tikrojo Vultr viešojo IP adresą ir faktinę domeno vardas.
Atnaujinkite bazinę sistemą naudodami vadovą Kaip atnaujinti Ubuntu 16.04 . Kai sistema bus atnaujinta, diegkite PostgreSQL.
PostgreSQL yra objektų reliacinė duomenų bazių sistema. Concourse saugo savo dujotiekio duomenis PostgreSQL duomenų bazėje. Pridėkite PostgreSQL saugyklą.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Įdiekite PostgreSQL duomenų bazės serverį.
sudo apt -y install postgresql
Paleiskite PostgreSQL serverį ir įgalinkite jį automatiškai paleisti įkrovos metu.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Pakeiskite numatytojo „PostgreSQL“ vartotojo slaptažodį.
sudo passwd postgres
Prisijunkite kaip PostgreSQL vartotojas:
sudo su - postgres
Sukurkite naują „PostgreSQL“ vartotoją „Concourse CI“.
createuser concourse
Pastaba : Numatytasis PostgreSQL vartotojas gali būti naudojamas duomenų bazės autentifikavimui, tačiau rekomenduojama naudoti specialų vartotoją Concourse duomenų bazės autentifikavimui gamybos sąrankoje.
PostgreSQL suteikia apvalkalą duomenų bazėje užklausoms vykdyti. Perjunkite į PostgreSQL apvalkalą.
psql
Nustatykite naujai sukurto Concourse duomenų bazės vartotojo slaptažodį.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Svarbu : pakeiskite DBPassword
stipriu slaptažodžiu. Užsirašykite slaptažodį, nes jo reikės vėliau mokymo programoje.
Sukurkite naują Concourse duomenų bazę.
CREATE DATABASE concourse OWNER concourse;
Išeikite iš psql
apvalkalo.
\q
Perjungti į sudo vartotoją iš dabartinio postgres
vartotojo.
exit
Atsisiųskite naujausią vykdomosios programos Concourse versiją ir išsaugokite ją, /usr/bin
kad ją būtų galima vykdyti tiesiogiai. Naujausią „Concourse“ ir „Fly“ dvejetainių failų versiją galite rasti „ Concourse“ atsisiuntimo puslapyje . Nauji leidimai yra labai dažni. Pakeiskite toliau pateiktą nuorodą nauja nuoroda į naujausią versiją.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Taip pat atsisiųskite naujausią vykdomosios programos „fly“ versiją ir išsaugokite ją /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly yra komandų eilutės sąsaja, naudojama prisijungti prie Concourse CI ATC API. „Fly“ galima naudoti kelioms platformoms, tokioms kaip „Linux“, „Windows“ ir „MacOS“.
Priskirkite vykdymo leidimą atsisiųstam concourse
ir fly
dvejetainiams failams.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Patikrinkite, ar Concourse ir Fly veikia tinkamai, patikrindami jų versiją.
concourse -version
fly -version
RSA raktų poros suteikia galimybę užšifruoti ryšį tarp Konkurso komponentų.
Kad Concourse veiktų, turi būti sugeneruotos bent trys raktų poros. Norėdami užšifruoti seanso duomenis, sugeneruokite session_signing_key
. Šį raktą TSA taip pat naudos, kad pasirašytų užklausas, kurias ji pateikia ATC. Norėdami apsaugoti TSA SSH serverį, sugeneruokite tsa_host_key
. Galiausiai sugeneruokite worker_key
kiekvienam darbuotojui.
Sukurkite naują katalogą, kuriame bus saugomi su Concourse CI susiję raktai ir konfigūracija.
sudo mkdir /opt/concourse
Sugeneruokite reikiamus raktus.
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
Įgaliokite darbuotojų viešąjį raktą nukopijuodami jo turinį į authorized_worker_keys
failą.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse pateikia du atskirus komponentus, kuriuos reikia pradėti: žiniatinklį ir darbuotoją. Paleiskite Concourse žiniatinklį.
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
Jei norite, pakeiskite vartotojo vardą ir slaptažodį . Įsitikinkite, kad kelias į raktų failus yra teisingas, ir įsitikinkite, kad yra teisinga vartotojo vardo ir slaptažodžio reikšmė PostgreSQL duomenų bazės konfigūracijoje.
Pastaba : ATC klausys numatytojo prievado, 8080
o TSA – prievado 2222
. Jei autentifikavimo nenorite, palikite --no-really-i-dont-want-any-auth
parinktį pašalinę pagrindines autentifikavimo parinktis.
Paleidus žiniatinklio serverį, bus rodoma ši išvestis.
{"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"}}
Kol kas sustabdykite serverį, nes dar reikia nustatyti keletą dalykų.
Paleiskite „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
Aukščiau pateikta komanda daro prielaidą, kad TSA veikia „localhost“ ir klausosi numatytojo prievado 2222
.
Nors Concourse žiniatinklį ir darbuotoją galima lengvai paleisti naudojant aukščiau pateiktas komandas, serveriui valdyti rekomenduojama naudoti Systemd.
Naudojant „Systemd“ paslaugą programai tvarkyti užtikrinama, kad programa būtų automatiškai paleidžiama gedus ir įkrovos metu. „Concourse“ serveris neima duomenų iš jokio konfigūracijos failo, bet gali pasiekti duomenis iš aplinkos kintamųjų. Užuot nustatę visuotinius aplinkos kintamuosius, sukurkite naują failą aplinkos kintamiesiems saugoti, o tada perduokite kintamuosius Concourse CI naudodami Systemd paslaugą.
Sukurkite naują Concourse žiniatinklio aplinkos failą.
sudo nano /opt/concourse/web.env
Užpildykite failą.
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
BASIC_AUTH
Jei norite, pakeiskite vartotojo vardą ir slaptažodį . Įsitikinkite, kad kelias į raktų failus yra teisingas, ir įsitikinkite, kad yra teisinga vartotojo vardo ir slaptažodžio reikšmė PostgreSQL duomenų bazės konfigūracijoje.
Panašiai sukurkite aplinkos failą darbuotojui.
sudo nano /opt/concourse/worker.env
Užpildykite failą.
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
Kadangi aplinkos failuose yra vartotojo vardai ir slaptažodžiai, pakeiskite jo teises, kad jos negalėtų pasiekti kiti vartotojai.
sudo chmod 600 /opt/concourse/*.env
Dabar sukurkite naują „Concourse“ vartotoją, kad paleistumėte žiniatinklio aplinką. Tai užtikrins, kad žiniatinklio serveris veiktų izoliuotoje aplinkoje.
sudo useradd concourse
Suteikite Concourse vartotojui nuosavybės teisę į Concourse CI failo katalogą.
sudo chown -R concourse:concourse /opt/concourse
Sukurkite naują „Concourse“ žiniatinklio tarnybos sistemos paslaugos failą.
sudo nano /etc/systemd/system/concourse-web.service
Užpildykite failą.
[Unit]
Description=Concourse CI web server
[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
Išsaugokite ir uždarykite failą. Sukurkite naują paslaugos failą, skirtą Concourse darbuotojo paslaugai.
sudo nano /etc/systemd/system/concourse-worker.service
Užpildykite failą.
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
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
Dabar žiniatinklio ir darbuotojų paslaugą galima paleisti tiesiogiai.
sudo systemctl start concourse-web concourse-worker
Norėdami įgalinti darbuotojo ir žiniatinklio procesą automatiškai paleisti įkrovos metu, atlikite toliau nurodytus veiksmus.
sudo systemctl enable concourse-worker concourse-web
Norėdami patikrinti paslaugų būseną, atlikite toliau nurodytus veiksmus.
sudo systemctl status concourse-worker concourse-web
Jei paslauga nepaleista arba jos FAILED
būsenos, pašalinkite talpyklą iš /tmp
katalogo.
sudo rm -rf /tmp/*
Iš naujo paleiskite paslaugas.
sudo systemctl restart concourse-worker concourse-web
Atkreipkite dėmesį, kad šį kartą paslaugos pradėtos tinkamai. Išvestis patikrinus paslaugų būseną bus panaši į toliau pateiktą.
[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.
Paleidus serverį, Concourse CI žiniatinklio sąsają galima pasiekti http://192.0.2.1:8080
bet kurioje naršyklėje. Prisijunkite naudodami aplinkos faile pateiktą vartotojo vardą ir slaptažodį.
Norėdami prisijungti prie serverio naudodami Fly, atlikite šiuos veiksmus.
fly -t my-ci login -c http://192.0.2.1:8080
Pirmiau pateikta komanda naudojama pirminiam prisijungimui prie serverio. -t
naudojamas norint pateikti tikslo pavadinimą. pakeiskite my-ci
bet kokiu norimu paskirties pavadinimu. Aukščiau pateikta komanda prisijungs prie numatytosios komandos main
. Ji paprašys aplinkos faile pateikto vartotojo vardo ir slaptažodžio.
Išvestis atrodys taip.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
Tikslinis prisijungimas bus išsaugotas vieną dieną. Po to jis nustos galioti.
Norėdami nedelsiant atsijungti.
fly -t my-ci logout
Fly galima naudoti prisijungiant prie serverio už tinklo ribų, tačiau tik tuo atveju, jei serveris turi viešą IP adresą ir jis pasiekiamas iš už tinklo ribų. „Windows“ arba „MacOS“ dvejetainį failą galima atsisiųsti iš atsisiuntimo svetainės arba iš serverio žiniatinklio vartotojo sąsajos.
Prisijungimai ir kita informacija, siunčiama per žiniatinklio vartotojo sąsają į Concourse serverį, nėra apsaugoti. Ryšys nėra užšifruotas. „Nginx“ atvirkštinį tarpinį serverį galima nustatyti naudojant nemokamą SSL šifravimą.
Įdiekite „Nginx“.
sudo apt -y install nginx
Paleiskite Nginx ir įgalinkite jį automatiškai paleisti įkrovos metu.
sudo systemctl start nginx
sudo systemctl enable nginx
Pridėkite Certbot saugyklą.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Įdiekite „Certbot“, kuri yra „Let's Encrypt CA“ kliento programa.
sudo apt -y install certbot
Pastaba : norint gauti sertifikatus iš Let's Encrypt CA, domenas, kuriam turi būti generuojami sertifikatai, turi būti nukreiptas į serverį. Jei ne, atlikite reikiamus domeno DNS įrašų pakeitimus ir palaukite, kol DNS išplis, prieš vėl pateikdami sertifikato užklausą. „Certbot“ patikrina domeno instituciją prieš pateikdamas sertifikatus.
Sukurkite SSL sertifikatus.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
Sugeneruoti sertifikatai greičiausiai bus saugomi /etc/letsencrypt/live/ci.example.com/
kataloge. SSL sertifikatas bus saugomas kaip , fullchain.pem
o privatusis raktas bus saugomas kaip privkey.pem
.
Encrypt sertifikatai baigiasi po 90 dienų, todėl rekomenduojama automatinį sertifikatų atnaujinimą nustatyti naudojant cronjobs. Cron yra sistemos paslauga, naudojama periodinėms užduotims vykdyti.
Atidarykite cron darbo failą.
sudo crontab -e
Failo pabaigoje pridėkite šią eilutę.
30 5 * * * /usr/bin/certbot renew --quiet
Pirmiau nurodytas cron darbas bus vykdomas kasdien 5:30 val. Jei baigiasi sertifikato galiojimo laikas, jis automatiškai atnaujinamas.
Sukurkite naują virtualų pagrindinį kompiuterį.
sudo nano /etc/nginx/sites-available/concourse
Užpildykite failą.
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;
}
}
Pastaba : pakeiskite ci.example.com
tikru domenu.
Suaktyvinkite konfigūracijos failą.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Redaguokite aplinkos failą, sukurtą concours Web.
sudo nano /opt/concourse/web.env
Pakeiskite reikšmę CONCOURSE_EXTERNAL_URL
ir taip pat pridėkite dar dvi eilutes failo pabaigoje.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Išsaugokite failą ir iš naujo paleiskite Concourse Web, Worker ir Nginx.
sudo systemctl restart concourse-worker concourse-web nginx
Visi į naršyklę ir iš jos siunčiami duomenys dabar yra apsaugoti SSL šifravimu.
„Jenkins“ yra populiarus atvirojo kodo CI (nuolatinės integracijos) įrankis, plačiai naudojamas projektų kūrimui, diegimui ir automatizavimui. Šis straipsnis bus
Naudojate kitą sistemą? Įvadas Nuolatinis integravimas yra „DevOps“ programinės įrangos kūrimo praktika, leidžianti kūrėjams dažnai sujungti
Naudojate kitą sistemą? Ansible yra atvirojo kodo įrankis, skirtas automatizuoti užduotis. Jis valdo jūsų Linux ir Windows serverių konfigūraciją. Tai veikia
Naudojate kitą sistemą? GoCD yra atvirojo kodo nuolatinio pristatymo ir automatizavimo sistema. Tai leidžia modeliuoti sudėtingas darbo eigas naudojant lygiagrečią an
Nors „SaltStack“ yra puikus įrankis, leidžiantis vienu metu vykdyti operacijas daugelyje serverių, jis taip pat palaiko konfigūracijos nustatymus, kuriuos nustato pagrindinis kompiuteris.
Naudojate kitą sistemą? Ansible yra atvirojo kodo įrankis, skirtas automatizuoti užduotis. Jis valdo jūsų Linux ir Windows serverių konfigūraciją. Tai veikia
Įvadas Drone yra automatizuota, nuolatinio testavimo ir pristatymo platforma, kuri veikia jūsų infrastruktūroje. Dronas palaiko bet kokią kalbą, paslaugą o
Kas yra apkrovos balansavimo priemonė Apkrovos balansavimo įrenginiai yra priešais jūsų programą ir paskirsto gaunamą srautą keliuose jūsų programos egzemplioriuose. Fo
Naudojate kitą sistemą? „Foreman“ yra nemokamas atvirojo kodo įrankis, padedantis konfigūruoti ir valdyti fizinius ir virtualius serverius. Forema
„SaltStack“ arba „Salt“ yra populiarus atvirojo kodo konfigūracijos valdymo sprendimas, kurį galima naudoti nuotoliniam vykdymui, konfigūracijos valdymui, kodavimui.
Įvadas Strider CD yra atvirojo kodo nuolatinio diegimo platforma. Programa parašyta Node.js ir naudoja MongoDB kaip saugyklos užpakalinę programą. Žingsnis
Įvadas „Chocolatey“ sistemoje „Windows“ pateikia paketų valdymą, kuris palengvina programinės įrangos ir priklausomybių administravimą sistemoje „Linux“. Galite greitai ir lengvai
Kas yra Pakeris? Packer yra serverio vaizdo gavimo įrankis, kurį sukūrė HashiCorp. Serverio vaizdavimas; arba, alternatyviai, nekintanti infrastruktūra; yra populiari alternatyva
Naudojate kitą sistemą? Įvadas Nuolatinis integravimas yra „DevOps“ programinės įrangos kūrimo praktika, leidžianti kūrėjams dažnai sujungti
Yra daug būdų, kaip automatizuoti dėžutės nustatymo ir konfigūravimo procesą. Dėl kokios nors priežasties, jei visą mūsų sistemą šiuo metu sudaro tik
Naudojate kitą sistemą? „Foreman“ yra nemokamas atvirojo kodo įrankis, padedantis konfigūruoti ir valdyti fizinius ir virtualius serverius. Forema
„SaltStack“ yra „python“ pagrindu sukurta konfigūracijos valdymo programa, optimizuota automatizuoti konfigūracijos failus, diegimus ir bet ką kitą
Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.
Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.
Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.
Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.
Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…
Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.
Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.
Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.
Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.
Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį