Batafsil
26 subscribers
361 photos
32 videos
38 files
213 links
Dasturlash. Turli modullarni o‘rnatish.
Download Telegram
Batafsil
#docker Docker’dagi buyruqlar 2 turga bo’linadi, bular: management commands va commands. Management commands yangi buyrular, commands’dagi buyrular bo’lsa docker’ning eski versiyasida ishlatilgan buyruqlar bo’ib, shu buyruqlardan foydalanishni cheklab qo’ymasdan…
#docker #login

docker login - docker-hubga CMD orqali ulanish
docker logout - docker-hubga ulangan cmddan chiqish

docker image tag redis:latest shamsuddinov/myredis:6.0.7 - mavjud image'ga yangi nom berish
docker image push shamsuddinov/myredis:6.0.7 - docker-hubga push qilish
Docker container run -p 80:80 -v path_to_file/about:/usr/share/nginx/html/about nginx:latest - lokaldagi path_to_file papkasini boshqarish xuquqini konteynerga berdi, endi shu yerdagi o’zgarishlar yordamda konteynerin boshqarsak bo'ladi

Docker container run -p 80:80 -v path_to_file/about:/usr/share/nginx/html/about:ro nginx:latest - agar ro kaliti qo’shilsa konteyner faqat o’qiy oladi
Docker container run -p 80:80 —mount  type=biund,src=path_to_file/about,destination=/usr/share/nginx/html/about,readonly nginx:latest

docker volume create mynewvolume - yangi volume yaratish
docker volume ls - listlarni ko’rish
docker volume delete volume_name - volumeni o’chirish
docker volume prune - dockerdagi ishlatilamyotgan volumelarni o’chirib yuboradi
Docker volume inspect mynewvolume - volume haqidagi to’liq ma’lumotni chiqarish
docker container run -itd —volume mynewvolume:/data alpine:latest - volume’ni ishlatish
docker container attach c_name - c_name noli konteynerga kirish


Tarmac turlari 3 xil, masalas: bridge, host va none. Bridge - ko’rinishidagi tarmoqlarda har Bir konteynerning o’z IP manzili bo’ladi, ular lokaldagi kopmyuterning IP manzilidan mustaqil bo’ladi. Host - ko’rinishidagi tarmoqlarda esa, konteynerlar lokaldagi Kompyuter portlaridan foydalanadi, va ular bir xil bo’ladi. None - hususiyati tarmac umuman merak bo’lmaganda foydalaniladi.

docker network ls - dockerdagi tarmoqlarni ko’rish
docker network inspect bridge - to’liq ma’lumot olish uchun foydalaniladi
docker network create mynet —driver bridge - bridge deb perish short eras, sababi bridge default qiymat hisoblanadi
docker container run -itd —rm —name c1 alpine va docker container run -itd —rm —name c2 alpine qilib 2 ta konteyner yaratib olamiz. Bu ikkala konteynerlar o’zaro bridge network Milan bog’langan bo’ladi va ular o’rtasida IP manzillariga ping buyurug’i yordamida so’rov yuborib tekshirib olishimiz mumkin.

docker container run -itd —rm —name c1 —network mynet alpine va docker container run -itd —rm —name c1 —network mynet alpine
Ayrim buyruqlar hozir ishlamasligi mumkin, ancha oldin yozgan edim. Mabodo foydasi tegsa.
#java #migration #liquibaseWithHibernate

- DB ni 1-marta ishga tushirish, bu loyiha boshida qilinadi, buni sababi ishga tushirishdan oldin migratsiyalar shakllanmagan bo'ladi
- Ularni shakllantirish uchun esa hibernatedan foydalaniladi. Hibernate model/entitylar asosida bazani yaratil oladi, liquibase bo'lsa
- shu baza asosida o'zidagi migratsiyalarni shakllantirib oladi. Undan so'ng qolgan ishlar shu initial migrationdan boshlab
- davom ettirib ketiladi.

1. liquibase.properties ga baza ma'lumotlari yoziladi

2. application-dev.yml faylidagi

...
jpa:
hibernate:
ddl-auto: create # oldingi qiymati none
...

va

...
liquibase:
enabled: false # oldingi qiymati true
...

keyin esa dastur bir marta ishga tushiriladi. Shunda jadvallar DBda paydo bo'ladi. Undan keyin o'sha o'zgarishlar avvalgi xoliga qaytariladi.

