Mundarija (30)
- Bu darsda
- 1. Nega bu kerak?
- 2. YAML — bo'shliqlar bilan tuzilma
- 2.1 Obyekt va ro'yxat
- 2.2 Bo'shliq — qat'iy qoida
- 2.3 Ko'p qatorli matn: | va >
- 2.4 Anchor va alias: takrorlanmaslik
- 3. YAML tuzoqlari: qiymat o'zi tur tanlaydi
- 3.1 "Norvegiya muammosi"
- 3.2 1.10 → 1.1
- 3.3 Yechim: shubha bo'lsa — qo'shtirnoq
- 4. TOML — aniq turlar bilan
- 5. INI — eng sodda va eski
- 6. .env — maxfiy sozlamalar
- 6.1 Nima uchun alohida fayl
- 6.2 Oltin qoida: .env Git'ga tushmaydi
- 7. Hujumchi nigohi
- 8. Formatlar solishtirmasi
- 9. Ko'p uchraydigan xatolar
- 9.1 YAML'da tab
- 9.2 YAML'da ikki nuqtadan keyin bo'sh joy yo'q
- 9.3 Noto'g'ri indent
- 9.4 .env da bo'sh joy
- 9.5 .env ni Git'ga yuklash
- 10. Mashqlar
- 1-mashq (oson): Norvegiyani qutqaring
- 2-mashq (o'rta): JSON'dan YAML'ga
- 3-mashq (qiyin): Xavfsiz loyiha
- 11. Real ishda
- Xulosa
YAML, TOML, INI va .env: sozlama fayllari va ularning tuzoqlari
Qisqacha: Sozlama (config) fayllari dasturga "qanday ishla" deb aytadi. YAML — bo'shliqlar bilan yoziladi, Docker va CI'da ko'p; tab ishlatib bo'lmaydi,
NO,yeskabi so'zlar esatrue/falsega aylanib ketishi mumkin. TOML — aniq turli,[bo'lim]vakalit = qiymatko'rinishida (Rust, Python loyihalari). INI — eng sodda va eski format..env—KALIT=qiymatqatorlari, maxfiy parol va kalitlar uchun; u hech qachon Git'ga yuklanmaydi.
Bu darsda
- Nega JSON'dan tashqari sozlama formatlari kerakligini tushunasiz.
- YAML'da obyekt, ro'yxat va ko'p qatorli matn yoza olasiz, anchor bilan takrorlanishdan qutulasiz.
- YAML'ning tab, "Norvegiya muammosi" va
1.10kabi tur tuzoqlarini taniysiz. - TOML va INI fayllarini o'qiy olasiz va qayerda uchrashini bilasiz.
.envfayl yozasiz,.env.exampletayyorlaysiz va maxfiy kalitni himoya qilish qoidalarini bilasiz.
Oldin bilishingiz kerak: JSON: dasturlar tili, Muhit o'zgaruvchilari, PATH va shell sozlamalari, CSV va TSV.
1. Nega bu kerak?
Sozlama (config) — dastur kodini o'zgartirmasdan uning ishini boshqaradigan qiymatlar: qaysi portda ishlash, qaysi bazaga ulanish, qaysi tilda gapirish. Ular kodning ichida emas, alohida faylda turadi. Shunda bitta dastur kompyuteringizda bir sozlama bilan, serverda boshqasi bilan ishlaydi.
O'xshatish: konditsioner pulti. Konditsionerning ichki qismini (kodni) har safar ochib o'zgartirmaysiz. Pultda haroratni tanlaysiz — u sozlama.
JSON darsida ko'rdik: u dasturlar uchun ajoyib. Lekin odam qo'lda yozadigan sozlama uchun noqulay:
- Izoh yozib bo'lmaydi — "bu qator nega shunday?" deb tushuntirib qo'yolmaysiz.
- Qo'shtirnoq va qavslar juda ko'p, bitta vergul xatosi butun faylni buzadi.
Shuning uchun odam o'qishi va yozishi uchun qulayroq formatlar paydo bo'lgan. Dasturchi o'zi formatni kamdan-kam tanlaydi — odatda vosita tanlaydi: Docker Compose YAML so'raydi, Rust TOML so'raydi. Bu vositalarni kursda keyinroq ko'ramiz, hozir nomlarini bilsangiz kifoya. Sizning vazifangiz — har birini o'qiy olish va tuzoqlarini bilish.
2. YAML — bo'shliqlar bilan tuzilma
YAML (YAML Ain't Markup Language — o'zini o'zi tushuntiradigan hazil nom) — bo'shliqlar bilan tuzilma yaratadigan format. Qavs va qo'shtirnoq deyarli yo'q. Kengaytmasi .yaml yoki .yml — ikkalasi ham bir xil.
2.1 Obyekt va ro'yxat
Mana do'kon sayti sozlamasi:
# Do'kon sozlamalari
server:
host: localhost
port: 8080
faol: true
tillar:
- uz
- ru
- enQatorma-qator o'qiymiz:
#— izoh. Dastur uni o'qimaydi, odam uchun yoziladi. JSON'dan birinchi farq shu.server:— kalit. Undan keyingi, 2 ta bo'sh joy ichkariga surilgan qatorlar — shu kalitning ichidagilari. Bu JSON'dagi{ }ning o'rnini bosadi.port: 8080— kalit va qiymat. Ikki nuqtadan keyin albatta bo'sh joy bo'ladi.tillar:ostidagi- uzqatorlari — ro'yxat (massiv). Har element chiziqcha va bo'sh joy bilan boshlanadi.
Xuddi shu ma'lumot JSON'da:
{
"server": { "host": "localhost", "port": 8080, "faol": true },
"tillar": ["uz", "ru", "en"]
}Tuzilma bir xil — faqat yozuvi boshqa. Qiziq fakt: har qanday to'g'ri JSON — bir vaqtda to'g'ri YAML ham.
YAML ham JSON'dagi turlarni biladi: 8080 — son, true — mantiqiy qiymat, localhost — satr. Satrni qo'shtirnoqsiz yozsa bo'ladi. Lekin pastroqda, «YAML tuzoqlari» bo'limida ko'rasiz: ba'zan qo'shtirnoq shart.
2.2 Bo'shliq — qat'iy qoida
YAML'da ichkariga surish (indent) — ma'noning o'zi. Bitta bo'sh joy xato tuzilmani o'zgartiradi:
- Ichkari surish faqat bo'sh joy (probel) bilan. Tab — taqiqlangan.
- Odatda har daraja 2 ta bo'sh joy. Asosiysi — bir darajadagi qatorlar bir xil surilgan bo'lsin.
Tab ishlatilsa, xato shunday bo'ladi:
YAMLException: tab characters must not be used in indentation (2:1)Tarjimasi: "ichkari surishda tab belgisi ishlatilmasligi kerak (2-qator, 1-ustun)". Muharrir sozlamasida "Tab bosilganda bo'sh joy qo'y" (Insert Spaces) yoqilganini tekshiring.
Tekshirib ko'ring: Quyidagida
portqaysi kalitning ichida?textserver: host: localhost port: 8080
Javob
Hech qaysi — port eng yuqori darajada, server bilan yonma-yon. U ichkariga surilmagan. server ichida bo'lishi uchun host kabi 2 ta bo'sh joy bilan boshlanishi kerak edi.
2.3 Ko'p qatorli matn: | va >
Uzun matn yoki buyruqlar ro'yxatini yozish uchun ikki belgi bor:
tavsif: |
Birinchi qator.
Ikkinchi qator.
qisqacha: >
Bu uzun matn
bitta qatorga
aylanadi.Dastur buni shunday o'qiydi:
tavsif → "Birinchi qator.\nIkkinchi qator.\n"
qisqacha → "Bu uzun matn bitta qatorga aylanadi.\n"|(literal — "aynan") — qator oxirlarini saqlaydi.\n— qator oxiri belgisi. Skript buyruqlari uchun aynan shu kerak.>(folded — "buklangan") — qatorlarni bo'sh joy bilan bitta satrga qo'shadi. Uzun tavsifni chiroyli bo'lib yozish uchun.
Ikkalasi ham oxiriga bitta \n qo'shadi. Uni olib tashlash kerak bo'lsa, |- yoki >- yoziladi.
2.4 Anchor va alias: takrorlanmaslik
Bir xil sozlama bir necha joyda kerak bo'lsa, uni bir marta yozib, keyin havola qilsa bo'ladi:
standart: &asosiy
timeout: 30
urinishlar: 3
test: *asosiy
ishlab_chiqarish: *asosiy&asosiy— anchor ("langar"): bu qiymatgaasosiydegan nom beradi.*asosiy— alias ("taxallus"): "shu yergaasosiynomli qiymatni qo'y".
Natijada test ham, ishlab_chiqarish ham timeout: 30 va urinishlar: 3 ga ega bo'ladi. Qiymatni o'zgartirmoqchi bo'lsangiz — bitta joyda o'zgartirasiz.
Maslahat: Docker Compose va GitLab fayllarida
<<: *asosiyyozuvini uchratasiz. Bu "asosiy'ni shu yerga qo'shib, yoniga yana kalitlar qo'shaman" degani. Ko'p vositalar uni tushunadi, lekin u YAML'ning eng yangi standartiga kirmagan — hamma o'quvchi ham qo'llamaydi.
3. YAML tuzoqlari: qiymat o'zi tur tanlaydi
YAML qo'shtirnoqsiz yozilgan qiymatning turini o'zi taxmin qiladi. Ko'pincha to'g'ri taxmin qiladi. Lekin ba'zan kutilmagan natija beradi.
3.1 "Norvegiya muammosi"
YAML'ning 1.1 versiyasi yes, no, on, off so'zlarini ham true/false deb tushunadi. Bu mashhur hodisaga olib keldi:
davlatlar:
FR: Fransiya
DE: Germaniya
NO: NorvegiyaNO — Norvegiyaning xalqaro ikki harfli kodi. YAML 1.1 o'quvchisi (masalan, Python'dagi mashhur PyYAML kutubxonasi) esa uni false deb o'qiydi. Natija JSON ko'rinishida:
{"davlatlar": {"FR": "Fransiya", "DE": "Germaniya", "false": "Norvegiya"}}Norvegiya "yo'qoldi". YAML'ning yangi 1.2 versiyasida bu tuzatilgan: faqat true va false mantiqiy qiymat. Lekin qaysi vosita qaysi versiyani ishlatishini doim ham bilmaysiz.
3.2 1.10 → 1.1
versiya: 1.10Siz "bir nuqta o'n" versiyasini nazarda tutdingiz. YAML esa buni kasr son deb o'qiydi: 1.1. Oxiridagi 0 yo'qoldi. Bu muammo YAML'ning har ikki versiyasida bor.
3.3 Yechim: shubha bo'lsa — qo'shtirnoq
davlatlar:
"NO": Norvegiya
versiya: "1.10"
holat: "on"Qo'shtirnoq ichidagi qiymat har doim satr. Qoida: qiymat son yoki mantiqiy qiymatga o'xshasa, lekin aslida matn bo'lsa — qo'shtirnoqqa oling. Versiyalar, kodlar, telefonlar, yes/no/on/off — shular jumlasidan.
Tekshirib ko'ring:
node: 22.10qatori qanday o'qiladi? Qanday yozish to'g'ri?
Javob
Kasr son 22.1 sifatida — oxiridagi 0 yo'qoladi. Node.js'ning 22.10 versiyasi nazarda tutilgan bo'lsa, node: "22.10" deb yozish kerak.
4. TOML — aniq turlar bilan
TOML (Tom's Obvious, Minimal Language — "Tomning aniq va minimal tili", muallifi Tom Preston-Werner nomidan) — odam uchun qulay, lekin YAML'dan ko'ra aniqroq format. Barqaror 1.0 versiyasi 2021-yilda chiqqan.
# Do'kon sozlamalari
nom = "Bahor do'koni"
versiya = "1.10"
[server]
host = "localhost"
port = 8080
faol = true
[tolov]
usullar = ["Click", "Payme", "naqd"]
ochilgan = 2026-09-27
[[mahsulot]]
nom = "Non"
narx = 4000
[[mahsulot]]
nom = "Choy"
narx = 12000Qoidalari:
kalit = qiymat— tenglik belgisi bilan. Satrlar doim qo'shtirnoqda. Shuning uchunNOyoki1.10muammosi yo'q: qo'shtirnoqsizAliyozsangiz, bu shunchaki xato.[server]— jadval (table), ya'ni bo'lim. Undan keyingi qatorlar shu bo'limga tegishli (JSON'dagi ichki obyekt).[[mahsulot]]— jadvallar massivi: har bir[[mahsulot]]ro'yxatga yangi element qo'shadi. Yuqoridagi faylda ikki mahsulot bor.ochilgan = 2026-09-27— TOML'da sana turi bor. JSON va CSV'da yo'q edi.- Bo'shliq ahamiyatsiz: ichkari surish faqat chiroy uchun.
Qayerda uchraydi: Rust loyihasining Cargo.toml fayli, Python loyihasining pyproject.toml fayli, Netlify saytlarining netlify.toml fayli.
Kamchiligi: juda chuqur ichma-ich tuzilmada [a.b.c.d] kabi uzun sarlavhalar paydo bo'ladi. Shunday joyda YAML qulayroq.
Tekshirib ko'ring: TOML faylida
shahar = Toshkentqatori bor. Bu to'g'rimi? YAML'da-chi (shahar: Toshkent)?
Javob
TOML'da — xato: satr doim qo'shtirnoqda bo'lishi kerak, to'g'risi shahar = "Toshkent". YAML'da esa to'g'ri: qo'shtirnoqsiz Toshkent satr deb o'qiladi. TOML qat'iyroq, shuning uchun unda YAML'ning tur taxmini tuzoqlari yo'q.
5. INI — eng sodda va eski
INI (initialization — "ishga tushirish" so'zidan) — eng qadimgi formatlardan biri. Windows'ning dastlabki versiyalaridan qolgan.
; Ma'lumotlar bazasi sozlamasi
[baza]
host = localhost
port = 5432
[aloqa]
email = info@example.com[baza]— bo'lim.kalit = qiymat— qo'shtirnoq odatda shart emas.;yoki#— izoh.
INI'ning yagona rasmiy standarti yo'q. Har dastur uni o'zicha o'qiydi: biri # ni izoh deb biladi, boshqasi — yo'q. Ichma-ich tuzilma, ro'yxat va turlar ham yo'q — hamma qiymat satr. Masalan, port = 5432 dagi 5432 ni dastur o'zi songa aylantirishi kerak.
Shunga qaramay, u hamon ko'p uchraydi. Siz eng ko'p ko'radigan INI fayllar:
.editorconfig— loyiha bo'ylab bir xil indent va qator oxiri uchun (fayl tizimi darsida nomini ko'rgan edik)..gitconfig— Git sozlamalari.php.ini— PHP sozlamalari.
6. .env — maxfiy sozlamalar
6.1 Nima uchun alohida fayl
Dastur ma'lumotlar bazasiga ulanishi uchun parol kerak. To'lov tizimi bilan ishlash uchun maxfiy kalit kerak. Ularni kodning ichiga yozish — eng xavfli xatolardan biri. Kod ko'p odamga ko'rinadi: jamoadoshlarga, GitHub'ga, ba'zan hammaga.
Maxfiy kalit (secret) — tizimga kirish huquqini beradigan qiymat: parol, API kaliti (boshqa xizmatdan, masalan to'lov tizimidan foydalanish uchun berilgan maxfiy satr), token. Bunday qiymatlar kod ichida emas, .env faylida saqlanadi:
# Ilova sozlamalari
PORT=3000
DATABASE_URL=postgresql://ilova:PAROLNI_SHU_YERGA@localhost:5432/dokon
JWT_SECRET=bu-yerga-uzun-tasodifiy-satr-yoziladiBu yerda DATABASE_URL — ma'lumotlar bazasiga ulanish manzili (ichida parol ham bor), JWT_SECRET — foydalanuvchi kirganini tasdiqlash uchun ishlatiladigan maxfiy satr. Ikkalasini ham kursda keyinroq ishlatamiz.
Qoidalari juda oddiy:
- Har qatorda bitta
KALIT=qiymat. Tenglik atrofida bo'sh joy yo'q. - Kalitlar odatda katta harf va pastki chiziq bilan:
DATABASE_URL. #bilan boshlangan qator — izoh.- Qiymatda bo'sh joy bo'lsa, qo'shtirnoqqa olinadi:
DOKON_NOMI="Bahor do'koni".
Nomi — environment ("muhit") so'zidan. Muhit o'zgaruvchilari darsida export PORT=3000 ni ko'rgan edik. .env — o'sha o'zgaruvchilarni har safar qo'lda yozmaslik uchun ularni faylda saqlash usuli. Dastur ishga tushganda faylni o'qib, qiymatlarni muhit o'zgaruvchilariga aylantiradi.
flowchart LR
A[".env fayli<br/>(faqat sizning kompyuteringizda)"] --> B["Dastur ishga tushganda<br/>faylni o'qiydi"]
B --> C["Muhit o'zgaruvchilari<br/>PORT, DATABASE_URL"]
C --> D["Kod qiymatni<br/>nomi bilan oladi"].env ni shell o'zi o'qimaydi — uni dastur yoki maxsus kutubxona o'qiydi. Masalan, Node.js 20.6 va undan yangi versiyalari buni --env-file flagi bilan qiladi: node --env-file=.env app.js. Node.js'ni kursda keyinroq o'rnatamiz.
6.2 Oltin qoida: .env Git'ga tushmaydi
Qidiruv darsida .gitignore faylini ko'rgan edik: unga yozilgan fayllarni Git e'tiborsiz qoldiradi va GitHub'ga ham yuklamaydi. Git'ni kursda alohida qismda o'rganamiz. Yangi loyihaning birinchi ishlaridan biri — .gitignore ga shu qatorni yozish:
.envJamoadoshlaringiz qaysi sozlamalar kerakligini bilishi uchun esa .env.example fayli yaratiladi. U Git'ga yuklanadi, lekin ichida haqiqiy qiymatlar yo'q — faqat kalit nomlari:
PORT=3000
DATABASE_URL=
JWT_SECRET=Yangi dasturchi loyihani oladi, .env.example dan nusxa olib .env yaratadi va o'z qiymatlarini yozadi:
cp .env.example .envDiqqat: Maxfiy kalit bir marta GitHub'ga chiqib qolsa, faylni o'chirish yetarli emas. Git tarixida u qoladi, avtomatik botlar esa ochiq omborlarni bir necha daqiqada skanerlaydi. Yagona to'g'ri yo'l — kalitni darhol almashtirish: yangi parol yoki yangi API kalit olish, eskisini bekor qilish.
Tekshirib ko'ring:
.envva.env.example— qaysi biri Git'ga yuklanadi va nega?
Javob
Faqat .env.example. Unda kalit nomlari bor, lekin qiymatlar bo'sh — hech narsa sirni ochmaydi. .env da haqiqiy parol va kalitlar bor, shuning uchun u .gitignore ga yoziladi va faqat sizning kompyuteringiz yoki serverda qoladi.
7. Hujumchi nigohi
.env — hujumchi uchun eng qimmat fayl: unda bazaga, to'lov tizimiga, botga kirish kalitlari bor. Uni ikki yo'l bilan qidirishadi:
- Ochiq omborlarni skanerlash. Maxsus botlar GitHub'dagi har bir yangi yuklanishni kuzatadi va
.env,API_KEY=,TOKEN=kabi satrlarni qidiradi. Topilgan kalit bir necha daqiqada ishlatiladi. - Saytdan so'rab ko'rish. Botlar minglab saytlarga
https://example.com/.envso'rovini yuboradi. Server noto'g'ri sozlangan va.envsayt fayllari yonida tursa, u oddiy matn bo'lib yuklab olinadi.
Himoya — shu darsdagi qoidalar:
.envdoim.gitignoreda. Git'ga faqat.env.exampletushadi..envsayt orqali ochiq beriladigan papkaga (masalan,public/) qo'yilmaydi.- Kalit tashqariga chiqsa — o'chirish emas, darhol almashtirish.
Tekshirib ko'ring: Server loglarida
GET /.envso'rovlari ko'p. Bu nima degani?
Javob
Botlar saytingizda ochiq qolgan .env faylini qidiryapti. Brauzerda o'z saytingiz manzili oxiriga /.env qo'shib ochib ko'ring (masalan, https://example.com/.env o'rniga o'z domeningiz): fayl yuklanmasa yoki "topilmadi" xatosi chiqsa — hammasi joyida. Fayl ochilsa — uni darhol yashiring va ichidagi barcha kalitlarni almashtiring.
8. Formatlar solishtirmasi
| Format | Kuchli tomoni | Asosiy tuzog'i | Qayerda |
|---|---|---|---|
| YAML | Toza, izohli, chuqur tuzilma | Bo'shliq, tur taxmini | Docker Compose, GitHub Actions, Kubernetes |
| TOML | Aniq turlar, sana turi | Chuqur tuzilmada uzun sarlavha | Cargo.toml, pyproject.toml |
| INI | Juda sodda | Standart yo'q, tur yo'q | .editorconfig, .gitconfig, php.ini |
.env |
Muhit o'zgaruvchilariga mos | Faqat tekis KALIT=qiymat |
Maxfiy kalitlar, port, manzillar |
| JSON | Dasturlar uchun qat'iy | Izoh yo'q, vergul xatosi | API, package.json |
Docker Compose, GitHub Actions va Kubernetes — dasturlarni serverda ishga tushirish va avtomatlashtirish vositalari. Ularni kursning DevOps qismida o'rganamiz.
9. Ko'p uchraydigan xatolar
9.1 YAML'da tab
Xato: tab characters must not be used in indentation. Tabni bo'sh joyga almashtiring. bat -A tablarni ko'rinadigan qilib ko'rsatadi.
9.2 YAML'da ikki nuqtadan keyin bo'sh joy yo'q
port:8080 — YAML buni kalit–qiymat emas, bitta "port:8080" satri deb o'qiydi. Agar u server: ostida tursa, server ning qiymati shunchaki shu satrga aylanadi. To'g'risi: port: 8080. Xato chiqmaydi, lekin sozlama ishlamaydi — shuning uchun topish qiyin.
9.3 Noto'g'ri indent
Bitta qator bir bo'sh joy ko'p yoki kam surilsa, u boshqa kalitga "ko'chib" qoladi yoki xato chiqadi:
YAMLException: bad indentation of a mapping entryTarjimasi: "kalit–qiymat yozuvining ichkari surilishi noto'g'ri". Ko'rsatilgan qator va undan oldingi qatorning boshini solishtiring.
9.4 .env da bo'sh joy
PORT = 3000 — ba'zi vositalar bo'sh joyni kechiradi, ba'zilari esa yo'q. Masalan, bash'da source .env qilsangiz, PORT: command not found xatosi chiqadi: bash PORT ni buyruq deb o'ylaydi. Hamma joyda ishlashi uchun bo'sh joysiz yozing: PORT=3000.
9.5 .env ni Git'ga yuklash
Eng qimmat xato. Oldini olish: loyiha boshida .gitignore ga .env yozing. Sodir bo'lsa: kalitlarni darhol almashtiring — «Oltin qoida» bo'limidagi ogohlantirishni eslang.
10. Mashqlar
1-mashq (oson): Norvegiyani qutqaring
Quyidagi YAML'da ikki qiymat kutilmagan turga aylanadi. Qaysilari va qanday tuzatiladi?
mamlakat_kodi: NO
versiya: 2.10Yechim
NO— YAML 1.1 o'quvchisidafalsebo'ladi.2.10— kasr son2.1bo'ladi, oxirgi0yo'qoladi.
Ikkalasini qo'shtirnoqqa olamiz:
mamlakat_kodi: "NO"
versiya: "2.10"2-mashq (o'rta): JSON'dan YAML'ga
Quyidagi JSON'ni YAML'ga o'giring. Izoh ham qo'shing: # Kurs ma'lumoti.
{
"kurs": "Full-stack",
"darslar": 1610,
"tillar": ["uz", "ru"],
"muallif": { "ism": "Malika", "tajriba": 5 }
}Yechim
# Kurs ma'lumoti
kurs: Full-stack
darslar: 1610
tillar:
- uz
- ru
muallif:
ism: Malika
tajriba: 5Qavslar o'rniga ichkari surish, massiv o'rniga - ro'yxat. Full-stack qo'shtirnoqsiz ham satr bo'lib qoladi — u son yoki mantiqiy qiymatga o'xshamaydi. Tekshirish: faylni kurs.yml deb saqlab, npx --yes js-yaml kurs.yml bajarsangiz, yuqoridagi JSON chiqadi (bu buyruq Node.js o'rnatilgandan keyin ishlaydi). Hozircha "YAML validator" deb qidirib, onlayn tekshirsangiz ham bo'ladi — faqat sirli ma'lumotsiz fayl bilan.
3-mashq (qiyin): Xavfsiz loyiha
Siz Telegram bot yozyapsiz. Botga uchta sozlama kerak: bot tokeni (maxfiy), administrator ID raqami va port (8080). Tokenni BotFather beradi — Telegram'da bot yaratadigan rasmiy bot.
.envfaylini yozing (token o'rniga namuna qiymat qo'ying)..env.examplefaylini yozing..gitignorega nima yoziladi?- Hamkasbingiz tokenni tasodifan ochiq GitHub omboriga yukladi va 5 daqiqadan keyin o'chirdi. Endi xavf yo'qmi?
Yechim
.env:
BOT_TOKEN=bu-yerga-BotFather-bergan-token
ADMIN_ID=123456789
PORT=8080.env.example:
BOT_TOKEN=
ADMIN_ID=
PORT=8080PORT maxfiy emas — uning qiymatini namunada qoldirish qulay. Token va ID bo'sh.
.gitignorega bitta qator:.env.Xavf bor. 5 daqiqa — botlar uchun yetarli vaqt, token Git tarixida ham qolgan. BotFather'da tokenni darhol almashtirish (revoke) kerak. Eski token shunda ishlamay qoladi.
11. Real ishda
- Docker va CI. Docker Compose (bir necha dasturni birga ishga tushiradigan vosita) —
compose.yaml. GitHub Actions (kodni avtomatik tekshiradigan xizmat) —.github/workflows/ichidagi YAML fayllar. Ikkalasini kursda alohida o'rganamiz. Ulardagi xatolarning katta qismi — indent va qo'shtirnoq. - Sirlarni boshqarish.
.env— boshlang'ich daraja. Katta kompaniyalar maxsus "sirlar ombori" xizmatlaridan foydalanadi. Buni sirlarni boshqarish darsida ko'ramiz. - Loyiha fayllari. Yangi loyihani ochsangiz, ildizida
.editorconfig(INI),.env.example,package.json(JSON), ba'zanpyproject.tomlni ko'rasiz. Endi ularning hammasini o'qiy olasiz. - Intervyu. "Parol va API kalitlarni qayerda saqlaysiz?" — "kodda emas, muhit o'zgaruvchilarida; lokal
.envda, u.gitignoreda; namuna uchun.env.example".
Xulosa
- Sozlama fayllari dastur ishini kodsiz boshqaradi; odam uchun JSON'dan qulayroq formatlar bor.
- YAML — bo'shliq bilan tuzilma,
-ro'yxat,|va>ko'p qatorli matn,&/*takrorlanmaslik uchun. Tab — taqiqlangan. - YAML turni o'zi taxmin qiladi:
NO,yes,on,1.10kabi qiymatlarni qo'shtirnoqqa oling. - TOML —
kalit = qiymat,[bo'lim], satrlar doim qo'shtirnoqda, sana turi bor; INI — eng sodda, standartsiz. .env—KALIT=qiymat, maxfiy kalitlar uchun;.gitignorega yoziladi, jamoaga.env.exampleberiladi.- Kalit tashqariga chiqsa — o'chirish emas, almashtirish kerak.
Keyingi dars: XML va uning vorislari — HTML'ning qat'iy "qarindoshi" XML, uning qoidalari hamda sitemap, RSS va SVG'da qanday yashashini o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!