เริ่มต้นด้วย SaltStack บน Ubuntu 17.04
SaltStack เป็นโปรแกรมจัดการการกำหนดค่าที่ใช้ python ซึ่งได้รับการปรับให้เหมาะสมสำหรับการทำงานอัตโนมัติของไฟล์การกำหนดค่าการปรับใช้และสิ่งอื่น ๆ
มีหลายวิธีในการตั้งค่าและกำหนดค่ากล่องโดยอัตโนมัติ ไม่ว่าจะด้วยเหตุผลใดก็ตามหากระบบทั้งหมดของเรา ณ จุดนี้ประกอบด้วยเพียงกล่องเดียวการตั้งค่าโครงสร้างพื้นฐาน SCM (การจัดการการกำหนดค่าซอฟต์แวร์) เต็มรูปแบบนั้นเกินความจำเป็น เชลล์สคริปต์เป็นตัวเลือกหนึ่ง แต่เราสามารถใช้ SCM รุ่นที่แยกส่วนซึ่งมีอยู่ในเครื่องมือบางส่วน Chef เป็นหนึ่งในตัวเลือกยอดนิยมและ "chef-solo" เป็นโหมดการกำหนดค่าแบบสแตนด์อโลนของ Chef ซึ่งเราไม่ต้องการโหนดเพิ่มเติมเพื่อทำหน้าที่เป็น "chef-server" สิ่งที่ต้องการคือ URL หรือเส้นทางไปยังแพ็คเกจ tarball ที่มีตำราพ่อครัว เมื่อเทียบกับเชลล์สคริปท์วิธีการนี้เป็นวิธีที่เปิดเผยและมีประสิทธิภาพมากกว่าและยังเป็นการแนะนำที่ดีในการเริ่มต้นกับกระบวนการ SCM หรือ IaC (โครงสร้างพื้นฐานเป็นรหัส)
'สูตรอาหาร' ภายในของพ่อครัว 'ตำราอาหาร' มี DSL ที่ใช้ทับทิมซึ่งอธิบาย 'ทรัพยากร' ให้อยู่ในสถานะเฉพาะบนโหนด มาเริ่มขั้นตอนการทำความคุ้นเคยกับแนวคิดเชฟสองสามข้อที่ใช้กับเชฟเดี่ยว เป้าหมายของเราคือการตั้งค่าโหนดอูบุนตูที่ใช้งานแอพพลิเคชั่น Python / Django ผ่าน Gunicorn และ NGINX
หมายเหตุ: เราไม่จำเป็นต้องติดตั้ง ChefDK ใน "Workstation" (เครื่องของเรา) ถึงแม้ว่าเราจะสามารถใช้คำสั่ง 'chef generate' เพื่อเริ่มต้นด้วยโครงสร้างไดเรกทอรีสำหรับการสร้างตำราอาหารและอื่น ๆ ในบทความนี้เราจะสมมติว่า ChefDK ได้รับการติดตั้งบนเวิร์กสเตชันของเรา คำสั่งถูกเรียกใช้โดยใช้รุ่น 4.7.26-1 ของ ChefDK
(ทุกอย่างจากจุดนี้เป็นต้นไปเว้นแต่จะระบุไว้เป็นอย่างอื่นให้เรียกใช้บนเครื่องของเราหรือที่เรียกว่า 'Chef Workstation')
ตำราอาหารในพ่อครัวเป็นหน่วยที่นำกลับมาใช้ใหม่ได้ซึ่งมีทุกอย่างที่จำเป็นสำหรับการสนับสนุนสถานการณ์การกำหนดค่า ตำราอาหารอาจมี 'สูตร' และ 'สูตร' หลายอย่างซึ่งส่วนใหญ่ประกอบด้วยรูปแบบทรัพยากร default.rb
เป็นสูตรเริ่มต้นที่จะทำงานเมื่อตำรามีการอ้างอิงในการทำงานรายการ สูตรอาหารที่แตกต่างกันสามารถแยกความกังวลได้ สำหรับการกวดวิชานี้ default.rb
แต่เราจะเพิ่มการประกาศทรัพยากรทั้งหมดในไฟล์สูตรหนึ่งหลักซึ่งเป็น
สร้างโฟลเดอร์ชื่อ "my-chef-project" และสร้างโฟลเดอร์ภายในชื่อ "cookbooks" จากการ./my-chef-project/cookbooks/
เรียกใช้:
$ chef generate cookbook my-cookbook
โครงสร้างไดเรกทอรีของเราจะมีลักษณะดังนี้:
.
└── my-chef-project
└── cookbooks
└── my-cookbook
├── CHANGELOG.md
├── LICENSE
├── Policyfile.rb
├── README.md
├── chefignore
├── kitchen.yml
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb
ขั้นตอนแรกในการตั้งค่าโหนดของเราคือการระบุแพ็คเกจที่แอพของเราต้องการ โหนดของเราถูกเลือกให้เป็น Ubuntu ดังนั้นเราจึงสามารถพึ่งพาตัวจัดการแพคเกจ APT เพื่อรวบรวมการอ้างอิง การติดตั้งแพ็กเกจที่จัดไว้ให้โดยการกระจายระบบปฏิบัติการนั้นเป็นเรื่องง่าย:
apt_update
package 'python3'
package 'python3-pip'
package 'nginx'
package 'pkg-config'
package 'libcairo2-dev'
package 'libjpeg-dev'
package 'libgif-dev'
package 'libgirepository1.0-dev'
สิ่งเหล่านี้อธิบายได้ด้วยตนเอง บรรทัดแรกจะอัพเดตที่เก็บ apt และบรรทัดต่อไปนี้จะติดตั้งแพ็กเกจเหล่านั้น
หมายเหตุ: แพคเกจต่อไปนี้ 'nginx' จำเป็นสำ��รับการรวบรวมการพึ่งพาของไพ ธ อนผ่าน pip สิ่งเหล่านี้อาจแตกต่างกันไปขึ้นอยู่กับการอ้างอิงโครงการ python / django ของ
requirements.txt
คุณ คุณสามารถใช้วิธีการทดลองและข้อผิดพลาดเพื่อกำหนดแพ็คเกจเหล่านี้ที่คุณต้องรวมไว้ในตำราอาหารของคุณ หากต้องการทำเช่นนั้นให้ดำเนินการด้วยตนเองsudo pip install -r requirements.txt
(หมายเหตุ: นี่เป็นการติดตั้งแพคเกจทั้งระบบ!) บนเครื่องอูบุนตูสดใหม่เพื่อดูว่ามันทำงานได้สำเร็จหรือไม่ ถ้าไม่ stderr ควรให้คำแนะนำคุณเกี่ยวกับแพ็คเกจที่หายไป
เมื่อเราเพิ่มแพ็คเกจที่ต้องการเสร็จแล้วเราต้องสร้างผู้ใช้ Linux ที่ไม่มีสิทธิพิเศษที่จะเป็นเจ้าของซอร์สโค้ดของแอปพลิเคชัน
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
โปรดทราบว่ารหัสผ่านเป็นรูปแบบแฮชเงาที่ใช้ใน Linux สามารถรับได้โดยใช้ OpenSSL:
$ openssl passwd -1 -salt alilbitof mypassword
ตอนนี้ให้รวมซอร์สโค้ดแอปพลิเคชัน Django ไว้ในตำราของเรา วางซอร์สโค้ดภายใน./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
สร้าง./my-chef-project/cookbooks/my-cookbook/files/default
ไดเรกทอรีหากไม่มีอยู่
คำแนะนำในการคัดลอกไฟล์เหล่านี้ไปยังตำแหน่งระยะไกลบนโหนดของเรามีการอธิบายโดยใช้ทรัพยากรremote_directory :
remote_directory '/home/bob/myapp' do
source 'myapp' # This is the name of the folder containing our source code that we kept in ./my-cookbook/files/default/
owner 'bob'
group 'users'
mode '0755'
action :create
end
ในการติดตั้งแพ็กเกจหลามในrequirements.txt
เราสามารถใช้ทรัพยากรการดำเนินการเพื่อเรียกใช้คำสั่งโดยพลการ ในกรณีนี้เราต้องดำเนินการคำสั่ง pip install มากกว่า:
execute 'install python dependencies' do
command 'pip3 install -r requirements.txt'
cwd '/home/bob/myapp'
end
หมายเหตุ: โปรดจำไว้ว่าสิ่งนี้จะถูกเรียกใช้งานในฐานะผู้ใช้รูทและไลบรารีของหลามจะถูกติดตั้งทั่วทั้งระบบ หากโหนดของเราถูกกำหนดให้เรียกใช้แอพไพ ธ อนเดียวนี้โดยเฉพาะแสดงว่ามันไม่เป็นปัญหามากนัก แม้จะมีตัวเลือกที่ดีกว่าในการรักษาสิ่งที่สะอาดและมีสติคือการค้นหาและใช้ตำราอาหารชุมชนที่จัดการการติดตั้งหลามหรือ 'virtualenvs' (หรืออย่างน้อยที่สุดให้เขียนชุดของบล็อกดำเนินการเพื่อทำซ้ำสิ่งนี้) การใช้ virtualenvs ใน python ช่วยให้มั่นใจได้ว่าเครื่องมือระบบที่ใช้ python หรือโครงการ python อื่น ๆ จะไม่ได้รับผลกระทบ
ตอนนี้ได้เวลาเตรียม Gunicorn WSGI HTTP Server ด้วย NGINX เป็น reverse proxy ของเรา Nginx ยังใช้เพื่อจัดการสินทรัพย์คงที่ทั้งหมดจาก Django
ในการเพิ่มบริการ Gunicorn เป็นบริการบน Ubuntu สามารถใช้ Systemd ได้ systemd_unitทรัพยากรรวมอยู่ในเชฟตั้งแต่รุ่น 12.11
systemd_unit 'gunicorn.service' do
content({
Unit: {
Description: 'Django on Gunicorn',
After: 'network.target',
},
Service: {
ExecStart: '/usr/local/bin/gunicorn --workers 3 --bind localhost:8080 myapp.wsgi:application',
User: 'bob',
Group: 'www-data',
WorkingDirectory: '/home/bob/myapp'
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
}
})
action [:create, :enable, :start]
end
ตอนนี้เราต้องรวมการกำหนดค่าพร็อกซี NGINX มาตรฐานกับเซิร์ฟเวอร์ Gunicorn ดังที่แสดงด้านล่าง ./my-cookbook/templates/nginx.conf.erb
ข้อมูลโค้ดนี้สามารถไปลง สร้างไดเรกทอรีแม่แบบหากไม่มีอยู่
หมายเหตุ: เทมเพลตของ Chef รองรับไฟล์ทับทิมฝังตัวที่สามารถมีตัวแปรนิพจน์และคำสั่งทับทิมได้ แม้ว่าไฟล์นี้จะมีนามสกุล 'erb' แต่เราไม่ได้ใช้คำสั่ง ruby หรือการแสดงออกใด ๆ นอกจากนี้เพื่อความเรียบง่ายเรามีการกำหนดค่า HTTPS nginx ที่ไม่ใช่เท่านั้น (การแจ้งเตือนอย่างอ่อนโยนโปรดอย่าทำสิ่งนี้ในการผลิต!)
server {
listen 80;
server_name http://example.com/;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/bob/myapp/myapp/static;
}
location / {
include proxy_params;
proxy_pass http://localhost:8080/;
}
}
หมายเหตุ: นอกจากนี้ยังมีทางเลือกและการกำหนดค่าที่ดีกว่าตัวอย่างเช่นเซิร์ฟเวอร์ Gunicorn ถูกผูกไว้กับซ็อกเก็ตโดเมน unix แทนการเชื่อมต่อ TCP loopback มันคุ้มค่าที่จะสำรวจด้วยเหตุผลด้านประสิทธิภาพ
หากต้องการคัดลอกการกำหนดค่านี้ไปยังโฟลเดอร์ที่เปิดใช้งานไซต์บนโหนดให้ใช้ทรัพยากรแม่แบบจาก Chef
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
การเปิดใช้งาน configs บน nginx นั้นทำได้โดยการสร้าง symlink ที่ชี้ไปที่ config ที่sites-available
ในsites-enabled
โฟลเดอร์ของ nginx Symlink สามารถประกาศได้ใน cookbooks พ่อครัวด้วยทรัพยากรลิงค์ดังแสดงด้านล่าง:
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
และเพื่อลบ symlink การกำหนดค่าเริ่มต้น:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
และสุดท้าย, เพื่อเพิ่มการให้บริการ nginx:
service 'nginx' do
action :enable
action :start
end
Run-list in chef เป็นรายการสั่งของบทบาทหรือสูตรอาหารในตำราอาหารที่จะถูกดำเนินการตามลำดับบนโหนด เรามีตำราอาหารหนึ่งเล่ม "my-cookbook" และสูตร "ค่าเริ่มต้น" ไว้ในนั้นที่เราต้องดำเนินการในกล่อง Ubuntu ดังนั้น runlist.json ในไดเรกทอรีโครงการของเรา ( ./my-chef-project/runlist.json
) ควรมีลักษณะดังนี้:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
ตำราอาหารสำหรับเชฟโซโลของเราพร้อมให้บริการแล้ว ได้เวลาเตรียมเครื่อง Ubuntu 18.04 และติดตั้ง ChefDK ลงไป:
$ ssh [email protected] 'apt-get update && yes | apt-get install curl && curl https://packages.chef.io/files/current/chefdk/4.7.45/ubuntu/18.04/chefdk_4.7.45-1_amd64.deb -o chefdk.deb && yes | dpkg -i chefdk.deb && rm chefdk.deb'
จะกลับไปเวิร์กสเตชันเชฟของเราทั้งหมดที่เราต้องทำคือการวางตำราโฟลเดอร์ภายใน tarball โอนที่ tarball พร้อมกับrunlist.json
โหนดระยะไกลที่เราจัดเตรียมไว้ข้างต้นและเรียกใช้คำสั่งพ่อครัวเดี่ยว:
(คำสั่งด้านล่างจะต้องทำงานภายในโหนดหรือ 'พ่อครัวลูกค้า' และไม่ใช่เชฟเวิร์กสเตชัน)
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
หรือนี่คือหนึ่งซับ (ที่จะเรียกใช้จาก./my-chef-project/
CWD บน Chef Workstation):
tar zvcf chef-solo.tar.gz ./cookbooks &&\
scp chef-solo.tar.gz runlist.json [email protected]:~/ &&\
ssh [email protected] 'chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept'
แค่นั้นแหละ! ดูผลลัพธ์มาตรฐานที่เต็มไปด้วยกิจกรรมของเชฟที่พยายามรวมโหนดของคุณเข้ากับสิ่งที่คุณได้ระบุไว้ในตำราอาหาร Chef-solo จะติดตั้งอัญมณีทั้งหมดที่จำเป็นสำหรับตำราอาหารทั้งหมด หากคำสั่งพ่อครัวเดี่ยวประสบความสำเร็จเราจะมีแอปพลิเคชั่น Django ที่ทำงานอยู่ด้านหลัง nginx บนกล่อง Ubuntu นำทางไปยังโดเมน / IP เพื่อทดสอบ
หมายเหตุ: โปรดจำไว้ว่าใน Django คุณอาจจำเป็นต้องตั้งค่าโดเมนนี้ / IP ในรายการใน
ALLOWED_HOSTS
settings.py
เมื่อใดก็ตามที่เราทำการเปลี่ยนแปลงในเนื้อหาของไดเรกทอรีโครงการของเรา (สูตรแม่แบบหรือซอร์สโค้ดของแอปพลิเคชัน ฯลฯ ) เพียงแค่เรียกใช้ซับหนึ่งด้านบนจากไดเรกทอรีโครงการ
เคล็ดลับ: หากตำราอาหารเป็นรุ่นที่ควบคุมด้วย git (เท่าที่ควร) คำแนะนำที่ดีอย่างหนึ่งก็คือให้ตั้ง git hooks เพื่อเรียกใช้หนึ่งซับในนี้
หากคุณมองอย่างใกล้ชิดกับคำสั่ง chef-solo ครั้งสุดท้ายให้สังเกตว่า--recipe-url
หมายถึงการใช้ URL ซึ่งหมายความว่าคุณสามารถมีเวิร์กโฟลว์ที่ CI จะสร้าง tarball พ่อครัวเดี่ยวอัปโหลดที่ใดที่หนึ่งและกำหนดค่าโหนดของคุณเพื่อดึงออกมาเป็นระยะ
เคล็ดลับ: ใช้ curl เพื่อดึง tarball ที่เปลี่ยนเป็นระยะ ๆ เป็น cronjob
curl -z $file
จะให้เกียรติหัวและจะดาวน์โหลดเฉพาะลูกน้ำมันดินถ้าไฟล์จากระยะไกลได้รับการเปลี่ยนแปลงตั้งแต่การประทับเวลาในท้องถิ่นที่มีอยู่If-Modified-Since
$file
SaltStack เป็นโปรแกรมจัดการการกำหนดค่าที่ใช้ python ซึ่งได้รับการปรับให้เหมาะสมสำหรับการทำงานอัตโนมัติของไฟล์การกำหนดค่าการปรับใช้และสิ่งอื่น ๆ
ใช้ระบบที่แตกต่างกันอย่างไร โฟร์แมนเป็นเครื่องมือโอเพนซอร์ซฟรีและโอเพนซอร์สซึ่งช่วยคุณในการกำหนดค่าและจัดการเซิร์ฟเวอร์จริงและเซิร์ฟเวอร์เสมือน FOREMA
Jenkins เป็นเครื่องมือโอเพ่นซอร์ส CI (การรวมต่อเนื่อง) ยอดนิยมซึ่งใช้กันอย่างแพร่หลายสำหรับการพัฒนาโครงการการปรับใช้และระบบอัตโนมัติ บทความนี้จะ
SaltStack หรือ Salt เป็นโซลูชันการจัดการการกำหนดค่าโอเพ่นซอร์สที่เป็นที่นิยมซึ่งสามารถใช้ในการดำเนินการทางไกลการจัดการการกำหนดค่า cod
ใช้ระบบที่แตกต่างกันอย่างไร บทนำการผนวกรวมอย่างต่อเนื่องเป็นแนวปฏิบัติในการพัฒนาซอฟต์แวร์ DevOps ซึ่งจะช่วยให้นักพัฒนาสามารถผสาน th บ่อยครั้ง
ใช้ระบบที่แตกต่างกันอย่างไร บทนำการผนวกรวมอย่างต่อเนื่องเป็นแนวปฏิบัติในการพัฒนาซอฟต์แวร์ DevOps ซึ่งจะช่วยให้นักพัฒนาสามารถผสาน th บ่อยครั้ง
Load Balancer คืออะไร Load Balancer นั่งอยู่หน้าแอปพลิเคชันของคุณและกระจายทราฟฟิกที่เข้ามาในหลาย ๆ แอปพลิเคชันของคุณ Fo
บทนำโดรนเป็นแพลตฟอร์มการทดสอบอัตโนมัติและการส่งมอบต่อเนื่องซึ่งทำงานบนโครงสร้างพื้นฐานของคุณเอง Drone รองรับทุกภาษา, บริการ o
ใช้ระบบที่แตกต่างกันอย่างไร Ansible เป็นเครื่องมือโอเพ่นซอร์สสำหรับการทำงานอัตโนมัติ มันจัดการการกำหนดค่าเซิร์ฟเวอร์ Linux และ Windows ของคุณ มันทำงานได้
ใช้ระบบที่แตกต่างกันอย่างไร โฟร์แมนเป็นเครื่องมือโอเพนซอร์ซฟรีและโอเพนซอร์สซึ่งช่วยคุณในการกำหนดค่าและจัดการเซิร์ฟเวอร์จริงและเซิร์ฟเวอร์เสมือน FOREMA
ในขณะที่ SaltStack เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการใช้งานการดำเนินงานบนเซิร์ฟเวอร์หลายเครื่องพร้อมกัน แต่ก็รองรับการกำหนดค่าที่กำหนดล่วงหน้าต่อโฮสต์ที่เก็บไว้ใน
ใช้ระบบที่แตกต่างกันอย่างไร GoCD เป็นโอเพ่นซอร์สการส่งต่อและระบบอัตโนมัติ ช่วยให้คุณสามารถสร้างแบบจำลองเวิร์กโฟลว์ที่ซับซ้อนโดยใช้ขนานและ
ใช้ระบบที่แตกต่างกันอย่างไร Ansible เป็นเครื่องมือโอเพ่นซอร์สสำหรับการทำงานอัตโนมัติ มันจัดการการกำหนดค่าเซิร์ฟเวอร์ Linux และ Windows ของคุณ มันทำงานได้
Introduction Strider CD เป็นแพลตฟอร์มโอเพ่นซอร์สอย่างต่อเนื่อง แอปพลิเคชันเขียนขึ้นใน Node.js และใช้ MongoDB เป็นแบ็กเอนด์หน่วยเก็บข้อมูล สาวเท้า
Packer คืออะไร Packer เป็นเครื่องมือสร้างภาพเซิร์ฟเวอร์ที่พัฒนาโดย HashiCorp ภาพเซิร์ฟเวอร์ หรืออีกทางหนึ่งคือโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูปแบบ เป็นทางเลือกที่นิยม
บทนำ Chocolatey นำการจัดการแพคเกจที่ทำให้การจัดการซอฟต์แวร์และการอ้างอิงบน Linux เป็นเรื่องง่ายไปยัง Windows คุณสามารถทำได้อย่างรวดเร็วและง่ายดาย
ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน
การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane
ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+
อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ
เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม
13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data
คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true
ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร
ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1
AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน