<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Ramin Alirezaee</title><link>https://virgool.ir/feed/@ramin.mjj</link><description></description><language>fa</language><pubDate>2026-11-11 03:32:01</pubDate><image><url>https://files.virgool.ir/upload/users/5851/avatar/blW9hY.png</url><title>Ramin Alirezaee</title><link>https://virgool.ir/@ramin.mjj</link></image><item><title>نوشتن Git Commit با AI بدون تحریم و رایگان</title><link>https://virgool.ir/@ramin.mjj/نوشتن-git-commit-با-ai-بدون-تحریم-و-رایگان-rihg3llsyctu</link><description>در این ویدیو یک ابزار منبع باز و رایگان معرفی کردم به نام SourceGit که به شما امکان میده برای نوشتن Git Commit از AI استفاده کنید؛ این برنامه کراس پلتفرم هست و به خوبی ویندوز، مک و لینوکس رو به خوبی پشتیبانی میکنه و برای اجراش نیاز به پیشنیاز خاصی نیست، فقط خود Git. سرویس‌های که ازشون در این برنامه استفاده کردم Hugging Face , GitHub و همینطور سرور شخصی Ollama بودند. امیدوارم که به کارهاتون سرعت و کیفیت بیشتری بده.  https://youtu.be/YovitFFNNhwGit Commit با هوش مصنوعی کاملا رایگان</description><category>Ramin Alirezaee</category><author>Ramin Alirezaee</author><pubDate>Sat, 21 Dec 2024 14:35:35 +0330</pubDate></item><item><title>نکات کتاب Programming C# X</title><link>https://virgool.ir/@ramin.mjj/نکات-کتاب-programming-c-x-gmvalfevhjj7</link><description>در طول دوره خودآموزی دوره C# در CS Internship پایان هر step ارائه‌ای صورت می‌گیرد. مطالعاتی که در این دوره گذروندم بر پایه کتاب Programming C# Ian Griffiths بود؛ عناوین ارائه‌ها هم بر اساس عناوین سرفصل‌های همین کتاب می‌باشد. علت انتخاب X بجای نسخه سی شارپ در عنوان این مطلب، به این خاطر هست که سعی کردم از نسخه 5 تا نسخه در حال نگارش این مطلب یعنی C# 12 مطالب رو برای این ارائه‌ها جمع‌آوری کنم.فصل اول و دوم: Introducing C# &amp; Basic Coding in C# (C# Introduction)در این ارائه فقط از خوبی‌های سی شارپ گفتم😅 و اینکه کجاها میتونیم از این زبان برنامه نویسی استفاده کنیم. بدون هیچ تعصبی انصافا امروزه C# تقریبا در هر زمینه‌ای از بازی سازی، وب، اپلیکیشن‌های دسکتاپ و موبایل، سرویس‌های مقیاس پذیر و ... میتونه جزء انتخاب‌های اول باشه.فصل سوم: Types (Types in C#)اینجا درباره Class و Struct گفتم و اینکه Value type با Reference type چه تفاوتهایی داره و به طور کلی به معرفی Typeهایی که به صورت گسترده در سی شارپ استفاده میشن پرداختم.فصل چهارم: Generics (Generics in C#)درک و استفاده صحیح از Genericها از اوجب واجبات هست، در این ارائه سعی کردم نشون بدم که Genericها چطور میتونن در توسعه و نگهداری کدها به ما کمک کنند و چه امکانات و محدودیت‌هایی دارن.فصل پنجم: Collections (Collections in C#)شناخت علت وجودی انواع مجموعه‌ در سی شارپ و اینکه کاربرد و مزایای هر کدام چیست به برنامه نویس کمک می‌کند که کد بهینه با پرفرمنس خوب و کم مصرف(حافظه) بنویسد. متاسفانه در زمان این ارائه C# 12 منتشر نشده بود، حتما مطالب مرتبط با تغییرات C# 12 رو مطالعه کنید، و برای مطالعه تکمیلی این مطلب توصیه میشه.فصل ششم: Inheritance (Inheritance in C#)ارث بری جزء اصول پایه‌ای هستش که در زبان‌هایی مثل سی شارپ که از OOP پشتیبانی می‌کنند باید آن را عمیقا فرا گرفت. در این ارائه یک اشاره کوچک هم به Covariant و Contravariant داشتم که پیشنهاد می‌کنم برای درک بهتر این دو مورد حتما مقاله مهران داودی رو مطالعه کنید.فصل هفتم: Object Lifetime (Object Lifetime in C#)زبان سی شارپ مثل هر زبان دیگه‌ای ساختار خودش رو برای مدیریت حافظه و نگهداری مقادیر داره. در این ارائه به چگونگی عملکرد Garbage Collector پرداخته شده. درک این بخش به شما کمک میکنه که از میزان مصرف حافظه در طول اجرای برنامه‌هاتون متعجب نشین و تصمیم درست تری در انتخاب و استفاده از اشیاء(objects) بگیرید.فصل هشتم: Exceptions (Exceptions in C#)از این مبحث به سادگی نگذرید. اگر می‌خواهید برنامه‌ای پایدار داشته باشید حتما این مبحث رو با جان و دل یاد بگیرید. مدیریت استثنا‌ها(خطاها) حداقل دو مزیت کلی دارد، اول اینکه به قول عموم مردم برنامه شما به یکباره بسته نمی‌شود و دوم اینکه می‌توانید به کمک لاگ کردن این استثناها متوجه شوید که چه اتفاقی در برنامه شما رخ داده است.فصل نهم: Delegates, Lambdas, and Events (Delegates in C#)اگر به مبحث فانکشنال پروگرمینگ علاقه مند هستید و می‌خواهید آن را در سی شارپ پیاده سازی کنید، این قسمت برای شماست. همینطور اگر برنامه نویس دسکتاپ هستید و می‌خواهید مطالعه‌ای درباره رویدادها(Events) داشته باشید مطالعه Delegateها در سی شارپ توصیه میشه.فصل دهم: LINQ (LINQ)این مبحث در واقع در ادامه مبحث Delegate هست و در این ارائه به چگونگی عملکرد LINQ به کمک برنامه LINQPad پرداخته شده است. مباحث تکمیلی این ارائه از کتاب C# 12 in a Nutshell گرفته شده است.فصل هجده: Asynchronous Language Features (Asynchronous Language Features)در این ارائه با یک مثال از یک برنامه دسکتاپی به کارکرد و تقاوت‌های Thread و Async پرداخته شد. و به مقوله مهم پاسخگو بودن برنامه به کاربر یا کاربران در حین انجام یک عملیات سنگین پرداخته شد.&#34;فصل‌های 11-17 جزء فصل‌های مطالعاتی نبودند.&#34;ارائه پایانی: New Features in C# 6-8آخرین ارائه مربوط می‌شد به مقالات منتشر شده در سایت مایکروسافت درباره تازه‌ها در سی شارپ در نسخه‌های منتشر شده از 6 تا 8 از جمله: tuples, pattern matching, span, nullable reference typesکلام آخر: به نظر من از لحاظ محتوا و نکاتی که در این کتاب به آن پرداخته شده بسیار غنی و عالی هستن به غیر از فصل 18. اما خواندن این کتاب بسیار سخت است و نویسنده از عبارات ادبی زیادی در یک کتاب فنی استفاده کرده و حتی در بخش‌ها از طنز استفاده کرده که خواندن را برای یک غیر انگلیسی زبان سخت و خسته کننده می‌کند. اما تجربه‌ای که طی 7 ماه مطالعه در دوره CS Internship داشتم به من ثابت کرد خواندن کتاب و رفرنس‌های اصلی بسیار به درک و یادگیری عمیق کمک می‌کند، البته به شرطی که این عبارت را در هنگام مطالعه از ذهن خود دور کنید: &#34;این رو که بلدم😈&#34;</description><category>Ramin Alirezaee</category><author>Ramin Alirezaee</author><pubDate>Fri, 05 Apr 2024 13:05:22 +0330</pubDate></item><item><title>آشنایی با مشکلات نصب Jekyll در WSL2 و رفع آنها</title><link>https://virgool.ir/@ramin.mjj/آشنایی-با-مشکلات-نصب-jekyll-در-wsl2-zxoh4az2ooh8</link><description>اولین مشکلی که شاید با اون برخورد کنید خطای عدم دسترسی به مسیر gemهای Ruby هستش. و اون هم چیزی نیست جز این خطا:You don&#39;t have write permissions for the /var/lib/gems/یک راه حل نا امن این هستش که به کاربر فعلی اجازه دسترسی root به اون مسیر رو بدید. به صورت زیر:sudo chown -R &lt;username&gt; /var/lib/gemsو اگر مسیر دیگری هم در هنگام نصب با خطای دسترسی مشاهده شد به همین روش دسترسی را تنظیم کنید.&#34;بجای username نام کاربری خود را وارد کنید، بدون علائم اطراف آن.&#34;روش دیگر نحوه متفاوت نصب Ruby هستش که از لحاظ امنیتی هم مشکلی نداره. این روش رو میتونید در این لینک مطالعه کنید: Upgrading WSL2 to Ubuntu 20.04 and running Jekyll (gardiner.net.au)مشکل بعدی که شاید پیش بیاد &#34;که صد البته برای من پیش اومد?&#34;، بعد از اجرای دستور jekyll serve در مرورگر وب درون ویندوز صفحه ساخته شده نمایش داده نمیشه. حالا چکار باید کرد؟اول یک سشن دیگه از WSL را اجرا کنید و دستور زیر را وارد کنید:curl http://127.0.0.1:4000اگر محتوای فایل صفحه اول را نمایش داد، یعنی اینکه مشکل از پورت 4000 در ویندوز هستش. برای اطمینان، دستور زیر را در محیط command ویندوز اجرا کنید:netsh int ipv4 show excludedportrange protocol=tcpاگر از شانس شما ویندوز در حال استفاده از رنج 4000 بود مثل تصویر زیر، میتونید از یکی از روش‌های زیر مشکل پورت رو برطرف کنید:۱- غیر فعال و فعال کردن آداپتور شبکه مورد استفاده(Ethernet, Wifi)۲- اجرای دستور net start winnat و بعد net stop winnat با دسترسی مجوز Administrator۳- ویندوز رو restart کنید ۴- پورت اجرا شدن jekyll رو تغییر بدیدفهرست پورت‌های مورد استفاده ویندوزبا توجه به پورت‌های مورد استفاده یک پورت آزاد انتخاب کنید و دستور زیر را اجرا کنید:jekyll serve -P 4070من در این مثال از پورت 4070 استفاده کردم که در فهرست پورت‌های مورد استفاده قرار نداشت.نکته: اگر به هر دلیلی نیاز شد WSL را مجدد اجرا کنید از دستور زیر در محیط command ویندوز استفاده کنید:wsl --shutdown</description><category>Ramin Alirezaee</category><author>Ramin Alirezaee</author><pubDate>Tue, 05 Apr 2022 16:34:02 +0430</pubDate></item><item><title>ایجاد پروژه با react و TypeScript</title><link>https://virgool.ir/iran-react-community/ایجاد-پروژه-با-react-و-typescript-llj66r8wpqsg</link><description>react + TypeScriptبرای من که سالهاست با #C کار می‌کنم، شروع کار در دنیای javascript با TypeScript یک نعمت هستش. من سال پیش همین موقع میخواستم UI یکی از محصولات رو با react انجام بدم. اما وقتی دیدم react در اون زمان بصورت پیشفرض فقط از javascript پشتیبانی میکنه و همچنین نگران دیباگ پروژه در زمانی که پروژه وسعت پیدا میکرد بودم، بی‌خیال react شدم. اما الان با پیشرفت‌هایی که react و TypeScript داشته میشه دست بکار شد.من برای دستگرمی اومدم یک پروژه آزمایشی طبق مستندات react برای ایجاد یک پروژه با TypeScript را شروع کردم.اول از همه باید در یک پوشه(Folder) که میخواستم پروژه را در آن بسازم دستور(Command) زیر را وارد می‌کردم. &#34;قبل از اجرای فرمان زیر مطمئن بشید که نسخه نصب شده npm بر روی سیستم 5.2+ باشه&#34;npx create-react-app my-app --typescriptبعد از کلی انتظار ایجاد پروژه تمام شد، من جهت بررسی فایلها و پوشه‌ها را نگاه کردم اما هیچ اثری از TypeScript در پروژه نبود!!!فکر کردم شاید من جایی رو اشتباه کردم یا در تایپ خط فرمان سوئیچ رو درست ننوشتم. پس دوباره با یک کپی پیست دستور رو مجدد اجرا کردم، باز هم نتیجه مثل قبل بود و پروژه بر اساس javascript پیاده سازی شده بود.دستور رو با پکیج منیجرهای yarn و npm هم اجرا کردم، مستندات مخزن create-react-app رو هم کامل خوندم، به فهرست issue مخزن هم نگاه کردم، مواردی که مطرح شده مربوط به نسخه‌ی پیشین 2.1 create-react-app بود که به کار من نمی‌اومد.رفتم سراغ مستندات npx چیز خاصی نبود، اما یک عبارت توجه من رو جلب کرد، npx به اینصورت عمل میکنه که ابتدا برای اجرا دنبال پکیج نصب شده محلی می‌گرده اگر چیزی پیدا نکرد آخرین نسخه پایدار رو آنلاین دریافت و اجرا میکنه. یکدفعه به یاد سال گذشته افتادم و فکر کردم احتمالا نسخه قدیمی create-react-app روی سیستم نصبه، جهت اطمینان دستور زیر رو وارد کردم تا ببینم آیا این پکیج نصبه و اگر نصب هستش چه نسخه‌ای نصب هست.create-react-app --versionدیدم بله نسخه 1.5.6 نصبه ?پس تصمیم گرفتم این پکیج رو آپدیت کنم، دستور زیر رو وارد کردم.npm update -g create-react-appخوب نتیجه مورد انتظار رخ نداد و پکیج آپدیت نشد??پس با توجه به نوع رفتار npx تصمیم گرفتم این پکیج رو حذف کنم. &#34;اصلا چه کاریه؟!!!? وقتی همیشه میشه آخرین نسخه رو آنلاین اجرا کرد&#34;. دستور حذف رو بصورت زیر وارد کردم. npm uninstall -g create-react-appجهت اطمینان تست کردم ببینم این پکیج نصب هستش یا نه که فرمان بررسی نسخه رو وارد کردم. خوشبختانه پکیج حذف شده بود و نتیجه نشون میداد که چنین فرمانی قابل اجرا نیست. در آخر دوباره دستور ایجاد پروژه به کمک npx رو وارد کردم.npx create-react-app my-app --typescriptبعد از یک انتظار کشنده و کلی بالا و پایین زدن خلاصه پروژه react با TypeScript ایجاد شد???</description><category>Ramin Alirezaee</category><author>Ramin Alirezaee</author><pubDate>Fri, 11 Jan 2019 21:52:53 +0330</pubDate></item></channel></rss>