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

ابزار‌ها

  • نوشته‌
    18
  • دیدگاه
    3
  • مشاهده
    6,965

مشارکت‌کنندگان این وبلاگ

درباره این وبلاگ

نوشته‌های این وبلاگ

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

یکی از مهمترین و پر‌مخاطب‌ترین سوألاتی که در مورد فریم‌ورک کیوت پرسیده می‌شود، شرایط استفاده و مجوز‌های مربوط به آن است؛ از آنجایی که این کتابخانه تحت پشتیبانی یک شرکت تجاری است، برخی از شرایط و قوائدی وضع شده است که در استفاده از آن باید دقت لازم را داشت. در این مقاله من قصد دارم به توضیحات و شفاف‌سازی کامل در این خصوص بپردازم که امیدوارم از آن بهره‌مند شده و به اشتراک بگذارید.

qtlicense.jpg

بررسی مجوز‌های جامع Qt

ابزار Qt، یک چهارچوب قدرتمند برنامه‌نویسی چندسکویی است که انواع مختلفی از مجوزها را ارائه می‌دهد تا به نیازهای متنوع کاربران خود پاسخ دهد. با توجه به تاریخچهٔ غنی‌ای که به آغاز توسعهٔ آن باز می‌گردد، Qt به تدریج به یکی از اصلی‌ترین بازیگران در زمینه توسعه نرم‌افزار تبدیل شده است که در این مقاله به آن اشاره می‌کنیم.

Qt تحت چندین گزینه مجوز مختلف قرار دارد که برای توسعه نرم‌افزارهای مختلف مناسب هستند که به صورت زیر تعریف شده‌اند.

  1. مجوز تجاری Qt
    • فریم‌ورک کیوت، زیر مجوزهای تجاری مناسبی را برای توسعه نرم‌افزارهای تجاری فراهم کرده است که کاربران نمی‌خواهند کد منبع خود را با دیگران به اشتراک بگذارند یا نمی‌توانند با شرایط نسخه 3 مجوز GNU LGPL (GNU Lesser General Public License) سازگاری یابند.
  2. مجوز LGPL Qt
  3. مجوز بازار Qt (Qt Marketplace)
  • اجزای Qt تحت توافق‌نامه مجوز بازار Qt مناسب برای توسعه نرم‌افزارهای Qt هستند، معمولاً با شرایط مجوز تجاری یا GNU LGPL (یا GNU GPL نسخه 3) برنامه‌ریزی می‌شوند.

استفاده از کد، از طریق مجوزهای متن‌باز

فریم‌ورک Qt شامل کدهای شخص ثالثی است که تحت مجوزهای خاص متن‌باز از نویسندگان اصلی مجوزدهی شده‌اند.

نقل قول

توجه: برخی از اجزاء (ماژول‌ها) در Qt که تحت مجوز GNU LGPL نسخه 3 موجود نیستند، بلکه تحت مجوز GNU GPL (GNU General Public License) قرار دارند. برای اطلاعات بیشتر، لیست ماژول‌های Qt را مشاهده کنید.

برخی از سوأل و پرسش‌های جامعه و تیم کیوت در رابطه با مجوز‌ها و اهداف آن‌ها در توسعه

چرا Qt همچنین زیر مجوز نرم‌افزار متن باز نیز منتشر می‌شود؟

ما به جنبش نرم‌افزار آزاد اعتقاد داریم که استفاده از نرم‌افزار با حقوق وظایف خاصی همراه است. استفاده از مجوزهای نرم‌افزار متن باز، به کاربران چهار درجه اصلی از آزادی را در استفاده از برنامه‌ها یا دستگاه‌های Qt می‌دهد:

  1. آزادی اجرای برنامه برای هر هدفی.
  2. آزادی مطالعه نحوه عمل برنامه و سازگارسازی آن با نیازهای خاص.
  3. آزادی توزیع نسخه‌های کپی شده تا بتوانید به همسایه خود کمک کنید.
  4. آزادی بهبود برنامه و انتشار بهبود‌های خود به عموم، تا کل جامعه بهره‌مند شود.

این آزادی‌ها غیرقابل مذاکره و مطلق هستند، نمی‌توان آنها را به صورت انتخابی یا جزئی تجربه کرد، شما همچنین موظف به انتقال آنها به کاربران خود هستید.

نقل قول

جامعه نرم‌افزار آزاد به دلیل این قوانین به رشد پیشرفت کرده است، اما همچنین توسعه‌دهندگانی وجود دارند که هرگز نقشه ندارند یا نمی‌توانند این قوانین را رعایت کنند و بنابراین باید مجوز تجاری بگیرند. شرکت Qt برای حمایت از هر دو گروه با ارائه مجوزهای دوگانه وجود دارد.

چرا شما توافقی با KDE در مورد مجوزهای خود دارید؟ KDE چیست و تاریخچهٔ Qt و KDE چگونه است؟

توافق بین Qt و KDE دربارهٔ مجوزها، ریشه در تاریخچهٔ مشترک این دو نهاد دارد. KDE (kde.org) مخفف محیط کاری دسکتاپ (Desktop Environment) است که یک جامعهٔ بین‌المللی نرم‌افزار آزاد است و در سال ۱۹۹۶ تأسیس شد. KDE به خاطر محیط کاری Plasma Desktop شناخته می‌شود که به عنوان محیط کاری پیش‌فرض در بسیاری از توزیع‌های لینوکس به کار می‌رود. نرم‌افزارهای KDE بر پایهٔ چارچوب Qt ساخته می‌شوند. در اوایل توسعهٔ Qt، این چارچوب از یک مدل مجوز دوگانه برخوردار بود و کد منبع آن تحت مجوزهای متن باز اختصاصی قابل دسترس بود. با درک اهمیت Qt برای پروژه‌های خود، KDE تلاش کرد تا توافقاتی برای اطمینان از دسترسی به Qt تحت مجوزهای مناسب متن باز، حتی اگر Trolltech (شرکت بنیان‌گذار Qt) به تصرف بشود یا ورشکست شود، به دست آورد. نتیجهٔ این تفاهم، بنیاد آزاد KDE Qt (KDE Free Qt Foundation) تأسیس شد و توافق‌نامه بنیاد آزاد KDE Qt ایجاد شد.

بنیاد آزاد KDE Qt یک سازمان با هدف ایمن کردن دسترسی به چارچوب Qt برای توسعهٔ نرم‌افزارهای آزاد و به‌ویژه برای توسعهٔ نرم‌افزارهای KDE است. این بنیاد در ابتدا توسط Trolltech و سازمان غیرانتفاعی حقوقی KDE (KDE e.V.) در سال ۱۹۹۸ تأسیس شد و یک توافق‌نامهٔ مجوز دارد که تأمین می‌کند که Qt برای پلتفرم‌های اصلی دسکتاپ و موبایل تحت مجوزهای LGPLv3 و GPLv3 در دسترس است. این توافق‌نامه در طی سال‌ها چندین بار به‌روزرسانی شده است، عمدتاً به دلیل انجام معاملات مرتبط با Qt یا به‌روزرسانی مجوزها و پلتفرم‌ها.

 

عدم رعایت محدودیت‌های مجوزهای LGPL/GPL چه تبعاتی دارد؟

اگر نرم‌افزاری که از این کتابخانه‌های مجوز متن‌باز استفاده می‌کند، به طور کامل الزامات مجوز را رعایت نکند، شما حق استفادهٔ مجوز و حقوق توزیع مرتبط با آن را از دست خواهید داد. همچنین لازم به ذکر است که در بیشتر کشورها، نقض حقوق نسخهٔ پدیدآورندگان یک نقض تشریعی است، نه نقض قرارداد، و بنابراین تدابیر تشریعی مرتبط با این موضوع اعمال می‌شود. برای کسب اطلاعات بیشتر در مورد GPL، می‌توانید به صفحه FAQ GPL از لینک آن مراجعه کنید.

 

آیا می‌توانم از نسخهٔ متن باز جوامع برای توسعه محصول تجاری خود استفاده کنم؟

این بستگی به نحوهٔ ارائه و ارائهٔ محصول شما دارد. نسخهٔ متن باز Qt اصلی به طور عمده تحت مجوز LGPL نسخه 3 و GPLv2/v3 منتشر می‌شود. شما باید الزامات مجوزهای این گونه را که در زمان استفاده از Qt در محصول خود باید رعایت کنید.

 

تفاوت بین LGPLv2 و LGPLv3 چیست؟

LGPLv3 نسخه فعلی مجوز GNU Lesser General Public License است. LGPLv2.1 یک نسخه قدیمی‌تر است و برای پروژه‌های جدید توصیه نمی‌شود. هر دو مجوز همان هدف را دارند، یعنی حفاظت از آزادی کاربران برای استفاده و اصلاح نرم‌افزار تحت مجوز LGPL.

LGPLv3 این هدف را به وضوح بیان می‌کند. شما باید چیز‌هایی را برای کاربر نهایی فراهم کنید تا نسخه اصلاح شدهٔ کتابخانه تحت مجوز LGPLv3 را نصب کرده و نرم‌افزار خود را با استفاده از آن کتابخانه اصلاح شده اجرا کند. در عمل، این به عنوان مثال به موارد زیر اشاره دارد:

  • Tivoization – به وضوح اجازه ندهید دستگاه‌های بسته سازی‌شده ایجاد شود که کاربر نهایی حقوق مجوز LGPL برای کتابخانه‌های متن باز Qt را ندارد.
  • DRM و رمزگذاری سخت‌افزاری – نمی‌توان از این تعهدات برای دور زدن این تعهدات استفاده کرد.
  • انتقام از پتنت نرم‌افزار – جایی که تمام کاربران نرم‌افزار مجوزها را دارند، که این باعث بی‌معنی شدن انتقام از پتنت نرم‌افزارهایی که ممکن است در نرم‌افزار منتشر شده، می‌شود.

 

وظایف من چیستند هنگام استفاده از Qt تحت مجوز LGPL؟

در ابتدا، باید توجه داشته باشید که تمامی ماژول‌های متن باز Qt تحت مجوز LGPLv3 در دسترس نیستند. برخی از ماژول‌ها برای استفاده در نرم‌افزارهای متن باز تحت GPLv3 قرار دارند و برخی از اجزاء توسعه‌یافته توسط شخص ثالث مانند موتور وب Chromium تحت مجوز LGPLv2.1 در دسترس قرار گرفته‌اند.

زمانی که از ماژول‌ها و کتابخانه‌های Qt تحت مجوز LGPLv3 استفاده می‌کنید، برخی از وظایفی که باید رعایت کنید به شرح زیر است:

  1. هنگام استفاده از نرم‌افزار متن باز، باید از مجوز هر نمونه، قطعه کد منبع، ماژول و کتابخانه‌ای که در پروژه خود استفاده می‌کنید، آگاه باشید و مجوزهای مرتبط را ردیابی کنید.
  2. باید کد منبع کامل کتابخانه‌های Qt که استفاده کرده‌اید را به همراه تمام اصلاحات اعمال شده یا اعمال شده، به کاربران یا مشتریان خود ارائه دهید. به عنوان یک گزینه دیگر، می‌توانید پیشنهاد نامه‌ای با دستورالعمل‌هایی در مورد چگونگی دریافت کد منبع ارائه دهید. لطفاً توجه داشته باشید که این باید تحت کنترل شما باشد، بنابراین ارائه یک لینک به کد منبع ارائه‌شده توسط پروژه Qt یا شرکت Qt کافی نیست.
  3. مجوز LGPL به شما این امکان را می‌دهد که کد منبع خود نرم‌افزار را به عنوان «کاری که از کتابخانه استفاده می‌کند» خصوصی نگه‌دارید. به طور معمول، در اینجا پیشنهاد می‌شود که از اتصال پویا استفاده کنید (برای کامپایل استاتیک این مورد مجاز نیست و نیاز به تهیهٔ مجوز دارد).
  4. کاربر نهایی باید قادر باشد نرم‌افزار شما را با یک نسخه مختلف یا اصلاح‌شده از کتابخانه Qt مجدداً لینک کند. با LGPLv3، به وضوح ذکر شده است که کاربر باید قادر باشد باینری مجدداً لینک‌شده را بر روی دستگاه هدف خود اجرا کند. این وظیفه به شما محول است که کاربر را با همه ابزارهای لازم برای فعال کردن این فرآیند تجهیز کنید. برای دستگاه‌های جاسازی‌شده، این شامل فراهم‌کردن تمام ابزارهایی است که برای کامپایل کتابخانه استفاده‌شده به کاربران مورد نیاز است. برای اجزاء مجوزده LGPLv3، شما موظف به ارائه دستورالعمل‌های کامل در مورد نصب کتابخانه اصلاح‌شده بر روی دستگاه هدف هستید (این با LGPLv2.1 به طور واضح بیان نشده است، اگرچه اجرای برنامه در برابر نسخهٔ اصلاح شدهٔ کتابخانه با هدف اعلام شده در مجوز است).
  5. کاربری که از یک برنامه یا دستگاه که از نرم‌افزار متن باز تحت مجوز LGPL استفاده می‌کند، باید از حقوق خود مطلع شود، با ارائه یک نسخه از مجوز LGPL به کاربر نهایی و نمایش اعلان مشهور در مورد استفاده‌ شما از نرم‌افزار متن باز باید اعلام شود.
  6. این آزادی‌ها به هیچ وجه توسط شرایط دیگر مجوز گزینشی نمی‌توانند محدود شوند؛ اگر یک برنامه به کلی از تمام وظایفی که در بالا ذکر شده است پیروی نکند، اجازه توزیع آن به هیچ وجه داده نمی‌شود.
  7. همچنین باید اطمینان حاصل کنید که از هیچ ماژولی که تحت مجوز GPL استفاده نمی‌کنید.

 

آیا نیاز است که از مجوز LGPL هنگام استفاده از نسخهٔ تجاری Qt نگران باشم؟

به طور معمول، خیر. هنگام استفاده از نسخهٔ تجاری مجوزگذاری شده Qt، ما تقریباً تمامی بخش‌ها را تحت شرایط یک مجوز تجاری ارائه می‌دهیم.

هرچند، چندین ماژول در Qt از کد منبع پروژه‌های متن باز شخص ثالث مانند Qt WebEngine استفاده می‌کنند که از پروژه Chromium با مجوز LGPLv2.1 استفاده می‌کند. بنابراین، هنگام استفاده از این ماژول‌ها، شما باید از تعهدات مجوز مرتبط رعایت کنید، در مورد Chromium این موضوع به مجوز LGPLv2.1 اشاره دارد.

تمامی ماژول‌ها و وابستگی‌های شخص ثالثی که توسط ماژول‌های مختلف Qt استفاده می‌شوند، در مستندات Qt برای هر نسخه از Qt مستند شده‌اند.

به عنوان یک کاربر مجوز تجاری، در عمل، تنها نیاز دارید که به تعهدات مجوز LGPLv2.1 اهمیت بدهید، و تنها اگر از Qt WebEngine استفاده کنید.

 

چه کاری باید انجام دهم؟

مطمئن نیستم که مطابق مجوزهای متن باز هستم؟ از مجوزهای متن باز گیج شده‌ام، چه باید انجام دهم؟

همیشه خوشحال هستیم که با شما درباره وضعیتتان صحبت کنیم، اما ما در جایی نیستیم که مشاوره حقوقی ارائه دهیم. همیشه توصیه می‌شود با یک وکیل که با مجوزهای متن باز آشنا است، تماس بگیرید تا یک بررسی کامل از پروژه شما صورت گیرد و تصمیم گیری شود که آیا شما می‌توانید تمامی تعهدات مجوزهای متن باز مربوطه (مانند LGPLv/GPLv) را انجام دهید یا خیر.

 

مجوز تجاری Qt چگونه کار می کند؟ آیا همه توسعه دهندگان من باید مجوز معتبر Qt داشته باشند؟