3. Keyin esa, o'sha baza asosida dastlabki migratsiya fayli yaratib olinadi, buning uchun:

mvn liquibase:generateChangeLog \
-Dliquibase.outputChangeLogFile=src/main/resources/db/changelog/changeset/db.changelog-1.0-initial.xml


4. Tayyor bo'lgan faylni src/main/resources/changelog/db.changelog-master.xml (faylni yml yoki xml qilib ishlatsa bo'ladi) ichida ko'rsatib qo'yiladi:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">

<include file="db/changelog/changeset/db.changelog-1.0-initial.xml" relativeToChangelogFile="false"/>

</databaseChangeLog>

Keyin DBni bir marta tozalab yuboramiz va dasturni ishga tushiramiz, shunda dastur o'zi migratsiyalarni yurgizib ishga tushishni boshlaydi. Undan keyin bemalol boshqa entitylarni yaratishimiz yoki o'zgartirishimiz va yangi migratsiyalar qilishimiz mumkin.

5. Keyin esa, masalan entity o'zgargach, o'zgarishlarni xisobga olish uchun, build qilib yuboriladi:

# Entity o'zgarganidan keyin bir marta build qilib olinadi, shunda mvn liquibase:diff da o'zgarishlar ko'rinadi
mvn clean compile


6. Build qilinganidan so'ng migratsiya yuritiladi, bu yerda db.changelog-v{X}.xml o'rniga boshqa qiymat yoziladi:

mvn liquibase:diff \
-Dliquibase.diffChangeLogFile=src/main/resources/db/changelog/changeset/db.changelog-v9.xml
#note

Resurslar chegarasi va muammolar
Tizimda har bir komponentning chegarasi bor. Bu chegaralar haqida o'rganib, samarali tizimlar qurishni o'rganamiz.

Bo‘g‘ilish (Bottleneck) nima?
Bottleneck — bu tizimdagi eng sekin komponent. Tizimning umumiy ishlash tezligi ko‘pincha eng sekin qismga bog‘liq bo‘ladi.

Misollar:

CPU haddan ortiq ishlayapti → hisoblash sekinlashadi.
RAM yetarli emas → diskdan foydalaniladi → sekin.
Tarmoq tor → ma’lumotlar kechikadi.
Tizim tezligi = eng sekin komponent tezligi
Resurslar yuklanishini qanday o‘lchaymiz?

Resurs O‘lchov usuli Normal qiymat
CPU % usage, load average 40–70%
RAM used vs free memory >80% — xavfli
Disk IOPS, read/write speed SSD > HDD
Network latency, throughput <100ms (ideal)


top # CPU va RAM holatini ko’rish
iostat # Disk tezligini o’lchash
ping 8.8.8.8 # Tarmoq kechikishini ko’rish

Tizimlar qanday cheklovga uchraydi?

CPU-bound (Hisoblash bo‘yicha cheklangan):
Masalan: Video kodlash, kriptografiya, AI inference.
Hal qilish: Ko‘proq CPU core, yaxshiroq algoritm.

Memory-bound (Xotira bo‘yicha cheklangan):
Masalan: Katta datasetlar, AI modelni RAMga joylash.
Hal qilish: Ko‘proq RAM yoki keshlash.

Disk-bound (Saqlash bo‘yicha cheklangan):
Masalan: Log yozish, katta fayllarni o‘qish.
Hal qilish: SSD, indekslash, yozishni kechiktirish.

Network-bound (Tarmoq bo‘yicha cheklangan):
Masalan: Video stream, API chaqiruvlar.
Hal qilish: CDN, gZIP siqish, parallel so‘rovlar.
🚨 Linux kernel'ining firewall (nftables) kodidagi bitta tasodifiy ! belgisi.

Aynan shu bitta belgi oddiy tizim foydalanuvchisiga root huquqlarini olish va konteynerdan chiqib ketish imkonini berdi.

Muammoni bartaraf etish uchun nftables firewall kodidagi atigi bitta qator o‘zgartirildi.

Ushbu zaiflikdan (CVE-2026-23111) foydalanish uchun exploit kodi ommaga e'lon qilindi.

https://t.me/cwgthreats/275
O‘zbekistonda ko‘p biznes yechimlar PHPda yoziladi. Ba’zida ular faqat o‘z serverimizda emas, balki mijoz tomonda offline, self-hosted yoki on-premise shaklda ham ishlatiladi.

Muammo shundaki, PHP odatda compile qilinmaydi. Ya’ni project mijozga berilganda source code ham ochiq holatda ketadi. Kod ichiga license check qo‘shilgan bo‘lsa ham, source ochiq turgani uchun uni topish, o‘zgartirish yoki butunlay chetlab o‘tish mumkin.

Shu muammoni hal qilish uchun YAPF (Yet Another PHP File) nomli build tool ishlab chiqdik. YAPF oddiy PHP loyihasini bitta yopiq va shifrlangan faylga aylantiradi. Build qilingan application faqat litsenziya berilgan mashinada ishga tushadi. YAPFdagi asosiy g‘oya shuki, license nazorati faqat application ichidagi oddiy tekshiruv bo‘lib qolmaydi. Runtimening o‘zi buni enforce qiladi. Ya’ni source code diskda ochiq yotmaydi, encrypted holatda saqlanadi va zend compilergacha yopiq ko‘rinishda yetkaziladi.

🔐 Xavfsizlik masalasi: YAPF deployment artifact darajasidagi himoya beradi. Utilitaning vazifasi source code diskda ochiq yotmasligini va litsenziyasiz mashinada ishga tushmasligini ta’minlash. Ya’ni tool encrypted source kodlarni Zend compilergacha yopiq holatda yetkazib beradi.

Shu bilan birga, buni mutlaq himoya deb qabul qilmaslik kerak. PHP runtime qanday ishlashini source levelda yaxshi bilgan odam yetarlicha harakat qilsa, nazariy jihatdan oraga tusha oladi. Bundan tashqari, loyiha hozircha eksperimental bosqichda. Shuning uchun filesystem permissions, process isolation, memory monitoring va boshqa odatiy xavfsizlik choralari baribir kerak bo‘ladi.

🛠 Texnik cheklov: YAPF hamma framework bilan ham bir xil darajada muammosiz ishlayvermaydi. require, file_exists, opendir kabi asosiy PHP chaqiruvlari odatda muammosiz ishlaydi. Lekin chdir, glob yoki Symfonydagi SplFileInfo::getRealPath() kabi real filesystem path kutadigan joylarda muammo chiqishi mumkin. Bunday holatlarda frameworkning aynan shu qismlarini moslash yoki patch qilish kerak bo‘ladi.

Alternativ yechim sifatida Workerman kabi asinxron frameworklardan foydalanish mumkin. Chunki unda transport qatlamigacha deyarli vanilla PHP bilan ishlanadi va og‘ir framework abstraksiyalariga kamroq tayaniladi. Shu sababli YAPF bilan integratsiya qilish ancha osonroq bo‘ladi. Eng ishonchli va muammosiz yo‘l esa loyihani aynan shu ish uchun boshidan vanilla yozish.

⚙️ Imkoniyatlar:

— PHP projectni bitta yopiq va shifrlangan faylga aylantirish
— Source codeni diskda ochiq holatda qoldirmaslik
— Buildni aniq bir machinega bog‘lash
— Machine, vaqt yoki run count bo‘yicha licensing qilish
— Licenseni application ichida emas, runtime darajasida enforce qilish
— Noto‘g‘ri machineda yoki muddati tugagan license bilan appni ishga tushirish oldini olish

🔗 Github havola: https://github.com/yetimdasturchi/yapf

