گیت (Git) چیست؟

گیت (به لاتین Git)، یک سیستم کنترل نسخه (Version Control) یا کنترل ورژن است. سیستم های کنترل نسخه (کنترل ورژن)، در برنامه نویسی و مهندسی نرم افزار کاربردهای فراوانی دارند.

برای مثال، فرض کنید یک برنامه نویس هستید و در حال نوشتن یک وب سایت می باشید. شما کد نویسی وب سایت را انجام میدهید و سایت را آماده تحویل میکنید. در این جا، یک نسخه از وب سایت خود را در سیستم Version Control ذخیره کرده (نام این نسخه را “نسخه شماره ۱” میگذارید) و کار برنامه نویسی وب سایت را ادامه می دهید. حال اگر بعد از مدتی (به دلیل اینکه مثلا یک فایل را به اشتباه پاک کرده اید) خواستید، به نسخه شماره ۱، برگردید، سیستم کنترل ورژن، این کار را برای شما به راحتی انجام می دهد.

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

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

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

گیت (Git)، در مقایسه با Subversion یا سیستم های کنترل ورژن دیگر، به نظر کامل تر و به روز تر می رسد. در این سیستم (به دلیل توزیع شدگی)، Single Point Of Failure وجود ندارد. به این معنی که، یک کپی کامل (شامل تمامی نسخه های یک پروژه)، بر روی سیستم هر کدام از برنامه نویس ها، ذخیره شده، و در صورت خرابی سرور، خللی در کار برنامه نویس ها و مهندسان نرم افزار ایجاد نمیکند.

مطالعه بیشتر در اینجا و اینجا.

زبان برنامه نویسی پایتون (Python Programming Language) چیست؟

پایتون یک زبان برنامه نویسی، برای ساخت برنامه های کامپیوتری است. این زبان برنامه نویسی، برای یادگیری و کار، بسیار راحت و سریع است. این در حالی است که کدهای پایتون، در لحظه تفسیر می شوند و نیازی به کامپایل کردن آن ها نیست.
اگر شما بخواهید یک برنامه کامپیوتری (مثلا برنامه ای شبیه ماکروسافت آفیس)، بنویسید، نیاز دارید از یک زبان برنامه نویسی استفاده کنید، تا به وسیله آن بتوانید، نرم افزار مورد نظر خود را بنویسید. یکی از این زبان ها، زبان برنامه نویسی پایتون (python) است. این زبان در مقایسه با زبان های برنامه نویسی دیگر، قابلیت های قابل توجهی دارد.
زبان برنامه نویسی پایتون، به خاطر استفاده زیادی که از این زبان، در سطح جهان می شود، دارای کتابخانه ها (Libraries) و ماژول های بسیار زیاد و گسترده ای است. این زبان به راحتی با سیستم عامل های لینوکس، ویندوز و مکینتاش ارتباط بر قرار کرده و میتوانید کدهای این زبان را بر روی دستگاه ها و پلتفرم های مختلف، اجرا کنید.
همچنین این زبان،‌ قابلیت پیاده سازی وب سایت های اینترنتی را نیز دارد. کتابخانه معروف این زبان به اسم جنگو (Django) یک چهارچوب قدرتمند برای این زبان ساخته است، که به وسیله آن، میتوانید وب سایت های قدرتمند با توان پردازشی بالا را نیز در اختیار کاربران قرار دهید.
پایتون همچنین در زمینه کاربردهای عملی (Scientific) نیز، دارای کتابخانه های قدرتمند و بهینه شده، برای پردازش های سریع می باشد.

اطلاعات بیشتر در اینجا یا اینجا میتوانید پیدا کنید.

بی پی ام اس (BPMS) چیست؟

