COMPΞZ 🧬
396 subscribers
1.87K photos
52 videos
24 files
739 links
متخصص کامپیوتر و نرم‌افزار • سازنده • هنرمند و طراح • مجموعه‌دار • نویسنده • تحلیل‌گر • مشاور استارتاپی و ایده‌پرداز

𐎲𐎴𐎠𐎼𐎴𐎫𐎹 𐏃𐎢𐎶𐎠𐎫𐎹

We create because the world deserves better code.

https://linktr.ee/compez
Download Telegram
COMPΞZ 🧬
دستم خورد کل GPT برای سی++ رو حذف کردم! نه پیامی نه هشداری!!! هیچ راه بازیابی نداشت مجبور شدم مدل رو دوباره بسازم! لینک جدید: https://chatgpt.com/g/g-6a4a5321aa6c81919db8ad13b87530d8-modern-c یکم باهاش چت کنید توی فهرست بیاد بالا 😑 در کل این GPT App چیز…
از این تمیز تر چی می‌خوای!؟ بدون هیچ توضیح اضافه همه چیرو به‌روز شده می‌نویسه واست.

بدون حاشیه! متمرکز بر روی همین مبحث و عنوان البته آشنا و تعالیم دیده در‌مورد جنی و جنی‌لیپ.

توی پس زمینه پرامپتشو طوری تعریف کردم که انگار ساعت‌ها باهاش حرف زدم تا بفهمه چطور باید بنویسه! هرچیزی بخوای مستقیم به سبک استاندارد جدید خواهد داد.

مشکل راست به چپ شدنش هم حل شد! مثلا توی فارسی دیگه نمی‌نویسه C++ می‌نویسه ++C.

اینارو باید حالیش می‌کردم.

زده تو سرم کتابامو بکنم تو‌ حلقش به سبک تدریس و لحن خودم نزدیک‌تر و تجربی‌تر باشه.
امروز بخش مدیریت زبان و محتوای تگرا کمی پیچیدگی داشت! چون یکی از مهم‌ترین بخش‌های مدیریت محتواست.

خبر خوش اینکه از همون نسخهٔ ابتدایی زبان‌ها رو بر مبنای استاندارد پشتیبانی می‌کنه.

این ویژگی به عنوان یک بخش مهمی از هستهٔ سیستم هست که اجازه میده بخش‌های مختلف رو روی ترجمه مدیریت کنه:

۱) محتوای درون بانک اطلاعاتی، مثل خبر، لینک، عنوان، موضوع یا هر چیزی.
۲) محتوای درون سیستمی، مانند استثناء‌ها، پیام‌ها یا هر چیزی که به عنوان یک پیام از سمت سیستم ساطع می‌شه.
۳) پشتیبانی از هوش مصنوعی و مدل مشخص (سفارشی شده) در بخش مدیریت که اجازه خواهد داد در کمترین زمان مملکن محتوا رو به زبان مورد نظر ترجمه کنه.

هر سه بخش به ترتیب از روی لینک‌های درون سیستمی تحت فایل json تجزیه می‌شن و محتوا در درون جداول دیتابیس مربوط به هر ماژول نگه‌داری می‌شه.

یک موردی هم که در نظر دارم پشتیبانی از سیستم هوشمند صوتی هست و پوشش دادن یک سری محتوا مختص نابینایان و نا شنوایان. این بخشش پیچیدست ولی توی برنامه خواهیم داشت.
COMPΞZ 🧬
امروز بخش مدیریت زبان و محتوای تگرا کمی پیچیدگی داشت! چون یکی از مهم‌ترین بخش‌های مدیریت محتواست. خبر خوش اینکه از همون نسخهٔ ابتدایی زبان‌ها رو بر مبنای استاندارد پشتیبانی می‌کنه. این ویژگی به عنوان یک بخش مهمی از هستهٔ سیستم هست که اجازه میده بخش‌های مختلف…
ساختار سادست، فرض بگیریم چنین کدی خواهیم داشت:

auto key = MessageKey::parse("content.slug.conflict");

این درون سیستم به هیچ محتوا یا متن صریحی اشاره نداره، صرفاً یک کلید دسترسی به یک رشتهٔ مشخص در مسیر مشخصه.

سیستم صد در صد به صورت پویاست.

