uz
Feedback
CodeCrafters

CodeCrafters

Kanalga Telegram’da o‘tish
710
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
خب برید راجب socketify بخونید و بعدا هرکسی گفت پایتون واسه وب ضعیف و کند هستس، جواب دندان شکن بهش بدید در کنارش هم تاسف برای دوستانی که با حرف بقیه در خصوص کند بودن فریمورک‌های پایتون، رفتن سمت گو #موقت

Kubernetes up and running کوبرنتیز یک orchestrator اوپن سورس است که ابتدا توسط گوگل توسعه یافت و معرفی شد. تا سال ۲۰۱۴ یکی از معروف‌ترین ابزارهای open source در مارکت شده بود. کوبرنتیز ثابت کرد که می‌تواند سیستم‌های توزیع‌ شده را در تمام مقیاس‌ها مدیریت کند. از یک کلاستر رزبری‌پای تا یک دیتاسنتر مجهز و حرفه‌ای. در دنیای distributed systems تمامی سرویس‌های ما باید reliable و scaleable باشند. اما این به چه معنی است؟ یک برنامه میکروسرویس را درنظر بگیریم که دارای سرویس‌های مختلفی است. کوبرنتیز وظیفه orchestrate کردن این پروژه را بر عهده گرفته است. ما باید مطمئن باشیم که تمامی درخواست‌های ما در این شبکه بین سرویس‌ها جابجا می‌شود. پس در این بخش نیاز داریم که این شبکه قابل اعتماد(reliable) باشد. اما این به تنهایی کافی نیست, ممکن است بخواهیم این سیستم را گسترس دهیم و به اصطلاح scale کنیم. کوبرنتیز این امکان را نیز برای ما مهیا کرده است. مردم دلایل مختلفی برای استفاده از کوبرنتیز دارند, برای مثال: • Development Velocity • Abstracting your infrastructure • Efficiency • Cloud native ecosystem در این پست می‌خواهیم اهمیت توسعه سریع با کوبرنتیز را مرور کنیم. سال‌ها پیش که نرم‌افزارها روی CD ها ذخیره و به فروش می‌رسیدند, چندان مهم نبود که اپدیت‌ها در چه زمانی ریلیز می‌شوند, اما اکنون که برخی محصولات, به صورت روزانه اپدیت می‌دهند, بسیار مهم است که با کمترین downtime نسخه جدید را برای کاربران عرضه کنیم. کوبرنتیز باعث می‌شود دیپلوی کردن اسان‌تر شود. تصور کنید برای یک دیپلوی ساده, باید یکی از راه های زیر را دنبال کنید: ⁃ وارد کانتینر شوید و کد جدید را pull کنید ⁃ ایمیج را build کنید و کانترنر قدیمی را stop و با ایمیج جدید یک کانتینر بسازید هردوی این کارها باعث میشود که ما downtime زیادی داشته باشیم. حال سناریو زیر را تصور کنید: کوبرنتیز یک instance جدید با کد جدید بسازد و وقتی که مطمئن شدیم که کد درست بالا امده, با اینستنس قبلی جابجا کنیم. جالب نیست؟ بنظر من که خیلی جالبه! یکی دیگر از قابلیت‌های جذاب کوبرنتیز self healing بودن آن است. کوبرنتیز مدام تلاش می‌کند که درصورت بروز هرگونه مشکل, سرویس شما down نشود. برای مثال در گذشته باید افرادی استخدام می‌شدند که هرگاه یک alert دریافت می‌کردند, باید سریعا سرویس را repair می‌کردند, اما الان کوبرنتیز باعث شده که دیگر نیازی به این افراد نداشته باشیم. در این درس ۲ مورد از قابلیت‌های کوبرنتیز را خواندیم. در درس های بعد کم کم به شناخت کوبرنتیز و کامپوننت‌های داخلی آن می‌پردازیم. #kubernetes_up_and_running @Code_Crafters