در رابطه با مجوز‌های تجاری، هر کاربر Qt باید مجوز تجاری Qt مختص خود را داشته باشد. طراحان رابط کاربری، هنرمندان فنی، توسعه‌دهندگان نرم‌افزار یا مهندسان اتوماسیون تست ممکن است انواع مختلفی از مجوزهای Qt داشته باشند، اما هر فرد باید یک مجوز اشتراک معتبر داشته باشد.

 

آیا می‌توانم کد نوشته‌شده با Qt متن باز را با Qt تجاری مجوزگذاری شده ترکیب کنم؟

خیر.

اگر می‌خواهید از Qt متن باز به یک مجوز تجاری مهاجرت کنید، لطفاً با فروشگاه Qt تماس بگیرید.

برای این سوال، موارد بیشتری نیز در لینک FAQ مجوزگذاری تجاری Qt وجود دارد.

 

آیا امکان توزیع برنامه‌های توسعه یافته با نسخهٔ متن باز Qt از طریق فروشگاه‌های عمومی وجود دارد؟

هر فروشگاه اپلیکیشن شرایط و مقررات منحصر به فردی دارد که ممکن است با توزیع برنامه‌ها تحت مجوزهای LGPL یا GPL سازگار یا سازگار نباشد.

مجوز تجاری Qt با شرایط و مقررات تمامی فروشگاه‌های اپلیکیشن معتبر سازگار است و بنابراین معمولاً بهترین گزینه برای توزیع یک برنامه به صورت منبع بسته در فروشگاه‌های مختلف است.

 

من شروع به توسعه یک محصول با استفاده از نسخهٔ متن باز Qt کرده‌ام، حالا می‌توانم یک نسخهٔ تجاری از Qt خریداری کرده و کدم را تحت آن مجوز قرار دهم؟

بله. پروژه‌های توزیع‌شده تحت نسخهٔ تجاری Qt نیز باید تحت نسخهٔ تجاری Qt توسعه یابند.

اگر قبلاً توسعه را با نسخهٔ متن باز Qt شروع کرده‌اید، ما به همکاری برای یافتن یک راه‌حل برای انتقال پایه کد شما از حاکمیت متن باز به مجوز تجاری می‌پردازیم.

اگر از ابتدا مطمئن نیستید که از کدام مجوز یا نسخه برای شروع توسعه استفاده کنید، توصیه می‌شود با The Qt Company تماس بگیرید تا بر اساس نیازهای توسعه‌ی خود شما راهنمایی شود.

 

ممکن است در یک برنامه از کتابخانه‌های دارای مجوز LGPLv2.1 و LGPLv3 استفاده کرد؟

بله، امکان استفاده از هر دو نسخهٔ مجوز LGPLv2.1 و LGPLv3 در یک برنامه وجود دارد، به عنوان مثال با استفاده از آن‌ها به عنوان کتابخانه‌های جداگانه به عنوان shared libraries. انجام این کار نیاز به تغییر مجوز در هیچ یک از کتابخانه‌ها ندارد و در صورت نیاز، امکان انتخاب یک مجوز مولد برای برنامه وجود دارد.

 

ماتریس سازگاری GNU نشان می‌دهد که من نمی‌توانم LGPLv2 و LGPLv3 را ترکیب کنم؟

اگر کد LGPLv2.1 و کد LGPLv3 در کتابخانه‌های جداگانه به عنوان shared libraries قرار داده شوند، می‌توانند در یک برنامه استفاده شوند، و شما می‌توانید برنامه خود را با یک مجوز مالکیتی / LGPLv2.1 / LGPLv3 به دلخواه خود مجوزگذاری کنید.

 

در مورد نسخهٔ مجوز LGPL/GPL که شما استفاده می‌کنید، چه کسانی مهم هستند؟

شما، مشتریان شما و کاربران نهایی، مگر اینکه از Qt تحت یک مجوز تجاری استفاده کنید. مجوزهای copyleft مانند LGPL و GPL به این معناست که مجوز با محصول شما به مشتریان و کاربران یا راه‌حل شما همراه می‌شود.

 

با توجه به تمامی توضیحات موجود، به طور خلاصه چه زمانی نیاز به تهیهٔ مجوز‌های کیوت داریم؟

تهیهٔ مجوز کتابخانه Qt بستگی به نوع کاربرد و نیازهای پروژه دارد. جوانب مختلفی که تعیین می‌کنند چه زمانی نیاز به مجوز Qt داریم و چه مواردی ممکن است بدون نیاز به مجوز باشند.

  1. استفادهٔ شخصی:
    • نیاز به مجوز: اگر برنامه‌نویس قصد استفاده از Qt را برای توسعهٔ پروژهٔ شخصی و خصوصی دارد بدون انتشار کد منبع، نیاز به مجوز ندارد. در این حالت، می‌توان از Qt به صورت رایگان استفاده کرد.
    • بدون نیاز به مجوز: استفاده از Qt برای پروژه‌های شخصی بدون هدف انتشار کد منبع با محدودیتی همراه نخواهد بود.
  2. توسعهٔ نرم‌افزار باز (Open Source):
    • نیاز به مجوز: اگر قصد توسعهٔ یک نرم‌افزار منبع باز با Qt را دارید و می‌خواهید کد منبع خود را نیز تحت یک مجوز Open Source انتشار دهید، نیاز به مجوز GPL یا LGPL خواهید داشت.
    • بدون نیاز به مجوز: اگر نیازی به انتشار کد منبع ندارید و از Qt برای پروژه منبع باز خود استفاده می‌کنید، می‌توانید از نسخهٔ Qt با مجوز LGPL بدون مشکل استفاده کنید.
  3. توسعهٔ نرم‌افزار تجاری (Commercial Software):
    • نیاز به مجوز: اگر قصد توسعهٔ نرم‌افزار تجاری دارید و نمی‌خواهید کد منبع خود را انتشار دهید، نیاز به مجوز تجاری Qt دارید.
    • بدون نیاز به مجوز: اگر از Qt برای توسعهٔ یک نرم‌افزار تجاری استفاده می‌کنید و توافق به اشتراک‌گذاری کد منبع ندارید، می‌توانید از نسخهٔ تجاری Qt بهره‌مند شوید.
  4. توسعهٔ نرم‌افزار تحت LGPL:
    • نیاز به مجوز: اگر می‌خواهید نرم‌افزار تجاری توسعه دهید، اما نیاز به استفاده از کتابخانه Qt دارید و می‌خواهید تغییرات خود را در کتابخانه منتشر کنید، باید از مجوز LGPL استفاده کنید.
    • بدون نیاز به مجوز: اگر قصد استفاده از Qt را در یک نرم‌افزار تجاری با حفظ محرمانگی کد دارید، می‌توانید از مجوز تجاری Qt بهره‌مند شوید.

برخی از نکات را نیز باید در نظر بگیرید، مانند نوع کامپایل و نوع مجوز‌های قابل پذیرش در فروشگاه‌ها که عموماً همهٔ آن‌ها را توضیح دادیم به چه صورت هستند.

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

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

قبل از هر چیز بهتره مروری از به وجود اومدن این زبان‌ها رو داشته باشیم:

وقتی در دههٔ ۷۰ میلادی زبان C به وجود اومد، به عنوان یک ابزار به شدت قابل تحسین با ۱۰۰٪ آزادگی عمل معرفی شد، شما هر سیستم و هر ساختاری رو که می‌خواستی می‌تونستی باهاش بسازی! به هر حال کامپیوتر یک جهان جدیدی بود و هر چیزی در اون می‌تونست یک فرصت باشه؛ همین الآن بعد از گذشت ۵۲ سال خیلی‌ها فکر می‌کنن این زبان منسوخ شده! در حالی که طبق آخرین مستندات N3096 استاندارد C23 در  ۲ آوریل ۲۰۲۳ به صورت پیش‌نمایش منتشر شده و هنوز هم در حال توسعه و پیشرفته! یادتونه گفتم هیچ ابزار و فناوری‌ای تا زمانی که در حال توسعه باشه، غلطه که بهش بگیم منسوخ شد!


تقریباً ۳۹ سال پیش، وقتی سی‌پلاس‌پلاس به وجود اومد کاملاً ویژگی‌های C رو به ارث برد، در واقع هر چیزی که C داره، هم مشکلات و هم مزایا در ++C هم وجود داره اما خیلی فراتر از مباحثی که فکرش رو می‌کردند به یک باره توسعه‌پذیر شد. خیلی خب باید بپذیریم مشکلاتی که C داشته را هم در بعضی جاها ++C خواهد داشت، اما نه به صورت یک مانع! چون برای همشون راهکار وجود داره، هیچ چیز بی دلیل ساخته نمیشه، این رو مطمئن باش به‌روز رسانی‌ها بی دلیل نیستند.

در مورد Rust، که ۸ سال پیش وقتی به وجود اومد که حتی به ۱۰ سال هم عمر و پختگیش نمیرسه صرفاً تمرکزش به ادامهٔ مسیر‌های مشابه زبان‌های مدیریت شده بود اما در حوزه‌ها و منظور‌های متنوع‌تر که این موضوع جذابش می‌کنه. راست یک زبان سیستمی هست اما با دارا بودن خاصیت Ownership که به همراه یک سری قوانین مثل Transfer Rules و Borrowing خیال شما رو از بحث ایمنی راحت می‌کنه.

همین موضوع مسیر Rust رو با C و ++C جدا می‌کنه و قابل قیاس نیستند که در ادامه می‌گم چرا.

موضوع مدیریت خودکار حافظه
این بحث برتری حساب نمیشه چون توی سی++ مدرن ما راهکار‌های مشخصی برای مدیریت این مسائل داریم. خب یعنی چی یه ابزار داشته باشیم که بیاد امکان برنامه‌نویسی سیستمی رو بده اما مطمئن؟! قطعاً یه جای کار داره می‌لنگه! عین اینه که بگی من اینترنت دارم ولی فیلترینگ شدیدی روش هست، بله نمی‌ذاره من آزادانه و اونطور که می‌خوام پیش برم، هرجا ریسکی بود به عهدهٔ خودمه هرجا خیری بود باز به نفع خودمه. زور و فشار هیچ‌وقت موجب پیشرفت عمیق نمیشه حتی در فناوری! چون شما اختیار عمل ندارید و محبورید با محدودیت‌هایی که اعمال می‌شه پیش‌روی کنید.

ساختار مهمی که راست داره بحث موضوع Ownership یا همون مالکیت هست، این یعنی چی؟
یعنی مالک خودش شیء‌ای هست که مسئولیت مدیریت حافظهٔ اختصاص داده شده به یک شیء رو به عهده می‌گیره. در کنار این موضوع قانون انتقال یا همون Transfer می‌گه که هر شیء‌ای فقط یک مالک داره و مالکیت اون‌ها تنها می‌تونه به یک شیء دیگر منتقل بشه! این یک قانون اصلی و مهم در راست هست که برای تضمین این موضوع قانون امانت یا همون Borrowing می‌گه که اگه می‌خوای از یک شیء به عنوان مالک نهایی استفاده کنی، می‌تونی مالکیت به شکل امانت رو به شی‌ء دیگری انتقال بدی که در حالت قرضی یا موقتی ممکن هست اما اجازه نداری هرطور که دلت خواست ازش استفاده کنی.

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

  1.  شما نمی‌تونید به صورت آزاد روی مدیریت حافظه حرفی برای گفتن داشته باشید چون شما آزادی عمل ندارید. در مقابل در سی‌پلاس‌پلاس بدون هیچ محدودیتی از این موضوع بهره می‌برید.
  2.  دسترسی به لایه‌های سخت‌افزاری عمیق و پشتیبانی از abi‌های سیستم‌عامل‌ها به صورت کامل تحت راست ممکن نیست مگر اینکه به صورت اختصاصی نسبت به هر abi در اختیار شما خارج از استاندارد‌ها قرار بگیره، چیزی که در سی‌پلاس‌پلاس همه چیز به صورت استاندارد در اختیار توسعه‌دهنده قرار می‌گیره.
  3.  کتابخانه‌های استاندارد Rust قابلیت کنترل مستقیم روی ترد (نخ)‌ها رو ارائه نمی‌کنه هرچند مدعی هستن که از روش‌های crate در کامپایلر راست در زمان اجرا با استفاده از thread_priority‌ها قابل پیاده‌سازی هست اما با این حال، هیچ‌وقت در سطح فوریتی به اندازهٔ API‌های استاندارد ++C قابل استفاده نیست، حتی C هم در این حد و اندازه امکان مدیریت سخت‌افزار رو برای شما نمیده.
  4.  در صورتی که در Rust لایهٔ امنیتی رو فعال هست (چیزی که به صورت پیش‌فرض در راست فعال هست) دیگه امکان دسترسی به لایه‌های سخت‌افزاری رو از دست خواهید داد. در حالی که سی++ این امکان رو به صورت کاملاً آزاد در اختیار شما قرار میده و شما با پذیرش خطر اون اگر تسلط خوبی داشته باشید می‌تونید به بهترین شکل ممکن دسترسی نامحدود به این موضوع رو در اختیار بگیرید. شما در راست فقط حق انتخاب بر مبنای قوائد از پیش تعریف شده رو دارید، یا ایمن باش و محدود باش، یا ایمن نباش و باز هم محدود باش! این در سی++ برعکسه! شما یا باید کد ایمن بنویسی و در عین حال به بالاترین کارآیی دسترسی داشته باشی، یا باید به خاطر عدم داشتن تسلط بالا خطر‌هاش رو بپذیری که صد البته برای کاهش مسائل راهکار‌های استاندارد‌های جدید بهترین گزینست.
  5.  تمام چیزی که راست ادعا کرده کلاً بر مبنای محدودیت‌های اعمال شده هست، برای مثال شما هیچ راه استاندارد و بومی شده‌ای برای دسترسی API‌های سیستمی به شیوهٔ مستقل از سکو رو ندارید مگر مواردی چون windows-rs و مشابهش که کاملاً خارج از بحث استاندارد و به نوع سوم در دسترس توسعه‌دهنده‌ها قرار می‌گیرند و مناسب چند-سکویی واقعی نیست.
  6.  جامعهٔ پخته و اکو‌سیستم راست هیچ‌وقت به اندازهٔ زبان‌های C و ++C گسترده نیست و کتابخانه‌های استانداردِ بی‌شماری از این بابت در اختیار توسعه‌دهنده‌ها قرار نگرفته و این قابلیت مقایسه با عمق مستنداتی که طی چندین دهه برای زبان‌های دیگه موجود هست رو نداره.
  7.  راست به معنای واقعی کلمه یک زبان ایمن هست اما با فعال بودن لایهٔ ایمنی، قدرتمند نیست و زیرساخت‌های سنگین که قدرت مانور کامل روی سخت‌افزار رو به شما بده.
  8.  راست به هیچ عنوان بهینگی لازم رو به خاطر قوائد ایمنی در زمان اجرا (Run-Time) رو نداره در حالی که در ++C شما بهینگی به شدت بالایی رو برای زمان اجرا می‌تونید اعمال کنید.
  9.  در راست که مدعیه یک زبان سطح‌پایین هست، ما مفهومی به عنوان Placement new نداریم، حتی معنا هم براش نداره چون دیگه محدودیت مالکیت (Onwership) با این موضوع هم خونی نداره و چنین ادعاهایی رو راحت رد می‌کنه. 
  10. در سطوح پیشرفته، توسعه‌دهنده در ++C با استفاده از Placement new، می‌تونه یک شیء رو در یک مکان خاص از حافظه ایجاد کنه، بدون اینکه حافظه جدیدی بهش اختصاص بده! این امکان به شما اجازه میده که به طور دقیق مشخص کنید کجا باید یک شیء ایجاد بشه! چیزی که حتی در C هم به اندازهٔ ++C در مورد کنترل، سازگاری و انعطاف‌پذیری در مدیریت حافظه رو به ارائه نمی‌کنه.
  11.  و اما در مورد بحث مسائل زمان اجرا و کامپایل، بله راست به دلیل ویژگی‌هایی که داره در زمان کامپایل مشکلات قابل بروز در زمان اجرا رو کنترل می‌کنه، در مقابل استاندارد‌های جدید از سی‌پلاس‌پلاس نیز ویژگی‌هایی مثل Contracts‌ها و Concepts‌ها رو برای این منظور در نظر گرفته که اگه با استاندارد جدید آشنا نباشید طبیعتاً کد‌های شما در زمان اجرا ممکنه ایمن نباشه.

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

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

