<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدرضا</title>
        <link>https://virgool.io/feed/@code</link>
        <description>پژوهشگر و  علاقمند به هوش مصنوعی، بیزار از چالش‌های تکراری، ماشینیست</description>
        <language>fa</language>
        <pubDate>2026-06-10 15:10:36</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/20167/avatar/uo3flI.jpeg?height=120&amp;width=120</url>
            <title>محمدرضا</title>
            <link>https://virgool.io/@code</link>
        </image>

                    <item>
                <title>اخبار را پیگیری بکنید؛ نقدی عصبانی</title>
                <link>https://virgool.io/router/pyegiri-bokonid-zveaiwxhxslj</link>
                <description>اخبار را پیگیری بکنید !در این توفیق اجباری بی‌اینترنتی، پای منبر پادکست‌ها و کتاب‌های صوتی نشسته‌ بودم که عنوان یکی از کتاب‌ها در پلتفرم داخلی توجهم رو جلب کرد:«کتاب اخبار را پیگیری نکنید ب- بیانه‌ای برای یک زندگی شادتر، آرام‌تر و عاقلانه‌‎تر (با گویندگی یک مجری مشهور)» شاید ده سال پیش این نحوه ادبیات و ارزش‌گذاری‌ برای زندگی روزمره برای منِ خاورمیانه‌ای جذاب بود ولی الان چیزی جز یک عبارت مسخره و بی‌معنا یا به بیان مودبانه، تجویزی غربی برای دردهای شرقی نیست.برای منی که روشن بودن یا نبودن Capslock در هنگام تایپ کردنِ توییت یک رییس‌جمهور خارجی، قیمت کالاهای اساسی زندگی‌ام را تامین می‌کند این جور تجویز‌ها چیزی جز زر مفت نیست. البته که اگر در یک جامعه نرمال با روان سالم زندگی می‌کردم دغدغه‌های این‌چنینی داشتم ولی زیست در خاورمیانه به خصوص در قسمتی که کل جهان باهاش مشکل دارند(!)، ما چیزی جز اخبار نداریم؛ البته منظورم این نیست که از اخبار برای فرار از فکر کردن به مشکلات زندگی استفاده کنیم. بلکه اخبار، روزنه‌ای برای تحلیل و پیش‌بینی تحولات آینده‌مان است. ما به طور دائمی روی یک تردمیل هستیم که اخبار نقش کنترل کردن سرعت و سختی دویدن را دارد. ما از طریق تحلیل اخبار می‌توانیم متوجه شویم که موج جدید گرانی خواهد آمد، طلا گران خواهد شد، وضعیت بازار ماشین یا موتور چگونه خواهد شد.شاید انتقاد کنید که این تحلیل‌گری‌ها اساسا وظیفه تحلیلگران مالی و تریدرهاست. بله در یک جامعه نرمال، فرد با تحلیل دادگان که بخشی از آن اخبار است برای افزایش سرمایه تصمیم‌گیری می‌کند. ولی ما در جامعه‌ای بحران‌زده، تحریم‌زده هستیم که باز هم می‌گویم بقیه کشورها با آن لج هستند(!). منِ انسان معمولی که از رانت اطلاعاتی برخوردار نیستم در چنین جامعه‌ای فقط از طریق اخبار می‌توانم سرمایه‌ی خود را نه افزایش، بلکه نگه دارم. خلاصه که این چرت و پرت‌ها برای منِ خاورمیانه‌ای قابل تعمیم نیست. </description>
                <category>محمدرضا</category>
                <author>محمدرضا</author>
                <pubDate>Tue, 20 Jan 2026 19:02:52 +0330</pubDate>
            </item>
                    <item>
                <title>طراحی بات تلگرامی هوشمند تولید محتوا با Claude 3.7 بدون کدنویسی !</title>
                <link>https://virgool.io/@code/%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D8%A8%D8%A7%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85%DB%8C-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D9%85%D8%AD%D8%AA%D9%88%D8%A7-%D8%A8%D8%A7-claude-37-%D8%A8%D8%AF%D9%88%D9%86-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-xteoage71qt4</link>
                <description>تولید محتوا با AIقبلا که دوره‌های وردپرس را با عنوان طراحی صفر تا صد سایت بدون کدنویسی تبلیغ می‌کردند به این خیال خام خنده‌ام می‌گرفت. اما با ظهور Agentic AI دیگر این رویاها دور نیست.روز 24 فوریه 2025 نسخه 3.7 از مدل Claude Sonnet منتشر شد و بلافاصله در پلتفرم‌های مختلف مانند Cursor در دسترس قرار گرفت. عملکرد بهتر این مدل در مقایسه با دیگر مدل‌ها به خصوص در زمینه کدنویسی باعث شد که به فکر تست کردن مدل در پیاده‌سازی یکی از پروژه‌های روتین بازار بیفتم.بنچمارک مدل‌های مختلف با claude 3.7 Sonnetدر حال حاضر یک مسئله کاربردی دیگری را با Cursor Composer تست کردم و از مراحل انجام آن یک ویدئو ضبط کردم تا ببینید که چگونه Cursor Agent با مدل Claude 3.7 sonnet مسئله‌ای که تعریف کرده‌ام با همان جزئیات مدنظر بدون دخالت من در کدنویسی پیاده‌سازی کرده است. بله رویای No Code Development که از گذشته با راهکارهایی مانند BPMS و ... دنبال می‌شد به وقوع پیوسته‌ است.مسئله‌ای که قصد پیاده‌سازی آن را داریم یک بات تلگرامی است که با دریافت یک موضوع برای سایت محتوای پست یا محصول بنویسد.با ارسال توضیحات پرامپت به Cursor Agent، او(جان‌بخشی به ایجنت!) اسم پروژه را telegram-content-generator گذاشته است. https://youtu.be/PatSUVAPyB4 نکات تکمیلیاین مسئله یک پروژه روتین و ساده است که افراد زیادی به فکر پیاده‌سازی آن بوده و هستند. بدیهی است هرچقدر پروژه پیچیده‌تر باشد ممکن نیاز به دستکاری و اصلاح کد توسط کاربر بیشتر شود.به علت اجتماع غنی برنامه‌نویسان پایتون و حجم بالای کد‌ که به صورت متن باز در اینترنت موجود است، مدل Claude 3.7 Sonnet با دقت قابل قبولی روی پایتون یادگیری شده است. این دقت ممکن است برای زبان‌های دیگر پایین‌تر باشد.پرامپت‌های هر قدم با استفاده از دانش زمینه‌ای کاربر ایجاد شده است و این نشان می‌دهد که همچنان کار پیاده‌سازی نیازمند یک کاربر متخصص است. هرچند این فرایند خودکار، نیاز به برنامه‌نویس مبتدی(junior) را کم می‌کند و در آینده شرکت‌ها، تیم‌های برنامه‌نویسی چابک‌تری(بخوانید لاغرتری) ایجاد خواهند کرد.بیان این نکات لازم بود تا از اظهار نظر شتاب‌زده در تعمیم این پدیده جلوگیری کنیم و درب انتقاد را همچنان باز نگه‌داریم. اگر سوال یا انتقادی دارید ممنون می‌شوم نظرتان را بنویسید.</description>
                <category>محمدرضا</category>
                <author>محمدرضا</author>
                <pubDate>Wed, 05 Mar 2025 00:43:28 +0330</pubDate>
            </item>
                    <item>
                <title>تجربه برنامه‌نویسی با نرون‌‎های کمتر</title>
                <link>https://virgool.io/@code/claude-37-sonnet-irwyrfawspao</link>
                <description>برنامه‌نویسی با نرون‌های کمترچند روز پیش مسئله‌ای پیش آمد که باید داده‌های سایت اداره کل حقوقی قوه قضاییه کرول شود. اما چون این سایت که با فریمورک ASP MVC پیاده‌سازی شده و برای جلوگیری از CRAWL از یک توکن در صفحه به صورت hidden استفاده می‌کند، امکان کرول مستقیم API آن وجود نداشت و باید حتما صفحه ابتدا باز شده و پس از بررسی آن مقدار هش، سپس درخواست‌های API ارسال شود. این چالش فرصتی فراهم کرد که مدل جدید Claude 3.7 sonnet را به صورت thinking امتحان کنم.ابتدا پروژه را در گیت ساختم و چند فایل خالی به عنوان ساختار اولیه ایجاد کردم. سپس برای ورودی و خروجی API با استفاده از مدل claude-3.7-sonnet-thinking در crusor مدل‌های pydantic ساختم.مدل ورودیسپس فرایند کرول را با یک پرامپت به شرح زیر در تب CHAT Cursor نوشتم.I want to crawl the search of this site with url :
 edarehoquqy.eadl.irAfter the page is showed up, the value hidden input with name “__RequestVerificationToken” in html is set (xpath: //input[@name=&amp;quot__RequestVerificationToken&amp;quot]). After that, we fill “pageSize”, “sortOption”, “fromDate”,”toDate”,”pageIndex”. Then this api is called in this style:
curl &#039;https://edarehoquqy.eadl.ir/API/Mvc/IdeaProject.IdeaSearch/CustomSearch/Search?search=&amp;pageIndex=2&amp;pageSize=10&amp;sortOption=1&amp;culture=fa-IR&amp;fromDate=&amp;toDate=&amp;moduleId=1286&#039; \-H &#039;accept: */*&#039; \-H &#039;accept-language: en-US,en;q=0.9&#039; \-b &#039;dnn_IsMobile=False; .ASPXANONYMOUS=uB40DZf5_NHwQ6aolTxQMcopdf_gqFz-o7CbtkPDHB9KmjMhV0xZhgxz5tqpX7sMgw1Dfh4yNSLkdQZhNu5cnxDmuBBb_ryyXKqJrZdbyL2MORmw0; __RequestVerificationToken=gpTij-n68kJ0jQq4n84dyEEz1t9p8z6CGMm5wMLP8Mv-jE6jtE73ViUB_FHYp95Gxz19ew2&#039; \-H &#039;moduleid: 1286&#039; \-H &#039;priority: u=1, i&#039; \-H &#039;referer: https://edarehoquqy.eadl.ir/%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%86%D8%B8%D8%B1%DB%8C%D8%A7%D8%AA-%D9%85%D8%B4%D9%88%D8%B1%D8%AA%DB%8C/%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%86%D8%B8%D8%B1%DB%8C%D9%87&#039; \-H &#039;requestverificationtoken: SHp8WUNLYG4Rg-ySgF90wOEOR1Eqx7yTIwncLFgjHQji4N2Ugyv98O1I5Eukf8i43H4KNQ2&#039; \-H &#039;sec-ch-ua: &amp;quotNot(A:Brand&amp;quotv=&amp;quot99&amp;quot, &amp;quotGoogle Chrome&amp;quotv=&amp;quot133&amp;quot, &amp;quotChromium&amp;quotv=&amp;quot133&amp;quot&#039; \-H &#039;sec-ch-ua-mobile: ?0&#039; \-H &#039;sec-ch-ua-platform: &amp;quotWindows&amp;quot&#039; \-H &#039;sec-fetch-dest: empty&#039; \-H &#039;sec-fetch-mode: cors&#039; \-H &#039;sec-fetch-site: same-origin&#039; \-H &#039;tabid: 495&#039; \-H &#039;user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36&#039; \-H &#039;x-requested-with: XMLHttpRequest&#039;
 
 
Now implement the crawler class (name the file handler.py) to get input options and handle these operation and pagination based on result (more:true or false). Then write unit test.پیاده‌سازی کرولرنحوه اجرای کرولرالبته من به همین بسنده نکردم و در پرامپت بعدی گفتم با HTTPX ریفکتورشده بنویسه. تنها کاری که بعد از هر جواب، انجام دادم صرفا زدن Apply بود. خیلی شیک و مجلسی !صرف نظر از تستی که نوشته بود، برای تست خودم یک فایل ساختم و کدی که پیشنهاد داده بود را کپی و اجرا کردم. در کمال ناباوری به درستی اجرا می‌شد. فقط یک چیزی کم داشت. با توجه به اینکه ممکنه در حین کرول خطا بدهد، نیاز است هر صفحه که کرول شد محتوای آن ذخیره شود. با پرامپت زیر بهش توضیح دادم و پس از خروجی، apply زدم!change handler to also save each page result as json (utf8 and indent 4) to OUTPUT_PATH that defined in project_settings.نکته جالب این بود که با یک فرمت خوانا نام‌گذاری فایل‌ها را براساس ورودی‌های کاربر نوشته بود که ممکن بود این نیاز را بعدا برایش پرامپت کنم.نام‌گذاری فایلهنوز یک مسئله‌ای باقی مانده بود. اینکه اگر دوباره بخواهیم کرولر را اجرا کنیم بتواند از جایی که خطا خورده است ادامه دهد(آخرین فایل ذخیره شده) و از ابتدا شروع نکند. با یک پرامپت این مورد هم اضافه شد.refactor handler to skip the pages that already saved in output_path and continue to next pages.نمونه از کد اضافه شده:کد اضافه شدهپروژه نهایی در این لینک گیت‌هاب موجود است:گیت‌هاب پروژهپ ن 1: فکر کنم نیازی به گفتن نباشه که README رو هم با claude-3.7-sonnet-thinking نوشتم :دیپ ن 2: در این تست صرفا از تب CHAT استفاده کردم و هنوز حالت Composer و Agent را تست نکردم.</description>
                <category>محمدرضا</category>
                <author>محمدرضا</author>
                <pubDate>Sun, 02 Mar 2025 16:23:04 +0330</pubDate>
            </item>
                    <item>
                <title>تحلیل معماری و چالش‌های فنی مکتب‌خونه: از ترکیب MVT/SOA تا مسائل RESTful</title>
                <link>https://virgool.io/@code/mvt-soa-lw0wep5b2agp</link>
                <description>تحلیل معماری فنی مکتب‌خونهبا گسترش پلتفرم‌های آموزشی آنلاین مانند مکتب‌خونه، نیاز به معماری‌های مقیاس‌پذیر و استانداردهای فنی بیش از پیش احساس می‌شود. در این مقاله، با بررسی مهندسی معکوس APIها و معماری مکتب‌خونه، به تحلیل چالش‌های فنی آن می‌پردازیم. این تحلیل بر پایه‌ی مشاهدات عملی و اصول پذیرفته‌شده در توسعه‌ی نرم‌افزار استوار است.۱. ترکیب معماری MVT و SOA: تعادل بین پویایی و پیچیدگیمکتب‌خونه از ترکیب الگوی معماری MVT (Model-View-Template) و معماری سرویس‌گرا (SOA) برای رندرینگ صفحات استفاده می‌کند. در این مدل:MVT مسئول مدیریت منطق نمایش و قالب‌بندی است.SOA سرویس‌های backend را برای تامین داده‌های پویا (مانند اطلاعات کاربران یا دوره‌ها) ارائه می‌دهد.چالش‌های کلیدی:اتصال ناکارآمد سرویس‌ها: اگر سرویس‌های SOA به‌درستی طراحی نشوند، وابستگی بیش از حد بین کامپوننت‌های فرانت‌اند و بک‌اند ایجاد می‌شود. این موضوع می‌تواند منجر به تاخیر در لود صفحات و تجربه کاربری ضعیف شود.عدم جداسازی مسئولیت‌ها: در معماری SOA استاندارد، هر سرویس باید یک وظیفه مشخص را انجام دهد، اما در برخی موارد، سرویس‌های مکتب‌خونه منطق کسب‌وکار پیچیده‌ای را حمل می‌کنند که نگهداری را دشوار می‌سازد.۲. پیاده‌سازی ناقص SSR: تاثیر منفی بر سئو و عملکردبا وجود استفاده از Nuxt.js (چارچوبی مبتنی بر Vue برای SSR)، رندرینگ سمت سرور به صورت کامل اجرا نشده است. به عنوان مثال:درخواست‌های تکراری: اطلاعات سرفصل‌ها پس از لود اولیه صفحه، مجدداً از طریق API فراخوانی می‌شوند (شکل ۱). این رفتار نه تنها زمان پاسخگویی را افزایش می‌دهد، بلکه برای خزنده‌های موتورهای جستجو مشکل‌ساز است .خطای ۴۰۴ با تاخیر: در صورت ورود به URL نامعتبر، ابتدا سرویس‌ها فراخوانی شده و پس از یک لودینگ کوتاه، خطا نمایش داده می‌شود (شکل ۲). این رویکرد غیراستاندارد، تجربه کاربری را تحت تاثیر قرار می‌دهد.لود صفحه با سرعت پایین در حالت 404راهکار پیشنهادی:پیش‌رندرینگ استاتیک (SSG): استفاده از قابلیت nuxt generate در Nuxt.js برای تولید صفحات استاتیک از پیش رندر شده، که هم سرعت را بهبود می‌بخشد و هم سئو را بهینه می‌کند .کشینگ سرویس‌ها: کاهش تعداد درخواست‌ها با ذخیره‌سازی پاسخ APIها در سمت کلاینت یا سرور.۳. انحراف از اصول RESTful: استانداردهای دوگانه و خطاهای طراحیاگرچه سرویس‌های مکتب‌خونه از فرمت JSON استفاده می‌کنند، اما چندین نقض استاندارد REST مشاهده می‌شود:۳.۱ مدیریت نادرست وضعیت HTTPخطاهای با کد ۲۰۰: در سرویس Login، حتی در صورت عدم احراز هویت موفق، статуس ۲۰۰ برگردانده می‌شود و نوع خطا در فیلد statusقرار می‌گیرد (شکل ۳). این رویکرد با استاندارد REST مغایرت دارد که پیشنهاد می‌کند برای خطاهای سمت کاربر (مانند ورود ناموفق) از کدهای ۴xx (مانند ۴۰۱) استفاده شود.خطا با وضعیت 200 برگردانده شده استاین در حالی است که سرویس‌ها گوگل مبتنی بر oauth 2.0 وضعیت 401 برای invalid credentials برمی‌گرداند.راهنمای google۳.۲ ناسازگاری در ساختار پاسخ‌هاعدم ثبات در خروجی: در برخی سرویس‌ها، ساختار JSON بسته به موفقیت یا شکست عملیات تغییر می‌کند. مثلاً در سرویس Login، کلیدهای پاسخ در حالت موفق و ناموفق متفاوت هستند (شکل ۴). این موضوع پردازش پاسخ را در سمت کلاینت پیچیده می‌کند.خروجی سرویس در حالت ورود موفقخروجی سرویس در حالت ورود ناموفق۳.۳ فقدان اسکیمای استانداردناهمگونی داده‌ها: فیلدهایی مانند زمان یا قیمت در دوره‌های مختلف، گاه به صورت عددی و گاه به صورت رشته ذخیره می‌شوند (شکل ۵). این ناسازگاری ممکن است ناشی از استفاده از پایگاه داده NoSQL مانند MongoDB باشد، اما برای پلتفرمی با مدل داده‌ای نسبتاً ثابت، انتخاب SQL گزینه بهینه‌تری محسوب می‌شود.مقدار رشته برای فیلد زمانیمقدار main_category در حالت موجودفیلد main_category در حالت null۴. جمع‌بندی و توصیه‌های راهبردیبهینه‌سازی SSR/SSG: پیاده‌سازی کامل SSR در Nuxt.js یا مهاجرت به SSG برای صفحات ایستا .بازنگری در طراحی API:استفاده از کدهای وضعیت HTTP متناسب با هر سناریو (مانند ۴۰۱ برای خطای احراز هویت).تعریف اسکیمای واحد برای پاسخ‌های JSON با ابزارهایی مانند Pydantic.یکپارچه‌سازی پایگاه داده: مهاجرت به سیستم‌های SQL مانند PostgreSQL برای تضمین سازگاری داده‌ها.نتیجه‌گیریتحلیل معماری مکتب‌خونه نشان می‌دهد که ترکیب فناوری‌های مدرن (مانند Nuxt.js و SOA) بدون توجه دقیق به اصول طراحی، می‌تواند چالش‌های غیرمنتظره‌ای ایجاد کند. با این حال، این چالش‌ها فرصتی برای بهینه‌سازی و الهام‌بخشی به جامعه توسعه‌دهندگان ایرانی است تا با نگاهی انتقادی-سازنده، به استانداردهای جهانی نزدیک‌تر شوند.نکته پایانی: همانطور که در مقاله اشاره شد، این تحلیل مبتنی بر مشاهدات فنی است و هدف آن بهبود فرایندهای توسعه از طریق به اشتراک‌گذاری دانش است .</description>
                <category>محمدرضا</category>
                <author>محمدرضا</author>
                <pubDate>Sat, 25 Jan 2025 15:03:19 +0330</pubDate>
            </item>
                    <item>
                <title>دانلود ویدیوهای مکتب‌خونه با maktab-dl: لذت یادگیری آفلاین</title>
                <link>https://virgool.io/@code/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%88%DB%8C%D8%AF%DB%8C%D9%88%D9%87%D8%A7%DB%8C-%D9%85%DA%A9%D8%AA%D8%A8-%D8%AE%D9%88%D9%86%D9%87-%D8%A8%D8%A7-maktab-dl-%D9%84%D8%B0%D8%AA-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A2%D9%81%D9%84%D8%A7%DB%8C%D9%86-gs0ylhwcmgcb</link>
                <description>maktab-dlدر دنیای پرشتاب امروز، دسترسی به منابع آموزشی آنلاین بسیار مهم است. اما گاهی اوقات، ممکن است بخواهیم ویدیوهای دوره‌های آموزشی را به‌صورت آفلاین داشته باشیم تا در هر زمان و مکانی بتوانیم به آنها دسترسی پیدا کنیم. اگر از کاربران پلتفرم آموزشی مکتب‌خونه باشید، حتماً به دنبال راهی برای دانلود ویدیوهای دوره‌های مورد علاقه‌تان بوده‌اید. خوشبختانه، یک ابزار متن‌باز به نام maktab-dl وجود دارد که این کار را برای شما آسان می‌کند.در این مطلب، به معرفی پکیج maktab-dl می‌پردازیم، نحوه نصب و استفاده از آن را بررسی می‌کنیم و چند مثال کاربردی ارائه می‌دهیم.پروژه maktab-dl چیست؟پروژهmaktab-dl یک ابزار خط فرمان (CLI) است که به شما کمک می‌کند ویدیوهای دوره‌های آموزشی مکتب‌خونه را به‌راحتی دانلود کنید. این پکیج با استفاده از زبان برنامه‌نویسی پایتون توسعه داده شده و به‌صورت متن‌باز در دسترس است. از ویژگی‌های کلیدی این پکیج می‌توان به موارد زیر اشاره کرد:دانلود آسان ویدیوها: با استفاده از یک دستور ساده، می‌توانید ویدیوهای دوره‌های مورد نظرتان را دانلود کنید.ذخیره کوکی‌ها: برای دسترسی به دوره‌هایی که نیاز به ورود دارند، maktab-dl کوکی‌های ورود شما را ذخیره می‌کند تا دیگر نیازی به وارد کردن دوباره نام کاربری و رمز عبور نباشد.تنظیم مسیر خروجی: می‌توانید مشخص کنید که ویدیوها در کدام پوشه ذخیره شوند.پشتیبانی از سیستم‌عامل‌های مختلف: این پکیج بر روی سیستم‌عامل‌های لینوکس، مک و ویندوز قابل استفاده است.نصب maktab-dlپروژه maktab-dl به صورت Python Package در PyPi منتشر شده است. برای نصب پکیج maktab-dl، از دستور زیر در ترمینال استفاده کنید:pip install maktab-dlهمچنین می‌توانید از طریق فایل setup py یا pyproject toml که در مخزن پکیج موجود است، پکیج را به صورت دستی نصب کنید:&gt; git clone [github repo link]
 &gt; cd maktab-dl
 &gt; pip install .(این دستور معمولاً برای نصب پکیج‌ها در حالت توسعه استفاده می‌شود)نحوه استفاده از maktab-dlبعد از نصب موفقیت‌آمیز پکیج، می‌توانید از دستور maktab-dl برای دانلود ویدیوهای دوره‌های مکتب‌خونه استفاده کنید. دستور اصلی به شکل زیر است:maktab-dl download [options]در اینجا download یک زیردستور است و [options] پارامترهای اختیاری هستند که به شما اجازه می دهند دانلود را سفارشی کنید.آپشن های دستور download maktab-dl download options --url یا -u : این پارامتر ضروری است و لینک صفحه دوره مورد نظر در مکتب خونه را میگیرد.--cookies یا -c: این پارامتر اختیاری است و مسیر فایل کوکی‌ها را مشخص می‌کند. اگر مسیر مشخص نشود، به صورت پیش فرض در مسیر مناسب سیستم‌عامل شما ذخیره می‌شود.--output یا -o: این پارامتر اختیاری است و مسیر پوشه‌ای که ویدیوها باید در آن ذخیره شوند را مشخص می‌کند. اگر مسیر مشخص نشود، ویدیوها در پوشه‌ای که دستور را از آنجا اجرا کرده‌اید، ذخیره می‌شوند.مثال‌های کاربردیدانلود ساده با آپشن های پیش فرضاگر قبلا با نام کاربری خود وارد مکتب‌خونه شده‌اید و کوکی‌ها را ذخیره کرده‌اید، می‌توانید با این دستور ساده ویدیوها را دانلود کنید:maktab-dl download -u [https maktabkhooneh org / course/ your-course-link]به عنوان مثال:maktab-dl download -u https maktabkhooneh org / course/ آموزش-سی-شارپ-c-mk9558/در این حالت، ویدیوها در پوشه‌ای که دستور را از آنجا اجرا کرده‌اید ذخیره می‌شوند و کوکی‌ها به‌صورت پیش فرض از مسیر سیستم عامل شما استفاده می شود.maktab-dl download command exampleدانلود با تعیین مسیر کوکی‌ها و خروجیاگر می‌خواهید کوکی‌ها را از مسیر خاصی بخوانید و ویدیوها را در پوشه دیگری ذخیره کنید، از این دستور استفاده کنید:maktab-dl download -u [https maktabkhooneh org / course/ your-course-link] -c /path/to/your/cookies json -o /path/to/your/output/folderورود برای اولین بار و ذخیره کوکی‌ها:اگر برای اولین بار از ابزار استفاده می‌کنید یا فایل کوکی موجود نباشد، از شما خواسته می‌شود نام کاربری و رمز عبور خود را وارد کنید. پس از ورود موفقیت آمیز، از شما پرسیده می‌شود آیا می خواهید کوکی را ذخیره کنید یا خیر. اگر کوکی موجود باشد، ولی نامعتبر باشد، از شما مجددا نام کاربری و پسورد خواسته می شود.maktab-dl download -u [https maktabkhooneh.org / course/ your-course-link] -c /path/to/my/invalid_cookie jsonاستفاده از مسیر نسبی برای کوکی هاmaktab-dl download -u [https maktabkhooneh.org / course/ your-course-link] -c ./ my_cookies json -o ./ videosاین دستور کوکی ها را در مسیر فعلی و ویدیوها را در پوشه videos در مسیر فعلی ذخیره می کند.راهنما:برای دیدن تمام آپشن‌ها و اطلاعات مربوط به پکیج می توانید از دستور زیر استفاده کنید:maktab-dl download --helpیاmaktab-dl --helpنکات مهمبرای دانلود ویدیوها، باید یک حساب کاربری در مکتب‌خونه داشته باشید. همچنین برای دانلود ویدئوی یک دوره، باید دسترسی(خریداری شده) به آن دوره نیز داشته باشید.اگر مسیر کوکی ها را مشخص نکنید، کوکی ها در مسیر مناسب سیستم عامل شما ذخیره می شود.اگر مسیر خروجی را مشخص نکنید، ویدیوها در مسیری ذخیره می شوند که دستور را از آنجا اجرا کرده‌اید.پکیج maktab-dl از کتابخانه‌های httpx ، lxml و pydantic استفاده می کند.maktab-dl github repo</description>
                <category>محمدرضا</category>
                <author>محمدرضا</author>
                <pubDate>Wed, 22 Jan 2025 16:36:57 +0330</pubDate>
            </item>
                    <item>
                <title>از تنبلی تا خودکارسازی: چگونه با هوش مصنوعی رزومه اختصاصی ساختم و ارسال کردم</title>
                <link>https://virgool.io/@code/resume-llm-vclgflpywkbd</link>
                <description>همه ما در مقطعی از زندگی به دنبال شغل بوده‌ایم و می‌دانیم که چقدر این فرآیند می‌تواند زمان‌بر و خسته‌کننده باشد. من هم از این قاعده مستثنی نبودم. اما یک تفاوت عمده داشتم: تنبلی! خب، شاید این کلمه کمی بی‌رحمانه باشد، اما اعتراف می‌کنم که انگیزه زیادی برای انجام دستی کارهای تکراری مثل پر کردن درخواست‌های آنلاین استخدام نداشتم. این شد که تصمیم گرفتم یک پروژه شخصی راه بیاندازم: ساخت یک سیستم خودکار برای ارسال رزومه. هدف این بود که از صفر تا صد کار، بدون دخالت مستقیم من انجام شود. در این مقاله، ماجرای این پروژه را با شما به اشتراک می‌گذارم.نمونه لاگ اجرای برنامهفاز اول: خزیدن در دنیای آگهی‌ها (Crawling)اولین قدم، جمع‌آوری آگهی‌های استخدامی بود. برای این کار، از یکی از پلتفرم‌های موجود استفاده کردم. خوشبختانه، این قسمت با وجود چالش‌هایی که داشت، با موفقیت انجام شد. پایگاه داده آگهی‌هایکی از مشکلات اذیت‌کننده، CDN بود که خوشبختانه قبلاً با یک تکنیک دیگر دور زده بودیم. برای اطلاع بیشتر از این موضوع، می‌توانید به این مخزن نگاهی بیندازید:مخزن گیت دور زدن cdnفاز دوم: معجزه مدل زبانی بزرگ(LLM) در ساخت رزومه‌های اختصاصیبعد از جمع‌آوری آگهی‌ها، نوبت به مرحله جذاب‌تر یعنی ساخت رزومه متناسب با هر آگهی می‌رسید. اینجاست که هوش مصنوعی وارد میدان شد. از بین مدل‌های مختلف، Gemini گوگل به دلیل API رایگان و کارآمدی که داشت، انتخاب شد. گوگل مستندات خوبی برای استفاده از این API در کتابخانه genai ارائه کرده، اما توصیه می‌کنم حتماً جایگزین‌های دیگر را هم بررسی کنید. اگر کنجکاو هستید، می‌توانید از Google AI Studio پرامپت مناسب برای Gemini را مهندسی کنید.صفحه Google AI Studioبرای اینکه بتوانم این قسمت را سریع‌تر راه بیاندازم، از یک سری پرامپت عجله‌ای و شاید کمی شلخته استفاده کردم. ایده اصلی این بود که رزومه اصلی من به صورت JSON در سیستم ذخیره شده باشد و بر اساس توضیحات آگهی، یک رزومه جدید به صورت PDF ساخته شود.نمونه رزومه اختصاصی 1نمونه رزومه اختصاصی 2 فاز سوم: ارسال خودکار رزومه‌ها، پایان کار؟فاز سوم و پایانی، ارسال خودکار رزومه‌ها در صفحات آگهی بود. این بخش هم با استفاده از کدنویسی و اسکرپینگ انجام شد. پیچیدگی این مرحله نسبت به دو مرحله قبلی کمتر بود، اما به جرات می‌توانم بگویم که نمود اصلی پروژه در همین بخش نمایان شد. پس از تکمیل این مراحل، سیستم من به صورت خودکار برای چند ده آگهی رزومه فرستاد.نمونه کد آپلود و ارسال رزومهکدها کجاست؟کل این پروژه به صورت یک اسکریپت منتشر شده و می‌توانید توضیحات نصب و اجرای آن را در گیت‌هاب پیدا کنید.گیت‌هاب پروژهدرس‌هایی که آموختم و چالش‌های پیش رو:با وجود موفقیت نسبی پروژه، چند نکته مهم وجود دارد که برای توسعه آن باید به آن‌ها توجه کرد:پروژه‌های مشابه خارجی(alternatives): بررسی پروژه‌های مشابه خارجی برای بهبود سیستم ضروری است. تفاوت‌ها و شباهت‌ها می‌تواند ایده‌های خوبی برای توسعه به ما بدهد.پلتفرم‌محور بودن(Generalized Platforms): در حال حاضر، سیستم ما برای هر پلتفرم به صورت جداگانه پیاده‌سازی می‌شود. یک معماری پلتفرم-آگنوستیک (مستقل از پلتفرم) می‌تواند بسیار مفید باشد.توهم مدل‌های زبانی(Hallucination): باید مراقب توهمات مدل‌های زبانی باشیم و یک حد مناسب برای تولید رزومه تعیین کنیم تا از ارائه اطلاعات نادرست و غیرواقعی جلوگیری شود. تنظیم هایپرپارامترهایی مانند temperature می‌تواند در این زمینه کمک کند.تولید خودکار تمپلیت(Intelligent Template Builder): در حال حاضر، از یک تمپلیت Markdown برای ساخت رزومه استفاده می‌شود، اما این تمپلیت هم می‌تواند به صورت هوشمند تولید شود.هوش مصنوعی عاملیت‌مند(Agentic AI): این پروژه با وجود استفاده از LLM برای هوشمندی، همچنان با هوش مصنوعی عاملیت‌مند یا Agentic AI فاصله دارد. به عنوان توسعه می‌توان با استفاده از تکنیک‌های جدید از وزن کدنویسی ایستای پروژه کاهید.انتقادات و پیشنهادات شما؟این پروژه برای من یک تجربه بسیار ارزشمند بود و امیدوارم برای شما هم مفید بوده باشد. اگر شما هم انتقاد یا پیشنهادی دارید، خوشحال می‌شوم در بخش نظرات با من در میان بگذارید.پاورقی فایل pdf تولید شده توسط اسکریپت</description>
                <category>محمدرضا</category>
                <author>محمدرضا</author>
                <pubDate>Tue, 14 Jan 2025 13:38:40 +0330</pubDate>
            </item>
            </channel>
</rss>