Hurmat bilan,
Davlat axborot tizimlarini yaratish va qo‘llab-quvvatlash bo‘yicha yagona integrator UZINFOCOM
Apparat-dasturiy biznes yechimlarini amalga oshirish bo‘limi
Lekin xavfsizlik qoidalariga ko'ra, men sizning nomingizdan yangi dastur (OAuth Client ID) yarata olmayman yoki maxfiy tokenlarni (Secret Key) to'g'ridan-to'g'ri olib bera olmayman, chunki bu o'zgarishlar kiritish (mutation) hisoblanadi.
Sizga buni qanday qilish bo'yicha aniq yo'riqnomani (step-by-step) beraman:
1-qadam: YouTube Data API v3 ni yoqish
YouTube bilan ishlash uchun avval loyihangizda ushbu xizmatni faollashtirishingiz kerak.
Google Cloud Console ga kiring.
Yuqoridan o'zingizning loyihangizni (valued-night-501005-r7) tanlang.
Chap menyudan "APIs & Services" > "Library" bo'limiga o'ting.
Qidiruvga "YouTube Data API v3" deb yozing va ustiga bosing.
"Enable" tugmasini bosing.
2-qadam: OAuth Consent Screen (Ruxsatnoma ekrani)ni sozlash
"APIs & Services" > "OAuth consent screen" bo'limiga o'ting.
User Type: External tanlang va "Create"ni bosing.
Dastur nomi (masalan: "Mening YouTube Loyiham") va emailingizni kiriting.
Scopes bo'limida siz aytgan quyidagi skouplarni qo'shing:
.../auth/youtube.upload (Video yuklash)
.../auth/youtube.force-ssl (Izohlarni boshqarish)
Test users bo'limiga o'z YouTube kanalingiz ulangan emailingizni qo'shing.
3-qadam: OAuth 2.0 Client ID olish (Tokenlar uchun kalit)
"APIs & Services" > "Credentials" bo'limiga o'ting.
Yuqoridan "+ Create Credentials" > "OAuth client ID" tanlang.
Application type: Web application tanlang.
Authorized redirect URIs qismiga loyihangizdagi callback manzilini yozing (masalan: https://saytingiz.uz/social-auth/youtube-callback).
"Create"ni bosing. Shunda sizga Client ID va Client Secret beriladi.
4-qadam: Tokenlarni PHP kodga joylash
Olingan Client ID va Client Secretni loyihangizdagi sozlamalarga (odatda .env yoki config faylga) yozasiz.
Tavsiya: Agar loyihangizda hozir qaysi API'lar yoqilganligini yoki OAuth sozlamalari holatini bilmoqchi bo'lsangiz, men tekshirib berishim mumkin.

.....

Google orqali avtorizatsiya
Media is too big
VIEW IN TELEGRAM
Bolalar tayyorlagan qoyilmaqom kontent :) Qoyil lekin :)

Manba
Forwarded from Temurbek Adhamov
OpenAI o'tgan yili 13 milliard dollar topib, 38 milliard dollar zarar ko'ribdi. ChatGPT'ni 1,1 milliard odam ishlatadi, lekin atigi 5 foizi pul to'laydi. Endi o'ylab ko'ring: bu bepul bayram kim hisobidan davom etyapti va tugaganda nima bo'ladi?

Shu savolga javob beradigan zo'r tahlil o'qidim, tavsiya qilaman:https://telegram.me/pivotuzbekistan/3288
Forwarded from His perspective
Bir tonna kitob tarqatilishi haqida

Bu tashabbus boshlanganida juda xursand bo‘lgandim. Rostini aytsam, kiberxavfsizlik yo‘nalishida ilmni keng yoyish uchun jiddiy harakat qilinyapti, deb o‘ylagandim. Afsuski, keyin fikrim o‘zgardi. Xullas, tarqatilayotgan kitoblardan biri qo‘limga tushdi. Uni tayyorlagan mutaxassislarga shu qadar ishonganim uchun kitobni o‘zim varaqlamay, ayni shu mavzuda ishonchli manba izlayotgan bir tanishimga berdim.

Mashinada ketayotganimizda u kitobni varaqlab, ikki-uch sahifadan keyin, “Buni ChatGPT tarjima qilganmi?” deb so‘radi. Men, “Yo‘q, menimcha buni mutaxassislarning o‘zi tarjima qilgan”, dedim. Ammo u ko‘rsatgan sahifalarda emojilar, giperhavolalar, hatto AI matnlarida tez-tez uchraydigan uzun ajratgich chiziqlari ham qolib ketgan edi. Eng achinarlisi, matn umuman tahrir qilinmagani yaqqol bilinib turardi. Ichidagi kontentni biroz fakt chek qilsak bu varaqlar ketma-ketligini kitob deyish xatoligini tushundik.