Kubernetes up and action کوبرنتیز یک orchestrator اوپن سورس است که ابتدا توسط گوگل توسعه یافت و معرفی شد. تا سال ۲۰۱۴ یکی از معروف‌ترین ابزارهای open source در مارکت شده بود. کوبرنتیز ثابت کرد که می‌تواند سیستم‌های توزیع‌ شده را در تمام مقیاس‌ها مدیریت کند. از یک کلاستر رزبری‌پای تا یک دیتاسنتر مجهز و حرفه‌ای. در دنیای distributed systems تمامی سرویس‌های ما باید reliable و scaleable باشند. اما این به چه معنی است؟ یک برنامه میکروسرویس را درنظر بگیریم که دارای سرویس‌های مختلفی است. کوبرنتیز وظیفه orchestrate کردن این پروژه را بر عهده گرفته است. ما باید مطمئن باشیم که تمامی درخواست‌های ما در این شبکه بین سرویس‌ها جابجا می‌شود. پس در این بخش نیاز داریم که این شبکه قابل اعتماد(reliable) باشد. اما این به تنهایی کافی نیست, ممکن است بخواهیم این سیستم را گسترس دهیم و به اصطلاح scale کنیم. کوبرنتیز این امکان را نیز برای ما مهیا کرده است. مردم دلایل مختلفی برای استفاده از کوبرنتیز دارند, برای مثال: • Development Velocity • Abstracting your infrastructure • Efficiency • Cloud native ecosystem در این پست می‌خواهیم اهمیت توسعه سریع با کوبرنتیز را مرور کنیم. سال‌ها پیش که نرم‌افزارها روی CD ها ذخیره و به فروش می‌رسیدند, چندان مهم نبود که اپدیت‌ها در چه زمانی ریلیز می‌شوند, اما اکنون که برخی محصولات, به صورت روزانه اپدیت می‌دهند, بسیار مهم است که با کمترین downtime نسخه جدید را برای کاربران عرضه کنیم. کوبرنتیز باعث می‌شود دیپلوی کردن اسان‌تر شود. تصور کنید برای یک دیپلوی ساده, باید یکی از راه های زیر را دنبال کنید: ⁃ وارد کانتینر شوید و کد جدید را pull کنید ⁃ ایمیج را build کنید و کانترنر قدیمی را stop و با ایمیج جدید یک کانتینر بسازید هردوی این کارها باعث میشود که ما downtime زیادی داشته باشیم. حال سناریو زیر را تصور کنید: کوبرنتیز یک instance جدید با کد جدید بسازد و وقتی که مطمئن شدیم که کد درست بالا امده, با اینستنس قبلی جابجا کنیم. جالب نیست؟ بنظر من که خیلی جالبه! یکی دیگر از قابلیت‌های جذاب کوبرنتیز self healing بودن آن است. کوبرنتیز مدام تلاش می‌کند که درصورت بروز هرگونه مشکل, سرویس شما down نشود. برای مثال در گذشته باید افرادی استخدام می‌شدند که هرگاه یک alert دریافت می‌کردند, باید سریعا سرویس را repair می‌کردند, اما الان کوبرنتیز باعث شده که دیگر نیازی به این افراد نداشته باشیم. در این درس ۲ مورد از قابلیت‌های کوبرنتیز را خواندیم. درس درس های بعد کم کم به شناخت کوبرنتیز و کامپوننت‌های داخلی آن می‌پردازیم. #kubernetes_up_and_running @Code_Crafters

+1
دوچرخه و پارک ملت آرنجم یکم اذیتم میکنه و دوچرخه رو هم باید ببرم سرویس کنن (ولی در کل دوتامون بهتریم و دوباره شروع کردیم، جاهای نرفته رو رفتن)

اصول مهندسی نرم افزار ساخت، ترکیب، اجرا، پایداری
همراه با مثال پایتون
@Code_Crafters

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

#موزیک

