Nurmuhammad
127 subscribers
54 photos
7 videos
7 files
34 links
👨‍💻 Go & Python Developer | 2years of experience
📡 Networking & CCTV Specialist | 3+ years
🎓 Student at PDP University 2/4
🏫 Completed 1 year at TUIT (TATU)
🚀 Tech enthusiast | Always learning
Download Telegram
Qanchonki modeling 100% to’g’ri ishlasa
3😁6👍2💋2🔥1🍓1
Nurmuhammad
Bugungi kun odatdagisidan farq qiladigan kun bo'ldi. Mayli kayfiyatni tushurmaymiz kelasi hafta bular to'g'irlanadi xudo xohlasa.
Cho'zilib kettdi lekin hozircha yaxshi ketayabdi oxrigacha ham shunday bo'lsinda ish qilib uzog'i shanba kunigacha hal bo'ladi hammasi.
12🥰1💋1
image_2025-06-18_15-13-47.png
66.9 KB
Amalladim 🤝

Distinction = 5
Merit = 4
Pass = 3
👍12💋3🥰2
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Hady | Cyber&English
- O'chirilgan fayllar qayerga ketadi?
- hech qayerga, shunchaki ularga murojaat qilish yo'li unutiladi, ya'ni o'chirgan fayllarimiz savatdan o'chirib tashlasak ham o'chib ketmaydi.
- Xotira qanday sig'diradi unda?
- xotira katta blackboardga o'xshaydi. Fayllarni o'chirganda, tizim o'sha fayl "blackboard"ning qayerida ekanligini unutadi, keyin siz uni topolmasligingiz uchun. Ammo, yaxshilab kavlasa, topiladi, agar --- o'sha fayl yozilgan xotira maydoni ustiga yangi ma'lumot yozilmagan bo'lsa. Ya'ni, xotiradan nimanidir astoydil, haqiqatan o'chirish uchun o'chirish emas, xotiraning har bir bandini axborot bilan to'ldirish kerak. Shunda, o'chirilgan fayl butkul yo'q bo'lib ketish ehtimoli bor.
- Nega ehtimoli bor, butunlay yo'qolish emas?
- chunki xotira maydonida "bad sector" nomli qayta ishlatib bo'lmaydigan jabhalar yuzaga keladi, u yerga yo ma'lumot chin qalbdan chuqur iz qoldirib joylashib oladi, yoki ishlatib bo'lmaydigan katakka aylanadi.
- Demak hech narsa o'chmaydi, yo'q bo'lmaydi?
- aynan, o'chmaydi, balki o'rnini boshqasiga bo'shatib beradi.


@hady_teaches and tells you: "Do not write a thing that you will regret for"
1👍114💯3🥰2❤‍🔥2🔥1🎉1🐳1
Setupcha
19💯8👍6🔥63👌1🐳1111
55444👍1🤝11
Background ?
1👍37🥰6❤‍🔥64333🔥2💯2🎉11
🐍 Aiogram 3 nima?

Aiogram 3 – bu Python tilida yozilgan, Telegram Bot API bilan ishlash uchun asinxron (async/await) arxitekturaga asoslangan framework.
Uning asosiy afzalliklari:

🌀 Asinxron ishlash – yuqori tezlik va parallel requestlarni qayta ishlash.

🧩 Middleware – request/response oqimini boshqarish imkoniyati.

🎛 Router – handlerlarni modulga bo‘lib yozish, scalabilityni osonlashtiradi.

🔗 Dependency Injection – handlerlarga tashqi resurslarni (DB, cache) dinamik ulash.

🔹 Telegram WebApp

Telegram WebApp – bu bot orqali foydalanuvchiga ichki Telegram brauzerda ochiladigan mini-ilova.
Masalan: to‘lov tizimlari, interaktiv formalar yoki grafik interfeysli xizmatlar.

Qulayliklari:
Telegram ichida ishlaydi, foydalanuvchi tashqariga chiqmaydi.
Bot va WebApp o‘rtasida real-time data exchange (postMessage API) ishlaydi.
Cross-platform (iOS, Android, Desktop) qo‘llab-quvvatlanadi.

Kamchiliklari:
Cheklangan resurslar – faqat Telegram WebView’da ishlaydi.
Native ilovalarga qaraganda performance pastroq bo‘lishi mumkin.
Kesh va offline rejim imkoniyatlari cheklangan.

