<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rashidov Nuriddin ]]></title><description><![CDATA[I'm here to help you become a really good web developer]]></description><link>https://rashidovn.uz</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 07:26:01 GMT</lastBuildDate><atom:link href="https://rashidovn.uz/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Navbat yaratadigan rahbarlik – rahbarlik emas]]></title><description><![CDATA[Ko’pchilik boshqaruv lavozimida ishlayotganda biror loyihani amalga oshirish uchun quyidagicha strategiyani tanlaydi:
• Rejani o‘zing tuzasan• Vazifalarni o‘zing taqsimlaysan• Ishni o‘zing ko‘rib chiqasan• Keyingi bosqichga o‘zing ruxsat berasan
Ammo...]]></description><link>https://rashidovn.uz/navbat-yaratadigan-rahbarlik-rahbarlik-emas</link><guid isPermaLink="true">https://rashidovn.uz/navbat-yaratadigan-rahbarlik-rahbarlik-emas</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Fri, 27 Jun 2025 16:19:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1751041058081/18c5f4ba-14c8-40f4-aee9-59d27a048c69.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ko’pchilik boshqaruv lavozimida ishlayotganda biror loyihani amalga oshirish uchun quyidagicha strategiyani tanlaydi:</p>
<p>• Rejani o‘zing tuzasan<br />• Vazifalarni o‘zing taqsimlaysan<br />• Ishni o‘zing ko‘rib chiqasan<br />• Keyingi bosqichga o‘zing ruxsat berasan</p>
<p>Ammo amalga quyidagicha bo’ladi aytaylik sizning oshxonangizda</p>
<ol>
<li><p>Bittagina oshpas ovqat tayyorlayapdi</p>
</li>
<li><p>O’nlab buyrutmalar navbat kutyapdi</p>
</li>
<li><p>Och mijozlar tobora sabrsizlanmoqda</p>
</li>
<li><p>Buyrutma ko’payib oshpazga navbat uzaygan sari oshxona sekinlashmoqda</p>
</li>
<li><p>Oshxona sekinlashgan sayin mijozlar norozilig oshmoqda</p>
</li>
<li><p>Norozilik oshgan sari esa oshpaz yana ko’proq va tezroq ishlashga harakat qilmoqda</p>
</li>
</ol>
<p>Bu halokatli doira hisoblanadi. Asl haqiqat shundaki:</p>
<p><strong>NAVBAT YARATIDGAN RAHBARLIK- RAHBARLIK EMAS. BU ISHGA HALAQIT BERAYOTGAN TIQINDIR.</strong></p>
<p>Agar har bir qaror siz orqali o’tishi kerak bo’lsa, demak siz jamoaning yordamchisiga emas, to’siqqa aylangansiz."Buyruq va nazorat" yondashuvi <strong>xavfsizdek tuyuladi.</strong> Bunday yo’l bilan uzoqqa bora olmaysiz eng katta zararni o’zingiz ko’rasiz.</p>
<p>Chiqish yo‘llari:</p>
<p>✅ Har bir detallarga aralashmang – <strong>ishoning, lekin tekshiring</strong><br />✅ Imkon bo‘lsa, <strong>tasdiqlarni avtomatlashtiring</strong><br />✅ Ma’lumotni rahbarga olib bormang – <strong>vakolatlarni bo’ling</strong><br />✅ Jamoani tezlashtiring – <strong>o‘zingizni band qilmasdan</strong></p>
<p>Ha, ayrim holatlarda ko‘rib chiqish zarur.<br />Ha, ba’zi kechikishlar aralashmasangiz ko’proq bo’layotganga o’xshaydi.</p>
<p>Lekin o‘zingizdan so‘rang:</p>
<p>🧠 <strong>Rahbarligim shu darajada alo bajaryapmanki, bu kechikishlar bunga arziydimi?</strong></p>
<p>Ba’zida javob – ha.<br />Ammo ko’p holatlarda – yo‘q.</p>
]]></content:encoded></item><item><title><![CDATA[Qoidalar zaiflar uchun zanjir, kuchlilar uchun esa vositadir.]]></title><description><![CDATA[Quyidagi jumalalar ijtimoiy tarmoqlardan olingan, keng tarqalgan, lekin aslida muallifi noma’lum yozma fikrlardir. Lekin insonni kurashga chorlaydigan hammasiga o’ziga bog’liqligi haqida eng ma’noli so’zlardan deb hisoblaganim uchun shu joyda ulashgi...]]></description><link>https://rashidovn.uz/qoidalar-zaiflar-uchun-zanjir-kuchlilar-uchun-esa-vositadir</link><guid isPermaLink="true">https://rashidovn.uz/qoidalar-zaiflar-uchun-zanjir-kuchlilar-uchun-esa-vositadir</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Fri, 27 Jun 2025 15:54:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1751039603817/fe598e9a-7231-4cd3-a664-0fa4e45050dc.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Quyidagi jumalalar ijtimoiy tarmoqlardan olingan, keng tarqalgan, lekin aslida muallifi noma’lum yozma fikrlardir. Lekin insonni kurashga chorlaydigan hammasiga o’ziga bog’liqligi haqida eng ma’noli so’zlardan deb hisoblaganim uchun shu joyda ulashgim keldi</p>
<ul>
<li><p>Agar sen qurol bilan, men ham qurol bilan kelsam – unda biz qonun haqida gaplasha olamiz.</p>
</li>
<li><p>Agar sen pichoq bilan, men ham pichoq bilan kelsam – unda biz qoidalar haqida gaplasha olamiz.</p>
</li>
<li><p>Agar seni qo‘ling bo‘sh kelsa, mening ham qo‘lim bo‘sh kelsa – unda biz aql va mantiq haqida gaplasha olamiz.</p>
</li>
<li><p>Ammo agar sening qo‘lingda qurol bo‘lsa, menda esa faqat pichoq – unda haqiqat sening qo‘lingda bo‘ladi.</p>
</li>
<li><p>Agar sening qo‘lingda qurol bo‘lsa, menda esa hech narsa bo‘lmasa – unda sen ushlab turgan narsa oddiy qurol emas, bu mening HAYOTIM.</p>
</li>
</ul>
<p>Qonun, qoidalar va axloq tushunchalari faqat tenglik asosida ma’no kasb etadi. Bu dunyoning achchiq haqiqatlaridan biri shuki:<br /><strong>Pul gapirganda – haqiqat jim bo‘ladi.</strong><br /><strong>Kuch gapirganda esa – pul ham orqaga uch qadam chekinadi.</strong></p>
<p>Qoidalarni yaratganlar – ularni birinchi buzadiganlardir.<br />Qoidalar zaiflar uchun zanjir, kuchlilar uchun esa vositadir.</p>
<p>Bu dunyoda har qanday yaxshilik uchun kurashish kerak. Hayot katta maqsadga erishmoqchi bo’lganlar resurslar uchun shiddat bilan raqobatlashmoqda, Zaiflargina beriladi va ulashiladi degan umid bilan kutishadi.</p>
]]></content:encoded></item><item><title><![CDATA[Ma’lumotlar bazasining turlari va ularning  💪
kuchli tomonlari]]></title><description><![CDATA[Relatsion ma’lumotlar bazalari (Relational Databases):Relatsion ma’lumotlar bazalari o‘n yillar davomida ma’lumotlar dunyosining asosini tashkil etib keladi. Ular ma’lumotlarni oldindan belgilangan relatsion bog‘liqliklar bilan jadval ko‘rinishida sa...]]></description><link>https://rashidovn.uz/malumotlar-bazasining-turlari-va-ularning-kuchli-tomonlari</link><guid isPermaLink="true">https://rashidovn.uz/malumotlar-bazasining-turlari-va-ularning-kuchli-tomonlari</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Thu, 26 Jun 2025 08:49:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/YLzJtu-Vmmo/upload/80d6db72f4ca70779cd5b24939604a45.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Relatsion ma’lumotlar bazalari (Relational Databases):</strong><br />Relatsion ma’lumotlar bazalari o‘n yillar davomida ma’lumotlar dunyosining asosini tashkil etib keladi. Ular ma’lumotlarni oldindan belgilangan relatsion bog‘liqliklar bilan jadval ko‘rinishida saqlaydi, bu esa ma’lumotlarni tartibga solish va so‘rov yuborishni osonlashtiradi.<br />Strukturalangan ma’lumotlar uchun juda mos, ular ma’lumotlar yaxlitligini ta’minlaydi va kuchli tranzaksiya boshqaruv imkoniyatlarini beradi.<br />Mashhur misollar: <strong>MySQL</strong>, <strong>Oracle</strong>, va <strong>PostgreSQL</strong>.</p>
<hr />
<p><strong>NoSQL ma’lumotlar bazalari:</strong><br />NoSQL bazalari katta hajmdagi va tuzilmagan (strukturaviy bo‘lmagan) ma’lumotlar bilan ishlay olish qobiliyati bilan ma’lumotlar muhitida katta inqilob yasangan edi. Ular moslashuvchanlik va kengayuvchanlikni ta’minlaydi, bu esa o‘zgaruvchan va dinamik ma’lumot modellariga juda mos keladi.<br />Misol uchun: <strong>MongoDB</strong>, <strong>Cassandra</strong>, va <strong>Redis</strong>.</p>
<hr />
<p><strong>Graf ma’lumotlar bazalari (Graph Databases):</strong><br />Graf bazalari o‘zaro bog‘langan ma’lumotlar bilan ishlashda ajoyib – masalan, ijtimoiy tarmoqlar yoki tavsiya tizimlari. Ma’lumotlar tugunlar (nodes) va bog‘lanishlar (relationships) ko‘rinishida ifodalanadi, bu esa ulanishlarni tezda izlash va murakkab so‘rovlar berish imkonini yaratadi.<br /><strong>Neo4j</strong> va <strong>Amazon Neptune</strong>.</p>
<hr />
<p><strong>Ustunli (kolonkalik) ma’lumotlar bazalari (Columnar Databases):</strong><br />Bu turdagi bazalar ma’lumotlarni ustunlar (kolonkalar) bo‘yicha saqlaydi, bu esa tahliliy operatsiyalar va tezkor izlash uchun juda qulay. Murakkab so‘rovlar va katta hajmdagi tahliliy yuklamalar uchun juda mos keladi.<br /><strong>Vertica</strong> va <strong>Apache Cassandra (CQL bilan)</strong>.</p>
<hr />
<p><strong>Vaqt ketma-ketligi bo‘yicha ma’lumotlar bazalari (Time Series Databases):</strong><br />Bu bazalar vaqtga bog‘langan (masalan, IoT sensorlarining o‘qishlari yoki fond bozoridagi narxlar) juda katta hajmdagi ma’lumotlarni boshqarish uchun mo‘ljallangan. Ular vaqt asosidagi so‘rovlar bo‘yicha ma’lumotlarni samarali qabul qilish, saqlash va izlab topishni ta’minlaydi.<br />Mashhur misollar: <strong>InfluxDB</strong> va <strong>TimescaleDB</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Kitobni muqovasiga qarab baho berma]]></title><description><![CDATA[Biz ko’pincha kitobni muqovasiga qarab baho berma deymizu lekin har kuni uni teskarisini qilamiz:▪️ Yig’ilishlarda kamroq yoki pastroq gapiradiganlarni e’tibordan chetda qoldiramiz▪️ Faollikni salohiyat(kompetensiya) bilan adashtiramiz▪️ “Ko’rinishi ...]]></description><link>https://rashidovn.uz/kitobni-muqovasiga-qarab-baho-berma</link><guid isPermaLink="true">https://rashidovn.uz/kitobni-muqovasiga-qarab-baho-berma</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Thu, 26 Jun 2025 08:27:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ls8MOmHE6pU/upload/1514d3133ab3f91ea442129622ffcd6f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Biz ko’pincha kitobni muqovasiga qarab baho berma deymizu lekin har kuni uni teskarisini qilamiz:<br />▪️ Yig’ilishlarda kamroq yoki pastroq gapiradiganlarni e’tibordan chetda qoldiramiz<br />▪️ Faollikni salohiyat(kompetensiya) bilan adashtiramiz<br />▪️ “Ko’rinishi mos emas“ nomzodlarni rad etasiz<br />Ammo eng teran aql egalarining salohiyati ularning kamtarligida yashiringan bo‘ladi. Eng katta bardoshlilik (ya’ni sabr, matonat va ichki kuch) aynan eng sokin, eng muloyim, eng past ovozli odamlarda yashiringan bo‘lishi mumkin. Yaxshi rahbar yoki liderlar faqat yaqqol ko’rinib turgan narsani emas yashirin potensialni ham ko’ra oladi. Jamoa lideri biror odam yoki holatga yuzaki emas, chuqurroq nigoh bilan qaraydi. Masalan, insonning ko‘rinishi, gapirish uslubi yoki birinchi taassurotidan ko‘ra, uning ichki salohiyati, qadriyatlari, niyatlari va yashirin qobiliyatlarini ko‘rishga harakat qiladi. Ular chuqurroq qaraydi. Uzoqroq tinglaydi. Ular boshqalar e’tiborsiz qoldirgan odamlarga ishonch bildiradi. Shunday rahbarlar o‘z jamoasida yashirin iste’dodlarni kashf etadi va ularni rivojlantiradi. Ayniqsa siz noldan jamoa yig’ayotgan bo’lsangiz bu degani siz sabrli, ilhomlantiruvchi, "o‘qituvchi" tipidagi lider bo’lishingiz degani. Siz odamlarga kuchli ishonib, ularni o‘stirishdan zavqlanadi bo’lsangiz yanada osonroq eplaysiz.</p>
<p>Haqiqat shuki:<br />Agar faqat yaltiroq narsalarni izlasangiz, oltinni boy berasiz.</p>
]]></content:encoded></item><item><title><![CDATA[Rahbar bo‘lish haqida hech kim aytmaydigan 10 ta haqiqat]]></title><description><![CDATA[(Bu narsalar hech bir qo‘llanmada yozilmagan )
Rahbarlik faqat strategiyadan iborat emas.Bu – insoniylikdir.
Siz bu ish faqat raqamlar,buyruq berish, nazorat va yig‘ilishlardan iborat deb o‘ylaysiz. Lekin hech kim aytmaydigan haqiqat shuki:

Siz o’zi...]]></description><link>https://rashidovn.uz/rahbar-bolish-haqida-hech-kim-aytmaydigan-10-ta-haqiqat</link><guid isPermaLink="true">https://rashidovn.uz/rahbar-bolish-haqida-hech-kim-aytmaydigan-10-ta-haqiqat</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Fri, 20 Jun 2025 14:41:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1750429773918/241bf682-01d3-42db-bac4-0fe151bbfef7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-bu-narsalar-hech-bir-qollanmada-yozilmagan"><em>(Bu narsalar hech bir qo‘llanmada yozilmagan</em> )</h3>
<p>Rahbarlik faqat strategiyadan iborat emas.<br />Bu – <strong>insoniylikdir</strong>.</p>
<p>Siz bu ish faqat raqamlar,buyruq berish, nazorat va yig‘ilishlardan iborat deb o‘ylaysiz. Lekin hech kim aytmaydigan haqiqat shuki:</p>
<ol>
<li><p>Siz o’zingizga bo’lgan ishonchni saqlagan holda og‘ir xabarlarni yetkazishingizga to‘g‘ri keladi. (Ishdan bo‘shatishlar, Reorganizatsiya, erishilmagan maqsatlar va hkz). Yetkazish usulining o’zi bir sa’natdir.</p>
</li>
<li><p>O‘zingiz o‘stirgan, o’rgatgan yoki o’rganish uchun muhit yaratib xatolarini birgalikda to’g’rlagan odamlarni yo‘qotasiz. Ularni boshqalar olib ketadi. Ular ketadi. Ha endi ular tajribali va sizdan o’zib ketgan bo’lishi ham mumkin. Baribir og‘riqli bo‘ladi.</p>
</li>
<li><p>Xodimingiz ota-onasini yo‘qotib g‘amga botganida uning yonida bo‘lasiz va nima deyishni bilmay qolasiz. Bu vaziyatni tuzatish emas, balki shunchaki birga bo‘lish haqida bo‘ladi. Ba’zida uning oilasidagi tashvishlar sizniki hamdir.</p>
</li>
<li><p>Siz kimningdir ishda qolishiga yoki ketishiga sabab bo‘lasiz. Sizning so‘zlaringiz kutilganidan ham ko‘proq ahamiyatga ega.</p>
</li>
<li><p>Siz o‘zingizga tegishli bo‘lmagan hissiyotlarni qabul qilasiz.<br /> Xodimingiz qo‘rquvi, charchoq, ranjish — rahbarlik hammasini o‘ziga tortadi.</p>
</li>
<li><p>Siz odamlarga jarayondan ustun qarashingizga to‘g‘ri keladi. Ba'zi holatlarda KPI (ko‘rsatkichlar) ahamiyatli bo‘lmaydi.</p>
</li>
<li><p>Siz o‘zingizni jamodagi imposoter(begona odamdek) his qilasiz... Aslida begonalik emas balki bajarayotgan loyiha(ish) taqdirini bir o’zingiz hal qila olmaysiz - taqdiringiz jamoa qo’lida bo’ladi</p>
</li>
<li><p>Rahbarga ishonch bir marta berilmasligini tushunasiz. Uni har hafta qaytadan qozonish kerak bo‘ladi.</p>
</li>
<li><p>Siz xaos paytida ham sokinlik manbai bo‘lishingiz kerak. Hatto o‘zingiz ichida parchalanayotgan bo‘lsangiz ham.</p>
</li>
<li><p>Rahbar sifatida sizning <strong>insoniy yondashuvingiz</strong>, odamlarni qanday <strong>ruhiy qo‘llab-quvvatlaganingiz</strong>, <strong>qanday ilhom berganingiz</strong> va <strong>qanday hurmat bilan munosabatda bo‘lganingiz</strong> ko‘proq qadrlanadi. (Ularni hurmat qilganmisiz?,Og‘ir paytda yonlarida bo‘lganmisiz?,Ularning fikrini eshitgansizmi? Xatolarida ularni ayblaganmisiz yoki yordam bergansiz?) — shunga qarab esda qolishingiz mumkin.<br /><strong>Texnik natijalar unutiladi, hissiyotlar qoladi.</strong></p>
</li>
</ol>
<p><code>Yuqoridagi fikrlar faqat eng yuqori rahbar rolidagilar haqida emas,har qanday boshqaruv xodimlari uchun ham amal qilsa kerak</code></p>
]]></content:encoded></item><item><title><![CDATA[Dasturchi amal qilishi kerak bo'lgan 18 qoida]]></title><description><![CDATA[0. Murakkab yechimlar tanlaganing xatoligini - kechasi uxlamay kod yozib afsuslanganingda bilasan.

O‘z kodingga oshiq bo‘lishni bas qil

Har qanday yechimni kamchiligi bo’lishi mumkin – eng yaxshisi degani yo‘q

Yozgan har bir koding — bu xavf va ma...]]></description><link>https://rashidovn.uz/dasturchi-amal-qilishi-kerak-bolgan-18-qoida</link><guid isPermaLink="true">https://rashidovn.uz/dasturchi-amal-qilishi-kerak-bolgan-18-qoida</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Thu, 19 Jun 2025 12:31:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1750336156887/09c18746-6c58-49a1-8875-a22bfc8736d0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>0. Murakkab yechimlar tanlaganing xatoligini - kechasi uxlamay kod yozib afsuslanganingda bilasan.</p>
<ol>
<li><p>O‘z kodingga oshiq bo‘lishni bas qil</p>
</li>
<li><p>Har qanday yechimni kamchiligi bo’lishi mumkin – eng yaxshisi degani yo‘q</p>
</li>
<li><p>Yozgan har bir koding — bu xavf va mas’uliyat</p>
</li>
<li><p>Dizaynlaring va qarorlaringni hujjatlashtir</p>
</li>
<li><p>O‘zi yozmagan kodni hamma yoqtirmaydi</p>
</li>
<li><p>Keraksiz kutubxonalarni ishlatma</p>
</li>
<li><p>Kod yozish standartlari tortishuvlarning oldini oladi</p>
</li>
<li><p>Mazmunli commit izohlarini yoz</p>
</li>
<li><p>Hech qachon yangi narsalarni o‘rganishni to‘xtatma</p>
</li>
<li><p>Kod ko‘rib chiqish (review) — bu yechim qilgan g’oyangizni tarqatish uchun(jamoa a’zolar o’rtasida)</p>
</li>
<li><p>Har doim qo‘llab-quvvatlash oson bo‘lgan kod yoz</p>
</li>
<li><p>Muammo yechimini topa olmasang, yordam so‘ra</p>
</li>
<li><p>Muammoning ildiz sababini tuzat, belgisini emas</p>
</li>
<li><p>Dasturni ishlab chiqish jarayonlari hech qachon butunlay tugamaydi</p>
</li>
<li><p>Deadlinelar — bu va’da emas</p>
</li>
<li><p>Ilk versiyani tezroq chiqar, kichik iteratsiyalarni ko’paytir (reliz)</p>
</li>
<li><p>Oddiyroq qil. Shunchaki Oddiyroq. (Keep. It . Simple)</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Loyiha menejerlari busiz hich narsa qila olmaydi.]]></title><description><![CDATA[Loyiha menejerlar ko‘pincha loyiha rejalashtirilgan ikki oy o‘rniga, masalan, to‘rt oy talab qilishiga duch kelishadi. Buning sabablaridan biri odatda vazifalar uchun vaqt noto‘g‘ri baholangan bo‘lishi mumkin. Ushbu muammoni hal qilish uchun dekompoz...]]></description><link>https://rashidovn.uz/loyiha-menejerlari-busiz-hich-narsa-qila-olmaydi</link><guid isPermaLink="true">https://rashidovn.uz/loyiha-menejerlari-busiz-hich-narsa-qila-olmaydi</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Tue, 11 Feb 2025 18:56:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1739299218555/d4661e8c-07ef-40f1-a2eb-e2298442971e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Loyiha menejerlar ko‘pincha loyiha rejalashtirilgan ikki oy o‘rniga, masalan, to‘rt oy talab qilishiga duch kelishadi. Buning sabablaridan biri odatda vazifalar uchun vaqt noto‘g‘ri baholangan bo‘lishi mumkin. Ushbu muammoni hal qilish uchun dekompozitsiya usulidan foydalanish eng oson yechim hisoblanadi.</p>
<h2 id="heading-dekompozitsiya-nima-va-qayerlarda-ishlatiladi">Dekompozitsiya nima va qayerlarda ishlatiladi?</h2>
<p>Dekompozitsiya — bu katta va murakkab jarayonni kichik va sodda qismlarga ajratishdir. Vazifalarni belgilashda dekompozitsiya qilish — bu abstrakt va yirik vazifani aniq baholash mumkin bo‘lgan kichik topshiriqlarga bo‘lishni anglatadi.</p>
<h2 id="heading-misol">Misol</h2>
<p>Tasavvur qilaylik, loyiha menejeri <strong>"Kompaniya uchun yangi veb-sayt yaratish"</strong> loyihasini boshqaradi. Ushbu loyihani <strong>dekompozitsiya</strong> qilish uchun uni bir necha asosiy bosqichlarga ajratamiz:</p>
<h3 id="heading-1-kontseptsiya-va-rejalashtirish"><strong>1. Kontseptsiya va rejalashtirish</strong></h3>
<ul>
<li><p>Mijoz talablari va maqsadlarini aniqlash</p>
</li>
<li><p>Raqobatchi tahlili o'tkazish</p>
</li>
<li><p>Texnik yechimlarni tanlash (CMS, dasturlash tillari, hosting va h.k.)</p>
</li>
<li><p>Ish jadvalini tuzish</p>
</li>
<li><p>Budjetni belgilash</p>
</li>
</ul>
<h3 id="heading-2-dizayn-bosqichi"><strong>2. Dizayn bosqichi</strong></h3>
<ul>
<li><p>Veb-saytning dastlabki wireframe va prototiplarini yaratish</p>
</li>
<li><p>UI/UX dizayn konsepsiyasini ishlab chiqish</p>
</li>
<li><p>Mijozga dizayn maketlarini taqdim etish va fikrlarini olish</p>
</li>
<li><p>Dizaynni yakuniy holatga keltirish</p>
</li>
</ul>
<h3 id="heading-3-dasturlash-frontend-va-backend"><strong>3. Dasturlash (Frontend va Backend)</strong></h3>
<ul>
<li><p>Frontend (HTML, CSS, JavaScript) ishlab chiqish</p>
</li>
<li><p>Backend (ma'lumotlar bazasi, API, server logikasi) yaratish</p>
</li>
<li><p>Foydalanuvchi autentifikatsiya tizimini ishlab chiqish</p>
</li>
<li><p>Saytning mobil moslashuvchanligini ta’minlash</p>
</li>
</ul>
<h3 id="heading-4-testlash-va-optimizatsiya"><strong>4. Testlash va optimizatsiya</strong></h3>
<ul>
<li><p>Funktsional testlar (har bir sahifa va tugma ishlashini tekshirish)</p>
</li>
<li><p>Yuklama testi (ko‘p foydalanuvchi ishlatganda sayt tezligi)</p>
</li>
<li><p>Xavfsizlik tekshiruvlari (SQL injection, XSS va boshqalar)</p>
</li>
<li><p>SEO optimizatsiyasi (tezlik, meta-teglar, mobil moslashuvchanlik)</p>
</li>
</ul>
<h3 id="heading-5-ishga-tushirish-va-monitoring"><strong>5. Ishga tushirish va monitoring</strong></h3>
<ul>
<li><p>Saytni domen va hostingga yuklash</p>
</li>
<li><p>Mijoz va foydalanuvchilarga sinov muddati berish</p>
</li>
<li><p>Google Analytics va boshqa kuzatuv tizimlarini sozlash</p>
</li>
<li><p>Foydalanuvchi fikr-mulohazalarini yig‘ish va yangilanishlarni rejalashtirish</p>
</li>
</ul>
<p>Dekompozitsiya usuli yordamida loyiha katta va chalkash bir ish emas, balki <strong>aniq, bajarilishi mumkin bo‘lgan bosqichlarga</strong> bo‘lingan reja shaklida tasavvur qilinadi. Har bir qadam aniq vazifalar va mas'uliyatlar bilan bog‘lanadi, bu esa loyiha menejeriga jarayonni samarali boshqarishga yordam beradi.</p>
<p>Shunday qilib, loyiha menejerlari <strong>WBS (Work Breakdown Structure – Ishlarni bo‘lish tuzilmasi)</strong> yordamida loyihani mayda qismlarga ajratib, har bir bosqichni samarali boshqarishlari mumkin.</p>
<h2 id="heading-dekompozitsiya-qoidalari-va-prinsiplari"><strong>Dekompozitsiya qoidalari va prinsiplari</strong></h2>
<p>Dekompozitsiyada qat’iy qoidalar mavjud emas. Asosiy maqsad – murakkab jarayonni oddiy qismlarga ajratish. Biroq, dekompozitsiyani to‘g‘ri bajarishga yordam beradigan prinsiplar mavjud:</p>
<ol>
<li><p><strong>Loyiha qismlari bir-biridan mustaqil bo‘lishi kerak</strong> – Har bir vazifa aniq shakllangan bo‘lib, boshqa vazifalar bilan kesishmasligi lozim.</p>
</li>
<li><p><strong>Ierarxik tuzilishga amal qilish</strong> – Har bir kichik vazifa o‘zidan yuqori darajadagi vazifaga bo‘ysunishi va umumiy loyiha tarkibiga mos kelishi kerak.</p>
</li>
<li><p><strong>Natijalar butun jarayonga mos kelishi kerak</strong> – Har bir vazifa umumiy natijaning bir qismi hisoblanadi va ularning yig‘indisi loyiha natijasining 100% ini tashkil qilishi lozim. Ya’ni, barcha vazifalar bajarilgach, loyiha ham to‘liq yakunlanishi kerak.</p>
</li>
</ol>
<h3 id="heading-dekompozitsiya-qilish-va-loyihani-vaqt-budjetlarini-baholash-boyicha-maslahatlar"><strong>Dekompozitsiya qilish va loyihani vaqt budjetlarini baholash bo‘yicha maslahatlar</strong></h3>
<p>Dekompozitsiyani o‘rganish uchun uni amalda qo‘llash kerak. Katta va mavhum vazifalarni kichik qismlarga ajratib boring. Dekompozitsiyadan qancha ko‘p foydalansangiz, uni shunchalik yaxshi o’rganib borasiz.</p>
<p>O‘rganish jarayoni oddiydan murakkabga tomon bo‘lishi mumkin. IT sohasida bu quyidagicha ko‘rinadi:</p>
<ol>
<li><p><strong>Tayyor loyiha ustida ishlash (bajarib bo’lingan ishlayotgan)</strong></p>
<ul>
<li><p>Allaqachon qismlarga ajratilgan loyihani o‘rganing.</p>
</li>
<li><p>Vazifalar qanday bo‘linganini va ularning baholash tamoyillarini tushunib chiqing.</p>
</li>
</ul>
</li>
<li><p><strong>Standart loyihani tahlil qilish va baholash</strong></p>
<ul>
<li><p>Oddiy bir loyihani vazifalarga ajratishga harakat qiling.</p>
</li>
<li><p>Unga qancha vaqt va resurs talab qilinishini baholang.</p>
</li>
</ul>
</li>
<li><p><strong>Murakkab loyihalar bilan ishlash</strong></p>
<ul>
<li><p>Faqat prototipga ega bo‘lgan loyihalarni dekompozitsiya qiling.</p>
</li>
<li><p>Faqat texnik topshiriqqa (T3) loyihalarni qismlarga ajrating o’rganib ko’ring.</p>
</li>
</ul>
</li>
</ol>
<p>Agar siz texnik topshiriq yoki loyihani to‘g‘ri qismlarga ajratishni o‘rgansangiz, har bir vazifani aniq baholay olasiz. Natijada, loyiha uchun zarur bo‘lgan vaqt va resurslarni real holatga yaqin aniqlash imkoniyatiga ega bo‘lasiz.</p>
<p>Bilimingizni oshirmoqchi bo’lsangiz quyidagi kitobni tavsiya qilaman</p>
<p><a target="_blank" href="https://www.litres.ru/book/vladimir-zavertaylov/nastolnaya-kniga-project-menedzhera-chto-nuzhno-znat-68007542/"><em>Завертайлов Владимир: Настольная книга project-менеджера.</em></a></p>
]]></content:encoded></item><item><title><![CDATA[Web server ko'tarishda bilishingiz kerak bo'ladigan linux kommandalari]]></title><description><![CDATA[Terminal buyruqlari va ularning texnik izohi
1. UFW (Uncomplicated Firewall) boshqaruvi
🔹 UFW holatini tekshirish
sudo ufw status

UFW faollashtirilgan yoki yo‘qligini, shuningdek, joriy xavfsizlik devori qoidalarini ko‘rsatadi.
🔹 SSH uchun ruxsat ...]]></description><link>https://rashidovn.uz/web-server-kotarishda-bilishingiz-kerak-boladigan-linux-kommandalari</link><guid isPermaLink="true">https://rashidovn.uz/web-server-kotarishda-bilishingiz-kerak-boladigan-linux-kommandalari</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 09 Feb 2025 22:23:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1739139776353/0814e670-14ae-41ac-846b-9748078ca116.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Terminal buyruqlari va ularning texnik izohi</strong></p>
<h3 id="heading-1-ufw-uncomplicated-firewall-boshqaruvi"><strong>1. UFW (Uncomplicated Firewall) boshqaruvi</strong></h3>
<h4 id="heading-ufw-holatini-tekshirish">🔹 UFW holatini tekshirish</h4>
<pre><code class="lang-bash">sudo ufw status
</code></pre>
<p>UFW faollashtirilgan yoki yo‘qligini, shuningdek, joriy xavfsizlik devori qoidalarini ko‘rsatadi.</p>
<h4 id="heading-ssh-uchun-ruxsat-berish">🔹 SSH uchun ruxsat berish</h4>
<pre><code class="lang-bash">sudo ufw allow ssh
</code></pre>
<p>Tizimga masofaviy SSH ulanishlariga ruxsat beradi (standart port 22).</p>
<h4 id="heading-nginx-uchun-toliq-ruxsat-berish">🔹 Nginx uchun to‘liq ruxsat berish</h4>
<pre><code class="lang-bash">sudo ufw allow <span class="hljs-string">'Nginx Full'</span>
</code></pre>
<p>Nginx’ning HTTP (port 80) va HTTPS (port 443) orqali to‘liq ishlashiga imkon beradi.</p>
<h4 id="heading-ufw-faollashtirish">🔹 UFW faollashtirish</h4>
<pre><code class="lang-bash">sudo ufw <span class="hljs-built_in">enable</span>
</code></pre>
<p>Tayyorlangan xavfsizlik devori qoidalarini faollashtiradi va tarmoq trafigini boshqaradi.</p>
<h4 id="heading-ufw-holatini-qayta-tekshirish">🔹 UFW holatini qayta tekshirish</h4>
<pre><code class="lang-bash">sudo ufw status
</code></pre>
<p>Faollashtirilganidan keyin xavfsizlik devorining joriy holatini tasdiqlaydi.</p>
<hr />
<h3 id="heading-2-nginx-veb-serverini-boshqarish"><strong>2. Nginx veb-serverini boshqarish</strong></h3>
<h4 id="heading-nginxni-toxtatish">🔹 Nginx’ni to‘xtatish</h4>
<pre><code class="lang-bash">sudo systemctl stop nginx
</code></pre>
<p>Nginx veb-serverining ishini to‘xtatadi.</p>
<h4 id="heading-nginxni-ishga-tushirish">🔹 Nginx’ni ishga tushirish</h4>
<pre><code class="lang-bash">sudo systemctl start nginx
</code></pre>
<p>Nginx veb-serverini ishga tushiradi.</p>
<h4 id="heading-nginxni-qayta-ishga-tushirish">🔹 Nginx’ni qayta ishga tushirish</h4>
<pre><code class="lang-bash">sudo systemctl restart nginx
</code></pre>
<p>Konfiguratsiya o‘zgarishlarini qo‘llash yoki xizmatni yangilash uchun Nginx’ni qayta ishga tushiradi.</p>
<h4 id="heading-nginx-xizmat-holatini-tekshirish">🔹 Nginx xizmat holatini tekshirish</h4>
<pre><code class="lang-bash">sudo systemctl status nginx
</code></pre>
<p>Nginx ishlayotgan yoki to‘xtatilganligini tekshiradi va muammolar bo‘lsa, ularni ko‘rsatadi.</p>
<h4 id="heading-nginxni-avtomatik-yuklanishga-sozlash">🔹 Nginx’ni avtomatik yuklanishga sozlash</h4>
<pre><code class="lang-bash">sudo systemctl <span class="hljs-built_in">enable</span> nginx
</code></pre>
<p>Tizim qayta ishga tushirilganda, Nginx avtomatik ishga tushishi uchun sozlaydi.</p>
<hr />
<h3 id="heading-3-foyllar-va-kataloglarni-boshqarish"><strong>3. Foyllar va kataloglarni boshqarish</strong></h3>
<h4 id="heading-joriy-katalogdagi-fayl-va-papkalarni-royxatlash">🔹 Joriy katalogdagi fayl va papkalarni ro‘yxatlash</h4>
<pre><code class="lang-bash">ls
</code></pre>
<p>Hozirgi katalogdagi fayllar va papkalarni ko‘rsatadi.</p>
<h4 id="heading-fayllar-va-kataloglarni-batafsil-royxatlash">🔹 Fayllar va kataloglarni batafsil ro‘yxatlash</h4>
<pre><code class="lang-bash">ls -lrp
</code></pre>
<p>Fayllarning ruxsatlari, egasi, hajmi va sanasi kabi batafsil ma’lumotlarni ko‘rsatadi, papkalarni <code>/</code> bilan belgilaydi.</p>
<h4 id="heading-ishchi-katalogni-ozgartirish">🔹 Ishchi katalogni o‘zgartirish</h4>
<pre><code class="lang-bash"><span class="hljs-built_in">cd</span> /var/www/html
</code></pre>
<p>Ishchi katalogni <code>/var/www/html</code> ga o‘zgartiradi (bu odatda Nginx yoki Apache uchun asosiy veb-katalog hisoblanadi).</p>
<h4 id="heading-joriy-katalog-manzilini-korsatish">🔹 Joriy katalog manzilini ko‘rsatish</h4>
<pre><code class="lang-bash"><span class="hljs-built_in">pwd</span>
</code></pre>
<p>Hozirgi ishchi katalogni (absolyut yo‘lni) ekranga chiqaradi.</p>
<hr />
<h3 id="heading-4-fayllarni-yaratish-va-ozgartirish"><strong>4. Fayllarni yaratish va o‘zgartirish</strong></h3>
<h4 id="heading-terminalga-matn-chiqarish">🔹 Terminalga matn chiqarish</h4>
<pre><code class="lang-bash"><span class="hljs-built_in">echo</span> <span class="hljs-string">"helloworld"</span>
</code></pre>
<p><code>helloworld</code> matnini terminalga chiqaradi.</p>
<h4 id="heading-bosh-fayl-yaratish">🔹 Bo‘sh fayl yaratish</h4>
<pre><code class="lang-bash">touch index.html
</code></pre>
<p><code>index.html</code> nomli bo‘sh faylni yaratadi.</p>
<h4 id="heading-superuser-huquqlari-bilan-fayl-yaratishga-harakat-qilish">🔹 Superuser huquqlari bilan fayl yaratishga harakat qilish</h4>
<pre><code class="lang-bash">sudo touch index.html
</code></pre>
<p>Superuser huquqlari bilan <code>index.html</code> faylini yaratishga harakat qiladi (biroq, ba’zi hollarda ruxsat yetarli bo‘lmasligi mumkin).</p>
<h4 id="heading-faylga-matn-yozish-faylni-toliq-ornini-bosadi">🔹 Faylga matn yozish (faylni to‘liq o‘rnini bosadi)</h4>
<pre><code class="lang-bash">sudo <span class="hljs-built_in">echo</span> <span class="hljs-string">"Helloworld"</span> &gt; index.html
</code></pre>
<p><code>index.html</code> fayliga <code>"Helloworld"</code> matnini yozadi va mavjud kontentni o‘chiradi.</p>
<h4 id="heading-faylni-tahrirlash-vi-muharriri-orqali">🔹 Faylni tahrirlash (Vi muharriri orqali)</h4>
<pre><code class="lang-bash">sudo vi index.html
</code></pre>
<p><code>index.html</code> faylini Vi muharririda superuser huquqlari bilan ochadi va tahrirlashga imkon beradi.</p>
<h4 id="heading-faylni-ochirish">🔹 Faylni o‘chirish</h4>
<pre><code class="lang-bash">sudo rm index.html
</code></pre>
<p><code>index.html</code> faylini superuser huquqlari bilan o‘chiradi.</p>
<hr />
<h3 id="heading-xulosa"><strong>Xulosa</strong></h3>
<p>Bu buyruqlar Unix/Linux tizimlarida firewallni boshqarish, veb-serverni sozlash va fayl tizimi bilan ishlash uchun zarur bo‘lgan asosiy buyruqlardir. Bular tizim administratorlari va veb-ishlab chiquvchilar uchun muhim vositalar hisoblanadi.</p>
]]></content:encoded></item><item><title><![CDATA[Vaqtingizni tejash uchun GIT layfhaklari]]></title><description><![CDATA[15 ta Git Hack: Ishingizni Osonlashtiruvchi Foydali Buyruqlar
1. Avtomatik tuzatish (Autocorrect)
Git-da avtomatik tuzatish funksiyasi borligini bilasizmi?Agar Git buyruqlarini kiritishda ko‘p xatoga yo‘l qo‘ysangiz, ushbu funksiyani yoqish tavsiya e...]]></description><link>https://rashidovn.uz/vaqtingizni-tejash-uchun-git-layfhaklari</link><guid isPermaLink="true">https://rashidovn.uz/vaqtingizni-tejash-uchun-git-layfhaklari</guid><category><![CDATA[Git]]></category><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 09 Feb 2025 22:01:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1739138475212/f2bf47aa-cbe1-4af3-993e-1562567b93d6.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-15-ta-git-hack-ishingizni-osonlashtiruvchi-foydali-buyruqlar">15 ta Git Hack: Ishingizni Osonlashtiruvchi Foydali Buyruqlar</h3>
<h4 id="heading-1-avtomatik-tuzatish-autocorrect">1. Avtomatik tuzatish (Autocorrect)</h4>
<p>Git-da avtomatik tuzatish funksiyasi borligini bilasizmi?<br />Agar Git buyruqlarini kiritishda ko‘p xatoga yo‘l qo‘ysangiz, ushbu funksiyani yoqish tavsiya etiladi:</p>
<pre><code class="lang-bash">git config --global help.autocorrect 1
</code></pre>
<p>Bu Git buyruqlarida kichik xatolarni avtomatik tuzatadi. Biroq, agar siz juda noto‘g‘ri buyruq yozsangiz, Git shunchaki xato xabarini chiqaradi.</p>
<hr />
<h4 id="heading-2-ozgarishlar-kiritilgan-barcha-fayllarni-qoshish-commit-qilish">2. O‘zgarishlar kiritilgan barcha fayllarni qo‘shish (Commit qilish)</h4>
<p>O‘zgarishlar kiritilgan barcha fayllarni qo‘shish uchun quyidagi buyruqdan foydalaning:</p>
<pre><code class="lang-bash">git add -A
</code></pre>
<p>yoki</p>
<pre><code class="lang-bash">git add .
</code></pre>
<hr />
<h4 id="heading-3-branchlar-ortasida-tez-almashish">3. Branchlar o‘rtasida tez almashish</h4>
<p>Oxirgi ikkita branch o‘rtasida tez ko’chib o’tish uchun quyidagi buyruqdan foydalanishingiz mumkin:</p>
<pre><code class="lang-bash">git checkout -
</code></pre>
<p>Bu tarmoqlar orasida tez almashinib o’tish imkonini beradi.</p>
<hr />
<h4 id="heading-4-commit-tarixini-tekshirish">4. Commit tarixini tekshirish</h4>
<p>Agar Git repozitoriyasida bajarilgan commit’larni ko‘rmoqchi bo‘lsangiz:</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">log</span>
</code></pre>
<p>Bu buyruq commit xabarlarini, muallif nomini, elektron pochta manzilini, commit sanasi va vaqtini ko‘rsatadi.<br />Agar har bir commit’dagi o‘zgarishlarni ko‘rishni istasangiz:</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">log</span> -p
</code></pre>
<p>Git log’ni yopish uchun <code>q</code> yoki <code>z</code> tugmachalarini bosing.</p>
<hr />
<h4 id="heading-5-branchlar-kuzatuv-holatini-tekshirish">5. Branchlar kuzatuv holatini tekshirish</h4>
<p>Hozirgi amaldagi branchlar qaysi joyga (commitga) ko‘rsatayotganini ko‘rish uchun:</p>
<pre><code class="lang-bash">git branch -vv
</code></pre>
<p>Bu qaysi branch qanday commitga bog‘langanini ko‘rsatadi.</p>
<hr />
<h4 id="heading-6-commit-qachon-bajarilganini-aniqlash">6. Commit qachon bajarilganini aniqlash</h4>
<p>Agar xatolikni aniqlash uchun tarixda qaysi commit sabab bo‘lganini topmoqchi bo‘lsangiz:</p>
<pre><code class="lang-bash">git bisect
</code></pre>
<p>Bu buyruq Git commit’larini ketma-ket tekshirishga yordam beradi.</p>
<hr />
<h4 id="heading-7-commit-va-fayl-qoshishni-bir-xil-buyruq-bilan-bajarish">7. Commit va fayl qo‘shishni bir xil buyruq bilan bajarish</h4>
<p>Agar yangi fayl qo‘shilmagan bo‘lsa, commit qilishni va barcha mavjud o‘zgarishlarni qo‘shishni quyidagi buyruq bilan amalga oshirish mumkin:</p>
<pre><code class="lang-bash">git commit -a -m <span class="hljs-string">"commit xabari"</span>
</code></pre>
<hr />
<h4 id="heading-8-git-addni-bekor-qilish">8. Git add’ni bekor qilish</h4>
<p>Agar noto‘g‘ri fayl qo‘shilgan bo‘lsa, commit qilmasdan oldin uni bekor qilish uchun:</p>
<pre><code class="lang-bash">git reset /path/fayl_nomi
</code></pre>
<p>Agar commit allaqachon bajarilgan bo‘lsa:</p>
<pre><code class="lang-bash">git reset --soft HEAD~1
git reset /path/fayl_nomi
git rm /path/fayl_nomi
git commit
</code></pre>
<p>Bu faylni commit’dan chiqarib tashlaydi va yangi commit qo‘shadi.<br />Agar butun tarmoqni boshlang‘ich holatga qaytarmoqchi bo‘lsangiz:</p>
<pre><code class="lang-bash">git reset
</code></pre>
<hr />
<h4 id="heading-9-songgi-commitga-qoshilmagan-faylni-qoshish">9. So‘nggi commit'ga qo‘shilmagan faylni qo‘shish</h4>
<p>Agar oxirgi commit’ga qo‘shishni unutgan fayl bo‘lsa:</p>
<pre><code class="lang-bash">git add fayl_nomi
git commit --amend
</code></pre>
<p>Bu faylni oldingi commit’ga qo‘shib qo‘yadi.</p>
<hr />
<h4 id="heading-10-repozitorini-avvalgi-commitga-qaytarish">10. Repozitorini avvalgi commit’ga qaytarish</h4>
<p>Agar oxirgi commit’lardagi o‘zgarishlar noto‘g‘ri bo‘lsa va avvalgi holatga qaytmoqchi bo‘lsangiz:</p>
<pre><code class="lang-bash">git checkout &lt;SHA&gt;
</code></pre>
<p><code>SHA</code> - bu commit'ning unikal(noyob) identifikatori. Uni <code>git log</code> orqali topishingiz mumkin.</p>
<hr />
<h4 id="heading-11-git-mergeni-bekor-qilish">11. Git merge'ni bekor qilish</h4>
<p>Agar bir nechta tarmoqlarni noto‘g‘ri birlashtirib qo‘ysangiz va ortga qaytmoqchi bo‘lsangiz:</p>
<pre><code class="lang-bash">git revert HEAD
</code></pre>
<p>Agar aniq qaysi merge commit’ni bekor qilishni xohlasangiz:</p>
<pre><code class="lang-bash">git revert -m 1 &lt;SHA&gt;
</code></pre>
<p>Bu yerda <code>-m 1</code> – birlashtirish paytida asosiy tarmoqni saqlashni bildiradi.</p>
<hr />
<h4 id="heading-12-git-branchini-ochirish-local-va-remote">12. Git branchini o‘chirish (local va remote)</h4>
<p>Agar branch lokal yoki remote repozitoriyadan o‘chirmoqchi bo‘lsangiz:</p>
<p>Lokal tarmoqni o‘chirish:</p>
<pre><code class="lang-bash">git branch -d &lt;tarmoq_nomi&gt;
</code></pre>
<p>Remote tarmoqni o‘chirish:</p>
<pre><code class="lang-bash">git push origin --delete &lt;tarmoq_nomi&gt;
</code></pre>
<p>Yangi branch yaratish va unga o‘tish:</p>
<pre><code class="lang-bash">git checkout -b &lt;yangi_tarmoq_nomi&gt;
</code></pre>
<hr />
<h4 id="heading-13-branch-nomini-ozgartirish">13. Branch nomini o‘zgartirish</h4>
<p>Agar noto‘g‘ri branch nomi kiritilgan bo‘lsa:</p>
<pre><code class="lang-bash">git branch -m eski_nomi yangi_nomi
</code></pre>
<p>Masofaviy branch nomini o‘zgartirish:</p>
<pre><code class="lang-bash">git push origin --delete eski_nomi
git push origin yangi_nomi
</code></pre>
<hr />
<h4 id="heading-14-autostash-funksiyasini-yoqish">14. Autostash funksiyasini yoqish</h4>
<p>Agar tarmoqda ishlayotganingizda boshqa foydalanuvchi yangi commit qo‘shsa, Git rebase bajarishda avvalgi o‘zgarishlarni vaqtincha saqlab qo‘yadi. Buni avtomatlashtirish uchun:</p>
<pre><code class="lang-bash">git config --global rebase.autoStash <span class="hljs-literal">true</span>
</code></pre>
<p>Bu ishlarni avtomatik bajarishga yordam beradi.</p>
<hr />
<h4 id="heading-15-git-reflog-qaytarib-bolmaydigan-xatolarni-tuzatish">15. Git reflog – qaytarib bo‘lmaydigan xatolarni tuzatish</h4>
<p>Agar Git buyruqlari yordam bermay qolsa, <code>git reflog</code> oxirgi qilingan barcha o‘zgarishlarni ko‘rsatadi va istalgan nuqtaga qaytishga yordam beradi.</p>
<pre><code class="lang-bash">git reflog
</code></pre>
<p>Agar juda katta xatolik yuz bergan bo‘lsa, ushbu buyruq eng yaxshi yechim bo‘lishi mumkin.<br />Bu Git’ning kam ma’lum, lekin juda foydali buyruqlari bo‘lib, muammolarni tez va samarali hal qilishga yordam beradi. Savollar bo’lsa izohda qoldiring🚀</p>
]]></content:encoded></item><item><title><![CDATA[Ubuntu 24.04 versiyasi uchun qanday qilib  Nginx, MySQL, PHP (LEMP Stack) o'rnatish]]></title><description><![CDATA[LEMP - ochiq kodli veb-ilovalar to‘plami bo‘lib, serverda dinamik veb-ilovalarni ishlab chiqish va joylashtirish imkonini beradi. LEMP qisqartmasi ortida:Linux (L), Nginx (enjinx -E),Mysql(M),Php (P) lar nazarda tutiladi.
Ushbu maqolada Ubuntu 24.04 ...]]></description><link>https://rashidovn.uz/ubuntu-2404-versiyasi-uchun-qanday-qilib-nginx-mysql-php-lemp-stack-ornatish</link><guid isPermaLink="true">https://rashidovn.uz/ubuntu-2404-versiyasi-uchun-qanday-qilib-nginx-mysql-php-lemp-stack-ornatish</guid><category><![CDATA[Linux]]></category><category><![CDATA[LEMP]]></category><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 09 Feb 2025 21:38:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1739137081851/55a52019-c0d5-46f2-a4f1-4255222c8a71.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>LEMP</strong> - ochiq kodli veb-ilovalar to‘plami bo‘lib, serverda dinamik veb-ilovalarni ishlab chiqish va joylashtirish imkonini beradi. LEMP qisqartmasi ortida:Linux (<strong>L</strong>), Nginx (enjinx -<strong>E</strong>),Mysql(<strong>M</strong>),Php (<strong>P</strong>) lar nazarda tutiladi.</p>
<p>Ushbu maqolada Ubuntu 24.04 serveriga Nginx, MySQL va PHP (LEMP) to‘plamini qanday o‘rnatish haqida ma’lumotlar ketma tartibda beriladi. Siz to‘plam funksiyalarini sinab ko‘rish uchun asosiy veb-ilovani sozlaysiz va serverga ishonchli SSL sertifikatlari orqali xavfsiz protokol (https) orqali ulanishni ta’minlaysiz.</p>
<h1 id="heading-talablar">Talablar</h1>
<p>Boshlashdan oldin quyidagilarni bajaring:</p>
<ul>
<li><p>Ubuntu 24.04 o’rnatilgan server, personal kompyuter yoki virtual server bo’lishi ham mumkin <a target="_blank" href="https://www.linode.com/lp/refer/?r=0c060179d7ee2ca2479ae191dd5b08190990d883">Quyidagi link</a> orqali 100$ bonusgacha virtual serverldan ishlatib bepul ishlatib ko’rishingiz mumkin .</p>
</li>
<li><p>Server IP manziliga yo‘naltirilgan yangi domen A yozuvini yarating. Masalan, <code>app.example.com</code>. <a target="_blank" href="https://billing.airnet.uz/pl.php?4639">Quyidagi link</a> orqali yangi domen osongina sotib olishingiz mumkin.</p>
</li>
<li><p>SSH orqali serverga ulaning va <code>sudo</code> huquqlari bilan ildiz bo‘lmagan foydalanuvchi sifatida tizimga kiring.</p>
</li>
<li><p>Serverni yangilang.</p>
</li>
</ul>
<h1 id="heading-nginx-ornatish">Nginx o‘rnatish</h1>
<p>Nginx’ni o‘rnatish uchun quyidagi buyruqni bajaring:</p>
<pre><code class="lang-bash">$ sudo apt install nginx -y
</code></pre>
<p>Nginx’ni ishga tushirish:</p>
<pre><code class="lang-bash">$ sudo systemctl start nginx
</code></pre>
<p>Nginx’ni tizim ishga tushganda avtomatik yuklanadigan qilish:</p>
<pre><code class="lang-bash">$ sudo systemctl <span class="hljs-built_in">enable</span> nginx
</code></pre>
<p>Nginx xizmatining holatini tekshirish:</p>
<pre><code class="lang-bash">$ sudo systemctl status nginx
</code></pre>
<h1 id="heading-mysql-ornatish">MySQL o‘rnatish</h1>
<p>MySQL ma’lumotlar bazasi serverini o‘rnatish:</p>
<pre><code class="lang-bash">$ sudo apt install mysql-server -y
</code></pre>
<p>MySQL xizmatini ishga tushirish:</p>
<pre><code class="lang-bash">$ sudo systemctl start mysql
</code></pre>
<p>MySQL xizmatini avtomatik ishga tushadigan qilish:</p>
<pre><code class="lang-bash">$ sudo systemctl <span class="hljs-built_in">enable</span> mysql
</code></pre>
<p>MySQL holatini tekshirish:</p>
<pre><code class="lang-bash">$ sudo systemctl status mysql
</code></pre>
<p>MySQL xavfsizlik sozlamalarini o‘rnatish:</p>
<pre><code class="lang-bash">$ sudo mysql_secure_installation
</code></pre>
<p>Ushbu buyruq bajarilgandan so‘ng, tizim sizdan ba’zi xavfsizlik choralari bo‘yicha savollarga javob berishingizni talab qiladi.</p>
<h1 id="heading-php-ornatish">PHP o‘rnatish</h1>
<p>PHP va PHP-FPM’ni o‘rnatish uchun quyidagi buyruqlarni bajaring:</p>
<pre><code class="lang-bash">$ sudo apt install php php-fpm -y
$ sudo apt install php-mysql php-cli -y
</code></pre>
<p>PHP versiyasini tekshirish:</p>
<pre><code class="lang-bash">$ php -v
</code></pre>
<p>PHP-FPM xizmatini ishga tushirish:</p>
<pre><code class="lang-bash">$ sudo systemctl start php8.3-fpm
$ sudo systemctl <span class="hljs-built_in">enable</span> php8.3-fpm
</code></pre>
<h1 id="heading-php-fpm-sozlash">PHP-FPM sozlash</h1>
<p>PHP-FPM socket manzilini tekshirish:</p>
<pre><code class="lang-bash">$ ss -pl | grep php
</code></pre>
<p>PHP-FPM konfiguratsiya faylini tahrirlash:</p>
<pre><code class="lang-bash">$ sudo nano /etc/php/8.3/fpm/pool.d/www.conf
</code></pre>
<p>Faylda quyidagi qatorlarni toping va <code>www-data</code> foydalanuvchisi sifatida ishga tushirilganligiga ishonch hosil qiling:</p>
<pre><code class="lang-bash">user = www-data
group = www-data
</code></pre>
<p>O‘zgarishlarni saqlang va chiqib keting.</p>
<h1 id="heading-nginxni-php-fpm-bilan-konfiguratsiyalarni-bir-birga-moslash">Nginx’ni PHP-FPM bilan konfiguratsiyalarni bir birga moslash</h1>
<p>Veb-katalogda <code>index.php</code> faylini yarating:</p>
<pre><code class="lang-bash">$ sudo touch /var/www/html/index.php
</code></pre>
<p>Faylga quyidagi ma’lumotlarni qo‘shing:</p>
<pre><code class="lang-bash">$ <span class="hljs-built_in">echo</span> <span class="hljs-string">"&lt;?php phpinfo(); ?&gt;"</span> | sudo tee /var/www/html/index.php
</code></pre>
<p>Standart Nginx konfiguratsiyasini olib tashlang va yangi virtual xost konfiguratsiya faylini yarating:</p>
<pre><code class="lang-bash">$ sudo nano /etc/nginx/sites-available/app.example.com.conf
</code></pre>
<p>Faylga quyidagi kodni kiriting (o‘z domeningizga mos ravishda o‘zgartiring - <em>app.example.com</em> o’rniga):</p>
<pre><code class="lang-bash">server {
    listen 80;
    server_name app.example.com;

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files <span class="hljs-variable">$uri</span> <span class="hljs-variable">$uri</span>/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}
</code></pre>
<p>Konfiguratsiyani saqlang va chiqib keting.</p>
<p>Nginx’ni qayta yuklang:</p>
<pre><code class="lang-bash">$ sudo systemctl restart nginx
</code></pre>
<p>HTTP port 80’ni ochish:</p>
<pre><code class="lang-bash">$ sudo ufw allow 80/tcp
</code></pre>
<h1 id="heading-serverni-xavfsiz-qilish">Serverni xavfsiz qilish</h1>
<p>UFW (Uncomplicated Firewall) orqali Nginx uchun kerakli portlarni oching:</p>
<pre><code class="lang-bash">$ sudo ufw allow <span class="hljs-string">'Nginx Full'</span>
$ sudo ufw reload
</code></pre>
<p>SSL sertifikatlarini o‘rnatish uchun Certbot’ni o‘rnating va sertifikat yarating:</p>
<pre><code class="lang-bash">$ sudo apt install python3-certbot-nginx
$ sudo certbot --nginx --agree-tos --redirect --email hello@example.com -d app.example.com
</code></pre>
<p>SSL sertifikatining avtomatik yangilanishini tekshirish:</p>
<pre><code class="lang-bash">$ sudo certbot renew --dry-run
</code></pre>
<p>Nginx’ni qayta yuklang:</p>
<pre><code class="lang-bash">$ sudo systemctl restart nginx
</code></pre>
<h1 id="heading-xulosa">Xulosa</h1>
<p>Bu maqolada Ubuntu 24.04 serverida LEMP to‘plamini o‘rnatish va sozlash bo‘yicha batafsil qo‘llanma taqdim etildi. Savollaringiz bo’lsa izohlarda qoldiring. Endi siz serverda Nginx, MySQL va PHP ishlashini tekshirib, veb-ilovalar ishlab chiqish va joylashtirishni boshlashingiz mumkin.</p>
]]></content:encoded></item><item><title><![CDATA[Linux operatsion tizimlarida yangi foydalanuvchi yaratish]]></title><description><![CDATA[Linux operatsion tizimida xususan virtual serverda operation tizim uchun yangi foydalanuvchi yaratish usulini ko'rib chiqamiz. Foydalanuvchi qo‘shish uchun quyidagi buyruqdan foydalanishimiz mumkin:
useradd [foydalanuvchi_nomi]

Masalan:
useradd test...]]></description><link>https://rashidovn.uz/linux-operatsion-tizimlarida-yangi-foydalanuvchi-yaratish</link><guid isPermaLink="true">https://rashidovn.uz/linux-operatsion-tizimlarida-yangi-foydalanuvchi-yaratish</guid><category><![CDATA[Linux]]></category><category><![CDATA[linux-basics]]></category><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 09 Feb 2025 20:53:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1739134348515/52e1c2d9-5691-4f0c-9260-df8b5f27d07e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Linux operatsion tizimida xususan virtual serverda operation tizim uchun yangi foydalanuvchi yaratish usulini ko'rib chiqamiz. Foydalanuvchi qo‘shish uchun quyidagi buyruqdan foydalanishimiz mumkin:</p>
<pre><code class="lang-bash">useradd [foydalanuvchi_nomi]
</code></pre>
<p>Masalan:</p>
<pre><code class="lang-bash">useradd testuser
</code></pre>
<p>Ushbu buyruq avtomatik ravishda yangi foydalanuvchini yaratadi, lekin u foydalanuvchilar guruhga kiritilmaydi shuningdek unga uy katalogi yaratilmaydi va parol o‘rnatilmaydi. Asosiy sozlamalar uchun quyidagi kalitlardan foydalanishingiz mumkin:</p>
<ul>
<li><p><code>-d</code> – Foydalanuvchining uy katalogini ko‘rsatadi. Agar bunday katalog mavjud bo‘lmasa, u yaratilmaydi.</p>
</li>
<li><p><code>-G</code> – Foydalanuvchi qo‘shiladigan guruhlarni belgilaydi.</p>
</li>
<li><p><code>-m</code> – Uy katalogini yaratadi.</p>
</li>
<li><p><code>-s</code> – Foydalanuvchi uchun standart qobiqni (shell) ko‘rsatadi. Standart qobiq – <code>sh</code>.</p>
</li>
</ul>
<p><strong>Misol uchun:</strong></p>
<pre><code class="lang-bash">useradd testuser -d /home/user -m -G users -s /bin/bash
</code></pre>
<p>Shuningdek, <code>-p</code> kalitidan foydalangan holda parolni ko‘rsatish mumkin, ammo bu holda parol ekranda ko‘rinadi( <em>ya’ni terilgan kommandalardan tarixidan parol ko’rinib qoladi</em>). Shuning uchun, foydalanuvchi yaratib bo‘lgandan keyin quyidagi buyruq yordamida parolni o‘zgartirish tavsiya etiladi:</p>
<pre><code class="lang-bash">passwd testuser
</code></pre>
<p>Agar siz foydalanuvchini o‘zgartirmoqchi yoki yetishmayotgan parametrlarni qo‘shmoqchi bo‘lsangiz, <code>usermod</code> buyruqidan foydalanishingiz mumkin:</p>
<pre><code class="lang-bash">usermod testuser -d /home/user -m -G users -s /bin/bash
</code></pre>
<p>Agar foydalanuvchiga administrator huquqlarini berish kerak bo‘lsa, tizimda <code>sudo</code> buyrug’idan foydalanishingiz kerak bo’ladi.</p>
<p>Buning uchun <code>/etc/sudoers</code> faylini tahrirlashingiz va foydalanuvchini <code>root</code> foydalanuvchisi bilan bir qatorda qo‘shishingiz kerak.</p>
<p>Har bir tizimda bu jarayon biroz farq qilishi mumkin, masalan, Debian’da quyidagicha bo‘ladi:</p>
<p><img src="https://mclouds.ru/wp-content/webp-express/webp-images/doc-root/wp-content/uploads/2022/12/Sudoers-1.png.webp" alt /></p>
<p>Foydalanuvchini o‘chirish uchun quyidagi buyruqdan foydalaning:</p>
<pre><code class="lang-bash">userdel [foydalanuvchi_nomi]
</code></pre>
<p>Masalan, <strong>testuser</strong> foydalanuvchisini o‘chirish:</p>
<pre><code class="lang-bash">userdel testuser
</code></pre>
<p>Agar foydalanuvchining uy katalogini ham o‘chirmoqchi bo‘lsangiz, <code>-r</code> kalitidan foydalaning:</p>
<pre><code class="lang-bash">userdel -r testuser
</code></pre>
<p>Bu buyruq foydalanuvchini tizimdan o‘chiradi va uning uy katalogi ham butunlay yo‘qoladi.</p>
]]></content:encoded></item><item><title><![CDATA[Achchiq tajriba: Qutqaruvchi sindromi -haddan tashqari ko'p narsalarni zimmangizga olishni qanday to'xtatish mumkin?]]></title><description><![CDATA[Qutqaruvchi sindromi — bu inson doimo boshqalarga yordam berishga intiladigan holat, hatto bu o'ziga zarar yetkazsa ham. Bunday odamlar ko'pincha o'z manfaatlarini boshqalarnikidan pastroqga qo'yadilar, bu esa hayotda muammolarga olib kelishi mumkin....]]></description><link>https://rashidovn.uz/achchiq-tajriba-qutqaruvchi-sindromi-haddan-tashqari-kop-narsalarni-zimmangizga-olishni-qanday-toxtatish-mumkin</link><guid isPermaLink="true">https://rashidovn.uz/achchiq-tajriba-qutqaruvchi-sindromi-haddan-tashqari-kop-narsalarni-zimmangizga-olishni-qanday-toxtatish-mumkin</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 04 Aug 2024 11:08:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1722769691566/c3fca2c3-8e57-45f2-9805-16bd114760ca.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Qutqaruvchi sindromi — bu inson doimo boshqalarga yordam berishga intiladigan holat, hatto bu o'ziga zarar yetkazsa ham. Bunday odamlar ko'pincha o'z manfaatlarini boshqalarnikidan pastroqga qo'yadilar, bu esa hayotda muammolarga olib kelishi mumkin.</p>
<p>Ishda ko'p vazifalar bilan band bo'lgan paytingizda, bir hamkasbingiz kelib, xatolarni tuzatishga yoki boshqa ishchi vazifani bajarishga yordam berishingizni so'ragan paytlar bo'lganmi? O'zingizning ishlaringiz bilan band bo'lishingizga qaramay, ishlarni tashlab, yordamga shoshilasiz. Natijada, o'z loyihalaringiz kechikadi va bajarilgan vazifalarning sifati yomonlashadi. Hamkasblar sizning doimo yordam berishingizga odatlanib qoladilar va hatto o'zlari hal qila oladigan muammolarni ham sizdan so'ray boshlaydilar.</p>
<p>Bir qarashda bunday xatti-harakatlar juda g'amxo'r va yaxshi ko'rinadi, lekin amalda bu charchoqqa va unumdorlikning pasayishiga olib keladi. Buning orqasida, agar hammani birdek yordamlashmasangiz, sizni qadrlamaydilar yoki hurmat qilmaydilar degan qo'rquv bo'lishi mumkin.</p>
<p>O'zingizni tanidingizmi? Tabriklayman, sizda <code>qutqaruvchi sindromi</code> bor..</p>
<h3 id="heading-muammoni-anglang"><strong>Muammoni anglang</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1722768236395/65479f1a-aaac-4a29-a09a-428eb1553b05.png" alt class="image--center mx-auto" /></p>
<p>Birinchi va eng muhim qadam — muammoni anglash. Qutqaruvchi sindromi ko'pincha sekin-sekin paydo bo'ladi, inson asta-sekin ko'proq va ko'proq majburiyatlarni o'z zimmasiga oladi. Sizdan hisobot tayyorlashda, ma'lumotlarni yuklab olishda, o'zi yaratgan bazasi (database) qanday ishlashini tushuntirishda yordam so'rashadi, garchi siz faqat frontend dasturchisi bo'lsangiz ham. Ish davomida bilimlarni to'pladingiz va endi hamkasblar sizdan hamma narsani, hatto majburiyatlaringiz doirasidan tashqaridagi narsalarni ham so'rashadi.</p>
<p>Agar siz doimiy ravishda charchoq, tashvish yoki asabiylashishni his qilsangiz, ehtimol, o'zingizga juda ko'p narsani olganingizni tan olish vaqti keldi. Tana va his-tuyg'ularingizni tinglang: charchoq, uyqusizlik va doimiy stress hisi biror narsani o'zgartirish vaqti kelganligini bildiruvchi signaldir.</p>
<p>Muammoni anglash uchun harakatlaringiz va reaksiyalaringizni tahlil qilishga harakat qiling. Boshqalarga yordam berishga qancha vaqt sarflayotganingizni va bu o'z vazifalaringizga qanday ta'sir qilayotganini yozib oling. Bu sizga haqiqatni ko'rishga va qutqaruvchi sindromining hayotingizga qanchalik kuchli ta'sir qilayotganini tushunishga yordam beradi.</p>
<h3 id="heading-chegarani-qanday-topish-mumkin"><strong>Chegarani qanday topish mumkin</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1722768593854/723039e7-18f8-4646-a46e-ffc7a5f16f6a.png" alt class="image--center mx-auto" /></p>
<p>Muammoni anglagandan so'ng, o'z chegaralaringizni belgilash muhimdir. Siz uchun qaysi vazifalar va majburiyatlar ustuvor ekanligini va qaysi birlarini keyinga surish, topshirish yoki umuman rad etish mumkinligini aniqlang. Ish vaqti va dam olish vaqtini belgilab, ushbu qoidalarga rioya qiling. Yuklanish haddan tashqari bo'lgan paytlarni aniqlashni va charchashning oldini olish uchun o'z vaqtida choralar ko'rishni o'rganing.</p>
<p>Masalan, agar juma kuni soat 17:55 da sizga ko'zlari katta qilib yordam so'rab kelsalar, bu normal emas. Ofisda sizni ish joyida kutishlari mumkin, agar siz masofadan ishlayotgan bo'lsangiz, vazifani profil chatga kiritish yoki so'rash o'rniga shaxsiy xabarlarda murojaat qilishadi.</p>
<p>Bunday vaziyatlarda shaxsiy xabarlardagi savollarni profil chatlariga yo'naltirish mumkin. Ish joyida esa naushnik va «men bandman» qiyofasi ko'plab kutilmagan so'rovlarni kamaytirishga yordam beradi.</p>
<p>O'z chegaralaringizni belgilash orqali o'z vaqtingiz va vazifalaringizni yaxshiroq boshqarishingiz va ish va shaxsiy hayot o'rtasida muvozanatni saqlashingiz mumkin bo'ladi.</p>
<h3 id="heading-yoq-deyishni-organing"><strong>Yo'q deyishni o'rganing</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1722769039475/86fb4915-4aee-466f-8c9b-aaf98a6f68dd.png" alt class="image--center mx-auto" /></p>
<p>«Yo'q» deyish san'ati qutqaruvchi sindromidan aziyat chekayotgan har bir kishi uchun o'rganishi kerak bo'lgan san'atdir. Ko'pchiligimiz rad etishdan qo'rqamiz yoki aybdorlik hissini his qilamiz, lekin rad etish — bu o'z farovonligingizga g'amxo'rlik qilishdir.</p>
<p>Kichikdan boshlang: ahamiyatsiz so'rovlarga rad javobini berishni o'rganing va asta-sekin qiyinroq holatlarga o'ting. Muloyimlik bilan rad etish usullarini sinab ko'ring, masalan: «Hozir yordam bera olmayman, lekin ehtimol keyinroq», yoki: «Menni hozir ishim ko'proq edi, keling, buni keyinroq gaplashaylik». Agar sizda vazifa trekeri bo'lsa(jira, trello yoki shunga o'xshash), vazifani kiritishni so'rang — bu ko'pincha odamlarning yarimini qaytaradi.</p>
<p>Zarur bo'lganda to'g'ri bo'lishdan qo'rqmang. Aniq chegaralarni o'rnatib, rad etishni o'rgangan holda, o'z vaqtingiz va energiyangizni haqiqatan ham muhim vazifalar uchun saqlab qolasiz. Esda tutingki, o'zingizga g'amxo'rlik qilish — bu nafaqat normal, balki uzoq muddatli muvaffaqiyat va farovonlik uchun zarurdir.</p>
<h3 id="heading-xulosa"><strong>Xulosa</strong></h3>
<p>Qutqaruvchi sindromi — bu sog'lig'ingiz va farovonligingizga salbiy ta'sir ko'rsatishi mumkin bo'lgan jiddiy muammo. Buni anglab, yechim uchun qadamlar qo'yib, siz bu holatni yengib, hayot sifatini yaxshilashingiz mumkin. O'zingizga g'amxo'rlik qilish boshqalarga yordam berishdan kam muhim emasligini esda tuting. Faqat muvozanatni saqlab, samarali va baxtli bo'lishingiz mumkin. Unutmang, hatto superqahramonlar ham dam olish kunlarini bo'ladi!</p>
]]></content:encoded></item><item><title><![CDATA[Achchiq tajriba: Miting(majlis) – bu simptom, kasallik emas]]></title><description><![CDATA[Maqolada majlis yoki miting so'zlari sinonim sifatida ishlatilgan

Nega biz miting qilamiz?
Bu savol oddiy ko'rinadi, lekin mitingni yoqtirmaydigan jamoingiz a'zolariga miting haqida aytishingiz bilan birinchi xayollaringa keladigan savol shu bo'lsa ...]]></description><link>https://rashidovn.uz/achchiq-tajriba-mitingmajlis-bu-simptom-kasallik-emas</link><guid isPermaLink="true">https://rashidovn.uz/achchiq-tajriba-mitingmajlis-bu-simptom-kasallik-emas</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 04 Aug 2024 09:32:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1722763936400/9edf8b37-c920-4223-9927-8f5566d89899.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p><em>Maqolada majlis yoki miting so'zlari sinonim sifatida ishlatilgan</em></p>
</blockquote>
<h2 id="heading-nega-biz-miting-qilamiz"><strong>Nega biz miting qilamiz?</strong></h2>
<p>Bu savol oddiy ko'rinadi, lekin mitingni yoqtirmaydigan jamoingiz a'zolariga miting haqida aytishingiz bilan birinchi xayollaringa keladigan savol shu bo'lsa kerak. Biz ishni (mehnat qilayotgan loyihangiz yoki kompaniyangiz topshiriqlarini) bajarish uchun uchrashamiz ;). Har doim (odatda?) unday bo'lmaydi, ammo uchrashuvlarning maqsadi qandaydir vazifani bajarishga erishishdir. Ishni bajarish, ma'lumot almashish, qaror qabul qilish yoki hech bo'lmaganda jamoaingizni o'zaro sinxron qilish orqali ma'lum bir darajada progressga erishishingiz mumkin . Mana shu mitinglarning asosiy maqsadi hisoblanadi: Xodimlaringiz bir vaqtda barchasi bir joyda, jismoniy(oflayn) yoki virtual (onlayn) va siz jamoa bilan real vaqt rejimida suhbatlashishingiz mumkin. Hech qanday telegramdan xabarlar va telefon qilib eslatmalar yuborish, kechikishlar yo'q, faqat progress. Ammo "juda ko'p mitinglar" deb nomlangan kasallik aslida bu kasallikning simptomidir. <strong>Bu qanday simptom?</strong> Avvalambor, uchta narsaning:</p>
<ul>
<li><p>Majlis - bu jarayonning buzilishining simptomi. Biz mitinglarni yordamchi, zaxira variant sifatida ishlatamiz. Ishni qanday qilishni bilmasak yoki maqsadga erishishga yordam beradigan jarayoni tushunmasak o'rganishni xohlamasak - majlislarni belgilaymiz.</p>
</li>
<li><p>Majlis - bu status uchun kurashning simptomi. Siz majlislarda qatnashish orqali muhimligingizni ko'rsatmoqchi bo'lasiz- majlisdagi o'rningiz sizning loyihada aslida bajarishingiz kerak bo'lgan ishdan ko'ra muhim bo'lib qoladi.</p>
</li>
<li><p>Majlis - bu o'zi nima ish qilayotganimizni bilmayotganimiz simptomi. Odatda bu loyiha ishtirokchilarining nima ish qilish kerakligi haqida aniq topshiriqlar berilmaganidan yoki xodim topshiriqni tushunmaganda sodir bo'ladi. Biz uchrashuvlarni mahsuldorlik bilan adashtiramiz va majlissiz nima ish qilishni bilmaymiz (yoki majlisni qilingan ish sifatida ko'rsatishga harakat qilamiz).</p>
</li>
</ul>
<h2 id="heading-majlislarning-davosi">Majlislarning davosi</h2>
<p>Professional loyiha menejerlarining deyarli hammasida shaxsiy taym menejment yaxshi nazoratga olingan bo'ladi, ammo hammada ham emas. Undan tashqari jamoada faqat bitta xodim o'z taym menejmentni tartibga solgan bo'lsa bu jamoaga muammolarni hal qilishga yordam bermaydi. Jamoada struktural muammoni hal qilish kerak. Shunday ekan, rahbar nima qilishi kerak? Ko'pchilik majlislarga kunlik o'tkazishni muammoning yechimi sifatida ko'rsatadi. Muammo juda ko'p uchrashuvlar emas, balki ular samarasiz ekanligi. Agar majlisda muhokama qilinadigan masalalarga hamma o'zining kompetensiyasi doirasi tayyorlanib kelsa va majlisda diqqatni jamlashgan bo'lsa bu majlis juda samarali bo'lardi. Yuqoridagi masala eshitilishi juda yaxshi bo'lsada amalda juda kamdan kam shunday bo'ladi. Majlislarni ideal o'tkazishga kuch sarflagandan ko'ra jamoaning jarayonlarini (bu haqida alohida maqola bo'ladi) tashkillashtirish va tartibga solishga vaqtingizni investitsiya qilsangiz majlislar soni o'z-o'zidan kamayib ketadi. Siz buni qilmaguningizcha, ehtimol majlislar do'zaxida qolib ketasiz.</p>
<h3 id="heading-majlislarda-kop-vaqt-behuda-otkaziladi">Majlislarda ko'p vaqt behuda o'tkaziladi.</h3>
<blockquote>
<p>Quyida qisqacha majlislarda behuda vaqtni yo'q qilishning eng yaxshi uchta maslahati quyidagilar:</p>
</blockquote>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Jonli muhokamani talab qilmaydigan narsalarni boshqa usullar bilan bajaring. Jamoaningizga yangilaniklar, kompaniya yangiliklari, hujjatlar yoki oldindan qabul qilingan qarorlarni muhokama qilish uchun majlis vaqtini sarflamang. Bunday barcha uchrashuvlarni bekor qiling (umumiy korporativ majlislar va bayramlar bundan mustasno). Uchrashuvlar aniq masalalarni muhokamasi uchun uchun kerak, ular tezroq harakat qilishga yordam beradi.</div>
</div>

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Eng qiyin masalani birinchi muhokama qiling. Uni darhol stolga qo'ying, 5 daqiqadan keyin. Men juda ko'p soatlab o'tkaziladigan majlislarda bo'lganman, ular birinchi 55 daqiqasi ahamiyati kam kerakli masalalar muhokamasi va faqat oxirgi 5 daqiqada biz haqiqatan ham hal qilishimiz kerak bo'lgan narsani muhokama qilingan. Ko'pincha asosiy masalarga yechim topilmaydi va biz yana bitta majlis vaqtini belgilab majlisni yakunlaganmiz ;)</div>
</div>

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Majlislarni yaxshilashning yana bir usuli - bu protokolni olib borish. Siz majlisda nima sodir bo'lganini hujjatlashtirishingiz va keyin bu haqida hammaga xabar qilishingiz kerak. Agar majlisda qaror qabul qilingan bo'lsa, lekin kerakli xodimlar va ishtirokchilar xabardor qilinmasa unda majlis nega qilindi?</div>
</div>

<p><em>Yuqoridagi fikrlarim asosan tajribadan kelib chiqib yozilgan va qatiy qoida hisoblanmaydi, hammani tajriba yo'li har hil bo'ladi. Maqolani yozishdan asosiy maqsad shaxsiy tarjibani ulashish. Mulohazalaringiz va fikrlaringiz bo'lsa izohlarda yozib qoldiring.</em></p>
]]></content:encoded></item><item><title><![CDATA[Achchiq tajriba: uzr qila olmadim, kechirasiz  ulgurmadim, esimdan chiqib qolibdi.]]></title><description><![CDATA[Hech jamoayingizdan shunga o‘xshash javoblar olganmisiz? Ayniqsa, bu Jira (Trello, Clickup yoki alternativ)dagi doskada kiritiladigan vazifalar emas, balki ahamiyati kamroq kichik topshiriqlar yoki o'zaro kelishuvlarda bu javoblar tez-tez eshitasiz.
...]]></description><link>https://rashidovn.uz/achchiq-tajriba-uzr-qila-olmadim-kechirasiz-ulgurmadim-esimdan-chiqib-qolibdi</link><guid isPermaLink="true">https://rashidovn.uz/achchiq-tajriba-uzr-qila-olmadim-kechirasiz-ulgurmadim-esimdan-chiqib-qolibdi</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Tue, 16 Jul 2024 15:30:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1721136887615/7a85fe85-da45-4eec-8e85-1b0eca81668b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hech jamoayingizdan shunga o‘xshash javoblar olganmisiz? Ayniqsa, bu Jira (Trello, Clickup yoki alternativ)dagi doskada kiritiladigan vazifalar emas, balki ahamiyati kamroq kichik topshiriqlar yoki o'zaro kelishuvlarda bu javoblar tez-tez eshitasiz.</p>
<p><code>— bugungi yig'ilish uchun hujjatni o‘qidingizmi? — yo‘q, ulgurmadim.</code></p>
<p>Bu qanday oqibatlarga olib keladi? Tizimli fikrlab aytsam, sabablaridan emas, balki uning jamoa holatiga va natijalarga qanday ta’sir ko‘rsatishidan boshlaymiz.</p>
<p>Bu yerda biz loyiha menejerining boshqaruvda aloqa(communication) orqali bajariladigan amalarida uzilishini ko‘ramiz.</p>
<p>Bu nimaga olib keladi:</p>
<p>Natijalar pasayadi. Kichik muddatlar kechikishi katta kechikishlarga aylanadi. Biror narsani muhokama qilishga ulgurmasangiz — bu vazifa sprintga tushmaydi. Natijada butun loyiha bir oyga kechikadi.</p>
<p>Tarjibali professional, mas’uliyatli odamlar umumiy mas’uliyatsizlik muhitida motivatsiyasini yo‘qotadi. Bu yomon ekanini tushuntirishga hojat yo‘q.</p>
<p>Jamoaning natijasiga, jumladan, muddatlari uchun javobgar bo‘lgan loyiha menejeri kechikishlarni minimallashtirish uchun nazoratni kuchaytirishi kerak bo‘ladi. Shuning uchun u charchagan va asabiy bo‘lib qoladi, tajribadan aytaman ;)</p>
<p>Iqtisodning siyosatdan ustun turgani kabi bu masalaning iqtisodiy zararlarni (qanchalik qimmatga tushishini) baholaymiz. Jamoa uchun:</p>
<p>Agar bu epizodik emas, balki tizimli muammo bo‘lsa, bir-ikki marta sprintga tushmasdan yillik loyiha bir oyga kechikadi.</p>
<p>Bundan tashqari, charchagan jahli chiqqan timlid boshqaruv xatolarini qiladi, ularning qiymatini baholab bo‘lmaydi ;) Loyiha menejeri uchun: muvaffaqiyatsiz loyiha bu — karyerasining bir yil ko‘tarilmasligiga olib kelishi mumkin.</p>
<p>Nega bunday bo‘ladi?</p>
<p>Olib keladigan zararlar ro'yxatini tuzishni to'xtatib bunday bo'lishiga olib keladigan sabablarni keltirib o'taman:</p>
<p>Jamoa ishining umumiy noaniqligi. Odamlar nima va nima uchun qilayotganlarini va natijalarni ko‘rmaydi. Bu ularning maqsadi emas, balki yuqoridan majburlangan. Natijada ular ishga mos ravishda munosabatda bo‘ladilar.</p>
<p>Alohida shaxslarning tarjibasizligi. Ba’zi dasturchilar faqat kod yozish ularning ishi deb o‘ylaydilar, qolgan hamma narsani boshqasi qilishi kerak. Men ham bir paytlar shunday bo‘lganman. Bu katta noto‘g‘ri tushuncha. Dasturchi faqat kod yozmaydi, balki jamoaning natijasi uchun javobgardir. Bu hech bo‘lmaganda, yuqoridagi kichik mayda ishlarni bajarish kerakligini anglatadi.</p>
<p>Nimalar sabab bo'la olmaydi:</p>
<p>Alohida shaxslarning ortiqcha yuklanishi. Sabablari ro‘yxatiga kirmaydi! Agar odam ortiqcha yuklangan bo‘lsa, uning vazifasi bu haqida oldindan ogohlantirish, ko'p ishlari borligini vazifani qilmaganliga fakt sifatida loyiha menejeriga qo‘yilmaydi. Agar shunday qilayotgan bo'lsa bundan bitta yuqoridagi punktga qarang.</p>
<p>Loyiha menejeri tomonidan vazifaning noaniq qo‘yilishi. Kim, nima va qachon qilishi kerakligi aniq bo‘lmagan - bu ham sabab emas. Mas’uliyatli xodim bu narsalarni oldindan aniqlashtiradi.</p>
<p>Eng muhimi barcha sabablar va sabablar-emaslar oxir-oqibat loyiha menejeriga borib taqaladi. Bu sizning vazifangiz jamoaning ishini tashkil qilish va odamlarni mas’uliyatli xodimlarga aylantirish.</p>
<p>Xo‘sh, nima qilish kerak?</p>
<p>Jamoaning ishini tashkil qilish :) Maqsadni ishtirokchilar bilan birga qo‘yish kerak, shunda bu ularning maqsadi bo‘ladi (bu haqida batafsil alohida bo‘ladi). Jarayonlarni tartibga solish va hokazo.</p>
<p>Maqolada ko'tarilgan muammoni communication (o'zaro aloqa ) nuqtai nazaridan ko‘rib chiqamiz. Bir paytlar men ham xodimlarning «ulgurmadim» kabi javoblariga «xo‘p» derdim. Bunday qilmaslik kerak. Eng muhimi, xodimlarning bunday javoblariga qoniqmaslik. Metamodel yordamida (bu haqida alohida maqola bo‘ladi) boshqaruv qarorlarini qabul qilayotganingizda loyihadagi real vaziyatni aniqlab olishingiz. Quyida xodimlar bergan javoblarga nisbatan berishingiz mumkin bo'lgan savollar: — «ulgurmadim» — «uning o‘rniga nima qilding?» — «qila olmadim» — «nima halaqit berdi?» Muhimi, xodimingiz keyingi safar boshqacha javob qilishga majbur bo'lishi kerak , shunda holat takrorlanmaydi. Xodimga tushuntirish kerak, bahonalar siz bilan o‘tmaydi, haqiqiy sababni topasiz va shunday qoldirmaysiz.</p>
<p>Hamma uchun, shu jumladan o'zingiz uchun, qat’iy o‘yin qoidalarini kiriting. Asosiysi — kelishuvlar(meetinglar, muddatlar, kichik ahamiyati kam bo'lgan vazifalar masalan meetingacha texnik topshiriqni o'qish) bajarish va xatolar ustida ishlash. Bu nimani beradi? Jamoa va menejer uchun muhim bo'lgan loyihaning muvaffaqiyatli yakunlanish ehtimoli oshadi. Xodimlaringiz o‘sadi, va shu bilan jamoaning murakkab vazifalarni hal qilish qobiliyati ham oshadi. Albatta, loyiha menejeri cheksiz eslatmalar, pinglashlar, turtishlardan xolos bo‘ladi. Nihoyat, qiziqarli va foydali narsalar bilan shug‘ullanishi mumkin.</p>
<p>Ushbu maqolada loyiha boshqaruvdagi bir nechta asosiy kontseptsiyalar — communication, loyiha budjeti(iqtisodiy harajatlarni boshqaruvi) va ba'zi instrumentlardan (boshqaruv fraymvorklari) foydalanib loyihaning real holatiga to‘g‘ri baholash va to'g'ri qaror qabul qilish imkon beradi. Cheksiz boshqaruv fraymvorklari (kanban, scrum, cpm, scrumBan va hkz) o'ylamasdan ishlatish loyihaga foydadan ko'ra ko'proq zarar keltiradi - Achchiq tajribada sinovdan o‘tgan.</p>
]]></content:encoded></item><item><title><![CDATA[Loyiha versiyasidagi raqamlar nimani anglatadi]]></title><description><![CDATA[Semantik Versiyalash (SemVer) dasturiy ta'minot uchun versiyalash sxemasi bo'lib, loyihadagi yangi o'zgarishlar haqida ma'lumotni tartiblab berishga qaratilgan tushuncha hisoblanadi.

🔹 SemVer uch qismli versiya raqamidan foydalanadi: MAJOR.MINOR.PA...]]></description><link>https://rashidovn.uz/loyiha-versiyasidagi-raqamlarni-nimani-anglatadi</link><guid isPermaLink="true">https://rashidovn.uz/loyiha-versiyasidagi-raqamlarni-nimani-anglatadi</guid><category><![CDATA[versiya]]></category><category><![CDATA[semantic versiya]]></category><category><![CDATA[loyihalar]]></category><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Fri, 12 Jul 2024 19:10:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1720810074909/828cdc14-6b94-4ea5-8277-4c0ae64927cb.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Semantik Versiyalash (SemVer) dasturiy ta'minot uchun versiyalash sxemasi bo'lib, loyihadagi yangi o'zgarishlar haqida ma'lumotni tartiblab berishga qaratilgan tushuncha hisoblanadi.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720811253068/a52b91a7-176f-447b-b2b8-dd86a476eb07.jpeg" alt class="image--center mx-auto" /></p>
<p>🔹 SemVer uch qismli versiya raqamidan foydalanadi: <code>MAJOR.MINOR.PATCH</code>.</p>
<ul>
<li><p><code>MAJOR</code> versiyasi: Loyihaning oldingi versiyalari bilan mos tushmaydigan API o'zgarishlar qilinganda bu raqam oshirildi.</p>
</li>
<li><p><code>MINOR</code> versiyasi: Loyihaning oldingi versiyasi bilan mos keladigan tarzda yangi funksionallik qo'shilganda bu raqam oshiriladi.</p>
</li>
<li><p><code>PATCH</code> versiyasi: Loyihaning oldingi versiyasi bilan mos keladigan xato tuzatishlar (Bug fix) kiritilganda oshiriladi.</p>
</li>
</ul>
<p>🔹 Amaliy misol:</p>
<p>1 - Loyihani dastlabki versiyasi <code>0.1.0</code> bilan boshlang.</p>
<p>2 - Birinchi stable (barqaror) versiyasi chiqarilish stable release : <code>1.0.0.</code> kabi nomlashingiz ungacha bo'lgan o'zgarishlariningiz versiyalarini minor va patch lar orqali saqlab borsangiz bo'ladi</p>
<p>3 - Keyingi o'zgarishlarda agar <code>patch</code> chiqarmoqchi bo'lsangiz : <code>1.0.0</code> versiya uchun bug fix o'zgarishlarini versiyani <code>1.0.1</code> kabi versiyada chiqarishingiz mumkin.</p>
<p>4- Loyihaga oldingi versiya bilan mos bo'lgan yangi funksional (feature) qo'shganingizda aytaylik oldingi versiya <code>1.0.3</code> bo'lsa yangi funksional qo'shilgan versiyangiz <code>1.1.0</code> ko'rinishda bo'lishi mumkin. (<code>minor</code> o'zgarish)</p>
<p>5- Loyihaning oldingi versiyasi bilan mos kelmaydigan yangi funksionallar qo'shilgan versiyasi - <code>major</code>. Masalan o'zgarishlar kiritilmasdan oldingi versiyasi <code>1.2.2</code> bo'lsa Major o'zgartirish kiritgan versiyangiz <code>2.2.0</code> ko'rinishda bo'ladi.</p>
<p>6 - Maxsus versiyalar va reliz chiqarishdan olding versiyalar qo'shimcha belgilab yordamgi <code>beta</code>, <code>alpha</code> rc (pre-reliz) kabi versiyalarga ajratib olish mumkin.</p>
<p>Masalan: <code>1.0.0-alpha</code>, <code>1.0.0-beta</code>, <code>1.0.0-rc</code> Yaratilish sanasini qo'shish : <code>1.0.0+20240313144700</code>.</p>
]]></content:encoded></item><item><title><![CDATA[Golang tilida shart operatorlarini bilan ishlash]]></title><description><![CDATA[Go tilidagi shartli operatorlar dasturlarni dinamik va moslashuvchan qilishda juda muhim hisoblanadi. Ular turli shartlar asosida kod bloklarini bajarishga imkon beradi, bu esa mustahkam va samarali dasturlar yaratishga yordam beradi. Ushbu qo‘llanma...]]></description><link>https://rashidovn.uz/golang-tilida-shart-operatorlarini-bilan-ishlash</link><guid isPermaLink="true">https://rashidovn.uz/golang-tilida-shart-operatorlarini-bilan-ishlash</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sat, 06 Jul 2024 12:27:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1720268543360/934315fc-4ace-4570-bc58-2eb842b32697.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Go tilidagi shartli operatorlar dasturlarni dinamik va moslashuvchan qilishda juda muhim hisoblanadi. Ular turli shartlar asosida kod bloklarini bajarishga imkon beradi, bu esa mustahkam va samarali dasturlar yaratishga yordam beradi. Ushbu qo‘llanmada biz Go tilida mavjud bo‘lgan shartli operatorlar va ular bilan ishlash imkoniyatlarini ko‘rib chiqamiz.</p>
<h3 id="heading-taqqoslash-operatorlari">Taqqoslash operatorlari</h3>
<p>Taqqoslash operatorlari ikki qiymatni solishtirish va ularning o‘zaro bog‘liqligini aniqlash uchun ishlatiladi. Go tilida keng qo‘llaniladigan taqqoslash operatorlari quyidagilardan iborat:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Operator</td><td>Tavsifi</td><td>Misol</td></tr>
</thead>
<tbody>
<tr>
<td><code>&lt;</code></td><td>Kichik</td><td><code>x &lt; y</code></td></tr>
<tr>
<td><code>&lt;=</code></td><td>Kichik yoki teng</td><td><code>x &lt;= y</code></td></tr>
<tr>
<td><code>&gt;</code></td><td>Katta</td><td><code>x &gt; y</code></td></tr>
<tr>
<td><code>&gt;=</code></td><td>Katta yoki teng</td><td><code>x &gt;= y</code></td></tr>
<tr>
<td><code>==</code></td><td>Teng</td><td><code>x == y</code></td></tr>
<tr>
<td><code>!=</code></td><td>Teng emas</td><td><code>x != y</code></td></tr>
</tbody>
</table>
</div><h3 id="heading-mantiqiy-operatorlar">Mantiqiy operatorlar</h3>
<p>Mantiqiy operatorlar bir nechta shartlarni birlashtirish va ularning umumiy haqiqiylik qiymatini aniqlash uchun ishlatiladi. Go tilida quyidagi mantiqiy operatorlar qo‘llab-quvvatlanadi:</p>
<ul>
<li><p><code>&amp;&amp;</code> (Mantiqiy VA)</p>
</li>
<li><p><code>||</code> (Mantiqiy YOKI)</p>
</li>
<li><p><code>!</code> (Mantiqiy EMAS)</p>
</li>
</ul>
<p>Ushbu operatorlar oddiy shartlarni birlashtirib, murakkab shartlarni yaratishga imkon beradi.</p>
<h3 id="heading-shartli-operatorlar">Shartli operatorlar</h3>
<p>Go tilidagi shartli operatorlar shartning natijasiga qarab bajarilishi kerak bo‘lgan kodning oqimini boshqaradi. Go tilida mavjud asosiy shartli operatorlar quyidagilardir:</p>
<h4 id="heading-if-operatori"><code>if</code> operatori</h4>
<p><code>if</code> operatori berilgan shart to‘g‘ri bo‘lsa, kod blokini bajarishga imkon beradi.</p>
<pre><code class="lang-go"><span class="hljs-keyword">package</span> main

