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

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

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

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

  • آخرین بازدید

  • روز های برد

    69

تمامی مطالب نوشته شده توسط کامبیز اسدزاده

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

    فرق بین کامپایل استاتیک و داینامیک

    فرق بین کامپایل استاتیک و داینامیک قبل از اینکه فرق بین ایستا (استاتیک) - Static و پویا (داینامیک) - Dynamic را بدانیم لازم است در رابطه با چرخه زندگی نوشتن یک برنامه و اجرای آن آشنا شویم. هر برنامه برای اولین بار توسط یک محیط توسعه (Editor) یا IDE توسط برنامه نویسان انتخاب و به صورت فایل متنی قابل ویرایش می‌باشد. سپس فایل متنی که شامل کد های نوشته شده توسط برنامه نویس تحت زبان برنامه نویسی مانند C، C++ و غیره... می‌باشد توسط کامپایلر به کد شیء ای تبدیل می‌شود که ماشین بتواند آن را درک کرده و اجرا کند. برنامه ای که ما می‌نویسیم ممکن است به عنوان یک مورد توسط دیگر برنامه ها یا کتابخانه‌هایی از برنامه ها مورد استفاده قرار بگیرد برقراری ارتباط (پیوند کردن) یا همان لینک کردن پروسه‌ای است که برا اجرای موفقیت آمیز برنامه‌های نوشته شده ما بکار می‌رود برقراری ارتباط بین ایستا و پویا دو پروسه‌ای از جمع آوری و ترکیب فایل های شیء‌های مختلفی است که به منظور ایجاد یک فایل اجرایی می‌باشند. در این بخش ما تصمیم بر این داریم تا تفاوت بین آن ها را با جزئیات مورد بررسی قرار دهیم. عمل پیوند یا ترکیب در زمان کامپایل انجام شود، در واقع زمانی که کد منبع به زبان ماشین ترجمه می‌شود، در زمان بار گذاری، زمانی که برنامه در داخله حافظه بار گذاری می شود، و حتی زمان اجرای آن توسط برنامه صورت می گیرد این عمل زمان پیوند و یا ترکیب (اتصال) است. در نهایت این فرآیند توسط برنامه ای اجرا می شود که به آن لینکر - پیوند دهنده (ترکیب کننده) می‌گویند. اتصال دهنده ها به عنوان ویرایستار لینک نیز معرفی می‌شوند. لینک شدن (پیوند شدن) به آخرین مرحله از کامپایل می‌گویند. در زبان علمی اصطلاح لینکر یا Linker معروف است اما در زبان فارسی بهترین گزینه مربوطه را می‌توان با عنوان اتصال دهنده، پیوند دهنده، ترکیب کننده نام برد. همه آن ها نشانگر یک هدف به منظور ترکیب اشیاء با یکدیگر هستند که در مرحله کامپایل صورت می‌گیرد. پس از ایجاد پیوند در برنامه، برای اجرای آن برنامه باید داخل حافظه منتقل شود. در انجام این کار باید آدرس هایی برای اجرای داده ها و دستور العمل ها اختصاص یابد. به طور خلاصه روند زیر می‌تواند به عنوان چرخه زندگی یک برنامه خلاصه شود (نوشتن - لینک کردن - بارگذاری - اجرا) فرق بین کامپایل استاتیک و داینامیک در زیر تفاوت های عمده ارتباط بین استاتیک و داینامیک آورده شده است : استاتیک ارتباط به روش استاتیک فرآیندی است که تمامی ماژول ها و کتابخانه‌های برنامه در فایل اجرایی نهایی کپی می‌شوند. این روش توسط لینکر در مرحله آخر کامپایل انجام می‌شود. اتصال دهنده - لینکر طبق روال ترکیبی کتابخانه ها را با کد برنامه و همراه مراجع - منابع خارجی ترکیب کرده و برای تولید یک بارگذاری مناسب در حافظه آماده سازی می‌کند. زمانی که برنامه بار‌گذاری می‌شود، سیستم عامل محلی را در حافظه به صورت یک فایل اجرایی که شامل کد‌های اجرایی و داده ها می‌باشد مشخص می‌کند. ارتباط به شیوه‌ی استاتیک توسط برنامه‌ای با نام لینکر انجام می‌شود که در آخرین مرحله فرآیند کامپایل یک برنامه صورت می‌گیرد. لینکر‌ها نیز به عنوان ویرایشگر پیوند نیز عنوان می‌شوند. فایل های استاتیک به طور قابل توجهی دارای اندازه بسیار بزرگی هستند زیرا برنامه های خارجی و کتابخانه های لینک شده همه در یکجا و در فایل نهایی اجرایی جمع آوری شده‌اند. در اتصال استاتیک اگر هر یک از برنامه های خارجی تغییر کرده باشد باید آن ها دوباره کامپایل شوند و مجددا عمل اتصال صورت گیرد در غیر اینصورت هیچ تغییری در به روز رسانی های مرتبط با فایل اجرایی مشاهده نخواهد شد. برنامه‌های استاتیکی زمان بارگذاری ثابتی در هر بار اجرای برنامه در حافظه را در نظر می‌گیرند. و زمانی که برای بارگذاری طول می کشد ثابت است. برنامه‌هایی که از کتابخانه‌های استاتیکی استفاده می‌کنند معمولاً سریعتر از برنامه‌هایی هستند که کتابخانه‌‌ی آن‌ها به صورت پویا می‌باشد. در برنامه های استاتیکی، تمامی کد ها شامل یک فایل اجرایی می‌باشند. بنابراین، آن‌ها هرگز در برنامه هایی که دارای مشکلاتی هستند اجرا نخواهند شد. داینامیک در ارتباط پویا نام کتابخانه های خارجی (کتابخانه‌های به اشتراک گذاری شده) در فایل اجرایی نهایی قرار داده شده‌اند نه خود کتابخانه. در حالی که ارتباط واقعی در زمان اجرا در هر دو فایل در حافظه قرار می‌گیرند. اتصال پویا این اجازه را می‌دهند تا برنامه های متعددی به صورت یک ماژول کپی شده و قابل اجرا مورد استفاده قرار بگیرد. اتصال پویا بر خلاف اتصال استاتیک در زمان اجرا توسط سیستم عامل انجام می‌شود. در اتصال پویا فقط یک نسخه از کتابخانه به اشتراک گذاری شده در حافظه نگه‌داری می‌شود. این به طور قابل توجهی اندازه برنامه های اجرایی را کاهش می‌دهد، در نتیجه صرفحه جویی در حافظه و فضای دیسک صورت خواهد گرفت. در اتصال پویا بر خلاف اتصال استاتیک نیازی به کامپایل کامل پروژه نمی‌باشد در صورتی که لازم باشد تغییراتی در هر یک از فایل‌ها صورت بگیرد تنها کافی است آن را کامپایل و در کنار برنامه قرار دهید. این یکی از بزرگترین مزیت‌های کامپایل داینامیکی می‌باشد. در اتصال پویا زمان بارگذاری برنامه در حافظه ممکن است کاهش یابد. این در صورتی است که کتابخانه های مشترک در حافظه بارگذاری شده‌اند. برنامه‌هایی که از کتابخانه های مشترک استفاده می‌کنند معمولا کندتر از برنامه هایی هستند که از کتابخانه های استاتیکی استفاده می‌کنند. برنامه‌های پویا وابسته به داشتن کتابخانه‌های سازگار هستند. اگر کتابخانه تغییر یابد (برای مثال، یک کامپایلر جدید منتشر شود ممکن است کتابخانه را تغییر دهد)، در این صورت ممکن است برنامه مجدداً تحت کتابخانه جدید باز نویسی و به‌روز رسانی شوند. اگر کتابخانه از روی سیستم حذف شود، برنامه‌ای که وابسته آن کتابخانه می‌باشد دیگر کار نخواهد کرد. در ادامه شما می‌توانید در مورد مراحل کامپایل یک برنامه مراجعه کنید:
  2. کامبیز اسدزاده

    مبنای امتیازات مرجع

    مقدمه نقد و بررسی‌ و ارسال نظرات کارشناسی سایت مرجع‌آی‌او استریم با هدف شناساندن هرچه بیشتر و بهتر زبان‌ها و فناوری‌های برنامه‌نویسی به مخاطب و همچنین کمک به تصمیم‌گیری در رابطه با نحوه‌‌ی تجزیه و تحلیل برنامه نویسی و کسب تجربه می‌باشد که در کنار آن علاوه بر آن، هدفِ این مرجع شناساندن متخصصین به جامعه و به کار گیری تجربیات صحیح و مطلوب به جامعه‌ی استارتاپی کشور است. توضیحات کلی در نقد و بررسی‌هایِ آی او استریم، پیش از خواندن متن سوالات و پاسخ‌ها می‌توانید به طور کاملا خلاصه با نکات مثبت و منفی موضوعات مطرح شده و همچنین نظر کلی اساتید و مراجع را در مورد آن‌ها بررسی کنید. لازم بذکر است دلیل امتیاز دهی تنها نباید مبنا بر اساس حل مشکل باشد! بنابراین امتیاز‌ها باید در زمانی ارسال شوند که از صحت پاسخ و همچنین نتیجه‌ی درست و مستند شده‌ی آن اطمینان شود. نحوه‌ی کار با سیستم امتیاز‌دهی تصویر زیر مربوط به ابزار امتیاز‌دهی است، در صورتی که پاسخ داده شده به سوال شما بر اساس مستندات، منطق و علوم مربوطه صحت داشته و دیگر اساتید آن را تایید می‌کنند می‌توانید در این صورت از ابزار مربوطه برای اعلام نظر خود استفاده کنید. در صورتی که بر اساس مستندات از قبل ثابت شده نظر بر پاسخ منفی باشد از دکمه‌ی فلِش به پایین استفاده کنید. در صورتی که پاسخ مثبت و علمی باشد از دکمه‌ی فلش رو به بالا برای امتیاز مثبت به پاسخ استفاده کنید. بدون هیچ امتیازی دارای امتیاز منفی دارای امتیاز مثبت مطالبی که دارای بیش از ۵ امتیاز می‌باشد به صورت برجسته نمایان خواهد شد. امتیاز به موضوعات، عناوین و فایل‌ها بخش امتیاز به فایل‌ها، تاپیک‌ها و موضوعات بر اساس سیستم امتیاز دهی ستاره‌ای مشخص می‌شود. این امتیاز موجب می‌گردد تا فایل یا موضوع مربوطه بر اساس درجاتی که کسب کرده است بین موضوعات مختلف در سطحی که نیاز است نمایان شوند. بدون امتیاز به موضوع دارای امتیاز به موضوع اعتبار‌ها امتیاز کل کاربر همراه با مرحله‌ای که در آن قرار دارد، نمایش می‌یابد. میانگین اعتبار از کمترین امتیاز ممکن (۲۰-) آغاز شده و به بهترین امتیاز ممکن (۲۰+) ختم می‌شود که توسط واکنش کاربران نسبت به هر یک از فعالیت‌های شما بر روی مرجع خواهد بود. برای مثال در صورتی که شما هرگونه به‌روز رسانی بر روی پست‌های خود، وضعیت خود و دیگر فعالیت‌های خود بر روی مرجع دارید، کاربران دیگر می‌توانند آن را بر اساس برداشت و حِسی که نسبت به آن عمل دارند، یکی از پنج حالت را اعمال کنند که شامل می‌باشد. واکنش به شکلک ناراحت (خنثی) هیچ امتیازی اعمال نمی‌کند. واکنش به شکلک خندان (۱+) یک امتیاز به موضوع یا مطلب شما اعمال می‌کند. واکنش به شکلک سردرگم (خنثی) هیچ امتیازی اعمال نمی‌کند. واکنش به جام (۱+) یک امتیاز اعمال می‌کند. واکنش به ستاره‌ی دنباله‌دار (۱+) یک امتیاز مثبت اعمال می‌کند. واکنش به شکلک قلب (پسندیدن ۱+) یک امتیاز مثبت را اعمال می‌کند. واکنش به قلب شکسته (۱-) یک امتیاز منفی اعمال می‌کند و آن را از امتیاز کل شما کم می‌کند. محیط رقابتی شما می‌توانید به لیستی از بهترین پرچم‌داران، بهترین کاربران و سوابق آن‌ها در مرجع دسترسی داشته باشید و برای بهتر شدن و نشان داده شدن در این لیست با یک دیگر رقابت کنید. همچنین شما می‌توانید اقدام به دنبال کردن یکدیگر و مشاهده‌ی مطالب به صورت برجسته بر اساس طرفداران خود را در اختیار داشته باشید.
  3. کامبیز اسدزاده

    با توجه به پاسخی که در مورد دلیلش یافتید، در تکمیل روش جنابِ @فرهاد شیری روش‌های مختلفی برای تعاریف کلاس‌ها از نوع template در فایل cpp وجود دارد که قبل از C++17 روش زیر یکی از روش‌های رایج است که در آن شما کلاس را با انواع صریح تعریف می‌کنید. کد مربوط به فایل .h به صورت زیر خواهد بود: #ifndef ENTITY_H #define ENTITY_H #include <iostream> #include <string> template<class T> #define ENTITY_INT template class Entity<int>; #define ENTITY_STRING template class Entity<std::string>; #define ENTITY_BOOL template class Entity<bool>; #define ENTITY_DOUBLE template class Entity<double>; /*! * \brief The Entity class */ class Entity { public: Entity(); ~Entity(); /*! * \brief Function * \param t */ void Function(const T &t) const; }; #endif // ENTITY_H همچنین کد مربوط به فایل .cpp به صورت زیر پیاده سازی خواهد شد: #include "entity.h" template<class T> Entity<T>::Entity() { } template<class T> Entity<T>::~Entity() { } template<typename T> void Entity<T>::Function(const T &t) const { std::cout << "T = " << t << std::endl; } ENTITY_INT ENTITY_STRING ENTITY_BOOL ENTITY_DOUBLE روش استفاده: #include <iostream> #include "entity.h" int main(void) { Entity<int> *en = new Entity<int>; en->Function(10); delete en; Entity<double> *en2 = new Entity<double>; en2->Function(2000.23); delete en2; Entity<std::string> *en3 = new Entity<std::string>; en3->Function("Hello, World!"); delete en3; } نکته: در استاندارد ۱۷ استفاده از پارامتر‌های auto نیز برای بهینه نویسی بیشتر مفید هستند.
  4. کامبیز اسدزاده

    تفاوتی که بین struct و class وجود دارد بین دسترسی‌های پیشفرض آنها است؛ در class عضو‌ مربوطه به صورت پیشفرض دارای دسترسی خصوصی (private) بوده و در struct با دسترس عمومی (public) تعریف می‌شوند. در مثال زیر عضو x مربوط به struct به صورت پیشفرض دارای دسترسی عمومی می‌باشد و عضو x مربوط به class دارای دسترسی خصوصی است. struct Demo { Demo() {} int x; }; class Demo { Demo() {} int x; }; در مثال زیر هر دوی ساختار و کلاس مربوط به Demo دارای دسترسی‌های یکسان یعنی هر دو عمومی (public) هستند. struct Demo { Demo() {} int x; }; class Demo { public: Demo() {} int x; };
  5. با سلام، طبق بررسی‌های لازم تغییراتی در گروه‌های کاربری اعمال شده است که از این پس کاربرانی که به عنوان کاربران فعال در حوزه‌ی یادگیری و مشارکت در بحث‌ها فعال می‌کنند از گروه پیش‌فرض کاربران عادی به کاربران رسمی تغییر دسترسی خواهند داشت. طبق آخرین اصلاحیه در سند‌( شرایط کسب مجوز فعالیتی و ارتقا حساب‌کاربری) ، کاربران عضو در این گروه دسترسی لازم برای ارسال تصویر، افزودن امضاء و همچنین عدم نیاز به تایید مطالب توسط مدیریت را خواهند داشت.
  6. کامبیز اسدزاده

    طبق گزارش @قاسم رمضانی منش عزیز، مبنی بر اینکه بلوک کُد بر روی مرجع فاقد شماره گذاری می‌باشد در یک به‌روز رسانی از نسخه‌ی ۹.۱۰ به ۹.۱۳.۱ در پلاگین HilightJS این مورد حل گردید. نمونه خروجی‌: // 'Hello World!' program #include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; }
  7. کامبیز اسدزاده

    این مورد مرتبط با پلاگین خود Code Snippet در ویرایستار CKEditor هستش و چنین ویژگی‌ برای این ویرایستر نیافتم!
  8. یک مورد جزئی (شماره گذاری در خطوط کُد‌ها) نیز برطرف شد!

  9. امروز، تمامی پُست‌های منتشر شده توسط من باز نگری شدن! 😋

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

    ابزار Qt Visual Studio

    نگارش 2.3.0

    4 دریافت

    همانطور که می‌دانید محیط توسعه‌ی یکپارچه‌ی نرم‌افزار Visual Studio عنوان یکی از جامع‌ترین محیط‌های توسعه بسیار شناخته شده است. برنامه‌نویسان سی‌پلاس‌پلاس بسیاری از پروژه‌های خود را تحت این محیط علاوه بر آن کیوت کریتور توسعه می‌دهند. کتابخانه‌ی کیوت افزونه‌ای را برای یکپارچه سازی خود با محیط ویژوال استودیو ارائه داده است که در حالت عادی از کتابخانه‌ی Qt به خوبی پشتیبانی می‌کند و اجازه می‌دهد تا شما کُد‌های خود را که بر اساس کتابخانه‌ی کیوت هستند در محیط ویژوال استودیو توسعه و خروجی بگیرید. آخرین اخبار و گفتگو‌ها درباره‌ی این ابزار

    رایگان

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

    این ابزار را برای آن دسته از توسعه دهندگانی که با محیط Visual Studio کار می‌کنند و می‌خواهند از کتابخانه‌ی Qt بر روی این محیط بهره‌مند شوند توصیه می‌کنیم. به کمک این ابزار شما می‌توانید محیط ویژوال استودیو را با کتابخانه‌ی کیوت سازگار نمایید.
  12. کامبیز اسدزاده

    Php

    نگارش 7.3.0

    0 دریافت

    پی‌اِچ‌پی ۷ یک نسخه اصلی از زبان برنامه نویسی Php است که نسبت به نسخه‌های قبل انقلابی به وجود آورده است . پس از انتشار PHP5 در سال 2004، این انتشار مهمترین تغییرات در PHP بشمار می‌آید. تغییرات عمده PHP7 را می‌توان به صورت زیر دسته بندی کرد: سرعت بیشتر و کارایی بالاتر حذف موارد از رده خارج نسخه‌های پیشین عملگرهای جدید مرتب‎سازی و یک دست نمودن متغیرها و تخصیص مقدار به آن نمایش بهتر خطا و Exception و مدیریت کارآمدتر آن‌ها با استفاده از Engine Exception ویژگی‌های جدید زبانی نوع‎گذاری قوی (strong type scalars)؛ قابلیت مشخص نمودن نوع پارامترهای یک تابع و مقدار برگشتی از آن *شما می‌توانید در این بخش آخرین نسخه‌ی مربوط به آن را دریافت کنید.

    رایگان

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

    Php

    برای دوستانی که در توسعه‌ی تحت وِب فعالیت می‌کنند، این نسخه از Php را شدیداً توصیه می‌کنیم. چرا که سرعت و عملکرد آن نسبت به نسخه‌های قبلی خود بسیار بهینه و همچنین نسبت به نسخه‌های ۷.۲ و ۷.۱ دارای بهینه‌سازی‌های امنیتی بیشتری می‌باشد.
  14. انتشار نسخه‌ی بتا ۲ از کیوت کریتور ۴.۷ بخش C++ ویژگی‌ مهم این نسخه سازگاری و هماهنگی کامل برای پشتیبانی از کلنگ (Clang) در سی++ می‌باشد. قبل از هر چیز باید اشاره داشته باشیم به اینکه مدل کدینگ به صورت پیش فرض در کیوت کریتور ۴.۷ بر پایه Clang Model تعبیه شده است که به عنوان یک نکته عطف پس از سال‌ها تجربه و توسعه به دست آمده است. به روز رسانی های دیگری در بخش بک اند صورت گرفته است که مرتبط با Clang 6.0 می‌باشد که بهبود‌های بسیاری را به ارمغان می‌آورد. بخش QML مدل کد در QML در حال حاضر شامل حداقل پشتیبانی های مرتبط با شمارنده های تعریف شده از طرف کاربر می باشد که یکی از ویژگیهای جدید در کیوت ۵.۱۰ به بعد بود.علاوه بر این برخی از اشتباهات موجود در این بخش نیز اصلاح شده اند. ویژگی یکپارچه سازی شده برای آزمایش کد در صورتی که نمایشگر ماوس در ویرایستار سی++ در داخل یک تابع آزمایشی قرار گیرد، شما می‌توانید به صورت جداگانه آن را مورد آزمایش قرار دهید که با راست کلیک بر روی منوی محتوا تابع گزینه‌ی (Run Test Under Cursor) قابل انتخاب و آزمایش خواهد بود. دیگر بهبود‌ها گزینه های کیت در بالاترین بخش از تنظیمات خود قرار گرفته اند، بنابراین اولین کیت در اولین ردیف از لیست قرار گرفته است. در بخش نمایه از فایلها شما میتوانید پوشه ای بسازید. به صورت پیشفرض از این پس می توانید پوشه ها را قبل از فایل ها نمایش دهید، اما شما می‌توانید با انتخاب گزینه ای در منو نمایش‌های قبلی را رد کنید و یا از روش مرتب سازی بر اساس حروف الفبا استفاده کنید. تغییرات دیگر در این بخش آمده اند.
  15. نسخه‌ی نهایی Qt Creator 4.8.0 منتشر شد. در این نسخه پشتیبانی از Python یکی از ویژگی‌های خوب آن است. پشتیبانی از ++C و LLVM 7.0 در این نسخه پشتیبانی از LLVM نسخه‌ی ۷.۰ فراهم شده است. همچنین قابلیت‌های دیگری مانند سیستم اشکال زدائی چند-تایی فراهم شده است.
  16. این اینفوگرافیک مسیر همکاری که بین شرکت‌های بزرگ و استارت‌آپ‌ها صورت می‌گیرد را با ارائه آخرین آمارهای KPMG در سال‌های ۲۰۱۴ و ۲۰۱۵ نشان‌ می‌دهد. بر طبق این اینفوگرافیک، استارت‌آپ‌ها و کسب‌وکارهای بزرگ در نهایت در ۴ مدل به همکاری می‌رسند اما این مسیر همواری برای دو طرف نیست و هر یک با چالش‌هایی در این مسیر رویه‌رو هستند. برای مطالعه بیشتر دراین‌باره به فرصتی برای ایجاد یک رابطه برد-برد در قسمت پژوهش‌ها مراجعه کنید.
  17. کامبیز اسدزاده

    فرصتی برای ایجاد یک رابطه برد-برد

    استارت‌آپ‌ها و شرکت‌های بزرگ می‌توانند فرصت‌های بالقوه زیادی از طریق همکاری برای یکدیگر ایجاد کنند. در وضعیت امروز شرکت‌ها که نوآوری محرک کلیدی موفقیت در بلندمدت است، کار با استارت‌آپ‌ها به شرکت‌های بزرگ این امکان را می‌دهد تا بتوانند فناوری‌ها و راهکارهای خدماتی جدید را با هزینه و ریسک کمتر برای عملیات اصلی سازمان توسعه دهند و به‌کار گیرند. همچنین استارت‌آپ‌ها منبعی برای نیروی ماهر تازه‌نفس و ایده‌های جدید هستند که می‌تواند به تحول فرهنگ‌سازمانی کمک کند. در مقابل همکاری با شرکت‌های بزرگ نیز مزایای بسیاری برای استارت‌آپ‌ها دارد. تجربه و دانش بازار، بازده ناشی از مقیاس، شبکه‌های موجود با افراد و سازمان‌های دیگر و قدرت برند نمونه‌هایی از مزایایی است که می‌تواند در کنار دیگر منابع قابل‌ملاحظه موجود نام برده شود. همچنین کار با کسب‌و‌کار‌های بزرگ یک ابزار مهم برای استارت‌آپ‌ها به‌منظور آزمایش محصول از جهت تناسب با بازار می‌تواند باشد. این در شرایطی است که طبق گزارش CB Insight بیشتر استارت‌آپ‌ها به این دلیل شکست می‌خورند که نیازی در بازار برای محصول‌شان وجود ندارد. تامین شدن از جانب یک سازمان بزرگ به‌عنوان شریک، همچنین در افزایش مقیاس فرآیندها و جذب مشتریان می‌تواند بسیار کمک کند. تغییر چشم‌انداز نوآوری سازمانی ایجاد برنامه‌ای برای جستجو، جذب و همکاری سیستماتیک با استارت‌آپ‌ها نه‌تنها برای شرکت‌های فناوری‌محور مانند گوگل و مایکروسافت پیگیری می‌شود، بلکه در کسب‌و‌کار‌هایی که دارای سطح پایین‌تری از فناوری هستند مانند کوکاکولا و یونیلیور نیز وجود دارد. همچنین این فرصت‌های همکاری می‌تواند در سازمان‌های اندازه متوسط نیز به‌کار گرفته شود. نوآوری باز با از میان برداشتن دیوارهای سخت و انعطاف‌ناپذیر میان واحدهای سازمان و محیط بیرونی، به سازمان کمک می‌کند با رقبا، دانشگاه‌ها، تامین‌کنندگان، مشتریان و مشاوران ارتباط برقرار کند و با بهره‌گیری از خرد جمعی آن‌ها به منفعت بیشتری دست‌یابد. نوآوری باز را می‌توان استفاده‌ هدفمند از واحدهای داخلی و افراد خارجی دارای تخصص و دانش دانست که به نوآوری داخلی سازمان کمک می‌کنند. نوآوری باز همچنین بازارها را برای استفاده خارجی از نوآوری تولید شده توسط سازمان گسترش می‌دهد. مدل اصلی نوآوری باز سیستمی بدون مرز است که در آن شرکت‌ها به تجاری‌سازی ایده‌های خارج از سازمان می‌پردازند. درعین‌حال به‌وسیله اعطای حق امتیاز و یا ایجاد شرکت‌های وابسته، ایده‌های داخل سازمان خود را به بازار می‌فروشند و به کسب درآمد می‌پردازند. نوآوری باز برای بسیاری از سازمان‌ها که متوجه محدودیت‌های بخش تحقیق و توسعه داخلی خود شده‌اند اهمیت زیادی یافته است. یکی از مهم‌ترین روش‌های به‌کارگیری رویکرد نوآوری باز در سازمان‌ها، استفاده از پتانسیل‌های همکاری با استارت‌آپ‌ها است. در پیمایشی که توسط KPMG در سال ۲۰۱۴ انجام شد، ۸۸ درصد از پاسخ‌دهندگان سازمانی اعتقاد داشتند همکاری با استارت‌آپ‌ها برای پیگیری استراتژی نوآوری سازمان حیاتی است. تحقیقات نشان می‌دهد که کسب‌و‌کارهای بیشتری، برنامه‌های ساختاریافته به این منظور راه‌اندازی می‌کنند که از جمله آن‌ها می‌توان به شتاب‌دهنده‌های شرکتی اشاره کرد. مهم‌ترین روندهای کلیدی در این زمینه سه مورد زیر است: شتاب دهنده‌های شرکتی در ابتدای سال ۲۰۱۵ یک‌سوم شتاب‌دهنده‌های اروپایی از طرف شرکت‌های بزرگ راه‌اندازی و یا حمایت می‌شدند و تعداد این شتاب‌دهنده‌ها با سرعت زیادی در حال رشد است. سرمایه‌گذار مخاطره‌پذیر شرکتی (CVC) در سال ۲۰۱۴ سرمایه‌گذاری‌های CVCها از نظر حجم سرمایه ۸۶.۵ درصد و از نظر تعداد، ۵۹ درصد رشد داشته است. از بین ۱۰۰ شرکت بزرگ اروپا حدود نیمی از آن‌ها فعالیت‌های سرمایه‌گذاری خطرپذیر انجام می‌دهند و آلمان به‌عنوان قطب سرمایه‌گذاران خطرپذیر شرکتی در قاره اروپا شناخته می‌شود. جذب استارت‌آپ توسط شرکت‌های بزرگ به‌خصوص در استارت‌آپ‌های حوزه فناوری‌های دیجیتال رو به رشد است. ۸۰ درصد جذب و خرید توسط سازمان‌ها در حوزه دیجیتال بر مربوط به خرید استارت‌آپ‌ها است. مزایای همکاری برای شرکت‌های بزرگ و استارت‌آپ‌ها سه‌چهارم از استارت‌آپ‌های اروپا که تا‌کنون با شرکت‌های بزرگ همکاری داشته‌اند، تجربه این همکاری را مفید دانسته‌اند. مهمترین منابعی که استارت‌آپ‌ها از طریق شرکت‌های بزرگ به آن‌ها دسترسی پیدا می‌کنند، شامل دانش نسبت به بازار، شبکه‌ای از افراد مهم و کلیدی، کانال‌های ارتباطی گسترده‌تر با مشتریان، تامین‌کنندگان و سایر ذی‌نفعان، زیرساخت‌های قوی‌تر، منابع مالی و انسانی وسیع‌تر، برند و شناخته شدن در بازار است. این منابع باعث ایجاد برتری‌هایی برای استارت‌آپ می‌شود. از منظر استارت‌آپ‌ها، مهمترین مزایایی که از این راه حاصل می‌شود دیده شدن و افزایش شهرت یا محبوبیت، توسعه کسب‌و‌کار (ورود به بازار جدید یا به دست آوردن مشتریان جدید)، افزایش دانش نسبت به بازار و دسترسی به افراد مهم و کلیدی است. مهمترین منابعی که شرکت‌های بزرگ از طریق استارت‌آپ‌ها می‌توانند به آن دسترسی پیدا کنند، شامل تیم شکل‌گرفته کامل که توانسته همه نیازهای یک کسب و کار اعم از فنی و غیر فنی را پوشش دهد و انگیزه فراوانی برای رشد دارد، یک مدل کسب‌و‌کار با قابلیت رشد بالا، افراد متخصص، ایده‌های نو و چابک و سرعت عمل در ارائه محصول و خدمت جدید است. شرکت‌های بزرگ به این همکاری به چشم فرصتی برای ایجاد نوآوری باز در شرکت خود نگاه می‌کنند. نوآوری باز از مفاهیم نسبتا جدیدی است که بسیاری از پژوهش‌ها، تاثیر مثبت آن را بر عملکرد شرکت نشان داده‌اند. آمادگی و قابلیت نوآوری باز برای یک شرکت به‌نوعی ابزاری تحلیلی برای قابلیت استفاده از نقاط قوت و پوشش نقاط ضعف به دست می‌دهد. چالش‌های همکاری با وجود این همه مزایا برای هر دو طرف شرکت‌های بزرگ و استارت‌آپ‌ها، شاید منطقی به نظر برسد که بسیاری از شرکت‌ها و استارت‌آپ‌ها با هم مشارکت و همکاری داشته باشند، اما در عمل چنین نیست و بسیاری از شرکت‌های بزرگ هیچ برنامه‌ای برای مشارکت با استارت‌آپ‌ها ندارند و تعدادی هم درگیر اجرای اقداماتی برای شروع این همکاری‌ها هستند. همکاری با استارت‌آپ‌ها برای شرکت‌های بزرگ چالش‌هایی دارد. یکی از مسائلی که شرکت‌های بزرگ در این زمینه باید توجه داشته باشند، نوع نوآوری است که استارت‌آپ‌ها با خود به همراه می‌آورند. شرکت‌های بزرگ در نوآوری‌های تدریجی و فناوری‌های موجود اغلب بهتر از شرکت‌های تازه‌وارد هستند، اما مقاومت بالایی نسبت به فناوری‌های برافکن دارند. زیرا این نوع فناوری‌ها قابلیت‌ها و استانداردهای موجود را زیر سوال می‌برد. به همین دلیل واضح است که شرکت‌های بزرگ پیشرفت تدریجی را به پیشرفت ناگهانی که می‌تواند از طریق استارت‌آپ ایجاد شود، ترجیح دهند. پژوهش‌ها نشان می‌دهد که نوآوری تدریجی حدود ۹۰ درصد فعالیت‌های نوآوری هر شرکت را به خود اختصاص می‌دهد، اما همان تعداد کم نوآوری‌های برافکن است که بیشترین سود را برای شرکت‌ها به همراه دارد. برای بعضی از شرکت‌ها، ریسک باز کردن درهای شرکت برای نوآوری‌های بیرونی بسیار بالا است. تحقیق و توسعه داخلی برای پاسخگویی به نیاز بعضی از شرکت‌ها کافی است و تاکید بیش از اندازه بر منابع خارجی نوآوری ممکن است حتی باعث کاهش سود خالص شرکت شود (اگر هزینه‌های همکاری‌های خارجی از ارزش ایجاد شده برای شرکت بیشتر باشد). علاوه بر این، همکاری با استارت‌آپ‌ها جنس ریسکی که شرکت‌ها با آن مواجه هستند را تغییر می‌دهد. ریسک فنی واحد تحقیق و توسعه داخلی با ریسک همکاری با یک شرکت خارجی عوض می‌شود و ریسک‌های جدیدی برای شرکت ایجاد می‌کند. علاوه بر این، اندازه‌گیری نرخ بازگشت سرمایه برای همکاری با استارت‌آپ‌ها (و به‌طورکلی نوآوری) همواره یک چالش اساسی برای شرکت‌های بزرگ است. در حال حاضر داده‌های اقتصادی بسیار محدودی برای اندازه‌گیری میزان سودآور بودن کار با استارت‌آپ‌ها وجود دارد، چرا که بسیاری از این تاثیرات ذاتا خیلی سخت اندازه‌گیری می‌شوند و بنابراین مدیران اجرایی کار سختی برای توجیه چنین برنامه‌هایی برای ذی‌نفعان دارند. پژوهش‌ها نشان داده‌اند استارت‌آپ‌هایی که تابه‌حال با شرکت‌ها همکاری نکرده‌اند به دلیل عدم تمایل به این همکاری نبوده است. تعدادی از آن‌ها از همکاری با شرکت‌های بزرگ می‌ترسند و از اینکه وارد فرآیندی به این اندازه بزرگ شوند که کاملا هم تحت کنترل آن‌ها نیست، مردد هستند. اما مساله بزرگ‌تری که در مسیر استارت‌آپ‌ها وجود دارد این است که نمی‌دانند چگونه با شرکت‌های بزرگ ارتباط برقرار کنند یا در پیدا کردن علایق دوجانبه با شرکت‌ها با مشکل مواجه می‌شوند و متوجه خواسته‌ها و نیازهای آن‌ها نمی‌شوند. همچنین بروکراسی اداری و فرآیند تصمیم‌گیری طولانی مدت در شرکت‌های بزرگ مساله‌ای است که می‌تواند برای استارت‌آپ‌ها یکی از چالش‌های اصلی در این مسیر باشد. از مطالعه موارد موفق همکاری بین شرکت‌های بزرگ و استارت‌آپ‌ها می‌توان به سه نکته کلیدی اشاره کرد: شرکت‌های بزرگ در همه صنایع می‌توانند از قابلیت‌های همکاری با استارت‌آپ‌ها بهره‌مند شوند. همکاری با استارت‌آپ‌ها صرفا مختص بزرگ‌ترین شرکت‌های جهانی نیست. بیشتر برنامه‌های همکاری با استارت‌آپ‌ها ابتدا کوچک بوده است و به مرور زمان گسترش یافته است.
  18. کامبیز اسدزاده

    سلام، بستگی داره با چه دیدگاهی بهش نگاه کنید. دیدگاه‌های متفاوتی وجود داره، ممکنه شما دیدگاهی داشته باشید که فعلاً دنبال به دست آوردن بحث مادی یا مالی اون نباشید. این بحثِ جداگانه‌ای داره و چون شما سوالت در رابطه به سریع به پول رسیدن هست بنابراین پیشنهاد‌های زیر رو دارم: از روش‌های عامیانه تبعیت کنید! برای مثال استخدام در یک شرکت یا تیم برنامه‌نویسی و مشارکت در پروژه‌ها بر اساس تجربه‌ی شما و نیاز اون شرکت یا تیم و در نهایت دریافت دست مُزد. اگر شما به دانشتون بسیار مطمئن و مسلط هستید می‌تونید با تفکر، کمی تحمل و کوشش استارت‌آپِ کسب‌و‌کار خودتون رو راه‌اندازی کنید. این روش کمی دشوار هست چون می‌تونه ایده یا هدف شما بلند مدت باشه و تا یک زمان مشخصی به هیچ درآمدی نرسید و مُدام مجبور به توسعه‌ی اون باشید. (مرتبط با مباحث کسب‌و‌کار) هستش که میشه در این حوزه بیشر نظر داد. اما اگه من خودم رو با این تصور که همین امروز توی برنامه‌نویسی به درجه‌ای رسیدم که می‌تونم همه نیاز‌های یک نرم‌افزار رو حل کنم، روش ترکیبی رو اجرا می‌کنم؛ یعنی سعی می‌کنم یک برنامه‌ریزی داشته باشم برای راه‌اندازی استارت‌آپ خودم و در کنار اون مشارکت در انجام پروژه‌ی اشتراکی هم به عنوان کمک به یک هدف دیگه توسط افراد دیگه و تامین نیاز‌های مالی برای اهداف خودم و از طرفی کسبِ تجربه جهت استفاده بر روی استارت‌آپ شخصیم.
  19. کامبیز اسدزاده

    آیا بعد از غیرفعال سازی محیط توسعه‌ی خود را مجدداً راه اندازی کردید؟
  20. با سلام و درود خدمت دوستان عزیز، مدتی بود به فکر این بودیم که کمی حال و هوای سیستم گفتمان رو بیشتر به سمت سوال و پرسش درstackoverflow نزدیک کنیم. برای اینکه بتونیم هم محیط گفتمان سنتی و مدرن رو حفظ کنیم و هم بتونیم از ویژگی‌های امتیاز دهی و انتخاب بهترین سوالات و پرسش‌ها رو فراهم کنیم یک سری محدودیت ها اعمال کردیم تا بشه از همه‌ی این ویژگی‌ها در جای خودشون استفاده کنیم. توجه داشته باشید که قبلاً امکان ارسال سوال در شاخه‌های اصلی وجود داشت. برای مثال شما می‌توانستید سوالی را در رابطه با ++C در همان شاخه‌ی اصلی بپرسید! سوال شما همراه با مقالات و مباحث آموزشی اساتید نیز ترکیب می‌شد که این زیاد جالب نبود چرا که با فعال‌سازی سیستم امتیاز دهی و انتخاب پاسخ و سوال برتر موجب می‌گردید تا مقالات اساتید نیز به عنوان سوال نمایش داده شوند! بنابراین برای حفظ هر یک از این موارد شاخه‌های اصلی با محدودیت سوال پرسی تنظیم شد و زیر شاخه‌های آن‌ها به عنوان شاخه‌ی اصلی و فرعی تقسیم بندی شده‌اند. به طور کلی تمامی شاخه‌های فرعی مکان بسیار مناسبی برای سوال پرسی است. مثال : اگر استاد یا مدیری نیاز به ارسال آموزش یا مقاله‌ای در حوزه‌ی مربوطه داشته باشد می‌تواند به شاخه‌ی اصلی مراجعه کرده و موضوع مربوطه را ایجاد و ارسال کند. این موضع به عنوان یک مبحث ویژه در نظر گرفته می‌شود و ربطی به سوال پرسی نخواهد داشت. در صورتی که نیاز باشد سوالی پرسیده شود و پاسخی برای آن داده شود، در این صورت بهتر است به زیر شاخه‌ی مرتبط با سوال خود رفته و در آنجا سوال را مطرح نمایید.
  21. کامبیز اسدزاده

    با سلام، احتمالاً شما از پلاگین Clang Format استفاده می‌کنید. به مسیر Help -> About Plugins رفته و تیک گزینه‌ی Clang Format (expermental) رو در زبانه‌ی مرتبط با C++ بردارید، محیط توسعه‌ی خود را یک بار بسته و دوباره اجرا کنید.
  22. ساختن Api در سمت سرور به روش‌های مختلفی صورت می‌گیره. شما قبل از هر چیز باید مشخص کنید که از چه نوع معماری استفاده خواهید کرد. برای مثال یکی از معماری‌های Rest، Soap یا GraphQL. در مورد این موارد اگر نیاز برای مثال باشه باید یک موضوع و تاپیک جداگانه‌ای ایجاد کنید. منابع مرتبط با این روش‌ها نیز در رابطه با هر کدام باید جستجو کنید. ایجاد یک رابط برنامه‌نویسی تحت معماری Rest در ۵ دقیقه یک سری مقایسه‌ها در رابطه با معماری‌های مربوطه
  23. کامبیز اسدزاده

    قوانین مرتبط با بخش ویژه‌ی درخواست پروژه

    با سلام و احترام، ضمن حُسنِ تشکر از انتخاب شما برای مشارکت در این مرجع، لازم بذکر است تا قوانین از قبل تعیین شده برای مشارکت به عنوان درخواست دهنده یا انجام دهنده‌ی پروژه‌ها در قالب‌های (پژوهشی، تجاری و آزاد) مطالعه شود. این مرجع به عنوان محلی از جمع مدیران و اساتید شایسته از جامعه‌ی برنامه‌نویسی ایران است که در آن بنا به درخواست کاربران جهت راهنمایی و منتورینگ در پروژه‌ها از نوع برون سپاری یا مشارکتی بخش ویژه‌ای ایجاد گردیده است. ما در این بخش در نظر داریم طبق برنامه و قوانین مشخص خدماتی برای پروژه‌هایی که شما در آن‌ها نیاز به راهنمایی، حل مسائل، توسعه و یا انجام پروژه از نوع برون سپاری دارید را ارائه دهیم. ارسال درخواست در این بخش تنها افرادی که در مرجع عضویت رسمی دارند (ثبت‌نام آن‌ها کامل و با مشخصات واقعی کامل شده باشد) می‌توانند پست‌های خود را مبنی بر درخواست ارسال کنند. پست‌های شما توسط مدیران و اساتید مرجع مورد بررسی قرار گرفته و در صورت عدم مغایرت با قوانین و اصول درخواستی تایید خواهد شد. پاسخ به درخواست تنها مدیران و اساتید و افرادی که تجربه‌ی کافی از لحاظ تجاری و علمی (فنی) دارند دسترسی برای پاسخ به درخواست‌های شما خواهند داشت. بنابراین بر اساس این محدودیت ما سعی کرده‌ایم تنها افرادی را که از لحاظ علمی صاحب نظر هستند را به عنوان مربی یا پیمان‌کار شما معرفی کنیم که شرایط مرتبط با کسب مجوز نیز در سند زیر آمده است. مسئولیت‌های مرجع مرجع آی‌او‌استریم، هیچ مسئولیتی در قبال انجام یا عدم انجام پروژه‌های شما نخواهد داشت! لذا ما تنها با معرفی اساتید این بستر را برای شما فراهم می‌کنیم! بنابراین تایید و عدم تایید نهایی پروژه مبنی بر رضایت و عدم رضایت از انجام یا پاسخ آن را شما باید مشخص کنید. البته مدیران مرجع به عنوان همیاری شما برای کارشناسی کردن پاسخ نهایی همراه شما خواهند بود. بنابراین امتیازیاتی که شما به انجام دهنده خواهید داشت به عنوان نمره‌ی مثبت یا منفی اعمال خواهد شد که موجب افزایش یا کاهش اعتبار پاسخ دهده می‌شود. قوانین تجاری به زودی...
  24. کامبیز اسدزاده

    سلام، مدتی بود که نسخه‌ی ۲۰۱۷ کامپایلر MSVC با مشکل عدم بازگشت مقدار صحیح از نسخه‌ی استاندارد زبان مواجه بود. هرچند توسط توسعه دهندگان این مشکل به مایکروسافت گزارش داده شده بود اما ظاهراً مشکل همچنان پا برجاست. و اما مشکل، کد زیر را با کامپایلر MSVC2017 اجرا کنید: #include <iostream> int main() { std::cout << __cplusplus << std::endl; std::cin.get(); return 0; } اگر دقت کنید مقدار بازگشتی این کد 199711خواهد بود. در حالی که باید مقدار بازگشتی آن با توجه به استاندارد زبان باید یکی از دو مقدار 201402L یا 201403 باشد. برای حل این مورد من پچی را فراهم کردم که می‌تونید این مشکل رو حل کنید. علاوه بر این یک سری ماکرو نویسی جزئی انجام شده که با دقت بیشتر و مقدار بازگشتی از نام خود کامپایلر را برای شما ارائه دهد. طبق اصلاحیه کد دستوری آن به صورت زیر خواهد که تکه‌ای از کد‌های یکی از پروژه‌های من به نام Genesis بود که حالا اینجا به اشتراک گذاشتمش: #include <iostream> using namespace std; #include "macro.h" int main() { Macro mc; cout << "Hello World!" << endl; cout << "C++ Standard Version (MSVC) : " << __cplusplus << endl; cout << "C++ Standard Version (with bug fix in MSVC : " << __GENESIS_CPP_VALUE__ << endl; cout << "C++ Standard Version (with bug fix in MSVC using function: " << mc.get__cplusplus(false) << endl; cout << "Compiler name using flag true: " << mc.get__cplusplus(true) << endl; return 0; } خروجی: Hello World! C++ Standard Version (MSVC) : 199711 C++ Standard Version (with bug fix in MSVC : 201703 C++ Standard Version (with bug fix in MSVC using function: 201703 Compiler name using flag true: MSVC++ برای دریافت این اصلاحیه به مخزن آن مراجعه نمایید.
  25. کامبیز اسدزاده

    قبلاً گزارشی در مورد این مشکل داده شده که در این بخش خیلی‌ها بهش تاکید کردن، منم به گزارش خطا رو ارسال کردم. مشکل صرفاً به مقدار بازگشتی ماکرو مربوط بود که تو هر تنظیماتی مثل (/std:c++latest /Zc) مقدار 199711L رو میداد. بر اساس گزارش حل شده‌ای که دادن احتمالاً در نسخه‌های اخیر حل شده باشه اما بعید می‌دونم به صورت پیشفرض و با همین تنظیمات استاندارد مشکلش حل شده باشه چون نتیجه‌ای ازش نگرفتم.
×