<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیر رحیمی نژاد</title>
        <link>https://virgool.io/feed/@amirrahimi</link>
        <description>مدیر پروژه، معمار نرم افزار، محقق و برنامه نویس</description>
        <language>fa</language>
        <pubDate>2026-04-15 04:44:53</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/260483/avatar/k9AQRs.jpg?height=120&amp;width=120</url>
            <title>امیر رحیمی نژاد</title>
            <link>https://virgool.io/@amirrahimi</link>
        </image>

                    <item>
                <title>معرفی کتاب | هنر ظریف بی خیالی</title>
                <link>https://virgool.io/@amirrahimi/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%AA%D8%A7%D8%A8-%D9%87%D9%86%D8%B1-%D8%B8%D8%B1%DB%8C%D9%81-%D8%A8%DB%8C-%D8%AE%DB%8C%D8%A7%D9%84%DB%8C-ioesmxzp9qdq</link>
                <description>تو زندگی و کار همیشه تلاش می‌کنیم همه چیز رو کنترل کنیم، همه دغدغه‌ها رو حل کنیم و هر فرصتی رو از دست ندیم. اما مارک مانسون تو کتابش هنر ظریف بیخیالی یه نکته خیلی ساده اما قدرتمند میگه: نمی‌تونی به همه‌چیز اهمیت بدی.چند درس از کتاب:🔹 انتخاب چیزهای مهم: انرژی و توجهت محدودن؛ باید تصمیم بگیری چی واقعاً ارزش داره.🔹 رنج بخشی طبیعی زندگیه: هر هدف بزرگ یه بسته رنج داره، باید انتخاب کنی برای چی حاضری رنج بکشی.🔹 مسئولیت همون قدرته: شاید همه تقصیرها با تو نباشه، اما همیشه مسئول انتخاب واکنش‌هات هستی.🔹 نه گفتن مهارته: مرزبندی و نه گفتن به چیزهای کم‌ارزش، تو رو برای ارزش‌های واقعی آماده می‌کنه.🔹 قطعیت دشمن پیشرفته: دنبال جواب‌های مطلق نباش، پیش برو، تجربه کن و اصلاح کن (زندگی پر از عدم قطعیت هاس).من خودم به تازگی، شروع کردم از دغدغه‌های کم‌ارزش صرف‌نظر کنم و روی اهداف اصلی‌م تمرکز کنم.نتیجه اش این بود: احساس آزادی، تمرکز و بهره‌وری بیشتر تو زندگی و کارم.💡 اگر دنبال یه راهنمای عملی هستی برای اینکه انتخاب کنی چه چیزایی تو زندگی برات دغدغه باشه، این کتاب یه گزینه عالیه.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Wed, 10 Dec 2025 15:17:11 +0330</pubDate>
            </item>
                    <item>
                <title>چهار استراتژی کلیدی برای مقیاس‌پذیری مؤثر پایگاه داده</title>
                <link>https://virgool.io/@amirrahimi/%DA%86%D9%87%D8%A7%D8%B1-%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C-%DA%A9%D9%84%DB%8C%D8%AF%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D9%82%DB%8C%D8%A7%D8%B3-%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C-%D9%85%D8%A4%D8%AB%D8%B1-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-kf8cduzuhu5d</link>
                <description>با رشد سیستم‌ها و افزایش تعداد کاربران، پایگاه داده به یکی از حساس‌ترین و چالش‌برانگیزترین بخش‌های معماری نرم‌افزار تبدیل می‌شود. انتخاب رویکرد مناسب برای مقیاس‌پذیری، نقش مهمی در حفظ کارایی، پایداری و در دسترس‌پذیری سرویس دارد. در این مقاله، چهار استراتژی رایج و اثربخش برای مقیاس‌پذیری پایگاه داده را بررسی می‌کنیم.۱) استراتژی Vertical Scaling (افزایش ظرفیت سخت‌افزاری)ساده‌ترین روش برای افزایش توان پردازشی پایگاه داده، ارتقای منابع سخت‌افزاری نظیر CPU، RAM و فضای ذخیره‌سازی است.این رویکرد بدون نیاز به تغییرات ساختاری در نرم‌افزار انجام می‌شود و در بسیاری از سیستم‌ها، اولین گام منطقی برای افزایش ظرفیت به شمار می‌آید.با این حال، Vertical Scaling دارای محدودیت ذاتی است و نهایتاً تا سقف مشخصی قابل افزایش است.۲) استراتژی Replication (توزیع بار خواندن)در Replication با ایجاد نسخه‌های متعدد از داده، امکان توزیع بار خواندن بین چندین نود را فراهم می‌سازد.در این مدل:عملیات نوشتن تنها به یک نود Leader ارسال می‌شود، Leader تغییرات را به نودهای Follower منتقل می‌کند، عملیات خواندن می‌تواند توسط هر یک از نودهای Leader یا Follower انجام شود.هدف اصلی این روش افزایش ظرفیت Read و بهبود کارایی سامانه در مواجهه با تعداد زیاد درخواست‌های خواندن است.۳) استراتژی Caching (افزایش سرعت با ذخیره‌سازی موقت)استفاده از Cache، از تکرار درخواست‌های غیرضروری به پایگاه داده جلوگیری می‌کند.در این رویکرد، نخستین درخواست داده را از پایگاه داده دریافت کرده و نتیجه آن در Cache ذخیره می‌شود.درخواست‌های بعدی، در صورت وجود داده در Cache، به‌سرعت پاسخ داده می‌شوند.این روش علاوه بر کاهش بار پایگاه داده، به‌طور چشمگیری سرعت پاسخ‌گویی را نیز افزایش می‌دهد.۴) استراتژی Partitioning / Sharding (مقیاس‌پذیری افقی برای مدیریت بار نوشتن)استراتژی Sharding با تقسیم داده به بخش‌های مستقل (Partitions یا Shards) و توزیع آن‌ها در چندین سرور، امکان افزایش ظرفیت‌پذیری عملیات نوشتن را فراهم می‌کند.در این مدل:هر شارد بخشی از داده را مدیریت می‌کند،هر درخواست نوشتن تنها به شارد مربوطه ارسال می‌شود،بار نوشتن میان چندین ماشین تقسیم می‌گردد.این رویکرد برای سامانه‌هایی که حجم عملیات نوشتن آن‌ها بالا است، روشی پایدار و قابل اعتماد به حساب می‌آید.ارتباط Replication و Shardingدر معماری‌های بزرگ، Sharding و Replication معمولاً به‌صورت ترکیبی مورد استفاده قرار می‌گیرند.هر شارد روی چندین نود Replicate می‌شود تا در صورت خرابی یک نود، دسترس‌پذیری داده حفظ گردد.جمع‌بندیچهار روش Vertical Scaling، Replication، Caching و Sharding، ستون‌های اصلی مقیاس‌پذیری پایگاه داده در معماری‌های مدرن محسوب می‌شوند.انتخاب مناسب میان این روش‌ها به نیازهای عملکردی، حجم داده، الگوی دسترسی و محدودیت‌های معماری هر سیستم بستگی دارد.به‌کارگیری درست و ترکیبی این استراتژی‌ها، امکان ساخت سامانه‌هایی پایدار، سریع و قابل‌اتکا را فراهم می‌کند.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Thu, 04 Dec 2025 13:46:23 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی کتاب | قدرت پشتکار</title>
                <link>https://virgool.io/@amirrahimi/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%AA%D8%A7%D8%A8-%D9%82%D8%AF%D8%B1%D8%AA-%D9%BE%D8%B4%D8%AA%DA%A9%D8%A7%D8%B1-ucv2fjrsoqtn</link>
                <description>بعضی کتاب‌ها برای این نیستن که چیزی «جدید» یاد بدن؛ برای اینن که بهمون تلنگر بزنن.«قدرت پشتکار» دقیقاً همین کار رو می‌کنه.کتاب خیلی ساده نشون میده که خیلی از آدم‌ها شکست نمی‌خورند، فقط وسط مسیر نا امید و در نهایت متوقف می‌شن.پشتکار یعنی همون «ادامه دادن» در روزهایی که انگیزه نیست، انرژی نیست و نتیجه هم هنوز معلوم نیست.برای من که چندتا پروژه موازی دارم، این کتاب دوباره یادآوری کرد:🟢 تفاوت آدم موفق با بقیه بیشتر از استعداد، استمراره.📕 معرفی کوتاه کتاب و نویسندهنویسنده: آنجلا داک‌ورث. روانشناس، پژوهشگر و استاد دانشگاه پنسیلوانیا؛ مشهور برای تحقیقاتش درباره نقش پشتکار در موفقیت.🔶 خلاصه یک‌پاراگرافی کتاب«قدرت پشتکار» توضیح می‌ده که موفقیت ترکیبی از علاقه + استمرار بلندمدته. داک‌ورث با تحقیقات گسترده نشان می‌ده که پشتکار از استعداد مهم‌تره و با ایجاد عادت‌های کوچیک، تمرین طولانی‌مدت و مدیریت سختی ها می‌تونیم این ویژگی رو در خودمون بسازیم و تقویت کنیم.تصویر کتاب قدرت پشتکار</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Thu, 04 Dec 2025 09:52:43 +0330</pubDate>
            </item>
                    <item>
                <title>ایده ها سراغت نمیان تو باید بری سراغشون</title>
                <link>https://virgool.io/@amirrahimi/%D8%A7%DB%8C%D8%AF%D9%87-%D9%87%D8%A7-%D8%B3%D8%B1%D8%A7%D8%BA%D8%AA-%D9%86%D9%85%DB%8C%D8%A7%D9%86-%D8%AA%D9%88-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%B1%DB%8C-%D8%B3%D8%B1%D8%A7%D8%BA%D8%B4%D9%88%D9%86-wybxjhizy94y</link>
                <description>چند سال پیش یه روز که داشتم از کار برمیگشتم خونه، توی ترافیک همت مثل همیشه هزار تا فکر ریز و درشت تو سرم میچرخید. وسط همون شلوغی در حالیکه ماشینا خیلی آروم حرکت میکردند یهو یه ایده کوچیک به ذهنم رسید از اونایی که معمولاً دو دقیقه بعد فراموش میکنی.اتفاقا همون روز، بخشهایی از کتاب شکارچی ایده‌ها رو خونده بودم که گفته بود:«ایده‌ها رو جدی بگیر؛ حتی کوچیک‌ها رو.»برای اولین بار گفتم بزار ثبتش کنم. در حین رانندگی با Voice Recorder ایده رو ضبط کردم و به خودم گفتم شب حتما یه جا بنویسمش.جالب اینجاست که همون ایده، چند ماه بعد شد راه‌حل یه مشکل جدی تو یکی از پروژه‌هام و من اون ایده رو که چند ماه قبل توی دفترچه یادداشت کرده بود استفاده کردم و شد نجاتم از یه بن بست کاری.و همون‌جا فهمیدم ایده داشتن شانسی نیست، یه روال مستند و منظمه.کتاب شکارچی ایده‌ها دقیقاً همینو می‌گه:ایده‌ها قرار نیست خودشون بیان، تو باید بری شکارشون. این روزا یک بار دیگه این کتاب رو ورق میزنم و میخام به چند نکته مهمش که واقعاً به دردتون می‌خوره اشاره کنم:1- آدم‌های خلاق منتظر الهام نمی‌مونن. خودشون ایده می‌سازن.2- ایده‌های خوب معمولاً از جاهای دور از تخصص می‌آن. 3- تجربه‌ی جدید یعنی خوراک جدید برای ذهن.4- ایده‌ها رو باید ثبت کرد، زیاد روی حافظه نمیشه حساب کرد.برای من یادآوری خوبی بود. اینکه ایده ها سراغت نمیان تو باید بری سراغشون.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Tue, 02 Dec 2025 12:54:33 +0330</pubDate>
            </item>
                    <item>
                <title>بهترین روش‌های طراحی REST API</title>
                <link>https://virgool.io/@amirrahimi/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-rest-api-mzbu70y5hu4t</link>
                <description>طراحی REST API به نظر ساده میاد، اما نکات ریز و مهمی داره که باید رعایت کنیم. معمولا اشتباهاتی در طراحی API مرتکب میشیم که شامل این 5 مورده:1️⃣ استفاده از فعل در آدرس URLآدرس باید فقط «منبع» (اسم) باشه، نه «عمل» (فعل). عمل رو خود متد HTTP مشخص می‌کنه.❌ GET /getAllBooks❌ POST /createNewBook✅ GET /books✅ POST /books2️⃣ استفاده نادرست از متدهای HTTPمتد درست باعث می‌شه API خودبه‌خود قابل فهم باشه:GET گرفتن دادهPOST ساختن منبع جدیدPUT جایگزینی کامل یک منبعPATCH ویرایش جزئی یک منبعDELETE حذف منبع 3️⃣ برنگردوندن کد وضعیت مناسبکلاینت نباید مجبور بشه بدنه پاسخ رو پارس کنه تا بفهمه چی شده.❌ همیشه 200 OK برگردوندن✅200 OK برای GET و PUT موفق✅201 Created وقتی با POST منبع جدید ساخته شد✅204 No Content وقتی با DELETE چیزی حذف شد✅404 Not Found وقتی منبع پیدا نشد✅400, 401, 403, 429, 500 و … در مواقع لازم4️⃣ نام‌گذاری ناسازگارهمه جا یک شکل باشه❌ گاهی /book/123 گاهی /authors✅ همیشه جمع بساز: /books/123 ، /authors ، /orders5️⃣ فراموش کردن صفحه‌بندی (Pagination)برگردوندن همه رکوردها در یک درخواست دروافع فاجعه عملکردیه❌ برگردوندن ۱۰۰ هزار رکورد یه‌جا✅ همیشه صفحه‌بندی داشته باش:?page=3&amp;limit=50</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Tue, 02 Dec 2025 12:44:02 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با Multi threading در جاوا</title>
                <link>https://virgool.io/javacup/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-multi-threading-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-e7r7fbjcjag7</link>
                <description>در بسیاری از نرم افزارها نیازمند اجرای چند Task به موازات هم هستیم. قابلیت multi tasking در سیستم عاملها مختلف برای این تعبیه شده که چندین وظیفه توسط منابع محدودی مثل cpu به صورت موازی انجام شوند و در واقع زمان منابع موجود بین وظایف مختلف تقسیم میشود. سیستم عامل برای اجرا دو پردازش سنگین،  منابعی مثل Cpu را با فاصله زمانی کوتاهی بین Process ها سوئیج میکند. این عمل به ویژه در پردازشهایی که منابعی دیگر جز CPU را درگیر میکنند کاربردی است تا دیگر پردازشها را معطل نکنند.قبل از هر چیزی باید دو واژه Process و Thread را تعریف کنیم. هر دو این واژه ها با مفهوم Multi tasking گره خورده اند. Multi Tasking یا چند وظیفگی به دوشکل پیاده سازی میشود :1- Multi Processing (چند پردازشی)2- Multi Threading (چند نخی)روش چند پردازشیدر این روش هر پردازش یک فضای آدرس مجزا در حافظه دارد و معمولا در سطح یک برنامه تعریف میشود . مثلا یک برنامه حسابداری یک Process جداگانه داشته و برنامه فوتوشاپ Process مختص خود را دارد.معمولا تخصیص منابع و سوئیچ بین Process ها در سطح سیستم عامل انجام میشود و سوئیچ و ارتباط بین Process ها هزینه بر است. Process ها سنگین وزن هستند و خود میتوانند از چندین Thread تشکل شوند.روش چند نخیدر این روش Thread هایی در یک فضای حافظه مشترک اجرا میشوند و در دل یک Process هستند (داخل یک برنامه هستند) . Thread ها بسیار سبک هستند و ارتباط بین آنها به سادگی ایجاد میشود .همچنین سوئیچ بین Thread ها با سرعت بیشتری انجام میشود.Process Vs Threadچرخه حیات نخ (Thread States)یک Thread دارای چرخه حیاتی است که از زمان تولد تا مرگ وضعیتهای مختلفی را به خود میبیند. وضعیتهای Thread در طول چرخه حیاتش به شرح زیر است :NewRunnableRunningNon-Runnable (Blocked)Terminated1- جدید (New) : زمانی که یک شیء از نوع Thread ساخته میشود در این وضعیت قرار میگیرد2- قابل اجرا (Runnable) : زمانی که Thread آغاز به کار میکند در این وضعیت قرارمیگیرد تا نوبت پردازشش فرا برسد. با فراخوانی متد start این وضعیت برای Thread فعال میشود.3- درحال اجرا (Running) : زمانی که نوبت اجرا به Thread میرسد و Cpu را در اختیار میگیرد در وضعیت درحال اجرا قرار میگیرد.4- متوقف (Block) : زمانی که وقفه ای در اجرا Thread ایجاد شود در این وضعیت قرار میگیرد و پس از پایان وقفه وضعیت به Runnable تغییر میکند تا در نوبت اجرا قرارگیرد. (در این وضعیت Thread خاتمه نیافته اما واجد شرایط اجرا شدن نیست)5- خاتمه یافته (Terminated) : زمانی که عملکرد Thread خاتمه میابد در این وضعیت قرار میگیرد (به عبارتی میمیرد)پیاده سازی Thread در جاوادو روش برای پیاده سازی Thread در جاوا وجود دارد :1- ارث بری از کلاس Thread2- پیاده سازی اینترفیس Runnableنحوه پیاده سازی اولclass Multi extends Thread{     public void run(){          System.out.println(&quot;thread is running...&quot;);     }     public static void main(String args[]){          Multi t1=new Multi();          t1.start();     }}در این مثال با ارث بری از کلاس Thread پیاده سازی انجام شده. بدنه اصلی Thread باید در متد run نوشته شود و برای اجرای Thread هم از متد start استفاده میشود. با اجرای این برنامه یک Thread جدید ساخته شده و محتوای متد run اجرا میشود.نحوه پیاده سازی دومclass Multi3 implements Runnable{     public void run(){          System.out.println(&quot;thread is running...&quot;);     }     public static void main(String args[]){          Multi3 m1=new Multi3();          Thread t1 =new Thread(m1);           t1.start();     }}در این روش اینترفیس Runnable باید پیاده سازی شود و مانند مثال قبل متد run نوشته شود. برای اجرا باید یک شیء از کلاس Thread ساخته شود و شیء Runnable را به متد سازنده آن  داده و با متد start آنرا اجرا کنیم.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Fri, 23 Apr 2021 18:34:21 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش رایگان برنامه نویسی جاوا</title>
                <link>https://virgool.io/coderlife/java-videos-f4kyfybdq43a</link>
                <description>آموزش برنامه نویسی جاواچند سال پیش تعدادی ویدئو آموزشی برای برنامه نویسی جاوا از به صورت رایگان در سایتم منتشر کردم. مشغول خانه تکانی هارد اکسترنالم بودم که به آنها برخوردم و تصمیم گرفتم آنها را از طریق پلتفرم آپارات به اشتراک بگذارم تا امکان استفاده از آنها برای عده بیشتری از علاقه مندان به یادگیری برنامه نویسی قرارگیرد.از طریق این پست تمام ویدئوهای منتشر شده را با شما عزیزان به اشتراک میگذارم باشد که مورد استفاده تان قرار گیرد : https://www.aparat.com/v/g06cR  https://www.aparat.com/v/Lxc5l  https://www.aparat.com/v/NxyML  https://www.aparat.com/v/irna8  https://www.aparat.com/v/Jnw0l  https://aparat.com/v/8XPhJ  https://aparat.com/v/d3Dow  https://aparat.com/v/m1o0w </description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Wed, 21 Apr 2021 14:34:28 +0430</pubDate>
            </item>
                    <item>
                <title>چهار چیزی که از کودکان باید یاد بگیریم</title>
                <link>https://virgool.io/@amirrahimi/%DA%86%D9%87%D8%A7%D8%B1-%DA%86%DB%8C%D8%B2%DB%8C-%DA%A9%D9%87-%D8%A7%D8%B2-%DA%A9%D9%88%D8%AF%DA%A9%D8%A7%D9%86-%D8%A8%D8%A7%DB%8C%D8%AF-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-gs22ncildrps</link>
                <description>چهاز چیزی که از کودکان باید یاد بگیریم1- کنجکاویاولین چیزی که باید از کودکان یاد گرفت کنجکاوی بی حد و مرز آنان است. کافیست کودکان بخواهند در مورد چیزی بدانند تا شما را عاصی کنند. بعد از اینکه صدها سوال در مورد آن موضوع پرسیده اند و شما فکر میکنید تمام شده با صدها سوال جدید باز میگردند و میتوانند شما را تا مرز جنون پیش ببرند. کنجکاوی کلید اصلی یادگیری است. کودکان از کنجکاوی برای یادگیری استفاده میکنند. کنجکاوی سبب میشود یادبگیرید و رشد نمایید. اگر میخواهید در همه امور زندگی پیشرفت کنید جلوی کنجکاوی خود را نگیرید.2- هیجاندومین چیزی که باید از کودکان یاد گرفت هیجان است. هیجان کودکانه در خود جادوهای بی نظیری دارد. آن قدر هیجان زده باشید که شبها از ذوق به خواب نروید. بی تاب باشید که صبح زودتر بیدار شوید و به کار هیجان انگیزتان بپردازید. در حال انفجار ایده باشید و هر لحظه به دنبال یافتن راهی هیجان انگیز برای انجام امور باشید. هرگز به خودتان نگویید برای هیجان کودکانه پیر شده اید. اگر فکر میکنید برای هیجان پیر شده اید پس برای همه امور پیر شده اید.3- ایمانافراد بزرگسال معمولا به همه چیز مشکوکند و در حد افراط بدبین. اما بچه ها این طور نیستند فکر میکنند. میتوانید همه چیز را به دست آورید. اگر به یک کودک بگویید خانه ای با سه استخر میخریم احتمالا به شما میگوید چه خوب پس هر کدام ما میتواند یک استخر برای خودش داشته باشد ، آنها حتی در آن شیرجه هم میزنند. ولی یک بزرگسال این گونه برخورد میکند:&quot; مگر میشود از این خانه محقر خلاص شد؟ خانه با یک استخر هم نمیتوانیم داشته باشیم . اغلب مردم حتی استخر هم ندارند همینکه در خانه یک وان داشته باشیم کافی است.&quot;4- اعتماداعتماد یکی از ویژگیهای کودکانه است اما بسیار ارزشمند. اینکه کودکان خواب راحتی دارند به همین دلیل است. آنها به پدر و مادر خود اعتماد دارند و حتی زمانیکه دست به کارهای خطرناک میزنند میدانند کسی هوایشان را دارد. کودکان معمولا از ارزیابی شدن نمیترسند و این از اعتمادشان نشات میگیرد. حتی به خودشان اعتماد دارند و با اینکه کاری را به خوبی بلد نیستند سعی میکنند آنرا انجام دهند.برگرفته از کتاب 5 قانون پول که باید بدانیم اثر جیم ران</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Sat, 13 Feb 2021 10:45:18 +0330</pubDate>
            </item>
                    <item>
                <title>درسهایی برای برای خوشبختی</title>
                <link>https://virgool.io/@amirrahimi/%D8%AF%D8%B1%D8%B3%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AE%D9%88%D8%B4%D8%A8%D8%AE%D8%AA%DB%8C-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-izf4gooecuac</link>
                <description>کتاب خوشبختی در یک کلامآنچه در این مقاله میخوانید بر گرفته از کتاب &quot;خوشبختی در یک کلام&quot; نوشته آقای آندره متیوس است که تحت عنوان درسهایی برای خوشبختی گرد آوری کرده ام :شما شادی و خوشبختی را در غیاب مشکلات نمی یابید، بلکه آنرا علیرغم وجود مشکلات پیدا میکنید، یعنی این شما هستید که شادی را انتخاب میکنید.اگر میخواهید در زندگیتان تغییری ایجاد شود، بیشتر از یکبار تلاش کنید. قانونی هست که میگوید اکثر دانه ها هرگز رشد نمیکنند، بهتر است چندین دانه بکارید تا یکی رشد کند.موفقها هر چه بیشتر شکست میخورند دانه های بیشتری می کارند.ارزش واقعی اهداف در به دست آوردن آنها نیست بلکه در تحول و کسب تجربیات جدید است.دیگران همان گونه با شما رفتار میکنند که شما با خودتان رفتار میکنید.اگر بخواهید منتظر زمان مناسب انجام کاری باشید، هرگز آن زمان فرا نمیرسد. همین حالا دست به کار  شوید.خوش بینها و افراد مثبت گرا عادت دارند آنچه را میخواهند در ذهن تجسم کنند نه آنچه را از آن میترسند.به هر چیزی بیندیشید و به همان چیز دست میبابید. در واقع به آن چیز تبدیل میشوید.همه وظایف و کارهای روزانه به یک اندازه مهم نیستند.قسمت کوچکی از کار روزانه (حدود 20 درصد) مهمتر از کل مابقی کارهاست (قانون 80/20)افراد معمولی نیروی مساوی روی همه کارها میگذارند و بعضا کارهای کم اهمیت را در اولویت قرار میدهند. اما موفقها تمام تلاش خود را روی امور کلیدی میگذارند.اگر بدانید چرا کاری را انجام میدهید انجام آن کار برایتان لذت بخشتر و آسان تر میشود حتی اگر کار جالبی نباشد.معمولا کسانی درآمد بیشتری دارند که از قوه خلاقه خود بیشتر استفاده میکنند و سعی میکنند چیزی خلق کنند.سخت ترین بخش کار شروع آن است. معمولا بیشترین مقاوت در هرکاری در ابتدای آن دیده میشود و با گذشت زمان انجام آن راحت تر میشود.موفقیت در هر زمینه ای نتیجه انجام یک کار بزرگ نیست ، بلکه انجام درست صدها کار بسیار ساده و کوچک است که کنار هم قرار گرفته اند.افراد درمانده آرزو دارند یک روز شانس در خانه شان را بزند و زندگیشان تغییر کند اما افراد موفق میدانند تلاش دائم و و هر روزه در کارهای کوچک است که زندگی را تغییر میدهد.شما میتوانید عادات ناخودآگاه خود را با تجسم و تمرین هر روزه تغییر دهید.برای پیشرفت در زندگی میتوانید از هر نقطه مثبتی شروع کنید. فرقی نمیکند کدام جنبه زندگی را در نظر میگیرد مطممئنا پیشرفت در آن در جنبه های دیگر زندگیتان نیز تاثیر میگذارد.دردهای روحی و احساسی به ما این پیام را میدهند که باید طر فکرمان را عوض کنیم.بهترین زمان برای رها کردن هر کاری بعد از موفق شدن در آن کار است نه در زمان شکست خوردن یا نتیجه نگرفتن. اینگونه اعتماد به نفس شما همیشه بالا میرود و رهاکردن آن کار هم به میل  خودتان بوده نه به اجبار و استیصال.برای بخشیدن کسی لازم نیست با کار او موافق باشید . بخشش دیگران باعث میشود حالت روحی و جسمی بهتری بدست آورید و این کار را فقط برای حال خوب خودتان انجام میدهید.اگر میخواهید مورد احترام همگان قرارگیرید لازم نیست نابغه یا ستاره باشید. کافیست در جهت صداقت ، اراده ، تواضع و شجاعت تلاش کنید و خود را رشد دهید. مجموعه این ویژگیها شخصیت شما نامیده میشود. ما با این صفات به دنیا نمی آییم بلکه آنها را کسب میکنیم.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Thu, 10 Dec 2020 13:55:59 +0330</pubDate>
            </item>
                    <item>
                <title>ایجاد کاربر برای MySql در لینوکس</title>
                <link>https://virgool.io/@amirrahimi/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-mysql-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-wkbadtkxcjxx</link>
                <description>پس از ورود به MySql CLIبا دستور زیر :$ mysql -u root -pپس از ورود به mysql cli میتوان کاربر دلخواه را اضافه نمود . به شکل زیر :CREATE USER &#039;username&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password&#039;;میتوان این دستور یک کاربر برای localhost (هاست جاری) ایجاد میکند. به این مفهوم که این کاربر از خارج از این ماشین امکان دسترسی به Mysql را نخواهد داشت. درصورتیکه بخواهیم کاربری از یک آدرس خاص به این mysql متصل شود به شکل زیر کاربر تعریف میکنیم :CREATE USER &#039;username&#039;@&#039;ip_address&#039; IDENTIFIED BY &#039;password&#039;;جای ip_address باید آی پی دستگاهی که میخواهد به سرور متصل شود را مشخص نمود.اگر بخواهیم کاربری از خارج به صورت remote به سرور Mysql متصل شود بدون محدودیت آی پی و آدرسش کاربر را به صورت زیر تعریف میکنیم:CREATE USER &#039;username&#039;@&#039;%&#039; IDENTIFIED BY &#039;password&#039;;تا اینجای کار توانستیم کاربر مورد نظر را برای MySql تعریف کنیم اما هنوز مشخص نکرده ایم که کاربر چه دسترسی هایی به دیتابیسهای ما داشته باشد. برای این کار از ساختار دستوری زیر استفاده میکنیم :GRANT permission_type ON database.table TO &#039;username&#039;@&#039;localhost&#039;;برای در این ساختار در بخش permission _type باید مشخص کنیم چه نوع دسترسی قرار است به کاربر بدهیم و در بخش دوم مشخص میکنیم روی کدام دیتابیس و جدول این مجوز را اعمال میکنیم و در آخر مشخص میکنیم این دسترسی برای کدام کاربر است.انواع prtmissio_type ها به شرح زیر است :All Privileges: The user account has full access to the databaseInsert: The user can insert rows into tablesDelete: The user can remove rows from tablesCreate: The user can create entirely new tables and databasesDrop: The user can drop (remove) entire tables and databasesSelect: The user gets access to the select command, to read the information in the databasesUpdate: The user can update table rowsبه مثال های زیر توجه کنید :GRANT INSERT database_name.* TO &#039;username&#039;@&#039;localhost&#039;;
