<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مجید ده نمکی</title>
        <link>https://virgool.io/feed/@MajidDehnamaki</link>
        <description>یه برنامه نویس ساده که سعی میکنه از تمام خطهای کدش لذت ببره</description>
        <language>fa</language>
        <pubDate>2026-06-08 02:30:32</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/40983/avatar/5lkZlP.jpg?height=120&amp;width=120</url>
            <title>مجید ده نمکی</title>
            <link>https://virgool.io/@MajidDehnamaki</link>
        </image>

                    <item>
                <title>سه اصل معروف و مهم در برنامه نویسی</title>
                <link>https://virgool.io/@MajidDehnamaki/%D8%B3%D9%87-%D8%A7%D8%B5%D9%84-%D9%85%D8%B9%D8%B1%D9%88%D9%81-%D9%88-%D9%85%D9%87%D9%85-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-nthvkws8g4xy</link>
                <description>اصول مهم برنامه نویسیاصل DRY یا Don’t Repeat Yourselfاین اصل یک اصل ساده و کلی هستش اما رعایت کردنش و تو ذهن نگه داشتنش بهتون کمک زیادی میکنه تا بتونید کد تمیزتر و قشنگتری بزنید.مطمئنا تا حالا بارها به کدهای تکراری تو برنامتون رسیدید که هرچی فکر میکنید نمیفهمید خب چرا دوبار نوشته شده.این اصل دقیقا همین مفهومو به شما یادآوری میکنه و ازتون میخواد که کدهای تکراری ننویسید.چرا اینکار بده؟چون شما بیخودی داری حجم کدتو زیاد میکنی و اگر بعدا متوجه بهشی تو یه بخش این کد خطا داشتی باید به تعداد باری که تکرارش کردی بگردی و درستشون کنی.استفاده درست از ارث بری یکی از راههای رعایت این اصل هستش و البته یادتون باشه اینکه کداتونو تکرار نکنید همیشه خوب نیست و مثلا اگر از یه لایه ای یه متد رو بیاری تو یه لایه دیگه و ساختار پروژه رو بشکونی فقط به خاطر رعایت این اصل کار اشتباهیه.پس هیچوقت یه کد رو چندبار ننویس!!اصل KISS یا Keep it Simple,Stupidهمونطور که از اسم این اصل معروفه،این اصل با هیچکس شوخی نداره و حسابی جدی هستش.این اصل حرفش یه چیزه و اونو خیلی ساده بیان میکنه،&quot;ساده نگهش دار احمق&quot;.هدف این اصل اینه که شما به جای نوشتن کدهای پیچیده و تو در تو کدهای ساده بزنید،متدهای کوچیک بنویسیم،هر متدی کار مشخصی بکنه و فقط تمرکزش رو حل کردن یه مشکل باشه.شاید بگید خب متد های بزرگ و پیچیده رو چیکار کنیم،خب سادس.تو همون متدهای بزرگ از همین متدهای کوچیک و تک کاره استفاده کنید.یادمون باشه که درسته روز به روز پروژه های پیچیده تر و بزرگتر میشه ولی هرچقدر بتونیم ساده تر نگه داریم کدامونو عمر کدمون و کیفیتشو بیشتر میکنیم.اصل YAGNI یا You aren’t Gonna Need Itاین اصل خیلی اصل مهمی است که شاید برنامه نویسان زیادی با آن درگیر هستند.این اصل یک مفهوم ساده دارد:از تلاش بیهوده روی ویژگیهای که فرض میکنید شاید نیاز باشد دست نگه دارید.این که اکثر برنامه نویسان ساعتهای زیاد و تعداد خطهای کد زیادی را صرف مورادی میکنند که شاید هیچوقت نیازشان نشود حتی اگر این ویژگیها،ویژگیهای جذابی باشند کار اشتباهی است.این کار باعث میشود شما اصول مهم و پایه ای نرم افزار خود را قربانی ویژگیهایی که اصلا نیازی نیست بکنید و روند کد نویسی و توسعه را به شدت کند کنید.برای اینکه بتونید همیشه این اصل را انجام دهید یک تمرین ساده نیاز است،هر وقت خواستید کدی بزنید یک سوال از خود بپرسید&quot;آیا این ساده ترین چیزی است که الان میتواند کار کند؟&quot;نتیجه گیریدر دنیای برنامه نویسی اصول زیادی برای تمیز و خوب نگه داشتن کدها هست،اصولی که رعایت آنها به شما کمک میکنند که بتوانید کیفیت متفاوتی از یک برنامه را نشان دهید.این سه اصل یکی از ساده ترین و در عین حال یکی از تاثیر گذارترین اصولی است که در برنامه نویسی میتواند به شما کمک کند.</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Sat, 08 Jul 2023 13:28:04 +0330</pubDate>
            </item>
                    <item>
                <title>هشت الگوریتمی که به عنوان برنامه نویس باید بلد باشید(قسمت اول)</title>
                <link>https://virgool.io/@MajidDehnamaki/%D9%87%D8%B4%D8%AA-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85%DB%8C-%DA%A9%D9%87-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%84%D8%AF-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-alh4fcktgq3e</link>
                <description>الگوریتم به عنوان یک عنصر بسیار مهم در دنیای دیجیتال در حالتی گاهی برای بسیاری از ما ممکن است مبهم و پیچیده به نظر برسد. اما در واقع، الگوریتم ها بیش از آنچیزی که به نظر می رسد، ما را در زندگی روزمره و حتی در انجام فعالیت های روزانه یاری می کنند. الگوریتم ها نقش بسیار مهمی در علوم کامپیوتر، ریاضیات و حتی در زندگی روزمره ما ایفا می کنند.اگر به دنیای برنامه‌نویسی و علوم کامپیوتر وارد شده باشید، حتما با مفهوم الگوریتم آشنا هستید. الگوریتم‌ها در برنامه‌نویسی اساسی‌ترین ابزارهایی هستند که برنامه‌نویسان برای حل مسائل و انجام برنامه‌های خود استفاده می‌کنند.اما الگوریتم واقعا چیست؟الگوریتم مجموعه ای از دستورالعمل ها یا رویه ای برای حل یک مسئله خاص یا دستیابی به یک کار خاص است. الگوریتم‌ها را می‌توان در هر زبان برنامه‌نویسی بیان کرد و می‌تواند به سادگی دنباله‌ای از عملیات اصلی یا به پیچیدگی یک فرآیند چند مرحله‌ای شامل ساختارهای داده و منطق مختلف باشد. هدف اصلی یک الگوریتم دریافت ورودی، پردازش آن و ارائه خروجی مورد انتظار است. الگوریتم ها را می توان بر اساس پیچیدگی زمانی و مکانی، تکنیک مورد استفاده برای حل مسئله و نوع مسئله ای که حل می کند طبقه بندی کرد. نمونه‌هایی از الگوریتم‌ها عبارتند از مرتب‌سازی، جستجو، پیمایش نمودار، دستکاری رشته‌ها، عملیات ریاضی و بسیاری موارد دیگر...برای درک بهتر الگوریتم، می توانید آن را با یک دستورالعمل قابل اجرا برای حل یک مسئله تصور کنید. به عنوان مثال ساده، فرض کنید می خواهید مسئله تعیین بزرگترین عدد در یک لیست اعداد را حل کنید. یک الگوریتم ساده برای حل این مسئله می تواند شامل مراحل زیر باشد:1. ایجاد متغیری به نامmax و مقدار دهی اولیه آن با اولین عضو لیست. 2. بررسی هر عضو در لیست و مقایسه آن با مقدار فعلی max. 3. اگر عضو بررسی شده بزرگتر از max بود آن عضو جایگزین عضو قبلی میشود.هشت الگوریتم که در مورد آن صحبت میکنیم!1-الگوریتم مرتب سازی(Sorting algorithms)مرتب سازی یک عملیات اسای در علوم کامپیوتر است و چندین الگوریتم کارآمد مانند مرتب سازی سریع،مرتب سازی ادغامی و مرتب سازی هرمی برای آن وجود دارد.2-الگوریتم جستجو(Searching algorithms)جستجوی یک عنصر در یک مجموعه بزرگ از داده کار رایجی است و چندین الگوریتم کارآمد برای آن وجود دارد مانند جستجوی باینری و جستجوی جداول هش.3-الگوریتم گراف(Graph algorithms)الگوریتم گراف در علوم کامپیوتر و ریاضیات یک مجموعه از قوانین و مراحل مشخص است که برای حل مسائل مرتبط با گراف ها استفاده می شود. گراف یک ساختار داده است که شامل گره ها (نقاط) و یال ها (رؤوس) است که بین گره ها ارتباط برقرار می کنند. الگوریتم های گراف در بسیاری از زمینه ها مانند شبکه های اجتماعی، جستجو در وب، مسائل روتینگ در شبکه ها، نقشه برداری، برنامه ریزی ترافیک و غیره استفاده می شوند.4-برنامه نویسی پویا(Dynamic programming)برنامه نویسی پویا تکنیکی است برای حل مسائل از طریق تجزیه آنها به مسائل فرعی کوچکتر و ذخیره راه حل های این مسائل فرعی برای جلوگیری از محاسبات اضافی .5-الگوریتم‌های حریصانه(Greedy algorithms)الگوریتم های حریصانه به الگوریتم هایی اطلاق می شود که در هر مرحله بهترین تصمیم را می گیرند بدون آنکه تاثیر آن را بر روی مراحل بعدی در نظر بگیرند. این الگوریتم ها به صورت مستقل و هر مرحله را به عنوان یک مسئله مجزا حل می کنند و بهترین راه حل ممکن برای آن مسئله را ارائه می دهند.6-الگوریتم تقسیم و حل(Divide and Conquer algorithms)الگوریتم‌های تقسیم و حل یک روش حل مسائل محاسباتی هستند که براساس تقسیم مسئله به بخش‌های کوچکتر و حل هر بخش به صورت جداگانه عمل می‌کنند. این روش بر مبنای ایده‌ای به نام تقسیم و حل در ریاضیات استوار است که می‌گوید می‌توان مسئله‌های پیچیده‌تر را با تقسیم آن‌ها به قطعات کوچکتر و حل جداگانه آن‌ها ساده‌تر حل کرد.7-الگوریتم عقب گرد یا بازگشت به عقب(Backtracking programming)الگوریتم عقبگرد یکی از الگوریتم‌های مهم در علم کامپیوتر است که به صورت گسترده در برنامه‌نویسی استفاده می‌شود. این الگوریتم به راحتی قابل فهم است و برخلاف دیگر الگوریتم‌ها، قابلیت اجرای سریع را دارد. مفهوم اصلی الگوریتم عقبگرد به این شکل است که ما در حالی که به جلو می‌رویم، از نقطه‌ی پایان به عقب برمی‌گردیم و مجددا به مبدا بازمی‌گردیم. .8-الگوریتم تصادفی(Randomized algorithms)یک راه حل جذاب برای مسائلی که نیاز به تصمیم‌گیری‌های تصادفی دارند در دنیای هوش مصنوعی و علم داده‌ها، مسائلی وجود دارند که نیاز به تصمیم‌گیری‌های تصادفی دارند. از مثال‌هایی که به ذهن می‌رسد می‌توان به مسئله پیدا کردن مسیر کوتاهتر برای یک راننده تا مسائلی که مربوط به پیش‌بینی افتراقی هواشناسی است اشاره کرد. یک راه حل جذاب برای رسیدن به پاسخ اینگونه مسائل، استفاده از الگوریتم تصادفی است.نتیجه گیریالگوریتم ها بخش جدانشدنی دنیای ریاضیات و برنامه نویسی هستند،در نگاه اول این الگوریتم ها برای برنامه نویسان تازه کار بسیار بی اهمیت و بدون استفاده است اما با بالاتر رفتن تجربه متوجه میشوید بدون داشتن دانش کافی راجب الگوریتم کار سختی را پیش رو خواهید داشت.در سری های بعد این سری مقاله هر کدام از این الگوریتم ها را به صورت جزیی توضیح خواهم داد.</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Tue, 04 Jul 2023 12:26:58 +0330</pubDate>
            </item>
                    <item>
                <title>تمرین کد تمیز: راهکارها و بهترین روش‌ها برای کدنویسی بهینه</title>
                <link>https://virgool.io/@MajidDehnamaki/%D8%AA%D9%85%D8%B1%DB%8C%D9%86-%DA%A9%D8%AF-%D8%AA%D9%85%DB%8C%D8%B2-%D8%B1%D8%A7%D9%87%DA%A9%D8%A7%D8%B1%D9%87%D8%A7-%D9%88-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D9%87%DB%8C%D9%86%D9%87-xekj9sjqdaxq</link>
                <description>تمرین کد تمیزکدنویسی بهینهکدنویسی بهینه یا تمرین کد تمیز، یکی از اصول مهم در توسعه نرم‌افزار است که با استفاده از راهکارها و بهترین روش‌ها، کد را قابل فهم، قابل نگهداری و قابل توسعه می‌کند. کدنویسی بهینه، از تکنیک‌هایی مانند استفاده از نام‌گذاری مناسب، استفاده از توابع کوچک و قابل استفاده مجدد، تست و عیب‌یابی منظم و مستمر و استفاده از توضیحات مناسب برای کدها استفاده می‌کند. در این مقاله، به بررسی راهکارها و بهترین روش‌های کدنویسی بهینه پرداخته خواهد شد.راهکارهای عملی برای تمرین کد تمیزبا توجه به راهکارهای عملی برای تمرین کد تمیز، می‌توان به بهترین روش‌ها و تکنیک‌های مربوط به کدنویسی بهینه اشاره کرد. تمرین کد تمیز می‌تواند فرآیندی پرچالش باشد، اما با استفاده از راهکارهای مناسب، می‌توان به بهبود کیفیت کد و بهبود عمل‌کرد برنامه رسید.یکی از اصول اساسی برای تمرین کد تمیز، استفاده از نام‌گذاری معنادار برای متغیرها و توابع است. استفاده از نام‌های توصیفی و شفاف برای متغیرها و توابع، به خوانایی کد کمک می‌کند و بهبود قابل‌توجهی در خوانایی و قابلیت درک کد ایجاد می‌کند.یک راهکار دیگر برای تمرین کد تمیز، استفاده از توابع کوچک و قابل استفاده مجدد است. تقسیم برنامه به توابع کوچک و قابل استفاده مجدد، به ما کمک می‌کند تا کد را به صورت قابل مدیریت‌تر و خواناتر بنویسیم. همچنین، این روش به ما اجازه می‌دهد تا از کدهای تکراری جلوگیری کنیم و به بهبود کارایی برنامه برسیم.بهبود خوانایی کد، یکی از مهمترین راهکارهای تمرین کد تمیز است. استفاده از فضاهای خالی و توسعه‌دهنده برای مرتب‌سازی کد، به خوانایی آن کمک می‌کند و برای برنامه نویسان دیگر قابل درک‌تر است. همچنین، استفاده از توضیحات و توضیحات مناسب برای قطعات کد، به کاربران دیگر کمک می‌کند تا به راحتی کد را درک کنند و از آن استفاده کنند.یکی دیگر از راهکارهای عملی برای تمرین کد تمیز، استفاده از unit test است. ایجاد unit test برای کدها، به ما کمک می‌کند تا از عمل‌کرد صحیح برنامه اطمینان حاصل کنیم و از وجود خطاها در کد جلوگیری کنیم. همچنین، یونیت تست به ما کمک می‌کنند تا در صورت اعمال تغییرات در کد، از عمل‌کرد صحیح برنامه اطمینان حاصل کنیم.در نهایت، استفاده از ابزارها و تکنولوژی‌های مناسب در تمرین کد تمیز نیز می‌تواند مفید باشد. استفاده از ابزارها و تکنولوژی‌هایی مانند IDE ها، ابزارهای تحلیل کد و ابزارهای حفاظت از کد، به ما کمک می‌کند تا به‌طور موثر‌تری کد بنویسیم و به کیفیت بالاتری دست پیدا کنیم.با استفاده از راهکارهای عملی برای تمرین کد تمیز، می‌توان به نتایج مثبتی در کدنویسی بهینه دست یافت. این راهکارها شامل استفاده از نامگذاری معنادار، استفاده از توابع کوچک و قابل استفاده مجدد، بهبود خوانایی کد، استفاده از تست‌های واحد و استفاده از ابزارها و تکنولوژی‌های مناسب است. با رعایت این راهکارها، می‌توان به کدنویسی بهتر و بهینه‌تر دست یافت.تکنیک‌های حرفه‌ای برای کد نویسی بهینهتمرین کد تمیز: راهکارها و بهترین روش‌ها برای کدنویسی بهینهدر دنیای توسعه نرم‌افزار، کدنویسی بهینه و تمیز از اهمیت بسیاری برخوردار است. تمرکز بر کدنویسی بهینه می‌تواند باعث بهبود عمل‌کرد و قابلیت اطمینان نرم‌افزار شود و همچنین زمان و هزینه‌های توسعه را کاهش دهد. در این مقاله، به بررسی تکنیک‌های حرفه‌ای برای کدنویسی بهینه می‌پردازیم.تکنیک اول، استفاده از نامگذاری مناسب متغیرها و توابع است. نامگذاری مناسب به ما کمک می‌کند تا کد را بهتر درک کنیم و در برقراری ارتباط با تیم توسعه و نگهداری نرم‌افزار بهتر عمل کنیم. بهتر است از نام‌های کوتاه و مفهومی استفاده کنیم و از استفاده از اعداد و حروف غیرضروری پرهیز کنیم.تکنیک دوم، استفاده از توابع کوچک و تکرار‌پذیر است. استفاده از توابع کوچک و قابل استفاده مجدد، کد را بهبود می‌بخشد و قابلیت خوانایی و نگهداری آن را افزایش می‌دهد. همچنین، تکرار‌پذیری کد به ما کمک می‌کند تا قطعات کد مشابه را مجددا نوشته و تکرار نکنیم.تکنیک سوم، استفاده از توضیحات کد مناسب است. توضیحات کد به ما کمک می‌کند تا قطعات کد را بهتر درک کنیم و در صورت نیاز به تغییرات و بهبودها، به راحتی آن‌ها را انجام دهیم. استفاده از توضیحات مناسب و مفهومی، همکاران توسعه را در درک کد کمک می‌کند و توسعه نرم‌افزار را سریع‌تر و آسان‌تر می‌کند.تکنیک چهارم، استفاده از ابزارهای خودکارسازی است. ابزارهای خودکارسازی می‌توانند به ما در بهبود کیفیت کد و کاهش خطاها کمک کنند. استفاده از این ابزارها برای آنالیز کد و یافتن اشکالات و بهبودها، زمان توسعه را کاهش می‌دهد و به ما کمک می‌کند تا به کدنویسی بهینه‌تری برسیم.با استفاده از تکنیک‌های حرفه‌ای برای کدنویسی بهینه، می‌توانیم نرم‌افزارهای با عمل‌کرد بهتر و کاهش هزینه‌های توسعه را تولید کنیم. همچنین، این تکنیک‌ها به ما کمک می‌کنند تا کد را بهبود دهیم و قابلیت خوانایی و نگهداری آن را افزایش دهیم. استفاده از توابع کوچک، توضیحات مناسب و ابزارهای خودکارسازی، از جمله راهکارهایی هستند که می‌توانند بهبود کدنویسی را فراهم کنند.نتیجه گیریبا توجه به راهکارهای عملی برای تمرین کد تمیز و اشاره به بهترین روش‌ها و تکنیک‌های مربوط به کدنویسی بهینه، می‌توانیم به نتایج مثبتی در کدنویسی بهینه دست یابیم. استفاده از ابزارها و تکنولوژی‌هایی مانند IDE ها، ابزارهای تحلیل کد و ابزارهای حفاظت از کد، به ما کمک می‌کند تا به‌طور موثر‌تری کد بنویسیم و به کیفیت بالاتری دست پیدا کنیم. استفاده از این ابزارها برای آنالیز کد و یافتن اشکالات و بهبودها، زمان توسعه را کاهش می‌دهد و به ما کمک می‌کند تا به کدنویسی بهینه‌تری برسیم. همچنین، با استفاده از تکنیک‌های حرفه‌ای برای کدنویسی بهینه، می‌توانیم نرم‌افزارهای با عمل‌کرد بهتر و کاهش هزینه‌های توسعه را تولید کنیم. برای تقویت راهکارهای کد تمیز و بهینه در تمرین کد تمیز، بهترین روش‌ها و تکنیک‌هایی وجود دارد که می‌تواند به شما در بهبود کیفیت کد و افزایش بهره‌وری کمک کند. استفاده از فضای سفید مناسب، ترتیب مناسب قطعات کد و استفاده از علامت‌گذاری صحیح، به کد تمیز شما کمک خواهد کرد. در نهایت، با پیروی از این راهکارها و استفاده از بهترین روش‌ها و تکنیک‌ها، می‌توانیم به کدنویسی بهینه‌تری دست پیدا کنیم و نرم‌افزارهای با کیفیت و عمل‌کرد بالا تولید کنیم.در نهایت پیشنهاد میکنم کتاب Clean code-Robert c.Martin برای درک عمیق اهمیت این مساله مطالعه شود.</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Sat, 01 Jul 2023 11:59:56 +0330</pubDate>
            </item>
                    <item>
                <title>روز من،روز تو،روز برنامه نویس</title>
                <link>https://virgool.io/@MajidDehnamaki/%D8%B1%D9%88%D8%B2-%D9%85%D9%86%D8%B1%D9%88%D8%B2-%D8%AA%D9%88%D8%B1%D9%88%D8%B2-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-kumnncmdtbwx</link>
                <description>روز برنامه نویس مبارکروزی که برای اولین بار با دنیای برنامه نویسی آشنا شدم،دقیقا مثل این بود که دری به روی دنیای نارنیا پیدا کرده ام؛همانقدر جذاب و همانقدر ترسناک.همه چیز جذاب و ساده بود،از نمایش یک سری کاراکتر ساده در خروجی تا ساخت ماشین حسابهای ساده و پیش پا افتاده باعث میشد جذابیت آن چند برابر شود.همان موقع بود که تصمیم گرفتم برنامه نویس ماهری بشوم تا با همین تخصص دنیا را متحول کنم،چه خیال خامی!با تمام مشکلات نیمی از عمر را صرف زل زدن به صفحه ی مستطیلی و خط نوشته های نامفهموی که هیچکس جز خودم نمیفهمیدشان گذشت.مشکلات هیچوقت تمامی نداشتند،از تمام شدن کارت های اینترنت اینترنت جام جهان نما و صدای عجیب مودم دیال آپ تا نبود منابع داده ی کافی و قابل فهم برای یادگیری؛حتی کسی نبود که بتوانی ازش سوال بپرسی و با یک نکته ی خیلی ساده از چاه مشکلات بیرون بیایی.قضاوت دیگران هم بماند،چون از نظر دیگران ما جز بازی کردن و تلف کردن وقت کار دیگری نمیکردیم.با همه ی این مشکلات باز هم تلاش کردم،روزها یک زندگی عادی و شبها یک زندگی مخفیانه که شامل ساعتها نشستن و زل زدن به کدهای درهم و برهم و تست آنها بود؛اما هنوز جذاب بود و نمیتوانستم از آنها بگذرم.شاید آن خطها جادویی بودن و من را جادو کرده بودن.روزها میگذشت و من کم کم نتیجه ی تلاش های خود را میدیدم،من در حال خلق نیازهای دنیای خود بودم و این خیلی خوب بود.اولین باری که توانستم از برنامه نویسی منفعتی داشته باشم را فراموش نمیکنم،زمانیکه با استفاده از زبان VB یک نرم افزار نوشتم که در آن نام افراد را مینوشتم و اسم را به صورت ال ای دی به نمایش در می آورد.با همین کار ساده موفق شدم از یک معلم نمره ی قبولی در درسم را بگیرم،آنجا بود که به خودم گفتم پس میشود از اینکار سود برد.تازه وارد دانشگاه شده بودم که شروع کردم به پیدا کردن شغل مرتبط با تخصصم،اما هیچ چیز شبیه تفکراتم نبود.برای برنامه نویس جماعت کار زیادی نبود اگر هم بود انقدر سخت گیرانه بود که با برده داری تفاوتی نمیکرد؛آن زمان اینگونه بود که برای کار کردن در معدود موقعیت های شغلی برای یک برنامه نویس شروط سنگینی میگذاشتن.گرفتن ضمانت های سنگین،تعیین دوره های کارآموزی طولانی مدت بدون حقوق،حقوق های خیلی پایین و هزار بدبختی دیگر؛اما همه اینها نمیتوانست باعث بشود که بیخیال این کار بشویم و ما تمام شرایط سخت کار را میپذیرفتیم تا بتوانیم به عشق خود برسیم.بالاخره به سختی کار پیدا کردم و به صورت پروژه ای با شرکتی همکاری میکردم.هنوز دانشجو بودم اما علاقه ای به درس خواندن نداشتم و ترجیح میدادم به کارم برسم.وقتی اکثر دوستانم سرشان با بازی کردن یا جزوه های درسیشان گرم بود من یا در حال انجام پروژه بودم یا در حال مطالعه ی منابع جدید برنامه نویسی.دانشگاه با تمام سختی هایش تمام شد،اغلب رشته های در همینجا تمام میشد و نیاز نبود چیز دیگری مطالعه کنی و خیلی راحت کار پیدا میکردی،اما این برنامه نویسی لعنتی هیچوقت تمامی نداشت و همیشه کلی چیز جدید وجود داشت که میبایست یاد میگرفتی،انگار فقط برای اذیت کردن تو ایجاد شده بود.اما نمیدانم چه جادویی در آن بود که باز هم نمیتوانستم بیخیال آن بشوم و برم سراغ یک کار ساده تر.سالها گذشت و من شدم یک متخصص برنامه نویسی،وقتی به خودم نگاه میکنم دائم با خودم غر میزنم که چرا این کار رو انتخاب کردم؛فشار و استرس،ساعات کاری زیاد،نیاز به روز بودن دائمی،توقعات عجیب کارفرمایان،پروژه های بزرگ و پول های کم فقط گوشه ای از مشکلات ما برنامه نویسان است.با خودم غر میزنم و به خودم میگویم چرا این مسیر را آمدم و یک مسیر آسانتر را انتخاب نکردم اما هیچوقت دلم راضی نمیشود این نارنیای پنهان خودم را به پول و آسایش بفروشم.Programmer never die,they have no lifeما برنامه نویسیم.سخت کوش هایی که از نظر دیگران تنبلیم،منظم هایی که از نظر دیگران شلخته ایم،انسان های عادیی که از نظر دیگران عجیبیم.روز برنامه نویس مبارک!</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Sat, 14 Sep 2019 11:41:50 +0430</pubDate>
            </item>
                    <item>
                <title>الگوی CQRS چیست</title>
                <link>https://virgool.io/web-how/%D8%A7%D9%84%DA%AF%D9%88%DB%8C-cqrs-%DA%86%DB%8C%D8%B3%D8%AA-ae0ys7qoeozw</link>
                <description>CQRS Patternدر سالهای گذشته با پیشرفت های تکنولوژی کم کم تیمهای فنی به استفاده از الگوهای برنامه نویسی روز روی آورده اند و سعی میکنند از الگوهایی استفاده کنند که کارایی بهتری برای نرم افزارشان داشته باشد.یکی از این الگوها  (CQRS(Command Query Responsibility Segregation میباشد.این الگو به دلیل کارایی بهتر نرم افزار یکی از الگوهای مورد علاقه ی من میباشد.در این مطلب سعی بر این است این که این الگو را توضیح بدهم.به خاطر داشته باشید که این الگو قرار نیست برای تمامی پروژه های مفید باشد و میتوان گفت تعداد کمی از پروژه ها هستند که امکانات این الگو نسبت به پیچیدگی آن ارزشمندتر است.مفاهیم Command and Queryکامندها دستوراتی هستند که چیزی را برنمیگردانند و هدف اصلی آنها درج ،ویرایش  و حذف میباشد اما کوئری ها دستوراتی هستند که در خروجی خود دیتاست برمیگرداند و برای گرفتن اطلاعات از دیتابیس استفاده میشود.مسیر اصلی CQRSاصلی ترین ایده ی پشت این الگو جدا کردن command و query ها میباشد.تمام نرم افزارهایی در تلاش برای تعامل با یک سیستم اطلاعاتی و برخورداری از سیستم ذخیره سازی با CRUD هستند،به بیان ساده تر در تمامی سیستم ها مدل هایی وجود دارند که میخواهیم در آن اطلاعات جدید اضافه کنیم،اطلاعات قبلی را بخوانیم،اطلاعات قبلی رو ویرایش کنیم و یا آنها را حذف کنیم.یک مثال سادهفرض کنید یک در حال طراحی یک سیستم فروشگاهی هستید.ساختار دیتابیس یک فروشگاه پر از ارتباط است؛ هر محصول میتواند گروه داشته باشد،میتواند تعداد زیادی خاصیت و صفت داشته باشد،میتواند در سبد خرید تعداد زیادی کاربر باشد و خیلی چیزهای دیگر.در این نوع سیستم ما به دلیل ساختار رابطه ای سیستم بهترین روش برای ذخیره سازی داده استفاده از دیتابیس های رابطه ای مانند Sql Server ، MySql میباشد.همچنین در هنگام واکشی اطلاعات به دلیل خاصیت های زیادی که هر محصول میتواند داشته باشد و بزرگ بودن آبجکت مورد نیاز بهترین راه حل استفاده از دیتابیسهای NoSqlمثل MongoDbمیباشد.با این شرایط راه حل چیست؟؟در چنین پروژه ای شما میباسیت از الگوی CQRS استفاده کنید.در این سیستم فروشگاهی لایه ی Repository را به دو بخش کلی تقسیم میکنیم که یه بخش شامل Command ها و بخش دیگر شامل Query ها میباشد که تمامی متد ها را بر اساس نوع آنها جدا میکند.زمانیکه اطلاعات در دیتابیس رابطه ای درج،ویرایش یا حذف میشود یه سرویس که اصطلاحا به آن Service Bus میگویند داده های درج شده در دیتابیس رابطه ای را پردازش میکند و آبجکت پیچیده ای که زمان واکشی داده نیاز داریم را به صورت آماده در دیتابیس NoSql ذخیر میکند.در این حالت شما در زمان واکشی داده برای دریافت داده نیاز به دستورات سخت و پیچیده ندارید،همچنین سرعت واکشی داده به دلیل از پیش پردازش شدن به شدت کاهش میابد.باز هم توجه داشته باشید که پیچیدگی های CQRS به حدی بالاست که اصلا عاقلانه نیست که برای هر پروژه ای از آن استفاده کنید و نیاز است در استفاده از آن به نیاز سیستم خود اشراف کامل داشته باشید.در انتها چند لینک برای مطالعه بیشتر در مورد این الگو قرار میدهم،امیدوارم مفید واقع شود.مطالعه بیشترمطالعه بیشترمطالعه بیشتر</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Wed, 28 Aug 2019 12:29:31 +0430</pubDate>
            </item>
                    <item>
                <title>الکامپ،تمامش کنید...</title>
                <link>https://virgool.io/@MajidDehnamaki/%D8%A7%D9%84%DA%A9%D8%A7%D9%85%D9%BE%D8%AA%D9%85%D8%A7%D9%85%D8%B4-%DA%A9%D9%86%DB%8C%D8%AF-zbsezfgqbrye</link>
                <description>الکامپ 2019الکامپ 2019 هم به پایان رسید،اما این دوره ناامید کننده ترین دوره الکامپ بود که در سالهای گذشته دیده بودم.شاید برای خیلی ها نمایشگاه خوبی بوده باشه اما برای من مثل فیلمی بود که سالها منتظر اکران آن بودم و وقتی فیلم رو دیدم از دیدنش ناامید شدم.همه چیز در پایین ترین کیفیتی که توقع داشتم برگذار شد و این باعث شد از وقتی که در یکی از گرمترین روزهای سال تلف کرده بودم پشیمون بشوم.شاید بهتر باشد مسئولین از همین الان به فکر یک تحول در این نمایشگاه باشند در غیر این صورت تا چند سال آینده شاهد از بین رفتن این رویداد خواهیم بود.بلیط فروشی یا ...چرا نباید در نمایشگاهی این چنینی بلیط فروشی به صورت آنلاین اتفاق بیفتد؟چرا من به عنوان بازدید کننده باید در یک صف طولانی مدت در یک گرمای طاقت فرسا بایستم تا بلیط ورود تهیه کنم؟نا امیدکننده بود وقتی یک دکه بلیط فروشی در یک مکان بدون هیچ سایه بانی برای بازدیدکننده قرار داشت.بعد از اینکه بلیط را میخریدید میبایست در یک صف دیگری صبر میکردید تا تیم اجرایی مشخصات شما را وارد سیستم کرده و در انتهای آن قسمت کارت خود را تحویل بگیرید.اما چیزی که خیلی من را عصبانی میکرد تذکر دائم افرادی بود که پشت سر هم اعلام میکردند کسی حق ورود بدون بلیط را ندارد،مگر با این همه صف و گیر دادن ها کسی میتواند بدون بلیط رد شود؟پس آن همه تذکر و تهدید برای چه است؟سوال دیگری که برایم پیش آمده بود این بود که آن کارت چاپی دقیقا به چه دردی میخورد؟بعد از چاپ شدن من آن را در جیبم گذاشتم و هیچکس آنرا از من نخواست و هیچ کارایی نداشت اما باز هم میپرسم آیا نمیشد تمام این روال را به صورت اینترنتی انجام داد تا مجبور نشوند بازدیدکننده را در این شرایط بد نگهدارند؟یا اگر وجود دارد آیا بهتر نیست اطلاع رسانی مناسبی نسبت به آن انجام شود؟کجا باید بروم؟بعد از خروج از جهنم بلیط فروشی اولین سوالی که پیش میامد این بود که خب باید دقیقا کجا بروم؟کدام سالن؟از کدام طرف؟امسال هم مثل همیشه که به الکامپ میروم قبل از رفتن چند شرکتی که کارشان برایم جذاب است را انتخاب کردم و قصد داشتم به جای بی مورد گشتن مستقیما به سراغ آنها بروم،امسال فقط نامشان را به خاطر می آوردم اما هرچقدر اطرافم را نگاه کردم نه راهنمایی دیدم نه نقشه ای و این خیلی بد بود.چون مجبور بودم تمام سالن ها را بگردم تا شرکت های مد نظرم را پیدا کنم،هرچند وقتی به اولین سالن رفتم متوجه شدم درب هر سالن شرکت های حاضر در این سالن را روی یک بنر زده اند اما این کافی نبود و باز هم کار را برای من سخت میکرد.در انتهای بازدید بودم که شخصی آمد و گفت آیا نقشه نمایشگاه را روی گوشیتان نصب کرده اید و آن موقع بود که تازه متوجه شدم نمایشگاه نقشه هم داشته است اما هیچ اطلاع رسانی مناسبی نشده بود و البته دیگر خیلی دیر بود.خسته ام،کجا بنشینم؟یکی از مواردی که نه فقط در الکامپ،بلکه تقریبا در تمامی نمایشگاه های ایرانی اتفاق میفتد جایی برای استراحت بازدیدکنندگان است.چرا هیچوقت برای بازدیدکنندگان مکانی برای استراحت، نشستن، نوشیدن یا حتی غذا خوردن در نظر گرفته نمیشود.تعدادی فودتراک در محوطه ی نمایشگاه بود که همه میتوانستند از آن مواد غذایی تهیه کنند اما هیچ جایی برای نشستن بازدید کنندگان در نظر نگرفته بودند،در اصل به این فکر نکرده بودند که کسی که از ما خرید میکند باید کجا از آن استفاده کند.از این افتضاح تر این بود که حتی خود سالن ها هم جایی برای نشستن و نفسی چاق کردن نداشتند،حتی جایی نبود که من بتوانم چند لحظه ای را با دوستانی که در نمایشگاه با آنها آشنا شدم صحبت کنم و با هم بتوانیم از این فضا استفاده کنیم.در این میان تنها مدیران شرکت اسنپ خوش ذوقی کرده بودند و مکانی را برای استراحت بازدیدکنندگان ایجاد کرده بودند که در نوع خود جالب بود،هرچند آنجا هم مکان مناسبی برای خوردن چیزی یا صحبت کردن با کسی نبود،اما غیر از این هیچ جای دیگری برای استراحت نبود.آنقدر این فضای استراحت کم بود که در یک قسمت از محوطه که شرکتی کولر های بزرگ برای فارم های ماینینگ را ارائه میکرد،آنها را روشن کرده بود و مردمی که از هوای گرفته و فشرده داخل سالن ها به گرمای محوطه پناه آورده بودند در اطراف این کولر ها جمع شده بودند تا با خنکی آنها لحظه ای استراحت کنند.مگر ایجاد فضایی برای استراحت بازدیدکنندگان چقدر هزینه دارد؟نمیشنوم،چه میگویی؟در یکی از سالهان در یک فضایی میان دو پله برقی قسمتی تعبیه شده بود تا در طول روز ورکشاپها و سخنرانی های کوتاه برگذار شود.تصمیم گرفتم هم در آنجا استراحت کنم و هم به صحبتهای سخنران گوش کنم.وقتی روی یکی از صندلی ها نشستم و عزم خود را جزم کردم که به حرفهای سخنران گوش بکنم تازه متوجه شدم که این کار امکان پذیر نیست،آن قسمت از سالن به حدی رفت و آمد و سر و صدا بود که من هرچه گوشهایم را تیزتر میکردم باز هم نمیتوانستم صدای سخنران بلندگو به دستی که در فاصله ی چند متری من قرار داشت را بشنوم.هدف از برگذاری این ورکشاپ چه بود؟ورکشاپی که نتوانی صدای کسی در آن را بشنوی دقیقا چه چیزی را به شما میدهد؟این از بی سلیقگی و بی فکری مسئولان برگذاری بود که محل برگذاری این ورکشاپ را و البته تعداد زیادی ورکشاپ دیگر را در بدترین و شلوغ ترین مکان سالن قرار داده بودند و هم باعث سختی و بند آمدن مسیر رفت و آمد شده بودند و هم باعث بی هدف بودن ورکشاپ ها.ایده هایتان کو؟تمام این صحبت ها انتقاداتی به مسئولین برگذاری بود اما حال میخواهم سخنی با شرکت های حاضر در الکامپ داشته باشم،اگر میخواستم شرکتهای نرم افزاری نمایشگاه را دسته بندی کنم به این صورت بود :شرکت های طراحی سایتشرکت های برگذار کننده ی کلاس آموزشیشرکتهای سازنده CRMشرکتهای سازدنده ERPسایر شرکتها(اقلیت)بله،درست است.به جز تعداد کمی از افراد هیچ کدام از شرکتها چیز خاصی برای ارائه نداشت.از زمانی که برنامه نویسی را شروع کردم و وارد این دنیا شدم تقریبا تمام شرکت های ایرانی میخواستند CRM و یا ERP طراحی کنند و بفروشند و پولدار شوند و دیروز فهمیدم هنوز هم شرکتهای ایرانی در همان تب و تاب هستند.آیا فکر نمیکنید شرکتهایی که ERP یا از این دست نرم افزارها را میخواستند،تا الان یا یک نسخه خریده اند یا خودشان یک نسخه نوشته اند؟آیا این ایده های تکراری کافی نیست؟دیگر وقت آن است که ایده های تکراری و قدیمی کنار گذاشته شود و شرکت های به سمت ایده های جدید و جذابی بروند که باعث شکوفایی این صنعت بشود.چرا شرکت های ایرانی نمیفهمند ایجاد دوباره ی  نرم افزاری مثل آفیس سودی ندارد و این کار یک ایده ی خوب و نوآورانه نیست؟باور کنید به اندازه ی کافی در این صنعت سایت ساز و ERP و CRM وجود دارد.میخواهم ببینم،نمیخواهم بگردمیک ایراد اساسی در تمام شرکتهای نمایشگاه مرا آزار داد عدم طراحی و ارائه مناسب خود بود،وقتی به یک فروشگاه مواد غذایی میروید شما در دنیایی از اشکال و رنگ و بسته های مختلف قرار دارید.مطمئنا وقت آن را ندارید تا تک تک آنها را بردارید و ببینید محتویات آن بسته چه میباشد،تولید کنندگان آن وقت دارند در یک تصویر محصول خود را به شما ارائه کنند و شما را جذب خود کنند وگرنه فرصت را از دست داده اند.نمایشگاه الکامپ دقیقا مانند همان فروشگاه میباشد که دنیایی از شرکت های مختلف در آن جای گرفته اند،شما از روبروی تک تک غرفه های میگذرید و به بنرها و در و دیوار آن نگاه میکنید و آنها چند لحظه فرصت دارند تا شما را مجاب کنند به آنها وقتی بدهید تا خودشان را عرضه کنند،اما شرکتهای نمایشگاه اکثرا این اصول ساده را رعایت نکرده بودند،وقتی به غرفه  آنها میرسیدید باید کلی میچرخیدید و میگشتید تا بفهمید اسم شرکت چیست و دقیقا چه کاری انجام میدهد و این افتضاح بود.آیا شرکتی که با هزینه ی گزافی غرفه را گرفته است نمیتوانست با یک هزینه ی اندک مشاوری برای طراحی و دکور خود در نمایشگاه استخدام کند؟میخواهم بشنوم،نمیخواهم بخوانمشبکه های اجتماعی در تمامی لحظات زندگی نفوذ کرده است،حتی در آن لحظه ای که شما نیاز است در 30 ثانیه نرم افزار شرکت خودتان را به شخصی ارائه دهید که شاید شانس عوض شدن زندگی شما باشد.بعد از چند ساعتی به غرفه ی یکی از شرکت های که دنبال آن بودم پیدا کردم،با خوشحالی جلو رفتم و دیدم که دو ارائه کننده ی خانوم و آقا دارد که البته هر دوی آنها نشسته بودن و در گوشی های خودشان غرق بودن،چند ثانیه ای منتظر بودم تا یکی از آنها بیاید و برایم توضیح بدهد که در شرکتشان چه خبر است اما هیچکدام عکس العملی نشان ندادند با اینکه حتی چند باری من را زیر چشمی نگاه کردند اما کاری نکردند،چون کارشان برایم جذاب بود خودم را راضی کردم که صدایشان کنم اما نتیجه ناامید کننده بود،وقتی از یکی از آنها خواستم که بیاید و برایم توضیح دهد که دقیقا کارشان چیست خیلی بی حوصله فقط گفت که توضیحات کامل داخل کاتالوگ هست!!!!این افتضاح بود،او در اصل به من گفت برو خودت بخوان،من کارهای مهمتری برای انجام دادن دارم که شامل چک کردن شبکه های اجتماعیم میباشد.من نمیخواستم کاتالوگ بخوانم،میخواستم بشنوم اما این شرکت این فرصت را از خودش و از من گرفت و این خیلی افتضاح بود.این خلاصه ای از انتقادات من به مسئولین و شرکت کننده گان الکامپ بود،بدون شک اگر الکامپ این مسیر را طی کند تا چند سال دیگر این نمایشگاه کامل تعطیل و بی ارزش میشود که این خیلی ناراحت کننده هست،چون این نمایشگاه یکی از معدود نمایشگاه های معتبر در موضوع کامپیوتر است که تقریبا با کج سلیقگی و تصمیمات اشتباه تبدیل به یک نمایشگاه عذاب آور شده است.</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Mon, 22 Jul 2019 15:37:44 +0430</pubDate>
            </item>
                    <item>
                <title>معروفترین الگوهای برنامه نویسی</title>
                <link>https://virgool.io/@MajidDehnamaki/%D9%85%D8%B9%D8%B1%D9%88%D9%81%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-ulgvkyz1vogy</link>
                <description>paradigm programming تو این مطلب قصد دارم تفاوت سه تا از الگوهای خیلی مهم و معروف برنامه نویسی رو براتون توضیح بدم و بگم هر کدومشون به چه صورت هستش.در ابتدا باید بگم اصلا الگوی برنامه نویسی یا Paradigm Programming چی هست و چه تعریفی داره. الگوی برنامه نویسی :ساده ترین تعریف الگوی برنامه نویسی میتواند این باشد که الگوی برنامه نویسی مسیر یا سبکی میباشد که باعث میشود برنامه نویسی بسیار ساده تر انجام شود.  من در اینجا سه الگوی Object-Oriented،Functional و Procedural را بررسی میکنیم،دقت کنید که من به  هیچ وجه این سه الگو را با هم مقایسه نمیکنیم بلکه هر سه را تعریف میکنیم. برنامه نویسی شی گرایی-(Object-Oriented Programming(OOPObject-Oriented Programmingبرنامه نویسی شی گرا یکی از معروف ترین الگوهای برنامه نویسی هست که مطمئنا تمامی برنامه نویسان زبان هایی مثل C# و JAVA و ... به خوبی آن را میشناسند.اصلی ترین مفهوم در OOP مفهوم اشیا(Object) میباشد.همچنین مفاهیمی مثل متغیرها و کلاس ها در آن وجود دارد.تعریف دقیق شی گرایی در ویکی پدیا به این صورت آمده است :برنامه نویسی شی گرا یک شیوه برنامه نویسی است که ساختار اجزای آن،شی ها میباشند.در این شیوه ،برنامه به شی گرایش پیدا میکند.به این معنا که داده ها و توابعی که قرار است بر روی این  داده ها عمل کنند تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته و یک شی را تشکیل میدهند.بذارید با یک مثال توضیح بدم،یک انسان را در ذهن خودتون تصور کنید.انسان ها میتوانند سفید،سیاه،کوتاه،بلند،لاغر یا چاق باشند و هرکسی میتواند آن را یک شکل تصور کند اما یک تصویر کلی از یک انسان در ذهن همه وجود دارد،این تصویر کلی از انسان که در ذهن همه ی ما ایجاد میشود همان کلاس میباشد.حال وقتی یک انسان با رنگ پوست سیاه و قد بلند را تصور میکنید شما یک شی از انسانی که قبلا آن را تصور کرده اید دارید به علاوه ی دو ماهیت اضافه تر که شامل رنگ پوست سیاه و قد بلند است. در OOP چهار مفهوم اصلی وجود دارد که میتوان از آنها به عنوان ویژگی های اصلی شی گرایی یاد کرد :ارث بری(Inheritance)کپسوله سازی(Encapsulation)چند ریختی(Polymorphism)انتزاع داده(Data abstraction)این مفاهیم را در مطالب جداگانه ای شرح خواهم داد. برنامه نویسی تابعی-(Functional Programming(FPfFunctional Programmingبرنامه نویسی تابعی یکی از معروفترین الگوهای برنامه نویسی میباشد.این الگو به زبان ساده روشی است برای ساخت نرم افزار با استفاده از توابع خالص(Pure Function) و عدم تغییر وضعیت و داده ها.در برنامه نویسی Javascript این نوع برنامه نویسی به عنوان یکی از اصول اولیه محسوب میشود.در این الگو خروجی های تابع کاملا مبتنی بر ورودی های تابع میباشد و همواره خروجی تابع یکسان است ،همچنین از مهترین ویژگی های آن حذف تاثیرات جانبی میباشد.به بیان ساده تر کد شما شامل تعداد زیاد تابع میباشد که شما داده را به این تابع ها انتقال میدهید تا نتیجه را بگیرید و همچنین داده ی شما  غیرقابل تغییر است و به جای تغییر ساختمان داده مورد نظر،یک ساختمان داده ی جدید میسازد.کدی که با استفاده از این الگو پیاده سازی میشود بسیار مختصر تر و قابل پیشبینی تر از سایر الگو ها میباشد اما برای تازه واردان درک آن بسیار سخت تر میباشد.مفاهیمی همچون توابع خالص،ترکیب توابع،حذف تاثیرات جانبی و... اصلیترین نکات این الگو هستند که توضیح آنها مطلب جداگانه ای را میطلبد ،همچنین نحوه ی برنامه نویسی با این الگو را در آینده در یک مطلب کامل تست خواهیم کرد. برنامه نویسی رویه ای-Procedural ProgrammingProcedural Programmingبرنامه نویسی رویه ای یک الگوی بسیار ساده میباشد،به این صورت که در این نوع برنامه نویسی عملیات ها به ترتیب و یکی پس از دیگری اجرا میشود.در این روش برنامه نویس با دانش خود محلهایی از حافظه را برای ذخیره مقادیر انتخاب میکند و سپس یک سری از رویه ها (به رویه های ماژول،متد،تابع،ساب روتین نیز گفته میشود) اجرا میشوند تا بتوانند مقادیر ذخیره شده پس از انجام عملیات را به عنوان خروجی برمیگرداند.این سه الگو ،از مهمترین الگوهای برنامه نویسی در حال حاضر هستند که میتوانند کدنویسی را برای شما بسیار راحتتر و قابل درک تر بکنند،البته تعداد زیاد دیگری از این نوع الگو ها در دنیای برنامه نویسی وجود دارد که هر کدام از آنها مزایا و معایب خود را دارند. آیا تا به حال با این الگو ها کار کرده اید؟</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Sat, 06 Jul 2019 17:32:08 +0430</pubDate>
            </item>
                    <item>
                <title>ترمینال جذاب ویندوز</title>
                <link>https://virgool.io/@MajidDehnamaki/%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%84-%D8%AC%D8%B0%D8%A7%D8%A8-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-aocba9t7s52v</link>
                <description>ترمینال جدید ویندوز تو چند سال گذشته به عنوان یک برنامه نویس یک چیز رو خیلی خوب درک کردم،اونم اینکه انتخاب کردن یک سیستم عامل برای کار کردن خیلی سخته.همیشه دغدغه اینکه لینوکس نصب کنم یا ویندوز اذیتم میکرد.من به عنوان برنامه نویس .Net نیاز به ویندوز داشتم و علاوه بر اون راحتی ویندوز گزینه ی خیلی مثبتی بود،از اون طرف ترمینال لینوکس و همینطور سرویس ها و نرم افزارهایی که نصب کردنش توی لینوکس خیلی راحت تر بود منو توی دو راهی سختی میذاشت که انتخاب بین این سیستم عامل ها سخت میکرد.در ابتدا مایکروسافت با منتشر کردن امکان WSL(مخفف Window SubSystem for Linux) اولین قدم خودش را برای حل کردن مشکل امثال من برداشت.در سال 2016 مایکروسافت امکان نصب Ubuntu در ویندوز را داد و بعد از اون کم کم بقیه ی توزیع های لینوکس مثلا Kali و Debian رو هم منتشر کرد.اینجا بود که پنجره ی امیدی برام باز شد ک حداقل الان میتونم روی سیستمم فقط یک سیستم عامل داشته باشم،البته این امکان مشکلات زیادی هم داشت که باعث میشد از جذابیتش کم بشه،خطاهای عجیب و غریب WSL را خیلی بد و خسته کننده میکرد که مایکروسافت اونها را با آپدیت های مختلف حل میکرد.و اما تقریبا دو یا سه هفته ی پیش مایکروسافت یک قدم بزرگ برداشت و نسخه پیش نمایش ترمینال جدید خودش را منتشر کرد و تونست نظر منو به خودش جلب کنه.چی بهتر از یه ترمینال که بتونی داخلش Cmd و PowerShell و Debian و Kali و ... داشته باشی بتونی از امکانات همشون استفاده کنید. https://www.aparat.com/v/6STP4 ترمینال مولتی تب :این ترمینال مولتی تب هستش و شما میتونید به جای اینکه برای کارای مختلفتون پنجره های زیادی باز کنید میتونید تو همون پنجره چندتا تب باز کنید،این امکان وقتی قشنگ میشه که بدونی میتونی هر کدوم از این تب ها رو برای یک سیستم عامل خاص باز کنید.ی نمایش متن بهتر :ترمینال جدید از Gpu استفاده میکنه که باعت میشه کاراکتر های متن،سمبول ها و حتی اموجی ها و آیکون ها به خوبی رندر بشن و باعث شده که این کنسول از نظر دیداری جذابیت خاصی داشته باشه.قابلیت شخصی سازی زیاد :این ترمینال تمام تنظیمات خودش رو داخل یک فایل ذخیره میکنه که شما خیلی راحت میتونید بهش دسترسی داشته باشید و هرچیزی رو داخلش شخصی سازی کنید تا بتونید تجربه ی بهتری از کار کردن با این ترمینال را داشته باشید. ااین ترمینال میتونه برای شما تجربه ی خوبی داشته باشه و کمک کنه بتونید تمام امکانات سیستم عامل ها رو کنار همدیگه داشته باشید و بتونید ازش لذت ببرید،پیشنهاد میکنم همین الان نصبش کنید و تست کنید و ازش لذت ببرید.دقت کنید که این ترمینا هنوز در نسخه ی پیشنمایش هستش و ممکنه باگهای زیادی داشته باشه،پس صبور باشید.ترمینال جدید ویندوز به صورت متن باز در گیت هاب قرارداده شده و همچنین میتونید به راحتی از استور ویندوز دانلودش کنید.</description>
                <category>مجید ده نمکی</category>
                <author>مجید ده نمکی</author>
                <pubDate>Wed, 03 Jul 2019 20:23:38 +0430</pubDate>
            </item>
            </channel>
</rss>