<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mehdi Yasinzadeh</title>
        <link>https://virgool.io/feed/@MehdiYasnzadeh</link>
        <description>شاید یک برنامه نویس ...</description>
        <language>fa</language>
        <pubDate>2026-06-17 01:35:24</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/77251/avatar/KBWouj.jpg?height=120&amp;width=120</url>
            <title>Mehdi Yasinzadeh</title>
            <link>https://virgool.io/@MehdiYasnzadeh</link>
        </image>

                    <item>
                <title>سفری کوتاه در گیت</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%B3%D9%81%D8%B1%DB%8C-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-%D8%AF%D8%B1-%DA%AF%DB%8C%D8%AA-amg2zgzyhmiu</link>
                <description>سلام به همه ی جاواکار های گسسته شدهچند مدته پیش با حالی بد به مدیری که هرگز افتخار همکاری باهاش نداشتم تماس گرفتم و گفتم من نمیدونم چی بخونمگفت کمی بیخیال باش اول تا بتونی لذت ببری از زندگی و بعد ادامه داد: گفت یکی از بهترین راه ها اینه که یک ردمپ شروع کنی و بخونی و بهم یه ردمپ توی حوزه ی بک اند با جاوا پیشنهاد داد.بعد از اون دوست عزیزش به عنوان یه کوچ کنارم ایستاد و بهم گفت چی مهمه و مطالعه کنبرای همتون آرزوی میکنم یه پارتنر موقشنگ نه چیز یه معلم سنیور خدا بهتون بده.اون دو عزیز آقای سهیل قلکاری و سلطان احسان شیشه بر هستن خواستم از همین تریبون از هر دو تشکر کنم و ممنون زحماتشون بشم( :اولین تیتر در این ردمپ گیت بود من تصمیم گرفتم صرفا فلو و استیج هارو مطالعه کنم که در هر کدوم چه اتفاقاتی میوفته و چیزایی که برای بار اول میدیدمو مطالعه کنم دقیقا شبیه کسایی که میگن بار اولمونه ولی ست میپوشن///:اول اینکه من تصمیم گرفتم از www.javatpoint.com سایت بخونم و فهم خودمو تا حد بی نهایت خلاصه بنویسم.اگرم میبینید از طنز کار کم شده چون اصلا از لحاظ روحی توی مود خوبی نیستم پس پیشاپیش پوزش میطلبم اگر نبخشیدید امیدوارم گیتتون برنچا قاطی بشه یه rebase بخوره براتون و چند فایل به هر دلیلی از ایندکستون پاک شه نتونید تریس کنید و اگرم جاوا کارین کانتکس اسپرینگ براتون آپ نشه😁😁$ git initاولین دستور همینه برای اینکه بخوای یه ریپازیتوری خالی درست کنی باید ازین دستور استفاده کنی و بعدش در چاه زیبا و اعتیادآور گیت بیوفتی(دلسوخته هاش میفهمن چی میگم)$ git add &lt;File name&gt;میاد این هر فایلی رو که بهش میگین اضافه میکنه به index جایی که گیت نسبت به تغییرات رخ داده توی اون فایل حساس میشه و اونا رصد میکنه خیلیییی غیرتیییی حتی یه نقطه رو هم جا نمیندازه کاری ندارم تهش همه کات میکنن اما خوب...$ git commit -m &quot;Commit message.&quot;اینجا اتفاقی که میوفته اینه که با کامیت کردن تغییرات به کمک یه مسیج میتونید تغییرات رو توی ریپازیتوری ثبت کنید و داشته باشین.(هههه به چی میخندی خودت که آدمارو هم فراموش میکنی چه برسه به کدات اینجا مجبوری گردن بگیری وگرنه هدت در چند جهت مختلف برشت میده)$ git clone &lt;repository URL&gt;در کلون کردن شما یک کپی از کد رو میتونید از ریپازیتوری دانلود کنید و توی سیستم خودتون داشته باشین و روش کار کنید حالا این ریپازیتوری میتونه ریموت باشه یا لوکال.$ git stashدستور استش جالبه برای آدمای کوالایی تهیه شده فکر کن وسط یه تسکی هنوزم تسکت به جایی نرسیده که وسطش یه کامیت بزنی بعد یهو رفیقت میاد میگه حشمت برای عمو یه شعر بخون نه چیز اون مشکل اون روزتو ببینم میخوام کمکت کنم سلطان🙄از قضا مشکل تو توی یه برنچ دیگس کامیت هم میخوای نزنی اینجاس که گیت میگه خوشگل عمو بیا تغییرات رو موقتا من برات استش میکنم یه جا ذخیره میکنم برو برنچو به هم نشون بده برگرد و اونارو دوباره به برنچت اضافه کن و کار کن باشون.توهم باید بگی چشم همین.Git Ignoreگیت یه قابلیتی داره میگه آدم حسابی یسری فایل idea یا کد ادیتور ها ممکنه به پروژت اضافه کنن که نه بدرد ما میخوره نه بدرد دیگران اینا مال خودت لطفا نکن توی پاچه ی پروژه پس بهت این امکان رو میده که یه فایل به اسم gitignore. بسازی و هر چی میخوای ندید گرفته شه و نیاد توی پروژتو اونجا بسازیGit Forkفرض کنید میخوای روی پروژه ای کار کنید خوب اینجا میرید اونو کلون میگیرین و بسم الله اما یه وقتی به شما اجازه داده نمیشه روی پروژه ی اصلی کار کنید اینجا گیت میگه اوکی یه کپی از اون برای خودت بساز هر غلطی که میخوای اونجا باش بکن.بیشتر موقعی که میخوایم یه پروژه ی اوپن سورس رو روش کار کنیم این طوری میشه یه فورک میگیریم و روش کار میکنیم هرزگاهیم خودمون رو با مخزن اصلی طرف آپدیت میکنیم.Git Repositoryاین ریپازیتوری که هی حرفشو زدیم چیه اصلا؟ جایی هست که فایل های شمارو ذخیره میکنه فایل های پروژه و... میتونید هم یه مخزن لوکال داشته باشین روی سیستم خودتون هم یه مخزن ریموت که یه جایی خارج  از سیستم شما و اغلب در سرور ها نگه داری میشه.Git Indexبچه ها ما یک سکویی داریم به اسم index این همون جایی که هر کسی بیاد توش زیر نظر قرار گرفته میشه و کاراش رصد میشه دقیقا شبیه وقتی یکی وارد قلب شما میشه همه ی کاراشو زیر نظر میگیرید و بهش دقت میکنید ولی تا این حد مثله گیت نباشید چون اذیت میشه( :Git Headهد چیه به زبان ساده هد به آخرین کامیت شما در برنچ موجود داره اشاره میکنه.سختش نکنید در قدم اول مهم مفهومه همیشه اول باید یه کسی و کم بشناسی بعد باش دعوا کنی وگرنه باختی کوچولو.Git Origin Masterبرنچ دیفالت و اصلی گیت همیشه مستر هست که شما یکی در سرور ازش داری یکی توی لوکال یا سیستم خودت حالا به اونی که توی سرور هست میگن origin master و توی لوکال یا سیستم شما به اون برنچ فقط میگن master پس هر وقت میخوای با اون مخزن برنچ توی سرور ارتباط برقرار کنی باید از پیشوند origin استفاده کنی گل های توی خونه.Git Branch سببینید عزیزای دلم ما میتونیم نسخه ای از ریپازیتوری داشته باشیم که از پروژه اصلی کاری جدا می کنه مثلا یه پروژه ی دفترچه تلفن داریم که شاید یه برنچ در حال توسعه ی دکمه هاش باشه یکی توسعه ی دیتابیس یکی خود کد لاجیک و...کسایی که اجایل هستن معمولا اسم برنچ هارو اسم تسکا میزارن که بعدا راحت تر بفهمن روی چی کار میکردن(از دی که گذشت هیچ از او یاد مکن بچه خوشگل)Git Merge and Merge Conflictیه بحثییه بحثی هست همه ازش زخم خوردن اصلا یکم بد دسته و وحشی هر کی از کنارش رد میشه باید یه آزاری بهش بده ببینید گفتیم ما میتونیم برنچ های متفاوتی داشته باشیم که روی نسخه اصلی تعریف شدن حالا کارشون تموم شده دکمه ها آمادن حالا میخوایم اینارو بزاریم کنار هم پس برنچ ها رو با مستر ادغام میکنیم به این میگن مرج حالا شاید شاید این دو نفر روی یه قسمت از سیستم هم کار کردن که مشترک بوده اینجا گیت میگه بابا من گاوم نمیفهمم کدومو میخوای بیا بلند شو از هم گسستگی رو بزار کنار بهم بگو کدومو میخوای و شما بهش میگی به این مشکل کانفیلیکت و به حلش رفع مغایرت یا همون کانفیلیکت میگن.Git Rebaseخوب rebase دقیقا شبیه مرج هست با یه تفاوت کوچک اونم اینه توی مرج کردن شما بعد از پیوستن به برنچ جدید تاریخچه ی تغییرات برنچی که پیوسته رو نخواهید داشت و صرفا توی برنچ پذیرنده میگه یه مرجی رخ داده اما توی rebase تو تاریچه ی برنچی که بهش اضافه کردیو داری پس سناریو رو میتونی بهتر بفهمی هانی😊Git Squashاین دستور قسمتی از آپشن های rebase هست اما جالبه میاد برات چندتا کامیتو یکی میکنه.$ git checkout &lt;branchname&gt;ساده میگم اگر میخوای بین برنچ هات جا به جا بشی و سوییچ کنی باید از دستور checkout استفاده کنی اون اینکارو برات میکنه.$ git revert &lt;commit-ish&gt;فکر کنید یه کامیتی زدین اشتباهه سیستم به فنا رفته برای اینکه برگردین به کامیت قبلی که درست بوده از دستور ریورت استفاده میکنید بهش میگین به فلان کامیت ریورت شو.با گیت دوشواری نداریم بزرگواران.Git Resetشما میخوای تغییرات رو برگردونی پس بیا از reset استفاده کن این بچه سه حالت داره--soft: uncommit changes, changes are left staged (index).--mixed (default): uncommit + unstage changes, changes are left in working tree.--hard: uncommit + unstage + delete changes, nothing left.اولی صرفا تغییرات رو index ور میداره یعنی هیچی نمیشن هستن همنجا فقط انگار کامیتی نخورده.دومی که حالت دیفالت هم هست کامیتت رو ور میداره و تغییرات رو هم از توی ایندکس میاره بیرون یعنی untrack میکنه.سومی که خطرناکم هست هم کامیتت رو ور میداره هم از ایندکس خارج  میکنه هم پاکشون میکنه///:$ git rm &lt;file Name&gt;این برای خودمم جالب بود بچه ها وقتی میخواین یه فایلی رو به گیت بگین track یا از زیر نظر خارج کنه از rm استفاده میکنید.Git Cherry-pickخوب رسیدم به چری عشقای من فکر کنید ده تا کامیت زدین الان فهمیدین یکی ازینا خرابه و بهشم نیاز ندارین اینجا میگین گیت جان برای برای من فلان کامیتو ببر روی مثلا برنچ مستر میگه چشم اما اسمشو یاد بگیر این حرکت اسمش  cherry-pick هست.Git Fetchفکر صبح رسیدی شرکت میخوای کار کنی بهت میگن دیشب کلی کار کردن ها تو برای اینکه تمام برنچ های لوکال و ریموتت رو آپدیت کنی باید از دستور فچ استفاده کنی میره همه ی تغیررات رو برای برنچ های ریموت میگیره.Git Pullوقتی بخوایم یه دیتایی از ریموت هامون بگیریم از pull استفاده میکنیم میگیم آقای سرور آخرین تغییرات مثلا برچ dev بهم بده.Git Pushوقتی میخوایم تغییراتی رو بهم ریپازیتوری ریموت از لوکال بفرستیم از push استفاده میکنیم به ما کمک میکنه آخرین تغییراتو به مخازن ریموت در سرور بفرستیم.Git Diffاگر میخوای ببینید چه اتفاقاتی افتاده یا کد برنچ شما با برنچ های دیگه چه تفاوتی داره میتونید از diff اسفاده کنید.مرسی که تحمل کردین موضوع بعدی لینوکسه چون دوسش دارم سعی میکنم براش سنگ تموم بزارم.در آخر هم بگم ارزش هر آدمی به قلبشه نه سواد و علم و....پس مراقب باشید توی چاه خودبزرگ بینی نیوفتین ( :</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Sun, 10 Dec 2023 14:50:47 +0330</pubDate>
            </item>
                    <item>
                <title>کش لایه ی دوم هایبرنیت</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%DA%A9%D8%B4-%D9%84%D8%A7%DB%8C%D9%87-%DB%8C-%D8%AF%D9%88%D9%85-%D9%87%D8%A7%DB%8C%D8%A8%D8%B1%D9%86%DB%8C%D8%AA-oo9ptmrzwssr</link>
                <description>سلام به گلای توی خونه مخصوصا موفرفری هاامیدوارم که حالتون خوبه باشه و لبخند روی لبتون پررررنگ (قطعا کمرنگ شده ولی نگهش دارین)بعد از مدت ها تصمیم گرفتم با یه نوشته ی سمی ، نه چیز جذاب دیگه در خدمتتون باشمهایبرنیت چند روز پیش میگفت یه دختری دارم به اسم کش لایه ی دو که خیلی جاها که میرم این بنده ی خدا رو نمیشناسن گفت خیلی در حقش اجحاف شده میتونی کاری براش کنی یا نه????منم که دستم کلا توی کار خیره گفتم چی تنشه، نه چیز یعنی گفتم میشه باهاش بیشتر اشنا شم گفت:absolutely هر چی دوست داری  خودت براش بگوخوب اصلا کش لایه ی دو کیه چیه؟ایشون یه خواهر بزرگتر دارن که اول باید با اون آشنا بشیمما هر بار که یک کوئری توی دیتابیس میزنیم نتیجش میاد توی کش لایه ی یک میشه یعنی اگر همون آبجکت باز خواستی سشن نمیره سمت دیتابیس اونو بیاره میگه دادا من اینو قبلا گرفتم بیا بخون و خوب سرعت شما زیاد میشه اما این عزیز چندتا مشکل داره یک اینکه میگه هر سشن فقط به ابجکت های خودش دسترسی داره و اگر توی دیتابیس اون عوض شد من نمیفهمم تا دوباره برم بگیرمش این جا به خواهر کوچیک ترش میگه بیا کمکم برای حل این مشکلاینجا کش لایه ی دو میاد میگه ببین آجی من بهت این امکان رو میدم که بتونی آبجکت هایی که میخوای رو کش کنی و بین سشن ها به اشتراک بزاری همچنین به محض اینکه یکی ازین سشن ها تغییر کرد به من بگو تا من آپدیت شم (یعنی خوراک کش لایه ی دو رو خود لایه یک فراهم میکنه)معمولا با دوتا پیاده سازیش میکنن:Redis و Ehcache ردیس مثلا چون توی رمه سرعتش خیلییی زیاده و واقعا هم هست پس این طوری با یه مدیرت صحیح توی کش کردن آبجت ها (نه هر چی دستتون اومد کش کنیداااا) میتونید بار را از روی دیتابیس اصلی ور دارید.امیدوارم درک کنید که این یه نوشته ی کوتاهه درحدی که شخص یکم آشنا بشید با دختر اون بزرگوار نه بیشتراین دوتا جز اصلی هایبرنیت هم به نظرم دخترن چون بی نهایت قوین و رکن های اصلی هایبرنیت هستن و بدون این دو هایبرنیت بی معناست(:قصه ی ما به سر رسید اما نویسنده به رلش نرسیدالتماس دعا توی این شبا اگر رل زدم چون خیلی خوشحال میشم قول میدم پیاده سازیشو در حد سوادم آموزش بدم توی آپارات??</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Thu, 27 Jul 2023 21:01:06 +0330</pubDate>
            </item>
                    <item>
                <title>پارتیشن بندی centos7</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D9%BE%D8%A7%D8%B1%D8%AA%DB%8C%D8%B4%D9%86-%D8%A8%D9%86%D8%AF%DB%8C-centos7-zqj3hnvk4mdl</link>
                <description>سلام به همه ی جیگرا مخصوصا سیس ادمین های گل خیلی ارادتمن همیشه موقع پارتشین بندی لینوکس صدتا تب باز میکردم که چطور پارتشین بندی کنم اما خوب یه فیلم از استاد مرتضی باشسیز دیدم که باعث شد خیلی راحت در حد نیازم روی Oracle VM سیستم عامل centos7 برای آموزش لینوکس و دیتابیس mysql نصب و پارتشین بندی کنم خواستم تجربمو با شما گلا به اشتراک بزارم مخصوصا اون دانشجویی که هر روز بشون میگن فلان لینوکس رو بنصب.اولین اتفاقی که میوفته به شما میگه میخوای پارتیشنت برحسب چی باشه که چهار تا گزینه داره:گزینه ی اول فیزیکال و بقیه لاجیکال حالا الان بهش نمیپردازم چیه بعدا توی نوشته های بعدیم قول میدم مفصل توضیح بدم شما فعلا LVM انتخاب کنید.اولین پارتیشنی که جدا میکنیم /boot هستش و باید فیزیکال باشه چرا چون بایوس که لاجیکال نمیفهمه?اطلاعاتی که توی این پارتشین قرار میگیره کوچیکن و مربوط میشن به بوت سیستم مثله بوت لودر قبلا توی مطلب گذشته به این اشاره کردم.معمولا 200 مگ کافیشه ولی خوب شاید ما بخوایم کرنل جدید اضافه کنیم و قبلی و هم نگهداریم تا این جدیده استیبل شه یا بعضی جاها اذیتمون نکنه اصلا دلم میخواد نگهدارم چشش کور بخاطر همین من یک گیگ میدم که برای آموزشم مشکلی پیش نیاد بوس.فایل سیستم های مختلفی هست اما جدیدترینشون همون xfs پس همینو انتخاب میکنیم.یادتونه ما LVM را انتخاب کرددیم اما الان این خودش Standard Partition شد چرا چون نازتون بشم این فیزیکاله.پارتیشن بعدی / هستش که میشه روت و من بهش 9 گیگ میدم (کلا 15 گیگ خالی کردم) و دقت کنید این میشه LVM.بچه ها دقت کنید لینوکس فقط همون یه پارتیشن بوت رو میخواد بقیه رو مشخص نکنید سیستم عامل میاد بالا و حالا من اینجا اگر دست نگه دارم همه رو میبره زیر روت مثله /var یا /home و...اینم xfs.پارتیشن بعدی میشه swap پارتیشن اشتراکی بین رم و storage هست بیاین یکم موضوع بازش کنیم...قدیما که رم سیستم ها مثلا 64 مگ بود نیاز بود swap به عنوان کش رم روی استورج در نظر گرفته بشه و چون پردازش ها زیاد و کوچیک کوچیک بودن روی رم جا نمیشدن نیاز بوده یه جایی موقت ذخیره بشن پس میومدن یه مقدار از storage رو ورمیداشتن و به عنوان کش رم ازش استفاده میکردن.اون موقع میومدن دو برابر رم swap میزاشتن حالا اگر رم شما دو تا دی گیگ بود دو برابر بش فضا بده اگر نه دو گیگ کافیه حالا توی پروداکشن طرف گیر بود نهایتاااا 8 گیگ بش بده.بعدی میشه /home من بهش دو گیگ میدمبرای /var هم خالی میزارم هر چی مونده میگم مال توخوب بچه ها سوال چرا این فضا ها رو دادم؟ دلم خواست نه چیز ببینید در هر کیسی با توجه به این که اون لینوکس قراره چی بشه مثلا سرور بک آپ شماس سرور مانیتورینگ شماست و.... مقدار حجمی اینا متفاوت میشه.در آخر هم وقتی پینگ گوگل میگیرین از centos میبینید نمیده برای حل این مشکل من ازین مطلب کمک گرفتم شما هم میتونید یه نگا بش بندازین و مشکلتون رو حل کنه(://چون سینگلم اینو توضیح نمیدم هر وقت رل زدم این قسمتو هم آموزشش رو جدا میزارم ولی دلم نمیومد بش اشاره نکنم.</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Tue, 11 Apr 2023 04:33:41 +0330</pubDate>
            </item>
                    <item>
                <title>ساختار دایرکتوری های لینوکسی</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D8%AF%D8%A7%DB%8C%D8%B1%DA%A9%D8%AA%D9%88%D8%B1%DB%8C-%D9%87%D8%A7%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3%DB%8C-sd3tworhp2bb</link>
                <description>سلاااام به گلای توی خونه مخصوصا گلایی که باید خودشون غذا درست کنن و مستقلن و تنها زندگی میکنن?بچه ها در لینوکس که یه سیستم عاملیه که بوی دافارو هم میده اصلا نمیشه ازش دل کند همه چی به صورت فایل دیده میشه حتی دایرکتوری ها هم از نظرو اون فایلن.میخوام به کمک هم یکم راجب ساختار دایرکتوری های لینوکسی گپ بزنیم.خوب آماده شین برای توضیح مهم ترین هاش که به شرح زیر هستن(جمله بندی نابود نه انفجار):bin: توی این دایرکتوری فایل های قابل اجرا یا باینری وجود دارهboot: تمام اطلاعات مربوط به بوت شدن اونجاس مثله بوت لودر و....etc: معمولا فایل های کانفیگوریشن سرویس ها اونجان.dev: تمام دیوایس هایی که به سیستم وصلن و کرنل اونارو شناخته چه فیزیکی چه لاجیکالی کد سخت افزاریش اونجاس.home: هر یوزری یک خونه داره تمام کاربره ها خونشون اونجاست.lib: لایبری های ما اینجاست مثلا لایبری های مورد نیاز برای اجرای فایل های صوتیmnt: توی این دایرکتوری خالیه و برای mount کردن ازش استفاده میکنن.root: اینجا home دایرکتوریه یوزر root هستش.sbin: مثله همون bin هستش ولی فقط فایل های باینری اساسی مثله دستورات روزمره ی پر استفاده شبیه cp و ls و... اونجان.tmp: اینجا دایرکتوری موقته بعد یه مدت خالی میشه مثله قلب پسرا باید خیلی طرف بلد کار باشه که بمونه?usr: این دایرکتوری اطلاعات یوزر هارو نگهداری میکنه مثلا یه یوزر بخواد یه اپ نصب کنه.var: چیزایی که تغییر میکنن اینجاس مثلا فایل های ویوی nginx اینجان.حالا بچه ها اینجا مثلا lib64 ما ندیدیم و نگفتیم دلیلش اینه سعی کردم اصلیا رو بگم.تا درودی دیگر بدروددددد</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Fri, 07 Apr 2023 14:52:47 +0330</pubDate>
            </item>
                    <item>
                <title>سه کامپوننت مهم لایه ی model</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%B3%D9%87-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-%D9%85%D9%87%D9%85-%D9%84%D8%A7%DB%8C%D9%87-%DB%8C-model-i5eewzbvs3ui</link>
                <description>سلام به همه برنامه نویسایی که کیبورد مکانیکی و مانیتور led بزرگ ندارن(((((:امروز میخوام باهاتون راجب سه کامپوننت لایه ی مدل کمی کوتاه کپ بزنیم ببینیم توی این لایه چه اتفاقاتی میوفته، پس گوشیاتون رو سایلنت کنید البته میدونم هممون سینگلیم? ولی خوب با من همراه شین.خوب اجازه بدین من بلند شم از روی صندلی ولی یه گچ بردارم و برم پای تخته سیاه قدیمی اتاقم و براتون یه شکل بکشم آقا شما سیگارتو خاموش کن ??همون طور که میبینید ما توی این لایه ی مدل سه تا کامپوننت مهم داریم:service: این کامپونتت منطق حاکم بر برنامه ی مارو شامل میشه و میشه گفت سنگین ترین لایه ی نرم افزار ما میشه.entity: کلاس مدل ما هستش.da یا repository: یک الگوی ساختاری که به ما اجازه می‌دهد لایه application/business را از لایه persistence جدا کنیم.اما رفتار اینا چطوریه?ریکوست ها اول میاد وارد لایه ی سرویس میشه بعد این لایه ریکوست شما رو میبره توی لایه ی entity میگه داداش این رو برای من مدل دون کن ببینم اصلا چی نوشته این ریکوست سوسک??entity هم میگه باشه و ریکوست رو دیتاشو تبدیل به dto میکنه و بهش تحویل میده da بلند میکنه درخواست رو میفرسته برای da و اونم میره سمت دیتابیس جوابو ازش میگیره و entity میکنه و تحویل میده به سرویس.این مکانیزمی هستش که توی لایه ی مدل همیشه اتفاق میوفته.امیدوارم این مطلب براتون مفید واقع شده باشه.بریم تا گپ کوتاه بعدی? </description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Fri, 07 Apr 2023 14:14:57 +0330</pubDate>
            </item>
                    <item>
                <title>توضیح ساده ی sql injection با جاوا</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-%D8%B3%D8%A7%D8%AF%D9%87-%DB%8C-sql-injection-%D8%A8%D8%A7-%D8%AC%D8%A7%D9%88%D8%A7-e0oyaigbtwyx</link>
                <description>SQL injectionlسلام به همه ی غنچه های زیبای وطنمبعد از مدت ها به نوشتن دوباره گرفتم آنچه تلاش کردم یکی از موقشنگ های آبی یا صورتی فانتزی رو شکار کنم نشد از جاوا هم اینا بد دست ترن...من مثله بقیه نمیام اول بگم sql injection چیه بیاین باهم کمی دست به کد بشیم تا ببینیم چه اتفاقی میوفته و کجا با این پدیده ی زجرآور از دید ما و از دید هکرا جذاب (زاویه ی دید مهمه) روبه رو میشیم.خوب بچه ها ما میخوایم خیلی ساده به دیتابیس وصل بشیم اطلاعات چندتا فلک زده ی بدبختو ببینم.پس ما اول یه پروژه ی maven ای میسازیم حالا باید درایور و دیپندنسیشو اضافه کنیم که بتونیم به کمک اون به دیتابیسمون وصل شیم.فرض بر اینه شما با ابزار maven آشنایین.اضافه کردن dependency دیتابیس mysqlحالا باید یه کد بنویسیم که با استفاده و به کمک این درایور میره میره و اطلاعات کسایی که ما میخوایم برامون میاره.پس اول یه کلاس به اسم SqlInjection میسازیم که شامل سه فانکشن میشه توضیح میدم هرکدوم چیکار میکنه. SqlInjection classpublic SqlInjection()
{
    try {
        Class.forName(&amp;quotcom.mysql.jdbc.Driver&amp;quot);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}در اینجا ما میام توی تابع سازنده یا کانستراکتور درایور مورد نظرمون رو لود میکنیم(البته الان دیگه نیاز به این نیست ولی من برای فهم بیشتر آوردمش.)public void getUserById(String id)
{
    try (

            Connection connection = DriverManager.getConnection(&amp;quotjdbc:mysql://localhost:3306/javase&amp;quot,&amp;quotroot&amp;quot,&amp;quot&amp;quot);
            Statement statement = connection.createStatement();
            )
    {

        String sql = &amp;quotselect * from users where id=&#039;&amp;quot+id+&amp;quot&#039;; &quot;
        ResultSet resultSet = statement.executeQuery(sql);

        while (resultSet.next())
        {
            System.out.println(&amp;quotid = &amp;quot + resultSet.getInt(&amp;quotid&amp;quot));
            System.out.println(&amp;quotname = &amp;quot + resultSet.getString(&amp;quotname&amp;quot));
            System.out.println(&amp;quotusername = &amp;quot + resultSet.getString(&amp;quotusername&amp;quot));
            System.out.println(&amp;quotpass = &amp;quot + resultSet.getString(&amp;quotusername&amp;quot));
            System.out.println(&amp;quot-------------------------------------------------&amp;quot);
        }

    } catch (SQLException e) {
        e.printStackTrace();
    }
}
در اینجا ما میایم به دیتابیس یه کانکشن میزنیم و یه سشن باز میکنیم بهش میگیم دختر خوب mysql جان بیا و به من یوزری که id اینیه که بهت میگم رو بده و اینو هم با این کوئری بهش میگیم:&amp;quotselect * from users where id=&#039;&amp;quot+id+&amp;quot&#039;; &amp;quotخوب حالا نوبت میرسه که ازین توابع در تابع main خودمون استفاده کنیم و اونارو صدا بزنیم:public static void main(String[] args) {
    SqlInjection sqlInjection = new SqlInjection();
    sqlInjection.getUserById(&amp;quot1&amp;quot);
}اینجا ما از کلاس یه شی میسازیم و بعدش خودش تابع سازندشو فراخوانی میکنه و درایور ما لود میشه بعدش بهش میگیم یوزری که id یک هست رو بده.اینجا یه اکسپشن پرت میکنه توی صورتمون میگه: ای برنامه نویس حواس پرت فراموش کار(قطعا بخاطر دغدغه های زندگی این طوری شدیم نه چیز دیگه ای) جداول هات کو شاسکول...اینجاس که ما میریم برای ساخت و مقدار دهی جداولمون که من براتون نوشتم آماده(امکانات رو ببینید هزینه کردماااا)#---------------------------------------create database---------------------------------------CREATE DATABASE javase DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;#---------------------------------------set database---------------------------------------USE javase;#---------------------------------------create table---------------------------------------CREATE TABLE users(	id INT NOT NULL auto_increment PRIMARY KEY,	name VARCHAR(200),	username VARCHAR(200),	pass VARCHAR(200));#---------------------------------add users---------------------------------------------INSERT into users(name,username,pass) VALUES (&#039;mehdi&#039;,&#039;m77&#039;,&#039;m1998m&#039;);INSERT into users(name,username,pass) VALUES (&#039;ali&#039;,&#039;a77&#039;,&#039;a1998m&#039;);INSERT into users(name,username,pass) VALUES (&#039;javad&#039;,&#039;j77&#039;,&#039;j1998m&#039;);INSERT into users(name,username,pass) VALUES (&#039;yasin&#039;,&#039;y77&#039;,&#039;y1998m&#039;); خوب بعد از این اتفاق دیگه ران میکنیم تا نتیجه رو ببینیم و اما نتیجه چی میشه....لبخند موزیانه چرا میزنید بابا دو سه تا خط دیتاس دیگه////:run appخوب همون طور که میبینید اطلاعات طرفو نشون داده.حالا من میام یه فوضولی میکنم دستم اشتباه میخوره و به جای 1 یه عبارت مینویسم به این صورت:sqlInjection.getUserById(&amp;quot5&#039; or 1=1 ##&amp;quot);و اینو اجرا میکنم ازتون دعوت میکنم نتیجه رو ببینید مخصوصا اونایی که موهاشون رنگی رنگیه بقیه هم خداشون بزرگه...چی شد بچه ها؟؟؟به فنا رفتیم همه ی اطلاعات رو نشون داد با این عبارت بله عزیزای دل به این میگن sql injection ((((((:</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Fri, 07 Apr 2023 13:07:44 +0330</pubDate>
            </item>
                    <item>
                <title>part 1 - Java Programming</title>
                <link>https://virgool.io/@MehdiYasnzadeh/part1-java-programming-donr1yrwjb6v</link>
                <description>سلام به همه ی دوستداران و دشمنان #جاوا بخصوص مو صورتیای فانتزیبعد از تغییر سه تا کتاب بالاخره کتاب خودمو پیدا کردم اونم چیزی نیست جز head first ?تصمیم گرفتم هر فصلشو میخونم راجب نکات قشنگش مطلب بنویسم.بچه ها یکم میخوام راجب خود کتاب بگم اصلا برای کیا خوبه چطوریه و.... ببینید بچه ها این کتاب لحن کنکوری و خشک نداره بلکه لحن بسیار منعطف و گاها مطالبش رو با شوخ طوبی خاصی مینویسه((:اما بنظرم این کتاب برای کسی نیست که میخواد جاوا رو از صفر یاد بگیره چرا چون مثلا توی فصل اولش میاد حلقه ها رو میگه بدون اینکه متغییر ها رو گفته باشه پس اگر شما جاوا رو بلد نیستی این جا فیتیله پیچ میشین و کتاب رو پرت میکنید کنار که حق هم دارین?خوب پس این کتاب برای کیه؟ بنظرم این کتاب برای کسیه که یکم جاوا رو بلده حالا شنیده توش یه کامپایلری هست یه JVM هست دیپ نشده توی دیتا تایپ ها که مثلا primitive هست و... و الان میخواد دانشش رو کامل تر کنه یا دانسته هاشو پیوسته کنه.خوب پارت اول ما یه توضیح راجب jvm و java compiler هست که مختصر از نقطه ی شروع تا اجرای کد شما رو میگم و بعد هم یه قسمت جذاب داریم که صندلی داغ بین این دوتاس??What you’ll do in Javaدر اولین حرکت سامورایی کدمون رو مینویسیم کد جاواییمون که شامل متغییر ها کلاس و فانکشن ها هست.حالا با استفاده از کامپایلر جاوا که همون javac هست کدمون رو کامپایل میکنم این آدم متشخص میاد یبار کل کد مارو میخونه و بعد اونو تبدیل میکنه به بایت کد(bytecodes) و فایل جدیدی که ساخته رو با یه ادیتور مثله ادیتور قدرتمند نوت پد ویندوز یا نانوی لینوکس باز کنید با عکس زیر روبه رو میشید?بله عزیزای من همون طور که میبینید این bytecodes اون کدی بود که نوشته بودیم.حالا این بایت کد رو میدیم به ماشین مجازی جاوا تا اجرا کنه کد رو برامون.برای اجرای برنامه‌های نوشته شده و کامپایل شده به زبان دیابت زای? جاوا نیاز به برنامه‌ای هست که بهش ماشین مجازی جاوا (Java Virtual Machine) یا به اختصار JVM گفته میشه. این ماشین کدهای کامپایل شده به زبان جاوا را گرفته و اونارو اجرا می‌کنه.بعله عزیزان این روند اجرای کدهای سم نه چیز اینترپرایز ما توی جاوا بود.Fireside Chatsسلامی دوباره به جاوا کارای عزیز مخصوصا مو سبزای فانتزی?با سری برنامه های صندلی داغ یا مناظره های خودمونی (دیگه نزدیک تایتله قبول کنید ناموسا) در خدممتون هستیم از مهمان های عزیزم دعوت میکنم خودشون رو معرفی کنن.کامپایلر: سلام به همه ی بینندگان عزیز من javac یا همون جاوا کامپایلر هستم خیلی خوشحالم که امشب در خدمت شما و بینندگان عزیزمون هستم.?ماشین مجازی جاوا: سلامممممم به همه ی شیطونای توی خونهههه من ماشین مجازی جاوا یا همون Java Virtual Machine هستم از خوبای جاوا شما میتونید منو JVM صدا کنید.?مجری: خوب برنامه رو با این سوال شروع میکنم که کدوم کی از شما مهم تره؟؟؟ماشین مجازی جاوا: شوخیتون گرفته معلومه که من مهم ترم من همون کسیم که واقعا برنامه ی شما رو ران میکنه اما کامپایلر صرفا به شما یه فایل میده که میتونید پرینتش کنید و بزارید برای آستر قفس پرندتون یا بزارینش بک گراند صفحه یا آتیشش بزنید یا هر چیز دیگه ای. هیچ کاربردی نداره تا من اجراش کنم.?کامپایلر: اصلا این لحن رو درک نمیکنم☹️ماشین مجازی جاوا: و اینکه اصلا کامپایلر شوخی سرش نمیشه اگر یه خطای کوچیک داشته باشی ازت میخواد اونو رفع کنی حتی اگر ازت ساعت ها زمان بگیره حتی اگر این یک خطای سینتکسی باشه مثله سیمی کالن....کامپایلر: ببخشید اما بدون من دقیقا چی ران میشه یک دلیل داشته که جاوا ازین طراحی برای اجرای برنامه هاش استفاده کرده (داشتن کامپایلر برای بایت کد کردن).اگر جاوا این کارو نمیکرد تو خودت مجبور بودی زمان اجرا یا runtime کد هارو مستقیم از سورس کد بخونی و ترجمه کنی و سرعت اجرای جاوا به طرز مفتضح و خنده داری آهسته و کند میشد??ماشین مجازی جاوا: من نگفتم تو کاملا بی استفاده هستی اما جدی تو چیکار میکنی؟؟ یه برنامه نویس خودش میتونه بایت کد هارو بنویسه? رفیق تو یه مدت دیگه کارتو از دست میدی ها?کامپایلر: ببخشید اما این دیدگاه احمقانسسسس حرفت زمانی درسته که تمام فرمت های بایت کدی که میاد سمتت درست باشه حتی اگر از یک کامپایلر جاوا بیرون نیومده بود، که این در عمل این غیرممکنه.نوشتن بایت کد به وسیله ی برنامه نویس مثله این که بری مسافرت بعد به جای عکس گرفتن از منظره و لحظه هایی که دوست داری بیای اونا رو نقاشی کنی، بله این یک هنره اما کدوم شاسکولی این راه رو انتخاب میکنه و ممنونت میشم اگر منو رفیق خطاب نکنی((((:ماشین مجازی جاوا: (با لبخند) اما تو هنوز بهم نگفتی واقعا چیکار میکنی!!کامپایلر: ببین جاوا یک زبان قویییی در تایپ هاست و این یعنی من اجازه نمیدم متغییر ها مقادیر اشتباهی از دیتا تایپشون نگه دارن مثلا اگر استرینگه بیاد int نگه داره این یک ویژگی حیاتی برای safe بودن جاواس و من میتونم جلوگیری کنم از اتفاق افتادن بیشتر این خطا ها و من....ماشین مجازی جاوا: اما بعضی از اونا از دستت در میره و من مجبورم ClassCastException پرت کنم و بعضی وقتا ملت رو وادار میکنم که نوع اشتباهی از چیزی را در آرایه‌ای قرار دهند که به چیز دیگری اعلام شده است و...کامپایلر: حاجی هنوز حرفم کامل تموم نشده بوداااا? بله بعضی از خطاها زمان ران تایم ظاهر میشن اما بعضی ازینا بخاطر ویژگی dynamic binding جاواس. برنامه نویسای جاوا میتونن یه آبجکت جدید رو بسازن که برنامه نویس اصلی اصلا اونا رو نمیشناسه پس من باید یکم از خودم انعطاف پذیری نشون بدم.اما کار من اینه که اجازه ندم هیچ چیزی هیچ چیزی که توی ران تایم اجرا نمیشه به سمتت بیاد معمولا میتونم به برنامه نویسا بگم چه زمانی یه چیزی کار نمیکنه مثلا وقتی میخوای یه شی از سوکت بزاری توی کد اما اشتباهاا یه شی از آبجکت Button میزای من اینجا خودمو به خاک و خون میکشم و به کاربر خطا میدم و ران تایم تو رو ازین خطا محفوظ نه میدارم.ماشین مجازی جاوا: قبوله اما راجب سکیوریتی یا امنیت چطور؟؟؟ نگاه کن همه ی کار های امنیتی رو من انجام میدم و تو فقط یه چک میکنی سیمیکالن هارو؟؟؟ شوخی میکنی؟؟؟؟ واقعا ریسک بزرگیه????کامپایلر: ببخشید اما منا خط اوللللللللل این جبهه ی دفاعی هستم همون طور که قبلا گفتم خطاهای دیتاتایپ میتونه تو رو متوقف کنه و من جلوی اونارو الان میگیرم و همچنین من جلوگیری میکنم از جاهایی که کدش نباید تغییر کنه مثلا از صدا زدن یا فراخوانی متد های private جلوگیری میکنم و جلوگیری میکنم از دیدن کد هایی که ملت نباید ببینن (راست میگه اگر کدت کامپایل شده باشه هیچی نمیفهمی ازش) مثلا جلوگیری میکنم از دیدن کلاس های حساس داده. میتونم ساعت ها راجب کارم برات توضیح بدم.?ماشین مجازی جاوا: به هر حال منم تمام این کار هارو انجام میدم اگر چه مطمئن میشم کسی یواشکی اون کد های کامپایل شده رو قبل اجرا تغییر نمیده.کامپایلر: احسنت اما همون طور که من قبلا اشاره کردم اگر من جلو گیری نکنم از ۹۹ درصد این خطا ها تو قطعاااااا به زمین گرم میشنی و متوقف میشی و حالا هم دیگه وقت کمه اگر موافق باشی بقیه ی مناظره رو بزاریم برای بعدا نظرت؟ماشین مجازی جاوا: حله داداش میتونی روی من حساب کنی.خوب گلای توی خونه این پارت هم تموم شد من الان دیگه شروع میکنم به خوندن فصل دوم اینکه کتاب که راجب سفر به روستای آبجکتیو ها هست و بعد براتون پارت دومم این مجموعه آموزش هارو تدارک میبینم.امیدوارم از نوشتم خوشتون اومده باشه اگر بهتون کمک کرده یا خوشتون اومده دعا کنید رل پیدا کنم سینگلی سخته?</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Wed, 07 Sep 2022 22:52:02 +0430</pubDate>
            </item>
                    <item>
                <title>MySQL access from all hosts</title>
                <link>https://virgool.io/@MehdiYasnzadeh/mysql-access-from-all-hosts-xu1deactdwgj</link>
                <description>مدت ها پیش با #mysql کار میکردم و میخواستم دسترسی ریموت از بیرون برای دیتابیسم فعال کنم اما علی رغم اینکه توی فایروال پورتش باز کرده بودم اما بازهم دسترسی نداشتم الان بعد از مدت ها بهش برخوردم و راه حلشو پیدا کنم دوست داشتم باهاتون به اشتراک بزارم راه حلش اینه که بیاین توی تیبل host برای هر یوزر دسترسی به همه ی #ip ها رو باز کنید یا برای یه #ip مشخصی اون دسترسی رو بدین قبلش هم میتونید چک کنید اصلاً این دسترسی ها برای کیا باز هست. https://stackoverflow.com/questions/19101243/error-1130-hy000-host-is-not-allowed-to-connect-to-this-mysql-server </description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Tue, 30 Aug 2022 15:48:17 +0430</pubDate>
            </item>
                    <item>
                <title>RabbitMQ</title>
                <link>https://virgool.io/@MehdiYasnzadeh/rabbitmq-g08rpn3ta81s</link>
                <description>سلام به همه ی موقشنگای برنامه نویس امیدوارم که حال دلتون خوب و لبتون خندون باشهامروز که نه امشب میخوام براتون راجب RabbitMQ و روش یا انواع استفادش بنویسم امیدوارم که بهتون کمک کنه.خوب بچه ها RabbitMQ یک سیستم مسیجینگه که میتونه هم مسیج دریافت و هم ارسال کنه و به شما این تضمین رو بده که پیام های شما ارسال میشه.اگر بخوام براتون به یه چیزی تشبیه کنمش دقیقا شبیه یه شرکت پست هست که به شما این تضمین رو میده که آقا حضرت عباسی من همه ی بسته هاتو قول میدم توی کمترین زمان برسونم ما هم میگیم دمت گرم.تنها تفاوت اینه که اینجا دیگه با بسته ی پستی سروکار نداریم بلکه با مسیج و پیام سروکار داریم.قرارداد: بچه ها اینجا به کسی که پیام رو ارسال میکنه producer و به کسی که پیام رو دریافت میکنه یا گوش میده که پیام چی میاد consumer میگن.خوب بیام راجب مفاهیم و انواع استفاده.Work queuesتوی این مفهموم ربیت میاد میگه producer من میتونه تسک هاشو بین consumer های متفاوت تقسیم کنه و هر تسک دقیقا به یکیشون اساین بشه یعنی همزمان روی یه تسک دوتا ورکر کار نمیکنن و میاد تضمین میده اگر یکی از اینا loss بشه تسکشو ربیت میره میده به یه consumer دیگه انجام بده.این تقسیم تسک هارو جالبه بدونید با الگوریتم معروف round-Robin انجام میده یعنی میره سمت consumer میگه داداش وضعیتت چطوره میگه ناموساااا سرم شلوغه میگه اوکی میره بعدی میگه تو چی میگه نه من اوکیم اینجا میگه پس بیا این تسک دست تو باشه یه معرفت بزار زمین انجامش بده.ببینید دستتمون هم باز میزاره میتونید بش بگین به هر consumer فقط یه تسک اساین کن یا کلا فقط به دوتا شون تسک اساین کن و بقیه رو خلوت نگهدار.Publish/Subscribeتوی این مفهوم اتفاقی که میوفته پیام ها توسط producer به تمام consumer ها ارسال عمومی میشه و صف ارسال بعد از عملیات پاک میشه.این کار به کمک exchange از نوع fanout انجام میشه.یه ارتباط اکتیوی بین producer و exchange ایجاد میشه که بهش میگن binding (در واقع بش نخ میده مخشو میزنه اوکی میشه(((((: خدا نصیب همه ی سینگلا این ارتباط بایند رو کنه )Routingتوی این مفهوم ربیت میگه آقا هر مسیج رو براش یه binding-key مشخص کن من با همون ارسال میکنم حالا هر consumer که routing-key با این کلید بایندینگ یکی بود میتونه مسیج رو دریافت کنه.توی اینجا exchange که به ما کمک میکنه از نوع direct هست.Topicsخوب توی این قسمت exchange از نوع topic به ما کمک میکنه مسیج های ارسال شده از سمت producer رو تایتل گذاری یا تاپیک بندی کنیم و بگیم این مسیجی که داره میاد شامل لاگ سرعت و رنگ و نژاد یه هاپو هستش بعد بیام داخل consumer بگیم مثلا اونی که فقط مثلا سرعت و نژاد رو داره من میخوام یا همشو بده و یا ...این نام گذاری یه پترن خاصی داره که میتونید توی لینکی که توی تایتل همینجاس ورش دارین.Remote procedure call (RPC)فکر کنید ما میخوایم یک مسیج رو بفرستیم و صبر کنیم تا جوابشم به ما داده بشه اینجا میتونیم از RPC استفاده کنیم .هر  مسیجی هم توی اینجا یک correlationID داره که بفهمیم کدوم جواب مال کدوم درخواسته.خیلی شبیه http هست که هر ریکوست یه ریسپانس هم داره حتی مثله اون contentType هم داره.Publisher Confirmsبچه ها اینجا ریبیت یه کار باحال میکنه میگه وقتی یه چیزی ارسال کردی صبر کن من با یه فلگ یا پرچم بهت بگم که پیامت با موفقیت ارسال شده یا نه و این کارو سینک انجام میده پس اینجا سرعت ما کم میشه اما من یه جا خوندم جدیدا این کارو با فیوچر ها انجام میده که شما معطل نبونید رد شین و یه ترد مثلا بزارین ببینید اصلا فلگ چی میشه.امیدوارم این مطلب مختصر براتون مفید باشه خوشحال میشم اگر جایی اشتباه گفتم بهم متذکر بشین تا سریع ریفکتور و تصحیحش کنم.خدا ایشاالله حالتون رو بپرسه ((((:</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Thu, 28 Jul 2022 23:58:11 +0430</pubDate>
            </item>
                    <item>
                <title>spring-cloud-netflix-eureka</title>
                <link>https://virgool.io/@MehdiYasnzadeh/spring-cloud-netflix-eureka-zn7rhqt3blpy</link>
                <description>سلام به همه ی گلای توی خونه من بعد از یه وقفه ی طولانی برگشتم...امروز میخوام خیلی کوتاه راجب Eureka صحبت کنم.سعی میکنم خیلی ساده و روون توضیح بدم که ه‍مه متوجه بشن و از کدی هم استفاده نمیکنم.همون طور که از اسمش معلومه یه ربطی به Netflix داره بله نتفلیکس اینو برای استفاده خودش ساخت و اون موقع محبوب دل پیر و جون شد اما این عشق چه میکنه بریم با هم ببینیم:فرض کنید که یه ماژول توی معماری ماکروسرویس دارین و کارش نگهداری اطلاعات دانشجویان با پورت 8081 هست حالا تعداد ریکوست ها بهش زیاد میشه مجبوری یه نود دیگه بسازی ازش اینجا پورتشو حال میکنی بزاری 5051 الان بخوای به هر دوتای اینا ریکوست بزنی باید توی کد بیای آدرس هر دو تا که پورت هاشون متفاوته رو هارد کد کنی.اما یه راه بهتر هست یه سیستم هایی هستن به نام discovery system اینا دقیقا شبیه کسایی هستن که دم مراسمات عروسی دم در می ایستن?? عملکردشون این افراد به این صورته که قبل از ورود به عروسی باید باشون سلام کنی و نگات میکنن کجا میشینی سیستم های دیسکوری هم همینن در لحظه ی استارت، ماژول ها میرن باشون یه سلام علیک میکنن بعد بعد اونا مشخصات اون ماژول رو حفظ میکنن و نگهداری میکنن پس هر دوتا نود بالا میتونن اینجا نگهداری بشن و موقعی که باشون کار داریم بریم بگیم عمو یورکا میشه بگی ماژولی که اطلاعات دانشجویان رو نگه میداره چندتا نود داره و آدرسشو بدی اونم میگه حتما اول برای عمو یه شعر بخون?بله گلای توی خونه این طوری نیازی به هارد کد هم نیست((:شرمنده اگر کمی و کاستی مطلب داره که قطعا داره چون دارم از توی مترو براتون این پست رو با گوشی مینویسم باشد که رستگار شوید.</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Wed, 13 Jul 2022 07:19:08 +0430</pubDate>
            </item>
                    <item>
                <title>اسپرینگ قسمت اول</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%A7%D8%B3%D9%BE%D8%B1%DB%8C%D9%86%DA%AF-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-l5bn2peei9kt</link>
                <description>سلام به همه ی گلای توی خونه ..... من با تومبون راه راه فاق پلاس دوباره اومدم دور هم یه مطلبی رو بنویسم و شما بخونید و بخندید یاد بگیرید.این مطلب رو هدیه میکنم به هر کسی که با جمله ی قبلی یه لبخندی زد?خوب دوستان من یه مدته این کتاب زیبا و پر محتوا رو شروع کردم و با سرویس شدن به خوندن ادامه میدم چون زبانم خوب نیست خیلی اذیت میشم اما تصمیم گرفتم هر قسمتشو که خوندم و خزان شدم برای رویش دوباره بیام اینو برای دوستان یکمشو تعریف کنم که دوره هم یه چیزی یاد بگیریم یا اگر من جایی رو اشتباه فهمیدم سروران راهنماییم کنن باشد که رستگار شویم که توی ایران بعیده.اول این کتاب میاد راجب تاریخچه ی اسپرینگ کمی صحبت میکنه که اصلا چیشد اسپرینگ به وجود اومد قبلش چیا بود و مشکلاتشون چی بود که باعث شد کم کم کم رنگ بشن. یکی از اینا EJB بود که وقتی اومد واقعا سرو صدای زیادی به پا کرد و جالبه که هنوزم نفس میکشه ولی خوب خیلی نسبت به قبل کم رنگ شده یکی از مشکلاتی که باعث کم رنگ بشه این بود که یسیری چیزا رو به اجبار میگفت باید ایمپلیمنت کنی میگفتی نمیخوام میگفت زر نزن پیاده کن وگرنه هر چی دیدی از چشم خودت دیدی بریم یه نمونه ازین کاردستی رو ببینیم ?میبینید که برای اینکه یه تکست ساده رو برگردونیم ما مجبوریم این همه چیزی که استفاده نمیکنیم پیاده کنیم و بزاریم باشه/:البته گاها ممکنه به این توابع نیاز داشته باشین اما خوب الان نداریم?اینجا بود که خستگان دو عالم برنامه نویسای عزیز رو میگم گفتن بابا جمع کنید این مسخره بازی های جذاب رو... این بود که یهوووو اسپرینگ اومد من همیشه اسپرینگ رو به یه دختر تشبیه میکنم چون غیر قابل تصور قوی و انعطاف پذیره و صد البته اینترپرایز?این دختر قصه ی ما در ابتدا این مشکلی که بالا گفتم رو حل کرد.به همین راحتیدیدید تمامی اون توابع بلا استفاده برای این کیس خاص حذف شد.این اسپرینگ دوتا ویژگی ناز داره :dependency injection (DI)  aspect-oriented programming (AOP)خوب این ویژگی ها چیستند و چه کمکی به ما میکنن اول توی این قسمت تزریق وابستگی رو میخوام از کف با جاوا بگم میخوام توی این آموزش هایی که میزارم فقط از بیس بگیم بیایم بالا هم چلنجی برای خودمه و هم اینکه بنظرم یاد گیری میتونه بهتر و عمیق تر باشه.خوب دوستان فک کنید توی یه کلاس شما بخواید از ویژگی های یه کلاس یا بهتره بگم از توابعش استفاده کنید شما دوتا راه توی عشقم جاوا دارین بریم این دوتا راه رو ببینم که هر دو به کمک تابع سازنده یا constructor هست یکبار با آرگمان یکبار بدون آرگمان.خوب حالا سوال اقا مهدی ما از کجا بفهمیم واقعا این اینجکت شده ؟ میتونیم اینجا از ماکیتو کمک بگیریمحالا ماکیتو چیه ؟ ماکیتو یکی از ابزار ها شایدم نشه گفت ابزار یکی از کتابخونه های تست نویسی توی اسپرینگه که به ما کمک میکنه یسری تست هایی با مقادیر توهمی انجام بدیم مثلا شما میخوایم یه تابعی رو تست کنید که توش وصل میشی به دیتابیس اینجا ما به کمک ماکیتو میایم میگیم فرض کن کانکشن زدی و دیتا فچ شد پس کانکشن واقعی زده نمیشه یه اموزش بی نهایت قوی راجبش استاد رامین زارع سلطان اسپرینگ ایران تدارک دیدن که من لینکشو میزام اینجا دوست داشتین میتونید برین ببینید.اینجا میاد Quest رو ماک میکنه یعنی واقعی ازش شی نمیسازه بعد میاد میدتش به کلاسش حالا میاد بهش میگه وقتی من mockQuest رو صدا میزنم آیا واقعا یکبار فانکشن embrak صدا زده میشه. ماکیتو میگه بله بله که صدا زده میشه چی فکر کردی.خوب اسپرینگ اومد گفت این اینجکت شدن و ساخت شی رو به عهده ی من بسپارید.سوال چطور؟؟؟ الان بهتون میگم.میاد میگه یه فایل کانفیگ اول بساز و بهم توش بگو از چه کلاسی میخوای برات شی بسازم و اینجکت کنم.همون طور که میبینید این کانفیگ فایل در قالب xml اما خودش قول داده که پیاده سازی با انوتیشن رو بگه ببینید اومده دوتا کلاس BraveKnight &amp; SlayDragonQuest رو بهش داده و گفته برام ازشون bean بساز .حالا شما باید این فایل رو بدین به application context چرا؟ چون در اسپرینگ این کانتکس هست که تمامی بین ها رو میسازه و اونا رو لود میکنه و بهم متصل میکنه. خودمونی بگم مسئول سیم کشی اسپرینگ و وصل کردن سیم ها بهم کانتکسه.حالا چطور این کانفیگ فایل رو بدیم به کانتکس ?ببینید اینجا بهش فایل رو داده و بعد از کانتکس خواهش کرده یه شیء از Knight بهش بده و بهشم میاده.واقعا بابت تمام غلط های املایم معرت میخوام و اینکه اگر کسی خوند و خیلی متوجه نشد بدونید مشکل از بیان منه نه گیرایی شما در این جهان همه ی ما بینظیریم فقط باید به خودمون اعتماد کنیم امیدوارم که از خوندن این مطلب لذت بردیه باشین.اسپکت رو توی قسمت بعدی میگم چون هنوز وقت نکردم شروعش کنم و بش مسلط شم.دست علی یارتون خدانگهدارتون❤️</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Wed, 03 Nov 2021 23:39:22 +0330</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی Reactive  و event-driven چیست؟</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-reactive-%D9%88-event-driven-%DA%86%DB%8C%D8%B3%D8%AA-r115rvzrgyae</link>
                <description>سلام به گلای توی خونه امیدوارم حال دلتون خوب جیبتون پر پول باشه ?خیلی وقت بود میخواستم بیام و در مورد ریاکتیو و برنامه نویسی رویداد محور کوتاه صحبت کنم اما واقعا وقت نمیکنم ترم اخر زندان ببخشید دانشگاه هستم (کارشناسی) و دارم روی پروژم کار میکنم همچنین دغدغه های کار و سینگلی و... هم هستنامروز هر طور بود اومدم توی ویرگول و شروع کردم به نوشتن (:خوب بچه ها میخوام بازم با یه مثال ریاکتیو و برنامه نویسی رویداد محور رو توضیح بدم امیدوارم که همه ی سروران متوجهش بشن و اما اگر نشدن یقین داشته باشن که من بد توضیح دادم.توضیح من بسیاررررررر ساده و بیسیکه نمیخوام خیلی دیپ بشم در حدی که اگر یه جایی شنیدین بدونید چی به چیه و اون قد راجبش گنگ نباشید.اول با مثال عامیانه شروع میکنم ?فرض کنید وسط تابستونه و شما دارید از گرما میمیرین پوشیدن تمبون و رکابی (برای خواهران تاپ و شلوارک) نشستین اما پاسخگو نیست میرید و کولر رو روشن میکنید در اینجا پدرررررر از وسط هال به روشن شدن کولر واکنش میده اینجا پدر شما به یک اتفاقی یا رخدادی یا event خاصی حساسه و به محض رخ دادن اون میاد و یه رفتاری رو از خودش نشون میده مثالا میاد در مورد اینکه هیچ تضمینی نیست بار بعد از خونه میرید بیرون موقع برگشت دری به روی شما باز بشه توضیح میده?پس ما میتونیم کدی بزنیم که به یسری اتفاقات حساسه و وقتی رخ داد متناسب با اون قسمتی از کد شما وارد عمل بشه... به این میگن برنامه نویسی رخ داد محور یا event-driven و اما برنامه نویسی ری اکتیوفک کنید میخواین یسری عکس رو از دیتابیس بگیرین (به والله میدونیم نیازی به ذخیره توی دیتابیس نیست میتونیم اونا رو توی سرور ذخیره کنیم و لینکشو سیو کنیم)حالت عادی میان چیکار میکنید میگین همه ی عکسا رو بده مثلا توی اسپرینگ (دخترم) هایبرنیت میره همه ی اینارو از دیتابیس میگیره یه session توی رم باز میکنه همه ی اینارو کش میکنه میده ما خوب این طوری دهن رم سرویس میشه و شاید حتی رم لیویک (رم پرشده) هم بده فاجعه رو این طور فرض کنید که ریکوست های سایت هم بالاس اسپرینگ میاد میگه خوشتیپ بیا بهم بگو مثلا یک صفحه از این عکسارو بده بهش میگن pagination و تا حدی فضای رم کمتر اشغال میشه ولی هنوز قابل قبول نیست...در اینجا ری اکتیو میاد میگه: موقشنگا بیاین کارو بسپارین به من (: یه ایده میده میگه آقا من به دیتابیس میگم هر عکسی آماده شد بهم بده و نگه نداره بعد همه رو باهم بده و هرکدومو مثلا توی ترد های مختلف بده پس بلاک نمیشن یعنی چییعنی فک کنید یکی ازین عکسا خراب بود این طوری دیگه قرار نیست هیچی نده همه رو میده و فقط اون یکی رو نمیده سرعت خدا (اگر بش ریسورس خوب بدی) مشکل رم هم حل ? دیگه چی میخواییییین??امیدوارم مطالبم درست باشه ولی اگر هم نبود به محض اینکه کامنتی مخالف گرفتم راجبش تحقیق میکنم و مطلبمو متناسب با اون آپدیت میکنم.شاید من خیلییییی دیر شروع کردم به مطالعه و واقعا هم سخته آسون نیست اما مهم تلاش آدماس مهم اینه جلوی خودت شرمنده نباشی بهتون پیشنهاد میکنم حتماااااااا کتاب بخونیدددددد.هر رفتنی رسیدنی نیستاما برای رسیدن راهی جز رفتن نیستدر بن بست هم راه آسمان باز استفقط باید پرواز را آموخت....</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Tue, 28 Sep 2021 22:01:54 +0330</pubDate>
            </item>
                    <item>
                <title>blocking vs nonblocking(synchronous vs asynchronous)</title>
                <link>https://virgool.io/@MehdiYasnzadeh/blocking-vs-nonblockingsynchronous-vs-asynchronous-ucdzkeye2l9w</link>
                <description>synchronous vs asynchronousسلام به همه ی گلای توی خونه امیدوارم که حال دلتون خوب و جیبتون پر از پول باشه?خوب دوستان عزیز یه سوال فابریک توی همه مصاحبه ها  پرسیده میشه اونم اینه : تفاوت  synchronous و asynchronous چیه؟؟?خوب بچه ها من میخوام تفاوت این دو رو ، با یک مثال ساده که خودم از مهندس صیفوری عزیز یاد گرفتم توضیح بدم.فرض کنید سه شخص میرن رستوران میخوان غذا سفارش بدن ، گارسون میاد سفارش ها رو بگیره ، ببینید اگر گارسون بیاد اول سفارش شخص اول رو بگیره بده به آشپزخونه و سفارش بقیه رو نگیره صبر کنه تا سفارش شخص اول آماده بشه غذاشو بده بعد بره سراغ نفر دوم سفارشش رو بگیره و منتظر بمونه تا سفارش شخص دوم آماده بشه بعد غذای اونو تحویل که داد بره سفارش نفر سوم رو بگیره ، در این صورت رفتار  synchronous گونه یا بلاکینگ داشته. دقیقا مثله سمت چپ عکس ببینید اول یه درخواست فرستاده بعد منتظر شده تا جواب بگیره و کار دیگه ای توی این مدت نکرده فقط منتظر جواب درخواستش مونده.مثلا بچه ها جاوا به صورت دیفالت رفتار synchronous داره یعنی بالا سره پردازش میمونه تا تموم بشه یعنی main thread رو به شما میده.حالا اگر اون گارسون عزیز بیاد سفارش نفر اول رو بگیره بده آشپزخونه و بعد صبر نکنه تا غذای شخص اول آماده شه بیاد برگرده و سفارش نفر دوم رو هم بگیره اونم بده به آشپزخونه و بعد صبر نکنه سفارش نفر سوم رو هم بگیره بده آشپزخونه تا سفارش اونم آماده کنن در این صورت گارسون رفتاری asynchronous گونه یا nonblocking داشته دقیقا مثله سمت راست شکل ببینید اومده یه درخواست داده منتظر جوابش نمونده رفته کاراش رو ادامه داده تا بعد که جواب درخواستش رو گرفته یا بالا سر درخواست نمونده تا جواب بگیره یه پردازش دیگه ای رو ادامه داده.بچه ها جاوا اسکریپت رفتار asynchronous داره و بابت این رفتارش هم بسیار زبان زد و معروفه.امیدوارم تونسته باشم تفاوت blocking vs nonblocking(synchronous vs asynchronous) رو به زبون ساده بگم?. بازم از مهندس صیفوری بابت توضیح ساده و روانشون متشکرم امیدوارم بتونم یه روزی زحمت هایی که برای ما میکشن رو جبران کنم.❤</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Wed, 30 Jun 2021 01:51:26 +0430</pubDate>
            </item>
                    <item>
                <title>اندروید یا بک اند مسئله این است...</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%A2%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%DB%8C%D8%A7-%D8%A8%DA%A9-%D8%A7%D9%86%D8%AF-%D9%85%D8%B3%D8%A6%D9%84%D9%87-%D8%A7%DB%8C%D9%86-%D8%A7%D8%B3%D8%AA-wc7s7zip6nh7</link>
                <description>سلام به همه ی دوستان عزیز خیلی وقته میبینم بچه ها وقتی خوندن java se رو تموم میکنن بین دو راهی اندروید و برنامه نویسی سمت سرور میمونن که کدومو انتخاب کنن امروز که نه امشب (هنوز تکالیف پایتون رو هم ننوشتم??) دوست دارم یه مقایسه ی کوتاه بین این دو عزیز داشته باشم.خوب مستقیم میریم روی اصل مطلب (:اگه بک اند رو انتخاب کنید ، حجم تکنولوژی هایی که باید یاد بگیرید خیلی زیاد میشه ، فقط اسپرینگ نیست، شما باید هایبرنیت رو هم یاد بگیرید، غیر از اون باید دیتابیس رو خوب بلد باشید و حد اقل یه دیتابیس relational و یهnoSql رو خوب بلد باشید،  یه کلیاتی از امنیت نرم افزار باید بدونید و هم چنین انجینیکس، داکر و کوبرنتیس، تکنولوژی های صف مثل rabbiMQ کافکا و...، مباحث معماری ماکروسرویس و کلی چیز دیگه .البته همه اینایی که گفتم ممکنه اول راه نیازتون نباشه ولی یه بک اند کار خوب باید همه اینا رو بلد باشه . اگه اندروید رو انتخاب کنید باید ذوق طراحیتون هم خوب باشه و ux هم بلد باشید ولی مسیر یادگیری اندروید خیلی خیلی کوتاهتره ، فایربیس هم روش خیلی حساب باز  نکنید چون فیچرهای درست حسابیشون پولیه و ممکنه شما دو ماه کد بزنی و برسی به یه نیازمندی و بعد ببینی اون فیچر پولیه. البته اگر خارج کشور هستید مشکلی نیست ولی داخل کشور که خودتون میدنید کاملا ایزوله هست و کلی مشکل وجود داره توی پرداخت.از نظر حقوق توی ایران همه شبیه قحطی زده های سومالی هستن الان ممکنه خیلیا بیان بگن نه ما خیلی خوب پول در میاریم ولی من منظورم اکثریته نه اقلیت.به توجه به کامنت دوستان عزیز به این نتیجه رسیدم یه ادیت مثبت توی نوشتم بدم ببینید بچه ها در هر بخش از برنامه نویسی شما میتونید تا دسته دیپ بشین اون قدر دیپ بشین که پایان نداشته باشه اندرویدهم ریاکتیو میتونن کد بزنن هم دیتابیس دارن هم مباحث مدیریت رم مطرحه هم باید اکوسیستم و درک کنن و خیلی هم باید به‌روز تر از بک اند باشن هر دو بخش اندروید و برنامه نویسی سمت سرور میتونه به دانش شما در این زمینه برنامه نویسی کمک شایانی کنه. این انتخاب 99 درصد به علاقه ی شما و روحیتون بر میگرده چون محیط بک اند بسیاااااررررر خشکه خیلی خشک اما اندروید این طوری نیست تغییرات رو لمس میکنید و میبینید ، این خیلی مهمه که تغییرات رو لمس کنید و ببینید و باهاشون ارتباط برقرار کنید.یکی از دوستان هم گفته بود اگر دانش فنی خوبی ندارید مطلب ارائه ندین باید بگم دوست عزیز مطلب به اشتباه ارائه دادن خیلی بهتر از هیچی ارائه ندادن هست چرا چون مطالب ما که همش اشتباه نیست بخشیش از اون اشتباهه و اون هم با نظر دوستان قطعا درست میشه و باعث میشه مطلب به خیلی کمک کنه.توی این هفته فک میکنم سومین پستم باشه خیلی دوست دارم بیشتر بنویسم ولی کار و درس و ...  زمان مارو قورت دادن اما سعی میکنم توی تایم هایی که به دست میارم بنویسم اگر یک خط از مطالب من به کسی کمک کنه برای هم این دنیام هم اون دنیام کافیه...whille(1==1){print(&quot;بهترین ها رو براتون آرزو میکنم&quot;);}</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Sat, 03 Apr 2021 01:50:33 +0430</pubDate>
            </item>
                    <item>
                <title>مختصری از سیستم عامل ها و موارد استفاده ی آن ها</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D9%85%D8%AE%D8%AA%D8%B5%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B9%D8%A7%D9%85%D9%84-%D9%87%D8%A7-%D9%88-%D9%85%D9%88%D8%A7%D8%B1%D8%AF-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DB%8C-%D8%A2%D9%86-%D9%87%D8%A7-drsbimsbi3zq</link>
                <description>سیستم‌عامل‌های مشهور رایانه ای به شرح زیر است:سیستم عامل‌های شرکت مایکروسافت· مایکروسافت داس· ویندوز xp· ویندوز ویستا· ویندوز ۷· ویندوز ۸· ویندوز ۱۰سیستم عامل‌های شرکت اپل· اپلProDOS· مک او اس (MacOS)· مک او اس ایکس (MacOS X/OS X)توزیع‌های لینوکس· MX Linux· Manjaro· اوبونتو· دبیان· فدورا· رد هت لینوکس (تجاری) یا RHELتوزیع‌های بی.اس. دی· FuryBSD· FreeBSD· OpenBSD· FreeNAS· BSDRPمینیکس· مینیکس ۳دیگر· پلن ۹ از آزمایشگاه‌های بل· هایکو· سولاریس· z/OS· AmigaOSتاریخچه ها :سیستم عامل مایکروسافت : MS-DOS در ابتدا توسط مایکروسافت برای IBM ساخته شد و سی عامل استاندارد برای رایانه های شخصی سازگار با IBM است. نسخه های اولیه DOSبسیار ساده بودند و مشابه سیستم عامل دیگری با نام CP / M بودند. نسخه های بعدی به طور فزاینده پیچیده شدند، زیرا ویژگی های سیستم عامل های مینی کامپیوتر را شامل می شدند.سیستم عامل‌های شرکت اپل :یونیکس :  یونیکس نام یک سیستم عامل پایه است که توسط کن تامسون، دنیس ریچی، برایان کرنیگان، داگلاس مکیلروی مایکل لسک و جو اوسانا در آزمایشگاه های بل متعلق به AT&amp;T ایالات متحده توسعه یافت.یونیکس مادر تمام سیستم عامل هایBSD است که در برکلی کالیفرنیا لایسنس شدند. اگر چه بنیاد یونیکس آنها را تائید نمی کند اما هسته آنها بر پایه یونیکس است. حتی OSX هم از یونیکس برخاسته است.مکینتاش : Mac یک خانواده از رایانه‌های شخصی خریداری شده توسط شرکت اپل است که برای اولین بار در تاریخ ۲۴ ژانویه ۱۹۸۴ تولید شد و اولین رایانه شخصی دارای رابط کاربر گرافیکی بود.همچنین مکینتاش اولیه اولین کامپیوتر دارای فونت های زیبا بود. در حال حاضر میزان تنوع مکینتاش اپل از مک کوچک (Mac mini) هست تا قویترین کارسازها مثل Xserve که همگی ساخته شرکت اپل می‌باشد. مکینتاش اولیه از موتورولا ۶۸k که از خانواده ریزپردازنده‌ها هستند استفاده می‌کردند که بعداً تغییر کرد به موتورولا و آی‌بی‌ام پاور پیسی(Power PC). با حروف اختصاری Mac، محدوده‌ای از کامپیوترهای شخصی که توسط شرکت رایانه‌ای اپل در سال ۱۹۸۴ معرفی گردید. مکینتاش بر روی یک واسط گرافیکی با استفاده ی آسان، تأکید دارد که کامپیوترهای مبتنی بر مجموعه ریزپردازنده‌های ۶۸۰۰۰ موتورولا است.هم اکنون نسخه های زیادی منتشر شده است.رایانه‌های مکینتاش در برابر بدافزارهایی نظیر اسب‌های تروآ ایمن نیستند هرچند تعداد بدافزارهای موجود برای آن‌ها بسیار کمتر از تعداد متناظر برای ویندوز است در نتیجه بسیار کمتر به این بدافزارها آلوده می‌شوند.بی‌اس‌دی BSD : بی‌اس‌دی  (که به عنوان بی‌اس‌دی یونیکس هم شناخته می‌شود) یکی از مشتقات سیستم‌عامل یونیکس بود که در طی سال‌های ۱۹۷۷ تا ۱۹۹۵ در دانشگاه کالیفرنیا، برکلی توسط گروه تحقیقاتی سیستم‌های کامپیوتری توسعه داده و منتشر می‌شد. امروزه واژه بی‌اس‌دی برای اشاره به خانواده‌ای از سیستم‌عامل‌های شبه‌یونیکس استفاده می‌شود که همگی از نوادگان همان بی‌اس‌دی یونیکس هستند. سیستم‌عامل‌هایی که از کد اصلی بی‌اس‌دی مشتق شده‌اند هنوز هم توسعه فعالی دارند و به‌طور گسترده استفاده می‌شوند.از لحاظ تاریخی، بی‌اس‌دی به عنوان شاخه‌ای از یونیکس در نظر گرفته می‌شود. چون کدهای اولیه بی‌اس‌دی از کدهای اصلی یونیکس سرچشمه گرفته‌اند به جز شش فایل و به همراه سیستم‌عامل اصلی یونیکس AT&amp;T  طراحی شده‌است.مینیکس و هسته لینوکس : مینیکس، یک سیستم‌عامل از رده سیستم‌عامل‌های یونیکس است که معماری نرم‌افزار آن بر پایه طراحی به‌صورت ریزهسته می‌باشد. اندرو تننبام این سیستم‌عامل را بر ای اهداف آموزشی برنامه‌نویسی کرد که بعدها هسته لینوکس با الهام از مینیکس به‌وجود آمد. کلمه مینیکس از ترکیب دو کلمه «مینی» و «یونیکس» گرفته شده‌است.تاریخچه‌ی لینوکس و روند پیشرفت آن :خالق لینوکس، لینوس توروالدز (Linus Torvals) است. توروالدز از ۱۱ سالگی علاقه‌ی خود را به کامپیوتر و سیستم‌های عامل نشان داد. او ماجراجویی‌های کامپیوتری خود را از یک دستگاه کومودور VIC-20 شروع کرد. لینوس در زمان دانشگاه به سیستم‌عامل‌های Minix علاقه پیدا کرد.بعد از مدتی که توروالدز با سیاست‌های مجوزی Minix دست و پنجه نرم کرد، کم‌کم علاقه‌اش به این سیستم‌ کم شد و تصمیم گرفت سیستم‌عامل مخصوص خود را بنویسد. او در آگوست سال ۱۹۹۱ ایمیلی به کاربران مینیکس ارسال کرد و از آنها خواست تا آنچه را که علاقه دارند در سیستم‌عامل جدید و رایگان او ببینند شرح دهند. این ایمیل امروز به عنوان یکی از افسانه‌های لینوکس شناخته می‌شود.گذری بر توزیع های لینوکسلینوکس CentOS؛ بهترین سیستم عامل سرورتوزیع لینوکس CentOS مخفف (Operation System Community Enterprise) است. این توزیع بر پایه ردهت اینترپرایس ساخته شده؛ اما بر خلاف آن رایگان است!اولین نسخه لینوکس سنت او اس در سال ۲۰۰۴ منتشر شد و با توجه به اینکه بر پایه RHEL 0.2 ساخته شده بود، CentOS 0.2 نام گرفته. آخرین نسخه این توزیع هم که CentOs 8 نام دارد، در سپتامبر ۲۰۱۹ در اختیار کاربران قرار گرفت. سنت او اس یک نسخۀ community-supported لیونکس است. این یعنی شرکت خاصی که به صورت رایگان پشتیبانی آن را بر عهده بگیرد وجود ندارد؛ به‌جای آن، اجتماع (Community) افرادی که از CentOs استفاده می‌کنند گسترده است و می‌توانند برای برطرف کردن مشکلات و پاسخ به سوالات، به یکدیگر کمک کنند.توزیع CentOS مناسب چه افرادی است؟لینوکس CentOS به دلیل رابط کاربری دوستانه و سادگی در استفاده، انتخاب خوبی برای افراد مبتدی است. شرکت‌ها هم در صورتی که بخواهند به صورت حرفه‌ای از CentOS استفاده کنند، می‌توانند با پرداخت هزینه به RedHat پشتیبانی دریافت کنند.همچنین استفاده از Cent Os به‌خاطر پشتیبانی از cPanel و امنیت بالایی که دارد، برای مدیریت سرور توصیه می‌شود.مرگ CentOsپایان زندگی کوتاه و شتابدار سنت او اس ۸ از ۳۱ دسامبر ۲۰۲۱ میباشد و این بدین معناست که دیگر این سنت او اس شامل هیچ بروزرسانی نخواهد شد.چرخه حیات Centos 7 ادامه خواهد داشت و بروزرسانی ها و وصله های امنیتی تا ژوئن سال ۲۰۲۴ در دسترس هستند، اما ممکن است این جدول زمانی در آینده نیز شامل تغییراتی گردد.لینوکس دبیان؛ بهترین توزیع لینوکس برای برنامه نویسیدر بین توزیع‌های لینوکس، دبیان یک پیشکسوت محسوب می‌شود که در سال ۱۹۹۳ توسط ایان مورداک متولد شد.نسخه دبیان نام‌گذاری جالبی دارد. آقای ایان مورداک برای نام‌گذاری این توزیع از تلفیق نام خودش و نامزدش دبرا لین، استفاده کرده است: دب + یان.به نظر شما ایده اصلی برای طراحی چنین توزیعی چه بوده است؟جواب تولید یک سیستم‌عامل غیرتجاری است.جالب اینجاست بدانید برنامه‌نویسان برای تولید این توزیع در زمان‌های استراحت خود وقت گذاشتند و پولی هم به آنان داده نشد. حتی دبیان در یک تفاهم‌نامه اعلام کرده که برای همیشه رایگان خواهد بود.توزیع دبیان از سه نسخه مختلف تشکیل شده است: Unstable، Testing و Stableنسخه ناپایدار (Unstable)توزیع ناپایدار یا همان Unstable را بیشتر توسعه‌دهندگان خود دبیان، برای توسعه این سیستم عامل استفاده می‌کنند. چون این نسخه در حال توسعه است، زیاد امن نیست و برای استفاده عموم توصیه نمی‌شود.نسخه آزمایشی (Testing)همانطور که از نام آن پیداست برای تست کردن است. توسعه‌دهندگان، بسته‌های جدید نرم‌افزاری را روی این نسخه تست می‌کنند؛ در صورت تایید، این بسته‌ها در نسخه پایدار نیز قابل استفاده هستند. مزیت استفاده از این نسخه، کار با بسته‌های نرم‌افزاری به‌روز (آن‌هایی که هنوز در نسخه پایدار دبیان در دسترس قرار نگرفته‌اند) است؛ البته به شرط آنکه در مقابل امنیت سخت نگیرید!نسخه پایدار (Stable)نسخه Stable یا پایدار آخرین نرم‌افزارهای منتشر شده را شامل می‌شود. اگر به دنبال کار در یک فضای امن هستید می‌توانید از این نسخه استفاده کنید. البته پیشنهاد ما هم برای شما همین نسخه است.این ۳ نسخه‌ای که گفتیم، نام‌های دیگری هم دارند. بعد از اینکه مورداک از پروژه کنار رفت، بروس پرنز مدیریت پروژه را دست گرفت. پرنز چون علاقه شدیدی به کارتون داستان اسباب بازی (Toy Story) داشت و همزمان در آن پروژه هم مشغول به کار بود، نام نسخه‌های مختلف دبیان را به نام شخصیت‌های این کارتون انتخاب کرد. مثلا در حال حاضر نسخه ۸ پایدار دبیان با نام Jessie (دختر گاوچران)، نسخه تست با نام Stretch (هشت پا) و نسخه ناپایدار با عنوان Sid (پسر شیطان) شناخته می‌شود.بعضی از کاربردهای مهم دبیان انعطاف‌پذیری این توزیع برای پردازنده‌ها (با معماری‌های مختلف در رایانه‌های شخصی) و Mainframe ها، داشتن محیطی جذاب برای کاربر و همچنین استفاده از فضای پرکاربرد دسکتاپ Gnome است.توزیع لینوکس دبیان برای چه کسانی مناسب است؟دبیان می‌تواند یک انتخاب برای برنامه‌نویس‌ها باشد. چراکه حدود ۵۱۰۰۰ بسته داخل این سیستم‌عامل قرار داده شده و شما برحسب نیازتان می‌توانید هر کدام را که بخواهید نصب کنید.علاوه بر این، Debian خود یک توزیع مستقل است و توزیع‌های زیادی از آن ایجاد شده‌اند؛ پس کار با آن می‌تواند شما را با روند توسعه سیستم عامل نیز آشنا کند.غیر از لینوکس دبیان، توزیع‌های دیگری مثل Fedora، Pop_OS و Arch نیز برای برنامه‌نویسی پیشنهاد شده‌اند.لینوکس اوبونتو؛ محبوب‌ترین توزیع برای تازه‌کارهااوبونتو (Ubuntu) نام‌آشناترین و یکی از قدرتمندترین توزیع‌های لینوکس است.این توزیع مهم، در سال ۲۰۰۴ بر پایه Debian ایجاد شد و به سرعت طرفداران زیادی در تمام دنیا پیدا کرد.نام اوبونتو، از فلسفه اوبونتو در آفریقای جنوبی گرفته شده و به معنی «انسانیت نسبت به دیگران» است. چرا اوبونتو را انتخاب کنیم؟اوبونتو یک سیستم عامل متن باز رایگان است. جدا از این، نرم‌افزارها و برنامه‌های مختلف زیادی برای آن ساخته شده است. با این نرم‌افزارها می‌توانید سیستم‌تان را شخصی‌‌سازی کرده و قابلیت‌های دیگری به آن اضافه کنید.علاوه‌بر این، امنیت Ubuntu خیلی بالاست و حتی گفته شده که در برابر ویروس‌ها ۱۰۰% مصون است.از نظر پشتیبانی، اوبونتو نیز Community-supported است؛ یعنی یک جامعه قوی از برنامه‌نویسان و توسعه‌دهندگان، در سراسر جهان وجود دارند که سوالات شما را پاسخ داده‌اند و برای کمک رساندن آماده‌اند.لینوکس اوبونتو هم برای برنامه‌نویسان و هم برای کسانی که محتواهای چندرسانه‌ای تولید می‌کنند، یک گزینه مناسب است.لینوکس اوپن سوزه؛ مناسب اهداف تجاریلینوکس OpenSUSE یکی از قدیمی‌ترین توزیع‌های لینوکس و کاملاً مستقل از توزیع‌های دیگر است.توسعه دهنده و پشتیبان این توزیع، شرکت آلمانی SuSE Software Solutions است.توزیع اوپن سوزه به درد چه کسانی می‌خود؟اوپن سوزه هم مانند Red Hat Enterprise برای اهداف تجاری طراحی شده و باتوجه به این‌که رایگان نیست، بیشتر به درد شرکت‌ها می‌خورد.از طرف دیگر، لینوکس OpenSUSE به خاطر پایداری و امنیت بالایی که دارد، برای شرکت‌ها انتخاب خوبی است.آرچ لینوکس؛ توزیعی برای حرفه‌ای‌هاآرچ لینوکس یکی دیگر از توزیع‌های مستقل لینوکس است. این توزیع در کمال سادگی و برای کامپیوترهایی با معماری 64 بیتی و 32 بیتی طراحی شده است.دقت کنید که منظور از سادگی، سهولت در استفاده نیست؛ در واقع آرچ لینوکس تا جای ممکن فرآیندهای پیچیده و افزونه‌های غیرضروری را حذف کرده است. مثلاً برای کار با آرچ لینوکس، دیگر خبری از رابط کاربری ساده و جذاب نیست، شما باید برای هر عملیاتی خط فرمان مورد نظر را تایپ کنید.یکی از دلایلی که گفته می‌شود آرچ لینوکس خیلی مناسب افراد تازه‌کار نیست، همین است. معمولاً افراد نیمه‌حرفه‌ای تا حرفه‌ای که از خط فرمان و کنکاش در این سیستم عامل نمی‌ترسند، آرچ لینوکس را به عنوان بهترین و مناسب‌ترین توزیع انتخاب می‌کنند.در شروع کار نیز ممکن است نصب Arch Linux برای مبتدی‌ها کمی دشوار باشد؛ چون همانطور که گفتیم، خبری از رابط گرافیکی نیست و همه‌چیز را باید با خط فرمان انجام دهید.البته نبودن رابط گرافیکی نباید شما را دلسرد کند. نکته مثبت اینجاست که ظواهر گرافیکی که باطن کار را مخفی می‌کردند کنار رفته و شما می‌توانید درک بهتری از مسائل داخلی سیستم عامل داشته باشید.این امکان باعث بالارفتن سرعت سیستم و همچنین استفاده بهینه از منابع سخت‌افزاری نیز می‌شود.لینوکس مانجارو؛ گیمرها بخوانندیک خبر خوب برای گیمرها. مانجارو همان چیزی است که از ابتدا دنبال آن بودید، یک سیستم‌عامل بر پایه آرچ، مخصوص گیمرها، که منبع باز و رایگان هم هست.زمانی که شما از آرچ استفاده می‌کنید در کنار تمام ویژگی‌های خوب، یک ویژگی بد نیز وجود دارد و آن این است که همه چیز را خود شما باید انجام دهید. این کار برای بسیاری از کاربران مبتدی سخت است.اما مانجارو در کنار داشتن تمام صفات خوب آرچ، خیلی از کارها را به صورت پیش فرض برای کاربر انجام می‌دهد.مانجارو با پشتیبانی سخت‌افزاری عالی و نصب تمام درایورهای مورد نیاز، به‌صورت خودکار، کار را برای کاربر راحت کرده است.علاوه برتمام این‌ها نرم‌افزارها و شبیه سازی‌های بسیاری به این سیستم‌عامل اضافه شده است.از دیگر توزیع‌های لینوکسی که برای بازی مناسب هستند می‌توانیم به Lakka، Ubuntu GamePack و Play on Linux اشاره کنیم.لینوکس مینت؛ توزیع مشابه ویندوزلینوکس mint توزیع مدرن و قدرتمندی است که بر پایۀ اوبونتوی محبوب ساخته شده است!توزیع مینت نیز مانند اوبونتو رایگان است و جامعه‌ای از متخصصان آن را پشتیبانی می‌کنند.هدف از توسعه این توزیع، ایجاد نسخه‌ای از لینوکس بود که در عین ظرافت و قدرت بالا، استفاده راحتی نیز داشته باشد.لینوکس mint مناسب چه کسانی است؟اگر از کسانی هستید که قصد مهاجرت از ویندوز به لینوکس را دارند، انتخاب توزیع مینت، به شما توصیه می‌شد.رابط کاربری لینوکس mint مشابه ویندوز است و به همان راحتی هم می‌توانید برنامه‌های مختلف را روی سیستم عامل خود نصب یا حذف کنید.برای مثال شما می‌توانید در این سیستم‌عامل از بسیاری نرم‌افزارهای ویندوزی مانند Microsoft Office یا Adobe Flash استفاده کنید.این توزیع رایگان بوده و به صورت پیوسته آپدیت‌هایی برای آن منتشر می‌شود.لینوکس فدورا؛ برادر RedHatتوزیع Fedora در سال ۲۰۰۳، توسط جمعی از برنامه‌نویسان، تحت عنوان پروژه فدورا ساخته شد.این توزیع بر پایه Red Hat توسعه یافته و دو ویژگی قدرتمندی و امنیت بالا را از آن به ارث برده است.توزیع فدورا رابط کاربری خوبی دارد، نصب آن برای مبتدی‌ها ساده است و از همه مهم‌تر، مجموعه‌ای از نرم‌افزارها و برنامه‌های کاربردی برای آن ساخته شده است.لینوکس Fedora برای چه کسانی مناسب است؟فدورا یک گزینه مناسب برای لپ‌تاپ و کامپیوترهای شخصی است و به دلیل سادگی و سهولت در استفاده، برای مبتدی‌ها توصیه می‌شود.(خود لینوس توروالدز فدورا میگفت فدورا استفاده میکنم)همچنین، به کاربرانی که می‌خواهند کار با Red Hat را شروع کنند، توصیه می‌کنیم که قبل از شروع کمی با فدورا کار کنند.فدورا شباهت زیادی به ردهت دارد؛ برای همین بد نیست قبل از هزینه کردن برای ردهت، از فدورای رایگان برای تست استفاده کنید.جنتو لینوکس؛ توزیعی برای خوره‌هاجنتو لینوکس (Gentoo Linux)، یکی از قدیمی‌ترین توزیع‌ها است که انتشار آن به سال ۱۹۹۰ برمی‌گردد.این توزیع برای کاربران تازه‌کار ساخته نشده و کار با آن برای اولین بار می‌تواند بسیار پیچیده و سردرگم‌کننده باشد.لینوکس جنتو رابط کاربری خاصی ندارد؛ برای همین باید برای استفاده راحت از آن تعداد زیادی کد و خط فرمان را از بر باشید.جنتو لینوکس به درد چه کسانی می‌خورد؟با توجه به نکاتی که گفتیم، استفاده از Gentoo Linux چندان آسان به‌نظر نمی‌رسد. اما بد نیست بدانید که گوگل، در مرورگر کروم از سیستم مدیریت بسته جنتو (به اسم Portage) استفاده می‌کند.همین موضوع نشان می‌دهد که جنتو لینوکس آنقدر از عملکرد خوب و امنیت بالایی برخوردار است که گوگل حاضر به استفاده از آن شده است.پس اگر از خوره‌های تکنولوژی هستید و سرتان درد می‌کند برای یادگیری با سرعت بالا، جنتو لینوکس را نصب کنید و از کار با آن لذت ببرید.کالی لینوکس؛ بهترین توزیع برای هک و تست نفوذکالی لینوکس یکی دیگر از توزیع‌های لینوکس است که توسط دبیان توسعه پیدا کرد. هدف کالی لینوکس تست نفوذ و امنیت است و ابزارهای زیادی را به کارهای مختلف امنیتی اختصاص داده است. این توزیع در سال ۲۰۱۳ و بعد از کنار گذاشته شدن بک ترک توسعه پیدا کرد.کالی لینوکس یک توزیع رایگان و منبع باز است که به گفته تیم توسعه دهنده آن همیشه رایگان خواهد ماند.کالی لینوکس چه ویژگی‌هایی دارد؟توزیع کالی هم مانند سایر توزیع‌های لینوکس ویژگی‌هایی دارد که باعث شده کاربران از آن استفاده کنند.کالی لینوکس ۶۰۰ ابزار برای تست نفوذ و هک دارد. Nmap، Crunch، Wireshark، Aircracking از جمله این ابزارها است.کالی لینوکس از پشتیبانی چندزبانه برخوردار است. به این صورت که کاربران می‌توانند به زبان مادری خود ابزارهای مختلف را جستجو کنند.کالی لینوکس در یک محیط امن و در یک گروه کوچک از افراد متخصص توسعه یافته است و از این حیث کاملا مورد اعتماد است.کالی لینوکس به FHS (استاندارد سلسله مراتبی فایل سیستم‌ها) پایبند است و از این طریق به کاربران اجازه دسترسی به پرونده‌ها و کتابخانه‌ها را می‌دهد.چرا کالی لینوکس برای امنیت مفید است؟یکی از مهم‌ترین دلایل آن منبع باز بودن کالی لینوکس است که باعث می‌شود تا توسعه دهندگان یا کاربران بتوانند آن را به صورت کامل برای امنیت سایبری شخصی‌سازی کنند.البته تا سال ۲۰۱۹ کالی لینوکس طوری طراحی شده بود که فقط برای یک کاربر استفاده شود و به صورت کامل دسترسی همه چیز به وی واگذار شود. بعد از سال ۲۰۱۹ نوع پلتفرم آن تغییر پیدا کرد، با این حال پیشنهاد ما این است که اگر از این توزیع استفاده می‌کنید، بعد از ورود حتما یک اکانت کاربری بسازید.توزیع پاپ او اس؛ زیباترین توزیع لینوکساول از همه باید گفت که این توزیع هم مبتنی بر اوبونتو است. این سیستم عامل به طراحان خلاق اجازه می‌دهد تا از کامپیوتر خود برای طراحی محصولات و نرم‌افزارهای حرفه‌ای استفاده کنند.پاپ او اس از تجربه کاربری گنوم استفاده می‌کند و تم‌ها و آیکن‌های جذابی را در اختیار کاربران قرار می‌دهد.توزیع پاپ او اس توسط کمپانی System 76 توسعه پیدا کرد. نکته جالب در خصوص این توزیع این است که یک توزیع کامل است. به این منظور که نه تنها برای انجام کارهای طراحی و تولید نرم‌افزار به کار می‌رود، بلکه برای انجام تمام کارها می‌توان از این توزیع استفاده کرد.توزیع پاپ او اس گزینه‌ای جذاب، کاربرپسند و پایدار است. ترکیبی که بر پایه اوبونتو و سفارشی سازی گنوم صورت گیرد یک توزیع فوق‌العاده را ایجاد می‌کند.اما این توزیع فوق‌العاده به چه دردی می‌خورد؟این توزیع هم امکانات زیادی دارد که از جمله آن می‌توان بهاستفاده آسانمحیط کاربری چشم‌نوازسازگاری بالا با انواع سیستم‌هاامنیت بالابرخورداری از ابزارهای بروز نرم‌افزاریاشاره کرد.و در آخر باید گفت پاپ او اس گزینه‌ای جذاب برای کاربران جدید لینوکس است.نتیجه گیریورود به دنیای بزرگ لینوکس به دلیل تعداد گسترده توزیع‌های لینوکس موجود، می‌تواند کمی سخت باشد. پس سعی کنید بفهمید کدام توزیع نیاز شما را برآورده می‌کند تا انتخابی درست داشته باشید؛ نه انتخابی شانسی که منجر به اتلاف وقت و هزینه برای شما شود. برای جمع‌بندی نهایی یک مرور کوتاه بر توزیع‌های مهم لینوکس می‌کنیم:لینوکس ردهت (Redhat): بهترین توزیع تجاری لینوکسلینوکس سنت او اس (CentOS): بهترین سیستم عامل سرورلینوکس دبیان (Debian): بهترین توزیع لینوکس برای برنامه نویسیلینوکس اوبونتو (Ubuntu): محبوب‌ترین توزیع برای تازه‌کارهالینوکس اوپن سوزه (OpenSUSE): توزیع مناسب اهداف تجاریآرچ لینوکس (Arch Linux): توزیعی برای حرفه‌ای‌هالینوکس مانجارو (Manjaro): توزیع مناسب گیمرهالینوکس مینت (mint): توزیع مشابه ویندوزلینوکس فدورا (Fedora): بهترین توزیع برای کاربران خانگی و کامپیوتر شخصیجنتو لینوکس (Gentoo): توزیعی برای خوره‌هاکالی لینوکس (Kali): بهترین توزیع برای هک و تست نفوذتوزیع پاپ او اس (Pop-OS): زیباترین توزیع لینوکس</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Wed, 31 Mar 2021 13:05:56 +0430</pubDate>
            </item>
                    <item>
                <title>از کجا و چگونه اسپرینگ را شروع کنیم؟؟؟</title>
                <link>https://virgool.io/@MehdiYasnzadeh/%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D9%88-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A7%D8%B3%D9%BE%D8%B1%DB%8C%D9%86%DA%AF-%D8%B1%D8%A7-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%DB%8C%D9%85-tvl5yob7sv9l</link>
                <description>خوب سلام به همه ی بچه هایی که میخوان با یه عسل تلخ (پرااام از پارادوکس ریخت) به نام اسپرینگ آشنا بشن.من توی این نوشته که سعی میکنم کوتاه هم باشه میخوام بگم از کجا و چطوری اسپرینگ رو شروع کنیم که اینجا من تجربه ی خودم از نحوه ی یادگیری اسپرینگ رو میگم.servletخوب به نظرم برای شروع اول باید با مفهوم سه چیز آشنا بشین تا یکم متوجه بشین پشت صحنه ی اسپرینگ ( تکه کلام بهترین استاد اسپرینگ جهان مهندس زارع هست که دزدیمم ازش ) چه خبره و داره چی میگذره و قدر فریم ورک هایی مثله هایبرنیت رو بیشتر بدونید?خوب اون سه چیز چیا هستن :یک : servletدو : jdbcسه : jsp ( سعی کنید کم ازش استفاده کنید و بیشتر برین سمت فریم ورک های جی اس مثله ری اکت )خوب من خودم با فیلمای استاد زارع شروع کردم به چند دلیل :یک : رایگان بودن دو : پروژه محور بودنسه : مفاهیم رو به طور عالی توضیح داده بودن از پایه هم گفته بودن حتی منی که شاید اون موقع arraylist رو هم باش درگیر بودم این سه مفهوم رو به طرز عجیبی کاملا متوجه شدم و با یک ذهنیت ساختار یافته به سوی اسپرینگ شتافتم البته اون موقع لایفری هم به سمتش فشارمون دادن دیگه هر دو رفت توی روزومه ی ما?اما لینک این فیلما کجاس ؟؟ در سایت سرزمین های حاصل خیزhttps://www.aparat.com/v/RQ15h?playlist=110754خوب بعد ازینا من اسپرینگ رو باز با فیلمای استاد شروع کردم ولی نکته ی قابل توجه اینه فیلمای استاد زارع نمیاد مثلا در بحث دیتابیس خیلیییی عمیق شه تک تک روابط رو پیاده سازیش رو بگه ولی میتونه در حد دو هفته شما رو به یه اسپرینگ کار مقبول تبدیل  کنه چرا چون مباحث rest و یا اسپرینگ security و اتصال دیتابیس و حتی AOP رو به طور بی نهایییییییییت کامل توضیح میده.من در پایان این آموزش تونستم وب سرویسی بنویسم که احراز هویتش با jwt بود و دیتابیس postgresql و فقط هم رست بود یعنی برای اولین پروژه خیلی خوب بود و روی هاست هیراکو دیپلوی کردم.تنها ضعف این اموزش شاید فقط اون پیاده سازی های روابط دیتابیس باشه که اونم راه حلش رو براتون میزارم????خوب آدرس اموزشا کجا در سایت سرزمین خودمون :https://www.aparat.com/v/XyCB7?playlist=129861اما راه حل پیاده سازی روبط کجاس؟؟https://downloadly.ir/elearning/video-tutorials/spring-framework-5-beginner-to-guru-2/این مجموعه به طور کامل و مفصل پیاده سازی روبط رو توضیح داده همچنین شامل برنامه نویسی ری اکتیو و داکرلایز کردن اسپرینگ و خیلی مباحث دیگه هست ولی زمان زیادی داره و خیلی شلوغ کرده اینه که من خیلی باش حال نکردم اما فیلمای استاد این طوری نیست ساده مختصر مفید وسطش شوخیم میکنه تازه?بچه ها من وقتی که برنامه نویسی رو شروع کردم رزومم سفید سفید بود اما الان حرف واسه گفتن دارم فکر میکنم تنها چیزی که بهم کمک کرد تجربه ای بود که با کار کردن فی سبیل الله به دست اوردن و تاوان هم بابتش دادم.به دست آوردن هیچ چیز ساده نیست پس براش چیزی که میخواین تلاش کنید...</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Sun, 28 Mar 2021 00:33:26 +0430</pubDate>
            </item>
                    <item>
                <title>کدام زبان برنامه نویسی را انتخاب کنیم...</title>
                <link>https://virgool.io/coderlife/%DA%A9%D8%AF%D8%A7%D9%85-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%B1%D8%A7-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DA%A9%D9%86%DB%8C%D9%85-b7hpvurqcq33</link>
                <description>سلام به همه ی دوستان ، از اولین کلاس مبانی که معمولا اکثر دانشگاه ها با زبان سی ارائه میدن دانشجوها از خودشون میپرسن کدوم زبان رو باید یاد گرفت و این سوال رو از همه ی ترم بالایی ها میپرسن و اکثرا هم  گوگل رو نابود میکنن بسکه این سوال رو سرچ کنن و بین انبوهی از جواب هایی ک به هم هیچ ربطی نداره ،رو به رو میشن چرا چون هر کس زبانی رو پیشنهاد میده که خودش کار میکنه و از مزیت ها و خوبی های اون میگه و شما بیشتر در مورد این اطلاعات کسب میکنید که هر زبان چه ویژگی های خوبی داره /:برای مثال اگر از بچه های JAVA کار بپرسی کدوم زبان بهتره میگن : قطعااااااا جاوا ? بعد چند درجه روی صندلی به عقب لم میدن و میگن : ویژگی اصلی جاوا رو میشه تو نزدیکی بیشتر به سخت افزار دونست که باعث میشه بتونیم از ویژگی های سخت افزاری برای پردازش سریع تر استفاده کنیم(فقط پردازش سریع تر) و چون قابلیت کش کردن رو میتونه بدون واسطه انجام بده و real-time باشه، خیلی سریع تر میتونه کار هایی مثل stream رو انجام بده و Request per second عالی اون در زمینه ی وب که حدود 13000 هزار ریکوست بر ثانیه رو میتونه پاسخگو باشه رو کجا میتونی پیدا کنی؟؟؟بعد با خودت میگی چه عالی میای جاوا بخونی میبینی این قددد سنگینه ک نفس سیستمت قشنگگگ میبره میگی خوب اشکال نداره بزار ببینم اصلا این چیه، بهش میگی سلام جاوا میگه چرا سلام کردی میگی همین جوری میگه باشه پس فعلا اکسپشن (خطا) دریافت کن تا یاد نگیری بی دلیل سلام کنی /:چرا این اتفاق میوفته چون ما بخاطر قدرتش سمتش رفتیم نه بخاطر شیرینی زبان جاوا هیچ زبانی به اندازه ی جاوا نمیتونه به شما زیبایی شی گرایی رو نشون بده اساسا جاوا زبان مهندسی شده و شیکه به شدت جذاب اما نه برای هر سلقیه ای.خوب پس واقعا راهکار برای پیدا کردن یک انتخاب زبان برنامه نویسی چیه؟؟؟من اینجا تجربه ی خودم رو مینویسم ؛ ببینید بچه ها کسایی که دانشجویی هستن تا ترم چهارم حداقل با دو سه تا زبون کار میکنن تنهاااااا و فقط just (تاکییییییییییییید فروان) ویژگی که باید یک زبون داشته باشه تا اونو انتخاب کنیم اینه که از کد زدن باهاش لذت ببریم و باهاش خوشحال باشیم اصلا مهم نیست چه ویژگی داره و چه معایبی داره مهم اینه که تو با اون خوشحال باشی و از کد زدن با اون شاید برای مدت طولانی لذت ببری ببینید بچه ها وقتی از یک زبان لذت ببری اصلا چرا زبان وقتی از یک کاری لذت ببری اونو عشق و علاقه ی بیشتری انجام میده ایده های زیبایی به ذهنت خطور میکنه و باعث پیشرفت و موفقیت شما میشه .پس پیشنهاد من برای تازه کارای این عرصه اینه اول ببینین توی کدوم حوزه میخواین فعالیت کنید ، وب یا اپ سازی برای دیواس های مختلف یا برنامه های تحت دسکتاب بعدش بیاین یه تایمی رو اختصاص بدین به امتحان چند زبان برنامه نویسی مثله پایتون جاوا سی و جاوا اسکریپ وقتی دیدن با کدوم بیشتر خوش حالین اونو توی حوزه ای که انتخاب کردین ادامه بدین مثلا اگر انتخابتون حوزه ی وب بود و زبان مورد علاقتون پایتون، جنگو و فلاسک دو فریم ورک عالی پایتون برای بک اند نویس وب روبه روی شماست میتونید یکی رو انتخاب کنید.پس تکرار میکنم تنها دلیل انتخاب یک زبان باید خوشحال بودن شما با اون زبان باشه همین.این اولین پست من توی ویرگول هست خوشحال میشم نظرتون رو بهم بگین پست های دیگه ای هم راجب اینترنت اشیا و ارتباط سخت افزار و نرم افزار همچنین کانفیگ هایی از اسپرینگ که خیلی دنبالشون گشتم رو اینجا به اشتراک میزارم و همچنین سعی که نه قول میدم پستی راجب نحوه ی اتصال ماژول وای فای nodemcu به جاوا به کمک سوکت نویسی قرار بدم با کد سمت جاوا و سمت نود?از همه بابت تمام غلط های نگارشیم و املاییم هم عذرخواهی میکنم من واقعا چه توی کارم چه توی حالت عادی داکیومنت نویس به شدت بدیم و کلا از تایپ بدم میاد /:امیدوارم مطالب براتون مفید واقع شده باشن.?</description>
                <category>Mehdi Yasinzadeh</category>
                <author>Mehdi Yasinzadeh</author>
                <pubDate>Thu, 27 Aug 2020 03:36:23 +0430</pubDate>
            </item>
            </channel>
</rss>