آپاچی اسپارک(Apache Spark) چیست؟

آپاچی اسپارک یک موتور قدرتمند، برای پردازش داده های بزرگ به صورت توزیع شده است. منظور از داده های بزرگ، داده هایی است که معمولاً بر روی یک کامپیوتر نمیتوانند پردازش شوند(مثلا داد هایی که از مقدار ram یک کامپیوتر بیشتر هستند). منظور از توزیع شده این است که، داده ها، بر روی چندین کامپیوتر(به آنها Node یا گره گفته می شود)، قرار دارند و بایستی پردازش شوند.

مثالی را در نظر بگیرید که میخواهید بر روی یک فایل بسیار بزرگ متنی، مثلا یک فایل که بازدید کاربران را در سیستم در طی ۵سال ذخیره کرده است، عملیاتی انجام دهید. مثلا، تمامی کاربرانی که از شهر تهران، وارد سیستم شده اند، را واکشی کنید. اگر فایل شما بسیار بزرگ باشد، یا اینکه چندین فایل مختلف بسیار بزرگ داشته باشید(مثلا داده های هر ماه را بر روی یک فایل ذخیره کرده باشید)، قطعاً فیلتر کردن این فایل های سنگین،‌ به زمان زیادی احتیاج دارد. ممکن است، در مثال بالا، حدوده ۱۲ساعت، پردازش بر روی داده های انجام شود، تا کاربران شهر تهران را از بین تمامی شهرها فیلتر کنید.

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

اسپارک میتواند از سیستم های مختلف ذخیره سازی توزیع شده(مانند HDFS یا Cassandra) استفاده میکند. اسپارک در مقایسه با هدوپ(Hadoop)، میتواند بسیار سریع تر باشد. این موتور پردازش سریع، در سال ۲۰۰۹ در دانشگاه برکلی تولید شده است.

آپاچی اسپارک، همچنین از کتابخانه های مختلفی نیز تشکیل شده است. MLib، کتابخانه یادگیری ماشین(Machine Learning) برای اسپارک است و توانایی پردازش الگوریتم های مختلف داده کاوی(Data Mining) و یادگیری ماشین را بر روی بستر اسپارک فراهم می آورد. Graphx، یک کتابخانه دیگر از اسپارک است. این کتابخانه، توانایی پردازش و تحلیل داده های گراف(داده هایی که به صورت گراف نمایش داده می شوند) را دارد.

Apache Spark Streaming نیز یک بخش دیگر از آپاچی اسپارک است. این بخش، قابلیت پردازش جریان داده ها(داده هایی که در یک بازه ی مشخص دیده می شوند، مثلا یک بار دیده می شوند و از بین می روند) را نیز دارد.

اسپارک همچنین از زبان های برنامه نویسی متعددی پشتیبانی می کند. Java، Python، R، Scala و همچنین SQL از زبان هایی است که میتوانید، به وسیله آن، با داده های موجود در اسپارک کار کنید.

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

گیت(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)، به دسته ای از نرم افزارها گفته می شود، که با کمک آن میتوانید فرآیند داخل سازمان خود را، مدل کرده و فرآیند ها را به سرعت به نرم افزار کاربردی تبدیل کنید.
مثال زیر را در نظر بگیرید:
شما یک شرکت بیمه ای هستید، و میخواهید فرآیند ثبت نام و پرداخت های کاربران را، به صورت ماهانه، مدیریت و تنظیم کنید. برای این کار احتمالا، سراغ یک برنامه نویس یا یک شرکت برنامه نویسی میروید و برای آن ها، فرآیند های خود را توضیح می دهید. برنامه نویسان نیز، یک نرم افزار، طبق فرآیند های شما، برایتان تولید می کنند.
فرض کنید، چند ماه بعد، برخی از فرآیند های شما تغییر کرد، یا اینکه چند فرآیند جدید به سیستم شما اضافه شد. در این صورت، باز هم بایستی از برنامه نویسان درخواست کنید تا برای شما تغییرات مختلف را انجام دهند. در واقع، هر گاه تغییری اساسی(یا حتی جزئی) در فرآیند داشتید، احتمالاً باید یک بار دیگر نرم افزار خود را به روز کنید.
BPMSها، برای حل همین مشکلات طراحی شده اند. به گونه ای که شما با در اختیار داشتن(و البته یادگیری استانداردهای BPM)، میتوانید خودتان، فرآیندهای سازمان را در سیستم طراحی کرده و سیستم، در نهایت یک خروجی نرم افزاری در اختیار شما قرار میدهد. با این کار هر گاه فرآیند ها تغییر کرد، خودتان میتوانید، با تغییر در نرم افزار BPMS موجود، یک خروجی جدید از نرم افزار تهیه کرده و فرآیندهای جدید را در آن مشاهده کنید.
البته برای استفاده از BPMSها، نیاز دارید تا استاندارد BPM را نیز یادبگیرید.

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

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

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

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

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

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

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

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

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

حتی بسیاری از شرکت ها، نیز میتوانند، از داکر(Docker)، در محیط اجرا، استفاده کنند.

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

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

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

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

تعریف تئوری: داده کاوی فرآیند تبدیل یک سری داده به یک سری دانش توسط فرآیندهای مختلف است.

تعریف تجربی:

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

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

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

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

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

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

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

سلام دنیا!

به وردپرس فارسی خوش آمدید.‌ این نخستین نوشته‌‌ی شماست. می‌توانید ویرایش یا پاکش کنید و پس از آن نوشتن را آغاز کنید!