🔹 Tezlik haqida

Aiogram 3 da asyncio ishlatilgani uchun 10 000+ request/sec yuklamalarda ham samarali ishlash imkoniyati bor.

WebApp esa foydalanuvchi qurilmasining browser dvijogiga bog‘liq bo‘lib, tezlik front-end optimizatsiyasi va internet sifatiga ko‘proq ta’sir qiladi.

📌 Xulosa:
Agar siz samarali va modulli bot yozmoqchi bo‘lsangiz – Aiogram 3 ideal tanlov.
Agar foydalanuvchilarga interaktiv interfeys kerak bo‘lsa – WebApp yechimi qulay.

👉 Bunday texnik kontentlarni doimiy olish uchun kanalimizga qo‘shiling:
@gophersuz
Please open Telegram to view this post
VIEW IN TELEGRAM
1🎉126🔥6👍54🥰3😘32❤‍🔥22💋1
image_2025-09-05_18-13-11.png
94.7 KB
🔥5💋5221❤‍🔥1🥰1🍓1😘111
This media is not supported in your browser
VIEW IN TELEGRAM
Generator vs Function dasturlashda

Ko‘p dasturlash tillarida generator va oddiy funksiya* bir xil ko‘rinadi, lekin ular ishlash tamoyillari bilan farq qiladi.

🔹Oddiy funksiya (Function)
Funksiya chaqirilganda hamma kodini bajarib bo‘lmagunchaishlaydi va oxirida natija qaytaradi.
Go tilida esa funksiya bir marta ishlaydi va qiymat qaytaradi.

👩‍💻
package main

import "fmt"

// Oddiy funksiya
func Square(n int) int {
return n * n
}

func main() {
fmt.Println(Square(4)) // 16
fmt.Println(Square(7)) // 49
}


👉 Bu yerda Square() har safar chaqirilsa, natija qaytaradi va tugaydi.


🔹Generator (Iterativ natija beruvchi funksiya)
Go’da Python’dagi `yield` kabi generator yo‘q. Lekin biz **channel
va goroutine yordamida generator kabi xulq-atvorni yaratishimiz mumkin.

👩‍💻
package main

import "fmt"

// Generator misoli
func Counter(limit int) <-chan int {
ch := make(chan int)
go func() {
for i := 1; i <= limit; i++ {
ch <- i // qiymatlarni ketma-ket yuborish
}
close(ch)
}()
return ch
}

func main() {
for num := range Counter(5) {
fmt.Println(num)
}
}


👉 Bu yerda Counter() oddiy funksiya emas, balki generatorga o‘xshaydi. U har chaqirilganda emas, balki boshlangandan keyin ketma-ket qiymatlarni yuboradi.
✍️Post: @gophersuz
Please open Telegram to view this post
VIEW IN TELEGRAM
14🥰3❤‍🔥32👍2🔥2🎉22211
Keling bugun high logical tizimlarda ishlatiladigan API gateway haqida gaplashamiz. API Gateway o’zi nima? Deydigan bo’lsak. API Gateway — bu ilova yoki xizmatlar (microservices) orasida ko‘prik vazifasini bajaradigan vosita. U foydalanuvchi (client)dan kelgan barcha so‘rovlarni qabul qiladi va to‘g‘ri xizmatga yo‘naltiradi. Asosiy vazifalaridan biri Routing (yo’naltirish) 🔄 So’rovlarni kerakli backend xizmatiga yetqazish. Rate limiting: Juda ko’p yoki shubhali, zararli so’rovlarni blocklash. Monitorign va logging Trafikni kuzatish va log yig’ish. Xo’sh nimaga mikroservicelarda o’rtada API Gatewaylar turishi kerak? Sababi arxitekturani soddalashtiradi, xavfsizlikni oshiradi, barcha API larni bitta connectionda boshqaraoladi.
Foydalanuvchi mobil ilovadan so‘rov yuboradi → API Gateway uni qabul qiladi → tegishli microservice (masalan, auth, payment yoki product servisi)ga uzatadi → javobni qaytaradi. API Gateway — bu barcha eshiklarni boshqaradigan “kirish postasi”, u bo‘lmasa tizim tartibsiz bo‘lib ketadi.
@gophersuz
1💯52💋21111
Bank kartasi raqami ko‘pincha oddiygina raqamlar to‘plamidek ko‘rinadi, lekin uning har bir bo‘lagi aniq vazifalarni bajarish xususiyatiga ega. Ko‘pchilik kredit kartalari 1960-yillardan beri bir xil algoritmdan foydalanadi va aynan shu algoritm tufayli tizimlar raqam to'g'ri yoki notog'ri kiritilganini ortiqcha harakatlarsiz aniqlay oladi.

