2011/09/22

‫Custom Paging بهینه و غیر Declarative در DataGrid

اگر بخواهید از الگوی MVP در برنامه‌های ASP.NET استفاده کنید بایستی بتوانید همه چیز را به CodeBehind انتقال دهید. این یعنی declarative و binding تقریباً تعطیل. یکی از امکانات مهمی که این وسط از دست می‌رود، امکان Paging بهینه کنترل GridView از طریق CodeBeind است. منظور از Paging بهینه فقط نمایش pager در قسمت پایین کنترل نیست، بلکه منظور این است که فقط رکوردهای مورد نیاز برای صفحه جاری (معمولاً ۱۰ تا ۲۰ تا) از دیتابیس فراخوانی شود. کنترل GridView از طریق DataSourceهای موجود در markup مثل ObjectDataSource یا SqlDataSource می‌تواند Paging بهینه را ارائه دهد. اما از طریق CodeBehind، یعنی handle کردن دستی event مربوط به Paging فقط یک Paging غیر بهینه ارائه می‌دهد. چون در CodeBehind راهی برای اعلام تعداد رکوردها به GridView وجود ندارد (+).

می‌شود به جای GridView از کنترل DataGrid استفاده کرد. DataGrid امکان Paging بهینه از داخل Code Behind را به خوبی پشتیبانی کرده و می‌توان آن را با استفاده از الگوی MVP به کار گرفت. برای این کار کافیست از eventهای SortCommand و PageIndexChanged و پراپرتی‌های VirtualItemCount و CurrentPageIndex استفاده نمایید. لطفاً نمونه زیر را ببینید.









2011/09/21

پروژه‌های خوب، شرکت‌های بد

من نمی‌دانم چه رمز و رازی وجود دارد که این همه پروژه خوب دست شرکت‌هایی می‌افتد که توان اجرای یک دهم آن پروژه را هم ندارند. آیا واقعاً باید به شانس اعتقاد پیدا کنیم؟

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

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

۳- قدیمی کار: شرکت‌هایی هم هستند که نه شهرت دارند (داشته‌اند)، نه گروه بازاریاب درست و حسابی، نه لینک و نه حتی یک تیم تولید درست و حسابی. اما باز هم صاحب یک category در بازار نرم‌افزار هستند و پروژه‌های از آن دست فقط به آنها سپرده می‌شود. درست است که وقتی آنها شروع به فعالیت در آن حوزه خاص کرده‌اند هیچ رقیبی نداشته و نرم‌افزار نصفه نیمه خود را همه جا فروخته‌اند، اما آیا هیچ شرکت دیگری وجود ندارد که بتواند محصول قابل رقابتی با آنها بسازد؟ آیا بازار نرم‌افزار اینرسی دارد و وقتی به یکی عادت کرد از آن دل نمی‌کند حتی اگر رقیب امکانات خیلی خیلی بهتری داشته باشد؟

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



واقعاً چطور می‌توان از این بازار و در این سیستم پروژه گرفت؟ آیا قوانین نانوشته ولی مشخصی دارد که ما بلد نیستیم؟ آیا مشکل از مشتری‌هاست که با چشم بسته انتخاب می‌کنند؟ آیا…؟




2011/09/20

ترس و گیجی تکنولوژیک

کنفرانس BUILD مایکروسافت در کنار همه اخبار داغ و هیجان انگیزی که راجع به ویندوز ۸ داشت، مثل هر خبر تکنولوژیک (کامپیوتر/نرم‌افزار) دیگری همراه بود با یک ترس قدیمی از رو آمدن چیزهای جدیدی که مجبوریم برای ماندن در دنیای برنامه‌نویسی دیر یا زود آنها را یاد گرفته و با آنها کار کنیم. البته منظور از ترس نه این که از یاد گرفتن چیزهای جدید متنفر و فراری باشیم. بلکه نگرانی از وقتی است که باید مجدداً گذاشته شده و تجربیات قبلی (نه کل آنها) است که باید فراموش شوند. همیشه با تغییر عمده تکنولوژی‌های نرم‌افزاری این نگرانی وجود دارد که این بار نتوانیم خودمان را به موقع برسانیم و عنان کار را از دست دهیم.