در ادامه کتاب «طراحی برنامه‌های داده محور» در بخش race conditions کتاب یک الگوی دیگری برای رفع شرایط مسابقه رو هم بررسی میکنه (two-phace locking) یا به اختصار 2PL که البته این رویکرد منسوخ شده اما منتها جهت درک بهتره دو سطح serializable در snapshot کمک کننده هستش 2PL رویکرد با قفل کردن در دیتابیس عمل میکنه، این الگو بشدت بدبین هستش و هر وقت صورت بگیره دوتا قفل انجام میده بک قفل اشتراکی برای خوندن و بک قفل انحصاری برای نوشتن و تراکنش‌ها رو در صف انتظار قرار میده تا زمانیکه قفل باز بشه (در صورت نیاز کل دیتابیس رو یکجا و به یک صورت قفل میکنه)، موجب کندی و تاخیر شدید در پاسخ به کوئری‌ها میشه و دیتابیس رو از هرگونه عملی محروم میکنه تا کوئری فعال کننده قفل تموم بشه و دیتابیس رو آزاد کنه، تصور کنید که select for update رو روی کل موجودیت دیتابیس اجرا کردید، اما تمام شرایط مسابقه رو هندل میکنه کامل (phamtom read, lost update, write skew, dirty data)، این رویکرد هم کوئری‌ها رو بصورت سریالی انجام میده (انگار که چند کوئری بزرگ و طولانی پشت سرهم اجرا شدن) snapshot isolation در رویکرد سطح ایزوله با repeatable read و فعال کردن اون (در اجرای هر کوئری یه تصویر ثابت در ابتدا به کوئری میدیم) ما مشکل phamtom read رو بر طرف میکنیم منتها با مشکل write skew روبرو بودیم، اگه در بدنه atomic بیایم از select for update استفاده کنیم مشکل write skew برطرف میشه منتها مشکل اساسی تر این هستش که تعارض رو فقط برای ردیف اعلام شده بر روی اون انجام میده نه کل دیتابیس و تداخل داده در ردیف‌هایی که قفل روی اون‌ها صورت نگرفته شکل میگیره و write skew همچنان پابرجا هستش serializable snapshot isolation یا به اختصار SSI بهش میگیم، رویکرد خوشبینانه در برخورد با اتفاقات داره، دیتابیس رو قفل نمیکنه بلکه یک تصویر ثابت به کوئری میده و مابقی کوئری‌های دیگه اگه خوندن باشن رو باز میزاره جهت اجرا و کوئری‌های نوشتن رو چک میکنه با روش (conflict detection) اگه تداخل باشه لغو و roll back میزنه و در غیر این صورت اجرا میشه، کوئری‌ها رو به شکل سریالی اجرا میکنه و هیچ قفلی روی دیتابیس نمیزاره تو حالت partitioning به خوبی کار میکنه و مناسب کوئری‌های سبک و پرفورمنس عالی برای اونها داره (پرفورمنس بشدت وابسته به رفتار مهندسی نرم افزار در پروژه می باشد) جالبه که در برخورد با conflict detection سخت برخورد نمیکنه (با استفاده از MVCC در پستگرس) تراکنش‌هارو در حد نیاز و کم بررسی میکنه و این عامل پرفورمنس داخلش هستش یه نکته جالب هم بگم سریالی برخورد کردن با داده خودش یه مفهوم بزرگی هستش که کمک میکنه تا داده رو در یک ترد و یک پردازنده عملیات روش انجا بدیم ایده اصلی redis از این مفهوم و برپایه اون استوار هستش @code_crafters

در ادامه کتاب «طراحی برنامه‌های داده محور» و موضوع race conditions ها که بالاتر گفتیم دو رویکرد عمده دیگه در داخل دیتابیس‌ها هستش که داخل کتاب مطرح شده read commit این رویکرد به ما میگه که باید آخرین تغییرات ثبت شده رو بخونیم و اطمینان از این بابت انجام بدیم که dirty read ها خونده نمیشن در پاسخ به کوئری ها، در پستگرس این رویکرد بصورت پیش فرض فعال هستش و کار میکنه یعنی خود پستگرس این اطمینان رو بهمون میده تغییرات ثبت شده نهایی رو بهمون برمیگردونه (داخل جنگو وقتی commit=False میزنی در واقع dirty read تولید کردی و اگه خوندنی از دیتابیس در اون لحظه صورت بگیره پستگرس خروجی رو شامل این نمیکنه) اما تو این سطح از کار (read commit اطمینان میده بهمون که dirty read نداشته باشیم) ما یه مشکل داریم اونم (phantom read) non repeatable read ها هستش، یعنی اگه در لحظه خوندن کامیت ثبت شده یک کوئری هم ثبت بشه متاسفانه خروجی شما شامل این تغییرات این کوئری نمیشه اصلا snapshot isolation در این سطح در هر کوئری در لحظه اجرا یک تصویر ثابت از دیتابیس بهش میدیم بابت جلوگیری از مسئله بالا (phantom read) ما سراغ snapshot و ارتقا سطح serializable level در دیتابیس میریم و با فعال کردن repeatable read میایم و مانع این موضوع phantom read میشیم، تو حالت snapshot ما تضمین میکنیم در طول انجام عملیات‌های زمانبر مانند olap کوئری‌ها از یک تصویر از یک سطح دیتابیس بخونن و تا زمان اتمام این حالت باقی بمونه برامون و اگه ناهماهنگی در سطح رکورد ببینه با استفاده از مکانیسم rollback مانع خطا در خروجی میشه، اما این سطح از ایزوله سازی نمیتونه مانع write skew (تو آپدیت های بعدی در کوئری‌های بعدی ممکنه تصویر ما حاوی تغییراتی شده باشه) بشه بابت همین باید سطح ایزوله کردن رو بالا ببریم serializable isolation در این سطح از دیتابیس یک تصویر ثابت از دیتابیس به همه کوئری‌ها میدیم در مشکل بالاتر که گفتیم write skew ما سطح serializable level رو می‌زاریم روی serializable و این بالاترین سطح ایزوله کردن در دیتابیس هستش و مانع این نوع race condition و مابقی خطاهای دیگه در طول این پست میشه (همه رو برامون هندل میکنه-phantom,write,commit,lost update-) تضمین میکنه در یک olap طولانی یک تصویر کامل از دیتابیس داشته باشیم حتی اگر هر چقدر هم زمان کوئری‌ها طول بکشه، تصور کنید دوتا کوئری سنگین زمانبر داریم و ممکنه در مابین این دو کوئری یک write بخواد صورت بگیره اینجا پستگرس با استفاده از مکانیسم conflict detection تشخیص میده تعارض در داده‌های ما بین دو کوئری هستش و rollback میزنه و اطمینان میده که تصاویر یکسانی برای هردو کوئری هست تا خروجی یکسان باشه و بصورت سریالی پشت سرهم (هیچ کویری دیگری بین این دوتا) صورت نگرفته @code_crafters

