برنامه نویس C++، عاشق یونیکس، و توسعه‌دهنده بازی در موتور بازی سازی آنریل انجین ۴ که هرگز از یادگیری چیزهای جدید خسته نمی شه.

و . . . یه INFP که هیچ وقت بزرگ نمیشه!

مهاجرت از Hexo به Hugo

مدت کوتاهی بعد از مهاجرت این وبلاگ و وبلاگ دیگه ام (که به زبان انگلیسیه) از Octopress به Hexo و نوشتن تعدادی پست جدید باهاش، با یه Static Generator دیگه به نام Hugo آشنا شدم. اولش به نظر می‌رسید که Hexo پاسخگوی تمامی نیازهای بلاگ نویسی من باشه. اما سرعت فوق‌العاده Hugo در تولید صفحات خروجی و قابلیت‌های بسیاری که با وجود جوون بودن پروژه عرضه می‌کرد برای من نوید بخش یک فریم ورک بلاگ نویسی ایده‌آل بود.این شد که پس از مدت کوتاهی تصمیم به مهاجرت از Hexo به Hugo گرفتم. متأسفانه، به دلیل عدم وجود برخی قابلیت‌های مورد نیاز من امکان مهاجرت به Hugo از من سلب شد.

پس از مدت ها، پروژه مشابهی در زبان برنامه نویسی Rust شروع شد به نام Gutenberg. برای مدتی قابلیت‌هاش رو در حین توسعه زیر نظر گرفتم و تست هائی در این فریم ورک انجام دادم. سرعت اجرای بسیار بسیار سریعش و پاسخگو بودن توسعه‌دهنده اصلی اون باعث علاقه شدید من به این Static Generator شد. با وجود این به دلیل عدم بلوغ اون، از مهاجرت به Gutenberg هم منصرف شدم.

حدودا دو هفته پیش یک بار دیگه وضعیت پروژه Hugo رو بررسی کردم که خوشبختانه این بار به شدت من رو تحت تأثیر خودش قرار داد. کماکان سرعت اجرای خوب، تا حدود زیادی بالغ شدن این پرژوه، داشتن تمامی قابلیت‌های مورد نیاز من، و از همه مهمتر تعداد و تنوع بسیار زیاد پوسته ها و قالب هاش که من رو از طراحی یه پوسته جدید کاملا بی‌نیاز می‌کرد باعث شد که بالاخره تصمیم نهائی ام رو بگیرم. با تبدیل وبلاگ انگلیسی و بعد از اون وبلاگ فارسی در حال حاضر هر دو وبلاگ از Hugo بهره می برن.

باید اضافه کنم که سورس کد هر دو وبلاگ و مطالب اون ها در گیت هاب و گیت لب موجود هست. برنچ master نسخه Hugo هست و سه برنچ دیگه هم به نام های octopress-v2, hexo-v3 و درنهایت gutenberg وجود دارن که سورس نسخ قبلی رو شامل میشه.

پ.ن. با وجود اینکه در حال حاضر Hugo پاسخگوی تمامی نیازهای فعلی من هست، من بیشتر تمایل به استفاده از پروژهائی دارم که در Rust توسعه داده شدن تا Go. دلیلش هم برای من بسیار مشخصه: این روزها دنبال یک زبان جایگزین برای توسعه پروژه هام به جای C++ مدرن می گردم و به نظرم Rust ایده‌آل ترین گزینه ممکن هست. حداقل فعلا. به همین دلیل هم در حالی که لذت استفاده از Hugo رو تجربه می‌کنم نیم نگاهی هم به Gutenberg دارم. کسی چه میدونه؟ شاید یه روزی از Hugo به Gutenberg مهاجرت کنم.

اضافه شدن بخش نظرات

به روز رسانی [1395/06/15]: متاسفانه به دلایل متعددی که در اینجا شرح داده شده است، از این تاریخ به بعد امکان استفاده از سیستم نظرات فعلی وجود ندارد. بنابراین سیستم نظرات تا اطلاع ثانوی غیر فعال خواهد بود.