نرم افزار مدیریت فرآیندهای تجاری (Business Process Management System)، به دسته‌ای از نرم افزارها گفته می شود، که با کمک آن‌ها میتوانید فرآیند داخل سازمان خود را، مدل کرده و فرآیند ها را به سرعت به نرم افزار کاربردی تبدیل کنید.
مثال زیر را در نظر بگیرید:
شما یک شرکت بیمه ای هستید، و میخواهید فرآیندِ ثبت‌نام و پرداخت‌های کاربران را، به صورت ماهانه، مدیریت و تنظیم کنید. برای این کار احتمالا، سراغ یک برنامه‌نویس یا یک شرکتِ برنامه‌نویسی میروید و برای آن‌ها، فرآیند های خود را توضیح می دهید. برنامه‌نویسان نیز، یک نرم‌افزار، طبقِ فرآیند‌های شما، برایتان تولید می کنند.
حال فرض کنید، چند ماه بعد، برخی از فرآیند‌های سازمانِ شما تغییر کرد، یا اینکه چند فرآیندِ جدید به سیستم سازمانتان اضافه شد. در این صورت، باز هم بایستی از برنامه‌نویسان درخواست کنید تا برای شما تغییراتِ مختلف را انجام دهند. در واقع، هر گاه تغییری اساسی (یا حتی جزئی) در فرآیند داشتید، احتمالاً باید یک بار دیگر نرم‌افزار خود را توسط برنامه‌نویسان به روزسانی (Update) کرده و نسخه جدیدی را جایگزینِ نسخه قبلی کنید.
BPMSها، برای حل همین مشکلات طراحی شده‌اند. به گونه‌ای که شما با در اختیار داشتن (و البته یادگیری استانداردهای BPM)، میتوانید خودتان، فرآیندهای سازمان را در سیستمِ BPMS طراحی کرده و سیستم، در نهایت یک خروجی نرم افزاری در اختیار شما قرار میدهد. با این کار هر گاه فرآیندها تغییر کرد، خودتان میتوانید، با تغییر در نرم افزار BPMS موجود، یک خروجی جدید از نرم افزار تهیه کرده و فرآیندهای جدید را در آن مشاهده کنید.
البته برای استفاده از BPMSها، نیاز دارید تا استانداردِ BPM را نیز یاد بگیرید.

لاراول (Laravel) چیست؟

لاراول یک چهارچوب (framework) نرم افزاری، تحتِ وب، برای زبان برنامه‌نویسی PHP است.
برای مثال، اگر بخواهید یک وب سایت، با زبان برنامه نویسی PHP بنویسید، نیاز دارید تا از یک سری ساختار (Structure) و الگوهای نرم افزاری (Design Patterns) پیروی کنید. لاراول این امکان را برای شما فراهم آورده است، به گونه ای که با استفاده از قواعد و الگوهایی که فراهم آورده است، شما را مجبور میکند، تا از این الگوها، پیروی کنید. همان‌طور که احتمالا شنیده‌اید، لاراول از الگوی MVC استفاده میکند.
همچنین برای پیاده‌سازیِ یک وب‌سایت، احتمالاً نیاز به ماژول‌های مختلفی دارید. مثلا ماژول آپلودِ تصاویر، یا ماژولِ ورودِ کاربران به سیستم. میتوانید خودتان وقت بگذارید و قسمت های مختلف را، با زبانِ برنامه‌نویسیِ PHP بنویسید. اما لاراول، این کار را برای شما انجام داده است. لاراول، شامل مجموعه‌ی بسیار بزرگی از کتابخانه‌ها (Libraries) برای زبان PHP است. مثلا، ماژولِ آپلودِ تصویر، در لاراول وجود دارد و شما به راحتی میتوانید، فقط آن را فراخوانی کنید، بدون اینکه بخواهید خودتان بار دیگر این ماژول را از ابتدا بنویسید.
در کل استفاده از لاراول، در پیاده سازی یک وب‌سایت (یا هر سامانه آنلاین دیگر)، برنامه نویسی را برای PHP، بسیار ساده‌تر کرده، و تمرکز اصلی برنامه نویس را بر روی فرآیندهای کلی (و نه برنامه نویسی ماژول های جزئی تر) قرار میدهد. با این کار، سرعت برنامه نویسی بسیار بیشتر می شود، در عین حال، محصول نهایی نیز، بسیار با کیفیت‌تر و پایدارتر (Stable) می‌شود (به خاطر اینکه، ماژول های نرم افزاری نوشته شده توسط Laravel، به وسیله ی برنامه‌نویسان قدرتمند پیاده‌سازی و تست شده‌اند). همچنین، اگر برنامه‌نویس دیگری بخواهد، بعداً بر روی این نرم افزار کار کند، احتمالاً بسیار راحت‌تر خواهد بود، زیرا ساختارها و قواعد شناخته شده ی مهندسیِ نرم‌افزار، به خوبی در لاراول به کار گیری شده است.

ماشین مجازی (Virtual Machine) چیست؟

