<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سینا رحیمی</title>
        <link>https://virgool.io/feed/@develop.rahimi95</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 00:16:31</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/88502/avatar/avatar.png?height=120&amp;width=120</url>
            <title>سینا رحیمی</title>
            <link>https://virgool.io/@develop.rahimi95</link>
        </image>

                    <item>
                <title>منسوخ بودن یک تابع در اندروید(Deprecated@)</title>
                <link>https://virgool.io/@develop.rahimi95/%D9%85%D9%86%D8%B3%D9%88%D8%AE-%D8%A8%D9%88%D8%AF%D9%86-%DB%8C%DA%A9-%D8%AA%D8%A7%D8%A8%D8%B9-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AFdeprecated-qlm4irrje5lp</link>
                <description>photo by danielmingookkim.comهرچی فکر کردم که چطوری عنوان رو انگلیسی بنویسم دیدم بهترین راهش همینه :)حتما برای شما  هنگام ساخت کتابخانه برای اندروید این مشکل پیش می آید که بعد از نوشتن یک فانکشن و پابلیش کردن آن کتابخانه، مجبور شوید ان فانکشن را منسوخ کنید (Deprecated) کنید و فانکشن جدید برای آن بنویسید. اول اینکه شما نمی توانید این فانکش را همان لحظه حذف کنید و باید اول اعلام کنید تا توسعه دهنده ها بدونند که این فانکشن در نسخه های بعد حذف می شود و باید دنبال فاکشن جایگزینی که شما نوشتید بگردند. برای حل این مشکل می توانید از @Deprecated(&amp;quotplease use myFunction1&amp;quot, 
ReplaceWith(&amp;quotmyFunction1(param1)&amp;quot))استفاده کنید. با اینکار براحتی فانکش جدید جایگزین می شود.برای اطلاعات بیشتر به لینک زیر بروید:Tackle tech debt with @Deprecated annotation</description>
                <category>سینا رحیمی</category>
                <author>سینا رحیمی</author>
                <pubDate>Mon, 07 Sep 2020 09:34:34 +0430</pubDate>
            </item>
                    <item>
                <title>بهترین انتخاب برای اندروید (WebP)</title>
                <link>https://virgool.io/@develop.rahimi95/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-webp-gn3m0ckwpyyi</link>
                <description>من در اکثر مواقع سعی میکنم بیشتر از وکتورها با فرمت svg بخاطر حجم کمتر آنها در پروژه ها استفاده کنم ، اما در بیشتر مواقع شما نمی توانید تنها از svg  استفاده کنید چون نیاز به استفاده از عکس هایی با فرمت png دارید و خوب طبیعتا حجم آنها بیشتر است و به مرور سایز apk‌ شما را افزایش میدهند. در این راستا شما می توانید با امکانی که در Android Studio قرار داده شده است عکس های خود را به WebP تبدیل کرده  و به کم شدم حجم خروجی apk خود کمک کنید. برای مشاهده اطلاعات بیشتر از این ویژگی اندروید استودیو، به لینک زیر بروید:https://developer.android.com/studio/write/convert-webp</description>
                <category>سینا رحیمی</category>
                <author>سینا رحیمی</author>
                <pubDate>Fri, 04 Sep 2020 16:46:40 +0430</pubDate>
            </item>
                    <item>
                <title>جادوی تخته ی سفید</title>
                <link>https://virgool.io/@develop.rahimi95/%D8%AC%D8%A7%D8%AF%D9%88%DB%8C-%D8%AA%D8%AE%D8%AA%D9%87-%DB%8C-%D8%B3%D9%81%DB%8C%D8%AF-ah18xmfxrzid</link>
                <description>Photo by Polargold on Unsplashتا بحال شده که ساعتها روی یک مسئله بمونید و نتونید اون رو حل کنید، و عصبی و ناراحت بشید که چرا حل نمیشه خوب این موضوع برای من در یکسال اول برنامه نویسی خیلی پیش می اومد و کسی هم در کنارم نبود که بتونه یک روشی یاد بده که بتونم این مشکلم رو زودتر حل کنم. به مرور با دیدن رفتار بقیه و یادگرفتن از اونها بهترین روش رو برای خودم استفاده از وایت بورد دیدم.وقتی برای پیدا کردن الگوریتم یا حل کردن یک باگ که برای شما بوجود اومده، دارید با خودتون کلنجار میرید، سریع یک ماژیک برداشته و روی تخته تمام نیاز ها و راه های رفته رو بنویسید. بخاطر اینکه شما صفحه ی بزرگتری رو در اختیار دارید می توانید داده های بیشتری رو کنار هم بیارید و ذهن شما سریع میتونه مشکل رو پیدا کنه و حل کنه. استفاده از شکل رو هم فراموش نکنید.البته که من خیلی دیدم که روی کاغذ مینویسن، اما بهتره شما هر دو رو امتحان کنید تا به معجزه تخته ی سفید پی ببرید?‍♂️پس وایت بورد یادتون نره!</description>
                <category>سینا رحیمی</category>
                <author>سینا رحیمی</author>
                <pubDate>Wed, 02 Sep 2020 14:26:45 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه خود را به روز نگه داریم؟(Android)</title>
                <link>https://virgool.io/@develop.rahimi95/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AE%D9%88%D8%AF-%D8%B1%D8%A7-%D8%A8%D9%87-%D8%B1%D9%88%D8%B2-%D9%86%DA%AF%D9%87-%D8%AF%D8%A7%D8%B1%DB%8C%D9%85android-k2hkaodofghr</link>
                <description>Photo by Markus Winkler on Unsplashاز روزی که برنامه نویسی رو شروع کردم همیشه دنبال جدیدترین و بهترین و زیباترین روش ها بودم. در راستای این هدف بعد از مدتی  با Android Weekly آشنا شدم که خوب همیشه جدیدترین و بهترین مقاله ها رو داره و شما به روز خواهد کرد. خوب این مجله ی هفتگی هر هفته  تکنولوژی ها و روش های جدیدی برای شما معرفی میکنه. آیا باید همرو بخونم کامل و یاد بگیرم! خیر?شما هر هفته زمان محدودی دارید برای یادگیری، پس بهتره که مهمترین بحث ها رو اول کامل یاد بگیرید و توی اونها حرفه ای بشید و اونها رو اولویت اول خودتون قرار بدید. خوب از کجا بدونیم که اول مهم ترین بخش ها کدوم هستن!بهترین راه این است که گوگل را دنبال کنید، چون تمام آن چیزی که شما نیاز دارید اول آنجا پیدا میشود و و اگر دنبال کامل تر کردن آن هستید می توانید در مقاله ها و پروژه های بقیه جست و جو کنید. خوشبختانه با سیستم آموزشی  CodeLab‌  گوگل شما مفهوم خیلی مسایل رو میتونید متوجه بشید. یادتون نره که یوتیوب گوگل رو هم دنبال کنید.نتیجه گیری :همین حالا در  Android Weekly عضو شده و مبحث های CodeLab‌ رو اولویت قرار داده و روی اونها وقت و انرژی بگذارید.</description>
                <category>سینا رحیمی</category>
                <author>سینا رحیمی</author>
                <pubDate>Wed, 02 Sep 2020 12:35:57 +0430</pubDate>
            </item>
                    <item>
                <title>از ساخت کتابخانه برای اندروید چه چیزهایی یاد گرفتم!</title>
                <link>https://virgool.io/@develop.rahimi95/module-android-zltugq97a9xc</link>
                <description>تجربه ی ساخت کتابخانه برای اندروید، شما را به مراحل بالاتری از برنامه نویسی می برد، مخصوصا برای کسانی که در سمت بک اند کار نکرده اند، بسیار می تواند چالش انگیز باشد چون شما  این دفعه قرار است که در نقش سرویس دهنده ظاهر شوید. پس بسیار مهم است که حتما اطلاعات کلی از ساخت آن داشته باشید تا بعد از انکه نوشتن کتابخانه شما جلوتر رفت تو دیوار نخورید!اندروید کتابخانه را به نام ماژول می شناسد(library module) پس از این به بعد من کتابخانه را به ماژول تغییر می دهم. حال میخواهیم نکات ساخت ماژول را با هم مرور کنیم:۱ - حتما از Builder Pattern  استفاده کنید یا به متدهای خود ابجکت پاس دهید چون ممکن است بعدا پارامتر های ورودی شما برای هر فانکشن زیاد شود و از این طریق می تونید مدیریت و زیبایی کد بهتر داشته باشید. ۲ - متد هایی که قرار است، کاربرها استفاده کنند باید قابل درک باشد طوری که از روی اسم آنها بشود فهمید که چه کاری انجام میدهد. ۱-۲ تا آنجا که میشود تمام شرایطی را که کاربر میخواهد استفاده کند، منظور نیاز های کاربران است. دست اورا باز بگذارید، البته که بعد از بازخورد نیز می توانید آن کار را بکنید.۳ - تا انجا که امکان دارد باید کدهایی که می نویسید هیچکدام Deprecated‌ نشده باشد و به هیچ عنوان استفاده نکنید چون بعدها کاربران به مشکل بر خواهند خورد و چون هنگامی که آنها از ماژول شما در پروژه ی خود استفاده کرده اند خبر ندارند که شما چه کرده اید و اپدیت کردن ماژول شما ممکن است برای آنان مشکل ایجاد کند.۴ - دسترسی های ماژول(Permission) را تا آنجا که می شود کم کنید،چون در هنگام خروجی گرفتن کاربران ،پرمیشن های شما با دسترسی های اپلیکیشن آنها یکی می شوند.۵ - با چک کردن تمام شرط ها کار را راحت تر کنید و به عهده ی کاربر نگذارید چون او از داخل ماژول شما خبر ندارد!if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {//code here        } else {         //code here        }۶ - تا انجا که می شود پایین ترین Sdk ‌را انتخاب کنید تا کاربران بیشتری از ماژول شما بتوانند استفاده کنند.۷ - حتما یک Readme‌ مناسب برای ماژول خود تهیه کنید بدون آن ماژول شما عملا بی استفاده خواهد بود(لینک مثال).۸ - در استفاده از کتابخانه های دیگر مانند Retrofit + Rxjava‌ حتما دقت بیشتری داشته باشید چون ممکن است Memory leak پیش بیاید.۹ - حتما ارور ها را به بیرون از ماژول انتقال بدهید و یادتان باشد که هنگامی که کاربر خروجی میگیرد دوست ندارد لاگ ماژول شما باز باشد تا هرکسی بتواند ببینید پس حتما برای این موضوع فکری بکنید و لاگ های ماژول خود را فقط در حالت دیباگ نشان دهید.۱۰ - بدانید که باید تمام dependency های ماژول شما اپدیت شود و همچنین Gradle ۱۱ - دو منبع مقابل معروفترین و بهترین منبعی هست که می توانید ماژول خود را آنجا قرار دهید : Jitpack و ‌Bintray12 - هنگامی که میخواهید در ماژول خود از یک ماژول دیگر استفاده کنید،‌صبر کنید!! تا آنجا که می شود استفاده نکنید چون اگر آنها ماژول خود را اپدیت نکنند و به مرور ماژول شما هم به مشکل جدی بر خواهد خورد اما اگر میخواهید استفاده کنید :  -- خود آن ماژول بسیار پیچیده نباشد و ساده باشد.-- از api های ساده استفاده کرده باشد.-- باعث نشود که تغییرات زیادی در پروژه ی خود بدهید.-- ستاره بیشتر و بروز تر و انجمن بیشتری داشته باشد.  ۱۳ - برای انکه همه ی قابلیت ها را در کتابخانه خود نیاورید می توانید مثل Retrofit عمل کنید : Gson: com.squareup.retrofit2:converter-gson
Jackson: com.squareup.retrofit2:converter-jackson
Moshi: com.squareup.retrofit2:converter-moshi
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire
Simple XML: com.squareup.retrofit2:converter-simplexml
JAXB: com.squareup.retrofit2:converter-jaxbهمان طور که میبینید به کاربر گزینه ی انتخاب داده و همه ی جوانب را در نظر گرفته است. اینکار کمک به کم کردن ماژول شما می کند و همچنین تعداد کاربران زیادی را سمت ماژول شما می کشاند.۱۴ - سعی کنید حتما از annotation ‌ها استفاده کنید: private @Nullable HttpUrl baseUrl;۱۵- حتما نام نمونه در ورودی پارامترها را معنی دار بگذارید:public Builder baseUrl(URL baseUrl) {
  checkNotNull(baseUrl, &amp;quotbaseUrl == null&amp;quot);
  return baseUrl(HttpUrl.get(baseUrl.toString()));
} ۱۶- اگر شما بخواهید متدی را Deprecate‌ اعلام کنید اول آن را با @Depreceted‌ مشخص کنید و معمولا حداقل بیشتر از ۶ ماه باید صبر کنید و بعد آن را حذف کنید‍! چون ممکن است کاربران نفهمند و همچنین باید هر نسخه که میدهید داخل فایل تغییرات بنویسید که چه اتفاقی افتاده و چه چیزهایی زیاد شده و همچنین  Depreceted‌ شده است . بدون اطلاع دادن کاری را انجام ندهید.بعد از آنکه با رعایت نکات بالا ماژول خود را ساختید حال باید آن را منتشر کنید فقط دقت کنید که قبل از انکه ورژن می زنید آنرا کامل تست کرده باشید و بهتر است که برای آن تست نوشته باشید یادتون باشه شما سرویس دهنده هستید پس کاربران شما مهم هستند ‍?در راستای بهبود، مرا از نظر خود مطلع کنید.</description>
                <category>سینا رحیمی</category>
                <author>سینا رحیمی</author>
                <pubDate>Fri, 17 Apr 2020 18:32:00 +0430</pubDate>
            </item>
            </channel>
</rss>