تو ادامه خوندن کتاب «طراحی برنامه‌های داده محور» به بحث race conditions رسیدم و دو نوع اون رو مطرح کرد (skew, phantom) بحث جایی شدت میگیره که بخوایم از طراحی سیستم‌های توزیع شده استفاده کنیم (بصورت partitioningو node شده) در بحث skew دو نوع متفاوت داریم clock skew: بطور صریح اون رو مشکلات همزمانی صدا می‌زنیم، تصور کنید که چند نود دیتابیس ما در چند منطقه زمانی مختلف قرار دارن (یا به هر دلیل دیگه زمان بندیشون یکسان و هماهنگ نیست بین nodeها) تصور کنید تایم پزشک برای ساعت ۱۰:۳۰ رو میخوایم رزرو کنیم نود اول ساعت ده میخواد رزرو کنه (تایم داخلی سیستمش ساعت ۱۰ هستس) نود دوم در همون موقع میخواد رزو کنه (تایم داخلی سیستمش ساعت ۱۰ و یک ثانیه هستش) هردو تراکنش انجام میشه بابت ناهماهنگی زمانی و رزرو ساعت ۱۰:۳۰ دقیقه دوتا مشتری داره data skew: بطور صریح نابرابری توزیع بهش میگیم، جایی رخ میده که ما دو شیفت برای رزرو داریم و هر شیفت روی پارتیشن جداگانه (یک و دو) ذخیره میشه شیفت اول مشتری بیشتری داره نسبت به شیفت دوم بابت همین تراکنش‌های شیفت اول با کندی بیشتر و سنگینی روبرو میشه در بحث phantoms هم زمان روی داد phantom read ، write skew رخ میده نود اول دفعه اول چک‌ میکنه و موقع چک دوم میبینه یکسری دیتا دیگه اضافه یا حذف شدن در این بازه و محاسبات (مقادیر موجودیت‌ها تغییر کرده در این بازه) نود اول چک می‌کنه میبینه رزرو خالیه و موجود، جواب رو برمیگردونه و تو این بازه تصمیم گیری نود دوم میاد میبینه رزرو خالی هستش و رزرو رو ثبت میکنه، نود اول برمیگرده و میبینه تو همین بازه کم رزرو خالی نیست (این رو تو سایتهای پرداخت سهمیه‌ها بشدت میبینیم که معمولا با برگشت پول و تراکنش به مبدا صورت میگیره و هندلش میکنن) نحوه مقابله و هندل کردنشون چجوریه بیایم از select for update یا redis تو پروژه ازش استفاده کنیم @code_crafters

رییس جمهور گفته برنامه هسته‌ای خود را با تمام قدرت ادامه میدیم آقای پزشکیان از برنامه هسته‌ای فقط تحریم‌هاش باقی مونده #موقت #طنز

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