Shu payt tanishim oldida o‘zimni masʼuliyatsizdek his qildim. Axir kitobni tekshirmasdan tavsiya qilgan edim. Mana, necha kundir shu haqida o‘ylayapman. Men ko‘rganim bitta kitob, xolos. Ammo shunday kitoblardan yana qanchasi minglab qorako‘zlar qo‘liga yetib boryapti? Tahrir qilinmagan matnlar va tekshirilmagan faktlarning kitob ko‘rinishida ilm deb tarqatilayotgani odamni chuqur o‘ylantiradi.

Iltimos, qilayotgan ishinglarni masʼuliyat bilan qilinglar. Xayp, mashhurlik oʻtadi-ketadi bizdan amallarimiz qoladi. Shu sabab, ogʻiz koʻpirtirib odamlarni, jamiyatni aldamanglar.

Surat: Shaxsiy arxiv.

@hisperspective
Forwarded from Otabek’s I/O
Sizga sovg'am bor.

Bugun yakshanba, dam olish kuni. Algoritmlar bo'yicha bir paytlar o'tgan jonli darslarimni sizga o'rganishga bermoqchiman. Yana bunday darslarni o'tish uchun vaqt va sharoit topilishi bilan bularni yanada yaxshiroq qilishga harakat qilamiz.

1. Algoritmlarga kirish
2. Diskret Matematika
3. Array & Strings
4. Recursion
5. Stack & Queue
6. Graph
7. Tree
8. Deque
9. Linked List
10. Sorting
11. Hash Table
12. Searching
12. Sorting 2-qism
13. Dynamic Programming
14. Greedy Algorithms

Darslar yoqgan bo'lsa va fikringiz bo'lsa bemalol donat qilishingiz va fikringizni qoldirishingiz mumkin.
#telegram #webViewCrashed

Shu bilan ishlatib ko'rish kerak:
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0

Agar ishlasa, doimiyga o'tkazish uchun:
echo 'kernel.apparmor_restrict_unprivileged_userns=0' | sudo tee /etc/sysctl.d/60-apparmor-namespace.conf
sudo sysctl --system

https://iiiypuk.me/posts/2024/telegram/webview-crash/
Forwarded from His perspective
Telefoningizga dastur o‘rnatganda nimaga ruxsat so‘rayotganini bilib oling

Linkedinda postga ilova qilgan rasmimni ko‘rib qoldim. Foydalanuvchi Yandex Go dasturi uning telefoni quvvati tugayotganini qanday bilib qolganini tushunmasdan holatni tavsiflagan ammo, bu holat unchalik ham tushunarsiz emas.

Shunchaki, foydalanuvchi Yandex Go dasturini qurilmasiga o‘rnatayotgan vaqtda background process’ga ruxsat bergan hamda Yandex Go dasturi orqa fonda barcha jarayonlarni ko‘rib, kuzatib, tahlil qilib borgan hamda tizim avtomatik moslangan reklama bildirishnomalarini yuborgan.

Bu kabi holatlar kuzatilmasligi hamda o‘zingizni xavfsiz his qilishni xohlasangiz maslahatim har bir dasturga o‘qib, bilib kerakli ruxsatlarni bering. Ayniqsa, superapplardan ehtiyot bo‘ling ularda juda ko‘p mikroservislar bo‘lgani sabab, sizning qurilmangizni tinimsiz trek qilib turishi aniq.

Ishqilib, kibermadaniyat qoidalariga rioya qiling va befarq bo‘lmang.

Surat: Linkedin.

@hisperspective
🔥1
Forwarded from Davronbek | SWE 🪐
Algoritmlarni osonroq va vizual tarzda o‘rganish uchun kichik saytcha

Bunda siz:

• Sorting va searching algoritmlarini qadam-baqadam kuzatishingiz
• Animatsiyalarni boshqarib, tajriba qilib ko‘rishingiz
• Sodda tushuntirishlarni o‘qishingiz
• Qisqa quizlar orqali bilimingizni sinashingiz mumkin

Ko‘rib chiqingchi ;)
https://firdavsdev.github.io/algo-interactive-visualization
👍1
Forwarded from Davronbek | SWE 🪐
Mac’ning terminali uchun kichik qo‘llanma

* Fish va Starship sozlash
* autosuggestion va icon’lar
* foydali CLI tool’lar
* Docker, API va network debugging
* monitoring va performance command’lari

Balki sizga ham foydasi tegib qolar!

