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

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

We create because the world deserves better code.

https://linktr.ee/compez
Download Telegram
حالتِ دانینگ-کروگر می‌دونی یعنی چی؟
یعنی وقتی:

یه تیم ۱۲ سال از عمرش رو گذاشته، نزدیک ۲ میلیارد دلار هزینه کرده، هزاران متخصص شب و روز کار کردن تا یه بازی منتشر بشه.

بعد یه ایرانی خود خفن پندار که همیشه که آخرین دستاورد فنی زندگیش عوض کردن عکس پروفایل تلگرام بوده، میاد با قیافه میگه:

«از گرافیکش خوشم نیومد! بده»
!

تو آخه چه می‌فهمی موتور بازی چیه، آرتیست بازی چیه! برو تو کوچتون همون گِل بازیتو کن تورو چه به نظر دادن تو کارهای طراحی برنامه‌نویسی.
جامعه‌ها معمولاً بر اساس «درک» تقسیم نمی‌شوند، بلکه بر اساس نحوه پردازش و واکنش به واقعیت تحت فشار شکل می‌گیرند.

یک گروه واقعیت را می‌بیند اما به‌خاطر هزینه‌های اجتماعی، ترس یا ناتوانی در اثرگذاری، واکنش را سرکوب می‌کند.

گروه دیگر همان واقعیت را از طریق فیلترهای ساده‌ساز (رسانه، باورهای آماده، یا عادت ذهنی) دریافت می‌کند و آن را یا طبیعی تلقی می‌کند یا اصلاً مسأله نمی‌بیند.

در واقع، مسأله این نیست که همه یک چیز را نمی‌بینند؛ بلکه مسأله این است که دیدن، برای همه به یک معنی واحد تبدیل نمی‌شود!

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

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

شعار “Only on PlayStation” صرفاً یک برچسب تبلیغاتی نبود، بلکه یک مرزبندی فرهنگی بود: اینکه بعضی تجربه‌ها فقط روی همان سخت‌افزار معنا پیدا می‌کردند. بازی‌هایی مثل Metal Gear Solid یا Gran Turismo دقیقاً نمونه‌های همین فلسفه بودند!

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

اگر کمی جلوتر برویم، این هویت با عناوینی مثل God of War تبدیل به یک امضای فرهنگی شد.

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

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

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

مدت‌هاست صنعت بازی حس و حال گذشته رو نداره و با این تصمیمات می‌شه گفت بر می‌گردیم به نوستالژی گذشته! 👌🏼
COMPΞZ 🧬
بین کامپایل یه تحلیل هم حواسمون به پادشاه باشه! معتقدم که صحنه‌های جرم رو خواهد دید. همین موضوع صحنهٔ جرم رو توی کانالم جستجو کن خواهی دید هرجا گفتم می‌بینه و دیده! الآن در وضعیت فعلی ماهانه صحنهٔ جرم نزدیک به قبل رو دوباره دیده (چند کندل قبل) و احتمال هم…
خب صحنهٔ جرم دوم رو هم‌ دید.😉 سال‌هاست توی این کانال هرچی و هر نقطه‌ای رو که گفتم عین همون رو دیده! می‌تونید جستجو کنید.

درسشو خوندم؟ نه! پکیج گرفتم یاد گرفتم؟ نه!

ترید رو نمی‌شه با توهم فروخت! یه پکیج فروش شغلش پکیج فروشیه نه ترید! گول تبلیغاتشونو نخور.

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

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

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

خبر فقط شتاب دهندست!
و منطق، احساس حالیش نیست، قانونه.

⚠️ درضمن، اگه دارایی چیزی توی صرافی کوینکس دارید بکشید بیرون. ⚠️

طولی نمی‌کشه بن خواهید شد.
Please open Telegram to view this post
VIEW IN TELEGRAM
COMPΞZ 🧬
خب صحنهٔ جرم دوم رو هم‌ دید.😉 سال‌هاست توی این کانال هرچی و هر نقطه‌ای رو که گفتم عین همون رو دیده! می‌تونید جستجو کنید. درسشو خوندم؟ نه! پکیج گرفتم یاد گرفتم؟ نه! ترید رو نمی‌شه با توهم فروخت! یه پکیج فروش شغلش پکیج فروشیه نه ترید! گول تبلیغاتشونو نخور.…
درضمن اگه توی این حوزه فعالیتی دارید، یک کیف تمیز با کلید خصوصی و‌اژه‌های کلیدی تمیز و خام بسازید.