در کنار این ترس یک گیجی بدی هم وجود دارد. این گیجی ناشی از آن است که نمی‌دانیم آن چیزهای جدید چه هستند. ناشی از آن است که مدام اخبار ضد و نقیضی راجع به آنها می‌شنویم. مثلاً این که هنوز نمی‌دانیم Windows Phone 7 چه نقش و سهمی در دنیای موبایل‌ها دارند که به یک باره سر و کله ویندوز ۸ هم پیدا شده و او هم ادعا می‌کند قرار است دنیای موبایل‌ها و تبلت‌ها را کن فیکون کند. حال ما نمی‌دانیم قرار است ویندوز ۸ جایگزین WP7 باشد یا دو چیز جدا هستند و اگر قرار باشد ویندوز ۸ جایگزین WP7 باشد پس چرا فاصله انتشار این دو این قدر کم است؟




2011/09/19

اندر معایب چند شغله بودن

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

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




2011/09/18

‫دسترسی قانونی و تقریباً رایگان به MSDN با استفاده از BizSpark

آقای نصیری مطلب مفیدی تحت عنوان «هزينه استفاده از دات نت فريم ورك چقدر است؟» نوشته بود که اتفاقاً خیلی هم کامنت دار شد و کامنت‌های مفیدی هم داشت. در یکی از کامنت‌های آخر، آقای نصیری اشاره کرده بود به طرحی از طرف مایکروسافت به اسم BizSpark مبنی بر این که شرکت‌های تازه کار (startup) می‌توانند با استفاده از این طرح به مدت سه سال مشترک MSDN (شامل ویژوال استودیو و ویندوز و…) شده و در آخر دوره سه ساله فقط ۱۰۰ دلار بپردازند. خیلی کنجکاو شدم و سری به سایت طرح زدم.

خبر را واقعاً درست خوانده بودم. مایکروسافت سری محصولات MSDN خود را تقریباً به طور رایگان به شرکت‌هایی که در سه سال اول تاسیس باشند، درآمدی کمتر از یک میلیون دلار در سال داشته باشند و به صورت خصوصی اداره شوند ارائه می‌دهد (+). البته مایکروسافت چند شرط کوچک دیگر هم دارد از جمله این که شما از این محصولات فقط برای برنامه‌نویسی استفاده کنی و مثلاً برای راه اندازی یک شرکت web hosting از آنها استفاده نکنی. چرا مایکروسافت چنین تخفیف بزرگی می‌دهد؟ چون مایکروسافت معتقد است همین شرکت‌های کوچک بعداً به مشتریانی بزرگ برای او تبدیل خواهند شد (+). ظاهراً مایکروسافت این امکان را برای شرکت‌های عضو این طرح فراهم می‌کند که بتوانند به نوعی از بازار کار مایکروسافت کار بگیرند. نکته جالب ولی همیشگی در مورد این طرح این است که اسم کشور ایران در فهرست کشورها در صفحه ثبت نام وجود ندارد. به عکس زیر توجه کنید:




جهت کسب اطلاعات بیشتر به این لینک هم نگاهی بیندازید.




2011/09/17

‫ریسک‌های freelance شدن

اگر مدت‌ها یک کارمند شرکتی بوده باشید و بخواهید به کار پروژه‌ای (freelance) سویچ کنید، ریسک‌های زیر را می‌توان برای این تغییر روش متصور شد:


۱- آیا با کار پروژه‌ای می‌توانم همینقدر پولی که الان به صورت ماهانه در می‌آورم، در آورم؟

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


۲- آیا توانایی لازم در پوشش دادن صفر تا صد پروژه را دارم؟

به عنوان یک کارمند/برنامه‌نویس شرکتی ممکن است در بعضی قسمت‌های تولید نرم‌افزار مهارت زیادی داشته باشید ولی در بعضی قسمت‌ها نه. این می‌تواند یک پاشنه آشیل برای شما به عنوان یک freelance باشد. به عنوان مثال ممکن است در نوشتن کدهای دسترسی به دیتابیس یا تحلیل طراحی سیستم خیلی ماهر باشید ولی در طراحی UI، نصب ابزارهای لازم مثل سورس کنترل یا تجارب deployment در محیط‌های مختلف ضعیف باشید.


۳- آیا برآورد هزینه و زمان پروژه را به درستی انجام می‌دهم؟

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


۴- پروسه خروج از شرکت فعلی و تغییر شرایط زندگی چطور خواهد بود؟

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




2011/09/15

‫مزایای الگوی MVP

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