<span class="hljs-keyword">import</span> <span class="hljs-string">"fmt"</span>

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
  <span class="hljs-keyword">if</span> x &gt; y {
    fmt.Println(<span class="hljs-string">"x y dan katta"</span>)
  }
}
</code></pre>
<h4 id="heading-ifelse-operatori"><code>if...else</code> operatori</h4>
<p><code>if...else</code> operatori shart to‘g‘ri bo‘lsa, bir kod blokini, noto‘g‘ri bo‘lsa esa boshqa bir kod blokini bajarishga imkon beradi.</p>
<pre><code class="lang-go"><span class="hljs-keyword">package</span> main

<span class="hljs-keyword">import</span> <span class="hljs-string">"fmt"</span>

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
  <span class="hljs-keyword">if</span> x &lt; y {
    fmt.Println(<span class="hljs-string">"x y dan kichik"</span>)
  } <span class="hljs-keyword">else</span> {
    fmt.Println(<span class="hljs-string">"x y dan katta yoki teng"</span>)
  }
}
</code></pre>
<h4 id="heading-ifelse-ifelse-operatori"><code>if...else if...else</code> operatori</h4>
<p><code>if...else if...else</code> operatori bir nechta shartlarni tekshirish va birinchi to‘g‘ri shartga mos keladigan kod blokini bajarishga imkon beradi.</p>
<pre><code class="lang-go"><span class="hljs-keyword">package</span> main

