<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مصطفی زمانی</title><link>https://virgool.ir/feed/@mostafa.zamani</link><description>برنامه نویس علاقه مند به هوش تجاری، بیگ دیتا و تحلیل داده</description><language>fa</language><pubDate>2026-11-11 10:25:10</pubDate><image><url>https://files.virgool.ir/upload/users/5520/avatar/U5GzBL.jpg</url><title>مصطفی زمانی</title><link>https://virgool.ir/@mostafa.zamani</link></image><item><title>چطوری سرعت کوئری های تحلیلی SQL رو بیش از ۱۰۰۰ برابر افزایش دادم!</title><link>https://virgool.ir/dataio/چطوری-سرعت-کوئری-های-تحلیلی-sql-رو-بیش-از-۱۰۰۰-برابر-افزایش-دادم-ua5dpdmnkgof</link><description>اگر براتون پیش اومده که روی چند تا جدول بزرگ (منظورم از بزرگ اینه که حداقل ۱۰ میلیون رکورد داشته باشن)  بخواید یه کوئری SQL اجرا کنید که چندین دقیقه یا حتی چندین ساعت طول بکشه و راه حلی براش پیدا نکردین، مطلب زیر به کارتون میاد.کوئری های سریعترمیخوام راجع به تجربم در اجرای کوئری هایی بنویسم که بیش از ۲ ساعت زمان میبرد و الان در عرض ۳۰ ثانیه به جواب میرسم. قرار نیست راجع به Query optimization صحبت کنم، قراره همون کوئری رو ببریم روی بستر یه تکنولوژی دیگه که مخصوص اجرای کوئری های تحلیلی ساخته شده.مسئله چی بود؟بررسی میزان مصرف ترافیک کاربران دیجیتون با توجه به مدت زمان اشتراک و سرویس دهنده اینترنتمثلا میخواستیم بهفمیم کاربرانی که با اینترنت داتک کارتون می بینند و اشتراک یکساله دارند،‌ به طور متوسط چند گیگابایت مصرف میکنند؟‌چند تا محتوا می بینند؟‌  چند روز از اشتراکشون رو استفاده می کنند و سوالاتی از این قبیل...دو جدول اصلی که ما استفاده می کردیم حدودا ۱۶۰ و ۹ میلیون رکورد داشتند و روی دیتابیس MySQL با ایندکس گذاری مناسب قرار داشتند. اجرای هرکوئری روی این دیتابیس چیزی نزدیک به ۲ ساعت زمان لازم داشت. مسئله وقتی خسته کننده تر میشد که برای هر ISP باید این کار جداگانه انجام میشد.این شد که به دنبال راه حلی برای این تیپ کوئری ها افتادیم.راه حل چیه؟کوئری های این چنینی رو معمولا روی سیستم های OLAP که مخفف OnLine Analytical Processing هست اجرا میکنند. از طرف دیگه برای زیرساخت دیتابیس های OLAP هم معمولا از دیتابیس های مبتنی بر ستون (‌اسم فارسی جالب تری پیدا نکردم D: )‌ یا column oriented استفاده میکنند. در اکثر دیتابیس های رابطه ای مانند MySQL دیتاها به صورت row oriented ذخیره و پیمایش میشوند. اما  اساسا در دیتابیس های column oriented  داده های هر ستون در کنار یکدیگر ذخیره می شوند.  به همین دلیل معمولا توابع aggregation مانند COUNT, AVG,SUM روی این دیتابیس ها فوق العاده سریعتر اجرا میشن. با توجه به همین رویکرد اساسا عملیات UPDATE , DELETE در دیتابیس های column oriented بسیار پرهزینه است.در ادامه نمونه ای از نحوه اجرای یک کوئری روی دو مدل دیتابیس معرفی شده نمایش داده شده است.نحوه اجرا در دیتابیس های row orientedنحوه اجرا در دیتابیس های column orientedظاهرا ویرگول از تصاویرهای متحرک پشتیبانی نمیکنه، بنابراین پیشنهاد میکنم نسخه اصلی دو تصویر بالا رو از اینجا ببینید تا این این مفهوم بهتر براتون روشن بشه.تا اینجا نکته مهم اینه که اگر شما دیتایی از جنس لاگ دارید که قرار نیست عملیات UPDATE , DELETE داشته باشین و قصد دارین که روی اون کار تحلیلی انجام بدین، توصیه میشه که برین سراغ این دیتابیس ها.من همین طور که دنبال  دیتابیس های column oriented و سیستم های OLAP میگشتم رسیدم به این صفحه ویکپدیا که مقایسه نسبتا کاملی از سیستم های OLAP رو ارائه کرده که در ادامه بخشیش رو آوردم.مقایسه سیستم های OLAP از اونجایی که ما به دنبال  ۱)  یک سیستم Opensource بودیم که روی ۲) سیستم عامل لینوکس نصب بشه، ۳)سرعت بالایی داشته باشه، ۴) زبان استاندار و ساده ای  مثل SQL رو برای کوئری ها پشتیبانی کنه و همچنین ۵)‌قابلیت ساخت مدل MOLAP (‌نوعی ساختار داده های چند بعدی مثل cube ) رو داشته باشه و بتوان با ۶)‌ابزاهای مختلف Visualization  مثل Metabase ( که ما ازش استفاده میکنیم و بعدا مفصل راجع بهش توضیح میدم)  بهش متصل شد،‌سیستم Clickhouse رو انتخاب کردیم.طبق توضیح سایت خودش، Clickhouse  یک دیتابیس column oriented هست که مناسب اجرای کوئری های تحلیلی یا همون OLAP هست و قادره که یک میلیارد رکورد رو با بیش از ده ها گیگابیت داده روی یک سرور و در یک ثانیه  پردازش کند. https://clickhouse.tech/docs/en/ ClickHouse&#39;s performance exceeds comparable column-oriented database management systems currently available on the market. It processes hundreds of millions to more than a billion rows and tens of gigabytes of data per single server per secondدر اینجا مقایسه ای هم از سرعت اجرای انواع کوئری های SELECT در مقایسه با دیتابیس های Vertica , Greeplum آورده که دیدنش خالی از لطف نیست.مقایسه سرعت بین Clickhouse,Vertica , Greenplumما چیکار کردیم؟برای حل مشکل اجرای کوئری های سنگین روی سیستم MySQL من یه کانتینر Clickhouse روی سیستم نصب کردم و دیتای دو جدول اصلی که برای محاسبه لازم داشتیم رو به داخلش انتقال دادم. توضیحات نحوه انجام اینکار به همراه کدهایی که برای تست و ایجاد replica از جداول MySQL روی Clickhouse میباشد رو در یک مطلب مفصل دیگه مینویسم. اگر  لازم دارین که چنین کاری انجام بدین میتونید از مطلب این مقاله هم استفاده کنید. https://mydbops.wordpress.com/2020/02/21/3-step-migration-of-mysql-data-to-clickhouse-for-faster-analytics/ در ادامه خروجی مقایسه تست هایی که روی MySQL و Clickhouse داشتیم رو آوردم.تست اولکوئری محاسبه جمع ترافیک استریم شده ۳ ماه گذشته.Clickhouse: 50 ms  MySQL: 79 s نتیجه تست اولمقاسیه تست اولتست دومکوئری محاسبه تعداد رکورد لاگ ها، کاربران یونیکی که ویدیو دیده اند،‌ محصولات یونیکی که دیده شده و مجموع ترافیک استریم شده در ۳ ماهه اول سال ۲۰۲۰ سایت دیجیتونClickhouse: 212 msMySQL: 107 sنتیجه تست دوممقایسه تست دومتست سوم - کوئری اصلیکوئری محاسبه میزان ترافیک کاربران اینترنت داتک در مدت زمانی که بسته اشتراک یک ساله آنها فعال بوده است. این کوئری همان بود که بیش از ۲ ساعت زمان میبرد که اکنون حدودا ظرف مدت ۳۰ ثانیه جواب میدهد. اگر با Google Big Query کار کرده باشین، احتمالا خوشحال میشد که بدونید میشه کوئری ها را با clickhouse-client اجرا کنید و خروجی مشابه خروجی کوئری های Google Big Query دریافت کنید که شامل موراد زیر است.مدت زمان اجرای کوئری:‌ ۳۵ ثانیهتعداد رکوردهای پردازش شده: ۱۷۶ میلیون ردیفحجم پردازش شده: ۳.۶۴ گیگابایتسرعت اجرای کوئری: ۴.۹۸ میلیون رکورد در ثانیه و ۱۰۲ مگابایت در ثانیهخروجی تست سومبا فرض متوسط ۲ ساعت برای کوئری های تست سوم روی MySQL و متوسط ۳۰ ثانیه روی ClickHouse تقریبا افزایش سرعتی معادل ۲۴۰ برابری رو تجربه کردیم.نتیجه تست سومکلام آخرممنون که برای مطالعه این تجربه وقت گذاشتین، امیدوارم که این مطلب براتون مفید بوده باشه. اگر دوست دارین ادامه مطالب دراینباره رو بدونین میتونین من رو دنبال کنین :)اگر از این مطلب خوشتون اومده لطفا اون رو لایک کنید ❤️همچنین اگر برای اجرا و پیاده سازی این سیستم روی پروژه های خودتون نیاز به راهنمایی و مشورت داشتین میتونید روی من حساب کنین. </description><category>مصطفی زمانی</category><author>مصطفی زمانی</author><pubDate>Sat, 05 Dec 2020 13:37:03 +0330</pubDate></item><item><title>آشنایی ساده و کوتاه با بودجه کشور</title><link>https://virgool.ir/@mostafa.zamani/simple-budget-humcbtgiwjv9</link><description>امروز اتفاقی در ادامه خوندن یه پست تلگرامی رسیدم به مراجع اون پست و سایت ایران بودجه که به صورت خیلی تصویری وساده بودجه کشور رو به درقالب نمودار نمایش داده. خیلی ساده میتونید میزان بودجه کل کشور و این که چقدر از اون صرف چه کارها، ارگان ها و دستگاه هایی میشه رو متوجه بشید.نمونه از سایت ایران بودجه بخش بودجه ملی سال 99چند دقیقه ای رو توی سایت گشتم و بعد از کلی ابهام و سوال که توی ذهنم شکل گرفت،  در نهایت این سوال ذهنم رو مشغول کرد که چطوری میشه بودجه رو خوند و فهمید؟ به قول معروف «بودجه‌ی کشور خود را به من نشان بدهید تا به شما بگویم چگونه کشور خود را اداره می‌کنید.»توی نت یه سرچی زدم و رسیدم به این پادکست جذاب و کامل دایجست (Digesttt)  باعنوان :آنچه یک شهروند باید از بودجه کشور بداند، بررسی بودجه 98 http://digesttt.com/20/ ممکنه تا اینجا از خودتون بپرسید که اصلا من چرا باید راجع به بودجه بدونم؟؟ من این قسمت از پاسخ رو از مقاله پادکست دایجست میارم چون به نظرم خیلی جواب خوب و قانع کننده ای داده.ممکن است بگویید اصلاً من چرا باید راجع به بودجه بدانم؟ جوابش در این جمله‌ی قدیمی‌ست: «بودجه‌ی کشور خود را به من نشان بدهید تا به شما بگویم چگونه کشور خود را اداره می‌کنید.». در حقیقت «بودجه» آینه‌ی مدل حاکمیتی کشور است. شاید شما هم در تاکسی و آرایشگاه و این‌سو و آن‌سو شنیده‌باشید که «حقوق امسال چه‌قدر کمه! تورم فلان درصده، چه‌قدر باید مالیات بدیم؟! پول نفت کجا می‌ره؟ و…» و در بیشتر مواقع هم پاسخ‌های ناآگاهنه‌ای می‌شنویم و هیچ‌وقت به‌طور دقیق برای ما روشن نیست که در سطح کلان چه اتفاقی می‌افتد.یه دلیل هم من اضافه کنم. برای کسانی که این روزها وارد بازار سرمایه (بورس) شدن و میخوان به صورت اصولی از بازار سود کنند، بهتره که اصول تحلیل های بنیادی ( فاندامنتال) و تکنیکال رو بدونن. به قول آقای سینا رهبر شهلان، برای تحلیل گرها ، مخصوصا بنیادی کارها لازمه که حتما بودجه رو بخونن.خب، اگه وقت و حوصلش رو دارید، پیشنهاد میکنم که این پادکست 2 ساعته رو بشنوید یا از همین لینکی که دادم میتونید متنش رو کامل بخونید. اگر هم دنبال یه خلاصه جمع و جور از مطلب این پادسکت هستید، ادامه نوشته رو دنبال کنید.دولت موظفه که هرساله بودجه رو تا قبل از پایان سال آماده کنه و اون رو به مجلس ارائه بده. برای این کار میاد اصول و موارد استراتژیک کلی رو درقالب بخشنامه به بخش های مختلف دولت، وزارت خانه ها و سازمان ها ارسال میکنه تا اونها موارد مربوط به هزینه ها و درآمدهاشون رو نوشته و آماده کنند. درنهایت کل این موارد در سازمان برنامه و بودجه جمع آوری میشه و در قالب لایحه بودجه که شامل 5 تا دفترچه هست به مجلس ارسال میکنه.دفترچه های لایحه بودجهلایحه بودجه شامل 5 تادفترچه میشه که به ترتبیب راجع به این موارد توضیح داده.1- ماده واحده ( کلیات بودجه) و جداول 2- بودجه عمرانی ( میشه بودجه ای که برای توسعه کشور هزینه میشه، این توسعه هرچیزی که سرمایه گذاری و ساخته میشه رو شامل میشه)3- در آمدهای دولت4- دخل و خرج شرکت های دولتی*5- هزینه های جاری و عمرانی دولتبرای این که یکم نسبت به عدد بودجه سال 98 حس بگیرین بگم که این عدد 1703 هزار میلیارد تومان (همت) بوده است. توی شکل زیر عدد رو نوشتم که راحت تر بتونین بخونیدش. همچنین گوینده پادکست میگه که اگر هر یک دلار رو معادل 10,000 تومان درنظر بگیریم، میشه 170 میلیارد دلار.بودجه سال 98 به زبان ساده خب میرسیم به لایحه بودجه که مجلس بررسی میکنه تا تصویب بشه. احتمالا برای شما هم مثل من جالب باشه که بدونید بودجه دو بخش کلی داره. بخش عمومی و بخش خصوصی. بخش خصوصی مربوط به دخل و خرج بانک ها و شرکت های دولتی میشه و بررسی اون متناسب با نوع کار و فعالیت هر شرکت کار جداگانه خودش رو میطلبه. بنابراین در مجلس تا به امروز ( منظورم بودجه سال 98 است) بررسی برای این بخش بزرگ که  70% از بودجه هست،در مجلس انجام نمیشه. به نظرم من و نویسنده اصلی پادکست، این خودش یکی از بزرگترین اشکالات روال بودجه است.تقسیم بندی کلی بودجه و بخشی که مجلس بررسی میکنداما همون بخش عمومی که بررسی میشه شامل دو بخش است. بخش منابع و مصارف عمومی همون بخشی است که معمولا درباره بودجه میشنویم که چگونه تقسیم میشود و قسمت منابع اختصاصی مروبط به بخشی از بودجه نهادها و سازمانهاست که از درآمد خودشان تامین می‌شه.دریافت هادریافت ها یا منابع دولت از 3 بخش حاصل میشه .علت این که بهش میگه دریافتی ونه درآمد اینه که فقط بخشی از دریافتی ها واقعا درآمد هستند. این بخش که بهش میگن درآمد، میشه شامل مالیات ها و درآمدهای غیرمالیاتی مثل جرایم رانندگی، هزینه خدمات اداری مثل خدمات سربازی و گذرنامه و... بخش دریافتی نفتی رو نویسنده جزء درآمدها درنظر نمیگیره با این استدلال که اگر مثلا شما فرش زیر پاتون رو بفروش برسونین و تبدیل به پول کنین، اون جزء درآمدهاتون نبوده چون سرمایه تون رو فروختین . در قسمت استقراض هم به دلیل قرض گرفتن عملا درآمدی صورت نگرفته چرا که این قرض ها باید به وقت آن بازپس داده شود. البته ذکر این نکته هم لازمه که تقریبا برای اولین باره که این مقدار از درآمد دولت در بودجه به درآمدهای مالیاتی تخصیص داده شده است.دریافتی ها در بودجه 98 مصارف ( هزینه ها)بخش مصارف مشخص میکنه که بودجه ها چطور و در چه بخش هایی مصرف می‌شوند. دو نکته مهم در این بخش وجود دارد. هزینه ها در بودجه 98اول:هرچقدر سهم بخش های توسعه و عمران بیشتر باشد، کشور در وضعیت بهتری از نگاه امید به آینده قرار دارد و چشم انداز ها در عمل احتمال تحقق بیشتری رو خواهند داشت.دوم: بودجه صرفا پیش بینی است و همیشه محقق نمی‌شود. درکنار توجه به سهم های هرکدام از بخش های مربوط به مصارف در بودجه، این نکته را هم درنظر بگیرید که میانگین تحقق بودجه در 20 سال گذشته، در بخش هزینه های جاری 97% بوده و این درحالی است که میانگین تحقق بودجه در بخش های عمرانی، در 20 سال گذشته حدودا 67%  بوده است.توجه داشته باشین که سهمی از تحقق نیافتن ها  نیز در قسمت درآمدهاست. مثلا امروز ( در تابستان 99) میبینیم که تحقق درآمد نفتی مطابق بودجه نبوده و این عدم تحقق ها، شرکت ها، سازمان ها و دولت را با مشکل مواجه می‌کنه.پول نفت کجا میره؟این سوال رو خیلی هامون شنیدیم و جواب های مخلتفی هم احتمالا به صورت درست یا غلط دربارش خونده و شنیده ایم. سهم توزیع درآمد نفت رو در ادامه مطابق بودجه 98 میتونید ببینید.سهم درآمد نفتیفلسفه صندوق توسعه ملی اینه که درآمد نفت تماما برای نسل امروز نیست و آیندگان نیز در اون سهم دارند. بنابراین هرسالی به طور متوسط حدودا 20% از درآمد نفتی کشور در این صندوق ذخیره میشه. تا جایی که مطالعه کردم، برداشت از این صندوق برای کسری بودجه ممنوع است و برداشت از آن فقط با اجازه رهبری امکان پذیر است.نویسنده پادکست میگه که  پیشبینی درآمد نفتی ایران در 98، معادل درآمد ترکیه از توریسم در سال 2014 است. البته این رو خودم هم یه سرچی زدم ولی آمار دقیق رو نتونستم پیدا و مقایسه کنم ولی آمار ها تقریبا همین حوالی رو نشان میداند. مثلا درآمد توریست ترکیه درسال 2018 ،حدودا 29.5 میلیارد دلار بوده است. سرانه هر ایرانی در سال 98طبق آمار پادکست، سرانه  هر نفر در سال 98 به طور متوسط ماهانه 455 هزار تومان بوده است. این معادل پولی است که هرماه دولت برای هر ایرانی هزینه می‌کند. این هزینه شامل موارد زیر می‌شود.توزیع سرانه هر ایرانی در سال 98نکته آخر که از این گزارش متوجه شدم تقسیم بودجه استانی هست که سرانه بودجه استان های کشور با یکدیگر برابر نیست. مبنای اصلی در بودجه استان ها میزان محرومیت استان ها هست که این ذاتا امری درست و منطقی است چرا که کمک می‌کند به توسعه زیرساخت ها و امکانات توسعه ای در استان های کمتر برخوردار و منجر به بهبود اوضاع عمومی کشور و افزایش سطح رفاه افراد جامعه میشه.من از این پادکست خیلی چیزها یاد گرفتم و  سعی کردم خلاصه یادگیری های خودم رو با شما به اشتراک بذارم. اگر تمایل دارید که در این باره بیشتر اطلاعات به دست بیارین پیشنهاد میکنم که حتما این پادکست رو یکبار خودتون گوش کنید.ازتون ممنونم که  تا این لحظه و این خط با من همراه بودین و خوشحال میشم اگه نکته ای رو اشتباها درج کردم بهم یادآوری کنید تا اصلاح کنم. همچنین اگر لینک یا مطلب مفیدی میشناسین که کمک میکنه تا دانشم دراین باره بیشتر بشه ممنون میشم که همینجا برام کامنت بذارید.</description><category>مصطفی زمانی</category><author>مصطفی زمانی</author><pubDate>Tue, 11 Aug 2020 00:45:25 +0430</pubDate></item><item><title>داستان Open Source از کجا شروع شد؟</title><link>https://virgool.ir/@mostafa.zamani/داستان-open-source-از-کجا-شروع-شد-e9ycbyvulu3u</link><description>امروز سومین بار بود که داشتم مستند revolution OS رو میدیدم. اولین بار سر کلاس سیستم عامل دکتر شریفی، دومین بار قبل از امتحان سیستم عامل، چون دکتر از این مستند هم سوال داده بود و سومین بار همین امروز که نزدیک به 10 ساله در صنعت نرم افزار مشغول به کارم.مستند انقلاب متن بازمن از اون دسته آدم هایی هستم که تا وقتی پایه و اساس یه مفهوم رو نفهمیده باشم، خیلی درست نمیتونم باهاش ارتباط برقرار کنم و فکر میکنم که امروز تونستم مفهوم و داستان open source software رو بهتر بفهمم و خودش منجر به جرقه چندتا ایده جالب توی ذهنم شد. امیدوارم چندسال بعد که دوباره به این نوشته ها سر میزنم، اون ایده ها هم پیاده سازی شده باشند.یکی از نکات جالبی که این مستند داره ، زنجیره اتفاقاتی هست که در فرایند ساخته شدن مفهوم open source نقش داشتند.ریچارد استالمن، بنیان گذار مفهوم open source  از داستان ریچارد استالمن با خروجش از آزمایشگاه هوش مصنوعی MIT برای گسترش GNU، خلق هسته لینوکس توسط لینوس توروالدز با این ایده که میخوام سیستمی شبیه sun OS رو خودم در خانه داشته باشم، به وجود اومدن پروژه Apache و استقبال شدید ISP ها برای استفاده از لینوکس و آپاچی روی سرورها برای وبسایت ها و داستان تصمیم شرکت netscape برای اینکه کد پروژه netscape رو تحت عنوان Mozila منتشر کنه.همه این داستان ها از اونجایی برام خیلی جالبه که سرنخ ها و پایه و اساس شکل گیری مفهوم open source رو روایت میکنه و کمک میکنند تا با شروع داستان آشنا بشیم.اعتراض مردم برای بازگرداندن ویندوز استفاده نشده و پس گرفتن پولشون از مایکروسافت یکی از داستان های جالب مستند، راجع به اتفاقی هست که در اون یکسری تظاهرات کننده خواستار پس گرفتن پول ویندوزشون بودند. پولی که علاوه بر سخت افزار، بابت خرید ویندوز روی سخت افزار هم پرداخت کرده بودند و الان که با لینوکس آشنا شدن، میخواستن ویندوز استفاده نشدشون رو طبق توافق نامه خود ویندوز (میتونید درصورتیکه ویندوز رو استفاده نکردید، پولش رو پس بگیرید)  برگردونند و پولشون رو پس بگیرن.انتهای داستان هم ختم میشه به ماجرای عرضه عمومی ( سهامی عام شدن) پروژه های لینوکسی که با داستان  Redhat شروع شد و بعدش مستند به ماجرای VA Linux System می پردازه. داستانی که سهامش با 30 دلار شروع میشه و بیش از 700% رشد میکنه و تا 270 دلار بالا میره و البته در انتهای مستند اشاره میکنه که درسال 2001 هم شرکت VA linux از بازار سخت افزار خارج میشه و فرداش ارزش هر سهمش به زیر 3 دلار میرسه.اگه مثل من علاقه مندید تا ماجرای شروع موفقیت های بزرگ رو بدونید، اگه مثل من علاقه مندید تا یکم همه چیز رو از اولش بدونید،اگه مثل من به سیستم عامل لینوکس و نرم افزارهای open source علاقه مندید، دیدن مستند Revolution OS رو بهتون پیشنهاد میکنم.  از اینجا هم میتونید دانلودش کنید.</description><category>مصطفی زمانی</category><author>مصطفی زمانی</author><pubDate>Sun, 16 Feb 2020 02:20:01 +0330</pubDate></item><item><title>یه توتوریال (آموزش) خوب، چطوری میتونه به بازی (اپلیکیشن) کمک کنه؟!</title><link>https://virgool.ir/@mostafa.zamani/foot-tutorial-ku7qqgj2cie5</link><description>اخیرا تصمیم گرفتم تجربیاتم درحوزه بازی سازی و تحلیل داده ها رو مکتوب کنم با این رویکرد که شاید برای آدم هایی که مسیری شبیه مسیر من رو تو حوزه کاری انتخاب کردند، جذاب و مفید باشه.به عنوان اولین مطلب میخوام راجع به موضوع توتوریال یا آموزش در بازی و اپلیکیشن بنویسم. چون بیشتر تجربیاتم در حوزه بازی بوده در ادامه همه جا از کلمه بازی استفاده میکنم، ولی همین موارد رو میشه به اپلیکیشن هم تسری داد. به نظرم بخش آموزش مشخص کننده اینه که کاربران از اون به بعد، چطوری از بازی شما استفاده کنند. من این کار رو توی دو بخش توضیح میدم. این بخش ها مربوط به تجربه بازی  فوتکاردیا هست که در مجموعه مدریک ساختیم.قدم اول: طراحی توتوریالگیم پلی بازی فوتکاردیا اصلا سخت نبود، ولی باید قواعد وقوانینش رو میفهمیدی تا بازی برات جذاب باشه و اگه قرار بود خود کاربر(گیمر) با بازی کردن این قواعد رو بفهمه، درصد زیادی از آدم ها قبل از این که فرصت فهمیدن و لذت بردن از بازی رو کسب کنند، اون رو پاک میکردن. پیش از انتشار بازی، ابتدا اون رو دراختیار چندتا از دوستامون که تقریبا دستی هم تو موضوع بازی داشتند دادیم تا بدون توضیحات ما و فقط از روی توتوریال، بازی کنند. رفتار و عملکردشون رو به دقت میدیدیم. تقریبا همه توتوریال رو میفهمیدند و اونهایی که حوصلشون سر نمیرفت، تا آخرش ادامه میدادند. این ها باعث شد که توتوریال رو برای ریلیز آماده بدونیم. توتوریال فوتکاردیا 5 مرحله داشت که توی هر مرحله، کاربرا یکی از قوانین رو در قالب انجام بازی، یاد میگرفتند و در پایان هر مرحله، کاربر مقداری سکه جایزه میگرفت.فوتکاردیاقدم دوم: بررسی توتوریالبعد از چند ماه از انتشار بازی شروع به بررسی عملکرد کاربران کردیم. برای شروع نسبت کاربرانی که مراحل آموزش رو تمام میکردند به کل کاربرای جدید هرماه به دست آوردیم. به طور میانگین فقط 45% از کاربران توتوریال رو تمام میکردند. با بررسی دقیق تر متوجه شدیم ریزش اصلی کاربران در بخش چهارم است. این موضوع با نظرات کاربران کافه بازار توی روزی که فیچر شده بودیم هم مطابقت داشت. کاربران اون روز کریس رونالدو رو مقصر مشکل ایجاد شده تو بازی میدونستند :))  توتوریال فوتکاردیا 2 تا مشکل اصلی داشت.1- آنلاین بودن مراحل (مشکل کریس رونالدو): این که کاربر توی توتوریال با چه حریفی باید بازی کنه و نتیجه هر اکشن کاربر چی میشه، توی این مرحله کاملا سمت سرور محاسبه میشد. یه مشکل کوچک در این بخش که فقط توی لود زیاد کاربران همزمان پیش میومد باعث شد که  وقتی با  استقبال زیاد کاربران در آخر هفته مواجه بشیم، کاربران جدید نمیتوانستد توتوریال رو تمام کنند. درحالی که فرایند خود بازی مشکلی نداشت. این موضوع باعث شد تا اولین تجربه استقبال فراوان کاربران از بازی برامون یه خاطره تلخ و یه تجربه بزرگ بسازه و البته درکنارش اکثر کاربران جدید هم ناراضی بشن. توی اولین تصمیم، تمام مراحل ثابت آموزش رو به صورت از پیش تعیین شده و آفلاین کردیم تا کاربرا به راحتی این مراحل رو طی کنند و هیچ کدام از بخش های ابتدایی فرایند توتوریال، نیازمند ارتباط با سرور نباشند.مرحله چهارم توتوریال2- کوتاه سازی مراحل: مشکل بعدی این بود که هر بخش آموزش، یه بازی کامل رو شامل میشد و حتی بعد از این که قواعد اون مرحله تموم شد، کاربر باید به بازی ادامه میداد تا آن مرحله تمام شود. این باعث طولانی شدن آموزش شده بود. اولین نسخه از توتوریال فوتکاردیا حدودا بین 5-7 دقیقه زمان میبرد که طی چند مرحله اصلاح این فرایند به کمتر از 3 دقیقه رسید.بعد از این بررسی ها و اعمال تغییرات، تونستیم درصد عبور کاربران از مرحله توتوریال (اتمام توتوریال) رو تا 30% افزایش بدیم. جمع بندی1- بخش بندی توتوریال به چند مرحله و بررسی درصد پیشرفت کابران در هر مرحله از اون، خیلی کمک کرد تا بتونیم مشکل اصلی رو زود تشخیص داده و حل کنیم. پیشنهاد میکنم اگه هنوز توتوریال بازیتون رو تحلیل نمیکنید، همین امروز از یه ابزار مثل devtodev، گیم آنالیتیکس یا ... برای بررسی و تحلیل بازیتون استفاده کنید.2- بازی ما به گونه ای بود که نمیشد بدون توتوریال اجازه بدیم کابران وارد بازی بشن چون در غیر اینصورت به دلیل متوجه نشدن مکانیک اصلی بازی، خیلی زود اون رو پاک میکردند. اگه بازی شما هم به گونه ای است که علارغم جذاب بودن، خیلی زود کاربرا پاکش میکنند، شاید علتش اینه که مکانیک بازی رو خوب نفهمیدن یا توتوریال شما جامع نبوده.3- تقریبا 94% از کاربرایی که توتوریال رو تمام میکردند، حداقل 30 روز بازی رو داشتند. بنابراین مشکل ما این بود که فقط کاربران بتونن توتوریال رو تمام کنند. شاید بشه این طور نتیجه گرفت که یک معیار جذاب برای این که ببنید بازی شما چقدر برای کابران جذاب بوده یا این که توی یک بازی با قواعد فراوان، چقدر تونستید به خوبی قواعد رو به کاربران داخل توتوریال یاد بدید، اینه که ببینید کاربرانی که آموزش رو تمام کردند، چند درصدشون توی 30 روز اول با شما خواهند ماند.حرف آخراین اولین باری بود که دارم تجربیاتم رو به این شکل مینویسم، لذا خیلی ممنون میشم که نظر ارزشمندتون رو درباره این نوشته برام بنویسید تا بتونم کیفیت مطالبم رو بهتر کنم. </description><category>مصطفی زمانی</category><author>مصطفی زمانی</author><pubDate>Fri, 06 Sep 2019 17:48:02 +0430</pubDate></item><item><title>واکنش های احساسی در برابر فقدان</title><link>https://virgool.ir/@mostafa.zamani/واکنش-های-احساسی-در-برابر-فقدان-gzxdfprvyd5w</link><description>یک: چند ماه اخیر بالاخره ترکش اوضاع نابسامان اقتصادی به شرکت های IT هم اصابت کرد و خیلی از  شرکت ها تعدیل داشتند و مجبور شدند بعضی از پروژه هاشون رو هم به حالت تعلیق دربیارند. دو: امروز که داشتم برای بک آپ گرفتن متن های ذخیره شده در موبایلم اونها رو به لپتاپم میفرستادم تا بتونم گوشی رو آپدیت کنم، به خلاصه یکی از آموزش های مجموعه بیشتراز یکنفر رسیدم که راجع به موضوع واکنش های احساسی آدمها درمورد ازدست دادن های بزرگ بود. نمودار کوبلر راس ( Kubler-Ross)به طور خلاصه میگه که واکنش آدم ها در برابر از دست دادن های بزرگ این 5 مرحله رو داره.1- شوک و انکار2- مقاومت و خشم3- مذاکره کردن4- افسردگی5- پذیرشو مطالعاتش نشون داده که هرچقدر زودتر آدم ها به مرحله پذیرش میرسند، سریعتر با موضوع کنار میان و زودتر میتونند راه جدیدی رو آغاز کنند.سه: البته مطالعات کوبلر-راس درباره مرگ بوده، ولی میشه اون رو به هر رخداد از دست دادن دیگه ای هم تطبیق و تعمیم داد.به نظر خودم این مناجات دکتر شریعتی، که در ادامه آوردم، تحقیق کوبلر-راس رو تکمیل میکنه. پروردگارا! به من آرامشی عطا فرما تا بپذيرم آنچه را كه نمي توانم تغيير دهم و شهامتی،تا تغيير دهم آنچه را که مي توانم و بينشی تا تفاوت اين دو را بدانم. </description><category>مصطفی زمانی</category><author>مصطفی زمانی</author><pubDate>Sun, 21 Apr 2019 15:31:38 +0430</pubDate></item></channel></rss>