ساختار فایل JSON:
{
"content": {
"slug": {
"conflict": "The slug \"{slug}\" is already used."
}
}
}

نمونه مسیری از ساختار فایل‌های ترجمه:
locales/
en/
core.json
content.json
fa/
core.json
content.json

مثال از ساختار هدایت کننده در پیوند‌ها:
eng
en
fa
per
fa-IR
en-US
en-us
zh-Hant-TW

https://yourwebsite.com/en-us/news
https://yourwebsite.com/fa-ir/news
https://yourwebsite.com/fa-ir/خبر
https://yourwebsite.com/fa-ir/دربارهٔ-ما

این موضوع در بحث SEO سازی به زبان موقعیت جغرافیایی و زبان سیستم مهمه.
همچنین رشته‌ها به یونیکد ترجمه می‌شن تا از نظر زبان انسانی قابل درک‌تر باشه؛ هرچند در پس زمینه به کد‌های سطح پایین‌تر تبدیلشون می‌کنم.
در مورد جنی یه سوألی پرسیدن دوستان که ایردراپ‌های جنی همونی بود که قبلاً دادیم؟ دیگه خبری نیست؟

پاسخ، ما تا به الآن، همش ۲ میلیون توکن رو برای خاطر ایردراپ در نظر گرفته بودیم که توزیع شده! با هدف اینکه ببینیم اصلاً هولدر واقعی کیا هستن. یک پیش گرمی بود در سطح فارکستر فقط نه ایردراپ واقعی.

بعد از معرفی محصولات جدی‌تر مثل تگرا که از خیلی وقت پیش توی نقشهٔ راه بهش اشاره کرده بودم (و خیلی‌ها بهش توجه نکردن) حتی نخوندن، قطعاً شروع می‌کنیم برای تبلیغات.

موضوع ایردراپ برای توزیع ۳۰ میلیون واحد توکن هم برنامه‌ریزی می‌شه ولی نه به صورت الکی! برانمش از قبل مشخصه، در یک بازهٔ ۲۴ ماهه قابل توزیعه و نه یک‌باره.

انقدر توکن داریم که بخوایم برای هر تک به تکش برنامه‌ریزی کنیم. خیالتون راحت.

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

بین این فاز‌ها، GenyConnect نسخهٔ پرمیوم و بخشی از GenyDL هم اضافه خواهد شد که فقط با هولد توکن قابل استفادست. فعلاً همه چیز در حال آزمایشه...
گفتم که درستش می‌کنم! 😎 بچم‌ برگشت تو لیست. 🫡

حالا دیگه مشکل عدم نمایشی روی وارپلت نداره.
COMPΞZ 🧬
ساختار سادست، فرض بگیریم چنین کدی خواهیم داشت: auto key = MessageKey::parse("content.slug.conflict"); این درون سیستم به هیچ محتوا یا متن صریحی اشاره نداره، صرفاً یک کلید دسترسی به یک رشتهٔ مشخص در مسیر مشخصه. سیستم صد در صد به صورت پویاست. ساختار فایل JSON:…
این هم نمونه‌ای از نحوه‌ٔ ادغام داده‌های بک‌اند با قالب‌های فرانت‌اند در Tegra CMS.

سعی کردم سینتکس قالب‌نویسی چیزی شبیه Django باشد؛ ساده، قابل فهم و تمیز.

ایده اینه که بک‌اند داده‌ها را آماده می‌کند، سپس Template Engine آن داده‌ها را با HTML ترکیب می‌کند و خروجی نهایی صفحه ساخته می‌شود.

در این مدل می‌توانیم فایل‌های جداگانه مثل header یا footer را include کنیم، شرط بگذاریم، روی لیست‌ها loop بزنیم، متغیرها را داخل HTML نمایش دهیم و حتی کامنت‌های مخصوص template داشته باشیم که در خروجی نهایی HTML ظاهر نمی‌شوند.

هدفم این بوده که لایه‌ٔ قالب‌نویسی هم ساده باشد، هم امن، هم قابل نگهداری؛ بدون اینکه تبدیل به یک زبان برنامه‌نویسی کامل و پیچیده داخل HTML شود.

به زبان ساده یعنی:

۱) بک‌اند سمت ++C داده را می‌سازد.
۲) قالب (موتور قالب‌سازی سمت ++C) آن را نمایش می‌دهد.
۳) خروجی نهایی، HTML تمیز و قابل کنترل است.

برای CMS این بخش پایهٔ یک سیستم رندرینگ سبک، قابل توسعه و شبیه Django-style template engine هست هرچند من به دنبال یک مدل قوی‌تر نسبت به نمونه‌هایی هستم که قبلاً تجربش کردم.
COMPΞZ 🧬
گفتم که درستش می‌کنم! 😎 بچم‌ برگشت تو لیست. 🫡 حالا دیگه مشکل عدم نمایشی روی وارپلت نداره.
سوأل جالبی بود!

خب جنی بر پایهٔ شبکهٔ Base هست (با کمترین کارمزد و سریع‌ترین تراکنش) و کاملاً غیر متمرکزه!

هیچ وابستگی‌ای هم به فارکستر نداره (فارکستر فقط یه شبکه اجتماعی غیرمتمرکزه که تمام سعیمون اینه که باهاش ادغام بشه).

هر پلتفرمی که غیرمتمرکز باشه اینو پشتیبانی می‌کنه.

https://basescan.org/address/0x2a3d6f8c1fc4AcDcf3A75d19b445bae02F03676B

استخرش رو اون زمان روی Uniswap v4 بالا آوردم.

https://app.uniswap.org/explore/tokens/base/0x2a3d6f8c1fc4AcDcf3A75d19b445bae02F03676B

قبل از هر چیز باید روی صرافی coingecko لیستش کنم به وقتش.
امروز یه تماسی داشتم که متوجه شدم یه سری قوانین جدی‌تر شده که در مراحل ثبت شرکت‌ها و معرفی کسب‌و‌کار‌ها نام‌دامین و آدرس ایمیل سازمانی ظاهراً ضروری هست.

یاد‌آوری کنم برای هم صنف‌های خودم؛ وقتی برای مشتری سایت یا دامنه بالا میارید، این‌قدر شرف داشته باشید که مالکیتش رو به اسم خودتون ثبت نکنید.

این دقیقاً مثل اینه که من برم ماشین بخرم، پولشم کامل بدم، ولی سند ماشین بخوره به اسم فروشنده!

همین که مسئول فنی کار باشید کافیه.
مسئول فنی یعنی کارای فنی، تنظیمات، پشتیبانی و نگهداری؛ نه اینکه صاحب مال مردم بشید.

این رو هم به آدم‌های کم‌تجربه بگید:
دامنه شوخی نیست. هر کسی دامنه رو با شناسهٔ خودش ثبت کنه، عملاً صاحب امتیاز همونه، مگر اینکه اطلاعات مالک واقعی درست وارد شده باشه.

توی ثبت دامنه معمولاً چندتا نقش جدا داریم:

یکی صاحب امتیازه؛ یعنی مالک واقعی دامنه.
یکی رابط مالیه؛ یعنی کسی که پرداخت و تمدید رو پیگیری می‌کنه.
یکی رابط فنیه؛ یعنی کسی که تنظیمات و کارای فنی رو انجام می‌ده.
یکی هم رابط اداریه؛ یعنی پیگیری‌های ثبتی و اداری.

پس اگه برای مشتری دامنه ثبت می‌کنید، درست و شفاف بهش بگید مالک کیه، رابط فنی کیه، رابط مالی کیه.

خیلی دیدم آدم‌هایی رو که از ناآگاهی مشتری سوءاستفاده کردن؛ دامنهٔ طرف رو به اسم خودشون ثبت کردن به بهونهٔ این که خب من برات ثبت کردم، بعداً هم با همون چیزی که مال خود مشتری بوده، ازش پول اضافه خواستن یا روش فشار آوردن.

این دیگه اسمش زرنگی نیست.
اسمش دزدیه.

اگه مال مردم رو به اسم خودتون ثبت می‌کنید و بهش نمی‌گید، شما طراح سایت یا مسئول فنی نیستید؛ دزدید!

دیدم که می‌گم‌ها... چند صد تا دامین طی اینهمه سال برای مشتریام ثبت کردم همیشه هم بهشون گفتم ببین بیا به اسم خودت ثبت کنم! حتی طرف حوصله نداشته می‌گفته من بلد نیستم تو برام ردیفش کن! همینجاست که بنده خدا نمی‌دونه همین حرفش یعنی دو دستی اختیار دامینش رو به یکی دیگه دادن.

شاید توی کارها یا وب‌سایت‌های ساده مهم نباشه بگیم خب بابا چیزی نداره که! اما من دیدم طرف دامین ۳ هزار تومنی رو ۱۰ سال پیش چطور به قیمت اون موقع ۱ میلیون گرفت و کرد تو پاچهٔ مشتریش که فقط تمدید ازش می‌خواست!

این پول‌ها خوردن نداره... همون شخص احتمالاً الآن داره هندونه می‌فروشه به جای طراحی وب‌سایت.
آدم باشیم! اعتبار اونطوری که شما فکر می‌کنید به دست نمیاد.
COMPΞZ 🧬
امروز یه تماسی داشتم که متوجه شدم یه سری قوانین جدی‌تر شده که در مراحل ثبت شرکت‌ها و معرفی کسب‌و‌کار‌ها نام‌دامین و آدرس ایمیل سازمانی ظاهراً ضروری هست. یاد‌آوری کنم برای هم صنف‌های خودم؛ وقتی برای مشتری سایت یا دامنه بالا میارید، این‌قدر شرف داشته باشید…
بوده مورد‌هایی که دیدم به خاطر همین عدم مالکیت، طرف روی ثبت کننده شکایت کرده! چون اعتبار برند و کسب و کارش رفته زیر سوأل!

ممکنه جاهایی اتفاق بیفته که طرف پول نداشته باشه یا وضعش خراب باشه یا اصلاً مشکلی پیش اومده باشه و به خاطر همین صاحب اختیار بودن دامنه به طرز وحشتناکی مشتری رو اذیت کرده! ازشون اخاذی کرده! بابا اینا شوخی بردار نیست همه وجدان ندارن خودتون صاحب دارایی خودتون باشین! به هر برنامه‌نویسی به هر نه نه قمری که کد می‌نویسه اعتماد نکنید.

به خصوص از این به بعد که به لطف AI هر احمقی قراره بشه طراح وب‌سایت.

خیلی چیز‌ها هست که مشتری اصلاً در جریانش نیست! قرار هم نیست بدونه ولی بعضی چیز‌ها بسیار بسیار حساس هستن و مسئولیت داره. اینارو توی قرارداد‌هاتون شفاف‌سازی کنید.

حتی برعکسشم هست، ممکنه مشتری خودش مقصر باشه، حواسش پرت باشه، یا به هر دلیلی یه دامین رو تمدید نکنه و مسئولیتش رو از شما ببینه! اینجا اگه به نام خودش باشه شما به عنوان فرد فنی هیچ مسئولیتی نداری! چون صاحب اختیار دامین خود طرفه نه شما، همون موقع ثبت تاریخ و میزان اعتبار رو براش باید بدین.

آدرس ایمیل صاحب امتیاز رو در سیستم ثبتی وارد کنید که به خودش اطلاع‌رسانی بشه نه به شما.
مگر اینکه در بخشی از سیستم مدیریت مشتریتون CRM یا امثال این، این مورد رو به عنوان یک امتیاز برای مشتریتون یادآوری کنید.

فقط مسئولیت فنی رو بپذیرید، امور مالی و امتیاز اختیارات رو در اختیار خود کارفرما قرار بدین که بعداً زهره‌مار نشه واستون. چون توی قوانین هست می‌تونن شکایت کنن کلی هم ازتون جریمه بگیرن.
COMPΞZ 🧬
حتی برعکسشم هست، ممکنه مشتری خودش خنگ‌بازی در بیاره یه دامین رو تمدید نکنه و مسئولیتش رو از شما ببینه! اینجا اگه به نام خودش باشه شما به عنوان فرد فنی هیچ مسئولیتی نداری! چون صاحب اختیار دامین خود طرفه نه شما، همون موقع ثبت تاریخ و میزان اعتبار رو براش باید بدین.
بوده که می‌گم‌ها! مشتری داشتم طرف ده بار بهش تماس هم گرفتم گفتم آقا وقت دامینت تموم داره میشه! در جریان باش.

انداخته پشت گوشش بعد اینکه منقضی شده، اومده میگه وای یادم رفت!

بعد من که میرم درخواست میدم برای تمدید، به خاطر قوانین ثبت کننده، جریمه شاملش میشه! حتی ممکنه چند ده برابر هزینهٔ خود تمدید ازش هزینه بخوان! وقتی اینو به مشتری میگی شاخ در میاره که چراااا چه خبره! اینجاست که فکر می‌کنه شما داری گوشش رو می‌بری! ولی خب این قانون ناگفتست که بهش نگفتی...

برای خیلی از دامنه‌های عمومی بعد از انقضا معمولاً اول یک فرصت تمدید وجود داره؛ اما اگر از اون مرحله رد بشه و دامنه حذف/وارد وضعیت بازیابی بشه، وارد Redemption Grace Period می‌شه. طبق سیاست ICANN و برای دامنه‌های داخلی NIC (ایرنیک)، این دوره معمولاً ۳۰ روزه و دامنه فقط از طریق همان ثبت‌کننده قبلی قابل بازیابی است، نه با یک تمدید سادهٔ معمولی.

به هر حال قانونیه که هست؛ جریمه می‌گیرن و ثبت کننده هم مقصرش نیست.

به خصوص با این تورم، شما باید همه چیرو از پیش به مشتریت گفته باشی. به هر حال یکی یادش میره، یکی همون لحظه دستش تنگه... کارتو تمیز انجام بده بذار مشکلی پیش نیاد.
Audio
🎶Breaking in Two 🎸
Please open Telegram to view this post
VIEW IN TELEGRAM
هجوم به حافظهٔ پنهان یا Cache Stampede چیست؟

در دنیای مهندسی نرم‌افزار، به خصوص در وب، «کش» یعنی ذخیرهٔ موقت داده‌ها یا خروجی‌های پرمصرف؛ مثلاً صفحهٔ اصلی سایت، منوها، قالب‌ها یا پرسجو‌های سنگین بانک‌اطلاعاتی.

فرض کنید صفحهٔ اصلی یک وب‌سایت برای ۵ دقیقه کش شده باشد. همه‌چیز سریع است؛ تا لحظه‌ای که اعتبار کش تمام می‌شود. اگر در همان لحظه هزاران درخواست برسد، همهٔ درخواست‌ها در لحظه می‌بینند کش معتبر نیست و به جای استفاده از کش به یک‌باره هم‌زمان به دیتابیس، رندرر یا سرویس‌های داخلی فشار می‌آورند.

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

به این اتفاق می‌گن Cache Stampede.


راه حل در CMS من اینه که یک درخواست رو بازسازی کند، بقیه نسخهٔ قبلی را بگیرند، زمان انقضاها هم‌زمان نباشد، و مسیرهای مهم از قبل گرم شوند. یعنی لایه‌ای در نظر گرفتم که کش فقط محل ذخیرهٔ موقت نیست؛ یک لایهٔ هوشمند در معماری سیستم است که فشار ناگهانی را کنترل می‌کند، پایداری را بالا نگه می‌دارد و در ترافیک بالا از هجوم درخواست‌ها به بک‌اند جلوگیری می‌کند.

#معماری_نرم‌افزار #مهندسی_نرم‌افزار #طراحی_سیستم #کش
#SystemDesign #Architecture #Cache
#CacheStampede
حالا فهمیدی فارکستر رو از کدوم پلتفرم کپی کرده بودن؟

چند روز پیش اتفاقی توی bsky یه حساب ساختم دیدم عه!!! توئیتر مانند اما با سبک فارکستر! مثلاً غیر متمرکز.
این همه چیزش کپی فارکستره! فقط با تفاوت این که فارکستر بر مبنای بلاک‌چین کار می‌کنه.
هیچ‌کس بی‌دلیل از ظلم، فساد و تباهی دفاع نمی‌کند. یا جیره‌ای می‌گیرد، یا سهمی دارد، یا از حقیقت می‌ترسد، یا آن‌قدر خودش را با دروغ آرام کرده که زنجیر را نه نشانهٔ اسارت، بلکه مدال افتخار می‌بیند. 👊🏼
یه ادعاهایی این روز‌ها می‌بینم که شاخ در میارم! طرف تا دیروز فرق گاو و خر رو نمی‌دونست الآن چنان دماغشو بالا گرفته می‌گه سیستم‌عامل می‌نویسم، مرور گر می‌نویسم، بلاک‌چین می‌نویسم!

هرکی ندونه فکر می‌کنه طرف ۳۰ سال فقط درس علوم کامپیوتر توی دانشگاه آمریکایی پاس کرده! والا ما اندازهٔ سن خیلی‌هاتون فقط تجربه کردیم اونم نه الکی هم درسشو خوندیم هم عمل کردیم بعد تو پروژه‌های خودمون هنوز موندیم! هنوزم عناوین مختلف از معماری‌های کامپیوتر مثل Computer Organization and Design سر گیجم می‌کنه! بخوام لیست کنم بیش از ۱۰۰ کتاب برات معرفی می‌کنم که خوندن و درک کردن هر کدومشون ماه‌ها و سال‌ها زمان می‌بره.

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

شماها مغزتون واقعاً ایراد داره من فکر می‌کردم فقط توی سیاست نفهمید اما توی مباحث علمی هم واقعاً نفهم تشریف دارید! همون اندازه که توی سیاست گنده‌گوز هستین و همیشه پیروز صد برابر بدتر از اون رو توی مباحث علمی هم هستید. 😒

یاد اون بنده خدایی افتادم که با ۲۰-۲۵ سال سن متخصص و جراح مغز و اعصاب خودشو جا زده بود! توی صنف ماهم همینه! طرف طوری حرف میزنه طوری دماغشو بالا می‌گیره هرکی نبینه میگه این ۳۰ سال فقط کتاب خونده، عملی تجربه کرده! کشف کرده، خون دماغ شده از شدت مطالعه! دیسک کمر و گردن گرفته از شدت تلاش!

جمع کنید بابا کم گنده‌گوزی کنید آدم حالش از خودش بهم می‌خوره. 😐 همین کتاب Computer Organization and Design با چند جلدش رو روی هم بذاری چند ده هزار صفحست که سال‌ها طول می‌کشه درکش کنی (تازه اونم اگه بخونی و در عمل انجامش بدی) که فقط تفاوت برنامه‌نویسی بین x86 با arm یا risc توی چیه! برای هر معماری یه کتاب کلفت دارن اینا بعد شماها انقدر نفهمید که فکر می‌کنید کد نویسی یعنی فقط اجرا شدن!

هرچقدر هم گنده‌گوزی می‌کنی بکن ولی برنامه‌نویسی اونی نیست که با چهارتا اسکریپت یا چهارتا الگوریتم جستجو به کار می‌بری. برنامه‌نویسی یعنی درک این که یه پردازندهٔ کامپیوتر با فلان معماری چطور کد شما رو درک خواهد کرد که پشت صحنهٔ این‌ها هم حسابی داستان داره از کامپایلر بگیر تا مفسر و ... این چیزارو هم تا تو نفهمی نمی‌تونی به هوش مصنوعی بفهمونی نادان.

فکر کردین واقعاً‌ الکیه؟ یه مثال سادش! همین GenyConnect رو ازم خواستن پورت کنم روی چند تا سیستم‌عامل دیگه! می‌خوام برای نسخهٔ freeBSD براش نسخه بدم بیرون نشستم دارم معماری BSD رو می‌خونم که فقط بتونم کیوت رو روش کامپایل کنم که تازه شاید بتونم به عنوان یه پلتفرم مقصد کدم رو بهینه کنم روی معماری مخصوص این سیستم‌عامل چون هیچ کتابخانهٔ پیش‌فرضی به صورت رسمی از سمت کیوت براش منتشر نمیشه!

همین یه موضوع تازه به کمک هوش مصنوعی به شدت سخته! بعد طرف نشسته می‌گه من سیستم‌عامل می‌نویسم! بابا خفه شو آبرو ریزی نکن! آدم شو بسه دیگه توی هر چیزی پیروزید شماها آدم کیف می‌کنه از شدت پیروزی.
COMPΞZ 🧬
یه ادعاهایی این روز‌ها می‌بینم که شاخ در میارم! طرف تا دیروز فرق گاو و خر رو نمی‌دونست الآن چنان دماغشو بالا گرفته می‌گه سیستم‌عامل می‌نویسم، مرور گر می‌نویسم، بلاک‌چین می‌نویسم! هرکی ندونه فکر می‌کنه طرف ۳۰ سال فقط درس علوم کامپیوتر توی دانشگاه آمریکایی…
اون کتاب‌هایی که توی دانشگاه‌های ایران به خوردتون میدن رو بنداز آشغال‌دونی! به درد خودت و اساتید عصر هجری می‌خوره. به هر حال منم پاسشون کردم می‌دونم چی هستن! درسته مفاهیم مهمی توشون هست اما خیلی قدیمی‌تر از اونی هستن که فناوری الآن بهش نیاز داره.