یکی از بهترین چیزهایی که MVP برای من داشت این بود که تقریباً به من اجازه نمی‌داد که در صفحات ASPX از کنترل‌های Data Aware مثل Grid و Form به صورت خودکار و markup استفاده کنم. به عبارت دیگر Data Binding و واگذار کردن همه چیز به DataSourceها ممنوع شده بود. این طوری من مجبور شدم همه عملیات مثل نمایش اطلاعات در صفحه یا خواندن اطلاعات از کنترل‌ها از طریق CodeBehind انجام دهم. خوبی این کار در این بود که جلوی بعضی خطاها را همان هنگام compile می‌گیرم. مثل اگر نام فیلدی را اشتباه تایپ کرده باشم یا تعداد پارامترهای دریافتی یک متود را رعایت نکرده باشم، همان زمان کامپایل خطا را می‌بینم. در حالت DataBinding خودکار نام فیلدها، متودها و اطلاعات پارامترها به صورت string غیر قابل کامپایل در فایل aspx/ascx قرار دارد و تا زمانی که صفحه در یک مرورگر باز نشود نمی‌توان متوجه خطا شد.

حس می‌کنم MVP قدرت تقسیم کار و کار تیمی را افزایش می‌دهد. چون همان کاری که همیشه در Codebehind انجام می‌شد، حتی با فرض این که دسترسی به دیتابیس و logic کار در یک لایه جداگانه انجام می‌پذیرد، را هم می‌توان به دو تیکه کاملاً مجزا تقسیم کرده و به افراد مختلف سپرد. این موضوع کار designerها (طراحی صفحات، گرافیک، جاوا اسکریپت) را هم ساده می‌کند. چون می‌توانند به صورت مستقل از برنامه‌نویس‌ها و بدون آن که مجبور باشند کار همدیگر را خراب کنند، با خیال راحت کارشان را انجام دهند. خوانا شدن کد برنامه، خصوصاً آنچه که در Presenter قرار داد، بخش دیگری از مزایای MVP است که من خودم با دستان خودم لمس کردم.

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

پ.ن.: به این لینک هم که توضیحاتی کلی راجع به مدل‌های MVP و مشابه MVP است نگاهی بیندازید.




2011/09/13

‫انتقال فردیس از codeplex به github

پروژه «فردیس» از سایت codeplex به github منتقل شد. چون کار کردن با یک سورس کنترل distributed مثل git خیلی راحت‌تر از svn یا TFS است.

هم زمان با این انتقال، شماره نسخه «فردیس» یکی بالا رفته و به 0.23 رسید. در این نسخه به جز توابع کار با یونیکد و حروف فارسی و غیر فارسی، توابع کوچکی هم برای کار با تاریخ‌های شمسی و غیر شمسی و کار با stringها خصوصاً stringهای فارسی اضافه شد.




اطلاعات بیشتر:

* آدرس جدید
* دسترسی به سورس
* دریافت سورس با گیت: git@github.com:afsharm/fardis.git
* دریافت فایل زیپ سورس
* دریافت نسخه اجرایی v0.23
* ثبت ایرادات و اشکالات
* ویکی




2011/09/12

وبلاگ رسمی کارویس

برای سایت کارویس، سایت اختصاصی کاریابی برای برنامه‌نویسان، یک وبلاگ ساختم. از این بعد کلیه اخبار و اطلاعات مربوط به کارویس در وبلاگ خودش منتشر خواهد شد. آدرس وبلاگ http://blog.karvis.ir/ و فید آن http://blog.karvis.ir/syndication.axd است. برای کسب اطلاعات بیشتر به اولین پست وبلاگ کارویس مراجعه کنید.




انتقال سایت کارویس به آدرس جدید

سایت کاریابی اختصاصی برنامه‌نویسان، کارویس، صاحبخانه شد و از آدرس قبلی به دامنه اختصاصی خودش یعنی http://karvis.ir منتقل شد. هدف از این کار توسعه بیشتر کارویس و افزایش rank آن است.

لطفاً فید قبلی را پاک و از فید جدید به آدرس http://karvis.ir/feed.svc/all?format=rss استفاده نمایید.




2011/09/06

اشکال زدایی اردکی

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

افراد راه حل‌های مختلفی برای این طور مواقع دارند. مثلاً بعضی‌ها به پیاده روی می‌روند، بعضی‌ها کار را تعطیل می‌کنند و به منزل بر می‌گردند، بعضی‌ها دوش می‌گیرند و… اما یک راه حل جالب دیگر وجود دارد: اشکال زدایی اردکی.


