C#. Nomlanishlar

Dasturlashni o’rganishni boshlagandan keyin biron masalani yechishga qaratilgan dasturlarni qilish mumkin. Lekin kodni to’g’ri yo’l bilan yozish uchun ko’p ko’nikma va bilim talab qilinadi. Ko’pchilik programmistlar xatosiz ishlaydigan kod yoza olishadi lekin uni “yaxshi kod” deb aytish qiyn. “yaxshi kod” – sanat asariga o’xshaydi va u programmistdan ko’proq ko’nikma, mantiqiy fikrlash, YAXSHI USTOZ va albatta tinimsiz o’qib o’rganish talab qiladi. Har bir programmistlar komandasi uchun “yaxshi kod” tushunchasi turlicha bo’lishi mumkin.
Eng avvalo “yaxshi kod”da minimal ishonchlilik, tushunarli, lozim bo’lganda oson qo’shimcha kiritish yoki to’girlash mumkin bo’lishi kerak.
Ixtiyoriy proyekt qilinishida eng kamida quyidagi 3ta prinsipga amal qilinadi:
1. Ekspert baholash — Proyektdagi har bir kod boshqa kishi(senior developer) tamonidan test qilinishi, uning kodlash standartlariga mos kelish yoki kelmasligini aniqlash, qo’yilgan talablarga javob berish yoki bermasligini aniqlash.
2. Arxitektor baholashi – komonda arxitektori proyektdagi asosiy modellarni ko’rib chiqishi lozim
3. Komandadagilarning fikri – proyektdagi kodlarning lozim bo’lgan qismini komondadagilar bilan tahlil qilish, fikr almashinish
Читать дальше

C# dasturlash tilida Serializatsiya va Deserializatsiya

Serializatsiya deganda obyektni baytli streamga o’girish tushiniladi. Asosiy ahamiyati ob’ekt holatini saqlash va kerak bo’lganda uni tiklashdan iborat. Serializatsiya qilingan o’byekt haqidagi ma’lumotlar streamda saqlanadi, bunda faqat o’byekt qiymatlarigina emas ob’yekt tipi, uning versiyasi, nomi haqidagi ma’lumotlar ham saqlanadi. Hosil qilingan stream(oqim) yordamida ob’yekt haqidagi ma’lumotlarni ma’lumotlar bazasida, ixtiyoriy faylda (ikkilik(binnary), xml, yoki boshqa ko’rinishda(custom)) yoki vaqtincha xotirada saqlash mumkin.

Читать дальше

Entity Framework 5 da Generic Repository Pattern

Entity Framework 5 da Generic Repository Patterndan foydalanish
Generic haqida tushuncha:
.Net 2.0 dan boshlab Genericlardan foydalanish imkoniyati qo’shildi. Generic yordamida ixtiyoriy tipda ishlovchi(ixtiyoriy tipga moslashuvchi) metod yoki class yaratish mumkin. Bunda class yoki metod tipi uchun maxsus shablon belgisi — «T» dan foydalaniladi. Kompilyator har bir tipga mos shu tipdagi metod yoki classni generatsiya qiladi. Generic dan foydalanish uchun “using” bo’limiga using System.Collections.Generic; ni qo’shish lozim.
Читать дальше

C# va assembler

Bo’sh vaqtlarimda boshqotirma sifatida quyi darajali dasturlash bilan qiziq turganim uchun doim boshqa tillarga assemblerda yozilgan kodlarni tiqishtirib yuraman. Qilmoqchi bo’lgan ishimni to’iq assemblerda yozib qo’ya qolay desam unda boshqotirma emas boshog’riqqa aylanib ketib qolishidan ko’ra, shu usul ma’qulroq.
Aslida .NET platformada CLI uchun o’zini “rodnoy” assembleri bor albatta. Buni IL (Oraliq til) deyiladi. .NET platformadagi ko’p tillar ushbu tilga kompilyasiya qilinadi va JIT kompilyator tomonidan bajariladi. Bunda yozilgan kod .NET dagi yuqori darajali tillardan biroz tezroq ishlaydi. Sababi kompilyasiya jarayonida optimizasiyani dastur odamchalik eplolmasligida albatta. Hullas hozir bizni IL qiziqtirmaydi, maqsad faqat “toza” assembler.
Читать дальше

C# da json parser!

Har bir dasturchi o’z amaliyoti davomida REST(Representational State Transfer) va SOAP(Simple Object Access Protocol) api serveslari bilan ishlashga tog’ri keladi.
REST va SOAP api servislariga kelaydigan bo’lsak SOAP bu ma’lumotlarni xml ko’rinishda yuboradi. REST esa 3 xil ko’rinishda html, xml, json. O’zimning amalyotim davomida OpenStreetMap bilan ishlashga tog’ri kelgan. Men undan qidiruv uchun foydalangandim:
http://nominatim.openstreetmap.org/search/tashkent?format=json

Hozirgi maqolamizda esa C# da json bilan ishlashning eng oddiy yo’lini ko’rib chiqamiz va kelgusida REST bilan ishlashga bir qadam tashlaymiz.
Читать дальше

Bu qanday ishlaydi: Kompilyator (1-qism)

OS yoki kompilyator yaratishni hech bo'lmaganda bir marta o'ylab ko'rmagan dasturchi dasturchi emas degandi bir tanishim. Bu gapda jon bor, chunki OS va kompilyatorlar murakkab dasturlar sirasiga kiradi. Kompilyator haqida o'zim bilmagan holda 15 yil oldin o'ylashni boshlagandim. O'shanda maktabda Pravetz-8 kompyuterida o'tirib Basic dagi kodni qanday qilib tez ishlatish, assemblerga o'girish mumkinmikan deb bosh ham qotirgandim (Ma'lumot: Pravetz-8 kompyuteri O'zbekiston-Bolgariya hamkorligida ishlab chiqarilgan, ~4MHz chastotali adashmasam, 6502 mikroprosessor asosidagi, 64K operativ hotiraga ega kompyuter edi). ROM dagi «quyma» Basic interpretatori shu qadar sekin ishlardiki, ekranga biror shaklni chizilsa uni nuqtama nuqta kuzatib o'tirish mumkin edi.
Читать дальше

Sapyor o'yinini "o'ynaymiz" :)

Bekorchilikda papkalar aro sayohat qilib o’tirib, tasodifan windows tarkibidagi sapyor o’yiniga kirib qoldim (winmine.exe). Ushbu o’yinni ko’pchilik hech bo’lmaganda bir marta o’ynab ko’rgan albatta. Oddiy mantiq va tezkorlik talab qiladigan o’yin. Bu o’yinni biz bir vaqtlar talabalikda sheriklarim bilan kim tezroq tugatishdan musobaqa ham o’ynar edik. Hullas hozir bu o’yinni yana ko’rdimu, o’sha paytdagi bir gap yodimga tushib ketdi. Dasturlashni endi o’rganayotgan paytimda ushbu o’yinni dastur orqali o’ynaydigan dasturcha qilgandim. Qarangki o’sha dastur hali ham arxivimda turgan ekan. Dastur kodlariga qarab kayfiyatimni ham ko’tarib oldim. Hozir aytadigan gaplarim shu dasturcha haqida. Dasturdan ko’ra uni qanday qilinganligi qiziqroq bo’lsa kerak menimcha.
Читать дальше