<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدرضا افشارنژاد</title>
        <link>https://virgool.io/feed/@74afshar</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 22:38:51</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/143349/avatar/bwO2wn.png?height=120&amp;width=120</url>
            <title>محمدرضا افشارنژاد</title>
            <link>https://virgool.io/@74afshar</link>
        </image>

                    <item>
                <title>سرویس ها در انگولار (Services)</title>
                <link>https://virgool.io/@74afshar/%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7-%D8%AF%D8%B1-%D8%A7%D9%86%DA%AF%D9%88%D9%84%D8%A7%D8%B1-services-keuctwotc0b4</link>
                <description>سرویس ها، کلاس هایی می باشند که مسؤلیت تبادل اطلاعات بین کامپوننت ها را برعهده دارند.بگذارید تعریف بالا را یکم ساده تر بیان کنم:ما در بین کامپوننت ها اگر از کدهای تکراری زیادی استفاده کنیم یعنی داریم غیر استاندارد کد می زنیم و نباید اینکار را انجام بدیم، در این مواقع سرویس ها هستند که به کمک ما می آیند و یکی از عملکرد های مهم سرویس ها این است که ما از کد های تکراری استفاده نکنیم.حالا ما برای استفاده از سرویس ها باید با دو مفهوم Injector و Provider آشنا بشیم.مفهوم Injectorدر انگولار مفهومی به نام Injector‌ به عنوان ابزاری جهت دسترسی به سرویس‌ها معرفی شد. در واقع با استفاده از Injector می‌توان یک وابستگی را به یک کامپوننت تزریق کرد.یعنی یک نمونه از یک کلاس را به صورت خودکار در کامپوننت موردنظر ایجاد کرد. برای دسترسی به این نمونه باید با مفهومی به نام provider آشنا شوید.مفهوم Providerبه انگولار می‌گوید که چگونه یک کلاس را ایجاد کن! یعنی دقیقا فرمان تولید یک نمونه از کلاس را به صورت اتوماتیک برای سرویس فراهم می‌کند. یعنی یک service provider به عنوان بستری برای تولید خودکار نمونه از یک کلاس معرفی می‌شود.حالا با یک مثال کوچک روند ساخت سرویس و استفاده از آنرا توضیح میدم.مثلا ما میخواهیم در تمام صفحاتمون ساعت و تاریخ جاری را در بالای صفحه داشته باشیم، روند این کار را در ادامه باهم انجام میدهیم:ابتدا من یک کامپوننت جدید با نام services ساختم و میخواهم به این کامپوننت ساعت و تاریخ را با استفاده از سرویسی که در ادامه میسازم تزریق کنم.به منظور ایجاد یک سرویس باید از خط فرمان دستور زیر را استفاده کنید:ng g service (نام برای سرویس )
