Telegram Web Link
مایکروسافت هروقت بودجه ساخت یه تکنولوژی رو نداشت و می‌خواست از نمونه مشابه‌اش استفاده کنه، سریع به همایش می‌ذاشت و بنر Microsoft ❤️ Folan رو میذاشت بک گراند. 😂
تمیزی از 10 چند؟
پیشنهادی واسه مود Interactive ندارین؟ قراره حالت چت-طور باشه در CLI.
This media is not supported in your browser
VIEW IN TELEGRAM
در سال ۲۰۰۹، انویدیا در یک کنفرانس کلی خرج کرد تا تفاوت بین CPU و GPU رو به ساده‌ترین شکل ممکن به ما نشون بده!

در این آزمایش چه اتفاقی افتاد؟! چه نکاتی رو میشه ازش آموخت؟!

Join for more: @lnxpylnxpy
در این کنفرانس، دو آزمایش انجام شد. در آزمایش اول، یک تفنگ پینت‌بال روی یک شاسی روبه‌روی یک تابلو قرار داده شد و در هر لحظه، یک توپ پینت‌بال به سمت تابلو پرتاب می‌شد و در نهایت تصویر یک آدمک مصور شد.

آزمایش دوم تقریبا شبیه به آزمایش اول بود با این تفاوت که این‌بار بجای یک تفنگ پینت‌بال، ۱،۱۰۰ مازل پینت‌بال با فشار هوای موجود در چهار محفظه به حجم کلی ۸،۰۰۰ لیتر به سمت تابلو پرتاب می‌شدن.

آزمایش اول نمایانگر شیوه عملکرد CPU و آزمایش دوم شبیه‌ساز شیوه عملکرد GPU بود. اگه به آزمایش اول دقت کنید، می‌بینید که مجری صحنه با دستکاری تفنگ، سرعت پرتاب توپ رو تغییر می‌ده. طی کنفرانس به این عمل مجری هیچ اشاره‌ای نمیشه اما این پارامتر در CPU، کلاک (Clock) پردازنده نامیده میشه که با یکای هرتز اندازه‌گیری و مشخص میشه که به معنی سرعت CPU در پردازش هر تسک طی یک ثانیه (سیکل زمانی) هست.

مثلا یک پردازنده ۳ گیگاهرتزی (3GHz) نمایانگر اینه که این پردازنده این قابلیت رو داره که در هر ثانیه، ۳ میلیارد بار بین هر تسک پردازشی سوییچ کنه! تسک پردازشی می‌تونه خواندن از مموری، نوشتن در IO، باز کردن یک سشن وب یا هرچیزی باشه.

وظیفه پردازش در پردازنده بر عهده هسته (Core) هست. یک خصیصه بد هسته‌ها، Lazy بودنشونه. خیلی زود به خواب می‌رن. فرض کنید شما دوتا تسک دارید.

تسک اول: بررسی تعداد اعداد اول بین عدد ۱ میلیارد تا ۲ میلیارد.
تسک دوم: ۲۰ بار پرینت کردن Hello world.

از اونجا که ترتیب انجام این تسک‌ها مهم نیستن، پس اهمیتی هم نداره که کدوم زودتر انجام شه. مسلما تسک دوم در کسری از ثانیه اجرا میشه اما تسک اول خیلی زمانبره ولی شما برنامه رو طوری می‌نویسید که ابتدا تسک اول و سپس تسک دوم اجرا شه. یک هسته شروع می‌کنه تعداد اعداد اول بین یک میلیارد و دو میلیارد رو می‌شماره و شما تا الان تقریبا چند دقیقه‌ای هست که منتظرید تا یکی از این دو تسک تموم شه.

این درحالیه که می‌تونستید برای پردازنده مشخص کنید که برنامه شما از دو تسک تشکیل شده که کاملا مستقل و مجزا هستن نسبت به هم تا هسته می‌تونست برنامه رو به نحو بهتری اجرا کنه. این عمل اجرای موازی نام داره. درواقع شما دارید برنامه رو به دو بخش (ترد) تقسیم می‌کنید و دست Core رو واسه سوییچ کردن بین هریک از این تسک‌ها باز می‌ذارید.

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