در سالی که گذشت (۲۰۲۲)، سی‌پلاس‌پلاس محبوب‌ترین زبان برنامه‌نویسی با رشد شاخص محبوبیت ۴.۶۲٪ انتخاب شد!

جایزه زبان برنامه‌نویسی سال TIOBE به ++C تعلق گرفت! این جایزه به زبان برنامه‌نویسی تعلق می‌گیرد که بیشترین افزایش محبوبیت را در یک سال تجربه کرده است.

cpp-award.png

شاخص TIOBE میزان محبوبیت زبان‌های برنامه‌نویسی را اندازه‌گیری می‌کند. با این حال، قبل از نتیجه‌گیری، توجه به این نکته مهم است که Index (شاخص) نه چیزی در مورد کیفیت یک زبان برنامه‌نویسی می‌گوید و نه ادعا می‌کند. این رتبه‌بندی با تجزیه و تحلیل تعداد مهندسان ماهر در یک زبان خاص، تعداد دوره‌های آموزشی در آن زبان و تعداد فروشندگان شخص ثالثی که محصولات یا خدمات مرتبط با آن زبان را ارائه می‌دهند، محاسبه می‌شود. این فهرست ماهانه به‌روز می‌شود و بر اساس داده‌های موتورهای جستجوی محبوب مانند گوگل، بینگ و یاهو است. جایزهٔ زبان برنامه‌نویسی سال TIOBE در ژانویه هر سال بر اساس رتبه‌بندی سال قبل اعلام می‌شود.

سی‌پلاس‌پلاس یک زبان برنامه‌نویسی در سال ۲۰۲۲ انتخاب شد که با محبوبیت رشد ۴.۶۲ درصد و بیشترین رشد انتخاب شده است. این زبان برنامه‌نویسی سطح بالا با کارایی بالا و چندمنظوره برای توسعهٔ نرم‌افزار‌های سیستمی، برنامه‌های کاربردی و بازی‌های ویدیویی با انعطاف‌پذیری و قابلیت کنترل سطوح پایین است. این زبان در نوامبر ۲۰۲۲ جاوا را پشت‌سر گذاشت و به رتبهٔ سوم شاخص رسید و محبوبیت آن به طور پیوسته در حال افزایش است. نایب قهرمان در سال ۲۰۲۲ به ترتیب C با رشد ۳.۸۲ و پایتون با ۲.۷۸ درصد رشد بوده‌اند.

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

یک حرکت خوشحال کننده در آغاز سال ۲۰۲۱ با عنوان آزاد شدن خدمات گیت‌هاب برای کشور عزیزمان صورت گرفته است؛ ساعاتی پیش «نت فرایدمن»، مدیرعامل گیت‌هاب اعلام کرد که این شرکت مجوزی از دولت آمریکا دریافت کرده تا خدماتش را به توسعه‌دهندگان ایرانی ارائه دهد. این سرویس‌ها می‌تواند در اختیار افراد یا سازمان‌ها و به شکل رایگان یا اشتراکی قرار گیرد.

GitHub-Mark.png

به قول مدیر عامل گیت‌هاب، همهٔ توسعه‌دهنده‌ها باید در استفاده از گیت‌هاب آزاد باشند و مهم نیست که در کجا زندگی می‌کنند.

البته، با توجه به سوابق تحریمی پیشنهاد می‌شود در زمان استفاده از این خدمات، از مخازن کد‌های خودتان نسخهٔ پشتیبان تهیه کنید تا در صورت اعمال محدودیت‌ با مشکل خاصی مانند از دست دادن مخازن و یا عدم دسترسی به مخازن مواجه نشوید.

منبع خبر اصلی : https://github.blog/2021-01-05-advancing-developer-freedom-github-is-fully-available-in-iran/

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

همانطور که می‌دانید امضاء و انتشار اپلیکیشن‌های اندرویدی در قالب فایل apk به شما اجازه می‌دهد تا مستقل از فروشگاه گوگل، نرم‌افزار مورد نظر خودتان را در اختیار مشتریان خود قرار دهید؛ از طرفی ارسال آن برای فروشگاه‌های داخلی مانند کافه‌بازار نیز مراحلی را دربر دارد که یکی از آن‌ها بررسی مشکل مربوط به Google Play Protect است. با توجه به تجربیات من، خیلی از مشتری‌ها و کاربران علم کافی در توجه به پیام مربوط به آن را ندارند و نمی‌دانند با رد کردن پیغام می‌توانند نرم‌افزار را با پذیرش ریسک نصب کنند. اما این روش می‌تواند فرصتی برای کسانی باشد که به فکر سو‌ء استفاده از شرایط هستند. طبق گزارشاتی که دریافت کرده‌ایم، مشاهدهٔ پیام مربوط به عدم قابل اعتماد بودن نرم‌افزار شما و خطای نصبی بیشتر از قبل به چشم می‌خورد! برای اینکه ثابت کنید اپلیکیشن شما یک محصول قابل اعتماد است، تنها باید آن را به روش قانونیِ خودِ گوگل حل کنید که چندان سخت نیست ?

توجه داشته باشید که، این پیام در شرایط متعددی می‌تواند رخ دهد. برای مثال، شما از خدماتی که مورد نیاز نیستند به اجبار در نرم‌افزار استفاده می‌کنید. اما حتی با اعمال تنظیمات مربوطه به نظر می‌رسد زمانی که شما یک برنامهٔ جدیدی را ایجاد و برای نشر ارسال می‌کنید باید ابتدا نسخهٔ مربوطه، به بانک اطلاعاتی موجود در Google Play Protection ارسال شود و سپس برای نصب آماده شود. بنابراین، خطای مربوط به آن را به روشی که در ادامه توضیح می‌دهیم می‌توانید حل کنید.

google-play-protect.png

قبل از هر چیز دقت کنید که نرم‌افزار شما امضاء شده باشد، در واقع از نوع نسخهٔ signed ریلیز شود. برای این کار باید حتماً یک گواهی مشخصی بسازید که همراه رمز عبور و اطلاعات توسعه‌دهنده به صورت اختصاصی برای هر محصول قابل ساخت است.

در ادامه مهمترین موردی که باید در نظر گرفته شود این است که فایل مربوطه را باید قبل از نشر در کافه‌بازار یا تحویل آن به مشتری خود، به مرکز Play Protect Appeals ارسال کنید تا برای بررسی جهتِ تجدید نظر شدن از لحاظ گیر دادن‌های بی‌خودی به برنامه‌ٔ شما مورد بررسی قرار گیرد.

معمولاً این کار خارج از ایران ساده‌تر است، چرا که بحث تحریم و شناسایی شناسه‌های ایرانی برای کارشناسان راحت‌تر بوده و به آن حساسیت نشان می‌دهند که ممکن است پیام زیر را دریافت کنید:

نقل قول

Hi

You recently submitted an appeal for an app with Google Play Protect.

We were unable to download the APK file from the link you provided. Please submit a new appeal and make sure that the link is publicly browsable.

Thank You,
Google Play Protect Team

بنابراین، توصیه می‌کنیم از روش‌های مطمئن‌تری برای ارسال فایل استفاده کنید.

توصیهٔ ما استفاده از خدماتِ دراپ‌باکس خواهد بود که با ارسال فایل به آن و ساخت یک لینک اشتراکی می‌توانید مطمئن شوید که دسترسی به فایل شما در سراسر جهان میسر خواهد شد. اما توجه داشته باشید که لینک آن را برای سهولت در بررسی و ارسال در فیلد فرمِ آن، از طریق سایت http://bit.ly کوتاه سازید.

دقت کنید که لینک دریافتی از دراپ‌باکس باید شامل قالبی به صورت زیر است:

https://www.dropbox.com/s/example/app.apk?dl=0

آدرس زیر را بعد از پارامتر dl=0 به dl=1 تغییر دهید و سپس لینک مربوطه را کوتاه کرده و آن را در فرم ثبت اطلاعات نرم‌افزار برای گوگل در این لینک ارسال کنید.

Screen Shot 2020-10-23 at 10.09.28 PM.png

در فرم مربوطه فیلد‌های مورد نظر باید دقیقاً شامل واقعیت باشند، به عنوان مثال نام و نام‌خانوادگی توسعه‌دهنده، آدرس پست‌الکترونیکی، نام بستهٔ اپلیکیشن و لینک کوتاه شدهٔ قابل دریافت؛ در نهایت می‌توانید توضیحاتی برای آن در نظر بگیرید.

اگر همه چیز به خوبی پیش رفته باشد پیامی مانند زیر را به همان آدرس پست‌الکترونیکی خود دریافت خواهید کرد.

نقل قول

Hi

You recently submitted an appeal for an app with Google Play Protect.

We have successfully received the appeal for your app. Our team will review the app and any information you have provided.

Thank You,
Google Play Protect Team

در نظر داشته باشید که این فرایند ممکن است زمان متغیری را در صف بررسی باشد که در حالت عادی و خاص ۱ الی ۳۰ روز زمان خواهد برد که من به شخصه بین حدقل ۲۴ تا ۴۸ ساعت نتیجهٔ مثبت گرفتم.

صرفاً دقت کنید که در صورت بررسی و تأیید شدن برنامهٔ شما، هیچ پیام خاصی ارسال نخواهد شد، بنابراین تنها با بررسی و نصب برنامه می‌توانید متوجه آن شوید که برنامهٔ ارسال شدهٔ شما در لیست بانک اطلاعاتی امنیتی اپلیکیشن‌های گوگل قرار گرفته است یا خیر.

نقل قول

توصیهٔ من این است همیشه سعی کنید در زمان ساخت نسخهٔ جدیدی از یک اپلیکیشن قبل از آن بررسی کنید که توسط Google Protect مورد تأیید است یا خیر، در غیر این صورت شما باید این مراحل رو انجام دهید تا بتوانید بدون مشاهدهٔ هرگونه مشکلی در سمت کاربر و حتی کافه‌بازار نرم‌افزار خود را ارائه دهید.

امیدوارم که این تجربهٔ پیشنهادی برای شما نیز مفید واقع شود ?

mehrzero

84y9rbfo6hs3.png.9370439ed608f8f5659144fab84e6d88.png

چه طوری میتونیم مشکلاتمون رو در لینوکس حل کنیم؟

ما در لینوکس روش های زیادی داریم برای این که مشکلاتمون رو حل کنیم یکی از این روش های که البته تا یه حدی از مشکلاتتون رو میتونه حل کنه سرچ هستش البته این روش اصولی نیست یعنی بیشتر آموزشاتی که در سایت های ایرانی وجود داره کامل نیست یا ممکنه شمارو گمراه کنه

بهترین راه خوندن help دستورات هستش که گزینه بهتریه البته باید اینم بگم خوندن help در لینوکس نیازمند دانش اولیه از زبان انگلیسیه که شما میتونید با ابزار google translate مشکلتون رو حل کنید البته بگم بازم تاکید میکنم زبانتون رو قوی کنید شاید چندین ماه وقتتون رو بگیره ولی ارزشش رو داره

---

من یه چنل دارم که در اون چنل منابع یاد گیری زبان رو با دوستان علاقه مند به اشتراک گذاشتم اگر دوست داشتید از چنل تلگرامم دیدن کنید میتونه تو زبان کمکتون کنه

با فندوق شکن واردشید
EnjOoy_English@

---

در این topic میخوام انواع دستورات helpوابزارها در سیستم عامل لینوکس وروش استفادش رو باهم برسی کنیم

Command 1 : --help

این دستور خیلی ساده ایه برای این که شما بخواید از این دستور استفاده کنید باید از ساختار زیر استفاده کنید

روش استفاده از دستور --help

~$     command --help

مثال:

~$    ls --help
خروجی درستور بالا
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
.....

همون طور که متوجه شدین زمانی که من دستور بالا رو زدم
خروجی این دستور اطلاعات کاملی درباره ساختار این دستور و اطلاعات در باره شیوه استفاده از اون دستور رو برای من با مثال توضیح داد

Command 2 : man

دستور man یکی از پر طرفدار ترین دستورات در ترمینال لینوکسه انقدر پر طرفداره که هرکسی که میخواد ابزاری رو دستوراتشو یاد بگیره اول از دستور man استفاده میکنه
man یه ویژگی بزرگ داره اونم اینکه به صورت خیلی ساده دستورات لینوکسی رو به شما معرفی کرده و از هرکدوم یه مثال جامع برای شما میزنه
نکته : دستور man به صورت پیش فرض روی بیشتر نسخه های لینوکس نصبه اگر نصب نبود از طریف دستور زیر نصبش کنید.

sudo apt update
sudo apt install man

روش استفاده از دستور man

~$     man command

مثال:

~$     man ls
NAME
       ls - list directory contents
SYNOPSIS
       ls [OPTION]... [FILE]...
DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐ fied.
.....

Command ۳ : info

دستورinfo شباهت زیادی باman داره ولی با این تفاوت که دستور info خیلی کامل و جامع توضیح داده و به نسبت man مثال های بهتری برای یاد گیری دستورات زده

روش استفاده از دستور info

~$    info command

مثال:

~$     info ls
Next: dir invocation,  Up: Directory listing
10.1 ‘ls’: List directory contents
==================================
The ‘ls’ program lists information about files (of any type, including
directories).  Options and file arguments can be intermixed arbitrarily,as usual.

Command 4 : whatis

دستور whatis به معنای چی هست
دستورwhatis ,دستورات Command رو خلاصه وار به شما معرفی میکنه
بیشتر برای زمانی استفاده میشه که شما میخواین در حد یک خط بدونید این دستور به چه دردی میخوره

روش استفاده از دستور whatis

~$     whatis command

مثال:

~$     whatis ls
ls (1)               - list directory contents

این دستور رو خیلی دوست دارم چون کمک میکنه وقتی حوصله ندارم یا وقت ندارم بفهمم دستور مورد نظرم به چه دردی میخوره

Command 5 : whereis یا wich

دستورwhereis خیلی جالبه محل دقیق دستورات Command رو به صورت دقیق به شما میگه این دستور مشابه دستور which هستش ولی با این تفاوت که دستور whereis همه چیز رو به صورت دقیق مشخص میکنه

روش استفاده از دستورwhereis

~$    whereis command

مثال:

~$     whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

روش استفاده از دستور which

~$     which command

مثال:

~$     which ls
/usr/bin/ls

Command 6 : less

دستورless یکی از دستورات پر کاربرد در لینوکسه شما با استفاده از این دستور میتونید محتویات موجود در فایل های فشردا و فایل های غیرفشرده رو بخونید همانند دستور cat در لینوکسه ولی با این تفاوت که توانایی خوندن فایل های فشرده رو نداره

روش استفاده دستور less در help

یکم این روش پیچیدس ولی یادگیری اون ممکنه در آینده خیلی به شما کمک کنه

قدم اول: وارد مسیر زیر میشوید

~$	cd /usr/share/doc

سپس

~$	ls  -l

بعد از لیست یکی از پوشه های دل خواه رو باز میکنید من در این جا میخوام دایرکتوری پایتون رو دقیق بخونم
و پایتون رو به شما نشون میدم

نکته : شما میتونی هر پوشه ای رو که نیاز دارید رو ببینید این دستور محدود به این کار نیست

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

