Intersec 2025 ko'rgazmasidan lavhalar.
Faqat ko'rgazmada xitoyliklar Pokiston emas O'zbekistonlik ekanimizni tushuntirib berolmadik)). Bunday davlat borligidan bexabar ekan ular.
Faqat ko'rgazmada xitoyliklar Pokiston emas O'zbekistonlik ekanimizni tushuntirib berolmadik)). Bunday davlat borligidan bexabar ekan ular.
Vanihoyat virtualbox 7 macbook arm platforlaridayam stabil ishlashni boshladi. Paralles Desktopga yillik litsenziya olib qo'ygab @orzklv uchun bir daqiqa sukut saqlaymiz)
Virtualizatsiya arm va x86_64 arxitekturalari uchun muammosiz ishlamoqda, shuningdek network va tashqi qurilmalardayam muammo kuzatilmadi. Yagona muammo yangi VM ochgandan so'ng sizda EFI manager kerakli startup faylni topolmasligi hisoblanadi. Ammo muammoga yechim bor.
Virtual mashina ishga tushirilganda birinchi filesystemdan startup.nsh faylini topa olmaganini va shu asosida EFI shellga o'tishni so'raydi. Aynan shu qismda FS# (# bu faylsystem identifikatori, ko'p holatda 0) fayl tizimiga o'tib kerakli faylni yaratish lozim.
EFI Shell terminalda quyidagi buyruqlarni kiritamiz:
$: FS0:
LS, CD buyruqlari orqali kerakli papkalar bilan manipulatsiya qilsangiz bo'ladi. Ushbu manipulatsiyadan asosiy maqsad boot.efi faylini topish va uni ishga tushirish hisoblanadi. Tez-tez foydalanadigan operatsion tizimlarga ko'ra ular quyidagilardan biri bo'lishi mumkin:
Linuxda agarda bootloader grub asosida bo'lsa arxitekturaga qarab
Virtual mashina har safar o'chib yonganda bu ishni takrorlamaslik uchun faylsystemga o'tgach edit startup.nsh buyrug'i orqali yangi fayl yaratish va uni ichiga kerakli efi fayl joylashuvini ko'rsatishingiz mumkin.
Misol:
Fayl kontentiga:
ctrl+s faylni saqlash, ctrl+q dan esa tahrirlash oynasidan chiqish uchun foydalansangiz bo'ladi. Shundan so'ng shunchaki
@yetimdasturchi
Virtualizatsiya arm va x86_64 arxitekturalari uchun muammosiz ishlamoqda, shuningdek network va tashqi qurilmalardayam muammo kuzatilmadi. Yagona muammo yangi VM ochgandan so'ng sizda EFI manager kerakli startup faylni topolmasligi hisoblanadi. Ammo muammoga yechim bor.
Virtual mashina ishga tushirilganda birinchi filesystemdan startup.nsh faylini topa olmaganini va shu asosida EFI shellga o'tishni so'raydi. Aynan shu qismda FS# (# bu faylsystem identifikatori, ko'p holatda 0) fayl tizimiga o'tib kerakli faylni yaratish lozim.
EFI Shell terminalda quyidagi buyruqlarni kiritamiz:
$: FS0:
LS, CD buyruqlari orqali kerakli papkalar bilan manipulatsiya qilsangiz bo'ladi. Ushbu manipulatsiyadan asosiy maqsad boot.efi faylini topish va uni ishga tushirish hisoblanadi. Tez-tez foydalanadigan operatsion tizimlarga ko'ra ular quyidagilardan biri bo'lishi mumkin:
Macos: \System\Library\CoreServices\boot.efi
Windows: \EFI\boot\bootx64.efi
Linux: \EFI\debian\grubx64.efi
Linuxda agarda bootloader grub asosida bo'lsa arxitekturaga qarab
grubaa64.efi
fayli ham bo'lishi mumkin. Agarda yuqoridagilardan birortasi sizga mos kelmasa kerakli fayli yuqoridagi manipulatsiya buyruqlari orqali aniqlash imkoningiz bor. Fayl aniqlagach esa terminalga shunchaki fayl nomini o'zini kiritish kifoya. Masalan:$: grubaa64.efi
Virtual mashina har safar o'chib yonganda bu ishni takrorlamaslik uchun faylsystemga o'tgach edit startup.nsh buyrug'i orqali yangi fayl yaratish va uni ichiga kerakli efi fayl joylashuvini ko'rsatishingiz mumkin.
Misol:
$: FS0:
$: edit startup.sh
Fayl kontentiga:
\EFI\debian\grubaa64.efi
ctrl+s faylni saqlash, ctrl+q dan esa tahrirlash oynasidan chiqish uchun foydalansangiz bo'ladi. Shundan so'ng shunchaki
reset
buyrug'ini kiritasiz va virtual machina ichidagi os normal holatda ishga tushishni boshlaydi.@yetimdasturchi
Yetim dasturchi kundaligi
Vanihoyat virtualbox 7 macbook arm platforlaridayam stabil ishlashni boshladi. Paralles Desktopga yillik litsenziya olib qo'ygab @orzklv uchun bir daqiqa sukut saqlaymiz) Virtualizatsiya arm va x86_64 arxitekturalari uchun muammosiz ishlamoqda, shuningdek…
Hozircha hisobga olinmagani battery uchun azoblash xizmati ekan. Hattoki ARM emulating uchunam.
Serverda postfix uchun maqil queue oshib ketishi doim ham yaxshilikka olib kelmaydi. Bu odatda kattaroq mail serverlarga yuboriladigan xabarlar ketma ketligida spamga tushish ehtimolini oshiradi. Shu sababli doimiy keraksiz mail xabarlarni tozlab turish lozim.
Xabarlar odatda ketmay qolishi userlar email manzillarini xato kiritishi sababli kelib chiqadi. Albatta RFC-821 standarti bo'yicha bu muammoni oldini olish mumkin. Ammo doim ham ish beradigan metod emas bu. Oson yo'li esa ota bobomiz kabi tozalovchi bash script yozish.
https://gist.github.com/yetimdasturchi/1ebc4dc4ff1edb817827bf56c81a5748
@yetimdasturchi
Xabarlar odatda ketmay qolishi userlar email manzillarini xato kiritishi sababli kelib chiqadi. Albatta RFC-821 standarti bo'yicha bu muammoni oldini olish mumkin. Ammo doim ham ish beradigan metod emas bu. Oson yo'li esa ota bobomiz kabi tozalovchi bash script yozish.
https://gist.github.com/yetimdasturchi/1ebc4dc4ff1edb817827bf56c81a5748
@yetimdasturchi
Yetim dasturchi kundaligi
Serverda postfix uchun maqil queue oshib ketishi doim ham yaxshilikka olib kelmaydi. Bu odatda kattaroq mail serverlarga yuboriladigan xabarlar ketma ketligida spamga tushish ehtimolini oshiradi. Shu sababli doimiy keraksiz mail xabarlarni tozlab turish lozim.…
RFC-821 standarti bo'yicha emaillar mavjudligini tekshiruvchi eskiroq kod.
https://github.com/yetimdasturchi/mail-validator
https://github.com/yetimdasturchi/mail-validator
Forwarded from shakhzod's lab (Shakhzod)
supporting new generation:
https://www.tg-me.com/azamjonbro_news/37
my suggestions for him:
if you doing static html development, better stick with tech trends:
- vite (vanilla js option with github.com/alexlafroscia/vite-plugin-handlebars for splitting your components into chunks)
- tailwindcss (if you can)
- bem.info + scss (if you can't)
in the end you do npm run build and get almost the same output
https://www.tg-me.com/azamjonbro_news/37
my suggestions for him:
if you doing static html development, better stick with tech trends:
- vite (vanilla js option with github.com/alexlafroscia/vite-plugin-handlebars for splitting your components into chunks)
- tailwindcss (if you can)
- bem.info + scss (if you can't)
in the end you do npm run build and get almost the same output
Telegram
Azamjon Bro
Assalomu alaykum.
Bugun you tube sahifamizga yangi video chiqardik.
Ko'rib like bosib kommentariyalarni ayamaysiz degan umiddaman.
https://www.youtube.com/watch?v=UjhJISeFYJY
Bugun you tube sahifamizga yangi video chiqardik.
Ko'rib like bosib kommentariyalarni ayamaysiz degan umiddaman.
https://www.youtube.com/watch?v=UjhJISeFYJY
Agar sizda o'zgaruvchi qiymatini bir necha boshqa qiymatlarga ega ekanligini tekshirishga ehtiyot bo'lsa odatda hight level tillarda massiv ichidan tekshirish mumkin buni (Bu ancha oson usul). Masalan phpda in_array($value, [0,1,2,3,4]) bo'lsa javascriptda [0,1,2,3,4].indexOf(value).
Lekin quyi tillarda bu prinsiplar boshqacharoq bo'lishi mumkin. Masalan c dasturlash tilida massiv o'lchamini olib keyin uni iteratsiya qilishga to'g'ri keladi. Ammo bu ishni sizda shift operatorlari orqali qilish imkoni ham mavjud (yuqori darajali tillardayam). Bu ancha tezkor va samaraliroq usul hisoblanadi (Kodni boshqalar uchun tushunarsiz bo'lishi hisobga olmasa).
Demak bu uchun left shifting operatori bizga ish beradi. Bu operator chap operandidagi har bir bitni o'ng operand tomonidan ko'rsatilgan pozitsiyalar soni bo'yicha chapga siljitadi.
Misol:
Yuqoridagi misoldan foydalangan holda bitwise left shift va bitwise and orqali [0,1,2,3,4].indexOf(value) uchun alternativ amalga oshirish:
Bu qanday ishlaydi?
2 ni 1 pozitsiyaga siljitganimizda uning natijasi 0100 ga teng bo'ladi. Bitwise AND (&) operatsiyasi esa ikkita raqamning har bir bitini bitma-bit taqqoslaydi va agar ikkala mos bit 1 bo'lsa 1 ni qaytaradi, aks holda 0. Misol:
Agarda kirish uchun 5 berilsa:
Shunday qilib bizda chiquvchi natijaga qarab boolean (0 va 1) hosil bo'ladi va orada taqqoslash amalga oshiriladi. Shuningdek bu massivni qayta ishlashdan ko'ra ancha tez jarayon hisoblanadi.
Bonus: 1,3,5 raqamlari uchun tekshiruvni amalga oshirish:
P.S: Registerlarni tekshirish ham xuddi shunday usulda ishlaydi. Masalan kirish alifboga (ascii) mos ekanligi, uning katta yoki kichkina harf ekanligi kabi holatlar. Yoki diapazonga qarab boshqa turdagi natijalarni ham tekshirishingiz mumkin.
@yetimdasturchi
Lekin quyi tillarda bu prinsiplar boshqacharoq bo'lishi mumkin. Masalan c dasturlash tilida massiv o'lchamini olib keyin uni iteratsiya qilishga to'g'ri keladi. Ammo bu ishni sizda shift operatorlari orqali qilish imkoni ham mavjud (yuqori darajali tillardayam). Bu ancha tezkor va samaraliroq usul hisoblanadi (Kodni boshqalar uchun tushunarsiz bo'lishi hisobga olmasa).
Demak bu uchun left shifting operatori bizga ish beradi. Bu operator chap operandidagi har bir bitni o'ng operand tomonidan ko'rsatilgan pozitsiyalar soni bo'yicha chapga siljitadi.
Misol:
x = 2;
n = 1;
result = n << x; (1 * 2^2 = 1 * 4 = 4) //kirish 0010, natija 0100
Yuqoridagi misoldan foydalangan holda bitwise left shift va bitwise and orqali [0,1,2,3,4].indexOf(value) uchun alternativ amalga oshirish:
int value = 2;
int result = (1 << value) & 0b11111;
Bu qanday ishlaydi?
2 ni 1 pozitsiyaga siljitganimizda uning natijasi 0100 ga teng bo'ladi. Bitwise AND (&) operatsiyasi esa ikkita raqamning har bir bitini bitma-bit taqqoslaydi va agar ikkala mos bit 1 bo'lsa 1 ni qaytaradi, aks holda 0. Misol:
0b00100 //4
& 0b11111 //31
-------------
0b00100 //natija 4
Bit 4: 0 & 1 → 0
Bit 3: 0 & 1 → 0
Bit 2: 1 & 1 → 1
Bit 1: 0 & 1 → 0
Bit 0: 0 & 1 → 0
Agarda kirish uchun 5 berilsa:
0b100000 //32
& 0b011111 //31
-------------
0b000000 //natija 0
Bit 5: 1 & 0 → 0
Bit 4: 0 & 1 → 0
Bit 3: 0 & 1 → 0
Bit 2: 0 & 1 → 0
Bit 1: 0 & 1 → 0
Bit 0: 0 & 1 → 0
Shunday qilib bizda chiquvchi natijaga qarab boolean (0 va 1) hosil bo'ladi va orada taqqoslash amalga oshiriladi. Shuningdek bu massivni qayta ishlashdan ko'ra ancha tez jarayon hisoblanadi.
Bonus: 1,3,5 raqamlari uchun tekshiruvni amalga oshirish:
(1 << value) & 0b101010
P.S: Registerlarni tekshirish ham xuddi shunday usulda ishlaydi. Masalan kirish alifboga (ascii) mos ekanligi, uning katta yoki kichkina harf ekanligi kabi holatlar. Yoki diapazonga qarab boshqa turdagi natijalarni ham tekshirishingiz mumkin.
@yetimdasturchi
Yetim dasturchi kundaligi
Agar sizda o'zgaruvchi qiymatini bir necha boshqa qiymatlarga ega ekanligini tekshirishga ehtiyot bo'lsa odatda hight level tillarda massiv ichidan tekshirish mumkin buni (Bu ancha oson usul). Masalan phpda in_array($value, [0,1,2,3,4]) bo'lsa javascriptda…
Masalan bitlarga daxldor yana bir qiziq eksperiment, judayam samarali usul emas ammo ma'lum holatlarda ayniqsa qurilmalar orasida aniqligi past bo'lgan ma'lumotlarni almashishga yordam beradi:
#include <stdio.h>
#include <stdint.h>
#include <string.h>
int to_int(float x) {
uint32_t bits;
memcpy(&bits, &x, sizeof(x));
return (int)bits;
}
float to_float(int x) {
float result;
memcpy(&result, &x, sizeof(x));
return result;
}
int main() {
float input = 10.5;
int i = to_int( input );
printf("Input: %f\n", input);
printf("Integer: %d\n", i);
printf("Float: %f\n", to_float(i));
return 0;
}
Yetim dasturchi kundaligi
Agar sizda o'zgaruvchi qiymatini bir necha boshqa qiymatlarga ega ekanligini tekshirishga ehtiyot bo'lsa odatda hight level tillarda massiv ichidan tekshirish mumkin buni (Bu ancha oson usul). Masalan phpda in_array($value, [0,1,2,3,4]) bo'lsa javascriptda…
Bunday mayda chuydalar bilan olishib yozishning o'ziga yarasha natijalari ham bo'ladi odatda. Masalan 300 ming qatordan ortiq kodning kompiliyatsiya qilinganda 2Mb ga yaqin bo'lishi va keyinchalik arzimagan resurslar ishlatishi.
Anbernic uchun dual sd Garlic OS tayyorlash
https://diary.manu.uz/blog/anbernic-uchun-dual-sd-garlic-os-tayyorlash.htm
@yetimdasturchi
https://diary.manu.uz/blog/anbernic-uchun-dual-sd-garlic-os-tayyorlash.htm
@yetimdasturchi