python -c "import sys; print(sys.getswitchinterval())"
0.005


پردازش موازی به طور کلی به دو صورت انجام میشه. واقعا موازی (Parallel) شبه‌موازی (Concurrent). خیلی خلاصه بگم، در حالت موازی، واقعا چند تعداد هسته اجیر اجرای چند تسک میشن و در لحظه همشون درحال پردازشن اما در حالت شبه‌موازی، یک یا چند هسته روی چند تسک سوییچ می‌کنن. به قدری این سوییچ سریع اتفاق می‌یوفته (۰.۰۰۵ ثانیه در پایتون) که شما فکر می‌کنید واقعا دانلود منجر شما movie1.mp4 و movie2.mp4 رو داره همزمان دانلود می‌کنه!

الان تا حدودی با CPUها آشنا شدیم. این وسط GPUها چطوری کار می‌کنن؟!

برخلاف محدودیت CPU ها در تعداد هسته‌ها، GPUها می‌تونن تعداد بسیار زیادی هسته داشته باشن. در یک پردازنده معمولی امروزی، شما نهایتا ۸ هسته در اختیار دارید. این در حالیه که در یک GPU میان‌رده، حداقل ۱۰۰۰ هسته وجود داره. مشخصا انجام یک تسک بصورت Parallel خیلی سریعتره تا Concurrent و نقطه قوت GPU ها در پردازش موازیشونه!

در یک تسک رندر کردن یک جسم سه‌بعدی، ممکنه هزاران هسته در لحظه روی پردازش ابعاد مختلف اون شی کار کنن. با حجم فضای مموری (VRAM) که در سخت افزار GPU تعبیه شده، مسلما سرعت و حجم، خیلی بیشتر از ریجستری CPU و RAM هست. این در حالیه که یک CPU در حالتی Efficient هست که کلاک بالایی داشته باشه و با سرعت زیادی سوییچ کنه.

حالا می‌دونید دیوایسی که در دست دارید یا تلگرامی که درحال استفاده ازش هستید چطور کار می‌کنه! امیدوارم لذت برده باشید! :) ❤️

Join for more: @lnxpylnxpy
اجرای شبه‌موازی vs موازی سه تسک!

Processes = CPU Cores

Join for more: @lnxpylnxpy
Forwarded from Python BackendHub (Mani)
نسخه ۰.۱.۰ فریم ورک AioClock منتشر شد 🔥🔥

آیوکلاک یک فریم ورک برای scheduling هست که کاملا Async عه و هر چیزی که یک فریم ورک نیاز داره رو داخلش داره, مثل دپندسی اینجکشن و startup/stop ایونت و ...

تغییرات نسخه جدید:

- بهبود داکیومنت و خوانایی بسیار بالا

- اضافه شدن پلاگین FastAPI - تو لایه HTTP میتونید ببینید چه تسک هایی دارین, که قراره ران بشن و اگه لازم بود یک تسک با درخواست POST همون لحظه ران کنید!

- اضافه شدن API Internal - برای کنترل لایبری, و نوشتن پلاگین FastAPI که میتونید ابزار CLI باهاش بنویسید یا مثل پلاگین فست رو برای فریم ورک های وب دیگه استفاده کنید.


Github
Documentation

برای حمایت خوشحال میشم استار بدید یا contribute کنید.

@PyBackendHub
چجوریه که شایان ۸ سال پیش این ویدئو رو آپلود کرده آپارات، بعد محمد ۹ سال پیش کامنت گذاشته؟ 🤔

