.NET Stuff
101 subscribers
6 photos
3 videos
10 links
Ushbu kanalda .NETga oid yangiliklar, darslar va master klasslar berib boramiz.
Download Telegram
πŸŽ₯ Distributed Cache (Redis) video darslik

β€” Redis cache’ni qo’llash
β€” Docker-compose orqali app’ni bir necha nusxasini ishga tushirish


Kodni manabu repoda: https://github.com/wahid-d/cache

πŸ’Œ .NETchi tanishlar va yaqinlaringizga ulashing!

Kontent yoqayotgan bo’lsa izohlarda keyingi video nima haqida bo’lishini qoldiring.

@dotnetstuff
πŸ‘6
Yuqoridagi kodga baxo bering.

Uni qanday improve qilsa bo'ladi?

P.S. Organization nomli entity mavjudmasligi sababli query yozishga majbursiz.

Image updated
πŸ‘10
.NET Stuff
Yuqoridagi kodga baxo bering. Uni qanday improve qilsa bo'ladi? P.S. Organization nomli entity mavjudmasligi sababli query yozishga majbursiz. Image updated
Yuqoridagi kodga juda ko'p yaxshi fikrlar qoldirildi.

Lekin men kutgan (yetkazib berolmagan) nuqta bu β€” .FromSqlRaw funksiyasi ishlatilganda `SQL Injection` havfi bor.

Shuning uchun yoki SqlParameter klasi orqali parametrlarni uzatish kerak. Yoki .FromSqlInterpolated funksiyasi ishlatish kerak.

Read here

@dotnetstuff
πŸ‘11πŸ‘Ž1
Yaqin fursatlarda .NET'da bir ajoyib BOT qurilishini stream qilmoqchiman. Streamga qo'shiling. Suhbatlashib birgalashib quramiz!
πŸ‘15πŸ†’5🌚1
Live stream started
Ushbu koddagi xatoni toping.

Koddagi meni shu darajada asabiylashtiradiki, buni yozganga meni ko'nglimda joy yo'q!
πŸ‘2
.NET Stuff
Ushbu koddagi xatoni toping. Koddagi meni shu darajada asabiylashtiradiki, buni yozganga meni ko'nglimda joy yo'q!
Yuqoridagi kodni xatosi hech qanday sintaks yoki logik xato emas.

Gap shundaki, method ichida try/catch bor ammo u exceptionni yutib yuboradi.
Tasavvur qiling siz shu methodni chaqirib false natija oldingiz. Endi siz fayl mavjud bo'lmagani uchun o'chirilmagandurda deb 200 (OK) qaytarasizmi yoki databasega bog'liq muammo bo'ldi deb 500(server error) qaytarasizmi? πŸ€”. Ishoning buning farqi yer 🌎 bilan osmoncha ☁️.

Buni nomini Silent Error deyishadi va bu productionda disasterlarga sabab boladi.


#bundayqilmang
πŸ‘9
MassTransit, StateMachines, Hangfire, AzureFunctions, RabbitMQ kabi texnologiyalarni ishlatib ko'rganlar bormi?

O'rganishga qiziqadiganlarchi?
πŸ”₯9πŸ‘2
Hangfire + DistributedLock + DistributedCache

Kunda bir marta Business team uchun 24 soat ichida bo'lgan yangi transaksiyalarni analitikasini emailga jo'natib beradigan background service ustida ishlayotgan edim. Background Job uchun Hangfire Server ishlatyapman. Lekin yechimim optimalligi ustida uzoq o'ylaganim sari muammolar ko'payib boryapti.

1. Hangfire Service agar job fail bo'lsa (database, email client yoki shunga o'xshash exception tufayli) uni qayta navgatga qo'yadi va qayta ishga tushiradi. Buni o'ziga yarasha maummolari bor. Masalan, email jo'natib bo'lgandan keyin fail bo'lgan bo'lsa keyingi navbatda yana email yuboradi. Shuning uchun Hangfire maintainerlari re-entrancy degan maummo hal qilishni qattiq maslahat beradi. Ya'ni kodga kutilmaganda qayta kirib qolinsa nima qilish kerak.

Buni oldini olish uchun avval MemoryCachedan foydalandim. MemoryCache'ga Job boshlanganda yozib qo'yaman boshlanish vaqtini va unga expiration time beraman. Lekin yana muammoga duch keldim. MemoryCache thread-safe emas. Ya'ni Hangfire server bir nechta processlarni tengidan ishga tushirib run qiladi. Agar Job bir nechta processda tengidan ishga tushsa MemoryCache biz kutgan havfsizlikni berolmaydi.

2. DistributedLock ishlatish fikri keldi. DistributedLock sizga ma'lum resursni birdan ortiq protses ishlata olmasligini ta'minlab beradi. U orqali 100% ga bir vaqtda Jobning 2 ta nusxasi ishga tushmasligini taminlasa bo'ladi. Lekin bu ham meni muammolarimga to'liq yechim emas. Men Jobni 24 soatda bir marta aynan UTC 23:00 da ishga tushishini taminlashim kerak. Lock esa bunga mo'ljallanmagan. U ayni vaqtda 2 ta job ishga tushmasligini ta'minlaydi holos.

