An Inspired Engineer – Telegram
An Inspired Engineer
1.32K subscribers
63 photos
17 videos
4 files
91 links
اینجا در مورد performance, distributed systems و کرنل لینوکس مینویسم

https://aieideas.com/
Download Telegram
Forwarded from logcat (Ali Nasrabadi .)
جلسه ۴۶ لاگ‌کت
جلسه بعدی لاگ‌کت سه‌شنبه ۲۴ تیر ماه ۱۴۰۴ ساعت ۱۸:۰۰ تا ۲۰:۰۰ با حمایت «دیوار» برگزار خواهد شد.

🔸 پرفورمنس اپلیکیشن‌ها در اندروید
توی این ارائه، ابوالفضل عباسی به صورت آنلاین برامون درباره پرفورمنس در اپ‌های اندرویدی صحبت می‌کنه، قراره توی این جلسه متوجه بشیم که منظورمون از پرفورمنس در اندروید چیه و چطوری میتونیم اون رو اندازه‌گیری کنیم.

🔸 شبکه سازی: توی این قسمت قراره بیشتر با همدیگه آشنا بشیم و درباره تجربیات هم بیشتر صحبت کنیم.

🔸 آدرس محل برگزاری: تهران، خیابان میرداماد، نبش نلسون ماندلا، پلاک ۴۰۴، ساختمان میکاناتس، آمفی‌تئاتر

لینک ثبت‌نام:https://evand.com/events/logcat46
🔥4🍾1
ای زیبای خفته ❤️‍🔥

https://www.amd.com/en/products/adaptive-socs-and-fpgas/evaluation-boards/zcu1285.html

قیمت ۳۰ ۳۵ هزار دلار یا به عبارتی ۲.۵ میلیارد تومن
2
An Inspired Engineer
ای زیبای خفته ❤️‍🔥 https://www.amd.com/en/products/adaptive-socs-and-fpgas/evaluation-boards/zcu1285.html قیمت ۳۰ ۳۵ هزار دلار یا به عبارتی ۲.۵ میلیارد تومن
اخیرا دارم به این فکر میکنم که الکترونیک اونقدرا هم بد نبود که دیگه سمتش نرفتم و ولش کردم.

ولی یکی از مشکلات من سر اینکه دل خوشی از الکترونیک نداشتم این بود که همیشه دیده بودم اطرافم ازش استفاده صنعتی میشد، از اونجا هم که نمیتونستیم و الان هم نمیتونیم تو مملکتمون یه برد صنعتی درست کنیم(ادا نه ها واقعی) مجبور بودم بشم یه تعمیرکار صنعتی که تهش ساعت ها باید بشینه یه برد یه ماشین ۲۰ سال پیش زیمنس رو عیب یابی کنه و یه پولی هم به جیب بزنه.

الکترونیکی که من دوست داشتم مدار مجتمع و طراحی مخابرات/دیجیتال بود، همیشه هم درساش رو با نمره‌ی بالا پاس میکردم، ولی استادایی که این واحدارو ارائه میدادن یا پاشون رو از دانشگاه بیرون نزاشته بودن و فقط حرف میزدن، یا تهش توی یکی از کارخونه ها تعمیرات انجام میدادن یا خودشون یه بیزینسی بالا اورده بودن که هیچ ربطی به الکترونیک نداشت، شما بودی ادامه میدادی این فیلد رو؟

مورد بعدی هم گرون بودن این فیلد بود، مثلا همین برد رو شما ببین، AMD Zynq قیمت حدودا ۳۵ هزار دلار، درسته به درد من نمیخورد و تهش میخواستم یه برد Parallella بگیرم و استفاده کنم، ولی فکر کن یه اشتباه میتونست کل برد رو به ملکوت اعلی پیوست بده و تو هم محکوم به فنا بودی. تجهیزاتشم گرون بود ولی من مشکلی با تجهیزات نداشتم و تمام تجهیزاتی که لازم داشتم از وسایلای پدر محترم کش میرفتم و استفاده میکردم.

حالا چرا میگم اخیرا؟ چون دیگه به دید تفریح بهش نگاه میکنم نه چیزی که باهاش پول در بیارم.

اگه قرار باشه تو ایران از اول برم سراغ الکترونیک به امید درس و دانشگاه قطعا اینکارو نمیکنم، اونجا این چیزا فعلا ارزش نیست، شاید بعدا بشه یه کارایی کرد...