بچه‌ها دستم خورد با اکانت ادمین گروه رو پاک کردم راهی واسه برگردوندنش هست؟؟؟

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

فردو فرو ریخت گویا بمب افکن‌ معروف به شبح بدون اینکه کسی متوجه بشه ، قلب هسته‌ای ایران رو نابود کرد #موقت

داشتم کتاب «طراحی برنامه‌های داده محور» رو میخوندم کتابش بشدت سنگین و پر از مفاهیم و مسائل سنگین و پیچیده هستش ولی ایده‌ها و موضوعات جالبی داخلش مطرح هستش یجای کتاب بحث راجب داده‌های کلید/مقدار هستش و یک موضوع جالبی مطرح کرد با این عنوان که شما اگه در کلیدی که درست می‌کنید (مثلا ۳۲ کاراکتر) اگه یکمقدار یکتا داشته باشید براتون کافیه تا بعدا هرجا خواستید با اون کلید کار کنید فقط مقدار یکتای اون رو صدا بزنید و داشته باشید وقتی بهش فکر کردم دیدم همین رو تو پلتفرم‌های روزمرگی مورد استفاده خودمون هم دیدم (لاگ مربوط به گیت که فقط کافیه چند کاراکتر اولش رو بدونی، id مربوط به موجودیت‌های داخل داکر که بازم کافیه چند مقدار اولش رو بدونی، هم لاگ گیت و هم id موجودیت‌های داکر یک رشته حداقل ۶۴ کاراکتری هستند) این مقدار یکتا منجر میشه که هم سرعت کارمون بیشتر بشه هم کار کردن باهاش راحتتر باشه (واسه خودمون و سیستم) یادمه یبار یکی از بچه‌ها یکی از مشکلاتی که داشتند تو سیستمشون و راجبش باهم صحبت کردیم این بود که کلید ۶۴ کاراکتری رو داخل ردیس ذخیره کرده بودن که از طریق اون به یکسری اطلاعات برسند که مورد استفاده در کل سیستم بود، و خب جستجوی یک مقدار ۶۴ کاراکتری در بین هزارتا کلید با یک مقدار یکتای ۷ کاراکتری خیلی متفاوت هستش حتی همین ایده کثیف هم برای توکن‌های بزرگ احراز هویت بشدت کاربردی هستش و کار رو برامون راحت تر میکنه، انگار که یک پوینتر مستقیم به اون توکن داریم همیشه و فرقی نمیکنه این توکن در ردیس باشه یا در دیتابیس یا هرجایی دیگه، پوینتر ما همیشه برامون مستقیم به اون توکن اشاره میکنه بحث جایی جذاب میشه که شما با این پوینتر حتی میتونید کارهای خلاقانه و کثیفی انجام بدید مثه چی؟؟؟ تصور کنید که برنامه شما از لحاظ امنیتی حساس هستش و میخواید فقط در یک لحظه یک حساب کاربری در یک دستگاه هویتش مشخص باشه و ورود کرده باشه، شما دیگه لازم نیست بیاید یک جدول بسازید و کلی منطق بنویسید که این رو مدیریت کرده باشید، کافیه که یک الگوی یکسان برای تولید پوینتر داشته باشید که به راحتی از طریق اون بتونید این موضوع رو مدیریت کنید و تمام @code_crafters

vless://589b8628-44e4-474c-9f16-4be7159b9800@91.99.149.127:46650?security=reality&encryption=none&pbk=4PpeKl3SfZISMkrtpJyVGKTZLIAsYcd9uGuWRi-pTE4&fp=chrome&type=grpc&sni=www.debian.org&sid=d5379dac5626e5#ConfigsCenter سامانتل

یکی از بچه‌ها براتون کانفیگ رایگان گذاشته تو این شرایط

ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp4VWc0ekNPR0RKZjFGakpCcUNNWHd2@uerdtestsshhmjatawv0zi1wb2x5mtmwntphquttuerd.asdir.link:8243/#🇺🇸 ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTozbERDT0kxV0NacllreTd0WnhITU1y@candyk47gpqlam68weugermacx30cand.asdir.link:8243/#🇨🇦 ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp5MzJxQ3N5VWtSaXRYS29PM1BqNXhV@irlaq84gplzw75acmirlan.asdir.link:8243/#🇮🇪

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