3. DistributedLock + DistributedCache yechimiga to'xtaldim. Bunda DistributedLock orqali bir vaqtni faqat bitta job ishlashini ta'minlayman. DistributedCache esa shu 24 soat ichida Job ishga tushganmi yo'qligi haqida ma'lumotni saqlab turadi. Masalan, Job ishga tushganda DistributedCache ga "IshgaTushdi=true" deb yozib qo'yaman va AbsoluteExpiration = Next(22:59:59) deb belgilayman. Job keyingi marta ishga tushayotganda DistributedCachedan shu entry bormi yo'qmi tekshiraman. Agar bor bo'lsa, demak bugun email jo'natgan bo'lamiz.


PS: MemoryCache dan DistributedCache ga o'tganimga sabab HangfireServer scale qilamiz, ya'ni bir nechta server nusxasi tengdanigna ishga tushirilishi mumkin. Bunday Scaled holatlar uchun MemoryCache ishlatish kategoricheskiy mumkin emas.
πŸ‘4πŸ€”1
Forwarded from Wahid’s Blog (Wahid Abduhakimov)
DistributedLock va DistributedCache yordamida kechagi muammo RecurringJob(qayta takrorlanuvchi ish)ni tengdaniga birdan ortiq nusxasi ishga tushmasligi va belgilangan vaqtidan avval ishga tushib ketmasligini ta'minladim.

Lekin yana muammo chiqdi 😭
Hangfire Serverda RecurringJoblar CRON Expression yordamida jadvalga qo'yiladi. Masalan, * * * * * * har soniya amalga oshiriladigan ishni anglatuvchi CRON.

Aytaylik ishni boshlanish vaqti 00:00:00 va ish boshlanganda Hangfire CRON expressionga qarab keyingi ishga tushish vaqtini hisoblaydi, ya'ni 00:00:01 keyingi ishga tushish vaqti. Agar ish 5 soniya davom etsa va 00:00:05 ta tugasachi?

Hangfire kutubxonasi o'zi eng ko'pi bilan Minutely (har daqiqalik) ishlarni bajaradi. Men test uchun soniyalik CRON berib ko'rdim va jadval buzildi. Ya'ni ishning navbati o'ta tezligidan bittasi tugamay keyingisi boshlanib ketyapti.

O'zi aslida bir daqiqadan kam vaqtda jadval qo'yilgan ishlar mantiqsiz manimcha.

Sog' bo'lasla βœ‹
πŸ‘3
Forwarded from MDC Uzbekistan
Github actions dan foydalanib CI/CD qilish

Do
'stlar, avvalgi mavzularimizda Windows server bilan to'g'ridan to'g'ri ishlab, .NET ilovalarimizni deploy qilishni ko'rib chiqdik. O'ylaymizki, siz CI/CD haqida eshitgansiz. Masalan, Heroku servislaridan deployment uchun foydalangansiz, esingizda bo'lsa u yerda CI/CD sozlamalari qilingan edi. Ya'ni github/gitlab/azuredevops ga push qilish orqali, loyihamiz avtomatik tarzda build -> test -> deploy -> run bo'lardi. Ushbu mavzuni kengroq o'rganishimiz uchun Abduvohid ustozni mahorat darsimizga taklif qildik.

Barchangizni ushbu mahorat darsida kutib qolamiz. Kirsangiz xursand bo'lamiz, kirmasangiz hafa bo'lish yo'q )

Sana: 5-mart, 20:00

Havola: Zoom

Speaker: Wahid Abduhakimov

#githubactions #deployment #cicd

.NET Uzbekistan Community
βž–βž–βž–βž–βž–βž–βž–βž–βž–βž–
Telegram | Instagram | Youtube
πŸ‘9
.NETdagi qaysi mavzuni yoritib beray?
❀2⚑1πŸ€”1
Unit Test

Unit testlar yuqori sifatli .NET dasturlar yaratishning ajralmas qismi. Unit Test bu dasturni eng kichik komponentlarini ajratib olgan holda ularni to’g’ri ishlashini tekshirish.
Batafsil πŸ‘‰: https://bit.ly/3LJS6cN

Shu kabi teppa-tekin kontentlarni qo'llab quvvatlash uchun comment ✍️ & πŸ’“ like larni ezib yuboringlar!
πŸ‘15πŸ”₯5❀2🐳2
ASPNET CORE Web API Best Practices degan kurs tayyorlamoqchiman. Bir qancha videolardan iborat bo'ladi.

Web API design qilishda yo'lga qo'yiladigan hatoliklar va ularni oldini olish uchun industriya standartlari qanday ekanini o'rgataman. Qiziqqanlar quloq tashlab turinglar 😊
πŸ‘18πŸ”₯7🐳1🍾1
API Design Best Practices degan o'zbekcha video kurs tayyorlayapman.

Unda API dizayn qilishdagi xatolar va eng yaxshi usullarni o'rgataman. Shunday kursga o'zingiz uchun investitsiya qilasizmi?
Anonymous Poll
71%
Ha, sotib olaman
29%
Yo'q, qiziqmayman
πŸŽ„4❀2πŸ‘2
API Design Best Practices kursida nimalarni yoritishimizni hohlaysiz?
πŸ‘2
Forwarded from Wahid Ustoz (only tech.)
This media is not supported in your browser
VIEW IN TELEGRAM
Bir shingil kod πŸ‡

C#
tilida string interpolation qanday ishlaydi?

Kontent yoqsa yaqinlarga ulashib qo'llab yuboringlar!

Youtube | Instagram | TikTok | Telegram
πŸ”₯4πŸ‘2