@knowpow
😢103👍1
An Inspired Engineer
اخیرا دارم به این فکر میکنم که الکترونیک اونقدرا هم بد نبود که دیگه سمتش نرفتم و ولش کردم. ولی یکی از مشکلات من سر اینکه دل خوشی از الکترونیک نداشتم این بود که همیشه دیده بودم اطرافم ازش استفاده صنعتی میشد، از اونجا هم که نمیتونستیم و الان هم نمیتونیم تو…
شما فکر کن من یکی رو میشناسم سالها طراحی IC خوند و مدارمجتمع یاد گرفت و تهش رفت مبل فروشی زد! خب گل بگیرن در اون دانشگاهی که پشتش هیچ صنعتی وجود نداره...

اساتید محترمش همه متوهم و فاز توسعه داخلی و ما میتوانیم، رزومه رو میبینی هیچکاری غیر تدریس نکرده ها، یکی دوتا استاد خوب داشتیم که یه پاشون تو صنعت بود و واقعا سرشون به تنشون میارزید.
👍15
مهم نیست، یکم دیگه بیایین بریم low level networking with C++ and NDK تو اندروید کار کنیم و بهتون بگم که چرا نمیتونیم توی اندروید یه سوکت RAW باز کنیم و باهاش Icmp ping بفرستیم؟

@knowpow
👍11
https://x.com/_AbolfazlAbbasi/status/1944350638122340466

راستی یادتون نره، لینک استریم رو قبلش اینجا هم میزارم


@knowpow
👍7🔥51🎉1
An Inspired Engineer
ای زیبای خفته ❤️‍🔥 https://www.amd.com/en/products/adaptive-socs-and-fpgas/evaluation-boards/zcu1285.html قیمت ۳۰ ۳۵ هزار دلار یا به عبارتی ۲.۵ میلیارد تومن
🛰️ شما مهندسی رو با همچین پردازنده هایی مشاهده بفرمایید اصلا!

اگه فرض کنیم حین جنگ دشمن بتونه تمامی ماهواره های GPS رو بزنه و یا مختلش کنه، این هواپیماهای گرون با چی مسیر یابی میکنن؟ چند صد سال پیش که GPS نبود با چی مسیریابی میکردن؟ افرین با ستاره ها!

میاییم سراغ ناوبری نجومی (astro-inertial) مثل همون NAS-14V2 “R2-D2” روی SR-71. سیستم اینجوریه که یک تلسکوپ گیمبل‌شده دایره ای رو تو آسمون رو میچرخونه، سه تا ستاره رو از بین ۶۴ ستاره‌ی از پیش نقشه‌ شده قفل می‌کنه و با یک زمان‌سنج دقیق و تقویم جولیان مقایسه می‌کنه و خطای INS رو لحظه‌ای تصحیح می‌کنه و جاشو رو درمیاره، حتی تو سرعت ۳ ماخ و ارتفاع ۸۰,۰۰۰ پایی هم کار میکنه چون هنوز زیر ستاره هاس :)

لینک کاملش

@knowpow
🔥14👍51
اینترنت مثل آبه، نمیتونین بگین بیایین به شما اب بدیم چون شما کارتون مهمتر از بقیه اس...

هر بار با یه اسمی اینترنت طبقاتی رو پرزنت میکنن برای مردم!
👍252
Khoone Khorshid ~ TajMusics.com
Bahram & Ali Sorena
هی آبادی مسموم برج بلند تو اوج تباهی بود
پوچی هر چه بخواهی بود
🔥4
چرا GC زیاد کال میشه؟

عمدتاً به دلیل allocation و آزادسازی سریع و مکرر تعداد زیادی از object هایی با عمر کوتاه توی حافظه اتفاق میوفته، فکر کنید مکرر یه چیزی رو خرید میکنید و یک ثانیه استفاده میکنید و میندازین اشغال.

allocation های کوچک و مکرر:
کدتون به طور مداوم و تو حلقه‌ها یا متدهای پرکاربرد(مثل مسیر استریم، یا شبکه و هرجایی که زیاد کال بشه) ابجکت های جدیدی مثل String، آرایه‌ یا دیتاکلاس(برای ui state) را ایجاد میکنه و از ابجکت هایی که قبلا ساخته استفاده نمیکنه.