<span class="hljs-keyword">import</span> <span class="hljs-string">"fmt"</span>

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
  <span class="hljs-keyword">if</span> x &lt; y {
    fmt.Println(<span class="hljs-string">"x y dan kichik"</span>)
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> x &gt; y {
    fmt.Println(<span class="hljs-string">"x y dan katta"</span>)
  } <span class="hljs-keyword">else</span> {
    fmt.Println(<span class="hljs-string">"x y ga teng"</span>)
  }
}
</code></pre>
<h4 id="heading-ichma-ich-if-operatori">Ichma-ich <code>if</code> operatori</h4>
<p>Ichma-ich <code>if</code> operatorlari ichida boshqa bir <code>if</code> operatorini joylashtirishga va qo‘shimcha darajadagi shartli qoidalarni yaratishga imkon beradi.</p>
<pre><code class="lang-go"><span class="hljs-keyword">package</span> main

<span class="hljs-keyword">import</span> <span class="hljs-string">"fmt"</span>

<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
  <span class="hljs-keyword">if</span> x &lt; y {
    <span class="hljs-keyword">if</span> y &lt; z {
      fmt.Println(<span class="hljs-string">"x y dan kichik va y z dan kichik"</span>)
    }
  }
}
</code></pre>
<h3 id="heading-xulosa">Xulosa</h3>
<p>Go tilidagi shartli operatorlar va operatorlarni tushunish samarali va tartiblangan kod yozish uchun juda muhim. Ushbu tushunchalarni puxta o‘zlashtirib, turli holatlarga mos ravishda javob beradigan dasturlar yaratishingiz mumkin, bu esa ilovalaringizni kuchli va ko‘p funksiyali qiladi. Ushbu konstruktsiyalarni o‘z kodlaringizda sinab ko‘rib, ulardan samarali foydalanish malakasiga ega bo‘ling.</p>
]]></content:encoded></item><item><title><![CDATA[Istalgan dasturlash tilida qilishingiz mumkin bo'lgan 10 ta qiziqarli loyihalar]]></title><description><![CDATA[Dasturiy ta'minot ishlab chiqishni boshlash qiziqarli va kompyuter bilan uning tilida muloqot qilishni o'rganish hayajonli bo'lsa-da, siz bundan ham ko'proq narsalarni qilishni xohlaysiz. Asoslarni o'rganish yaxshi, lekin siz o'z ko'nikmalaringizni r...]]></description><link>https://rashidovn.uz/istalgan-dasturlash-tilida-qilishingiz-mumkin-bolgan-10-ta-qiziqarli-loyihalar</link><guid isPermaLink="true">https://rashidovn.uz/istalgan-dasturlash-tilida-qilishingiz-mumkin-bolgan-10-ta-qiziqarli-loyihalar</guid><category><![CDATA[loyihalar]]></category><category><![CDATA[projects]]></category><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 30 Jun 2024 20:30:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/cckf4TsHAuw/upload/fd8879d9d102e70cafe618f82fb388e1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dasturiy ta'minot ishlab chiqishni boshlash qiziqarli va kompyuter bilan uning tilida muloqot qilishni o'rganish hayajonli bo'lsa-da, siz bundan ham ko'proq narsalarni qilishni xohlaysiz. Asoslarni o'rganish yaxshi, lekin siz o'z ko'nikmalaringizni rivojlantirishingiz va dasturiy ta'minot ishlab chiqishning qaysi jihatiga e'tibor qaratmoqchi ekanligingizga qarab, bir necha loyiha orqali o'z tushunchalaringizni sinab ko'rishingiz kerak bo'ladi.</p>
<p>To‘g‘ri loyihani topish biroz qiyin bo‘lishi mumkin, chunki ko‘pincha qaysi ko‘nikmani birinchi bo‘lib sinab ko‘rishingiz kerakligiga amin bo‘lmaysiz, ammo xavotir olmang. Mana, ishlab chiquvchi ko'nikmalaringizni yaxshilashga yordam beradigan 10 ta qiziqarli loyiha.</p>
<h3 id="heading-oddiy-kalkulyator">Oddiy Kalkulyator</h3>
<p>O'zingizning kalkulyatoringizni yaratish nafaqat qiziqarli, balki bu juda oson loyiha bo'lib, sizga kompyuter algoritm orqali qanday qilib masala yechimlarini izlayotganini tushunishga yordam beradi. Siz kalkulyatorni ko'pgina tillarda (Python, Java, JavaScript va boshqalar) yaratishingiz mumkin, bu esa ushbu tillar bilan ishlashni xohlasangiz, eng yaxshi boshlang'ich loyihalardan biri hisoblanadi.</p>
<h3 id="heading-tic-tac-toe-oyini">Tic-Tac-Toe o'yini</h3>
<p>Hamma yaxshi tanish bo‘lgan Tic-Tac-Toe o‘yinini yaratish nafaqat biroz bolalik xotiralarini qaytaradi, balki algoritm skriptini yaratish qobiliyatingizni ham mustahkamlaydi. Tic-Tac-Toe o'yini biroz qiyin bo'lishi mumkin, ammo FreeCodeCamp’ning qo'llanmasidan foydalanishingiz mumkin.</p>
<h3 id="heading-moslashuvchan-portfolio-veb-sayti">Moslashuvchan Portfolio veb-sayti</h3>
<p>Veb-dasturlashni yoqtirasizmi? U holda, bu loyiha sizga albatta yoqadi. O'z ko'nikmalaringiz, tajribangiz va potentsial mijoz yoki ish beruvchini hayratga solmoqchi bo'lgan har qanday narsangizni namoyish qiladigan, barcha qurilmalar ekraniga moslasha oladigan moslashuvchan veb-sahifa yarating. Ushbu loyiha qiziqarli bo'lishining sababi shundaki, uni sozlash juda oson va dizayn uchun hech qanday qoidalar yo'q, bu degani siz uni xohlaganingizcha uslubda tayyorlashingiz mumkin, faqat u moslashuvchan bo'lsa bas.</p>
<h3 id="heading-todo-royxati-yoki-test-dasturi">Todo ro'yxati yoki Test dasturi</h3>
<p>Siz OOP (Ob'ektga yo'naltirilgan dasturlash) haqida eshitganmisiz? Test dasturi uning juda oddiy namunasi va uni yaratish juda oson. OOP haqida oddiy tushuncha shuki, kodni real hayotdagi holatlarga moslashtirishdir, lekin albatta bu borada ko'proq narsalar mavjud. OOP nima ekanligini va uni olti yoshli bolaga qanday tushuntirish mumkinligini bilib oling!</p>
<h3 id="heading-veb-sahifa-klonini-yaratish">Veb sahifa klonini yaratish</h3>
<p>Veb-dasturlash bo'yicha o'z ko'nikmalaringizga ishonch hosil qila boshlaganingizdan so'ng, o'zingiz yoqtirgan mavjud veb-sahifani topib, ularning sahifa dizaynini takrorlashga harakat qilib, o'zingizni biroz qiynab ko'rishingiz kerak. Bu qiyinchilik darajasi qaysi veb-sahifani klonlashni tanlashingizga bog'liq, ammo qiziqarli bo'lgan ba'zi veb-sahifalar (Airbnb, DropBox, Vogue, Apple va Dribbble).</p>
<h3 id="heading-iqtibos-yoki-mem-generator">Iqtibos yoki Mem Generator</h3>
<p>Bu yangi boshlovchilar uchun mashq, lekin bu do'stlaringiz bilan zavqlanish uchun yaratishingiz mumkin bo'lgan yana bir qiziqarli ilova. Asosan matn va tasvirlar bilan ishlash haqida bo'lib, bir necha qator kod bilan bu ishni tugatishingiz mumkin. Ilovangizni ajoyib dizayn bilan yaxshilashingiz, shuningdek, unga bir nechta funksiyalarni, masalan, tasodifiy, saqlash va ulashishni qo'shishingiz mumkin.</p>
<h3 id="heading-birlik-konverter-dasturi">Birlik Konverter Dasturi</h3>
<p>Shuningdek, OOP loyihasi bo'lib, birlik konverter dasturini yaratish sizga Ob'ektga yo'naltirilgan dasturlashni tushunishingizni oshirish imkonini beradi. Dasturingizni ajoyib funksiyalar va dizayn bilan imkon qadar mukammal qiling.</p>
<h3 id="heading-api-foydalanish-dasturi">API foydalanish dasturi</h3>
<p>Baza bilan bog'lanadigan boshqa dastur bilan aloqa qiluvchi ilova yarating (API, ya'ni dasturiy ta'minot interfeysi yordamida). Oddiy misol, <a target="_blank" href="http://Twitch.TV">Twitch.TV</a> da ma’lum kanallarning oqim holatini yoki GitHub’dagi kelgusi tadbirlar haqida sizga yangilanishlarni beruvchi ilova bo'lishi mumkin. Ushbu turdagi loyiha sizga dasturlar bir-biri bilan qanday aloqa qilishini va siz qanday qilib mavjud dasturlardan foydalangan holda yanada ajoyib dasturlar yaratishingiz mumkinligini yaxshi tushunishga yordam beradi. API nima ekanligini o'rganing.</p>
<h3 id="heading-chat-ilovasi">Chat Ilovasi</h3>
<p>O'zingizning chat ilovangizga ega bo'lish juda ajoyib. Bu biroz murakkab loyiha bo'lsa-da, agar siz yuqorida sanab o'tilgan ajoyib loyihalardan bir nechtasini yaratishga vaqt ajratgan bo'lsangiz, unda o'zingizning chat ilovangizni yaratish uchun ko'nikmalaringiz yetarli bo'ladi. Siz, shuningdek, P2P (shaxsdan shaxsga) video chat ilovasini ham yarata olasizmi? Nima uchun bo'lmasin? Imkoniyat darajasida ko'proq chat ilovalari yarating (o'z-o'zini yo'q qiluvchi xabarlar, Bluetooth chat ilovasi va h.k.).</p>
<h3 id="heading-xulosa">Xulosa</h3>
<p>Ushbu loyihalar ko'p soatlar davomida diqqat va bag'ishlanishni talab qiladi, lekin agar siz astoydil harakat qilsangiz va yechimlarni qidirishni o'rganishni boshlasangiz, ularning barchasini yaratishingiz mumkin. Shunday ekan, kod yozayotganda sabrli bo‘ling va zavqlaning! O'rganishga bo'lgan ongli va uzluksiz harakatlaringiz tez orada sizni juda oson loyihalardan murakkabroq loyihalarga o'tkazadi va bu siz uchub juda foydali bo'ladi.</p>
]]></content:encoded></item><item><title><![CDATA[Eventlar va Event Job larni Laravelda testlash]]></title><description><![CDATA[Ilovangiz uchun testlar yozish — bu kodingiz kutilganidek ishlashini ta’minlashning muhim qismi. Ammo, Laravel’da hodisalar va hodisa vazifalarini test qilish haqida gap ketganda, ishlar biroz qiyinlashishi mumkin. Ushbu blogda biz Laravel’da hodisal...]]></description><link>https://rashidovn.uz/eventlar-va-event-job-larni-laravelda-testlash</link><guid isPermaLink="true">https://rashidovn.uz/eventlar-va-event-job-larni-laravelda-testlash</guid><category><![CDATA[job-testing]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[events]]></category><category><![CDATA[Testing]]></category><category><![CDATA[test-automation]]></category><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 30 Jun 2024 20:22:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/oXlXu2qukGE/upload/e9a819c1db51db49c3257382e70e9ddb.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ilovangiz uchun testlar yozish — bu kodingiz kutilganidek ishlashini ta’minlashning muhim qismi. Ammo, Laravel’da hodisalar va hodisa vazifalarini test qilish haqida gap ketganda, ishlar biroz qiyinlashishi mumkin. Ushbu blogda biz Laravel’da hodisalar va hodisa vazifalarini qanday test qilishni o‘rganamiz.</p>
<p>Birinchidan, Laravel’da hodisalar va hodisa vazifalari nima ekanligini tushunib olaylik.</p>
<p>Laravel’ning hodisalari oddiy obunachi-obzervatorni amalga oshirishni ta’minlaydi, bu bizga ilovangizda sodir bo‘ladigan turli hodisalarga obuna bo‘lish va ularni kuzatish imkonini beradi. Laravel standart bo‘yicha bir qancha hodisalarni taqdim etadi, masalan, model hodisalari va autentifikatsiya hodisalari, lekin siz ilovangizning ehtiyojlariga mos ravishda maxsus hodisalar ham yaratishingiz mumkin.</p>
<p>Hodisa vazifalari asosiy tarmoqni bloklamasdan fon rejimida biror vazifani bajarish usulidir. Ushbu vazifalar navbatga qo‘yilishi va asinxron tarzda qayta ishlanishi mumkin, bu sizning ilovangizga vazifa fon rejimida ishlayotgan paytda so‘rovlarni qayta ishlashni davom ettirish imkonini beradi. Laravel’da hodisa vazifalari odatda elektron pochta jo‘natish, hisobotlar yaratish yoki ma’lumotlarni qayta ishlash kabi bajarilishi uzoq vaqt talab qiladigan murakkab vazifalarni bajarish uchun ishlatiladi.</p>
<p>Endi hodisalar va hodisa vazifalarining nima ekanligini tushunganligimizdan so‘ng, ularni test qilishga kirishamiz.</p>
<h3 id="heading-hodisani-test-qilish">Hodisani test qilish</h3>
<p>Faraz qilaylik, bizning mijozlar jadvalimizda mijozlar ro‘yxati mavjud va biz mijozlar bilan uchrashuv belgilashimiz va ma’lumotlarni uchrashuvlar jadvalimizga saqlashimiz kerak. Bizda uchrashuvlarga tegishli barcha narsalarni boshqarish uchun tizimimizda quyidagi model sinfi <code>Meeting</code> mavjud.</p>
<pre><code class="lang-php"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Meeting</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Model</span> </span>{
    <span class="hljs-keyword">protected</span> $fillable = [
        <span class="hljs-string">'meeting_date'</span>,
        <span class="hljs-string">'meeting_time'</span>,
        <span class="hljs-string">'email_to'</span>,
        <span class="hljs-string">'mail_content'</span>,
        <span class="hljs-string">'status'</span>,
        <span class="hljs-string">'created_by'</span>,
    ];

    <span class="hljs-keyword">protected</span> $dates = [
        <span class="hljs-string">'meeting_date'</span>,
    ];

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">creator</span>(<span class="hljs-params"></span>): <span class="hljs-title">BelongsTo</span>
    </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">$this</span>-&gt;belongsTo(User::class, <span class="hljs-string">'created_by'</span>, <span class="hljs-string">'id'</span>);
    }

    <span class="hljs-keyword">protected</span> <span class="hljs-built_in">static</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">boot</span>(<span class="hljs-params"></span>)
    </span>{
        <span class="hljs-built_in">parent</span>::boot();

        <span class="hljs-built_in">static</span>::creating(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">$model</span>) </span>{
            $model-&gt;created_by = auth()-&gt;id();
        });
    }
}
</code></pre>
<p>Bizda uchrashuv ma’lumotlarini saqlash uchun <code>MeetingController</code> sinfi va quyidagi marshrut mavjud.</p>
<pre><code class="lang-php"><span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Controller</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MeetingController</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Controller</span> </span>{

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">store</span>(<span class="hljs-params">MeetingRequest $request</span>) </span>{
        <span class="hljs-keyword">try</span> { 
            $meeting  = Meeting::create($request-&gt;validated());

            MeetingCreated::dispatch($meeting);
        } <span class="hljs-keyword">catch</span>(\<span class="hljs-built_in">Exception</span> $exception){
            Log::error($exception-&gt;getMessage());

            <span class="hljs-keyword">return</span> response()-&gt;json($meeting);
        }   

        <span class="hljs-keyword">return</span> response()-&gt;json($meeting, <span class="hljs-number">201</span>);
    }
}
</code></pre>
<pre><code class="lang-php">Route::post(<span class="hljs-string">'/meetings'</span>, [MeetingController::class, <span class="hljs-string">'store'</span>])-&gt;name(<span class="hljs-string">'meetings.create'</span>);
</code></pre>
<p>Faraz qilaylik, mijoz bilan belgilangan uchrashuv haqida elektron pochta xabarini yuboradigan <code>MeetingCreated</code> hodisamiz mavjud.</p>
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>