خب بالاخره بخش کامنت ها هم به هر دو وبلاگ فعلی و وبلاگ انگلیسی اضافه شد. بخشی از این قضیه که چرا تا حالا چنین چیزی در این وب سایت وجود نداشت مربوط میشه به مقاومت من، مقداری سخت گیر بودن راجع به سیستم های کامنت گذاری مرسوم و بلاخره مسایل فنی. از آنجائی که در فیدبک هائی که به شکل مستمر از سوی دوستان گرامی دریافت می کردم قضیه کامنت، بحث و تبادل نظر از اولویت بالائی برخوردار بود بالاخره با صرف زمان واقعا زیاد به آنچه که خواسته خوانندگان این وبلاگ و خودم بود رسیدم. بخشی از داستان این تلاش ها و راه حلش رو که یک نرم افزار کد باز به نام Discourse هست رو اینجا توضیح دادم. این نرم افزار توسط Jeff Atwood خالق وب سایت های Stack Overflow و مجموعه Stack Exchange توسعه داده شده که در وبلاگ خودش با نام Coding Horror هم استفاده میشه.

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

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

منتظر مطالب جدید باشید!

FreeBSD یا Linux مسئله این است؟

FreeBSD در مقابل Linux

FreeBSD در مقابل Linux

قبل از پرداختن به تفاوت های میان FreeBSD و GNU/Linux بایستی خاطر نشان شد که بیش از هر چیز شباهت های زیادی میان این دو وجود دارد. در واقع هر دوی آن ها توسط سازمان های غیرانتفاعی مختص خود با یک هدف مشترک توسعه می یابند: قابل اتکاترین سیستم عامل با بیشترین قابلیت استفاده.

در سومین مقاله از سری آموزشی FreeBSD، با تفاوت های FreeBSD و GNU/Linux آشنا خواهیم شد. توصیه می شود پیش از مطالعه این مقاله قسمت های اول و دوم این سری را مطالعه نمائید.

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

[ ادامه مطلب... ]

آموزش نحوه ی نصب Unreal Engine 4

A Boy and His Kite

A Boy and His Kite

قبلا در مقاله ای مفصل به شرح تاریخچه Unreal Engine پرداخته و سپس با برخی از مفاهیم و کلیات آن آشنا شدیم. حال نوبت به نصب آن می رسد. نصب این Game Engine و ابزارهای آن بسیار ساده می باشد. اما، دلایلی همچون: نصب آنلاین، فایل های حجیم، دسترسی کند برخی از کاربران به اینترنت و در نهایت تحریم های بین اللملی، ممکن است برخی از کاربران ایرانی را جهت دریافت این نرم افزار با مشکل مواجه کند. لذا علاوه بر نصب UE4، اقدام به ارایه راهکاری مناسب و کم هزینه جهت دریافت آن در چنین شرایطی می نمائیم.

در پایان این مقاله، قادر به انجام موارد ذیل خواهید بود:

  • ساخت یک حساب کاربری نزد شرکت Epic Games (البته اگر در حال حاضر چنین حساب کاربری ندارید)
  • دریافت و راه اندازی برنامه نصب به نام Epic Game Launcher
  • ورود به Epic Game Launcher با حساب کاربری تان
  • نصب Unreal Engine
  • اجرای Unreal Engine

[ ادامه مطلب... ]

FreeBSD چیست؟ یک نمای کلی از سیستم عامل FreeBSD

'Beastie' The BSD Daemon / Mascot (a near homophone of the letters B-S-D pronounced slurred together)

'Beastie' The BSD Daemon / Mascot (a near homophone of the letters B-S-D pronounced slurred together)