اگه ماشین زمان پیدا کردین به مام بگین خسیسا.. نمی‌خوایم بخوریمش که. 😒
🦾
اون گپ صورتی‌رنگ پای‌دنتیک و گپ سبز‌رنگ FastAPI دقیقا بخاطر PydanticV2 هست. دلیل اصلی این گپ به این بزرگی اینه که سیستم ولیدیشن از پای‌دنتیک جدا شد و تحت یه پکیج دیگه (pydantic-core) که با راست نوشته شده بود رلیز شد. بنظرم بعد از Postgres، یکی از بجاترین رلیز ها بود چراکه پرفرومنس و ران‌تایم رو تا ۵۰ برابر سریعتر کرد. از خوبیاش که بگذریم، باعث شد یه سری از بیزینس ها که وابستگی نرم‌افزاری شدیدی به PydanticV1 داشتن، با اینکه کلی تول نوشته شده واسه مهاجرت از ورژن ۱ به ۲، بخاطر Breaking changeها حسرت به دل بمونن و نتونن آپگرید کنن. :(

برای آگاهی بیشتر:
https://pydantic.dev/articles/pydantic-v2#breaking-changes--compatibility--section
Forwarded from Python BackendHub (Mani)
Sadra Codes
درود دوستان مصاحبه سطح جونیور با آقا بهداد عزیز سری جدید ماک اینترویو رو داریم شروع می‌کنیم و لطفا در این فرآیند هرگونه ‍نظر مثبت و منفی دارین برام بنویسین که توی مصاحبه های بعد تغییر بدیم @BenDevelop https://www.youtube.com/watch?v=DJ6lHSp7gUo
یک پلی لیست عالی از امیربهادر 👌
دیدن ماک یکی از بهترین روش های یادگیریه.
مصاحبه انجام دادن مثل رزومه نوشتن یک اسکیله. لزوما کسی که دانش تکنیکال خوبی داره خوب مصاحبه نمیکنه. بخش خیلی زیادی از مصاحبه اسکیل communication هست که خیلی مهمه. لزوما کسی که بره تو یک مصاحبه ۳ تا سوال الگوریتمی حل کنه استخدام نمیشه و FAANG و شرکت های بزرگ تر برای اینکه فرصت چک کردن assignment ندارن و هزینه زیادی براشون میبره و لایو هم نیست رو به پرسیدن سوال های الگوریتمی آوردن‍, که البته هدفشون استخدام یک leet coder نیست‌(ولی سولوشن بهتری براشون وجود نداره یا هنوز پیدا نشده که بتونن یک سوالی رو طرح کنند و طرف بتونه با کد زدن حلش کنه و اسکیل communication اش هم نشون بده و عمق دانشش هم نشون بده)
و البته سوالای system design ای که میپرسن هم دوباره یک مکانیزمه که leet coder ای استخدام نکنن که communication خوبی هم داره.

من میخواستم خیلی وقت پیش یک repo بنویسم برای مصاحبه دادن (مثل رزومه نویسی)
ولی بعدش فهمیدم که اونقدر مصاحبه objective نیست و تا کسی مصاحبه ماک خوب نبینه چند تا مصاحبه نده قلقش دستش نمیاد. ولی نوشتن resume خیلی آبجکتیو هست که یک ریپو دارم در خصوص تکنیک های نوشتن رزومه.

یک نکته که اخیرا کشف کردم برای اپلای, اگه سطح زبانتون خوبه حتما درج کنید (مثلا اگه c1 هستین بنویسید که c1 هستین) چون واقعا خیلیا (حتی اروپایی و خارجی ها) خیلی خوب حرف نمیزنن. البته دروغ ننویسید چون قطعا باعث ریجکتتون میشه اگه بنویسید c1 بلدید ولی تو مصاحبه اول نتونید در حد c1 حرف بزنید.
@PyBackendHub
توی نسخه 0.6.3 پای‌اکشن، سرعت اجرای اکشن به دلیل Dependency Management بهینه‌تر، بهبود پیدا کرده و سریعتر شده.

و اینکه خروجی کامند pyaction run تمیزتر و بهتر شده. :))


More >> https://pyaction.imsadra.me/
یه کانونشن جالب که تازه دیدمش. در زبان‌هایی که نیاز به نوشتن براکت و سمی‌کالن دارن واسه مشخص کردن اسکوپ‌ها و انتهای هر لاین، شما می‌تونی کدت رو به شکل پایتونیک بنویسی و تمام این علامت‌ها رو در راست‌ترین ساید اسکریپتت بنویسی!