<span class="hljs-keyword">namespace</span> <span class="hljs-title">App</span>\<span class="hljs-title">Providers</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Events</span>\<span class="hljs-title">MeetingCreated</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Listeners</span>\<span class="hljs-title">SendMeetingEmail</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Foundation</span>\<span class="hljs-title">Support</span>\<span class="hljs-title">Providers</span>\<span class="hljs-title">EventServiceProvider</span> <span class="hljs-title">as</span> <span class="hljs-title">ServiceProvider</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">EventServiceProvider</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">ServiceProvider</span>
</span>{
    <span class="hljs-keyword">protected</span> $listen = [
        MeetingCreated::class =&gt; [
            SendMeetingEmail::class,
        ],
    ];
}
</code></pre>
<p>Laravel’da hodisalarni test qilishda birinchi qadam hodisani ishga tushiradigan test yaratishdir. Masalan, <a target="_blank" href="http://meetings.store"><code>meetings.store</code></a> marshrut uchun kontroller amalini test qilishimiz mumkin, bu o‘z navbatida <code>MeetingCreated</code> hodisasini ishga tushiradi.</p>
<pre><code class="lang-php"><span class="hljs-keyword">namespace</span> <span class="hljs-title">Tests</span>\<span class="hljs-title">Feature</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">Tests</span>\<span class="hljs-title">TestCase</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Models</span>\<span class="hljs-title">User</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Support</span>\<span class="hljs-title">Facades</span>\<span class="hljs-title">Event</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LeadMailControllerTest</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">TestCase</span>
</span>{
    <span class="hljs-keyword">use</span> <span class="hljs-title">RefreshDatabase</span>;

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setUp</span>(<span class="hljs-params"></span>): <span class="hljs-title">void</span>
    </span>{
        <span class="hljs-built_in">parent</span>::setUp();
        <span class="hljs-keyword">$this</span>-&gt;actingAs(User::factory()-&gt;create());
    }

    <span class="hljs-comment">/**
    * foydalanuvchi uchrashuv yaratishi mumkin
    *
    * <span class="hljs-doctag">@test</span>
    */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">test_user_can_create_a_meeting</span>(<span class="hljs-params"></span>)
    </span>{
        Event::fake();

        $attributes = Meeting::factory()-&gt;make();
        $response   = <span class="hljs-keyword">$this</span>-&gt;post(route(<span class="hljs-string">'meetings.store'</span>, $attributes));

        $response-&gt;assertCreated();
        <span class="hljs-keyword">$this</span>-&gt;assertDatabaseHas(<span class="hljs-string">'meetings'</span>, $attributes);
        Event::assertDispatched(MeetingCreated::class);
    }
}
</code></pre>
<p>Ushbu testda biz <code>Event::fake()</code> usulidan foydalanib, hodisa jo‘natuvchisini soxtalashtiramiz, shuning uchun hodisa jo‘natilmaydi. Keyin <a target="_blank" href="http://meetings.store"><code>meetings.store</code></a> marshrutiga uchrashuv ma’lumotlarini jo‘natib, yangi uchrashuv yaratamiz, bu <code>MeetingCreated</code> hodisasini ishga tushiradi. Nihoyat, biz <code>Event::assertDispatched()</code> usulidan hodisaning jo‘natilganligini tasdiqlash uchun foydalanamiz.</p>
<p>Yuqoridagi test muvaffaqiyatli o‘tadi, ammo agar biz uchrashuvni yaratgan foydalanuvchi yaratuvchi sifatida belgilanganligini tekshirish uchun yuqoridagi kodga yangi tasdiqlash qo‘shsak, bu test muvaffaqiyatsiz bo‘ladi, chunki biz barcha hodisalarni soxtalashtirayapmiz.</p>
<pre><code class="lang-php"><span class="hljs-keyword">namespace</span> <span class="hljs-title">Tests</span>\<span class="hljs-title">Feature</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">Tests</span>\<span class="hljs-title">TestCase</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Models</span>\<span class="hljs-title">User</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Support</span>\<span class="hljs-title">Facades</span>\<span class="hljs-title">Event</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LeadMailControllerTest</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">TestCase</span>
</span>{
    <span class="hljs-keyword">use</span> <span class="hljs-title">RefreshDatabase</span>;

    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setUp</span>(<span class="hljs-params"></span>): <span class="hljs-title">void</span>
    </span>{
        <span class="hljs-built_in">parent</span>::setUp();
        <span class="hljs-keyword">$this</span>-&gt;actingAs(User::factory()-&gt;create());
    }

    <span class="hljs-comment">/**
    * foydalanuvchi uchrashuv yaratishi mumkin
    *
    * <span class="hljs-doctag">@test</span>
    */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">test_user_can_create_a_meeting</span>(<span class="hljs-params"></span>)
    </span>{
        Event::fake();

        $attributes = Meeting::factory()-&gt;make();
        $response   = <span class="hljs-keyword">$this</span>-&gt;post(route(<span class="hljs-string">'meetings.store'</span>, $attributes));

        $response-&gt;assertCreated();
        <span class="hljs-keyword">$this</span>-&gt;assertDatabaseHas(<span class="hljs-string">'meetings'</span>, $attributes);
        Event::assertDispatched(MeetingCreated::class);

        <span class="hljs-comment">// yaratuvchi belgilanganligini tekshirish</span>
        $latestMeeting = Meeting::latest()-&gt;first();
        <span class="hljs-keyword">$this</span>-&gt;assertEquals(auth()-&gt;id(), $latestMeeting-&gt;created_by);
    }
}
</code></pre>
<p>Ushbu muammoni hal qilish uchun faqat <code>MeetingCreated</code> hodisasini soxtalashtirishimiz kerak, quyida ko‘rsatilganidek.</p>
<pre><code class="lang-php"><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">test_user_can_create_a_meeting</span>(<span class="hljs-params"></span>)
</span>{
    Event::fake([
        MeetingCreated::class,
    ]);

    $attributes = Meeting::factory()-&gt;make();
    $response   = <span class="hljs-keyword">$this</span>-&gt;post(route(<span class="hljs-string">'meetings.store'</span>, $attributes));

    $response-&gt;assertCreated();
    <span class="hljs-keyword">$this</span>-&gt;assertDatabaseHas(<span class="hljs-string">'meetings'</span>, $attributes);
    Event::assertDispatched(MeetingCreated::class);

    <span class="hljs-comment">// yaratuvchi belgilanganligini tekshirish</span>
    $latestMeeting = Meeting::latest()-&gt;first();
    <span class="hljs-keyword">$this</span>-&gt;assertEquals(auth()-&gt;id(), $latestMeeting-&gt;created_by);
}
</code></pre>
<h3 id="heading-hodisa-vazifasini-va-tinglovchini-test-qilish">Hodisa vazifasini va tinglovchini test qilish</h3>
<p>Hodisa vazifalarini test qilishda avvalo, vazifani navbatga qo‘yuvchi testni yaratishimiz kerak. Masalan, keling, mijozga uchrashuv haqida elektron pochta xabarini jo‘natuvchi <code>SendMeetingEmail</code> hodisa vazifamiz bor deb faraz qilaylik. Mana shu hodisa vazifasi uchun misol test:</p>
<pre><code class="lang-php"><span class="hljs-comment">/**
* <span class="hljs-doctag">@test</span>
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">test_send_meeting_email_job</span>(<span class="hljs-params"></span>)
</span>{
    Queue::fake();

    $meeting = Meeting::factory()-&gt;create();
    MeetingCreated::dispatch($meeting);

    Queue::assertPushed(CallQueuedListener::class, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">$job</span>) </span>{
        <span class="hljs-keyword">return</span> $job-&gt;class == SendMeetingEmail::class;
    });
}
</code></pre>
<p>Ushbu testda biz <code>Queue::fake()</code> usulidan foydalanib, navbatni soxtalashtiramiz, shuning uchun vazifa bajarilmaydi. Keyin zavod yordamida yangi uchrashuv yaratamiz, bu <code>SendMeetingEmail</code> vazifasini navbatga qo‘yishi kerak. Nihoyat, biz <code>Queue::assertPushed()</code> usulidan vazifaning navbatga qo‘yilganligini tasdiqlash uchun foydalanamiz.</p>
<h3 id="heading-hodisa-vazifasini-bajarilishini-test-qilish">Hodisa vazifasini bajarilishini test qilish</h3>
<p>Biz vazifaning navbatga qo‘yilganligini tasdiqlaganimizdan so‘ng, vazifaning to‘g‘ribajarilganligini test qilishimiz mumkin. Mana <code>SendMeetingEmail</code> hodisa vazifasi va unga mos test uchun misol.</p>
<pre><code class="lang-php"><span class="hljs-keyword">namespace</span> <span class="hljs-title">App</span>\<span class="hljs-title">Listeners</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Constants</span>\<span class="hljs-title">Queue</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">App</span>\<span class="hljs-title">Events</span>\<span class="hljs-title">MeetingCreated</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Contracts</span>\<span class="hljs-title">Queue</span>\<span class="hljs-title">ShouldQueue</span>;

<span class="hljs-comment">/**
 * Class SendMeetingEmail
 */</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">SendMeetingEmail</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ShouldQueue</span>
</span>{
    <span class="hljs-comment">/**
     * <span class="hljs-doctag">@var</span> string $queue
     */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">string</span> $queue = Queue::EMAIL;

    <span class="hljs-comment">/**
     * Hodisani boshqarish.
     *
     * <span class="hljs-doctag">@param</span> MeetingCreated $event
     *
     * <span class="hljs-doctag">@return</span> void
     */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">handle</span>(<span class="hljs-params">MeetingCreated $event</span>)
    </span>{
        $meeting    = $event-&gt;meeting;

        Mail::to($meeting-&gt;email_to)
            -&gt;queue((<span class="hljs-keyword">new</span> MeetingEmail($meeting))
            -&gt;onQueue(Queue::EMAIL));
    }
}
</code></pre>
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>

<span class="hljs-keyword">namespace</span> <span class="hljs-title">App</span>\<span class="hljs-title">Notifications</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Bus</span>\<span class="hljs-title">Queueable</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Contracts</span>\<span class="hljs-title">Queue</span>\<span class="hljs-title">ShouldQueue</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Mail</span>\<span class="hljs-title">Mailable</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">Illuminate</span>\<span class="hljs-title">Queue</span>\<span class="hljs-title">SerializesModels</span>;

<span class="hljs-comment">/**
 * Class MeetingEmail
 *
 * <span class="hljs-doctag">@package</span> App\Notifications
 */</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MeetingEmail</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Mailable</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ShouldQueue</span>
</span>{
    <span class="hljs-keyword">use</span> <span class="hljs-title">Queueable</span>;
    <span class="hljs-keyword">use</span> <span class="hljs-title">SerializesModels</span>;

    <span class="hljs-comment">/**
     * <span class="hljs-doctag">@var</span> Meeting|null
     */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">array</span> $meeting;

    <span class="hljs-comment">/**
     * Yangi xabar instance-ni yaratish.
     *
     * <span class="hljs-doctag">@return</span> void
     */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">__construct</span>(<span class="hljs-params">Meeting $meeting</span>)
    </span>{
        <span class="hljs-keyword">$this</span>-&gt;meeting = $meeting;
    }

    <span class="hljs-comment">/**
     * Xabarni yaratish.
     *
     * <span class="hljs-doctag">@return</span> $this
     */</span>
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">build</span>(<span class="hljs-params"></span>): <span class="hljs-title">MeetingEmail</span>
    </span>{
        $mailable    = <span class="hljs-keyword">$this</span>-&gt;from(<span class="hljs-keyword">$this</span>-&gt;meeting-&gt;creator-&gt;email, <span class="hljs-keyword">$this</span>-&gt;meeting-&gt;creator-&gt;name);
        $mailable    = $mailable-&gt;subject(<span class="hljs-string">"Uchrashuv tasdiqlandi"</span>);
        $mailable    = $mailable-&gt;text(<span class="hljs-string">'email.meeting.index'</span>, [<span class="hljs-string">'meeting'</span> =&gt; <span class="hljs-keyword">$this</span>-&gt;meeting]);

        <span class="hljs-keyword">return</span> $mailable;
    }
}
</code></pre>
<pre><code class="lang-php"><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">test_send_meeting_email_job_execution</span>(<span class="hljs-params"></span>)
</span>{
    Mail::fake();

    $meeting = Meeting::factory()-&gt;create();
    $event    = <span class="hljs-keyword">new</span> MeetingCreated($leadMail);
    event($event);

    Mail::assertQueued(MeetingEmail::class, 
        <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">$mail</span>) <span class="hljs-title">use</span> (<span class="hljs-params">$meeting</span>) </span>{
            <span class="hljs-keyword">return</span> $mail-&gt;hasTo($meeting-&gt;email_to) &amp;&amp;
                   $mail-&gt;hasFrom($meeting-&gt;creator-&gt;email) &amp;&amp;
                   $mail-&gt;hasSubject(<span class="hljs-string">'Uchrashuv tasdiqlandi'</span>); 
        }
    );
}
</code></pre>
<p>Ushbu testda biz <code>Mail::fake()</code> usulidan foydalanib, pochta jo‘natuvchini soxtalashtiramiz, shuning uchun elektron pochta jo‘natilmaydi. Keyin zavod yordamida yangi foydalanuvchini yaratamiz va <code>MeetingCreated</code> hodisasining yangi nusxasini yaratamiz va uni <code>event()</code> usuli yordamida jo‘natamiz. Keyin biz elektron pochta jo‘natilishi uchun navbatga qo‘yilganligini va elektron pochtaning turli xususiyatlarini, masalan, <code>hasTo</code>, <code>hasFrom</code>, <code>hasSubject</code> va boshqalarni tasdiqlashimiz mumkin.</p>
<h3 id="heading-xulosa">Xulosa</h3>
<p>Laravel’ning hodisa tizimi bizning ilovamizda hodisalarga obuna bo‘lish va o‘zgarishlarni kuzatishning samarali usulini ta’minlaydi. Hodisa vazifalari ilovangizga murakkab vazifalarni fon rejimida bajarayotgan paytda so‘rovlarni qayta ishlashni davom ettirish imkonini beradi. Ammo, testni qachon va qanday boshlashni bilmaganda, odatda bu qiyinchilik tug‘diradi.</p>
<p>Hodisalarni test qilishda <code>Event::fake()</code> usulidan foydalanib, hodisa jo‘natuvchisini soxtalashtirish va hodisaning jo‘natilmasligini ta’minlash muhimdir. Ammo, ilovangizning boshqa qismlariga xalaqit bermaslik uchun faqat test qilish kerak bo‘lgan hodisalarni soxtalashtirish kerakligini unutmang.</p>
]]></content:encoded></item><item><title><![CDATA[Birinchi tanishuv va dasturlash tilini sozlash]]></title><description><![CDATA[Bu Golang dasturlash tilini o'rganish seriyamizdagi birinchi dars. Ushbu darsda Go dasturlash tilidan dastlabki ma'lumotlarni va Go ni boshqa dasturlash tillariga nisbatan tanlashning afzalliklarini muhokama qilamiz. Shuningdek, Mac OS, Windows va Li...]]></description><link>https://rashidovn.uz/birinchi-tanishuv-va-dasturlash-tilini-sozlash</link><guid isPermaLink="true">https://rashidovn.uz/birinchi-tanishuv-va-dasturlash-tilini-sozlash</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 30 Jun 2024 20:12:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716054279314/cfac2bbb-4a67-4d22-87a2-4e09d0b2c1ab.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Bu Golang dasturlash tilini o'rganish seriyamizdagi birinchi dars. Ushbu darsda Go dasturlash tilidan dastlabki ma'lumotlarni va Go ni boshqa dasturlash tillariga nisbatan tanlashning afzalliklarini muhokama qilamiz. Shuningdek, Mac OS, Windows va Linux tizimlarida Go ni qanday o'rnatishni o'rganamiz.</p>
<h2 id="heading-til-haqida"><strong>Til haqida</strong></h2>
<p>Golang, shuningdek, Go deb ham tanilgan, Google tomonidan ishlab chiqilgan ochiq kodli, kompilyatsiya qilinadigan va statik tipdagi dasturlash tili. Go ni yaratgan asosiy mutahassisslar Rob Pike, Ken Thompson va Robert Griesemer. Go 2009-yil noyabr oyida omma uchun taqdim qilingan.</p>
<p>Go umumiy maqsadli dasturlash tili bo'lib, sodda sintaksisga ega va kuchli standart kutubxona bilan ta'minlangan. Go o'zining eng yaxshi yoritilgan joylaridan biri bu yuqori mavjud va masshtablanadigan veb ilovalarni yaratishda namoyon bo'ladi. Go shuningdek, buyruq satri dasturlari, ish stoli dasturlari va hatto mobil ilovalarni yaratish uchun ham ishlatilishi mumkin.</p>
<h2 id="heading-go-dasturlash-tilining-ustunliklari">Go dasturlash tilining ustunliklari</h2>
<p>Nima uchun dasturlash tili sifatida Go ni tanlashingiz kerak, java, python,php, ruby, nodejs kabi ko'plab boshqa tillar ham xuddi shu ishni bajaradi.</p>
<p>Quyida Go ni tanlashga sabab bo'lgan ba'zi afzalliklar.</p>
<p><strong>Sodda sintaksis</strong></p>
<p>Sintaksis sodda va qisqa bo'lib, til keraksiz xususiyatlar bilan yuklanmagan. Bu kodni o'qilishi va saqlanishi oson qiladi.</p>
<p><strong>Oson ko'p oqim dasturlarini yozish</strong></p>
<p>Ko'p oqimlilik tilning ajralmas qismidir. Natijada, ko'p oqimli dasturlar yozish juda oson. Bu Goroutines va kanallar orqali amalga oshiriladi, bu haqida keyingi qo'llanmalarda muhokama qilamiz.</p>
<p><strong>Kompilyatsiya qilingan til</strong></p>
<p>Go kompilyatsiya qilingan til. Manba kodi mahalliy ikkilik faylga kompilyatsiya qilinadi. Bu nodejs da ishlatiladigan JavaScript kabi interpretatsiya qilingan tillarda yo'q.</p>
<p><strong>Tez kompilyatsiya</strong></p>
<p>Go kompilyatori juda ajoyib va ​​til boshidan tez ishlashi uchun mo'ljallangan.</p>
<p><strong>Statik bog'lash</strong></p>
<p>Go kompilyatori statik bog'lashni qo'llab-quvvatlaydi. Butun Go loyihasi statik tarzda bir katta ikkilik faylga bog'lanishi mumkin va u bulut serverlariga osongina joylashtirilishi mumkin, bog'liqliklar haqida xavotirlanmasdan.</p>
<p><strong>Go instrumentlari</strong></p>
<p>Go dagi vositalar alohida e'tiborga loyiqdir. Go kuchli vositalar to'plami bilan birga keladi, bu dasturchilarga yaxshi kod yozishga yordam beradi. Ko'p ishlatiladigan vositalardan ba'zilari:</p>
<p><strong>gofmt</strong> - gofmt go manba kodini avtomatik ravishda formatlash uchun ishlatiladi. U indentsiya uchun tablar va hizalash uchun bo'shliqlarni ishlatadi. vet - vet go manba kodini tahlil qiladi va shubhali kodni bildiradi.</p>
<p><strong>vet</strong> tomonidan bildirilgan hamma narsa haqiqiy muammo emas, lekin u kompilyator tomonidan bildirilmagan xatolarni, masalan, Printf ishlatishda noto'g'ri format spetsifikatorlarini ushlash qobiliyatiga ega.</p>
<p><strong>staticcheck</strong> - staticcheck koddagi stil muammolarini aniqlash uchun ishlatiladi.</p>
<p><strong>Garbage collector</strong></p>
<p>Go axlat yig'ishni ishlatadi va shu sababli xotira boshqaruvi deyarli avtomatik ravishda amalga oshiriladi va dasturchi xotirani boshqarish haqida qayg'urmasligi kerak. Bu ko'p oqimli dasturlarni yozishni ham osonlashtiradi.</p>
<p><strong>Tushunarli dokumentatsiya</strong></p>
<p>Til dokumentatsiyasi juda oddiy. Dokumentatsiya yaxshi hujjatlashtirilgan va siz hatto undan o'zingizning kompilyatoringizni yozish uchun ham foydalanishingiz mumkin :)</p>
<p><strong>Open source</strong></p>
<p>Oxirgi, lekin muhim bo'lgan narsa, Go ochiq manbali loyiha hisoblanadi. Siz Go loyihasida ishtirok etishingiz va hissa qo'shishingiz mumkin.</p>
<p><strong>Golang dasturlash tili muhitini sozlash: MacOS va Windows operatsion tizimlari uchun qo‘llanma</strong></p>
<p><strong>1. Golang ni MacOS da sozlash</strong></p>
<h3 id="heading-a-golangni-ornatish">A. Golangni o‘rnatish</h3>
<ol>
<li><p><strong>Yuklab olish</strong>:</p>
<ul>
<li>Golang veb-saytiga kirib, MacOS uchun mos versiyani yuklab oling: <a target="_blank" href="http://golang.org">golang.org</a>.</li>
</ul>
</li>
<li><p><strong>O‘rnatish</strong>:</p>
<ul>
<li>Yuklab olingan <code>.pkg</code> faylini oching va ekrandagi ko‘rsatmalarga amal qiling.</li>
</ul>
</li>
<li><p><strong>O‘rnatishni tekshirish</strong>:</p>
<ul>
<li><p>Terminalni oching va <code>go version</code> buyrug‘ini kiriting.</p>
<pre><code class="lang-bash">  go version
</code></pre>
</li>
<li><p>Bu Golang versiyasini ko‘rsatadi, masalan, <code>go version go1.19.0 darwin/amd64</code>.</p>
</li>
</ul>
</li>
</ol>
<h3 id="heading-b-operatsion-muhitni-sozlash">B. Operatsion muhitni sozlash</h3>
<ol>
<li><p><strong>Go Path ni sozlash</strong>:</p>
<ul>
<li><p>Terminalda <code>~/.bash_profile</code> yoki <code>~/.zshrc</code> faylini oching (OS versiyasiga qarab).</p>
<pre><code class="lang-go">  nano ~/.zshrc
</code></pre>
</li>
<li><p>Quyidagi qatorlarni faylga qo‘shing:</p>
<pre><code class="lang-go">  export GOPATH=$HOME/<span class="hljs-keyword">go</span>
  export PATH=$PATH:/usr/local/<span class="hljs-keyword">go</span>/bin:$GOPATH/bin
