<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدرضا ذوالقدری</title>
        <link>https://virgool.io/feed/@zolghadri</link>
        <description>به زودی در این مکان درباره من چیزی نوشته می‌شود.</description>
        <language>fa</language>
        <pubDate>2026-06-16 11:06:20</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/11594/avatar/36CVNl.png?height=120&amp;width=120</url>
            <title>محمدرضا ذوالقدری</title>
            <link>https://virgool.io/@zolghadri</link>
        </image>

                    <item>
                <title>خطرناک‌ترین پرامپت: اینو مونولیت کن!</title>
                <link>https://virgool.io/@zolghadri/%D8%AE%D8%B7%D8%B1%D9%86%D8%A7%DA%A9-%D8%AA%D8%B1%DB%8C%D9%86-%D9%BE%D8%B1%D8%A7%D9%85%D9%BE%D8%AA-%D8%A7%DB%8C%D9%86%D9%88-%D9%85%D9%88%D9%86%D9%88%D9%84%DB%8C%D8%AA-%DA%A9%D9%86-qdzuh8rbib0h</link>
                <description>هوش مصنوعی هم گیج میزند!چرا نباید یک پروژه بزرگ مایکروسرویس را یکجا به AI بدهیم و انتظار داشته باشیم همان سیستم را مونولیت تحویل دهد؟با ابزارهایی مثل Cursor و سایر AI Coderها، خیلی‌ها وسوسه می‌شوند کل یک پروژه مایکروسرویسی را یکجا به AI بدهند و بگویند:«این را برای من تبدیل کن به یک پروژه مونولیت که دقیقاً همان کارها را انجام بدهد.»در ظاهر منطقی است. اگر AI می‌تواند کد بنویسد، چرا این کار را نکند؟اما در عمل، این معمولاً تصمیم خوبی نیست.چون مایکروسرویس فقط “کدهای جدا از هم” نیستخیلی‌ها فکر می‌کنند مایکروسرویس یعنی چند پروژه جدا که اگر همه را یکی کنیم، مونولیت ساخته می‌شود.اما واقعیت این نیست.مایکروسرویس مثل یک شهر است:هر سرویس مثل یک اداره مستقلهر کدام قوانین خودش را داردبا بقیه از راه پیام، API یا صف باهم حرف می‌زنندبعضی کارها مرحله‌ای انجام می‌شودبعضی اتفاق‌ها پشت صحنه رخ می‌دهدوقتی می‌گویی «همه را یکی کن»، انگار می‌گویی:همه اداره‌های یک شهر را در یک ساختمان بگذار، بدون اینکه هیچ چیزی خراب شود.این فقط ادغام نیست؛ بازطراحی است.AI ظاهر سیستم را می‌بیند، نه همیشه منطق پنهان آن رامثال ساده:فرض کنید در سیستم شما ثبت درخواست این‌طور انجام می‌شود:درخواست ثبت می‌شودپرداخت چک می‌شودپیامک ارسال می‌شودفایل آزاد می‌شوداگر مرحله ۳ خطا داد، مرحله ۲ برگردداین منطق شاید در چند سرویس پخش شده باشد.AI ممکن است این را این‌طور تبدیل کند:ثبت درخواست
