نظرات اشتراکها
بنده حدود دو سال میباشد که با محیط visual studio و visual studio code خدا حافظی کردم، و با rider و webstorm برنامههای خود را توسعه میدهم و تا الان از عمکلردشان راضی هستم مخصوصا rider.
اشتراکها
15 پلاگین ضروری برای VS Code
Today Doug Mahugh, Senior Technical Evangelist for Microsoft Open Technologies Inc., announced the release of an Open XML SDK as an open source project through the MS Open Tech hub. Although the SDK has been available since 2007, this release includes full source code available under the Apache 2.0 license on GitHub, as well as the project will continue to grow under the stewardship of the .NET Foundation
در این مقاله با دو سیستم
کنترل نسخه git و SVN آشنا شده و تفاوتهای آنها را برای تازهکاران بررسی میکنیم. ایده
اولیه نوشتن این مقاله زمانی بود که برای یک پروژهای، اعضای تیم ما دور هم
جمع شده و در مورد ابزارهای مورد استفاده بحث کردند و یک عده از گیت و
عدهای از SVN صحبت میکردند. بر این شدم که مقالهای نوشته و ابتدا به
معرفی آنها و سپس به مزایا و معایب هر کدام بپردازیم.
امروزه، استفاده از سیستمهای کنترل نسخه ( Version Control System
) رواج زیادی پیدا کرده است. این سیستمها به شما اجازه میدهند تا
تغییراتی را که در پروژه ایجاد میشوند، ضبط و ثبت کرده تا از تغییراتی که در
سطح پروژه اتفاق میافتد آگاه شوید. با ذکر یک نمونه این تعریف را باز
میکنم:
شما
به صورت تیمی در حال انجام یک پروژه هستید و باید نسبت به تغییراتی که
اعضای تیم در یک پروژه میدهند، آگاه شوید. هر برنامه نویس بعد از انجام
تغییرات باید این تغییرات را در سیستم کنترل نسخه به روز کند تا بتوان به
سوالات زیر پاسخ داد:
آیا اگر در
بین راه به مشکل برخوردید میتوانید پروژه خود را به یک یا چند گام عقبتر
برگردانید؟ آیا میتوانید به هر یک از اعضاء تیم دسترسیهایی را به قسمت
هایی از پروژه تعیین کنید؟ میتوانید تفاوت فایلهای تغییر یافته را
بیابید؟ آیا میتوان خطاهای یک برنامه را گزارش داد و به بحث در مورد آن پرداخت؟
چه کسی کدها را تغییر داده است؟ روند کار و تغییرات به چه صورت است؟ (این
مورد برای به روز کردن نمودارهای burndown در توسعه چابک میتواند بسیار مفید باشد.)
پی نوشت: نه تنها در یک تیم بلکه بهتر هست در یک کار انفرادی هم از این سیستمها استفاده کرد تا حداقل بازبینی روی پروژههای شخصی خود هم داشته باشیم.
سیستم
کنترل گیت: این سیستم در سال 2005 توسط لینوس توروالدز خالق لینوکس معرفی
شد و از آن زمان تاکنون یکی از پر استفادهترین سیستمهای کنترل نسخه شناخته
شده است. ویکی پدیا گیت را به این شکل تعریف میکند: «یک سیستم بازبینی توزیع شده با تاکید بر جامعیت دادهها، سرعت و پشتیبانی جهت توزیع کار.»
از معروفترین سیستمهای هاستینگ که از گیت استفاده میکنند، میتوان به گیت هاب اشاره کرد.
اکثر سیستمهای هاستینگ گیت، دو حالت را ارائه میدهند:
عمومی : در
این حالت کدهای شما به عموم بازدیدکنندگان نمایش داده میشود و دیگران هم
میتوانند در تکمیل و ویرایش کدهای شما مشارکت کنند و این امکان به صورت
رایگان فراهم است. سیستم گیت هاب به دلیل محبوبیت زیادی که دارد، در اکثر
اوقات انتخاب اول همه کاربران است.
خصوصی:
در این حالت کد متعلق به شما، یا شرکت یا تیم نرم افزاری شماست و غیر از
افراد تعیین شده، شخص دیگری به کدهای شما دسترسی ندارد. اکثر سیستمهای
مدیریتی این مورد را به صورت premium پشتیبانی میکنند. به این معنا که
باید اجاره آن را به طور ماهانه پرداخت کنید. سیستم گیت هاب ماهی پنج دلار
بابت آن دریافت میکند. سیستم دیگری که در این زمینه محبوبیت دارد سیستم BitBucket هست
که که اگر تیم شما کوچک است و در نهایت پنج نفر هستید، میتوانید از حالت
خصوصی به طور رایگان استفاده کنید ولی اگر اعضای تیم شما بیشتر شد، باید
هزینهب اجاره آن را که از 10 دلار آغاز میگردد، به طور ماهیانه پرداخت
کنید.
پی نوشت: میتوانید از سیستمهای متن باز رایگان هم که قابل نصب بر روی هاست ها هم هستند استفاده کنید که در این حالت تنها هزینه هاست یا سرور برای شما میماند.
در سیستم گیت اصطلاحات زیادی وجود دارد:
Repository یا مخزن: برای هر
پروژهای که ایجاد میشود، ابتدا یک مخزن ایجاد شده و کدها داخل آن قرار
میگیرند. کاربرانی که قصد تغییر پروژه را دارند باید یک مخزن جداگانه ایجاد
کنند تا بعدا تمامی تغییرات آنها را روی پروژهی اصلی اعمال کنند.
Fork:
هر کاربری که قصد تغییر را بر روی سورس کدی، داشته باشد، ابتدا باید پروژهی نویسنده اصلی پروژه را به یک مخزنی که متعلق به خودش هست انتقال دهد. به این
عمل Fork کردن میگویند. حال کاربر تغییرات خودش را اعمال کرده و لازم هست
که این تغییرات با پروژهی اصلی که به آن Master میگوییم ادغام شوند. بدین جهت
کاربر فرمان pull request را میدهد تا به نویسندهی اصلی پروژه این موضوع
اطلاع داده شود و نویسندهی اصلی در صورت صلاحدید خود آن را تایید کند.
Branching یا شاخه بندی: نویسندهی مخزن اصلی میتواند با مفهومی با نام شاخه بندی کار کند. او با استفاده از
این مفهوم، پروژه را به قسمت یا شاخههای مختلف تقسیم کرده و همچنین با
ایجاد دسترسیهای مختلف به کاربران اجازه تغییرات را بدهد. به عنوان مثال
بخشهای مختلف پروژه از قبیل بخش منطق برنامه، داده ها، رابط کاربری و ...
میتواند باشد. بعد از انجام تغییرات روی یک شاخه میتوانید درخواست merge
ادغام شدن یا کل پروژه را داشته باشید. در عمل شاخه بندی، هیچ کدام از
شاخههای بر روی یک دیگر تاثیر یا دخالتی ندارند و حتی میتوانید چند شاخه
را جدا از بخش master با یکدیگر ادغام کنید.
به غیر از ارتباط خط فرمانی که میتوان با گیت هاب برقرار کرد، میتوان از یک سری ابزار گرافیکی خارجی هم جهت ایجاد این ارتباط، استفاده کرد:
GitHub For Windows :
نسخهی رسمی است که از طرف خود گیت هاب تهیه گردیده است و استفاده از آن
بسیار راحت است. البته یک مشکل کوچک در دانلود آن وجود دارد که دانلود آن
از طریق یک برنامهی جداگانه صورت گرفته و اصلا سرعت خوبی جهت دانلود ندارد.
Visual Studio .Net : (+ ) خود
ویژوال استودیو شامل سیستمی به اسم Microsoft Git Provider است که در بخش
تنظیمات میتوانید آن را فعال کنید (به طور پیش فرض فعال است) و به هر نوع
سیستم گیتی میتوانید متصل شوید. تنها لازم است که آدرس Url گیت را وارد
کنید.
SourceTree:
از آن دست برنامههای محبوبی است که استفاده آسانی دارد و خودم به شخصه از
آن استفاده میکنم. شامل دو نسخهی ویندوز و مک است و میتوانید با چندین
سیستم گیت مثل «گیت هاب» و «بیت باکت» که در بالا به آنها اشاره شد، به طور
همزمان کار کند.
MySQL مدتی است که جزو یکی از محصولات شرکت اوراکل محسوب شده و توسعه دهندگان تجاری باید برای استفاده از آن هزینه کنند. این هزینه نیز اخیرا افزایش یافته و به حداقل 2000 دلار به ازای هر سرور رسیده است (+). این عدد واقعا رقم بالایی برای محصولی محسوب میشود که بسیاری از توسعه دهندهها تصور میکنند رایگان است. استفاده از این محصول با توجه به مدل تجاری جدید آن فقط در پروژههای سورس باز رایگان است (بله فقط در پروژههایی که با مجوز GPL منتشر شوند) و اگر شما یک سیستم تجاری کلاینت سرور را بر این اساس طراحی کنید حتما باید هزینههای مرتبط را نیز پرداخت نمائید (+).
توضیحی در مورد GPL و MySQL
MySQL AB offers a commercial license for organizations that do not want to release the source code for their application.
The change from the LGPL to the GPL for the client libraries was made in 2001 during the development of MySQL 4.0 to help MySQL AB more easily differentiate between a proprietary user who should buy a commercial license and a free software user who should use the GPL license.
The change from the LGPL to the GPL for the client libraries was made in 2001 during the development of MySQL 4.0 to help MySQL AB more easily differentiate between a proprietary user who should buy a commercial license and a free software user who should use the GPL license.
MySQL با توجه به مجوز GPL آن در شرایط زیر رایگان خواهد بود:
- قصد توزیع مجدد آنرا نداشته باشید.
- همچنین برنامهی شما نیز به صورت سورس باز تحت مجوز GPL ارائه گردد.
و تنها زمانی در مورد MySQL باید هزینه کنید که:
-قصد توزیع مجدد آنرا داشته باشید.
-برنامهی شما سورس باز نبوده و قصد ندارید آنرا تحت مجوز GPL ارائه دهید. (که عموما در مورد برنامههای تجاری به همین صورت است)
نکتهی دیگری را که باید به آن دقت داشت این است که برای واگذاری MySQL به شرکت اوراکل، اتحادیه اروپا نیز با توجه به وجود بیش از 50 هزار توسعه دهندهی اروپایی که از MySQL استفاده میکنند، شرکت اوراکل را موظف کرده است تا این dual licensing (تجاری و سورس باز) را تا سال 2015 حفظ کرده و ادامه دهد (+). به این معنا که شرکت اوراکل پس از سال 2015 هیچگونه تعهدی به ارائهی نگارش سورس باز این محصول به هیچ نهاد و یا سازمانی ندارد.
البته اینها به معنای پایان دنیا نیست. هم اکنون چهار fork سورس باز از این محصول وجود دارند (Drizzle ، MariaDB ، OurDelta و Percona Server) ولی تنها آینده است که میزان موفقیت، پایداری و تداوم آنها را مشخص خواهد کرد.
پاسخ به بازخوردهای پروژهها
فونت نستعلیق
- نیاز هست سورس iText رو پچ کرد (غیر رسمی است).
- پشتیبانی رسمی از GUSB در سال 2014 به مجموعه iText اضافه خواهد شد. نظر نویسنده اصلی iText در این مورد:
- پشتیبانی رسمی از GUSB در سال 2014 به مجموعه iText اضافه خواهد شد. نظر نویسنده اصلی iText در این مورد:
It's indeed not supported yet. It's on our roadmap for next year (2014). – Bruno Lowagie