در این روش برنامه‌نویس یک اردک پلاستیکی (اسباب بازی) را روی میز گذاشته و تک تک خطوط برنامه را برایش توضیح می‌دهد. به این ترتیب امکان پیدا کردن خطا خیلی بالاتر می‌رود. تجربه نشان داده که توضیح دادن کامل برنامه به یک نفر دیگر می‌توان در پیدا کردن زودتر باگ موثر باشد. نام دیگر این روش «بلند فکر کردن» است.




‫‫آموزش دات‌نت در ویژوال استودیو با ابزار کمکی Feature Builder

حتماً تا حالا ویدئوهای آموزشی مربوط به دات‌نت را دیده‌اید. در این طور ویدئوها یک نفر ماوس و صفحه کلید را به دست گرفته و شروع به ساخت یک پروژه مثل ASP.NET یا WCF کرده و قدم  به قدم تمامی مراحل را در ویژوال استودیو طی کرده و همه را توضیح می‌دهد.

آیا دوست داشتید آن یک نفر کنار شما بوده و همه مراحل را یکی یکی توضیح داده و خود شما مراحل را جلو ببرید؟ هر جا هم که در تایپ یک نمونه کد یا اجرای commandهای ویژوال استودیو مشکل پیدا کردید به شما کمک کرده و مشکل را برطرف نماید؟

اگر جواب مثبت است نگاهی به این نمونه که برای آموزش مقدمات Workflow Foundation است بیندازید. این نمونه آموزشی که با Feature Builder Power Tools ساخته شده، به شما کمک می‌کند تا گام به گام مقدمات WF را یاد بگیرید. نمونه مورد بحث از دو قسمت Guidance Workflow Explorer و Guidance Browser تشکیل شده است. شما از طریق Explorer کلیه مراحل را می‌بینید و از طریق Browser توضیحات هر مرحله را. جالب است بدانید که لینک‌های نمایش داده در Browser به commandّهای خود ویژوال استودیو وصل هستند. یعنی ممکن است با کلیک روی یک لینک، پروژه شروع به اجرا کند یا یک فایل جدید به پروژه اضافه شود. این ابزار آموشی به صورت یک add-in در ویژوال استودیو نصب می‌شود.

اگر شما هم مایلید برای آموزش برنامه‌نویسی از طریق ویژوال استودیو از Feature Builder Power Tools استفاده کنید نگاهی به اینجا و اینجا بیندازید. ساختن یک نمونه آموزشی با این ابزار چندان سخت نیست. فقط کافی است مستندات را به صورت فایل mht (شبیه html) تهیه کرده و با کمک UML Activity Diagram آنها را تبدیل به یک نمونه آموزشی مفید نمایید.




2011/09/02

تسلیم می‌شویم

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

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

۱- قبل از صدور دستور commit، فایل‌های تغییر یافته‌شان را save کنند،

۲- حذف و اضافه فایل به پروژه در ویژوال استودیو نیاز به Save all یا اقلاً یک Rebuild Solution دارد،

۳- اگر دو نفر یک جای یکسان از یک فایل واحد را تغییر دهند، merge conflictی به وجود می‌آید که خود git نمی‌تواند آن را به طور خودکار resolve (حل) کند. و این از منطق کار تیمی و منطق فکری نشات می‌گیرد و جز نقایص git یا هر سورس کنترل دیگری نیست،

۴- ساختار پروژه در ویژوال استودیو خودش در یک فایل خاص با پسوند csproj نگهداری می‌شود پس به وجود آمدن merge conflict در آنجا هم امکان‌پذیر است،

۵- برای پیشگیری از merge conflict اول هر روز کاری یا حتی دو سه بار در روز، قبل از شروع کار باید اول تغییرات دیگران را دریافت کرد،

۶- نگهداری فایل یک کلاس یا winform با بیش از ۱۵۰۰ خط کار درستی در یک محیط تیمی و تحت سورس کنترل نیست،

۷- …



تنها فرق حالت اول و دوم این است در که در حالت اول خود ویژوال استودیو همه کارها را انجام می‌دهد. مثلاً قبلاً از check-in شما را مجبور می‌کند که همه فایل‌ها را save کنید. بنابراین کسی مجبور نیست از معدن گچش استفاده کرده و حواسش به save فایل‌ها قبل از ارسال به سرور باشد.

این است که دست‌هایمان را به نشانه تسلیم بالا برده و اجازه می‌دهیم دوستان به جای استفاده از git، سورس مشترکشان را روزی ده بار از طریق usb flash با هم به اشتراک بگذارند و خودشان نقش سورس کنترل را بازی کنند.

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

.
.
.
.

باشد که روزی به راه راست هدایت شویم.