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

قاسم رمضانی منش

مدیران مرجع
  • تعداد ارسال ها

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

  • روز های برد

    25

آخرین بار برد قاسم رمضانی منش در 27 اردیبهشت

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

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

62 عالی

3 دنبال کننده

درباره قاسم رمضانی منش

کاربـــر رسمی
میانجی گر‌ها
  • تاریخ تولد 9 آذر 1378

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

موقعیت

  • شهر
    Esfahan

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

1,592 بازدید کننده نمایه
  1. قاسم رمضانی منش

    با سلام خدمت همهٔ دوستان عزیز، ۲۴ اردیبهشت که جلسهٔ اوّل صوتی گروه Advanced C++ Community تحت عنوان «معرفی منابع آموزشی سی‌پلاس‌پلاس» برگزار شد و منابعی که داخل جلسه مطرح شد: منابع آموزش زبان سی‌پلاس‌پلاس اگر می‌خواهید به‌صورت تقریباً سریع و خلاصه شروع به یادگیری برنامه‌نویسی +‌ زبان سی‌پلاس‌پلاس بکنید، سایت Learn CPP،‌ می‌توانید خیلی خلاصه و به‌روز شروع به توضیح برنامه‌نویسی با زبان سی‌پلاس‌پلاس بکنید. برای یادگیری صرفاً زبان سی‌پلاس‌پلاس،‌ تماماً استاندارد ۱۱؛ به‌عنوان برنامه‌نویسی که می‌خواهد سراغ زبان سی‌پلاس‌پلاس بیاید. کتاب آقای بیارنه استراستروپ، The C++ Programming Language می‌تواند بهترین مرجع برای این امر باشد. برای شروع یادگیری برنامه‌نویسی + زبان سی‌پلاس‌پلاس از زبان سازندهٔ زبان (آقای بیارنه استراستروپ) کتاب Programming -- Principles and Practice Using C++ شروع به یادگیری بکنید. منابع Best Practice برای زبان سی‌پلاس‌پلاس برای یادگیری پیاده‌سازی Design Patternهای مختلف و General با استفاده از Templateها کتاب Modern C++ Design پیشنهاد می‌شود. برای شروع یادگیری Design Patternها و روش‌های Refactoring، سایت Guru Refactoring پیشنهاد می‌شود. برای یادگیری نکات حرفه‌ای و ترفندهای زبان سی‌پلاس‌پلاس، کتاب Effective Modern C++ از آقای Scott Mayer شدیداً پیشنهاد می‌شود. برای نوشتن کدهای مطابق و همخوان با استاندارد سی‌پلاس‌پلاس مدرن، مقالهٔ‌ ISO C++ Core Guideline پیشنهاد می‌شود. (برای رعایت بهتر این قوانین در IDEهای مختلف، می‌توانید از پلاگین CppCheck استفاده بکنید). منابع تکمیلی برای قابلیّت‌های زبان سی‌پلاس‌پلاس برای شروع یادگیری حرفه‌ای و کامل Templateها در زبان سی‌پلاس‌پلاس، کتاب C++ Templates Complete Guide پیشنهاد می‌شود. (برای فقط آشنایی با Templateها در زبان سی‌پلاس‌پلاس، صرفاً مطالعه تا فصل چهار کافی‌ست) برای شروع یادگیری و آشنایی با برنامه‌نویسی موازی تحت کتابخانهٔ استاندارد STL Thread، کتاب C++ Concurrency In Action از آقای Anthony Williams پیشنهاد می‌شود. (برای فقط آشنایی با Concurrency در زبان سی‌پلاس‌پلاس، صرفاً مطالعه تا فصل Memory Model کافی‌ست). منابع آنلاین و تکمیلی زبان سی‌پلاس‌پلاس برای جست‌جو مابین کتاب‌ها/مقاله‌ها/کتابخوانه‌های زبان سی‌پلاس‌پلاس، یکی از بهرین مرجع‌ها می‌تواند مخازن Awesome داخل Github باشد: Awesome CPP. برای دنبال گفت‌گوهای سی‌پلاس‌پلاس با حضور اعضاء کمیتهٔ سی‌پلاس‌پلاس، می‌توانید ارائه‌های CppCon را دنبال بکنید. برای پیشمایش آنلاین آخرین نسخهٔ ارائه شدهٔ استاندارد سی‌پلاس‌پلاس، می‌توانید از سایت C++ Draft استفاده بکنید.
  2. قاسم رمضانی منش

    سلام و درود؛ دیتابیس MySQL انتخاب شد، امّا برنامه‌نویس اون قسمت من نبودم.
  3. قاسم رمضانی منش

    @axarbani با سلام؛ در مورد این کدی که ارسال کردید یه چند نکته‌ای نیاز شد که بگم: اوّل اینکه Header fileی که پیشنهاد کردید (conio.h) یک Header file منسوخ شدهٔ زمان MS-DOS برای هست که نمی‌دونم برای چی هنوز روی سیستم‌عامل Microsoft Windows هست و استفاده از این Header file‌ نه تنها از خوانایی برنامهٔ شما کم می‌کنه بلکه قابلیّت Code portability رو هم از دست میدید و برنامه‌اتون صرفاً برای یک پلتفرم قابل کامپایل خواهد بود. پیشنهاد می‌کنم که از یک روش مطابق با Standard پی‌روی کنید مثلاً به جای استفاده از تابع getch() می‌تونید از std::cin.get() استفاده کنید. و مورد دوّم، متغیرهایی که استفاده‌ای ازشون ندارید رو تعریف نکنید اینطوری باعث میشه که Compiler الکی Warning به شما بده. اکثراً استفاده‌ای از متغیرهای Command lineی که برای تابع main() ارسال میشه نداریم.
  4. قاسم رمضانی منش

    سلام؛ بهتر بود که نمونهٔ کدی که نوشتید را ارسال کنید، اگر ازsystem("puase") استفاده کنید در انتهای کد دیگه نباید پنجره تا زمان فشردن کلید Enter بسته بشه.
  5. سلام و درود با تشكر از راهنمايي شما

  6. قاسم رمضانی منش

    سلام و درود بر شما؛ خب شما باید از اون APIهایی که دو پروژهٔ مختلف به‌شما می‌دهند استفاده کنید، و فقط یک تابع Main را نگه‌داری کنید. برای مثال، ما دو Source code داریم که به این‌صورت تعریف شده‌اند: main_1.cpp: #include <algorithm> #include <iostream> #include <vector> using vec_int = std::vector<int>; void print_vector(const vec_int& in) { std::for_each(in.begin(), in.end(), [](const auto& i) { std::cout << i << std::endl; }); } int main(void) { vec_int my_vec(10); print_vector(my_vec); } و یک Source code دیگر: main_2.cpp: #include <algorithm> #include <iostream> #include <vector> #include <ctime> using vec_int = std::vector<int>; void initilization_vector(vec_int& in) { std::srand(std::time(nullptr)); std::generate(in.begin(), in.end(), []() { return std::rand() % 100; }); } int main(void) { vec_int my_vec(10); initilization_vector(my_vec); } حالا برای اینکه‌ما بتوانیم از APIهای این Source codeها استفاده کنیم ابتدا یک Header file درست می‌کنیم و اعلان‌های APIهای مورد نظرمان را داخل آن می‌نویسیم: my_api.h: #ifndef MY_API_H #define MY_API_H #include <algorithm> #include <iostream> #include <vector> #include <ctime> using vec_int = std::vector<int>; namespace api { void print_vector(const vec_int& in); void initilization_vector(vec_int& in); } // namespace api #endif // MY_API_H همچنین برای تعاریف از یک Source file دیگر استفاده می‌کنیم: my_api.cpp: #include "my_api.h" void api::print_vector(const vec_int &in) { std::for_each(in.begin(), in.end(), [](const auto &i) { std::cout << i << std::endl; }); } void api::initilization_vector(vec_int &in) { std::srand(std::time(nullptr)); std::generate(in.begin(), in.end(), []() { return std::rand() % 100; }); } حال به راحتی می‌توانیم در پروژهٔ تازه ایجاد کردهٔ خودمان از این APIهایی که از دو Source code مختلف با دو Main جدا جمع‌آوری شده را استفاده کنیم: main.cpp: #include "my_api.h" int main(void) { vec_int my_vec(10); api::initilization_vector(my_vec); api::print_vector(my_vec); } نمایی از محیط Code::blocks برای پروژهٔ بالا:
  7. قاسم رمضانی منش

    با StyleSheet زیاد امتحان کرده‌ام آن خروجی‌ای که مدنظرم هست (و توی عکس‌بالا هم ارسال کرده‌ام) به دست نیومد.
  8. قاسم رمضانی منش

    در حالت عادی، ویجت QSlider به این‌صورت نمایش داده می‌شود : برای رنگ بندی نوار QSlider، چه پیشنهادی دارید ؟ مثلاً به این‌صورت :
  9. قاسم رمضانی منش

    خواهش می‌کنم؛ خب آره همینی هست که گفته‌‌ام، نمی‌دونم بیرونی‌ترین شئ منظورت چیه ؟ ساختار QML درختی هست یعنی اینکه یک Root داره و میاد همینطوری پایین و شما کلاً یک Root هم بیشتر ندارید. شما اگه بیاید اون Rectangle رو داخل یک Item دیگه بزارید درواقع یک کامپوننتی دارید که قابلیّت‌های Rectangle رو هم داره اینطوری : AnotherRectangle.qml import QtQuick 2.0 import QtQuick.Controls 2.0 Item { property alias rectangleId : recId; Rectangle { id: recId } } main.qml import QtQuick 2.13 import QtQuick.Window 2.13 Window { visible: true width: 640 height: 480 AnotherRectangle { anchors.centerIn: parent width: parent.width / 2 height: parent.height / 2 rectangleId.color: "Red" rectangleId.width: 100 rectangleId.height: 200 } }
  10. قاسم رمضانی منش

    سلام؛ فکر کنم منظورتون این باشه : AnotherRec.qml import QtQuick 2.0 Rectangle { } main.qml import QtQuick 2.13 import QtQuick.Window 2.13 Window { visible: true width: 640 height: 480 AnotherRec { anchors.centerIn: parent; width: parent.width / 2; height: parent.height / 2; color: "gray"; } } که اینجا ما یک کامپوننت جدیدی درست کردیم که از Rectangle به ارث برده، بد نیست اون مستنداتی هم که خوندید رو ارسال کنید شاید بحث کلاً یه چیز دیگه‌ای بوده باشه.
  11. قاسم رمضانی منش

    باید متغیر را به‌صورت unsubstituted به List ارسال کنیم تا مقدار درست را برایمان برگرداند.
  12. قاسم رمضانی منش

    نیاز دارم که برقرار بودن ارتباط به اینترنت در Build System پروژه بررسی کنم، از این رو با استفاده از تابع file یک آزمایشی می‌کنم: file( DOWNLOAD www.google.com ${CMAKE_SOURCE_DIR}/Test STATUS ERROR_CODE ) و خروجی در متغیر ERROR_CODE به حاوی شمارهٔ کد و متن خطا به‌صورت یک لیست ذخیره می‌شود : امّا نمی‌توانم با استفاده از تابع list و ورودی GET اقدام به دریافت یک مقدار بر اساس اندیس آن می‌کنم: list(GET ${ERROR_CODE} 0 MESSAGE_OUT) message(${MESSAGE_OUT}) امّا خروجی NOTFOUND می‌دهد، به این‌صورت نیز بررسی کرده‌ام: set(WITHOUT_ERROR "No error") foreach(VAR ${ERROR_CODE}) if(${VAR} EQUAL ${WITHOUT_ERROR}) message("Ghasem is here without error.") endif() endforeach() امّا باز خروجی‌ای حاصل نشد. به چه صورت می‌توان این مشکل را حل کرد ؟
  13. قاسم رمضانی منش

    درود بر شما؛ یکی از دوستانی که این حرف رو هم تأیید می‌کنه آقای Anthony Williams (نویسندهٔ کتاب C++ Concurrency in Action و Maintainer کتابخانهٔ Boost.Thread) هست که در صفحهٔ ۱۲اُم به بعد از کتابشون در این مورد توضیحات لازم رو دادند که هزینهٔ استفاده از std::thread چقدر هست و فکر نمی‌کنم که دیگه ایشون در نوشتن الگوریتم چندان مشکلی داشته باشند.
  14. قاسم رمضانی منش

    @zari درود بر شما؛ برای اینکه قسمت صحیح عدد را دریافت کنید می‌تونید اون عدد double را به نوع int تبدیل کنید : int main (void) { double some_double = 10.23; float some_float = 32.12; printf("double %f => %d.\nfloat %f => %d.\n", some_double, (int) some_double, some_float, (int) some_float); } خروجی: double 10.230000 => 10. float 32.119999 => 32.
  15. قاسم رمضانی منش

    علیکم‌السلام و درود بر شما؛ راستش با توضیحاتی که دادید خیلی گیج شدم و منتظرم که وقتی باشد تا کتابی که پیشنهاد دادید را بخوانم، چون کدهایی که دوستمان ارسال کرده‌اند درواقع برای من اصلاً جواب نداد و Segmentation Fault داده. و تا به چیزی که امروز من یادگرفته‌ام می‌دانم که آدرس یک متغیر local را نباید از تابع برگرداند و این دقیقاً کاری هست که در کد انجام شده و کاری که من کرده‌ام و دلیلی که بهتر دیده‌ام این بوده که حافظه‌ای در Heap گرفته‌ام و آدرس آن را برگرداندم و این عمل بدون Segmentation Fault کار خود را انجام میدهد. امّا همینطوری که گفتم : اصلاً رفتار کد به درستی مشخص نبود و با توضیحات شما هم چیزی متوجه نشدم.
×
×
  • جدید...