<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Nejatians</title>
        <link>https://virgool.io/feed/@nejatian</link>
        <description>مسلط به Hello world در اکثر زبان‌های برنامه‌نویسی</description>
        <language>fa</language>
        <pubDate>2026-06-10 14:07:43</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3599/avatar/eLbmWG.png?height=120&amp;width=120</url>
            <title>Nejatians</title>
            <link>https://virgool.io/@nejatian</link>
        </image>

                    <item>
                <title>Hexagonal Architecture</title>
                <link>https://virgool.io/@nejatian/hexagonal-architecture-vsrs66imt2ij</link>
                <description>مقدمه:با وجود اینکه معماری hexagonal سالیان زیادی هست که وجود داره ولی من به این نتیجه رسیدم که منابع کمی برای پیاده‌سازی برنامه‌ها به روش این معماری وجود داره. هدف از این مقاله پیاده‌سازی یک وب‌اپلیکیشن با معماری ‌hexagonal  به وسلیه‌ی جاوا و فریم‌ورک اسپرینگ می‌باشد.پیشینه:معماری hexagonal یا ساختار ports and adapters یک الگوی معماری است که در طراحی نرم‌افزار با هدف ساختن سیستم‌ها به صورت Loosley coupled به کار می‌رود. به طور خلاصه این معماری قابلیت تست‌پذیری و قابلیت تغییر در کد را افزایش می‌دهد و قابلیت تغییر و یا جایگزینی بخشی از کد، ماژول و یا شئ‌ها رو برای برنامه‌نویس ساده‌تر می‌کند.معماری hexagonal توسط Alistair Cockburn به منظور جلوگیری از دام‌های ساختاری شناخته شده در طراحی سیستم‌های شئ‌گرا مثل وابستگی‌های ناخواسته بین لایه‌ها و همچنین ناخالصی کد رابط کاربری و منطق تجارت (business logic) ایجاد شده است و در سال ۲۰۰۵ منتشر شده است.اگر دوست داشتین که در این بحث عمیق‌تر یاد بگیرید خوندن این کتاب بهتون توصیه می‌شه.معماری hexagonal چیست؟ویژگی اصلی معماری hexagonal برخلاف معماری رایج لایه‌ای این است که وابستگی‌ها بین کامپوننت‌ها به داخل و به حوزه‌ی آبجکت اشاره می‌کنند:hexagonal archtectureهگزاگونال در واقع یک روش تصور شده برای توصیف هسته‌ی یک اپلیکیشن است که توسط دامین آبجکت‌ها، usecaseهایی که آن‌ها را عملیاتی می‌کنند و پورت‌های ‌input و output که یک رابط برای دستیابی به دنیای بیرون می‌باشند، است.بیایید یک نگاهی به هر یک از کلیشه‌های این معماری بیاندازیمدامین آبجکت‌ها:دامین آبجکت‌ها مثل آب حیات اپلیکیشن‌ می‌مانند چرا که تمامی قوانین و منطق بیزینس در آن‌ها پیاده‌سازی شده است. دامین آبجکت‌ها می‌توانند هم شامل حالت‌ها و هم شامل رفتار‌ها باشند. هرچقدر رفتارها به حالت‌ها نزدیک‌تر باشند کد آن راحت‌تر فهمیده و نگه‌داری و به‌روزرسانی می‌شود.دامین آبجکت‌ها هیچ وابستگی‌ای به بیرون ندارند. آن‌ها کد خالص جاوا هستند که یک API برای usecaseهایی که آن‌ها را عملیاتی می‌کنند، فراهم می‌کنند.چون دامین آبجکت‌ها هیچ وابستگی‌ای به لایه‌های دیگر ندارند، تغییرات در لایه‌های دیگر هیچ تاثیری روی آنها ندارد. آنها می‌توانند آزاد از وابستگی‌ها تکامل پیدا کنند. این بهترین مثال برای Single Responsibility principle (حرف S از SOLID) است، که بدین معناست که هر کامپوننت فقط باید یک دلیل برای تغییر داشته باشد. برای دامین آبجکت اون دلیل تغییر در نیازمندی‌های بیزینس می‌باشد. معماری هگزاگونال یک روش خوب برای تمرین Domain-Driven Design می‌باشد.ساختن یک دامین آبجکت:با ساختن یک دامین آبجکت که با نام ‌user profile شروع می‌کنیم:همین‌طور که در کد بالا می‌بینید هیچگونه وابستگی‌ای بین دامین آبجکت و سایر لایه‌های معماری وجود ندارد. البته در این کلاس پیچیدگی محاسباتی وجود نداره بنابریان کلاس فقط شامل فیلد‌ها مورد نیاز ساختن یک پروفایل می‌باشد و یک سازنده و setterها و getterهای مورد نیاز در آن به کار رفته است. در صورتی که بتوانید فیلدها رو به صورت Object value تعریف کنید ساختار برنامه بیشتر به سمت DDD می‌رود.ساختن پورت‌ها:برای ارتباط بین دامین و سایر لایه‌های معماری نیازمند پورت‌های خروجی به لایه‌ی persistence (برقراری ارتباط با دیتابیس) و ساختن پورت‌های ورودی برای برقراری ارتباط از لایه‌ی web که می‌تواند شامل کنترلر‌ها یا ‌sms یا هرگونه ارتباط خارجی دیگری باشد.در کد بالا پورت مربوط به برقراری ارتباط دامین و عوامل خارجی که پایین‌تر کدش رو توضیح می‌دم رو مشاهده می‌کنید. پیاده‌سازی این کد در لایه‌ی پورت‌های خروجی به سمت persitence اتفاق می‌افتد.ساختن لایه‌ی آداپتر:در بخشی از این لایه پیاده‌سازی کدهای مربوط به لایه‌ی پورت اتفاق می‌افتد و در بخشی دیگر ارتباط فضای بیرونی نرم‌افزار مثل کنترلرها و یا sms پیاده‌سازی می‌شوند.پیاده‌سازی کدهای لایه‌ی پورت نیازمند یک DTO (Data Transfer Object)  برای برقراری ارتباط با ریپازیتوری و لایه‌ی دیتابیس (persistence) می‌باشد.و بعد از آن نیازمند آن هستیم تا ارتباط این DTO را با دیتابیس به وسیله‌ی یک ریپازیتوری برقرار کنیم.و در نهایت در کلاسی که آن را آداپتر می‌نامیم، کدهایی که قبلا در پورت مربوط به دامین تعریف کرده بودیم را پیاده‌سازی و یا اصطلاحا override میکنیم.در نهایت لایه‌ی خارجی که در این مثال از کنترلر استفاده می‌شود را پیاده سازی می‌کنیم.همانطور که در کدهای بالا دیده می‌شود در این معماری ما مستقیما در لایه‌ی دامین تغییری ایجاد نمی‌کنیم و تمامی ارتباط‌های ما به صورت غیرمستقیم و به وسیله‌ی پورت‌ها و آداپترها کنترل می‌شوند.فولدربندی این معماری نیز به صورت زیر خواهد بود:البته این معماری برای CRUD ساده (چیزی که در مثال بالا می‌بینید) خیلی بهینه نیست و فقط باعث افزودن پیچیدگی به سیستم می‌شود، بهتره از این معماری در سیستم‌های بزرگ با بیزینس لاجیک‌های بیشتر در لایه‌ی دامین استفاده شود.</description>
                <category>Nejatians</category>
                <author>Nejatians</author>
                <pubDate>Mon, 07 Dec 2020 19:11:52 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش زبان انگلیسی - حروف ربط هم‌پایه</title>
                <link>https://virgool.io/@nejatian/coordinateconjuctions1-vg3df2ygbsnb</link>
                <description>چند روزی می‌شه که یه درس زبان تو سایت coursera برداشتم که نکات جالبش رو می‌خوام اینجا با شما درمیون بذارم.اسم این درس conjunctions connectives adverb clauses هست. تو این پست می‌خوام در مورد coordinate conjunctions صحبت کنم.حروف ربط هم‌پایهخب اول بریم سراغ اینکه اصلا حرف ربط چیه؟حرف ربط کلمه‌ای‌ست که عبارات، کلمات، اصطلاحات رو به هم متصل می‌کنه.تو این پست و احتمالا چند پست بعد می‌خوایم در مورد نوع خاصی از حروف ربط، حروف ربط هم‌پایه، صحبت کنیم.هفت مورد حرف ربط هم‌پایه وجود داره:andbutfornororyetsoیه راه آسون برای فراموش نکردنشون اینه که حروف اول این کلمه‌ها رو به هم وصل کنیم و کلمه‌ی fan boys  رو باهاش بسازیم.بذارید با رایج‌ترین حرف ربط، and، شروع کنیم. اینجا یه جمله برای مثال داریم:I ate a muffin, and I drank some tea.هر کدوم از حروف ربط هم‌پایه دو هدف رو دنبال می‌کنه؛ وصل کردن اطلاعات و نشان دادن رابطه‌ی بین دو یا چند چیز. در این مورد ما دو عبارت را به هم متصل کردیم و رابطه‌ی بین آن‌ها نشان دادن افزونگی (addition) است.توجه داشته باشید که وقتی دو عبارت مستقل رو به هم با حروف ربط هم‌پایه متصل می‌کنیم از یک ویرگول قبل از حروف ربط استفاده می‌کنیم.این پست ادامه خواهد داشت، منتظر نظراتتون هستم. :)</description>
                <category>Nejatians</category>
                <author>Nejatians</author>
                <pubDate>Tue, 12 May 2020 20:05:34 +0430</pubDate>
            </item>
                    <item>
                <title>نقطه سرِ خط</title>
                <link>https://virgool.io/@nejatian/dots-fnsr53mid0ch</link>
                <description>بعضی‌وقتا فکر می‌کنم که کاش می‌شد تو دنیای واقعی هم با گذاشتن یه نقطه‌ی ساده ته هرچیزی، اون مسئله رو تموم کرد.ولی زندگی واقعی نقطه براش تعریف نشده‌س، باید ته چیزایی که می‌خوای تموم شه دیوار بکشی. شاید بگی دیوار هم جواب نیست‌و ممکنه بری بالاش و به اون طرف سرک بکشی؛ باید بگم که بعضی‌وقتا حتی لازم می‌شه بالای اون دیوار سیم‌خاردار بکشی، سیم‌خاردار جواب نبود یه برجک بذاری توشم یه سرباز که هر موقع هوس اون‌ور زد به سرت با یه شات‌گان خلاصت کنه.خلاصه اینکه زندگیِ واقعی پیچیده‌تر از این حرفاست که با گذاشتن یه نقطه ته هرچیزی بتونی با اعتماد به نفس کامل داد بزنی نقطه‌ی پایان.</description>
                <category>Nejatians</category>
                <author>Nejatians</author>
                <pubDate>Sun, 13 May 2018 21:29:07 +0430</pubDate>
            </item>
                    <item>
                <title>چرا عاقل کند کاری که باز آرد پشیمانی؟</title>
                <link>https://virgool.io/@nejatian/regret-ng6j2xgxuicj</link>
                <description>خیلی وقتا شده که این ضرب‌المثل ذهنمو مشغول کرده و باعث شده ساعت‌ها بهش فکر کنم ولی بازم به هیچ نتیجه‌ای نرسم. اینکه یه کاریو انجام بدم ولی بعدا پشیمون بشم بهتره یا اینکه اون کارو انجام ندم و بعدا حسرتش رو بخورم.بعد برای خودم مثال میزنم، که اگه از فلان لباس خوشم بیاد و همون موقع نخرمش بعدا بیام سراغش ولی تموم شده باشه قطعا حسرت نخریدنش به دلم می‌مونه. یا مثال بهتر اینکه دوران کودکی و نوجوانی که همه‌ی دوستام هری‌پاتر می‌خوندن ولی من نمی‌خوندم الان تو دوران بزرگسالی حسرت لذت خوندن اون کتاب رو به دلم گذاشته در صورتی که اگه می‌خوندمش حتی اگه باب میلم هم نبود پشیمونی‌ای برای خوندنش حداقل نداشتم الان.حالا در مقابل این مثال‌ها، مثال‌های دیگه‌ای هم هست که نقض می‌کنه حرف‌هایی رو  که بالاتر زدم، مثلا موهامو کوتاه می‌کنم و دو روز بعدش از کرده‌ی خودم پشیمون میشم. یا مثلا پولی که به زحمت به دست آوردم رو صرف خرید چیزی می‌کنم که واقعا لازمش ندارم، یا نمونه‌ی ارزون‌ترش هم موجوده.حالا همین مثال‌ها رو بخوایم تعمیم بدیم به دنیای احساساتمون. مثلا شخصی که&quot; نباید&quot; رو دوست داشته باشیم. با شخصی که نباید باشیم، باشیم. همیشه این سوال ذهنمو درگیر خودش می‌کنه که اگه اون شخصی که نباید رو وارد زندگیم نکنم، آیا مثل لباسی که نخریدم و کتابی که نخوندم حسرتش رو خواهم خورد یا اگه وارد زندگیم بکنمش در آینده پشیمون می‌شم که چرا همچین‌کاری رو کردم؟ اون حسِ پشیمونی برام قابل تحمل‌تره و می‌تونم بعدا برای خودم توجیهش کنم یا اون حس حسرت رو؟</description>
                <category>Nejatians</category>
                <author>Nejatians</author>
                <pubDate>Sat, 24 Mar 2018 23:50:09 +0430</pubDate>
            </item>
                    <item>
                <title>هنر معمولی بودن</title>
                <link>https://virgool.io/@nejatian/theartofbeingnormal-jw214djx1ux0</link>
                <description> معمولی بودن در زندگی، می‌تواند سخت‌ترین وضعیت ممکن باشد.مثلا: شاگرد معمولی بودن، قیافه معمولی داشتن، دونده معمولی بودن، نقاش معمولی بودن، دانشجوی معمولی بودن، نویسنده معمولی بودن، معمولی ساز زدن و معمولی رقصیدن و معمولی جشن عروسی بر پاکردن، معمولی مهمانی دادن، فرزند معمولی داشتن و دوست‌دختر/پسر معمولی پیدا کردن!منظورم از &quot;معمولی&quot; همان است که عالی و ایده‌آل و منحصر به فرد و کمیاب و در پشت ابرها نیست، بلکه همین‌جا، روی زمین، کنار ما، فراوان و بسیار هست.فرهنگ ایده‌آل گرایی تیغ دولبه‌ای‌ست که هم انگیزه‌ای‌ست مثبت برای پیشرفت و هم می‌تواند شوق و ذوق فراوان آدمهای معمولی را شهید کند. من مثلا بعد از سالها با علاقه نقاشی کشیدن، روزی که فهمیدم در نقاشی خیلی معمولی‌ام برای همیشه نقاشی را کنار گذاشتم. این کنار کشیدن زمانی بود که همکلاسی دبیرستانم، در عرض دو دقیقه با مداد بی‌جانش، چهره معلم‌مان را کوبید کنار طرحی که من بیست دقیقه طول کشیده بود تا دزدکی در حاشیه جزوه از او بکشم.حقیقت این است که دوستم در نقاشی یک نابغه بود و تمرین و پی‌گیری من خیلی با نبوغ او فاصله داشت و من لذت نقاشی کشیدن را از خودم گرفتم تا خفت معمولی بودن را تحمل نکنم.آن روزها آنقدر ضعیف بودم که با شاخص‌های &quot;ترین&quot; زندگی کرده و خود را مقایسه می‌کردم. و این ترین بودن آدم را ضعیف و شکننده می‌کند.شاید همه آدمها اینطور نباشند. من اما، همیشه در درونم یک سوپر انسان داشته‌ام که می خواست اگر دست به گچ بزند، آن گچ حتماً طلا شود. یک توانای مطلق که در هیچ کاری حق معمولی بودن را ندارد.اما امروز فهمیده ام که معمولی بودن شجاعت می‌خواهد. آدم اگر یاد بگیرد معمولی باشد نه نقاشی را میگذارد کنار، نه دماغش را عمل می‌کند، نه غصه می‌خورد که ماشینش معمولی است، نه حق غذا خوردن در یک سری از رستوران‌های معمولی را از خودش می‌گیرد، نه حق لبخند زدن به یک سری آدم‌ها را، نه حق پوشیدن یک سری لباس‌ها را.حقیقت این است که &quot;ترین&quot; ها همیشه در هراس زندگی می‌کنند. هراس هبوط (سقوط) در لایه آدم‌های &quot;معمولی&quot;. و این هراس می تواند حتی لذت زندگی، نوشتن، درس خواندن، نقاشی کشیدن، ساز زدن، خوردن، نوشیدن و پوشیدن را از دماغشان دربیاورد.تصمیم گرفته‌ام خود معمولی‌ام را پرورش دهم. نمی‌خواهم دیگر آدم‌ها مرا فقط با &quot;ترین&quot; هایم به رسمیت بشناسند. از حالا خود معمولی‌ام را به معرض نمایش می‌گذارم و به خود معمولی‌ام عشق می‌ورزم و به آدم‌ها هم اجازه می‌دهم به من معمولی عشق بورزند.از طرف یک شهروند معمولینوشته از : خانم نازیلا صادقی</description>
                <category>Nejatians</category>
                <author>Nejatians</author>
                <pubDate>Tue, 20 Mar 2018 21:31:40 +0330</pubDate>
            </item>
            </channel>
</rss>