آپاچی هدوپ(Apache Hadoop) چیست؟

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

ادامه خواندن “آپاچی هدوپ(Apache Hadoop) چیست؟”

یادگیری ماشین(Machine Learning) چیست؟

یادگیری ماشین، یک زیر مجموعه از هوش مصنوعی است. با استفاده از تکنیک های یادگیری ماشین، کامپیوتر، الگوهای موجود در داده ها(اطلاعات پردازش شده) را یادگرفته و میتواند از آن استفاده کند. توجه داشته باشید که در این تکنیک ها، یادگیری در یک سیستم کامپیوتری بدون برنامه نویسی صریح(Explicit Programming) صورت میپزید. حال اینکه برنامه نویسی صریح چیست و یادگیری ماشین چطور کار میکند را در ادامه میاوریم.

ادامه خواندن “یادگیری ماشین(Machine Learning) چیست؟”

Build System چیست؟

حتماً میدانید که کامپایل کردن یک برنامه(نوشته شده با یک زبان برنامه نویسی) چیست. برای مثال، یک برنامه، با زبان برنامه نویسی ++C نوشته اید، و حالا میخواهید این برنامه را اجرا کنید. برای اجرای این برنامه، باید در ابتدا، کد منبع(Source Code) برنامه را کامپایل(Compile) کنید، سپس خروجی کامپایل شده ی برنامه، به شما یک فایل(مثلا با پسوند EXE) میدهد. حالا شما میتوانید این برنامه را بر روی یک سیستم عامل(مثلا ویندوز) اجرا کنید.

ادامه خواندن “Build System چیست؟”

CURL چیست؟

cURL که در واقع (seeURL) خوانده می شود، یک کتابخانه و همچنین یک خط فرمان(Command Line) است که برای انتقال اطلاعات به یک سرور استفاده می شود.

برای مثال فرض کنید، میخواهید با استفاده از یک زبان برنامه نویسی(مثلا PHP)، یک صفحه html را از اینترنت دانلود کنید. این کار به وسیله کتابخانه cURL در PHP امکان پذیر است. در واقع cURL از طریق پروتکل، http، میتواند این صفحه را از یک وب سایت دانلود کرده و در صورت نیاز در سرور خود ذخیره کنید.

ادامه خواندن “CURL چیست؟”

پایگاه داده گراف(Graph Database) چیست؟

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

ادامه خواندن “پایگاه داده گراف(Graph Database) چیست؟”

پایگاه داده(Data Base) چیست؟

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

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

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

پایگاه داده های معروف امروزی، بیشتر پایگاه داده های رابطه ای(Relational DataBases) هستند. هر چند پایگاه داده های NoSql هم کاربرد فراوانی دارند. از محبوب ترین پایگاه داد های رابطه ای، میتوان به SQL Server، Mysql، Sqlite اشاره کرد. این پایگاه داده ها، در نرم افزارهای مختلف، مورد استفاده برنامه نویسان قرار میگیرند. هنگامی که برنامه نویسی بخواهد، اطلاعات موجود خود را بر روی کامپیوتر، ذخیره کند(تا بعداً بتواند به آن دسترسی داشته باشد)، میتواند از این پایگاه داده ها،‌ استفاده کند. مثلاً یک برنامه نویس، میخواهد، اطلاعات زمانی مربوط به خرید های یک کاربر را برای همیشه، به صورت پایدار، بر روی سیستم کامپیوتر ذخیره کند. برای این کار یک جدول، ایجاد کرده و با ایجاد دو ستون(نام کاربری، تاریخ خرید) زمان های خرید یک کاربر را بر روی سیستم، ذخیره میکند.

معمولاً برای اتصال یک زبان برنامه نویسی به یک پایگاه داده، تنظیم کننده هایی(Adaptors) وجود دارد.

پایگاه داده های امروزی، بسیار متنوع تر از پایگاه داده های رابطه ای(Relational Database) هستند. پایگاه داده های NoSql، پایگاه داده های توزیع شده(Distributed Databases)، پایگاه داده های گراف(Graph DataBases) از انواع مختلف پایگاه داده های موجود هستند.

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

وردپرس(wordpress) چیست؟

وردپرس یک سیستم مدیریت محتوای متن باز، برای زبان برنامه نویسی پی اچ پی است. به بیانی ساده تر، وردپرس، یکی از ساده ترین ابزارها، جهت ساخت یک وبلاگ یا یک وب سایت با زبان برنامه نویسی پی اچ پی است.

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

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

وردپرس رایگان است، و میتوانید نسخه های مختلف آن را(با زبان های مختلف، مثلا فارسی یا انگیسی) دانلود کرده و با یک آموزش ساده، یک وب سایت با امکانات مختلف راه اندازی کنید.

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

وردپرس، مناسب شرکت ها، اشخاص و سازمان های مختلفی است که نیاز دارند یک وب سایت قدرتمند با امکانات مختلف و سریع راه اندازی کنند.

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

آپاچی اسپارک(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) نیز، دارای کتابخانه های قدرتمند و بهینه شده، برای پردازش های سریع می باشد.

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