<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا نظامی</title>
        <link>https://virgool.io/feed/@AlirezaNezami</link>
        <description>یه برنامه نویس عاشق یادگیری.</description>
        <language>fa</language>
        <pubDate>2026-06-16 08:39:38</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2303/avatar/XOmK3H.png?height=120&amp;width=120</url>
            <title>علیرضا نظامی</title>
            <link>https://virgool.io/@AlirezaNezami</link>
        </image>

                    <item>
                <title>آشنایی با LiveData</title>
                <link>https://virgool.io/raychat/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-livedata-dqqhuppprqcq</link>
                <description>یکی از مهم‌ترین Component‌هایی که گوگل در سال 2017 معرفی نمود، LiveData بود.چرا گوگل LiveData را معرفی کرد؟زمانی را در نظر بگیرید که قبل از LiveData مجبور بودید نتیجه یک عمل در Background Thread را به UI Thread ارسال کنید. خب چه کاری انجام می‌دادید؟ شما باید از کامپوننت‌های Interface یا EventBus استفاده می‌کردید که هر کدام از آن‌ها پیچیدگی‌ها و سختی‌های خاص خود را داشتند.کامپوننت LiveData چیست؟با توجه به تعریف مستندات گوگل، LiveData تنها یک نوع Observable است، اما LiveData یک تفاوت با سایر Observable‌ها دارد. LiveData از LifeCycle آگاه است (LifeCycle-Aware). این موضوع مشکل کرش شدن اپ را در هنگام تغییر LifeCycle حل می‌کند. این آگاهی موجب می‌شود که LiveData تنها زمانی آپدیت شود که LifeCycle در یکی از حالت‌های فعال باشد (Started, Created, Resumed)خب LiveData چطور کار می کند؟برای درک بهتر LiveData باید اول به سراغ مفهوم &quot;Observer Pattern&quot; برویم. Observer Pattern یک الگوی برنامه‌‌نویسی است که در آن یک شی، 1 یا چند وابسته دارد. Observers در صورت اعمال تغییرات در محتوای شی یعنی Observable از تغییرات ایجاد شده آگاهی پیدا می‌کند. این الگو از دو عنوان اصلی تشکیل شده است:Observer Observableبرای درک بهتر این موضوع به سراغ یک مثال از دنیای واقعی می‌رویم:به طور مثال فرض کنید که در یک فروشگاه نفری را مامور نظارت بر قفسه مواد شوینده کرده‌اند. وظیفه این فرد گزارش کم شدن تعداد اقلام داخل قفسه است. در این مثال فرد مسئول همان Observer یا نظاره گر است. قفسه که اطلاعات در آن ذخیره شده و مرتبا تغییر می‌کند همان Observable یا آبجکتی است که بر روی محتوای آن نظارت داریم.بزرگ‌ترین مشکل کلاس LiveData تغییر نکردن مقادیر آن است. بنابراین گوگل برای حل این مشکل، دو کلاس را برای استفاده از LiveData معرفی کرده است که در این قسمت با آن‌ها آشنا می‌شویم.1- کلاس MutableLiveDataکلاس MutableLiveData از کلاس LiveData مشتق (Extend) شده است. دو متد عمومی در این کلاس  برای تغییر محتوا وجود دارند.متد setValue: شما می‌توانید با استفاده از این متد مقداری را به شئ اضافه کنید. البته به این نکته توجه داشته باشید که این روش فقط باید در داخل Main Thread یا همان UI Thread انجام شود.متد postValue: این متد دقیقا همان کارکرد setValue را دارد. اما این روش Thread Safe است و در Background Thread نیز اجرا می‌شود.2- کلاس MediatorLiveDataاین کلاس از MutableLiveData مشتق شده است و دو متد بالا نیز در آن وجود دارند. کلاس MediatorLiveData دارای یک قابلیت بسیار خوب دیگر نیز است. این کلاس می‌تواند یک یا چند LiveData را برای تغییر زیر نظر بگیرد و بر اساس تغییر در آن متغیرها واکنش نشان دهد.این کلاس می‌تواند یک یا چند LiveData را برای تغییر زیر نظر بگیرد و بر اساس تغییر در آن متغیرها واکنش نشان دهد.متد removeSource: این متد برای اتمام عمل نظارت بر روی LiveData مورد نظر استفاده می‌شود.نصب و استفادهشرایطی را در نظر بگیرید که دو Fragment در یک Activity دارید.  یکی از Fragment‌ها شامل لیست محصولات و در دیگری نوع مرتب‌سازی لیست قرار دارد و هر دو همزمان در صفحه، نمایش داده می‌شوند.شما می‌توانید با تعریف یک متغیر از نوع LiveData برای نوع مرتب‌سازی در FragmentA و Observe کردن آن متغیر در FragmentB به راحتی این مسئله را حل کنید.فرگمنت اول که دارای یک دکمه برای تغییر ترتیب نمایش استفرگمنت دوم که از فرگمنت اول observe می‌کنددر مطلب بعدی به این موضوع نگاه عمیق‌تری می‌کنیم و ادغام LiveData با RxJava و Room را توضیح می‌دهیم.</description>
                <category>علیرضا نظامی</category>
                <author>علیرضا نظامی</author>
                <pubDate>Wed, 16 Sep 2020 12:16:16 +0430</pubDate>
            </item>
                    <item>
                <title>بهینه سازی RecyclerView</title>
                <link>https://virgool.io/raychat/%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-recyclerview-gqap6r2js5vb</link>
                <description>مهاجرت از ListView به RecyclerView یکی از مهم‌ترین تغییرات انقلابی در برنامه‌نویسی اندروید محسوب می‌شود. RecyclerView یک ابزار بسیار قوی و قابل انعطاف برای نمایش داده‌های زیاد و پیچیده به صورت لیست است. اکثر اپ‌ها، حداقل یک صفحه دارای لیست برای نمایش تعدادی داده‌ دارند (مانند محصولات یک فروشگاه) و این لیست‌ها ابزاری اجتناب‌ناپذیر در برنامه‌نویسی اندروید به شمار می‌روند.گاهی اوقات RecyclerView نمی‌تواند نیاز مورد نظر ما را برطرف کند یا معمولا لگ‌هایی دارد که برای کاربر اذیت‌کننده است. RecyclerView تقریبا کامل بهینه شده است، اما نکاتی برای بهینه ساختن لیست وجود دارد که معمولا در نظر گرفته نمی‌شود. این موضوع موجب ایجاد مشکلات یا گیر کردن هنگام اسکرول لیست می‌شود.در این مقاله 6 مورد از این نکات را با هم مرور می‌کنیم.1- از لایه‌های پیچیده، کمتر استفاده کنیدلایه‌هایی مانند Nested Views یا RelativeLayout از لحاظ پردازشی بسیار سنگین هستند. زمانی‌که تعداد آیتم‌های نمایش داده شده در صفحه زیاد باشد با یک لگ ملموس مواجه می‌شوید. ترجیحا از ViewGroup هایی مانند FrameLayout و LinearLayout استفاده کنید زیرا کمترین هزینه برای رندر و ساخت را دارند. اگر لایه پیچیده دارید و این لایه‌ها جوابگو نبودند باید از ConstraintLayout (در AndroidX معرفی شده) استفاده کنید زیرا این ViewGroup برای لایه‌های پیچیده بهینه‌سازی شده است.میزان پیچیدگی لایه ها و البته میزان سنگینی هر لایه - منبع: کنفرانس goto;2- از لایه‌هایی با ارتفاع ثابت و یکسان استفاده کنیداگر این امکان را دارید، از لایه هایی با ارتفاع ثابت استفاده کنید. سپس این تکه کد را اضافه کنید.3- از متد‌های cache و DrawingCache خود RecyclerView استفاده کنید&quot; اگر می‌خواهید آیتم‌ها زمانی‌که از صفحه خارج شدند کش شوند باید بر اساس تعداد آیتم‌ها عدد را تغییر دهید.&quot;4- عکس‌ها را بهینه کنیداکثر مشکل‌ها و لگ‌هایی که در RecyclerView موجب رنجش کاربر می‌شوند، مربوط به حجم بالای عکس‌های آیتم‌هاست. اگر عکس‌ها را از داخل خود اپ لود می‌کنید باید مطمئن شوید که حجم عکس‌ها را پایین آورده‌اید. در غیر این صورت اگر عکس‌ها را از سمت سرور لود می‌کنید باید با استفاده از چند خط کد، نمایش عکس‌ها را با کیفیت و حجم کمتر در آیتم‌ها نمایش دهید.اگر از کتابخانه هایی مثل Picasso و یا Glide استفاده می‌کنید، می‌توانید به مانند زیر عکس ها را بهینه تر کنید.* می‌توانید تک‌تک این متد ها را آزمایش کنید و بر اساس نیاز انتخاب و استفاده کنیدو اگر به صورت مستقیم و بدون استفاده از کتابخانه خاصی عکس‌ها را نمایش می‌دهید، از این تک کد استفاده کنید.5- متد onBindViewHolder را بسیار کوچک نگه دارید و کلیک‌ها را در متد onCreateViewHolder هندل کنیددر هر بار ایجاد آیتم در آداپتر، متد های ClickListener هر بار ایجاد می‌شوند بنابراین متد کلیک خود را در متد onCreateViewHolder بسازید تا از ایجاد چندین باره آن خودداری کنید.6- هنگام تغییر داده‌ها در لیست RecyclerView ، فقط آیتم‌های تغییر یافته را Refresh کنیدشما می‌توانید به جای رفرش‌کردن کل لیست از متد‌های تغییر برای یک یا چند آیتم خاص استفاده کنید. متد notifyDataSetChanged را نیز به عنوان راه‌حل نهایی در نظر داشته باشید.شما می‌توانید در صورت نیاز مبرم به استفاده از متد notifyDataSetChanged، با استفاده از تکه کد زیر موجب ثابت نگه‌داشتن آیتم‌ها هنگام رفرش کل RecyclerView شوید.اگر شما هم روش‌های دیگری برای بهینه سازی سراغ دارید با من در کامنت‌ها به اشتراک بگذارید.</description>
                <category>علیرضا نظامی</category>
                <author>علیرضا نظامی</author>
                <pubDate>Wed, 09 Sep 2020 19:42:40 +0430</pubDate>
            </item>
                    <item>
                <title>لاگ گیری از ریکوئست های Retrofit</title>
                <link>https://virgool.io/MobileLab/%D9%84%D8%A7%DA%AF-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%B1%DB%8C%DA%A9%D9%88%D8%A6%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-retrofit-vt7cfyymnx5z</link>
                <description>گرفتن لاگ به صورت اتوماتیک برای تمامی ریکوئست‌هازمانی‌که حرف ریکوئست‌های سمت سرور پیش می‌آید، همیشه با دیتاهایی به شکل JSON مواجه می‌شویم.لاگ گرفتن دستی از خروجی‌های تمامی ریکوئست‌ها، کار سخت و زمان‌گیری است. این کار موجب‌ می‌شود نه تنها کدها زیاد شوند بلکه نگهداری آن‌ها نیز سخت‌تر می‌شود.اگر از کتابخانه Retrofit برای ارسال و دریافت ریکوئست‌هایتان از سرور استفاده می‌کنید، این کتابخانه یک ویژگی فوق العاده به نام Interceptor‌ها دارد. Interceptor به معنای دخالت‌گر است. این ویژگی زمانی‌که هنوز Interface‌های معروف Retrofit یعنی OnResponse و OnFailure جوابی در اختیار ما قرار نداند، دخالت می‌کند.کاری که این کتابخانه انجام می‌دهد، لاگ گرفتن از خروجی ریکوئست هر چیزی و با هر فرمتی است. این بدین معنی است که نیازی نیست شما دستی، تک تک ریکوئست‌ها را لاگ گیری کنید.مراحل پیاده سازی را یک به یک جلو میرویم.اضافه کردن کتابخانه به پروژهمی توانید از این صفحه نسخه آخر این کتابخانه را پیدا کنید.implementation(&amp;quotcom.squareup.okhttp3:logging-interceptor:4.8.1&amp;quot)ایجاد و تخصیص سطح دسترسیHttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();اگر می‌خواهید لاگ‌ها فقط زمانی‌ نمایش داده شوند که اپلیکیشن در مرحله دیباگ (نه ریلیز) است، از این تکه کد استفاده کنید. (پیشنهاد من: تنظیمات زیر را حتما اعمال کنید)if (BuildConfig.DEBUG) {
    interceptor.level(HttpLoggingInterceptor.Level.BODY);
} else {
    interceptor.level(HttpLoggingInterceptor.Level.NONE);
}اضافه کردن Interceptor به OkHttpClient.BuilderOkHttpClient.Builder httpClientBuilder = new OkHttpClient().newBuilder().addInterceptor(interceptor);تماااام.شما به همین راحتی می‌توانید این کار را انجام دهید. زمانی‌که ریکوئستی ارسال یا دریافت می‌شود، در Logcat عبارت okhttp را بنویسید تا لاگ ریکوئست‌های شما نمایش داده شود.به عنوان مثاللاگ کت در حالت verbose قرار داردپی نوشتدر صفحه خود این کتابخانه به این موضوع اشاره شده است که چون Header و بعضی از دیتاهای حیاتی و مهم را هم لاگ گیری می‌کند، مواظب نوع استفاده از این کتابخانه باشید. این کتابخانه برای این مشکل هم یک راه‌حل ارائه داده است. شما می‌توانید کلمه کلیدی خود را برای این‌که در لاگ‌ها نمایش داده نشود، با استفاده از تکه کد زیر اضافه کنید.بدین صورت:logging.redactHeader(&amp;quotAuthorization&amp;quot);
logging.redactHeader(&amp;quotCookie&amp;quot);می‌توانید کد کامل کلاس را اینجا پیدا کنید.به نظر شما چه کدها و روش‌های جایگزینی برای این موضوع وجود دارد؟ شما روش بهتری برای این کار سراغ دارید؟</description>
                <category>علیرضا نظامی</category>
                <author>علیرضا نظامی</author>
                <pubDate>Mon, 31 Aug 2020 19:08:04 +0430</pubDate>
            </item>
                    <item>
                <title>مدیرمحصول خوب / مدیرمحصول بد</title>
                <link>https://virgool.io/network-Ecomotive/%D9%85%D8%AF%DB%8C%D8%B1%D9%85%D8%AD%D8%B5%D9%88%D9%84-%D8%AE%D9%88%D8%A8-%D9%85%D8%AF%DB%8C%D8%B1%D9%85%D8%AD%D8%B5%D9%88%D9%84-%D8%A8%D8%AF-dardglzyzhsg</link>
                <description>سلام به همه دوستان.من نه مدیر محصول هستم نه زیاد در موردش مطلب خوندم و مطلبی که قراره بخونین فقط قسمتی از یک فصل کتاب سختی کارهای سخت (به انگلیسی: The Hard Thing About Hard Things) هستش. عنوان فصل هم &quot;مواظب افراد، محصولات و منفعتت باش; به همین ترتیب&quot; هستش. کتاب فوق العاده‌ای هست زیاد نمیخوام در مورد خود کتاب بنویسم کافیه یه سرچ کوچولو بکنین. انتشارات آریانا قلم ترجمه روانی کرده برای این کتاب. حتما بگیرین بخونین.خب بریم سر تعریفی که بن هاروویتز برای مدیرمحصول کرده با این پیش نوشته که چرا اصلا خواسته تعریفی از مدیر محصول خوب و بد داشته باشه. از این به بعد متن دقیق خود کتاب هستش که نقل میشه.وقتی در نت اسکیپ گروه مدیریت محصولات سرور را اداره میکردم، از اینکه هریک از اعضای تیمی که به من سپرده شده بود درک متفاوتی از کارشان داشتند خیلی احساس سرخورردگی کردم بالاخره، حسی در درونم گفت که هیچ‌کس در این صنعت شغل مدیر محصول را تعریف نکرده است. آنچه در ادامه می‌آید تلاش من برای انجام این کار و پایین آوردن فشار خونم بود.مدیرمحصول خوب / مدیرمحصول بدمدیرمحصول خوب شناخت خوبی از بازار، محصول، خط محصول و رقبا دارد و بر پایه‌ای قوی از دانش و اطمینان عمل میکند. مدیرمحصول خوب، مدیر عامل محصولش است. مدیرمحصول خوب مسئولیت را تمام و کمال می‌پذیرد‌‌ و موفقیت خودش را برا‌ساس موفقیت محصولش می‌سنجد. مدیر محصول خوب مسئول ارائه محصول مناسب در زمان مناسب و تمام الزامات تحقق این امر است. مدیرمحصول خوب شرایطی را که در آن کار می‌کند (شرکت، جذب درآمد، رقبا و غیره) میشناسد و مسئولیت طراحی و اجرای برنامه پیروزی را بر عهده میگیرد(عذر و بهانه نمی‌آورد).مدیرمحصول بد تا دلت بخواهد عذر و بهانه دارد. سرمایه گذاری کافی نبود، مدیر مهندسی کودن است، در مایکروسافت ده برابر تعداد مهندس‌های ما روی این محصول کار می‌کنند، سرم خیلی شلوغ است، به اندازه کافی راهنمایی نمی‌شوم. مدیر عامل شرکت چنین بهانه‌هایی نمی‌آورد، پس مدیر‌عامل محصول نیز نباید این کار را بکند.مدیرمحصول خوب همه وقتش را صرف سر‌وکله زدن با سازمان های مختلفی نمی‌کند که باید باهم کار کنند تا محصول مناسب در زمان مناسب ارائه شود. او تمامِ وقت تیم محصول را نمی‌گیرد، وظایف گوناگون را مدیریت پروژه‌ای نمی‌کند و قفل بازکن مهندس ها نیست. او جزئی از تیم محصول نیست، بلکه تیم محصول را مدیریت میکند. تیم‌های مهندسی به مدیر‌محصول خوب به عنوان یک «ابزار بازاریابی» نگاه نمی‌کنند. مدیر‌محصول خوب، باید همتای مدیر مهندسی در بازاریابی باشد.مدیرمحصول خوب اهداف را با سرعت و دقت تعریف می‌کند، «چیستی» (و نه «چگونگی») و مسیر رسیدن به این چیستی را مدیریت میکند. مدیرمحصول بد وقتی از خودش راضی است که «چگونگی» کار را تعیین کند. مدیرمحصول خوب ارتباطات نوشتاری و کلامی سریع دقیقی با بخش مهندسی برقرار می‌کند. مدیرمحصول خوب جهت دهی غیر‌رسمی نمی‌کند، بلکه صرفا اطلاعات را به صورت غیر‌رسمی جمع‌آوری می‌کند.مدیرمحصول خوب تضمین ایجاد می‌کند، سوالات متداول را پاسخ میدهد و ارائه‌ها و گزارش‌هایی تهیه می‌کند که برای فروشندگان، کارکنان بازاریابی و مدیریان اجرایی کاربرد اهرمی دارند. مدیرمحصول بد از اینکه همه روزش را زیر هجمه سوالات نیرو‌های فروش گذرانده گله می‌کند. مدیرمحصول خوب نقص‌های جدی محصول را پیش‌بینی می‌کند و راه‌حل های عملی برای آن می‌سازد. مدیرمحصول بد همه روز در حال آب ریختن روی آتش است.مدیرمحصول خوب در مواجهه با موضوعات مهم رویکردی نوشتاری در پیش می‌گیرد، موضوعاتی از جمله فشنگ های نقره‌ای رقابتی، انتخاب های دشوار مربوط به طراحی، تصمیمات سخت مربوط به محصول و حمله به بازارها یا عقب نشینی از آنها. مدیرمحصول بد نظرتاش را شفاهی بیان می‌کند و زانوی غم بغل می‌گیرد که «دست های پشت پرده» اجازه نمی‌دهند کار انجام شود. وقتی هم که شکست خورد، مدعی می‌شود که چنین روزی را می‌دیده است.مدیرمحصول خوب تمرکز تیم را معطوف به درآمد و مشتریان می‌کند. مدیرمحصول بد تیم را روی تعداد قابلیت‌هایی که رقبا مشغول ساختن آن‌اند، متمرکز میکند. مدیرمحصول خوب محصولات خوبی را تعریف می‌کند که با تلاش زیاد قابل ساهتن هستند. مدیرمحصول بد محصولات خوبی را تعریف می‌کند که امکان ساخت آنها وجود ندارد یا اینکه اجازه می‌دهد مهندسان هرچیزی که خودشان می‌خواهند، بسازند (یعنی سخت‌ترین مسئله را حل کنند).مدیرمحصول خوب در طول دوره طراحی محصول به ارائه ارزش برتر به بازار فکر می‌کند و در طول مرحله ورود به بازار به فکر دستیابی به سهم بازار و تحقق اهداف درآمدی است. مدیرمحصول بد فرق ارائه ارزش، هم‌پایی با قابلیت های رقبا، قیمت گذاری و همه گیری را به خوبی درک نمی‌کند. مدیرمحصول خوب مشکلات را تجزیه می‌کند. مدیر محصول بد همه مسائل را باهم ترکیب می‌کند.مدیرمحصول خوب راجب داستانی که می‌خواهد در رسانه ها نوشته شود فکر می‌کند. مدیرمحصول بد راجع به بیان تمامی قابلیت ها و ارائه بیشترین دقت فنی در پاسخ به رسانه‌ها فکر می‌کند. مدیرمحصول خوب از رسانه‌ها سوال می‌کند. مدیرمحصول بد به همه سوالات رسانه‌ها پاسخ می‌دهد. مدیرمحصول خوب فرض می‌کند که اعضای رسانه‌ها و جامعه تحلیل‌گران واقعا باهوش هستند. مدیرمحصول بد می‌پندارند خبرنگاران و تحلیل‌گران کودن هستند زیرا زیرا ظرافت‌های فناوری خاصش را درک نمی‌کنند. مدیرمحصول خوب در ایجاد شفافیت از آن طرف بام می‌افتد. مدیرمحصول بد حتی بدیهیات را هم توضیح نمی‌دهد. مدیرمحصول خوب کارش و موفقیتش را تعریف می‌کند. مدیرمحصول بد همواره به دنبال کسی است که کارش را تعیین کند.مدیرمحصول خوب هر هفته سروقت گزارش وضعیتش را ارسال می‌کند، زیرا منظم و منضبط است. مدیرمحصول بد فراموش می‌کند گزارش وضعیتش را به موقع ارسال کند، زیرا ارزشی برای نظم و انضباط قائل نیست.</description>
                <category>علیرضا نظامی</category>
                <author>علیرضا نظامی</author>
                <pubDate>Thu, 13 Jun 2019 12:46:14 +0430</pubDate>
            </item>
                    <item>
                <title>حقوق و شرایط برنامه‌نویسی در ترکیه چگونه است؟ + اینفوگرافیک</title>
                <link>https://virgool.io/coderlife/%D8%AD%D9%82%D9%88%D9%82-%D9%88-%D8%B4%D8%B1%D8%A7%DB%8C%D8%B7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%AA%D8%B1%DA%A9%DB%8C%D9%87-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3%D8%AA-%D8%A7%DB%8C%D9%86%D9%81%D9%88%DA%AF%D8%B1%D8%A7%D9%81%DB%8C%DA%A9-ye8e0yyteyxl</link>
                <description> با توجه به انتشار مطالبی درباره فضای اکوسیستم فناوری در ترکیه در وبسایت Tabriz.io سوالات بسیاری درباره حقوق برنامه‌نویسی در ترکیه مطرح می‌شد.  بنابر نظر سنجی ای که Önceki Yazılımcı در توییتر خود برای برنامه نویسان ترکیه ای انجام داده است حقوق برنامه نویسی در ترکیه به این شکل است:در کل ۱۵۲۳ نفر در این نظر سنجی شرکت کردند که ۶۲۹ نفر خودشان را حرفه ای، ۵۱۲ نفر خود را متوسط و ۳۸۲ نفر خود را مبتدی معرفی کرده اند.نمودار سوابق کاری آنها به این صورت است:۱ تا ۳ سال: ۳۱۶ نفر۳ تا ۵ سال: ۲۹۹ نفر۵ تا ۷ سال: ۲۵۹ نفر۰ تا ۱ سال: ۲۴۴ نفر۷ تا ۱۰ سال: ۲۱۰ نفربیشتر از ۱۰ سال: ۱۹۵ نفر ۷۲۵ نفر در شرکت های سازمانی کار میکنند۳۵۱ نفر در استارت آپ ها۱۲۹ نفر در e-commerce۱۱۹ نفر به صورت برون کاری یا فری لنسینگ۹۸ نفر در آژانس ها۱۰۳۶ نفر در استانبول کار میکنند۱۸۵ نفر در آنکارا۱۱۶ نفر در ایزمیر۲۹ نفر در بورسا۱۷ نفر در دنیزلی۱۶ نفر در آنتالیا نمودار سِمت شغلی اینگونه است:فول استک ۳۴۴ نفربک اند دات نت ۲۶۰ نفرفرانت اند ۱۸۵ نفربک اند جاوا ۱۶۰ نفربک اند php 120 نفرمدیر تیم توسعه ۱۰۲ نفر ۵٫۶ درصد در بقیه موارد مشغول به کار هستند:در سمت هایی همچون DevOps, SAP, Test Engineer, Analist, Project Manager مشغول به کار هستند.موبایل / اندروید ۵۷ نفرمعماری نرم افزار ۵۴ نفرموبایل / ios : 51 نفربک اند / سایر: ۴۱ نفربک اند / پایتون: ۳۳ نفربک اند/ruby: 17 نفر و نوبت به حقوق ها میرسه:۳۶۹ نفر: ۵۰۰۰ تا ۷۵۰۰ لیر ترکیه۲۴۰ نفر: ۷۵۰۰ تا ۱۰۰۰۰ لیر ترکیه۲۱۷ نفر: ۳۰۰۰ تا ۴۰۰۰ لیر ترکیه۲۰۶نفر: ۴۰۰۰ تا ۵۰۰۰ لیر ترکیه۲۰۶ نفر: ۲۰۰۰ تا ۳۰۰۰ لیر ترکیه۱۱۰ نفر: کمتر از ۲۰۰۰ لیر ترکیه۸۵ نفر: ۱۰۰۰۰ تا ۱۲۰۰۰ لیر ترکیه۴۶ نفر: بیشتر از ۱۵۰۰۰ لیر ترکیه۴۴ نفر: ۱۲۵۰۰ تا ۱۵۰۰۰ لیر ترکیه اگر سابقه برنامه نویسی در کشور ترکیه را دارید با دیدگاه‌های خود زیر این مطلب آن را تکمیل کنید. منبع: Tabriz.io</description>
                <category>علیرضا نظامی</category>
                <author>علیرضا نظامی</author>
                <pubDate>Sat, 24 Nov 2018 16:49:53 +0330</pubDate>
            </item>
                    <item>
                <title>گیمیفیکیشن به زبان ساده</title>
                <link>https://virgool.io/@AlirezaNezami/%DA%AF%DB%8C%D9%85%DB%8C%D9%81%DB%8C%DA%A9%DB%8C%D8%B4%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-lmzfkhpo8p4s</link>
                <description>گیمیفیکیشن سلام به همه دوستان.شاید تا حالا کلمه گیمیفیکیشن به گوشِتون خورده باشه؟ من بر اساس چند مقاله ای که در این زمینه خوندم این مطلبو منتشر میکنم از دوستانی که در این زمینه فعالیت یا مطالعه ای داشتن ممنون میشم زیر همین ست تو کامنت ها اشتباه ها و نواقص منو بگنخب اول اینکه معنی گیمیفیکیشن چیه؟ گیمیفیکیشن یعنی یه محصول یا عملی رو گیمیفای کردن خب گیمیفای کردن یعنی چی!! یعنی استفاده از اِلِمان های بازی برای پیش بردن اهدافمون.اهداف میتونن به چند صورت باشن بعضی ها به گیمیفیکیشن به چشم افزایش درآمد و فروش محصولشون نیگا میکنن و بعضی ها به چشم تغییر رفتار کاربر ها.تغییر رفتار کاربر بیشتر به عنوان گیمیفیکیشن به کار میره. در گیمیفیکیشن یه مثال که میشه زد همون مثال مشهور مایکروسافت هستش. وقتی مایکروسافت برای اولین برای ویندوز xp رو رونمایی کرد از عمل drag &amp; drop هم رونمایی کرد که هیچ کسی هم بلد نبود چجوری قراره ازش استفاده بکنه به همین خاطر مایکروسافت یه بازی که هممون به نام پاسور میشناسیم رو ساخت و اون رو تو سیستم عامل bold کرد طوری که شما کسی رو نمیشناسین که ویندوز xp استفاده کرده باشه و اون بازی رو نکرده باشه و اون بازی همون تغییر رفتار کاربر برای یادگیری عمل drag &amp; drop بود و خیلی هم ترکوند.خب ماهم سعی داشتیم و داریم از گیمیفیکیشن در برنامه کالج استفاده کنیم.(برای اونایی که کالج رو نمیشناسن، کالج یه پلتفرم برای دانلود جزوه دانشگاهی، استاد شناسی، صدای دانشجو و خیلی چیزای دیگه هست. در کل یه شبکه اجتماعی برای هزاران دانشجوی ایران هستش. اگه خواستین میتونین از اینجا یا اینجا دانلود کنین.)خب بریم سراغ مشهور ترین گیمیفیکیشن هایی که صنایع بزرگ ازشون استفاده کردن و موفقیت آمیز هم بودن خیلیییییییاول اینو بگم که گیمیفیکیشن به خیلی وقت قبلا برمیگرده شاید به اون زمونا که لشکر ها پدید اومدن و قدیمی ترین گیمیفیکیشن هم اسمش Edutainmentهستش. کلمه Edutainment از جمع دو کلمه Education + Entertainment پدید اومده به معنی آموزش + تفریح.یه مثال ساده از Edutainment میتونه بازی کردن با بچه ها برای خوراندن غذا یا بیشتر سبزیجات هستش مثل اون جمله مشهور &quot;دهنتو وا کن هواپیما داره میاد&quot; Edutainment توی خیلی از مدارس و دانشگاه ها به کار میرفت و الان هم میره و نتیجه خوبی در این زمینه داشته و اپپلیکیشن های زیاد و مشهوری مثل doulingo از گیمیفیکیشن های عالی برای آموزش زبان به کار میبرنبعدش گیمیفیکیشن &quot;نسبت 1:10&quot; اومد به بازاراینطوری بود که شما به ازای خرید 9 تا از یه محصول دهمیش رو به صورت رایگان دریافت میکردین خیلی از کسب و کارها از این گیمیفیکیشن استفاده کردن و تو ایران خودمون هم همین الانشم خیلی ها دارن از این روش کسب درآمد و تبلیغات میکنن ولی مشکل و عیب این مدل گیمیفیکیشن این بود که شما یه چیزی رو به مشتری رایگان میدادین که مطمئنا مشتری بابتش پول میداد ون بهش عادت کرده بود ولی برای کاربر ها و مشتری های جدید مدل تبلیغاتی خوبی بودبعدش &quot;برچسب های H&amp;S&quot; اومدن. اونایی که به سن منن شاید یادشون بیاد یه پفکایی اومده بودن به نام پفک جومونگ که از توشون یه تعداد برچسب درمیومد کنار اون پفک ها هم یه دفترچه میدادن که اون برچسب هارو روش بچسبونیم و وقتی به یه تعداد خاصی رسیدیم بریم بدیم بهشون و جایزه بگیریم و اینو بگم بهتون که اون شرکتی که این ایده رو داشت فروووووووووخت هااااااابعدش مدل &quot;A Advantage&quot; اومد و بیشتر توی شرکت های هواپیمایی به کاربرده میشد و این طوری بود که به مشتری چیزهایی رو میداد که برای خودش هیچ هزینه ای نداشت!! یعنی اعتبار. این طوری که مثلا شما با داشتن این اعتبار ها توی صف های دراز قرار نمیگرفتی، سرویس دهی بهت بهتر از بقیه بود و .... چیزایی که برای خیلی ها مهم بود و برای شرکتی که از این نوع گیمیفیکیشن استفاده میکرد هیچ هزینه ای نداشتیه مدل هست به نام SAPS که میگه اگه شما پولی ندارین که محصولتون رو باهاش گیمیفای کنین از این مدل استفاده کنین SAPS هم مخفف 4 تا کلمس 1. Stuff (اشیاء)2. Access (دسترسی)3. Power (قدرت)4. Status (جایگاه)اگر اشیائی دارید که شاید برای شما کمی بی ارزش باشد ولی برای کاربران ارزشی داشته باشد میتوانید آن را به عنوان جایزه استفاده کنیدمیتونین از عنصر دسترسی استفاده کنین که یه عنصر عالی و به دردبخور هستش شما فرض کنین تو حراجمعه بامیلو یا دیجی کالا که برای جمعه سیاه تدارک دیده بودن 10 ثانیه!!! زودتر از بقیه با سایتشون دسترسی داشتین یعنی 10 ثانیه از بقیه زودتر به حراجی وارد میشدین که به گفته خودشون 600 تا کنسول PS4 رو در عرض 60 ثانیه فروختنشما میتونین از عنصر قدرت استفاده کنین مثل تلگرام که از این عنصر به نحو احسن استفاده میکنه یعنی به بعضی کاربرای خاص برا اساس معیارهایی قدرت هایی بدین که بقیه کاربرا ندارن در نتیجه هم اون کاربر قدرت گرفته، برای استفاده بیشتر از محصول حریص تر میشه و هم کاربرای دیگه برای گرفتن قدرت فعالیتشون رو بیشتر میکننو در آخر میتونین از جایگاه هم استفاده کنین که تقریبا شبیه قدرت هستش عناصر اصلی گیمیفیکیشن:امتیازنشان هامعارفهمراحلچالش هاجدول برندگانحلقه های درگیری ذهنیخب یکی از این عناصر امتیاز هستش. امتیاز ها به چند صورت میتونن باشن چند تا از مشهور ترین هاشون این چندتان:امتیازات تجربه یا همون experience points که بیشتر با عنوان xp ها میشناسیمامتیازات کارماامتیازات شبکه های اجتماعی مانند لایک و ریتوییت و کامنت و فالومکانیک های بازی:هدیه دادنقهرمان بودنکلکسیوننوستالژیشهرتپیدا کردن الگوسورپرایز دفعه اول.برای مثال هدف خیلی ها از بازی کردن میتونه کلکسیون جمع کردن باشه. یا برای یافتن شهرت.شرکت اپل همیشه از مکانیک &quot;سورپرایز دفعه اول&quot; در تمام محصولاتش استفاده میکنه به طوری که باز کردن پکیج محصولات اول به قدری برای کاربران مهیج هستش که اونا رو وادار به خرید محصول میکنه.و در آخر چند تا از مثال های گیمیفیکیشن های برند ها و کمپانی های بزرگ رو باهم بررسی میکنیم که به نظر خود من معروف ترینشون گیمیفیکیشن دوربین کنترل سرعت بود.در سوئد وقتی دیدن تصادفات ناشی از سرعت بالا در سطح جاده ها زیاد شده و حتی دوربین های کنترل سرعت و جریمه کردن خودرو های خاطی جواب نمیده دنبال یه راهکار خوب گشتن تا یه آقایی به یه راه حل ناب و بکر این مسئله رو حل کردایشون اومد یه ایده داد که به جای اینکه دوربین کنترل سرعت بیاد راننده های خاطی و ماشین های با سرعت بالا رو ثبت و جریمه کنه تمام خوردرو هایی که رد میشن رو ثبت کنه و اونایی که سرعت مجاز دارن رو توی به اصطلاح لاتاری یا همون قرعه کشی شرکت بده حالا پول اون قرعه کشی از کجا میومد؟؟؟ از جریمه رانندگان خاطی و ماشین های پرسرعت جالبه نه!!دوربین لاتاری کنترل سرعتیا یه مثال جالب دیگه بزنیم اپلیکیشن nike + run club هستش که تو خود ایران هم بین دوندگان بسیار پرکاربرد و محبوبه. گیمیفای این اپ به این صورت هستش که وقتی شما شروع به دویدن میکنین خود اپ به صورت اتوماتیک یک پست در شبکه های اجتماعی شما برای دوستاتون به اشتراک میزاره با این عنوان که شما شروع به دویدن کردین برای حمایت از شما اون پست رو لایک کنن و هربرا که اون پست شما لایک می خوره صدای تشویق برای ادامه دویدن به گوش شما میرسه. البته چندین مورد گیمیفای کردن هم داره که برای مثال میشه به چالش های گروهی، چالش های تک نفره(رکورد) و ... اشاره کرد.منبع من از سایت مستر گیمیفیکیشن(تو گوگل سرچ کنین هس) و مقاله طراحی گیمیفیکیشن بود که  نوشته زیکرمن و کانینگهام، ترجمه علی اختری و کامران حاتمی هستش هدف از این مقاله این بود که اگر کسی به این مبحث علاقه ای داشته باشه بتونه سرفصل های اونو ببینه و خودش بره جستجو کنه وگرنه مطلب من خیلی ناچیز بودممنون از وقتتون #گیمیفیکیشن #طراحی_محصول #استفاده_از_گیمیفیکیشن #گیمیفای_کردن_محصول #Gamification#کالج </description>
                <category>علیرضا نظامی</category>
                <author>علیرضا نظامی</author>
                <pubDate>Mon, 04 Jun 2018 15:09:23 +0430</pubDate>
            </item>
            </channel>
</rss>