GRANT ALL PRIVILEGES ON *.* TO &#039;username&#039;@&#039;localhost&#039;;
GRANT ALL PRIVILEGES ON database_name.table_name TO &#039;username&#039;@&#039;localhost&#039;;در دستور اول فقط مجوز درج رکورد به تمام جداول یک دیتابیس خاص داده شدهدر دستور دوم دسترسی کامل به همه دیتابیسها و جداول آنها به کاربر داده شدهدر دستور سوم دسترسی کامل به یک جدول از دیتابیس به کاربر داده شدهدر نهایت پس از تعییندسترسی های کاربر حتما یک بار دستور زیر را اجرا نمایید تا تغییرات به سرعت در سرور اعمال شود:FLUSH PRIVILEGES;در این مطلب سعی کردم به شکل ساده ایجاد کاربر و دسترسی های کاربر را بیان کنم. نکات دیگری به ویژه در خصوص دسترسی های کاربر به صورت ریموت و مدیریت کاربران وجود دارد که با یک سرچ ساده قابل دستیابی است.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Wed, 30 Sep 2020 19:55:19 +0330</pubDate>
            </item>
                    <item>
                <title>نصب MySql در Ubuntu</title>
                <link>https://virgool.io/@amirrahimi/%D9%86%D8%B5%D8%A8-mysql-%D8%AF%D8%B1-ubuntu-yqnxzstgxq6q</link>
                <description>نصب Mysql در Ubuntu 20در این مقاله قصد دارم نحوه نصب Mysql در سیستم عامل Ubuntu 20 توضیح دهم. چرا که برای بسیاری از پروژه های اجرایی در لینوکس مورد استفاده قرار میگیرد. امیدوارم مورد استفاده دوستان قرار گیرد:دستور apt :این دستور مخفف advanced package tool میباشد که برای مدیریت پکیجها در لینوکس از آن استفاده میشود. (نصب و حذف پکیجها و بسیاری از برنامه ها در لینوکس)نحوه استفاده از آن برای نصب پکیج به صورت زیر میباشد :sudo apt install package-nameدستور sudo برای دسترسی به root بوده و قبل از اجرای هر دستوری استفاده شود به هنگام اجرا دسترسی root را خواهد داشت.قبل از نصب یک پکیچ توصیه میشه فهرست پکیجها را یک بار update  کنید به وسیله دستور زیر :sudo apt updateپس از آن میتوانید mysql را با دستور زیر در ابونتو نصب کنید :sudo apt install mysql-serverدر صورتیکه نصب با مشکل یا خطایی مواجه شود بسته به خطا باید راهکار آنرا باتوجه به پیغام خطا جستجو کرد. پس از نصب موفقیت آمیز mysql باید تنظیمات امنیتی آنرا انجام دهید. برای کاربر root آن کلمه عبور تعیین کنید و گزینه های مربوطه را انتخاب نمایید. برای این کار از دستور زیر استفاده میکنیم :sudo mysql_secure_installationپس از اجرای دستور در خط فرمان چند مورد سوال از شما پرسیده میشود :Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Yسوال اول این است که آیا مایلید افزونه کنترل سختی کلمه عبور را نصب کنید. این افزونه زمانی که شما یک کلمه عبور تعیین میکنید با توجه به تنظیمات شما کنترل میکند کلمه عبور قابل قبول است یا خیر (کلمه عبور ساده است یا سخت)با زدن کاراکتر Y به معنی موافقت این بخش را رد میکنیمThere are three levels of password validation policy:

LOW    Length &gt;= 8
MEDIUM Length &gt;= 8, numeric, mixed case, and special characters
STRONG Length &gt;= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
 2سوال دوم این است که میزان سختی کلمه های عبور میخواهید در چه سطحی باشد که 3 گزینه ساده ، متوسط و قوی را در اختیار دارید و با زدن شماره مربوطه میتوانید یک گزینه را انتخاب کنید.در مرحله بعد باید کلمه عبور root برای mysql را با توجه به میزان سختی که تنظیم کرده اید وارد نمایید :Please set the password for root here.


New password: 

Re-enter new password:پس از دو بار وارد کردن کلمه عبور در صورت قابل قبول بودن پیغام زیر به شما نمایش داده میشود :Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Yدر نهایت از شما پرسیده میشود آیا میخواهید سایر موارد امنیتی به صورت پیش فرض برای شما در نظر گرفته شود که با زدن کلید Y موافقت نموده و نصب را به پایان میرسانیم.نکته : سایر موارد پیش فرض شامل حذف دیتابیس تستی ، کاربر ناشناس و عدم دسترسی ریموت به کاربر root میباشد.تا این مرحله نصب MySql روی سرور لینوکس شما با موفقیت انجام شد و میتوانید با دستور خط فرمان Mysql را مشاهده نمایید:sudo mysqlدر صورتیکه دسترسی به shell یا خط فرمان را در زمان نصب محدود به پسورد کرده باشید باید از دستور زیر استفاده نموده و کلمه عبور را وارد نمایید :mysql -u root -pپس از ورود به Mysql خط فرمان آن به صورت زیر نمایش داده میشود و میتوانید دستورات مربوط به Mysql را اجرا نمایید. mysql&gt;در مقاله بعدی نحوه ایجاد کاربر ، دسترسی کاربر ، دسترسی ریموت و ساخت بانک اطلاعاتی را توضیح خواهم داد.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Sun, 27 Sep 2020 08:38:21 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش اصولی کد نویسی تمیز - بخش دوم</title>
                <link>https://virgool.io/javacup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B5%D9%88%D9%84%DB%8C-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85-hl2wcohpiqbk</link>
                <description>مجموعه مقالات Clean Codeدر ادامه مقاله کد نویسی تمیز برگرفته از کتاب Clean Code به نکات دیگری در خصوص نام گذاری صحیح اشاره میکنم :1- از اسامی با معنی و مرتبط استفاده کنیداین تکه کد را  class DtaRcrd102 {
        private Date genymdhms;
        private Date modymdhms;
        private final String pszqint = “102”;
        /\* _...  \*_/
} مقایسه کنید با کد زیرclass Customer {
        private Date generationTimestamp;
        private Date modificationTimestamp;
        private final String recordId = &amp;quot102&amp;quot
        /\* _...  \*_/
}در نام گذاری کلاس و اتربیوتها از نامهای کد شده و رمزی و مخفف سازی و اسامی بی معنی استفاده نشده. در نام گذاری های چند کلمه ای CamelCase رعایت شده . اسامی اتریبیوتها  و متدها با حرف کوچک شروع شده و کلاسها با حرف بزرگ (البته مایکروسافت در زبانهایش بعضی موارد را نقض کرده مثل نام گذاری متدها با حرف اول بزرگ ، مثال ما از زبان جاواست که این سبک نام گذاری توسط برنامه نویسان آن رعایت میشود)2- اسامی قابل جستجو انتخاب نماییدبه کد زیر توجه کنید :for (int j=0; j&lt;34; j++) {
         S+= (t[j]*4)/5;
 }و حالا پس از تغییر int realDaysPerIdealDay = 3;
 int WORK_DAYS_PER_WEEK = 5;
 int sum = 0;
 for (int j=0; j&lt;NUMBER_OF_TASKS; j++) {
         int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
         int realTaskWeeks = (realdays / WORK_DAYS_PER_WEEK);
         sum += realTaskWeeks;
 }