چیزی که به هیچ یک از صرافی‌های ایرانی ارسال یا دریافتی نداشته باشه.

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

چنین صرافی‌هایی با موضوع تحریم به خصوص برای ایران مشکلی ندارند، چون غیرمتمرکز به شمار میان.

دارایی شما روی کیف پول شماست نه حساب صرافی، یعنی صرافی این وسط فقط یک واسطهٔ معاملاتیه و نه بیشتر.

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

البته سلیقه‌ایه و ممکنه بعضی‌ها با این تیپ صرافی‌ها حالی نکنن.

برای من فرقی نداره چون ماه‌هاست هیچ تریدی نمی‌کنم بیشتر با برنامه‌نویسی مشغولم اما به نظر من عصر عصر صرافی‌هایی‌ خواهد بود که غیرمتمرکز هستند.

فکر نمی‌کنم در بلند مدت مثل گذشته بایننس و امثالش پرچم‌دار بازارهای رمز ارز‌ها باقی بمونن.

یعنی هرچی غیرمتمرکز‌تر و کنترل در دست کاربر باشه مطمئن‌تره و جای نگرانی ندارد.
به به...✔️ درخواستمون تأیید شده و رفتیم روی SourceForge و AlternativeTo 😌
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
COMPΞZ 🧬
به به...✔️ درخواستمون تأیید شده و رفتیم روی SourceForge و AlternativeTo 😌
اهمیت SourceForge روی گوگل بسیار زیاه! 👌به مرور زمان موثر‌تر خواهد شد. باید بشینم روی سایت کار کنم و SEO رو بکشم بالا. قاماس قاماس یولداش!
Audio
🎶یانمیشدی اوجاق آتشی، بیر کوزو بیر جور
انسانا باخین، خاصیّتی بیر جور، اوزو بیر جور
الله یارادیبدیر قاشی بیر جور، گؤزو بیر جور
Please open Telegram to view this post
VIEW IN TELEGRAM
چهارچوب Qt می‌خواهد QML/Qt Quick را به یک فریم‌ورک UI چندزبانه تبدیل کند و اولین قدم جدی آن، پشتیبانی از #C است.

تا به الآن اگر می‌خواستیم با سی‌شارپ از Qt استفاده کنیم، باید از bindingها استفاده می‌کردیم و عملاً به سبک برنامه‌نویسی Qt/CPP فکر می‌کردیم. اما Qt Bridges می‌گوید:

شما منطق برنامه را با زبان خودت (مثلاً سی‌شارپ) بنویس، و UI را با QML؛ ما بین این دو پل می‌زنیم.
 
مثلاً:
public class Backend
{
public string Message => "Hello from C#";
}

و بعد در QML:
ApplicationWindow {
Backend { id: backend }

Text {
text: backend.message
}
}

بدون اینکه مجبور باشی QObject، moc، signal/slot و الگوهای سنتی Qt را مستقیم استفاده کنی.

چرا Qt این کار را می‌کند؟

چون وضعیت UI در دنیای #C به‌خصوص خارج از ویندوز، پراکنده و نامطمئن شده است:
فناوری طراحی WPF تقریباً فقط ویندوز است.
همچنین WinUI فقط در ویندوز است.
و یا MAUI از لینوکس به‌صورت رسمی پشتیبانی نمی‌کند.

و حتی توسعه‌دهندگان Embedded Linux و Desktop Linux گزینه‌های محدودی دارند.  

کیوت می‌خواهد بگوید:
«اگر بک‌اند برنامهٔ شما C#، Rust، Swift یا Python است، لازم نیست آن را دور بریزید؛ فقط UI را با Qt Quick بسازید.»

نکتهٔ قابل توجه:

در واقع، Qt دارد همان معماری‌ای را رسمی می‌کند که خیلی از پروژه‌های مدرن Qt به آن رسیده‌اند:
Business Logic (C#, Rust, Python, ...)

Qt Bridge

QML / Qt Quick

GPU Renderer

یعنی QML عملاً دارد از یک «زبان UI مخصوص ++C» به یک UI Runtime مستقل از زبان تبدیل می‌شود و این یعنی گستردگی بیشتر در دنیای طراحی و توسعه.

https://www.qt.io/blog/csharp-ui-framework-via-bridging-technology

این هم افزونهٔ ویژوال استودیو برای پشتیبانی از این موضوع:

https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtBridgeCSharp
همینطوری اتفاقی این ویدئو رو دیدم که برای ۹ سال پیش هست!

اینو زمانی ساختنش که هوش مصنوعی و ابزار‌های امروزی وجود نداشت و جالب‌ترش این که اصلاً CGI نبوده! یعنی با افتر افکت و یا امثال این‌ها برای تبلیغات نساختنش همه چیزش کامل مهندسی شده.

https://www.youtube.com/watch?v=FG_l1oacWoQ

در سال ۲۰۱۷، Gatorade برای ساخت این تبلیغ، یه دستگاه عظیم به اسم «3D Liquid Printer» ساخت که ۲۰۴۸ نازل آب داشت و برای کنترل نازل‌هاش یک برنامه‌نویسی بسیار دقیق انجام داده.

هر قطره آب باید دقیقاً در زمان و مکان درست رها می‌شد تا شکل یه انسان در حال حرکت ساخته بشه! این کار فقط با حرکت واقعی یه ورزشکار (از طریق Motion Capture) ممکن شد و بعد این داده‌ها توسط برنامه‌نویسی بسیار حرفه‌ای دستورالعمل‌ها رو به به دستورات دقیق برای نازل‌ها تبدیل کردن یعنی داده‌های حرکت رو با نرم‌افزار پردازش کردن و به نازل‌ها دستور می‌دادن که دقیقاً کی آب رو رها کنن.

سیستم کنترل این دستگاه آنقدر دقیق بود که نازل‌ها با دقت ۲ میلی‌ثانیه (و حتی میکروثانیه) هماهنگ می‌شدن! بدون برنامه‌نویسی پیشرفته و سیستم کنترل هوشمند، این حجم از هماهنگی غیرممکن بود.

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

- مکانیک و الکترونیک (ساخت دستگاه)
- نرم‌افزار و برنامه‌نویسی (کنترل دقیق نازل‌ها)
- عکاسی با سرعت بالا
COMPΞZ 🧬
همینطوری اتفاقی این ویدئو رو دیدم که برای ۹ سال پیش هست! اینو زمانی ساختنش که هوش مصنوعی و ابزار‌های امروزی وجود نداشت و جالب‌ترش این که اصلاً CGI نبوده! یعنی با افتر افکت و یا امثال این‌ها برای تبلیغات نساختنش همه چیزش کامل مهندسی شده. https://www.yout…
بعد طرف میاد با AI دو تا کد می‌نویسه واسه ما مدعی متخصص بودن می‌کنه.

مهندسی یعنی این! قدرت برنامه‌نویسی رو ببین فقط! کنترل قطرات آب در این سطح به من اینو ثابت کرد که یه بی‌سواد خالصم! 😁 چنان رفتم تو شک که هیچ واژه‌ای برای تعریفش پیدا نمی‌کنم.

بعد طرف میاد ذرت میگیره نخود می‌خره می‌گه ما پیروزیم... خاک عالم بر سرت با اون کرونا یاب ساختنت.
COMPΞZ 🧬
CGI
منظور از CGI یعنی Computer Generated Imagery
یعنی هر چیزی که در فیلم، تبلیغ، بازی یا انیمیشن به صورت دیجیتال و با کامپیوتر ساخته بشه، بهش می‌گن CGI.
COMPΞZ 🧬
همینطوری اتفاقی این ویدئو رو دیدم که برای ۹ سال پیش هست! اینو زمانی ساختنش که هوش مصنوعی و ابزار‌های امروزی وجود نداشت و جالب‌ترش این که اصلاً CGI نبوده! یعنی با افتر افکت و یا امثال این‌ها برای تبلیغات نساختنش همه چیزش کامل مهندسی شده. https://www.yout…
هرچقدر دوباره می‌بینم صد‌ها بار خودمو فحش میدم که کاش اینو نمی‌دیدیم! اینهمه جزئیات قطره به قطره! نازل به نازل! کد به کد! شات به شات!

اونم بدون هیچ گونه انیمیشن یا هوش مصنوعی در یک دهه قبل از این.

با کمی تحقیق بیشتر متوجه شدم برای مدیریت و کنترل نازل‌ها برنامهٔ اختصاصی خودشونو ساختن به نام Flair که با چی ساخته شده؟ با خدایگان ++C خلق شده. 😐 چرا؟ چون نیاز به کنترل دقیق سخت‌افزار و زمان‌بندی میکروثانیه‌ای توی این خروجی هست.

تا پند‌هایی دیگر به درود!
فساد هم نکنید...
Please open Telegram to view this post
VIEW IN TELEGRAM
یک سوألی هست که بارها ازم پرسدیه شده یه دوست عزیز هم امروز دوباره پرسید که حس کردم یه توضیح بیشتری هم بدم بد نیست.

سوأل اینه که Qt بهتره یا Flutter؟


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

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

اما اگه مثل من بهینگی، کنترل پرفرمنس و کارآیی بالا واستون مهمه، Qt و تمام! هیچ بحثی هم نداره.

حالا چرا؟

چون در Qt، مخصوصاً با QPA (Qt Platform Abstraction) و Qt Quick، تو مستقیماً با یک انتزاعی مینیمال از سیستم‌عامل کار می‌کنی، نه یک موتور رندرینگ مستقل که خودش همه چیز را از صفر شبیه‌سازی کند.

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

در مقابل، Flutter یک موتور رندرینگ کامل (Skia + Flutter Engine) را وسط می‌گذارد. این یعنی کنترل UI فوق‌العاده یکپارچه و زیبا می‌دهد، اما بهایش این است که تو دیگر مستقیم با native سستم رندرینگ بومی کار نمی‌کنی؛ بلکه با یک لایه مستقل تعامل داری که خودش تصمیم می‌گیرد چطور همه چیز را روی GPU بکشد.

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

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

خب بدون تعارف و بدون تعصب بخوام بگم،‌Flutter سرعت توسعه و تجربه طراحی یکپارچه سریعی رو ارائه می‌ده، اما Qt کنترل سطح پایین و کارایی قابل اتکا در لبه سیستم رو تضمین می‌کنه.

به خاطر همین خیلی‌‌ها تصور می‌کنن چون فلاتر چیز‌های آماده زیاد داره پس بهترین گزینست! خب نه من UI همین GenyConnect و GenyDL رو با Qt ساختم! حتی نسخهٔ موبایلش رو!؟ پس چطور طراحی می‌کنم؟ اگه با فلاتر طراحی می‌کردم خب ساده‌تر بود قطعاً تعداد کد‌هام کمتر می‌شد و نیازی به بازنویسی یک سری کامپوننت‌ها نداشتم! اما واسم اما خروجی چیزی نمی‌شد که دلم می‌خواست.

من شخصاً کارآیی رو قربانی سادگی در توسعه نمی‌کنم. ولی بله اگه لازم باشه یه چیزیرو ۱ روزه بیارم بالا که فقط بگم یه MVP سادست، حتی از HTML/CSS/JS ساده هم استقبال می‌کنم چرا که نه!

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

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

طرف احمق بوده همهٔ جزئیات رو از صفر بازطراحی کرده؟ یادمه ۳..۴ سال پیش یه بحثی سر این بو که چرا حتی طرف از QML استفاده نکرده! رفته در پایین‌ترین لایه‌های انتزاعی شروع کرده حتی یه Label یا Button ساده رو از صفر با ++C نوشته! اون موقع من می‌گفتم این دیگه چه خریه!!! ولی حالا می‌بینم نه اینا کارشون درسته! اگه می‌تونه کسی اکوسیستم خودش رو به بلوغ برسونه چرا که نه!

خب از نظر اکثر ایرانی‌ها اینطوریه که چرخ رو نباید از اول اختراع کرد! ولی تلگرام اگه این کارو نکرده بود الآن شاید خیلی وقت پیش منقرض شده بود ولی چیزی که به سرش قسم می‌خورن سرعت و کارآیی بالاشه که مدیون Qt هست. 😝

برخی از دلایل عمیقش رو هم توی این پست آورده بودم.

https://t.me/compezeth/3940
COMPΞZ 🧬
یک سوألی هست که بارها ازم پرسدیه شده یه دوست عزیز هم امروز دوباره پرسید که حس کردم یه توضیح بیشتری هم بدم بد نیست. سوأل اینه که Qt بهتره یا Flutter؟ بارها و بارها این‌ها رو مقایسه کردیم من از عمق جزئیات بررسی می‌کنم نه سطحی و به دید علاقه داشتن‌ها یا راحت…
این نمونه‌ها طراحی رو من چند سال پیش ساخته بودم به عنوان یک مثال از باز‌سازی لانچری مشابه لانچر Playstation 5 بود و یه نمونه برای موبایل که اون موقع حتی هوش مصنوعی هم وجود نداشت.

https://www.behance.net/gallery/159035077/Project-Playcube

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