Odatda karta raqamlari 15 va 19 orasidagi uzunlikka teng bo'ladi. Eng ko'p tarqalgan standart esa bu 16 xonalik raqamlar jamlanmasi hisoblanadi. Bunda birinchi raqam karta qaysi to'lov tizimiga tegishli ekanini ko'rsatsa (4 — Visa, 5 yoki 2 — MasterCard), xuddi shu tartibda 6-xonagacha bo'lgan raqamlar bilan BIN / IIN (Bank Identification Number) bilan karta qaysi bank tizimiga tegishli ekanligini aniqlash mumkin. Undan keyin mijozning karta hisobraqami va oxirgi raqam karta haqiqiyligini aniqlash uchun Luhn algoritmiga ishlatilinadi.

Luhn algoritmi yoki Luhn formulasi (modulus 10 va mod 10 deb ham ataladi) IBMning ma’lumotlarni indekslash va identifikatsiya qilish sohasidagi tadqiqotchisi bo'lgan nemis muhandisi Hans Peter Luhn tomonidan ixtiro qilingan. O'tgan asrning 50-yillarida IBM mashinalari ma'lumotlarni teshilgan kartalar (punch cards) orqali qabul qilar edi. Bu orada esa arxivlar, banklar va shunga o'xshash ma'lumotlar bilan ishlovchilar ma'lumotlarni raqamli shaklda saqlashni endi boshlashgan. Ma'lumotlarni kiritish jarayonida esa inson xatoliklari bo'lish ehtimoli ham yo'q emasdi, shuningdek IBM muhandislari bu xatolar tufayli minglab yozuvlar buzilayotganini va qayta kiritish uchun ko‘p vaqt ketayotganini aniqlashdi. Buning ortidan Luhn uchun cheklangan resurslarga ega kompyuterlarda (arifmetik amallarning o'zi bilan) kiritilinayotgan ma'lumotlarni self checking qila olish g'oyasini oshirish vazifasi berildi.

Bugungi kunda Luhn algoritmi nafaqat karta raqamlari balkim IMEI (mobil telefon identifikatori), milliy indentifikatsiya tizimlari va turli moliyaviy instrumentlar (misol CUSIP) kabi joylarda ham qo'llanilinadi.

📝 Misol:

Karta raqam: 4539 1488 0343 6467
Bunda tekshirish raqami: 7
Qoldiq: 4539 1488 0343 646

Karta raqamidan har ikkinchi raqamni 2 ga ko‘paytiramiz. Agar ko'paytirish jarayonida natija 9 da katta bo'lsa bunda 9 ayrib yuboriladi.

4   3   1   8   0   4   6   6
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
2× 2× 2× 2× 2× 2× 2× 2×


Natija: 8569 2478 0383 3437

Shundan so'ng oxirgi raqamni istisno qilgan holda barcha raqamlar yig'indisini chiqaramiz (73). Natijaga oxirgi tekshirish raqamini qo'shamiz va umumiy javob 10ga bo'linishi mumkin bo'lsa ma'lumot to'g'ri kiritilgan hisoblanadi.

int luhn(unsigned long long n){
int sum=0, alt=0;
while( n ){
int d = n % 10;
if( alt ) { d*=2; if( d > 9 ) d-=9; }
sum += d;
alt = !alt;
n /= 10;
}
return sum % 10 == 0;
}


❗️ Shuningdek eslatib o'tish kerakki Hans Peter Luhn, KWIC Indexing (Key Word in Context) usulining ham ixtirochisi hisoblanadi. Bu usul qidiruv tizimlarining uzoq ajdodi bo'lib hozirgacha aktual foydalanib kelinadi. Bunda umumiy matndagi har bir so'z navbati bilan kalit so'z sifatida olinadi, shundan so'ng u o'zidan oldingi va keyingi uchta so'zni kontekst sifatida qarab indekslar tuziladi. Foydalanuvchi qidiruv uchun kalit so'zni kiritganda shunga mos kontekst olib kelib beriladi.

