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

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

We create because the world deserves better code.

https://linktr.ee/compez
Download Telegram
COMPΞZ 🧬
پس آینده فقط برای کسی نیست که سریع‌تر کد بنویسه، برای کسیه که بهتر می‌فهمه، بهتر طراحی می‌کنه، بهتر نظارت می‌کنه و خروجی AI رو از دید مهندسی، آزمایش، امنیت و استاندارد و از ممیزی رد می‌کنه.
دقت کن که این موج منجر به بیشتر شدن برنامه‌ها، کد‌ها، و خروجی‌ها میشه؛ یعنی اشباع شدن و افزایش کمیتِ کد‌های تولید شده توسط هوش مصنوعی.

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

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

بقیه میره زباله‌دونی! حتی اگه ادعا کنی که سیستم‌عامل نوشتی.😉
COMPΞZ 🧬
به این تصویر دقت کن.
و باز هم می‌رسم به تأکید بر مثلث دانش. 👋🏼 چیز‌هایی هستند که ما نمی‌دانیم که نمی‌دانیم.
هوش مصنوعی این فرصت رو به شما میده که بتونی به همین چیز‌هایی که نمی‌دونی بیشتر فکر کنی.
شادروان شاعر حیدر یغما می‌گه:

تنم در وسعت دنیای پهناور نمی‌گنجد؛ روان سرکشم در غالب پیکر نمی‌گنجد.
می‌بینم که دونه دونه حساب‌های Claude ایرانی‌ها به چوخ میره!
خب چند تا توصیه دارم!

اول اینکه تا روشن شدن تکلیف این موضوعِ احراز هویتش کاری باهاش نداشته باشید! هزینه نکنید، نخریدش!

دوم اینکه، به هیچ عنوان از داخل سیستم خودتون حتی با VPN ورود نزنید، چون هر vpn ای وی‌پی‌ان نیست، نشتی داشته باشه موقعیت شما رو لومیده. به خصوص این رایگان‌ها که دیگه اصلاً!

سوم اینکه، برای مصارف شرو ور یا چت‌های روزانه ازش استفاده نکنید، باهاش فارسی نویسی نکنید!

چهارم اینکه، یه سرور با موقعیت آمریکا بخرید و از داخل سرور آمریکا نسخهٔ CLI رو نصب کنید و از سیستم خودتون بهش ریموت ssh بزنید.

نکته) اگه نیاز به خرید سرور آمریکا داشتین، با دریافت هزینهٔ منصفانه من این کار رو براتون انجام میدم. هم سرورشو هم کارت اعتباریشو از جایی می‌خرم که سال‌هاست باهاش کار می‌کنم. برای این کارا از داخل که اصلاً خرید نزنید چون همشون دستکاری سرور دارن IP‌هاشون سالم نیست.

وسلام علیکم و تبارک الله اعظمی! 😌
COMPΞZ 🧬
می‌بینم که دونه دونه حساب‌های Claude ایرانی‌ها به چوخ میره! خب چند تا توصیه دارم! اول اینکه تا روشن شدن تکلیف این موضوعِ احراز هویتش کاری باهاش نداشته باشید! هزینه نکنید، نخریدش! دوم اینکه، به هیچ عنوان از داخل سیستم خودتون حتی با VPN ورود نزنید، چون هر…
این Fable 5 هم اونطور که می‌گن غولِ نمی‌دونم چیچیه... نه والا شما پرامپتت خوب باشه بفهمی چی می‌نویسی همون اپوس هم خوبه.

تنها مزیتش اینه که به خاطر بهتر بودن درکش نسبتاً توکن کمتری مصرف میکنه.

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

کلاد ساخته شده برای برنامه‌سازی، تحلیل، ممیزی، شخم زدن یه پروژه!