</code></pre>
</li>
<li><p>O‘zgartirishlarni kiritgandan so‘ng, terminalni qayta yuklang:</p>
<pre><code class="lang-bash">  <span class="hljs-built_in">source</span> ~/.zshrc
</code></pre>
</li>
</ul>
</li>
<li><p><strong>Go Workspace yaratish</strong>:</p>
<ul>
<li><p>Ish joyini (workspace) yaratish uchun quyidagi qatorni kiriting:</p>
<pre><code class="lang-bash">  mkdir -p <span class="hljs-variable">$GOPATH</span>/src/github.com/yourusername/yourproject
</code></pre>
</li>
</ul>
</li>
</ol>
<h3 id="heading-c-go-kodini-yozish-va-ishga-tushirish">C. Go kodini yozish va ishga tushirish</h3>
<ol>
<li><p><strong>Misol kodini yozish</strong>:</p>
<ul>
<li><p>Ish joyi papkasiga o‘ting va <code>hello.go</code> faylini yarating:</p>
<pre><code class="lang-bash">  <span class="hljs-built_in">cd</span> <span class="hljs-variable">$GOPATH</span>/src/github.com/yourusername/yourproject
  nano hello.go
</code></pre>
</li>
<li><p>Quyidagi Go kodini faylga yozing:</p>
<pre><code class="lang-go">  <span class="hljs-keyword">package</span> main

  <span class="hljs-keyword">import</span> <span class="hljs-string">"fmt"</span>

  <span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
      fmt.Println(<span class="hljs-string">"Hello, World!"</span>)
  }