این کتاب‌ها که می‌گم همشون مربوط به معماری کامپیوتر هستن! یعنی درک درست از معماری و رابطهٔ بین سخت‌افزار و نرم‌افزار.

📘 Computer Organization and Design: MIPS Edition
📘 Computer Organization and Design: RISC-V Edition
📘 Computer Organization and Design: ARM Edition
📘 Computer Architecture: A Quantitative Approach
📘 Modern Processor Design: Fundamentals of Superscalar Processors
📘 ARM System Developer’s Guide
📘 RISC-V Assembly Language
📘 x86-64 Assembly Language Programming with Ubuntu

فقط همین کتاب Computer Organization and Design - MIPS Edition رو بخوای درست بخونی و واقعاً بفهمی، خودش چند ماه تا یک سال وقت می‌بره؛ نه اینکه فقط ورق بزنی و بگی خوندمش. البته پیشنهاد من ARM Edition هست! چون این معماری واقعاً محشره.

بعد تازه می‌فهمی کامپیوتر واقعاً چطوری کار می‌کنه؛
سیستم‌عامل چیکار می‌کنه؛ مثلاً گوشی اندروید چطوری رفتار می‌کنه وقتی به کد شما میرسه!
کامپایلر کدت رو چطوری تبدیل می‌کنه یا پردازنده چطوری دستورها رو اجرا می‌کنه؛
حافظه، کش، رجیستر، پایپلاین و وقفه یعنی چی و هزاران مورد دیگه!

برنامه‌نویسی فقط تایپ کردن کد نیست که عزیز من!

پشت هر خط کدی که می‌نویسی، یه دنیای کامل از سخت‌افزار، سیستم‌عامل، کامپایلر و معماری کامپیوتر خوابیده.
واسه همینه که ادعا‌های بزرگ فقط با چندتا پروژه و چندتا ویدئو جور درنمیاد اصلاً باید عمرتو به پاش بریزی و غیر از این ممکن نیست که بتونی درکش کنی.

اتفاقاً همین کتاب‌ها رو دادن به خورد AI ولی هیچ‌وقت نمیاد از داخل این کتاب یک معماری رو توی پروژه شما اجرا کنه چون قوائد کار با هوش مصنوعی اینه که شما باید آگاه باشی که چه چیزی رو بهش دستور میدی! اینجا باید شما اگه این کتاب‌ها رو خوندنی بیای بهش اشاره کنی که بگی مثلاً:

فلان مدل طراحی رو می‌خوام یا مثلاً ساختار حافظه رو با این روش پیاده‌سازی کن! و اگرنه تمام دستورات اجرایی AI فقط یک سری نمونه‌های به شدت مقدماتی هستن که به درد مهندسی شدن نمی‌خوره.

شما اگه در خصوص برنامه‌های خاص‌تر تجربه داشته باشی و این کتاب‌ها رو خونده باشی می‌فهمی که سیستم‌عامل چطوری حافظه رو مدیریت می‌کنه و اینجاست که میای می‌گی من خودم یک تخصیص‌دهنده (allocator) می‌نویسم که متناسب با نیازم عمل کنه.

چون می‌دونی دقیقاً چه چیزی لازم داری و چرا allocator عمومی سیستم همیشه بهترین انتخاب نیست. برای همین چیزاست که برنامه‌نویسی سطح پایین همیشه ارزشمند بوده و خواهد ماند.

حالا تو بیا بگو من فلان برنامهٔ خفن رو می‌نویسم اما فقط نوشتمش! دادم به هوش مصنوعی نوشت! :)) بدون یه ذره درک این که توی برنامه حافظه رو چطوری داری مدیریت می‌کنی.

نکنه واقعاً فکر کردی چهارتا پرامپت این شکلی بدی حله؟

