Object pool pattern
بعضی وقت ها ما یک سری چیزا هست که نباید ازش زیاد instance بسازیم. به این دلیل که زیاد instance ساختن از لحاظ مصرف مموری نتیجه خوبی نداره هم اینکه پرفورمنس خوبی به ما نمیده
توضیح:
برای مثال وقتی داریم با دیتایس کار میکنیم نمیتونیم بر اساس هر درخواستی که سمت ما میاد یه کانکشن جدید بسازیم چون ممکنه محدودیت تعداد کانکشن داشته باشیم و یا اینکه زیاد کانکشکن ساختن مشکلات دیگه ای رو بوجود بیاره
بحث pool اینجا بوجود میاد. (فقطم تو این مورد کاربرد نداره مثلا تو اکثر زبون ها ما thread pool رو داریم. اول برنامه میایم تعداد مشخصی ترد رو بوجود میاریم و در ادامه از همون ترد ها استفاده میکنیم چونکه ساخت ترد هزینه زیادی داره )
در کل pool به ما دو قابلیت اصلی رو میده. اولی اینکه از داخل pool مثلا یک connection رو برداریم و Get کنیم. قابلیت بعدی اینه بعد از اینکه کارمون تموم شد دوباره اون connection رو به pool برگردونیم و put کنیم.
#Pool
@Syntax_fa
بعضی وقت ها ما یک سری چیزا هست که نباید ازش زیاد instance بسازیم. به این دلیل که زیاد instance ساختن از لحاظ مصرف مموری نتیجه خوبی نداره هم اینکه پرفورمنس خوبی به ما نمیده
توضیح:
برای مثال وقتی داریم با دیتایس کار میکنیم نمیتونیم بر اساس هر درخواستی که سمت ما میاد یه کانکشن جدید بسازیم چون ممکنه محدودیت تعداد کانکشن داشته باشیم و یا اینکه زیاد کانکشکن ساختن مشکلات دیگه ای رو بوجود بیاره
بحث pool اینجا بوجود میاد. (فقطم تو این مورد کاربرد نداره مثلا تو اکثر زبون ها ما thread pool رو داریم. اول برنامه میایم تعداد مشخصی ترد رو بوجود میاریم و در ادامه از همون ترد ها استفاده میکنیم چونکه ساخت ترد هزینه زیادی داره )
در کل pool به ما دو قابلیت اصلی رو میده. اولی اینکه از داخل pool مثلا یک connection رو برداریم و Get کنیم. قابلیت بعدی اینه بعد از اینکه کارمون تموم شد دوباره اون connection رو به pool برگردونیم و put کنیم.
#Pool
@Syntax_fa
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
محبوب ترین زبان ها از سال 2000 تا 2023
پی او پی محبوبیتش داره کمتر میشه
زبان هایی مثل typenoscript رشد خوبی داشتن
یه سری زبون هایی مثل rust و golang هم دارن رشد میکنن
تو پست بعدی نظر استاد شهریوری نسبت به آینده جاوا و سی شارپ رو میذارم
@Syntax_fa
پی او پی محبوبیتش داره کمتر میشه
زبان هایی مثل typenoscript رشد خوبی داشتن
یه سری زبون هایی مثل rust و golang هم دارن رشد میکنن
تو پست بعدی نظر استاد شهریوری نسبت به آینده جاوا و سی شارپ رو میذارم
@Syntax_fa
👍10
Syntax | سینتکس
محبوب ترین زبان ها از سال 2000 تا 2023 پی او پی محبوبیتش داره کمتر میشه زبان هایی مثل typenoscript رشد خوبی داشتن یه سری زبون هایی مثل rust و golang هم دارن رشد میکنن تو پست بعدی نظر استاد شهریوری نسبت به آینده جاوا و سی شارپ رو میذارم @Syntax_fa
زبانهای برنامهنویسی و آینده
اخیراً خبر جالبی در سایت TIOBE منتشر شده راجع به اینکه از نظر محبوبیت زبان سیشارپ به نزدیکی زبان جاوا رسیده و دیگه داره حدسهایی مطرح میشه که بزودی سیشارپ از نظر محبوبیت از جاوا عبور خواهد کرد. معالفارق از اینکه چقدر همچنین معیارهایی میتونه درست باشه (که از دید من واقعاً نشوندهنده برآیند بازار نیست) در این پست میخوام یه مقدار راجع به زبانهای برنامهنویسی صحبت کنم.
اول از همه بگم که من از قدیم طرفدار زبانهای شیگرا، با تایپهای ایستا، کامپایلشده و همهمنظوره بودم و هنوزم هستم (و این صرفاً سلیقه شخصیه). از زبانهایی که در این حوزه قرار میگیرند میشه به: جاوا، سیشارپ، سی پلاس پلاس و کاتلین اشاره کرد. اگه صرفاً از بعد زبان بخوام نگاه کنم از دید من مایکروسافت در سال ۲۰۰۷ کار رو یکسره کرد (بازم سلیقه شخصی) و همیشه زبان سیشارپ یه سر و گردن از بقیه جلوتره برای مثال چیزی مثل LINQ هنوز برای بقیه زبانها وجود نداره. اما آیا قدرت و خفن بودن یک زبان برای گرفتن بازار کافیه؟
از دید من جواب این سوال منفیه! شما علاوه بر زبان باید به اکوسیستمی که حول اون زبان شکل گرفته هم نگاه کنید مثل پروژههای متنباز، چارچوبها، کتابخونهها و خیلی چیزای دیگه حتی آدمای قدیمی و تاثیرگذار. خیلی وقتا حتی اگه یه زبان همه چیز رو هم باخته باشه بازم کلی پروژه فعلی حول اکوسیستم اون زبان وجود داره که مهاجرت از اون زبان بازنده رو سختتر میکنه.
حالا تحلیل من چیه؟
۱- معیارهایی مثل TIOBE برای تحلیل آینده بازار خیلی قابل اتکا نیستند و نباید بهشون دلخوش باشیم. البته از دید من میتونه بیانگر رشد باشه پس لایک به سیشارپ.
۲- به نظرم حتی تا سال ۲۰۲۵ هم کل اکوسیستم سیشارپ (نه صرفاً زبان) بعیده بتونه جایگاه اکوسیستم جاوایی رو بگیره.
۳- اگه کسی اول راهه و میخواد برای خودش یه اکوسیستم انتخاب کنه اولین معیار باید براش علاقه و سلیقه شخصی خودش باشه و بهتره تحت تاثیر این مدل خبرها قرار نگیره.
۴- یه چیزی که توی خبر TIOBE منو خوشحال میکنه رشد و اشاره به زبان کاتلینه. من از حوالی سال ۹۵ که نسخه ۱ کاتلین رسماً منتشر شد از جاوا به کاتلین مهاجرت کردم. شاید به نوعی از اولین آدما تو بازار ایران بودم که برای کدهای سمت سرور رفتم سراغ کاتلین و با جاوا کاملاً خداحافظی کردم. به نظرم یکی از دلایل نزول جاوا هم قطعاً رشد کاتلینه. پس اگه شما هم سمت سرور با زبان جاوا کار میکنید پیشنهاد میکنم حتماً کاتلین رو یه تستی بکنید، به احتمال زیاد پشیمون نمیشید :)
[Saeed Shahrivari Joghan]
@Syntax_fa
اخیراً خبر جالبی در سایت TIOBE منتشر شده راجع به اینکه از نظر محبوبیت زبان سیشارپ به نزدیکی زبان جاوا رسیده و دیگه داره حدسهایی مطرح میشه که بزودی سیشارپ از نظر محبوبیت از جاوا عبور خواهد کرد. معالفارق از اینکه چقدر همچنین معیارهایی میتونه درست باشه (که از دید من واقعاً نشوندهنده برآیند بازار نیست) در این پست میخوام یه مقدار راجع به زبانهای برنامهنویسی صحبت کنم.
اول از همه بگم که من از قدیم طرفدار زبانهای شیگرا، با تایپهای ایستا، کامپایلشده و همهمنظوره بودم و هنوزم هستم (و این صرفاً سلیقه شخصیه). از زبانهایی که در این حوزه قرار میگیرند میشه به: جاوا، سیشارپ، سی پلاس پلاس و کاتلین اشاره کرد. اگه صرفاً از بعد زبان بخوام نگاه کنم از دید من مایکروسافت در سال ۲۰۰۷ کار رو یکسره کرد (بازم سلیقه شخصی) و همیشه زبان سیشارپ یه سر و گردن از بقیه جلوتره برای مثال چیزی مثل LINQ هنوز برای بقیه زبانها وجود نداره. اما آیا قدرت و خفن بودن یک زبان برای گرفتن بازار کافیه؟
از دید من جواب این سوال منفیه! شما علاوه بر زبان باید به اکوسیستمی که حول اون زبان شکل گرفته هم نگاه کنید مثل پروژههای متنباز، چارچوبها، کتابخونهها و خیلی چیزای دیگه حتی آدمای قدیمی و تاثیرگذار. خیلی وقتا حتی اگه یه زبان همه چیز رو هم باخته باشه بازم کلی پروژه فعلی حول اکوسیستم اون زبان وجود داره که مهاجرت از اون زبان بازنده رو سختتر میکنه.
حالا تحلیل من چیه؟
۱- معیارهایی مثل TIOBE برای تحلیل آینده بازار خیلی قابل اتکا نیستند و نباید بهشون دلخوش باشیم. البته از دید من میتونه بیانگر رشد باشه پس لایک به سیشارپ.
۲- به نظرم حتی تا سال ۲۰۲۵ هم کل اکوسیستم سیشارپ (نه صرفاً زبان) بعیده بتونه جایگاه اکوسیستم جاوایی رو بگیره.
۳- اگه کسی اول راهه و میخواد برای خودش یه اکوسیستم انتخاب کنه اولین معیار باید براش علاقه و سلیقه شخصی خودش باشه و بهتره تحت تاثیر این مدل خبرها قرار نگیره.
۴- یه چیزی که توی خبر TIOBE منو خوشحال میکنه رشد و اشاره به زبان کاتلینه. من از حوالی سال ۹۵ که نسخه ۱ کاتلین رسماً منتشر شد از جاوا به کاتلین مهاجرت کردم. شاید به نوعی از اولین آدما تو بازار ایران بودم که برای کدهای سمت سرور رفتم سراغ کاتلین و با جاوا کاملاً خداحافظی کردم. به نظرم یکی از دلایل نزول جاوا هم قطعاً رشد کاتلینه. پس اگه شما هم سمت سرور با زبان جاوا کار میکنید پیشنهاد میکنم حتماً کاتلین رو یه تستی بکنید، به احتمال زیاد پشیمون نمیشید :)
[Saeed Shahrivari Joghan]
@Syntax_fa
👍9❤1
Syntax | سینتکس
زبانهای برنامهنویسی و آینده اخیراً خبر جالبی در سایت TIOBE منتشر شده راجع به اینکه از نظر محبوبیت زبان سیشارپ به نزدیکی زبان جاوا رسیده و دیگه داره حدسهایی مطرح میشه که بزودی سیشارپ از نظر محبوبیت از جاوا عبور خواهد کرد. معالفارق از اینکه چقدر همچنین…
چند تا از پرسش و پاسخ ها:
1. جایگاه سیپلاسپلاس در آینده نزدیک با توجه به آپدیتها و فیچرهای جدیدی که ارائه داده کجا خواهد بود؟ آیا با افزایش محبوبیت رو به رو میشه؟
سی پلاس پلاس عشق قدیمی و اول منه🤗 ولی به نظرم به مرور کمرنگتر میشه و در حوزه خودش قسمتی از سهمش رو به گو و سی میده.
2. نظرتون راجب فریمورک جنگو چیه؟
من تو پایتون بیشتر طرفدار فلسک و fastapi هستم
3. ببخشید نظرتون رو درباره ی golang هم میشه بگید ممنون
زبان گو یه حامی بزرگ به نام گوگل داره که برای خودش وزنهایه و در سالهای اخیر هم مخصوصاً در حوزه کاری نرمافزارهای سیستمی و دواپس اکوسیستم خیلی خوبی برای خودش جور کرده. من حس میکنم محبوبیتش بیشتر هم میشه مخصوصاً که یکی از طراحان گو آقای کرنیگانه که طراح زبان سی هم بود و آدم خفنیه اما بعید میدونم بتونه از حوزه سیستمی خارج بشه.
[Saeed Shahrivari Joghan]
@Syntax_fa
1. جایگاه سیپلاسپلاس در آینده نزدیک با توجه به آپدیتها و فیچرهای جدیدی که ارائه داده کجا خواهد بود؟ آیا با افزایش محبوبیت رو به رو میشه؟
سی پلاس پلاس عشق قدیمی و اول منه🤗 ولی به نظرم به مرور کمرنگتر میشه و در حوزه خودش قسمتی از سهمش رو به گو و سی میده.
2. نظرتون راجب فریمورک جنگو چیه؟
من تو پایتون بیشتر طرفدار فلسک و fastapi هستم
3. ببخشید نظرتون رو درباره ی golang هم میشه بگید ممنون
زبان گو یه حامی بزرگ به نام گوگل داره که برای خودش وزنهایه و در سالهای اخیر هم مخصوصاً در حوزه کاری نرمافزارهای سیستمی و دواپس اکوسیستم خیلی خوبی برای خودش جور کرده. من حس میکنم محبوبیتش بیشتر هم میشه مخصوصاً که یکی از طراحان گو آقای کرنیگانه که طراح زبان سی هم بود و آدم خفنیه اما بعید میدونم بتونه از حوزه سیستمی خارج بشه.
[Saeed Shahrivari Joghan]
@Syntax_fa
👍7❤1
Syntax | سینتکس
زبانهای برنامهنویسی و آینده اخیراً خبر جالبی در سایت TIOBE منتشر شده راجع به اینکه از نظر محبوبیت زبان سیشارپ به نزدیکی زبان جاوا رسیده و دیگه داره حدسهایی مطرح میشه که بزودی سیشارپ از نظر محبوبیت از جاوا عبور خواهد کرد. معالفارق از اینکه چقدر همچنین…
بیگی میگه:
با اینکه من استاد شهریوری رو میشناسم و از میزان توانایی و استعداد هاشون مطلعم و واقعا هم کارشون عالیه اما فکر کنم این حرفشون زیادی تعصب گرایانه هستش
اول از همه که نباید عصبی داشته باشیم.
سی شارپ ترکیده بود تا سال 2021 اینا که ما رسیدیم به کور 6
اولین کور lts با زیرساخت کور ( وگرنه 3.1 هم lts بود اما با اتصال بسیار زیاد به مونو)
اینکه تو Tiobe داره پیشرفت میکنه ، خود Tiobe معیار های زیادی برای آمارش داره و واقعا نمیشه روش حساب کرد. اما دلیل پیشرفت واقعی سی شارپ و بهتر شدنش نسبت به جاوا چیه؟
1- جاوا اون زمانی که سی شارپ ویندوز آنلی و مزخرف و ترکیده بود ، خوب تونست درون مارکت خودشو جا کنه و بعدش درگیر کثیف کاری و پولکی باز شد. جوری که خیلی از شرکت ها فرار کردن
حالا نه به دات نت ولی به زبان های دیگه.
Linq
باعث شده یک سر و گردن از بقیه زبان ها جلوتر باشه درست.
اینکه راجب اکو سیستم حرف زدن واقعا جالبه چون اکو سیستم جاوا با دات نت زیاد فرقی نمیکنه
مخصوصا اگه به جاوای مدرن الان نگاه کنیم.
اگه به ابزار باشه بازم از یک لحاظی جلوتره و از یک لحاظی هم عقب تر
مثلا:
دات نت هنوز که هنوزه gui خوبی برای کراس پلتفرم نداره چون روی اندروید به شدت مشکل داره.
از لحاظ بازار کاری ، فقط میشه به devlog های کمپانی های کوچک ، استارت اپ ها و تعداد انگشت شماری کمپانی بزرگ اشاره کرد.
بنظر من مارکت فعلی و رقابت اصلی فعلا بین سه زبان سی شارپ ، کاتلین و گولنگ هستش. که تو عالی بودن این 3 شکی نیست.
ولی واقعا همین الانم اکو سیستم خوبی داره چرا اینو کسی قبول نمیکنه؟ یکی نیست دات نت 6 به بعد و مخصوصا 8 رو تست کنه :)
یکی از دلایل نزول جاوا رشد کاتلین نیست!
تمام دلایل نزول جاوا ، وجود کاتلین هستش
از جت برینز عزیز متشکرم که این زبان زیبا رو خلق و با حمایت گوگل سریع وارد کامیونیتی کرد.
شرکت هایی که از جاوا فراری بودن
مردمی که از سینتکس بسیار بد جاوا های قدیمی ( کد بیس های قدیمی ، جاوا های قدیمی) عذاب میکشیدن و ...
سیاست پولی جاوا باعث تمام این مشکلات شد.
پ.ن:
@Syntax_fa
با اینکه من استاد شهریوری رو میشناسم و از میزان توانایی و استعداد هاشون مطلعم و واقعا هم کارشون عالیه اما فکر کنم این حرفشون زیادی تعصب گرایانه هستش
اول از همه که نباید عصبی داشته باشیم.
سی شارپ ترکیده بود تا سال 2021 اینا که ما رسیدیم به کور 6
اولین کور lts با زیرساخت کور ( وگرنه 3.1 هم lts بود اما با اتصال بسیار زیاد به مونو)
اینکه تو Tiobe داره پیشرفت میکنه ، خود Tiobe معیار های زیادی برای آمارش داره و واقعا نمیشه روش حساب کرد. اما دلیل پیشرفت واقعی سی شارپ و بهتر شدنش نسبت به جاوا چیه؟
1- جاوا اون زمانی که سی شارپ ویندوز آنلی و مزخرف و ترکیده بود ، خوب تونست درون مارکت خودشو جا کنه و بعدش درگیر کثیف کاری و پولکی باز شد. جوری که خیلی از شرکت ها فرار کردن
حالا نه به دات نت ولی به زبان های دیگه.
Linq
باعث شده یک سر و گردن از بقیه زبان ها جلوتر باشه درست.
اینکه راجب اکو سیستم حرف زدن واقعا جالبه چون اکو سیستم جاوا با دات نت زیاد فرقی نمیکنه
مخصوصا اگه به جاوای مدرن الان نگاه کنیم.
اگه به ابزار باشه بازم از یک لحاظی جلوتره و از یک لحاظی هم عقب تر
مثلا:
دات نت هنوز که هنوزه gui خوبی برای کراس پلتفرم نداره چون روی اندروید به شدت مشکل داره.
از لحاظ بازار کاری ، فقط میشه به devlog های کمپانی های کوچک ، استارت اپ ها و تعداد انگشت شماری کمپانی بزرگ اشاره کرد.
بنظر من مارکت فعلی و رقابت اصلی فعلا بین سه زبان سی شارپ ، کاتلین و گولنگ هستش. که تو عالی بودن این 3 شکی نیست.
۲- به نظرم حتی تا سال ۲۰۲۵ هم کل اکوسیستم سیشارپ (نه صرفاً زبان) بعیده بتونه جایگاه اکوسیستم جاوایی رو بگیره.ولی واقعا همین الانم اکو سیستم خوبی داره چرا اینو کسی قبول نمیکنه؟ یکی نیست دات نت 6 به بعد و مخصوصا 8 رو تست کنه :)
به نظرم یکی از دلایل نزول جاوا هم قطعاً رشد کاتلینه.یکی از دلایل نزول جاوا رشد کاتلین نیست!
تمام دلایل نزول جاوا ، وجود کاتلین هستش
از جت برینز عزیز متشکرم که این زبان زیبا رو خلق و با حمایت گوگل سریع وارد کامیونیتی کرد.
شرکت هایی که از جاوا فراری بودن
مردمی که از سینتکس بسیار بد جاوا های قدیمی ( کد بیس های قدیمی ، جاوا های قدیمی) عذاب میکشیدن و ...
سیاست پولی جاوا باعث تمام این مشکلات شد.
پ.ن:
من خودم با جاوا برای چندین پروژه قراردادی و 1 پروژه شرکتی کار کردم. فکر کنم حدود 1.5 سالی کلا با جاوا بودم و این حرف هارو از تعصب نزدم ، چون هرکی پیدا میشه میگه دات نتی تعصبی. :)
حقیقتیه که باید پذیرفت
زبان های سی شارپ ، کاتلین و گولنگ ، زبان های سر زبان هستند ( کلا با جی اس و پایتون و ... کار ندارم که همشون به خودی خود عالین)@Syntax_fa
👍9👎3❤1
مسئله پنجم
سطح: متوسط
توضیح:
ما سه آدرس زیر را داریم:
https://jsonplaceholder.typicode.com/todos/1
https://jsonplaceholder.typicode.com/todos/2
https://jsonplaceholder.typicode.com/todos/3
برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام که زودتر جواب داد. در خروجی response body را نمایش بدهد و بگوید پاسخ مال کدام آدرس است.
اگر بعد از گذشت 3 ثانیه هیچکدام از آدرس ها جواب ندادند. در خروجی Timeout را نمایش بدهد و برنامه متوقف شود.
(نمونه خروجی json رو تلگرام خودش زحمت کشید به پیام اضافش کرد)
(💥جایزه کانفیگ یه ماهه)
#Problems
@Syntax_fa
سطح: متوسط
توضیح:
ما سه آدرس زیر را داریم:
https://jsonplaceholder.typicode.com/todos/1
https://jsonplaceholder.typicode.com/todos/2
https://jsonplaceholder.typicode.com/todos/3
برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام که زودتر جواب داد. در خروجی response body را نمایش بدهد و بگوید پاسخ مال کدام آدرس است.
اگر بعد از گذشت 3 ثانیه هیچکدام از آدرس ها جواب ندادند. در خروجی Timeout را نمایش بدهد و برنامه متوقف شود.
(نمونه خروجی json رو تلگرام خودش زحمت کشید به پیام اضافش کرد)
(💥جایزه کانفیگ یه ماهه)
#Problems
@Syntax_fa
👍6🔥6👎1
Syntax | سینتکس
مسئله پنجم سطح: متوسط توضیح: ما سه آدرس زیر را داریم: https://jsonplaceholder.typicode.com/todos/1 https://jsonplaceholder.typicode.com/todos/2 https://jsonplaceholder.typicode.com/todos/3 برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام…
پاسخ در زبان گو:
با استفاده از قابلیت Select و channel ها میتوانیم چنین مسئله ای رو به سادگی حل کنیم.
#Problems
@Syntax_fa
package main
import (
"io"
"net/http"
"time"
)
func main() {
var result string
todo1 := make(chan string)
todo2 := make(chan string)
todo3 := make(chan string)
go GetRequestResponse(todo1, "https://jsonplaceholder.typicode.com/todos/1")
go GetRequestResponse(todo2, "https://jsonplaceholder.typicode.com/todos/2")
go GetRequestResponse(todo3, "https://jsonplaceholder.typicode.com/todos/3")
select {
case result = <-todo1:
println("todo1")
println(result)
case result = <-todo2:
println(todo2)
println(result)
case result = <-todo3:
println("todo3")
println(result)
case <-time.After(time.Second * 3):
println("Timeout")
}
}
func GetRequestResponse(content chan<- string, url string) {
res, err := http.Get(url)
if err != nil {
panic(err)
}
responseBody, err := io.ReadAll(res.Body)
defer res.Body.Close()
if err != nil {
panic(err)
}
content <- string(responseBody)
}
با استفاده از قابلیت Select و channel ها میتوانیم چنین مسئله ای رو به سادگی حل کنیم.
#Problems
@Syntax_fa
🔥8👍1
Syntax | سینتکس
مسئله پنجم سطح: متوسط توضیح: ما سه آدرس زیر را داریم: https://jsonplaceholder.typicode.com/todos/1 https://jsonplaceholder.typicode.com/todos/2 https://jsonplaceholder.typicode.com/todos/3 برنامه ای بنویسید که همزمان به هر سه آدرس درخواست get بزند و هرکدام…
پاسخ در زبان پایتون:
زمانی که از asyncio استفاده میکنیم باید کتابخانه های ماهم از قابلیت async پشتیبانی کنند به همین دلیل از aiohttp بجای requests استفاده میکنیم.
#Problems
@Syntax_fa
import asyncio
import aiohttp
async def fetch_data(url, session):
async with session.get(url) as response:
return await response.text(), url
async def main():
urls = [
"https://jsonplaceholder.typicode.com/todos/1",
"https://jsonplaceholder.typicode.com/todos/2",
"https://jsonplaceholder.typicode.com/todos/3",
]
async with aiohttp.ClientSession() as session:
tasks = [fetch_data(url, session) for url in urls]
try:
done, _ = await asyncio.wait(tasks, timeout=3, return_when=asyncio.FIRST_COMPLETED)
except asyncio.TimeoutError:
print("Timeout: No response within 3 seconds.")
return
for task in done:
response_body, url = task.result()
print(f"Response from {url}:\n{response_body}")
if __name__ == "__main__":
asyncio.run(main())
زمانی که از asyncio استفاده میکنیم باید کتابخانه های ماهم از قابلیت async پشتیبانی کنند به همین دلیل از aiohttp بجای requests استفاده میکنیم.
#Problems
@Syntax_fa
🔥12👍2
یه سوال جالب بپرسیم از جنگو کارای کانال
این سوال توی stackoverflow مطرح شده.
فرض کنید کلاینتی یک درخواست رو سمت ما میفرسته. جنگو شروع میکنه به پراسس و یه سری کار هارو داره انجام میده.
کلاینت که browser هستش درخواست رو که هنوز پاسخش رو دریافت نکرده و در حال پراسس هستش، کنسل میکنه و یا کلا browser رو میبنده.
سمت جنگو چه اتفاقی میوفته؟
آیا راهی هست که توی جنگو وقتی کاربر کنسل میکنه مطلع بشیم و ما هم ادامه پراسس رو انجام ندیم یا اینکه اون پراسس ها باید پیش بره آیا خود جنگو این قضیه رو هندل میکنه ؟
به این لینک ها سر بزنید:
https://groups.google.com/g/django-users/c/3ksj4Clne4c
https://docs.djangoproject.com/es/1.10/ref/request-response/#streaminghttpresponse-objects
https://stackoverflow.com/questions/39451818/how-does-django-handle-cancelled-or-interrupted-requests
#Problems
@Syntax_fa
این سوال توی stackoverflow مطرح شده.
فرض کنید کلاینتی یک درخواست رو سمت ما میفرسته. جنگو شروع میکنه به پراسس و یه سری کار هارو داره انجام میده.
کلاینت که browser هستش درخواست رو که هنوز پاسخش رو دریافت نکرده و در حال پراسس هستش، کنسل میکنه و یا کلا browser رو میبنده.
سمت جنگو چه اتفاقی میوفته؟
آیا راهی هست که توی جنگو وقتی کاربر کنسل میکنه مطلع بشیم و ما هم ادامه پراسس رو انجام ندیم یا اینکه اون پراسس ها باید پیش بره آیا خود جنگو این قضیه رو هندل میکنه ؟
به این لینک ها سر بزنید:
https://groups.google.com/g/django-users/c/3ksj4Clne4c
https://docs.djangoproject.com/es/1.10/ref/request-response/#streaminghttpresponse-objects
https://stackoverflow.com/questions/39451818/how-does-django-handle-cancelled-or-interrupted-requests
#Problems
@Syntax_fa
😱7👀4👍2
اپلیکیشن گیت هاب برای موبایل
میتونید issues , pull requests و commit و کلی قابلیت دیگه رو مدریت کنید. برای مواقعی که سیستم همراهتون نیست خوبه.
لینک دانلود برای اندروید:
https://play.google.com/store/apps/details?id=com.github.android&pli=1
#Github
@Syntax_fa
میتونید issues , pull requests و commit و کلی قابلیت دیگه رو مدریت کنید. برای مواقعی که سیستم همراهتون نیست خوبه.
لینک دانلود برای اندروید:
https://play.google.com/store/apps/details?id=com.github.android&pli=1
#Github
@Syntax_fa
👍12👎1
حرفهای بنویس! بهینه باش.
‼️ درک #عمیق کارکرد یک سیستم، یک الگوریتم و حتی یک بازی!
👈 کمک بسیار زیادی به بهینه و دقیق نوشتن اون میکنه.
امروز قصد داریم بازی سنگ، کاغذ، قیچی رو بنویسیم 💯
♥️ Source: GitHub
🌀 #Python_Eight
( توضیحات داخل کامنت. )
@Syntax_fa
‼️ درک #عمیق کارکرد یک سیستم، یک الگوریتم و حتی یک بازی!
👈 کمک بسیار زیادی به بهینه و دقیق نوشتن اون میکنه.
امروز قصد داریم بازی سنگ، کاغذ، قیچی رو بنویسیم 💯
♥️ Source: GitHub
🌀 #Python_Eight
( توضیحات داخل کامنت. )
@Syntax_fa
👍15👎5🔥1
مسئله ششم (فیلسوفان حریص)
سطح: سخت
بریم سراغ یکی از معروف ترین مسائل برنامه نویسی
در علوم کامپیوتر مسئله فیلسوفان پشت میز غذاخوری یک مسئله تمثیلی است مربوط به طراحی هم روندی الگوریتم ها، که معمولاً برای نشان دادن مشکلات و تکنیک های همگام سازی و روش حل آن ها استفاده می شود. این مسئله در ابتدا در سال ۱۹۶۵ توسط آقای دیکسترا به عنوان یک تمرین امتحانی دانش آموزی طراحی شد.
بیان مسئله:
پنج فیلسوف ساکت در اطراف یک میز قرار می گیرند. روی میز کاسه های ماکارونی وجود دارد. چنگال هایی مابین هر جفت از فیلسوف های کنار هم قرار داده شده است. هر فیلسوف باید به صورت متناوب فکر کند و بخورد. با این حال، یک فیلسوف فقط زمانی می تواند ماکارونی بخورد که که هر دو چنگال سمت چپ و سمت راست را در اختیار داشته باشد. هر چنگال در هر لحظه فقط می تواند توسط یک فیلسوف استفاده شود و بنابراین، یک فیلسوف فقط زمانی می تواند از چنگال استفاده کند که چنگال توسط فیلسوف دیگر در حال استفاده نباشد. بعد از این که یک فیلسوف خوردنش تمام شد، باید هر دو چنگال را روی میز بگذارد تا بقیه از آن ها استفاده کنند. یک فیلسوف فقط می تواند چنگال سمت راست خود یا چنگال سمت چپ خود را، زمانی که موجود باشد، در اختیار بگیرد و نمیتواند قبل از در اختیار گرفتن هر دو چنگال خوردن را شروع کند. مقدار خوردن ارتباطی به حجم باقیمانده ماکارونی یا فضای معده افراد ندارد؛ به عبارتی، فرض بر این است که مقدار ماکارونی نامحدود است و مقدار خوردن نیز نامحدود است. مسئله این است که چگونه یک نظم رفتاری (الگوریتم همروندی) طراحی کنیم، به گونهای که هیچ فیلسوفی گرسنه نماند؛ یعنی هر کدام بتواند به مدت نامتناهی و متناوباً بخورد و فکر کند. البته با فرض اینکه هیچ فیلسوفی نمیداند که چه زمانی سایر فیلسوفان قصد خوردن یا فکر کردن دارند.
این مسئله با این هدف طراحی شد که چالش های پیشگیری از بن بست را نشان دهد. بن بست یک وضعیتی از سیستم است که در آن هیچ پیشرفتی امکان پذیر نیست.
حتما سرچ کنید و بیشتر در مورد این مسئله بخونید (عکس توی کامنت رو نگاه کنید)
مسئله رو با استفاده از یکی از زبان ها حل کنید و از همه مهم تر بخوبی در مورد مسئله و راه حلتون توضیح بدید.
(جایزه کانفیگ 100 گیگابایتی بدون مدت زمان)
#Problems
@Syntax_fa
سطح: سخت
بریم سراغ یکی از معروف ترین مسائل برنامه نویسی
در علوم کامپیوتر مسئله فیلسوفان پشت میز غذاخوری یک مسئله تمثیلی است مربوط به طراحی هم روندی الگوریتم ها، که معمولاً برای نشان دادن مشکلات و تکنیک های همگام سازی و روش حل آن ها استفاده می شود. این مسئله در ابتدا در سال ۱۹۶۵ توسط آقای دیکسترا به عنوان یک تمرین امتحانی دانش آموزی طراحی شد.
بیان مسئله:
پنج فیلسوف ساکت در اطراف یک میز قرار می گیرند. روی میز کاسه های ماکارونی وجود دارد. چنگال هایی مابین هر جفت از فیلسوف های کنار هم قرار داده شده است. هر فیلسوف باید به صورت متناوب فکر کند و بخورد. با این حال، یک فیلسوف فقط زمانی می تواند ماکارونی بخورد که که هر دو چنگال سمت چپ و سمت راست را در اختیار داشته باشد. هر چنگال در هر لحظه فقط می تواند توسط یک فیلسوف استفاده شود و بنابراین، یک فیلسوف فقط زمانی می تواند از چنگال استفاده کند که چنگال توسط فیلسوف دیگر در حال استفاده نباشد. بعد از این که یک فیلسوف خوردنش تمام شد، باید هر دو چنگال را روی میز بگذارد تا بقیه از آن ها استفاده کنند. یک فیلسوف فقط می تواند چنگال سمت راست خود یا چنگال سمت چپ خود را، زمانی که موجود باشد، در اختیار بگیرد و نمیتواند قبل از در اختیار گرفتن هر دو چنگال خوردن را شروع کند. مقدار خوردن ارتباطی به حجم باقیمانده ماکارونی یا فضای معده افراد ندارد؛ به عبارتی، فرض بر این است که مقدار ماکارونی نامحدود است و مقدار خوردن نیز نامحدود است. مسئله این است که چگونه یک نظم رفتاری (الگوریتم همروندی) طراحی کنیم، به گونهای که هیچ فیلسوفی گرسنه نماند؛ یعنی هر کدام بتواند به مدت نامتناهی و متناوباً بخورد و فکر کند. البته با فرض اینکه هیچ فیلسوفی نمیداند که چه زمانی سایر فیلسوفان قصد خوردن یا فکر کردن دارند.
این مسئله با این هدف طراحی شد که چالش های پیشگیری از بن بست را نشان دهد. بن بست یک وضعیتی از سیستم است که در آن هیچ پیشرفتی امکان پذیر نیست.
حتما سرچ کنید و بیشتر در مورد این مسئله بخونید (عکس توی کامنت رو نگاه کنید)
مسئله رو با استفاده از یکی از زبان ها حل کنید و از همه مهم تر بخوبی در مورد مسئله و راه حلتون توضیح بدید.
(جایزه کانفیگ 100 گیگابایتی بدون مدت زمان)
#Problems
@Syntax_fa
🔥6👍4👎1