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

پرچمداران

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

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

    بنیـــان گذار


    • امتیاز

      8

    • تعداد ارسال ها

      328


  2. CISCO

    CISCO

    کاربـــر عـــــادی


    • امتیاز

      1

    • تعداد ارسال ها

      4


  3. sina

    sina

    کاربـــر عـــــادی


    • امتیاز

      1

    • تعداد ارسال ها

      1


  4. فرهاد شیری

    فرهاد شیری

    مدیران مرجع


    • امتیاز

      1

    • تعداد ارسال ها

      142



مطالب محبوب

در حال نمایش مطالب دارای بیشترین امتیاز از زمان پنجشنبه, 21 شهریور 1398 در همه بخش ها

  1. 3 امتیاز
    معمولاً در سی‌پلاس‌پلاس برای چاپ اطلاعات مربوط به کد منبع از ماکرو‌ها استفاده می‌شود. ماکروها به عنوان یکی از ویژگی‌های بسیار قدرتمند زبان C محسوب می‌شوند که در C++ نیز از آن‌ها پشتیبانی می‌شود. برای مثال ماکرو‌های __LINE__ و __FILE__ اطلاعات مربوط به شماره خط، فایل و نام آن را بر می‌گردانند. در استاندارد جدید یعنی 2a یا همان نسخه‌ی ۲۰ زبان، کلاس source_location معرفی شده است که در فایل سرآیند <source_location> تعبیه شده است. با دسترسی به فیلد‌های line، column، filename و function_name می‌توان تحت این کلاس مشخصات مورد نیاز را از کد منبع چاپ کرد. مثال : #include <iostream> #include <string_view> #include <source_location> void log(std::string_view message, const std::source_location& location = std::source_location::current()) { std::cout << "info:" << location.file_name() << ":" << location.line() << " " << message << '\n'; } int main() { log("Hello world!"); } خروجی کد مربوطه به صورت زیر است. info:main.cpp:15 Hello world! منبع در مرجع سی‌پلاس‌پلاس
  2. 1 امتیاز
    تشکر! کاش این کلاس تو استانداردهای پایینتر هم بود خیلی کاربردی!
  3. 1 امتیاز
    لینکی که دادم پاسخ مرتبط با همون سوأل بود. این مقالات رو مطالعه کنید:
  4. 1 امتیاز
    کامپوننت یا جزء (بخشی) از یک نرم‌افزار یا پروژه هستند. پروژه‌ی شما می‌تونه از بخش‌ها و اجزای اصلی و فرعی بسیاری تشکیل شود که هر کدام وظیفه‌ی خود را خواهند داشت. برای مثال در یک پروژه تحت سی‌پلاس‌پلاس یک کنترل به عنوان یک جزء یا همان کامپوننت تعریف می‌شود. در رابطه با SDK مخفف (Software Development Kit) به معنای کیت توسعه‌ی نرم‌افزار است. کیت توسعه‌ی نرم‌افزار به مجموعه توابع و کتابخانه‌های کامپایل شده‌ای که تولیدکنندگان نرم‌افزار برای آسان کردن برنامه‌نویسی برای محیط یا سکوی خاصی فراهم می‌کنند و در اختیار برنامه‌نویسان کاربردی قرار می‌دهند گفته می‌شود. به عنوان مثال جهت توسعه‌ی محصولات ویندوز و دسترسی به سرویس‌های آن شما باید از کیت ویندوز استفاده کنید. تفاوت بین چهارچوب (فریم‌ورک) و کیت این است گه کیت برای توسعه‌ی یک پلتفرم خاص کمک می‌کند تا شما محصول خود را برای آن هدف توسعه دهید. اما کتابخانه یا فریم‌ورک با اینکه مشابه کیت هستند اما آن‌ها شامل کلاس‌ها، توابع و راهکار‌های بسیار مفیدی برای تکمیل یا حل نیاز‌های جانبی به کار می‌رود. معمولاً توسعه‌ی نرم‌افزار‌ها می‌تواند بر اساس کتابخانه و فریمورک‌هایی انجام شود. برای مثال OpenSSL یک کتابخانه‌ی رمزنگاری است. یا Qt به عنوان یک کتابخانه و فریمورک گرافیکی جهت تولید و توسعه‌ی رابط‌های کاربری مورد استفاده قرار می‌گیرد. نه تنها در سی++ بلکه در زبان‌های دیگر هم این موارد کاربرد دارند.
  5. 1 امتیاز
    یه سوال داشتم که خیلی وقت هست درگیرش هستم. من خودم به صورت عادی از win32 در ++C استفاده میکنم و برای ساختن حتی یه button کلی زور میزنم و کد مینویسم برای رویداد ها و لوکیشن و ... حالا بماند که برای تنظیم یک رنگ برای یک button یا text چقدرر دردسر دارم. من قبلا با زبان #C کار میکردم و با رابط گرافیکی و طراحی رابط گرافیکی اون به خوبی آشنا هستم . البته میدونم که امنیت برنامه های .net کلا ضعیف هست اما از لحاظ گرافیکی به راحتی میشه هر نوعی که بخوایم در کمترین زمان طراحی کنیم. البته اگر بخوایم باز کد ها و دستورات رو با .net بنویسیم چیز جالبی نمیشه. البته نا گفته نماند که به Qt ام برای طراحی فکر کردم اما چند تا مشکل دارد . اولی اینکه حجم برنامه رو به شدت میبره بالا . دوم تعداد فایل های برنامه رو میبره بالا . سوم من در کل IDE برنامه نویسیم در Visual studio هست و به اون بیشتر عادت دارم چون خیلی ساده تر هست نسبت به Qt و اگر بخوام پلاگین های qt رو بریزم توی vs باز هم باید به صورت کد و لوکیشن و ... انجام بدم که تقریبا مثل win32 میشه فکر کنم. من خودم شخصا برای این مشکل به این فکر افتادم که رابط گرافیکی رو با c# بنویسم و همه کد ها رو توی یه قالب dll که به زبان c++ نوشته شده از #C فراخانی کنم. نظر شما چیه؟ راه حل بهتری سراغ دارید؟
  6. 1 امتیاز
    اگر شما از آن دسته از کاربرانی هستید که هزینه‌ای برای گیت‌هاب پرداخت نمی‌کنید، این هفته‌ی خوبی است برای شما! با توجه به تاریخ، گیت‌هاب همیشه حساب‌های رایگان ارائه داده است، اما با توجه به قوانین آن مخازنِ شما باید در قالب عمومی ایجاد می‌شدند. در صورتی که شما نیاز به داشتن مخزنی از نوع خصوصی داشتید در این صورت مجبور به پرداخت هزینه‌ای در قبال آن بودید. خبر خوش این است که، این محدودیت از امروز از بین رفته و شما می‌توانید مخازن خود را به صورت خصوصی و بدون پرداخت هزینه‌ای ایجاد کنید.
  7. 1 امتیاز
    آیا این واقعاً امکان‌پذیر است؟ پاسخ : بله! من می‌دانم که ممکن است این مبحث تحت سی++ بسیار پیچیده و یک کار بیهوده‌ای باشد! اما واقعیت این است که تکنیک‌های پنهان بسیاری وجود دارد که ممکن است همه از آن باخبر نباشند! من قبلاً در مورد اینکه تحت ++C وب‌سایت میشه طراحی کرد یا خیر تحقیقاتی انجام داده بودم، از لحاظ امکان بودنش جواب مثبت بود اما اینکه به راحتی طراحی تحت Php یا دیگر زبان‌های برنامه‌نویسی باشه خیر! خُب طبیعیه چون شما بسیار راحت یه اسکریپت رو می‌نویسی و روی سرور اجراش می‌کنی و سایت شما به خوبی و خوشی بالا میاد! ممکن است در همین قسمت از موضوع شما به این نتیجه رسیده باشید که خُب نیازی به ادامه‌ی بحث نداریم! وقتی کار سختیه پس منطقی نیست و شما احتمالاً دیوانه‌ای!!! واقعیت جریان این است بر خلاف آن چیزی که تصور کرده‌ایم طراحی وب‌سایت با سی‌پلاس‌پلاس نه تنها بسیار راحت است بلکه بسیار هم جذاب خواهد بود! اما در نگاه اول ممکن است یک سری محدودیت‌هارا داشته باشد که همه‌ی این موارد با کمی تعمل و بررسی قابل حل هستند به قدری که وقتی درگیر این جریان باشید شیفته‌ی آن خواهید شد. مزایای یک وب‌سایت تحت سی‌پلاس‌پلاس نسبت به دیگر زبان‌های رایج سرعت خارق‌العاده و غیر قابل مقایسه با زبان‌های رایج امنیت بهتر کد‌های شما مدیریت ساده‌تر و انعطاف‌پذیری بالا مصرف بسیار بهینه‌ و غیر قابل تصور از منابع سرور دسترسی نامحدود به کتابخانه‌ها عدم محدودیت در دسترسی به برنامه‌نویسی سطح پایین عدم محدودیت در استفاده از توابع سیستم‌عامل عدم محدودیت در مدیریت سیستم و هر ویژگی‌ دیگری که در زبان‌های اسکریپتی اگر به آن نیاز داشته باشید مجبور هستید تا به صورت اکستنشن آن را تحت سی‌پلاس‌پلاس باز نویسی کنید. سیستم راه‌انداز وب‌سرور چگونه است؟ در هر سروری CGI به شما امکان این را می‌دهد که بتوانید تحت پروتکل‌های استاندارد برنامه‌های تحت وب را اجرا کنید. شما می‌توانید تحت آن و یا موارد دیگری مانند FastCGI و WSGI و دیگر موارد بهینه شده‌ی آن برنامه‌ی تحت وب را بر روی سرور خود اجرا کنید. طراحی قالب هماهنگی با HTML, JavaScript, Css در سی‌پلاس‌پلاس چگونه خواهد بود؟ همه‌ی گزینه‌های مربوط به وب را شما بدون هیچ محدودیتی در اختیار خواهید داشت. شما هیچ محدودیتی در استفاده از ویژگی‌های HTML5 یا CSS3 و یا JavaScript و دیگر فریمورک‌ها و کتابخانه‌های کارآمدی چون Angular.JS را نخواهید داشت. بنابراین از نظر طراحی رابط یک وب‌سایت همانند دیگر زبان‌های رایج می‌توانید روی آن حساب کنید. طراحی هسته و بک‌اِند وب‌سایت چگونه خواهد بود؟ همانند زبان‌ها و فریمورک‌های رایج تحت وب شما در سی‌پلاس‌پلاس می‌توانید هسته‌ی وب‌سایت یا سیستم وب‌سایت خود را تحت استاندارد سی‌پلاس‌پلاس و هر کتابخانه‌ای که می‌پسندید و یا به آن تسلط دارید پیاده سازی کنید! به شرطی که قابلیت‌های آن کتابخانه پاسخگوی نیاز‌های شما باشد. با این حساب شما می‌توانید حتی سیستم مدیریت محتوای (CMS) خود را طراحی کنید! بله سیستم مدیریت محتوا تحت سی‌پلاس‌پلاس! کاملاً جدی هستیم قبل از هر چیز یک مزیت بسیار بزرگ در کنار مزیت‌های دیگر این است که یک CMS تحت سی‌پلاس‌پلاس می‌تواند داشته باشد مصرف بهینه از منابع سرور خواهد بود. برای مثال در یک مقایسه‌ی‌ ساده و آزمایشی نتیجه‌ی بسیار جالبی ارائه شده است. همانطور که می‌دانید Wordpress به عنوان یک سیستم مدیریت محتوای (بلاگ) شناخته شده و تحت Php توسعه‌ یافته است. نسخه‌ی سریعتر و بهینه‌تر آن با نام Ghost تحت Node.JS توسعه یافته است که ما نسخه‌ی توسعه‌ یافته‌ی آن را با یک عمل مشابه در C++1z مورد بررسی قرار داده ایم که نتایج آن بسیار جالب است! مصرف حافظه‌ سیستم مدیریت محتوای Tegra ۳۵۰۰ درخواست در هر ثانیه 3.6 مگابایت سیستم مدیریت محتوای Ghost 100 درخواست در ثانیه 120 مگابایت پشتیبانی از پایگاه‌های داده به لطف کتابخانه‌های عظیم سی‌پلاس‌پلاس امکان مدیریت یک وب‌سایت تحت پایگاه‌های داده مختلفی ممکن است. برای مثال تحت Qt شما می‌توانید به رایجترین درایور‌های بانک‌اطلاعاتی دسترسی داشته و سیستم خود را به آن‌ها مجهز کنید. نکته: احتمالاً در برنامه‌نویسی با نود جی‌اس و پی‌اچ‌پی شناختی با کتابخانه‌های OpenSSL, Libcurl و موارد این چنینی داشته اید! کتابخانه‌های فوق عضو لیست کتابخانه‌های C و ++C هستند. بنابراین شما علاوه بر دسترسی مستقیم بر آن‌ها به هزاران و شاید میلیون‌ها کتابخانه در دنیا سی‌پلاس‌پلاس خواهید داشت. نمونه‌ی اولیه اما شوق‌آور برای اثبات امکان طراحی وب‌سایت تحت سی‌پلاس‌پلاس چندی پیش من تصمیم گرفتم تا سیستم وب‌سایتی را تحت Php7 برای یکی از استارت‌آپ‌ها طراحی و پیاده سازی کنم که در این پست به آن اشاره شده است. از آن‌جایی که به لطف کتابخانه‌ی Qt برنامه‌های سمت کاربر را توسط سی‌پلاس‌پلاس پیاده سازی کرده بودم به این فکر افتادم چرا سمت سرور و بخش وب‌سایت هم با آن هماهنگ نشود!؟ اینگونه هماهنگی بین برنامه‌ها و پرفرمنس همه‌ی آن‌ها بسیار افزایش خواهد یافت در اولین نگاه این تفکر بسیار ناشیانه و بسیار ناممکن بود! تنها روشی که به کار گرفته بودم ارسال اطلاعات از طرف کاربر به سمت سرور و مدیریت آن‌ها تحت معماری Restful Api بود که در قالب JSon آن‌ها را تجزیه و مدیریت می‌کردم. با کمی تحقیق در مورد ویژگی‌های سمت وب تحت Fast-CGI, uWSGI, DJango, ClearSilver و موارد مرتبط با آن‌ها سعی کردم تا صفحه‌ی بسیار ساده‌ای از HTML را توسط سی‌پلاس‌پلاس هندل کنم. این کار نتایج بسیار موفقیت آمیزی را در بر داشت تا نتیجه‌ی آن تبدیل به یک پروژه‌ی سیستم مدیریت محتوا تحت ++C شد. من پروژه‌ای با نام مفهومی Tegra که نام پروژه‌ی قبلی تحت Php بود را در محیط Qt Creator با C++17 و کتابخانه‌ی Qt باز سازی کرده و هسته‌ی اولیه‌ی آن را برای اجرای چند صفحه از یک وب‌سایت، احراز هویت، بازخوانی و نمایش لیستی از خبر‌ها و مدیریت متا تگ‌ها و آدرس صفحات مربوط به هر صفحه را ایجاد کردم. سعی کرده ام در کمترین زمان ممکن برای آزمایش یک سری ویژگی‌های اولیه از یک وب‌سایت آن‌ها را مورد بررسی قرار بدم که عبارتند از هماهنگی با فریم‌ورک‌های طراحی مانند BootStrap و یا Angular.JS که خوشبختانه همه‌چیز بسیار خوب در کنار همدیگه کار می‌کنند. هسته‌ی سیستم به صورت جدا و معماری طراحی آن بر پایه‌ی MVC مورد آزمایش قرار گرفته است. در زیر تصاویری از صفحات تولید شده تحت سیستم‌ مدیریت محتوای ساخته شده با سی‌پلاس‌پلاس را مشاهده می‌کنید. همه چیز در قدم‌های اول قرار دارد و با توجه به سادگی تولید وب سایت بر خلاف تصوری که داشتیم بسیار توسعه و جای پیشرفت خواهد داشت. بخشی از نمونه کد‌های این سیستم به صورت زیر آورده شده است تا ذهنیتی برای توسعه‌دهندگان ارائه شود: تکه کُد زیر عمل ارسال اطلاعات و تمامی لینک‌های مربوط به بوت استرپ را برای سمت HTML ارائه می‌کند که در قالب استاندارد جدید C++17 آورده شده است: auto bootstrapCss = bootStrapLib.find("css"); if(bootstrapCss != bootStrapLib.end()) { c->setStash("BootstrapCss", bootstrapCss->second.c_str()); std::cout << "Found " << bootstrapCss->first << " " << bootstrapCss->second << '\n'; } کد مربوط به سمت قالب به صورت زیر خواهد بود: <!-- Bootstrap core css --> <link href="{{BootstrapCss}}" rel="stylesheet"> نتیجه‌ی فوق در صورتی که CDN بر روی لوکال تنظیم شده باشد از روی کد‌های کامپایل شده و یا استاتیک فراخوانی خواهد شد. در غیر اینصورت از روی یکی از سرور‌های CDN فراخوانی می‌شوند. نحوه‌ی ارسال متغیر از سمت سی‌پلاس‌پلاس به قالب بسیار ساده است! بسیار ساده از Php و یا Node.JS می‌باشد. با در نظر گرفتن ارسال اطلاعات از سمت سی‌پلاس‌پلاس به سمت رابط کاربری کافی است نام متغیر‌ها را در قالب خود اعمال کنید. {% for post in news %} <div class="blog-post"> <h2 class="blog-post-title"><a href="news/{{post.uri}}">{{post.title}}</a></h2> <p class="blog-post-meta">{{post.date}} by <a href="#">{{post.author}}</a></p> <p>{{post.announcement|safe}}</p> </div><!-- /.blog-post --> {% endfor %}</div> این ساختار بر پایه‌ی ساختار Angular.JS و DJango پیاده سازی شده است که به طور کامل پشتیبانی می‌شود. فعال سازی فناوری Angular.JS بر روی این سیستم جهت طراحی قالب تنها با دو دستور ساده اعمال می‌شود: <!-- Link to AngularJS --> <script src= "{{AngularJs}}"></script> <!-- Enable AngularJS Engine --> {{AngularJsSync|safe}} این دستورات در هسته‌ی سیستم مدیریت محتوا در کلاسی با نام Template پردازش و در نهایت به سمت HTML هندل می‌شوند. بخشی از دستورات سمت هسته در سی‌پلاس‌پلاس ۱۷ برای مثال ارسال عنوان صفحه به صورت زیر است: std::optional<std::string> LoadListTemplate::getTitle() const { if (isset(title)) { return title; } else { return std::nullopt; } } سمت HTML کافی است دستور فوق را در نظر بگیریم: <title>{{title}}</title> این‌ها مثال‌هایی از مراحل توسعه‌ی این سیستم است که می‌دانم آنچنان گسترده نیست، اما برای ثابت کردن طراحی و توسعه‌ی وب‌سایت تحت سی‌پلاس‌پلاس مثال‌های روشنی هستند. موفق و سربلند باشید! اطلاعیه‌های مربوط به این پروژه احتمالاً در کانال‌ها و گروه‌ تلگرامی و همین مرجع بازگو و در اختیار شما قرار گیرد.
  8. 1 امتیاز
    سلام .امیدوارم اشتراک گذاری ها و اطلاع رسانی هاتون حالا حالا ها ادامه داشته باشه... خدا قوت
  9. 1 امتیاز
    با سلام، ما برای بهبود و سرعت بخشی برای توسعه محصولاتمون رو پلتفرم‌های مختلف برای جولوگیری از بازنویسی کُد‌های مشابه و یک سری ابزار‌هایی که برای تولید قابلیت‌های ویژه در پروژه‌ها و اپلیکیشن‌های موبایل و دسکتاپ نیاز داشتیم رو به صورت انحصاری در قالب یک موتور اختصاصی برای شرکت خودمون تولید کردیم که در توسعه هر چه سریعتر استارت‌آپ‌ها بسیار مفید واقع می‌شود. قابلیت‌ها و ویژگی‌ها با استفاده از پروژه‌ی سِل ما می‌توانیم بَک‌اند و ترکیبی از عملیات فرانت‌اِند پروژه‌های خود را در کمترین زمان ممکن تولید و توسعه دهیم که در نتیجه گیری سریع یک استارت‌آپ بسیار مفید است. این کار باعث می‌شود ما هر بار در پروژه‌های خودمان نیاز به باز نویسی کلاس‌ها و توابع و تولید ابزار‌هایی نباشیم که در یک محصول مورد نیاز است. عنوان: پروژه‌ی سِل انجین (Cell) توضیحات: این پروژه یک موتور برنامه‌نویسی چند‌سکویی در قالب یک چهارچوب تخصصی می‌باشد که در توسعه هرچه سریع‌تر محصولات و طراحی و همچنین مستقر سازی آن‌ها بر روی پلتفرم‌های مختلف کمک بسیاری می‌کند. زبان‌ها و فناوری‌های استفاده شده: زبان برنامه‌نویسی ++C فریم وُرک‌ و کتابخانه‌ها: کتابخانه‌ی OpenSSL‌، LibCurl، STL ابزار‌های ساخت: cmake نوع پروژه: تجاری (انحصاری شرکتِ Dotwaves LLC) نویسندگان: کامبیز اسدزاده وضعیت: در حال توسعه حق چاپ و تکثیر: شرکت دات‌ویوز برخی از محصولاتی که تحت این موتور طراحی شده اند: سیستم مدیریت محتوای جگوار
این صفحه از پرچمداران بر اساس منطقه زمانی تهران/GMT+04:30 می باشد
×
×
  • جدید...