COMPΞZ 🧬
Kanalga Telegram’da o‘tish
متخصص کامپیوتر و نرمافزار • سازنده • هنرمند و طراح • مجموعهدار • نویسنده • تحلیلگر • مشاور استارتاپی و ایدهپرداز 𐎲𐎴𐎠𐎼𐎴𐎫𐎹 𐏃𐎢𐎶𐎠𐎫𐎹 We create because the world deserves better code. https://linktr.ee/compez
Ko'proq ko'rsatishMamlakat belgilanmaganToif belgilanmagan
394
Obunachilar
Ma'lumot yo'q24 soatlar
-47 kun
+2830 kun
Postlar arxiv
394
+3
این هم مستندات موتور سیمرغ در قالب PDF.
تعداد صفحههات، ۲۴۴۸ صفحه تا به این لحظه! خودت حدس بزن ببین چی ساختم. 😎
394
همیشه یه جایی تو شخصیت نیگان (سریال مردگان متحرک) یه حسی بهم میگفت این بشر ممکن نیست اینهمه به هیچ و پوچ خشن باشه! مگه میشه؟! قطعاً یه دلیلی داره!
تا وقتی که بعدش شخصیت لوسی رو دیدم و فهمیدم داستان چی بود!
یادتونه همسر معروف نیگان رو؟! چه چیزی باعث شده بود که چنین مرد مهربون و بیآزاری تبدیل به کسی بشه که کل عالم ازش وحشت کنن حتی زامبیها که خودشون عامل وحشت بودن.
پیشنهاد میکنم اگه کسی این سریال رو ندیده حتماً ببینه، البته صحنههای دلخراش زیادی هم داره اگه با روحیتون سازگار نیست پیشنهاد نمیکنم؛ اما در دل این سریال چیزهایی هست که ثابت میکنه چطور یک مظلوم به یک انتقامجوی بی بدیل تبدیل میشه!
394
سادهترین خروجی موتور سیمرغ میشه این.
کل سیستم شما آمادست برای توسعهٔ محصولتون! بدون دغدغهٔ پیکربندی سیستمعامل، کامپایلر، ساختار، ویژگیها و کلی کوفت و زهرهمار دیگه.
سبک و نحوش هم کاملاً مدیرنیزه از استاندارد ۲۰ بعد تبعیت میکنه.
394
تفاوت عمدهٔ سیمرغ با آنریل اینجاست.
من سیمرغ رو در سطح محصولات کاربردی در نظر گرفتم نه بازیسازی.
یعنی شما فرض کنید UE بتونه محصول نرمافزاری برای شما بسازه! یک چهارچوب از قبل تعریف شده داشته باشه که شما فقط ایدههاتون رو توش اجرا کنید و نه اینکه بشینید از اول به فکر این باشید که چطوری باید یه درخواست به فلان api بفرستید! 😐
همه چیز بدون وابستگی به نوع پلتفرم (سکو) اختصاصی تعبیه میشه و شما از خروجی این میتونید چیزی که دوست دارید رو منتشر کنید.
این کار در حالت عادی پیچیدست اما سادهسازی اون امکانپذیره.
394
یک موتور میتونه از فریمورکهای دیگه استفاده کنه اما یک فریمورک خودش چهارچوب محدود شده به خودش رو داره.
مثلاً ما میتونیم انتظار داشته باشیم سیمرغ یه انشعابی به سمت کیوت داشته باشه و باهاش برنامههای گرافیکی رو بسازه اما از کیوت نمیتونی انتظار داشته باشی برای شما یه وبسایت بالا بیاره! تفاوتشون اینجاست که موتور تقریباً ساختار رو از قبل آماده کرده اما فریمورک چهارچوبی از برنامهسازی رو برای شما ارائه میکنه.
اینا یکم خیلی تخصصی و پیچیده هستن اما در اصل ما به دنبال سادهسازی ساخت و سرویس دهی هستیم نه پیشنهاد یک ساختار.
394
اینم شاید سوأل پیش بیاد که یک فریمورک با یک موتور چه تفاوتی داره.
در نسخهٔ فعلی سیمرغ تا حدی نیمه فریمورک و نیمه موتور هست و چون هدف تولید یک خروجی محاسباتیه بنابراین از همین الآن من موتور خطابش میکنم.
خلاصش این میشه:
Engine = ابزار و سرویس
Framework = اسکلت و ساختار
394
+1
به قولی یکم زیبایی ببینیم.
این تیکه کدهای CMake به صورت خودکار تمام فایلهای سرآیند و ماژولها رو جمعآوری میکنه و تمام مستنداتی که حین کد نویسی نوشتم رو ارزیابی و به مستند تبدیل میکنه.
نمونه مثال: کلاس جلسات (SESSIONS) هر جایی که شما به سبک داکسیجن توضیحات داشته باشی، سیستم به صورت خودکار اونها رو به یک خروجی مستند شده تبدیلش میکنه.
394
+1
این هم رفت روی گیتهاب.
وضعیت پروژه عمومی نیست و زوده برای انتشار نهایی چون وقتی تمومش کنم جای درستش تبلیغاتش هم شروع میشه.
این فرآیند موقع کامپایل موتور شکل میگیره وخروجی وب از مستندات رو آماده میکنه.
چیزی که مد نظرم هست انتشار یک موتور با کیفیت بالا و سریع و البته جدی هست! نه مثل چیزهایی که این جوجه بسیجیهای زپرتی میسازن که مایه خندهٔ دنیاست. شماها آبروی ایرانی جماعتو همه جا بردین بزدلهای خائن.
اینو فراموش نکنیم، ما در موضوع فناوری باید اگه بالا نیستیم حداقل پایین هم نباشیم! نسازیم چیزهایی رو که واقعاً مایهٔ تمسخره! یا باید هم سطح بشی یا باید بالاتر باشی! زیر این باشه مایهٔ تمسخره و هرچی بگی ایران قوی چرند گفتی!
این چیزی که من ساختم الآن از دل تحریمها شکوفا شده هزاران دلیل و مشکل رو متحمل بودم که بتونم بسازمش! کار یکی دو روزه هم نیست الآن دیگه شد ۳ سال دارم روی این کار میکنم.
بماند به تاریخ به وقتش چیزهای خوبی باهاش میسازیم که خارجیهاش هم انگشت به دهن مونن.
هدف از این صحبتا اینه، هرکسی هر تواناییای داره یه کمکی بکنه، در تخصص خودش! در حوزهای که علاقه داره. گوش به حرف این لقمه حرومها هم نباشید این همون پروژهای بود که مهرههای یقه بسته بهم گفتن اگه ما نخوایم تو نمیتونی ادعا کنی که تو ساختیش! ولی من میسازم چون یه ایرانیم نه یه اجنبی نون به نرخ روز خور مثل شما.
394
چون سیپلاسپلاس این قابلیت رو میده که شما در سطوح پایین برنامهنویسی کنی تا افرادی که در سطوحبالاتر نزدیک به زبان انسان برنامهنویسی میکنن هم بتونن به جزئیات زیر لایهای و سطوح پایین که تخصص چندانی براش ندارن دسترسی داشته باشن.
برای مثال، پیدا کردن تعداد و یا شماره سریال دیسک سخت چقدر برای شما سخته؟ اگه بخوای روی برنامت همچین کاری کنی باید دانش عمیق و سطحپایینی داشته باشی، یعنی باید هم برای ویندوز هم لینوکس و هم مک جداگانه کلی کد بنویسی! تازه اگه جواب گرفتی!!!
سیمرغ بهت میگه بفرما! فقط تابع زیر رو استفاده کن.
__simurgh_no_discard DiskList DiskStorage::getDisks()تابع به صورت خیلی تمیز و ساده getDisks تمام دیسکهای سیستم رو فراخوانی میکنه فرقی هم نداره چه سیستمعاملی داشته باشید.
394
+2
سیمرغ دو نوع ماژول داره!
یکی درونی و دیگریها بیرونی! درونیها چیزهایی هستند که از قبل میسازیمش و درون خود موتور وجود داره.
بیرونیها ماژولهایی هستن که مردم یا شما یا دیگر توسعهدهندهها بر حسب نیاز بهش اضافه میکنن.
این ماژول سختافزاری یکی از بهترینهاست که هنوز کامل نیست اما جزئیات سختافزار رو باهاش رنده خواهیم کرد.
ویژگی خفنشون اینه که چند-سکویی هستن! یعنی فرقی نمیکنه روی ویندوز باشی یا لینوکس یا مک یا اندروید یا آیاواس! به شدت به کارت میاد.
394
ویژگی مشابه جلسات روی PHP یادتونه؟ همون SESSIONهای معروف!
حالا روی سیمرغ هم داریمش؛ کاربردش سمت وب بسیاره.
394
یه سری انواع خاص هم داریم مثل BigNumber با حوزهٔ پشتیبانی ۶۴ و ۱۲۸ بیتی که در استاندارد سی++ وجود نداره و شما باید از کتابخانه خارجی استفاده کنید.
سیمرغ بدون وابستگی این ویژگی رو ارائه میکنه. برید کیف کنید! کجا به درد میخوره و چرا ساختمش؟ وقتی روی بلاکچین با سالیدیتی کار میکردم اعداد ارقامی که تجزیه میکردم روی سی++ اصلاً هم خونی نداشت! شما نمیتونید اعداد با بازهٔ بزرگ رو که خارج از حد و توان حافظه کامپیوتر واقعی هست رو محاسبه کنید.
این یک ضعف نیست؛ چون سی++ با دقت و توانایی واقعی سختافزار محاسبه میکنه ولی زبانهای اسکریپتی میان اینو به صورت رشتهای ومجازی به خصوص سالیدیتی روی ماشین مجازی اتریوم محاسبه میکنه.
سیمرغ این شبیهسازی رو انجام میده و شما نیازت نسبت به پردازشهایی با اعداد ماورایی ممکن میشه.
394
عاشق این ویژگی داینامیکس هستم با عشق ساختمش! 😭
این امکان رو میده در زمان اجرا هر ویژگیای که بخواین رو به نرمافزارتون اضافه کنید.
اونایی که با محصولات ادوبی کار کردن، مثل فتوشاپ و امثالش میدونن نصب یه افزونه یعنی چی!
یا در سطح وب نصب یه افزونه روی وردپرس و ... امکان گسترش محصول رو میده.
البته سیمرغ نه تنها پلاگین (افزونه) داره، بلکه ماژول هم داره!
پلاگینها ویژگیهایی با جزئیات ریز رو فراهم میکنن؛ ولی ماژولها به خودی خود یه ویژگی گسترده هستن که بعداً بهش اضافه میکنیم.
394
علاوه بر پشتیبانی از ماژولهای درونی یا خارجی؛ بخشهایی داریم زیر مجموعهٔ موتور به این صورت:
import engine.class.{WHAT}
یک سری کلاسهای کمکی مثل همیت تبدیلات محتوا! مثلاً تبدیل یه متن به باینری، اسکی و انواع مختلف.394
یکی از خفنترین بخشهایی که تقریباً هیچ موتور برنامهسازی نداره، بخش ترجمهٔ نرمافزار در زمان اجراست.
این کلاس به خودی خود یک واحدی از درون انجین حساب میشه.
کاراییش این هست که به شما اجازه میده در آن واحد به هر زبانی که بخواین نرمافزار رو تبدیل کنید؛ یعنی فارسی و راست به چپ، و زبانهای لاتین و چپ به راست.
چیزی که بدون این مجبورید هزاران لایه و هزاران فایل و کوفت و زهرهمار رو بازنویسی کنید =)))
394
ک کلاس ThreadSafe تمیز برای بهکار گیری در برنامهها! این کلاس تضمین میکنه دسترسی مشترک به منابع ایمن و مطمئن هست. 😎
394
یه بخش خالص که دهنم صاف شد، ساختن یک کتابخانهٔ سبک درون موتور هست برای JSON.
در حالت فعلی سیمرغ هم از JsonCPP استفاده میکنه هم از boost::json و در حالت پیشفرض از کتابخانهٔ داخلی خودش که وابستگی خارجی ندارد. (سبک و شیک).
394
خوبی این ساختار این هست که کاملاً بر مبنای ماژولها ساخته شده.
برای مثال کلاس سادهای از فارکستر که اجازه میده به واسطهٔ موتور با دستورات فارکستر ارتباط برقرار کنیم.
این مستندات سادهترین نسخه ممکن هست که بعداً به مثالها و جزئیات بهتری تبدیل خواهند شد البته به علاوهٔ بازطراحی پوستهٔ خروجی.