پرداخت
ارسال پیامک
اتمامدر ظاهر درست است.ولی آن منطق “اگر خطا شد چه کن” حذف شده.همین تفاوت‌های کوچک در سیستم واقعی فاجعه می‌سازد.AI همه وابستگی‌های پنهان را نمی‌بینددر پروژه‌های بزرگ خیلی چیزها واضح نیست.مثلاً:این سرویس به Redis وابسته استآن سرویس از RabbitMQ پیام می‌گیردیک Cron Job شبانه چیزی را اصلاح می‌کندیک event مخفی سه سرویس دیگر را فعال می‌کندخیلی از این‌ها در مستندات هم نیست؛ فقط در رفتار سیستم وجود دارد.AI ممکن است این ارتباط‌های پنهان را از دست بدهد.نتیجه؟سیستمی می‌گیرید که شبیه قبلی است، ولی دقیقاً مثل قبلی کار نمی‌کند.«همان کارکرد دقیق» خطرناک‌ترین بخش توقع استبزرگ‌ترین اشتباه همین جمله است:«دقیقاً همان کارکرد را بده.»چون این کار برای انسان هم سخت است، چه برسد به AI.مثلاً در سیستم اصلی شاید:پرداخت دوبار انجام نشوداگر شبکه قطع شد retry شودداده‌ها eventually sync شوندخطاها recover شونداین‌ها فقط کد نیستند؛ رفتار سیستم‌اند.AI خیلی وقت‌ها behavior را کامل بازسازی نمی‌کند.تبدیل یکجای پروژه، شبیه بازنویسی کامل از صفر استو بازنویسی کامل از صفر، معمولاً پروژه‌ها را می‌سوزاند.سال‌ها در مهندسی نرم‌افزار ثابت شده:Big Bang Rewrite پرریسک است.حالا اگر این را با AI انجام بدهید، فقط سریع‌تر وارد همان ریسک می‌شوید.مثال سادهفرض کنید این‌ها را دارید:سرویس کاربرانسرویس پرداختسرویس اپلایسرویس نوتیفیکیشنRedisRabbitMQPostgreSQLAuthو به AI می‌گویید:«همه را مونولیت کن.»ممکن است خروجی تمیز هم باشد:Controller داردService Layer داردDatabase model داردولی ممکن است این‌ها گم شده باشند:منطق صف‌هاretryهاrollbackهاهماهنگی بین سرویس‌هاdependencyهای مخفییعنی ظاهر پروژه خوب است؛ باطن نه.AI برای این کار بد است؟ نه.استفاده اشتباه بد است.AI خیلی خوب است برای:✅ تحلیل وابستگی‌ها✅ پیدا کردن couplingها✅ کمک به refactor✅ تبدیل سرویس به ماژول✅ تولید تست✅ کمک به migration مرحله‌ایبرای این نه:❌ “کل سیستم را بگیر و یکجا بازنویسی کن.”راه درست چیست؟به جای این:«کل پروژه را مونولیت کن»بگویید:Payment را جدا تحلیل کناین سرویس را modular monolith کنdependency map بسازریسک‌های migration را پیدا کنیعنی پروژه را تکه‌تکه جلو ببرید.AI اینجا عالی است.یک مثال واقعی از اشتباه رایجغلط:این ۱۲ مایکروسرویس را بگیر و معادل مونولیت کامل بده.درست:اول ارتباط سرویس‌ها را تحلیل کن.بعد Payment Domain را به ماژول مونولیت تبدیل کن.بعد تست تطابق بده.زمین تا آسمان فرق دارد.جمع‌بندیمایکروسرویس را نمی‌شود مثل چند فایل zip یکی کرد.تبدیلش به مونولیت یک مسئله معماری است، نه صرفاً تولید کد.ابزارهایی مثل Cursor فوق‌العاده‌اند، اما برای کمک به این مسیر، نه انجام جادویی کل مسیر.اگر کل پروژه را یکجا به AI بدهید و انتظار “همان سیستم دقیق” داشته باشید، معمولاً یا بخشی از منطق گم می‌شود، یا ریسک بزرگی وارد پروژه می‌کنید.قاعده ساده:برای بازطراحی معماری، از AI کمک بگیرید؛ کل معماری را به AI نسپارید.</description>
                <category>محمدرضا ذوالقدری</category>
                <author>محمدرضا ذوالقدری</author>
                <pubDate>Wed, 29 Apr 2026 16:00:58 +0330</pubDate>
            </item>
                    <item>
                <title>بیچاره ما</title>
                <link>https://virgool.io/Khamoshi/%D8%A8%DB%8C%DA%86%D8%A7%D8%B1%D9%87-%D9%85%D8%A7-cxzqddkhdg0a</link>
                <description>امروز ۱ بهمن ۱۴۰۴ هست. ۱۳ روز توی تاریکی به سر میبریم. البته قبلا هم تاریک بود اما کورسوی امید داشتیم. اینترنت از پنجشنبه ۱۸ دی به طور کلی قطع شد. هیچ ارتباطی با دنیا نداریم. ارتبطات داریم ولی ما نداریم. شرکتای دیگه خیلی وقته تعطیل کردن اما گفتیم کرکره رو باز نگه داریم شاید معجزه شد.اون پشت چه خبر؟کلادفلر گفته یه سری فعالیت های اینترنتی از ایران داریم مشاهده میکنیم که توی تایم خاموشی مشکوکه. انگار برادرا دارن اینستاگرام رو شخم میزنن. حالا چرا اینکارو میکنن و دنبال چی هستن . اینکه فلانی کیو فالو کرده یا چه کامنتی گذاشته و ... رو میخوان چیکار  اللهً العًلم. ما که بهر تماشا آمده ایم.برادرای کم بینش آروان‌کلاد هم گفتن گفتن یه فیضی ببریم سر سفره. اومده و توی یه طرحی داره با هواوی همکاری میکنه تا با آوردن تجهیزات از چین برای ایران زیرساخت بسازه! منظور برادرا از زیرساخت Censor As Soon A Possible هست. امیدوارم با زیرساختشون مرفع بشیم. ولی فعلا که SSL رایگان نداریم. توی داخل هم  امر کردن که کامنت های سایت ها با جا بسته باشه. چت دیوار هم نداریم. شنیده ها حاکی از اینه که توی پیامرسان حکومتی هم چت گروهی رو بستن! گفتن برید خونه تونتعدیلی چندین هزار برنامه نویس، مهندس دوآپس، متخصص شبکه رو نمیشه ساده ازش گذشت. شرکتی که برپایه ارتباطات بین الملل کار میکنه رو باید چیکار کنیم؟ با این شرایط قراره بسیاری شرکت ها تعطیل بشن، نیروهارو تعدیل کنن و این یعنی نیرو کاری زیاد میشه و به بازار کار فشار میاره. کارفرما هم فرصت رو غنیمت میشمره و به فکر سواستفاده از کارمند میافته. تازه اگه کاری باقی بمونه</description>
                <category>محمدرضا ذوالقدری</category>
                <author>محمدرضا ذوالقدری</author>
                <pubDate>Wed, 21 Jan 2026 08:32:01 +0330</pubDate>
            </item>
                    <item>
                <title>با این کانال های یوتیوب برنامه نویس شو!</title>
                <link>https://virgool.io/@zolghadri/programming-youtube-channels-in-persian-p2zuastbgioa</link>
                <description>همه ی ما شنیدیم که یوتیوب یه منبع خیلی عالی برای یادگیریه همه چیزه! و کاملا هم درسته. شما میتونید از آموزش خیاطی و آشپزی تا آموزش تعمیر خودرو و برنامه نویسی رو توی یوتیوب پیدا کنید. در ادامه کانال هایی رو معرفی میکنیم که از بهترین کانال های یوتیوب هستن و مهم تر از همه فارسی هستن.این لیست در حال آپدیت شدنه، ممکنه دفعه بعد که این نوشته رو میبینی تغییر کرده باشه. بد نیست دوباره یه نگاهی بهش بندازی.Jadi | جادی میرمیرانیتمرکز اصلی جادی روی زبان برنامه نویسی پایتون، آموزش لینوکس، شبکه و امنیت هست. آموزش فریم ورک جنگو، دوره ی LPIC و دوره ی Network+ رو میتونید تو کانال جادی پیدا کنید. پادکست رادیو گیگ رو هم میتونید تو کانال جادی بشنوید.Pars Click | امیر عظیمیپارس کلیک یکی از قدیمی ترین انجمن های آموزش برنامه نویسی بود که بیشتر فعالیت هاش به یوتیوب منتقل شد. امیر عظیمی توی این کانال تقریبا آموزش همه زبان های برنامه نویسیِ مطرح رو ضبط کرده و همچنین درمورد مهارت های نرم که شمارو برای استخدام و روابط کاری خیلی کمک میکنه.  Golem Course | علیرضا آقامحمدییکی از خاص ترین کانال های مربوط به مهندسی نرم افزار هست. علیرضا آقامحمدی به مطالبی مهمی مثل طراحی سیستم و مهندسی نیازمندی ها پرداخته و در کنارش آموزش های مثل پایتون و گیت هم اضافه کرده. اگه خودتون کانال یوتیوب دارید یا کانالی رو پیشنهاد میدید حتما کامنت بزارید.❤️</description>
                <category>محمدرضا ذوالقدری</category>
                <author>محمدرضا ذوالقدری</author>
                <pubDate>Sat, 20 May 2023 16:52:29 +0330</pubDate>
            </item>
                    <item>
                <title>تو لینوکس؛ بدون حلقه 1000 تا فایل درست کن</title>
                <link>https://virgool.io/@zolghadri/array-builder-a2pxwajs2ejp</link>
                <description>الکی مثلا اینجا یوتیوبهتو این قسمت از ترفند های لینوکسی با هم دیگه میخوایم یه کامندی اجرا کنیم که n تا فایل و پوشه برامون بسازه. فقط و فقط به کمک { }. Array builder چندتا مثال با مقادیر ثابت:echo {&amp;quotApple&amp;quot,&amp;quotBanana&amp;quot,&amp;quotCherry&amp;quot}