به صورت ساده، ماشین مجازی، یک سیستم عامل کامل است، بر روی سیستم عامل فعلی شما. برای مثال، یک شما یک نرم افزاری خریده اید که فقط بر روی ویندوز xp قابل اجرا است، این در حالی است که سیستم عامل کامپیوتر شما، ویندوز ۸ است. با استفاده از یک ماشین مجازی، به راحتی می توانید، یک ویندوز xp، را بر روی یک ویندوز ۸، نصب کنید. سپس نرم افزار مورد نیاز خود را بر روی سیستم عامل ویندوز xp نصب کنید. یا برای مثال، اگر شخصی بخواهد یکی از توزیع های سیستم عامل لینوکس (مثلا Ubuntu) را بر روی ویندوز نصب کند. با استفاده از ماشین مجازی، به راحتی این کار را انجام می دهد.

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

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

داکر (Docker) چیست؟

اگر یک برنامه‌نویس باشید، حتماً میدانید که برای تولید یک برنامه، ابتدا باید یک سری محیط‌های عملیاتی را اجرا کنید. مثلا فرض کنید، شما برنامه‌نویس با زبان برنامه نویسیِ PHP هستید. احتمالاً باید یک وب‌سرور (مثلا آپاچی) را بر روی سیستم خود نصب کنید. احتمالا یک سرور Mysql نیز برای مدیریتِ پایگاه‌داده احتیاج دارید. اگر حرفه‌ای‌تر برنامه نویسید، ممکن است، نیاز داشته باشید که چند ماژولِ اضافی برای PHP نصب کنید و تنظیماتِ مختلفِ آن را انجام دهید. همه ی مواردِ بالا، بایستی بر روی سیستمِ شما انجام شود، و اگر شخص دیگری هم خواست برنامه‌ای که شما نوشته‌اید را توسعه دهد (یا خودتان خواستید، همین برنامه را بر روی یک کامپیوترِ دیگر توسعه دهید)، احتیاج دارید که همه‌ی این ابزارها را نیز، دوباره بر روی آن سیستم نیز، نصب کنید.

داکر این امکان را به شما می دهد،‌ تا با ایجاد یک سری محفظه (Container)، تمامی ابزارهای لازم برای محیطِ توسعه‌ی نرم افزار را، در این محفظه قرار دهید، و هر کجا که خواستید آن را انتقال داده و استفاده کنید. یعنی در مثالِ بالا دیگر احتیاج ندارید هر بار بر روی هر کامپیوتر، تنظیمات PHP و MySQL را انجام دهید، زیرا با نصب نسخه داکرِ آن، تمامی مواردی که نصب یا تنظیم کرده‌اید، برای شما محیا می‌شود. حتی بسیاری از شرکت ها، نیز میتوانند، از داکر (Docker)، در محیط اجرا (Deployment Environment)، استفاده کنند.

اما تفاوت داکر با ماشین‌های مجازی (Virtual Machine) چیست؟

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

برای اطلاعات بیشتر توصیه می شود، سایت داکر را مطالعه کنید

داده‌کاوی (Data mining) چیست؟

داده‌کاوی فرآیندِ تبدیلِ یک سری داده، به یک سری دانش، توسط فرآیندهای مختلف است.

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

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

اینجاست که داده‌کاوی وارد عمل میشود و ۲۰۰ فرد مورد اطمینان و ۲۰۰ فرد غیرمطمئن که مدیر بانک برچسب زده بود را مشاهده کرده و الگوهای رفتاریِ این افراد را مورد بررسی قرار می‌دهد. در واقع سیستم متوجه می شود که کدام الگوی رفتاری، منجر به اطمینان و کدام الگو منجر به عدم اطمینان می‌شود. در اینجاست که سیستم، یاد میگیرد (learn) و می‌تواند بین افرادِ مطمئن و غیرمطمئن، تمایُز قائل شود. البته برای تشخیص این الگو، مدیر بانک بایستی ویژگی‌های مشتریان را در اختیار الگوریتم بگذارد.

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

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

همان طور که مشاهده می‌کنید، از یک مجموعه‌ی داده (مشتری‌های بانک)، به یک سری دانش (به چه شخصی وام بدهیم به چه شخصی وام ندهیم) رسیدیم.

علم داده‌کاوی، بسیار گسترده تر از بحثِ مثالِ اینجاست. به جز یادگیری نظارت‌شده که در مثال بالا گفته شد (یادگیری با مجموعه آموزشی داده)، یادگیریِ غیرنظارت‌شده (خوشه‌بندی) یا همان clustering، قواعد وابستگی، یادگیری تقویت شده و… نیز از زیر حوزه‌های علم داده‌کاوی هستند.