Misol: Hans Peter Luhn information retrieval sohasining asoschilaridan biridir

Natija:

🔸 Hans - HANS Peter Luhn information
🔸 Peter - Hans PETER Luhn information retrieval
🔸 Luhn - Hans Peter LUHN information retrieval sohasining
🔸 information - Hans Peter Luhn INFORMATION retrieval sohasining asoschilaridan
🔸 retrieval - Peter Luhn information RETRIEVAL sohasining asoschilaridan biridir
🔸 sohasining - Luhn information retrieval SOHASINING asoschilaridan biridir
🔸 asoschilaridan - information retrieval sohasining ASOSCHILARIDAN biridir
🔸 biridir - retrieval sohasining asoschilaridan BIRIDIR

@yetimdasturchi
1👍5👏2🏆2211🔥11
Ish faoliyatingiz davomida tez-tez kerak bo'lishi mumkin bo'lgan onlayn utilitalar. O'zim ham doimiy foydalanib boraman. Ortiqcha instalizatsiyasiz chromeni o'zida ishingizni bitira olasiz.

🔸 learn-anything.xyz - birgina keyword orqali ma'lumot olishingiz kerak bo'lgan resurslarga judayam tez yo'l topasiz.

🔸 excalidraw.com - brainstorm vaqtida tezda chizmalarni chizib olishingiz yoki jamoangiz bilan maslahatlashib olishingiz uchun qo'l keladi

🔸 text-compare.com - matnlardagi farqlarni tezkor ajratib olish uchun qo'l keladi. Ayniqsa loglar yoki shunga o'xshash joylarda tezkor qidiruv uchun doimiy kerak bo'lishi mumkin.

🔸 draw.io - flow chartlar chizish va ularni boshqalar bilan bo'lishish uchun qulay ilova

🔸 stackedit.io - Markdown bilan ishlash uchun eng yaxshi utilitalardan biri. Deyarli barcha formatlash va export qilish metodlarini qo'llab quvvatlaydi.

🔸 photopea.com - Adobe Photopning onlayn replikasi, professional ishlar uchun ham bemalol yetarli.

🔸 remove.bg - resurs fayllar bilan ishlashda ularning orqa fonini tozalash uchun yaxshi yechim.

🔸 tinkercad.com - 3D modellarni onlayn tayyorlash uchun (o'zim ham to'liq shundan foydalanaman) va sxemalarni tezda chizib olish uchun

🔸 regex101.com - ko'plab standartlarga mos regex namunalarini test qila olish va real jarayonni kuzatish mumkin.

🔸 hexed.it - brauzerning o'zida to'laqonli hex inspeksiya qilishingiz mumkin

🔸 decompiler.com - ko'plab turdagi dasturlarni va ularning kutubxonalarini analiz orqali dekompilatsiya qilishingiz uchun qulay utilita. Ayniqsa android ilovalar uchun yaxshi analiz qila olish imkoniga ega.

🔸 serialterminal.com - Serial qurilmalar (UART) bilan ulanish uchun onlayn utilita. Arduino, USB modemlar yoki shunga o'xshash qurilmalar bilan ishlashda qo'l keladi.

🔸 obfuscator.io - Javascript kodlarni turli parametrlar bilan obfuskatsiya qilishingiz va bu orqali kodlarni o'qishdan ma'lum darajada himoya qila olasiz.

🔸 prettier.io - kodlarni formatlash uchun eng yaxshi yechimlardan biri. Alohida servis sifatida editorlarga ham ulash mumkin.

🔸 havola.uz - yuqoridagi kabi qiziqarli utilitalar va saytlarning havolalarini tezda oson topishingiz mumkin.

@yetimdasturchi
1👍2🔥2
Research uchun yana bir foydali utilitalardan biri: godbolt.org

Kompiliyatsiya jarayonini taxminiy ko'rish uchun qo'l keladi.
1
Rustdagi bir qator kod Cloudflare tizimini qulatga va jahon internet tarmog'ini izdan chiqishiga sabab bo'lgan. Bugun Rust va C masalasida Sohib (orzklv) bilan bahslashib qolgandik 😄