بقیه موارد مونده تا به پای این برسن.
COMPΞZ 🧬
می‌بینم که دونه دونه حساب‌های Claude ایرانی‌ها به چوخ میره! خب چند تا توصیه دارم! اول اینکه تا روشن شدن تکلیف این موضوعِ احراز هویتش کاری باهاش نداشته باشید! هزینه نکنید، نخریدش! دوم اینکه، به هیچ عنوان از داخل سیستم خودتون حتی با VPN ورود نزنید، چون هر…
پنجم اینکه از GenyConnect استفاده کنید تا کام‌روا شوید حتی با خراب‌ترین اینترنت که برای من 3g هست پایداری بالایی داره. 😝 البته این نسخه رو به زودی منتشر می‌کنم! هنوز کار داره.
COMPΞZ 🧬
اول اینکه تا روشن شدن تکلیف این موضوعِ احراز هویتش کاری باهاش نداشته باشید! هزینه نکنید، نخریدش!
خب بله! برای اطمینان یه حساب جدید ساختم؛
احراز هویت می‌خواد.

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

We cannot accept this ID type. Please choose an accepted ID.

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

اینکه یه سیستم بذاره کارت ملی مردم رو اسکن کنه ببینه که من یه شهروند عادی هستم یا یه نظامی؟! تو کک من نمیره این حرفا.

با توجه به تحقیقاتم همچین چیزی متوجه شدم:

تفکیک فردی شدنی است. KYC دقیقاً برای همین ساخته شده: سند هویتی، چهره، شماره، محل اقامت، ریسک حقوقی، لیست تحریم، PEP، watchlist و سابقهٔ رسانه‌ای/حقوقی. حتی خود OFAC ابزار Sanctions List Search دارد که برای تطبیق نام با لیست‌های تحریمی استفاده می‌شود.

اما شرکت‌هایی مثل Anthropic معمولاً یک لایهٔ بالاتر تصمیم می‌گیرند: کشور پشتیبانی‌شده یا پشتیبانی‌نشده در صفحهٔ رسمی Anthropic، ایران جزو کشورهای پشتیبانی‌شدهٔ Claude نیست؛ و خود Claude هم احراز هویت را از طریق Persona انجام می‌دهد، یعنی از نظر فنی ابزار شناسایی فردی وجود دارد، ولی سیاست نهایی می‌تواند همچنان country-level باشد.

خب اینجاست که باید بپرسم از همان‌هایی که می‌گفتند:
«این‌ها با مردم ایران مشکلی ندارند.»
«این‌ها دوست ما هستند.»
«این‌ها آمده‌اند مردم را نجات بدهند.»

خب اگر دوست مردم‌اند، چرا همین تفکیک ساده را انجام نمی‌دهند؟

اگر می‌توانند با دقت نظامی بفهمند چه کسی کجاست، چه کسی وابسته به کجاست، چه کسی هدف است و چه کسی نیست، چطور نمی‌توانند بفهمند من یک شهروند عادی‌ام یا یک فرد سیاسی و نظامی؟

سخت است؟ نه.
غیرممکن است؟ قطعاً نه.
فقط برایشان به‌صرفه‌تر است که فرق نگذارند.

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

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

مسئله اینه که جهان قراردادی در پس زمینهٔ همهٔ این‌ها بسته که ترجیح می‌دهد ما دسترسی نداشته باشیم، ابزار نداشته باشیم، رقابت نکنیم، رشد نکنیم و همیشه پشت در بمانیم تا مبادا ... 😝
COMPΞZ 🧬
از وقتی از AI خواستم واسم وضعیت پروژه رو مستند کنه کارم خیلی راحت‌تر شده! 👌یعنی 10000X S Max Plus در نظر بگیر! 😄 قبلاً ذهنم همش درگیر این بود که خدایا کجا چیرو جا انداختم! فلان چیز یادم نره، بهمان چیز یادم نره... فلان تابع یا فلان کد مشکل داشت اصلاح کردم…
سوألی هست که وقتی دراگون هست چرا ازش استفاده نمی‌کنی برای ساختن CMS‌ات؟

چون من تمایلی ندارم وابستگی چینی توی قلب سیستمم باشه. همشونو من قبلاً آزمایش کردم به دلم نمی‌شینن.

بهترین ویژگی فریم‌ورک وب دراگون اینه که non-blocking I/O هست که تگرا مشابه همون مکانیزم و حتی بهترشو پشتیبانی می‌کنه غیر اون مابقی مواردش کار سختی نیست!

تگرا الآن هم از multi-thread پشتیبانی می‌کنه و روی پردازنده‌های چند هسته‌ای کار می‌کنه هم از non-blocking I/O پشتیبانی می‌کنه.

به زبان ساده‌تر بخوام بگم این یعنی چی؟

یعنی در مدل blocking، اگر یک درخواست منتظر پاسخ دیتابیس بماند، همان thread (رشته) عملاً معطل می‌شود.

اما در مدل non-blocking، سیستم می‌گوید:

«تو منتظر بمان؛ من در همین فاصله کارهای دیگر را انجام می‌دهم.»


این یعنی مصرف بهتر CPU، توان پاسخ‌گویی بالاتر، latency کمتر، و معماری مناسب‌تر برای ترافیک زیاد.

وقتی multi-threading و non-blocking I/O کنار هم قرار می‌گیرند، نتیجه این می‌شود که سیستم هم از قدرت چند هستهٔ CPU استفاده می‌کند، هم رشته‌ها را با انتظارهای بیهوده هدر نمی‌دهد. این دقیقاً همان چیزی است که برای یک CMS مدرن، سریع، کم‌مصرف و مقیاس‌پذیر نیاز داریم.
COMPΞZ 🧬
سوألی هست که وقتی دراگون هست چرا ازش استفاده نمی‌کنی برای ساختن CMS‌ات؟ چون من تمایلی ندارم وابستگی چینی توی قلب سیستمم باشه. همشونو من قبلاً آزمایش کردم به دلم نمی‌شینن. بهترین ویژگی فریم‌ورک وب دراگون اینه که non-blocking I/O هست که تگرا مشابه همون مکانیزم…
و البته خاصیت Native I/O بک‌اند که مهمه!

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

یعنی همچین چیزی:

Linux
→ epoll


macOS / BSD
→ kqueue


Windows
→ IOCP / I/O Completion Ports


Portable fallback
→ poll/select 


Tegra uses a native I/O backend per platform:
epoll on Linux, kqueue on macOS/BSD, and IOCP on Windows.

This is not a simulated async layer; it is built on each operating system's real event notification mechanism.
COMPΞZ 🧬
نحو (سینتکس) کدش چطور میشه؟ شاهد همچین چیزی خواهیم بود.
می‌دونم تو ذهنتون این هست که بگین یه ORM هم بهش اضافه کن! ولی فعلاً نیازی نیست بذارید به کارمون برسیم. 😄😁😎
سؤالی مطرح بود که چرا محصولاتی مثل Apple و Sony این‌قدر پایدارند، با سخت‌افزار نسبتاً محدود راندمان بالایی می‌دهند، کمتر هنگ می‌کنند و معمولاً عمر فنی خوبی دارند.

جواب فقط در قدرت سخت‌افزار نیست؛ بخشی از جواب در ریشهٔ سیستم‌عامل و فلسفهٔ طراحی آن است. 😉

خیلی‌ها فکر می‌کنند Linux یعنی همان UNIX؛ خب این اشتباهه!

درستش اینه:

شبیه به یونیکس (Unix-like) یعنی سیستم‌عاملی که از نظر طراحی، رفتار، APIها و فلسفهٔ کاری شبیه UNIX است؛ به فارسی می‌شود گفت «شبه‌یونیکس».

اما UNIX با حروف بزرگ، فقط یک اسم تاریخی نیست؛ یک استاندارد و نشان تجاری رسمی هم هست.

یعنی سیستم‌عاملی که توسط The Open Group با استانداردهای UNIX سازگار تشخیص داده شده و گواهی رسمی گرفته باشد.

ولینوکس یک سیستم‌عامل Unix-like است؛ یعنی شبیه UNIX طراحی شده، اما از نظر ریشهٔ تاریخی و کد‌های واقعی، خود UNIX نیست.

در طرف دیگر، macOS واقعاً UNIX-certified است. ریشهٔ آن از Darwin، XNU، BSD و NeXTSTEP می‌آید؛ یعنی به خانوادهٔ UNIX/BSD نزدیک است و ربطی به Linux ندارد.

در مورد محصولات آیفون، سیستم‌عامل iOS هم مثل macOS از همان خانوادهٔ Darwin/XNU می‌آید، اما بهتر است آن را Unix-like یا Unix-derived بدانیم.

همین تفاوت ریشه‌ای مهم است!

وقتی یک شرکت مثل Apple کل زنجیره را کنترل می‌کند — از سخت‌افزار تا kernel، درایورها، security model، sandbox، API و تجربهٔ کاربری نتیجه می‌شود محصولی که با منابع کمتر، پایداری و راندمان بیشتری می‌دهد.

یا شرکت سونی هم در دنیای PlayStation شاید به گوشتون نخورده، ولی نام سیستم‌عاملش اوربیس (ORBIS) هست؛ سیستم بسته، کنترل‌شده، نزدیک به سخت‌افزار، و مبتنی بر خانوادهٔ BSD/Unix-like.

سیستم‌عامل لینوکس حقیقتاً عالیه، مخصوصاً در سرور، cloud، container و اکوسیستم متن‌باز و اندروید هم یک مثال دیگه مبتنی بر این کرنل هست.

اما خانوادهٔ UNIX/BSD یک چیز دیگست! تاریخچشرو هم بخونید خواهید دید چطور شکل گرفته.

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

خبری که اومده اینه که سونی اعلام کرده از ژانویه ۲۰۲۸ تولید دیسک فیزیکی برای بازی‌های جدید PlayStation رو قطع می‌کنه و همه‌چیز دیجیتالی می‌شه.

گیت‌هاب هم در جواب این موج «مرگ مدیای فیزیکی»، یه کمپین شوخی ولی واقعی راه انداخته:

کدت رو روی CD داشته باش!

مجموعه‌ای برای برنامه‌نویس‌ها:

کد من، روی دیسک، مثل یه یادگاری از زمانی که نرم‌افزار هنوز لمس‌کردنی بود.

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

https://gh.io/cd
خب از امروز برای همیشه با هدر گارد‌ها و سرآیند‌های سنتی سی++ خداحافظی می‌کنم.

یه پچ نوشتم که با کامپایلر‌های جدید بسیار تمیز استاندارد STL رو هم وارد پروژه می‌کنه بدون نیاز به سبک سنتی include و سرآیند‌های سنتی.

تصویر مربوط به کد رو ببینید! یکیش به سبک استاندارد قبل از ۲۰ هست، یکیش به سبک ۲۰ به بعد.

یعنی کلاً سرآیند‌های سنتی حذف و با یه خط import std چیزی که لازم هست فراخوانی می‌شه.

استفاده از ماژول‌های مدرن سی++ یعنی:

- کد تمیزتر
- مراحل ساختِ قابل‌کنترل‌تر
- وابستگی‌های شفاف‌تر
- آلودگی کمتر در توسعه
و در بسیاری از پروژه‌ها سرعت کامپایل بسیار بیشتر!

از این مثال gist برای آزمایش و تجربهٔ سی++ جدید استفاده کنید:

https://gist.github.com/thecompez/2bceb35bfb80107bb51d2c38fee2a4af
COMPΞZ 🧬
این مثال ترکیبی مدیریت سرآیند‌ها به سبک سنتی هست. یعنی کلی سرآیند باید include بشن. خب در پروژه‌های بزرگتر پیچیدگی میاره. مزیتش میشه نمونهٔ بعدی 👇🏼
به جای کلی سرآیند سنتی از کتابخانهٔ استاندارد همین یه دستور خط کافیست.