FreeBSD چیست؟ پاسخ کوتاه: FreeBSD یک سیستم عامل مدرن و پیشرفته جهت استفاده در سرورها، کامپیوترهای شخصی، لپ تاپ ها و دستگاه های Embedded به همراه پشتیبانی از پلتفرم های گسترده می باشد که توسط هواداران آن به شکل داوطلبانه برای بیش از سه دهه در دست توسعه بوده است. قابلیت های پیشرفته آن در زمینه شبکه، امنیت و ذخیره سازی، آن را به انتخاب اول برخی از پرترافیک ترین وب سایت ها، همچنین دستگاه ها و سیستم های فراگیر شبکه (فایروال ها و روترها) و ذخیره سازی داده (NAS/SAN) نموده است. این سیستم عامل توسط کمپانی ها، ISP ها، دانشگاه ها، موسسات تحقیقاتی، دانشجویان، دانش آموزان و کاربران خانگی در سراسر دنیا به منظور کار و امور تحقیقاتی مورد استفاده قرار می گیرد.

در دومین مقاله از سری آموزشی FreeBSD، در قالب دسته ای از پرسش و پاسخ با ماهیت، برخی مفاهیم، ویژگی ها و اهداف FreeBSD آشنا خواهیم شد.

[ ادامه مطلب... ]

مقدمه ای بر موتور ساخت بازی Unreal Engine 4

صفحه بارگذاری Unreal Engine 4 Editor

صفحه بارگذاری Unreal Engine 4 Editor

علیرغم حضور نام های بزرگی مانند CryEngine از شرکت Crytek و سایرین در دنیای بازی، بدون شک Unreal Engine موفق ترین موتور بازی سازی AAA تا به امروز می باشد. با ظهور مارکت های جدیدی مانند Valve Steam, Apple App Store, Google Play و سایر بازارهای از این دست در دنیای بازی های کامپیوتری، فرصت های بسیاری جهت درخشش توسعه دهندگان مستقل در دنیای بازهای کامپیوتری ایجاد شد. قطعا یکی از عوامل موفقیت توسعه دهندگان مستقل در این بازارهای نوظهور موتور بازی سازی Unity بود که برای چند سال سلطان بی چون و چرای دنیای Indie بود. این موتور بازی سازی بدلیل سهولت یادگیری و استفاده، همچنین قابلیت تولید خروجی برای پلتفرم های مختلف شامل دسکتاپ، موبایل و کنسول در ازای پرداخت مبلغی نسبتا معقول، داشتن فروشگاه Asset که باعث کاهش هزینه توسعه بازی ها توسط توسعه دهندگان می شد، از محبوب ترین موتورهای بازی سازی نزد تولیدکنندگان مستقل می باشد. لذا شرکت Epic سازنده موتور بازی سازی Unreal Engine ابتدا با عرضه UDK که بر اساس موتور Unreal Engine 3 توسعه داده شده بود و سپس باز نمودن و عرضه کد Unreal Engine 4 بر روی GitHub که قبلا با مبلغ بسیار گزافی فقط در اختیار آنهائی که این شرکت Licensees می نامید قرار داشت، گام بزرگی به سوی تسخیر بخشی از بازار بازی های مستقل نهاد.

در این سری از مقالات به آموزش ساخت بازی با استفاده از Unreal Engine 4 برای پلتفرم های مختلف Destkop, Mobile و Web خواهیم پرداخت. در اولین مقاله از این سری، به شناخت Unreal Engine 4، مختصری تاریخچه و توضیح مفاهیم آن می پردازیم.

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

[ ادامه مطلب... ]

سری آموزشی توسعه بازی های کامپیوتری و C++

سری آموزشی توسعه بازی های کامپیوتری و C++ -  منبع تصویر: ویکی پدیا

سری آموزشی توسعه بازی های کامپیوتری و C++ - منبع تصویر: ویکی پدیا

