<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های حسین نصیری راد | Hossein Nasirirad</title>
        <link>https://virgool.io/feed/@HosseinNassirirad</link>
        <description>برنامه نویس و سنگنورد که این همه‌ی ماجرا نیست!</description>
        <language>fa</language>
        <pubDate>2026-06-16 16:21:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1896332/avatar/e4SUrx.jpg?height=120&amp;width=120</url>
            <title>حسین نصیری راد | Hossein Nasirirad</title>
            <link>https://virgool.io/@HosseinNassirirad</link>
        </image>

                    <item>
                <title>Latency | Throughput</title>
                <link>https://virgool.io/@HosseinNassirirad/latency-throughput-ulnznxsqveq3</link>
                <description>تعریف اولیه: به طور کلی مدت زمان پاسخگویی(Fetch کردن) از Server به Client رو Latency و به تعداد پاسخهایی که Server برمیگردونه نیز Throughput میگویند.با توجه به عکس بالا دلیل استفاده از Server های خارج از سازمانها مثلا سروری به نام Asiatech و ... به این دلیل است که سایت هایی که حجم درخواست و پاسخ بالایی دارد، گنجایش حجم پاسخ دهی دیتاهای بالای چند میلیون ریکوئست رو در سیستم و سرورهای خودشون ندارند. به همین خاطر از سرور خارجی و بیرونی که وظیفه بالا بردن Throughput رو داره استفاده میکنند، همچنین حجم دیتایی مثل Cash برای مواردی خاص بسته به معماری نرم افزار در حافظه داخلی یعنی RAM و مابقی موارد در Hard انجام میگردد.به تصویر زیر نگاه کنین، تقسیم کردن سرورها به سرورهای بیشتر به کمک Load Balancer (که در مقاله بعدی در موردش صحبت خواهیم کرد) توسط تیم Devops هر سازمان با زیرساخت Load Balancer ها نظیر همان سرور خارجی مانند AsiaTech انجام میگردد.نکته: افزایش تعداد سرور جهت throughput بالاتر می باشد.در تصویر بالا از بالا به پایین از سرعت پاسخگویی کاسته میشوددر زیر هم یک سری اطلاعات پایه ای پیرامون پروتکل ها مرتبط با موضوع آوردم که بهتره بدونیم :به طور کلی تمامی موارد بالا چکیده ای از قسمت های مختلف در یک سیستم است که در سرعت زمان پاسخ‌ دهی نقش موثری دارند.</description>
                <category>حسین نصیری راد | Hossein Nasirirad</category>
                <author>حسین نصیری راد | Hossein Nasirirad</author>
                <pubDate>Sat, 17 Feb 2024 16:42:05 +0330</pubDate>
            </item>
                    <item>
                <title>Streaming</title>
                <link>https://virgool.io/codenevis/streaming-cctullf8tphx</link>
                <description>اگر به بعضی از سایت های پخش آنلاین فیلم یا سریال سری زده باشین، قطعا متوجه کندی و البته اتلاف وقتتون، جدای بالا بودن یا پایین بودن سرعت اینترنت شدین. هنگامیکه زمان انتظار به 30 ثانیه برای کاربر میرسه، خیلی طاقت فرسا میشه و ممکنه خیلی وقتها از مشاهده اون فیلم یا سریال یا مطلب آموزشی منصرف بشیم، حال اگر به نحوه استفاده‌ تون از youtube دقت کرده باشین، احساس رضایت قابل توجهی نسبت به پلتفرم های دیگه دارین.حُسنی که youtube (یا سایت های مشابه اون) رو از بقیه سایت ها متمایز کرده، لودینگ لحظه به لحظه اون نمایشه، یعنی یک مکانیزمی پشت صحنه وظیفه انتقال اطلاعات و پخش داده ها به صورت متوالی و پیوسته از یک منبع به یک مقصد رو برعهده دارد.به شکل های زیر جهت مشاهده دقیق‌تر فرآیند انتقال اطلاعات در حالت normal و حالت stream توجه کنید:پس به مکانیزم خواندن و انتقال داده ها به صورت متوالی و پیوسته از یک منبع به یک مقصد Streaming میگویند. عموما این مفهوم در زمینه پردازش و انتقال داده‌های مالتی‌مدیا (صوتی و تصویری) به کار میرود.در این مفهوم کاربر یا سیستم مقصد می‌تواند بخش‌هایی از داده ها را حتی قبل از اتمام کال انتقال داده ها دریافت و مشاهده نماید.لازم به ذکره که این مفهوم در جایی معنا پیدا میکنه که حجم بالایی از دیتا رو داشته باشیم و بخواهیم به کاربر نمایش بدیم، در نظر داشته باشین تنها هنگام خواندن اطلاعات، کوئری گرفتن و یا نمایش به کاربر نیست، بلکه جهت ارسال اطلاعات نیز می باشد.اسنپ Snapp تپسی Tapsiگاها شده که منتظر اسنپ باشیم و زمان انتظار تا رسیدن ماشین به مبدا مورد نظر رو 04 دقیقه تخمین زده باشه، نمایش موقعیت مکانی لحظه ای راننده اسنپ در این 04 دقیقه از طریق مکانیزم stream بررسی و بهمون نمایش داده میشود.حجم بالایی از اطلاعات داریم که بین دو نرم‌افزار یا دو دستگاه مثل گوشی موبایل از طریق شبکه به صورت دوطرفه منتقل می‌شوند که به این فرآیند سوکت باز میگویند که یک واسط در برنامه نویسی بوده و امکان برقراری ارتباطات شبکه را فراهم می‌کند.همچنین یکی از روشهای انتقال اطلاعات بین شبکه GRPC است که بعدا به آن خواهیم پرداخت.</description>
                <category>حسین نصیری راد | Hossein Nasirirad</category>
                <author>حسین نصیری راد | Hossein Nasirirad</author>
                <pubDate>Sat, 20 Jan 2024 13:07:03 +0330</pubDate>
            </item>
                    <item>
                <title>API Gateway</title>
                <link>https://virgool.io/@HosseinNassirirad/api-gateway-pt3djbocrmee</link>
                <description>به طور کلی وظیفه حل کردن Sepration Concern ها را بر عهده داشته و مولفه ای از زیرساخت تحویل یک برنامه بین استفاده کننده ها و سرویس ها است و ارتباط بین آنها را مدیریت میکند.به مثال زیر توجه کنید:در این حالت هیچ ساختار منظمی وجود ندارد و تمامی وظایف micro service ها مثل log ، security ، finance ، cashing pricing بر عهده استفاده کننده (برنامه نویس فرانت) می باشد و مستقیما با فرآیندهایی که در زیر ساخت اتفاق میوفتد سروکار دارد، در صورتیکه اصلا لزومی ندارد که برنامه نویس فرانت با سرور و اتفاقات آن مواجه شود، به همین منظور ما از یک سرویسی جهت سهولت و مدیریت ارتباط به اسم API Gateway استفاده میکنیم.در زیر به ساختار این مولفه توجه کنید:به طور کلی API Gateway پشتیبانی و مدیریت تغییرات آدرس ها و همچنین تغییرات مربوط به ارتباطات را در یک واحد مشخص انجام میدهد. وظایفی مانند log ، cash ، security ، identity ، authentication رو بر عهده دارد و میاد از دسترسی مستقیم استفاده کننده ها جلوگیری میکند و در عین حال با توجه به بزرگی ابعادش باید همیشه آنلاین و سرحال بماند. معمولا در پروژه های بزرگ آدرس میکرو سرویس ها تغییر میکند مثلا ممکن است از localhost31 به localhost32 تغییر یابد که اگر این API نبود، تمامی تغییرات می بایست یکبار هم سمت استفاده کننده (برنامه نویس فرانت) میرفت و آنجا هم تغییر میکرد اما با وجود این ساختار تغییرات و اطلاع رسانی ها بر عهده خود آن یعنی API Gateway میباشد.نحوه ارتباط آن با استفاده کننده ها تنها از طریق یک آدرس Localhost میباشد!همچنین از AWS WAF یا Web Application Firewall جهت محافظت از API ها و Web Application ها در برابر Attack ها استفاده میکند.</description>
                <category>حسین نصیری راد | Hossein Nasirirad</category>
                <author>حسین نصیری راد | Hossein Nasirirad</author>
                <pubDate>Wed, 17 Jan 2024 13:06:20 +0330</pubDate>
            </item>
                    <item>
                <title>What is Transaction</title>
                <link>https://virgool.io/codenevis/transaction-so1zertrjldf</link>
                <description>ترنزکشن چیست ؟مجموعه عملیات و وظایف مرتبط بهم پیوسته جهت انجام یک اقدام واحد میباشد که یا باهم انجام و به اتمام میرسد و یا کل عملیات Faild میشود، یعنی چی ؟ یعنی در آن عملیات یا همه آنها باید موفق شوند یا هیچ یک از آنها نمی توانند موفق شوند.که در صورت عدم موفقیت همه‌ی عملیات باید Roll back شود.دو نوع Transaction داریم:Simple: Dependency Systems                                                                                                    Complex: Micro Service Systems &amp; Providers and Supliersتفاوت دو حالت زیر را بررسی کنید:dbcontext.basket.add(P2);                                                                  dbcontext.basket.remove(P1);                                                             dbcontext.basket.newadd(P3);                                                                     dbcontext.savechanges();بررسی: در این حالت اگر تنها ذخیره‌سازی صورت گیرد، به محض خطا کل عملیات رول‌بک میشود که خب صحیح است.dbcontext.basket.add(P2);                                                                            dbcontext.savechanges();                                                                     dbcontext.basket.remove(P1);                                                                     dbcontext.savechanges();بررسی: در این حالت اگر بعد از هر عمل، ذخیره‌سازی صورت گیرد هنگام عملیات دوم اگر خطا خورده و exception دهد، فقط فرایند آخر یعنی شماره عملیات remove رول‌بک خواهد شد و حالت های قبلی دست نخورده باقی می ماند که خب ممکن است علت همان خطایی که در موردش صحبت کردیم باشد.                             نکته: در هر قسمتی از فرآیند اگر خطا خوردیم، نباید فرآیند ادامه دار باشد، باید همان زمان رول‌بک صورت گیرد.به طور کلی قدرت یک Transaction در Roll Back کردن است.نکته: Entity Framework یا همان EF فقط در سیستم های مستقل کارهای مربوط به رول‌بک را انجام میدهد اما سایت شرکتهای enterprise مثل آمازون از چند سیستم متفاوت استفاده میکنند و هماهنگی همه‌ ی این موارد به تنهایی با EF مقدور نیست.مدل زیر مربوط به دو Transaction با عملکردهای متفاوت است:این روش همان روش ابتدایی و معمول است که همه ی عملیات باهم انجام میشود و در صورت بروز خطا کل عملیات متوقف میشود.این تراکنش نیاز به هماهنگی بین چندین پایگاه داده دارد تا اطمینان حاصل شود که تغییرات به‌ صورت هماهنگ و با اطمینان در تمامی پایگاه‌های داده صورت بگیرد، و در صورت بروز هر گونه مشکل یا خطا، به درستی از تغییرات منصرف شود.به مثال زیر که انتقال وجه از بانکی به بانک دیگر است توجه کنید:هنگامیکه در مرحله اول درخواستی به بانک اولیه جهت برداشت وجه ارسال میشود اگر به هر دلیلی در روند فرآیند، API بانک کال نشد، کار نکرد و یا حتی به طور کلی فرآیند مرحله اول یعنی برداشت وجه با موفقیت صورت نگرفت، باید رول‌بک صورت گرفته شود و سراغ بانک دوم جهت واریز نرود تا عملیات بازگشت وجه به حساب صورت پذیرد.</description>
                <category>حسین نصیری راد | Hossein Nasirirad</category>
                <author>حسین نصیری راد | Hossein Nasirirad</author>
                <pubDate>Sun, 14 Jan 2024 13:59:33 +0330</pubDate>
            </item>
            </channel>
</rss>