[{"data":1,"prerenderedAt":1119},["ShallowReactive",2],{"cmd-projects-uz":3,"cmd-posts-uz":240,"vlog-post-\u002Fuz\u002Fvlog\u002Fdev-setup":1050},[4,90,173],{"id":5,"title":6,"body":7,"description":76,"extension":77,"featured":78,"github":79,"image":80,"live":81,"meta":82,"navigation":78,"order":71,"path":83,"seo":84,"stack":85,"stem":88,"__hash__":89},"projects_uz\u002Fuz\u002Fprojects\u002Fcli-vosita.md","devkit CLI",{"type":8,"value":9,"toc":68},"minimark",[10,15,26,31],[11,12,14],"h2",{"id":13},"loyiha-haqida-batafsil","Loyiha haqida batafsil",[16,17,18,21,22,25],"p",{},[19,20,6],"code",{}," — bu dasturchilarning kundalik takrorlanuvchi vazifalarini avtomatlashtirish, yangi loyihalarni tezkor shablonlar asosida (",[19,23,24],{},"scaffolding",") yaratish va CI\u002FCD jarayonlarini boshqarish uchun mo'ljallangan tezkor buyruq qatori vositasidir.",[27,28,30],"h3",{"id":29},"asosiy-xususiyatlari","Asosiy xususiyatlari",[32,33,34,46,56,62],"ul",{},[35,36,37,41,42,45],"li",{},[38,39,40],"strong",{},"Go va Cobra Framework:"," Yuqori tezlikda ishlash va barcha operatsion tizimlar (Linux, macOS, Windows) uchun yagona ikkinchi darajali (",[19,43,44],{},"binary",") fayl kompilyatsiyasi.",[35,47,48,51,52,55],{},[38,49,50],{},"Interaktiv CLI:"," ",[19,53,54],{},"Promptui"," yordamida terminalda interaktiv menyular va savol-javoblar tizimi.",[35,57,58,61],{},[38,59,60],{},"Shablonlar generatori (Scaffolding):"," Bir necha soniyada tayyor arxitekturaga ega microservice yoki frontend ilovalarni yaratish.",[35,63,64,67],{},[38,65,66],{},"Git Hook va Lint avtomatizatsiyasi:"," Koddagi xatolarni commit qilishdan oldin avtomatik tekshirish.",{"title":69,"searchDepth":70,"depth":71,"links":72},"",2,3,[73],{"id":13,"depth":70,"text":14,"children":74},[75],{"id":29,"depth":71,"text":30},"Loyihalarni scaffold qiladigan va kundalik dev ishlarini avtomatlashtiradigan buyruq qatori vositasi. Namuna loyiha — o'z ishingiz bilan almashtiring.","md",true,"https:\u002F\u002Fgithub.com\u002Fusername\u002Fdevkit",null,"https:\u002F\u002Fexample.com",{},"\u002Fuz\u002Fprojects\u002Fcli-vosita",{"title":6,"description":76},[86,87],"Go","Cobra","uz\u002Fprojects\u002Fcli-vosita","ZojaA61YMwzxfMBZiztExfeYsefAKawPluliKGE3SOs",{"id":91,"title":92,"body":93,"description":160,"extension":77,"featured":78,"github":161,"image":80,"live":80,"meta":162,"navigation":78,"order":163,"path":164,"seo":165,"stack":166,"stem":171,"__hash__":172},"projects_uz\u002Fuz\u002Fprojects\u002Fportfolio-sayt.md","Ushbu veb-sayt",{"type":8,"value":94,"toc":154},[95,97,100,102,139,143],[11,96,14],{"id":13},[16,98,99],{},"Ushbu loyiha zamonaviy web texnologiyalari yordamida yaratilgan bo'lib, dasturchilar uchun o'z portfolio, blog va vloglarini yuqori darajada taqdim etish imkonini beradi. Loyiha to'liq statik rejimda ishlaydi va har qanday CDN (Cloudflare Pages, Vercel, Netlify yoki GitHub Pages) orqali oson joylashtiriladi.",[27,101,30],{"id":29},[32,103,104,113,127,133],{},[35,105,106,51,109,112],{},[38,107,108],{},"Ikki tilli qo'llab-quvvatlash (UZ \u002F EN):",[19,110,111],{},"@nuxtjs\u002Fi18n"," yordamida har bir til uchun alohida content va tarjimalar mexanizmi.",[35,114,115,118,119,122,123,126],{},[38,116,117],{},"Nuxt Content v3:"," Barcha ma'lumotlar Markdown (",[19,120,121],{},".md",") formatida saqlanadi va SQL-like so'rovlar (",[19,124,125],{},"queryCollection",") bilan olinadi.",[35,128,129,132],{},[38,130,131],{},"Glassmorphism va Modern UI:"," Tailwind CSS v4 yordamida yorug'lik va qorong'i (Light\u002FDark) rejim, hover effektlar va spotlight animatsiyalar.",[35,134,135,138],{},[38,136,137],{},"Lite Youtube Integratsiyasi:"," Videolar sahifa yuklanishini sekinlashtirmasligi uchun rasmlar orqali ko'rsatiladi va bosilganda faqat bitta aktiv video ishga tushadi.",[27,140,142],{"id":141},"arxitektura","Arxitektura",[16,144,145,146,149,150,153],{},"Loyiha Vue 3 Composition API va TypeScript bilan qat'iy tiplash (",[19,147,148],{},"strict typing",") asosida yozilgan. Barcha komponentlar va sahifalar SEO qoidalariga to'liq javob beradi (",[19,151,152],{},"useSeoMeta",").",{"title":69,"searchDepth":70,"depth":71,"links":155},[156],{"id":13,"depth":70,"text":14,"children":157},[158,159],{"id":29,"depth":71,"text":30},{"id":141,"depth":71,"text":142},"Nuxt 4, Nuxt Content va Tailwind CSS v4 bilan qurilgan ikki tilli portfolio, blog va vlog. To'liq statik, server talab qilmaydi.","https:\u002F\u002Fgithub.com\u002Fusername\u002Fportfolio",{},1,"\u002Fuz\u002Fprojects\u002Fportfolio-sayt",{"title":92,"description":160},[167,168,169,170],"Nuxt","Vue","Tailwind CSS","TypeScript","uz\u002Fprojects\u002Fportfolio-sayt","wpAUL4hfySh9BW6Vnb_qoZqjjaWXy64vKnP1UuEb3ms",{"id":174,"title":175,"body":176,"description":229,"extension":77,"featured":78,"github":230,"image":80,"live":80,"meta":231,"navigation":78,"order":70,"path":232,"seo":233,"stack":234,"stem":238,"__hash__":239},"projects_uz\u002Fuz\u002Fprojects\u002Ftask-api.md","Task API",{"type":8,"value":177,"toc":224},[178,180,187,189],[11,179,14],{"id":13},[16,181,182,183,186],{},"Task API — bu korxona va jamoalar uchun vazifalarni samarali boshqarish imkonini beruvchi kuchli backend xizmatidir. Loyiha mikroxizmatlar (",[19,184,185],{},"microservices",") arxitekturasi va yuqori xavfsizlik standartlari asosida ishlab chiqilgan.",[27,188,30],{"id":29},[32,190,191,197,203,209,218],{},[35,192,193,196],{},[38,194,195],{},"Xavfsiz autentifikatsiya:"," JSON Web Token (JWT) va Refresh Token mexanizmlari.",[35,198,199,202],{},[38,200,201],{},"Role-based Access Control (RBAC):"," Admin, Manager va User rollari bo'yicha ruxsatlarni boshqarish.",[35,204,205,208],{},[38,206,207],{},"PostgreSQL & Prisma\u002FTypeORM:"," Ma'lumotlar bazasi bilan tezkor va ishonchli aloqa, relatsion bog'lanishlar.",[35,210,211,51,214,217],{},[38,212,213],{},"Docker Konteynerlashtirish:",[19,215,216],{},"docker-compose"," orqali butun tizimni va bazani bir buyruq bilan ishga tushirish imkoniyati.",[35,219,220,223],{},[38,221,222],{},"Swagger \u002F OpenAPI 3.0:"," Barcha endpoinlar uchun interaktiv hujjatlar.",{"title":69,"searchDepth":70,"depth":71,"links":225},[226],{"id":13,"depth":70,"text":14,"children":227},[228],{"id":29,"depth":71,"text":30},"JWT autentifikatsiya, rate limiting va OpenAPI hujjatlariga ega vazifa boshqaruvi REST API'si. Namuna loyiha — o'z ishingiz bilan almashtiring.","https:\u002F\u002Fgithub.com\u002Fusername\u002Ftask-api",{},"\u002Fuz\u002Fprojects\u002Ftask-api",{"title":175,"description":229},[235,236,237],"Node.js","PostgreSQL","Docker","uz\u002Fprojects\u002Ftask-api","3MlfN-irKcyA2CKGFcqNu113lkNfEGMw5y6QJZLBXKs",[241,349,599,750,929],{"id":242,"title":243,"body":244,"date":337,"description":338,"extension":77,"image":80,"meta":339,"navigation":78,"path":340,"seo":341,"stem":342,"tags":343,"__hash__":348},"blog_uz\u002Fuz\u002Fblog\u002Fmukammal-telegram-post-kodlari-bilan.md","Mukammal Telegram Post: Kod bloklari va konvertor yangilanishi",{"type":8,"value":245,"toc":333},[246,260,264,279,288,326,330],[16,247,248,249,251,252,255,256,259],{},"Oldingi versiyada matn ichidagi ",[19,250,19],{}," (inlayn kod) bloklarimiz ",[19,253,254],{},"__INLINE_BLOCK__"," ko'rinishida ko'rinib qolgandi. Biz buning sababini aniqlab, skriptni to'liq yangiladik (",[19,257,258],{},"b82b2c0",")!",[11,261,263],{"id":262},"xatolik-nimada-edi-va-qanday-tuzatildi","Xatolik nimada edi va qanday tuzatildi?",[16,265,266,267,270,271,274,275,278],{},"Avval skriptimiz kod bloklarini saqlab turish uchun ",[19,268,269],{},"__INLINE_BLOCK_0__"," kabi ostiga chizilgan belgilaridan foydalangan. Biroq Markdown'ning ",[19,272,273],{},"_kursiv_"," qoidasi uni ostidan chizilgan deb o'ylab, ",[19,276,277],{},"_\u003Ci>INLINE_BLOCK_0\u003C\u002Fi>_"," shakliga aylantirgan. Shu sabab tiklovchi funksiya uni tanimagan!",[16,280,281,282,287],{},"Endi biz barcha o'rinbosarlarni ",[38,283,284],{},[19,285,286],{},"@@INLINE_BLOCK_0@@"," formatiga o'tkazdik. Natijada endilikda:",[32,289,290,301,315],{},[35,291,292,293,296,297,300],{},"Dasturlash buyruqlari, masalan ",[19,294,295],{},"npm run generate"," yoki ",[19,298,299],{},"git push origin main"," juda toza shaklda ko'rinadi.",[35,302,303,304,307,308,307,311,314],{},"Fayl nomlari (",[19,305,306],{},"package.json",", ",[19,309,310],{},"nuxt.config.ts",[19,312,313],{},"notify-telegram.mjs",") o'zining maxsus shahrida porlaydi.",[35,316,317,318,321,322,325],{},"Qalin (",[19,319,320],{},"**bold**",") va kursiv (",[19,323,324],{},"*italic*",") matnlar kodlar bilan chalg'imasdan chiroyli formatlanadi.",[11,327,329],{"id":328},"xulosa","Xulosa",[16,331,332],{},"Yaxshi dasturchi xato qilmaydigan emas, balki xatoni 5 daqiqada topib, uni butunlay yo'q qilib tashlaydigan mutaxassisdir! Barcha avtomatizatsiya tizimi endi soat kabi bexato ishlaydi. 🚀🌟",{"title":69,"searchDepth":70,"depth":71,"links":334},[335,336],{"id":262,"depth":70,"text":263},{"id":328,"depth":70,"text":329},"2026-07-15","Avtomatizatsiya skriptimiz matn ichidagi kod bloklari (code snippets) va kursiv yozuvlarni 100% aniqlikda Telegram'ning nativ formatiga o'tkazmoqda.",{},"\u002Fuz\u002Fblog\u002Fmukammal-telegram-post-kodlari-bilan",{"title":243,"description":338},"uz\u002Fblog\u002Fmukammal-telegram-post-kodlari-bilan",[344,345,346,347],"telegram","javascript","clean-code","update","Ki5R1axjw6eE6quxLtA6L80tEPWivdHmFy7dlINX-GY",{"id":350,"title":351,"body":352,"date":588,"description":589,"extension":77,"image":80,"meta":590,"navigation":78,"path":591,"seo":592,"stem":593,"tags":594,"__hash__":598},"blog_uz\u002Fuz\u002Fblog\u002Fnuxt-content-statik-blog.md","Nuxt Content v3 bilan statik blog qurish",{"type":8,"value":353,"toc":582},[354,361,365,372,465,472,476,479,553,557,560,568,571,575,578],[16,355,356,357,360],{},"Bu sayt — to'liq statik Nuxt ilovasi. Har bir post repo ichidagi Markdown fayl, ",[19,358,359],{},"nuxt generate"," esa hammasini oddiy HTML'ga aylantiradi. Sozlamaning qiziqarli qismlari quyida.",[11,362,364],{"id":363},"kolleksiyalar-tipizatsiyalangan","Kolleksiyalar tipizatsiyalangan",[16,366,367,368,371],{},"Nuxt Content v3 eski fayl-asosidagi so'rovlarni ",[38,369,370],{},"kolleksiyalar"," bilan almashtirdi — sxema e'lon qilasiz va frontmatter build vaqtida tekshiriladi:",[373,374,378],"pre",{"className":375,"code":376,"language":377,"meta":69,"style":69},"language-ts shiki shiki-themes github-light github-dark","const blogSchema = z.object({\n  title: z.string(),\n  description: z.string(),\n  date: z.string(),\n  tags: z.array(z.string()).default([]),\n})\n","ts",[19,379,380,406,417,426,436,459],{"__ignoreMap":69},[381,382,384,388,392,395,399,403],"span",{"class":383,"line":163},"line",[381,385,387],{"class":386},"szBVR","const",[381,389,391],{"class":390},"sj4cs"," blogSchema",[381,393,394],{"class":386}," =",[381,396,398],{"class":397},"sVt8B"," z.",[381,400,402],{"class":401},"sScJk","object",[381,404,405],{"class":397},"({\n",[381,407,408,411,414],{"class":383,"line":70},[381,409,410],{"class":397},"  title: z.",[381,412,413],{"class":401},"string",[381,415,416],{"class":397},"(),\n",[381,418,419,422,424],{"class":383,"line":71},[381,420,421],{"class":397},"  description: z.",[381,423,413],{"class":401},[381,425,416],{"class":397},[381,427,429,432,434],{"class":383,"line":428},4,[381,430,431],{"class":397},"  date: z.",[381,433,413],{"class":401},[381,435,416],{"class":397},[381,437,439,442,445,448,450,453,456],{"class":383,"line":438},5,[381,440,441],{"class":397},"  tags: z.",[381,443,444],{"class":401},"array",[381,446,447],{"class":397},"(z.",[381,449,413],{"class":401},[381,451,452],{"class":397},"()).",[381,454,455],{"class":401},"default",[381,457,458],{"class":397},"([]),\n",[381,460,462],{"class":383,"line":461},6,[381,463,464],{"class":397},"})\n",[16,466,467,468,471],{},"Endi frontmatter'dagi xatolar jimgina ",[19,469,470],{},"undefined"," ko'rsatish o'rniga build'ni to'xtatadi. Bu v2'ga nisbatan eng katta yutuq.",[11,473,475],{"id":474},"sorovlar-sqlga-oxshaydi-chunki-ular-sql","So'rovlar SQL'ga o'xshaydi, chunki ular SQL",[16,477,478],{},"Ichkarida kontent SQLite'da saqlanadi. So'rov API'si SQL'ga kompilyatsiya bo'ladi:",[373,480,482],{"className":375,"code":481,"language":377,"meta":69,"style":69},"const posts = await queryCollection('blog_uz')\n  .order('date', 'DESC')\n  .limit(3)\n  .all()\n",[19,483,484,509,529,543],{"__ignoreMap":69},[381,485,486,488,491,493,496,499,502,506],{"class":383,"line":163},[381,487,387],{"class":386},[381,489,490],{"class":390}," posts",[381,492,394],{"class":386},[381,494,495],{"class":386}," await",[381,497,498],{"class":401}," queryCollection",[381,500,501],{"class":397},"(",[381,503,505],{"class":504},"sZZnC","'blog_uz'",[381,507,508],{"class":397},")\n",[381,510,511,514,517,519,522,524,527],{"class":383,"line":70},[381,512,513],{"class":397},"  .",[381,515,516],{"class":401},"order",[381,518,501],{"class":397},[381,520,521],{"class":504},"'date'",[381,523,307],{"class":397},[381,525,526],{"class":504},"'DESC'",[381,528,508],{"class":397},[381,530,531,533,536,538,541],{"class":383,"line":71},[381,532,513],{"class":397},[381,534,535],{"class":401},"limit",[381,537,501],{"class":397},[381,539,540],{"class":390},"3",[381,542,508],{"class":397},[381,544,545,547,550],{"class":383,"line":428},[381,546,513],{"class":397},[381,548,549],{"class":401},"all",[381,551,552],{"class":397},"()\n",[11,554,556],{"id":555},"ikki-til-ikki-kolleksiya","Ikki til — ikki kolleksiya",[16,558,559],{},"Ikki tilli sayt uchun har locale'ga alohida kolleksiya eng sodda yechim:",[373,561,566],{"className":562,"code":564,"language":565},[563],"language-text","content\u002F\n  en\u002Fblog\u002F    → blog_en kolleksiyasi, \u002Fblog manzilida\n  uz\u002Fblog\u002F    → blog_uz kolleksiyasi, \u002Fuz\u002Fblog manzilida\n","text",[19,567,564],{"__ignoreMap":69},[16,569,570],{},"Kichik composable aktiv til bo'yicha to'g'ri kolleksiyani tanlaydi — qolgan kod i18n haqida umuman o'ylamaydi.",[11,572,574],{"id":573},"natija","Natija",[16,576,577],{},"Server yo'q, production'da database yo'q, CMS obunasi yo'q. Faqat Markdown fayllar, git tarixi va istalgan CDN tarqata oladigan statik HTML.",[579,580,581],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":69,"searchDepth":70,"depth":71,"links":583},[584,585,586,587],{"id":363,"depth":70,"text":364},{"id":474,"depth":70,"text":475},{"id":555,"depth":70,"text":556},{"id":573,"depth":70,"text":574},"2026-07-14","Bu sayt qanday ishlaydi: Markdown kolleksiyalar, SQLite asosidagi so'rovlar va Nuxt bilan to'liq statik generatsiya.",{},"\u002Fuz\u002Fblog\u002Fnuxt-content-statik-blog",{"title":351,"description":589},"uz\u002Fblog\u002Fnuxt-content-statik-blog",[595,596,597],"nuxt","vue","vositalar","Xqtf1iyEgOAMKdze54Rf_tbYBLdy5Vt1Oj3D1aKLNo0",{"id":600,"title":601,"body":602,"date":740,"description":741,"extension":77,"image":80,"meta":742,"navigation":78,"path":743,"seo":744,"stem":745,"tags":746,"__hash__":749},"blog_uz\u002Fuz\u002Fblog\u002Fsalom-dunyo.md","Salom, dunyo — nega blog boshlayapman",{"type":8,"value":603,"toc":735},[604,612,616,619,640,644,647,722,726,729,732],[16,605,606,607,611],{},"Har bir dasturchi ertami-kechmi bir xil maslahatni eshitadi: ",[608,609,610],"em",{},"ochiq yozing",". Mana men ham nihoyat shu maslahatga amal qilyapman.",[11,613,615],{"id":614},"bu-yerda-nimalar-boladi","Bu yerda nimalar bo'ladi",[16,617,618],{},"Uch narsa haqida yozishni rejalashtirganman:",[620,621,622,628,634],"ol",{},[35,623,624,627],{},[38,625,626],{},"Muhandislik yozuvlari"," — ishda duch kelgan muammolar va ularning yechimlari",[35,629,630,633],{},[38,631,632],{},"Vositalar"," — haqiqatan vaqt tejaydigan editor, CLI va workflow'lar",[35,635,636,639],{},[38,637,638],{},"Karyera"," — dasturchi sifatida o'sish haqida o'rganganlarim",[11,641,643],{"id":642},"umuman-nega-yozish-kerak","Umuman, nega yozish kerak?",[16,645,646],{},"Yozish aniqlikka majbur qiladi. Agar yechimni bir necha paragrafda tushuntira olmasam, demak uni hali to'liq tushunmaganman. Blog — bu ochiq daftar: olti oydan keyin bu yozuvlar eng kerak bo'ladigan odam — bu menman.",[373,648,650],{"className":375,"code":649,"language":377,"meta":69,"style":69},"\u002F\u002F Butun reja, kod ko'rinishida:\nconst blog = {\n  cadence: \"aytishga arziydigan narsa bo'lganda\",\n  language: ['en', 'uz'],\n  topics: ['muhandislik', 'vositalar', 'karyera'],\n}\n",[19,651,652,658,670,681,697,717],{"__ignoreMap":69},[381,653,654],{"class":383,"line":163},[381,655,657],{"class":656},"sJ8bj","\u002F\u002F Butun reja, kod ko'rinishida:\n",[381,659,660,662,665,667],{"class":383,"line":70},[381,661,387],{"class":386},[381,663,664],{"class":390}," blog",[381,666,394],{"class":386},[381,668,669],{"class":397}," {\n",[381,671,672,675,678],{"class":383,"line":71},[381,673,674],{"class":397},"  cadence: ",[381,676,677],{"class":504},"\"aytishga arziydigan narsa bo'lganda\"",[381,679,680],{"class":397},",\n",[381,682,683,686,689,691,694],{"class":383,"line":428},[381,684,685],{"class":397},"  language: [",[381,687,688],{"class":504},"'en'",[381,690,307],{"class":397},[381,692,693],{"class":504},"'uz'",[381,695,696],{"class":397},"],\n",[381,698,699,702,705,707,710,712,715],{"class":383,"line":438},[381,700,701],{"class":397},"  topics: [",[381,703,704],{"class":504},"'muhandislik'",[381,706,307],{"class":397},[381,708,709],{"class":504},"'vositalar'",[381,711,307],{"class":397},[381,713,714],{"class":504},"'karyera'",[381,716,696],{"class":397},[381,718,719],{"class":383,"line":461},[381,720,721],{"class":397},"}\n",[11,723,725],{"id":724},"ikki-til-haqida","Ikki til haqida",[16,727,728],{},"Ingliz va o'zbek tillarida yozaman. Har bir post tarjima qilinmaydi — har til o'z auditoriyasiga mos postlarni oladi.",[16,730,731],{},"Keyingi postda ko'rishguncha.",[579,733,734],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":69,"searchDepth":70,"depth":71,"links":736},[737,738,739],{"id":614,"depth":70,"text":615},{"id":642,"depth":70,"text":643},{"id":724,"depth":70,"text":725},"2026-07-10","An'anaviy birinchi post: bu blog nima uchun, nimalar haqida yozaman va nega ochiq yozish muhandis uchun muhim.",{},"\u002Fuz\u002Fblog\u002Fsalom-dunyo",{"title":601,"description":741},"uz\u002Fblog\u002Fsalom-dunyo",[747,748],"meta","karyera","lSk9jKeGDH9nhDv5g0y7-YC-jB_cBpx31WrmdHjxeh4",{"id":751,"title":752,"body":753,"date":337,"description":896,"extension":77,"image":80,"meta":921,"navigation":78,"path":922,"seo":923,"stem":924,"tags":925,"__hash__":928},"blog_uz\u002Fuz\u002Fblog\u002Fsaytdan-telegramga-avtomatizatsiya.md","Sayt va Telegram o'rtasida 100% server-siz avtomatizatsiya",{"type":8,"value":754,"toc":915},[755,762,776,780,791,823,827,872,876,879,907,909,912],[16,756,757,758,761],{},"Dasturchi sifatida shaxsiy blog yuritganda, eng katta vaqt oladigan jarayon — yozilgan maqolani turli tarmoqlarga, xususan ",[38,759,760],{},"Telegram kanalga"," qo'lda yuborib chiqishdir.",[16,763,764,765,768,769,771,772,775],{},"Biz bu jarayonni to'liq avtomatlashtirdik! Endi saytga yangi ",[38,766,767],{},"Markdown"," (",[19,770,121],{},") fayl qo'shilib, ",[19,773,774],{},"git push"," qilinganda, birorta alohida server yoki to'lovli servis (Make\u002FIFTTT) ishlatmasdan turib, xabar to'g'ridan-to'g'ri Telegram kanalga yo'l oladi.",[11,777,779],{"id":778},"qanday-qilib-server-yoq-bolishi-mumkin","Qanday qilib server yo'q bo'lishi mumkin?",[16,781,782,783,786,787,790],{},"Ko'pchilik Telegram bot ishlatish uchun 24\u002F7 ishlab turadigan VPS (yoki Node.js server) kerak deb o'ylaydi. Lekin agar sizning saytingiz ",[38,784,785],{},"GitHub"," ustida turgan bo'lsa, sizda allaqachon super-kuchli qurol bor — ",[38,788,789],{},"GitHub Actions","!",[373,792,796],{"className":793,"code":794,"language":795,"meta":69,"style":69},"language-mermaid shiki shiki-themes github-light github-dark","graph LR\n    A[Yangi post.md va push] --> B[GitHub Repository]\n    B --> C[Cloudflare Pages - Sayt yangilanadi]\n    B --> D[GitHub Actions - Bot ishga tushadi]\n    D --> E[Telegram Kanalga E'lon yuboriladi ✈️]\n","mermaid",[19,797,798,803,808,813,818],{"__ignoreMap":69},[381,799,800],{"class":383,"line":163},[381,801,802],{},"graph LR\n",[381,804,805],{"class":383,"line":70},[381,806,807],{},"    A[Yangi post.md va push] --> B[GitHub Repository]\n",[381,809,810],{"class":383,"line":71},[381,811,812],{},"    B --> C[Cloudflare Pages - Sayt yangilanadi]\n",[381,814,815],{"class":383,"line":428},[381,816,817],{},"    B --> D[GitHub Actions - Bot ishga tushadi]\n",[381,819,820],{"class":383,"line":438},[381,821,822],{},"    D --> E[Telegram Kanalga E'lon yuboriladi ✈️]\n",[11,824,826],{"id":825},"jarayon-qanday-ishlaydi","Jarayon qanday ishlaydi?",[620,828,829,842,862],{},[35,830,831,51,834,837,838,841],{},[38,832,833],{},"Kommitni tekshirish:",[19,835,836],{},"git push main"," bo'lgach, GitHub Actions oxirgi kommitda qaysi yangi fayllar (",[19,839,840],{},"content\u002Fuz\u002Fblog\u002F*.md",") qo'shilganini aniqlaydi.",[35,843,844,847,848,307,851,307,854,857,858,861],{},[38,845,846],{},"Frontmatter tahlili:"," Yangi faylning ",[19,849,850],{},"title",[19,852,853],{},"description",[19,855,856],{},"tags"," qismlarini hamda uning qoralama (",[19,859,860],{},"draft: true",") emasligini tekshiradi.",[35,863,864,867,868,871],{},[38,865,866],{},"Telegram API:"," Yig'ilgan ma'lumotlarni chiroyli HTML matn shakliga keltirib, ",[19,869,870],{},"api.telegram.org\u002Fbot\u003CTOKEN>\u002FsendMessage"," orqali to'g'ridan-to'g'ri kanalga yo'naltiradi.",[11,873,875],{"id":874},"telegram-bildirishnomasi-namunasi","Telegram bildirishnomasi namunasi",[16,877,878],{},"Kanalda u quyidagi interaktiv va zamonaviy ko'rinishda paydo bo'ladi:",[880,881,882,888,897],"blockquote",{},[16,883,884,885],{},"🚀 ",[38,886,887],{},"Yangi maqola e'lon qilindi!",[16,889,890,891,893,894],{},"📖 ",[38,892,752],{},"\n📝 ",[608,895,896],{},"Blogga yozilgan maqola qanday qilib serverlarsiz, faqat GitHub Actions yordamida avtomatik Telegram kanalga e'lon qilinadi?",[16,898,899,900],{},"🏷 #telegram #github_actions #avtomatizatsiya #nuxt\n🔗 ",[901,902,906],"a",{"href":903,"rel":904},"https:\u002F\u002Fizzatjon.dev\u002Fuz\u002Fblog\u002Fsaytdan-telegramga-avtomatizatsiya",[905],"nofollow","O'qish uchun bosing →",[11,908,329],{"id":328},[16,910,911],{},"Zamonaviy JAMstack va Serverless arxitekturasi tufayli biz ortiqcha xarajatlarsiz maksimal samaradorlikka erishdik. Endi bor e'tibor faqat sifatli kontent yozishga qaratiladi!",[579,913,914],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":69,"searchDepth":70,"depth":71,"links":916},[917,918,919,920],{"id":778,"depth":70,"text":779},{"id":825,"depth":70,"text":826},{"id":874,"depth":70,"text":875},{"id":328,"depth":70,"text":329},{},"\u002Fuz\u002Fblog\u002Fsaytdan-telegramga-avtomatizatsiya",{"title":752,"description":896},"uz\u002Fblog\u002Fsaytdan-telegramga-avtomatizatsiya",[344,926,927,595],"github-actions","avtomatizatsiya","8oO0PDPmT7mIkQ9LKkMgcYI_h74nuNpev5UIZ6TK-5M",{"id":930,"title":931,"body":932,"date":337,"description":1041,"extension":77,"image":80,"meta":1042,"navigation":78,"path":1043,"seo":1044,"stem":1045,"tags":1046,"__hash__":1049},"blog_uz\u002Fuz\u002Fblog\u002Ftelegramga-toliq-post.md","Telegram kanalga to'liq maqola ko'rinishida avtomatik post joylash",{"type":8,"value":933,"toc":1037},[934,945,949,960,1022,1026,1029,1034],[16,935,936,937,940,941,944],{},"Shaxsiy blogimiz avtomatizatsiyasi yangi va eng yuqori darajaga ko'tarildi! Avvalgi tizimimizda kanalga faqat qisqa bildirishnoma va sarlavha borgan bo'lsa, endilikda ",[38,938,939],{},"butun maqolaning o'zi"," to'g'ridan-to'g'ri Telegram kanalga (",[19,942,943],{},"@izzatjon_qodirov_blog",") joylanadi.",[11,946,948],{"id":947},"nima-ozgarishlar-qilindi","Nima o'zgarishlar qilindi?",[16,950,951,952,955,956,959],{},"Biz ",[19,953,954],{},"scripts\u002Fnotify-telegram.mjs"," ichiga maxsus ",[38,957,958],{},"Markdown to Telegram HTML"," konvertorini yozib chizdik. U quyidagi imkoniyatlarga ega:",[32,961,962,980,997,1009],{},[35,963,964,967,968,971,972,975,976,979],{},[38,965,966],{},"Sarlavhalar:"," Markdown'dagi ",[19,969,970],{},"##"," belgilar avtomatik ",[19,973,974],{},"▪️ Sarlavha"," ko'rinishiga o'tadi va qalin (",[19,977,978],{},"\u003Cb>",") qilib yoritiladi.",[35,981,982,985,986,989,990,307,993,996],{},[38,983,984],{},"Kod bloklari:"," Matn ichidagi dasturlash kodlari maxsus ",[19,987,988],{},"\u003Cpre>\u003Ccode>"," teglari bilan o'raladi va HTML belgilar (",[19,991,992],{},"\u003C",[19,994,995],{},">",") xavfsiz holatga keltiriladi.",[35,998,999,51,1002,1004,1005,1008],{},[38,1000,1001],{},"Iqtiboslar:",[19,1003,995],{}," bilan boshlanuvchi satrlar Telegram'ning rasmiy ",[19,1006,1007],{},"\u003Cblockquote>"," elementida chiroyli ko'rinish oladi.",[35,1010,1011,1014,1015,307,1018,1021],{},[38,1012,1013],{},"Ro'yxat va teglar:"," Barcha teglar (",[19,1016,1017],{},"#telegram",[19,1019,1020],{},"#markdown",") avtomatik ajratib ko'rsatiladi.",[11,1023,1025],{"id":1024},"nega-bu-juda-qulay","Nega bu juda qulay?",[16,1027,1028],{},"O'quvchilar endi kichik maqolalarni o'qish uchun saytga o'tishga majbur bo'lishmaydi — hamma matnni Telegram'ning o'zida qulay va tez o'qib chiqishadi! Agar maqola juda uzun bo'lib ketsa (3,900 belgidan oshsa), tizim aqlli tarzda abzas oxirida qisqartirib, davomini saytda o'qish uchun silka qo'shib beradi.",[880,1030,1031],{},[16,1032,1033],{},"Hozirda siz o'qib turgan ushbu post aynan shu avtomatizatsiya skripti orqali hech qanday inson aralashuvisiz, to'g'ridan-to'g'ri GitHub Actions tomonidan kanalga joylandi!",[16,1035,1036],{},"Dasturlash va avtomatizatsiya shunchaki vaqtni tejabgina qolmay, ijodga bo'lgan ishtiyoqni ham ikki karra oshiradi. E'tiboringiz uchun rahmat!",{"title":69,"searchDepth":70,"depth":71,"links":1038},[1039,1040],{"id":947,"depth":70,"text":948},{"id":1024,"depth":70,"text":1025},"Endi blogga yozilgan maqola faqat silka emas, balki to'liq va o'qishga qulay tayyor post sifatida Telegram kanalga boradi.",{},"\u002Fuz\u002Fblog\u002Ftelegramga-toliq-post",{"title":931,"description":1041},"uz\u002Fblog\u002Ftelegramga-toliq-post",[344,1047,927,1048],"markdown","full-post","kmMtoKtlZxfwiPvhkJlBbgHdH6OlzcXX9mah708bd-g",{"id":1051,"title":1052,"body":1053,"date":1109,"description":1110,"extension":77,"meta":1111,"navigation":78,"path":1112,"seo":1113,"stem":1114,"tags":1115,"youtubeId":1117,"__hash__":1118},"vlog_uz\u002Fuz\u002Fvlog\u002Fdev-setup.md","2026-yilgi dev setup'im",{"type":8,"value":1054,"toc":1103},[1055,1059,1062,1066,1092,1096],[11,1056,1058],{"id":1057},"video-haqida-batafsil-malumot","Video haqida batafsil ma'lumot",[16,1060,1061],{},"Ushbu videoda men har kuni dasturlash jarayonida ishlatadigan asosiy vositalarim, terminal va editor sozlamalarim bilan bo'lishaman.",[27,1063,1065],{"id":1064},"dasturiy-taminot-va-sozlamalar","Dasturiy ta'minot va sozlamalar",[32,1067,1068,1074,1080,1086],{},[35,1069,1070,1073],{},[38,1071,1072],{},"Editor:"," VS Code va Neovim miksi (maxsus tezkor klavishlar va temalar).",[35,1075,1076,1079],{},[38,1077,1078],{},"Terminal:"," Ghostty \u002F Alacritty + Tmux va Zsh (Powerlevel10k).",[35,1081,1082,1085],{},[38,1083,1084],{},"Shirift (Font):"," JetBrains Mono va Nerd Fonts interfeys piktogrammalari bilan.",[35,1087,1088,1091],{},[38,1089,1090],{},"Mavzu (Theme):"," Tokyo Night & Catppuccin Dark.",[27,1093,1095],{"id":1094},"foydali-havolalar-va-dotfiles","Foydali havolalar va Dotfiles",[16,1097,1098,1099,1102],{},"Barcha konfiguratsiya fayllarim va ",[19,1100,1101],{},"dotfiles"," repozitoriyamni GitHub orqali yuklab olishingiz va o'zingizning tizimingizga oson o'rnatishingiz mumkin.",{"title":69,"searchDepth":70,"depth":71,"links":1104},[1105],{"id":1057,"depth":70,"text":1058,"children":1106},[1107,1108],{"id":1064,"depth":71,"text":1065},{"id":1094,"depth":71,"text":1095},"2026-07-08","Har kuni ishlatadigan editor, terminal, dotfiles va qurilmalarim. Namuna — youtubeId'ni haqiqiy videoga almashtiring.",{},"\u002Fuz\u002Fvlog\u002Fdev-setup",{"title":1052,"description":1110},"uz\u002Fvlog\u002Fdev-setup",[1116,597],"setup","dQw4w9WgXcQ","6qnDyE8zNHfw39a7bJLI3qkgOyHoTFY2XYIofPvWbog",1784301281655]