An Inspired Engineer
فعلا یه نتیجه از کدی که توی هر ثانیه نزدیک ۵۰۰ تا ایونت رو هندل میکنه رو ببینید تا ببینیم دنیا دست کیه 😃 تک هسته، تک کانکشن آیا این کد low latency محسوب مبشه؟ نه حتی بهش نزدیکم نیست، چرا؟ چون هر ایونت به صورت میانگین داره توی ۱~۲ میلی ثانیه هندل میشه که…
اینجا خیلی جالب داره میشه کارا، پیام از سوکت میاد، طبیعتا توی یه بافره، بعد تبدیل به استرینگ میشه(باتلنیک)، بعد تبدیل به جیسونش میکنم(باتلنیک اعظم) بعد میام تصمیم میگیرم که با دیتا چیکار کنم.
فعلا حالت با لیتنسی رو پیش ببرم بعد برگردم عقب دونه دونه بنچ مارک بگیرم و درست کنم یا اینکه از اول high performance پیش ببرم؟ نمیدونم فردا تصمیم میگیرم.
راستی دارم از api بایننس استفاده میکنم که خب منبع رایگان از یه مشت ایونته، دوم اینکه ایونتاش timestamp داره و میشه باهاش کار کرد و latency رو سنجید. برای IO هم از Boost Asio استفاده میکنم(خیلی دلم میخواست io uring عزیزم باشه ولی اون رو توی vortex داریم)، و برای سوکت هم بازم از boost beast استفاده میکنم.
معماری کانکشن ها هم شبیه معماری توی vortex عه با این تفاوت که مولتی پروسس نیستیم، اینجا مولتی تردیم، چون میخواییم ترد ها از کش پروسس استفاده کنند.
این پروژه در راستای این پیامه.
اکانت X من
@knowpow
فعلا حالت با لیتنسی رو پیش ببرم بعد برگردم عقب دونه دونه بنچ مارک بگیرم و درست کنم یا اینکه از اول high performance پیش ببرم؟ نمیدونم فردا تصمیم میگیرم.
راستی دارم از api بایننس استفاده میکنم که خب منبع رایگان از یه مشت ایونته، دوم اینکه ایونتاش timestamp داره و میشه باهاش کار کرد و latency رو سنجید. برای IO هم از Boost Asio استفاده میکنم(خیلی دلم میخواست io uring عزیزم باشه ولی اون رو توی vortex داریم)، و برای سوکت هم بازم از boost beast استفاده میکنم.
معماری کانکشن ها هم شبیه معماری توی vortex عه با این تفاوت که مولتی پروسس نیستیم، اینجا مولتی تردیم، چون میخواییم ترد ها از کش پروسس استفاده کنند.
این پروژه در راستای این پیامه.
اکانت X من
@knowpow
🔥15❤1😁1
An Inspired Engineer
اینجا خیلی جالب داره میشه کارا، پیام از سوکت میاد، طبیعتا توی یه بافره، بعد تبدیل به استرینگ میشه(باتلنیک)، بعد تبدیل به جیسونش میکنم(باتلنیک اعظم) بعد میام تصمیم میگیرم که با دیتا چیکار کنم. فعلا حالت با لیتنسی رو پیش ببرم بعد برگردم عقب دونه دونه بنچ مارک…
باننس هم ملت رو دست انداخته ها! اخه جیسون؟ قشنگ معلومه اون پشت پول میگیره تا باینری بده
😁10
An Inspired Engineer
فعلا حالت با لیتنسی رو پیش ببرم بعد برگردم عقب دونه دونه بنچ مارک بگیرم و درست کنم یا اینکه از اول high performance پیش ببرم؟ نمیدونم فردا تصمیم میگیرم.
تصمیم اینه که بیاییم:
۱- کدش رو بزنیم و به هر قیمتی که شده کار کنه
۲- بعد بیاییم پرفورمنسش رو اندازه بگیریم و سریعش کنیم
۳- بیاییم سوپر سریعش کنیم (مقصود تویی مرحله ی ۱ و ۲ بهانه)
@knopow
۱- کدش رو بزنیم و به هر قیمتی که شده کار کنه
۲- بعد بیاییم پرفورمنسش رو اندازه بگیریم و سریعش کنیم
۳- بیاییم سوپر سریعش کنیم (مقصود تویی مرحله ی ۱ و ۲ بهانه)
@knopow
👍13❤1😁1
An Inspired Engineer
🚀 هدف اینه که یاد بگیریم چطور یه سیستم با تاخیر کم طراحی کنیم و برنامه مون رو متناسب با اون بنویسیم یا سیستمی که داریم رو پرفورمنسش رو بهتر کنیم. پس میام به دوتا بخش تقسیم میکنم، نوشتن یه اپلیکیشن که low latency باشه، و بخش دوم اجرای اون اپلیکیشن روی کرنلی…
اینجا گفتم ۲ تا پروژه ولی کلا ۳ تا پروژه داریم:
۱- با اسم vortex، لودبالانسر لایه ۴ با سی++ و io uring
هشتگ: #vortex
۲- با اسم shepherd، لودبالانسر لایه ۳ با eBPF و XDP، زبون سی/سی++
هشتگ: #shepherd
۳- پردازش دیتای ریل تایم از مارکت کریپتو (بایننس) و ارسال اون به تعداد زیادی کلاینت(وب سوکت، boost, beast, asio)
هشتگ: #market_data_handler
برای اندازه گیری بنچمارک هم از Google Benchmark استفاده میکنم.
@knowpow
۱- با اسم vortex، لودبالانسر لایه ۴ با سی++ و io uring
هشتگ: #vortex
۲- با اسم shepherd، لودبالانسر لایه ۳ با eBPF و XDP، زبون سی/سی++
هشتگ: #shepherd
۳- پردازش دیتای ریل تایم از مارکت کریپتو (بایننس) و ارسال اون به تعداد زیادی کلاینت(وب سوکت، boost, beast, asio)
هشتگ: #market_data_handler
برای اندازه گیری بنچمارک هم از Google Benchmark استفاده میکنم.
@knowpow
🔥24❤1
مفاهیم شبکه، سیستم عامل(لینوکس)، معماری سیپییو(خیلی مهمه اینجا)، نحوهی کار مموری و تعاملش با سیستم و هرچیزی که مربوط به اینا باشه رو هم اینجا/توییتر و وبلاگم منتشر میکنم. سوالی داشتین بپرسین
👍31❤3😁2
یکمم از اینا ببینید عشق کنید:
https://youtu.be/sbSCUOTLZBo?si=hFdMA7lxu0XlaQ_T
https://youtu.be/sbSCUOTLZBo?si=hFdMA7lxu0XlaQ_T
YouTube
1. Néy Nâmé - نی نامه (Arash Fouladvand feat Nigina Amonqulova, Sara Naeini and Vahid Taj)
All information about this concert : https://choralebahar.com/maulana/
1. Néy Nâméh
Lyrics: Molana Ǧalāl al-Dīn Muhammad Balkhi / Rûmî
Vocalists: Sara Naeini, Nigina Amonqulova, Vahid Taj
Composer and Conductor: Arash Fouladvand
Orchestration Assistant:…
1. Néy Nâméh
Lyrics: Molana Ǧalāl al-Dīn Muhammad Balkhi / Rûmî
Vocalists: Sara Naeini, Nigina Amonqulova, Vahid Taj
Composer and Conductor: Arash Fouladvand
Orchestration Assistant:…
❤7👍2🔥1
An Inspired Engineer
یکمم از اینا ببینید عشق کنید: https://youtu.be/sbSCUOTLZBo?si=hFdMA7lxu0XlaQ_T
سیستم باید اینجوری async کار کنه ولی هماهنگ باشه، رهبر ارکستر ترد master عه و بقیه هم ترد slave، شما یه مشکل توی کانکارنسی میبینی؟ نه! کدمون هم باید اینجوری باشه.
ناگهان ندایی امد و گفت همه چی رو IO و ترد نبین ای انسان... 😁
ناگهان ندایی امد و گفت همه چی رو IO و ترد نبین ای انسان... 😁
🔥18👎1😁1💯1
چالش طراحی threading توی پروژهی market data handler
ما با یه استریمی از داده ی حجیم طرفیم که توی کمتر از 1ms باید پردازش و به بقیه ارسال بشه. پس حتی میکروثانیه ها هم مهمن برامون، حالا بیایین فرض کنیم یه ماشین با ۸ هسته داریم و فرض کنیم مراحلی که یه پکت دریافتی از وب سوکت دریافت میکنه A و B و C و D باشه، میتونیم به سه روش بیاییم هر مرحله رو انجام بدیم.
روش اول:
بیاییم ۴ دستهی ۲ تایی ترد بسازیم یعنی ۴ تا تردپول ۲ تایی و از ترد ۱ تا ۸ رو به هسته های ۱ تا ۸ تخصیص بدیم و بگیم هر ترد فقط روی یک هسته باشه، بعد تسک A تا D رو به ۲ تا ۲ تا ترد تقسیم کنیم. مزیتش اینه که هم دیگه رو بلاک نمیکنن، هدف هم همینه، ولی یه مشکلی داریم، اگه تسک A بیشتر از تسک B طول بکشه چی؟ اونوقت A درگیره و ترد های B دست خالی نشستن دارن چایی میخورن، پس نیاز تسک A به ریسورس بیشتر از تسک B عه. نتیجه: این روش میره تو دیوار
روش دوم:
بیاییم برای هر تسک یه ترد پول ۸ تایی بسازیم یعنی ۴ تا ترد پول ۸ تایی داشته باشیم و در کل ۳۲ تا ترد باشه، اینجوری توزیع منابع یکسان انجام شده و هرکسی کارش بیشتر طول بکشه بیشتر از هسته های cpu استفاده میکنه، ولی کاش همینجوری بود، اینجا context switch عزیزمون میاد وسط میگه کجا دارین برا خودتون میدوزین و میبافین؟ حواستون هست که کلا ۸ تا هسته داریم و سیستم عامل باید اون رو بین ۳۲ تا ترد تقسیمش کنه، شاید بگین خب اوکیه دیگه همینو میخواییم. باید بگم نه این برای این پروژه بشدت مشکل داره. چرا؟! فرض کنید توی یه اشپزخونه ۳۲ تا اشپز داریم و ۸ تا ماهیتابه، برای اینکه همه بتونن غذاهاشون رو بپزن باید ماهیتابه رو مشترک استفاده کنن، پس هروقت یه اشپز میخواست ماهیتابه ی اشپز قبلی رو استفاده کنه باید ماهیتابه رو تمیز کنه و بشوره بعد روغن خودش رو بریزه و بعد غذاش رو بپزه، و همین روند همینجوری طی بشه. بد بود نه؟ اینجا هم همینه ما داریم وقت اشپزارو توی شستن و اماده کردن ماهیتابه هدر میدیم. پس این روش هم رفت تو دیوار
روش سوم(محبوب من):
بیاییم کلا ۸ تا ترد بسازیم و همه ی تسکارو به ترتیب توی همون ترد انجام بدیم، یعنی یه پکت که وارد سیستم ما میشه یه ترد روی یه هسته بهش اختصاص میدیم و به ترتیب تسک A, B, C, D رو روش انجام میدیم و بعد ازادش میکنیم. این روش جلوگیری میکنه از کانتکس سوییچ و ما میاییم همینو با async تلفیق کنیم و دیگه میشه نور علی نور.
بریم ببینیم چی میشه
این پروژه در راستای این پیامه.
#market_data_handler
@knowpow
ما با یه استریمی از داده ی حجیم طرفیم که توی کمتر از 1ms باید پردازش و به بقیه ارسال بشه. پس حتی میکروثانیه ها هم مهمن برامون، حالا بیایین فرض کنیم یه ماشین با ۸ هسته داریم و فرض کنیم مراحلی که یه پکت دریافتی از وب سوکت دریافت میکنه A و B و C و D باشه، میتونیم به سه روش بیاییم هر مرحله رو انجام بدیم.
روش اول:
بیاییم ۴ دستهی ۲ تایی ترد بسازیم یعنی ۴ تا تردپول ۲ تایی و از ترد ۱ تا ۸ رو به هسته های ۱ تا ۸ تخصیص بدیم و بگیم هر ترد فقط روی یک هسته باشه، بعد تسک A تا D رو به ۲ تا ۲ تا ترد تقسیم کنیم. مزیتش اینه که هم دیگه رو بلاک نمیکنن، هدف هم همینه، ولی یه مشکلی داریم، اگه تسک A بیشتر از تسک B طول بکشه چی؟ اونوقت A درگیره و ترد های B دست خالی نشستن دارن چایی میخورن، پس نیاز تسک A به ریسورس بیشتر از تسک B عه. نتیجه: این روش میره تو دیوار
روش دوم:
بیاییم برای هر تسک یه ترد پول ۸ تایی بسازیم یعنی ۴ تا ترد پول ۸ تایی داشته باشیم و در کل ۳۲ تا ترد باشه، اینجوری توزیع منابع یکسان انجام شده و هرکسی کارش بیشتر طول بکشه بیشتر از هسته های cpu استفاده میکنه، ولی کاش همینجوری بود، اینجا context switch عزیزمون میاد وسط میگه کجا دارین برا خودتون میدوزین و میبافین؟ حواستون هست که کلا ۸ تا هسته داریم و سیستم عامل باید اون رو بین ۳۲ تا ترد تقسیمش کنه، شاید بگین خب اوکیه دیگه همینو میخواییم. باید بگم نه این برای این پروژه بشدت مشکل داره. چرا؟! فرض کنید توی یه اشپزخونه ۳۲ تا اشپز داریم و ۸ تا ماهیتابه، برای اینکه همه بتونن غذاهاشون رو بپزن باید ماهیتابه رو مشترک استفاده کنن، پس هروقت یه اشپز میخواست ماهیتابه ی اشپز قبلی رو استفاده کنه باید ماهیتابه رو تمیز کنه و بشوره بعد روغن خودش رو بریزه و بعد غذاش رو بپزه، و همین روند همینجوری طی بشه. بد بود نه؟ اینجا هم همینه ما داریم وقت اشپزارو توی شستن و اماده کردن ماهیتابه هدر میدیم. پس این روش هم رفت تو دیوار
روش سوم(محبوب من):
بیاییم کلا ۸ تا ترد بسازیم و همه ی تسکارو به ترتیب توی همون ترد انجام بدیم، یعنی یه پکت که وارد سیستم ما میشه یه ترد روی یه هسته بهش اختصاص میدیم و به ترتیب تسک A, B, C, D رو روش انجام میدیم و بعد ازادش میکنیم. این روش جلوگیری میکنه از کانتکس سوییچ و ما میاییم همینو با async تلفیق کنیم و دیگه میشه نور علی نور.
بریم ببینیم چی میشه
این پروژه در راستای این پیامه.
#market_data_handler
@knowpow
👍15🔥6❤2
یکی از بهترین کتابایی که دارم میخونم این کتابه:
"Operating Systems: Three Easy Pieces"
که واقعاً دید خیلی خوبی به کسی که سیستمعامل میخواد یاد بگیره میده.
نگاه عمیقش به سه مفهوم اصلی - مجازیسازی Virtualization، همروندی Concurrency و پایداری Persistence - باعث میشه یه درک عمیق و جامعی از نحوه ی کارکرد سیستمعامل پیدا کنیم.
تو بخش مجازیسازی، نحوه مدیریت CPU و حافظه رو با جزئیات دقیق توضیح میده. مخصوصاً بحثهای پیشرفتهای مثل paging و address translation رو طوری شرح میده که انگار داری مهندسی معکوس یه سیستمعامل واقعی رو انجام میدی، کی میدونه شاید واقعا خودش اینکارو کرده.
بخش همروندی کتاب واقعا عمیقه و وقتی با کتاب C++ Concurrency in Action با هم میخونیش کارکردش رو کامل متوجه میشی. از lockها و سمافورها گرفته تا condition variableها و deadlock prevention، همه رو با کدهای عملی و مثالهای واقعی توضیح میده. حتی مباحث پیچیدهتر مثل race condition و mutual exclusion رو با دقت باز میکنه و عمیق میشه توش.
تو قسمت پایداری هم که به file systemها میپردازه، عمیقاً وارد جزئیات پیادهسازی میشه. از RAID systems گرفته تا نحوه مدیریت disk scheduling و crash consistency، همه چیز رو با دید یه توسعهدهنده سیستمعامل بررسیش میکنه.
به نظرم این کتاب نسبت به منابع کلاسیک مثل Tanenbaum یا Silberschatz رویکرد کاربردیتری داره و برای کسی که میخواد واقعاً سیستمعامل رو از دید یه توسعهدهنده یاد بگیره، منبع بی نظیریه.
اینجا صفحهی دورهی سیستم عامل از دانشگاه ویسکانسین-مدیسون رو میزارم که توش ویدیوی کلاس ها و نوت های کلاس هم هست که خود نویسنده توضیح میده.
#OSTEP #book #os #resurces
@knowpow
"Operating Systems: Three Easy Pieces"
که واقعاً دید خیلی خوبی به کسی که سیستمعامل میخواد یاد بگیره میده.
نگاه عمیقش به سه مفهوم اصلی - مجازیسازی Virtualization، همروندی Concurrency و پایداری Persistence - باعث میشه یه درک عمیق و جامعی از نحوه ی کارکرد سیستمعامل پیدا کنیم.
تو بخش مجازیسازی، نحوه مدیریت CPU و حافظه رو با جزئیات دقیق توضیح میده. مخصوصاً بحثهای پیشرفتهای مثل paging و address translation رو طوری شرح میده که انگار داری مهندسی معکوس یه سیستمعامل واقعی رو انجام میدی، کی میدونه شاید واقعا خودش اینکارو کرده.
بخش همروندی کتاب واقعا عمیقه و وقتی با کتاب C++ Concurrency in Action با هم میخونیش کارکردش رو کامل متوجه میشی. از lockها و سمافورها گرفته تا condition variableها و deadlock prevention، همه رو با کدهای عملی و مثالهای واقعی توضیح میده. حتی مباحث پیچیدهتر مثل race condition و mutual exclusion رو با دقت باز میکنه و عمیق میشه توش.
تو قسمت پایداری هم که به file systemها میپردازه، عمیقاً وارد جزئیات پیادهسازی میشه. از RAID systems گرفته تا نحوه مدیریت disk scheduling و crash consistency، همه چیز رو با دید یه توسعهدهنده سیستمعامل بررسیش میکنه.
به نظرم این کتاب نسبت به منابع کلاسیک مثل Tanenbaum یا Silberschatz رویکرد کاربردیتری داره و برای کسی که میخواد واقعاً سیستمعامل رو از دید یه توسعهدهنده یاد بگیره، منبع بی نظیریه.
اینجا صفحهی دورهی سیستم عامل از دانشگاه ویسکانسین-مدیسون رو میزارم که توش ویدیوی کلاس ها و نوت های کلاس هم هست که خود نویسنده توضیح میده.
#OSTEP #book #os #resurces
@knowpow
👍37🔥4❤1
Media is too big
VIEW IN TELEGRAM
اپدیت پروژهی market data handler:
بخش سوکت، ایونت لوپ و کانکشن منیجیر رو حدودا تموم کردم، الان اینجوریه که هر کور یه ترد داره، هر ترد هم چند تا سوکت، بعد میاییم سیمبل هایی که قراره از بایننس بگیریم رو بهشون ادد میکنیم و منتظر جواب از بایننس میمونیم.
این روش کانتکس سوییچ نداره و با cpu affinity مطمئن میشیم که هر ترد فقط به یک هسته بایند شده.
هنوز هیچ کاری سنگینی که با cpu داشته باشیم نداشتیم و تسکامون تا الان I/O bound بوده، الان هیچ بنچمارکی نمیگیرم و فقط تفریحی یه ویدیو دیگه گرفتم از لاگ سیستم وقتی داره ایونت جم میکنه.
تا اینجا هر ایونت حدودا ۱ میلی ثانیه طول میکشه تا: مموریش الوکیت بشه، بافرش پر بشه و به جیسون تبدیل بشه. بیلدم روی دیباگه و همونطور که گفتم هیچ کاری هنوز برای پرفرومنس انجام ندادم، مرحلهی بعد نوشتن روی یه دیتا استراکچره tree هست که روی مموریه.
سوالی بود بپرسید، بریم ببینیم چی میشه
این پروژه در راستای این پیامه.
#market_data_handler
@knowpow
بخش سوکت، ایونت لوپ و کانکشن منیجیر رو حدودا تموم کردم، الان اینجوریه که هر کور یه ترد داره، هر ترد هم چند تا سوکت، بعد میاییم سیمبل هایی که قراره از بایننس بگیریم رو بهشون ادد میکنیم و منتظر جواب از بایننس میمونیم.
این روش کانتکس سوییچ نداره و با cpu affinity مطمئن میشیم که هر ترد فقط به یک هسته بایند شده.
هنوز هیچ کاری سنگینی که با cpu داشته باشیم نداشتیم و تسکامون تا الان I/O bound بوده، الان هیچ بنچمارکی نمیگیرم و فقط تفریحی یه ویدیو دیگه گرفتم از لاگ سیستم وقتی داره ایونت جم میکنه.
تا اینجا هر ایونت حدودا ۱ میلی ثانیه طول میکشه تا: مموریش الوکیت بشه، بافرش پر بشه و به جیسون تبدیل بشه. بیلدم روی دیباگه و همونطور که گفتم هیچ کاری هنوز برای پرفرومنس انجام ندادم، مرحلهی بعد نوشتن روی یه دیتا استراکچره tree هست که روی مموریه.
سوالی بود بپرسید، بریم ببینیم چی میشه
این پروژه در راستای این پیامه.
#market_data_handler
@knowpow
👍16🍾1
Forwarded from Linuxor ?
اگه خواستی درباره سیستم عامل ها بدونی هر روز یکی از قسمت های اینو بخون، خیلی از مباحث سیستم عامل رو با مثال توضیح داده :
https://mohitmishra786.github.io/exploring-os/src/
@Linuxor
https://mohitmishra786.github.io/exploring-os/src/
@Linuxor
👍25❤3
An Inspired Engineer
اسوهی مقاومت ❤️ @knowpow
پشت این کار یه تیم بزرگ هست
- ایلان ماسک کاری کرده؟ بله این تیم رو ساخته و هزینه کرده
کار کی مهمتره؟ کار هیچکسی، این پشت یه تیم بزرگه که داره دقیق و سریع کارش رو انجام میده
پس چرا ایلان ماسک رو همه میشناسن؟ خب همه ی تیم ها رو با تیم لید و هر شرکتی رو با مدیرعاملش میشناسن، الان شما توی open ai سم آلتمن رو میشناسی یا Andrej Karpathy؟
کار گروهی مهمه، اصن بدون کار گروهی این کارا نشدنیه، ولی کشتی با بهترین پاروزن ها بدون کاپیتان و ملوان درست به ناکجا اباد میره...
@knowpow
- ایلان ماسک کاری کرده؟ بله این تیم رو ساخته و هزینه کرده
کار کی مهمتره؟ کار هیچکسی، این پشت یه تیم بزرگه که داره دقیق و سریع کارش رو انجام میده
پس چرا ایلان ماسک رو همه میشناسن؟ خب همه ی تیم ها رو با تیم لید و هر شرکتی رو با مدیرعاملش میشناسن، الان شما توی open ai سم آلتمن رو میشناسی یا Andrej Karpathy؟
کار گروهی مهمه، اصن بدون کار گروهی این کارا نشدنیه، ولی کشتی با بهترین پاروزن ها بدون کاپیتان و ملوان درست به ناکجا اباد میره...
@knowpow
🔥19👍5👎4🍾2
An Inspired Engineer
اسوهی مقاومت ❤️ @knowpow
اسپیساکس حوزه ی پیامرسانها تلگرامه
شما به محض اینکه کدش رو میخونی میفهمی چرا تلگرام از بقیه پیشی گرفته و شده تلگرام، میخوایین براتون کدش رو تشریح کنم؟ کلاینت اندرویدش رو یه زمانی از حفظ بودم، بخش network رو میتونیم اینجا با هم تشریح کنیم و ببینیم چطور داره کار میکنه. پروتکل اختصاصی، ساختار RPC خود تلگرام به اسم TL_RPC، انتقال بافر پکت ها بین C++ و Java و همه ی اینا به شکل تمیزی پیاده سازی شده.
اینم برای مسابقات ۲۰۲۱ فرستاده بودم که از نت بدم نتونستم فایلش رو اپلود کنم نتم مشکل داشت و vpn وصل نمیشد ولی خب pull request ام رو باز کردم:
https://github.com/DrKLO/Telegram/pull/1611/files#diff-3e01e096083a2b3e00e05a7b126b2d98a763a464fddefc9e124aa1290f185077
@knowpow
شما به محض اینکه کدش رو میخونی میفهمی چرا تلگرام از بقیه پیشی گرفته و شده تلگرام، میخوایین براتون کدش رو تشریح کنم؟ کلاینت اندرویدش رو یه زمانی از حفظ بودم، بخش network رو میتونیم اینجا با هم تشریح کنیم و ببینیم چطور داره کار میکنه. پروتکل اختصاصی، ساختار RPC خود تلگرام به اسم TL_RPC، انتقال بافر پکت ها بین C++ و Java و همه ی اینا به شکل تمیزی پیاده سازی شده.
اینم برای مسابقات ۲۰۲۱ فرستاده بودم که از نت بدم نتونستم فایلش رو اپلود کنم نتم مشکل داشت و vpn وصل نمیشد ولی خب pull request ام رو باز کردم:
https://github.com/DrKLO/Telegram/pull/1611/files#diff-3e01e096083a2b3e00e05a7b126b2d98a763a464fddefc9e124aa1290f185077
@knowpow
GitHub
2021 contest by aabolfazl · Pull Request #1611 · DrKLO/Telegram
update replied messages after editing replied to message https://bugs.telegram.org/c/179
fixed replied to deleted message
added show cancel alert for AlertDialog.java
fixed replied to deleted message
added show cancel alert for AlertDialog.java
🔥34👍8🤔1
Telegram Contests
Tasks: Blockchain Validation (C++ code optimization)
خب میرم که توی این مسابقهی تلگرام برای ton coin با سی++ شرکت کنم.
تلاش میکنم توضیح بدم دارم چیکار میکنم و چیارو باید تغییر بدم.
درخت مرکل رو گویا باید بهبود داد و مولتی تردش کرد، ساختار threading تون رو حدودا خوندم و به استایل کد زدنشون هم اشنام و باید الگوریتم وریفای رو بهتر کنم فقط تنها مشکلی که دارم ندونستن کریپتوعه که اونم میخونم دیگه 😁 وقتش خیلی کمه فقط ۱۰ ۱۲ روز مونده.
@knowpow
تلاش میکنم توضیح بدم دارم چیکار میکنم و چیارو باید تغییر بدم.
درخت مرکل رو گویا باید بهبود داد و مولتی تردش کرد، ساختار threading تون رو حدودا خوندم و به استایل کد زدنشون هم اشنام و باید الگوریتم وریفای رو بهتر کنم فقط تنها مشکلی که دارم ندونستن کریپتوعه که اونم میخونم دیگه 😁 وقتش خیلی کمه فقط ۱۰ ۱۲ روز مونده.
@knowpow
👍30🔥6👏4❤2😁2
An Inspired Engineer
خب میرم که توی این مسابقهی تلگرام برای ton coin با سی++ شرکت کنم. تلاش میکنم توضیح بدم دارم چیکار میکنم و چیارو باید تغییر بدم. درخت مرکل رو گویا باید بهبود داد و مولتی تردش کرد، ساختار threading تون رو حدودا خوندم و به استایل کد زدنشون هم اشنام و باید…
داستان پیچیده تر از این حرفاس 😂 باید بیشتر کریپتو بدونم تا کدنویسی
😁11
اشتباه میکردم، خیلی کریپتو داره توش، ماجرا بیشتر از اینکه کدی باشه، کریپتوییه. اول اومدم با این کد call stack و اینکه چقدر طول میکشه تا هر متد ران بشه رو در اوردم، بیشتری تایمی که داره برای هر ولیدیشن استفاده میشه برای این متده:
https://github.com/ton-blockchain/ton/blob/validation-contest/contest/solution/contest-validate-query.cpp#L4488
برای اینکه ببینه ولیده یا نه میاد دوباره از روی چیزی که داره ترنزاکشن و پیامارو تکرار میکنه و هش هارو چک میکنه، اگه با هم برابر بودن میگه که ولیدن. اول مولتی تردش میکنم بعد بهبودش میدم
@knowpow
https://github.com/ton-blockchain/ton/blob/validation-contest/contest/solution/contest-validate-query.cpp#L4488
برای اینکه ببینه ولیده یا نه میاد دوباره از روی چیزی که داره ترنزاکشن و پیامارو تکرار میکنه و هش هارو چک میکنه، اگه با هم برابر بودن میگه که ولیدن. اول مولتی تردش میکنم بعد بهبودش میدم
@knowpow
🤔11👍4
An Inspired Engineer
اشتباه میکردم، خیلی کریپتو داره توش، ماجرا بیشتر از اینکه کدی باشه، کریپتوییه. اول اومدم با این کد call stack و اینکه چقدر طول میکشه تا هر متد ران بشه رو در اوردم، بیشتری تایمی که داره برای هر ولیدیشن استفاده میشه برای این متده: https://github.com/ton-blo…
جدای از این یه vm میاره بالا که اسمارت کانترکت رو روش اجرا کنه، اینم بنظرم جالب بود
👍14
Forwarded from تهلاگ / Tehlug
ثبتنام رویداد ۲۷۷ تهلاگ آغاز شد! 🎉
رویداد ۲۷۷ در روز پنجشنبه، ۱۱ بهمن ۱۴۰۳ شامل ۶ ارائه فنی و ۲ کارگاه آموزشی برگزار میشود و فرصتی عالی برای علاقهمندان به لینوکس، جامعه نرمافزار آزاد و متنباز، پایتون و فناوریهای کلود است.
اطلاعات بیشتر و ثبتنام :
🔗 evand.com/events/tehlug277
@TehranLUG
رویداد ۲۷۷ در روز پنجشنبه، ۱۱ بهمن ۱۴۰۳ شامل ۶ ارائه فنی و ۲ کارگاه آموزشی برگزار میشود و فرصتی عالی برای علاقهمندان به لینوکس، جامعه نرمافزار آزاد و متنباز، پایتون و فناوریهای کلود است.
اطلاعات بیشتر و ثبتنام :
🔗 evand.com/events/tehlug277
@TehranLUG
❤13👍1