SQL in'ektsiya – bu hujumchilarning veb-dasturdagi xavfsizlik zaifliklaridan foydalanib, ma'lumotlar bazasiga zararli SQL so'rovlarini yuborishi va natijada ma'lumotlarga ruxsatsiz kirishi yoki ularni o'zgartirishi mumkin bo'lgan xavfli hujum turi. Bu zaiflik odatda foydalanuvchi kiritgan ma'lumotlar to'g'ridan-to'g'ri SQL so'rovlariga qo'shilganda yuzaga keladi.
### SQL In'ektsiyaning Misoli
Quyidagi kod PHP tilida yozilgan oddiy login shakli:
Ushbu kodning zaifligi shundaki, foydalanuvchi tomonidan kiritilgan
### SQL In'ektsiya Hujumi
Tasavvur qiling, hujumchi quyidagi foydalanuvchi nomi va parolni kiritadi:
- Username:
- Password:
Natijada SQL so'rovi quyidagicha ko'rinishga ega bo'ladi:
`--` SQL so'rovini izohga (kommentariyaga) aylantiradi, natijada
### Zaiflikdan Qanday Qochish Mumkin
SQL in'ektsiyadan himoyalanish uchun quyidagi yondashuvlar qo'llanilishi kerak:
1. Tayyorlangan so'rovlar (Prepared Statements) va parametrlarni bog'lash: Bu usulda foydalanuvchi kiritgan ma'lumotlar SQL so'roviga to'g'ridan-to'g'ri qo'shilmaydi, balki parametr sifatida yuboriladi.
Misol (PHP va MySQLi):
2. Ma'lumotlarni sanitarizatsiya qilish va validatsiya qilish: Foydalanuvchi kiritgan ma'lumotlarni qabul qilishdan oldin, ularni to'g'ri shaklda ekanligini tekshirish lozim.
3. PDO bilan foydalanish: PDO (PHP Data Objects) bilan tayyorlangan so'rovlarni qo'llash xavfsizlikni oshiradi.
Misol:
4. Kiruvchi ma'lumotlarni cheklash: Foydalanuvchi kiritishi mumkin bo'lgan ma'lumotlarni cheklash va kerak bo'lsa, ma'lumotlarni maxsus formatga keltirish (masalan, raqamlar, elektron pochta manzillari va boshqalar).
Bu yondashuvlar SQL in'ektsiyadan himoyalanishga yordam beradi va veb-dastur xavfsizligini oshiradi.
### SQL In'ektsiyaning Misoli
Quyidagi kod PHP tilida yozilgan oddiy login shakli:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($connection, $query);
Ushbu kodning zaifligi shundaki, foydalanuvchi tomonidan kiritilgan
$username va $password qiymatlari to'g'ridan-to'g'ri SQL so'roviga qo'shiladi. Bu esa SQL in'ektsiyasiga olib kelishi mumkin.### SQL In'ektsiya Hujumi
Tasavvur qiling, hujumchi quyidagi foydalanuvchi nomi va parolni kiritadi:
- Username:
admin' --- Password:
anythingNatijada SQL so'rovi quyidagicha ko'rinishga ega bo'ladi:
SELECT * FROM users WHERE username = 'admin' -- ' AND password = 'anything'
`--` SQL so'rovini izohga (kommentariyaga) aylantiradi, natijada
password qismi e'tibordan chetda qoladi. Bu so'rov barcha "admin" foydalanuvchilarini qaytaradi, va agar mavjud bo'lsa, hujumchi tizimga parolsiz kirishi mumkin.### Zaiflikdan Qanday Qochish Mumkin
SQL in'ektsiyadan himoyalanish uchun quyidagi yondashuvlar qo'llanilishi kerak:
1. Tayyorlangan so'rovlar (Prepared Statements) va parametrlarni bog'lash: Bu usulda foydalanuvchi kiritgan ma'lumotlar SQL so'roviga to'g'ridan-to'g'ri qo'shilmaydi, balki parametr sifatida yuboriladi.
Misol (PHP va MySQLi):
$stmt = $connection->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
2. Ma'lumotlarni sanitarizatsiya qilish va validatsiya qilish: Foydalanuvchi kiritgan ma'lumotlarni qabul qilishdan oldin, ularni to'g'ri shaklda ekanligini tekshirish lozim.
3. PDO bilan foydalanish: PDO (PHP Data Objects) bilan tayyorlangan so'rovlarni qo'llash xavfsizlikni oshiradi.
Misol:
$stmt = $connection->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->execute(['username' => $username, 'password' => $password]);
4. Kiruvchi ma'lumotlarni cheklash: Foydalanuvchi kiritishi mumkin bo'lgan ma'lumotlarni cheklash va kerak bo'lsa, ma'lumotlarni maxsus formatga keltirish (masalan, raqamlar, elektron pochta manzillari va boshqalar).
Bu yondashuvlar SQL in'ektsiyadan himoyalanishga yordam beradi va veb-dastur xavfsizligini oshiradi.
👍11🔥2❤1
Toza kod (Clean Code) nima?
Toza kod - bu dasturlashda kodning sifati va samaradorligini ta’minlash uchun ishlatiladigan uslub. Toza kod nafaqat kompyuter uchun, balki dasturchilar uchun ham tushunarli bo‘lishi kerak. Kodni o'qish, tushunish va undan foydalanish oson bo'lsa, uni kelajakda qo'llab-quvvatlash, kengaytirish va xatolarni tuzatish ham oson bo'ladi.
Toza kodning asosiy tamoyillari
1. Aniq va qisqa nomlar: O'zgaruvchilar, funksiyalar va sinflar (classlar)ga aniq va mazmunli nomlar berish kodni tushunarli qiladi. Yaxshi nomlar yordamida kodni o'qigan dasturchi darhol nima qilinayotganini tushunishi mumkin.
2. Bir vazifa – bir funksiya: Har bir funksiya faqat bitta vazifani bajarishi kerak. Bu, funksiyalarni kichik va oddiy qilib yozishga imkon beradi, natijada kodni qayta ishlatish va test qilish osonlashadi.
3. Izohlar kamroq, lekin aniq: Kod o'zi uchun gapirishi kerak, ya'ni kod yozilganda izohlar ko'p bo‘lmasligi kerak. Faqat kerakli joylarda izoh qo'shiladi, masalan, kodni tushunish qiyin bo'lgan joylarda.
4. Tuzilishi to'g'ri: Kodning tuzilishi (strukturasi) mantiqiy va tartibli bo'lishi kerak. Masalan, bir-biriga yaqin bo'lgan funksiyalar yoki sinflarni bir joyga to'plash, kodni o'qishni osonlashtiradi.
5. Test bilan ta’minlash: Toza kod yozishda, uni avtomatik testlar bilan tekshirish muhimdir. Testlar yordamida kodning to'g'ri ishlashini ta’minlash va kelajakda o'zgarishlar kiritilganda xatolarni aniqlash oson bo‘ladi.
Nega toza kod muhim?
Toza kod dasturchining samaradorligini oshiradi va jamoaviy ishlashni yengillashtiradi. Toza kodni tushunish va tahrirlash oson bo'lgani uchun, loyiha vaqt o‘tishi bilan murakkablashganida ham, kodni qo‘llab-quvvatlash ancha oson bo‘ladi. Shu sababli, toza kod yozish dasturchining malakasini oshirishda muhim omil hisoblanadi.
Toza kod nafaqat texnik jihatdan yaxshi kod bo'lishi, balki o'qish, tushunish va qo'llab-quvvatlash uchun qulay bo'lishi kerak. Bu tamoyillarni amalda qo'llash dasturiy ta'minotning sifatini oshiradi va uni yanada ishonchli qiladi.
@uzdevid
Toza kod - bu dasturlashda kodning sifati va samaradorligini ta’minlash uchun ishlatiladigan uslub. Toza kod nafaqat kompyuter uchun, balki dasturchilar uchun ham tushunarli bo‘lishi kerak. Kodni o'qish, tushunish va undan foydalanish oson bo'lsa, uni kelajakda qo'llab-quvvatlash, kengaytirish va xatolarni tuzatish ham oson bo'ladi.
Toza kodning asosiy tamoyillari
1. Aniq va qisqa nomlar: O'zgaruvchilar, funksiyalar va sinflar (classlar)ga aniq va mazmunli nomlar berish kodni tushunarli qiladi. Yaxshi nomlar yordamida kodni o'qigan dasturchi darhol nima qilinayotganini tushunishi mumkin.
2. Bir vazifa – bir funksiya: Har bir funksiya faqat bitta vazifani bajarishi kerak. Bu, funksiyalarni kichik va oddiy qilib yozishga imkon beradi, natijada kodni qayta ishlatish va test qilish osonlashadi.
3. Izohlar kamroq, lekin aniq: Kod o'zi uchun gapirishi kerak, ya'ni kod yozilganda izohlar ko'p bo‘lmasligi kerak. Faqat kerakli joylarda izoh qo'shiladi, masalan, kodni tushunish qiyin bo'lgan joylarda.
4. Tuzilishi to'g'ri: Kodning tuzilishi (strukturasi) mantiqiy va tartibli bo'lishi kerak. Masalan, bir-biriga yaqin bo'lgan funksiyalar yoki sinflarni bir joyga to'plash, kodni o'qishni osonlashtiradi.
5. Test bilan ta’minlash: Toza kod yozishda, uni avtomatik testlar bilan tekshirish muhimdir. Testlar yordamida kodning to'g'ri ishlashini ta’minlash va kelajakda o'zgarishlar kiritilganda xatolarni aniqlash oson bo‘ladi.
Nega toza kod muhim?
Toza kod dasturchining samaradorligini oshiradi va jamoaviy ishlashni yengillashtiradi. Toza kodni tushunish va tahrirlash oson bo'lgani uchun, loyiha vaqt o‘tishi bilan murakkablashganida ham, kodni qo‘llab-quvvatlash ancha oson bo‘ladi. Shu sababli, toza kod yozish dasturchining malakasini oshirishda muhim omil hisoblanadi.
Toza kod nafaqat texnik jihatdan yaxshi kod bo'lishi, balki o'qish, tushunish va qo'llab-quvvatlash uchun qulay bo'lishi kerak. Bu tamoyillarni amalda qo'llash dasturiy ta'minotning sifatini oshiradi va uni yanada ishonchli qiladi.
@uzdevid
🔥8👍2❤1
SQL Indexlar va Ularning Turlari
SQL index — bu jadvalda tezkor qidiruvni ta’minlash uchun ishlatiladigan maxsus tuzilma. Indexlar jadval ustunidagi ma'lumotlarni saralash va ularga tezkor kirishni ta’minlaydi. Bunday qilib, katta hajmdagi ma’lumotlarga ega jadvallardan so‘rovlar ko‘proq samaradorlik bilan amalga oshiriladi. (davomi)
@uzdevid
SQL index — bu jadvalda tezkor qidiruvni ta’minlash uchun ishlatiladigan maxsus tuzilma. Indexlar jadval ustunidagi ma'lumotlarni saralash va ularga tezkor kirishni ta’minlaydi. Bunday qilib, katta hajmdagi ma’lumotlarga ega jadvallardan so‘rovlar ko‘proq samaradorlik bilan amalga oshiriladi. (davomi)
@uzdevid
Telegraph
SQL Indexlar va Ularning Turlari
SQL index — bu jadvalda tezkor qidiruvni ta’minlash uchun ishlatiladigan maxsus tuzilma. Indexlar jadval ustunidagi ma'lumotlarni saralash va ularga tezkor kirishni ta’minlaydi. Bunday qilib, katta hajmdagi ma’lumotlarga ega jadvallardan so‘rovlar ko‘proq…
👍8❤2🔥2👏1
SQL indexlar strukturalari
SQL indexlari turli xil ma’lumot tuzilmalari asosida quriladi, ularning har biri ma’lumotlarni tezkor qidirish va qabul qilish uchun o‘ziga xos afzalliklarga ega. Eng keng tarqalgan tuzilma B-tree bo‘lsa-da, boshqa (davomi)
@uzdevid
SQL indexlari turli xil ma’lumot tuzilmalari asosida quriladi, ularning har biri ma’lumotlarni tezkor qidirish va qabul qilish uchun o‘ziga xos afzalliklarga ega. Eng keng tarqalgan tuzilma B-tree bo‘lsa-da, boshqa (davomi)
@uzdevid
Telegraph
SQL indexlar strukturalari
SQL indexlari turli xil ma’lumot tuzilmalari asosida quriladi, ularning har biri ma’lumotlarni tezkor qidirish va qabul qilish uchun o‘ziga xos afzalliklarga ega. Eng keng tarqalgan tuzilma B-tree bo‘lsa-da, boshqa tuzilmalar ham ma’lumotlar bazalari bilan…
🔥3👍2👏2❤1
Algoritm qiyinligi
Algoritmlar qiyinligi — bu algoritmning ishlash samaradorligini va vaqt yoki resurs talablarini baholash usuli. Asosan, algoritm qiyinligi ikkita asosiy mezon bilan o'lchanadi: vaqt murakkabligi va xotira murakkabligi. (davomi)
@uzdevid
Algoritmlar qiyinligi — bu algoritmning ishlash samaradorligini va vaqt yoki resurs talablarini baholash usuli. Asosan, algoritm qiyinligi ikkita asosiy mezon bilan o'lchanadi: vaqt murakkabligi va xotira murakkabligi. (davomi)
@uzdevid
Telegraph
Algoritm qiyinligi
Algoritmlar qiyinligi — bu algoritmning ishlash samaradorligini va vaqt yoki resurs talablarini baholash usuli. Asosan, algoritm qiyinligi ikkita asosiy mezon bilan o'lchanadi: vaqt murakkabligi va xotira murakkabligi. 1. Vaqt Murakkabligi Bu algoritmning…
👍6🔥4👏2❤1
composer-ning .json va .lock fayllarining ahamiyati
PHP dasturlash tilida ishlaydigan loyihalarda paketlarni boshqarish va ularni boshqaruv tizimini soddalashtirish uchun Composer dan foydalaniladi. Ushbu vosita yordamida oson va samarali ravishda kerakli kutubxonalarni loyihaga qo'shish, yangilash yoki o'chirish mumkin. Composer-ning asosiy fayllari esa composer.json va composer.lock hisoblanadi. (davomi)
@uzdevid
PHP dasturlash tilida ishlaydigan loyihalarda paketlarni boshqarish va ularni boshqaruv tizimini soddalashtirish uchun Composer dan foydalaniladi. Ushbu vosita yordamida oson va samarali ravishda kerakli kutubxonalarni loyihaga qo'shish, yangilash yoki o'chirish mumkin. Composer-ning asosiy fayllari esa composer.json va composer.lock hisoblanadi. (davomi)
@uzdevid
Telegraph
composer-ning .json va .lock fayllarining ahamiyati
PHP dasturlash tilida ishlaydigan loyihalarda paketlarni boshqarish va ularni boshqaruv tizimini soddalashtirish uchun Composer dan foydalaniladi. Ushbu vosita yordamida oson va samarali ravishda kerakli kutubxonalarni loyihaga qo'shish, yangilash yoki o'chirish…
👍7🔥3❤1👏1
Composer-da kutubxonalarning talqinini boshqarish
Composer orqali kutubxonalar o‘rnatishda talqinlarni boshqarish uchun turli belgilar ishlatiladi. Keling, ularning asosiy farqlarini ko'rib chiqamiz:
-
-
-
-
-
Bu belgilar talqinlarni o'rnatish va yangilashni aniq boshqarishga yordam beradi.
@uzdevid
Composer orqali kutubxonalar o‘rnatishda talqinlarni boshqarish uchun turli belgilar ishlatiladi. Keling, ularning asosiy farqlarini ko'rib chiqamiz:
-
1.0: Aniq shu talqin o‘rnatiladi.-
1.0.*: 1.0.x qatoridagi istalgan talqin o‘rnatiladi (1.0.1, 1.0.2).-
^1.0: 1.0.x va 1.x.x talqinlari o'rnatilishi yoki yangilanishi mumkin, lekin 2.0.0 emas.-
~1.2: 1.2.x talqinlari o‘rnatiladi, lekin 2.0.0 emas.-
>=1.0 <2.0: 1.0 dan 2.0 gacha bo'lgan talqinlar o'rnatiladi, lekin 2.0 emas.Bu belgilar talqinlarni o'rnatish va yangilashni aniq boshqarishga yordam beradi.
@uzdevid
👍10🔥3❤1👏1
MySQL yoki PostgreSQL, qaysi biri afzalroq?
MySQL va PostgreSQL o'rtasida tanlov qilish loyihaning talablariga bog'liq. Ikkala ma'lumotlar bazasi tizimi ham kuchli va keng qo'llaniladigan variantlar bo'lsa-da, ular o'zlarining xususiyatlari va foydali jihatlari bilan farq qiladi. (davomi)
@uzdevid
MySQL va PostgreSQL o'rtasida tanlov qilish loyihaning talablariga bog'liq. Ikkala ma'lumotlar bazasi tizimi ham kuchli va keng qo'llaniladigan variantlar bo'lsa-da, ular o'zlarining xususiyatlari va foydali jihatlari bilan farq qiladi. (davomi)
@uzdevid
Telegraph
MySQL yoki PostgreSQL, qaysi biri afzalroq?
MySQL va PostgreSQL o'rtasida tanlov qilish loyihaning talablariga bog'liq. Ikkala ma'lumotlar bazasi tizimi ham kuchli va keng qo'llaniladigan variantlar bo'lsa-da, ular o'zlarining xususiyatlari va foydali jihatlari bilan farq qiladi. Quyida qaysi holatlarda…
👍8❤1🔥1👏1
REST va RESTful API, farqi nimada?
REST (Representational State Transfer) — bu veb-servislarni yaratish uchun ishlab chiqilgan me'yorlar to‘plami bo‘lib, u resurslarga kirishni oddiy va tizimli usulda tashkil etishga yordam beradi. (davomi)
@uzdevid
REST (Representational State Transfer) — bu veb-servislarni yaratish uchun ishlab chiqilgan me'yorlar to‘plami bo‘lib, u resurslarga kirishni oddiy va tizimli usulda tashkil etishga yordam beradi. (davomi)
@uzdevid
Telegraph
REST va RESTful API, farqi nimada?
REST (Representational State Transfer) — bu veb-servislarni yaratish uchun ishlab chiqilgan me'yorlar to‘plami bo‘lib, u resurslarga kirishni oddiy va tizimli usulda tashkil etishga yordam beradi. REST API esa shu tamoyillarga asoslangan API bo‘lib, unda…
👍7🔥2❤1👏1
Stateful va Stateless tushunchalari
Kompyuter tarmoqlari va dasturiy ta'minotda "stateless" va "stateful" tushunchalari tizimning mijoz va server o'rtasidagi muloqotni qanday boshqarishini ifodalaydi. (davomi)
@uzdevid
Kompyuter tarmoqlari va dasturiy ta'minotda "stateless" va "stateful" tushunchalari tizimning mijoz va server o'rtasidagi muloqotni qanday boshqarishini ifodalaydi. (davomi)
@uzdevid
Telegraph
Stateful va Stateless tushunchalari
Kompyuter tarmoqlari va dasturiy ta'minotda "stateless" va "stateful" tushunchalari tizimning mijoz va server o'rtasidagi muloqotni qanday boshqarishini ifodalaydi. Stateless Stateless tizimlar har bir so'rovni mustaqil ko'rib chiqadi va oldingi so'rovlar…
👍3🔥3❤1👏1
So'ngi vaqtlarda kiber jinoyat, kartadan pul o'marishlar ko'paygani bois, payme mana shunday test sinovlari o'tkazyabti ekan. Tavsiya qilaman.
https://cybersecurity.repost.uz
@uzdevid
https://cybersecurity.repost.uz
@uzdevid
👍9👏2🔥1
PHP-da funksiyalar obyektlarni qanday qabul qilishi (qiymat bo‘yicha yoki havola bo‘yicha) dasturdagi o‘zgaruvchilar bilan ishlash uslubini belgilaydi. Obyektlar va oddiy ma'lumot turlari bilan ishlashda farqlar mavjud. Keling, obyektlar funksiyaga qanday uzatilishini qisqacha ko‘rib chiqamiz.
Obyektlarni qiymat va havola bo‘yicha uzatish
PHP-da oddiy ma'lumot turlari (masalan, integer, string, array) funksiyaga qiymat bo‘yicha uzatiladi. Bu shuni anglatadiki, o‘zgaruvchining nusxasi funksiyaga yuboriladi, va funksiyada o‘zgarishlar asl o‘zgaruvchiga ta'sir qilmaydi. Ammo obyektlar bilan ishlaganda bu jarayon boshqacha ishlaydi. PHP 5-dan boshlab obyektlar havola bo‘yicha uzatiladi, bu esa obyektga to‘g‘ridan-to‘g‘ri kirish imkonini beradi.
Obyektlarni havola bo‘yicha uzatish
Obyektlar PHP-da funksiyaga havola bo‘yicha uzatiladi. Bu shuni anglatadiki, funksiya obyektning manziliga murojaat qiladi va o‘zgarishlar to‘g‘ridan-to‘g‘ri asl obyektga ta'sir qiladi. Masalan, funksiyada obyektning biror xususiyati o‘zgartirilsa, bu o‘zgarish asl obyektga ham ta'sir qiladi.
Bu yerda
Obyektlarni klonlash va nusxa qilib uzatish
Ba’zi hollarda obyektning asl qiymatini saqlab qolish kerak bo‘ladi. Bunday hollarda obyektni funksiyaga yuborishdan oldin klonlash orqali nusxa yaratish mumkin. Buning uchun
Bu misolda
Qiymat va havola bo‘yicha uzatish o‘rtasidagi farq
- Qiymat bo‘yicha uzatishda obyektning nusxasi uzatiladi, bu esa asl obyektga ta’sir qilmaydi.
- Havola bo‘yicha uzatishda esa obyektning manzili uzatiladi va funksiyadagi o‘zgarishlar obyektning asl qiymatiga ta’sir ko‘rsatadi.
Xulosa
PHP-da obyektlar avtomatik ravishda havola bo‘yicha uzatiladi, ya'ni funksiyalar obyektning asl qiymatini o‘zgartirishi mumkin. Agar funksiyaga uzatilgan obyektning asl qiymati o‘zgarishini istamasangiz, uni
@uzdevid
Obyektlarni qiymat va havola bo‘yicha uzatish
PHP-da oddiy ma'lumot turlari (masalan, integer, string, array) funksiyaga qiymat bo‘yicha uzatiladi. Bu shuni anglatadiki, o‘zgaruvchining nusxasi funksiyaga yuboriladi, va funksiyada o‘zgarishlar asl o‘zgaruvchiga ta'sir qilmaydi. Ammo obyektlar bilan ishlaganda bu jarayon boshqacha ishlaydi. PHP 5-dan boshlab obyektlar havola bo‘yicha uzatiladi, bu esa obyektga to‘g‘ridan-to‘g‘ri kirish imkonini beradi.
Obyektlarni havola bo‘yicha uzatish
Obyektlar PHP-da funksiyaga havola bo‘yicha uzatiladi. Bu shuni anglatadiki, funksiya obyektning manziliga murojaat qiladi va o‘zgarishlar to‘g‘ridan-to‘g‘ri asl obyektga ta'sir qiladi. Masalan, funksiyada obyektning biror xususiyati o‘zgartirilsa, bu o‘zgarish asl obyektga ham ta'sir qiladi.
class Product {
public $price = 100;
}
function changePrice($item) {
$item->price = 200;
}
$product = new Product();
changePrice($product);
echo $product->price; // Result: 200Bu yerda
$product obyektini funksiyaga uzatganda, obyektning manzili uzatiladi. Shuning uchun funksiya ichida xususiyat o‘zgarishi asl obyektga ta’sir ko‘rsatadi.Obyektlarni klonlash va nusxa qilib uzatish
Ba’zi hollarda obyektning asl qiymatini saqlab qolish kerak bo‘ladi. Bunday hollarda obyektni funksiyaga yuborishdan oldin klonlash orqali nusxa yaratish mumkin. Buning uchun
clone operatoridan foydalaniladi. class Product {
public $price = 100;
}
function changePrice($item) {
$item->price = 200;
}
$product = new Product();
$clonedProduct = clone $product;
changePrice($clonedProduct);
echo $product->price; // Result: 100
echo $clonedProduct->price; // Result: 200Bu misolda
$clonedProduct obyektning nusxasi sifatida yaratiladi va funksiya bu nusxani o‘zgartirsa ham, asl $product obyektining qiymati saqlanib qoladi.Qiymat va havola bo‘yicha uzatish o‘rtasidagi farq
- Qiymat bo‘yicha uzatishda obyektning nusxasi uzatiladi, bu esa asl obyektga ta’sir qilmaydi.
- Havola bo‘yicha uzatishda esa obyektning manzili uzatiladi va funksiyadagi o‘zgarishlar obyektning asl qiymatiga ta’sir ko‘rsatadi.
Xulosa
PHP-da obyektlar avtomatik ravishda havola bo‘yicha uzatiladi, ya'ni funksiyalar obyektning asl qiymatini o‘zgartirishi mumkin. Agar funksiyaga uzatilgan obyektning asl qiymati o‘zgarishini istamasangiz, uni
clone yordamida nusxalash mumkin. Bu tushunchalar kodni optimallashtirishda va obyektlar bilan ishlashda muhim rol o‘ynaydi, shuningdek, PHP dasturlarini to‘g‘ri tushunib yozishga yordam beradi.@uzdevid
👍14👏3❤1🔥1
RESTful API — bu REST tamoyillariga to‘liq amal qiladigan API bo‘lib, mijoz va server o‘rtasidagi o‘zaro aloqa uchun mo‘ljallangan samarali va oddiy interfeysdir. RESTful API lar HTTP protokoli orqali resurslarni boshqarishga imkon beradi. (davomi)
@uzdevid
@uzdevid
Telegraph
RESTful API yohud REST-ning tamoyillariga qat'iy amal qilish
RESTful API — bu REST tamoyillariga to‘liq amal qiladigan API bo‘lib, mijoz va server o‘rtasidagi o‘zaro aloqa uchun mo‘ljallangan samarali va oddiy interfeysdir. RESTful API lar HTTP protokoli orqali resurslarni boshqarishga imkon beradi. REST tamoyillariga…
👍8👏2🔥1
is_null yoki \is_null, qaysi biri afzal va nima uchun?
Nom bo'shlig'i (namespace) mavjud bo'lgan loyihada, is_null deya chaqirilsa, php avvalo joriy nom bo'shlig'dan (namespace)
Bu tezlikning farqi amalda sezilmasligi mumkin, lekin murakkab loyihalar 'namespace' bilan ishlaganda \is_null afzalroq bo'ladi.
Huddi shu tartib is_array, in_array, class_exists, end va boshqa global funksiyalarda ham ishlaydi.
@uzdevid
is_null - php-ning bu funksiyasi haqida yozish shart emas deb o'ylayman. Ushbu funksiyani har ikki hil chaqirish uslubi bir xil natija qaytarsada ularning chaqirilish mexanizmi tarafdan farqi bor. Nom bo'shlig'i (namespace) mavjud bo'lgan loyihada, is_null deya chaqirilsa, php avvalo joriy nom bo'shlig'dan (namespace)
is_null nomli funksiyani qidiradi, topaolmasa so'ng global funksiyalar ichidan ushbu funksiyani chaqiradi. Va bu orada sezilarli bo'lmagan vaqt sarflaydi.\is_null (backslash) orqali funksiya chaqirilsa, php joriy nom bo'shlig'iga (namespace) ahamiyat bermasdan, bevosita global funksiyalar ichidan chaqiradi. Bu tezlikning farqi amalda sezilmasligi mumkin, lekin murakkab loyihalar 'namespace' bilan ishlaganda \is_null afzalroq bo'ladi.
Huddi shu tartib is_array, in_array, class_exists, end va boshqa global funksiyalarda ham ishlaydi.
@uzdevid
👍12🔥3👎2👏2
Dependency inversion va injection nima va ularning farqi nimada?
Dasturlashda modullar o'rtasida bog'lanishlarni boshqarish juda muhimdir. Bu maqsadda "Dependency Inversion" (DI) va "Dependency Injection" (DI) tushunchalari ko'pincha bir-biriga o'xshash tarzda qo'llaniladi, lekin ularning ma'nolari va ishlatilishida farqlar bor. (davomi)
@uzdevid
Dasturlashda modullar o'rtasida bog'lanishlarni boshqarish juda muhimdir. Bu maqsadda "Dependency Inversion" (DI) va "Dependency Injection" (DI) tushunchalari ko'pincha bir-biriga o'xshash tarzda qo'llaniladi, lekin ularning ma'nolari va ishlatilishida farqlar bor. (davomi)
@uzdevid
Telegraph
Dependency inversion va injection nima va ularning farqi nimada?
Dasturlashda modullar o'rtasida bog'lanishlarni boshqarish juda muhimdir. Bu maqsadda "Dependency Inversion" (DI) va "Dependency Injection" (DI) tushunchalari ko'pincha bir-biriga o'xshash tarzda qo'llaniladi, lekin ularning ma'nolari va ishlatilishida farqlar…
👍15👎3🔥2👏2🥰1
Yagona mas'uliyat printsipi (Single Responsibility Principle, SRP) – bu SOLID tamoyillaridan biri bo‘lib, har bir sinf (class) faqat bitta vazifani bajarishi kerakligini aytadi. (davomi)
@uzdevid
@uzdevid
Telegraph
Yagona mas'uliyat printsipi
Yagona mas'uliyat printsipi (Single Responsibility Principle, SRP) – bu SOLID tamoyillaridan biri bo‘lib, har bir sinf (class) faqat bitta vazifani bajarishi kerakligini aytadi. Boshqacha aytganda, sinfning o‘zgarishi uchun faqat bitta sabab bo‘lishi kerak.…
👍14👎2🔥2👏2
Mikroservislar: Kichik xizmatlar bilan katta tizimlar yaratish
Mikroservislar arxitekturasi katta va murakkab dasturiy tizimlarni kichik, mustaqil xizmatlarga bo‘lib boshqarish imkonini beradigan usuldir. Har bir mikroservis o‘ziga xos vazifani bajaradi va boshqa mikroservislar bilan minimal o‘zaro bog‘liq holda ishlaydi. Bu yondashuv tizimlarni qurishda kengayuvchanlik, mustaqillik va texnologik xilma-xillikni ta'minlaydi.
### Mikroservislar qanday ishlaydi?
Mikroservislar monolit yondashuvga nisbatan kichikroq hajmli va mustaqil komponentlardan iborat bo‘ladi. Har bir mikroservis alohida jamoa tomonidan ishlab chiqilishi va boshqarilishi mumkin. Ular HTTP, gRPC, RabbitMQ yoki WebSocket kabi turli protokollar orqali bir-biri bilan muloqot qiladi.
Mikroservislar afzalliklari:
1. Kengayuvchanlik: Har bir xizmat alohida kengaytiriladi, bu esa tizim yukini balanslashda qulaylik yaratadi.
2. Texnologik mustaqillik: Har bir mikroservis o‘z texnologiyasi va dasturlash tili yordamida yaratilishi mumkin.
3. Yuqori mavjudlik: Biror mikroservis ishdan chiqqanda, boshqa xizmatlar ishlashda davom etadi.
4. Tezkor joriy etish: Kichik xizmatlar tezroq ishlab chiqilib, yangilanishlar tez-tez amalga oshiriladi.
Mikroservislar kamchiliklari:
1. Murakkablik: Ko‘plab xizmatlarni bir-biri bilan sinxronlashtirish, monitoring qilish va muvofiqlashtirish murakkab bo‘lishi mumkin.
2. Tarmoq kechikishlari: Xizmatlar o‘zaro tarmoq orqali muloqot qilgani sababli, kechikishlar yuzaga kelishi mumkin.
3. Ma'lumotlarni boshqarish: Har bir xizmat o‘z ma'lumot bazasiga ega bo‘lishi mumkin, bu esa ma'lumotlarning izchilligini saqlashni qiyinlashtiradi.
Xulosa
Mikroservislar yirik dasturlarni boshqarish, ishlab chiqish va kengaytirishda zamonaviy yechim hisoblanadi. Kichik xizmatlar ko‘rinishida dasturlarni tashkil etish orqali tizim mustaqilligi va kengayuvchanligi oshadi. Biroq, ularni muvaffaqiyatli amalga oshirish0 murakkablik va tarmoq muammolariga qarshi ehtiyotkorlik talab qiladi.
@uzdevid
Mikroservislar arxitekturasi katta va murakkab dasturiy tizimlarni kichik, mustaqil xizmatlarga bo‘lib boshqarish imkonini beradigan usuldir. Har bir mikroservis o‘ziga xos vazifani bajaradi va boshqa mikroservislar bilan minimal o‘zaro bog‘liq holda ishlaydi. Bu yondashuv tizimlarni qurishda kengayuvchanlik, mustaqillik va texnologik xilma-xillikni ta'minlaydi.
### Mikroservislar qanday ishlaydi?
Mikroservislar monolit yondashuvga nisbatan kichikroq hajmli va mustaqil komponentlardan iborat bo‘ladi. Har bir mikroservis alohida jamoa tomonidan ishlab chiqilishi va boshqarilishi mumkin. Ular HTTP, gRPC, RabbitMQ yoki WebSocket kabi turli protokollar orqali bir-biri bilan muloqot qiladi.
Mikroservislar afzalliklari:
1. Kengayuvchanlik: Har bir xizmat alohida kengaytiriladi, bu esa tizim yukini balanslashda qulaylik yaratadi.
2. Texnologik mustaqillik: Har bir mikroservis o‘z texnologiyasi va dasturlash tili yordamida yaratilishi mumkin.
3. Yuqori mavjudlik: Biror mikroservis ishdan chiqqanda, boshqa xizmatlar ishlashda davom etadi.
4. Tezkor joriy etish: Kichik xizmatlar tezroq ishlab chiqilib, yangilanishlar tez-tez amalga oshiriladi.
Mikroservislar kamchiliklari:
1. Murakkablik: Ko‘plab xizmatlarni bir-biri bilan sinxronlashtirish, monitoring qilish va muvofiqlashtirish murakkab bo‘lishi mumkin.
2. Tarmoq kechikishlari: Xizmatlar o‘zaro tarmoq orqali muloqot qilgani sababli, kechikishlar yuzaga kelishi mumkin.
3. Ma'lumotlarni boshqarish: Har bir xizmat o‘z ma'lumot bazasiga ega bo‘lishi mumkin, bu esa ma'lumotlarning izchilligini saqlashni qiyinlashtiradi.
Xulosa
Mikroservislar yirik dasturlarni boshqarish, ishlab chiqish va kengaytirishda zamonaviy yechim hisoblanadi. Kichik xizmatlar ko‘rinishida dasturlarni tashkil etish orqali tizim mustaqilligi va kengayuvchanligi oshadi. Biroq, ularni muvaffaqiyatli amalga oshirish0 murakkablik va tarmoq muammolariga qarshi ehtiyotkorlik talab qiladi.
@uzdevid
👍33👎6🔥3😢2👏1
Mikroservis Tamoyillari: Yirik Tizimlarni Qismlarga Ajratish Asoslari
Mikroservis arxitekturasi samarali ishlashi uchun ma'lum tamoyillarga amal qilish muhim. Ushbu tamoyillar mikroservislarni mustaqil, kengayuvchan va ishonchli tizimlar yaratishga yordam beradi.
1. Xizmatlar Mustaqilligi
Har bir mikroservis alohida ishlab chiqilishi, joylashtirilishi va boshqarilishi kerak. Bu ularning boshqa xizmatlardan mustaqil bo‘lishini ta'minlaydi va bir xizmat ishdan chiqsa, boshqa xizmatlar ishlashda davom etishi mumkin.
2. Yagona Mas'uliyat Printsipi (SRP)
Mikroservislar faqat bitta vazifani bajarishi kerak. Kichik va aniq funksiyalarni bajaruvchi xizmatlar yaratish tizimni oson boshqarish va kengaytirishga imkon beradi.
3. Avtonomiyat
Xizmatlar o‘z muammolarini mustaqil hal qilishi kerak. Har bir mikroservis o‘z biznes jarayonlariga ega bo‘lishi va alohida texnologiya to‘plamidan foydalanishi mumkin. Bu ularga mustaqillikni va moslashuvchanlikni oshiradi.
4. Mustaqil Joylashtirish
Har bir mikroservis alohida joylashtirilishi va yangilanishi mumkin bo‘lishi kerak. Bu yangi funksiyalarni tezroq joriy etish va mavjud xizmatlarni yangilashda tizimga minimal ta'sir ko‘rsatish imkonini beradi.
5. Decentralizatsiyalangan Ma'lumotlar Boshqaruvi
Mikroservislar ma'lumotlarni o‘z ichida boshqarishi kerak. Markazlashtirilgan ma'lumotlar omboridan ko‘ra, har bir mikroservis o‘ziga tegishli ma'lumotlarni boshqarib, o‘z ma'lumotlar omboridan foydalanadi.
6. Tarmoq orqali Muloqot
Mikroservislar o‘zaro API yoki xabar tizimlari orqali muloqot qiladi. Bu ular orasidagi bog‘liqlikni kamaytiradi va ularni kengaytirishga imkon beradi, lekin bu tarmoq kechikishlari va ishonchlilikka e'tibor berishni talab qiladi.
7. Monitoring va Logging
Har bir mikroservis uchun monitoring va log yuritish jarayoni mustahkam bo‘lishi kerak. Bu xizmatlarning sog‘lig‘ini kuzatish va muammolarni tezda aniqlashga yordam beradi.
Xulosa
Mikroservis tamoyillari ulardan samarali foydalanish uchun muhimdir. Xizmatlar mustaqilligi, avtonomiyat va mustaqil joylashtirish orqali yirik tizimlarni yanada moslashuvchan va kengayuvchan qilish mumkin.
@uzdevid
Mikroservis arxitekturasi samarali ishlashi uchun ma'lum tamoyillarga amal qilish muhim. Ushbu tamoyillar mikroservislarni mustaqil, kengayuvchan va ishonchli tizimlar yaratishga yordam beradi.
1. Xizmatlar Mustaqilligi
Har bir mikroservis alohida ishlab chiqilishi, joylashtirilishi va boshqarilishi kerak. Bu ularning boshqa xizmatlardan mustaqil bo‘lishini ta'minlaydi va bir xizmat ishdan chiqsa, boshqa xizmatlar ishlashda davom etishi mumkin.
2. Yagona Mas'uliyat Printsipi (SRP)
Mikroservislar faqat bitta vazifani bajarishi kerak. Kichik va aniq funksiyalarni bajaruvchi xizmatlar yaratish tizimni oson boshqarish va kengaytirishga imkon beradi.
3. Avtonomiyat
Xizmatlar o‘z muammolarini mustaqil hal qilishi kerak. Har bir mikroservis o‘z biznes jarayonlariga ega bo‘lishi va alohida texnologiya to‘plamidan foydalanishi mumkin. Bu ularga mustaqillikni va moslashuvchanlikni oshiradi.
4. Mustaqil Joylashtirish
Har bir mikroservis alohida joylashtirilishi va yangilanishi mumkin bo‘lishi kerak. Bu yangi funksiyalarni tezroq joriy etish va mavjud xizmatlarni yangilashda tizimga minimal ta'sir ko‘rsatish imkonini beradi.
5. Decentralizatsiyalangan Ma'lumotlar Boshqaruvi
Mikroservislar ma'lumotlarni o‘z ichida boshqarishi kerak. Markazlashtirilgan ma'lumotlar omboridan ko‘ra, har bir mikroservis o‘ziga tegishli ma'lumotlarni boshqarib, o‘z ma'lumotlar omboridan foydalanadi.
6. Tarmoq orqali Muloqot
Mikroservislar o‘zaro API yoki xabar tizimlari orqali muloqot qiladi. Bu ular orasidagi bog‘liqlikni kamaytiradi va ularni kengaytirishga imkon beradi, lekin bu tarmoq kechikishlari va ishonchlilikka e'tibor berishni talab qiladi.
7. Monitoring va Logging
Har bir mikroservis uchun monitoring va log yuritish jarayoni mustahkam bo‘lishi kerak. Bu xizmatlarning sog‘lig‘ini kuzatish va muammolarni tezda aniqlashga yordam beradi.
Xulosa
Mikroservis tamoyillari ulardan samarali foydalanish uchun muhimdir. Xizmatlar mustaqilligi, avtonomiyat va mustaqil joylashtirish orqali yirik tizimlarni yanada moslashuvchan va kengayuvchan qilish mumkin.
@uzdevid
👍70❤16👎9🤔9🔥5🥰5
Yangi chiqayotgan (hali chiqmagan) Yii3 freymvorki haqida video kurs chiqaraylikmi?
Anonymous Poll
57%
Xa
23%
Albatta
20%
Zarar qilmaydi
👍53😁30🔥13❤7🥰3👎2👏2