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

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

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

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

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

  • روز های برد

    116

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

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

    چه کسانی Full-Stack Developer هستند

    برنامه‌نویس تنها در این عنوان خلاصه نمی‌شود و لازم است بدانید که برنامه‌نویسان در چند دسته متفاوت وجود دارند که برخی از آن ها به صورت Back-End و برخی Front-End فعالیت می‌کنند. در کل به کسانی که توانایی برنامه‌نویس در بخش Back-End را دارند به آن‌ها Back-End Developer می‌گویند. همچنین برنامه‌نویسانی که توانایی توسعه در بخش طراحی رابط‌کاربری و تجربه‌کاربری را با عنوان Front-End دارند Front-End Developer می‌گویند. در نظر داشته باشید که توسعه‌دهندگان و طراحان بخش تجربه‌‌کاربری (UX) و رابط‌کاربری (UI) خود وظایفی در سمت طراحی یک محصول را دارند که به خودی خود می‌توانند به عنوان توسعه‌دهنده‌ی فرانت‌اِند محسوب شوند اما ممکن است زمینه‌ی اجرایی آن‌ها با محیط‌های توسعه که شامل کد‌نویسی هستند نباشد! بنابراین شاخه‌ای از حوزه‌ی توسعه در نرم‌افزار کامپیوتر وجود دارد که می‌تواند با ترکیب دانش طراحی و کد‌نویسی و تسلط کامل بر این دو حوزه به صورت ترکیبی با دانش و توانایی بسیار بالا عنوان شود که به آن فول‌اِستک می‌گویند. البته فول‌اِستک ابعاد مختلفِ خود را دارد، برای مثال ممکن است یک توسعه‌دهنده‌ی فول‌اِستک تنها در پلتفرم اندروید توانایی طراحی و کد‌نویسی را به صورت همزمان و بدون نیاز به یار تیمی خود داشته باشد. اما در اصل توسعه‌دهنده‌های با تجربه با سابقه‌ی بالا که توانایی مدیریتی پروژه و توسعه‌ی آن‌ها را دارند از نوع فول‌اِستک تمام عیار محسوب می‌شوند که در ادامه به ویژگی‌های آن‌ها اشاره شده است. یک برنامه‌نویس حرفه‌ای یا همان فول‌اِستک می‌بایست مهارت‌های زیر را داشته باشد: مسلط به زبان‌های برنامه‌نویسی پایه آشنایی با UX و UI و مباحث مرتبط با هر یک از آن‌ها مدیریت پروژه بر روی پلتفرم‌های مختلف توانایی کنترل کیفیت محصول توانایی کار با انواع فناوری‌ها و کتابخانه‌ها توانایی کار با انواع دیتابیس و مدیریت آن‌ها هک و امنیت بهینه سازی موتور‌های جستجو آشنایی و توانایی درک و مدیریت کامپایلر‌ها و مفسر‌ها درک نیاز‌های کاربران در محصول (UX) آشنایی با سیستم عامل‌های مختلف آشنایی و توانایی تولید محصول به صورت چند-سکویی (Cross-Platform) آشنایی با شبکه و پیکربندی آن برای محصول آشنایی با مدیریت سرور و هاستینگ آشنایی با سیستم‌های مدیریتی و مجازی مانند VM آشنایی با سخت افزار آشنایی با رابط های برنامه نویسی API‌ها آشنایی با انواع محیط‌های توسعه و موارد دیگر که در یک پروژه از صفر تا صد می‌توان به آن‌ها نیاز پیدا کرد. برنامه‌نویسان Full-Stack Developer به تنهایی می‌تواند درتولید و توسعه یک محصول موثر باشد و زمانی که با مشکلی مواجه شوند نمی‌گوید من آن را بلد نیستم، بلکه حتماً آن را حل خواهند کرد. به طور کلی کسب مهارت در سطح بالا در حد یک توسعه‌‌ دهنده فول‌اِستک بسیار سخت است اما نباید بگوییم که غیر ممکن است، در صورتی که چنین تعریفی برای یک توسعه‌دهنده‌ی فول‌استک در نظر بگیریم، بدون اغراق باید گفت تعداد اندکی از این برنامه‌نویسان موجود است که بتوانیم چنین لقبی را به آن‌ها اختصاص بدهیم بنابراین چنین برنامه‌نویسانی بسیار ارزشمند هستند لذا به خوبی می‌دانند یک نرم افزار چگونه طراحی‌ می‌شود و توانایی این را دارند از صفر تا صد یک نرم‌افزار را طراحی و روانه بازار کنند. علاوه بر این توسعه دهنده Full-Stack کسی است که واژگانی مانند نبود، نمی‌شه، امکان نداره، نمی‌توم، کار من نیست و ... را بر زبان نمی‌آورند و اگر هم چیزی را ندانند تمام تلاش خود را می‌کنند تا بدون نیاز به کمک شخصی دیگر آن را حل کنند. این نوع توسعه‌‌دهنده‌ها بسیار با ارزش و مهم هستند، و نکته جالب اینجاست که آن‌ها سال‌ها تلاش کرده‌اند و مسلماً به تنهایی صاحب کسب‌و‌کار خود بوده و در انتخاب اول برای کسی کار نمی‌کنند. برای توسعه دهنده‌ی فول‌اِستک فرقی نمی‌کند محصول تحت چه پلتفرمی باشد، او می‌تواند تحت دسکتاپ، وب، موبایل و دیگر پلتفرم ها آن را تولید کند.
  2. کامبیز اسدزاده

    سلام، لطفاً مشخصات مرتبط با NDK, SDK و JDK را جهت بررسی بیشتر ارسال کنید. باید دقت کنید که نسخه‌ی کیوت ۵.۱۱ به بعد باید از نسخه‌های JDK 8.x و همچنین SDK 26 و NDK r18 استفاده کنید. دقت کنید در صورتی که از کیوت ۵.۱۱ و یا سری ۵.۱۲ استفاده می‌کنید باید نسخه‌ی NDK حتماً روی r18 باشه (تحت کامپایلر Clang) تا به درستی هدر‌های مورد نیاز رو شناسایی بکنه.
  3. کامبیز اسدزاده

    سلام، سمت سرور یک مقدار رو ارسال کن تحت متد GET یا POST مقدارش رو بررسی کن و اگه کمتر یا بیشتر بود بر اساس اون به شما اعلام وضعیت کنه. روش اعلان رو هم تحت نوتیفیکیشنی چیزی انجام بده.
  4. کامبیز اسدزاده

    کامپایلر MinGW-W64

    نگارش 8.1.0

    0 دریافت

    کامپایلر مینیمال گنو برای ویندوز یکی از مهمترین ابزار‌هایی است که معمولاً برنامه‌نویسان جهت کامپایلر کد‌های خود در محیط ویندوز استفاده می‌کنند. قبلاً کامپایلر MinGW32 به عنوان یک محیط توسعه‌ی متن باز نرم‌افزار برای ساخت اپلیکیشن‌های ویندوز مورد استفاده قرار می‌گرفت. توسعه‌ی پروژه‌ی اصلی MinGW در سال ۲۰۱۳ متوقف شد، اما یک جایگزین خوب با نام MinGW-w64 توسط یک توسعه‌دهنده‌ی متفاوت برای ایجاد رابط‌های جدید و پشتیبانی از معماری ۶۴ بیتی ارائه گردید. معمولاً دوست‌داران GCC (گنو) به دنبال این هستند که در محیط ویندوز کد‌های خود را تحت آن کامپایل کنند. جدیداً آخرین نسخه‌های این کامپایلر ۸ و ۹ می‌باشند که در صورت نیاز برای پشتیبانی از استاندارد‌های ۱۷ و ۲۰ سی‌پلاس‌پلاس با نصب نسخه‌ی ۸.۱.۰ این کامپایلر می‌توانید از آن بهره‌مند شوید. نکته: توجه داشته باشید که برای استفاده از این کامپایلر در ویندوز دو گزینه متفاوت موجود است، Posix و Win32. در صورتی که بخوهاید از ویژگی‌های چند-نخی C++11/C11 استفاده کنید گزینه‌ی Posix مناسب است. در غیر این صورت بدون پشتیبانی از این ویژگی نسخه‌ی win32 با استفاده از Api‌های خود ویندوز قابل استفاده می‌باشد.

    رایگان

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

    خب قبلش باید اشاره کنید که با چه فناوری فرمتون رو طراحی می‌کنید؟! با QWidget یا Qt Quick؟ در هر دو حالت ما کنترل‌های لایه‌ای داریم مثل Qt Widgets Layout و Qt Quick Layout در هر کدوم از این موارد نگه‌دارنده‌های مورد نظر رو به کار بگیرید و داخل اون‌ها اشیاء رو مدیریت کنید. پیشنهاد می‌کنم اگه به حوزه‌ی موبایل علاقه‌مندین از کیوت‌کوئیک استفاده کنید نه ویجت.
  6. کامبیز اسدزاده

    پیشنهاد من این هست که شما باید platform tools ها رو هم نصب کنید، هر موردی که برای API 25 هستش رو دریافت و نصب بفرمایید. Android SDK Build Tools 25.0 - 25.0.3 SDK Platform 25.0 Google Apis arm Eabi v7a system image نیازی نیست تیک همه چیز رو بزنید، موارد بالا مهمترینشون هستند تا بتونید از api 25 استفاده کنید. دقت کنید که پایینتر از ۲۱ ارزشی نداره و منسوخ شده به حساب میاد.
  7. نسخه‌ی نهایی ۴.۹ Qt Creator انتشار یافت. در زیر می‌توانید جزئیات این نسخه را مورد بررسی قرار دهید. Qt Creator version 4.9 contains bug fixes and new features. 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/4.8..v4.9.0 General * Added high-level introduction to Qt Creator's UI for first-time users (QTCREATORBUG-21585) * Added option to run external tools in build or run environment of active project (QTCREATORBUG-18394, QTCREATORBUG-19892) * Improved selection colors in dark themes (QTCREATORBUG-18888) * Added -temporarycleansettings (alias -tcs) command line option Editing * Language Client * Added support for document outline (QTCREATORBUG-21573) * Added support for `Find References to Symbol Under Cursor` (QTCREATORBUG-21577) * Added support for code actions * Highlighter * Replaced custom highlighting file parser with `KSyntaxHighlighting` (QTCREATORBUG-21029) * Made it possible to filter bookmarks by line and text content in Locator (QTCREATORBUG-21771) * Fixed document sort order after rename (QTCREATORBUG-21565) Help * Improved context help in case of code errors or diagnostics (QTCREATORBUG-15959, QTCREATORBUG-21686) * Improved lookup performance for context help All Projects * Added `Expand All` to context menu (QTCREATORBUG-17243) * Added `Close All Files in Project` action (QTCREATORBUG-15593) * Added closing of all files of a project when project is closed (QTCREATORBUG-15721) * Added display of command line parameters to `Application Output` (QTCREATORBUG-20577) * Fixed that dragging file from `Projects` view to desktop moved the file (QTCREATORBUG-14494) * Fixed regression with `QTC_EXTENSION` environment variable QMake Projects * Fixed that adding files did not respect alphabetic sorting and indentation with tabs (QTCREATORBUG-553, QTCREATORBUG-21807) * Fixed updating of `LD_LIBRARY_PATH` environment variable (QTCREATORBUG-21475) * Fixed updating of project tree in case of wildcards in corresponding QMake variable (QTCREATORBUG-21603) * Fixed issues with project tree when files are directly added to `RESOURCES` (QTCREATORBUG-20103) * Fixed that importing build unnecessarily created temporary kit (QTCREATORBUG-18153) CMake Projects * Fixed that default build directory names contained spaces (QTCREATORBUG-18442) * Fixed that build targets were reset on CMake parse error (QTCREATORBUG-21617) * Fixed scroll behavior when adding configuration item Qbs Projects * Fixed crash when switching kits (QTCREATORBUG-21544) Generic Projects * Added deployment via `QtCreatorDeployment.txt` file (QTCREATORBUG-19202) * Added setting C/C++ flags for the code model via `.cflags` and `.cxxflags` files (QTCREATORBUG-19668) * Fixed `Apply Filter` when editing file list (QTCREATORBUG-16237) Compilation Database Projects * Fixed that project tree was not updated when database changes on disk (QTCREATORBUG-21733) C++ Support * Added code snippet for range-based `for` loops * Added option to synchronize `Include Hierarchy` with current document (QTCREATORBUG-12022) * Clang Code Model * Added buttons for copying and ignoring diagnostics to tooltip * Fixed issue with high memory consumption (QTCREATORBUG-19543) * Fixed inconsistency between `Follow Symbol` and `Ctrl + Click` (QTCREATORBUG-21637) * Fixed that global completion was shown after comma (QTCREATORBUG-21624) * Clang Format * Added option to format code instead of only indenting code * Added `Open Used .clang-format Configuration File` to editor's context menu * Fixed indentation issue after empty line (QTCREATORBUG-22238) QML Support * Updated to parser from Qt 5.12, adding support for ECMAScript 7 (QTCREATORBUG-20341, QTCREATORBUG-21301) * Added Qt 5.13 as option to the wizards * Improved error handling in Qt Quick Application project template (QTBUG-39469) * Fixed crash on `Find Usages` Python * Added project templates for Qt for Python Nim Support * Added code completion based on `NimSuggest` Debugging * Added pretty printing of `QSizePolicy` * Fixed that debugger toolbar could force large minimum window size (QTCREATORBUG-21885) * Fixed restoring of debugger layout (QTCREATORBUG-21083) * Fixed pretty printing of standard maps and sets from `libc++` (QTCREATORBUG-18536) * GDB * Added support for rvalue references in function arguments * Fixed `Break on Abort` with GDB > 8.1 (QTBUG-73993) * LLDB * Fixed `Source Paths Mappings` functionality (QTCREATORBUG-17468) * QML * Fixed loading QML stack (QTCREATORBUG-22209) Clang Analyzer Tools * Made Clazy configuration options more fine grained (QTCREATORBUG-21120) * Improved Fix-its handling in case of selecting multiple diagnostics and after editing files * Added diagnostics from header files (QTCREATORBUG-21452) * Added sorting to result list (QTCREATORBUG-20660) * Fixed that files were analyzed that are not part of current build configuration (QTCREATORBUG-16016) Perf Profiler * Made Perf profiler integration opensource Qt Quick Designer * Made QML Live Preview integration opensource * Added support for `Dialog` (QTCREATORBUG-22120) * Fixed layout icons (QDS-538) * Fixed crash when creating item inside `TabView` tab (QTCREATORBUG-21542) Version Control Systems * Git * Improved messages when submit editor validation fails and when editor is closed * Added `Subversion` > `DCommit` * `Branches` View * Added `Push` action * Added entry for detached `HEAD` (QTCREATORBUG-21311) * Added tracking of external changes to `HEAD` (QTCREATORBUG-21089) * Subversion * Improved handling of commit errors (QTCREATORBUG-15227) * Perforce * Disabled by default * Fixed issue with setting P4 environment variables (QTCREATORBUG-18771) * Mercurial * Added side-by-side diff viewer (QTCREATORBUG-21124) Test Integration * Added `Uncheck All Filters` * Added grouping results by application (QTCREATORBUG-21740) * QTest * Added support for `BXPASS` and `BXFAIL` * Fixed parsing of `BFAIL` and `BPASS` FakeVim * Added option for blinking cursor (QTCREATORBUG-21613) * Added closing completion popups with `Ctrl+[` (QTCREATORBUG-21886) Model Editor * Added display of base class names Serial Terminal * Improved error message on connection failure Platform Specific Windows * Added support for MSVC 2019 * Changed toolchain detection to use `vswhere` by default, which is recommended by Microsoft * Fixed issue with UNC paths in `.pro` files (QTCREATORBUG-21881) * Fixed language version detections with MSVC and precompiled headers (QTCREATORBUG-21860) * Fixed submenu arrow styling (QTCREATORBUG-21376) Linux macOS * Added support for Touch Bar (QTCREATORBUG-21263) Android * Removed separate `QmakeAndroidSupport` plugin and merged functionality into other plugins * Fixed debugging for API level 22 (QTCREATORBUG-22098) Remote Linux * Removed use of Botan, exchanging it by use of separately installed OpenSSH tools (QTCREATORBUG-15744, QTCREATORBUG-15807, QTCREATORBUG-19306, QTCREATORBUG-20210) * Added support for `ssh-askpass` * Added optional deployment of public key for authentication to device setup wizard * Added support for X11 forwarding * Added `rsync` based deployment method * Added support for `Run in Terminal` * Added support for opening a remote terminal from device settings * Fixed incremental deployment when target directory is changed (QTCREATORBUG-21225) * Fixed issue with killing remote process (QTCREATORBUG-19941) Boot to Qt * Removed ADB-based Boot to Qt plugin that provided support for Boot to Qt versions 5.8, and earlier.
  8. انتشار نسخه‌ی بتا ۲ از کیوت کریتور ۴.۷ بخش C++ ویژگی‌ مهم این نسخه سازگاری و هماهنگی کامل برای پشتیبانی از کلنگ (Clang) در سی++ می‌باشد. قبل از هر چیز باید اشاره داشته باشیم به اینکه مدل کدینگ به صورت پیش فرض در کیوت کریتور ۴.۷ بر پایه Clang Model تعبیه شده است که به عنوان یک نکته عطف پس از سال‌ها تجربه و توسعه به دست آمده است. به روز رسانی های دیگری در بخش بک اند صورت گرفته است که مرتبط با Clang 6.0 می‌باشد که بهبود‌های بسیاری را به ارمغان می‌آورد. بخش QML مدل کد در QML در حال حاضر شامل حداقل پشتیبانی های مرتبط با شمارنده های تعریف شده از طرف کاربر می باشد که یکی از ویژگیهای جدید در کیوت ۵.۱۰ به بعد بود.علاوه بر این برخی از اشتباهات موجود در این بخش نیز اصلاح شده اند. ویژگی یکپارچه سازی شده برای آزمایش کد در صورتی که نمایشگر ماوس در ویرایستار سی++ در داخل یک تابع آزمایشی قرار گیرد، شما می‌توانید به صورت جداگانه آن را مورد آزمایش قرار دهید که با راست کلیک بر روی منوی محتوا تابع گزینه‌ی (Run Test Under Cursor) قابل انتخاب و آزمایش خواهد بود. دیگر بهبود‌ها گزینه های کیت در بالاترین بخش از تنظیمات خود قرار گرفته اند، بنابراین اولین کیت در اولین ردیف از لیست قرار گرفته است. در بخش نمایه از فایلها شما میتوانید پوشه ای بسازید. به صورت پیشفرض از این پس می توانید پوشه ها را قبل از فایل ها نمایش دهید، اما شما می‌توانید با انتخاب گزینه ای در منو نمایش‌های قبلی را رد کنید و یا از روش مرتب سازی بر اساس حروف الفبا استفاده کنید. تغییرات دیگر در این بخش آمده اند.
  9. کامبیز اسدزاده

    ببینید شما SDK رو که دانلود می‌کنید بعد از اون باید آنلاین مخازنش رو به‌روز رسانی کنید تا بتونید بدون مشکل برنامه‌ رو کامپایل کنید. این قضیه ربطی به Android Studio یا Qt Creator نداره، کلاً روالش همینه. بلو استک هم یک شبیه‌ساز اندروید هست ربطی به sdk و این مشکلات نداره.
  10. کامبیز اسدزاده

    سلام، شما باید بعد از مسیر‌دهی SDK اقدام به نصب پکیج‌ها به صورت آنلاین کنید. همچنین، برای این کار دقت کنید که باید وی‌-‌پی‌-ان وصل باشه. نکته: دقت کنید که نسخه‌ی NDK r18 رو همراه با SDK 26 داشته باشید.
  11. کامبیز اسدزاده

    کتاب آموزش پیشرفته ++C همراه Qt (پیشرفته)

    نگارش 1.3.7

    همانطور که می‌دانید در سال ۹۵ نسخه اول ومقدماتی اولین کتاب برنامه نویسی سی پلاس پلاس همراه با کتابخانه کیوت انتشار یافت، طبق بازخورد‌هایی که از علاقه مندان و خوانندگان کتاب چه در نسخه رایگان و چه در نسخه تجاری به این نتیجه رسیدیم که محتوایی فراتر از محتوای مقدماتی که تحت برنامه نویسی سنتی بود در اختیار شما قرار دهیم. این کتاب به مناسبت نوروز ۹۸ تا به تاریخ ۱۲ فروردین ماه با تخفیف ۳۰٪ قابل سفارش می‌باشد. کد تخفیف: Nowruz98 قیمت پایه ۶۵٬۰۰۰ تومان است. نکته : علاقه‌مندانی که حتی با اعمال تخفیف قادر به تهیه این کتاب نیستند، لطفاً در سایت ثبت‌نام کرده و سپس به آدرس ایمیل kambiz.ceo@gmail.com پیغام ارسال کنند تا کتاب فوق در اختیار این دسته از عزیزان قرار بگیرد. تاکید می‌شود لطفاً دوستانی که توان پرداختی برای تهیه این کتاب آموزشی را دارند این فرصت را در اختیار کسانی قرار دهند که واقعاً قادر به تهیه آن نیستند. (یادگیری حق همه‌ی ماست) * تمامی حقوق مادی و معنوی این کتاب متعلق به مولف و ناشر مولف (کامبیز اسدزاده) می‌باشد و هرگونه کپی برداری از آن پیگرد قانونی خواهد داشت. توجه : در داشتن هر گونه انتقاد و پیشنهاد در رابطه با این کتاب با آدرس شخصی نویسنده (kambiz.ceo@gmail.com) مکاتبه نمایید. نکته : این کتاب در روز‌های خاص ممکن است شامل تخفیف قرار بگیرد. نکته دوم : کسانی که این کتاب را یک بار خریداری می‌کنند نسخه‌ی به روز رسانی شده آن را به صورت رایگان می‌توانند دریافت کنند. برخی از درخواست‌ها در کتاب مقدماتی به صورت زیر بودند: آموزش پیشرفته در رابطه با QML و آشنایی با آن آموزش برقراری ارتباط بین ++C و QML به صورت بک اند و فرانت اند آموزش کار با کنترل‌ها و نحوه سفارشی سازی پروژه آموزش برقراری ارتباط با پایگاه داده و فناوری های مرتبط با آن آموزش نحوه پیکربندی کیت‌ها٬ کامپایلر و ... آموزش نحوه توسعه برنامه بر روی پلتفرم های مختلف از حمله اندروید٬ آی او اس و ... و درخواست‌های دیگر... بنابراین بر اساس این درخواست‌ها و محتوایی که نیاز می باشد بعد از جلد مقدماتی با آن‌ها آشنا باشید را در این نسخه فراهم کرده ایم. نکته از نظر من در رابطه با محتوا: کتابخانه کیوت شامل مباحث بسیار زیادی است که می‌توان از هزاران صفحه محتوای آموزشی تولید کرد. اما در این محتوای آموزشی من تنها به مواردی اشاره کرده ام که لازمه کار هستند و در پروژه‌ها می‌بایست اطلاعات لازم در رابطه با آن‌ها داشته باشید. هزینه این کتاب چطور و بر چه اساسی خواهد بود؟ همانطور که می‌دانید هزینه مقدماتی کتاب در ویرایش اول و دوم با قیمت ۱۰.۰۰۰ تومان و در ویرایش سوم با قیمت ۲۰.۰۰۰ هزار تومان در اختیار علاقه مندان قرار گرفته است که شامل بهبود و توسعه قالب و محتوای آن بر اساس بازخورد ها بوده است. قیمت این جلد در حال حاضر۶۵.۰۰۰ تومان در نظر گرفته شده است که در قالب A4 با تعداد حداقل فعلی۴۴۶ صفحه‌ی (به‌روز شده) توسعه یافته است و در مرحله اول در قالب PDF منتشر خواهد شد. نسخه چاپی این کتاب چطور خواهد بود؟ آیا برنامه ای برای آن خواهید داشت؟ بر اساس بازخورد‌هایی که داشته ایم بیش از ۸۵ درصد علاقه مندان مایل به دریافت نسخه الکترونیکی کتاب بودند که در آن می‌توانند به راحتی کد‌های نوشته شده را در محیط توسعه خود کپی کنند بنابراین نسخه الکترونیکی در اولویت اول قرار گرفته است که می‌توان در کمترین زمان ممکن آن را آماده کرد. اما در رابطه با نسخه چاپی باید طبق مراحل مورد نیاز زمانی را صرف عقد قرارداد و توافق با ناشر در نظر بگیریم که ممکن است چند ماه بعد از نسخه الکترونیکی به تصویب رسیده و منتشر شود. (فعلا تصمیم قطعی در رابطه با این موضوع گرفته نشده است) این بستگی به استقبال علاقه مندان خواهد داشت و هزینه آن با نسخه الکترونیکی مجزا خواهد بود. سرفصل ها و محتوا چه چیز‌هایی هستند؟ محتوای کتاب طبق آخرین استاندارد کتابخانه بر پایه نسخه ۵.۸ به بالا می‌باشد. محتوای آن به نسخه ۵.۹ و حتی ۵.۱۰ به صورت پیش نویسه به روز رسانی شده است. همچنین ویژگی های و موارد مهمی که در نسخه ۵.۹ و ۵.۱۰ موجود هستند در این کتاب به آن‌ها اشاره شده است. سر فصل‌های نهایی و تایید شده کتاب: فصل اول مقدمه بر زبان ++C برخی از قابلیت‌ها ساختار برنامه در ++C کتابخانه‌ها فرق بین C و ++C ویژگی‌های معرفی شده در ++C ویرایش‌های ۱۱ ٬ ۱۴ و ۱۷ کامپایلر‌های ++C و وضعیت آن‌ها ساختار اسناد ++C در پروژه‌ کاربرد این زبان در کجاست؟ استاندارد‌های زبان مقدمه کیوت (Qt) معرفی کیوت (Qt) ۵.۹ آشنایی با محیط توسعه، نصب و راه اندازی همراه با پیکربندی کیت (Kit) در آن نصب و راه اندازی محیط Qt پیکربندی کیت‌ها در macOS پیکربندی کیت‌ها در Linux پیکربندی کیت‌ها در Windows معرفی محیط توسعه کیوت کرِیتور (Qt Creator) نسخه 4 پیکربندی و تنظیمات مربوط به ساخت برای پلتفرم‌های مختلف معرفی مجوز های Qt و نحوه استفاده از مناسبترین مجوز لوگو‌های نشانگر ساخته شده با Qt پشتیبانی از انواع پلتفرم‌ها پشتیبانی از انواع معماری ها شرایط و قوانین لازم جهت انتشار اپلیکیشن در فروشگاه iTunes یا همان (Apple Store) شرایط و قوانین لازم جهت انتشار اپلیکیشن در فروشگاهWindows Store شرایط و قوانین لازم جهت انتشار اپلیکیشن در فروشگاه Google Play شرایط و قوانین اختصاصی برنامه تحت Qt جهت انتشار و پذیرش در فروشگاه های مرتبط فصل دوم معرفی فناوری Qt Quick ویرایش 2 معرفی زبان کیو اِم اِل (QML) ویرایش 2 آشنایی با سبک - سینتَکس (Syntax) زبان QML روش اعلام یا اظهار یک شیء در QML اشیاء فرزند (Child-Object) در QML سبک و روش اعمال اظهار نظر (Comment) در QML صفت های اشیاء در QML پشتیبانی از جاوا اسکریپت (JavaScript) و ترکیب آن با QML روش استفاده از جاوا اسکریپت در سند QML روش های ترکیب ++C و استفاده از آن در سند QML فصل سوم معرفی انواع پروژه ها تحت فناوری کیوت کوئیک (Qt Quick) معرفی پروژه از نوع Qt Widget Application معرفی پروژه از نوع Qt Console Application معرفی پروژه از نوع Qt Quick Application معرفی پروژه از نوع Qt Quick Controls 2 Application معرفی پروژه از نوع Qt Quick Controls Application معرفی پروژه از نوع Qt Quick Canvas 3D Application معرفی پروژه از نوع Qt Quick Labs Controls Application آغاز ایجاد پروژه تحت C++ و Qt Quick ساده ترین برنامه معرفی کلاس QGuiApplication معرفی کلاس QQmlApplicationEngine معرفی کلاس QCoreApplication معرفی تابع exect در پروژه فصل چهارم انواع کنترل ها، منو ها و دیگر آبجکت ها معرفی انواع QML پایه در فناوری Qt Quick نوع date نوع color نوع font نوع matrix4x4 نوع point نوع quaternion نوع rect نوع size نوع vector2d نوع vector3d نوع vector4d معرفی انواع اشیاء QML در فناوری Qt Quick معرفی Accessible معرفی AnchorAnimation معرفی AnchorChanges معرفی AnchorImage معرفی AnimatedSprite معرفی Animation معرفی AnimationController معرفی Animator معرفی Behavior معرفی BorderImage معرفی Contex2D معرفی Canvas معرفی CanvasGradient معرفی CanvasImageData معرفی CanvasPixelArray معرفی CanvasColorAnimation معرفی Column معرفی DoubleValidator معرفی Drag معرفی DragEvent معرفی DropArea معرفی EnterKey معرفی Flickable معرفی Flipable معرفی Flow معرفی FocusScope معرفی FontLoader معرفی FontMeteric معرفی Gradient معرفی GridMesh معرفی GridView معرفی Image معرفی IntValidator معرفی Item معرفی ItemGraResult معرفی KeyEvent معرفی KeyNavigation معرفی Keys معرفی LayoutMirror معرفی ListView معرفی Loader معرفی MouseArea معرفی MouseEvent معرفی MultiPointTouchArea معرفی NumberAnimation معرفی OpacityAnimator معرفی ParallelAnimation معرفی GraphicInfo معرفی ParentAnimation معرفی ParentChange معرفی Path معرفی PathAnimation معرفی PathView معرفی PauseAnimation معرفی PropertyAction معرفی PropertyChanges معرفی Rectangle معرفی RegExpValidator معرفی Repeater معرفی Rotation معرفی RotationAnimation معرفی RotationAnimator معرفی Row معرفی Scale معرفی ScaleAnimator معرفی SecuentialAnimation معرفی ShaderEffect معرفی ShaderEffectSource معرفی Shortcut معرفی SmoothedAnimation معرفی SpringAnimation فصل پنجم معرفی انواع کنترل های 2 Qt Quick Controls کنترل AbstractButton کنترل ApplicationWindow کنترل BusyIndicator کنترل Button کنترل ButtonGroup کنترل CheckBox کنترل CheckDelegate کنترل ComboBox کنترل Container کنترل Control کنترل Dial کنترل Drawer کنترل Frame کنترل GroupBox کنترل ItemDelegate کنترل Label کنترل Menu کنترل MenuItem کنترل Page کنترل PageIndicator کنترل Pane کنترل Popup کنترل ProgressBar کنترل RadioButton کنترل RadioDelegate کنترل RangeSlider کنترل ScrollBar کنترل ScrollIndigator کنترل Slider کنترل SprinBox کنترل StackView کنترل SwipeDelegate کنترل SwipeView کنترل Switch کنترل SwitchDelegate کنترل TabBar کنترل TabButton کنترل TextArea کنترل TextField کنترل ToolBar کنترل ToolButton کنترل ToolTip کنترل Thumbler فصل ششم معرفی Qt Quick Dialog (دیالوگ های انتخاب رنگ، فایل، فونت و پیغام) معرفی Color Dialog معرفی Font Dialog معرفی File Dialog معرفی Message Dialog معرفی Qt Quick Layouts معرفی Column Layout معرفی Grid Layout معرفی Row Layout معرفی Stack Layout معرفی Qt Quick Control Styles (سبک و استایل نویسی کنترل ها – سفارشی سازی) واکنش گرایی و پاسخ دهی محتوای وب در اپلیکیشن با Qt WebEngine محتوای چند رسانه ای در کیوت QMultimedia محتوای چند رسانه ای در کیوت QMultimedia پخش صوت ظبط صدا در فایل پخش ویدیو کار با دوربین فصل هفتم معرفی و پیکربندی کار با بانک اطلاعاتی (دیتابیس) کار با بانک اطلاعاتی و ارتباط آن بین C++ و QML معرفی و کار با XML معرفی و کار با JSON معرفی و کار با QSetting سفارشی سازی فایل .pro پروژه فصل هشتم مقایسه انواع حالت های کامپایل Debug و Release نحوه افزودن دیگر کتابخانه های C++‎‎ در محیط Qt Creator و استفاده همراه با کتابخانه Qt فرق بین کامپایل استاتیک و داینامیک نحوه خروجی گرفتن / گسترش (Deployment) در Qt پیکربندی و انتشار برنامه در پلتفرم ویندوز (Windows) پیکربندی و انتشار برنامه در پلتفرم مک (macOS) پیکربندی و انتشار برنامه در پلتفرم لینوکس (Linux) پیکربندی و انتشار برنامه در پلتفرم‌های iPhone و iPad (iOS) پیکربندی و انتشار برنامه در پلتفرم اندروید (Android) معرفی ابزار کیوبس (QBS) به روز رسانی کیوت بدون دریافت فایل نصبی آفلاین اهداف نسخه‌های ۵.۱۰ و ۶ پیشنهادات و ملاحظات در عملکرد و کارآیی (جدید)

    650٬000 ریال

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

    امروز با نصب Visual Studio 2019 Final Release متوجه شدم با اینکه تایید کرده بودن این مسئله به صورت کامل حل شده، اما باید بگیم هنوز این مشکل پابرجاست و نتیجش اشاره به ۱۹۹۷۱۱ داره، حتی با تنظیمات بر روی استاندارد ۱۷ و ۱۴ هم همین مشکل موجوده! جالب اینجاست با وجود امکان انتخاب آخرین پیش‌نویسه حتی یکی از ویژگی‌های موجود در نسخه‌ی 2a حتی برای آزمایش پشتیبانی نمی‌شه! به هر حال پیشنهاد این هست کامپایلر کلنگ رو بر روی محیط توسعه‌ی خود پیکربندی کنید تا با مشکلات این چنینی مواجه نشوید.
  13. کامبیز اسدزاده

    سلام، مدتی بود که نسخه‌ی ۲۰۱۷ کامپایلر 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++ برای دریافت این اصلاحیه به مخزن آن مراجعه نمایید.
  14. کامبیز اسدزاده

    توجه داشته باشید که در چنین مواقعی یک بار qmake رو اجرا کنید، مشکل حل خواهد شد.
  15. با سلام، معمولاً مستنداتی که شرکت مایکروسافت برای زبان‌های برنامه‌نویسی در نظر می‌گیرد بسیار کامل و جامع هستند. در این میان در رابطه با ماکرو‌ها و کامپایلر‌ها سوئیچ‌هایی موجود هستند که اکثراً با آن‌ها سرو کار داشته‌ایم. مایکروسافت اشاره‌ی خوبی به این سوئیچ‌ها دارد که در این بخش به آن اشاره شده است. اما با توجه به کاربرد آن‌ها نوع لیستی که برای معرفی آن‌ها اشاره داشته است شاید برای همگان شفاف نباشد. بنابراین، اخیراً یکی از توسعه‌دهندگان در سایت Code Project اقدام به بازنشر سوئیچ‌های مربوطه همراه با توضیحات به صورت بسیار شفاف در فایل اکسِل آن‌ها را معرفی کرده است که در ادامه آن را می‌توانید دریافت کنید. Predefined_C_and_C++_Macros.XLSX
  16. کامبیز اسدزاده

    محیط توسعه‌ی Xcode 10.2.0 منتشر شد. این نسخه شامل ویژگی‌های جدیدی از جمله پشتیبانی از استاندارد‌های C++17 می‌باشد. از مهمترین تغییرات که بسیار انتظار می‌رفت هدر‌های <experimental/any> و <experimental/optional> منسوخ و به به نفع حمایت از استاندارد سی‌پلاس‌پلاس ۱۷ در قالب <any> و ارائه شده‌اند، بنابراین شما نباید به وجود نسخه‌های آزمایشی در experimental آن‌ها تکیه کنید. جهت مشاهده‌ی ویژگی‌های جدید و تغییرات و همچنین بهبود‌ها به مستند مربوطه مراجعه کنید.
  17. کامبیز اسدزاده

    نرم افزار Apple Xcode از قویترین ابزارها برای برنامه نویسی های حرفه ای در مکینتاش می‌باشد که نسخه ۱۰ بتا آن منتشر شده است. برنامه نویسی محصولات اپل علاقه مندان بسیاری زیادی دارد که تمامی کاربران می توانند به وسیله این نرم افزار به ساده ترین روش و با کمترین خطا، حتی راحت تر از برنامه نویسی مشابه ویندوزی، برنامه نویسی سیستم های آی او اس و مخصوصا مک را انجام دهند. اِکس کُد ۱۰ شامل تمامی چیزهایی است که شما برای ایجاد برنامه های شگفت انگیز در محیط مک به آن‌ها نیاز دارید. در حال حاضر اِکس کُد و ابزار‌ها همه باهم در محیط تاریک و جدید بر روی مک بسیار عالی عمل می‌کنند. همچنین محیط ویرایشگر منبع به شما این امکان را می‌دهد که سریعاً تغییرات انجام شده بر روی کد خود را مشاهده کنید تا به سرعت بتوانید تغییرات مرتبط به کد‌های خود را دریافت نمایید. همچنین امکان ساخت ابزار‌های اختصاصی جهت تجزیه تحلیل داده‌ها در این نسخه فراهم شده است. سوئیفت نرم افزارها را با سرعت بسیار زیادی کامپایل می‌کند، به شما اجازه می‌دهد با سرعت بسیار بالایی برنامه های خود را ارائه دهید و به طور کلی این بسته از محیط توسعه بسیار سریعتر، امن‌تر و راحت‌تر از قبل شده است. چه چیز‌هایی در اِکس کُد 10 تازه هستند؟ به نظر می‌رسد که اکس کد ۱۰ در ترکیب حالت های تاریک در macOS Majave شگفت انگیز است و به شما اجازه می‌دهد تا به راحتی با آن سازگار شوید. نسخه بتا در Xcode ۱۰ شامل Swift 4.2 و SDK های بتا برای watchOS 5، iOS12، tvOS12 و macOS Mojave می‌باشد. پشتیبانی از محیط تاریک برای توسعه برنامه‌های مک ظاهر تیره و جدید در سرتاسر محیط Xcode و ابزارها کاتالوگ‌های انواع رنگ‌های تیره و روشن برای سفارشی سازی رنگ‌ها و تصاویر رابط سازنده پیش نمایش تاریک و روشن که به شما اجازه می‌دهد بین این دو حالت در پیش نمایش سوئیچ کنید. اشکال زدائی برنامه های مک در حالت تاریک و روشن بدون تغییرات در سیستم اشکال زدائی کنترل منبع تغییرات در مخازن منبع و یا مخازج موجود در سرورهای آنلاین به صورت برجسته در درون ویرایشگر قابل مشاهده است. نمایش تغییرات ایجاد شده در کد شما تغییراتی که هنوز به مخازن اشتراکی مانند Github و غیره... منتقل نشده اند. تغییراتی که دیگران ایجاد کرده اند قابل مشاهده است. تعارضاتی که شما قبل از کامیت (Commit) باید آن‌ها را در نظر داشته باشید قابل مشاهده هستند. پشتیبانی از خدمات ارائه شده بر روی سرورهای گیت از طرف Atlassian Bitbucket به خوبی Gitlab و همچنین پشتیبانی از Github فراهم شده است. امکان پیشنهادی اکس کد برای تغییرات پایه مخازن شما به عنوان به روز رسانی به آخرین نسخه در صورتی که شما نیاز به کلید‌های SSH داشته باشید آن‌ها تولید و بر روی سرور ارائه دهنده‌ی سرویس شما آپلود (بارگذاری) خواهند شد. بهبود‌های ویرایشگر چندین نشانگر را در ویرایشگر کد خود قرار دهید تا تغییرات زیادی در یک بار انجام شود. نوار کشویی کد که اکنون به شما اجازه می‌دهد تا هر بلوک کد را که توسط پرانتز محصور شده است پنهان کنید. در صورتی که بیش از حد اسکرول شده باشد باعث می‌شود که آخرین خطوط کد را در وسط صفحه تنظیم کنید. زبان‌ها پشتیبانی از نسخه ۴.۲ سوئیفت فراهم شده است کتابخانه‌ی libstdc++ در این نسخه به طور کلی حذف شده است و این بدین معنی است پروژه‌های C++ به کتابخانه‌ی استاندارد libc++ مهاجرت خواهند کرد. جهت دریافت نسخه‌ی بتا این لینک و همچنین دریافت نسخه‌ی پایدار ۹.۴ در این بخش مراجعه کنید. و بسیاری از تغییرات دیگر که در این سند می‌توانید آن‌ها را مشاهده کنید.
  18. کامبیز اسدزاده

    مایکروسافت سایه‌زنی با نرخ متغیر را به DirectX 12 می‌آورد

    مایکروسافت قصد دارد با اعمال فناوری گرافیکی سایه‌زنی با نرخ متغیر در DirectX 12 ضمن افزایش نرخ فریم همگام با افزایش کیفیت بصری، از الزامات سخت‌افزاری اجرای بازی‌ها بکاهد. مایکروسافت فناوری سایه‌زنی با نرخ متغیر (Variable Rate Shading) را به DirectX 12 وارد کرده است. بدین ترتیب توسعه‌دهندگان با اتکا بر این نوع سایه‌زنی قادر خواهند بود سطح عملکرد در محیط‌های گرافیکی نظیر بازی‌ها را بهبود ببخشند، کیفیت بصری بازی را افزایش داده و منابع مورد نیاز سیستم برای اجرای بازی را کاهش دهند. مایکروسافت از توسعه‌دهنده‌ی بازی‌های ویدئویی Firaxis خواسته است که این نوع سایه‌زنی را در یکی از بازی‌های خود پیاده‌سازی کند تا نشان دهد که کاربرد روش VRS تا چه اندازه ساده و تأثیر آن برعملکرد عناوین مختلف تا چه اندازه چشمگیر خواهد بود. در قسمت سمت چپ تصویر زیر، تأثیر VRS در عمل دیده می‌شود. گرچه دو سمت تصویر یکسان به نظر می‌رسد، بنا به گزارش Firaxis در نقشه‌ی زیر و در چنین سطحی از بزرگنمایی، با اعمال VRS شاهد ۱۴ درصد افزایش در خروجی فریم خواهیم بود. البته باید به سطح عملکرد گزارش شده توسط Firaxis با جانب احتیاط نگریست. ما از شرایط انجام آزمایش بی‌خبریم، قابلیت VRS را هنوز نیازموده‌ایم و حتی ممکن است تصاویر و آمار منتشرشده راهی برای تبلیغ فناوری گرافیکی جدید مایکروسافت باشد. بنابراین قضاوت در مورد میزان تأثیر سایه‌زنی با توان متغیر را باید به زمانی پس از آزمایش عمومی این قابلیت موکول کرد. در هر صورت، فناوری «سایه‌زنی با نرخ متغیر» مایکروسافت در دسترس توسعه‌دهندگان قرار دارد و بسیاری از شرکت‌های صاحب‌نام قصد استفاده از آن را در محصولات بعدی خود دارند. توسعه‌دهندگانی مانند 343 Industries، شرکت Playground Games و Massive Entertainment در کنار ناشرانی مثل Ubisoft و Activision و سازندگان موتورهای بازی نظیر Unity و Epic Games در فهرست شرکت‌هایی قرار دارند که بناست از این قابلیت در عناوین آینده‌ی خود استفاده کنند. طرز کار فناوری VRS همان‌طور که از نام «سایه‌زنی با نرخ متغیر» پیدا است، در این روش به‌جای تمرکز بر رندر شیدرها با رزولوشن و جزییات یکسان (که مفهومی متمایز از رزولوشن کلی است)، توان سایه‌زنی (قدرت پردازشی یا به عبارتی نرخ کلاک هسته‌های سایه‌زن) متغیری را در ترسیم بافت‌های گرافیکی بخش‌های مختلف هر فریم می‌توان به‌کار گرفت. این فناوری با تغییر تعداد پیکسل‌هایی کار می‌کند که در یک عملیات سایه‌زنی پیکسل واحد پردازش‌پذیر هستند. براساس اعلام مایکروسافت، توسعه‌دهندگان می‌توانند به‌صورت گزینشی توان سایه‌زنی را در مناطقی از فریم که تأثیر چندانی بر کیفیت بصری نداشته باشد، کاهش دهند و حداکثر قدرت واحدهای سایه‌زن را معطوف به مناطقی کنند که جزئیات تصویری بالاتری در آن‌ها موردنیاز است. بنابراین توسعه‌دهندگان خواهند توانست در مناطقی که در آن شیدرها اهمیت بیشتری دارند، توان سایه‌زنی را افزایش دهند تا کیفیت تصویر بهتری در خروجی بازی‌های خود دریافت کنند. در پایان سطح عملکرد بالاتر و کیفیت تصویری بهتری را می‌توان به دست آورد؛ درحالیکه منابع سخت‌افزاری مورد نیاز کمتری برای اجرای بهتر بازی‌ها نسبت به قبل لازم خواهد شد.API سایه‌زنی با نرخ متغیر به توسعه‌دهندگان اجازه خواهد داد توان سایه‌زنی را به سه روش تنظیم کنند: روش‌های per-draw، روش within-draw با استفاده از یک تصویر screenspace و روش within-draw به حالت per-primitive. همچنین دو رده‌ی پشتیبانی از VRS وجود دارد. در رده‌ی نخست از VRS در حالت per-draw و در رده‌ی دوم از VRS هم در حالت per-draw و هم در حالت within-draw پشتیبانی می‌شود. همچنین حالت ترکیبی سایه‌زنی با توان متغیر (VRS Combiners) پیش‌بینی شده است که امکان استفاده‌ی همزمان از VRS به روش per-draw و per-permitive را ممکن می‌سازد. براساس ادعای مایکروسافت، قابلیت سایه‌زنی با نرخ متغیر با سخت‌افزارهای موجود شرکت انویدیا برخوردار از معماری تورینگ و نیز سخت‌افزارهایی که در آینده توسط اینتل ارائه خواهد شد، پشتیبانی می‌شود. اینتل هم‌اکنون در حال آزمایش سایه‌زنی با نرخ متغیر روی تراشه‌های اولیه‌ی گرافیکی نسل ۱۱ خود است که برنامه‌ریزی برای عرضه‌ی آن‌ها در سال جاری وجود دارد. احتمالا پردازنده‌های گرافیکی مجزای اینتل (نسخه‌های دسکتاپ آینده) نیز از این فناوری گرافیکی پشتیبانی کند.
  19. نسخه‌ی Qt Creator 4.9 Rc منتشر شد. از مهمترین تغییرات این نسخه می‌توان به پشتیبانی از MSVC 2019 و ECMAScript 7 اشاره کرد. لیست تغییرات و بهبود‌های کلی به صورت زیر آمده است: Qt Creator version 4.9 contains bug fixes and new features. 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/4.8..v4.9.0 General * Added high-level introduction to Qt Creator's UI for first-time users (QTCREATORBUG-21585) * Added option to run external tools in build or run environment of active project (QTCREATORBUG-18394, QTCREATORBUG-19892) * Improved selection colors in dark themes (QTCREATORBUG-18888) * Added -temporarycleansettings (alias -tcs) command line option Editing * Language Client * Added support for document outline (QTCREATORBUG-21573) * Added support for `Find References to Symbol Under Cursor` (QTCREATORBUG-21577) * Added support for code actions * Highlighter * Replaced custom highlighting file parser with `KSyntaxHighlighting` (QTCREATORBUG-21029) * Made it possible to filter bookmarks by line and text content in Locator (QTCREATORBUG-21771) * Fixed document sort order after rename (QTCREATORBUG-21565) Help * Improved context help in case of code errors or diagnostics (QTCREATORBUG-15959, QTCREATORBUG-21686) * Improved lookup performance for context help All Projects * Added `Expand All` to context menu (QTCREATORBUG-17243) * Added `Close All Files in Project` action (QTCREATORBUG-15593) * Added closing of all files of a project when project is closed (QTCREATORBUG-15721) * Added display of command line parameters to `Application Output` (QTCREATORBUG-20577) * Fixed that dragging file from `Projects` view to desktop moved the file (QTCREATORBUG-14494) QMake Projects * Fixed that adding files did not respect alphabetic sorting and indentation with tabs (QTCREATORBUG-553, QTCREATORBUG-21807) * Fixed updating of `LD_LIBRARY_PATH` environment variable (QTCREATORBUG-21475) * Fixed updating of project tree in case of wildcards in corresponding QMake variable (QTCREATORBUG-21603) * Fixed issues with project tree when files are directly added to `RESOURCES` (QTCREATORBUG-20103) * Fixed that importing build unnecessarily created temporary kit (QTCREATORBUG-18153) CMake Projects * Fixed that default build directory names contained spaces (QTCREATORBUG-18442) * Fixed that build targets were reset on CMake parse error (QTCREATORBUG-21617) * Fixed scroll behavior when adding configuration item Qbs Projects * Fixed crash when switching kits (QTCREATORBUG-21544) Generic Projects * Added deployment via `QtCreatorDeployment.txt` file (QTCREATORBUG-19202) * Added setting C/C++ flags for the code model via `.cflags` and `.cxxflags` files (QTCREATORBUG-19668) * Fixed `Apply Filter` when editing file list (QTCREATORBUG-16237) Compilation Database Projects * Fixed that project tree was not updated when database changes on disk (QTCREATORBUG-21733) C++ Support * Added code snippet for range-based `for` loops * Added option to synchronize `Include Hierarchy` with current document (QTCREATORBUG-12022) * Clang Code Model * Added buttons for copying and ignoring diagnostics to tooltip * Fixed issue with high memory consumption (QTCREATORBUG-19543) * Fixed inconsistency between `Follow Symbol` and `Ctrl + Click` (QTCREATORBUG-21637) * Fixed that global completion was shown after comma (QTCREATORBUG-21624) * Clang Format * Added option to format code instead of only indenting code * Added `Open Used .clang-format Configuration File` to editor's context menu QML Support * Updated to parser from Qt 5.12, adding support for ECMAScript 7 (QTCREATORBUG-20341, QTCREATORBUG-21301) * Improved error handling in Qt Quick Application project template (QTBUG-39469) * Fixed crash on `Find Usages` Python * Added project templates for Qt for Python Nim Support * Added code completion based on `NimSuggest` Debugging * Fixed that debugger toolbar could force large minimum window size (QTCREATORBUG-21885) * Added pretty printing of `QSizePolicy` * Fixed pretty printing of standard maps and sets from `libc++` (QTCREATORBUG-18536) * GDB * Added support for rvalue references in function arguments * LLDB * Fixed `Source Paths Mappings` functionality (QTCREATORBUG-17468) Clang Analyzer Tools * Made Clazy configuration options more fine grained (QTCREATORBUG-21120) * Improved Fix-its handling in case of selecting multiple diagnostics and after editing files * Added diagnostics from header files (QTCREATORBUG-21452) * Added sorting to result list (QTCREATORBUG-20660) * Fixed that files were analyzed that are not part of current build configuration (QTCREATORBUG-16016) Perf Profiler * Made Perf profiler integration opensource Qt Quick Designer * Made QML Live Preview integration opensource * Added support for `Dialog` (QTCREATORBUG-22120) Version Control Systems * Git * Improved messages when submit editor validation fails and when editor is closed * Added `Subversion` > `DCommit` * `Branches` View * Added `Push` action * Added entry for detached `HEAD` (QTCREATORBUG-21311) * Added tracking of external changes to `HEAD` (QTCREATORBUG-21089) * Subversion * Improved handling of commit errors (QTCREATORBUG-15227) * Perforce * Disabled by default * Fixed issue with setting P4 environment variables (QTCREATORBUG-21573) * Mercurial * Added side-by-side diff viewer (QTCREATORBUG-21124) Test Integration * Added `Uncheck All Filters` * Added grouping results by application (QTCREATORBUG-21740) * QTest * Added support for `BXPASS` and `BXFAIL` * Fixed parsing of `BFAIL` and `BPASS` FakeVim * Added option for blinking cursor (QTCREATORBUG-21613) * Added closing completion popups with `Ctrl+[` (QTCREATORBUG-21886) Model Editor * Added display of base class names Serial Terminal * Improved error message on connection failure Platform Specific Windows * Added support for MSVC 2019 * Changed toolchain detection to use `vswhere` by default, which is recommended by Microsoft * Fixed issue with UNC paths in `.pro` files (QTCREATORBUG-21881) * Fixed language version detections with MSVC and precompiled headers (QTCREATORBUG-21860) Linux macOS * Added support for Touch Bar (QTCREATORBUG-21263) Android * Removed separate `QmakeAndroidSupport` plugin and merged functionality into other plugins * Fixed debugging for API level 22 (QTCREATORBUG-22098) Remote Linux * Removed use of Botan, exchanging it by use of separately installed OpenSSH tools (QTCREATORBUG-15744, QTCREATORBUG-15807, QTCREATORBUG-19306, QTCREATORBUG-20210) * Added support for `ssh-askpass` * Added optional deployment of public key for authentication to device setup wizard * Added support for X11 forwarding * Added `rsync` based deployment method * Added support for `Run in Terminal` * Added support for opening a remote terminal from device settings * Fixed incremental deployment when target directory is changed (QTCREATORBUG-21225) * Fixed issue with killing remote process (QTCREATORBUG-19941) جهت دریافت این نسخه کلیک کنید.
  20. کامبیز اسدزاده

    انواع مجوزهای منبع‌باز (Open Source)

    با توجه به اینکه اکثر طراحان و توسعه دهندگان نرم‌افزارها دید روشنی از تفاوت گواهینامه‌های متعدد متن باز ندارند در این مقاله ما به ویژگی‌ها و شرایط هر یک از آن‌ها اشاره کرده‌ایم که به شما یک شفاف سازی سریع در رابطه با اینکه کدام مجوز مناسب محصول شما به صورت منبع‌باز خواهد بود را ارائه می‌کند. قبل از هر چیز در زیر لیستی از انواع مجوز‌های منبع باز را در نظر بگیرید: Apache License 2.0 BSD 3-Clause “New” or “Revised” license BSD 2-Clause “Simplified” or “FreeBSD” license GNU General Public License (GPL) v3.0 GNU Library or “Lesser” General Public License (LGPL) MIT license Mozilla Public License 2.0 Creative Commons License مجوز APACHE LICENSE حقوق موجود در مجوز آپاچی نسخه ۲.۰ را می‌توان برای مقوله کپی‌ رایت‌ یا پتنت استفاده کرد (البته برخی مجوزها را تنها می‌توان روی کپی‌ رایت اعمال کرد و برای پتنت‌ها مورد استفاده قرار نمی‌گیرند). به طور کلی، بخشی از جزئیات مجوز آپاچی به شرح زیر است: حقوق هیچ‌گاه به اتمام نمی‌رسد:‌ وقتی حقوقی تحت مجوز آپاچی ارائه شود، دیگر نیازی به تکرار مجوز برای آن نیست و همیشه می‌توانید تحت همین مجوز از آن‌ها استفاده کنید. نفوذ جهانی: حتی اگر حقوقی در یک کشور عرضه شود، به صورت خودکار در همه کشورها قابل استفاده می‌شود. عرضه رایگان یا دریافت حق امتیاز: بدون هزینه، هزینه بر مبنای استفاده یا هر نوع دیگری اجرایی است. حقوق غیرقابل فسخ است: هیچ‌کس نمی‌تواند ادعا کند که کار مشتق شده شما از سورس‌ کدی که تحت این مجوز عرضه شده را دیگر نمی‌توانید استفاده کنید (عبارتی در این مجوز وجود دارد که بیان می‌کند اگر شما از فردی به خاطر نقض پتنت یا هر چیز دیگری تحت این لایسنس شکایت کنید، مجوز شما باطل می‌شود، اما این قضیه فقط به کارهای پتنت‌ شده اختصاص دارد و تا وقتی که شما از کسی شکایت نکنید، نگرانی خاصی وجود ندارد). نمونه‌ی مجوز Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. مجوز BSD License مجوز BSD بخشی از خانواده مجوزهای نرم‌ افزار آزاد است که در مقایسه با مجوزهای نرم‌ افزاری دیگر، محدودیت‌های کمتری درباره نحوه توزیع دارد که دو نسخه مهم آن عبارت‌ است از: The New BSD License / The New Modified BSD License The Simplified BSD License / FreeBSD License هر دو به‌ عنوان مجوزهای متن باز توسط Open Source Initiative پذیرفته شده‌اند. مجوز New BSD که با نام «مجوز سه شرطی» نیز شناخته می‌شود، اجازه توزیع مجدد نامحدود را برای هر هدفی می‌دهد (البته تا وقتی که کپی‌ رایت‌ و رفع تعهدهای این مجوز برقرار باشند). این مجوز یک شرط جالب نیز دارا است به این شکل که استفاده از نام مشارکت‌ کنندگان برای تأیید کارهای انجام شده در پروژه را بدون اجازه شخصی آن‌ها ممنوع می‌کند. این تبصره در‌ واقع به این معنی است که اگر کسی سورس‌ کد توسعه دهنده شناخته‌ شده‌ای را fork کرده باشد و تغییراتی را برای ساخت پروژه جدید در آن انجام داده باشد، نمی‌تواند از نام آن فرد مطرح برای تأیید و اعتبار بخشی به پروژه خود استفاده کند (در حقیقت، تفاوت اصلی میان نسخه جدید و نسخه ساده مجوز BSD در استفاده از این شرط است). نمونه‌ی مجوز Copyright <YEAR> <COPYRIGHT HOLDER> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. مجوز GNU با وجود این مجوز محدودیت خاصی برای کپی کردن کدها در پروژه‌هایی که لایسنس GPL دارند وجود نداشته و می‌توانید کدهای دارای این مجوز را به‌ سادگی کپی کنید. همچنین، می‌توانید آن را روی فلش یا هارد خود توزیع کنید یا کدها را در وب‌ سایت خود با لینک دانلود و به همراه همین لایسنس منتشر کرده یا روی کاغذ پرینت کنید. در‌ واقع، به هر شکلی که بخواهید می‌توانید پروژه‌های دارای لایسنس GPL را توزیع کنید. می‌توانید با این مجوز از مخاطب در قبال ارائه نرم‌ افزار به او هزینه دریافت کنید ولی به خاطر داشته باشید که باید یک کپی از GNU GPL را نیز ارائه کنید که به آن‌ها می‌گوید می‌توانند نرم‌ افزار را از جای دیگر بدون هزینه دریافت کنند (در کنار این کار، همچنین می‌توانید دلیلی که به خاطر آن از مخاطب هزینه دریافت می‌کنید را نیز بیان کنید) اگر بخواهید تغییراتی در پروژه ایجاد کنید (اصطلاحاً آن را Fork کنید)، این امکان برای شما وجو دارد؛ به عبارت دیگر، ویژگی‌هایی که می‌خواهید را حذف و اضافه کنید اما تنها به‌ شرطی که شما هم پروژه‌ٔ خود را تحت مجوز GNU GPL ارائه کنید (همچنین این نکته اهمیت دارد که باید تفاوت بین سورس‌ کد پروژه و توزیع باینری آن را بدانید؛ به این دلیل که محدودیت‌هایی در رابطه با هر کدام وجود دارد. همچنین، اگر پروژه‌ای از GNU GPL استفاده می‌کند، باید با برخی قوانین استاندارد دربارهٔ کامنت‌ گذاری بخش‌های مختلف این مجوز درون سورس‌ کد نیز مطابقت داشته باشد. مجوز GNU LESSER GENERAL PUBLIC LICENSE این لایسنس حقوق کمتری را برای استفاده در مقایسه با GNU GPL نیاز دارد و معمولاً در لایبرری‌ها و پروژه‌هایی استفاده می‌شود که قصد دارند اجازهٔ لینک شدن آن‌ها را به نرم‌ افزارهای بدون مجوز GPL و با سورس‌ کد بسته نیز بدهند. در مورد مجوز GPL، هر پروژه و سورس‌ کدی که در پروژه‌ی تحت GPL عرضه می‌شود، خود نیز باید GPL باشد و کدهای تحت GPL نمی‌تواند در پروژه‌های اختصاصی مورد استفاده قرار بگیرند. LGPL این مورد را نادیده گرفته و نیاز به مجوز مشابه را برای استفاده از کدهای دارای LGPL از بین می‌برد (به عبارت دیگر، نسبت به GPL آزادی بیشتری در اختیار توسعه دهندگان قرار می‌دهد). نمونه‌ی مجوز <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. مجوز MIT LICENSE این مجوز، کوتاه‌ترین و احتمالاً پراستفاده‌ترین مورد بین تمامی لایسنس‌های متن باز است زیرا شرایط آن آسان است و به‌ اصطلاح از مجوزهای دیگر راحت‌تر عمل می‌کند. اگر بخواهیم ماهیت اصلی این لایسنس را شرح دهیم، بایستی بگوییم که به وسیله این مجوز، اجازه استفاده بدون هزینه به هر شخصی که یک کپی از سورس‌ کد یا نرم‌ افزار و مستندات مربوط به آن را دریافت کرده، داده می‌شود تا در آن نرم‌ افزار بدون هیچ‌گونه محدودیتی تغییرات خود را اِعمال کند که شامل استفاده بدون محدودیت، کپی، تغییر، ترکیب، انتشار، توزیع، استفاده بخشی از مجوز یا فروش کپی‌هایی از نرم‌افزار می‌شود و به افرادی که این نرم‌ افزار برای آن‌ها تهیه شده نیز در این موارد اجازه داده می‌شود به شرطی که ملاحظاتی که در بالا به آن‌ها اشاره شد و همچنین معرفی این لایسنس را در تمامی کپی‌ها یا بخش‌های مهم این نرم‌ افزار در معرض دید کاربران قرار دهند. با این مجوز در واقع اجازه استفاده، کپی و تغییر در نرم‌ افزار را هر طوری که تمایل دارید خواهید داشت؛ هیچ کسی نمی‌تواند شما را از بکارگیری آن در پروژه‌های دیگر منع کند و می‌توانید نرم‌ افزار را تحت این مجوز به صورت رایگان یا از طریق فروش آن عرضه کنید. هیچ شرطی برای این توزیع به هیچ طریقی وجود نخواهد داشت و هر کسی می‌تواند هر تغییری را که می‌خواهد در کدهای تحت لیسانس MIT انجام دهد (البته مادامی که مجددا تحت این مجوز عرضه شوند). نمونه‌ی مجوز The MIT License (MIT) Copyright (c) <year> <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. مجوز Mozilla Public License مجوز همگانی موزیلا (Mozilla Public License) یک مجوز نرم‌ افزار آزاد مفصل است که توسط بنیاد موزیلا نوشته و نگهداری می‌شود. از این مجوز به عنوان مجوزی که هم ویژگی‌های مجوز تغییر یافته BSD و هم ویژگی‌های مجوز GPL را دارد، یاد می‌شود که سعی دارد مشکلات و نگرانی‌های توسعه‌ دهندگان نرم‌ افزار آزاد و نرم‌افزار انحصاری را تعادل بخشد. این مجوز دو بار مورد بازبینی قرار گرفته‌ است و در نسخه آخر آن یعنی نسخه ۲.۰، سعی شده تا سادگی مجوز حفظ شود و سازگاری بهتری با دیگر مجوزها داشته باشد. این مجوز که به اختصار به MPL هم گفته می‌شود، مجوزی است که در موزیلا فایرفاکس، موزیلا تاندربرد و بقیه نرم‌ افزارهای بنیاد موزیلا مورد استفاده قرار می‌گیرد اما اخیراً دیگران هم به استفاده از این مجوز روی آورده‌اند، همانند شرکت Adobe که از این مجوز برای نرم‌ افزار ادوبی فلکس استفاده کرده و همچنین لیبره‌آفیس که از این مجوز به همراه LGPL (نسخه ۳) استفاده می‌کند. شرکت‌هایی مانند سان مایکروسیستمز هم از نسخه ۱.۱ این مجوز برای نوشتن یک مجوز ترکیبی مثل مجوز توسعه و توزیع مشترک استفاده کرده‌اند. نمونه‌ی مجوز /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at https://mozilla.org/MPL/2.0/. <!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at https://mozilla.org/MPL/2.0/. --> This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. مجوز CREATIVE COMMONS مجوز Creative Commons که به اختصار CC گفته‌ می‌شود، خیلی هم اپن‌ سورس نبوده و به صورت معمول در پروژه‌های مربوط به طراحی استفاده می‌شود. انواع مختلفی از این نوع لایسنس وجود دارد که هر کدام برای موارد خاصی ایجاد شده که حق و حقوق معینی را اعطا می‌کنند، به طوری که یک مجوز CC دارای چهار بخش اساسی است که عبارت است از: اعتباربخشی: نویسنده (مؤسس) باید به عنوان خالق اثر نام برده شود؛ سپس می‌توان آن را تغییر داد، توزیع کرد، کپی نمود و به صورت دیگری استفاده کرد. انتشار تحت مجوز کریتیو کامانز: می‌توان اثر را تغییر داد و توزیع کرد ولی تنها تحت مجوز CC. غیرتجاری: یک اثر تحت این مجوز می‌تواند تغییر داده شود یا توزیع شود ولی نه برای اهداف تجاری (البته عبارت Commercial به‌ معنی «تجاری» کمی مبهم است و هیچ تعریف مشخصی از آن ارائه نشده است) ممنوعیت اعمال تغییرات: می‌توان اثر دارای چنین مجوزی را کپی کرده یا توزیع کرد، اما نمی‌توانید آن را به هیچ صورت تغییر دهید یا اثری را براساس طرح اصلی ایجاد کنید. به خاطر داشته باشید که این‌ها قوانین الزامی موجود در همه مجوزهای مبتنی بر CC نیستند؛ برخی از مجوزهای CC ممکن است این شرط‌ها را نداشته باشند، چرا که برخی از این شرط‌ها دو به دو ناسازگار هستند و برخی می‌توانند براساس نیاز با هم ترکیب شوند. نمونه‌ی مجوز <WORK'S NAME> (c) by <AUTHOR'S NAME> <WORK'S NAME> is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. You should have received a copy of the license along with this work. If not, see <http://creativecommons.org/licenses/by-sa/3.0/>.
  21. قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای قانون دیگر قانون حمایت از حقوق پدیدآورندگان نرم‌افزارهای رایانه‌ای مصوب ۱۳۷۹ است. همان‌طور که از نام این قانون مشخص است، در این قانون حقوق مادی و معنوی پدیدآورندگان نرم‌افزارهای رایانه‌ای شرح داده می‌شود. مطابق ماده‌ی ۱ این قانون، «حق نشر، عرضه، اجرا و حق بهره‌برداری مادی و معنوی از نرم‌افزارهای رایانه‌ای متعلق به پدیدآورنده‌ی آن است. نحوه‌ی تدوین و ارائه‌ی داده‌ها در محیط قابل پردازش رایانه‌ای نیز مشمول احکام نرم‌افزار خواهد بود.» مطابق مطابق ماده‌ی ۳ این قانون، نام، عنوان و نشان ویژه‌ای که معرف نرم‌افزار است از حمایت این قانون برخوردار است و هیچ‌کس نمی‌تواند آنها را برای نرم‌افزار دیگری از همان نوع یا مانند آن به نحوی که القای شبهه نماید، استفاده کند. در ماده‌ی ۱۳ قانون به‌طور کلی ضمانت اجرای نقض حقوق مورد حمایت این قانون، علاوه بر جبران خسارت متضرر، حبس از نود و یک روز تا شش ماه و جزای نقدی از ده میلیون تا پنجاه میلیون ریال بیان شده است. همچنین مطابق ماده‌ی ۱۵ این قانون، جرایم مربوط به نقض حقوق مورد حمایت این قانون، از جرایم قابل گذشت است. ‌ماده ۱ - حق نشر، عرضه، اجرا و حق بهره برداری مادی و معنوی نرم افزار رایانه‌ای متعلق به پدید آورنده آن است. نحوه تدوین و ارائه داده‌ها در‌محیط قابل پردازشرایانه‌ای نیز مشمول احکام نرم‌افزار خواهد بود. مدت حقوق مادی سی (۳۰) سال از تاریخ پدید آوردن نرم‌افزار و مدت حقوق‌معنوی نامحدود است. ماده ۲ - در صورت وجود شرایط مقرر در قانون ثبت علایم و اختراعات، نرم‌افزار به عنوان اختراع شناخته می‌شود، آئین‌نامه مربوط به این ماده به‌تصویب هیأت وزیرا نخواهد رسید. ‌ماده ۳ - نام، عنوان و نشانه ویژه‌ای که معرف نرم افزار است از حمایت این قانونبرخوردار است و هیچ کس نمی‌تواند آنها را برای نرم افزار دیگری‌ از همان نوع یامانند آن به ترتیبی که القای شبهه کند بکار برد در غیر این صورت به مجازات مقرر در ماده (۱۳) این قانون محکوم خواهد شد. ‌ماده ۴ - حقوق ناشی از آن بخش از نرم‌افزاری که به واسطه نرم‌افزارهای دیگر پدیدمی‌آید متعلق به دارنده حقوق نرم‌افزارهای واسط نیست.‌ ماده ۵ - پدید آوردن نرم‌افزارهای مکمل و سازگار با دیگر نرم‌افزارها با رعایتحقوق مادی نرم‌افزارهای اولیه مجاز است.‌ ماده ۶ - پدید آوردن نرم‌افزارها ممکن است ناشی از استخدام و یا قرارداد باشد دراین صورت: ‌الف - باید نام پدید آورنده توسط متقاضی ثبت به مراجع یاد شده در این قانون بهمنظور صدور گواهی ثبت، اعلام شود. ب - اگر هدف از استخدام یا انعقاد قرارداد، پدید آوردن نرم‌افزار مورد نظر بوده ویا پدید آوردن آن جزء موضوع قرارداد باشد، حقوق مادی مربوط‌و حق تغییر و توسعه نرم‌افزار متعلق به استخدام کننده یا کارفرما است، مگر اینکه در قرارداد به صورتدیگری پیش بینی شده باشد. ‌ماده ۷ - تهیه نسخه‌های پشتیبان و همچنین تکثیر نرم‌افزاری که به طریق مجاز برایاستفاده شخصی تهیه شده است چنانچه به طور همزمان مورد‌استفاده قرار نگیرد، بلامانعاست.‌ ماده ۸ - ثبت نرم‌افزارهای موضوع مواد (۱) و (۲) این قانون پس از صدور تأییدیه فنی توسط شورای عالی انفورماتیک حسب مورد توسط وزارت‌فرهنگ و ارشاد اسلامی و یامرجع ثبت شرکتها انجام می‌پذیرد.‌ ماده ۹ - دعوای نقض حقوق مورد حمایت این قانون ، در صورتی در مراجع قضایی مسموعاست که پیش از اقامه دعوی ، تأییدیه فنی یاد شده در‌ماده (۸) این قانون صادر شده باشد. در مورد حق اختراع ، علاوه بر تأییدیه مزبور ، تقاضای ثبت نیز باید به مرجعذی ربط تسلیم شده باشد.‌ ماده ۱۰ - برای صدور تأییدیه فنی موضوع ماده (۸) در مورد نرم افزارهایی که پدیدآورنده آن مدعی اختراع بودن آن است، کمیته‌ای به نام "‌کمیته‌حق اختراع" زیر نظرشورای عالی انفورماتیک تشکیل می‌شود. اعضای این کمیته مرکب از سه کارشناس ارشدنرم‌افزار به عنوان نمایندگان شورای عالی‌انفورماتیک، نماینده سازمان ثبت اسناد واملاک کشور و یک کارشناس حقوقی به انتخاب شورای عالی انفورماتیک خواهد بود.‌ ماده ۱۱ - شورا مکلف است از صدور تأییدیه فنی برای نرم‌افزارهایی که به تشخیصوزارت فرهنگ و ارشاد اسلامی خلاف اخلاق اسلامی و‌عفت عمومی و سلامت شخصیت کودکان ونوجوانان باشند خودداری کند. وزارت فرهنگ و ارشاد اسلامی باید ظرف دو هفته راجع به استعلام کتبی‌شورای عالی انفورماتیک اعلام نظر کند.‌ ماده ۱۲ - به منظور حمایت عملی از حقوق یاد شده در این قانون‌، نظم بخشی وساماندهی فعالیت‌های تجاری رایانه‌ای مجاز، نظام صنفی رایانه‌ای‌توسط اعضای صنف یادشده تحت نظارت شورا به وجود خواهد آمد. مجازات‌های مربوط به تخلفات صنفی مربوط،برابر مجازات‌های جرایم یاد شده در‌ لایحه قانونی امور صنفی - مصوب 1359.4.13 واصلاحیه‌های آن - خواهد بود.‌ ماده ۱۳ - هرکس حقوق مورد حمایت این قانون را نقض نماید علاوه بر جبران خسارت بهحبس از نود و یک روز تا شش ماه و جزای نقدی از ده‌ میلیون (۱۰،۰۰۰،۰۰۰) تا پنجاه میلیون (۵۰،۰۰۰،۰۰۰) ریال محکوم می‌گردد.‌ تبصره - خسارات شاکی خصوصی از اموال شخص مرتکب جرم جبران می‌شود.‌ ماده ۱۴ - شاکی خصوصی می‌تواند تقاضا کند مفاد حکم دادگاه در یکی از روزنامه‌ها با انتخاب و هزینه او آگهی شود.‌ ماده ۱۵ - رسیدگی جرم مذکور در ماده (۱۳) با شکایت شاکی خصوصی آغاز و باگذشت او موقوف می‌شود.‌ ماده ۱۶ - حقوق مذکور در ماده (۱) در صورتی مورد حمایت این قانون خواهد بود که موضوع برای نخستین بار در ایران تولید و توزیع شده باشد.‌ ماده ۱۷ - آیین‌نامه اجرایی این قانون شامل مواردی از قبیل چگونگی صدور گواهی ثبت و تأییدیه فنی و هزینه‌های مربوط همچنین نحوه تشکیل‌ نظام صنفی رایانه‌ای، به پیشنهاد سازمان مدیریت و برنامه‌ریزی کشور و با هماهنگی وزارتخانه‌های فرهنگ وارشاد اسلامی و دادگستری به تصویب‌ هیأت وزیران خواهد رسید.‌قانون فوق مشتمل بر هفده ماده و یک تبصره در جلسه علنی روز یکشنبه مورخ چهارم دی‌ماه یک هزار و سیصد و هفتاد و نه مجلس شورای اسلامی‌تصویب و در تاریخ ۱۳۷۹/۱۰/۱۰ به تأیید شورای نگهبان رسیده است. تاریخ تصویب : ۱۳۷۹/۱۰/۰۴ مرجع تصویب : مصوبات مجلس شورا ماده ۱۷ بند ۲ منابع و اسناد رسمی مرکز پژوهش‌های مجلس شورای اسلامی ویکی‌پدیا
  22. کامبیز اسدزاده

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

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

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

    در دنیای مدرن برنامه‌نویسی امروز همانند دیگر کسب‌و‌کار‌ها در حوزه‌های مختلف، برنامه‌نویسی و توسعه‌ی نرم‌افزار دارای قوانین و چهارچوب‌های تقریباً مشخصی است که توسعه‌دهندگان حقوقی و حقیقی باید در باره‌ی آن‌ها بدانند تا در میدان دردسرهای پیش‌بینی‌نشده و ناخواسته سقوط نکنند. در این مقاله به انواع مجوز‌ها و همچنین قوانین حاکم بر آن‌ها اشاره می‌شود که شما را دعوت به مطالعه‌ی آن می‌کنیم. در بسیاری از مواقع، نوشتن یک برنامه‌ی کاربردی، بدون استفاده از انوع کتابخانه‌های از قبل نوشته شده (کد‌هایی که دیگران نوشته‌اند)، تقریباً غیرممکن است. مهم‌ترین چیزی که پیش از دست زدن به کدها و تصاویر آماده‌ی گرافیکی، یا استفاده از کتابخانه‌ها باید بررسی کنید، مجوز، یا به‌ اصطلاح (لایسنسی) است که اثر را تحت آن توزیع کرده‌اند. برای اطلاع از آن، معمولاً باید به دنبال فایلی با نام 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
  24. پس از انتشار مقاله اختصاصی 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 نانومتری کاهش یافته است.
  25. کامبیز اسدزاده

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