➜  doc ls  -l
total 7740
drwxr-xr-x  2 root root  4096 Jul 31 20:58 accountsservice
drwxr-xr-x  2 root root  4096 Jul 31 20:58 acl
drwxr-xr-x  3 root root  4096 Jul 31 20:58 acpid
drwxr-xr-x  2 root root  4096 Jul 31 20:58 acpi-support
drwxr-xr-x  3 root root  4096 Jul 31 20:57 adduser
drwxr-xr-x  2 root root  4096 Jul 31 20:58 adwaita-icon-theme
drwxr-xr-x  2 root root  4096 Jul 31 20:58 aisleriot
drwxr-xr-x  3 root root  4096 Jul 31 20:58 alsa-base
drwxr-xr-x  2 root root  4096 Jul 31 20:58 alsa-topology-conf
drwxr-xr-x  2 root root  4096 Sep 26 22:00 alsa-ucm-conf
...

سپس

~$     cd python3
~$     ls -l

خروجی

➜  doc cd python3
➜  python3 ls -l
total 48
lrwxrwxrwx 1 root root    40 Sep 21 11:32 changelog.Debian.gz -> ../libpython3-stdlib/changelog.Debian.gz
-rw-r--r-- 1 root root 16122 Jun  6  2018 copyright
-rw-r--r-- 1 root root 12385 Nov  7  2019 python-policy.dbk.gz
drwxr-xr-x 2 root root  4096 Jul 31 20:57 python-policy.html
-rw-r--r-- 1 root root 10865 Mar 13  2020 python-policy.txt.gz
lrwxrwxrwx 1 root root    34 Sep 21 11:32 README.Debian -> ../libpython3-stdlib/README.Debian

حالا شما استفاده از دستور زیر میتونید help پایتون رو بخونید
این دستورات برای هر فایلی در مسیر بالا صدق میکنه

~$     less python-policy.txt.gz

خروجی به صورت دقیق اطلاعات رو به شما نشون میده

خوش حال میشم در اولین فرصت به سوالاتتون پاسخ بدم
میتونید سوالاتتون رو ایمیل کنید یاکامنت بزنید
Email: mehrzero@gmail.com

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

معرفی سیاههٔ تغییرات (Change Log)

سیاههٔ تغییرات (changelog یا CHANGELOG) اشاره به یک سیاهه یا تاریخچهٔ تغییراتی دارد که در یک پروژه همانند یک وب‌سایت اینترنتی یا یک پروژه نرم‌افزاری اعمال می‌شوند. یک پروندهٔ سیاههٔ تغییرات شامل یک لیستی است از تغییرات قابل توجه برای هر نسخه از یک پروژه. این تغییرات عموماً به عنوان اصلاحات باگ‌ها، قابلیت‌های جدید و ... در این سیاهه نوشته می‌شوند. برخی از پروژه‌های متن‌باز فایل سیاههٔ تغییرات را در دایرکتوری سطح بالای کدهای منبع پروژه خود قرار می‌دهند. هرچند که قرارداد متعارف نام‌گذاری این فایل ChangeLog است، این فایل گاهی اوقات به صورت CHANGES یا HISTORY هم نام‌گذاری می‌شود (باید توجه داشت که NEWS فایل متفاوتی است که تغییرات بوقوع پیوسته از یک نسخه به نسخه دیگر در آن نوشته می‌شود، نه تغییراتی که از یک کامیت به کامیتی دیگر اتفاق افتاده‌اند). برخی از نگه‌دارنده‌های پروژه‌ها پسوند ‎.txt را هم به انتهای این فایل اضافه می‌کنند. برخی از سیستم‌های نسخه‌بندی قادر به تولید کردن اطلاعاتی هستند که مناسب قرارگرفتن در یک فایل سیاههٔ تغییرات است.

shuffle.png

چرا باید از سیاههٔ تغییرات جهت حفظ تغییرات استفاده شود؟

برای اینکه کاربران و مشارکت کنندگان به راحتی بدانند که دقیقاً چه تغییرات قابل توجهی بین هر نسخهٔ انتشار یافته و دیگر نسخه‌ها ایجاد شده است، بهتر است از این اصول پیروی شود.

چه کسانی به سیاههٔ تغییرات نیاز دارند؟

چه مصرف‌‌کنندگان و چه توسعه‌دهندگان، کاربران نهایی نرم‌افزار، انسان‌هایی هستند که به آنچه در نرم‌افزار تغییر پیدا می‌کند اهمیت می‌دهند؛ هنگامی که نرم‌افزار تغییر پیدا می‌کند، مردم می‌خواهند بدانند که چرا و چطور این تغییرات اعمال شده است. بنابراین استفاده از این قالب علاوه بر ارائهٔ ارزشی در بحث تجربه‌کاربری، در روند توسعه اهمیت بسیاری دارد.

 

چطور می‌توانم یک سیاههٔ تغییرات خوب ایجاد کنم؟

راهنمای اصول

  • سیاههٔ تغییرات برای انسان‌ها هستند نه ماشین.
  •  برای هر کدام از نسخه‌ها باید یک مدخل وجود داشته باشد.
  •  انواع مشابه تغییرات باید دسته‌بندی شوند.
  •  نسخه‌ها و بخش‌ها باید پیوند پذیر باشند.
  •  آخرین نسخه اول می‌آید.
  •  تاریخ عرضهٔ هر کدام از نسخه‌ها، نمایش داده می‌شود.
  • از استاندارد و اصول نسخه‌بندی معنایی استفاده و آن را رعایت کنید.

انواع تغییرات

  • Added برای امکانات جدید.
  • Changed برای تغییر در عملکرد موجود.
  • Deprecated برای امکاناتی که به زودی حذف می‌شوند.
  • Removed برای امکانات حذف شده.
  • Fixed برای هر نوع رفع خطا.
  • Security در صورت وجود هرگونه آسیب‌پذیری امنیتی.

برای ردیابی تغییرات آتی یک بخش با عنوان Unreleased در بالا نگه‌دارید، این کار دو هدف دارد:

  • مردم می‌توانند ببیند که در نسخه‌های آینده چه تغییراتی را می‌توان انتظار داشت.
  • در زمان انتشار، می‌توانید تغییرات بخش Unreleased را به بخش نسخهٔ جدید منتقل کنید.

آیا استانداردی برای سیاههٔ تغییرات وجود دارد؟

حقیقتاً خیر، هرچند سبکی از گنو و همچنین بخشی از فایل خبر گنو به این مورد اشاره دارند، اما این‌ها ناکافی می‌باشند.

نام فایل سیاههٔ تغییرات چه باید باشد؟

می‌توانید آن را CHANGELOG.md بنامید. برخی از پروژه‌ها از HISTORY، NEWS و یا RELEASES استفاده می‌کنند. هرچند مهم نیست که نام فایل نهایی این روند چه چیزی باشد، اما طوری باید باشد که کاربر متوجه هدف فایل تغییرات باشد.

یک مثال از قالب صحیح از سیاههٔ تغییرات

# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2017-06-20
### Added
- New visual identity by [@tylerfortune8](https://github.com/tylerfortune8).
- Version navigation.
- Links to latest released version in previous versions.
- "Why keep a changelog?" section.
- "Who needs a changelog?" section.
- "How do I make a changelog?" section.
- "Frequently Asked Questions" section.
- New "Guiding Principles" sub-section to "How do I make a changelog?".
- Simplified and Traditional Chinese translations from [@tianshuo](https://github.com/tianshuo).
- German translation from [@mpbzh](https://github.com/mpbzh) & [@Art4](https://github.com/Art4).
- Italian translation from [@azkidenz](https://github.com/azkidenz).
- Swedish translation from [@magol](https://github.com/magol).
- Turkish translation from [@karalamalar](https://github.com/karalamalar).
- French translation from [@zapashcanon](https://github.com/zapashcanon).
- Brazilian Portugese translation from [@Webysther](https://github.com/Webysther).
- Polish translation from [@amielucha](https://github.com/amielucha) & [@m-aciek](https://github.com/m-aciek).
- Russian translation from [@aishek](https://github.com/aishek).
- Czech translation from [@h4vry](https://github.com/h4vry).
- Slovak translation from [@jkostolansky](https://github.com/jkostolansky).
- Korean translation from [@pierceh89](https://github.com/pierceh89).
- Croatian translation from [@porx](https://github.com/porx).
- Persian translation from [@Hameds](https://github.com/Hameds).
- Ukrainian translation from [@osadchyi-s](https://github.com/osadchyi-s).

### Changed
- Start using "changelog" over "change log" since it's the common usage.
- Start versioning based on the current English version at 0.3.0 to help
translation authors keep things up-to-date.
- Rewrite "What makes unicorns cry?" section.
- Rewrite "Ignoring Deprecations" sub-section to clarify the ideal
  scenario.
- Improve "Commit log diffs" sub-section to further argument against
  them.
- Merge "Why can’t people just use a git log diff?" with "Commit log
  diffs"
- Fix typos in Simplified Chinese and Traditional Chinese translations.
- Fix typos in Brazilian Portuguese translation.
- Fix typos in Turkish translation.
- Fix typos in Czech translation.
- Fix typos in Swedish translation.
- Improve phrasing in French translation.
- Fix phrasing and spelling in German translation.

### Removed
- Section about "changelog" vs "CHANGELOG".

## [0.3.0] - 2015-12-03
### Added
- RU translation from [@aishek](https://github.com/aishek).
- pt-BR translation from [@tallesl](https://github.com/tallesl).
- es-ES translation from [@ZeliosAriex](https://github.com/ZeliosAriex).

## [0.2.0] - 2015-10-06
### Changed
- Remove exclusionary mentions of "open source" since this project can
benefit both "open" and "closed" source projects equally.

## [0.1.0] - 2015-10-06
### Added
- Answer "Should you ever rewrite a change log?".

### Changed
- Improve argument against commit logs.
- Start following [SemVer](https://semver.org) properly.

## [0.0.8] - 2015-02-17
### Changed
- Update year to match in every README example.
- Reluctantly stop making fun of Brits only, since most of the world
  writes dates in a strange way.

### Fixed
- Fix typos in recent README changes.
- Update outdated unreleased diff link.

## [0.0.7] - 2015-02-16
### Added
- Link, and make it obvious that date format is ISO 8601.

### Changed
- Clarified the section on "Is there a standard change log format?".

### Fixed
- Fix Markdown links to tag comparison URL with footnote-style links.

## [0.0.6] - 2014-12-12
### Added
- README section on "yanked" releases.

## [0.0.5] - 2014-08-09
### Added
- Markdown links to version tags on release headings.
- Unreleased section to gather unreleased changes and encourage note
keeping prior to releases.

## [0.0.4] - 2014-08-09
### Added
- Better explanation of the difference between the file ("CHANGELOG")
and its function "the change log".

### Changed
- Refer to a "change log" instead of a "CHANGELOG" throughout the site
to differentiate between the file and the purpose of the file — the
logging of changes.

### Removed
- Remove empty sections from CHANGELOG, they occupy too much space and
create too much noise in the file. People will have to assume that the
missing sections were intentionally left out because they contained no
notable changes.

## [0.0.3] - 2014-08-09
### Added
- "Why should I care?" section mentioning The Changelog podcast.

## [0.0.2] - 2014-07-10
### Added
- Explanation of the recommended reverse chronological release ordering.

## [0.0.1] - 2014-05-31
### Added
- This CHANGELOG file to hopefully serve as an evolving example of a
  standardized open source project CHANGELOG.
- CNAME file to enable GitHub Pages custom domain
- README now contains answers to common questions about CHANGELOGs
- Good examples and basic guidelines, including proper date formatting.
- Counter-examples: "What makes unicorns cry?"

[Unreleased]: https://github.com/olivierlacan/keep-a-changelog/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.3.0...v1.0.0
[0.3.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.8...v0.1.0
[0.0.8]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.7...v0.0.8
[0.0.7]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.6...v0.0.7
[0.0.6]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.5...v0.0.6
[0.0.5]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.4...v0.0.5
[0.0.4]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.3...v0.0.4
[0.0.3]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.2...v0.0.3
[0.0.2]: https://github.com/olivierlacan/keep-a-changelog/compare/v0.0.1...v0.0.2
[0.0.1]: https://github.com/olivierlacan/keep-a-changelog/releases/tag/v0.0.1

 

 

 

 

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

اگر شما از آن دسته از کاربرانی هستید که هزینه‌ای برای گیت‌هاب پرداخت نمی‌کنید، این هفتهٔ خوبی است برای شما! 

Octocat.png

با توجه به تاریخ، گیت‌هاب همیشه حساب‌های رایگان ارائه داده است، اما با توجه به قوانین آن مخازنِ شما باید در قالب عمومی ایجاد می‌شدند. در صورتی که شما نیاز به داشتن مخزنی از نوع خصوصی داشتید در این صورت مجبور به پرداخت هزینه‌ای در قبال آن بودید. خبر خوش این است که، این محدودیت از امروز از بین رفته و شما می‌توانید مخازن خود را به صورت خصوصی و بدون پرداخت هزینه‌ای ایجاد کنید.

نقل قول

توجه داشته باشید که این ویژگی تنها تا حداکثر ۳ همکار (مشارکت کننده) قابل استفاده است. تعداد مشارکت کنندگان در اینجا تنها محدودیتی است که دیده می‌شود.

Screen Shot 2019-01-08 at 00.44.16.png

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

با سلام. در این مقاله قصد بر معرفی چند ابزار کاربردی برای برنامه‌نویسان گرامی را داریم. پس با ما همراه باشید.?

 

|Carbon|

قبل از هر چیزی کمی به کد زیر نگاه کنید :

#include <KWayland/Server/output_interface.h>
#include <KWayland/Server/outputdevice_interface.h>
namespace KWayland
{
namespace Server
{
class OutputInterface;
class OutputDeviceInterface;
class OutputChangeSet;
class OutputManagementInterface;
class XdgOutputInterface;
}
}

namespace KWin
{
namespace ColorCorrect {
struct GammaRamp;
}

 

آیا شما واقعاً رغبت به خواندن این کد می‌کنید ؟ صد در صد خیر. چرا که هیچ indent یا code highlight در نظر گرفته نشده‌اس ! در نظر بگیرید اگر ۱۰۰۰ خط کد بود ?.

در اینجا وب‌سایت Carbon به ما اجازه قالب‌بندی ، تغییر فونت ، رنگ‌بندی و... کدهارا میدهد. Carbon تعداد زیادی از زبان‌های برنامه‌نویسی را اعم از C\C++ , Python , JS ,... پشتیبانی میکند.

برای شخصی‌سازی تم مورد علاقه خود. کافی است که تنظیمات خود را اعمال و بعد url سایت را ذخیره کنید.این یک نمونه از تنظیماتی است که بنده اعمال کردم :

image.png.83a0d97aaf369d45b7733de7ec597453.png

حال به راحتی می‌توانید با اسکرین گرفتن از کدزیبای خود آن را برای دوستان خود ارسال کنید.

 

 

|Beautify Tools|

سایت Beautify Tools مجموعه‌ای عظیم ابزارهایی اعم از :

  • Beautifiers And Minifiers
  • Converters
  • String Utilities
  • CSS Preprocessors
  • Utilities
  • Unit Converters
  • Cryptography
  • ...

می‌باشد. که بسیار به کمک برنامه‌نویسان وب می‌آید. برای مثال شما یک فایل حجیم CSS دارید. که برای راحتی و قابل‌خواندن‌بودن کد از indent های بسیار استفاده کرده‌اید که خود باعث بالا بردن حجم نهایی فایل شده‌اند. به راحتی با استفاده از ابزار CSS Beautifier می‌توانید تمام indent های بی‌مصرف را از بین ببرید :

image.thumb.png.f13558dcccf94564bb6908df44015705.png

 

 

|Artistic Style|

Artistic Style یک ابزار فرم‌دهنده (indenter) برای زبان‌های C, C++, C++/CLI, Objective‑C, C#, and Java می‌باشد. 
برای نصب و استفاده به مستندات نصب این ابزار مراجعه کنید.
 

 

|Clang Format|

Clang Format یک ابزار command-line بسیار قدرتمند برای مرتب کردن ، قالب‌بندی و... کد منبع می‌باشد :
 
 
ابزار Clang Format فقط به Command Line محدود نمی‌شود. شما می‌توانید به راحتی با IDE مورد علاقه خود این ابزار را تطبیق بدهید. مثل :
  • Vim
  • Qt Creator
  • Visual Studio
  • BBEdit
  • ...

vokoscreen-2019-01-03_13-43-02.gif.6f0c95af81a875c061f1c84287eea7c7.gif

برای استفاده به سایت مرجع مراجعه کنید.

 

موفق‌‌ و پیروز باشید. 

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

اسلک، سرویس آنلاین سازمان دهی فعالیت های گروهی که کار خود را از سال 2015 آغاز کرده و در حال حاضر با 8 میلیون کاربر فعال روزانه یکی از پر استفاده ترین سرویس ها در جهان به شمار می رود، از صبح امروز تمامی کاربران ایرانی خود، شامل افرادی که از داخل ایران از این سرویس استفاده می کردند و همچنین افرادی که خارج از ایران حتی در شرکت هایی خارجی فعالیت داشته و تنها سابقه ای ایرانی داشته اند را تحریم و از دسترسی آنها به تمامی خدمات خود محروم کرد. 

اقدام عجیب اسلک در حالی صورت گرفته که افرادی با سابقه ایرانی حتی در کشورهایی مانند آمریکا، کانادا و فنلاند هم قادر به استفاده از سرویس های این شرکت نبوده اند و برای مثال اگر یک کمپانی شامل 10 کارمند از کشورهای مختلف از جمله یک کارمند ایرانی از سرویس های اسلک استفاده می کرده است، اکنون تنها کارمند ایرانی قادر به استفاده از مزایای کار گروهی اسلک نخواهد بود و 9 نفر دیگر بدون مشکل به کار خود ادامه می دهند. اسلک در پیامی که به صورت ایمیل به کاربران ایرانی ارسال شده آورده است که این کار با هدف "رعایت قوانین تحریم های اقتصادی و کنترل تجاری ایالات متحده آمریکا علیه ایران" انجام شده و "اسلک با تشخیص هویت کاربران از دسترسی افرادی که به نوعی با تحریم های آمریکا مرتبط هستند به سرویس های خود جلوگیری به عمل می آورد".

slackban.png

وب سایت ورج با پیگیری این موضوع به نقل از مدیران روابط عمومی اسلک گزارش داده است که به جز کاربران ایرانی، افرادی با ملیت کوبا، کره شمالی، سوریه و کریمه اکراین هم در فهرست تحریم شدگان قرار دارند. این اقدام در حالی صورت می گیرد که بسیاری از خدمات اسلک به صورت رایگان در اختیار کاربران قرار می گیرد و به جز آن، استفاده از سرویس های مدیریت پروژه آنلاین عملا هیچ تاثیری در تحریم های کالایی و اقتصادی علیه ایران ندارد. ضمن آنکه ایرانیانی که خارج از کشور به کار و زندگی مشغول هستند در اثر این تحریم ممکن است کار خود را از دست داده و زندگی اجتماعی و شغلی خود را در خطر فروپاشی ببینند. دولت آمریکا اخیرا اعلام کرده بود تحریم های ایران دارای اهداف سیاسی بوده و مردم این کشور را تحت فشار قرار نمی دهد؛ اما این اقدام و تحریم های مشابه علیه ایرانیان در سراسر جهان به خوبی نشان دهنده تلاش سازمان یافته این کشور و اتاق فکرهای مرتبط با آن برای مقابله با مفهومی به نام "هویت ایرانی" است. 

برای جایگزینی اسلک می توانید از نمونه های دیگر خارجی مانند Trello یا سرویس های مشابه سازی شده ایرانی مانند Taskulu استفاده کنید.

mirsaman

lightSNA.jpg

SoNebuntu نام توزیعی از سیستم عامل لینوکس است که توسط میر سامان تاجبخش، دانشجوی دکتری دانشگاه ارومیه در رشته فناوری اطلاعات و هیئت علمی همکار دانشگاه صنعتی ارومیه، ایجاد شده است. ایشان در راستای تحقیقات خود، متوجه عدم وجود سیستمی مخصوص تحلیل‌گران شبکه‌های اجتماعی شده و تصمیم گرفتند که توزیع مخصوص تحلیل گران شبکه‌های اجتماعی را ایجاد کرده و در دسترس علاقه‌مندان بگذارند. در این توزیع ابزارهای لازم و پرکاربرد برای تحلیل‌گران شبکه‌های اجتماعی گنجانده شده‌اند که شامل دو دسته کلی هستند:

  • ابزارهای مربوط به تحلیل شبکه‌های اجتماعی
  • ابزارهای مربوط به جمع آوری داده از شبکه‌های اجتماعی

پس از انتشار اولین نسخه از توزیع، با توجه به نظرات آمده از کاربران مبنی بر کم بودن سرعت در هنگام استفاده از گراف‌های بزرگ، موضوع مورد بررسی قرار گرفت. با توجه به اینکه در مورد داده‌های بزرگ و ابزار تحلیل نمی‌توان تغییری از طرف توسعه دهنده انجام گیرد، تمامی بسته‌هایی که برای توزیع ضروری نبودند از سیستم حذف گشته و همین امر موجب کاهش چشم گیر استفاده توزیع از منابع سیستمی شده است. در همین راستا نسخه سبک توزیع SoNebuntu با نام SoNebuntu Light نیز منتشر شده است که مناسب کار با داده‌های بزرگ و اصلاحا بیگ دیتا می‌باشد.

 

جهت اطلاعات بیشتر و دانلود نسخه سبک و کامل توزیع SoNebuntu می‌توانید به سایت رسمی توزیع مراجعه نمایید https://sonebuntu.com

برای ارتباط در مورد پروژه، همکاری، حمایت و یا ارسال نظرات می‌توانید با آدرس پست الکترونیکی زیر در ارتباط باشید sonebuntu@mstajbakhsh.ir

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

همانطور که می‌دانید منابع بسیاری در شبکهٔ گیت‌هاب وجود دارد که بعضاً به عنوان کتابخانه‌های Third-Party بسیار مفید هستند. در این پُست به ترِند‌های برخی از زبان‌هایِ برنامه‌نویسی این ماه در GitHub اشاره شده است.

github-trend.png

 

۲۰ نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ ++C:

  1. Tensorflow
  2. Electron 
  3. OpenCV 
  4. Protobuf 
  5. Bitcoin
  6. Pytorch 
  7. EventCleaner 
  8. Mcilroy-regex 
  9. Grpc
  10. Aseprite 
  11. Waterius
  12. Godot
  13. Msgui 
  14. Swift
  15. v8 
  16. XGboost
  17. Google Test
  18. AnyQ 
  19. Aspia
  20. Tars

۲۰ نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ #C:

  1. Shadowsocks-Windows
  2. Wox 
  3. eShopOnContainers 
  4. Docs 
  5. .Net ML
  6. Blazor 
  7. DNSpy 
  8. Corefx 
  9. PowerShell
  10. Ml-Agents 
  11. Graphy
  12. ShareX
  13. Musoq 
  14. Roslyn
  15. SimplCommerce 
  16. MaterialDesignInXamlToolkit
  17. SafetyKatz
  18. Azure-functions-host 
  19. UnityCsReference
  20. React-NW

 

15 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ Php:

  1. Laravel
  2. SecLists 
  3. Composer 
  4. Larastan 
  5. Faker
  6. PhpSpreadsheet 
  7. Phpstan 
  8. Phpunit 
  9. Twine
  10. Guzzle 
  11. Symfony
  12. Nextcloud Server
  13. Voyager 
  14. Swiftmailer
  15. Parsedown 

18 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ JavaScript:

  1. Javascript-algorithms
  2. Ndb 
  3. Browsh 
  4. Vue 
  5. Terminalizer
  6. React 
  7. Graphql Engine 
  8. Carbon-now-cli 
  9. v8n
  10. Mdx-deck 
  11. Guppy
  12. Evergreen
  13. Axios 
  14. Rogue.js
  15. Parcel 
  16. Node
  17. Gatsby
  18. Storybook 

16 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ QML:

  1. Latte-Dock
  2. Monero-gui 
  3. QtQuickControls2 
  4. Turtle-wallet-go 
  5. Qml Material
  6. Fluid 
  7. Material 
  8. Unity8 
  9. Cutegram
  10. Deepin-movie 
  11. Terrarium-app
  12. Qml Bootstrap
  13. Quick Android 
  14. Yunit
  15. QDriverStation 
  16. Got-qt

18 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ Python:

  1. System Dp
  2. Cheat.sh 
  3. Termtosvg 
  4. Photon 
  5. Models
  6. Youtube-dl 
  7. Python Robotics 
  8. 100-Days-Of-ML-Code 
  9. Public-apis
  10. Glow 
  11. Awesome Python
  12. Cartoonify
  13. Termgraph 
  14. Faust
  15. Byob 
  16. Flask
  17. Django
  18. cPython

19 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ Swift:

  1. Opensource macOS app
  2. Wormholy 
  3. GPUImage3 
  4. Bartinter 
  5. CocoaDebug
  6. Sica 
  7. Awesome iOS 
  8. iina 
  9. Top
  10. AudioKitSynthOne 
  11. Alamofire
  12. RxSwift
  13. RxCoordinator 
  14. Hero
  15. Charts 
  16. SkeletonView
  17. Twig
  18. WeScan
  19. Lona

 

20 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ Objective-C:

  1. EasyReact
  2. lottie-ios 
  3. YNPageViewController 
  4. React-native-maps 
  5. DBDebugToolkit
  6. Texture 
  7. iOS-InterviewQuestion-collection 
  8. TZImagePickerController 
  9. SDWebImage
  10. AFNetworking 
  11. Sequelpro
  12. iTerm2
  13. IGListKit 
  14. Expo
  15. FLEX 
  16. MonkeyDev
  17. AAChartKit
  18. FSCalendar
  19. ZFPlayer
  20. Realm-cocoa

19 نوع منبعِ ترِند شدهٔ امروز و این ماه تحت زبان‌ برنامه‌نویسیِ Java:

  1. Java-Interview
  2. Jib 
  3. Data Transfer Project 
  4. J Design Pattern 
  5. Spring-boot
  6. Proxyee-down 
  7. Elasticsearch 
  8. Weixin-java-tools 
  9. Vjtools
  10. Incubator-dubbo 
  11. Spring-framework
  12. Apollo
  13. Nacos 
  14. Guava
  15. S-MVP 
  16. RxJava
  17. Pandora
  18. Sentinel
  19. Netty
کامبیز اسدزاده

وب‌اسمبلی (WebAssembly) یا wasm یک فناوری برنامه‌نویسی سطح‌پایین برای استفاده در مرورگر است. هدف اولیهٔ آن پشتیبانی از کامپایل کد‌ها به سی و سی++ است هرچند که قرار است از سایر زبان‌ها نیز حمایت شود. حال کتابخانهٔ Qt این امکان را تحت ماژول Qt WebAssembly فراهم می‌کند تا برنامه‌‌ی نوشته شده توسط سی++ و کیوت در محیط مرورگر قابل اجرا باشند. این ویژگی در حال حاضر به عنوان پیش‌نمایش برای نسخهٔ Qt 5.11 برنامه‌ریزی شده است.

کیوت برای ساخت وب اسمبلی دستور‌العمل‌هایی را در اینجا آورده است. قبل از هرچیز شما نیاز دارید تا ابزار کامپایلر emsdk را آماده و نصب نمایید. بنابراین دستورات زیر را به ترتیب اجرا کنید.

# Get the emsdk repo
git clone https://github.com/juj/emsdk.git

# Enter that directory
cd emsdk

# Fetch the latest registry of available tools.
./emsdk update

# Download and install the latest SDK tools.
./emsdk install latest

# Make the "latest" SDK "active" for the current user. (writes ~/.emscripten file)
./emsdk activate latest

# Activate PATH and other environment variables in the current terminal
source ./emsdk_env.sh

در صورتی که در پیکربندی نیاز به راهنمایی دارید از راهنمای اصلی آن استفاده کنید و یا در همین مرجع در تالار‌های گفتمان از ما بپرسید. ما به این ابزار به عنوان ابزار کامپایل-چند‌منظوره استفاده خواهیم کرد.

برخی از اسکرین شات‌ها از نتایج خروجی این ماژول به صورت زیر آمده‌اند:

یک بازی ساده به نام Colliding mice

collidingmice-Qt-for-WebAssembly-example.png

ویژگی پنجره‌های گفتگو

Standarddialogs-Qt-for-WebAssembly-example.png

به نظر می‌رسد پنجره‌های ساخته شده توسط QOpenGLWindow با فریم ریت ۶۰ به خوبی عمل می‌کنند. البته به نظر می‌رسد QOpenGLWidget فعلاً شامل برخی از مشکلات است که حل خواهند شد. کامپایلر Emscripten که به عنوان یک کامپایلر منبع‌باز که بک اند آن بر روی LLVM اجرا می‌شود کُد‌های OpenGL را به WebGL ترجمه می‌کند. بنابراین محدودیت‌هایی در نسخه‌های دسکتاپ و اِمبد‌ها وجود خواهد داشت.

 

نمونه مثال پنجره تحت OpenGL

Openglwindow-Qt-for-WebAssembly-example.png

در کنار این‌ها QtBases و QtDeclarative که از شاخهٔ Wip/Web Assembly استقاده می‌کنند، ماژول‌های شناخته شدهٔ کیوت به صورت زیر به کار گرفته می‌شوند:

  • QtCharts
  • QtGraphicalEffects
  • QtQuickControls
  • QtQuickControls2
  • QtWebSockets
  • QtMqtt (با استفاده از وب سوکت)

برای استفاده از QtMqtt، شما باید کلاس WebSocketIODevice از نمونه مثالی با نام (websocketsubscription) وارد برنامهٔ خود کنید.

نمونه مثال‌های ساعت در QML

Screen-Shot-2018-05-18-at-15.50.05.png

نکته: از آن‌جا که جاوا‌اسکریپت و وب‌اسمبلی تنها یک نخ (Thread) دارند، QtDeclarative تنها برای یک نَخ (ترد) کار خواهد کرد. در نظر داشته باشید که ماژول‌های QtCharts QtGraphicalEffects، QtQuickcontrols، QtQuickControls2 بدون هیچ تغییراتی کار می‌کنند.

ماژول QtChart از نمونه مثال oscilloscope

Screen-Shot-2018-05-18-at-15.55.45.png

این پروژه به عنوان یک رویکرد جدید و ویژگی‌ای که در آینده می‌تواند مفید باشد در حال توسعه است. بخش ویکی رسمی آن در این لینک آورده شده است.

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

نرم افزار Apple Xcode از قویترین ابزارها برای برنامه نویسی های حرفه ای در مکینتاش می‌باشد که نسخه ۱۰ بتا آن منتشر شده است. برنامه نویسی محصولات اپل علاقه مندان بسیاری زیادی دارد که تمامی کاربران می توانند به وسیله این نرم افزار به ساده ترین روش و با کمترین خطا، حتی راحت تر از برنامه نویسی مشابه ویندوزی، برنامه نویسی سیستم های آی او اس و مخصوصا مک را انجام دهند.

xcode10-1.jpg

اِکس کُد ۱۰ شامل تمامی چیزهایی است که شما برای ایجاد برنامه های شگفت انگیز در محیط مک به آن‌ها نیاز دارید. در حال حاضر اِکس کُد و ابزار‌ها همه باهم در محیط تاریک و جدید بر روی مک بسیار عالی عمل می‌کنند. همچنین محیط ویرایشگر منبع به شما این امکان را می‌دهد که سریعاً تغییرات انجام شده بر روی کد خود را مشاهده کنید تا به سرعت بتوانید تغییرات مرتبط به کد‌های خود را دریافت نمایید. همچنین امکان ساخت ابزار‌های اختصاصی جهت تجزیه تحلیل داده‌ها در این نسخه فراهم شده است. سوئیفت نرم افزارها را با سرعت بسیار زیادی کامپایل می‌کند، به شما اجازه می‌دهد با سرعت بسیار بالایی برنامه های خود را ارائه دهید و به طور کلی این بسته از محیط توسعه بسیار سریعتر، امن‌تر و راحت‌تر از قبل شده است.

 

کد نوشته شده شما در اکس‌کد بسیار خیره کننده خواهد بود، چرا که محیط تاریک جدید در این نسخه بسیار جذاب و کدهای شما را به عنوان یک ستاره به نمایش می‌گذارد. تمامی بخش‌های محیط جدید به صورت تاریک باز طراحی شده است که شامل آیکون‌ها ، رنگ‌ها، رابط‌ها و تمامی جزئیات با دقت بسیار بالایی بهینه سازی شده اند.

 

xcode10-2.jpg

 

اکس کُد در این نسخه برای شما قدرت بسیار زیادی در ابزار‌ها فراهم می‌کند تا شما بتوانید بهترین برنامه‌ها با محیط تاریک را برای پلتفرم macOS طراحی کنید. ابزار Interface Builder (به عنوان سازنده رابط) به شما این امکان را فراهم می‌سازد تا به راحتی و بسیار سریع بین محیط‌های تاریک و روشن، توسعه و پیش نمایش سوئیچ کنید. حتی شما می‌توانید در زمان دیباگینگ (اشکال زدائی) بین محیط‌های تاریک و روشن همراه بار رنگ‌های مختلف سوئیچ کنید این کار هیچ نیازی برای تنظیمات سیستمی ندارد.

xcode10-3.jpg

چه چیز‌هایی در اِکس کُد تازه هستند؟

  • به نظر می‌رسد که اکس کد ۱۰ در ترکیب حالت های تاریک در macOS Majave شگفت انگیز است و به شما اجازه می‌دهد تا به راحتی با آن سازگار شوید.
  • نسخه بتا در Xcode ۱۰ شامل Swift 4.2 و SDK های بتا برای watchOS 5، iOS12، tvOS12 و  macOS Mojave می‌باشد.

پشتیبانی از محیط تاریک برای توسعه برنامه‌های مک

  • ظاهر تیره و جدید در سرتاسر محیط Xcode و ابزارها
  • کاتالوگ‌های انواع رنگ‌های تیره و روشن برای سفارشی سازی رنگ‌ها و تصاویر
  • رابط سازنده پیش نمایش تاریک و روشن که به شما اجازه می‌دهد بین این دو حالت در پیش نمایش سوئیچ کنید.
  • اشکال زدائی برنامه های مک در حالت تاریک و روشن بدون تغییرات در سیستم اشکال زدائی

کنترل منبع

  • تغییرات در مخازن منبع و یا مخازج موجود در سرورهای آنلاین به صورت برجسته در درون ویرایشگر قابل مشاهده است.
  • نمایش تغییرات ایجاد شده در کد شما
  • تغییراتی که هنوز به مخازن اشتراکی مانند Github و غیره... منتقل نشده اند.
  • تغییراتی که دیگران ایجاد کرده اند قابل مشاهده است.
  • تعارضاتی که شما قبل از کامیت (Commit) باید آن‌ها را در نظر داشته باشید قابل مشاهده هستند.
  • پشتیبانی از خدمات ارائه شده بر روی سرورهای گیت از طرف Atlassian Bitbucket به خوبی Gitlab و همچنین پشتیبانی از Github فراهم شده است.
  • امکان پیشنهادی اکس کد برای تغییرات پایه مخازن شما به عنوان به روز رسانی به آخرین نسخه
  • در صورتی که شما نیاز به کلید‌های SSH داشته باشید آن‌ها تولید و بر روی سرور ارائه دهندهٔ سرویس شما آپلود (بارگذاری) خواهند شد.

بهبود‌های ویرایشگر

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

زبان‌ها

  • پشتیبانی از نسخه ۴.۲ سوئیفت فراهم شده است
  • کتابخانهٔ libstdc++ در این نسخه به طور کلی حذف شده است و این بدین معنی است پروژه‌های C++ به کتابخانهٔ استاندارد libc++ مهاجرت خواهند کرد.

 

جهت دریافت نسخهٔ بتا این لینک و همچنین دریافت نسخهٔ پایدار ۹.۴ در این بخش مراجعه کنید.

و بسیاری از تغییرات دیگر که در این سند می‌توانید آن‌ها را مشاهده کنید.

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

بهترین ویرایشگر کدنویسی، بهترین اسلحه مخفی یک برنامه‌نویس است. مثل یک چاقوی سوئیسی که می‌تواند بهترین دوست یک سرباز تنها، در عملیات نفوذ باشد. دوست شما کیست؟

بهترین ویرایشگر کد، بهترین دوست برنامه‌نویس است. پیشرفت روزافزون صنعت تکنولوژی و سرعت تحولات آن در سال‌های اخیر شگفتی‌های زیادی را خلق کرده و با رشد هوش مصنوعی و عرضهٔ انواع دستگاه‌‌های هوشمند بسیاری از رؤیاهای انسان تحقق‌یافته است. برای ساختن و پرداختن به بسیاری از ایده‌ها دیگر نیاز به فعالیت‌های مشقت‌بار و پیچیده نیست. با تهیه مقداری لوازم مکانیکی و بردهای دیجیتال و کمی سررشته از مکانیک و الکترونیک هرکسی در خانه می‌تواند ابداعات جالبی در زندگی خود داشته باشد؛ اما جان‌مایه تحقق این تخیلات در زندگی روزمره ما، دانشی به نام برنامه‌نویسی است.

4dfdf0c5-bf97-4d29-be66-17e7569a3b32.jpg

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

 

نقطه مشترک این علاقه‌مندان و آن فداییان برنامه‌نویسی، ابزاری است به نام ادیتور یا ویرایشگر‌ متن. ادیتور ها هستند که باقدرت و سرعت و هوشمندی خود دستورات و ایده‌های برنامه نویسان را تبدیل به کدهای تمیز و مرتبی می‌کنند که کارآمد و باارزش هستند. آن‌ها مبتدیان را راهنمایی می‌کنند و حرفه‌ای‌ها را یاری می‌بخشند که با اطمینان و سرعت بیشتری کدهای خود را وارد کنند.

 

ادیتور ها در همان گام اول با همه برنامه‌نویس‌ها همراه می‌شوند ولی تنها برنامه نویسان حرفه‌ای هستند که می‌دانند بودن یا نبودن یک سمبل مانند. در انتهای یک کد چقدر مسئله بزرگی است. حال گشتن و نیافتن این مسئله، در میان هزاران خط کد می‌تواند عمر کیبورد و مانیتور را زیر مشت و لگد برنامه‌نویس، کوتاه کند. ادیتور های قدرتمند همچون خدمتگزارانی مهربان در کنار این مردان خشمگین هستند تا به آن‌ها کمک کنند هرگز دچار چنین مشکلاتی نشوند، ایده‌ای ناب خود را بیرون بریزند شکوه زندگی یک برنامه‌نویس را تجربه کنند.

 

زبان برنامه‌نویسی و زبان نشانه‌گذاری

زبان‌های برنامه‌نویسی آن دسته از زبان‌هایی هستند که برنامه نویسان به‌وسیله آن‌ها الگوریتم‌های خود را برای ماشین قابل‌فهم می‌کنند. زبان‌های مطرح مانند جاوا یا زبان سی پلاس پلاس از این دسته هستند. زبان‌های نشانه‌گذاری Markup Language آن دسته از زبان‌های هستند که متن و نشانه‌های معنی‌دار را باهم ترکیب می‌کنند و در آن‌ها الگوریتمی دیده نمی‌شود، مانند زبان ‌HTML یا XML.

ویرایشگر متن یا ادیتور کد نرم‌افزارهایی هستند که برای ویراستاری متون و کدهای زبان‌های برنامه‌نویسی با توجه به شیوه‌نامه یا نحو زبان (Syntax) استفاده می‌شوند؛ لیست بهترین ویرایشگر برنامه‌نویسی در ویندوز و مک در مورد آن‌ها است. از آن‌سو نرم‌افزارهای محیط یکپارچه توسعه نرم‌افزار (Integrated Development Environment) از قدرت و توانمندی بیشتری برخوردار است. از امکانات مهم IDE می‌توان به ویرایشگری کدها، کامپایل کردن و دیباگ کردن برنامه‌ها اشاره کرد. وجه دیگر این نوع نرم‌افزارها رابط کاربری گرافیکی، برای سهولت در برنامه‌نویسی است. ویژوال استودیو(Microsoft Visual Studio) و اکلیپس (Eclipse) از دسته IDE مطرح هستند.

نقل قول

همیشه برای برنامه‌نویسی نیازی به استفاده‌ از IDE نیست. این کار را می‌توان با استفاده‌ از نرم‌افزارهای ساده؛ ولی قدرتمند مثل ویرایشگر کد انجام داد.

همیشه برای برنامه‌نویسی نیازی به استفاده‌ از IDE نیست. این کار را می‌توان با استفاده‌ از نرم‌افزارهای ساده؛ ولی قدرتمند مثل ویرایشگر کد انجام داد، همانند نوشتن برنامه‌ای برای یک برد اپن‌سورس مثل آردوینو (Arduino). همین نوع ویرایشگر کدها که در لیست بهترین ویرایشگر٬ها معرفی می‌شوند در طراحی خود این توانایی را دارند که با اضافه کردن پلاگین‌ها، مرزها را بشکنند و به برنامه‌های IDE نزدیک شوند. ویرایشگرهای کد به دلیل راحتی نرم‌افزار در نصب، اجرای روان، انعطاف‌پذیری، توانایی در ارتقاء و همچنین گستره پشتیبانی از زبان‌های مطرح در یک ادیتور متن سبک و کم‌حجم، امروزه بسیار موردتوجه هستند.

همیشه برای برنامه‌نویسی نیازی به استفاده‌ از IDE نیست. این کار را می‌توان با استفاده‌ از نرم‌افزارهای ساده؛ ولی قدرتمند مثل ویرایشگر کد انجام داد، همانند نوشتن برنامه‌ای برای یک برد اپن‌سورس مثل آردوینو (Arduino). همین نوع ویرایشگر کدها که در لیست بهترین ویرایشگر٬ها معرفی می‌شوند در طراحی خود این توانایی را دارند که با اضافه کردن پلاگین‌ها، مرزها را بشکنند و به برنامه‌های IDE نزدیک شوند. ویرایشگرهای کد به دلیل راحتی نرم‌افزار در نصب، اجرای روان، انعطاف‌پذیری، توانایی در ارتقاء و همچنین گستره پشتیبانی از زبان‌های مطرح در یک ادیتور متن سبک و کم‌حجم، امروزه بسیار موردتوجه هستند.

 

لیست بهترین ویرایشگر برنامه‌نویسی برای مک و ویندوز

شناخت ادیتورها و امکانات آن‌ها، تجزیه‌ و تحلیل، سرعت، هوشمندی و انعطاف‌پذیری آن‌ها به شما کمک می‌کند، همانند یک تکاور زبده برای هر عملیات برنامه‌نویسی حتی بدون وجود IDE آماده ‌باشید. سبک بودن،‌ قابلیت نصب روی انواع سیستم‌عامل‌ها، حتی پرتابل بودن این ادیتورها از مزیت‌های تاکتیکی است که هر برنامه‌نویس حرفه‌ای به اهمیت آن اعتراف دارد و جویای حال و احوال لیست بهترین ویرایشگر برنامه‌نویسی نیز خواهد بود.

 

ویرایشگر نوت‌پد‌ پلاس پلاس(Notepad plus plus)

نوت پد پلاس پلاس قدرتمند و مملو از امکانات ریزودرشت برای سرعت بخشیدن به کارها با دقت بالاست. این ادیتور متن و ویرایشگر کد برنامه‌نویسی یک پسرعمو هم در ویندوز دارد. هرچند که با حضور ++Notepad در ویندوز کمتر کسی پای مجلس نوت‌پد قدیمی می‌نشیند. نوت‌پد پلاس پلاس رایگان و اپن‌سورس است. علاوه بر آن رابط کاربری خوبی هم دارد. یکی از جذاب‌ترین بخش‌های این ادیتور، خاصیت تب ویرایشی (Tabbed Editing) است. شما می‌توانید هم‌زمان و به‌راحتی با چند فایل مختلف در یک پنجره کار کنید.

0cdbe8c1-ea8c-4e11-85f3-428a7c48ae73.jpg

npp در ویرایش متون HTML بیشتر شهره است؛ ولی با کد نویسی در زبان‌های دیگر، هیچ‌گاه پشیمان نخواهید شد. نوت پد به‌صورت استاندارد کدهای شما در ‌ زبان‌های مختلف رنگی می‌کند تا بهتر و راحت‌تر آن‌ها را تشخیص دهید. اگر این کار شمارا راضی نمی‌کند، قابلیت سفارشی کردن هم در این ادیتور مهیا است. npp در حین کدنویسی، پا به پای شما با کدها همراه‌ است. علاوه بر اینکه به شما پیشنهادی برای تایپ سریع می‌دهد به‌محض واردکردن کدهای اشتباه براساس شیوه کدنویسی با برجسته کردن اشتباهات، چیزی کم نمی‌گذارد. نوت‌پد در هنگام نصب چند پلاگین کاربردی و مفید با خود به همراه دارد و البته می‌تواند از مخزن پلاگین در ادیتور به پلاگین‌های جدید نیز دسترسی داشته باشید. npp حقیقتا شایسته چنین جایگاهی، در لیست بهترین ویرایشگر برنامه‌نویسی سال ۲۰۱۸ است.

ویژگی‌های برجسته:

  • Notepad plus plus برای ویندوز (Windows) ساخته‌شده است؛ اما علاقه‌مندان به آن می‌توانند در مک‌اواس ۱۰ (Mac OS X) و لینوکس (Linux) و یونیکس (Unix) هم آن را تجربه کنند.
  • نوت‌پد پلاس پلاس نرم‌افزاری سبک است و به‌آسانی نصب می‌شود.
  • پلاگین‌های زیادی را می‌شود به آن اضافه کرد و با ماکرونویسی می‌توانید از امکانات موجود هم فراتر بروید.
  • از قابلیت Tabbed Editing پشتیبانی می‌کند.
  • قابلیت ساخت بوک‌مارک Bookmark برای نشانه‌گذاری دارد.
  • با دراگ و دراپ کردن فایل‌ها به محیط نرم‌افزار می‌توانید آن‌ها را باز کنید.
  • پشتیبانی از قابلیت فول‌اسکرین
  • هوشمندی در تشخیص صحت شیوه کدنویسی
  • قابلیت یکپارچه‌سازی مداوم (Compiler Integration) در پروژه که با هر تغییر کد پروژه دوباره ‌Build می‌شود تا همه کدهای قبلی و جدید باهم هماهنگ باشند.
  • پشتیبانی از قابلیت FTP
  • توانایی چک کردن لغات و مقایسه فایل‌ها
  • توانایی Code folding که باعث می‌شود کدها در بلوک‌هایی به‌صورت فشرده قرار بگیرند تا سرعت و مدیریت کدها بهتر شود.
  • تنظیم منوی برنامه به زبان فارسی
  • رایگان و متن‌باز است

نکاتی برای ارتقاء و بهبود:

  • ویرایش فایل از طریق HTTP, SSH و WebDav به‌طور پیش‌فرض پشتیبانی نمی‌شود.
  • برای نصب روی مک‌اواس ۱۰ نیاز به نرم‌افزار wine دارید که البته برای اجرای دیگر نرم‌افزراهای ویندوز روی مک و لینوکس نیز لازم است.

نتیجه:

تجربه این ویرایشگر در زبان‌های PHP،HTML،CSS و JavaScript فوق‌العاده جذاب است. کمتر ادیتور سورس کدی در لیست بهترین ویرایشگر برنامه‌نویسی، دقت نوت‌پد++ در تذکر به اشتباهات کدنویسی را دارد و در بازه‌های زمانی کوتاه و به‌سرعت در حال ارتقاء امکانات ادیتوری خود است.

 

ویرایشگر سابلایم تکست (Sublime Text)

سابلایم تکست ادیتور دیگری از دسته سبک وزن‌ها باقدرت ویرایش بالا در لیست بهترین ویرایشگر برنامه‌نویسی است. این ادیتور با سی++ و پایتون نوشته‌شده است. انعطاف‌پذیری بسیار خوبی در سفارشی کردن دارد و به برنامه‌نویس کمک می‌کند با سرعت و کارایی بالا کدنویسی کند. در سابلایم تکست با متدهای جالبی از ویرایش برمی‌خورید که در کمتر نرم‌افزار ویرایشی دیگر دیده می‌شود. اسنیپت‌ها (Snippets) بخش جذاب دیگری از تجربه کار در سابلایم تکست است.

ecde3fb0-1c92-444c-a2da-0a1b6dbd65a0.jpg

به‌عبارت‌دیگر سابلایم تکست به برنامه‌نویس این قابلیت را می‌دهد هر جا الگویی را دید حتی در ویرایش، از سابلایم بتواند برای اجرای سریع آن استفاده کند. این کار به قوی شدن فکر برنامه‌نویس کمک خوبی می‌کند و درعین‌حال باعث می‌شود مهاجرت به نرم‌افزارهای دیگر هم سخت شود. جعبه‌فرمان‌های (Command Palette) سابلایم، مثل یک خدمتکار مفید در اختیار شماست تا با کیبورد اکثر کارها را در Sublime Text مدیریت کنید. کار با کیبورد هم یکی از مهم‌ترین مهارت‌های یک برنامه‌نویس است. سابلایم تکست از نظر گرافیک صفحه کاربری و تم زمینه سیاه که محبوب برنامه نویسان است چیزی کم نمی‌گذارد و در لیست بهترین ویرایشگر برنامه‌نویسی سال ۲۰۱۸ جایگاهی کمترین از این، برای آن منصفانه نیست.

ویژگی‌های برجسته:

  • قابلیت ویرایش هوشمند هم‌زمان چند خط
  • قابل‌استفاده در سیستم‌عامل‌های  Windows،  macOS،  Linux
  • قابلیت چند سکویی
  • قابلیت ارائه سریع لیست فایل موجود در یک فولدر و ورود به آن
  • رابط کاربری محبوب
  • انعطاف‌پذیری و سفارشی شدن بالا
  • با نصب پلاگین توانایی پشتیبانی از فریمورک OpenFL و زبان برنامه‌نویسی  Haxe
  • حمایت از توابع وردپرس
  • تشخیص قدرتمند خطاهای زبان برنامه‌نویسی و برجسته کردن آن‌ها با نصب بسته مخصوص هر زبان

نکاتی برای ارتقاء و بهبود:

  • حمایت کم از زبان‌های راست‌نویس
  • حمایت کم در لینوکس
  • رایگان فقط در حالت Trial
  • تأکید شدید برای کار با کیبورد به مذاق همه شیرین نیست

نتیجه:

این ویرایشگر اعتیادآور است. این ویرایشگر یکی از بهترین‌ها برای زبان HTML و PHP است. هرچند ویرایشگرهای دیگر هم در این زمینه خوب کار می‌کنند؛ ولی سابلایم با خلاقیت‌هایش به  برنامه‌نویس در کدنویسی سمت کلاینت و سرور طعم دیگری دارد.

 

ویرایشگر اتم (Atom)

اتم یک ویرایشگر متن ساده و راحت است. ازنظر ظاهری شبیه سابلایم تکست است ولی اغلب برنامه نویسان با آن بیشتر اخت می‌شوند و ارتباط بهتری برقرار می‌کنند. برای نصب قالب هم انتخاب‌های زیادی برای Atom وجود دارد. این ویرایشگر که با node.js طراحی‌شده چند سکویی و اپن‌سورس است. قابلیت ویژه اتم توانایی هک هسته آن توسط کاربران برای کارایی بیشتراست. اتم با بخش مدیریت پکیج خود به‌راحتی می‌تواند فراتر از ویرایشگر متن عمل کند. Atom توسط گیت‌هاب توسعهٔافته است.

44694fd8-fc33-4f0e-8c51-fbec3e554211.jpg

این ‌یک مزیت عمده است چراکه گیت‌هاب باهدف افزایش کارایی و کارآمدی توسعه‌دهندگان خلق‌شده است و رزومه موفق آن نیازی به تائید ندارد. اتم در اتصال به گیت‌هاب نیز به‌خوبی عمل می‌کند. ویرایشگر سورس کد اتم در مجموعه ابزارهای خود یک جستجوگر فازی جذاب هم دارد که شیوه کارش ترکیب دو متد جستجوگر کلمات و غلط‌گیر املایی است، از همین رو به جستجوگر فازی معروف شده است.

ویژگی‌های برجسته:

  • سادگی و جذابیت در طراحی  رابط کاربری
  • پشتیبانی از جعبه‌فرمان همانند سابلایم‌ تکست
  • ابزارهای ویژه برای توسعه
  • مدیریت مجتمع برای پشتیبانی از پلاگین‌ها
  • شیوه سفارشی‌سازی ساده و سهل در رابط کاربری
  • جامعه فعال پشتیبانی در گیت‌هاب برای رفع مشکلات
  • قابلیت چند سکویی
  • تشخیص شیوه کدنویسی زبان‌های برنامه‌نویس مختلف
  • رایگان و متن‌باز
  • قابلیت جستجوی فازی

نکاتی برای ارتقاء و بهبود:

  • در مقایسه با دیگر ویرایشگرهای متن کند است
  • مدیریت سخت فایل‌های بزرگ

 نتیجه:

اتم توسط توسعه‌دهنده‌ها برای توسعه‌دهنده‌ها ساخته‌شده است. وجود یک جامعه خوب و فعال که به پشتیبانی از این ویرایشگر مشغول هستند، یک مزیت استراتژیک بسیار خوب برای هر نرم‌افزاری است. این علاقه و تلاش به علت قابلیت اپن‌سورس عمیق و کامل این نرم‌افزار است که باعث شده در میان دیگر ویرایشگرها، درعین‌حال سادگی در لیست بهترین ویرایشگر برنامه‌نویسی گردوخاکی به پا کند. چنانکه نام اتم به٬عنوان رقیبی تازه‌نفس، برای رقابت با IDE ها مطرح است. پس با اتم هرروز می‌توانید منتظر شنیدن خبرهای خوب و جالبی در مورد Atom و ابزارهای جدیدش باشید. 

 

ویرایشگر کدا (Coda)

ویرایشگر Coda با بانک کد و قالب  پروپیمان خود، سرعت و بهره‌وری را برای کاربران یک‌کاسه کرده است. کار اصلی این ویرایشگر طراحی سایت است. با مجموعه امکانات پیاده‌سازی شده در کدا حتی برای مبتدیان نیز برنامه‌نویسی می‌تواند مفرح و درعین‌حال مفید و کارآمد باشد. ادیتور کدا، از سال ۲۰۰۷ به‌صورت یک ویرایشگر متن ساده وارد عرصه برنامه‌نویسی شد و امروز یکی از بهترین نرم‌افزارهای تکامل‌یافته در سیستم‌عامل مک به شمار می‌رود.

72377214-a359-4523-91be-7b736ce5f2d2.jpg

شاید بتوان گفت نمونه قابل‌مقایسه آن در ویندوز نرم‌افزار Adobe dreamweaver است. در بخش‌های مختلف طراحی وب، از طراحی ظاهری  وب‌سایت گرفته تا پیاده‌سازی کدهای سمت سرور و حتی پشتیبانی از قابلیت FTP همگی در ویرایشگر کدا به‌خوبی کار می‌کنند که نتیجه آن محبوبیت بالای این ادیتور در لیست بهترین ویرایشگر برنامه‌نویسی سال است.

وجود کتابخانه‌های غنی در نرم‌افزار Coda کار با آن را راحت و آسان کرده است. ویرایشگر کدا در بخش طراحی رابط کاربری سایت تا جایی پیشرفته که به‌صورت دراگ و دراپ می‌توانید اجزای سایت خود را طراحی کنید. این باعث شده که طیف گسترده‌ای از برنامه نویسان از مبتدی تا حرفه‌ای این نرم‌افزار را به‌عنوان انتخاب اول خود به همراه داشته باشند. البته کدا مخصوص سیستم‌عامل مک است و از ورژن OS X 10.7.5 به بعد قابل‌استفاده در آن است.

ویژگی‌های برجسته:

  • استفاده از رابط کاربری انقلابی مک به نام Leopard
  • تکمیل خودکار کدها
  • ویرایش بلوکی و رنگ‌آمیزی کدها برحسب زبان
  • قابلیت دراگ و دراپ برای ساخت اجزا وب‌سایت
  • مدیریت FTP
  • قابلیت سفارشی کردن رابط کاربری
  • کتابخانه کد برای زبان‌های مختلف
  • پشتیبانی از MySQL

نکاتی برای ارتقاء و بهبود:

  • عدم پشتیبانی در دیگر سیستم‌ها به‌جز مک
  • کرش کردن هرازگاهی در ارتباطات شبکه
  • قیمت بالا در مقایسه نسبت به دیگر ویرایشگرها تنها هفت روز رایگان است و باید خریداری شود

نتیجه:

کدا در طراحی وب، کامل و خوب است. هر آنچه شما ابزار و کد بخواهید در آن یکجا جمع شده است. با توجه به قیمت و ویژگی‌های که دارد در مک و لیست بهترین ویرایشگر برنامه‌نویسی جزو بهترین‌ها است. با نصب آن هیچ‌وقت هم از امکانات جدید و بروزرسانی های آن بی‌خبر نخواهید بود.

 

ویرایشگر تکست میت (TextMate)

تکست میت یکی از دیگر ویرایشگرهای شهره در سیستم‌عامل مک است. البته بیشتر برای کار با برنامه‌نویسی در زبان روبی و فریمورک روبی آن ریلز استفاده می‌شود. در کل TextMate یک ویرایشگر عالی برای توسعه‌دهندگان زبان‌های مدرن برنامه‌نویسی است.

 

e6fc43b8-c9d5-44f7-bf4a-b29a450a47fd.jpg

 

ویژگی‌های برجسته:

  • قابلیت جستجو و جایگزینی
  •  جعبه تاریخچه
  • قابلیت انتخاب و تایپ  سریع ستونی در میان متون
  • تکمیل خودکار کد
  • پشتیبانی از بلوک‌بندی کدها
  • مناسب برای پروژه‌های تیمی
  • پشتیبانی بیش از ۵۰ زبان برنامه‌نویسی
  • قابلیت رنگ‌آمیزی کدها
  • پشتیبانی Xcode
  • قابلیت کار با FTP
  • رایگان
  • قابلیت فرورفتگی خودکار در کدها 

نکاتی برای ارتقاء و بهبود:

  • رابط کاربری نه‌چندان دل‌چسب
  • پشتیبانی نکردن از قابلیت فول‌اسکرین
  • تنها در سیستم‌عامل مک کار می‌کند

نتیجه:

جای تعجب نیست که در میان ادیتورهای ارزان در مک، این ادیتور بهترین گزینه باشد. شاید برای کسانی که در ویندوز ویرایشگرهای رایگان و قدرتمندی را می‌شناسند عجیب باشد؛ ولی معمولاً در مکینتاش هرچقدر پول بدهید، آش می‌خورید. این را هم فراموش نکنیم که تکست میت از برندگان جایزه طراحی اپل در سال ۲۰۰۶ بوده است پس شایسته حضور در لیست بهترین ویرایشگر برنامه‌نویسی نیز هست. 

 

ویرایشگر Text Wrangler

ویرایشگر ساده اما قدرتمند Text Wrangler که از بهترین ابزارها برای مدیریت یونیکس و سرور است. رابط کاربری هوشمند و مجموعه‌ای از ابزارهای قدرتمند برای ویرایش و جستجو متن و کدها است.

dacac6a6-b356-4924-8b24-cc9a66d59695.jpg

این ویرایشگر با Xcod همکاری می‌کند و با پشتیبانی از AppleScript جایگاه خوبی برای خود در لیست بهترین ویرایشگر برنامه‌نویسی دست‌وپا کرده است. فایل خروجی این نرم‌افزار را می‌توانید در استاندارد‌ یونی‌کد برای یونیکس و داس و مک تهیه کنید.

ویژگی‌های برجسته:

  • عملکرد مطلوب در ویرایش فایل‌های بزرگ
  • قابلیت استفاده از ماکرو و نصب پلاگین
  • پشتیبانی از قابلیت FTP
  • پشتیبانی از SSH برای ویرایش فایل از راه دور
  • مقایسه هم‌زمان دو سند
  • رنگ‌آمیزی بر اساس شیوه کدنویسی زبان‌های برنامه‌نویسی
  • بلوک کردن  و خاصیت تا شوندگی در کدها و متن‌ها
  • کامل کردن خودکار کدها
  • چک املا کلمات
  • رایگان
  • پشتیبانی از ۴۴ زبان برنامه‌نویسی از HTML, JavaScript, Perl, Python, VBScript تا  SQL

نکاتی برای ارتقاء و بهبود: 

  • عدم پشتیبانی از HTTP و WebDav
  • ناسازگار با مکینتاش G4
  • تنها از زبان انگلیسی پشتیبانی‌ می‌کند
  • عدم پشتیبانی برای ویرایش گروهی

نتیجه:

ویرایشگر  Text Wrangler باوجود چند محدودیت، قدرتمند و رایگان است ولی اگر شمارا راضی نمی‌کند با صرف مبلغی می‌توانید به ادیتور که از آن الهام گرفته‌شده‌ است، یعنی BBEdit دست پیدا کنید که ادیتور بسیار خوبی در سیستم‌های مک است.

c08e4daf-89a8-4e22-a834-b19f99d7af03.jpg

ویرایشگر جی ادیت (jEdit)

این محصول قدرتمند از آن جاوا نیرو گرفته است که برنامه‌نویسان حرفه‌ای با آغوش باز پذیرای آن هستند. نفوذ امنیت، ذاتی جاوا در رگ و پی این نرم‌افزار باعث شده است که فایل بایت ساخته‌شده توسط آن، عرق هکرها را برای رمزگشایی درآورد.

 

هزاران پلاگین و ماکرو که برای این ادیتور ساخته‌شده‌اند، نشان می‌دهد که ‌در قلب برنامه نویسان جای گرفته است. همین پلاگین‌ها باعث شده که jEdit مرزهای  ویرایشگری را بشکند و به  قلمرو IDE راه پیدا کند و البته به لیست بهترین ویرایشگر برنامه‌نویسی سال ۲۰۱۸.

 

ویژگی‌های برجسته:

  • ایجاد تورفتگی خودکار در متن
  • بلوکه بندی کد و ایجاد خاصیت تا شوندگی متن‌ها
  • موتور قدرتمند برای اجرای عبارات باقاعده (regular expressions)
  • قابلیت چک املا لغات
  • پشتیبانی از قابلیت FTP
  • پشتیبانی از یونیکد و UTF8
  • حجم کم در ابتدا و قابل توسعه با پلاگین‌ها
  • قابل‌ استفاده در ویندوز، مک، یونیکس
  • رایگان
  • پشتیبانی بیش از 200 زبان برنامه‌نویسی

نکاتی برای ارتقاء و بهبود:

  • زمان بارگیری آن کمی طولانی است
  • قابل‌استفاده به روی ویندوز، مک، یونیکس
  • عدم پشتیبانی برای ویرایش گروهی
  • عدم پشتیبانی از فایل‌های بزرگ
  • عدم پشتیبانی از SSH برای مدیریت فایل از راه دور

نتیجه:

انتخاب مناسبی برای کسانی که می‌خواهند ادیتوری پیشرفته و امن داشته باشند. به‌هرحال جاوایی بودن آن ممکن است گاهی شمارا معطل کند ولی باوجود ویژگی‌های خاصی که دارد، این کندی بارگذاری به‌راحتی قابل‌چشم‌پوشی است. از آن می‌توان به‌عنوان یک ویرایشگر متن رایگان و با کدنویسی تمیز و امن که آینده خوبی دارد، نام برد.

 

ویرایشگر Araneae

ویرایشگر ساده و مفیدی از دنیای ویندوز که قدرت و تجربه لذت‌بخش برنامه‌نویسی را برای شما به ارمغان می‌آورد. در عین سادگی برای کاربر حرفه‌ای نیز ابزار مناسبی در خود دارد و بعد از نصب، بدون هیچ پلاگین اضافه‌ای می‌توانید به برنامه‌نویسی در زبان‌های HTML, CSS, XHTML, PHP بپردازید.

90de8d6c-2da6-4e89-bbb9-13f6d19b0157.jpg

ویژگی‌های برجسته:

  • رنگ‌آمیزی کدها
  • قابلیت جالب دراگ و دراپ برای تصاویر
  • جستجو و ویرایش سریع
  • پیش‌نمایش از مرورگر حتی بدون نیاز به سیو (Save) فایل
  • حمایت از تب‌های چندگانه ویرایشی
  • رایگان
  • نکاتی برای ارتقاء و بهبود:
  • عدم پشتیبانی از پلاگین و ماکرو خارجی

 نتیجه:

ویرایشگر Araneae بسیار مناسب برای فعالیت‌های طراحی وب‌سایت است که با استفاده از آخرین تکنولوژی‌های وب، شما را در کارتان موفق می‌کند. این نرم‌افزار می‌تواند یک رقیب جدی برای دیگر ادیتور‌ها در لیست بهترین ویرایشگر برنامه‌نویسی و رفیق خوبی برای برنامه نویسان PHP باشد.

 

ویرایشگر Visual Studio Code

از نام آن پیداست که برادر کوچک‌تر ویژوال استودیو IDE مطرح دنیای برنامه‌نویسی است. محصولی از مایکروسافت که در سیستم‌عاملی Mac OS X و لینوکس هم کار می‌کند. بزرگ‌ترین ویژگی این ادیتور، تجربه ویرایش کدنویسی باحال و هوای ویژوال استودیو ایجاد می‌کند بدون اینکه نیاز باشد نسخه کامل IDE ویژوال استودیو را با حجمی حدود 3 گیگ به روی یک سیستم معمولی پیاده کرده و مرارت‌ها بکشید. این ادیتور سبک و کارآمد است و منصفانه نیست، تمام انتظاراتی که از برادر بزرگ‌تر داریم از Visual Studio Code نیز بخواهید.

a44b281f-9193-4b54-9f32-799b716e7d1f.jpg

 

ویژگی‌های برجسته:

  • پشتیبانی از ۳۰ زبان برنامه‌نویسی و صدالبته ASP.NET و #C
  • زمان نصب کم و روال ساده در اجرا
  • قابلیت مقایسه دو فایل
  • رنگ‌آمیزی کدها
  • افزونه‌های فراوان
  • وجود نسخه پرتابل
  • قابلیت ارتباط با گیت‌هاب و استفاده از امکانات آن
  • رایگان
  • نکاتی برای ارتقاء و بهبود:
  • عدم پشتیبانی خوب از افزونه‌ها

نتیجه:

این ویرایشگر عالی فضای بسیار کمی را اشغال می‌کند. هر برنامه‌نویس دلداده #C بر اهمیت وجود این ادیتور سورس کد، در لیست بهترین ویرایشگر برنامه‌نویسی واقف است. این ویرایشگر فوق‌العاده محبوب به شما فرصت عالی تجربه زبان‌های ASP.NET و #C را می‌دهد تا با لذت و آرامش بیشتری در استفاده از آن‌ها ماهر شوید و بتوانید در آینده با فراغ بال، برادر بزرگ‌تر را ملاقات کنید.

 

ویرایشگر UltraEdit

ویرایشگر UltraEdit محصول شرکت رایانه‌ای IDM Computer Solutions یک ویرایشگر محبوب در نزد هکرها، برنامه‌نویسان و توسعه‌دهندگان و البته لیست بهترین ویرایشگر برنامه‌نویسی است.

ad531c42-b056-469a-a8ae-48d0427511db.jpg

ادیتور اولترا‌ ادیت در پشتیبانی از زبان‌های مطرح خوب عمل می‌کند، همچنان که تیم پشتیبانی نرم‌افزار از سال ۱۹۹۴ برای بهبود و اجرای پیشنهاد‌ها و انتقادهای کاربران این ادیتور، خوب عمل کرده است. ادیتور UltraEdit در سیستم‌عامل‌های ویندوز، مک و لینوکس نیز در دسترس است.

 

ویژگی‌های برجسته:

  • قابلیت انتخاب چندگانه و ویرایش هم‌زمان
  • رنگ‌آمیزی کدها و هشدار اصلاح کد
  • قابلیت Ftp
  • قابلیت ویرایشگر HEX
  • قابلیت املای کلمات
  • قابلیت رمز سازی و رمزگشایی
  • قابلیت ویرایش فایل‌های باینری
  • پشتیبانی از فایل‌های بزرگ
  • پشتیبانی از SSH

نکاتی برای ارتقاء و بهبود:

  • قیمت بالا

نتیجه:

قیمت این نرم‌افزار گران است ولی ویژگی‌های زیادی را پشتیبانی می‌کند که در برنامه‌نویسی بسیار مفید هستند. برای مقایسه عادلانه‌تر ازنظر قیمت در مقایسه با ویژگی‌های ارائه‌شده در دیگر نرم‌افزارهای هم قیمت چندان هم گران نیست ازاین‌جهت یکی از بهترین نرم‌افزارهای تجاری است که می‌شود از آن نام برد.

 

هیچ‌وقت از داشتن ادیتور سورس کد پشیمان نمی‌شوید و هر زمان نیز به ابزاری سریع و کارآمد نیاز داشته باشید، به‌راحتی در اختیار شماست. این لیست نیز بهترین ویرایشگرهای کدنویسی را که امسال بیشترین توجه را در نزد برنامه‌نویسان جلب کرده‌اند، برای انتخاب سریع‌تر و بهتر شما، جمع کرده است. هرکدام را که به طبع شما نزدیک‌تر است انتخاب کنید و با تمرین در آن چالاکی خود را در برنامه‌نویسی، به رقبا نشان دهید.

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

در گذشته، سیستم های نهفته اغلب سیستم عامل های بسیار کوچک بدون فایل سیستم را اجرا می کردند و یا توسط bare metal (به عملیات حذف رابط برای صحبت با سخت افزار و کم کردن پروسه، bare metal گفته می شود) اجرا می شدند. با افزایش قدرت و کاهش هزینه ی سخت افزار، برای مثال سیستم مجتمع در تراشه (system on chip, SOCs)، بسیاری از سیستم های نهفته به سمت تبدیل شدن به یک سیستم عامل کامل که اکثرا تحت لینوکس هستند، پیش میروند.

یکی از مزیت های اجرای لینوکس بر روی سیستم نهفته، در دسترس بودن تمامی ابزار های آشنای لینوکس در این محیط است.  در حالی که ممکن است محصول نهایی همراه آن ها عرضه نشود، شما به عنوان یک توسعه دهنده می توانید به شِل (shell)، دستورات اساسی و یک پشته شبکه کامل دسترسی داشته باشید. اگر اپلیکیشن نسبتا کوچک باشد، حتی ممکن است که کد بر روی یک سیستم نهفته، مانند Raspberry Pi، کامپایل شود.

در این بخش، من بر برخی از مواردی که به طور خاص برای سیستم های نهفته مفید هستند، تمرکز خواهم کرد. این موارد شامل برنامه هایی جهت اجرا بر روی سیتم های نهفته یا ابزار هایی جهت اجرا بر روی ماشین های توسعه ی جداگانه است که برای توسعه و یا ارتباط با سیستم های نهفته مفید هستند.

 

ابزار BusyBox
همانطور که اشاره شد، دسترسی به شِل و دستورات لینوکسی/یونیکسی (برای مثال ls، grep و ...) برای سیستم های نهفته عموما مفید است. BusyBox ابزار های رایج یونیکس را در یک سیستم اجرایی کوچک فراهم می آورد. این دستورالعمل ها عمدتا جایگزینی برای دستورات کامل یونیکسی هستند که هم رایج اند و هم برخی گزینه های کم کاربرد را حذف کرده اند.

این حالت به طور قابل توجهی سبب کوچکتر شدن رد پای کلی (در حافظه و فضای سیستم فایل) می شود که به طور تقریبی شامل 300 دستور و قابل تنظیم است، بنابراین شما می توانید دستورات مورد نظر را در زمان کامپایل اضافه یا حذف کنید.

 

ابزار Minicom
اغلب اوقات نیاز به برقراری ارتباط با سیستم نهفته از طریق یک رابط سریال وجود دارد. این نیاز ممکن است قبل از اینکه سیستم در حال اتصال به شبکه و در حال اجرا باشد، یا برای دسترسی به بارگذاری بوت صورت گیرد.

برای انجام این کار یک برنامه شبیه ساز ترمینال در سمت کامپیوتر میزبان استفاده می شود. به نظر می رسد که Minicom شبیه ساز ترمینال استاندارد defacto برای لینوکس است. با وجود اینکه غیر گرافیکی است و استفاده از آن سخت است، شامل مجموعه ای از ویژگی های غنی است که ارزش صرف زمان برای یادگیری نحوه ی استفاده از آن را دارد.

در پلتفرم ویندوز، ابزار استاندارد HyperTerminal بود، اما با شروع با ویندوز 7 دیگر پشتیبانی نشد یا در ویندوز گنجانده نشده است. شما می توانید نسخه تجاری HyperTerminal را که پشتیبانی می شود خریداری کنید یا از یکی از چندین برنامه های دیگر شبیه ترمینال استفاده کنید. اگر شما یک کپی از ویندوز XP دارید، می توانید فایل های مناسب (hypertrm.dll و hypertrm.exe) را به یک سیستم جدیدتر (از جمله ویندوز 10) کپی کنید و عموما کار می کند حتی اگر پشتیبانی نمی شود.

  

ابزار ssh/sftp
به طور معمول سیستم نهفته از شبکه پشتیبانی می کنند و اغلب این روش، ترجیحی برای انتقال فایل ها به سیستم در طول توسعه است. شما می توانید سرور ssh بر روی دستگاه اجرا کنید و سپس از ssh برای دسترسی به سیستم از یک دستگاه توسعه استفاده کنید. برنامه sftp نیز می تواند مفید باشد، ارائه یک رابط مشابه به ftp (برنامه انتقال فایل)، اما با استفاده از پروتکل امن تر ssh.

اکثر محیط های یکپارچه ی توسعه نرم‌افزار (IDE)، مانند Qt Creator، با استفاده از ssh یا sftp برای انتقال فایل ها و اجرای دستورات از راه دور، از طریق یک رابط کاربری گرافیکی که معمولا ساده تر از فراخوانی دستورات به طور مستقیم است، پشتیبانی می کند. سرور های ssh جایگزینی وجود دارند که می توانند سبک تر و کم حجم تر از سرورهای کامل مانند OpenSSH  و مناسب تر برای اجرای سیستم جاسازی شده. یک انتخاب محبوب Dropbear است.

 

ابزار Adb
Android Debug Bridge (adb) یک ابزار خط فرمان برای برقراری ارتباط با یک دستگاه برای انجام اقدامات مختلف مانند نصب، اشکالزدایی و دسترسی به شِل است. این یک ابزار استاندارد برای توسعه در اندروید است و در اندروید SDK گنجانده شده است. Adb همچنین می تواند در سیستم های غیر اندرویدی استفاده شود.

 

ابزار Yocto bitbake
پروژه Yocto یک ابتکار منبع باز است که قالب ها، ابزار ها و روش های ایجاد یک سیستم مبتنی بر لینوکس را برای محصولات نهفته فراهم می کند. این شرکت در سال 2010 به عنوان همکاری میان بسیاری از تولید کنندگان سخت افزار، فروشندگان سیستم عامل های open source و شرکت های الکترونیک تاسیس شد. Qt Company آن را به عنوان پایه Qt تجاری خود برای سیستم های نهفته، boot2qt استفاده می کند.

 

Buildroot
Buildroot یکی دیگر از ابزارهای رایج برای سیستم های نهفته برای تولید یک toolchain کامپایل چند سکویی، سیستم فایل ریشه، تصویر هسته و بوت لودر است. این ابزار قدرتمندتر از Yocto است، اما می تواند ساده تر از آن استفاده شود. انتخاب بین Yocto و buildroot، معمولا در ارزش و كيفيت تكنيكي خلاصه نميشود، بلكه انچه توسط bsp vendor ساپورت ميشود اهميت دارد. 

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

اگر شما توسعه‌دهنده هستید، مسلماً بار‌ها به دنبال بررسی کاربرد یک دستور، تابع یا کلاس خاصی در یک زبان برنامه نویسی بوده‌اید. بنابراین مراجعه به مراجع زبان‌ و یا زبان‌های برنامه‌نویسی ای که شما با آن کار می‌کنید یکی از راه‌کار‌هایی است که می‌توانید به پاسخ صحیح در رابطه با نیاز خود برسید. من قصد دارم ابزار یا به اصطلاح سرویس دهنده‌ای را برای شما معرفی کنم که به شما امکان دسترسی بسیار ساده و کار‌آمد به مستندات تمامی زبان‌های رایج را فراهم می‌کند. 

معرفی
سرویس DevDocs مستندات رابط‌های برنامه‌نویسی متعددی را باهم ترکیب و در قالب یک رابط کاربری سریع، سازمان یافته شده و قابل جستجو و در دسترس را فراهم کرده است. در اینجا آن چیزی را که قبل از شروع استفاده باید بدانید آورده ایم.

خلاصه‌ای از ویژگی‌ها

  • جهت دسترسی به تنظیمات رابط کاربری و سفارشی سازی محیط به بخش Prefrences مراجعه کنید.
  • در صورتی که مایل به استفاده از ماوس نیستید می‌توانید از میانبر‌های کلیدی بسیار ساده و کارآمد استفاده کنید که در این بخش معرفی شده اند.
  • جستجوی خاص و ساده پشتیبانی از قالب (fuzzy) به شما اجازه خواهد داد تا با خلاصه نویسی مانند (bgcp) به نتیجه (background-clip) برسید.
  • برای جستجوی اسناد خاص با تایپ کردن خلاصه آن و سپس فشردن کلید tab می‌توانید به آن‌ها دسترسی داشته باشید.
  • همچنین شما می‌توانید با استفاده از نوار آدرس مرورگر بخ نتایج جستجوی خود دسترسی داشته باشید.
  • سرویس DevDocs در حالت آفلاین٫ در نسخه موبایل و افزونه‌ای که می‌تواند بر روی مرورگر گوگل کروم نصب شود در دسترس خواهد بود.
  • جهت دنبال کردن آخرین رخداد‌ها و اخبار‌ها در باره این سرویس آن را در توئیتر می‌توانید با آدرس DevDocs@ دنبال کنید.
  • سرویس DevDocs به طور کامل منبع باز است و سورس آن بر روی گیت‌هاب در دسترس است.
  • در صورتی که شما یک کُدر و یا برنامه‌نویس مبتدی هستید می‌توانید از این مرجع نیز استفاده کنید.

نسخه آفلاین
جهت نصب نسخه‌های آفلاین به این بخش مراجعه و گزینه مورد نظر خود را انتخاب کنید.

پلاگین و افزونه‌ها

×
×
  • جدید...