# Apple Banana Cherry

echo {1,2,3,4,5}
# 1 2 3 4 5خب میبینیم که هرچی تو آکولاد(curly braces) باشه، آرایه در نظر میگیره. خب حالا میخایم یه بازه‌ای(range) رو توی آرایه داشته باشیم:echo {1..10}
# 1 2 3 4 5 6 7 8 9 10دیدید! ما فقط شروع و پایان بازه رو تعریف کردیم. حالا اینو داشته باش:echo {1..20..2}
# 1 3 5 7 9 11 13 15 17 19
خب به جای خوبش رسیدیم. شما این آرایه رو میتونید به عنوان ورودی به کامندای دیگه پاس بدید. مثلا میتونید یه آرایه 1000 تایی درست کنید و به mkdir بدید. به ازای هر عضو آرایه، یه پوشه درست میکنهmkdir {0000..1000}میتونید به اسم ها پسوند و پیشوند هم اضافه کنید:mkdir log-{2000..2022}-serverحالا پوشه تو پوشه! 10 پوشه که هرکدوم ۵ تا پوشه دارن:mkdir -p  {1..10}/{1..5}برای حذفشون از این استفاده کنید:rm -r  {1..1000}خب فکر کنم به هدف نوشته رسیدیم. برای تمرین میتونید اینارو امتحان کنید:ساخت n تا فایل با دستور touchساخت n تا پوشه با فرمت DATETIME-NUMBERساخت بازه‌ حروف a..z بجای اعداد</description>
                <category>محمدرضا ذوالقدری</category>
                <author>محمدرضا ذوالقدری</author>
                <pubDate>Sun, 06 Mar 2022 02:35:32 +0330</pubDate>
            </item>
                    <item>
                <title>دولوپر ها کی هستن؟ کِی سنیور میشم؟</title>
                <link>https://virgool.io/Solidity/senitority-developer-levels-tvpqfqrfuppb</link>
                <description>Image from freepikچندماه پیش که داشتم آگهی های استخدام رو زیر و رو میکردم تا چهارتا تکنولوژی و مهارت جدید به گوشم بخوره، کنجکاو شدم که بدونم من تو چه سطحی بین دولوپر ها هستم. خیلی جاها سابقه کار رو معیار قرار میدن ولی سابقه کار همه چیزو مشخص نمیکنه. درکنارش باید به مهارت ها، تنوع پروژه ها و میزان پیشرفت تو این سال ها هم توجه بشه. نوشته ای  که در ادامه میخونید فارسی شده این مقاله هست.مهندس نرم افزار یا توسعه دهنده؛ چیکار میکنه؟با این حال، قبل از این که شروع کنیم پله های مختلف این نردبان شغلی تو صنعت IT رو شرح بدیم، جا داره چند کلمه هم در مورد شغلِ مهندسی نرم افزار بگیم. مهندسین نرم افزار یا توسعه دهنده ها، مسئولِ تحلیل، طراحی، پیاده سازی، تست و توسعه‌ی آخرین نسل از ابزارها و نرم افزارها برای سیستم های ارتباطی هستند.وظایف مهندس نرم افزار شامل این موارد میشه (ولی این همه‌ش نیست):کد بزنهساختار پایگاه داده رو طراحی کنهتوسعه نرم افزار برای طراحی داخلی شرکتاز کیفیت کد ها مطمئن بشهراه حل های خودشو طراحی و پیاده سازی بکنهمشکلات مربوط به سیستم اطلاعاتی رو مدیریت و حل بکنهدر کنارش بهتره که این موارد رو هم بلد باشه:مهارت برنامه نویسی داشته باشهانگلیسیش خوب باشهمهارت های فردی خوبی داشته باشهمشکلات رو آسون کنهنیازهای کاربر رو پیش بینی کنه همه چیز در مورد مهارت و دانش است!خب، حالا که میدونید مهندس نرم افزار کیه و چیکار میکنه، روی موضوعِ مهمی تاکید میکنیم که از کم به زیاد حرکت میکنه. درسته، سال های فعالیت خیلی مهمه، ولی کلید موفقیت توی صنعت IT مهارت و دانشه. به همین خاطر، شما اغلب با توسعه‌دهنده های تازه کار که پیرتر و جوان تر از خودتونن ملاقات میکنید؛ همینطور ممکنه با  توسعه‌دهنده های حرفه ای از گروه سنی مختلف هم ملاقات کنید. چیزی که تو صنعت IT  مهمه اینه که چیکار میتونید بکنید، نه اینکه چندسال توی بازار بودید.سطح ۰ - یادگیرنده (کارآموز)اگه تازه مدرسه رو تموم کردید یا در یک دوره شرکت می‌کنید، شاید دانش نظری شما (منصفانه) خیلی کم باشه. شما میتونید با IDE یه کارایی بکنید ولی زیاد با framework ها آشنایی ندارید و چهارتا چیز در مورد دیتابیس ها بدونید. ولی این قابل درکه، شروع سخته و هنوز راه زیادی رو باید برید. پس یاد بگیرید! مدام یاد بگیرید و بعد ۳ ماه کار کردن برای یه شرکت یا بودن توی یه پروژه ای به همراه با تجربه ها، ممکنه توسعه‌دهنده تازه کار بشید. با تمرین استاد می‌شید و توی صنعت IT، که مداوم در حال پیشرفته، شما هم باید همیشه خودتون رو آموزش و توسعه بدید. سطح ۱ - تازه‌کاربه عنوان یه توسعه‌دهنده تازه‌کار شما بی تجربه هستید و همه چی به نظرتون غیرقابل درک، جدید و وحشتناکه ولی مطمئناً شگفت انگیز هم هست. مشکل اینجاست که حتی اگه بخواید، بازم شاید نتونید بیشتر پروژه هارو خودتون تنهایی تموم کنید. شما دانش پایه ای در مورد IT، نرم افزار و سخت افزار دارید؛ حتی اگه بازم چیزهایی در مورد برنامه نویسی و ابزارهاش بدونید، یه زبان برنامه نویسی بلد باشید و  مهارت نوشتن کد های ساده هم داشته باشید. شما کم کم یاد میگیرید جزئیات رو بدون ارور های مهم و باگ درست کنید. اینکه چقدر سریع بپرید برید سطح بعدی فقط به این بستگی داره که چقدر تعهد داشته باشید و از چند نفر بتونید یاد بگیرید.تجربه: ۰ تا ۲ سالدانش: دانش پایه‌ای در مورد IT  از نرم افزار تا زمینه سخت افزار، برنامه نویسی کامپیوتر، زبان‌های برنامه نویسی، کدها و IDEاستقلال: سطح پایین استقلال، نیاز به بررسی و راهنمایی دارد. اما می تواند وظایف آسان را انجام دهدسطح ۲ - متوسطتوسعه‌دهنده متوسط شدن شاید خطرناک ترین بخش مسیر حرفه ای شما باشه! به طور کلی به این حقیقت مربوط میشه که شما قبلا چیزهایی رو بلد بودید و این شمارو تو موقعیت &quot;رئیس بودن&quot; یا انگار همه چیز رو دونستن قرار میده که کاملا غلطه! صنعت IT یادگیری مداوم نیاز داره و شما برای رسیدن به موفقیت نباید استراحت کنید. میدونیم که شما احساس میکنید سلطان تحلیل، طراحی، توسعه و تست، پیاده سازی، مستندسازی و دگرگونی هستید. اما آیا شما واقعا میتونید یه مسئله‌ای رو تحلیل کنید و فقط روی چطور استفاده کردن از تکنولوژی ها تمرکز نکنید و همچنان به جزئیات هم توجه کنید؟ و سعی کنید درک کنید که راه حل ها قبلی رو چطور بهبود بدید؟ همه مجبور نیستن که توسعه‌دهنده حرفه‌ای باشن و مهمه که در نظر بگیرید که هدف شما اینه که پیشرفت کنید یا فقط از نردبان شغلی بالا برید؟تجربه: ۲ تا ۴ سالدانش: فکر میکنه از چیزی که واقعا میدونه، بیشتر میدونه. سطح متوسطی از دانش در مورد IT  از نرم افزار تا زمینه سخت افزار، برنامه نویسی کامپیوتر، زبان‌های برنامه نویسی، کدها، IDE و APIاستقلال: سطح متوسطی استقلال، همچنان نیاز به بررسی و راهنمایی دارد. اما می تواند بیشتر وظایف را تنهایی انجام دهدتأثیر اثر دانینگ-کروگرهنگام  بحث در مورد سطح متوسط، باید به اثر دانینگ-کروگر اشاره کرد که در  زمینه روانشناسی رخ می دهد و با تعصب شناختی مرتبط است، که در آن افراد به  اشتباه توانایی های شناختی خود را بیشتر از آنچه هستند ارزیابی می‌کنند. این تله بزرگی برای توسعه‌دهنده‌ی میانی است زیرا به نظر می‌رسد که از قبل همه  چیز را می‌داند و قهرمان جهان هست، اما در واقع، خیلی کم می‌داند و  هنوز تا دستیابی به دانش کامل فاصله دارد. می‌گوید آنچه متوسط را از ارشد متمایز می کند این است که متوسط فکر می کند همه  چیز را می داند ولی ارشد آگاه است که هیچی نمی‌داند زیرا هنوز چیزهای زیادی برای یادگیری وجود دارد. این کاملاً با نمودار زیر نشان داده شده است، که مطمئناً شما به یاد خواهید  آورد و باعث می شود در مورد مکانی که واقعاً در آن هستید فکر کنید. humility threshold = آستانه فروتنی سطح ۳ - ارشدارشد بودن چیزی بیش از اینه که کار هارو به خوبی انجام بدید. به عنوان یک ارشد، از اشتباهات خود چیزهای زیادی یاد می‌گیرید و دقیقاً می دونید چه کاری رو می تونید ولی بهتره انجام ندید؛ چه کد هایی رو میشه تغییر داد و کدومارو بهتره دست نزنید.  دیگه  به کارهای ساده علاقه ای ندارید، کارهایی را انجام می دید که کس دیگه ای نمیخواد انجام  بده و موفق می شید اون ها را حل کنید. ارشد بودن درست مثل حل کننده مشکلات به شکل تمام وقته. دانش تخصصی ارشدها به آموزش به تازه کارها هم کمک میکنه، چون به طور کلی ارشدها هستن که حوصله و دانش کافی دارن تا به راحتی  مسائل پیچیده ای که ممکنه پیش بیان رو توضیح بدن. قابل ذکره که ارشد بودن پایان مسیری که دنبال میکنید نیست. مراحل بعدی که میتونید طی کنید معمار، مدیر محصول یا رهبر ارشد هستن. فرصت های جالب زیادی وجود دارن و چیزهای زیادی برای یادگیری.تجربه: 5 تا 8 سالدانش: سطح بالایی از دانش IT از نرم افزار تا زمینه سخت افزاری، برنامه نویسی کامپیوتر، زبان های برنامه نویسی، کدها، فریم ورک ها، IDE، API، می داند چگونه از همه آن استفاده کند، همچنین مایل به کمک به دیگران است.استقلال: سطح بالایی از استقلال، می تواند به راحتی هر پروژه ای را شروع و به پایان برساندبیایید در مورد پول صحبت کنیم!در پایان ذکر چند کلمه در مورد حقوق خالی از لطف نیست. مطمئناً شما هم شنیدید که هرچه در نردبان شغلی خود بالاتر باشید، رضایت مالی بیشتری خواهید داشت. نمودار زیر چند کشور و مقدار دستمزد برای سطوح شغلی توسعه دهندگان نرم افزار را نشان می دهد. تاریخ انتشار این مقاله 02.09.2019لایک کردن این نوشته باعث میشه تا (شاید) بیشتر نمایش داده بشه و توسعه‌دهنده های کمتری دچار اثر دانینگ-کروگر بشن.  https://sdacademy.dev/how-the-developer-seniority-levels-looks-like/ </description>
                <category>محمدرضا ذوالقدری</category>
                <author>محمدرضا ذوالقدری</author>
                <pubDate>Thu, 24 Feb 2022 19:54:08 +0330</pubDate>
            </item>
                    <item>
                <title>دیباگ کد های پایتونی چطوریه؟</title>
                <link>https://virgool.io/pythonism/%D8%AF%DB%8C%D8%A8%D8%A7%DA%AF-%DA%A9%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C-%DA%86%D8%B7%D9%88%D8%B1%DB%8C%D9%87-vhnzw5uj1wvl</link>
                <description>vector freepik.comیکی از چیزایی که تو آموزش های برنامه نویسی خیلی کم بهش اشاره میشه دیباگینگ (مشکل یابی) هست. مخصوصا تو پایتون! چون توی اکثر آموزش ها مدرس کد رو بدون مشکل مینویسه و ما اونو به خاطر میسپاریم. حالا اگه یه کد جدیدی بنویسیم و تعداد خط هامون زیاد بشه، ما مشکل رو به راحتی پیدا نمی‌کنیم. اینجور موقع ها اکثر ما یه حرکت ابتکاری میزنیم؛ پرینت! بله ما میایم چند تا پرینت میزاریم تا مقدار متغیر ها و جاهایی که اجرا میشه یا نمیشه رو پرینت می‌کنیم. حالا الان میخوایم با ماژول درون‌ساخته‌شده!(built-in) pdb آشنا بشیم.برای پایتون ۳.۷ و بالاتر میتونید از breakpoint استفاده کنیم.خب تنها کاری که باید بکنیم اینه که ماژول  pdb رو import کنیم و متد set_trace رو صدا بزنیمimport pdbpdb.set_trace()اینطوری هم میتونید بنویسیدimport pdb; pdb.set_trace()یه مثال هم ببینیمimport pdb