ng g service myserviceبا این خط کد دو فایل برای ما ایجاد می شود:CREATE src/app/myservice.service.spec.tsCREATE src/app/myservice.service.tsمحتوای فایل myservice.service.ts:در کد بالا ماژول Injectable از angular/core وارد شده و شامل یک متد با نام Injectable@ و یک کلاس با نام MyserviceService است. تابع مربوط به سرویس در این کلاس ایجاد خواهد شد.قبل از استفاده از سرویس ایجاد شده باید آن را به فایل app.module.ts اضافه کنیم. مانند نمونه زیر:در کد فوق سرویس ایجاد شده را import کرده و سپس MyserviceService را به بخش providers اضافه کرده ایم.حالا در  myservice.service.ts، یک تابع برای نمایش ساعت و تاریخ روز جاری ایجاد می کنیم.در کد فوق یک تابع با نام showTodayDate که یک نمونه از کلاس Date باز می گرداند را ایجاد کرده ایم.حال برای دسترسی به این تابع در سایر کامپوننت ها می توانید به صورت زیر عمل کنید.برای دسترسی به اجزای سرویس مورد نظر باید آن را import کنید و در بخش constructor سرویسی که ساختیم را معرفی کنیم.(تابع ngOnInit به صورت پیشفرض در زمان ایجاد شدن کامپوننت فراخوانی می شود و تاریخ را با استفاده از تابع showTodayDate می گیرد و در متغیر todayDate قرار می دهد.)حال به راحتی می توانیم آن را در فایل html نمایش دهیم:خروجی به شکل زیر است:به همین راحتی :)حالا ما می توانیم با روش بالا در هر کامپوننتی این سرویس را اضافه و استفاده کنیم.برای تکمیل کردن این بخش یک توضیح کلی در ارتباط با ساختار درختی سرویس‌ها و انگولار  خدمت شما مطرح می‌کنم.ساختار درختی Injector در سرویس‌ هاسرویس ‌ها نیز همانند کامپوننت‌ ها می‌توانند دارای فرزند باشند و روابط والد و فرزندی بین ‌آنها نیز برقرار است اما قبل از بررسی این موضوع یک ساختار درختی برای ارتباط بین کامپوننت‌ها و سرویس‌ها در نظر می‌گیریم.در بالاترین رده‌ی ممکن AppModule وجود دارد که در آن تمام سرویس ‌ها، تمام دستور ها و تمام کامپوننت‌ها در دسترس است. یعنی بالاترین سطح ممکن در یک نرم‌افزار انگولاری مربوط به این کلاس است.در مرحله‌ی بعدی AppComponent‌ ها به عنوان بالاترین سطح معرفی می‌شوند که در آن‌ها تمام سرویس‌ها در دسترس هستند اما در این سطح سرویس ‌ها برای یکدیگر در دسترس نخواهند بود.مرحله‌ی آخر به Any Other Component ختم می‌شود که یک نمونه از کلاس سرویس درون یک کامپوننت و تمام کامپوننت‌های فرزند آن در دسترس است.پایان//امیدوارم از این مقاله راضی باشید...</description>
                <category>محمدرضا افشارنژاد</category>
                <author>محمدرضا افشارنژاد</author>
                <pubDate>Tue, 16 Mar 2021 15:22:39 +0330</pubDate>
            </item>
                    <item>
                <title>برخی از اشتباهات رایج برنامه نویسان مبتدی</title>
                <link>https://virgool.io/@74afshar/%D8%A8%D8%B1%D8%AE%DB%8C-%D8%A7%D8%B2-%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87%D8%A7%D8%AA-%D8%B1%D8%A7%DB%8C%D8%AC-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86-%D9%85%D8%A8%D8%AA%D8%AF%DB%8C-pgm8v0x0vidy</link>
                <description>به نام خدای یگانه چندماهی است یادگیری برنامه نویسی رو شروع کردم و خودم هم جز برنامه نویسان مبتدی قرار میگیرم اما در  این چند ماه به بعضی از اشتباهات خود پی بردم  و در این مقاله سعی کردم اشتباهاتی که خودم را داشتم را برای شما توضیح بدم.1.با ترس کار را شروع میکننداولین و بدترین اشتباه که برنامه نویسان تازه کار انجام می دهند که خودم هم شامل میشود ، این است که با ترس و لرز سراغ برنامه نویسی می‌روند و اولین کدهای خود را با شک و تردید می زنند. برای بعضی از افراد که تازه برنامه نویسی را شروع کرده اند ممکن است سوالات و درگیری های ذهنی زیادی به وجود بیاید. آیا من به اندازه کافی باهوش هستم؟ آیا آدم درستی برای برنامه نویسی هستم؟ آیا می توانم از این راه پول دربیاورم؟ من معتقد هستم که هر کسی می تواند برنامه نویسی را یاد بگیرد، به شرط اینکه  علاقه داشته باشد و با اعتماد به نفس کار را شروع کرده و سفت و سخت به این کار بچسبد.2. فقط به مطالعه و آموزش متکی هستندبعضی از رشته ها فقط نیاز به مطالعه تئوری دارند و کسی که می خواهد در این گرایش ها موفق شود باید مطالعه زیادی داشته باشد، اما برنامه نویسی یک کار فنی است. همانطور که یک ریاضی دان فقط با خواندن فرمول ها نمی تواند مسائل گوناگون را حل کند، برنامه نویس هم فقط با مطالعه و دیدن کدهای دیگران نمی تواند تبدیل به یک برنامه نویس باتجربه شود. پس در شروع کار باید یاد بگیرید که بخش زیادی از مهارت شما در حین کار و کسب تجربه از پروژه های واقعی و تمرین کردن به دست می آید.3.بیش از حد به جزییات اهمیت می دهندهیچ کس در شروع کار از شما انتظار ندارد به تنهایی یک سرویس فوق العاده پایدار و بدون باگ طراحی کنید. حتی برنامه نویسان بزرگ هم در ریزه کاری های پروژه به مشکل می خورند. اگر هنگام یادگیری و برنامه نویسی بعضی از جزییات درست کار نمی کنند سعی کنید از آنها عبور کرده و بعدا دوباره سراغشان بروید. گیر کردن در جزییات پروژه و فراموش کردن هدف اصلی می تواند در اوایل کار شما را دلسرد کرده و از ادامه راه بازدارد.4.روزی یک خط یا دو خط کد می زننددر برنامه نویسی هم دقیقا اوضاع به همین شکل است. اگر تصمیم گرفته اید که برنامه نویس شوید باید سختی ها و تمرین های اول کار را هم قبول کنید. باید هر روز زمان زیادی را به تمرین و کد زدن اختصاص دهید. هیچ برنامه نویسی با روزی یک خط کد متخصص نشده است. پس در شروع کار باید تمرین زیادی داشته باشید.5.از کار خود بکاپ نمی گیرندخوشبختانه امروز ابزارهای بسیار متنوعی وجود دارند که می توانید با آنها فایل های خود را جایی به غیر از کامپیوتر خود ذخیره کنید. در این حالت اگر کامپیوتر شما آسیب هم ببیند باز هیچ مشکلی کدهای شما را تهدید نمی کند.سیستم های کنترل ورژن  مثل گیت به توسعه‌دهندگان نرم‌افزار کمک می‌کند تا علاوه بر امکان مشارکت روی پروژه‌های نرم‌افزاری، بتوانند به تاریخچه‌ای از کدهایی که قبلاً نوشته‌اند نیز دست پیدا کنندنتیجه گیری مسلما برنامه نویس شدن کار یک شب نیست. نمی شود ره صد ساله را یک شبه طی کرد و انتظار داشت بدون تلاش به جایگاه بالایی در یک شغل مثل برنامه نویسی رسید. حالا که شما برنامه نویسی را به عنوان حرفه خود انتخاب کرده اید، بهتر است اول کار بعضی از اشتباهات رایج مبتدیان را بشناسید تا در دام این اشتباهات گرفتار نشوید. اگر حس می کنید مورد دیگری هم باید به این لیست اضافه می شد، خوشحال می شوم آن را در بخش نظرات با من و  به اشتراک بگذارید.</description>
                <category>محمدرضا افشارنژاد</category>
                <author>محمدرضا افشارنژاد</author>
                <pubDate>Mon, 02 Mar 2020 20:49:45 +0330</pubDate>
            </item>
            </channel>
</rss>