تصاویر و Bitmap های بزرگ: لود یا پردازش تصاویری با رزولوشن و سایز بالا و بدون بهینه ‌سازی مناسب یا فرمت مناسب میتونه بخش بزرگی از حافظه رو به سرعت allocate و deallocate کنه. باید حواستون باشه که Bitmap ها به شدت حافظه مصرف میکنن و ساختن و خذف اونا میتونن GC رو تحریک کنن.

#Android

@knowpow
👍9
"Saw-tooth Pattern" (پترن دندان اره‌ای)

یه علامت خطرناک که مصرف باطری رو شدیدا میبره بالا

لبه رو به بالا (افزایش ناگهانی): نمودار مصرف حافظه به سرعت شروع به بالا رفتن می‌کنه. این نشون می‌ده که اپ شما داره به سرعت بجکت ‌های جدیدی رو allocate می‌کنه و حافظه رو پر می‌کنه. تا اینجا مشکلی نداریم، یه صفحه ی جدید باز شده یا یه اتفاقی توی بکگراند افتاده که نیاز بوده الوکیشین داشته باشیم.

لبه رو به پایین (افت ناگهانی): وقتی مصرف حافظه به یه حد مشخصی میرسه، Garbage Collector فعال می‌شه و شروع میکنه به پاکسازی آبجکتهای غیر ضروری و آزاد کردن حافظه. این باعث می‌شه نمودار مصرف حافظه به صورت ناگهانی سقوط کنه و به سمت پایین بیاد.

همه اینا رفتار های شایع توی سیستمه، اصلا کار GC همینه، اینجاست که اینکارو کنه، ولی مشکل وقتی شروع میشه که این رفتار سریع تکرار میشه، دقیقاً شبیه دندانه های اره به نظر میرسه. دیدن این پترن به شما میگه که اپ شما داره بی رویه آبجکت‌ ها رو می‌سازه و ولشون میکنه و GC رو تحریک میکنه تا پاکشون کنه، هر بار که GC اجرا می‌شه، یه PAUSE تو کار اپ ایجاد میکنه که میتونه باعث UI Jank بشه.

#Android

@knowpow
👍154
This media is not supported in your browser
VIEW IN TELEGRAM
چرا #اینترنت_آزاد حق همه مردم ایران هست!؟
مگه برای اب و برق هم همینطوره؟ (البته اگه فردا اونم نشه)
9👍1
جدا از مهندسی پشت تلگرام که بهینه نوشته شده، تلگرام چیزی داره به اسم Update Queue. چیزی که ۱ سال از دوران جوونیم رو صرف مهندسی معکوسش کردم.
تلگرام برای پوش کردن تغییرات مثل پیام جدید، ادیت، ری اکشن، تایپینگ و… به کلاینت‌ها از سرویس Updates تو پروتکل MTProto استفاده میکنه، ایده ی کلی و کلیدی خیلی ساده اس و اینه که کلاینت ها یه state محلی نگه میدارن و آپدیتارو دقیقا با ترتیب درست اعمال میکنن؛ اگه شکافی بینشون افتاد، Difference می‌گیرن و دوباره پرش میکنن.

چرا اینکارو کرده و کلا چالشا چیه؟
• ترتیبش مهمه چون ممکنه یه اپدیت وابسته به چیزی باشه که توی خود همون پچ میاد
• تحویل دقیق باید انجام بشه و هیچی گم نشه
• مقیاسش هم میلیون‌ها کاربر همزمان باید بگیرنش، مثل کانال های بزرگ

از اونجایی که هر پیامرسان منبع عظیمی از اتفاقاتیه که هر لحظه میوفته ما میتونیم اسم این اتفاقات رو event بزاریم. تلگرام هم یه پیامرسان مولتی کلاینته، یعنی هر کاربر میتونه چندین دیوایس برای یه حساب داشته باشه، پس وقتی یه ایونت اتفاق میوفته که باید یه کاربر از اون خبردار بشه باید اون ایونت رو به دیوایس های دیگه ی کاربر هم بفرسته، حدودا با مرتبه زمانی On^2.