پس از شروع سری آموزشی FreeBSD، تصمیم بر این شد که همزمان سری آموزشی توسعه بازی رو راه اندازی کنم. از آنجائی که من Game Engine های مبتنی بر C++ رو ترجیح میدم و بر موتورهای بازی Unreal Engine 4 و Cocos2d-x تسلط دارم دو دوره مجزای بازی سازی رو با هر یک از این Game Engine ها در این بلاگ شروع می کنم. ممکنه بعدها سرکی هم به OGRE و Godot (بخوانید گِدو، نام این Engine از نمایشنامه Waiting for Godot گرفته شده) بکشیم. اما در حال حاضر فقط Cocos2d-x و Unreal Engine 4.

چون که کار با Cocos2d-x نیازمند C++11 هست در یک سری آموزشی دیگر به شکل همزمان، C++1114 رو هم به زبان ساده و Beginner Friendly آموزش خواهم داد. به لطف Blueprints Visual Scripting که نسخه مدرن تر Kismet در Unreal Engine 3 و UDK یا همان Unreal Development Kit هست کار با Unreal Engine 4 ابدا نیازمند C++11 نخواهد بود. اما با در نظر گرفتن کارائی 10 برابری C++ نسبت به Blueprints بلد بودن C++11 کمک می کنه که شما حداکثر کارائی رو از UE4 بهره برداری کنید.

در این سری آموزشی شما توانائی تولید بازی برای پلتفرم های Windows, Mac OS X, Linux, Android, iOS و HTML5 رو به دست خواهید آورد.

در طول هرسه دوره فرض بر این خواهد بود که مخاطب هیچ دانش قبلی از برنامه نویسی با C++ و یا بازی سازی نداره. بنابراین تمام سعی من این خواهد بود که به زبان ساده مفاهیم رو انتقال بدم.

[ ادامه مطلب... ]

تاریخچه FreeBSD

نمودار سیر تکاملی سیستم عامل های یونیکس و شبه یونیکس - منبع تصویر: ویکی پدیا

نمودار سیر تکاملی سیستم عامل های یونیکس و شبه یونیکس - منبع تصویر: ویکی پدیا

اگر از یک سیستم عامل آزاد و کد باز استفاده می نمائید، به احتمال قریب به یقین مبتنی بر گنو و هسته لینوکس می باشد. اما باید بدانید این پلتفرم های کد باز و آزاد نه تنها اولین نرم افزارها در نوع خود نبوده، حتی حرفه ای ترین و یا موفق ترین نرم افزارهای کد باز تجاری شده در نوع خود نیز محسوب نخواهند شد. در هر سه این موارد Berkeley Software Distribution یا به اختصار BSD از GNU/Linux پیشی می گیرد. حال سوال اصلی اینجاست که چرا BSD در اکوسیستم نرم افزارهای آزاد به حاشیه رانده شده است، در حالی که توزیع های مختلف GNU/Linux گوی سبقت را از آن ربوده اند؟

در سه قسمت اول از سری آموزش های FreeBSD در ابتدا به تاریخچه آن خواهیم پرداخت. در قسمت دوم اقدام به بررسی ماهیت و ویژگی های آن نموده و با ساختار و مفاهیم آن آشنا خواهیم شد. و در نهایت در قسمت سوم آن را با GNU/Linux مقایسه می نماییم. پس از این سه قسمت در مقالات بعدی اقدام به نصب و راه اندازی FreeBSD جهت استفاده در Server به همراه نصب سرویس های مختلف از جمله Web Server, FTP Server, Mail Server, DNS Server و … جهت استفاده در محیط های Production می نمائیم. در کنار آن به نصب و پیکربندی FreeBSD در Desktop جهت Web Browsing, Multimedia و … خواهیم پرداخت. همچنین اقدام به توضیح مفاهیم یونیکس از ابتدا می نمائیم. در ادامه این مقاله به قسمت اول، تاریخچه FreeBSD خواهیم پرداخت.

[ ادامه مطلب... ]