تعریف و خلاصهٔ کلام اینه که، کامپایلر به جای اینکه چندین سرآیند (header) را مثل متن خام وارد فایل کند، از یک رابط، interface ماژول‌شدهٔ آماده برای کتابخانهٔ استاندارد استفاده می‌کند.

در این روش، std::vector، std::string و std::println همه از طریق همین import std در دسترس‌اند.
COMPΞZ 🧬
به جای کلی سرآیند سنتی از کتابخانهٔ استاندارد همین یه دستور خط کافیست. تعریف و خلاصهٔ کلام اینه که، کامپایلر به جای اینکه چندین سرآیند (header) را مثل متن خام وارد فایل کند، از یک رابط، interface ماژول‌شدهٔ آماده برای کتابخانهٔ استاندارد استفاده می‌کند. …
از ویژگی‌های جالب‌تر اینه که شما می‌تونی بخشی از کدی که نوشتی رو فقط قابل دسترس در بیرون از اون حوزه قرار بدی!

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

یعنی خارج از اون هرجا صداش بزنی ممکن نیست کامپایل بشه، خطا خواهد داد.

برای همین وقتی به یه تابع یاکلاس یا حتی فضای نام (namespace) کلمهٔ کلیدی export قبل از اون بدی، به معنای این هست که این بخش از کد و زیر مجموعه‌هاش در دسترس از این فایل هم باشه.

یعنی قبل از C++ Modules به این صورت ما نمی‌تونستیم چیزی رو مخفی یا مطمئن مدیریتش کنیم؛ یعنی تعاریف یا همون (implementation) رو باید از هم جدا می‌کردیم؛ مثلاً با جدا کردن .hpp و .cpp، استفاده از namespace ناشناس، static، یا الگوهایی مثل PIMPL گزینه‌های کاربردی بودن که پیچیدگی خاصی هم ایجاد می‌کرد.

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

این فقط تمیزتر سازی کد نیست؛ معماری رو قابل‌کنترل‌تر می‌کنه.
COMPΞZ 🧬
از ویژگی‌های جالب‌تر اینه که شما می‌تونی بخشی از کدی که نوشتی رو فقط قابل دسترس در بیرون از اون حوزه قرار بدی! در این مثال تابع sayHello می‌تونه از بیرون در دسترس باشه، اما تابع secretMessage فقط داخل کلاس و همون فایل در دسترسه. یعنی خارج از اون هرجا صداش…
جالبه بدونی توی منبع کد GenyConnect هم از همین ویژگی‌ها استفاده کردم.

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

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

برای همینه همش می‌گم اگه روی استاندارد ۱۱ موندی و همون مدل داری پیش میری، باید بهت بگم که متأسفانه داری به خودت ظلم می‌کنی! با این سرعت پیشروی فناوری باید به‌روز باشی و اگرنه شدید عقب مونده خواهی شد.
Media is too big
VIEW IN TELEGRAM
وقتی می‌زنه تو سرت برداری یه CRT شبیه‌سازی کنی واسه بازسازی نوشتالژی خودت. 😒

روی نسخهٔ CPU رندر فریم به فریم انجام شده! اگه با Vulkan رندر بگیرم روان و عین آب خوردن خواهد شد.

چرا اینو ساختم؟
چون مانیتور‌های امروزی رندر و سبک تصویر‌سازی بازی‌های قدیمی رو پشتیبانی نمی‌کنن.

در واقع من مانتیور CRT رو شبیه سازی کردم که به کمک این برنامه می‌تونه خروجی رندر شبیه‌ساز‌ها رو به نسخهٔ بومی تبدیل کنه.
Please open Telegram to view this post
VIEW IN TELEGRAM