مکانیزم اینجوریه که وقتی دیوایسی انلاین باشه و سوکت همون سوکتی باشه که keep alive هست یا اخرین rpc رو کال کرده سرور ایونت رو توی queue برای اون دیوایس نگه نمیداره و مستقیم میفرسته به کلاینت، حالا از اونجایی که کلاینت های دیگه ممکنه افلاین باشن یا حتی توی بکگراند پروسسشون کیل شده باشه عقب میمونن. حالا وقتی اون دیوایسی که عقب مونده بود با باز شدن سوکتش درخواست گرفتن اپدیت هارو وقتی که افلاین بوده رو از سرور میکنه و اطلاعات لوکالش رو میفرسته به سرور و اپدیت هارو درخواست میکنه.
من برای ساده شدنش اینجوری میگم که دیوایس میاد به سرور میگه من تا این زمان t رو داشتم و بعد این رو بهم بده، سرور هم میاد حساب کتابش رو میکنه و جواب رو توی یه پچ میفرسته! حالا چی توی این پچ هست و چی رو میفرسته رو میتونم یه رشته توییت دیگه در موردش بزنم.

حالا اگه اعدادی که توی پچ میاد با اعداد توی کلاینت نخونه عملا میگیم گپ اتفاق افتاده، برای همین هم کلاینت باید رکویست getDiff رو بزنه.
رکویست updates.getDifference به کلاینت اجازه می‌ده بگه:
من الان pts = X و seq = Y هستم و هر چی بین این و حالت جدید هست بهم بده.
• سرور ممکنه جواب بده:
difference: همه ی آپدیت های گمشده
differenceSlice: بخشی از آپدیت ها یعنی هنوز باید به فچ کردن ادامه بدی
differenceEmpty: چیزی تغییر نکرده

جالبترش اینه که توی نسخه های جدیدترش برای کانال ها مکانیسم جدا getChannelDifference هست، چون هر کانال pts مستقل داره و این باعث میشه شما فقط کانال هایی رو بگیری که تغییر کردن! برای سوپر گروه هم مکانیزم همینه.

این باعث می‌شه حتی اگر چند ساعت آفلاین باشی، بعد از اتصال دوباره دقیقاً همه‌چی رو بگیری و هیچ پیامی رو از دست ندی

حتی با packet loss یا reconnect، state کلاینت خراب نمیشه و سرور مجبور نیست برای هر کلاینت همه چی رو دوباره بفرسته. فقط gap ها sync میشن

@knowpow
142👍10🔥8
تاریخ بی خردی

@knowpow
1👍244
حین اینکه منتظر ماشین فرودگاه بودم دوست ترکم “باران” برام یه کلیپ از یه پیج فارسی فرستاد که داشت اموزش کلمات فارسی رو میداد و بهم گفت یه سری کلمات مثل: جنگ، صلح و مذاکره توی ترکی هم استفاده میشدن… دلیلی شد براش شاهنامه رو فرستادم و داستان فردوسی رو توضیح دادم، ناخوداگاه خودم رو وسط ویکیپدیا گردی دیدم و به شخص عجیبی رسیدم:

ابوالحسن بهمنیار بن مرزبان سالاری
ایشون استاد حکیم عمر خیام بوده و خودش از شاگردان برجسته ابن سینا بوده، طوری که ابن سینا فقط برای جواب دادن به پرسش های بهمنیار کتاب نوشته:
از برجسته‌ترین شاگردان ابن سینا یا ابوعلی بود و در درس ابن سینا حضور فعال داشته و پرسش‌های پرسون و مهمی را مطرح می‌کرده کتاب المباحثات ابن سینا بیش‌تر در پاسخ به پرسش‌های او است.


البته در مورد واقعیت شاگردی خیام هم تو نت تحقیق کردم منابعی مثل نظامی عروضی در چهارمقاله تایید کرده ولی بعضی پژوهشگران معاصر تردید دارن و می‌گن شاید این نسبت بیشتر جنبهٔ روایی و سنتی داشته باشه (چون فاصله زمانی کمی بین درگذشت بهمنیار و دوران جوانی خیام هست). اما در منابع کلاسیک، این شاگردی بارها تکرار شده

هر چی که بوده الان کمتر دانشجویی پیدا میشه که استادش رو به چالش بکشه و کمتر استادی پیدا میشه که ابن سینا باشه

بیش باد!

@knowpow
1🔥135👍2