🔗 [Gist]
👍1
Forwarded from Azamat Abdullaev
Ichki platformadan open source’ga: Kiro Crew, AWS’dan 24/7 AI agent platformasi
🇺🇿


AWS bugun Kiro Crew’ni open source qildi (https://kiro.dev/blog/introducing-kiro-crew/). Bu avval ichki platforma edi - men bir necha oydan beri o'zimning on-call ishimning bir qismini avtomatlashtirish uchun ishlatib kelyapman: mustaqil izlanishlar, ba'zida hatto muammolar yechimining o'zini ham - eng zo'r tomoni men so'ramasdan qila olishi!

6 oycha oldin Amazonda 3 ta dasturchi birlashib, AI ni yanada foydali qilish uchun, side project sifatida MeshClaw nomli platforma qurishni boshlashadi. Asosiy vazifa ushbu platforma Amazonning xavfsizlik darajalariga javob bera olishi kerak edi. Ushbu platforma juda tez rivojlanib ketdi, va asosiy sababi - Amazon dasturchilari unga o'zlarining real muammolarini yechadigan funskiyalarni qo'shib, uni kengaytirishdi, haftasiga o'rtacha 143 commit qilishdi - va bu kichik commit’lar to'planib, Amazonda 39,000+ dasturchi ishlatadigan platformaga aylandi.

Uni oddiy chat agent’dan farqlaydigan narsa - atrofidagi platforma qatlami:

- Sizning qarovingizsiz ishlaydi - cron joblar, webhooklar, yoki deployment to'xtab qolganda sizdan so'ramasdan reaksiya beradi (mening sevimli qismim).
- Bir vaqtning o'zida bir nechta agent’ni boshqaradi, bitta thread emas - ticketlarni skan qiladi, bug'lar, issue’larni tanlab, so'ralmasdan ularni hal qiladi.
- Apps - takrorlanadigan instruction’larni doimiy vositaga aylantiradi - bir marta schedule, skill va kichik dashboard belgilaysiz, har 15 daqiqada bir xil so'rovni chat’da yozish o'rniga.
- Bitta agent crew, ko'p interfeyslar - CLI, web dashboard, desktop, Slack, Discord, Telegram - jamoangiz qayerda ishlasa, o'sha yerda ishlaydi.

U mavjud Kiro CLI va agent protocol (ACP) ustiga qurilgan, alohida mahsulot sifatida emas.

O'zingiz sinab ko'rishga arziydi - u open source va bepul, faqat orqasidagi inference uchun Kiro plan sotib olish kerak.

@abdullaevdev

#agenticai #aws #ai #kiro #oncall
Forwarded from Diyorbek.dev | 👨🏻‍💻 (Diyorbek Juraev)
Endi asosiy va uzun mazmunli postlarni o‘z websahifamda ulashib boraman. 👇

My Journey to Octane — maqolani o‘qish

Aytgancha, hali ulashadigan 5 ga yaqin yangiligim bor.

Keyingi postlarda esa biroz chuqurroq mavzularga kiramiz:

Loyihaga full AI workflow qanday setup qilinganini

Barcha jarayonlarni diagramma va flowlar orqali

O‘zim real loyihalarda ishlatayotgan AI skilllarim va workflowlarimni

Va albatta, CI/CD jarayonlari va ularni qanday setup qilganimizni

Hammasini imkon qadar amaliy va tushunarli formatda bo‘lishaman.

Bu safar shunchaki “nima qildik” emas, “qanday qildik” deb gaplashamiz.
Forwarded from Raqamli Qal'a
🚩 Kiberxavfsizlikni bepul va amaliy darslar orqali noldan oʻrganing!

cdCTF — kiberxavfsizlikni amaliy topshiriqlar orqali o'rganish imkonini beruvchi bepul platforma.

⭐️ Platforma haqida:
• 102 ta CTF topshirig'i — Web, Crypto, Forensics, Reverse va boshqa yo'nalishlar
• Zaif mashinalar — to'g'ridan-to'g'ri brauzerda ishlaydi, hech narsa o'rnatish shart emas
• Sertifikat — har bir modul yakunida
• 3 tilda — o'zbek, rus va ingliz tillarida
• 100% bepul

Tajriba esa shart emas. Kiberxavfsizlikni noldan boshlayotganlar ham platformadan foydalanishi mumkin.

cdCTF.uz
🔥1