کد دوم طولانی تر است اما به جای استفاده از مقادیر ثابت عددی آنها در ثابتهایی با نام مشخص قراردادیم. با این کار جستجو در سطح برنامه بویژه زمانی که قرار است محل استفاده آنها را در یک کلاس بزرگ پیدا کنیم کار را به شدت راحت میکنند . ضمن اینکه با این کار خوانایی برنامه را بیشتر کردیم و برای برنامه نویسان دیگر قابل درک است3- از پیشوندهای خاص برای دسته بندی متغیرها و متدها استفاده نکنیدشاید جالب باشد که مثلا نام همه متغیرهای محلی را با حرف m  شروع کنید و یا متدهایی با چند کاراکتر پیشوند دسته بندی کنید. این کار به ظاهر ممکن است جالب باشد اما خوانایی برنامه را کم میکندهمینطور درصورتیکه مثلا همه اتریبیوتهای یک کلاس را با پیشوند atr شروع کنید دیگر نمیتوانید به راحتی از کمک IDE برای پیشنهاد نزدیکترین نام استفاده کنید چرا که همه نامهای شما در یک محدوده هستند.public class Part {
         private String m_dsc; // The textual description
         void setName(String name) {
                 m_dsc = name;
         }
 }را به این صورت بنویسیم :public class Part {
         String description;
         void setDescription(String description) {
                 this.description = description;
         }
}در این مثال نام گذاری مرتبط با موضوع و بدون پیشوند رعایت شده.4- نام گذاری واسط‌ها (interface) و پیاده‌سازی‌هابرای نام گذاری واسطها بعضی برنامه نویسیان واسط را با پیشوند و یا پسوند تعریف میکنند و پیاده سازی را با نام اصلی . از آنجایی که چند پیاده سازی از واسط میتواند وجود داشته باشد بهتر است واسط با نام اصلی و پیاده سازی های آن با نامهای مشابه موضوع و بعضا با پیشوند نام واسط نام گذاری شوند. البته میتوان به نام واسط اصلی اشاره ای نکرد :نمونه نادرستinterface IShape  , class Circleنمونه های درستinterface Shape , class Cricle یا CircleImplinterface DatabaseFactory , class DatabaseFactorySQL , DatabaseFactoryOracleتوجه کنید در نام گذاری کلاسها و واسطها هرگز از کاراکتر &#x27;_&#x27; برای جداکردن کلمات استفاده نکنید</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Sun, 20 Sep 2020 13:47:25 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش اصولی کد نویسی تمیز - بخش اول</title>
                <link>https://virgool.io/javacup/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B5%D9%88%D9%84%DB%8C-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-fiw4xif13ntg</link>
                <description>بعد از دو دهه اشتغال به کار برنامه نویسی میخواهم اصولی را با شما در میان بگذارم که بسیاری از برنامه نویسان آن را رعایت نمیکنند. من طی این سالیان با شرکتها و پروژه های متعددی جهت نگهداری و توسعه نرم افزار همکاری داشته ام . پروژه هایی که بعضا در زمان ورود من سالها از تولید آنها گذشته بود و چندین نسخه Release هم در اختیار کاربران نهایی بود. بعضی از این پروژه ها به قدری شلخته و بهم ریخته بودند که برایم باور کردنی نبود. علیرغم ظاهر و کاربری درستی که از نرم افزار که کاربرنهایی از آن راضی بود به لحاظ کد نویسی و منطق توسعه مشکلات عدیده ای داشتند و توسعه و رفع باگ را بسیار سخت میکرد. در بعضی موارد چندین برنامه نویس با سطوح مختلف طی سالیان متمادی اقدام به توسعه نرم افزار نموده بودند که دست خطها و طرز فکر های مختلف به وضوح در نرم افزار مشاهده میشد.مدتها به این مساله فکر میکردم که چه چیزی در آموزشها برنامه نویسی اشکال دارد که با چنین مشکلی مواجه هستیم تا اینکه چند سال پیش به کتابی برخوردم که پاسخ این پرسش من را به خوبی داده بود. آن کتاب چیزی نبود جز &quot;کد نویسی تمیز (Clean Code) اثر رابرت سی مارتین&quot;کتاب Clean Codeاین کتاب یکی از بهترین کتب در این موضوع است . قصد دارم به صورت مختصر و تحت چند مقاله خلاصه ای  از آن را منتشر کنم. بنده بعد از سالها آموزش دیدن و تدریس در موضوع برنامه نویسی به شدت جای خالی چنین موضوعی را در آموزش آکادمیک برنامه نویسی خالی میدانم و دوست دارم بتوانم سهمی جهت پر کردن این خلأ داشته باشم .نام گذاری معنا دار و صریحما از نام گذاری در بخشهای مختلف یک برنامه استفاده میکنیم . از متغیرهای محلی ، نام کلاسها ، متدها و حتی فایلهای جانبی و منابع مورد استفاده در بخشهای مختلف را نام گذاری میکنیم. اولین اصلی که باید در انتخاب نام رعایت کرد مرتبط بودن و معنادار بودن آن است. وقتی یک برنامه نویس دیگر کد نوشته شده توسط ما را میخواند باید بتواند از نامهایی که بر روی اجزأ مختلف برنامه قرار داده ایم متوجه کارکرد برنامه شود و حتی اگر داکیومنتی در اختیارش قرار ندهیم. نام گذاری صحیح هیچ ارتبطی با کد بهینه نوشتن ندارد ممکن است ما کدی را به صورت کاملا بهینه به لحاظ سربار منابع و سرعت اجرا بنویسیم اما اصلا اصول نام گذاری صحیح را در آن رعایت نکنیم.برای نام گذاری صحیح در یک تکه برنامه ابتدا باید چند سوال از خودمان بپرسیم :1- ورودی ها و خروجی تکه برنامه ما چیست و  قرار است چه کاری انجام دهد؟2- چه متغیرهای و از چه نوعی مورد نیازمان است و کاربردشان چیست ؟3- چه مقادیر ثابتی مورد نیاز ما است و کاربردشان چیست ؟4- چه زیر برنامه ها (توابعی)  مورد استفاده قرار میگیرد یا قرار است نوشته شود؟با پاسخ به این پرسشها میتوانیم برای نام گذاری هایمان دلیل و مدرک داشته باشیم. این نکته را هم بگوییم وقتی نامی را برای یک جزء انتخاب کردید و پس از نوشتن کد نام دیگری را مناسب دیدید آن را تغییر دهید تا قبل از انتشار نسخه نهایی و خود را محدود به انتخاب اول ننمایید.البته در نسخه های Release هم بعضا تغییر نامهایی رخ میدهد که این بسته به تصمیم برنامه نویس در این خصوص دارد.در ادامه با مثالی انتخاب نامهای مناسب را توضیح میدهیم :public List getThem() {        List list1 = new ArrayList();        for (int[] x : theList)                 if (x[0] == 4)  list1.add(x);         return list1;  }تکه کد بالا یه برنامه ساده است به زبان جاوا که یک لیست را پیمایش میکند و هر عضو از لیست را که یک آرایه است برداشته و اولین عضو آرایه را چک کرده درصورت مساوی بودن با 4 آن آرایه را در لیست دیگری اضافه کرده و در نهایت لیست دوم را به خروجی میفرستد. این برنامه عملرد ساده ای دارد اما نام گذاری ها در آن کاملا بی معناست و برنامه نویس دیگری از کاربرد آن در برنامه نمیتواند سر در بیاورد. حال به همین تکه برنامه با نام گذاری صحیح توجه کنید :public List getFlaggedCells() {         List flaggedCells = new ArrayList();        for (int[] cell : gameBoard)                 if (cell[STATUS_VALUE] == FLAGGED)  flaggedCells.add(cell);         return flaggedCells;  }ملاحظه میکنید همان تکه برنامه با نام گذاری صحیح چقدر خوانا تر است. در اینجا به جای مقادیر 0 و 4 که در برنامه قبلی به صورت ثابت استفاده شده بود از دو ثابت به نامهای STATUS_VALUE و FLAGGED استفاده شده.حال اگر بخواهیم برنامه ما خوانا تر باشد و کد زیباتری داشته باشد میتوانیم بخشهایی را که امکان دارد به صورت method تعریف کنیم را از بدنه اصلی جدا کنیم مانند نمونه زیر :public List getFlaggedCells() {       List flaggedCells = new ArrayList();       for (Cell cell : gameBoard)             if (cell.isFlagged())                flaggedCells.add(cell);      return flaggedCells;  }در مثال فوق به جای نوشتن عبارت شرطی مستقیم آنرا در متد ()isFlagged قراردادیم تا باز هم کد خوانا تر شود. البته تشخیص اینکه در کجا از متد استفاده کنیم با برنامه نویس است. معمولا زمانی که کدها تکرار میشود بهترین زمان استفاده از متدهاست و یا زمانی که باعث فهم ساده تر و منطق روان تر برنامه میگردد.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Sat, 19 Sep 2020 13:29:14 +0430</pubDate>
            </item>
                    <item>
                <title>خود انگاره یا تصویر ذهنی درباره خود</title>
                <link>https://virgool.io/@amirrahimi/%D8%AE%D9%88%D8%AF-%D8%A7%D9%86%DA%AF%D8%A7%D8%B1%D9%87-%DB%8C%D8%A7-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%B0%D9%87%D9%86%DB%8C-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%AE%D9%88%D8%AF-ylpcuoiowez5</link>
                <description>تصویر ذهنی از خود دارای سه بخش است :1- خود ایده آلخود ایده آل ، بهترین جایگاه و ایده آل ترین حالتی که از خود متصور میشوید و یا در دیگران به شدت تحسین میکنید و میخواهید همانند آن باشید را میگویند. این ایده آل تاثیر بزرگی در آینده شما میگذارد و میتواند رفتارها و منش شما را به شدت تحت تاثر قراردهد. افراد بزرگ و استثنایی ایده آلهایی به شدت سطح بالا برای خود در نظر میگیرند و خود را لایق دستیابی به آنها میدانند. اگر چنین باشید به احتمال بسیار زیاد به سمت آنها حرکت میکنید.افراد ناموفق معمولا هیچ ایده آلی ندارند یا تصور ضعیفی از خود دارند و اصلا خود آرمانی ندارند. این افراد معمولا پس از مدتی دست از تلاش بر میدارند و آرام میگیرند و از حرکت به جلو باز می ایستند.2- تصویر ذهنیبخش دوم تصویر شما از وضعیت فعلیتان است اینکه در مورد خودتان چگونه می اندیشید. مثل یک آینه درونی است که در ان نگاه میکنید که چطور رفتار کنید و چگونه ظاهر شوید. با تغییر در این تصویر به لحظه نحوه رفتار و گفتار شما تغییر میکند و همین میتواند به ان تغییر بزرگتر که خود ایده آل باشد شما را نزدیکتر کند3- عزت نفسبخش سوم عزت نفس است به این معنی است که در مورد خودتان چه احساسی دارید و چقدر حالتان خوب است. این بخش احساسی شخصیت شماست و کلید رسیدن به موفقیت های بزرگ. چقدر خودتان را دوست دارید و حس میکنید لایق هستید همین منبع اشتیاق و انرژی شما خواهد بود و شما را به سمت بهترین تصمیم ها رهنمون میکند.عزت نفس دارای دوبخش است اول اینکه چقئذ خودتان را دوست دارید و دوم اینکه چقدر خودتان در لایق و توانمند میدانید.این دو مسأله حتی به مشکلات متعددی که ممکن است در لحظه درگیرشان باشید ندارد. امکان دارد زیر آواری از مشکلات باشید اما اگر حس خوب نسبت به خودتان داشته باشید و خود را شایسته و توانمند بدانید از عزت نفس بالایی برخوردارید. این دو بخش عزت نفس مکمل هم هستند هرچه حس بهتری به خود داشته باشید بهتر عمل مکنید و احساس شایستگی بیشتری دارید و هر چه بهتر عمل کنید حال بهتری خواهید داشت.برای بالا بردن عزت نفس راهکار تلقین به نفس بسیار موثر است : در خلوت خود مدام بگویید : &quot;خودم را دوست دارم ، به خودم عشق می ورزم &quot; این جملات بسیار قدرتمند هستند و تاثیر زیادی دارندنظر شما در این خصوص چیست؟ آیا تصویر مثبتی از خود دارید؟ آیا عزت نفس بالایی دارید؟</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Sat, 19 Sep 2020 08:07:40 +0430</pubDate>
            </item>
                    <item>
                <title>اهمیت نگرش در زندگی</title>
                <link>https://virgool.io/@amirrahimi/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-%D9%86%DA%AF%D8%B1%D8%B4-%D8%AF%D8%B1-%D8%B2%D9%86%D8%AF%DA%AF%DB%8C-txbieyeynx7v</link>
                <description>هر آنچه بدست می آورید بستگی به این دارد که چگونه می اندیشید و از ذهن خود چگونه استفاده میکنید. وقتی ذهنتان را عوض کنید زندگیتان عوض میشود. نگرش یا تلقی :نگرش شما طرز برخوردتان با زندگی را نشان میدهد. نگرش شما به خوبی نشان میدهد درونتان چه خبر است. افراد به خوبی نگرش شما را به خودتان باز میگردانند . به همین دلیل است افراد شاد و خوش مشرب هر کجا و در هر جمعی احساس خوبی دارند.ایجاد یک نگرش مثبت و سازنده قدم اول دستیابی به کامیابی و اهداف سازنده است. تنها راهی که میتوانید بفهمید نگرشتان چگونه است بررسی رفتار و عملکردتان در زمان بروز مشکلات و سختی هاست.نگرش حاصل انتظارات ما از زندگیست. اگر انتظار اتفاقات خوب در زندگی را داشته باشید این مساله تاثیر مثبت در نگرش ما میگذارد. اکر انتظار دارید برایتان اتفاقات خوشایندی بیوفتد به احتمال زیاد آنها را تجربه خواهید کرد.انتظارات مثبت نشان از شخصیت سالم و قوی است و در شما نگرش قدرتمند و مثبت ایجاد میکند و حس خوشبختی ، اعتماد به نفس و رضایتمندی از پیامدهای آن است.انتظارات را هم باورهایی که از خود و دنیایتان دارید ایجاد میکند. هر آنچه از توانایی ها ، استعدادها و محیط اطذاف باور دارید به صورت واضح در زندگی میبنید. حتی اگر این باورها محدود کننده و تضعیف کننده باشند شما را به سمت انتظارات کم و محدود میبرد و نتایج بزرگی را برایتان ایجاد نمیکند.اگر باورهایتان را در زمینه خاصی از زندگی مثبت کنید، بلافاصله آن زمینه به وضوح تغییر میکند. تصمیماتی که در آن حوزه میگیرید هوشمندانه تر میشود و تلاش و پشتکارتان در آن مورد به شدت افزایش میابد.دنیای بیرون شما تجلی دنیای درونتان است  و نیتوانید در بیرون چیزی را تغییر دهید مگر اینکه برنامه درونیتان تغییر کند.بهترین توصیه این است که ابتدا شروع کنید به تصور کردن آنچه میخواهید باشید و ذهنی به آن دست یابید. ببینید برای رسیدن به آن چه ذهنیت و طرز فکری باید داشته باشید. اصلا به این توجه نکنید در حال حاضر چگونه هستید فقط به حالت ایده آل فکر کنید. تصمیم بگیرید همه بخشهای زندگیتان عالی باشد.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Sun, 13 Sep 2020 10:32:50 +0430</pubDate>
            </item>
                    <item>
                <title>قانون همانندی در زندگی</title>
                <link>https://virgool.io/@amirrahimi/%D9%82%D8%A7%D9%86%D9%88%D9%86-%D9%87%D9%85%D8%A7%D9%86%D9%86%D8%AF%DB%8C-p9g0yzuemoq1</link>
                <description>بر اساس این قانون ، دنیای بیرون بازتاب دنیای درون شماست. اگر به آنچه در پیرامون شماست بنگرید در میابید که درونتان چه خبر است.دنیای بیرونی شما دقیقا مطابق برداشتها و تلقینهای ذهنی شماست. وضع مالی شما با اندیشه و آمادگی شما رابطه دارد. نظم در تمام اجزأ زندگی شما نشان از نظم فکری و آمادگی ذهنی شما دارد. وقتی ماشین کثیف ، اتاقی نامرتب ، دفتر کاری بی نظم دارید نشان از ذهن آشفته و بی نظم شماست.همه چیز از درون به بیرون است. برای رسیدن به خواسته یا هدفی باید مانند آن شد و از درون  به آن نزدیک شد.  به قول گوته : انسان باید چیزی باشد تا کاری انجام دهد.شما باید درونتان را تغییر دهید تا در بیرون شاهد تغییرات بزرگ باشید. سعی نکنید دیگران تغییر دهید. همه آنچه دور و برتان است از درون خودتان نشأت میگیرد.همیشه از خودتان بپرسید : باید چگونه شخصی باشم تا بیشترین احترام را از کسانی که دوستشان دارم دریافت کنم و آن زندگی که خواهان آن هستم را تجربه کنم؟</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Fri, 11 Sep 2020 16:59:14 +0430</pubDate>
            </item>
                    <item>
                <title>قانون باور در زندگی</title>
                <link>https://virgool.io/@amirrahimi/%D9%82%D8%A7%D9%86%D9%88%D9%86-%D8%A8%D8%A7%D9%88%D8%B1-c5jnumcq5qg6</link>
                <description>قانون باورقانون باور میگوید هرچه باور داشته باشیم تبدیل به واقعیت میشود. و هرچه با شدت و عمیق تر به چیزی باور داشته باشیم احتمال وقوع ان برای ما بیشتر میشود. به عقیده بسیاری از اساتید موفقیت باورها واقعیت ها را رقم میزنند. مثلا اگر باور داشته باشید در انجام کاری یا رسیدن به هدفی موفق میشوید ، هیچ چیزی نمیتواند شما را در رسیدن به آن هدف متوقف کند. اگر در خود این باور را به وجود آورید که هیچ چیز شانسی نیست و همه چیز با سعی و تلاش و خواستن قابل دستیابی است ، موانع و شکستها شما را نا امید نمیکنند و تمام تلاشتان را برای دستیابی به موفقیت انجام میدهیددیدگاه اشخاص به دنیا دو نوع است ، یا دنیا را با دید مثبت می بینند و فکر میکنند دنیا محل مناسبی برای زندگی است و میتوانند خوبی ها را در هر شرایطی در اطراف خود ببیند. همینطور باور دارند در اطرافشان فرصتهای مختلفی جهت دستیابی به موفقیت و کامیابی وجود دارد.دسته دوم دنیا را محل بدی میبینند و آنرا بدخواه خود تصور میکنند. این دسته افراد منفی گرا هستند و و با نظر بدبینانه به همه نگاه میکنند. هرگز فرصتهای اطراف خود را برای کامیابی درک نمیکنند و همیشه در حال شکایت از شرایط خود هستند و حتی اشتباهات خود را به دیگران و شانس نسبت میدهند.تنها همین یک جمله برای ما کافیست که : خوشبینها دنیا را میسازند و به پیش میتازند و بد بینها تنها نظاره گر موفقیت دیگران هستند و حسرت میخورندبدترین اتفاق در زندگی این است که باورهای خود محدود کننده داشته باشید. این باورها باعث میشوند دست به سیاه و سفید نزنید چرا که شکست و ناکامی از پیش برای خود ترسیم کرده ایدباورهای شما به قدری قدرتمند هستند که حتی اگر درست نباشند هم به واقعیت شما تبدیل میشوند. فرض کنید مقداری اضافه وزن دارید و باور دارید نمیتوانید به وزن ایده آل برسید . این باور به واقعیت شما تبدیل میشود و نمیتوانید وزنتان را کاهش دهید. حال اگر باور کنید که میتوانید در چند ماه به وزن ایده آل برسید ،تنها کافیست نظم و تلاش مستمر برای آن داشته باشید تا طی چند ماه آنچه تصور میکردید به واقعیت تبدیل شود.&quot;بیایید از امروز روی باورهایمان کار کنیم و آنها را به دقت انتخاب نماییم و با تلقین روزانه آنها را در وجود خود قدرتمند نماییم ، مطمئنا در نهایت آنچه در زندگی ما به واقعیت تبدیل میشود همین باورهای قدرتمند خواهند بود&quot;</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Tue, 08 Sep 2020 09:39:13 +0430</pubDate>
            </item>
                    <item>
                <title>قانون کنترل در زندگی</title>
                <link>https://virgool.io/@amirrahimi/%D9%82%D8%A7%D9%86%D9%88%D9%86-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%AF%D8%B1-%D8%B2%D9%86%D8%AF%DA%AF%DB%8C-r5ksswemsnj2</link>
                <description>قانون کنترل در زندگیقانون کنترل به شما میگوید هر چقدر کنترل زندگیتان در اختیار خودتان باشد حس بهتری دارید و هرچقدر کنترل زندگیتان در اختیار عوامل بیرونی قرارگیرد احساس بدی خواهید داشت.به عنوان مثال بدهی های شما رئیستان ، والدین ، همسر و حتی فرزندانتان میتوانند کنترل بخشی از زندگی شما را به دست بگیرند و شما را از تعادل خارج کنند.برای دستیابی به کنترل کامل در زندگی دو راه کار وجود دارد1- با قاطعیت عمل کردن و تغییر در عوامل کنترل گر2- رها کردن و دور شدن از این عواملانتخاب هر کدام از این راه کارها بستگی به شرایط و عوامل مختلفی دارد که با کمی تامل میشود راه درست را میتواند انتخاب نمود.</description>
                <category>امیر رحیمی نژاد</category>
                <author>امیر رحیمی نژاد</author>
                <pubDate>Mon, 07 Sep 2020 13:18:31 +0430</pubDate>
            </item>
            </channel>
</rss>