fa
Feedback
Web_programming

Web_programming

رفتن به کانال در Telegram

Sharif web programming If you have any questions, please feel free to ask(@yumcoder)

نمایش بیشتر
1 051
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-17 روز
-630 روز
آرشیو پست ها
نکته دیگر آنچه در اینجا مطرح میشود مربوط به اندروید است و مثلا برای وب داستان کاملا متفاوت است و تکنیک های دیگری بکار می برند پ.ن. با موضوع کارایی اصلا شوخی نکردند و همه چیز به بهترین نحوه ممکن بوده است :) #telegram #yum_13

پس تا اینجا متوجه شدیم تلگرام یک تعدادی خطوط ارتباطی با سرور ایجاد می کند و از طریق آنها دستورات را ارسال و دریافت می کند. به
پس تا اینجا متوجه شدیم تلگرام یک تعدادی خطوط ارتباطی با سرور ایجاد می کند و از طریق آنها دستورات را ارسال و دریافت می کند. به عنوان نمونه در تصویر می بینید در صورت نیاز به دانلود و یا upload خط ارتباطی مجزا و با datacenterهای خاص برقرار می شود. یعنی خط ارتباطی که با آن داده ارسال و دریافت می کنید با خط ارتباطی ارسال و دریافت فایل کاملا متفاوت است #telegram #yum_12

توجه دارید که در ارتباط با سرور ممکن است شما از این مدل استفاده کنید: یک connection ایجاد کنید و درخواست ارسال کنید و پاسخ را دریافت کنید و سپس connection را ببندید(مدل connectionless). و یا ممکن است یک connection با سرور ایجاد کنید و یک ارتباط دو سویی (خواندن و نوشتن) با سرور بوجود آورد(Multiplexing) — البته روش دوم ساده شده این حالت است و مالحظاتی دارد :) #telegram #yum_11

So using epoll really is a lot faster once you have more than 10 or so file descriptors to monitor. #telegram #yum_10
So using epoll really is a lot faster once you have more than 10 or so file descriptors to monitor. #telegram #yum_10

به عبارت ساده تر روش مانتور کردن این خط ارتباطی منجر به پدید آمدن مدل های مختلف شده که در زیر بر اساس کتاب معرفی شده در ادامه کارایی این سه روش مقایسه شده است #telegram #yum_09

یک راه این است که ما یک پیغام برای سرور ارسال کنیم و سپس در فواصل زمانی مشخص به این خط ارتباطی/socket سر بزنیم و ببینیم پیغام جدید در این فایل و یا socket نسبت به آخرین باری که مراجعه کردیم وجود دارد یا نه یک راه دیگر می تواند این باشد که ما یک تابع برای تغییرات درون socket به سیستم عامل معرفی کنیم و برویم کار خود را ادامه دهیم و وقتی تغییری در این سوکت بوجود آمد سیستم عامل به ما خبر دهد #telegram #yum_08

برای انجام عملیات io (عملیات خواندن و نوشتن به طور کلی مثلا از فایل، از socket ,...)در سیستم عامل سه مدل وجود دارد: select, poll, and epoll مدل epoll مدرن تر و کاراتر از سایر مدل ها است می دانیم که ارتباط با یک سرور این گونه است که ابتدا یک خط tcp بین ما و سرور برقرار می شود می توانید این بخش را مانند open کردن یک فایل تصور کنید سپس از درون این خط می توانید عمل read و write را انجام دهید. عمل write برای ارسال دستور به سرور عمل read برای خواندن پاسخ ارسال شده از سرور بنابراین عمل ارتباط با یک سرور راه دور شبیه خواندم و نوشتن درون فایل است سوال : یک دستور را درون خط ارتباطی با سرور نوشتیم. در چه زمانی پاسخ را از این خط ارتباطی برداریم؟ کدام thread مسول این کار است؟ #telegram #yum_07

