Forwarded from Engineering Notes
Telegram botlar qanday ishlashini tushunish uchun polling, webhook nima,
ular nega kerak kabi savollarga javob topsak.
User telegramda botga biror buyruq yuborganda, unga javob qaytishi uchun bu buyruq biz yozgan kodimiz turgan servergacha yetib kelishi kerak va server unga javob qaytarishi kerak. User yuborgan buyruqlar telegramning serveriga borib tushadi. Endi o'sha serverga kelgan buyruqlarni bizning serverimizga yetkazish kerak. Lekin telegram aynan o'sha bot uchun yozilgan bizning kodimiz qayerda turganini qanday biladi?
Telegram botlar uchun HTTP protocolidan foydalanadi. Muammo shundaki, HTTP bir tomonlama ishlaydi(push/promisedan tashqari). Ya'ni faqat bir tomon(client) request yuboradi, ikkinchi taraf(server) uni qabul qilib, response qaytaradi.
Bu degani, server xohlagan paytida clientga response yubora olmaydi. Faqatgina client request yuborgandan keyingina response yuborish mumkin.
Bizning server bilan telegram server orasida ma'lumot almashishning ikki yo'li bor:
1. Bizning server HTTP client, telegram serveri esa HTTP server vazifasini bajaradi.
2. Telegram serveri HTTP client, bizning server esa HTTP server vazifasini bajaradi.
1. Deylik, user telegram botga biror buyruq yubordi. Telegram serveri bu buyruqni to'g'ridan to'g'ri bizning serverga yubora olmaydi. Sababi, yuqorida kelishganimizdek, faqat client birinchi bo'lib ma'lumot yubora oladi. Telegram server esa hozir HTTP server rolini o'ynayapti. Plus, telegram biz qaysi bot haqida so'rayotganimizni ham bilmaydi. Demak, avval client so'rov yuborishi kerak.
Lekin client qachon so'rov yuborish kerakligini(telegramga yangi buyruq kelganini) qanday biladi?
Javob — hech qanday. Shunchaki ma'lum vaqt oraligi bilan telegram serveriga to'xtovsiz request yuborib turadi. Botga yangi buyruq kelsa, telegram keyingi safar bizning serverdan request kelganda uni response qilib yuboradi. Bu taxminan mana bunday bo'ladi:
Client: Falonchi bot uchun yangi buyruq bormi?
Telegram: Yo'q
*ozgina vaqt o'tgach*
C: Bormi?
T: Yo'q
C: Bormi?
T: Ha, mana, ol. *Buyruqni yuboradi*
C: *Buyruqqa javob qaytarib, request shaklida yuboradi*
T: Oldim.
C: Bormi?
T: Yo'q
...
Mana shu usul, ya'ni bizning server ma'lum vaqt oralig'i bilan to'xtovsiz telegramdan so'rab turishi polling deyiladi.
2. Endi bizning server HTTP server vazifasini bajarib, Telegram serveri HTTP client rolini o'ynab beradi. Endi telegram client sifatida buyruqlarni to'g'ridan-to'g'ri bizga yubora oladi. Lekin buning uchun ikkita shart bajarilishi kerak:
1. Telegram bizning serverning manzilini bilishi.
2. Bizning server web server sifatida ishlashi, ya'ni requestlarni qabul qilishi kerak.
Buning uchun boshda Pashka akaning serverlariga "Falonchi botga kelgan buyruqlarning hammasini falonchi adressdagi serverga request qilib yubor" degan ma'noda xabar berib qo'yamiz. O'zimizning serverimizni esa web serverga aylantiramiz.
Endi faqat yangi buyruq kelgandagina telegram bizning serverimizga request yuboradi:
Telegram: Uka, botingga yangi buyruq keldi. Ma, ol.
Bizning server: *qayta ishlab, natijani yuboradi*.
*keyingi safar buyruq kelganda*
Telegram: Yangi buyruq. Ma, ol.
...
Mana bu usul, yani telegram bizning serverga request yuborishi esa webhook deyiladi.
ular nega kerak kabi savollarga javob topsak.
User telegramda botga biror buyruq yuborganda, unga javob qaytishi uchun bu buyruq biz yozgan kodimiz turgan servergacha yetib kelishi kerak va server unga javob qaytarishi kerak. User yuborgan buyruqlar telegramning serveriga borib tushadi. Endi o'sha serverga kelgan buyruqlarni bizning serverimizga yetkazish kerak. Lekin telegram aynan o'sha bot uchun yozilgan bizning kodimiz qayerda turganini qanday biladi?
Telegram botlar uchun HTTP protocolidan foydalanadi. Muammo shundaki, HTTP bir tomonlama ishlaydi(push/promisedan tashqari). Ya'ni faqat bir tomon(client) request yuboradi, ikkinchi taraf(server) uni qabul qilib, response qaytaradi.
Bu degani, server xohlagan paytida clientga response yubora olmaydi. Faqatgina client request yuborgandan keyingina response yuborish mumkin.
Bizning server bilan telegram server orasida ma'lumot almashishning ikki yo'li bor:
1. Bizning server HTTP client, telegram serveri esa HTTP server vazifasini bajaradi.
2. Telegram serveri HTTP client, bizning server esa HTTP server vazifasini bajaradi.
1. Deylik, user telegram botga biror buyruq yubordi. Telegram serveri bu buyruqni to'g'ridan to'g'ri bizning serverga yubora olmaydi. Sababi, yuqorida kelishganimizdek, faqat client birinchi bo'lib ma'lumot yubora oladi. Telegram server esa hozir HTTP server rolini o'ynayapti. Plus, telegram biz qaysi bot haqida so'rayotganimizni ham bilmaydi. Demak, avval client so'rov yuborishi kerak.
Lekin client qachon so'rov yuborish kerakligini(telegramga yangi buyruq kelganini) qanday biladi?
Javob — hech qanday. Shunchaki ma'lum vaqt oraligi bilan telegram serveriga to'xtovsiz request yuborib turadi. Botga yangi buyruq kelsa, telegram keyingi safar bizning serverdan request kelganda uni response qilib yuboradi. Bu taxminan mana bunday bo'ladi:
Client: Falonchi bot uchun yangi buyruq bormi?
Telegram: Yo'q
*ozgina vaqt o'tgach*
C: Bormi?
T: Yo'q
C: Bormi?
T: Ha, mana, ol. *Buyruqni yuboradi*
C: *Buyruqqa javob qaytarib, request shaklida yuboradi*
T: Oldim.
C: Bormi?
T: Yo'q
...
Mana shu usul, ya'ni bizning server ma'lum vaqt oralig'i bilan to'xtovsiz telegramdan so'rab turishi polling deyiladi.
2. Endi bizning server HTTP server vazifasini bajarib, Telegram serveri HTTP client rolini o'ynab beradi. Endi telegram client sifatida buyruqlarni to'g'ridan-to'g'ri bizga yubora oladi. Lekin buning uchun ikkita shart bajarilishi kerak:
1. Telegram bizning serverning manzilini bilishi.
2. Bizning server web server sifatida ishlashi, ya'ni requestlarni qabul qilishi kerak.
Buning uchun boshda Pashka akaning serverlariga "Falonchi botga kelgan buyruqlarning hammasini falonchi adressdagi serverga request qilib yubor" degan ma'noda xabar berib qo'yamiz. O'zimizning serverimizni esa web serverga aylantiramiz.
Endi faqat yangi buyruq kelgandagina telegram bizning serverimizga request yuboradi:
Telegram: Uka, botingga yangi buyruq keldi. Ma, ol.
Bizning server: *qayta ishlab, natijani yuboradi*.
*keyingi safar buyruq kelganda*
Telegram: Yangi buyruq. Ma, ol.
...
Mana bu usul, yani telegram bizning serverga request yuborishi esa webhook deyiladi.
Mabrur - IT Blog 🇵🇸
#meme Php bilan ishingiz doim tezda bitadi😅 @mabrur_dev
Bu shunchaki mem. Dasturlash tillari qancha mashhur va keng qo'llaniladigan bo'lsa, dasturchilar shuncha heyt qilishda davom etaverishadi. Agar kimdir sizga Java bosh og'rig'i, PHP o'ldiku, JS 10 kunda yozilgan musor desa rasmdagi bratni gaplarini ko'rsating.
@mabrur_dev
@mabrur_dev
Forwarded from IT Memes
Forwarded from Programming ∀
Begginnerlarning muammosi.
Mavzu juda katta bo'lgani uchun faqatgina bir qismini yozishga ulgurdim )).
https://dev.to/akhmadiy/bularni-boshlangich-dastruchi-bilishi-shart-yoxud-beginnerning-muammosi-1-qism-mk4
Mavzu juda katta bo'lgani uchun faqatgina bir qismini yozishga ulgurdim )).
https://dev.to/akhmadiy/bularni-boshlangich-dastruchi-bilishi-shart-yoxud-beginnerning-muammosi-1-qism-mk4
DEV Community
Bularni boshlang'ich dastruchi bilishi shart yoxud Beginnerning muammosi 1-qism
Kirish Ancha muddatdan buyon dasturlashni endi boshlagan dasturchilarni o'sishini...
Forwarded from Temurbek Adhamov
Yoshligimdan ITga bo‘lgan qiziqish bo‘lgan. Shu qiziqish ortidan diniy taʼlim dargohida o‘qisakda, arab tili grammatikasini o‘rgatishga ko‘mak beruvchi Tahlil nomli android ilova tayyorladik. Mubashshir Ahmad Ustoz bundan xabar topib, bizni oldilariga chaqirdilar. Nima yordam kerakligi haqida so‘radilar, bu kabi zamonaviy ilmlarni yoyish kerakli, bu ishni ayni biz qilishimiz kerakligi haqida gaplashdik.
Shundan so‘ng Azon.uz ochildi, domla u yerga meni ham taklif qildilar. Men Mubashshir domladan millatini, Vatanini, dinini yaxshi ko‘rishni o‘rgandim. O‘zlari ham shundaylar va bizni ham shunga targ‘ib etardilar. Mendan baʼzida xayriya ishlar haqida, bugungi erishilgan natijalar haqida so‘rashsa albatta bu o‘rinda Mubashshir Ahmad domlani birinchilardan bo‘lib eslab o‘taman.
Maʼlumot o‘rnida aytib o‘taman, “Najot Taʼlim” shu kungacha 4 mlrd so‘mdan ziyod hech qanday shartlarsiz xayriya taʼlimini amalga oshirdi. Bugungi kunda 3000 dan ziyod yoshlar “Najot Taʼlim” sababli dasturlash, dizayn, SMM kabi yo‘nalishlarda o‘z ish o‘rniga ega bo‘lishdi.
O‘z ishini qanday yaxshi ko‘rishni, maqsad sari katta qadamlar tashlashni, millatini, vatanini dinini yaxshi ko‘rishni aynan Mubashshir Ahmad ustozdan o‘rgandim.
Bugun domlaning gaplarini atayin bilib turib teskari tomonga burishyapti. Har bir gapidan xato topishga urinishyapti. Musulmon do‘stlarim, aka-uka, opa-singillarimga eslatib o‘tishni istar edim, provakatsiyaga uchmang! Do‘st va dushmanni yaxshilab tanib oling!
Mubashshir Ahmad qanday odam deyilsa, ikkalanmasdan aytishim mumkinki, agar oldilaridan o‘tib shu postni yozmoqchiman, deganimda shaxsiyatimni himoya qilmang, chalg‘imang bu narsalarga, ishingizni qiling, degan bo‘lardilar!
Men bu postim orqali xusumatchi va tuhmatchilarning fikri o‘zgarishi haqida o‘ylaganim yo‘q. Lekin o‘qiyotgan odamlarni ogohlikka chaqirib qo‘ymoqchiman xolos. Alloh taolo to‘g‘ri yo‘ldan adashtirmasin!
Shundan so‘ng Azon.uz ochildi, domla u yerga meni ham taklif qildilar. Men Mubashshir domladan millatini, Vatanini, dinini yaxshi ko‘rishni o‘rgandim. O‘zlari ham shundaylar va bizni ham shunga targ‘ib etardilar. Mendan baʼzida xayriya ishlar haqida, bugungi erishilgan natijalar haqida so‘rashsa albatta bu o‘rinda Mubashshir Ahmad domlani birinchilardan bo‘lib eslab o‘taman.
Maʼlumot o‘rnida aytib o‘taman, “Najot Taʼlim” shu kungacha 4 mlrd so‘mdan ziyod hech qanday shartlarsiz xayriya taʼlimini amalga oshirdi. Bugungi kunda 3000 dan ziyod yoshlar “Najot Taʼlim” sababli dasturlash, dizayn, SMM kabi yo‘nalishlarda o‘z ish o‘rniga ega bo‘lishdi.
O‘z ishini qanday yaxshi ko‘rishni, maqsad sari katta qadamlar tashlashni, millatini, vatanini dinini yaxshi ko‘rishni aynan Mubashshir Ahmad ustozdan o‘rgandim.
Bugun domlaning gaplarini atayin bilib turib teskari tomonga burishyapti. Har bir gapidan xato topishga urinishyapti. Musulmon do‘stlarim, aka-uka, opa-singillarimga eslatib o‘tishni istar edim, provakatsiyaga uchmang! Do‘st va dushmanni yaxshilab tanib oling!
Mubashshir Ahmad qanday odam deyilsa, ikkalanmasdan aytishim mumkinki, agar oldilaridan o‘tib shu postni yozmoqchiman, deganimda shaxsiyatimni himoya qilmang, chalg‘imang bu narsalarga, ishingizni qiling, degan bo‘lardilar!
Men bu postim orqali xusumatchi va tuhmatchilarning fikri o‘zgarishi haqida o‘ylaganim yo‘q. Lekin o‘qiyotgan odamlarni ogohlikka chaqirib qo‘ymoqchiman xolos. Alloh taolo to‘g‘ri yo‘ldan adashtirmasin!
YouTube kontentimni asosiy maqsadi dasturlashni endi boshlab turganlarga ishga kirishini osonlashtirish uchun turli intervyular o'tkazish va ular qay tarzda o'tishini ko'rsatish edi. Endi keyingi bosqichga o'tish vaqti keldi...
Ko'p yosh dasturchilar ishga topshirish uchun to'g'ri rezyume tayyorlay olmaydi, yoki o'rganish vaqtida qilgan ishlarini yoritib berolmaydi. Shu kamchilikni qisman yopish uchun turli web-saytlarning clonenini yaratib (node.js faqat backend), youtubeda stream qilib bermoqchiman. Loyihalar "qo'l uchida" qilingan bo'lib qo'lmaydi, portfolioni bezab bera oladigan haqiqiy real loyiha qilishni rejalashtirmoqchiman va tabiiyki u yerda odatdagidan ko'proq texnologiyalar ishlatiladi. Videolarni ko'rib loyihani tayyorlamoqchi bo'lsangiz birorta node.js kursini tugatgan bo'lishingiz tavsiya qilinadi, chunki u yerda 0 dan o'rgatilmaydi.
Birinchi reja OLX saytini backendini yozib ko'rsatish. Albatta 1 ga 1 nusxasi bo'lmaydi, ammo APIni ishlashi shu saytnikiga yaqin bo'ladi. Loyihada ishlatishni reja qilgan texnologiyalarim: "Node.js (Express), Postgres (Sequelize), Elastic Search, Nodemailer, JWT, Swagger". Holatga qarab nimadir qo'shilishi mumkin.
Birinchi streamni 10-sentabr o'tkazishni reja qilyabman, yozib olingan jonli efir youtubeda saqlanib qoladi.
Intervyular ham to'xtab qolmaydi, bu yangi kontent.
Qo'llab quvvatlash uchun youtube kanalimga obuna bo'lib qo'ying va postga 🔥 bosishni unutmang )
https://www.youtube.com/c/MabrurDev
@mabrur_dev
Ko'p yosh dasturchilar ishga topshirish uchun to'g'ri rezyume tayyorlay olmaydi, yoki o'rganish vaqtida qilgan ishlarini yoritib berolmaydi. Shu kamchilikni qisman yopish uchun turli web-saytlarning clonenini yaratib (node.js faqat backend), youtubeda stream qilib bermoqchiman. Loyihalar "qo'l uchida" qilingan bo'lib qo'lmaydi, portfolioni bezab bera oladigan haqiqiy real loyiha qilishni rejalashtirmoqchiman va tabiiyki u yerda odatdagidan ko'proq texnologiyalar ishlatiladi. Videolarni ko'rib loyihani tayyorlamoqchi bo'lsangiz birorta node.js kursini tugatgan bo'lishingiz tavsiya qilinadi, chunki u yerda 0 dan o'rgatilmaydi.
Birinchi reja OLX saytini backendini yozib ko'rsatish. Albatta 1 ga 1 nusxasi bo'lmaydi, ammo APIni ishlashi shu saytnikiga yaqin bo'ladi. Loyihada ishlatishni reja qilgan texnologiyalarim: "Node.js (Express), Postgres (Sequelize), Elastic Search, Nodemailer, JWT, Swagger". Holatga qarab nimadir qo'shilishi mumkin.
Birinchi streamni 10-sentabr o'tkazishni reja qilyabman, yozib olingan jonli efir youtubeda saqlanib qoladi.
Intervyular ham to'xtab qolmaydi, bu yangi kontent.
Qo'llab quvvatlash uchun youtube kanalimga obuna bo'lib qo'ying va postga 🔥 bosishni unutmang )
https://www.youtube.com/c/MabrurDev
@mabrur_dev
Kompyuterda ishlashni bilmasangiz va 0 dan o'rganmoqchi bo'lsangiz tanishimiz - Baxodirjon Mullajonovni YouTube kanalida turli darslarni bepul to'psangiz bo'ladi.
Bu kanalda kompyuter savodxonligiga oid ko'p darslar bor:
-Windows sozlamalari;
-Youtubeda ishlash (kanal ochish, videolarni to'g'ri yuklash, shorts videolar bilan ishlash);
-Ma’lumotlar bazasi (access);
-Office dasturlari (word, excel, publisher, power point);
-Google dasturlari (Sheets, Slides, Forms);
-Adobe dasturlari (Photoshop, Illustrator, Animate, Flash);
-Cmd ekranda ishlash (Boshlang'ich hakerlik darslari);
-Kompyuterda layfhaklar;
-Ilmiy tadqiqot tizimlari va boshqa dasturlar haqida ma’lumotlar beriladi.
YouTube kanaliga obuna bo'lish uchun:
https://www.youtube.com/c/BaxodirjonMullajonov
Soqqali reklama emas, shaxsiy tavsiya :)
Bu kanalda kompyuter savodxonligiga oid ko'p darslar bor:
-Windows sozlamalari;
-Youtubeda ishlash (kanal ochish, videolarni to'g'ri yuklash, shorts videolar bilan ishlash);
-Ma’lumotlar bazasi (access);
-Office dasturlari (word, excel, publisher, power point);
-Google dasturlari (Sheets, Slides, Forms);
-Adobe dasturlari (Photoshop, Illustrator, Animate, Flash);
-Cmd ekranda ishlash (Boshlang'ich hakerlik darslari);
-Kompyuterda layfhaklar;
-Ilmiy tadqiqot tizimlari va boshqa dasturlar haqida ma’lumotlar beriladi.
YouTube kanaliga obuna bo'lish uchun:
https://www.youtube.com/c/BaxodirjonMullajonov
Soqqali reklama emas, shaxsiy tavsiya :)
FAANG - KIRISH
Khamidulla Inoyatov hamda Azimjon Pulatov bilan birgalikda ko’plab dasturchilar orzu qiladigan gigant kompaniyalarga ishga kirish haqida katta masshtabdagi ovozli chatimiz bo’lib o’tadi.
Upd: ⏳ BUGUN 19:30 DA
👉 @mabrur_dev
Khamidulla Inoyatov hamda Azimjon Pulatov bilan birgalikda ko’plab dasturchilar orzu qiladigan gigant kompaniyalarga ishga kirish haqida katta masshtabdagi ovozli chatimiz bo’lib o’tadi.
Upd: ⏳ BUGUN 19:30 DA
👉 @mabrur_dev
Mabrur - IT Blog 🇵🇸
FAANG - KIRISH Khamidulla Inoyatov hamda Azimjon Pulatov bilan birgalikda ko’plab dasturchilar orzu qiladigan gigant kompaniyalarga ishga kirish haqida katta masshtabdagi ovozli chatimiz bo’lib o’tadi. Upd: ⏳ BUGUN 19:30 DA 👉 @mabrur_dev
Suhbat boshlanish vaqti 19:30 ga ko'chirildi. Iloji boricha vaqt topib kirishga harakat qiling
Suhbat davomida aytib o'tilgan ba'zi maqolalarga havolalar👇
Juniorlarga maslaxatlar:
https://t.me/khamidulla_inoyatov/22
Dasturchi bo’lish uchun nimadan boshlash kerak?
https://t.me/khamidulla_inoyatov/24
FAANG: Reject'dan Offer'gacha
https://www.youtube.com/watch?v=8XGrqwz5dmM
Yaxshi rezyume tayyorlash
http://azimjon.com/blog/yaxshi-rezyume-tayyorlash-haqida
Universitetda O'qishga 7 Sabab
azimjon.com/blog/universitetda-oqishga-7-sabab/
Algoritmlarni O'rganish Uchun Eng Yaxshi Kitoblar
https://t.me/lazyprogrammer/269
@mabrur_dev
Juniorlarga maslaxatlar:
https://t.me/khamidulla_inoyatov/22
Dasturchi bo’lish uchun nimadan boshlash kerak?
https://t.me/khamidulla_inoyatov/24
FAANG: Reject'dan Offer'gacha
https://www.youtube.com/watch?v=8XGrqwz5dmM
Yaxshi rezyume tayyorlash
http://azimjon.com/blog/yaxshi-rezyume-tayyorlash-haqida
Universitetda O'qishga 7 Sabab
azimjon.com/blog/universitetda-oqishga-7-sabab/
Algoritmlarni O'rganish Uchun Eng Yaxshi Kitoblar
https://t.me/lazyprogrammer/269
@mabrur_dev