<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Knourian Blog</title><link>https://www.knourian.ir/fa/posts/</link><description>Knourian Blog</description><language>fa</language><atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="https://www.knourian.ir/fa/feed.xml" rel="self" type="application/rss+xml"/><item><title>CQRS حداقلی: مسیرهای کد را جدا کنید، یک برنامه و یک دیتابیس نگه دارید</title><link>https://www.knourian.ir/fa/posts/minimal-cqrs-one-application-one-database/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/minimal-cqrs-one-application-one-database/</guid><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>architecture</category><category>architecture</category><category>cqrs</category><category>cqs</category><category>dotnet</category><category>csharp</category><description>CQRS می‌تواند با مسیرهای جدا برای command و query در یک برنامه و با یک دیتابیس شروع شود. این مرز، پیش از آنکه زیرساختی باشد، مربوط به مسئولیت‌ها است.</description></item><item><title>CQS و commandها: کاری کنید برنامه هدف کاربر را بفهمد</title><link>https://www.knourian.ir/fa/posts/cqs-commands-make-intent-explicit/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/cqs-commands-make-intent-explicit/</guid><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>architecture</category><category>architecture</category><category>cqrs</category><category>cqs</category><category>dotnet</category><category>csharp</category><description>commandی که نامش رفتار موردنظر را روشن می‌کند، به برنامه می‌گوید کاربر چه می‌خواهد تا اعتبارسنجی، مجوزدهی و قوانین کسب‌وکار جای مشخصی داشته باشند.</description></item><item><title>وقتی CRUD دیگر زبان مناسبی برای مسئله نیست</title><link>https://www.knourian.ir/fa/posts/when-crud-stops-describing-the-work/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/when-crud-stops-describing-the-work/</guid><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>architecture</category><category>architecture</category><category>cqrs</category><category>cqs</category><category>dotnet</category><category>csharp</category><description>CRUD برای داده‌های ساده خوب جواب می‌دهد؛ اما وقتی updateها هدف کاربر را پنهان می‌کنند و read و write به مدل‌های متفاوت نیاز دارند، دیگر به‌تنهایی کافی نیست.</description></item><item><title>Async، concurrency و parallelism یکی نیستند</title><link>https://www.knourian.ir/fa/posts/async-concurrency-parallelism/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/async-concurrency-parallelism/</guid><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>software-development</category><category>csharp</category><category>dotnet</category><category>async</category><category>concurrency</category><category>parallelism</category><description>async از انتظارهای blocking جلوگیری می‌کند، concurrency کارهای هم‌پوشان را هماهنگ می‌کند و parallelism از چند هسته‌ی CPU استفاده می‌کند.</description></item><item><title>چرا برنامه‌نویسی async وجود دارد؟</title><link>https://www.knourian.ir/fa/posts/why-async-programming-exists/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/why-async-programming-exists/</guid><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>software-development</category><category>csharp</category><category>dotnet</category><category>async</category><description>برنامه‌نویسی async کمک می‌کند برنامه هنگام انتظار برای I/O همچنان کار مفید انجام دهد.</description></item><item><title>سه روش برای پاک‌سازی برنچ‌های محلی Git</title><link>https://www.knourian.ir/fa/posts/prune-gone-branches/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/prune-gone-branches/</guid><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>git</category><category>developer-productivity</category><category>workflow</category><description>برنچ‌های محلی Git را با پاک‌سازی هدفمند، حذف برنچ‌های Merge‌شده یا شروعی تازه مرتب نگه دارید.</description></item><item><title>ساخت این وبلاگ، بدون ساختن یک CMS</title><link>https://www.knourian.ir/fa/posts/building-this-blog/</link><guid isPermaLink="true">https://www.knourian.ir/fa/posts/building-this-blog/</guid><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>typescript</category><category>static-site</category><category>web-development</category><description>این وبلاگ استاتیک دوزبانه چطور Markdown و HTML قابل ویرایش را بدون دیتابیس یا فریم‌ورک فرانت‌اند به سایتی کوچک و قابل انتشار تبدیل می‌کند.</description></item></channel></rss>