<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Saeed Ahmadi</title>
        <link>https://virgool.io/feed/@SaeedAhmadi</link>
        <description>فعلا چیزی ندارم بگم.</description>
        <language>fa</language>
        <pubDate>2026-06-07 15:02:55</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/923/avatar/3sa2Zu.jpeg?height=120&amp;width=120</url>
            <title>Saeed Ahmadi</title>
            <link>https://virgool.io/@SaeedAhmadi</link>
        </image>

                    <item>
                <title>عاشقانه‌ای برای ارتباط با سرور در اندروید!</title>
                <link>https://virgool.io/Software/android-server-oebzw2nmx1vg</link>
                <description>با توجه به این که در فصل امتحانات هرچیزی، تاکید می‌کنم هرچیزی(حتی زل زدن به دیوار)، جذاب تر از درس خواندن است، فرصتی پیش آمد و من بر آن شدم تا داستان یادگیری خودم از ارتباط با سرور در اندروید را تعریف کنم. همچنین در این نوشته با یک کتابخانه قدرتمند برای ارتباط با سرور در اندروید آشنا می شوید که منظورم نه  Google Volley است و نه Retrofit ، در نتیجه اگر توسعه‌دهنده اپلیکیشن اندروید نیستید این نوشته به درد شما نمی‌خورد.تا مدتی قبل یکی از ترسناک ترین بخش های توسعه اپلیکیشن اندروید، ارتباط با سرور بود که برای هر درخواستی به سرور باید از یک HttpClient استفاده می‌کردیم. من از دوسال پیش که سمت اندروید رفتم همواره برای یادگیری ارتباط با سرور اهمال کاری میکردم، یک اهمال کاری که ریشه ی آن ترس بود. ترس از سختی.اما در این ترم در دانشگاه اتفاقی افتاد که باعث شد مجبور شوم آن را یاد بگیرم. داستان از این قرار بود که یکی از اساتید دانشگاه که ترم های قبل با ایشان چندین درس را گذرانده بودیم و هیچ علاقه ای برای تعریف پروژه پایانی برای درس نداشتند، در دومین جلسه کلاس در یک حرکت ضربتی، ناگاه و در چرخشی ۱۸۰ درجه،‌ گذراندن درس را منوط به تحویل پروژه دانستند. بعد از پایان این کلاس،‌ عملا ما از تعجب شاخ درآورده بودیم. بعضی‌ها خوشحال و بعضی‌ها ناراحت. من به شخصه جزء دسته‌ی خوشحال‌ها بودم. چون تجربه به من ثابت کرده که تا برای درسی پروژه تعیین نشود، من به سراغ یادگیری موضوعات جدید نخواهم رفت. با خودم گفتم پس مجبورم ارتباط با سرور را یاد بگیرم. (‌حتما برایتان سوال پیش می‌آید که: حتما باید زور بالا سرت باشه تا یه کاری رو انجام بدی؟ جواب مثبته.)به هر حال این پروژه باعث انگیزه‌ای برای یادگیری ارتباط با سرور در اندروید شد و بالاخره رفتم که قورباغه ام ( چرا غورباقه نه؟) را قورت بدهم.اولین تلاش: HttpClientمی توانم بگویم این روش سخت ترین روش ارتباط با سرور است. چون باید همه چیز توسط خودمان هندل شود. بعد از چندین‌و‌چند روز درگیری و مشکلات متعدد توانستم با این روش از سرور اطلاعاتی را به صورت json بگیرم. عیب این روش کدهای طولانی به درد نخور است که از لحاظ تکنیکی تقریبا چیز خاصی به ما یاد نمی دهد.بخش ارتباط با سرور پروژه با این که راه افتاده بود اما اصلا نسبت به آن حس خوبی نداشتم و نتیجه این شد که دنبال کتابخانه‌ای بگردم تا این کار را برایم راحت‌تر کند.دومین تلاش:از آنجا که قرار شد از کتابخانه های آماده استفاده کنم،‌ به دنبال کتابخانه هایی که این کار را انجام میدادند، گشتم. فکر میکردم 2 گزینه پیش رو دارم: 1- Google Volley و 2- Retrofitراجع به این دو زیاد شنیده بودم. بنابراین از Volley شروع کردم. انصافا نسبت به روش اول خیلی راحت‌تر و قابل فهم‌تر بود. اما بازهم حس خوبی نسبت به آن نداشتم. به سراغ Retrofit رفتم، تجربه بهتری از Volley بود اما یک مشکل داشت: عدم پشتیبانی از کش به صورت خودکار.سومین تلاش:در ادامه کمی سرچ کردم، به این صفحه رسیدم.عاشقش شدم ? به اندازه ای از کار با این کتابخانه لذت بردم که دوست دارم تمام برنامه‌هایی که می‌نویسم را آنلاین کنم. این کتابخانه Fast Android Networking نام دارد. شاید میشد در انتخاب نامش بیشتر تامل می‌کردند. در هر صورت این کتابخانه از OkHttp استفاده می‌کند و در کنار استفاده خیلی آسانش، تقریبا تمام ویژگی‌های دو کتابخانه قبلی را دارد.چگونه از آن استفاده کنیم؟ با این که در صفحه github این کتابخانه توضیحات کاملی داده شده است، من یک توضیح کلی می‌دهم.1- ابتدا باید کتابخانه را از طریق gradle به پروژه اضافه کنیم، این خط را به dependencies در build.gradle ماژول app اضافه کنید:implementation &#039;com.amitshekhar.android:android-networking:1.0.2&#039; نکته: برخلاف Retrofit نیاز نیست که کتابخانه gson برای کار با json را اضافه کنیم و خود این کتابخانه به صورت پیشفرض از gson استفاده می‌کند.2- دسترسی اینترنت را از طریق manifest به برنامه بدهید:&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;3- در این مرحله باید یک کلاس بسازیم که از کلاس Application ارث بری کند و در متد onCreate این کلاس، کتابخانه را initialize را کنیم. پس یک کلاس با نام دلخواه بسازید و در متد onCreate آن این خط را اضافه کنید:AndroidNetworking.initialize(getApplicationContext());نکته: می‌دانید که هر کلاسی که از کلاس  Application ارث بری کند باید در manifest معرفی شود. پس این کار را انجام دهید.کار تمام است. دیگر میتوانیم از این کتابخانه در هر جای پروژه که خواستیم استفاده کنیم. به طور مثال در متد onCreate اکتیویتی Main می‌نویسیم:AndroidNetworking.get(&quot;آدرس مورد نظر شما&quot;)
          .build()
          .getAsJSONArray(new JSONArrayRequestListener() {
                    @Override
                    public void onResponse(JSONArray response) {
                              // do anything with response
                    }
                    @Override
                    public void onError(ANError error) {
                              // handle error
                    }
});تمام. درصورت عدم بروز خطا، اطلاعات به صورت آرایه‌ای از json ها دریافت می‌شود و می‌توانید هرکاری که خواستید با آن انجام دهید.این  ساده‌ترین حالت استفاده از این کتابخانه ساده و قوی است که یک درخواست get به سرور ارسال کردیم.همچین این کتابخانه یک کنترل با نام ANImageView دارد که میتوان با آن تصاویر را به راحتی از سرور دریافت و نمایش داد و عملا دیگر نیازی به کتابخانه‌های picasso و یا glide نیست.پیشنهاد می‌دهم از این کتابخانه استفاده کنید، عاشقش می‌شوید.</description>
                <category>Saeed Ahmadi</category>
                <author>Saeed Ahmadi</author>
                <pubDate>Fri, 11 Jan 2019 21:04:30 +0330</pubDate>
            </item>
                    <item>
                <title>اتیکت، ادب مدرن!</title>
                <link>https://virgool.io/@SaeedAhmadi/etiquette-kcsfqd7zabuf</link>
                <description>- توی مترو هستی، میخوای تلگرامتو چک کنی اما حداقل 4 تا چشم دیگه توی گوشیته!- تلگرامو رو باز میکنی، میبینی به یه گروهی اضافه شدی که خیلیاشونو اصلا نمیشناسی!- یه پیام جدید برات توی تلگرام میاد، اسم طرف چندتا شکلک عجیب و غریبه!- داری با تلفن با یک نفر صبحت میکنی، صدای ملچ ملوچ غذا خوردنش میاد!- توی یه جمعی نشستی، خاله خانباجی ها شروع میکنن:کی میخوای ازدواج کنی؟ / بچه دار شی؟درست تموم نشد؟ / کی میری سربازی؟و ...- توی دانشگاه داری راه میری، یه نفر از دور با انگشت بهت اشاره میکنه و با نفر کناریش پچ پچ میکنه!- توی صف خودپرداز هستی، نفر جلویی 3 تا کارت داره که میخواد استفاده کنه و بعدش هم قبض هاشو پرداخت کنه!- میخوای سوار آسانسور بشی، شخصی که یک طبقه بالاتر یا پایینتر سوار شده جوری نگات میکنه که انگار سوار ماشین پدرش شدی!- میخوای سوار تاکسی بشی، نفر قبلی جوی وسایلشو ریخته رو صندلی که انگار تخت خونشونه!- توی تاکسی نفر کناری با صدای بلند با تلفنش صحبت میکنه!این ها تعدادی موقعیت غیر قابل تحمل بود که برای خودم اتفاق افتاده بود. همین موضوع باعث شد یکم در مورد این رفتارها جستجو کنم که به علم اتیکت رسیدم.در واقع اتیکت رو میشه ادب و نزاکت مدرن تعریف کرد که در تمام جنبه های زندگیمون کاربرد پیدا کرده، از چت توی شبکه هایی مثل تلگرام ، هدیه دادن و هدیه گرفتن، رستوران رفتن و کلا رفتار در اجتماع گرفته تا آداب مذاکرات سیاسی.اتیکت باعث میشه از نظر دیگران فردی مؤدب، باشخصیت، ملاحظه کار و قابل اعتماد به نظر برسیم.بنابراین چیزی که به نظر من الان توی جامعه مون واقعا از نون شب هم واجب تره اینه که خودمون این نکات رو یاد بگیریم و رعایت کنیم و به دیگران هم یاد بدیم.قشنگ نمیشه به نظرتون؟ جامعه ای که توش کسی کارایی که بالاتر مثال زدم رو انجام نده...به امید روزی که توی کشورمون واحدهای درسی با نام اتیکت تدریس بشه. همونطور که چندین ساله در سایر کشورها تدریس میشه.در آخر چند منبع برای یادگیری اتیکت معرفی میکنم.کتاب آداب معاشرت، امیلی پست (کتاب مرجع اتیکت در جهان)محصول اتیکت، محمدرضا شعبانعلی، سایت متممکتاب اتیکت، حسین شیر محمدی و زهرا احمدیگفتگو: شما هم حتما در موقعیت های آزار دهنده قرار گرفتین، اگه مایل بودین یک موقعیت آزار دهنده و نحوه برخودتون رو بنویسید که در موردش صحبت کنیم.منبع خوب دیگه ای برای این موضوع میشناسید؟ ممنون میشم معرفی کنید.</description>
                <category>Saeed Ahmadi</category>
                <author>Saeed Ahmadi</author>
                <pubDate>Thu, 15 Mar 2018 01:06:14 +0330</pubDate>
            </item>
                    <item>
                <title>ترفندچه: نحوه حذف رمز صفحه قفل گوشی های اندرویدی بدون از دست دادن اطلاعات</title>
                <link>https://virgool.io/@SaeedAhmadi/how-to-bypass-lockscreen-ezxukmo4dxfk</link>
                <description>امروز یه اتفاق بد برام افتاد که به خوبی تموم شد.سر کلاس درس مهندسی نرم افزار نشسته بودم، توی آنتراکت وسط کلاس خواستم با موبایلم به اینترنت وصل بشم. میدونید برای اتصال به اینترنت دانشگاه باید یه کانکشن vpn ساخته بشه، اما نمی دونم چرا برای ساخت vpn توی اندروید، دستگاه باید رمز داشته باشه.چون جدیدا رام موبایل رو عوض کرده بودم، رمز نداشت. یه پین(رمز 4 رقمی) گذاشتم و به اینترنت وصل شدم و تمام.بعد از کلاس توی حیاط دانشگاه مشغول لذت بردن از ویویِ خارِ بوته هایِ گلِ باغچه یِ وسطِ دانشگاه بودم :) که صدای پیام موبایلم اومد. گوشیمو درآوردم که پیام رو بخونم اما یه اتفاقی افتاده بود.رمزی که گذاشته بودم رو یادم نمیومد. نیم ساعت رو صرف زدن انواع حالات رمزهایی که ممکن بود گذاشته باشم کردم اما هیچکدوم درست نبود.اولین راهکاری که به ذهن هر کسی در این موقعیت میرسه، ریست فکتوری کردن( بازگشت به تنظیمات کارخانه) موبایل هست.خب من این روش رو دوست نداشتم چون علاوه بر این که داده هایی رو دست می دادم، اون پیامی رو هم که اومده بود نمیتونستم بخونم.وقتی برگشتم خونه اولین کارم شیرجه به سمت گوگل برای پیدا کردن راهی برای حذف رمز صفحه قفل موبایل بدون از دست دادن اطلاعات بود.بعد از مدتی سرچ داشتم کم کم به روش ریست فکتوری فکر میکردم که به این صفحه رسیدم. دقیقا همون چیزی بود که میخواستم. یه فایلی که فلش میکنی و رمز صفحه قفل حذف میشه. :)در واقع ایده ش اینه که دیتابیس صفحه قفل با یه دیتابیس خالی جایگزین بشه.فایل رو دانلود کردم و به موبایل منتقل کردم و از طریق محیط ریکاوری فلش کردم.بعد از روشن کردن موبایل خیلی خوشحال شدم چون دیگه رمزی روی صفحه قفل نبود.کلید قفلم رو پیدا کردم :)  بعد وارد پیام های گوشیم شدم و پیامی که اومده بود رو خوندم :|&quot; بسته‌های اینترنت جدید رایتل هیجان‌انگیزند.  از لینک زیر بسته‌های جدید رایتل را مشاهده و بسته دلخواهتان را خریداری کنید &quot; http://www.rightel.ir/offersحس من توی اون لحظه :(امیدوارم برای شما همچین اتفاقی نیفته اما اگه افتاد و به اطلاعات موبایل نیاز داشتین شما هم احتمالا بتونید این روش رو استفاده کنید.برای استفاده از این روش باید یه سری کار انجام بدید که اون ها رو پایین لیست می کنم.1-آنلاک کردن بوتلودر موبایل2- نصب کاستوم ریکاوری3- فلش کردن فایل حذف پسورد از طریق کاستوم ریکاوریفایل حذف پسورد رو میتونید از اینجا دانلود کنیداین مراحلی هست معمولا برای موبایل های برند هواوی باید طی بشه. من چون مراحل 1 و 2 رو قبلا انجام داده بودم این روش خیلی برام خوب بود.اگه خواستید این روش رو امتحان کنید برای یادگیری نحوه انجام مراحل 1 و 2 میتونید توی گوگل سرچ کنید &#x27;انجمن ایران اندروید&#x27;یا &#x27;انجمن موبایلستان&#x27; و پس از ثبت نام در اون ها به بخش آموزش های مخصوص مدل موبایل خودتون برید و اگه آموزشی در این مورد گذاشته شده بود انجام بدید.در پایان لازم میدونم از اون دولوپری که اون فایل رو درست کرده بود تشکر ویژه بنمایم. :))و امیدوارم از این روش سوء استفاده نشه.</description>
                <category>Saeed Ahmadi</category>
                <author>Saeed Ahmadi</author>
                <pubDate>Wed, 28 Feb 2018 20:00:08 +0330</pubDate>
            </item>
                    <item>
                <title>بسته دانشجویی JetBrains</title>
                <link>https://virgool.io/@SaeedAhmadi/jetbrains-license-mip3yc4cgvsx</link>
                <description> در این نوشته نحوه دریافت لایسنس یک ساله محصولات شرکت JetBrains به صورت رایگان و قانونی و با استفاده کارت دانشجویی را توضیح داده ام. :) ما در ایران  زندگی می‌کنیم و تقریبا تمامی‌ محصولات نرم افزاری دنیا را می‌توانیم به صورت رایگان با پچ کردن لایسنس آن‌ها استفاده کنیم. اما خب داشتن لایسنس اصلی بهتر است یا پچ کردن؟شرکت JetBrains برای دانشجویان و اعضای هیئت علمی‌ دانشگاه‌های سراسر دنیا لایسنس رایگان هدیه می‌دهد.برای پر کردن فرم دریافت لایسنس از اینجا اقدام کنید.اگر شما هم همانند من ایمیل دانشگاهی ندارید، در لینک بالا در قسمت  Apply with گزینه OFFICIAL DOCUMENT را انتخاب و اطلاعات خواسته شده را  تکمیل کنید. در ادامه باید کارت دانشجویی اسکن شده خود را آپلود کنید.  تقریبا ۴۸ ساعت پس از ارسال فرم درخواست، اگر اطلاعات شما تایید شود یک  ایمیل از JetBrains دریافت خواهید کرد که با استفاده از آن می‌توانید حساب  جدیدی ایجاد کنید که دارای یک سال لایسنس تمامی‌محصولات JetBrains است.  محصولاتی که لایسنس آن‌ها به من داده شد. با توجه به این که دانشگاه من تقریبا دانشگاه محسوب نمی‌شود، پس برای بقیه دانشگاه‌ها فکر نمی‌کنم مشکل خاصی از لحاظ تایید اطلاعات وجود داشته باشد.امیدوارم این نوشته ۲۱۲ واژه ای به دردتون بخوره. :)</description>
                <category>Saeed Ahmadi</category>
                <author>Saeed Ahmadi</author>
                <pubDate>Fri, 16 Feb 2018 23:04:24 +0330</pubDate>
            </item>
            </channel>
</rss>