همه‌ی نوشته‌های غلامرضا صابری تبریزی

تاریخچه سیستم های کنترل نسخه

طبق آنچه در ویکیشنری آمده کلمه Version، که در فارسی به نسخه ترجمه شده، از قرن شانزدهم در زبان انگلیسی به کار می رفته است. این کلمه یعنی: “فرم (صورت) دیگری از چیزی”. می توان در مهندسی نرم افزار کلمه “چیزی” را همان نسخه صفر کد (Initial commit) در نظر گرفت. در این حالت “فرم های دیگر” تغییراتی هستند که به مرور روی نسخه صفر کد انجام می شود تا نرم افزار نهایی به دست آید.

اما در اصطلاح “کنترل نسخه”، که معادل فارسی Version Control است به جز Version کلمه دیگری هم وجود دارد (کلمه Control). می توان گفت کنترل در اینجا به معنای مدیریت است.

تا اینجا اجزای اصطلاح کنترل نسخه را یک به یک بررسی کردیم! حال، نوبت به تعریف این اصطلاح در مهندسی نرم افزار است. در ادامه این تعریف را از منظر دو منبع بررسی می کنیم:

  • سیستم کنترل نسخه ابزاری است که تغییرات اعمال شده بر فایل یا مجموعه ای از فایل ها را در طول زمان ذخیره می کند تا در آینده بتوان به این تغییرات دسترسی داشت.
  • سیستم کنترل نسخه نرم افزاری است که به توسعه دهندگان در کار تیمی کمک کرده و نسخه ای کامل از تاریخچه پروژه را هم آرشیو می کند.

در واقع سیستم کنترل نسخه به شما و تیمتان امکان می دهد تغییرات اعمال شده در طول مدت پروژه را  دنبال کنید و مثل Microsoft Word امکان Undo و Redo برایتان فراهم می آورد. در واقع می توان گفت سیستم های کنترل نسخه دو ویژگی اصلی در اختیارتان قرار می دهند:

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

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

در حال حاضر سیستم های کنترل نسخه بسیاری وجود دارند. سیستم هایی مثل Subversion، Git، Mercurial و غیره. ممکن است از خود بپرسید تفاوت این سیستم ها در چیست و کدام یک برای کار شما مناسب تر است؟ در واقع بر اساس مدل کارکرد می توان سیستم های کنترل نسخه را به سه دسته مختلف تقسیم کرد:

  • سیستم های کنترل نسخه محلی: این سیستم ها برای یک کاربر طراحی شده اند و فایل ها را روی هارددیسک کاربر نگه داری می کنند و امکان استفاده تحت شبکه ندارند مثل RCS یا SCCS. به علاوه در این سیستم ها چند کاربر نمی توانند به صورت همزمان فایلی را تغییر دهند
  • سیستم های کنترل نسخه متمرکز: در این سیستم ها یک سرویس دهنده وجود دارد که فایل های مورد نظر روی آن قرار دارند. کاربران باید ابتدا آخرین نسخه پروژه را دریافت کنند. تغییرات مورد نظر را انجام دهند و در نهایت کدهای تغییر یافته را به سرویس دهنده ارسال کنند. اگر موقع ارسال مشخص شود کاربر دیگری قبلا همین فایل ها را تغییر داده پیش از ارسال باید تغییرات اعمال شود. برخی از سیستم های این گروه عبارتند از Subversion، CVS و غیره.
  • سیستم های کنترل نسخه توزیع شده: در سیستم های توزیع شده یک نسخه مرکزی از فایل ها وجود ندارد و هر کاربری تمامی تاریخچه پروژه ( بر خلاف سیستم های متمرکز که کاربران فقط نسخه آخر را در اختیار دارند) را در اختیار دارد. هر کاربر تغییرات مورد نظر خود را اعمال کرده و در نسخه محلی خود ذخیره می کند. در این حالت کاربران می توانند پس از اتمام تغییرات نسخه محلی خود را با یک نسخه راه دور همگام سازی کنند. سیستم هایی مثل Git و Mercurial از این مدل استفاده می کنند.

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

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

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

 

موسیقی هفته – جون بایز

امروز ترانه ای از جون بایز (Joan Baez) خواننده و ترانه سرای سبک فولک آمریکایی را براتون انتخاب کردم. مدتی قبل یکی از دوستان این موسیقی زیبا را برای من فرستاد. امیدوارم از شنیدن این ترانه زیبا لذت ببرید. شعر این ترانه در ادامه آمده است. برای دانلود ترانه اینجا کلیک کنید.

On a wagon bound for market
There’s a calf with a mournful eye
High above him there’s a swallow
Winging swiftly through the sky
How the winds are laughing
They laugh with all the their might
Laugh and laugh the whole day through
And half the summer’s night
Donna Donna Donna Donna
Donna Donna Donna Don

“Stop complaining”, said the farmer
Who told you a calf to be
Why don’t you have wings to fly with
Like the swallow so proud and free
How the winds are laughing
They laugh with all the their might
Laugh and laugh the whole day through
And half the summer’s night
Donna Donna Donna Donna
Donna Donna Donna Don

Calves are easily bound and slaughtered
Never knowing the reason why
But whoever treasures freedom
Like the swallow has learned to fly
How the winds are laughing
They laugh with all the their might
Laugh and laugh the whole day through
And half the summer’s night

 

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

لارا فابیان – Mistral gagnant

به عنوان موسیقی هفته ترانه ای زیبا به زبان فرانسوی و به نام Mistral Gagnant رو با اجرای بسیار زیبای لارا فابیان براتون انتخاب کردم که امیدوارم از شنیدن اون لذت ببرین. می توانید ترانه را از اینجا دانلود کنید. به علاوه ترجمه انگلیسی شعر این ترانه هم اینجا قابل مشاهده است.

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

نرم افزارهایی برای مراقبت از چشم

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

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

اما Iris تنها راه حل موجود نیست. نرم افزارهای بسیار دیگری هم وجود دارند. در این میان از نظر بنده Eye care plus هم نرم افزار بسیار خوبی است. این برنامه قابلیت نصب روی گوشی اندروید شما را داشته و روزی سه بار (صبح، ظهر و شب) مجموعه تمرینات بسیار خوبی به شما پیشنهاد می دهد. اگر تا به حال به اپتومتریست مراجعه کرده باشید ممکن است با برخی از این تمرینات آشنا باشید. این نرم افزار طراحی و رابط کاربری بسیار مناسبی دارد و پیشنهاد می کنم حتما آن را امتحان کنید. می توانید این نرم افزار را از اینجا دانلود و نصب کنید

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

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

حقیقت تلخ صنعت شکلات

آیا تا به حال موقع خوردن شکلات به این فکر کرده اید که این شکلات از کجا آمده است؟ آیا همه افراد که در زنجیره تولید و توزیع این شکلات بوده اند از این فرآیند لذت برده اند؟
مستند The Dark-side of Chocolate به بررسی بردگی و قاچاق کودکان برای کار در مزارع شکلات ساحل عاج و غرب آفریقا که ۶۹ درصد کل شکلات جهان را تولید می کند و سکوت بزرگترین تولید کننده گان و توزیع کننده گان شکلات (مثل Nestle) در باره این موضوع می پردازد. سکوتی که به قیمت جان بسیاری تمام می شود. و ذکر این جمله که فکر می کنم از امام علی (ع) است خالی از لطف نیست:
هیچ ثروتی در جایی انباشته نمی‌شود، مگر اینکه حقی در کنار آن از بین رفته باشد!

متاسفانه لینک دانلود مستند در وب سایت های ایرانی وجود نداشت. اما می توانید مستند را در یوتیوب مشاهده کنید.

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

محمدعلی بهمنی

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

چگونه شرح دهم لحظه لحظه خود را
برای این همه ناباور خیال پرست؟

به شب نشینی خرچنگ های مردابی
چگونه رقص کند ماهی زلال پرست

رسیده ها چه غریب و نچیده می افتند
به پای هرزه علفهای باغ کال پرست

رسیده ام به کمالی که جز اناالحق نیست
کمال دار برای من کمال پرست

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

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

موسیقی هفته

 به عنوان موسیقی این هفته اثری بسیار زیبا از خواننده مشهور ایتالیایی آندریا بوچلی (Andrea Bocelli) را انتخاب کردم. این اثر به زبان ایتالیایی اجرا شده و می توانید ترجمه انگلیسی آن را اینجا مطالعه کنید. بوچلی صدای بسیار زیبا و وسیعی دارد امیدوارم از شنیدن این اثر لذت ببرید.

برای دانلود اینجا کلیک کنید.

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

درس افزار دانشگاه صنعتی شریف

درس افزار، سیستمی است که محتوای کلاس های درسی دانشگاه با استفاده از آن در اختیار عموم قرار می گیرد. این محتوا شامل فیلم، تمرین ها و … می شود. اولین درس افزار ها طبق اطلاعات موجود در صفحه درس افزار ویکی پدیا در اواخر دهه نود در اروپا و امریکا عرضه شدند و امروز پس از گذشت حدودا هجده سال از تولد چنین سیستم هایی و مشخص شدن همه جزئیات اکوسیستم آنها دانشگاه شریف اقدام به راه اندازی این سیستم کرده است. هرچند این سیستم تا بلوغ کامل راه زیادی در پیش دارد اما تاسیس آن اقدام بسیار مثبتی از سوی دانشگاه صنعتی شریف است. می توانید با مراجعه به وبسایت http://ocw.sharif.edu از مطالب آن استفاده کنید.

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

موسیقی هفته

امروز ترانه I dreamed a dream از نسخه موزیکال بینوایان با اجرای زیبای سوزان بویل(Susan Boyle)را انتخاب کردم. بویل خواننده مشهوری نیست اما صدای زیبایی دارد. امیدوارم از شنیدن این اجرا لذت ببرید.

برای دانلود اینجا کلیک کنید

I dreamed a dream in time gone by
When hope was high and life worth living
I dreamed that love would never die
I prayed that God would be forgiving

Then I was young and unafraid
And dreams were made and used and wasted
There was no ransom to be paid
No song unsung, no wine untasted

But the tigers come at night
With their voices soft as thunder
As they tear your hopes apart
And they turn your dreams to shame

And still I dream he’d come to me
That we would live the years together
But there are dreams that cannot be
And there are storms we cannot weather

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

قافله عمر

مدتی پیش طبق درخواست نشر دانشگاهی کیان به روز رسانی کتاب برنامه نویسی با پایتون را آغاز کردم. این کتاب اولین بار در سال ۱۳۹۳ چاپ شد و در سال ۱۳۹۴ به چاپ دوم رسید. قرار است در این ویرایش کتاب برای استفاده در نسخه سوم زبان پایتون به روز رسانی شود. البته به جز به روز رسانی برای پایتون ۳ تغییرات دیگری هم وجود دارد که پس از چاپ طی پستی ارائه خواهم داد.

اما نکته جالبی که با آن مواجه شدم گذر زمان است. امروز به برخی از حاشیه نویسی های ویرایش اول نگاه می کردم که متعلق به پانزدهم فوریه ۲۰۱۳ میلادی است. طبق http://www.time.ir این تاریخ مطابق با ۲۷ بهمن ماه ۱۳۹۱ است! در آن زمان چند فصل اول کتاب را ترجمه کرده بودم! از آن زمان تا امروز که این مطلب را می نویسم ۱۴۰۲ روز یا به عبارت دیگر ۳ سال و ۱۰ ماه و ۳ روز می گذرد. مثل یک چشم بر هم زدن. این گذر سریع مرا یاد این شعر از خیام می اندازد:

این قافله عمر عجب میگذرد
دریاب دمی که با طرب میگذرد

ساقی غم فردای حریفان چه خوری
پیش آر پیاله را که شب میگذرد

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