پس در ادامه ابتدا می رویم کمی با این مفهوم آشنا می شویم و بعد بر می گردیم به کد تلگرام 😊 عزیزانی که تمایل دارند به طور کامل
پس در ادامه ابتدا می رویم کمی با این مفهوم آشنا می شویم و بعد بر می گردیم به کد تلگرام 😊 عزیزانی که تمایل دارند به طور کامل با این مفهوم آشنا شوند می توانند از کتاب فوق بخش های مربوطه را مطالعه کنند این کتاب برای افرادی که تمایل دارند برنامه نویسی سیستمی کنند مناسب است #telegram #yum_06

اگر فایل connentionManager را باز کنیدو دستورات ان را ببینید متوجه می شوید که برای ایجاد یک socket با سرور از دستورات epoll ا
اگر فایل connentionManager را باز کنیدو دستورات ان را ببینید متوجه می شوید که برای ایجاد یک socket با سرور از دستورات epoll استفاده می کند پ.ن. نیمی از کلاس ما هنوز سیستم عامل پاس نکردیم :) پس باید ببینیم epoll چیست و به چه کار می آید #telegram #yum_05

در این پوشه فایل های فوق مربوط به connection با سرور هستند #telegram #yum_04
در این پوشه فایل های فوق مربوط به connection با سرور هستند #telegram #yum_04

در این پوشه لایه سیستمی پروتکل mtproto پیاده سازی شده است. به زبان ساده خط ارتباطی با سرور و تامین کننده امنیت ارتباط در این پوشه پیاده سازی شده است پ.ن. درسهای بسیار خوبی برای فراگیری در حوزه امنیت نیز در این کد می توانید پیدا کنید :) که موضوع سخن امشب ما نیست #telegram #yum_03

#telegram #yum_02
#telegram #yum_02

در تلگرام در مسیر زیر پوشه ایی به نام tgnet وجود دارد: #telegram #yum_01

یکی از مفاهیم مورد نیاز برای برقراری ارتباط با سرور https://en.m.wikipedia.org/wiki/Epoll

امشب یا فردا شب اگر فرصت شد میخواهم درباره نحوه پیاده سازی socket ارتباط با سرور در کد اندروید تلگرام کمی بنویسم. میتوانید اگر سوال داشتید توی گروه مطرح کنید در صورتی که سوادم اجازه دهد پاسخ میدهم :) برای این منظور کمی سواد سیستم عامل و زبان برنامه نویسی لازم است.

Programming is like any other sport. You might know the rules but you have to play to learn. -Zuckerberg.

یکی از دوستان قدیمی برای تکمیل تیم فنی خود به دنبال جذب یک همکار است. زبان برنامه نویسی آنها سی شارپ (وب) است. لطفا اگر تمایل داشتید به من پیغام دهید.

اگر یک فایل بزرگ در js داشته باشید و بخواهید بخوانید browser با تکنیک های عادی crash می کند و باید آن را تکه تکه بخوانید کد ب
اگر یک فایل بزرگ در js داشته باشید و بخواهید بخوانید browser با تکنیک های عادی crash می کند و باید آن را تکه تکه بخوانید کد بالا یک نمونه برای این منظور است فایل بزرگ مثلا 500 مگ و یا یک گیگ https://javascript.info/fetch-progress

Base64 is apparently wasteful because we use just 64 different values per byte, whereas a byte can represent 256 different characters. That is, we use bytes (which are 8-bit words) as 6-bit words. There is a waste of 2 bits for each 8 bits of transmission data. To send three bytes of information (3 times 8 is 24 bits), you need to use four bytes (4 times 6 is again 24 bits). Thus the base64 version of a file is 4/3 larger than it might be. So we use 33% more storage than we could. That sounds bad. How can engineers tolerate such wasteful formats? https://www.google.com/amp/s/lemire.me/blog/2019/01/30/what-is-the-space-overhead-of-base64-encoding/%3famp