333
Subscribers
No data24 hours
+27 days
No data30 days
Data loading in progress...
Attracting Subscribers
May '26
May '26
+2
in 1 channels
April '26
+2
in 0 channels
Get PRO
March '26
+2
in 0 channels
Get PRO
February '26
+35
in 3 channels
Get PRO
January '26
+9
in 0 channels
Get PRO
December '25
+33
in 1 channels
Get PRO
November '25
+22
in 0 channels
Get PRO
October '25
+33
in 2 channels
Get PRO
September '25
+8
in 1 channels
Get PRO
August '25
+30
in 0 channels
Get PRO
July '25
+46
in 2 channels
Get PRO
June '25
+65
in 0 channels
Get PRO
May '250
in 1 channels
Get PRO
April '25
+52
in 0 channels
Get PRO
March '250
in 0 channels
Get PRO
February '25
+97
in 1 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 16 May | 0 | |||
| 15 May | 0 | |||
| 14 May | 0 | |||
| 13 May | 0 | |||
| 12 May | 0 | |||
| 11 May | 0 | |||
| 10 May | 0 | |||
| 09 May | 0 | |||
| 08 May | 0 | |||
| 07 May | +2 | |||
| 06 May | 0 | |||
| 05 May | 0 | |||
| 04 May | 0 | |||
| 03 May | 0 | |||
| 02 May | 0 | |||
| 01 May | 0 |
Channel Posts
این تصویر خیلی راحت داره نشون میده وقتی ما یه برنامه رو اجرا میکنیم دقیقا چی توی رم ، کجا و چطوری ذخیره میشه!💾
از پایین ترین سطح یعنی Code شروع میکنیم:
تو این بخش تمام دستور ها و اصلاحا Instruction ها ذخیره میشه.منظور از دستور همون کد ها هستش. منتها نه کدی که شما نوشتی بلکه کدی که کامپایلر کامپایل کرده و رسوندتش به ماشین کد!!📝
سطح بعدی یا همون Static/Global سطحی هستش که متغیر ها،ثابت ها، اشیاء و... که توی سطح برنامه به طور گلوبال قابل دسترسی هستن ذخیره میشه.
و اما مهم ترین سطح یعنی Stack این بخش خیلی تو سطح برنامه مهمه!
توی این بخش فانکشن ها و اجزاشون ذخیره میشن. هر فانکشن یه فضای شخصی برای خودش توی استک داره به نام Stack frame.
هر فانکشن به محض کال شدن یه استک فریم توی استک میسازه و پارامتر های ورودی،متغیر ها و... خودش رو اونجا ذخیره میکنه.
هر وقت هم کار فانکشن تموم میشه استک فریمش از تو استک حذف و خالی میشه.🗂
بخش heap وقتی استفاده میشه که برنامه نیاز به حافظه بیشتر داره.فرقش با استک اینه که خودکار مدیریت نمیشه و باید خودت ازادش کنی،حجم داینامیکی داره و فضای بیشتر!
@Univerbity
| 2 | اگه چیزی از نحوه تبدیل آدرس ها ندونید با خوندن این صفحه قطعا گیج تر میشید(چون خودم شدم).🤨
بیا من خیلی راحت بهت بگم.
فرض یه برنامه داری (code.c) و کامپایلش میکنی.
حالا کامپایلر میاد و برای هر چی تو کدت هست مثل متغیر ها و... یه آدرس منطقی تعیین میکنه و کدت به طور کامل به ماشین کد تبدیل میشه و میریزه تو (program.out).0⃣1⃣
وقتی program.out رو اجرا میکنی سیستم عامل میاد و برنامه رو یه جایی از حافظه لود میکنه مثلا شروع برنامه از ادرس 500 هستش(ادرس فیزیکال). فرض رو بر این بگیریم که یه متغیر تو کدمون داشتیم و کامپایلر ادرس 50 رو بهش داده بوده این آدرس منطقیه و باید تبدیل بشه به آدرس فیزیکی!! پس:
Phisical = base + logical
ادرس فیزیکی اون متغیر میشه 550!
ادرسی که کامپایلر تولید میکنه ادرس منطقی و ادرسی که رم باهاش کار میکنه ادرس فیزیکی هستش.
اما این روش برای سیستم عامل های قدیمی بود. الان سخت افزاری به نام MMU(Memory managment unit) وجود داره که با استفاده از Virtual address space , mapping و Page table این کارو انجام میده.🔁
@Univerbity | 394 |
| 3 | یه چت خیلی ساده درست کردم واسه وقتی که اینترنت رو قطع میکنن.
خیلی سادست فقط برای اینکه وقتی زدن و اینا کلا ارتباطو قطع کردن(مثل این سری حتی sms هم نمیشد داد) حدقل بتونیم به هم اطلاع بدیم زنده ایم یا مرده :)🖤
هیچ قابلیت خاصی نداره و کلا یه روم همگانی هستش(این چند وقت خیلی حال و حوصله کد نوشتن نداشتم)
از اونجایی که فرانت هیچی بلد نیستم دست و پا شکسته و با کمک هوش مصنوعی یه ظاهر کار راه انداز نوشتم.
قابلیت هاش:
- نیازی به احراز هویت نیست و همچی ناشناسه
- پیام ها جایی به طور دائمی سیو نمیشه
- رایگانه و زیر نظر هیچ سازمانی نیست(حریم شخصی)
اگر فرانت بلدید و یا دوست دارید تو هر بخش از این پروژه اپن سورس مشارکت کنید خوشحال میشم بهم پیام بدید :)🤝
(راه اندازیش خیلی راحته چون داکرایزش کردم ولی توی ریدمی گتیهاب هست.اگر چیزی نا مفهوم بود و یا نیاز به توضیح اضافه بود اینجا پیام بدید یا issue باز کنید)
#به_امید_آزادی 🕊
@Univerbity | 510 |
| 4 | قرار شد درباره رینگ های CPU صحبت کنیم 💫
رینگ های سی پی یو یا Privilege rings یه مکانیزم امنیتی توی cpu هستش که مشخص میکنه کد ها با چه سطح از دسترسی اجرا بشن.
اصلا ایده اصلیش اینه که همه برنامه ها نباید به همه چیز دسترسی داشته باشن.
مثلا یه برنامه کاربری(User space) نباید بره به رجیستر های سخت افزاری دست بزنه یا حافظه کرنل رو تغییر بده.💥
رینگ ها چند تا هستن که اصلی ترینشون همون رینگ های 0 و 3 هستند که به ترتیب مختص برنامه های کرنل و userspace هستن.
@Univerbity | 656 |
| 5 | قبلا درباره کرنل پنیک زیاد نوشتم ولی یه سوال بامزه دارم!🙂
چرا Kernel panic داریم ولی User space panic نه؟ 🤪
شوخی کردم ولی جدی چرا کرنل پنیک میکنه ولی user space نه؟
خب جوابش خیلی مشخصه برای جواب دادن بهش یکم باید عمیق بشیم:
اول از همه CPU چند تا رینگ داره. تو رینگ 0 کرنل اجرا میشه و تو رینگ 3 هم user space (تو پست بعدی مفصل رینگ های cpu رو توضیح میدم).
حالا اگر یه برنامه user space خراب کنه یه جایی فقط پراسس خودش میمیره و بقیه سیستم ادامه میدن ولی اگر کرنل خراب کنه کل سیستم میره زیر سوال.❌
یا حتی اگه یه برنامه عادی به آدرس اشتباهی دست بزنه cpu یه وقفه یا exception میزنه و خلاص (segment fault یا page fault و...) ولی اگه کرنل همین اشتباه رو بکنه مدیریت مموری،زمانبند ها،درایور ها،هندل کننده های وقفه و ... همه به فنا میرن و دیگه هیچ لایه پایین تری نیست که نجاتش بده(البته بسته به دیدتون میتونه لایه بالاتر باشه🤷♂)
چرا خب recover نمیکنه؟ چون کرنل مرجع نهاییه و اگه مثال user space یه جایی خراب کنه کرنل میتونه isolate اش کنه ولی اگه خود کرنل خراب شه کی isolate اش کنه؟🥲
@Univerbity | 796 |
| 6 | این چند روز درگیر درایور گرافیک سیستمم بودم و به یه چیز جالب بر خوردم. 🪐
بعد از نصب درایور دیدم اصن سیستم تصویر نمیده :/
بعد از کلی ور رفتن متوجه شدم که باید به صورت دستی لود شدن ماژول های مربوط رو تو فایلشون قرار بدم:
sudo nano /etc/mkinitcpio.conf
باید پارامتر MODULES رو مقدار دهی میکردم:
MODULES=(radeon amdgpu)
بعد از اینکه فایلو ریرایت کردم و یه sudo mkinitcpio -P زدم و ریبوت کردم دیدم بازم تصویر نمیده و نکته اصلی اینجا بود!!
همونطور که میبینید من ماژول radeon رو اول نوشتم و بعد amdgpu و مهندسی لینوکس اینجوریه که میاد ماژول ها رو بر اساس ترتیبی که تو فایل کانفیگ نوشتی لود میکنه و وقتی radeon لود میشد اصطلاحا کارت گرافیک رو claim میکرد و اجازه لود شدن رو به amdgpu نمیداد چون کارت گرافیک دست خودش بود و ماژول amdgpu نمیتونست لود بشه! (با بررسی لاگ ها فهمیدم):
dmesg | grep amdgpu
درایور radeon قدیمه و الان amdgpu جاشو گرفته و احتمالا باگی چیزی داشته یا ساپورت نمیشه دیگه که به من تصویر نداده و وقتی amdgpu رو الویت اول گذاشتم درست شد!🐧
@Univerbity | 659 |
| 7 | اکسل داره تبدیل میشه به یه زبان برنامه نویسی😐
جدی میگم.
عملا کار هایی که با زبان های معمولی میشه کرد رو با اکسل هم میشه کرد.
چند تا نمونه پروژه عملی مثل یه CPU با معماری 16 بیتی ، موتور گرافیکی و رندر کننده و بازی Doom هستش که خیلی سر و صدا کردن تو اینترنت و همشون هم رو گیتهاب هستن یه سرچ بزنید میبینید.
البته تمام این پروژه ها بدون اسکریپت های VB هستش ها!
جدیدا هم مایکروسافت lambda(فانکشن های ناشناس) رو اضافه کرده که کم کم داره اکسل رو به یه زبان برنامه نویسی تبدیل میکنه.
@Univerbity | 685 |
| 8 | قطعی اینترنت باعث شد بیشتر کتاب بخونم و واسه یادگیری دنبال منابع آفلاین بگردم و خب چی بهتر از کتاب(قبلا خیلی کتاب خون بودم🙂)
داشتم متد های قدیمی مموری منیجینگ رو میخوندم که به یکی از ابتدایی ترین روش های مدیریت حافظه رسیدم به نام تک برنامگی ساده(SSPMM) که طرز کارش خیلی ساده و بامزه بود.
اینجوری که در هر لحظه یک برنامه در حال اجرا باشه و هنگامی که برنامه میاد تو مموری کل مموری رو در اختیار میگیره. اگرم که حافظه کافی نباشه کلا برنامه اجرا نمیشه :/
این متود دو تا حالت داره ینی وجه کاربر و وجه ممتاز که سیستم عامل میره تو وجه ممتاز و برنامه هم میره تو وجه کاربر. مثلا فرض کنید سیستم1 مگابایت مموری داره.
فرض بگیر حدود 370 کیلوبایت رم برای سیستم عامل میره و 640 کیلوبایت هم فرض میگیرم خالی میمونه. اینجوری اون برنامه میره تو اون 640 کیلوبایت و ادرس های تولید شده هم نمیتونن بیشتر از N باشن(تو عکس میبینید).
مقدار این N هم که محدودیت حافظه هستش تو یه رجیستر به نام limit regiater تو CPU ذخیره میشه که بیشتر نشه.(اگر ادرس تولید شده بزرگتر از N بود یه وقفه(interupt) از نوع program fault رخ میده.💥
@Univerbity | 707 |
| 9 | خیلی با خودم کلنجار رفتم که چیزی بذارم یا نه ولی تمام امیدم به دیشب بود که خب نزدن و نا امید شدم و دیگم دلیلی برای پست گذاشتن نیست.
بعد از تقریبا ۳ هفته قطعی مطلق اینترنت خواستم دو تا راه کار بدم واسه اینجور مواقع(از اونجایی تقی به توقی میخوره اینترنتو قطع میکنن قطع میکنن).
وقتایی که اینترنت قطع میشه و ملی میشه(البته که از لحاظ فنی اینترنت ملی نمیشه و بهتره برای توصیف این آشغالی که دستمون میدن کلمه شبکه داخلی رو بذاریم روش) نصب پکیج هم برای سیستم های لینوکسی امکان پذیر نیست.
اینجا شما میتونید روی هر توزیعی از لینوکس که هستید mirror هاتون رو ست کنید روی میرور سرور های داخلی مثل چیزی که arvancloud داره ارائه میده.
برای مثال برای آرچ:
$~ nano /etc/pacman.d/mirrorlist
داخلش url میرور رو اضافه میکنید:
Server = https://mirror.arvancloud.ir/archlinux/$repo/os/$arch
و بعدشم:
sudo pacman -Syyu
اینجوریه که به جای اینکه پکیج ها از ریپوزیتوری های رسمی pacman دانلود بشه از میرور سرور های آروان کلاد دانلود میشه.
❌ و البته که معایبی هم داره این کار مثل:
- بروز نبودن بعضی پکیج ها(برای پکیج هایی مثل دیسکورد که اگه آخرین ورژن نباشن اصلا باز نمیشن. البته یادم نبود تو اینترنت قطع دیسکورد به چه کار میاد)
- نداشتن بعضی پکیج ها (مثلا من تست کردم uvicorn رو نداشت)
تو قطعی اینترنت طبیعتا pip هم کار نمیکنه(برای پایتون) ولی با انجام متد بالا که گفتم نصب ماژول های پایتونی با فرمت python3-name (به جای name اسم کتابخانه یا ماژول) امکان پذیر میشه.
مثال:
sudo pacman -S python3-fastapi
❌این روش هم طبیعتا معایبی داره مثل:
- بروز نبودن خیلی از ماژول ها و کتابخونه ها
- نصب مستقیم روی پایتون اصلی سیستم(روی venv ها اعمال نمیشه).
اینا مواردیه که شاید خیلیا ندونن و تو قطعی اینترنت خیلی به کارشون بیاد و البته که امیدوارم در آینده قطعی اینترنت و کسانی که قطعش میکنن در کار نباشن :)
#به_امید_آزادی ✌️🕊 | 662 |
| 10 | این عکسو احتمالا دیده باشید.
با خودتون شاید فکر کردید که طراح های مایکروسافت ریدن ولی اینطور نیست.
این طراحی نوک کج کرسر ها به ویندوز ختم نمیشه بلکه خیلی خیلی قدیمیه و الان تو همه محیط گرافیکی های لینوکسی و سیستم عامل ها وجودداره.🖱
این یه استاندارد قدیمی از زمان Xerox PARC و مک ها قدیمی هستش که چند تا دلیل داره.
مهمترین دلیلش بر میگرده به مغز انسان.مغز ما جهت های مورب رو سریع تر تشخیص میده و فلش نوک کج کمک میکنه حرکت موس رو بهتر حس کنی.
از طرفی نوک فلش دقیقا همون نقطه فعاله چون کجه وقتی رو متن کلیک میری نوکش دقیق تر میوفته رو هدف و خود فلش مزاحم دیدت نمیشه.
البته چند بار هم سعی کردن که درستش کن منتها چون کاربرا عادت کرده بودن شکست خورد🤷♂
@Univerbity | 580 |
| 11 | قبلا یه پست درباره رنگ آبی توی LED ها گذاشتم و یکی از بچه ها گفت که ای کاش توضیح بیشتر میدادی. دیروز خیلی اتفاقی یه شورت ویدیو تو یوتوب دیدم که کلی اطلاعات بهم داد.😄
به طور کلی LED ها با عملی به نام رقص الکترون ها(Electron Dance) کار میکنن.
وقتی به الکترون ها انرژی وارد میکنیم وارد یه حالت پرشی میشن.اما خب این پرش خیلی طول نمیکشه و زود میوفتن پایین(به اصطلاح سقوط یا Fall back down میشن).⬇️
(من بهش میگم FBD!)
این fbd شدن موجب تولید نور و گرما میشه و میزان این ارتفاع پرش، رنگ تولید شده رو تعیین میکنه. هر چی ارتفاع کم تر باشه انرژی کمتری مصرف میشه و رنگ میره به سمت قرمز و برای تولید رنگ آبی باید این ارتفاع خیلی زیاد باشه و طبیعتا انرژی بیشتری هم میخاد.⚡️
چالش اصلی پیدا کردن ماده ایه بتونه برای این پرش عظیم انرژی تولید کنه.این قضیه تا دهه 90 میلادی طول کشید تا بلخره عنصری به نام Gallium Nitride پیدا شدرکه میتونست این کارو بکنه.🌈
تو کامنتا چن تا چیز باحال ازش میذارم:)
@Univerbity | 463 |
| 12 | برای ثبت نام میتونید از کد تخفیف %20 زیر استفاده کنید :)
ظرفیت کد تخفیف 5 نفره! | 143 |
| 13 | دومین رویداد GIT در CS12
روز پنجشنبه ۱۱ دی ماه ساعت ۲۰:۰۰ تا ۲۲:۰۰ به صورت آنلاین در ایوند برگزار میشه.
لینک جلسه برای ثبت نام کنندگان توسط ایوند ارسال میشه.
ظرفیت فقط ۵۰ نفر هست!
همین حالا ثبت نام کنید!
🖥 Join - [CS12] | 105 |
| 14 | یه مدت کوتاهی نبودم درگیر یه سری قضایا بودم ولی یه چیز باحال پیدا کردم گفتم براتون بذارم اینجا :)
توی سیستم های مختلف حالا چه تو پروتکل های شبکه یا حتی سیستم عامل ها یه خطایی داریم به نام parity error که با پارامتر parity bit تشخیص داده میشه.🤖
کامپیوتر برای اینکه بفهمه دیتا سالم رسیدهرمیاد یه بیت به اخر دیتا اضافه میکنه. این بیت کمک میکنه تا بشه فهمید تعداد بیت های 1 تو کل دیتا زوجه یا فرد (حالا بسته به معماری)
اگه دیتا بعد از رسیدن تعداد بیت های 1 با چیزی که باید نخونه این خطا رخ میده و مبنی بر خرابی یا دستکاری دیتا هستش!👾
@Univerbity | 389 |
| 15 | اگه بخوای به یه نفر زور بگی اون فرد باید چه خصوصیتی داشته باشه تا بهش زور بگی؟ خب طبیعتا انتخابت یه آدم nice و قطعا نمیخای بری به یه ادم خشن و گولاخ زور بگی(چون میزنه میترکونتت دیگه)😁
لینوکس هم رفتارش با پراسس ها دقیقا همینجوریه و در واقع الویت بندی پروسه ها رو با ملاکی به نام Niceness (مهربون بودن یا نایس بودن یا هر چی که خودتون ترجمه میکنید) انجام میده.
اینجوریه که هر پروسه زمان ساخته شدن یه مقدار نایسنس بهش اختصاص داده میشه که یه عدد بین 19 و -20 هستش. هر چی این مقدار کمتر باشه یعنی پروسه بی اعصاب تره (از لحاظ فنی یعنی اهمیت بالایی داره و خیلی مهمه) و هر چیم بیشتر باشه ینی نایس تره و خیلی برای سیستم حیاتی نیست.
بخش زور گوییش اینجاست که وقتی سیستم داره مموری یا CPU کم میاره این وظیفه سیستم عامله که با پارامتررنایسنس تشخصی بده کی تو اولیته تا بهش منابع رو اختصاص بده! 👊
بقیه پروسه ها که نایسنس بیشتری دارن میتونن swap بشن یا برای cpu بیشتر صبر کنن ولی پروسه هایی که نایسنس کمتری دارن همیشه تو الویتن و باید سریع بهشون سی پی یو و مموری واقعی برسه!
دنیا لینوکس نیست، یکم نایس تر باش :)
@Univerbity | 832 |
| 16 | ابزار less برای پیجینگ فایل های متنی تو سیستم های یونیکسی و لینوکسی هستش اما نمیخام این ابزارو معرفی کنم بلکه میخوام دلیل نام گذاری این ابزار و یه شوخی بامزه ای که با یه ابزار دیگه کرده بگم.
تو دوره سیستم عامل Dos یه ابزاری رو داس وجود داشته به نام more که کارش همین پیجینگ بوده. البته این ابزار الان رو لینوکسم هست.
لس هم اسمش رو مخالف more نام گذاشت و شد less :)
یه شعار و شوخی بامزه ای هم کرد با more که شعارش این بود:
less is more than more
"لس بیشتر از موره" یا "کم بیشتر از بیشتره" یا هر چی که خودتون ترجمه میکنید 😁
پ.ن: عکس مرتبط پیدا نکردم از پینترست همینجوری یه چیزی برداشتم :)
@Univerbity | 628 |
| 17 | به یه چیز خیلی بامزه برخوردم 😀
توی مانیتور ها و نمایشگر ها ما کلی LED داریم دیگه و این ال ای دی ها فقط میتونن رنگ هاشون رو از ترکیب سیستم رنگ RGB بسازن.🖥
اگه نمیدونید R:red G:green B:blue
ینی کلا سه تا رنگ داریم اما بین این سه تا رنگ یکیشون خیلی سخت ساخته میشه!🔵🟢🔴
رنگ آبی برای تولید شدن نیاز به طول موج کوتاه تر و انرژی بیشتر هستش.یعنی حدود 450 نانومتر انرژی بیشتر مصرف میکنه و این موجب کاهش عمر و زود تر از بین رفتن آلیاژ های به کار رفته تو ساخت LED و در نهایت مانیتور میشه. از یه طرفم توی دیوایس های شارژی چالش محسوب میشه چون مصرفش بیشتر دو تا رنگ دیگه یعنی سبز و قرمزه!⚡️
همچنین بازدهی از نظر نوری توی رنگ آبی فقط 25 درصده در صورتی که این مقدار توی دو رنگ دیگه حدود صد درصده!🔋
@Univerbity | 707 |
| 18 | شاید براتون پیش اومده باشه که یه فایل حجیم داشته باشید ولی فضای اشغالیش روی دیسک کمتر از حجم واقعیشه 🤔
واقعیت اینه که فایل سیستم میاد و بخش هایی از فایل که بیت های صفرش خیلی زیاده رو با یه متادیتا به نام Hole نشونه گذاری میکنه و اینجوری حجم فایل کلی کم میشه.0⃣
به این عمل میگن File sparse که اکثرا فایل سیستم ها برای کاهش و یا مصرف بهینه دیسک انجام میدن👌
وقتی فایلی هم بخواد توسط منبعی استفاده بشه این متادیتا ها به بیت های اصلی بر میگردن (اگر از فایل اسپارس پشتیبانی نکنه اون منبع)📁
@Univerbity | 546 |
| 19 | یکی از مکانیزم های کرنل لینوکس برای جلوگیری از kernel panic (کرنل پنیک) سیستمیه به نام OOM Killer 🔫
این سیستم برای اینکه کرنل با Out of memory مواجه نشه میاد مموری(چه ram چه swap) رو که داره پر میشه یا به اصطلاح داره Runnig out میشه رو بررسی میکنه و سرویس هایی که یا داره مموری زیادی مصرف میکنه یا از لحاظ سیستمی از اهمیت کمی برخورداره رو kill میکنه😐
بله همینقدر راحت :)
این عمل با پارامتری به نام oom_score انجام میشه و به هر پراسس و سرویس یه عدد اختصاص میده که هر چی این عدد بزرگتر باشه احتمال کیل شدن یه پراسس بیشتر میشه!
یه هک بامزه: میتونید oom_score هر پراسی رو از فایلی به این آدرس ببینید😉:
/proc/<pid>/oom_score
پ.ن: تصویر از یه میم تو ردیته 🎃
@Univerbity | 561 |
| 20 | یه Esolang دیگه پیدا کردم به نام Snusp 👀
این زبان برنامه نویسی به صورت دو بعدی کار میکنه و کد هاش فقط به صورت خطی نیستن.یعنی میشه کنترل جریان داده رو به دست گرفت.
این زبان مستقیما روی مموری کامپایل میشه و هر خونه مموری یه عدد قرار میگیره(کد شده به باینری).
کامپایلر این زبان کلا 8 تا دستور داره و اصلی ترین هاش >< هستن برای حرکت به خونه بعدی و قبلی و مقدار ها هم با + و - تغییر میکنن.
مثلا:
>+++++.
مقدار خونه دوم رو به 5 افزایش میده و با . مقدار اسکی عدد 5 رو چاپ میکنه.(درسته اسکی5 وجود نداره ولی نمیتونم 65 بار + بنویسم تا A چاپ شه جا نمیشه😂)
خلاصه که زبون عجیبیه و کلا Esolang ها برای تفریح و یادرگیری ساخته میشن :)
@Univerbity | 512 |