</code></pre>
</li>
</ul>
</li>
<li><p><strong>Kodni ishga tushirish</strong>:</p>
<ul>
<li><p>Terminalda quyidagi buyrug‘ni kiriting:</p>
<pre><code class="lang-bash">  go run hello.go
</code></pre>
</li>
</ul>
</li>
</ol>
<p><strong>2. Golang ni Windows da sozlash</strong></p>
<h3 id="heading-a-golangni-ornatish-1">A. Golangni o‘rnatish</h3>
<ol>
<li><p><strong>Yuklab olish</strong>:</p>
<ul>
<li>Golang veb-saytiga kirib, Windows uchun mos versiyani yuklab oling: <a target="_blank" href="http://golang.org">golang.org</a>.</li>
</ul>
</li>
<li><p><strong>O‘rnatish</strong>:</p>
<ul>
<li>Yuklab olingan <code>.msi</code> faylini ishga tushiring va ekrandagi ko‘rsatmalarga amal qiling.</li>
</ul>
</li>
<li><h2 id="heading-ornatishni-tekshirish"><strong>O‘rnatishni tekshirish</strong>:</h2>
</li>
</ol>
<p>• cmd yoki PowerShellni oching va go version buyrug‘ini kiriting.</p>
<p>go version</p>
<p>3. • Bu Golang versiyasini ko‘rsatadi, masalan, go version go1.19.0 windows/amd64.</p>
<p>B. Operatsion muhitni sozlash</p>
<p>1. Go Path ni sozlash: • “System Properties” bo‘limiga kirish uchun Control Paneldan “System” va keyin “Advanced system settings” ni tanlang. • “Environment Variables” tugmasini bosing. • User variables da GOPATH o‘zgaruvchisini yarating va unga C:\Users&lt;YourUsername&gt;\go ni qiymat sifatida kiriting. • System variables da Path ni tanlang va Edit tugmasini bosing, keyin C:\Go\bin va C:\Users&lt;YourUsername&gt;\go\bin ni qo‘shing. 2. Go Workspace yaratish: • cmd yoki PowerShellda GOPATH papkasida ish joyi (workspace) yarating:</p>
<p><code>mkdir %GOPATH%\src\</code><a target="_blank" href="http://github.com"><code>github.com</code></a><code>\yourusername\yourproject</code></p>
<p>C. Go kodini yozish va ishga tushirish</p>
<p>1. Misol kodini yozish: • Ish joyi papkasiga o‘ting va hello.go faylini yarating:</p>
<p><code>cd %GOPATH%\src\</code><a target="_blank" href="http://github.com"><code>github.com</code></a><code>\yourusername\yourproject notepad hello.go</code></p>
<p>1. • Quyidagi Go kodini faylga yozing:</p>
<p>package main</p>
<p>import "fmt"</p>
<p>func main() { fmt.Println("Hello, World!") }</p>
<p>2. Kodni ishga tushirish: • cmd yoki PowerShellda quyidagi buyrug‘ni kiriting:</p>
<p><code>go run hello.go</code></p>
<p>Bu qo‘llanmalar orqali siz MacOS va Windows operatsion tizimlarida Golang dasturlash tili muhitini o‘rnatishingiz va sozlashingiz mumkin. Shu tariqa, siz Go kodlarini yozish va ishga tushirish uchun dasturlash muhitini tayyorlab olasiz</p>
]]></content:encoded></item><item><title><![CDATA[Achchiq tajriba: Orzular qoidalarga bo‘ysunmaydi]]></title><description><![CDATA[Orzularni amalga oshirish yo‘lida bir qancha qiyinchiliklar va to‘siqlar uchrab turadi. Biz oldimizga aniq va qat’iy maqsadlar qo‘yib, ularni aniq yo‘ldan amalga oshirishga harakat qilamiz. Lekin, hayotimizda kutilmagan hodisalar va o‘zgarishlar ko‘p...]]></description><link>https://rashidovn.uz/achchiq-tajriba-orzular-qoidalarga-boysunmaydi</link><guid isPermaLink="true">https://rashidovn.uz/achchiq-tajriba-orzular-qoidalarga-boysunmaydi</guid><dc:creator><![CDATA[Nuriddin Rashidov]]></dc:creator><pubDate>Sun, 30 Jun 2024 20:04:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/zi1GRsLym3s/upload/75b3aa13a7e69cba27d06ccb6a7d3d45.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Orzularni amalga oshirish yo‘lida bir qancha qiyinchiliklar va to‘siqlar uchrab turadi. Biz oldimizga aniq va qat’iy maqsadlar qo‘yib, ularni aniq yo‘ldan amalga oshirishga harakat qilamiz. Lekin, hayotimizda kutilmagan hodisalar va o‘zgarishlar ko‘p uchraydi, va bu bizni rejamizdan chalg‘itishi mumkin. Bunday holatlarda moslashuvchanlik bizga yordam beradi. Masalan, kutilmagan qiyinchiliklar oldida orzularimizga yetishish yo‘lida yangi yo‘llar topishimiz va moslashuvchan bo‘lishimiz kerak.</p>
<p>Moslashuvchanlik bizga orzularimizga erishish uchun yangi imkoniyatlar ochadi. Hayotdagi har qanday o‘zgarishlarga va to‘siqlarga tayyor turib, yangi yo‘llar izlash, yangi imkoniyatlardan foydalanish va o‘zimizni o‘zgartirish orqali orzularimizni amalga oshirish yo‘lida muvaffaqiyatga erishishimiz mumkin. Moslashuvchan bo‘lish bizga qiyinchiliklarni yengish va orzularimizga yetishish uchun zaruriy vositalarni beradi.</p>
<p>Maqsadingiz tomon harakatlanayotganingizda albatta qa’tiyatli bo’lish ham asosiy fazilatlardan biri hisoblanadi. Ular bir-biridan farq qilsa-da, bir-birini to‘ldiradi va birgalikda ishlatilsa, har qanday maqsadga erishish imkonini beradi.</p>
<p><strong>Qatiyat</strong> – bu qat'iylik va bardoshlik bo‘lib, biror maqsadga yetishish yo‘lida barqarorlikni ifodalaydi. Qatiyatli odamlar o‘z oldilariga qo‘ygan maqsadlariga yetishish uchun qat’iy qarorlar qabul qiladilar va qiyinchiliklarga qaramasdan, yo‘lidan qaytmaydilar. Qatiyat quyidagi xususiyatlarga ega:</p>
<ul>
<li><p><strong>Qat’iyat va sabr</strong>: Qatiyatli odamlar qiyinchiliklarga bardosh berib, yo‘lida davom etadilar. Ular muvaffaqiyatsizliklardan cho‘chimay, o‘z maqsadlariga erishishga intiladilar.</p>
</li>
<li><p><strong>O‘zgarmas maqsad</strong>: Qatiyat ma’lum bir maqsadga erishish uchun barqarorlikni talab qiladi. Qatiyatli odamlar o‘z maqsadlariga erishmaguncha to‘xtamaydilar.</p>
</li>
<li><p><strong>Qaror qabul qilish qobiliyati</strong>: Qatiyatli odamlar muhim qarorlar qabul qilishda qat’iy bo‘ladilar va ulardan qaytmaydilar.</p>
</li>
</ul>
<p><strong>Moslashuvchanlik</strong> esa o‘zgarishlarga moslasha olish qobiliyatini anglatadi. Bu fazilat odamga yangi holatlar va sharoitlarga moslashish, o‘z rejalarini o‘zgartirish va yangi imkoniyatlardan foydalanish imkonini beradi. Moslashuvchanlikning quyidagi xususiyatlari mavjud:</p>
<ul>
<li><p><strong>O‘zgarishlarga ochiqlik</strong>: Moslashuvchan odamlar yangi sharoitlarga va o‘zgarishlarga tayyor turadilar. Ular yangi imkoniyatlar va yo‘llarni qabul qilishga ochiqdirlar.</p>
</li>
<li><p><strong>Tez moslashish qobiliyati</strong>: Moslashuvchan odamlar yangi sharoitlarga tezda moslashadilar va yangi vaziyatlarga tezda moslashish qobiliyatiga egadirlar.</p>
</li>
<li><p><strong>Innovatsion fikrlash</strong>: Moslashuvchan odamlar yangi fikrlar va g‘oyalarga ochiq bo‘ladilar, yangi yechimlar topish va yangicha yondashuvlarni sinab ko‘rishga qodirdirlar.</p>
</li>
</ul>
<p><strong>Farqlari:</strong></p>
<ul>
<li><p><strong>Maqsadga erishish usuli</strong>: Qatiyat bir maqsadga erishish uchun qat’iyat bilan harakat qilishni anglatadi. Moslashuvchanlik esa maqsadga erishish uchun turli usullarni sinab ko‘rishni va yangi imkoniyatlardan foydalanishni anglatadi.</p>
</li>
<li><p><strong>Qiyinchiliklarga munosabat</strong>: Qatiyatli odamlar qiyinchiliklarni yengish uchun qat’iyat bilan harakat qiladilar. Moslashuvchan odamlar esa qiyinchiliklarga moslashish va yangi yechimlar topish orqali yengishadi.</p>
</li>
<li><p><strong>Qaror qabul qilishda qat’iyat</strong>: Qatiyatli odamlar o‘z qarorlarida qat’iyatli bo‘ladilar. Moslashuvchan odamlar esa yangi ma’lumotlarga asoslangan holda o‘z qarorlarini o‘zgartirishga tayyor turadilar.</p>
</li>
</ul>
<p>Qatiyat va moslashuvchanlikning kombinatsiyasi bizga har qanday vaziyatda muvaffaqiyatga erishishimiz uchun zaruriy vositalarni beradi. Ularni muvofiqlashtirib, biz har qanday maqsadga erishishda muvaffaqiyatli bo‘la olamiz.</p>
<p>Xulosa qilib aytganda, orzular qoidalarga bo‘ysunmaydi va ularni amalga oshirish uchun bizdan moslashuvchanlik talab qiladi. Har bir kutilmagan holatda yangi yo‘llar izlash va o‘zimizni o‘zgartirish orqali orzularimizga yetishish yo‘lida muvaffaqiyatga erishishimiz mumkin. Orzularingizga erishishda moslashuvchan bo‘ling va har bir qiyinchilikni yangi imkoniyat sifatida qabul qiling.</p>
]]></content:encoded></item></channel></rss>