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

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

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

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

  • روز های برد

    266

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

  1. قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای قانون دیگر قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای مصوب ۱۳۷۹ است. همان‌طور که از نام این قانون مشخص است، در این قانون حقوق مادی و معنوی پدیدآورندگان نرم‌افزارهای رایانه‌ای شرح داده می‌شود. مطابق ماده‌ی ۱ این قانون، «حق نشر، عرضه، اجرا و حق بهره‌برداری مادی و معنوی از نرم‌افزارهای رایانه‌ای متعلق به پدیدآورنده‌ی آن است. نحوه‌ی تدوین و ارائه‌ی داده‌ها در محیط قابل پردازش رایانه‌ای نیز مشمول احکام نرم‌افزار خواهد بود.» مطابق مطابق ماده‌ی ۳ این قانون، نام، عنوان و نشان ویژه‌ای که معرف نرم‌افزار است از حمایت این قانون برخوردار است و هیچ‌کس نمی‌تواند آنها را برای نرم‌افزار دیگری از همان نوع یا مانند آن به نحوی که القای شبهه نماید، استفاده کند. در ماده‌ی ۱۳ قانون به‌طور کلی ضمانت اجرای نقض حقوق مورد حمایت این قانون، علاوه بر جبران خسارت متضرر، حبس از نود و یک روز تا شش ماه و جزای نقدی از ده میلیون تا پنجاه میلیون ریال بیان شده است. همچنین مطابق ماده‌ی ۱۵ این قانون، جرایم مربوط به نقض حقوق مورد حمایت این قانون، از جرایم قابل گذشت است. ‌ماده ۱ - حق نشر، عرضه، اجرا و حق بهره برداری مادی و معنوی نرم افزار رایانه‌ای متعلق به پدید آورنده آن است. نحوه تدوین و ارائه داده‌ها در‌محیط قابل پردازشرایانه‌ای نیز مشمول احکام نرم‌افزار خواهد بود. مدت حقوق مادی سی (۳۰) سال از تاریخ پدید آوردن نرم‌افزار و مدت حقوق‌معنوی نامحدود است. ماده ۲ - در صورت وجود شرایط مقرر در قانون ثبت علایم و اختراعات، نرم‌افزار به عنوان اختراع شناخته می‌شود، آئین‌نامه مربوط به این ماده به‌تصویب هیأت وزیرا نخواهد رسید. ‌ماده ۳ - نام، عنوان و نشانه ویژه‌ای که معرف نرم افزار است از حمایت این قانونبرخوردار است و هیچ کس نمی‌تواند آنها را برای نرم افزار دیگری‌ از همان نوع یامانند آن به ترتیبی که القای شبهه کند بکار برد در غیر این صورت به مجازات مقرر در ماده (۱۳) این قانون محکوم خواهد شد. ‌ماده ۴ - حقوق ناشی از آن بخش از نرم‌افزاری که به واسطه نرم‌افزارهای دیگر پدیدمی‌آید متعلق به دارنده حقوق نرم‌افزارهای واسط نیست.‌ ماده ۵ - پدید آوردن نرم‌افزارهای مکمل و سازگار با دیگر نرم‌افزارها با رعایتحقوق مادی نرم‌افزارهای اولیه مجاز است.‌ ماده ۶ - پدید آوردن نرم‌افزارها ممکن است ناشی از استخدام و یا قرارداد باشد دراین صورت: ‌الف - باید نام پدید آورنده توسط متقاضی ثبت به مراجع یاد شده در این قانون بهمنظور صدور گواهی ثبت، اعلام شود. ب - اگر هدف از استخدام یا انعقاد قرارداد، پدید آوردن نرم‌افزار مورد نظر بوده ویا پدید آوردن آن جزء موضوع قرارداد باشد، حقوق مادی مربوط‌و حق تغییر و توسعه نرم‌افزار متعلق به استخدام کننده یا کارفرما است، مگر اینکه در قرارداد به صورتدیگری پیش بینی شده باشد. ‌ماده ۷ - تهیه نسخه‌های پشتیبان و همچنین تکثیر نرم‌افزاری که به طریق مجاز برایاستفاده شخصی تهیه شده است چنانچه به طور همزمان مورد‌استفاده قرار نگیرد، بلامانعاست.‌ ماده ۸ - ثبت نرم‌افزارهای موضوع مواد (۱) و (۲) این قانون پس از صدور تأییدیه فنی توسط شورای عالی انفورماتیک حسب مورد توسط وزارت‌فرهنگ و ارشاد اسلامی و یامرجع ثبت شرکتها انجام می‌پذیرد.‌ ماده ۹ - دعوای نقض حقوق مورد حمایت این قانون ، در صورتی در مراجع قضایی مسموعاست که پیش از اقامه دعوی ، تأییدیه فنی یاد شده در‌ماده (۸) این قانون صادر شده باشد. در مورد حق اختراع ، علاوه بر تأییدیه مزبور ، تقاضای ثبت نیز باید به مرجعذی ربط تسلیم شده باشد.‌ ماده ۱۰ - برای صدور تأییدیه فنی موضوع ماده (۸) در مورد نرم افزارهایی که پدیدآورنده آن مدعی اختراع بودن آن است، کمیته‌ای به نام "‌کمیته‌حق اختراع" زیر نظرشورای عالی انفورماتیک تشکیل می‌شود. اعضای این کمیته مرکب از سه کارشناس ارشدنرم‌افزار به عنوان نمایندگان شورای عالی‌انفورماتیک، نماینده سازمان ثبت اسناد واملاک کشور و یک کارشناس حقوقی به انتخاب شورای عالی انفورماتیک خواهد بود.‌ ماده ۱۱ - شورا مکلف است از صدور تأییدیه فنی برای نرم‌افزارهایی که به تشخیصوزارت فرهنگ و ارشاد اسلامی خلاف اخلاق اسلامی و‌عفت عمومی و سلامت شخصیت کودکان ونوجوانان باشند خودداری کند. وزارت فرهنگ و ارشاد اسلامی باید ظرف دو هفته راجع به استعلام کتبی‌شورای عالی انفورماتیک اعلام نظر کند.‌ ماده ۱۲ - به منظور حمایت عملی از حقوق یاد شده در این قانون‌، نظم بخشی وساماندهی فعالیت‌های تجاری رایانه‌ای مجاز، نظام صنفی رایانه‌ای‌توسط اعضای صنف یادشده تحت نظارت شورا به وجود خواهد آمد. مجازات‌های مربوط به تخلفات صنفی مربوط،برابر مجازات‌های جرایم یاد شده در‌ لایحه قانونی امور صنفی - مصوب 1359.4.13 واصلاحیه‌های آن - خواهد بود.‌ ماده ۱۳ - هرکس حقوق مورد حمایت این قانون را نقض نماید علاوه بر جبران خسارت بهحبس از نود و یک روز تا شش ماه و جزای نقدی از ده‌ میلیون (۱۰،۰۰۰،۰۰۰) تا پنجاه میلیون (۵۰،۰۰۰،۰۰۰) ریال محکوم می‌گردد.‌ تبصره - خسارات شاکی خصوصی از اموال شخص مرتکب جرم جبران می‌شود.‌ ماده ۱۴ - شاکی خصوصی می‌تواند تقاضا کند مفاد حکم دادگاه در یکی از روزنامه‌ها با انتخاب و هزینه او آگهی شود.‌ ماده ۱۵ - رسیدگی جرم مذکور در ماده (۱۳) با شکایت شاکی خصوصی آغاز و باگذشت او موقوف می‌شود.‌ ماده ۱۶ - حقوق مذکور در ماده (۱) در صورتی مورد حمایت این قانون خواهد بود که موضوع برای نخستین بار در ایران تولید و توزیع شده باشد.‌ ماده ۱۷ - آیین‌نامه اجرایی این قانون شامل مواردی از قبیل چگونگی صدور گواهی ثبت و تأییدیه فنی و هزینه‌های مربوط همچنین نحوه تشکیل‌ نظام صنفی رایانه‌ای، به پیشنهاد سازمان مدیریت و برنامه‌ریزی کشور و با هماهنگی وزارتخانه‌های فرهنگ وارشاد اسلامی و دادگستری به تصویب‌ هیأت وزیران خواهد رسید.‌قانون فوق مشتمل بر هفده ماده و یک تبصره در جلسه علنی روز یکشنبه مورخ چهارم دی‌ماه یک هزار و سیصد و هفتاد و نه مجلس شورای اسلامی‌تصویب و در تاریخ ۱۳۷۹/۱۰/۱۰ به تأیید شورای نگهبان رسیده است. تاریخ تصویب : ۱۳۷۹/۱۰/۰۴ مرجع تصویب : مصوبات مجلس شورا ماده ۱۷ بند ۲ منابع و اسناد رسمی مرکز پژوهش‌های مجلس شورای اسلامی ویکی‌پدیا
  2. کامبیز اسدزاده

    مقایسه‌ی دو مجوز تجاری و منبع‌باز

    با توجه به ویژگی‌های موجود در مجوز‌های مربوطه لازم است تا مقایسه‌ای در رابطه با آن‌ها صورت بگیرد که به آن‌ها اشاره شده است. هزینه‌ها منبع‌باز - Open Source نرم‌افزارهای متن باز رایگان هستند. این فرصتی بسیار خوب است مخصوصا برای کسانی که در خانه کار می‌کنند یا توان پرداخت هزینه‌های بالا را برای تهیه نرم‌افزارهای موردنیاز خود ندارند. باید توجه داشت که اغلب برای کار با نرم افزارهای متن باز کاربر باید سطح تخصص معینی جهت مدیریت محتوای آنها داشته باشد. بنابراین قبل از اینکه رایگان بودن شما را اغوا کند به‌این نکته توجه کنید که هزینه‌های آموزش کاربران، پیاده سازی، مسائل مربوط به خدمات و پشتیبانی و رشد و توسعه سازمان و بدست آوردن تخصص کار با نرم‌افزار متن باز موردنظر می‌تواند از هزینه ی خرید یک نرم‌افزار Closed Source بیشتر شود. منبع‌بسته - Closed Source هزینه‌ی خرید نرم‌افزارهای اختصاصی (متن بسته) بسته به پیچیدگی نرم‌افزار از چند دلار تا چند میلیون دلار متغیر است. این هزینه شامل هزینه‌های اولیه ساخت، یکپارچه سازی، خدمات، مجوزها (licence) و هزینه های سالیانه‌ می‌شود. این هزینه ها ممکن است برای برخی سنگین باشد، با این حال آنچه کاربر بابت بکارگیری اینگونه نرم افزرها می پردازد مجموعه‌ای از مزایا شامل استفاده از یک نام تجاری معتبر و قابل اعتماد، سطوح بالاتری از امنیت و عملکرد، نوآوری مستمر، آموزش مستمر، پشتیبانی قابل اعتماد و نیاز کمتر به مهارت‌های فنی می‌شود. این موارد می‌تواند در بلند مدت علاوه بر جبران هزینه‌های پرداخت شده، ارزش افزوده‌ای نیز برای سازمان ایجاد کند. خدمات و پشتیبانی منبع‌باز: پشتیبانی و خدمات یکی از مسائل کلیدی در نرم‌افزارهای متن باز است. این نرم‌افزارها جهت پشتیبانی و ارائه خدمات به کاربران خود متکی به شبکه‌های اجتماعی آنلاین مانند انجمن‌ها و وبلاگ‌ها هستند. جوامع و اطلاعات آنلاین بسیار عظیم و وفاداری که کاربران زیادی در آنها در حال فعالیت هستند. اما امروزه با توجه به کمبود زمان، مصرف کنندگان نیاز به خدمات و پشتیبانی فوری دارند تا مشکلاتشان در اسرع وقت حل و فصل شود. بنابراین این جوامع آنلاین نمی‌تواند به اندازه‌ی کارشناسان آماده به پاسخگویی نرم‌افزارهای اختصاصی، پشتیبانی به موقع و سریع را تضمین نماید. منبع‌بسته: اگر اینترنت را مهمترین ابزار هر سازمان بدانیم. اغلب نرم‌افزار است که در درجه‌ی دوم اهمیت قرار می‌گیرد. پس سطح سرویس دهی و پشتیبانی از نرم‌افزار جهت به حداقل رساندن خرابی‌ها و مشکلات و همچنین افزایش بهره وری یکی از مهمترین مزیت‌های نرم‌افزارهای اختصاصی (متن بسته) است. ارائه دهندگان نرم‌افزارهای اختصاصی یک نقطه کلیدی برای فروش نرم‌افزارهای خود دارند و آن حمایت مداوم از کاربرانی است که بدون داشتن مهارت فنی می‌توانند بدون دلهره از نرم‌افزارهای آنها استفاده کنند. اگر کتابچه راهنمای نرم‌افزار(User Manual) کافی نباشد یا اینکه کابر در کار با نرم‌افزار با یک مشکل مواجه شود که تجربه‌ی آنرا ندارد، آنگاه یک ویژگی مهم در نرم‌افزارهای اختصاصی برای حل این مشکل وجود دارد و آن هم قابلیت برقرای تماس فوری و در لحظه با سازنده‌ی نرم‌افزار جهت حمایت و پشتیبانی است. از آنجا که خدمات و پشتیبانی سریع و به موقع یکی از دلایل اصلی کاربران برای انتخاب نرم‌افزارهای اختصاصی است، در نتیجه بسیاری از ارائه دهندگان نرم‌افزارهای اختصاصی به فکر افزایش سطح خدمات و سرعت پشتیبانی جهت بالا بردن قیمت و چانه زنی در فروش هستند. ابداع و نوآوری منبع‌باز: نرم‌افزارهای متن باز با ایجاد آزادی عمل و انعطاف پذیری فراوان این امکان را به کاربران می‌دهند تا بتوانند بدون محدودیت به نوآری و ابداع های جدید دست بزنند. با این حال، نوآوری ایجاد شده توسط کابر برای اینکه توسط سایر کاربران همان نرم‌افزار قابل استفاده باشد بستگی به تصمیم ابداع کننده دارد که آیا می‌خواهد نوآوری خود را بوسیله جوامع آنلاین با کاربران دیگر به اشتراک بگذارد یا نه. پس نوآوری و ابداع در این دسته از نرم‌افزارها (متن باز) وابستگی شدیدی به میزان فعال بودن کاربران آنها در جوامع آنلاین دارد. همچنین این بحث وجود دارد که شخصی سازی های انجام شده بر روی کد منبع اصلی ممکن است آینده پشتیبانی و توسعه نرم‌افزار را محدود کند. پس عملا ابداعات و نوآوری‌های فراوان انجام شده توسط کاربران مختلف به علت گستردگی و عدم کنترل مرکزی و مدیریت قدرتمند نتیجتاً به مجموعه‌ای محدود شامل رفع مشکل، بروزرسانی و بهبود عملکرد نرم‌افزار منجر می شود. یا حتی امکان دارد نرم‌افزار را به مرحله‌ای برساند که با یکسری مسائل غیرقابل حل روبرو کند. البته به‌این نکته توجه داشته باشید که امکان بوجود آمدن این مشکل بستگی مستقیم با تلاش ارائه دهندگان نرم‌افزارهای متن باز برای بزرگ کردن مقیاس R&D تشکیلاتشان دارد. منبع‌بسته: نرم‌افزارهای اختصاصی اجازه ی تغییر کد منبع را به کاربران خود نمی‌دهند. شاید این موضوع از دید برخی افراد یک نقطه ضعف به شمار بیاید اما همین مسئله باعث تضمین امنیت و قابل اطمینان بودن نرم‌افزار می شود.ر علاوه بر این برخی از ارائه دهندگان نرم‌افزارهای اختصاصی افزون بر سرمایه گذاری بر روی R&D جهت ارتقا و بهبود مستمر نرم‌افزار خود، برای مشتریان مخصوص نیز نرم‌افزارهای سفارشی شده با قابلیت انعطاف بیشتر را نیز ارائه می‌دهند. همچنین ارائه دهندگان نرم‌افزارهای اختصاصی با ایجاد جوامع آنلاین متمرکز که در آنها ایده های کاربران به اشتراک گذاشته می شود و همچنین استفاده از مکانیزم بازخورد انجمن‌ها و نظرسنجی‌ها می‌توانند ایده ها و پیشنهادهای کاربران را با توجه به چهارچوب محصول، تبدیل به نوآوری های پرورش داده شده و منظم و قاعده مند کرده و آنرا جهت برآورده نمودن نیازهای آتی کاربران بکار گیرند. حال می‌توان دریافت هرچند نوآوری های انجام شده در نرم‌افزارهای اختصاصی شاید کمتر از نرم‌افزارهای متن باز باشد اما خصوصیت و مزیت این نوع ابداعات این است که اولا بصورت کامل مورد آزمایش قرارگرفته و ثانیا در اختیار تمام کاربران نرم‌افزار قرار می گیرد. و از آنجا که ارائه دهندگان نرم‌افزارهای اختصاصی همیشه نگران این مسئله هستند که نرم‌افزارشان از کار برکنار شود، پس همیشه به فکر ارتقای نرم‌افزار و رفع شکلات بصورت مداوم و پیوسته خواهند بود و این بدان معناست که کاربر با خاطری آسوده منتظر رفع مشکلات و بهبود مستمر نرم‌افزار مورد استفاده ی خود است. پس تفاوت در نوآوری میان دو پلاتفرم در دیدی است که به نوآوری و ابداع می شود، زیرا در نرم‌افزارهای متن باز نوآوری بیشتر تکنیک محور است امادر نرم‌افزارهای اختصاصی(متن بسته) تجارت محور. قابلیت استفاده (Usability) منبع‌باز: ازنرم‌افزارهای متن باز به علت عدم قابلیت استفاده پذیری بسیار انتقاد شده است. بطور کلی این فناوری توسط کارشناسان متخصص در امر استفاده پذیری، بازبینی نشده است و برای اکثریت قریب به اتفاق کاربران کامپیوتر تهیه نشده است. این نوع نرم‌افزارها اکثرا برای کسانی بوجود می آیند که تخصص رفع خطا و یا تغییر کد ودستکاری آنها را داشته باشند. علاوه بر اینها، اینگونه نرم‌افزارها بصورت قانونی موظف به داشتن راهنمای کاربری نیستند. زمانی هم که مستنداتی ارائه شود اغلب شامل یکسری اصطلاحات مخصوص برای متخصصان خواهد بود. بدون مستندات کافی، کاربر باید بر جایگزین هایی مانند جوامع آنلاین تکیه کند با این فرض که یک نفر قبلا این مشکل را داشته و به او پاسخ داده شده، تا راهنمایی باشد برای یک نفر دیگر. این موانع بازدارنده است اما غیرقابل حل نیست. منبع‌بسته: نرم‌افزارهای اختصاصی بطور کلی زیر نظر کارشناسان متخصص جهت قابل استفاده بودن مورد تست و بررسی تخصصی قرار می گیرند و هدف نهایی کاربران هستند. در نتیجه طراحی نرم‌افزار بگونه‌ای خواهد بود که کاربر را بیشتر ارضا کرده و استفاده پذیری آن بسیار بالا می رود. همچنین ارائه ی کتابچه راهنمای جامع و کامل محصول، آموزش استفاده محصول توسط کاربر را بسیار سریعتر و آسانتر می کند. خدمات حمایتی شامل سمینارها، دوره های آموزشی هدفمند و پشتیبانی گسترده نیز جهت به حداکثر رساندن استفاده پذیری نرم‌افزار وجود دارد. ذکر این نکته نیز بسیار مهم است که درحالی که بسیاری از مردم این نرم‌افزارها را بسته می بینند، ارائه دهندگان این نرم‌افزار ها ، مکانیزم وسیعی را جهت بهبود آنها توسط توسعه دهندگان و سیستم های third party در اختیار گذاشته اند. امنیت منبع‌باز: نرم‌افزارهای متن باز اغلب به داشتن مشکلات و مسائل امنیتی مشهور هستند. آمارهای جدید از تحقیقات فورستر نشان می دهد که ۵۸ درصد از مدیران IT و تصمیم گیرندگان در شرکتهای بزرگ در مورد امنیت نرم‌افزارهای متن باز تردید دارند. اینگونه نرم‌افزارها لزوما در یک محیط کنترل شده توسعه نیافته است و چون این نرم‌افزارها اغلب بصورت کامل بازبینی و تصحیح نمی شوند پس امکان اینکه یک برنامه نویس که در توسعه نرم‌افزار مشارکت داشته، کدی را در نرم افزار گنجانده باشد تا بوسیله ی آن بتواند از اطلاعات شما سوء استفاده نماید، وجود دارد. البته، بسیاری از افراد ترجیح می‌دهند از نرم افزارهای متن باز یا منبع باز (open source) استفاده کنند چون این نرم افزارها را امن‌تر و پایدارتر از نرم افزارهای اختصاصی (proprietary) می‌یابند. چون کد منبع آن توسط هرکسی قابل مشاهده بوده و از آنجا که تغییر در بخش‌هایی از ان مستلزم کسب اجازه از نویسنده اصلی نیست می‌توان اشکالات یا خطاهای مشاهده شده را نیز رفع نمود. از آنجایی که معمولاً این نرم افزارها دارای جوامع برنامه‌نویسی بزرگی نسبت به تیم‌های توسعه‌دهنده نرم‌افزارهای اختصاصی هستند لذا رفع اشکالات و خطاها نیز در آنها سرعتر انجام می‌شود. منبع‌بسته: نرم‌افزارهای اختصاصی امن تر است به‌این دلیل که در یک محیط کنترل شده توسط یک تیم متمرکز با مسیر مشترک توسعه یافته است. علاوه بر این بازبینی و تست کد منبع توسط این تیم خطر وجود back door ها و هرگونه اشکالات را بشدت کاهش می دهد. نتیجه گیری به نظر می‌رسد استفاده از هریک از این دو مجوز در جای مناسب می‌تواند بسیار مفید باشد. نرم‌افزارهای متن باز را می‌توان در جایی که فاکتورهایی همچون امنیت و پشتیبانی دارای اهمیت کمتر و هزینه کم دارای اهمیت بیشتر باشد، بکار برد. اما در مکان‌هایی همچون سازمانها نمی‌توان این ریسک را انجام داد و بهتر است بیشتر روی نرم‌افزارهای اختصاصی تکیه کرد که دارای قابلیت اطمینان بیشتری هستند.
  3. کامبیز اسدزاده

    انواع مجوز‌های نرم‌افزاری

    در دنیای مدرن برنامه‌نویسی امروز همانند دیگر کسب‌و‌کار‌ها در حوزه‌های مختلف، برنامه‌نویسی و توسعه‌ی نرم‌افزار دارای قوانین و چهارچوب‌های تقریباً مشخصی است که توسعه‌دهندگان حقوقی و حقیقی باید در باره‌ی آن‌ها بدانند تا در میدان دردسرهای پیش‌بینی‌نشده و ناخواسته سقوط نکنند. در این مقاله به انواع مجوز‌ها و همچنین قوانین حاکم بر آن‌ها اشاره می‌شود که شما را دعوت به مطالعه‌ی آن می‌کنیم. در بسیاری از مواقع، نوشتن یک برنامه‌ی کاربردی، بدون استفاده از انوع کتابخانه‌های از قبل نوشته شده (کد‌هایی که دیگران نوشته‌اند)، تقریباً غیرممکن است. مهم‌ترین چیزی که پیش از دست زدن به کدها و تصاویر آماده‌ی گرافیکی، یا استفاده از کتابخانه‌ها باید بررسی کنید، مجوز، یا به‌ اصطلاح (لایسنسی) است که اثر را تحت آن توزیع کرده‌اند. برای اطلاع از آن، معمولاً باید به دنبال فایلی با نام license.txt بگردید یا صفحه‌ی مربوط به مجوزها (Legal/Licensing) را در سایت اصلی بیابید. برخی از تفکرات غلط که باید به آن‌ها توجه شود قرار است شما کتابخانه‌ای را بنویسید و یا محصولی را توسعه دهید، در توسعه‌ی آن شما نیاز به استفاده از کتابخانه‌ها و یا تکه‌کد‌هایی هستید که دیگران آن‌ها را توسعه داده‌اند، با توجه به اینکه محصول شما قرار نیست منبع‌باز باشد (تجاری) بنابراین نباید اینگونه فکر کنید که چون محصول من تجاری است و قرار نیست کسی کد آن را ببیند، پس نیازی به حفظ حقوق توسعه‌دهنده و یا عنوان کردن کتابخانه‌ها و توسعه‌‌دهندگان دیگر باشم! این یک تفکر غلظ است (چرا که محصول شما بدون وجود کدهای نوع سوم (Third-Party) قادر به انجام کارهایی که از آن انتظار دارید را نخواهد داشت (مگر اینکه محصول شما به صورت کامل توسط خود شما توسعه داده شده باشد) که این کار در بسیاری از مواقع تقریباً غیر‌ممکن است. برای مثال اگر نیاز است شما در رابطه با مباحث امنیتی از کتابخانه‌ای مانند OpenSSL استفاده کنید، دیگر نوشتن یک کتابخانه‌ی عظیمی مانند آن حماقتی بیش نیست چرا که چنین کتابخانه‌هایی توسط شرکت‌ها، سازمان‌ها و توسعه‌دهندگان بسیاری از قبل توسعه و مورد استفاده قرار گرفته‌اند و از لحاظ پایداری و اطمینان استفاده مورد تایید قرار گرفته‌اند. دقت کنید که استفاده از کتابخانه‌ها و حتی هدف از نوشتن یک کتابخانه باید تحت شرایط حاکم بر مجوز‌ها را در نظر داشته باشد. برای مثال، اگر شما قصد دارید کتابخانه‌ای را مورد استفاده قرار دهید و یا قرار است کتابخانه‌ای را ایجاد و توسعه دهید بهترین کار قبل از شروع توسعه آن است که بدانید هدف شما از توسعه‌ی آن کتابخانه چه چیزی است؟ آیا قرار است کتابخانه‌ی مورد نظر شما به صورت انحصاری و تجاری در اختیار کاربران قرار بگیرد و یا قرار است به صورت کاملاً رایگان به اشتراک‌ گذاشته شود؟ شاید ابتدا به این فکر کنیم که چرا باید کدی را که برای آن زحمت کشده‌ایم به صورت رایگان در اختیار دیگران قرار دهیم، چرا که ممکن است آن را بدون حفظ نام نویسنده تغییر، توسعه و بازنشر و برای استفاده در مصارف تجاری (غیر رایگان) قرار دهند؟ برای پاسخ به این سوأل‌ها پیشنهاد می‌کنیم به ویژگی‌های مجوز‌های موجود دقت کنید چرا که حتی وقتی شما یک تکه کد را به صورت رایگان در اختیار دیگران قرار می‌دهید استفاده کننده موظف است تا طبق قوانین از پیش تعریف شده‌ی مجوز‌های منبع‌باز (Open Source) آن را مورد استفاده قرار دهد که به حفظ حقوق چاپ و تکثیر، توسعه و دیگر موارد پرداخته است. انواع مجوز‌های نرم‌افزاری و ویژگی‌های آن نرم افزارهای متن باز (Open Source Software) نرم افزار متن باز را می‌توان نرم‌افزاری معرفی کرد که تحت یک مجوز (Licence) دارای موافقتنامه‌ی انتشار یافته، که اجازه‌ی به اشتراک‌گذاری کد منبع (کد‌ کامپیوتری) را جهت مشاهده و انجام تغییرات در آن توسط کاربران و سازمان‌های دیگر می‌دهد. مثال‌هایی از این نوع نرم افزارها می‌توان به مرورگر موزیلا، لینوکس، جوملا، وردپرس و غیره اشاره کرد. نرم افزارهای اختصاصی (متن بسته) (Closed Source Software) اینگونه نرم‌افزارها، نرم‌افزارهایی اختصاصی هستند که تحت یک مجوز دارای موافقتنامه‌ برای انجام تغییرات، توزیع، کپی و انتشار محدود و کنترل شده در اختیار کاربران و سازمان‌ها قرار می‌گیرند. یا به صورت ساده تر نرم‌افزارهایی که برای دریافت آنها باید پول پرداخت کنید و اجازه دسترسی به کد منبع برنامه را ندارید. مثال‌هایی از این نوع نرم‌افزارها می‌توان به محصولات مایکروسافت مانند Office یا شرکت Adobe مانند Photoshop و غیره اشاره کرد. مجوز آزاد (CopyFree) کدهایی که تحت این نوع مجوز توزیع می‌شوند، هیچ محدودیتی بر برنامه‌ی نهایی شما ایجاد نمی‌کنند. شما آزاد هستید که هر تغییری در آن‌ها ایجاد کنید و لزومی ندارد کدهای تغییریافته یا استفاده‌شده را بازنشر دهید. حتی منبعی برای استفاده‌ی تجاری از این کدها نیز وجود ندارد. انواع اصلی این لایسنس‌ها عبارتند از Apache، BSD، MIT/X11 و Academic Free Licence مجوز‌های BSD و MIT بسیار مختصر هستند و تنها به مثابه‌ی اعلامیه‌ای برای سلب مسئولیت از نویسنده به کار می‌روند و گزینه‌ی مناسبی برای کامپوننت‌ها و کدهای کوچک قلمداد می‌شوند. در حالی که Apache و AFL، متن‌های حقوقی و کاملی هستند که تکلیف مسائلی نظیر سرنوشت پتنت‌ها را نیز مشخص کرده‌اند. برنامه‌های کامل، ترجیحاً با مجوز‌های Apache عرضه می‌شوند. به عنوان مثال، برنامه‌های معروفی که از این نوع لایسنس‌ها استفاده می‌کنند، می‌توان به LLVM/Clang، X11، FreeBSD، OpenSSL، Apache Server، اپل وب‌کیت و کرومیوم، و قسمت‌های یوزرلند اندروید اشاره نمود. مجوز تجاری (Copyrighted/Proprietary) کپی‌رایت شده همه‌ی برنامه‌های تجاری با این عنوان عرضه می‌شوند. این کدها بدون تهیه‌ی مجوز لازم از توزیع‌کننده، در کدهای شما قابل استفاده نیستند. استفاده از این کدها یا لینک کردن به آن‌ها، معمولاً در ازای پرداخت پول مجاز است. پس از دریافت مجوز، ممکن است فایل‌های کامپایل‌شده (سورس‌بسته) یا کدهای اصلی (همراه سورس) را در اختیار شما قرار دهند، اما به شما اجازه‌ی توزیع آن کدها را نخواهند داد. از گروه سورس‌بسته می‌توان به ویندوز و مایکروسافت آفیس، و از گروه همراه با سورس می‌توان به vBulletin، Unix و کامپوننت‌های DevExpress اشاره کردبر خلاف مجوز‌های متن‌باز لزوماً همراه داشتن سورس به معنی متن‌باز (opensource) بودن نرم‌افزار نیست. بلکه شرایط دیگری مثل شرایط بازنشر نیز لحاظ می‌شود. عملاً فقط مجوزهای آزاد و کپی‌لفت تحت این عنوان قرار می‌گیرند، استاندارد رایجی برای مجوزهای کپی‌رایت تجاری وجود ندارد و توصیه می‌شود فایل لایسنس، به‌دقت مطالعه شود. مجوزهای کپی‌لِفت قوی (Strong Copylefted) کدهایی که تحت این عنوان توزیع می‌شوند، لایسنس خود را به برنامه‌ی شما تحمیل می‌نمایند. حتی اگر یک خط از آن‌ها را وارد برنامه‌ی خود کنید، ناچار خواهید بود کل برنامه‌تان را به صورت کپی‌لفت، در اختیار سایرین قرار دهید. این مجوزها به شما اجازه‌ی تجاری‌سازی یا فروش برنامه و کدتان را نمی‌دهند. سخت‌گیری مجوزهای کپی‌لفت تنها به استفاده از کدها ختم نمی‌شود. حتی لینک کردن به نسخه‌ی کامپایل‌شده‌ی آن‌ها نیز، چه به صورت استاتیک انجام شود و چه به صورت دینامیک، همه‌ی کدهایتان تحت این مجوزها قرار خواهد گرفت. بنابراین اگر قصد ندارید بدون انتشار همه‌ی کدهای خود برنامه‌تان را توزیع کنید و یا از فروش آن کسب درآمد نمایید. جهت اطلاع از روش‌های درآمدزایی از پروژه‌های متن-باز به این سند مراجعه کنید. البته کسب درآمد از طریق ارائه‌ی خدمات پشتیبانی و نصب و راه‌انداری قانونی‌ست و مدل تجاری شرکت‌های بزرگی همچون ردهت بر این اساس بنا نهاده شده است.انواع اصلی این لایسنس‌ها GPL و AGPL هستند که هر کدام چندین نسخه دارند. در میان برنامه‌های معروفی که با این نوع لایسنس عرضه می‌شوند، می‌توان به لینوکس (کرنل) و یوزرلند اصلی آن، GNU، و همچنین MySQL، وردپرس، جوملا، لیبرآفیس(LibreOffice)، کامپایلر GCC، فریمورک Qt و… اشاره نمود. معدودی از این برنامه‌ها و کدها، هم‌زمان با لایسنس تجاری هم عرضه شده‌اند که اگر بخواهید از برنامه‌ای که نوشته‌اید، از طریق فروش نرم‌افزار و بدون انتشار سورس کد کسب درآمد کنید، می‌بایست نسخه‌ی تجاری آن‌ها را خریداری نمایید. فریمورک Qt و بانک اطلاعاتی MySQL از این دسته برنامه‌ها هستند. مجوزهای کپی‌لفت ضعیف (Weak Copylefted) تنها تفاوت انواع ضعیف مجوزهای کپی‌لفت با انواع قوی آن،‌ در این است که اجازه‌ی لینک دینامیک به کتابخانه‌های کامپایل‌شده با این لایسنس را می‌دهد. برای مثال، Glibc، کتابخانه‌ی پوزیکس و زبان سی POSIX / Standard C Library در لینوکس، که عملاً دروازه‌ی هسته‌ی لینوکس برای همه‌ی برنامه‌های کاربردیست، با این مجوز توزیع شده است و اگر به خاطر همین مجوز کپی‌لفت ضعیف نبود، اساساً امکان عرضه‌ی برنامه‌های تجاری برای لینوکس وجود نداشت. به عنوان انواع اصلی این مجوز ها، می‌توان به LGPL و MPL (موزیلا) اشاره کرد.برنامه‌ها‌ی Firefox و VLC و کتابخانه‌ی معروف FFmpeg نیز نمونه‌ی دیگری از این گروه مجوزهاست. اگرچه برخی اجزای کتابخانه FFmpeg تحت لیسانس GPL منتشر شده‌اند. در صورت فعال شدن همان اجزا، کل کتابخانه تحت GPL قرار خواهد گرفت.در سیستم عامل اندروید، برای آن که کوچک‌ترین نگرانی برای برنامه‌سازان تجاری باقی نماند و از سرایت لایسنس هسته‌ی اصلی لینوکس به بقیه‌ی نرم‌افزارها جلوگیری شود، کتابخانه‌ی پوزیکس/سی اختصاصی آن به نام Bionic، با لایسنس BSD عرضه شده است. مجوزهای کرییتیو کامنز (Creative Commons, CC) نوعی مجوز آزاد و رایگان که برای آثار گرافیکی و نوشتاری رایج است و بر اساس ویژگی (Types) آن می‌توانند مجاز یا ممنوع برای استفاده‌ی تجاری باشند. اگر برنامه‌ی تجاری می‌نویسید، تنها از کارهای گرافیکی استفاده کنید که استفاده‌ی تجاری را آزاد گذاشته‌اند.این مجوز می‌تواند ویژگی‌های دیگری نظیر عدم اجازه‌ی تغییر در کار اصلی را همراه خود داشته باشد که باید به آن‌ها نیز توجه نمایید. آیا می‌توانم با نرم‌افزارهای کپی‌لفت، محتوای تجاری تولید کنم؟ جامعه‌ی متن‌باز، مراقب این موضوع بوده که مجوز‌ برنامه‌هایشان محتوای شما را تحت تأثیر قرار ندهند و در صورت لزوم این موضوع را به صراحت نیز قید کرده‌اند. بنابراین می‌توانید با برنامه‌ای نظیر LibreOffice که تحت GPL توزیع شده، محتوای تجاری تولید کنید، یا برنامه‌ی تجاری خود را توسط GCC کامپایل نمایید. اطلاعات سایت‌هایی که تحت نرم‌افزارهای کپی‌لفت هستند تحت تأثیر این لایسنس قرار نخواهند داشت (چرایی آن از نظر حقوقی خود یک مقاله است). در واقع، سایت‌های خبررسانی زیادی نظیر CNN از این سرویس‌ها استفاده می‌کنند. از نرم‌افزاری با مجوز GPL (مثل وردپرس) برای راه‌اندازی سایت خود استفاده کرده‌ام. تکلیف چیست؟ این گونه برنامه‌ها همراه سورس هست و آزادید آن‌ها را تغییر بدهید. خیالتان راحت باشد که محتوای سایت شما تحت این نوع مجوز قرار نخواهد گرفت و تنها کدهاست که شامل لایسنس می‌شوند. حتی اگر چیزی به سورس آن اضافه کنید یا تغییر دهید، ولی قصد توزیع آن را نداشته باشید، به این کار مجبور نمی‌شوید. ولی توجه داشته باشید که پلاگین‌ها و تم‌های وردپرسی که شما تهیه می‌کنید، یا تغییراتی که به‌اصطلاح هاردکد می‌کنید، تحت مجوز GPL قرار می‌گیرند و تنها در صورتی که بخواهید آن‌ها را به فرد دیگری بدهید، حتی یک نفر دیگر، مجبورید سورسشان را به رایگان برای همه منتشر کنید. در واقع این موضوع، یکی از بزرگ‌ترین معضلات حقوقیست که تهیه‌کنندگان پلاگین‌ها و تم‌های تجاری وردپرس با آن درگیرند. اگرچه مجوز GPL شما را مجبور نمی‌کند که تغییراتی که برای استفاده‌ی شخصی داده‌اید منتشر کنید، اما این مجوز خواهرخوانده‌ای به نام AGPL دارد که در صورتی که کد تغییر یافته را روی سرور اجرا کنید، باید منتشرش نمایید. آیا می‌توانم کدی که تحت مجوز MIT یا BSD منتشر شده را در برنامه‌ی تحت GPL استفاده کنم؟ احتمال زیادی وجود دارد که هر قسمت از یک پروژه‌ی بزرگ، تحت لایسنس جداگانه‌ای توزیع شده باشد. برای مثال در اندروید، هسته‌ی لینوکس تحت GPL، بیونیک (کتابخانه‌ی پوزیکس/سی) تحت BSD و بقیه‌ی قسمت‌ها عمدتاً بر اساس آپاچی منتشر شده‌اند. در سیستم عامل MacOSX، هسته‌ی Darwin و برخی اجزا تحت BSD و بقیه به صورت تجاری و سورس بسته هستند. بنا بر یک قاعده‌ی کلی، شما می‌توانید مجوز یک کد را از یک لایسنس بازتر نظیر MIT، به لایسنس محدودتر نظیر GPL تغییر دهید، حتی اگر صاحب آن نباشید. ولی روند معکوس آن تنها برای صاحب اصلی اثر امکان‌پذیر است[ref]برای نمونه برنامه‌ی VLC ابتدا تحت GPL قرار داشت اما در نهایت به دلیل ناسازگاری آن با استور آیتونز توسط شرکت سازنده به لایسنس بازتر MPL/LGPL منتقل شد. یا نرم‌افزار ToyBox که تحت لایسنس LPGL بود اما برای اینکه بتواند روی دستگاه‌های موبایل قرار گیرد تحت BSD قرار گرفت و اندرویید مارشملو از BusyBox به آن سوییچ کرد.به عنوان مثال، با این که مجوز آپاچی همانند MIT آزاد است، ولی از نوع محدودتر قلمداد می‌شود،‌ پس نمی‌توان کدهای تحت آپاچی را با مجوز MIT بازنشر کرد.به طور مختصر ترتیب مجوزهای متن‌باز، از بازترین به محدودترین، به شکل زیر است: Public Domain -> MIT/X11 -> BSD -> Apache -> LGPL/MPL -> GPL -> AGPL آیا برنامه‌ی تحت ویندوز، شامل لیسانس تجاری مایکروسافت خواهد شد؟ مایکروسافت به شما این اجازه را می‌دهد که در چارچوب سیستم عامل ویندوز، به dllهای سیستم‌عامل لینک دهید و از آن‌ها استفاده نمایید، اما این بدان معنا نیست که شما اجازه داشته باشید dllها را به برنامه‌ی خود اضافه نمایید. بنابراین استفاده از dllهای خود ویندوز، در سیستم‌عامل‌ها و شبیه‌سازهای غیرمایکروسافتی (نظیر ReactOS یا Wine)، غیرقانونی است و این‌ها به طور مستقل، پیاده‌سازی کدهایی را انجام داده‌اند که با اینترفیس برنامه‌نویسی ویندوز (Win32 API) سازگار هستند. در ایران که قانون کپی‌رایت وجود ندارد، باز هم ملزم به رعایت و توجه به این موارد هستیم؟ صرف نظر از مسائل اخلاقی که ما را ناگزیر از رعایت این موارد می‌کنند، باید توجه داشته باشیم که اگر بخواهیم برنامه‌ی خود را در اپ‌استورهایی همچون آیتونز یا گوگل پلی منتشر کنیم، رعایت این موارد ضروری است چرا که در صورت عدم رعایت، برنامه‌های شما را از فروشگاه حذف می‌شود. همچنین، گرچه جامعه‌ی متن‌باز اهل شکایت و دادگاه نیستند، ولی از فردای روزی که ایران به سازمان تجارت جهانی بپیوندد، مسائل حقوقی ناشی از آن، همچون شمشیر داموکلس، بر سر‌کدهای شما خواهند بود. بسیاری از توسعه‌دهندگان تازه‌کار متأسفانه بدون در نظر گرفتن قوانین و شرایط توسعه وارد نشر و تکثیر کد‌ها و محصولاتی می‌شوند که شاید به صورت ناخودآگان تمامی قوانین حقوقی و مجوز‌های مربوطه را نقض می‌کنند. همچنین اپ‌استورهای معروف ایرانی تعهدی از توسعه‌دهنده درباره‌ی عدم استفاده از کدهای بدون مجوز اخذ نمی‌کنند و رویه‌ای برای شکایت از ناقضین ندارند و علاوه بر آن، خود نیز رأساً اقدام به بازتوزیع برنامه‌های خارجی، بدون اخذ رضایت از صاحب اثر می‌نمایند و اگر این رویه‌ی خود را مورد بازبینی قرار ندهند، ممکن است در آینده‌ای نزدیک مجبور به پرداخت خسارت‌های هنگفتی شوند. باید توجه داشت که توزیع رایگان یک برنامه، به این معنا نیست که دریافت‌کننده حق توزیع مجدد آن را، حتی به صورت رایگان، داشته باشد. نمونه‌ی بارز آن یونیکس است که به همراه سورس توزیع شود و برای دانشگاه‌ها رایگان است، اما این قبیل استفاده از آن بدون پرداخت هزینه‌های مربوطه ممکن نیست. بنابراین حتی بازتوزیع نرم‌افزارهای رایگان خارجی در استورهای ایرانی نیز احتمالاً بدون عواقب نیست. منابع و مستندات Software license - Wikipedia Comparison of free and open-source software licenses - Wikipedia CI: policy > permissive CI: policy > copyleft CI: policy > copyright https://scriptics.ir
  4. پس از انتشار مقاله اختصاصی Intel در زمینه گرافیک مجتمع نسل جدید آن با نام Gen 11 و پس از آن جنجالی که با اولین بنچمارک در رزولوشن 1080p ادامه یافت، در تعطیلات نوروزی حسابی سر و صدایی به پا کرده است؛ این تراشه گرافیکی مجتمع در چند پلتفرم پردازشی CPU محور اینتل نصب خواهد شد و بد نیست بدانید که اولین نسل با نام Ice Lake شناخته خواهند شد. اینتل به تازگی یک درایور جدید برای تراشه های گرافیکی خود در ویندوز 10 را منتشر کرده است که به همراه داشبورد و برنامه نرم افزاری جدیدی است که به تازگی اخبار آن را برای شما عزیزان پوشش داده بودیم؛ اما نکته ای که در این درایور به چشم می خورد، لو رفتن عمدی یا سهوی اسامی برخی از CPU و تراشه های گرافیکی داخلی است که اینتل به زودی معرفی خواهد کرد. در این لیست 13 نوع تراشه با معماری جدید گرافیکی Gen11 به چشم می خورند که از نسل Ice Lake خواهند بود. گرافیک مجتمع Iris Plus Graphics 950 قوی ترین پردازشگر این نسل است که دارای 64 واحد EU خواهد بود. این تراشه گرافیکی در پردازنده های Core i7 و Core i9 نیز نصب خواهد شد. گرافیک دوم با نام Iris Plus Graphics 940 شناخته می شود که در پردازنده های Core i5 نیز مورد استفاده قرار می گیرند. Iris Plus Graphics 940 ها با همین تعداد واحد EU دارای فرکانس پایین تری هستند. سپس Iris Plus 930 و Iris Plus 920 را شاهد هستیم که تعداد واحد های EU آنها نیز 48 و 32 عدد است. iGPUهای Gen11 همچنان در مدل های کلیدی GT1 و GT2 معرفی می شوند. برای اطلاعات بیشتر به زمان بیشتری نیاز داریم. شایان ذکر است که لیتوگرافی تولید در این نسل به 10 نانومتری کاهش یافته است.
  5. کامبیز اسدزاده

    از چه روشی برای پخش ویدیو استفاده کردی؟ تَکه کدی که برای پخش و نمایش در QML نوشی رو قرار بده.
  6. کامبیز اسدزاده

    اگر از همین صفحه، با همین حساب کاربری تهیه کردین (مسلماً باید دکمه‌ی دریافت) برای شما فعال باشه.
  7. نرم‌افزار و اپلیکیشن‌های ایرانی روی آیفون (سیستم‌عامل iOS) از کار افتادند! مدت‌ها است که زمزمه‌هایی در مورد محدودسازی استفاده از «گواهی توسعه‌دهنده سازمانی» (Enterprise Developer Certificates) از سوی اپل به گوش می‌رسد. حالا ظاهراً این محدودیت گریبان کاربران ایرانی این سرویس را گرفته است. از دیشب گزارشات های متعددی مبنی از از کار افتادن نرم‌افزار و اپلیکیشن‌های ایرانی آیفون و آی‌پد یا به صورت کلی سیستم عامل iOS اپل به گوش می‌رسد. متاسفانه باید گفت که به صورت رسمی این یک مشکل همگانی بوده و از سوی اپل ایجاد شده است. نرم‌افزار و اپلیکیشن‌های ایرانی بر روی آیفون (سیستم عامل iOS) از کار افتاده‌اند و در ادامه با هم درباره آن صحبت خواهیم کرد، با جامعه‌ی برنامه‌نویسان مدرن ایران همراه باشید. همانطور که در تصویر فوق مشاهده می‌کنید، کاربران برای استفاده از نرم‌افزارهایی که توسعه‌دهندگان آن‌ها ایرانی می‌باشند با مشکل روبرو شده‌اند. در حقیقت از دیشب نرم‌افزارهای مشهور ایرانی مانند بانک ملت، اسنپ، همراه‌من، مای ایرانسل و … روی آیفون قطع شده‌اند و کاربران نمی‌توانند از آن ها استفاده کنند. خطای فوق هنگان اجری برنامه‌ها رخ می‌دهد. گواهی‌های توسعه‌دهندگان سازمانی به شرکت‌ها اجازه می‌دهد اپلیکیشن‌های خود را خارج از فضای اپ‌استور و به شکل مستقیم در اختیار مخاطب قرار دهند. اما چندی قبل مشخص شد که تعدادی از اپلیکیشن‌های مستهجن، قمار و نیز اپ‌های کرک شده از این روش به طور گسترده در اختیار کاربران قرار گرفته‌اند. اپل هم اعلام کرد که توسعه‌دهندگانی که از این گواهی‌ها سوء استفاده می‌کنند خلاف تعهدنامه این شرکت عمل کرده‌اند و مجوزشان باطل خواهد شد. بسیاری از شرکت‌های ایرانی نیز به دلیل تحریم‌های اعمال شده علیه کشور از همین روش استفاده می‌کنند تا محدودیت‌های اعمال شده را دور بزنند. اما همین روش مشکلاتی را برای اپلیکیشن‌های معروف ایرانی ایجاد کرده است. به نظر می‌رسد در روزهای آتی شاهد پیش آمدن مشکلات بیشتری از این دست برای اپلیکیشن‌هایی باشیم که از گواهی سازمانی اپل برای انتشار اپ‌ها استفاده می‌کنند. بررسی‌های جامعه‌ی برنامه‌نویسی ایران خبر از غیر قابل استفاده شدن اپ‌های دیگری از جمله همراه‌بانک‌ها، دیجی‌کالا، آسان پرداخت و ریحون دارد در حالی که برخی دیگر مانند دیوار همچنان قابل استفاده هستند. نکته: بر اساس توصیه‌ی شرکت‌های سازنده‌ی اپلیکیشن‌های ایرانی، فعلاً جهت استفاده از خدمات آن‌ها بهتر است در صورت وجود نسخه‌ی تحت وب از آن پلتفرم استفاده شود.
  8. کامبیز اسدزاده

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

    روش اجرایی به دلیل محدودیت و رعایت قوانین کیوت ارائه نشده. شما در صورتی که بخواهید به صورت استاتیک برنامه‌ی خودتان را بسازید، در این حالت باید مجوز آن را خریداری و سپس در حالت استاتیک آن را کامپایل کنید.
  10. با سلام، معمولاً یکی از سوأل‌هایی که در ذهن افراد بلند‌پرواز رجوع می‌کند این است که من می‌خواهم سیستم‌عامل بنویسم! ? از لحاظ تجربیِ من و نظرات اساتید و افراد حرفه‌ای، تولید و توسعهٔ سیستم‌عامل یکی از پیچیده‌ترین و مشکل‌ترین کار‌های برنامه‌نویسی در این حوزه است. تولید و توسعهٔ چنین محصولی زمان و دانش بسیار بالایی در زمینه‌های مختلف علوم کامپیوتر را می‌طلبد که من در این پست به برخی از آن‌ها اشاره می‌کنم. اختراع چرخ از اول ممکن است در بعضی از موارد اختراع یک محصول از اول کار منطقی باشد، اما در بسیاری از آن‌ها هم ساخت و توسعهٔ آن از اول از جنبهٔ اقتصادی و حتی علمی قابل توجیح نمی‌باشد؛ ساخت و تولید سیستم‌عامل می‌تواند به عنوان یکی از عواملِ پیشرفت کشوری در حوزهٔ فناوری و اهمیت آن به عنوان یک محصول بومی بسیار موثر باشد، اما همه چیز در اینجا خلاصه نمی‌شود بنابراین تولید و توسعهٔ چنین محصولاتی باید با مهارت و انگیزه‌های بسیار حساب‌ کتاب شده‌ای پیاده سازی شود. بلند پروازی و حماقت تنها نکته‌ای که موجب شد من این پست را ایجاد کنم، اشاره به اهمیت بلند پروازی در حرفه‌ای شدن و کسب مهارت‌های فوق پیشرفته است! این که شما بلند پرواز هستید بسیار خوب است. اما باید این را در نظر داشته باشید بعضی از بلند پروازی‌هایی که بدون تحقیقات فنی ایجاد می‌شوند حماقتی بیش نیستند. برای مثال باید در نظر داشته باشید تولید و توسعهٔ سیستم‌عامل هیچ شباهتی به یک نرم‌افزار ساده‌ای با عمل‌ِ CRUD نیست و نویسندهٔ سیستم‌عامل حتی یک برنامه‌نویس متوسط به بالا محسوب نمی‌شود! چرا که توسعه‌‌دهندهٔ سیستم‌عامل باید به عنوان واقعی یک مهندس کاملِ کامپیوتر به تمام ویژگی‌های آن باشد (برنامه‌نویس کاملاً حرفه‌ای با کوله‌باری از تجربه‌های خفن و دانش خوب در رابطه با الگوریتم‌ها و قالب‌های طراحی و غیره...). اگر شما یک برنامه‌نویس تازه‌کار هستید و در ابتدای کار به سراغ چنین بلند‌پروازی آمده‌اید پیشنهاد می‌شود در حد آشنایی با این موارد که در ادامه آمده است قانع باشید و تا زمانی که به این سطح از دانش و تجربه نرسیده‌اید حتی به فکر نوشتن چنین محصولی نباشید (این کار برای بررسی و آزمایش جهت ارتقاء مهارت‌های خود توصیه می‌شود) اما اگر خارج از آن باشد حماقتی بیش نخواهد بود ? من افراد بسیار زیادی را می‌شناسم که با هدف تولید سیستم‌عامل بومی قدم برداشته‌اند اما در نهایت وارد یک دامنهٔ وسیعی از پیچیدگی افتاده‌اند که آن‌ها را منصرف کرده است. بخش‌های اصلی سیستم‌عامل هسته (کرنِل) کرنل به عنوان قلب سیستم‌عامل محسب می‌شود، اولین برنامه‌ای است که در آغاز به کار کامپیوتر اجرا می‌شود، و مدیریت منابع کامپیوتر و همچنین مدیریت درخواست‌ها از طرف برنامه‌های سیستمی و کاربردی را به عهده می‌گیرد. برنامه‌های سیستمی برنامه‌های سیستمی در بالاترین بخش کرنِل اجرا می‌شود. این نوع برنامه‌ها به عنوان انجام کار‌های مهم و مفید نیستند، بلکه برنامه‌هایی هستند که لازم است برای اتصال هسته به برنامه‌های کاربر و دستگاه‌های جانبی استفاده شوند. درایور‌های دستگاه‌ها، فایل‌سیستم‌ها، برنامه‌های شبکه، و نرم‌افزار‌های سیستمی مانند مباحث مدیریت دیسک که همهٔ آن‌ها مثال‌هایی از برنامه‌های سیستمی هستند. برنامه‌های کاربردی این نوع برنامه‌ها بخشی از برنامه‌های سیستم‌عامل نیستند. برنامه‌هایی همچون مرورگری اینترنت، مدیا پلیر و برنامه‌هایی از این قبیل به عنوان برنامه‌های عامیانه‌ای هستند که بعد‌ها می‌تواند در کنار سیستم‌عامل آن‌ها را قرار داد. چه چیز‌هایی را باید بدانیم؟ علوم پایه و اولیه کامپیوتر تئوری برنامه‌نویسی کامپیوتر و روش‌های بهتر زبان‌های برنامه‌نوسی سطح‌پایین و سطح‌بالا توسعهٔ سیستم‌عامل مانند توسعهٔ نرم‌افزار یا وب یا اپلیکیشن نیست، این نوع محصول چیزی نیست که شما بتوانید به این راحتی به آن بپردازید و یاد بگیرید. قبل از اینکه وارد این مبحث شوید نیاز است شما یک پایهٔ پایدار و منطقی از یک علوم رایانه را ایجاد کنید. خلاصه‌ای از حداقل مواردی که قبل از ورود به این حوزه لازم است بررسی سیستم‌عامل‌های موجود به خصوص، منابع سکو‌های یونیکس و لینوکس را بررسی و مورد مطالعه قرار دهید. در نظر داشته باشید که سیستم‌عامل خود به عنوان یک محصول بسیار مهم و کامل مانند یک درخت محسوب می‌شود که ریشهٔ آن مهمترین بخش آن است (هسته یا کرنل). آشنایی با علوم کامپیوتر پایه آشنایی کامل با کامپایلر آشنایی کامل و حرفه‌ای با زبان‌های C و ++C آشنایی با لینوکس و یونیکس آشنایی با قالب‌های اجرایی، قالب‌هایی مانند elf و exe آشنایی با پلتفرم به خصوص مطالعات عمیق در رابطه با معماری و ساختار پردازندهٔ مورد نظر محیط توسعهٔ مناسب (جهت برنامه‌نویسی) که به دو گزینهٔ ویندوز و لینوکس است که بیشتر محیط لینوکس و ابزار‌های GNU و کامپایلر GCC و Clang می‌باشد که در مقابل در ویندوز از کمپایلر MSVC می‌توان استفاده کرد. در اختیار داشتن ابزار‌های آزمایش مانند شبیه‌ساز‌هایی همچون VirtualBox و VMWare نیاز است. داشتن اطلاعات کافی در حوزهٔ سخت‌افزار و شبکه (درک و فهم در رابطه با سخت‌افزار‌ها و نحوهٔ عملکرد آن‌ها) یکی از موارد بسیار مهمی است که قبل از توسعهٔ سیستم‌عامل باید به آن‌ها توجه کرد. و موارد دیگر که در توسعهٔ سیستم‌عامل بسیار مهم هستند. با توجه به اینکه شما برای توسعهٔ چنین محصولی بر روی پلتفرم x86 و زبان C تصمیم گرفته باشید می‌توانید مراحل زیر را در نظر بگیرید: انتخاب بارگذار کنندهٔ بوت سیستم‌عامل (بوت‌لودِر) که در اینجا گزینهٔ پیشنهادی Grub است. پیاده سازی نقطهٔ ورودی کد C به زبان اسمبلی یا همان (Entry Point) تولید و توسعهٔ یک لاگر (جهت دیباگینگ) ساده مانند printf مقداردهی اولیه (Initialization) پردازنده (ساخت جدول GDT، برنامه‌ریزی PIC و PIT و ...) پیاده سازی یک چهارچوب کامل از مدیریت حافظه‌ پیاده سازی یک چهارچوب کامل از مدیریت حافظه‌‌ی مجازی پیاده سازی زمان‌بندی پردازنده پیاده سازی موارد مورد نیازی که در مهندسی نرم‌افزار آمده است مانند spinlock پیاده سازی فایل‌سیستم‌ها پیاده سازی رابط‌های برنامه‌نویسی API پیاده سازی رابط‌هایی مانند Shell در نهایت برنامه‌نویسی جانبی جهت توسعه و تکامل سیستم‌عامل توضیحاتی که به آن‌ها اشاره شد تنها بخشی از هزاران موردی است که باید در طراحی سیستم‌عامل در نظر داشت که مسلماً افراد حرفه‌ای در این حوزه خود به خوبی می‌دانند چه مباحثی برای توجه به آن‌ها نیاز است. برخی از منابع جهت طراحی و توسعهٔ سیستم‌عامل OSDev.org Index page https://www.irantux.org/html/ https://www.kernel.org/ http://www.minix3.org/ بلند پروازی کنید، اما حماقت نکنید ?
  11. کامبیز اسدزاده

    سلام، از Container‌ها در خاصیت content در ApplicationWindow استفاده کن.
  12. کامبیز اسدزاده

    اتفاقاً من یه چیزی شبیه به همین مورد رو توی برنامه‌های خودم ساختم و از همین کنترلی که گفتم یعنی GridLayout استفاده کردم که نگه‌دارنده‌ی داخلی رو واکنشگرا بر اساس تغییر اندازه تنظیم می‌کنه مثل همین تلگرام. منطق پیاده سازی این یکم باید بر اساس ابعاد صفحات نمایشی و طول و عرض پنجره پیاده سازی بشه که نسبت به نوع پلتفرم متفاوته.
  13. کامبیز اسدزاده

    راه حل این مسئله ساده‌تر از پیچیدگی که فکر می‌کنید هست. کافیه از GridLayout استفاده کنید که نسبت به مشخصه‌ی flow می‌تونید به همین چیزی که می‌خواهید برسید. مثال: https://doc.qt.io/qt-5/scalability.html ApplicationWindow { id: root visible: true width: 480 height: 620 GridLayout { anchors.fill: parent anchors.margins: 20 rowSpacing: 20 columnSpacing: 20 flow: width > height ? GridLayout.LeftToRight : GridLayout.TopToBottom Rectangle { Layout.fillWidth: true Layout.fillHeight: true color: "#5d5b59" Label { anchors.centerIn: parent text: "Top or left" color: "white" } } Rectangle { Layout.fillWidth: true Layout.fillHeight: true color: "#1e1b18" Label { anchors.centerIn: parent text: "Bottom or right" color: "white" } } } }
  14. فعال‌سازی مشاوره‌های ویژه در صفحه‌ی اینستاگرام و تلگرام.

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

    پردازنده‌ها چگونه طی ۴۰ سال گذشته تغییر کرده‌اند؟

    پردازنده‌ها چگونه طی ۴۰ سال گذشته تغییر کرده‌اند؟ پردازنده‌ها از پیدایش تا‌به‌حال، در‌حال‌پیشرفت بوده‌اند و روز‌به‌روز درکنار قدرتمند‌ترشدن، مصرف انرژی آن‌ها هم بهینه‌سازی شده است. اما این پیشرفت‌ها چقدر بوده و در آینده چگونه خواهد بود؟ وقتی از طرح‌های پیشرفت تکنولوژی، به‌ویژه قانون مور، صحبت به‌میان می‌آید، طرح «۳۵ سال از داده‌های ریزپردازنده‌ها» که آن را ام. هورویتز، اف. لابونت، اُ. شچم، کی. الوکتن، ال. هموند و سی. بَتِن جمع‌آوری کرده‌اند، می‌تواند یکی از طرح‌های مهم باشد. بعد‌ها، سی. مور هم اطلاعاتی به این پروژه اضافه کرد. این طرح را چه با خطوط پیشرفت و چه بدون آن‌ها می‌توان در جاهای مختلفی از اینترنت پیدا کرد؛ هر‌‌چند این طرح فقط تا سال ۲۰۱۰ کامل شده و در چند سال اخیر، کامل نشده است. برای به‌روزکردن داده‌های این طرح که هر‌چند درست‌بودن آن تا سال ۲۰۱۰ مشخص نیست، داده‌هایی از g3data و داده‌های دیگری هم از پردازنده‌های AMD Opteron، پردازنده‌های Intel Xeon، پردازنده‌های Power7+ و Power8 مانند Xeon Phi به این طرح اضافه شدند. جزئیات این داده‌های جدید را به‌صورت خام می‌توانید درون این فایل زیپ ببینید. نتیجه‌ی این طرح عکس زیر است: درادامه، طرح به‌روز‌شده را با طرح اصلی می‌توانید مقایسه کنید. نکته‌ای جالبی که وجود دارد، این است که باتوجه‌به اینکه عملکرد پردازش تک‌هسته‌ای ازنظر کمّیّت مهم است، این مقدار پیوسته در‌حال‌پیشرفت بوده است. این افزایش نتیجه‌ی مدیریت انرژی هوشمندانه و تنظیم دینامیک فرکانس کلاک (توربو) بوده است. در آینده، چه تغییراتی به وجود خواهد آمد؟ احتمالا فرکانس و انرژی مصرفی دستخوش تغییرات زیادی قرار نخواهند گرفت. بهبود بیشتر در ساختار کلاک ممکن است باعث افزایش تدریجی عملکرد تک‌هسته‌ای پردازنده‌ها شود که البته نمی‌توان انتظار تغییر بزرگی داشت. دو نمونه از کمّیّت‌های مهم، تعداد ترازیستور‌ها و تعداد هسته‌ها هستند. تا چه زمانی قانون مور ادامه خواهد داشت؟ این احتمال وجود دارد که در آینده‌ای نزدیک، افزایشی در تعداد هسته‌ها را شاهد خواهیم بود؛ اما شاید تعداد ترانزیستور‌ها تغییری اساسی نکنند. در‌حال‌حاضر، Haswell Xeon در صدر فهرست پردازنده‌ها هستند که ۱۸ هسته‌ی پردازشی دارند. به‌هرحال با وجود این پردازنده‌ها، قانون امدال ما‌ را به‌ دنبال‌کردن همین الگوریتم ملزم خواهد کرد. پردازندهی Knight Landing Xeon Phis که به‌زودی رونمایی خواهد شد، ۷۲ هسته دارد که بیش از ۶۱ هسته بیشتر از نسل کنونی‌اش خواهد داشت. از دیدگاه الگوریتم‌ها، واقعا مهم نیست پردارنده با ۶۱ یا ۷۲ هسته کار می‌کند یا خیر؛ بلکه در هر دو مورد، الگوریتم‌هایی موازی موردنیاز هستند. در این مرحله، باید خوشحال باشیم که در‌حال‌حاضر، توانسته‌ایم با یادگیری برنامه‌ریزی GPU‌ها این الگوریتم‌ها را طراحی و اجرا کنیم. به‌روزرسانی ۲۰۱۸ دو سال داده‌ی بیشتر به‌نظر مهم نیست، هرچند به‌نظر می‌رسد قانون مور در‌حال‌ کم‌رنگ‌شدن است. یکی از موضوعاتی که باید به آن اشاره کرد، این است که اینتل دیگر تعداد ترانزیستور‌های پردازنده‌های خود را اعلام نمی‌کند. همچنین، تعدادی از پردازنده‌های این شرکت زمان زیادی بعد از موعد مقرر معرفی شدند. مدل Tick-Tock هم اصلاح شده است. با داده‌هایی از تعداد ترانزیستور‌ها که از AMD Epyc و IBM Power 9 به‌دست‌آمده طرح را به‌صورت زیر به‌روزرسانی کرده‌اند: واضح است تعداد ترانزیستور‌ها به‌صورت نموداری نمایی رو‌به‌پیشرفت بوده است. تا‌به‌امروز، پردازنده‌ی AMD Epyc با ۱۹،۰۰۰،۰۰۰،۰۰۰ ترانزیستور که به‌صورت عمومی اعلام شده، بیشترین تعداد ترانزیستور را در میان پردازنده‌ها دارد. برای مقایسه باید گفت تراشه‌ی پاسکال Nvidia GP100 درحدود ۱۵،۰۰۰،۰۰۰،۰۰۰ ترانزیستور دارد. با درنظرگرفتن این تعداد، این ارقام باهم سازگار هستند و جای شکی در تعداد ترانزیستور‌ها وجود ندارد.به‌زودی، با معرفی نود‌های پردازشی ۱۰ نانومتری منطقی است که احتمال دهیم تا چند سال آینده، منحنی نمایی و رو‌به‌رشد تعداد ترانزیستور‌ها پیشرفت خود را حفظ کند. تعداد ترانزیستور بیشتر موجب افزایش تعداد هسته‌ها می‌شود. این درحالی است که پیشرفتی که در SpecINT برای محاسبه عملکرد تک‌هسته‌ای قابل مشاهده‌است، مستقیما نتیجه‌ی استفاده از کامپایلر‌های Auto-Vectorization و Auto-Parallelization است.
  16. کامبیز اسدزاده

    سلام، موقع استفاده از QSettings شما وقتی منبعی رو برای اون در نظر می‌گیرید بهتره توجه داشته باشید که در صورت نیاز در قالب‌های xml یا برفرض JSon و ini اطلاعات رو ذخیره می‌کنید. اطلاعات فوق معمولاً درسیستم‌عامل ویندوز در بخش رجیستری، و در پلتفرم‌های مک‌او‌اِس و آی‌او‌اس در لیست از فایل های مربوط به خودشان ذخیره سازی می‌شوند. در استاندارد‌های دیگر این اطلاعات در فایل ini ذخیره سازی می‌شوند. بنابراین دسترسی به این موارد ممکن است بسیار راحت باشد. پیشنهاد این هست اطلاعات مربوط به Session‌ها را در جدولی از دیتابیس ذخیره سازی کنید (این کار می‌تونه با کمی طراحی بر روی نوع ساختار مطمئن سازی شود) برای مثال توکنی که دریافت می‌کنید را در جدولی به نام sessions ذخیره کنید که همراه با مقادیر زمان و تاریخ اعتبار آن اعتبار سنجی می‌شود. با این روش نه تنها می‌تونید به لیستی از سوابق ورودی‌ها دسترسی داشته باشید، بلکه می‌تونید آن‌ها را به خوبی مدیریت کنید. شما می‌توانید رشته‌ای که به عنوان توکن دریافت می‌کنید را تحت الگو‌های مطمئنی رمزنگاری کنید که ترکیبی از زمان، دستگاه، آدرس آی‌پی و ... باشد. در واقع چیزی شبیه به User-Agent که حالا با زمان و اعتبار مشخصی قابل ارزیابی خواهد بود.
  17. این پست رو که قبلاً نوشته شده مطالعه بفرمایید، بخش بسیار بزرگی از سوالات شما در اینجا پاسخ داده شده.
  18. کامبیز اسدزاده

    سلام، بهتره موقع سوال پرسی از قوانین نگارشی استفاده کنید و همچنین علائم نشان گذاری مثل نقطه، ویرگول، علامت سوال استفاده کنید تا بفهمیم منظورتون سوالی هست یا پاسخ و نظر! اگر منظور شما این هست که توی Text می‌تونید تصویر اعمال کنید باید بگم اشتباهه همچین چیزی نمیشه مگر اینکه خودتون توسعش بدین. اگر منظورتون این هست که آیا می‌شه تصویر در داخل نوع Text اعمال کنید؟ این هم جوابش منفی هست، چرا که نوع Text از تگ‌های محدود html پشتیبانی می‌کنه نه همه‌ی اون‌ها مثل img و غیره...! پیشنهاد من این است که محتوا رو تجزیه کنید و نوع تصویر رو به کنترل نوع Image پاس بدین، و نوع متن رو به Text. اگر هم این کار رو نمی‌تونید گزینه‌ی پیشنهادی استفاده از WebView هست که خودش این موارد رو مدیریت می‌کنه.
  19. کامبیز اسدزاده

    سلام و درود بر شما، پست زیر رو بررسی کنید، اگه فراتر از این نیاز داشتین اطلاع بدین بیشتر توضیح بدم.
  20. کامبیز اسدزاده

    در استاندارد سی‌پلاس‌پلاس وقتی نیاز است تا نوعی را برای متغیر خود انتخاب و توصیف کنید به طور معمول آن را به صورت‌های نوعِ اساسی و پایه مانند عدد صحیح، رشته، آرایه و غیره و یا یک نوع ویژه‌ی واجد شرایط جهتِ استثناء شدن توصیف می‌کنیم. این انواع به دو صورت no cv-qualifier و cv-qualifier از هم متفاوت توصیف می‌شوند. کلمات CV خلاصه‌ شده‌ی const و volatile است، زمانی که شما نوعی از متغیر را تحت کلمات کلیدی const و volatile توصیف می‌کنید در واقع نوع آن را تحت عنوان const-qualified و volatile-qualified توصیف کرده‌اید که از تعریف عادی متمایز می‌شوند و با این کار متغیر را واجد شرایط خاصی قرار می‌دهید. برای مثال، نوع زیر در قالب استاندارد cv-qualifier تعریف شده است که به صورت ضروری مقدار اولیه‌ی آن نیز مشخص شده است: const int ci = 3; در صورتی که کدی همانند نمونه‌ی زیر داشته باشیم: const int ci = 3; ci = 4; از طرف کامپایلر با خطایی مشابه خطای زیر مواجه خواهیم شد: error: cannot assign to variable 'ci' with const-qualified type 'const int' منظور از این خطا این است که، مقدار جدیدی را شما نمی‌توانید به متغیری از نوع const که تحتِ شرایطِ const-qualified می‌باشد بدهید. از طرفی اگر نوع متغیر خود را با volatile توصیف کنید، مقدار متغیر در هر نَخ (Thread) دیگر احتمال تغییر یافتن را خواهد داشت. volatile int ci = 3; ci = 4; در واقع شما آن متغیر را واجد شرایط ویژه‌ای قرار داده‌اید که بتواند در هرجا که نیاز بود تغییر پیدا کند. (در این حالت بر خلاف نوع const کامپایلر خطایی را از خود ساطع نمی‌کند و علاوه بر آن در زمان بهینه‌سازی از آن مورد صرف نظر خواهد کرد). استفاده از کلمه‌ی کلیدی volatile بهینه‌سازی کامپایلر را از بهینه‌سازی آن دور می‌کند.توجه داشته باشید که یک کلمه‌ی کلیدی ویژه نیز وجود دارد به نام mutable که از آن زمانی استفاده می‌شود که اعضای کلاس و نوع توابع شما به صورت const یعنی از نوع const-qualified توصیف شده باشد که تغییر آن امکان‌پذیر نیست. در صورتی که لازم باشد استثناء یا واجد شرایط قرار بگیرد نوع آن توسط mutable می‌تواند توصیف شود که اجازه‌ی تغییر فقط به آن مورد داده خواهد شد. mutable int i; در نهایت متغیر‌ زیر به صورت no cv-qualitifier تعریف شده است که در حالت معمول بر اساس قوانین و شرایطی که کامپایلر در نظر می‌گیرد با آن برخورد و در صورت نیاز بهینه‌سازی خواهد شد. int i = 2;
  21. کامبیز اسدزاده

    سلام و درود، ? این پست صرفاً جنبه‌ی مشاوره و به اشتراک گذاری تجربیات را دارد (بنابراین نحویِ بیان آن عامیانه است). من @کامبیز اسدزاده : Kambiz Asadzadeh : علاوه بر برنامه‌نویسی و علاقه‌ی شدیدی که دنیای تکنولوژی و مخصوصاً مهندسی کامپیوتر و به ویژه برنامه‌نویسی در حوزه‌ی استارت‌آپی دارم، سال‌هاست که به عنوان منتور فنیِ استارت‌آپ‌ها در رویداد‌ها، جلسات و دوره‌همی‌های بسیاری شرکت و در محور رُشد فردی‌ فنی فعالیت به استارت‌آپ‌های بسیاری کمک کرده ام. با توجه به منتورینگ انواع مختلف استارت‌آپ‌ها در حوزه‌های IT مشکلات، سوالات و موارد بسیاری رو شناسایی و برای آن‌ها راه‌کار‌هایی رو ارائه داده‌ام که به نوبه‌ی خودم برخی از آن‌ها را در اختیار شما قرار خواهم داد. بهتره قبل از هر چیز تعریفی از منتور (Mentor) و منتورینگ داشته باشیم! بنابراین مقاله‌ی زیر را حتماً مطالعه کنید. حال با توجه به تجربیات مربوط به این حوزه، لازم دونستم بخشی از این راه‌کار‌ها رو در اختیار کسانی قرار بدم که مُدام در ذهن خود دنبال پاسخی برای چگونکی‌های رسیدن به یک مهارت مطلوب فردی هستن. مدتی هست من در گروه‌ها و شبکه‌های اجتماعی بسیاری مشاهده می‌کنم که افراد تازه کار به دنبال این هستند که چگونه و به چه شیوه‌ای می‌تونن برنامه‌نویسی حرفه‌ای و مفید را یاد بگیرند. پاسخ این سوال پیچیده نیست، اما شاید خصوصیاتی را که باید بر روی آن‌ها تمرکز داشته باشید رو به خوبی نمی‌شناسید! من به شما کمک می‌کنم تا در این مسیر مسائلی که واقعاً باید به آن‌ها دقت کنید رو شناخته و اون‌ها رو در نظر بگیرید. خصوصیات یک برنامه‌نویس حرفه‌ای چیست؟ علاقه و استعداد در حوزه‌ی برنامه‌نویسی (داشتن اراده‌ی قوی). سِمِج و کُنجکاو بودن. شکست ناپذیر (خستگی ناپذیر). مخالف هر گونه بهانه و تنبلی - به کار گیری روش‌های صحیح حل مسائل و رسیدن به پاسخ سوالات. رقابت با هیچکس به جز دیروز خودِت! (رقیبت باید خودت باشی نه شخصِ خاصی) از دیگران الگو بگیر اما با کسی به جز خودت رقابت نکن. کم توقع از لحاظ کمک گرفتن از دیگران بر روی مسائل ساده باش (پر توقع از لحاظ رسیدن به پاسخ با تلاش‌های فردی باش). تعصب نداشتن بر یک حوزه یا زبان یا هر ابزاری (زبان‌های برنامه‌نویسی لوازم و ابزار‌های جعبه‌ابزار یک برنامه‌نویس هستند). هدف داشتن (هدف مفید - نه مُخرب). آینده نگر بودن (همیشه احتمالات رو در نظر بگیر و چشم بسته دنبال چیزی نباشید) و حرف هر کسی رو در بیان اول بدون تحقیق (سند) قبول نکن. حرف شنوی و استفاده از تجربیات دیگران بسیار خوب هست (اما باید مطمئن باشید که اون پیشنهاد صحیح هست نه غلط!) حالا ممکن پیشنهاد دهنده استاد دانشگاه باشه یا می‌تونه یکی از ما داخل شبکه‌های اجتماعی باشه! (بهتره دنبال منتور باشید). همیشه یک قدم از چیزی که هستید جولو تر باشید. حرفه‌ای باش! حرفه‌ای‌های برنامه‌نویسی رو با اخلاقِ خوبشون باید شناخت. عدم حسادت و غرور در آموزشِ آموخته‌ها و تجربیات یکی از بهترین نکات حرفه‌ای بودن است. من چطور می‌تونم یک برنامه‌نویس حرفه‌ای بشم؟ پاسخ، با توجه با خصوصیات بالا، یک برنامه‌نویس با تلاش مستمر و متکی به دانش و مستندات صحیح می‌تونه با مرور زمان مهارت خودش رو افزایش و تجربیات و سوابش و رزومش رو قوی کنه. به هیچ عنوان راه صد ساله را یک شبه نمی‌تونه بره! آیا دانشگاه در برنامه‌نویسِ مفید شدن مهم است؟ این سوال بسیار زیاد به گوش می‌خوره، اما حقیقت اینه که دانشگاه به عنوان یک ابزار ساخت و پیشرفت فردی بشما نمیاد! متاسفانه دانشگاه‌ها و دانشجویانی که با هدف التماس به اساتید و دیگر افراد به دنبال پاس کردن دروس دانشگاهی هستن هیچ شانسِ موفقیتی در رسیدن به یک حرفه‌ای شدن رو ندارن! نتیجه‌ی این شیوه از یادگیری و آموزش چیزی به جز فارغ‌التحصیل شدن همراه با یک کاغذ پاره نخواهد بود و هیچ جایی در بازار و دنیای واقعی نخواهد داشت. البته منظور از این صحبت‌ها این نیست که دانشگاه مفید نبوده و تاثیری در موفقیت نداره، اما حقیقت اینه که علم واقعیِ برنامه‌نویسی با توجه به نظام آموزشی و شرایطی که وجود داره به دست نمیاد. چطور می‌توانم به پاسخ سوالاتی که دارم برسم؟ خوشبختانه دنیای مُدرن امروزی زمینه‌ای برای برقراری ارتباط بین یکدیگر را به خوبی فراهم کرده، در صورتی که شما سعی خودتون رو کردین اما نتونستین مشکلی که با اون مواجه شدین رو حل کنید، جای نگرانی نداره! همه‌ی ما یک استاد مشترک داریم (اسمش گوگل Google) هست. شما می‌تونید با جستجو در این موتور جستجوگر به ۱۰۰٪ پاسخ‌های خود برسید. نکته: سعی کنید سوالات خودتون رو به زبان علمی بپرسید (انگلیسی) حتی اگه زبان شما دست‌ و پا شکسته باشه درصد موفقیت و رسیدن به پاسخ بهتر و سریعتر در این حالت بسیار زیاده. بنابراین شما می‌تونید پاسخ سوالات خودتون رو خیلی راحت با چند کلمه‌ی مشخص بپرسید مثل نمونه‌های زیر: Why should I learn C++ in 2019? How to declare an array in C++? How to declare a string in Java? Why do we need pure virtual function in C++? How do I create a class in Visual Studio 2017? How long will it take to learn Python? مطمئن باشید جستجو‌گر گوگل تحت هوش مصنوعی خودش بهترین و نزدیک‌ترین پاسخ‌ها رو نسبت به سوال شما پیشنهاد خواهد داد! این کار باعث می‌شه حتی شمایی که به سوال پُرسی مغرور هستید یا حتی شمایی که به خودتون زحمت نمی‌دین جستجو کنید به راحتی به پاسخ‌هایی برسید که قراره اون رو از کسی بپرسید! یک برنامه‌نویس حرفه‌ای رو چطور می‌شه شناخت؟ یک برنامه‌نویس حرفه‌ای ادعای تو خالی ندره! هر زمان که دیدین یک برنامه‌نویس از دانش خودش ادعا می‌کنه مطمئن باشید اونوطور که باید به تکامل نسبی در این علوم نرسیده! دنیای برنامه‌نویسی نامحدود و بسیار گسترده هست. برنامه‌نویسِ حرفه‌ای معمولاً مشتاق به آموزش و یاری دیگران هم داره، معمولاً از تجربیات حرفه‌ای خودشون در اختیار دیگران قرار میدن. البته این بستگی به شرایط هم داره (ممکنه کسی به خاطر مشغله‌ی زندگی روزمره) نتونه اونطور که باید به دیگران کمک کنه (شاید هم اصلاً علاقه‌ای به یاد دادن نداره ?) شاید هم اعتماد به نفس کافی نداشته باشه که همه‌ی این‌ها طبیعی است. اما Github و سایت‌های مرجع، مقالات، کتاب‌ها و نمونه‌کار‌ها نیز نمونه مثال خوبی برای پیدا کردن منابع به اشتراک‌گذاری چنین افرادی هست که می‌تونه در شناخت مهارت‌هاش ملاک باشه. صحبت‌های شخصی مثل استیو جابز رو در کنفرانس Stanford سال ۲۰۰۵ پیگیر باشید ببینید تنها رابطش با دانشگاه چی بوده. البته منظورم این نیست که خدایی نکرده دانشگاه رو بیخیال بشید خیر! چون خیلی‌ها خصوصیات بالارو ندارند و بهتره تشریف ببرن دانشگاه و همونجا شاید به کمک کاغذ پاره یه چیزی شدن ? رضایت به یک حقوق کارمندی هم دلیل بدی نیست...! اما اگه می‌خوای دنیا رو بسازی باید فراتز از چهارچوب محدودی که برات ساختن تفکر کنی! خلاصه‌ی این صحبت‌ها از نظر من = تلاش‌ مکرر در قالب (خودآموزی) هست باید به خودت، فرصت و نعمتی که خالقِت بهت داده اطمینان و اعتقاد داشته باشی). إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ. امام صادق عليه ‏السلام: هرچيزى ‏زكاتى دارد و زكات دانش، آموختن آن است به اهلش. به فرموده رسول خدا (صلی الله علیه و آله): یا عالم باش یا در حال آموختن دانش و وقت خود را در بیهودگی و خوشگذرانی صرف نکن. نظرات دیگر... آنتونی جی. دی آنجلو: اشتیاق‌تان برای یادگیری را توسعه دهید، تا هرگز در راه رشد و تعالی متوقف نشوید. آلبرت اینشتین: تنها چیزی که در یادگیری من تداخل ایجاد می‌کند، تحصیلاتم است. وینستون چرچیل: من شخصا همیشه آماده یادگیری هستم، اگرچه دوست ندارم همیشه تحت تعلیم باشم. افلاطون: دانشی که همراه با اجبار کسب شود در ذهن نمی‌ماند. Education is the most powerful weapon which you can use to change the world. - Nelson Mandela I have no special talent. I am only passionately curious. - Albert Einstein A person who won't read has no advantage over one who can't read. - Mark Twain احتمال به‌روز رسانی و ادامه‌ی این پست وجود دارد...
  22. کامبیز اسدزاده

    منتور (Mentor) کیست و منتورینگ چیست؟

    منتور چیست؟ منتور (Mentor) به افرادی می‌گویند که در یک زمینهٔ خاصی تخصص، تسلط و تجربه دارند و در آن زمینه کارشناس و صاحب نظر هستند و می‌توانند به دیگران در یادگیری آن کار کمک کنند. منتور یک رابطه ارگانیک و دوستانه با افراد جوانتر تحت سرپرستی خود برقرار می‌کند و نه تنها در مورد دروس دانشگاهی بلکه در خصوص مشاغل و مشکلات فرهنگی، اجتماعی و روحی و روانی آنان را یاری می دهد. همهٔ ما در زندگیمان فردی را ملاقات کرده‌ایم که هم نشینی و هم صحبتی با او برای زندگی ما اهمیت داشته است. برای مثال، این فرد می‌تواند یکی از معلم‌های ما و یا یکی از اعضای خانواده‌ باشد. چنین فردی را می توان منتور نامید. خصوصیات و وظایفی که منتور دارد سابقه کار قابل توجه علاقه‌مند به آموزش و انتقال تجربیات خود به دیگران دارای تجربهٔ شکست و موفقیت دارای ارتباطات قابل توجه سابقهٔ کار در تیم‌های استارت‌آپی آگاه به مسائل استارت‌آپی اهل دانش دانش و تجربیات زندگی خود را به اشتراک می‌گذارد توصیه می‌کند و مشاوره می‌دهد گوش می‌دهد الهام می‌بخشد تشویق می‌کند با علاقه به سؤالات و نگرانی‌های فرد پاسخ می‌دهد صادق و انتقادپذیر است راجع به هدف‌گذاری بحث می‌کند در مورد رشد شغلی و حرفه‌ای مشاوره می‌دهد منابع را شناسایی می‌کند به رشد مهارت‌های مدیریت و رهبری کمک می‌کند برای رشد فرهنگ سازمانی تلاش می‌کند می‌تواند باعث شفافیت در سازمان شود رزومه‌ها را بررسی می‌کند نکته‌های کلیدی برای مصاحبه را تعیین می‌کند حمایت کننده است ممکن است فرد را به اشخاص کاربلد دیگری ارجاع دهد فرد را به چالش می‌کشد تا از حوزهٔ امن خودش بیرون بیاید یک محیط یادگیری ایمن برای ریسک کردن ایجاد می‌کند روی رشد همه‌جانبهٔ فرد تمرکز دارد مزایایی که یک منتور می‌تواند داشته باشد پژوهش‌ها نشان داده است که کسانی که از وجود منتور بهره برده‌اند، احساس رضایت بیشتری نسبت به شغل خود دارند. علاوه‌ براین، این افراد اغلب اوقات عملکرد بالاتری پیدا کرده‌اند، حقوق بالاتری می‌گیرند و روند پیشرفت‌شان در شغل سریع‌تر است. او بازار را به خوبی می‌شناسد و رفتار با مشتری را به شما می‌آموزد. او چشم‌اندازی بزرگ دارد و صحبت با او چشم‌انداز شما را بهبود می‌دهد. راه و چاه را از هم شناخته و شما را با برخی اشتباهات فاحشی آشنا می‌کند که نبایدانجام دهید. او شبکه‌ای بزرگ از کارآفرینان، سرمایه‌گذاران و مسوولین دارد که می‌توانید واقعاً روی آن حساب کنید. خود او شاید در مقام یک فرشته کسب‌وکار روی کسب‌وکار شما سرمایه‌گذاری کند. شما گاهاً درگیر امور اجرایی جزئی می‌شوید و از بحث‌های کلانی مثل استراتژی کسب‌وکارتان دور می‌شوید. او کسب‌وکار را از بیرون می‌بیند و مسیر نادرست را گوشزد می‌کند. او فردی موفق است و باانگیزه. پس در مراحل سخت و خشن راه‌اندازی کسب‌وکار در ایران به شما روحیه و انگیزه مضاعف می‌دهد. به طور کلی، حوزهٔ فعالیت‌های منتورها را در دو گروه می‌توان دسته‌بندی کرد؛ حوزهٔ شغلی (حرفه‌ای) و حوزهٔ روان‌شناختی. در حوزهٔ حرفه‌ای، منتور تلاش می‎کند تا به عنوان یک مربی به فرد توصیه‌هایی داشته باشد و رشد و عملکرد حرفه‌ای او را بالا ببرد. در حوزهٔ روان‌شناختی، منتور به عنوان یک الگو ایفای نقش می‌کند و به عنصر الهام‌بخش تبدیل می‌شود. این دو حوزه معمولاً همزمان اتفاق می‌افتند و به فرد این امکان را می‌دهند تا علاوه بر پیشرفت در حوزهٔ شغلی، توازنی مناسب بین شغل و زندگی شخصی برقرار سازد. دانش، توصیه و منابعی که منتور با فرد در میان می‌گذارد بستگی به اهداف رابطهٔ منتورینگ دارد. ممکن است منتور اطلاعاتی را راجع به مسیر شغلی خود به فرد بدهد یا بیشتر به دنبال پشتیبانی کردن احساسی، دادن انگیزه و بازی کردن نقش یک الگو باشد. کمک به کشف ظرفیت‌های جدید در هر شغل، هدف‌گذاری صحیح و شناسایی منابع نیز می‌تواند در حوزهٔ عملکرد منتور قرار بگیرد. نقش منتور با توجه به نیاز فرد تغییر می‌کند. بعضی از رابطه‌های منتورینگ بر اساس برنامه‌هایی ساختاریافته و منظم بنا شده‌اند که انتظارات و دستورالعمل‌های مشخصی دارند ولی بعضی دیگر، حالتی غیررسمی دارند. نکته: همانطور که انتخاب یک منتور خوب مزایای بسیاری در رُشد فردی و موفقیت کسب‌و‌کار شما دارد؛ به همان اندازه انتخاب یک منتور نا مناسب و بد تاثیر منفی خواهد داشت. توجه: منتور‌ینگ خود به عنوان یک شغل نیز محسوب می‌شود، همانگونه که مشاوره مهم است! استفاده از تجربیات یک مشاور کسب‌و‌کار و فنی ارزش بسیاری دارد و بدون شک بسیار مهم خواهد بود. بنابراین منتورینگ متناسب با نوع استارت‌آپ و مشارکتی که در رُشد آن دارد هزینه یا سهمی را برای آن مشخص می‌کند و در توسعهٔ فردی و یا استارت‌آپ به وظایف خود عمل می‌کند. منتور فنی یا منتور کسب‌و‌کار!؟ لازم به ذکر است در رابطه با این موضوع روشن سازی شود که منتور کسب‌و‌کار می‌تواند راه و روش توسعهٔ کسب‌و‌کار شما را بهبود داده و برای شما مشاوره‌های مفیدی در این زمینه ارائه دهد. در مقابل منتور فنی می‌تواند با در نظر گرفتن مسیری که منتور کسب‌و‌کار برای شما مشخص کرده است راه و روش صحیح توسعهٔ محصول و استارت‌آپ شما را از لحاظ فنی ارائه دهد. یک منتور فنی می‌تواند صاحب نظر در حوزهٔ کسب‌و‌کار نیز باشد (این بستگی به تجربیات استارت‌آپی و کسب‌و‌کار آن خواهد داشت). بهره‌گیری از هر دو نوع منتور در رشد فردی و استارت‌آپی شما بسیار موثر خواهد بود. خلاصه‌ای از تعریف منتور منتور کسی است که همانند یک فانوس دریایی مسیر موفقیت و شکست را در هر شرایطی برای شما روشن سازد.
  23. ابزار Android NDK به عنوان مجموعه‌از ابزار‌هایی است که به شما امکان آن را می‌دهد تا بخشی از برنامه‌های خود را به صورت بومی تحت زبان C و ++C توسعه دهید. بنابراین NDK از چندین کتابخانه‌ی در زمان اجرای ++C پشتیبانی می‌کند؛ در این پست در رابطه با آخرین تغییرات مرتبط با NDK اطلاع رسانی می‌شود. public class MyActivity extends Activity { /** * Native method implemented in C/C++ */ public native void computeFoo(); } بر اساس آخرین تغییرات کتابخانه‌های استاندارد libstdc++ به libc++ به‌روز رسانی و تمامی ویژگی‌های استاندارد C++17 پشتیبانی می‌شود که از نسخه‌ی R18 به بعد در دسترس قرار گرفته است. برخی از تغییرات مهم که لازم است به آن‌ها توجه شود به صورت زیر می‌باشند: تغییرات اساسی از نسخه‌ی NDK R17 آغاز شده است که در آن یکی از مهمترین و تکان‌ دهنده‌‌ترین تغیرات حذف GCC است که قرار بر این بود در نسخه‌های جدید NDK R18 پشتیبانی از GCC به صورت کامل حذف و Clang جایگزین آن شود. در نسخه‌ی R18 پشتیبانی از gnustl, gabi++و stlport حذف شده است. پشتیبانی از ICS از اندروید‌های ۱۴ و ۱۵ به بعد حذف شده است. بر اساس قوانی جدید گوگل، بار‌گذاری اپلیکیشن از تاریخ آگوست ۲۰۱۹ به بعد در فروشگاه گوگل پلی (Play Store) نیازمند نسخه‌ی معماری ۶۴ بیتی می‌باشد. پشتیبانی از C++17 در نسخه‌ی R18 به بعد تایید نهایی و قابل استفاده شده است و همچنین در نسخه‌های R19 استفاده از تمامی استاندارد‌های منسوخ شده پیشنهاد نمی‌شود. کلمات کلیدی new و delete در استاندارد جدید ++C از نسخه‌ی R18 منسوخ و در نسخه‌ی R19 به طور کامل حذف خواهند شد. پشتیبانی از مدیریت‌های استثناء (RTTI) در NDK به صورت پیش‌فرض غیر فعال می‌شود. مانند استثنائات، RTTI در libc++ پشتیبانی می‌شود، اما به صورت پیشفرض در android-build غیرفعال شده است که برای فعال‌سازی آن‌ می‌توانید از cmake و دیگر ابزار‌ها استفاده کنید. هیچ محدودیتی در رابطه با هِدر‌های سی‌پلاس‌پلاس در اندروید وجود ندارد. برای فعال سازی RTTI در برنامه‌ی شما در ndk-build کد زیر را در application.mk اضافه کنید: APP_CPPFLAGS := -frtti همچنین برای فعال سازی آن برای یک ماژول خاص در ndk-build کد دستوری زیر را استفاده کنید: LOCAL_CPP_FEATURES := rtti روش دیگر به صورت زیر است: LOCAL_CPPFLAGS := -frtti نکته: تحت این سند ویژگی‌های سیستمی STL در آینده حذف خواهند شد. توجه: libc++ یک کتابخانه‌ی سیستمی نیست. در صورتی که از libc++_shared.so استفاده می‌کنید باید آن را در داخل فایل apk خود قرار دهید. در صورتی که از Gradle استفاده می‌کنید این کار به صورت خودکار انجام می‌شود.
  24. نسخه‌ی Qt Creator 4.8.1 منتشر شد. تغییرات و بهود‌ها: Qt Creator version 4.8.1 contains bug fixes. The most important changes are listed in this document. For a complete list of changes, see the Git log for the Qt Creator sources that you can check out from the public Git repository. For example: git clone git://code.qt.io/qt-creator/qt-creator.git git log --cherry-pick --pretty=oneline origin/v4.8.0..v4.8.1 General * Fixed too large minimum size of preferences dialog (QTCREATORBUG-21678) Editing * Fixed that text marks could vanish (QTCREATORBUG-21628) * Fixed wrong background color for some text highlighting items (QTCREATORBUG-21661) * Fixed handling of system text encoding on Windows (QTCREATORBUG-21622) * Language Client * Fixed crash after failed server restarts (QTCREATORBUG-21635) All Projects * Fixed crash when renaming file in file system view (QTCREATORBUG-21741) * Fixed that `Create suitable run configurations automatically` setting was not saved (QTCREATORBUG-21796) QMake Projects * Fixed handling of `unversioned_libname` (QTCREATORBUG-21687) C++ Support * Clang Code Model * Fixed Clang backend crashes when `bugprone-suspicious-missing-comma` check is enabled (QTCREATORBUG-21605) * Fixed that `Follow Symbol` could be triggered after already moving to a different location * Fixed tooltip for pointer variables (QTCREATORBUG-21523) * Fixed issue with multi-line completion items (QTCREATORBUG-21600) * Fixed include order issue that could lead to issues with C++ standard headers and intrinsics * Fixed highlighting of lambda captures (QTCREATORBUG-15271) * Fixed issues with parsing Boost headers (QTCREATORBUG-16439, QTCREATORBUG-21685) * Clang Format * Fixed handling of tab size (QTCREATORBUG-21280) Debugging * Fixed `Switch to previous mode on debugger exit` (QTCREATORBUG-21415) * Fixed infinite loop that could happen when adding breaking on non-source line (QTCREATORBUG-21611, QTCREATORBUG-21616) * Fixed that debugger tooltips were overridden by editor tooltips (QTCREATORBUG-21825) * Fixed pretty printing of multi-dimensional C-arrays (QTCREATORBUG-19356, QTCREATORBUG-20639, QTCREATORBUG-21677) * Fixed issues with pretty printing and typedefs (QTCREATORBUG-21602, QTCREATORBUG-18450) * Fixed updating of breakpoints when code changes * CDB * Fixed `Step Into` after toggling `Operate by Instruction` (QTCREATORBUG-21708) Test Integration * Fixed display of UTF-8 characters (QTCREATORBUG-21782) * Fixed issues with custom test macros (QTCREATORBUG-19910) * Fixed source code links for test failures on Windows (QTCREATORBUG-21744) Platform Specific Android * Fixed `ANDROID_NDK_PLATFORM` setting for ARMv8 (QTCREATORBUG-21536) * Fixed debugging on ARMv8 * Fixed crash while detecting supported ABIs (QTCREATORBUG-21780) برای دریافت کلیک کنید.
  25. کامبیز اسدزاده

    سلام، این تاپیک صرفاً جهت بازبینی و رقابت بین کد‌های نوشته شده توسط شما است، شما می‌توانید سَبکِ تمیز‌نویسی (استایلِ) کد‌های خود را برای معرفی به دیگران در این بخش به اشتراک بگذارید. کد‌هایی که از لحاظ خوانایی و پاکی و فاقد باگ‌های احتمالی هستند امتیاز مثبت و کد‌هایی که فاقد آن باشند امتیاز منفی خواهند گرفت.
×
×
  • جدید...