Rustni xatolarni o'tkazmasligi odatda zo'r, lekin bu ba'zan xalaqit ham beradimikan deyman. C bu "-Hay bolam o'zing bilasan!" deydigan otaga o'xshaydi. Ya'ni xohlagancha xato qilish va eksperiment o'tkazish mumkin. Demak xaklar soni ko'payadi.

Da tan olish kerak cloudflare agar shu qismi C da bo'lganda muammoni xuy topishi ham mumkin edi, lekin boshidan bufer to'lishiga bunaqa xatoni o'tkazib indamay yuborish ehtimoli ham ko'p edi. Odatda C da bu tabiiy refleks bilan qilinadi. Shuningdek yana bir narsani tan olish kerak memory safe yo'qligi sabab ham C bu qismda yutqazadi, ya'ni ko'plab CVElar aynan shu sabab kelib chiqadi.

Ammo eng mininum levelda hardwarega kelganda C yutib chiqaveradi har doim. Masalan Rustni allaqachon linux kernelga integratsiyasini boshlangan. Ammmo nega haligacha bu ekotizm uchun normal Audio yoki USB driver qilinmagan deb o'ylaysiz? Masalan oddiy: C da memory safe yo'qligi driverlarda instalgancha pointer aliasing qilishga imkon beradi, bu esa Rust falsafasiga zid. Ya'ni MMIO bilan ishlashda Rust haddan tashqari talab qo'yib cheklab yuboradi. C esa shunchaki to'g'ridan to'g'ri registerni ko'rsatish va unga yozishga imkon beradi. Bu esa datasheetga qarab ortiqcha harakatlarsiz bemalol driver yozishni taminlaydi. Oddiy misol hardware bilan interrupt handler qilib ko'rishni Rust hozircha eplay olmaydi, aniqrog'i qiladi ammo 90% kodingiz jarayon xavfliligini tekshirishdan iborat bo'ladi. Ya'ni bunaqa keyslar aslida real memory emas to'laqonli mapping hisoblanadi. Bu esa o'z navbatida Rust bozirini microcontrollerdan ham chiqarib yuboradi. ABI masalasi ham xuddi shunday, C ustida turipti.

https://blog.cloudflare.com/18-november-2025-outage/
1
🔸 Masalan registerga murojaat qilish:

C:

volatile uint8_t *PORTB = (volatile uint8_t*)0x25; 


Rust:

const PORTB: *mut u8 = 0x25 as *mut u8;

unsafe {
let v = core::ptr::read_volatile(PORTB);
core::ptr::write_volatile(PORTB, v ^ (1 << 0));
}


ℹ️ Bunda har ikkisida ham bir xil natija bo'ladi, ammo build jarayoni murakkab.

-----------

🔸 I/O portlar bilan ishlash

C:

uint8_t *p = (uint8_t*)0x25;
uint8_t a = *p;
uint8_t b = *p;


Rust:

let a = unsafe { *port };
let b = unsafe { *port };


C ASM:

in   r24, 0x25
mov r25, r24


Rust asm:

ld   r24, (0x25)
ld r25, (0x25)


ℹ️ E'tibor qilgan bo'lsangiz C va Rustda ham ikkita instruksiya, ammo C da bitta load. Ya'ni portni bir marta ochib keyin registerdan ovolyapti xolos. Demak yuklama oshishni boshladi.

-----------

🔸 Looplar:

C:

for (i=0; i<8; i++)
sum += buf[i];


Rust:

for i in 0..8 {
sum += buf[i];
}


C ASM:

    ld   r18, X+
add r24, r18

ld r18, X+
add r24, r18

ld r18, X+
add r24, r18

ld r18, X+
add r24, r18

ld r18, X+
add r24, r18

ld r18, X+
add r24, r18

ld r18, X+
add r24, r18

ld r18, X+
add r24, r18


Rust:

loop_start:

cpi r16, 8
brge panic

movw r30, r20
add r30, r16
adc r31, r1
ld r18, Z
add r24, r18

inc r16
rjmp loop_start


ℹ️ Cda unroll bilan 16 instruksiya, Rustda bo'lsa 72ta instruksiya. Ya'ni bound check + loop overhead qo'shilyapti.
🎉7🔥4💯42❤‍🔥111111
Qanday
👍964🔥3🥰33❤‍🔥2💯2🎉1💋11