رفتن به مطلب
جامعهٔ برنامه‌نویسان ایران

کامبیز اسدزاده

بنیـــان گذار
  • تعداد ارسال ها

    414
  • تاریخ عضویت

  • روز های برد

    227

آخرین بار برد کامبیز اسدزاده در 1 بهمن

کامبیز اسدزاده یکی از رکورد داران بیشترین تعداد پسند مطالب است !

اعتبار در سایت

565 عالی

درباره کامبیز اسدزاده

اساتید
توسعه‌ دهنده بَک اِند
توسعه‌ دهنده فرانت اِند
توسعه دهنده فول اِستَک
منتور‌ها و مشاورین
  • تاریخ تولد 12 فروردین 1368

اطلاعات شبکه‌ای

موقعیت

  • شهر
    اورمیه

آخرین بازدید کنندگان نمایه

5,465 بازدید کننده نمایه
  1. کامبیز اسدزاده

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

    بله البته، به نظرم این لینک مرجع خودِ کیوت کافی باشه، تمامی دستورات و مسائل فنی داخلش هست. البته پیشنهاد من این هست صرفاً از روی کنجکاوی و برای آشنایی بیشتر با کیوت ۶ امتحانش کنید و نه برای ارتقاء محصولاتتون، برای این کار پیشنهادم اینه که منتظر حداقل کیوت ۶.۲ باشید.
  3. کامبیز اسدزاده

    سلام، خیر متأسفانه، نسخهٔ ۵.۱۵.۰ به بعد از کیوت تماماً بر پایهٔ نصابِ آنلاین قابل دریافت هستند. مگر اینکه منابع‌کدش رو دریافت و خودتون کامپایل کنید که قطعاً زمان‌بر و سخت‌ خواهد بود.
  4. خالق لینوکس از اینتل به خاطر پشتیبانی نکردن از حافظه‌های ECC انتقاد کرده است. او به پشتیبانی غیررسمی از ECC در پردازنده‌های AMD به‌عنوان اتفاقی مثبت نگاه می‌کند. این ماجرا برای توسعه‌دهدنگان قطعاً بسیار مهم و کاربردی است، بنابراین به عنوان نماینده‌ای از جامعهٔ برنامه‌نویسان و یک فرد با تجربه در بحث برنامه‌نویسی و مشکلات آن در مدیریت حافظه نظرات توروالدز برای جامعهٔ ما اهمیت دارد. لینوس توروالدز، خالق لینوکس، به‌تازگی پست جدیدی در انجمن آنلاین Real World Tech با محوریت حافظهٔ کد تصحیح خطا (ECC) منتشر کرده است تا از اینتل انتقاد و از ای‌ام‌دی (AMD) تمجید کند. بر اساس گزارش تامز هاردور، توروالدز می‌گوید اینتل باید حافظه‌های ECC را به قطعاتی مین‌استریم تبدیل کند و پشتیبانی از این حافظه در پردازنده‌های سری رایزن ای‌ام‌دی اتفاق بسیار خوبی است. توروالدز با بیان اینکه «ECC کاملا پراهمیت است» اعلام کرد اینتل تأثیر به‌سزایی روی رونق نداشتن بازار حافظه‌ی ECC گذاشته است. خالق لینوکس می‌گوید: «بروید و به‌دنبال DIMM-های ECC بگردید؛ پیدا کردن آن‌ها واقعا سخت است. بله، احتمالا به لطف ای‌ام‌دی، وضعیت DIMM-های ECC اخیرا کمی بهتر شده و این دقیقا همان نکته‌ای است که می‌خواهم به آن اشاره کنم.» توروالدز بارها به ضررهایی که اینتل به صنعت ECC و حتی کاربران وارد کرده است اشاره می‌کند و صحبت‌هایش را با کلماتی توهین‌آمیز خطاب ‌به اینتل ادامه می‌دهد. توروالدز می‌گوید تیم آبی با پشتیبانی نکردن از ECC در مادربردها و پردازنده‌هایی که برای کاربران عادی عرضه می‌کند، باعث شده است استفاده از حافظه‌های ECC زیاد نباشد. خالق لینوکس به مشکلاتی با محوریت آسیب‌پذیری روهمر (Rowhammer) اشاره می‌کند و می‌گوید این دسته از مشکلات امنیتی جدی، از طریق حافظه‌های ECC به‌راحتی رفع می‌شوند. سلول‌های حافظه‌ی DRAM می‌توانند انرژی خود را به دیگر سلول‌های حافظه منتقل کنند. به‌طور معمول این اتفاق صرفا به خاطر نقص در حافظهٔ اصلی سیستم رخ می‌دهد و نهایتاً به بروز خطا در حافظه منتهی می‌شود؛ اما حملات مبتنی بر آسیب‌پذیری روهمر از این نقص به‌عنوان مکانیسمی برای دسترسی به سیستم بهره می‌گیرند. توروالدز می‌گوید هنگام توسعه دادن کد برای کرنل سیستم‌ عامل، دست‌و‌پنجه نرم کردن با حافظهٔ استاندارد بسیار سخت است. او به‌طور دقیق‌تر به این موضوع اشاره می‌کند که در اکثر اوقات نمی‌توان به‌طور دقیق فهمید خطای غیر قابل توضیح کرنل در کجا رخ داده است. در واقع این خطاها در اغلب اوقات ممکن است سخت‌افزاری باشند، نه نرم‌افزاری؛ خطاهایی که به‌راحتی توسط ECC قابل رفع هستند. توروالدز از ای‌ام‌دی به خاطر پشتیبانی غیررسمی از ECC تمجید می‌کند. او خوشحال است که ای‌ام‌دی تصمیم گرفته این پشتیبانی را به پردازنده‌های سری رایزن که در دسترس مشتریان عادی قرار می‌گیرند گسترش دهد. بدین ترتیب ای‌ام‌دی کاربران را قادر می‌سازد بدون پرداخت هزینه‌ی گزاف تهیهٔ قطعات سخت‌افزاری در سطح سرور، به ECC دسترسی داشته باشند. اینکه پشتیبانی غیررسمی از ECC به گسترش استفاده از آن کمک می‌کند، موضوعی است که نیاز به بحث دارد؛ زیرا در اغلب اوقات ECC به‌درستی کار نمی‌کند. اما خالق لینوکس می‌گوید حتی پشتیبانی غیررسمی، قدمی روبه‌جلو در جهت درست محسوب می‌شود.
  5. کامبیز اسدزاده

    سلام و خوش آمدید، قبل از هر چیز چون تازه کار هستید پیشنهاد می‌کنم در ویندوز به سراغ Mingw نرید، مگر مجبور باشید. با همون MSVC برنامه‌های خودتون رو کامپایل کنید و یا Clang. در کل، خطایی که گرفتین به خاطر عدم شناسایی تابع اصلی یعنی main() هستش. پیشنهاد می‌کنم تابع خودتون رو اصلاح کنید مطمئن بشید که main در برنامهٔ شما به درستی پیاده شده، سپس کامپایل و نتیجه رو ببینید. مثال صحیحی از تابع main در سی++ #include <iostream> int main() { std::cout << "Hello World!"; return 0; } همچنین با توجه به اینکه اشاره شده تازه شروع به یادگیری کردین، پیشنهاد می‌کنم مقالات زیر رو با دقت مطالعه کنید، در برخی از آن‌ها به لینک‌ها و مراجع آموزنده‌ای اشاره کردم. موفق باشید.
  6. یک حرکت خوشحال کننده در آغاز سال ۲۰۲۱ با عنوان آزاد شدن خدمات گیت‌هاب برای کشور عزیزمان صورت گرفته است؛ ساعاتی پیش «نت فرایدمن»، مدیرعامل گیت‌هاب اعلام کرد که این شرکت مجوزی از دولت آمریکا دریافت کرده تا خدماتش را به توسعه‌دهندگان ایرانی ارائه دهد. این سرویس‌ها می‌تواند در اختیار افراد یا سازمان‌ها و به شکل رایگان یا اشتراکی قرار گیرد. به قول مدیر عامل گیت‌هاب، همهٔ توسعه‌دهنده‌ها باید در استفاده از گیت‌هاب آزاد باشند و مهم نیست که در کجا زندگی می‌کنند. البته، با توجه به سوابق تحریمی پیشنهاد می‌شود در زمان استفاده از این خدمات، از مخازن کد‌های خودتان نسخهٔ پشتیبان تهیه کنید تا در صورت اعمال محدودیت‌ با مشکل خاصی مانند از دست دادن مخازن و یا عدم دسترسی به مخازن مواجه نشوید. منبع خبر اصلی : https://github.blog/2021-01-05-advancing-developer-freedom-github-is-fully-available-in-iran/
  7. خب پوشهٔ نهایی بعد از make رو برای install کجا زدی؟ به چه روشی داری به پروژه اضافش می‌کنی؟ تحتِ چه ابزاری؟ QMake یا CMake؟ البته پیشنهاد من اینه که روی هر پلتفرمی که هستی، بوست رو تحت مخازن اصلی سیستم‌عامل نصب کن تا دیگه نیازی نباشه کامپایلش کنی.
  8. کامبیز اسدزاده

    سلام، سوأل شما بسیار کلی هستش، پاسخش می‌تونه بسیار متنوع باشه. کیوت در نسخهٔ کنونی و بعد از نسخه‌های ۵.۱۰ می‌تونه بر اساس سفارشی سازی و خودکار کاملاً بر پایهٔ GPU مواردِ گرافیکی را پردازش کنه مثل OpenGL و Direct3D و حتی در نسخه‌های جدید‌تر از Vulkan و Metal که بر اساس نوع پلتفرم پشتیبانی می‌کند. به طور کلی در حالت پیشفرض اگر سیستم مقصد دارای پردازندهٔ گرافیکی با پشتیبانی از Api‌هایی که نام بردیم باشد، تمامی بار پردازشیِ گرافیکی جهت رندر بر روی کارت گرافیکی (GPU) خواهد بود. در غیر این صورت اگر فاقد پردازندهٔ گرافیکی باشد، به صورت خودکار بر روی CPU اعمال می‌شود. اما نوع دیگری از سوأل شما مرتبط پردازش موازی هستش که پاسخش می‌تونه پیشنهادِ استفاد از مواردی چون سکو‌های Cuda و یا OpenCL است که به شما اجازه میده پردازش‌های لازم رو بر روی پردازندهٔ گرافیکی اعمال کنید.
  9. این یک نسخهٔ مفهومی هست، نسخه‌ای که در زمان ارسال پست بر روی وب‌سایت ساخته شده با استفاده از Qt و Cutelyst بود. نسخهٔ بعدی از اون باز به عنوان مفهومی بر اساس Drogon Framework ساخته شده، و نسخه‌ای هم بر اساس Boost در دست توسعه هست.
  10. کامبیز اسدزاده

    سلام، برای این کار ابتدا سمت سی++ توابعی که باید مقادیر لحظه‌ای از مصرف منابع رو برای شما برگردونن رو پیاده‌سازی کنید، سپس برای ارسال و هماهنگی در سمت QML از WorkerScript استفاده کنید.
  11. کامبیز اسدزاده

    سلام، شما می‌تونید با جاوا و یا کاتلین شروع کنید. در این باره جستجو کنید و آموزش‌های مرتبط با این حوزه را دنبال کنید.
  12. از کامپایلر MSVC2017 و به بالا مثل MSVC2019 استفاده کن، این نسخه‌ای که به کار گرفتی حتی بتونی کامپایل هم کنی قطعاً مشکلاتی با این نسخه از بوست خواهد داشت.
  13. کامبیز اسدزاده

    درود، کد شما کمی نا منظم بود، به هر حال پیشنهاد می‌کنم نیاز خود مشابه این روش پیاده‌سازی کنید. #ifndef MYCLASS_HPP #define MYCLASS_HPP #include <QObject> #include <QByteArray> class MyClass : public QObject { Q_OBJECT Q_PROPERTY(QByteArray arr READ arr WRITE setArr NOTIFY arrChanged) Q_PROPERTY(quint8 length READ length WRITE setLength NOTIFY lengthChanged) public: explicit MyClass(QObject *parent = nullptr); ~MyClass(); public: const QByteArray arr() const; quint8 length() const; signals: void arrChanged(); void lengthChanged(); public slots: void setArr(const QByteArray& v); void setLength(quint8 l); private: QByteArray m_arr; quint8 m_length; }; #endif // MYCLASS_HPP #include "myclass.hpp" #include <QDebug> MyClass::MyClass(QObject *parent) : QObject(parent) { QByteArray myArr; myArr.push_back("A"); myArr.push_back("B"); myArr.push_back("C"); myArr.push_back("D"); myArr.push_back("E"); setArr(myArr); } MyClass::~MyClass() { } const QByteArray MyClass::arr() const { return m_arr; } quint8 MyClass::length() const { return m_length; } void MyClass::setArr(const QByteArray& v) { if(m_arr.isNull()) { m_arr = v; setLength(m_arr.length()); } emit arrChanged(); } void MyClass::setLength(quint8 l) { m_length = l; } import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15 import com.org.myclass 1.0 Window { width: 640 height: 480 visible: true title: qsTr("Hello World") MyClass{ id: myClass } Component.onCompleted : { print("data : " , myClass.arr) print("length : " , myClass.length) } }
  14. سلام، اگه بیلد کردی یعنی کامپلیلش کردی و کافیه به پروژه اضافش کنی. بهتره اشاره‌ای به نسخهٔ بوست، کیوت و پلتفرمی که استفاده می‌کنی داشته باشی تا بهتر راهنمایی کنیم. معمولاً روش کامپایل در همهٔ کتابخانه‌ها یکسان هستند. البته از ابزار‌هایی مثل conan، brew، vcpkg هم می‌تونید برای نصب این نوع کتابخانه‌ها استفاده کنید.
  15. کامبیز اسدزاده

    در پاسخ قبلی به این لینک اشاره کردم : https://doc.qt.io/qt-5/qtqml-cppintegration-topic.html نمونه کد‌های مشخصی داره، کافیه کلاس رو از نوع QObject مشتق کنید و سپس به یکی از روش‌های موجود، تابع خودتون رو پیاده سازی کرده و در نهایت برای QML رجیسترش کنید. برای مثال می‌تونید از روش‌های qmlRegisterType و rootContext استفاده کنید که روش‌های متفاوتی هستند. همچنین این مستندات رو می‌تونید بررسی کنید : https://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html
×
×
  • جدید...