برنامه‌ای نویس که ایمنی داشته باشد، از اشاره‌گر‌های هوشمند برای جلوگیری از نشت حافظه استفاده کند، بهینه ‌باشد و ...

بعد هوش مصنوعی هم برداره با همین مدل کدت رو بنویسه توام بگی حله دیگه همینه! ایول. 😁 من شدم یه متخصص تمام عیار با صد سال سابقه! کی به کیه برو تو رزومتم بنویس!
COMPΞZ 🧬
اون کتاب‌هایی که توی دانشگاه‌های ایران به خوردتون میدن رو بنداز آشغال‌دونی! به درد خودت و اساتید عصر هجری می‌خوره. به هر حال منم پاسشون کردم می‌دونم چی هستن! درسته مفاهیم مهمی توشون هست اما خیلی قدیمی‌تر از اونی هستن که فناوری الآن بهش نیاز داره. این کتاب‌ها…
اصلاً بیا برات یه تیر خلاص بزنم اگه چپی هستی یا راستی برو بوق بزن برا خودت!

یکی از دلایلی که ++C رو هیچ زبانی نمی‌تونه جایگزینش باشه نه C و نه Rust داشتن همین سطح از کنترلشه؛ چیزی مثل placement new الکی نیست که! کتاب معماری رو بخون سیستم‌عامل رو درک کن ساختار حافظه رو بفهم بعد بیا ببین کدوم زبان چه دسترسی‌ای بهت میده.

این یعنی، وقتی حافظه را جدا مدیریت می‌کنی و بعد با placement new شیء رو دقیقاً در همان آدرس می‌سازی، می‌تونی هزینهٔ تخصیص حافظه‌های تکراری رو کم کنی، داده‌ها رو کنار هم و منظم‌تر در حافظه بچینی، cache locality بهتری بگیری و فشار روی تخصیصِ عمومی سیستم‌عامل را کاهش بدهی.

این رو تو از کجا می‌خوای بفهمی وقتی هیچ آشنایی‌ای با معماری نداری؟ والا شوخی بردار نیست این چیزا خیلی سطحی می‌بینید شماها خیلی به شدت سطحی‌نگر هستید و همینطور فکر می‌کنید سادست. هلو بیا برو تو گلو.
COMPΞZ 🧬
اصلاً بیا برات یه تیر خلاص بزنم اگه چپی هستی یا راستی برو بوق بزن برا خودت! یکی از دلایلی که ++C رو هیچ زبانی نمی‌تونه جایگزینش باشه نه C و نه Rust داشتن همین سطح از کنترلشه؛ چیزی مثل placement new الکی نیست که! کتاب معماری رو بخون سیستم‌عامل رو درک کن ساختار…
منظور از Cache locality یعنی داده‌هایی که CPU لازم دارد، تا حد ممکن نزدیک هم و پشت‌سرهم در حافظه باشند تا پردازنده سریع‌تر به آن‌ها برسد.

برای همین چیز‌هاست که طرف موتور یه بازی مثل GTA رو با سی++ می‌سازه. و اگرنه عقل نداره با سی یا راست درگیر بشه؟! هزاران دلیل فنی و عمیق هست که همشون مهندسی شدن. ولی نمی‌دونم چرا ما عادت داریم همینطوری بگیم فلان چیزو می‌سازیم! بابا قبلش باید بفهمی معماری یعنی چی با وجود هوش مصنوعی برای من زبونتو سه متر واسه من نشون نده که اول درکش کن بعد ثابت کن که کدت چه مشکلی رو حل خواهد کرد.

من این چیزارو توی شبیه‌سازی سونی دیدم و درک کردم! اونم نه الآن! اون موقع که فقط DMC روی شبیه‌ساز تا ۱۰ دقیقه قابل اجرا بود متوجه شدم که چرا و چطور تخصیص‌دهندهٔ اختصاصی می‌نویسن.

الآن۱۰-۱۵ سال شبیه‌ساز به نقطه‌ای رسیده که کامل روی همهٔ سیستم‌عامل‌ها قابل اجراست با تمام توان.
خب اینا نیاز به درک داره! خاخول نیستن که صد تا برنامه‌نویس یکی از یکی خفن‌تر نشستن روی یه پروژه کار می‌کنن! بخش مهمی از موضوع یادگیری علوم رایانست.