def squared(a):
    pdb.set_trace()
    b = a**2
    return b 
print(squared(4))# Python 3.7 on above
def squared(a):
   breakpoint()
    b = a**2
    return b 
print(squared(4))وقتی برنامه به set_trace برسه، برنامه میره رو حالت interactive. شما میتونید خط به خط اجرا رو زیر نظر بگیرید.--Return--&gt; &lt;ipython-input-1-d60c9f892b57&gt;(3)&lt;module&gt;()-&gt;None-&gt; pdb.set_trace()(Pdb) شما اینجا چندتا کامنت میتونید استفاده کنید. سعی میکنم مهم هاشو بگم. c:  trace رو ادامه میدهq: خارج میشهs: میره مرحله(خط) بعدیn: اگه به یه تابع ای برسه اونو trace نمیکنهروش های دیگه ای هم هستن که دیگه نیاز نیست سورس کد رو تغییر بدیم. چندتاشو این پایین میزارم.import pdb
import mymodule
pdb.run(&#039;mymodule.test()&#039;)python3 -m pdb myscript.pyدر آخر توجه داشته باشید که دیباگ همون تست نیست! ما تست مینویسیم تا مطمئن بشیم برنامه درست کار میکنه. و اگه درست کار نکرد میریم سراغ دیباگ.اگه دنبال اطلاعات بیشتر میگردید به داکیومنتیشن کتابخونه سر بزنید.  https://docs.python.org/3/library/pdb.html </description>
                <category>محمدرضا ذوالقدری</category>
                <author>محمدرضا ذوالقدری</author>
                <pubDate>Sat, 19 Feb 2022 15:18:33 +0330</pubDate>
            </item>
            </channel>
</rss>