در واقع indent می‌کنی کدت رو ولی خب از اونجا که indentations معنی‌ای نداره توی (مثلا) جاوا، هیچ تاثیری در عملکرد کار نداره فقط یکم (بنظر من) خواناتر میشه. با این تریک، شما می‌تونی جاوا، سی، سی شارپ و... رو مثل پایتون کد بزنی!

زیادم طرفدار این کانونشن نیستم چراکه هم استاندارد نیست، هم در حالتی بهینه هست که ورژن کنترلر شما گیت نباشه و یه ابزار Formatter خیلی خوب واسه مدیریت علامت‌ها داشته باشین. :)
Forwarded from Python BackendHub (Mani)
داشتم docker compose مینوشتم که یک مشکلی داشتم (رو مخم بود مشکل نبود واقعا‌:)) ) و اونم این بود که وقتی دارم YAML مینوسیم خیلی خودمو دارم تکرار میکنم. مثلا endpoint های opentelemtry ام رو باید به همه service هام بدم.
بنابراین اینطوری میشه:


services:
foo_service:
environment:
trace_endpoint: baz_url
log_endpoint: baz2_url
metric_endpoint: baz3_url
# some other env....

bar_service:
environment:
trace_endpoint: baz_url
log_endpoint: baz2_url
metric_endpoint: baz3_url
# some other env...


و خوب قانع نشدم. گشتم ببینم راه حلی برای این موضوع هست. که بله هست. و اونم استفاده از Anchor هست.



x-otel-endpoints: &default-otel-endpoints
trace_endpoint: baz_url
log_endpoint: baz2_url
metric_endpoint: baz3_url

services:
foo_service:
environment:
<<: *default-otel-endpoints
# some other env

baz_service:
environment:
<<: *default-otel-endpoints
# some other env


خیلی بهتر شد نه؟ مقاله زیر کامل توضیح داده که چیه و چطور کار میکنه. توصیه میکنم یک سری بزنید چون معمولا yaml زیاد مینویسیم.

https://medium.com/@kinghuang/docker-compose-anchors-aliases-extensions-a1e4105d70bd


@PyBackendHub
WTF 😳
اهمیت توسعه نرم‌افزار خوب در بیزینس!

قشنگ یه تایم می‌رسه که به این درک می‌رسی؛ توسعه نرم‌افزار یکی از سخت‌ترین در عین حال حیاتی‌ترین کاراس به خصوص بعنوان یه محصول تجاری در یک بیزینس سالم و Healthy که حداقل ۲-۳ تا رقیب گردن‌کلفت داری. اونجاست که هزینه کوچکترین اشتباهت رو چند ماه بعد حس می‌کنی. :))

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

توی این پروسه، اعتماد خیلی مهمه. چه به خودت، چه دیگران. اینکه آیا این امکان رو داری که نیروی قابل اعتماد پیدا کنی یا خیر؟ مهم‌تر از اون، صرف نظر از سرمایه و وقت، آیا جرات شروع و ادامه‌اش رو داری؟ مسلما کار ساده‌ای نیست. ۹۹ درصد بیزینس‌ها، اونجور که به‌نظر میرسن در واقع نیستن.

گوگل جای خفنیه و کار کردن واسش یه اتفاق رویاییه، ولی کسی راجع به فشار کاری، استرس، فرهنگ کاری متفاوت و خاصش زیاد صحبت نمیکنه. اگه صحبتی هم بشه باز اون ساید Shiny بودن و زرق و برق تایتل Senior Developer @ Google توجه شما رو خیلی بیشتر جلب می‌کنه تا Why I quit Google. اصلا مدیا به سمتی میره که اون بخش پررنگ‌تر باشه.
اینجانب درسته بیزینس راه ننداخته، ولی دیده دست مردم. 😁❤️
Audio
چه حس خوبی داره این آهنگ!
ریمیکس شب عشق از بانو هایده. ❤️

ریمیک از: Noyan Bahadori

+ واسه تویی که همین الان پشت سیستمی :))
2025/07/07 12:51:10
Back to Top
HTML Embed Code: