مولانا

به جان جمله مستان که مستم
بگیر ای دلبر عیار دستم

به جان جمله جانبازان که جانم
به جان رستگارانش که رستم

عطاردوار دفترباره بودم
زبردست ادیبان می نشستم

چو دیدم لوح پیشانی ساقی
شدم مست و قلم‌ها را شکستم

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

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

طبق آنچه در ویکیشنری آمده کلمه 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

 

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

دروغ های فنی در پروژه های نرم افزاری

دروغ گویی در پروژه های نرم افزاری بسیار رایج است!  اصولا دروغ گو ها در پروژه های نرم افزاری خوب پیشرفت می کنند. به نظرم یکی از دلایل این پیشرفت، ماهیت غیر قابل لمس نرم افزار است. اگر در پروژه های نرم افزاری کار کرده باشید احتمالا با این پدیده مواجه شده اید. در این باره مقالات متعددی وجود دارد. در یکی از این مقالات که رابرت گلس و سایرین با عنوان “Lying on software projects” به چاپ رسانیده اند اطلاعات جالبی در این باره وجود دارد. که در این پست باهم به بررسی آن می پردازیم.

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

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

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

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

این دروغ گوهای خوش خط و خال به راحتی با مجموعه ای دروغ که اثبات خلاف بودن آنها به راحتی ممکن نیست و تنها با گذشت زمان و به بار آوردن خسارات برای مدیران مشخص می شود اعتماد مدیران را جلب کرده و به سادگی یک شبه ره صد ساله می روند. البته به نظر من اگر مدیر خود دروغ گو نباشد اما به راحتی فریب این دروغ گویان را بخورد یعنی مدیر خوبی نیست! مدیریت صحیح نیازمند سنجه (Metric) است تا بتوان با سنجه ها تصمیم گیری کرد. ویژگی که اکثر مدیران ما از آن بی بهره اند.

البته ماه هیچ گاه پشت ابر نمی ماند…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

تست هوش

چند روز پیش برای کاری باید تست هوش می دادم. تست ارائه شده از نوع ماتریس های رِیوِن (Raven’s progressive matrices) بود. تست های رِیوِن سعی در سنجش هوش منطقی فرد دارند. بدین ترتیب که با نمایش مجموعه ای الگوی هندسی (۶۰ سوال) سعی می کنند منطقی بودن انتخاب های افراد را بدون دانش قبلی در زمینه مسئله حل شده سنجش کنند.

اما نکته ای که نظر مرا جلب کرد تست ها نبود. سازمانی که تست را ارائه می کرد سازمانی بزرگ با تعداد زیادی متخصص است و مسلما ادعای زیادی هم در زمینه منابع انسانی دارد. تست ارائه شده دقیقا کپی تست وب سایت https://iqpro.org بود. یعنی دوستان عزیز در بخش منابع انسانی شرکت مربوطه دقیقا تصاویر این وب سایت را بدون خواندن متن پایین صفحه آن کپی کرده بودند. متن اخطار پایین صفحه این وب سایت به شرح زیر است:

This IQ test is particularly difficult as its normed with individuals who have scored 130+ in Mensa IQ test

به فارسی: این تست هوش دشوار است چون برای افرادی تهیه شده که در تست هوش منسا (Mensa) نتیجه ۱۳۰ و بیشتر گرفته اند.

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

متاسفانه اکثر متخصصین وطنی بدون آگاهی، اقدام به کپی برداری از منابع خارجی می کنند بدون آنکه حتی زحمت یک بررسی ساده را به خود بدهند. اگر هدف واقعا سنجش هوش است آیا خود متخصص عزیز توانسته در آزمون منسا با یک بار شرکت رتبه قابل قبولی آورد؟ آیا کارکنان سازمان مربوطه اعضای منسا هستند؟ اگر جواب مثبت است چرا وضعیت سازمان های ما اینگونه است؟
عموما، متخصصان اروپایی و آمریکایی که این تست ها را طراحی و از آن استفاده می کنند دانش و درک بسیار زیادی از آمار، فلسفه علم و روش تحقیق دارند. آنها از اعتبار درونی (Internal validity) و اعتبار بیرونی (External validity) روش ها و قابلیت اعتماد (Reliability) آنها آگاهند. بر خلاف اکثر متخصصین ما! متاسفانه گاهی می خواهیم کار مثبتی انجام دهیم اما با سپردن آن کار به دست افراد غیرمتخصص، بی تعهد و بیسواد فقط باعث هدر رفتن وقت سایرین می شویم. گاهی آنکه نیت خیر دارد باعث شر می شود …

توجه: تست های ارائه شده در وب سایت https://iqpro.org رایگان نیستند. شرکت در آزمون رایگان است اما برای مشاهده نتایج باید مبلغی بپردازید. برای نمونه ای رایگان می توانید از برنامه تحت اندروید Raven IQ Test استفاده کنید.

نکته: تست های وب سایت https://iqpro.org دشوار هم نیستند و با کمی فکر و چند بار تمرین می توانید به ساده گی آنها را حل کنید. توجه داشته باشید رتبه پایین در آزمون های IQ لزوما به معنای بهره کم هوشی نیست. با تمرین و آموزش به ساده گی می توانید در تقریبا تمامی این تست ها بالاترین رتبه را کسب کنید. رتبه پایین بیشتر به معنای نیاز به آموزش و تمرین است.

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

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

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

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

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

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

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

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

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

موسیقی هفته

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

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

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

دستنوشته های غلامرضا صابری تبریزی درباره علم و گاهی مسائل حاشیه ای