<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های حامد زیدآبادی</title>
        <link>https://virgool.io/feed/@zeidabadi73</link>
        <description>کارشناس ارشد بازاریابی ، علاقه‌مند به برنامه نویسی و جوجیتسو  &lt;&lt; اهل کرمان همه آسوده و فارغ ز بلا &gt;&gt;</description>
        <language>fa</language>
        <pubDate>2026-06-07 03:13:46</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/186986/avatar/1pkeKx.png?height=120&amp;width=120</url>
            <title>حامد زیدآبادی</title>
            <link>https://virgool.io/@zeidabadi73</link>
        </image>

                    <item>
                <title>برگه تقلب کد تمیز | Clean Code Cheat Sheet</title>
                <link>https://virgool.io/cheyab-blog/hamed-zeidabadi-cleancode-cgabwvqoz7ob</link>
                <description>برگه تقلب کد تمیز | Clean Code Cheat Sheetمقدمه نه چندان کوتاه !آخر هفته ها (جمعه ها) به دلایل شخصی  (سربازی دیگه ! ) به سیستم دسترسی نداشتم و از طرفی با انبوهی از زمان بلا استفاده مواجه میشدم ، که حقیقتاً به بطالت میگذشت ! (عموماً هم با مرور خاطرات گذشته که اغلب ردپایی از شکست های متوالی عشقی در آنها دیده میشد !)کمی سرم خلوت تر شده بود ، تصمیم گرفتم جلوی این هدر رفت زمان رو بگیریمفکر کردم به جای ور رفتن با فریمورک ها و زبان ها  کمی رو مهارت های مهندسی نرم افزار کار کنم ، ولی خُب انتخاب مهارت مورد نظر کمی سخت بود ! { بیماری کمالگرایی افراطی }مثل همیشه دنبال یه نشانه بودم (چقدر اسرارآمیز ! ) ، تا اینکه روزی یکی از دوستان نه چندان نزدیک (فرماندهان ! ) در مورد اهمیت تمیزی و نظافت و تاثیر آن در رستگاری بشر نطق نه چندان کوتاهی برای ما آشخوران داشت ! که خُب کور از خدا چی میخواد ؟ بلطبع تصمیم گرفتم از کتاب Clean Code یا همان کد تمیز نوشته  Robert Cecil Martin  معروف به عمو Bob شروع کنم ... Uncle Bob Martin on the legacy of the Agile Manifesto 15 years later !!‏قبلتر ها اسم این کتاب رو زیاد شنیده بودم ولی راستش چون اسمش خیلی عجیب غریب نبود ، فکر میکردم کتاب مسخره ایه و سمتش نمیرفتم ! {چقدر ساده لوحانه ! }برای من شروع این کتاب خیلی هیجان انگیز بود ، همان چیزی بود که من را مجبور میکرد از خواب شیرین بعد از نهار در عصرهای ابری روز جمعه بگذرم !هر هفته چندین صفحه از این کتاب رو پرینت میزدم ، و با خودم به محل مورد نظر میبردم و مطالعه میکردم ولی چون کتاب نسبتا حجیم بود و ابزار مترجم گوگل یا اَپ دیکشنری در دسترس نبود ، تقریبا یه 6-5 ماهی طول کشید تا 10 فصل ابتدایی آن را بخونم ، چون مطالعه ام به صورت پیوسته نبود ، مطالب به صورت ساختار یافته در ذهنم شکل نگرفت !تصمیم گرفتم دست نوشته های خودمو به عنوان یه نوشته ویرگولی منتشر کنم ، تا شاید هم من رستگار شوم  و هم مورد استفاده کسی قرار گیرید ...شروع ..اگر کمی در اینترنت جستجو کنید با مفاهیم زیادی از قبیل کد تمیز ،کد هوشمند ، کد انسانی ، کد باهوش ، کد کثیف ، کد بد و ... مواجه میشید ، خب اینا چی هستن ؟به تعبیر من ، میشه گفت تقریبا این اصطلاحات به نوعی یه سری استاندارد  از نحوه ی نوشتن کدها هستن(البته یه سری هاشون هم مفاهیم انتزاعی / فلسفی هستند که در این مقاله مجالی به پرداختن به آنها نیست ، شاید بعدها درباره این کلمات جالب بیشتر نوشتم !)خب این حرف ها یعنی چی ؟لطفا اجازه بدید یک سوال ساده ازتون بپرسم  ، کتاب های درسی دوران چهارم ابتدایی خودتون رو لحظه ای تصور کنید ؟ چه چیزی در همه ی آنها مشترک است ؟ محتوا ؟ موضوع ؟ کاربرد ؟یادش بخیر :) در سوال  بالا کمی شیطنت کردم ، البته با قصد و غرض قبلی ! اغلب خیلی از دوستان را دیدم که نتوانستند پارادایم های برنامه نویسی رو از استانداردهای برنامه نویسی تفکیک کنند !پارادایم های برنامه نویسی (procedural , functional , object-oriented .... ) بسته به نوع نرم افزار یا زبان مورد استفاده متغیر هستند مثلا فرض کنید محتوای کتاب ریاضی قطعا با محتوا کتاب علوم متفاوته ولی استانداردی مثل “کد تمیز” هیچ ربطی به نوع زبان برنامه نویسی ، کاربرد اپلیکیشن و... ندارد ! همانظور که فونت ،رنگ فونت ، اندازه فونت و قطع کتاب ریاضی و علوم ، فارسی یکی هست !امیدوارم این دو را بتوانید تفکیک کنید !کد تمیز ...خب رسیدم سر اصل ماجرا ، کد تمیز چی چی هست ؟خٌب اول به عکس زیر یک نگاه بیاندازید !به نظرتون کد خط اول و کد خط دوم و سوم برای رایانه ها تفاوتی داره؟باور کنید هیچ تفاوتی نداره !!!ولی برای ما انسان ها تفاوت داره !به صورت کلی میشه گفت &quot;کد تمیز&quot; کاری نداره کد ها چطوری کار میکنن ، کد تمیز راجع به اینه که کد ها راحت توسط انسان ها (نه رایانه ها ) خوانده شوند و راحت تر فهمیده شوند !به طور دقیق تر در این کتاب از تعبیر &quot;نویسنده&quot; برای برنامه نویسان استفاده کرده ، همانطور که نویسنده یک کتاب فارغ از صحت مطالب (درست کار کردن کدها ) ، سبک نوشتاری طنز یا علمی (OOP or FP  ) باید نوشته ای بنویسید که برای خواننده راحت و درک آن ساده باشد ! (تمیز باشه)پس دفع بعد که خواستید تکه کدی بنویسید ، به یاد داشته باشید شما نویسنده ای هستید که برای خوانندگانی (انسان هایی) مینوسید که با خواندن کدهای شما ؛ تلاش شما را قضاوت خواهند کرد !خٌب حالا چطوری با استفاده استاندارد &quot;Clean Code &quot; ، کدهای خواناتر و قابل فهم تری بنویسیم ؟من این مباحث را در 6 فصل در این نوشته ارائه میدم :نکته مهم : دسته بندی من کمی با فصل بندی کتاب متفاوت است ! و ممکن است مطالبی را استفاده کرده باشم که از منابع دیگر مطالعه کرده باشم ! یا کمی مطالب را بین فصل ها جا به جا کرده باشم ، پس لطفا خیلی این موارد رو در نظر نگیرید ...1- نام گذاری 2- توابع و متد ها 3-  کامنت ها 4-  قالب بندی 5- ساختارهای کنترلی (شرطی) 6- شی ها ، کلاس ها / ساختار دادهفصل اول : نام گذاری (انتخاب اسم)  نام ها باید با معنی باشند ؟قند عسل زیر را در نظر بگیرید !مُخلص برو بچ  ویرگول !اگر به شما بگم نام این قند عسل &quot;آبتین&quot; هست ، قطعا ته دلتون میگید عجب آدم بد سلیقه ای بوده باباش که اسمشو قیصر یا فردین نگذاشته !آیا آبتین اسم قشنگی نیست ؟به هیچ وجه منظورم این نیست ، منظورم اینه شاید شما اسم های خیلی زیبایی رو زمان برنامه نویسی برای متغیر ها/متدها/کلاس ها و... در نظر میگیرید ولی چون این اسم ها با کاربرد اون متغیر/متد یا کلاس  خیلی هم راستا نیستند ، پس شما در حال تولید یک کد کثیف (غیر تمیز ) هستید  !عمدتاً ما در برنامه نویسی برای سه گروه  از کدها اسم انتخاب میکنیم :1- متغیرها(Variables)  2-  متدها /توابع (Methods / Functions) 3– کلاس ها(classes)الف ) قوانین نام گذاری (انتخاب اسم)  در متغیر ها :قانون اول : در نام گذاری متغیرها سعی میکنیم از اسم های (noun) با معنی یا صفت های خیلی کوتاه استفاده کنیمقانون دوم : زمان انتخاب نام به نوع و ماهیت داده های ذخیره شده در متغیر توجه میکنیم :الف) اگر داده ها به صورت عدد یا رشته ، شی یا آرایه بودند ، با توجه به مقدار (value)  آنها ، متغیر را نام گذاری میکنیمب)  اگر مقدار(value) یک متغیر مقدار عبارت بولی Boolean(true/false)  بود به صورت سوالی با استفاده از is نام گذاری میکنیم ...به مثال های زیر توجه کنید :مثال : برای متغیری که مشخصات مشتری (ایمیل ، نام ، سن ) را ذخیره میکند ، یک نام انتخاب کنید ؟ب) قوانین نام گذاری (انتخاب اسم) در توابع (متدها) :قانون اول : در نام گذاری متدها و توابع سعی میکنیم بر اساس عملکردی که تابع دارد یک نام (فعل یا عبارت فعلی ) انتخاب کنیم ، اگر تابع یک مقدار true/false  یا همان Boolean  را در جواب بازگرداند (return) سعی میکنیم از ساختار is +  استفاده کنیممثال :  تابع چک کردن ساختار ایمیل کاربر را بنویسید ؟مثال : متدی که عمل ذخیره کردن کاربر در دیتابیس را انجام میدهد را نام گذاری کنید ؟ج) قوانین نام گذاری (انتخاب اسم) در کلاس ها :در کلاس ها ؛ به طور کلی با توجه به ماهیت اشیاء ساخته شده در آن ، کلاس به صورت اسم(nouns) و ترجیحا به صورت مفرد نام گذاری می شود .مثال : کلاسی که اطلاعات کاربران را در برمیگیرد را نام گذاری کنید ؟نکته تکمیلی : مبحث Case Types یا Name Casing در متغیرها / توابع /متدها و کلاس ها :به طور کلی ما از چهار مدل (نوع) نام گذاری در برنامه نویسی استفاده میکنیم :Camel case -&gt; helloWorldSnake case -&gt; hello_worldKebab case -&gt; hello-worldPascal case -&gt; HelloWorldخُب اینجا یکم سخته تعریف یا استخراج یک قانون واحد ، چون در زبان های مختلف برنامه نویسی بر اساس یه سری قوانین که نمیدونم از کجا و توسط چه کسی تعیین شده! {احتمالا سازنده ی زبان } برنامه نویس ها مدل های مختلفی از چهار مدل بالا را وقت نوشتن اسم ها انتخاب میکنند ، بنظرم بیشتر یه جور قرارداد هست بین برنامه نویس های یک زبان مشخص  ، به همین دلیل من فقط به ذکر چند نمونه بسنده میکنم :مدل Snake case : بیشتر در بین برنامه نویسان پایتون متداول هست که اسم متغیرها و متدها را با علامت _ (آندرلاین ) جدا میکنند :مثال :مدل Camel case : این شیوه نوشتاری بیشتر در بین برنامه نویسان جاوا وجاوا اسکریپت برای نوشتن اسم متغیرها و توابع متداول هستمثال :مدل Pascal case  : معمولا در تمامی زبان های برنامه نویسی کلاس ها را به این شیوه نام گذاری میکنندمثال :مدل Kebab case : (بخوانید کباب کیس !) وجه تسمیه این اسم رو نمیدونم ولی فکر کنم از همون کباب ما ایرانی ها (آسیایی ها ) باشه بیشتر در نام گذاری تگ های HTML  سفارشی کاربرد دارد ، استفاده از - ( دش ) !مثال :نکات تکمیلی در انتخاب اسم (نام گذاری) :- اسم ها باید بازتاب دهنده منظور نویسنده باشند ، اگر اسمی نیاز به کامنت برای توضیح داشت اون اسم غلط است !- استفاده از اسم های بسیار مشابه و یا از انتخاب اسمی با غلط املایی باید پرهیز شود !- نوع متغیر نباید در اسم مشخص باشد مثلا userArray  یا userObj نام های اشتباهی هستند !- سعی کنید از اسم های که راحت تر بشه جستجو کرد استفاده کنید ! (search friendly )فصل دوم : توابع و متد ها در نوشتن توابع / متدها ما دوتا قانون خیلی خیلی  مهم داریم :قانون اول : متدها باید تا حد امکان کوچک باشند !قانون دوم : متدها باز باید کوچکتر باشند !همناطور که مشاهده میفرمائید ! در نوشتن توابع / متدها مهمترین اصل ما در نوشتن یک تابع این است که تا حد ممکن کوچک باشد و حتی المکان هر تابع / متد فقط یک کار انجام دهد !نکته : از این جا به بعد فقط کلمه تابع را می آورم ولی یادتون باشه هر جا که گفتم تابع شما متد هم حساب کنید !البته این کوچکتر بودن هم مربوط به بدنه‌ی تابع میشه (length) و هم حداقل استفاده از پارامتر/آرگومان در توابع که بهتر است بین صفر و حداکثر سه آرگومان استفاده شود !قانون DRY : یک اصل مهم در توسعه نرم افزار است ، خلاصه این اصل میشه اینکه کدی ننویسید که بیشتر از یک بار نوشته شده باشد ! (پرهیز از کپی / پِست کدها )وقتی کدی را تکرار میکنیم دو تا اتفاق بدِ خیلی مهم میوفته !1- برای خطا یابی یا تغیر بخشی از یک کد مجبوریم کلی کد تکراری رو تغیر بدیم (اتلاف وقت و ایجاد باگ )2- کدها تکراری که برنامه نویسی copy/paste کرده باعث میشه حجم کدها بالا بره و بلطبع حجم برنامه ما بیشتر بشه !نکته تکمیلی : High levelیا Low level مسئله این است !در یک دسته بندی خاص  به طور کلی ما دو نوع متد داریم ، متدهای که خودمان خلق میکنیم (سطح بالا) و متدهای که از پیش در هسته زبان برنامه نویسی ما موجود هستند ! (سطح پایین)تا اونجایی که من متوجه شدم ، استفاده از متد سطح پایین از لحاظ تکنیکی به کد تمیز نزدیک تر هستند ولی علمای کد تمیز پیشنهاد میکنند که از متد سطح بالا به خاطر تسلط  به نام گذاری و انعطاف پذیری بالاتر استفاده کنیم (یه جورایی حسم میگه در کدتمیز انعطاف پذیری به خلاصه نویسی ارجعیت داره ! )برای اینکه مطلب جا بیوفته به مثال زیر توجه کنید :مثال : نوشتن قسمتی از برنامه که ورودی کاربر را برای ایمیل و پسورد چک کند ! در اینجا شاهد یک نمونه کد بسیار تمیز هستید !اشتباه این مثال  را در بحث قالببندی نادیده بگیرید !نکات تکمیلی در نوشتن توابع :- بهتر است حتی المکان از ساختار swich/case استفاده نکنید ! چون معمولا بزرگ هستند ، بیشتر از یک کار را انجام میدهند و بیش از چند مسئولیت را بر عهده دارند !- ایده آل ترین تعداد آرگومان های یک تابع ، صفر است !!! و حداکثر باید 3 عدد باشد .- هرچند بلوک های try/catch  کمی زشت هستند ولی به هر حال بهتر از if  های تو در تو هستند !فصل سوم : کامنت ها لطفاً ،لطفاً ،لطفاً  کد کثیف را کامنت نکنید ! دوباره بنویسید ! چون هیچ چیزی بدتر از یک کامنت که اطلاعات غلط می دهد نیست !جوکر !حقیقتاً اگر بخام یکم باهاتون رو راست باشم ، کامنت ها مثل جنایاتی هستن که ما به اجبار مرتکب  !+ جنایتی که عمو باب اینجا گفته یعنی چی ؟- ببینید ، بخوام یه مثال بزنم ، دیدی مثلا یه نفر میره روی اعصابتون مثلا بهتون بی احترامی میکنه ؟ و شما در اون لحظه دوست دارید تمام دندون های دهنشو یکی یکی در بیارید ؟ حالا یا به دلیل حفظ آبرو و شخصیت یا به این دلیل که مثل من معمولا زورتون نمیرسه بیخیال میشید و با یه لبخند جوکر طور ! میگذرید ، دقیقا استفاده از کامنت یه جور همین لبخند تلخه  به کدهای خودمون !قطعاً اگر زبان های برنامه نویسی رسا و تمیز خلق شده بودند شاید هیچ وقت نیازی به نوشتن کامنت ها نبود !به مفهوم ساده تر ، استفاده از یک کامنت در یک برنامه به منظور قبول یک شکست هست ! شکست رساندن مفهوم با کد ... پس وقتی از آنها استفاده میکنیم جای خوشحالی ندارد !اما چه نوع کامنت های بنویسم :کلا میشه سه نوع کامنت تمیز نوشت !اول : کامنت های حقوقیدوم کامنت های &quot;اخطار&quot;سوم : کامنت های لیست انجام کار (todo)به مثال (تصویر) زیر توجه کنید :نکات تکمیلی در نوشتن کامنت : باید حداکثر منظورتان را با کد برسانید !فصل چهارم : قالب بندی اول به تصاویر زیر یه نگاه بیندازید !توی این ادیتور نتونستم خیلی خوب قالبندی رو پیاده کنم !خب همنجور که در تصاویر بالا ، در اولین نگاه فارغ از کارکرد کدها چیزی که نظر شما رو جلب کرد ساختار قالب بندی کدها یا همان formatting  بودما میتونیم با نوشتن کدهای با نظم و انضباط ، افراد را تحت تاثیر قرار بدیم ، به طوری که حتی این نظم باعث بشه ما رو به چشم یه حرفه ای ببیند ! و عکس این قضیه هم صادق هست ، شاید حتی به خاطر نبود نظم و انظباط در ساختار کدهای ما ، ما را به چشم یه برنامه نویس خیلی مبتدی نگاه کنند ، پس خواهش میکنم ، قالب بندی رو جدی بگیرید !ما در قالب بندی دو ویژگی عمودی و افقی رو در پیش رو داریمالف) قالب بندی عمودی:بهتر است طوری ساختار کدهامون رو تنظیم کنیم که حداقل تکان در قسمت سر و چشم باشد .وابستگی ها از بالا به پایین باشند ، مثلا تابعی که فراخوانی میشود زیر تابعی باشد که فراخوانی را انجام میدهد!ب) قالب بندی افقی :سعی کنید تا میتونید به سمت راست پیمایش نکنید ! هرچند میشه فونت را کمی کوچکتر کرد و یا از مانیتور بزرگ استفاده کرد ولی خب این کار اساساً غلط است ، و حداکثر طول هر خط کد نباید بیشتر از 120  کاراکتر باشد .نکته مهم : در تیم های برنامه نویسی ، قوانین داخلی یک تیم در مبحث قالب بندی ارجحیت دارند به سایر قوانین ، اصولاً بهتر است در تیم های برنامه نویسی IDE  ها ، به یک شکل برای قالب بندی تنظیم شوند .   من در بحث قالبندی مدیون سازنده پلاگین Prettier  هستم !فصل پنجم : ساختارهای  کنترلی (شرطی)اول بگم که توی مبحث ساختار های شرطی یا همان کنترلی اولویت ما همیشه استفاده از if هست تا دیگر ساختار های مثل switch/case !ولی خب توی همین if ها هم یه سری  نکات ظریف وجود داره که در ادامه بهشون میپردازماستفاده از نگهبان ! (Guard Clauses)نگهبان کاخ سلطنتیدر برنامه نویسی ، نگهبان عبارتی بولی (boolean expression) است که اگر اجرای برنامه در شاخه مورد نظر ادامه یابد ، باید صحت را ارزیابی کند. صرف نظر از اینکه از کدام زبان برنامه نویسی استفاده میکنید ، کد محافظ(guard code) یا بند محافظ (guard clause) بررسی پیش شرط یکپارچگی است که برای جلوگیری از بروز خطا در هنگام اجرای کد استفاده می شود. &quot; ویکی پدیافرض کنید نگهبان کاخ سلطنتی ملکه بریتانیا هستید ، شما با چشمان تیز بین خود دنبال افراد  مشکوک هستید یا دنبال افراد سالم ؟ (سوال دارای ابعاد نامحسوسی می باشد !)نگهبان (guard) چی هستند ؟ به زبان ساده (آدمیزادی ! )  تکه کدهای که ما می نویسیم تا ورودی کاربران یا سطح دسترسی آنها رو چک کنند و اگر با اطلاعات صحیح مغایرت داشتند سریعا واکنش نشان دهندحالا در نوشتن نگهبان لحاظ کردن دو تا نکته خیلی ضروری استاول : اینکه در مبحث کد تمیز باید از تکه کدهای نگهبانی استفاده کنیم که &quot; آنچه را که غلط است چک کند نه آن چه را که صحیح است ! &quot; ( نگران نباشید توی مثال متوجه منظورم میشید  )دوم اینکه در بدنه ی گارد ها ، باید از ساختار شکست سریع (fail fast ) استفاده شود .برای روشن تر شدن موضوع به تصویر زیر توجه کنیدنکته تکمیلی : برای مدیریت خطا ها مخصوصا در جاوا اکسکریپت و حتی المکان در  سایر زبان ها بهتر است از ساختار try/catch استفاده شود .نکته : مباحث بالا بیشتر در حیطه همزمانی (Concurrency) هستن !فصل ششم : شیء ها ، کلاس ها / ساختار داده خُب قبل از اینکه وارد بحث بشم میخام قبلش تفاوت دوتا موضوع رو براتون مشخص کنم تا دچار اشتباه نشوید ، ما در برنامه نویسی یه سری اصول داریم که معمولا در معماری نرم افزار ها از آن استفاده میشود مثل اصل SOLID , KISS ,DRY  این اصول بیشتر تاکید بر انعطاف پذیری و قابلیت نگه داری دارند ، ولی ما در &quot;کد تمیز&quot; تمرکز اصلی را روی حداکثر خوانایی داریم ولی در جایی که بین خوانایی و و انعطاف پذیری قرار باشه انتخاب کنیم ، خوانایی را قربانی میکنیم ! (خیلی به ندرت پیش میاد این موضوع )پس میشه از این اصول مخصوصا اصل SOLID که اتفاقا توسط نویسنده کتاب کد تمیز آقای رابرت سی مارتین در سال 2000 معرفی شد ، در تمیز کردن کد ها استفاده کنیم !نکته : ما در کد تمیز فقط با اصل اول و دوم SOLID یعنی قانون SRP و قانون OCP کار داریم !خُب حالا بریم سراغ ادامه ماجرا ؛ شیء و کلاس ها !به صورت &quot;کاملا شخصی&quot; بنده مبحث اجرای کد تمیز را در کلاس ها و شیءگرایی به اجرای 5 قانون محدود کردم  !قانون اول : کلاس ها تا جای ممکن باید کوچک باشند !خٌب این قانون فکر نکنم توضیح خاصی نیاز داشته باشه !قانون دوم : کلاس ها باید حداقل وابستگی را به هم داشته باشنداین اصل از  اساس قانونِ دمیتر یا قاعده حداقلِ دانش الهام گرفته شده است  بر اساس این قانونالف) هر واحد(کلاس) باید اطلاعی اندک از سایر واحدها داشته باشد؛ البته تنها از واحدهایی که دارای رابطه «نزدیک» با این واحد دارند،ب) هر واحد تنها باید با دوستانش حرف بزند؛ از غریبه‌ها دوری کندبرای جا افتادن این قانون این مثال جالبه !مثال : فرض کنید شما یک اسب خیلی قشنگ و زیبا دارید ، خٌب حالا قصد دارید به اسب فرمان حرکت بدهید ، آیا شما به چهار تا پای اسب به صورت تک به تک فرمان حرکت میدهید یا به اسب ؟تقلب : زمانی که در برنامه نویسی از تعداد نقطه های بالا استفاده کردید بدونید ، این قانون رو زیر پا گذاشتید !!به مثال زیر توجه کنید :قانون سوم : هر کلاس فقط باید یک وظیفه داشته باشدخُب این قانون از S  اصل SOLID یعنی اصل یگانگی مسئولیت گرفته شده ، بر اساس این قانون ما باید به هر کلاس یک وظیفه بدیم ، مثلا کلاسی که مربوط به احراز هویت کاربران (Auth) هست اگر دربردارنده ی متدهای ورود و ثبت نام کاربران باشد قابل قبول ولی اگر دارای متد نمایش دهنده مطالب کاربران باشد یک کلاس غیر تمیز محسوب میشود !در کل با در نظر گرفتن این قانون برنامه نویسان قادر نخواهند بود کلاس های همه فن حریف بنویسند !قانون چهارم : یک کلاس باید نسبت به توسعه باز و نسبت به اصلاح بسته باشد !خُب این قانون از O  اصل SOLID یعنی  اصل باز ـ بسته  گرفته شده ، بر اساس این قانون به طور خلاصه باید در کلاس ها زمانی که میخواهیم قابلیت جدیدی اضافه کنیم اون قابلیت مثل یک افزونه به کلاس اضافه شود و نیاز نباشد کدهای دیگه بازنویسی شوند ولی زمانی که بخواهیم ویژگی یک کلاس را ویرایش کنیم از هفت خوان رستم بگذریم !تقلب : معمولا این اصل را با کمک ارث بری یا چندریختی عملی میکنیم !قانون پنجم :کلاس ها باید انسجام بالایی داشته باشند !انسجام(Cohesion) بیانگر واضح، آشکار و مشخص بودن مسئولیت ها و وظایف یک کلاس است !بر اساس این قانون اگر کلاس شما وظیفه یا  هدف کاملا مشخص و دقیقی ندارد، در این صورت کلاس شما از انسجام پایینی برخوردار است !تقلب : زمانی که در یه کلاس  ویژگی (property) یا متدی  بلا استفاده مونده ، بفهمید انسجام کلاستون مشکل داره !نقدی بر این نوشته !تعریف ها و انتقادهایی که از تو میشود را بپذیر . برای رشد یک گل هم خورشید لازم است و هم باران !  خُب قبل از خداحافظی حتما یه نکته رو بگم  ، نقدی که ممکنه  بر نوشته من وارد باشه اینه که :1- به دلیل سهل انگاری و طولانی شدن زمان خواندن این کتاب نکته مهمی از زیر دستم در رفته باشه !2- یه جایی یه مطلب مهمی رو دیده باشم به دلیل اینکه اون مطلب رو پیش پا افتاده تصور کردم ازش صرف نظر کرده باشم در صورتی که ممکنه اون نکته برای شما حیاتی باشه , و بلعکس !خلاصه تنبل نباشید و این کتاب را خودتون یه بار بخونید  :)شاید نوشته زیر هم برای شما مفید باشه !ساختار داده ها و الگوریتم ها به زبان آدمیزاد ! https://dataio.ir/%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D9%88-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%A7-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A2%D8%AF%D9%85%DB%8C%D8%B2%D8%A7%D8%AF-etqcpdmrqjxy قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد :)</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Sat, 06 Mar 2021 22:39:48 +0330</pubDate>
            </item>
                    <item>
                <title>سربازی | هنر از دست دادن</title>
                <link>https://virgool.io/@zeidabadi73/the-art-of-loss-%D8%B3%D8%B1%D8%A8%D8%A7%D8%B2%DB%8C-w8beicznqplv</link>
                <description>هشدار : لطفا با ذهن باز خوانده شود !سربازی و دیگر هیچ :|مقدمه :لطفا اجازه بدید اول یک افسانه خیلی قدیمی رو براتون تعریف کنمنقل است در دوران خیلی خیلی قدیم، یعنی زمانی که هنوز شیطان رو بچه محل هاش به اسم عزازیل صدا میکردن و توی آسمون ها برو و بیایی داشت،خلاصه هنوز پسر بدِ خلقت نشده بود !یه روز شیطان میره پیش خدا، میگه خدا جان ، خدایش هدفت از خلقت این آدم که تو بهشت داره برای خودش میچرخه و سوت بلبلی میزنه چی بوده؟ این بابا نه عبادتی میکنه نه شُکرِت میکنه، فقط دنبال یَللی و تَللیِ، چرا باید اشرف مخلوقات باشه ؟خدا میگه،برو آدم و بقیه فرشته های مقرب رو صدا کن بیایین اینجا، تا بگم چرا...شیطان میره همه خوبای درگاه الهی رو جمع میکنه، آدم رو هم صدا میکنه با هم میرن پیش خداخدا رو میکنه به همه ، میگه از امروز مهمترین خواسته ی قلبی هر شخص ، چیزی که واقعا از ته دلش میخاد رو بهش میدم ، حالا یکی یکی بزرگترین آرزوهاتون رو بگید تا برآورده کنم ...در اون لحظه همه فقط به هم خیره میشنانگاری کسی آرزویی نداره..نه! اشتباه نکنید !در واقع کسی نمیدونه آرزو یعنی چی...ناگهان آدم دستش را میاره بالا، میگه من یه آرزو دارمخدا میگه خب بگو ببینم پسر جان،آرزوت چیه...آدم میگه ‌‌:{ادامه افسانه در انتهای مقاله}سربازی :(وای سربازی...به در پادگان نزدیک میشم،همینجوری ک هی نزدیک و نزدیک تر میشم، احساس سُستی در پاهام بیشتر میشهدوست دارم آرومتر برم، حتی شده به بهونه خوردن دو سه تا آجیل باقی مانده ته جیبم...بالاخره وارد شدموای چقدر چشم...راستش رو بخواهید، آدم رو یه جوری نگاه میکنن، خُشک، سرد، مغرورشاید هم با کمی نفرت؛دقیقا مثل نگاهِ یه پیرمرد فلج روی ویلچر به عکس جوانی هاش روی موتورسیکلت در حال تک چرخ زدن جلوی دبیرستان دخترونه ... نگاه به همچین عکسی مثلا !{ چند ساعتی گذشت.. }کسی اسمم رو بلد نبود، منم مثل بقیه تازه وارد ها به لقب  &#x27;موتور &#x27;  شناخته میشدمزیادی اینور و انور نمیرفتم،چون ممکن بود گُم شَمهر چند دقیقه چند تا سرباز از کنار ما رد میشدن و با گفتن چه بوی واکسنی میاد، غرق در شادی و قهقه زنان از کنارمون میگذشتن ! { برویم در صف غذا ! }آه، عدسی..اونم چ عدسی...اشکال نداره نون خالی میخورم..{ برویم به آسایشگاه ! }لعنت به شب؛به سقف خیره شدم،تازه داشت حالیم میشد چه غلطی کرده بودم مرد حسابی نون و آبت کم بود، سربازی رفتنت دیگه کجا بود...نویسنده در آسایشگاه !آرزو میکردم کاش میشد مثل مایکل اسکافیلد توی سریال فرار از زندان؛نقشه فرار از پادگان رو روی بدنم تتو کنم و با تشکیل یه تیم خفن از ...هنوز به جمع بندی خوبی در روش های فرار از پادگان و انتخاب اعضا برای تیمم نرسیده بودم، گفتن پاشید صبح شده...ای بابا، هنوز که سر شب لات هاست! من تو خونمون هنوز تازه این ساعت میخابیدم...{ چند روز بعد  }چند روزی گذشت،دیگر عادت کرده بودم؛ ساعت خوابم تنظیم شده بود ! خورشت وحشت و دمپایی ابری رو هم با اشتیاق میخوردم !دلتنگی خانواده و  دوستان کمتر شده بود ...راستش رو بخواهید دیگر مثل قبل ، برای زیبا رویان دل فریب هم چندان بی قراری نداشتم...جمله بالایی رو فقط پسر ها درک میکنن ! فقط چیزی ؛ نمیدانم دقیقا چی ولی یه چیزی هر شب افکار منو آتیش میزد ، به قول دوستان نمیتونستم بزنم به بیخیالی تا بگذره !البته بین خودمان بماند ، بعدا متوجه شدم من فقط تنها اینجوری نبودم !{ اولین مرخصی }رسیدم خونه ، همه چیز رنگی تر شده بود ..تلویزیون خونمون بزرگتر معلوم میشد !غذای مادر خوشمزه تر شده بود انگاری..به سراغ لپتاپم رفتم ، اول نیم ساعتی در آغوش گرفتمش با هم زدیم زیر گریه ..من و عشقم یهویی ...روشنش کردم ، لعنتی ؛ صدای فَنِ خرابش مثل سمفونی شماره ۹ بتهوون روحم رو نوازش می داد ...برخی، به‌طور مطلق، این سمفونی را عظیم‌ترین و بهترین قطعهٔ موسیقی در دنیای غرب می‌دانند.وقتی VsCode رو باز کردم انگاری که به خر تیتاپ داده باشند، ذوقمرگ شده بودم...{ بازگشت همه‌ی سربازان به سوی پادگان است }دوباره برگشتم به پشت سیم خاردار...با این تفاوت که این دفعه موقع خواب، دقیقا میدونم چی منو آتیش میزنه!هوراااااااااا ، من دیگه میدونستم توی زندگیم چی رو واقعا میخام! یعنی قبلا خیلی چیزا میخواستم  ، ولی الان میدونستم دقیقا چی رو از ته ته دلم میخام ،اون چیزی نبود ، جز زندگی لا به لای کدها ، حل چالش ها سخت برنامه نویسی ، درگیر شدن در فهم مسائل انتزاعی مهندسی نرم افزار ...در واقع سربازی از من همه چی رو گرفت ، همه چیز های که نمیخاستم ، چیزهای که خواست قلبی من نبودن؛خواسته های که جامعه، رسانه های اجتماعی، دوستان، اساتید دانشگاه و.. به صورت ناخودآگاه به من تحمیل کرده بودند...هنر از دست دادن :)شاید یک روز کتابی با این عنوان بنویسم !هنر از دست دادن، مهمترین مهارتی که افراد باید توی زندگی بیاموزنداصلا اگر من روزی وزیر آموزش و پرورش بشم قطعا بعد از یادگیری الفبای فارسی، هنر از دست دادن رو به کُتب درسی مدارس ابتدایی اضافه میکنمیک لحظه صبر کنید...الان دقیقا میدونم کمی گیج شدید ! خخخخخ ، چون خودم میخاستم کمی گیج شوید !بگذارید با کمی مثال شفاف سازی کنم ... آکاردئون نواز خیابانی لطفا در مثال ها مناقشه نکنید !تصور کنید ، مشهورترین جراح مغز دنیا، توی ماشین گرون قیمتش پشت ترافیک،غرق موزیکی ناکوک میشه که از آکاردئون پیرمردی خسته میاد بیرون ، جراح ما ، اگر اراده کُند ، تمام آکاردوئن های شهر را میتونه بخره ولی چرا در حسرت داشتن یک آکاردئون از کودکی  میسوزد ؟ چرا به اون نوازنده خیابانی غبطه میخورد؟ شاید چیزی در ذهن او مانعی برای خرید یک آکاردئون ایجاد کرده است ، مثلا چیزی مانند جمله ی پدرش در کودکی که به او گفته بود ، آکاردئون برای آدم های بی سواد و احمق جامعه است ! حالا این دکتر هم میخواهد بی سواد نباشد {به خاطر همین دکتر شده ! } و هم میخواهد آکاردئون بنوازد !خواسته ی قلبی او یادگیری نوازندگی هست ولی ، یکی از خواسته های او که به صورت غلط در ناخودآگاهش شکل گرفته بی سواد نبودنه ، در صورتی که میتونه هم یه دکتر با سواد باشه هم آکاردئون نواز خوبی !به عقیده شخصی من، اساسی ترین مشکل جامعه، خواستنی های اشتباهی ادم هاست ! چیز های رو میخواهیم که اصلا خواست ما نیستن !ما از بدو تولد شروع میکنیم به آموختن یک هنر و اون هنر به دست آوردنه..بدست آوردن نمره اول، رتبه اول، مقام اول، خونه، ماشین، دختر/پسر مورد علاقه ...ولی یک چیز در این زنجیره آموزشی کمهکه من اسمش رو میگذارم هنر از دست دادن (یا هنر نخواستن)به نظر من همونقدر که مهمه ما بدونیم چی / کی رو میخایم؛همونقدر هم مهمه بدونیم چی / کی رو نمیخایم!از اونجایی که نمیدونیم چی می خواهیم، هیچ وقت علاقه اصلی خودمون رو پیدا نمی کنیمچون علاقه خودمون رو هیچ وقت پیدا نمی کنیم، انگیزه کافی نداریمچون انگیزه کافی نداریم بعد از یکی دو مرحله شکست، بیخیال می شیمراهکار عملی1- رفتن به بیرون از جو زمینمن برای هیچ کس سربازی رفتن یا نرفتن رو تجویز نمیکنم،و نمیخامم روی مشکلات و معضلاتی که سربازی برای جوانان به وجود میاره سرپوش بزارم ، چون خودم هنوز درگیر همین مشکلاتم و در زمان نوشتن این مقاله هنوز 10 ماه از سربازیم مونده ! ولی سربازی یه محیط خاصی بود که من برای اولین بار تجربه کردم، محیطی که در اون باید به هرچه که تعلق خاطر دارید رو همراه نداشته باشید !ممکنه اون محیط برای شما زیرزمین خونه مادربزرگتون باشه، ممکنه بیابان کالاهاری باشه ، شایدم غار فینگال در کشور اسکاتلند :|خلاصه سعی کنید خودتون رو در مکانی قرار دهید که مجبور بشید کمی از تکنولوژی،دوستان، همسر و.. دور باشید .2- ایکس ها رو بنویس هرچیزی که در زندگیت نمیخایی (X) رو لیست کنمثلا شاید لیست تو شامل موارد زیر باشه :شغل فعلیدوست صمیمیمرشته تحصیلیمو...3- با Y ها حالت رو خوب کنحالا در مقابل هرچیزی که نمیخایی، اون چیزی که واقعا از ته دل میخاهی (Y) رو بنویس!مثلا از شغل فعلی که کارمند اداری یه شرکت هستی متنفری در مقابل دوست داری سرآشپز یک رستوران باشی4- نقشه راهت رو از X به Y بنویسبرای رفتن از نقطه X به Y، چشماتو ببند و نقشه راه بنویس، این نقشه راه توعه، هرجور دوست داری بنویس ،ممکنه تو برای 20 سال دیگه که قراره بازنشسته بشی، برنامه ای داری! و این به من و شخص دیگه ای غیر از خودت ربط نداره !مثلا برای تبدیل شغل خودت از کارمندی به سرآشپزی میتونی نقشه راه زیر رو در نظر بگیری :خرید کتاب آشپزیخوندن کتاب آشپزیمهمونی دادن با غذای دست پخت خودمانجام دواطلبانه کار به صورت رایگان در یک رستوران در تعطیلات اخر هفتهپیدا کردن چند تا دوست آشپز از طریق شبکه های اجتماعیو...5- لطفا بهشون نگو !خواهش میکنم تصمیمات رو مثل یه راز پیش خودت نگه دارحتی به همسر، و بهترین دوستات نگوهمیشه در خلوت خودت بهشون فکر کنبا خودت زیاد حرف بزن ولی با بقیه کمتر !مطمئنم، کمی بگذره یاد میگیری چطوری بی می، مست و بی شراب، شوریده حال شوی..سخن پایانی :|خب رسیدیم به انتهای داستانراستی در مورد ادامه ی اون افسانه ساختگی در مقدمه بگم که واقعا منم مثل شما نمیدونم آدم آرزوش چی بود خخخخخ{ متاسفانه نویسنده دچار کمی سادو مازوخیسم شده است که قابل درمان است  }ولی مطمئنم خدا سر حرفش هست، و اون آرزویی که از ته ته قلبت باشه، رو برات براورده میکنه !البته به شرطی ک اون ارزوی خودت باشه !نه ارزوی مامانت، دوستات، جامعه و..!پی نوشت 1 : خطاب به دوستانی که قراره بروند سربازی ؛ هیچ استرس نداشته باش داداش، سربازی هم مثل دبیرستان،دانشگاه،ازدواج و.. میتونه یه مرحله از زندگی تو باشه با کلی خاطرات تلخ و شیرین ، چیز سختی نیست ، بهت قول میدم از پسش بر می آیی ...پی نوشت 2 : خطاب به خودم در آینده ؛ خب پسر ، سربازیت هم تموم شد ، حالا ببینم دیگه چه بهونه ای داری برای نرفتن دنبال رویاهات ؟قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?در صورت دنبال کردن بنده‌ی حقیر در ویرگول ، سعی میکنم مقالاتی با کیفیت تر از قبل به دلیل احساس حضور شما منتشر کنم .اگر این نوشته رو دوست داشتی ، حتما از مطالب زیر هم خوشت بیاد :1 - شروع یادگیری برنامه نویسی با چاشنی کمالگرایی  https://vrgl.ir/dZ68m </description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Sun, 29 Nov 2020 18:37:27 +0330</pubDate>
            </item>
                    <item>
                <title>شما سئو نمیدونی | You Don&#039;t Know SEO</title>
                <link>https://virgool.io/fboard/%D8%B4%D9%85%D8%A7-%D8%B3%D8%A6%D9%88-%D9%86%D9%85%DB%8C%D8%AF%D9%88%D9%86%DB%8C-you-dont-know-seo-g7c8idfqnzsk</link>
                <description>آموزش مفاهیم اصلی سئو در قالب طنز !مقدمهیادمه اواسط آذرماه بود، کرمان یه برف سنگینی هم اومده بود ،حدودا طبق عادت همیشگی ساعت 6 و 45 دقیقه با آلارم موبایلم از خواب بیدار شدم ، چون ساعت 7.30 صبح کلاس داشتم ، ولی شرافتاً اصلا حس دانشگاه رفتن نبود :|همینجور که داشتم شعر معروف مولانا رو &quot; سر بنه به بالین، تنها مرا  رها کن....&quot; رو برای خودم میخوندم تا خودم رو قانع کنم کلاس اول صبح رو بپیچونم ، تلفنم زنگ خورد ؛ دیدم مَمَد (محمد) ،مُبصِر کلاسمونه !مبصر تو دانشگاه همونیه  که استاد باهاش راحته ! بهش خبر میده کلاس،امتحان و... هست یا نه !گفتم ایول پسر عجب روح بزرگی دارم من ، فکر کنم دارم مستجاب الدعوه میشم ! کلاسه لغو شدِ !رو سر بنه به بالین، تنها مرا رها کن                  ترکِ من خرابِ شبگردِ مبتلا  کنماییم و موج سودا،شب تا به روز تنها         خواهی بیا ببخشا،خواهی برو جفا کن (مولانا)من : سلام ، مُحَمَد جان ! کلاس لغو شده ؟ممد : سلام ، نه کی گفته لغو شده ! اتفاقا امروز احتمالا کوئیز (از این امتحان الکی ها ) هم بگیره استاد !من که حالم به شدت گرفته شده بود ، چون به خاطر اون کوئیزه حالا مجبورم بودم برم کلاس (انوموقع نمیدونستم اینا امتحان الکیه !) من : خُب مََمَد ! چرا زنگ زدی !ممد : حاجی میخام پولدارت کنم ....من: سر جَدت بیخیال من شو ، من نِتورک مِتورک نمیام !ممد : نترس نتورک نیست !من : ساقی مواد هم نمیشم ! ممد : نترس ، خلاف هم نیست ، بیا بعد کلاس بهت میگم ....خلاصه  به خاظر کوئیز استاد ؛ نه به خاطر پیشنهاد ممد ! رفتم دانشگاه ... رسیدم به کلاس ، با ردیف جلو (دخترها ) حال و احوال پرسی خیلی خوبی کردم و به تک تکشون با حوصله یه صبح بخیر به سَبک مجری های رادیو گفتم ، بعد سرمو به نشانه سلام برای ردیف عقبیا(پسرها) اوردم پایین! تا خدای نکرده بین همکلاسی هام فرقی نگذاشته باشم ! یه چشمک هم به ممد زدم و رفتم نشستم ته کلاس.جزوه رو باز کردم شروع کردم به تمرین نوشتن نستعلیق تحریری ، نگار من که به مکتب نرفت و خط ننوشت... یهویی دیدم بچه ها پا شدن ، متوجه شدم استاد اومده سر کلاس ، منم به نشانه احترام بلند شدم ولی متاسفانه چون دیرتر از بقیه بلند شدم ، بلند شدنم با نشستن بقیه همزمان شد !! این هم بهونه ای شد دست استاد گفت بیا این تمرین رو حل کن ....همه پسرا چرخیدن سمت من و با لبخندی ملیح مثلا داشتن بهم عرض تسلیت میکردند !حتی اگر قراره ببازی ، یه جوری بباز که دشمنت هم برنده نشه !منم با توجه به جمله :  اگه قراره ببازی یه جوری بباز که دشمنت هم برنده نشه... گفتم استاد ببخشید ولی مثل اینکه امروز امتحان (کوئیز) داشتیمااااااا !استاد هم گفت اشکال نداره ،شما بیا این تمرین رو حل کن ، بعد از حل تمرین شما ، از بقیه کوئیز میگیرم و شما نیاز نیست دیگه کوئیز بدی و اونجا بود من با تک تک سلول های بدنم فلسفه‌ی آنچه در آئینه جوان بیند ، پیر در خشت خام آن بیند رو درک کردم !خلاصه کلاس تموم شد ، رفتم پیش ممد ، گفتم خُب بگو چه کاری پیدا کردی ؟ گفت حاجی اسمتو نوشتم کارگاه یکروزه صفر تا صد سئو ، قراره بریم بترکونیم !من که قبلتر با سئو آشنایی داشتم ، اصلا حوصله این کارگاه رو نداشتم پس به بهونه کار خانوادگی گفتم ممد رو بپیچونم برم خونه بخابم !ولی از اون جایی که ممد یکم زرنگ بود ! یه عکس بهم نشون داد گفت این جلسه دیروز همین کارگاه هست !! بعد از دیدن اون عکس ،از اونجایی که من رفاقت خیلی برام مهم بود !!! صرفا به خاطر &quot;رفاقت&quot; نه چیزی دیگه ای !!!!! رفتم با ممد کارگاه یک روزه صفر تا صد سئو ....رسیدیم سالن همایش ، یه آهنگ خیلی لایت  (آهنگ سیروان خسروی دوست دارم زندگی رو ) رو گذاشته بودن و بقیه ماجرا ..... خلاصه بماند ! (جَو سالن برای نویسنده راضی کننده بود ! )بعد از گذشتن مدتی کوتاه ، یه آقاهه کَچل با کت و شلوار و کراوات ،خیلی شیک و مجلسی ! اومد مثل سخنرانی های تِد شروع کرد یه سری اسلاید رو توضیح دادن ، یه سری اطلاعات معمولی که توی هر وبلاگی پیدا میشد ! ولی خب خدایش با آب و تاب خوبی توضیحشون میداد ! همینجوری که یکم اسلاید ها رفتن جلوتر ، کم کم متوجه شدم داره یه داستان های اتفاق میوفته !داستان از این قرار بود ، که به جای آموزش سئو ، خدمات شرکتشون رو در مورد گوگل ادز به ملت قالب میکرد!گوگل ادز (Google Ads) یک سرویس توسعه یافته توسط شرکت گوگل است که در آن تبلیغ‌ کنندگان برای نمایش نسخه‌ای مختصر از تبلیغات برای کاربران وب  هزینه‌ای پرداخت می‌کنند. گوگل ادز سرویس تبلیغاتی اصلی گوگل و تبلیغات منبع درآمد اصلی این شرکت است.با اینکه متوجه شده بودم داستان رو ولی به خاطر اینکه کلاس رایگان بود ، و خدایی برای برگزاری کارگاه هزینه کرده بودند (پذیرایی ، سالن و.. ) بنظرم کار درستی نیومد که مُدرس رو به چالش بکشم ! ولی خب یه جورایی حضورم رو هم اونجا یه جور بی احترامی به خودم تلقی میکردم ! تو زمان آنتراکت (استراحت) یه بهونه جور کردم ! ممد رو پیچوندم و رفتم سمت خونه ....واکنش دخترهای که تو کارگاه حضور داشتن !! به رفتن من ...چند روز بعد که ممد رو دیدم ، ازش از اون کلاس پرسیدم ، با اینکه مشخص بود به خاطر اون پیچوندنه ! از من کمی دلخوره ولی توضیح داد که تیم تشکیل دادن و قراره پروژه بگیرن و...منم به خاطر رفاقت ! بهش توضیح دادم که اینکه میخواهی کار کنی و پول در بیاری خیلی خوبه ، و حتما ادامه بده ولی حداقل بدون این کاری که داری میکنی اسمش &quot;سئو&quot; نیست و این یه جور واسطه گری برای فروش خدمات ارزی جهت استفاده از سرویس گوگل ادز هست و...ولی خُب به من گفت : شما سئو نمیدونی ! لطفا دخالت نکن !این جمله شما سئو نمیدونی ! یکمی برام سنگین بود !! ولی خب از اونجایی که معمولا آدم آرومی هستم خیلی جدی نگرفتمش و با یک لبخند ژکوند بحث رو پایان دادم !9 ماه بعد ....چون میخواستم زودتر کارشناسی رو تموم کنم ، واحد هامو نتونستم منطبق با هم ورودی های خودم بردارم ، خیلی کم می دیدمشون ، تا اینکه بعد از چند ماه ممد رو دیدم توی سلف دانشگاه ، سر صحبت رو خودش باز کرد ، گفت که آره کاش اونروز به حرفت گوش داده بودم و فلان تومن به خاطر تعهداتی که داده بودم توی چند تا قرار داد ! ضرر کردم ............تا اینکه چند روز پیش با یکی داشتم سر زبان برنامه نویسی جاوا اسکریپت بحث میکردم ! گفت منبع حرفی که میزنی چیه ! گفتم You Don&#x27;t Know JS (کتاب معروف برنامه نویسی جاوا اسکریپت )ناخودآگاه یاد اون روز که ممد این حرف رو به من زده بود (شما سئو نمیدونی !) افتادم و تصمیم گرفتم یه مقاله جذاب و خیلی دقیق در مورد سئو بنویسم ....شروع ....سئو چیست ؟اصلا بزرگترین اشتباه بشر زمانی شروع شد که این جمله  &quot;سئو چیست ؟&quot; رو به زبان آورد !! لطفا کمی حوصله بخرج بدهید تا برایتان توضیح بدم ...ما در دنیا بازاریابی بحثی داریم به اسم SEM یا بازاریابی موتورهای جستجو ! که یکی از زیر مجموعه های اون میشه SEO یا بهینه‌سازی یک سایت (نه لزوماً ! ) برای موتورهای جستجو (نه لزوماً !) (این دوتا &quot;نه لزوماً&quot; که این جا گفتم یادتون باشه ! )لطفا به دو تعریف زیر کمی توجه کنید !بهینه‌سازی موتور جستجو  (Search Engine Optimization)، به‌اختصار سئو (SEO)، یک‌ روند مناسب برای بهتر دیده شدن یک وب‌سایت یا یک صفحه وب در نتایج جستجو طبیعی یک موتور جستجو است.بازاریابی موتورهای جستجو (Search Engine Marketing) ،به‌اختصار (SEM)،تمام فعالیت های بازاریابی و تبلیغات یک سایت در راستای افزایش درآمد در سطح موتورهای جستجو را SEM می گویند.به این معنا که SEO (سئو) ، PPC (تبلیغات کلیکی) و SMO به معنای بهینه سازی سایت ها برای شبکه های اجتماعی  و... بخشی از آن محسوب می شوند !مطمئنم الان دو هزاری شما برخلاف دوست نازنین من ، ممد  افتاد که خیلی از چیزهای که داریم به اسم سئو به خورد ملت میدیم در حقیقت سئو نیستن ! ممکنه مثل کار ممد PPC یا تبلیغات کلیکی باشند !+ پس داداش سئو چیه ؟- لطفا کمی صبر داشته باشید ، به زودی متوجه می شوید !ژست نویسنده مقاله ، وقتی میبینه شما کمی گیج شده اید ! بگذارید داستانی برای شما بگم (لطفا با دقت بخوانید !)در سال 1994 شرکت یاهو اومد یه چیزی ساخت به اسم خزنده (Web Crawler) که کارش این بود بره توی سایت ها و توی اون ها رو جستجو کنه ! تمام سایت ها حتی گوگل در اوایل از این وب خزنده استفاده میکردن تا اینکه گوگل خزنده های خودش رو طراحی کرد ...بعد گوگل دید اینجوری خشک و خالی فایده نداره که ! بالاخره باید یه استانداردی برای دسته بندی نتایج جستجو داشته باشه ، پس اومد توی سال 1996 یه الگوریتمی به اسم PageRank ساخت که به سایت ها بر اساس بازدید و یه سری موارد دیگه یه نمره بین 0 و 10 میداد که هرچی این نمره بالاتر بود بهتر بود !بعد در سال 2002 یه الگوریتم دیگه ساخت به اسم Google Bomb ، این گوگل بُمب سایت ها رو بر اساس لینکی که بقیه سایت ها بهش می دادند ، دسته بندی میکرد و همچنین سال 2009 ، گوگل اومد یه الگوریتم دیگه معرفی کرد به اسم گوگل کافئین که عمر دامنه رو توی نتایج جست و جو تاثیر داد .از سال 2009 تا 2011  ، کُلی سایت با روش های متقلبانه سر گوگل رو کلاه سیاه ! میگذاشتن و به نوعی الگوریتم ها رو دور میزدن و نتایج جستجو رو به دلخواه عوض میکردن !تا اینکه سال 2011 گوگل از الگوریتم پاندا (Panda) رونمایی کرد !الگوریتم پاندا گوگل، الگوریتمی بود که به محتوای وب سایت ها نمره می داد و رتبه وبسایت هایی که محتوای بی کیفیت، اسپم و یا کوتاه (Thin) داشتند را کاهش می داد. خُب با الگوریتم پاندا تا حدودی مشکل مطالب بی کیفیت سایت ها حل شد ولی هنوز مشکلی که وجود داشت تقلب سایت ها با استفاده از لینک های دیگر سایت ها (بک لینک ها ) بود !پس در سال 2012 گوگل الگوریتم پنگوئن (Penguin) خودش رو برای مبارزه با لینک سازی (لینک بیلدینگ) منتشر کرد و هر سال هم اون رو آپدیت میکنه و سایت های متقلب رو پنالتی (جریمه) خواهد کرد !ولی خب این هم زیاد کاربردی نبود ! خیلی از سایت ها با گذاشتن یه چیز پولی به رایگان برای دانلود سریع مثل قارچ رشد کردند که گوگل در سال 2014 با ارائه الگوریتم دزد دریایی (Pirate) خیلی از سایت ها (موزیک و فیلم و... ) که نقض کننده قانون کپی رایت بودند رو از نتایج حذف کرد !ولی باز هم دوستان عزیز ما بیکار ننشستند و با گذاشتن کلمات کلیدی زیاد توی یک سایت ، موتور های جستجو رو گول میزدند !پس گوگل در سال های بعد با ارائه الگوریتم های مثل : الگوریتم مرغ مگس خوار (HummingBird) و الگوریتم کبوتر (Pigeon) و الگوریتم گوگل فرِد (Fred) و.... رو منتشر کرد و این روند تولید الگوریتم های جدید و همچنین آپدیت الگوریتم های قبلی همچنان تا زمانی که گوگل وجود داشته باشه و دوستان متقلب وجود داشته باشند ادامه خواهد داشت !اینو یادتون باشه ، گوگل الگوریتم های زیادی داره ، که هر کدوم تاثیر متفاوتی رو روی نتایج میگذارند مثلا الگوریتم پیج رنک دیگه آپدیت نمیشه ولی هنوز یکم تاثیر داره ! پس متخصص سئو باید خودش رو به روز نگه داره حالا بگذارید یه تعریفی براتون ارائه کنم : اون دوتا &quot;نه لزوماً&quot; بالا رو که یادتونه !سئو : بهینه‌سازی یک سایت (نه لزوماً ! ) برای موتورهای جستجو (نه لزوماً !)تعریف واقعی تر سئو  : بهینه‌سازی عکس ، لینک ، پیج اینستاگرام ! ، مقاله ویرگول! ، سایت و...برای موتور جستجو گوگل ! بر اساس رفتار الگوریتم های گوگل !در واقع ما در سئو از سایر موتورهای جستجو مثل بینگ و یاهو صرف نظر میکنیم ، به دو دلیل 1-سهم کم استفاده کابران در ایران و حتی دنیا 2- سخت گیری کم اون ها نسبت به گوگل ! پس عملا وقتی برای گوگل سئو میکنیم برای اون ها هم سئو میشن ! پس خیلی خودمون رو درگیر اونها نمیکنیم پس تا این جا متوجه شدید ، که عملا جنگ ما ، جنگ با گوگله ! اگر گوگل و الگوریتم هاش وجود نداشت چیزی به اسم سئو هم وجود نداشت ! خُب چطوری ما توی این جنگ پیروز شویم  ؟  ادامه مطلب رو بخونید ... کلاه سفید در مقابل کلا سیاه : White Hat vs. Black Hatقبل از شروع سئو باید انتخاب کنید که کلاهتون چه رنگیه !خُب از اونجایی که یه جورایی این عملیات سئو  رو به هک کردن نتایج گوگل تشبیه میکنند ، مثل دسته بندی هکرها ، ما در این جا دو نوع سئو کار داریم ، سئو کار کلاه سفید و کلاه سیاه!کلاه سیاه ها آدم های بدی نیستند لزوما ! فقط یکم به خاطر مشکلات مالی مجبورن سر آدم ها رو کلاه بگذارند ! اون ها دروغ نمیگن بلکه فقط تمام حقیقت رو به شما نمیگن !حقیقت اینه که روش های کلاه سیاه ها واقعا موثره و سه سوت شما رو به نتایج اول گوگل میبرن ! ولی بعد از یه مدت ( معمولا بعد از 3 هفته ) گوگل شما رو پنالتی میکنه و &quot;تقریبا&quot; برای همیشه عمر اون بیزینس (سایت) تموم میشه ! پس ما اینجا کاری به این نوع روش ها نداریم و اصلا اون ها رو هم توصیه نمیکنیم !جلوتر در مورد پنالتی توضیح میدم ، نگران نباشید !کلاه سفیدا رو بچه مثبت های در نظر بگیرید که صبح بعد از خوردن لیوان شیر صبحانشون مثل آدم میرن سر تولید محتواشون!+ داداچ پس ما کدوم هستیم ؟ سفید یا سیاه ؟- هیچکدوم !+ چرا ؟- چون داداش اینجا ایرانه ! (توضیحات لازم رو جلوتر میدم اصلا نگران نباشید !)START شروع سئو بهترین آموزش سئو به نظرم برای همه (حتی کارفرما ها و صاحبان سایت ها ) آموزشی هست که از دید یه سئو کار تازه کار باشه !خُب پس فرض رو بر این میگیریم شما فارغ از شغل و ارتباط شما با سئو (کارفرما،برنامه نویس ،دیجیتال مارکتر و... ) ، فردی هستید که به تازگی در یک شرکت استخدام شدید به عنوان مسئول بخش سئو !خُب من بهتون تبریک میگم بابت شغل جدیدتون ، شیرینی ما هم فراموش نشه !+ داداچ الان باید چه کار کنم ؟شما باید یه برنامه ریزی داشته باشید که از قبل از قبول هر پروژه تا بعد از اتمام کار شما این برنامه ریزی باید تمامی حالت ها رو در نظر بگیره !این برنامه ریزی بر اساس تجربیات افراد ممکنه مراحلی مختلفی داشته باشه ولی خب تقریبا 60 - 70 درصد کار تمام شرکت ها (اشخاص) مثل هم هست ، تفاوت اصلی بیشتر در ابزار هست !من خودم این مراحل رو اینجوری پیشنهاد میدم :1- چکاپ قبل از قبول پروژه2- انتخاب نقشه راه3-تولید محتوا4- سئوی داخلی5-سئوی خارجی6- مراقبت سعی میکنم به صورت خلاصه این مراحل رو توضیح بدهم ...1- چکاپ قبل از قبول پروژهقبل از اینکه پروژه رو قبول کنید باید یه سری تحلیل روی پروژه انجام بدید !ما دوتا مفهوم خیلی مهم داریم که متاسفانه خیلی ها این دو تا رو با هم اشتباه میگیرن !جعبه‌ی شنی (Sandbox) و مجازات گوگل (Google Penalty) :جعبه‌ی شنی : دیدن توی این فیلم خارجی ها این بچه کوچلو ها رو میگذارن توی یه جعبه‌ی شنی بعد خودشون میرن توی ساحل عشق و حال ؟ البته ما تو کرمان از 3-4 سالگی دیگه تو کوچه گُل کوچیک میزنیم اونم شَرطی! پس دیگه وارد این سوسول بازیهای جعبه شنی نمی شیم !جعبه شنی !!خُب روز اول که سایت میزنید گوگل به خاطر اینکه شما تازه کار هستید شما رو میگذاره داخل سند باکس و خیلی بهتون اهمیت نمیده ! این قضیه سند باکس هیچ وقت از طریق گوگل تایید نشده ولی خُب این یه سازوکار حفاظتی هست که هر شرکت نرم افزاری برای محافظت از اطلاعات خودش انجام میده !این سند باکس فقط مخصوص سایت های تازه تاسیس هست ، که حدودا بین 1 الی 6 ماه طول میکشه ،پس اگر سایتی دارید که عمر دامنه اون زیر 2 ماه هست ، خیلی قول و قرار خفنی با صاحبش نگذارید !یکی از اشتباهاتی که ممد کرده بود این بود که سایت با عمر یک هفته رو میخاست بیاره رتبه یک گوگل !مجازات گوگل (Google Penalty) : در سال 2012 با شروع کار الگوریتم پنگوئن جریمه های گوگل شروع شد ! البته این جریمه درصد ها مختلفی دارن ممکنه سایت متخلف کلا از تمامی نتایج حذف بشه مثل سایت پی سی دانلود که به دلیل نقض قوانین کپی رایت و حق نشر صاحبان اثر پنالتی شد !کوئیز : اگر گفتین به خاطر کدوم الگوریتم پی سی دانلود پنالتی شد ؟البته گوگل همیشه اینقدر بی رحم کار نمیکنه ! اغلب اوقات سایت ها رو به خاطر محتوای تکراری یا محتوای بی کیفیت در یک کلمه کلیدی خاص اون سایت رو شوت میکنه صفحات سوم و چهارم !+ داداچ چطوری چک کنیم سایت پنالتی شده ؟حقیقتش راه دقیق و خیلی مشخصی نداره ولی معمولا افراد از وبمستر تولز (Webmaster Tools) و یا یه سری سایت ها دیگه استفاده میکنن که اگر توی گوگل سرچ کنید Google Penalty Checker  میتونید پیداشون کنید !اشتباه دیگه ممد این بود که سایت های پنالتی رو میخواست سه سوت بیاره صفحه‌ی اول !خُب فرض میکنیم سایت مورد نظر ما 2-3 ماهی هست که افتتاح شده و پنالتی هم نیست ، حالا قدم بعدی چیست ؟بدون شرح !لطفا اجازه بدید یه مثال برای شما بزنم !شما امروز عصر می روید باشگاه بدنسازی محلتون ، پیش مربی باشگاه ، میگید داداچ میخام مقام اول مسابقات پرورش اندام سنگین وزن رو کسب کنم ، چند ماه طول میکشه ، چقدر باید تمرین کنم ؟داداچ میخام رتبه یک گوگل رو توی فلان کلمه ی کلیدی کسب کنم ، چند ماه باید صبر کنم ، چقدر باید محتوا تولید کم ؟به نظرتون اون مربی چی بهتون میگه ؟اول : قطعا یه نگاه به شکم قُلمبه شما میکنه !خُب اول شما باید به سایت طرف یه نگاه بندازید ، ببینید از نظر UI و UX (ظاهر سایت) وضعیتش چطوریه ! سرعت لود سایتش چه وضعی داره ؟ سرور های که داره قوی هستن یا ضعیف !دوم : ازتون میپرسه تو چه مسابقاتی میخوای اول بشی ؟ مسابقات شهرستانی یا قهرمانی جهان ؟یعنی تفاوت نداره مسابقه ای که رقیبت من باشم یا رونی کولمن !؟؟؟خُب شما باید حتما رقابت در کلمه کلیدی مورد نظر مشتری رو در نظر بگیرید ! کلمه کلیدی مثل فروش تلفن همراه خیلی سخت تر از کلمه کلید فروش شلوارک صورتی راه راه آبی هست !!! رقابت با دیجی کالا تفاوت داره با رقابت بین شما و سایت شخص من !خُب حالا که سایت مورد نظر و رقبای اون رو تحلیل کردیم ،قیمت و زمان رو به مشتری اعلام میکنیم و وارد فاز دوم فرایند سئو میشیم !2- انتخاب نقشه راهخُب الان وارد یکی از حساس ترین مراحل سئو شدیم یعنی انتخاب کلمات کلیدی !بنظرتون چرا کلمات کلیدی اینقدر مهم هستن ؟خواهش میکنم بگذارید داستانی براتون بگم !فرض کنید شما صاحب یک مغازه کفش فروشی کوچیک وسط شهر خودتون هستید ! شما در مغازه خودتون کفش های کوهنوردی میفروشید ! خب شما یه سری تراکت و بروشور تبلیغاتی برای مغازه خودتون چاپ کردید ! ولی چون تعداد این تبلیغات کاغذی شما محدوده شما میخواهید این تبلیغات به دست شخصی برسه که واقعا به خرید کفش کوهنوردی نیاز داره (مشتری بالقوه) و با خوندن اون تبلیغات ترغیب بشه و بیاد از شما کفش کوهنوردی بخره (مشتری بالفعل) و شما یه جوری باهاش برخورد کنید و یه جنس خوب بهش بدید که دوباره برای دفعات بعد هم از شما کفش بخره (مشتری وفادار) ! و مغازه شما رو هم به بقیه دوستان کوه نوردش معرفی کنه تا اونا هم بیان از شما کفش کوهنوردی بخرند  (مشتری خشنود)  !همه فکر میکنن تبدیل مشتری بالقوه به مشتری بالفعل سخت ترین مرحله فروش است ولی جالبه اگر بدونید فروش محصول و خدمات به کسی که احساس نیاز به اون محصول رو داره کار سه سوته ! شاید بعدا در مورد چالش ها و تکنیک های تبدیل کسی که هیچ نیازی به محصول شما نداره (یعنی حتی مشتری بالقوه هم نیست ) تا تبدیل اون به مشتری خشنود رو براتون نوشتم ! تا بفهمید بازاریابی چه لذتی داره :)خُب بریم سر ادامه داستان خودمون ، حالا چطوری این تراکت ها و بروشور ها رو پخش میکنید ؟اگر بخواهیم کمی فانتزی-تخیلی فکر کنیم ، شاید مثلا برید یه جادوگر استخدام کنید که این جادوگر بتونه ذهن هرکس از خیابون رد میشه رو بخونه و بگه این شخصی که داره رد میشه مثلا تی شرت زرد پوشیده ، صبح جمعه میخواد بره کوه و شما سریع برید یه تراکت بهش بدید :)باور کنید نیاز به جادوگر نیست ! فقط کافیه صبح زود جمعه پاشید برید کوه اونجا تبلیغاتتون رو پخش کنید ! ولی باورتون میشه بالای 80 درصد صاحبان کسب و کار در ایران همینقدر هم شعور مالی ندارند ! باور نمی کنید؟ چند تا آگهی بازرگانی در رادیو  گوش بدید :)حالا اگر به جای مغازه کفش فروشی یه سایت فروشگاهی کفش کوهنوردی داشتیم چی ؟دقیقا گوگل برای ما نقش همون &quot;جادوگر&quot; داستان بالا رو ایفا میکنه ! با این تفاوت که جادوگر داستان ما برای مغازه مشتری پیدا میکرد ولی گوگل برای مشتری ،مغازه کفش فروشی پیدا میکنه ! یعنی هر کسی که نیاز به کفش کوهنوردی داشته باشه رو به صاحبان فروشگاه معرفی میکنه ! شخص میاد توی گوگل سرچ میکنه مثلا &quot;خرید کفش کوهنوردی&quot;  پس خرید کفش کوهنوردی یک کلمه کلیدی هست حالا اینجا سرنوشت سایت فروشگاهی شما مشخص میشه ! اگر این کلمه کلیدی رو از قبل درست و صحیح انتخاب کرده باشید و روی اون کار کرده باشید ، توی مسیر صحیح قرار گرفتید و جادوگر ما میاد سایت شما رو به مشتری بالقوه معرفی میکنه ! و هرچی که بالاتر باشید توی نتایج گوگل درصد احتمال انتخاب توسط مشتری برای شما بالاتر میره ...+ اوکی داداچ متوجه اهمیت کلمات کلیدی شدیم ! حالا چطوری این کلمات رو انتخاب کنیم ؟روش های مختلفی هست برای انتخاب کلمات کلیدی ، من روش خودمو براتون توضیح میدم ..اول : مشخص کردن موضوع فعالیت سایت مورد نظر .مثلا سایت مورد نظر ما همون فروش کفش کوهنوردی هست ، پس فعالیت اصلی سایت ما میشه فروش کفش کوهنوردی !دوم : انتخاب کلمات کلیدی توسط متخصص سئو !خب حالا من خودمو میگذارم جای مشتری های که میخوان تو گوگل سرچ کنن ، لیستی از تمامی کلماتی که مرتبط با موضوع فعالیت سایت ما رو دارند تهیه میکنم !مثلا : خرید کفش کوهنوردی ، خرید کفش کوه نوردی مردانه ، کفش کوه نوردی بچه گانه ، خرید کفش کوهنوردی دخترانه ، خرید کفش کوه نوردی ارزان ،فروش کفش کوه نوردی،بهترین قیمت کفش کوه نوردی ....معمولا در این مرحله از ابزاری مثل Google Ads Keyword Planner و KWFinder کمک می گیریم .سوم : از خودشون بپرس !معمولا چون شما متخصص سئو هستید شیوه‌ی سرچ صحیح در گوگل رو میدونید پس ممکنه اینجا یه سری کلمات رو در نظر نگیرید و به نظرتون کسی این ها رو سرچ نکنه ! ولی اتفاقا مردم عادی اون ها رو زیاد جستوجو کنن ! پس بهترین کار اینه که مثلا از دوستان و خانواده خودتون بپرسید که اگر بخواهی کفش کوهنوردی بخری چی سرچ میکنی ؟مثلا : کفش راحت برای کوه رفتن ، کفش برای کوه ، کفش برای بالا رفتن از کوه ، کفش کوهنوردی حرفه ای و..چهارم : دسته بندی و انتخاب کلمات حالا که کلمات رو پیدا کردید ، ولی خب شما نهایتا به 30-40 تا کلمه در مورد اون موضوع نیاز دارید ، پس کلمات رو به ترتیب اهمیت و ارتباط با موضوع سایت و همچنین میزان جستجو ی اون ها در گوگل (با استفاده از دو ابزاری که بالا معرفی کردم ) دسته بندی می کنید و تعداد معقولی رو انتخاب می کنید .3-تولید محتوامحتوا پادشاه است !محتوا پادشاه است !در یکی از روزهای ابتدایی سال ۱۹۹۶ میلادی، در سال‌هایی که هنوز می‌شد به راحتی همه سایت‌های اینترنتی را لیست کرد؛ بیل گیس مقاله‌ای را در وب‌سایت مایکروسافت با عنوان ” محتوا پادشاه است” منتشر کرد. مقاله‌ای با عنوانی به یادماندنی که هنوز هم به عنوان حقیقتی انکارناپذیر از آن یاد می‌شود.حقیقت آن است که این روزها دیگر آن دوران گذشته است که شما به راحتی و با انتشار هر محتوایی شانس گرفتن رتبه‌های برتر در موتورهای جستجو را داشتید (با این فرض که هدف شما از تولید محتوا کسب رتبه در نتایج جستجو است.). الگوریتم‌های موتورهای جستجو هر روز به نفع محتوای خوب، پیشرفت کرده‌اند؛ و رقابت محتوایی از هر زمانی نفس‌گیرتر شده است.این نیز یکی دیگر از نشانه‌های اهمیت تولید محتوای خوب است. محتوایی که بتواند نظر مخاطب را جلب کرده و البته از نظر موتورهای جستجو نیز مثبت تلقی شود. البته در این زمینه فراموش نکنید که الگوریتم‌های جستجو روز به روز در حال پیشرفت و تغییر (به نفع محتوای خوب) هستند؛ و بهتر است به‌جای تمرکز بر الگوریتم‌ها، بر تولید محتوای خوب تمرکز کنید.واقعا این مسئله برای همه ی متخصصان سئو کاملا روشن است که تنها راه موفقیت هر سایت تولید محتوای خوب و با کیفیت است که کاربر از آن محتوا راضی باشد !+خُب حالا ما چه نوع محتوایی تولید کنیم ؟شما باید برای هر کلمه کلیدی که در مرحله قبل انتخاب کردید یک صفحه در سایت خودتون داشته باشید و درون اون صفحه محتوا مورد نظر کاربر رو قرار بدید !+خُب چه محتوایی، محتوای خوبی محسوب میشه ؟محتوای که کاربر بعد از خوندن اون علاقه مند باشه (نه لزوما این کار رو بکنه !) اون رو در شبکه های اجتماعی خودش به اشتراک بگذاره از دید من یک محتوای خوب محسوب میشه !به هیچ وجه ، حتی اگر قرار بود سایتتون رو تخته کنید ،لطفا مطلب کپی شده داخل سایتتون نگذارید !+خُب حالا چطوری این محتوای خوب رو تولید کنیم ؟اینا دیگه بر میگرده به دقت و سلیقه شما ، و نمیشه روش خاصی رو ذکر کرد ولی من همیشه خودم بشخصه در مرحله تولید محتوی اول میگم گور بابای گوگل ! بعد خودمو میگذارم جای کاربر و هرچی که خودم به عنوان یه کاربر از اون نوشته انتظار داشته باشم رو مینویسم یا میگذارم !(صدا ،متن ، عکس ، ویدیو ..) بعد که تموم شد ، میگم درود بر گوگل بزرگ ! و اون متن رو سئو میکنم !مثال جالب یکی از اساتیدم : اینو یادتون باشه توی تولید محتوا ، وقتی  که یه مرد ایرانی به دنبال خرید بلیط تور تایلند به سایت شما رجوع میکنه خیلی دنبال تاریخچه تمدنی کشور تایلند از نظر ویل دورانت نیست ! بیشتر برای اون چی مهمه ؟ آفرین ، شناختن جاذبه های طبیعی و غیر طبیعی ! تایلند با قیمتشون ! ...  {خنده حظار }+قاتل همیشه به محل جرم برمی‌گردد ؟قاتل همیشه به محل جرم برمی‌گردد ؟الگوریتم های گوگل مثل یه بازرس ویژه جنایی ، بعضی وقت ها خیلی با دقت عمل میکنن ! گاهی اوقات دوستان تازه کار در سئو متاسفانه خیلی کارشون رو جدی میگرن ! و تمام مطالب سایت رو با دقیق ترین تکنیک های سئو در سایت قرار میدن ! و گوگل هم چون میبینه این سایت خیلی قشنگ تر و تمیز کار کرده ! پس به دلیل اینکه این سایت برای گوگل محتوا تولید میکنه نه برای کاربر عادی در کمال ناباوری اون سایت رو شوت میکنن صفحات دوم و سوم ! مثل این افرادی که توی فیلم ها خیلی دقیقا همه چیز رو برای یه قتل برنامه ریزی میکنن ولی کاراگاه داستان به خاطر همین تمیز بودن و جفت و جور بودن همه چی به اون قاتله مضنون میشن !+آیا مطلب دیگه ای هم هست در مورد تولید محتوا که به ما نگفته باشی ؟بله خُب قطعا خیلی مطالب و تکنیک های دیگه هست که من یا بلد نیستم یا حوصله ندارم براتون اینجا بنویسم ! تکنیک های که خودشون موضوع 6-7 تا مقاله کامل میشن ، پس حتما بروید مقالات مرتبط رو بخونید و فقط به مطالب من بسنده نکنید ...4- سئوی داخلیبیشترین تمرکز ما در سئو داخلی به چند تا موضوع زیر هست :1-سرعت لود سایت برای کاربران2-رنگ بندی و زیبایی ظاهر سایت برای کاربران (UI)3-راحتی و احساس خوب کاربر در مورد استفاده از امکانات سایت ما (UX)4-کد نویسی استاندارد سایت 5- و...خب در مورد موارد بالا مقالات زیادی هست که دوستان لطف کردن نوشتن ، البته موضوعات بالا هر کدام مباحث مفصلی رو دارن که قطعا در این مقاله نمیشه معرفی کرد ،پس من به دلیل طولانی نشدن مقاله ، مطالعه در این بخش ها رو به خودتون می سپارم .یه سری سوال هست که به نظرم بهتره بهشون جواب بدم ...سوال :متخصص سئو حتما باید برنامه نویس باشه ؟جواب : ببینید دوستان ، متخصص سئو در حد HTML بلد باشه کافیه و لزومی نداره خیلی برنامه نویس شاخی باشه !سوال : تفاوت طراح سایت و متخصص سئو  و بک اند و فرانت و.. در چیه ؟ جواب : لطفا به عکس زیر با دقت نگاه کنید !Front-End vs Back-End :) Rest API :|||معمولا توی شرکت های بزرگ طراحی سایت برای تولید محصولات دیجیتال سه تا تیم اصلی داریم (شایدم تیم های دیگه ای هم باشه ! )تیم اول : تیم فرانت اند : که شامل گرافیست و برنامه نویس های هست که ظاهر سایت ما رو میسازن !تیم دوم : تیم بک اند : که شامل برنامه نویس های هست که کد های سمت سرور ما رو با زبان های مختلف (پی اچ پی  ، جی اس ، پایتون و...) می نویسند !تیم سوم : تیم دیجیتال مارکتینگ (یا تیم سئو ) ! خب کار تیم سئو چیه ؟ اون دوچرخه‌ای که بالا اون دوتا نابغه ساختن رو دیدید ؟ تیم دیجیتال مارکتینگ(تیم سئو) وظیفه اش اینه یه نفر رو پیدا کنه ، راضیش کنه سوار اون دوچرخه بشه و تازه بابت این دوچرخه سواری ایمن ازش پول هم بگیره !برگ های خودم از این مثال ریخت !سوال : آیا زبان برنامه نویسی سایت (PHP,JS,Python,Ruby ,...) در سئو تاثیر داره ؟ جواب : به هیچ وجه ! این که میگن فلان زبان نسبت به زبان دیگر سئو فرندلی تره ! دروغی بیش نیست ! چون در انتها کدهای که خزنده ها و ربات های گوگل میبین و میفهمن HTML هستند و بس ! پس در نهایت تمام کد ها تبدیل میشن به HTML ...سوال : آیا هنوز تگ ها و متا تگ های مختلف HTML در سئو تاثیر دارند؟ جواب : خیر ! به غیر از تگ عنوان صفحه (Page Title) و تگ توضیحات (Description) و تگ Viewport بقیه تگ ها هیچ ارزشی برای گوگل ندارند و شاید استفاده از اونها به سئوی سایت شما ضرر هم برسونه !نکته : [ طبق نظر کاملا شخصی نویسنده ] یه سری کارها هستن برای سئوی داخلی سایت که معمولا قدیم انجام میشد ولی امروزه من فکر نمیکنم دیگه تاثیری داشته باشند ولی هنوز بعضی ها اون روش ها رو قبول دارند و انجام میدن ؛ من به خاطر عدم سردرگمی شما اونها رو ذکر نکردم و استفاده از اونها رو وقت تلف کردن میدونم ! مثل تاثیر تگ های هدینگ ، تایید مالکیت سایت و... ولی خب شما میتونید استفاده کنید یا مثل من استفاده نکنید!5-سئوی خارجییادتونه اون بالاتر گفتم ما نه سئو کار کلاه سیاه هستیم نه سئو کار کلاه سفید ؟؟+ داداچ پس ما کدوم هستیم ؟ سفید یا سیاه ؟- هیچکدوم !+ چرا ؟- چون داداش اینجا ایرانه ! (توضیحات لازم رو جلوتر میدم اصلا نگران نباشید !)خُب الان میخام دلیلش رو براتون توضیح بدم !اول بریم تعریف زیر رو بخونیم :لینک بیلدینگ (Link building) یکی از روش‌های سئو و بهینه‌سازی سایت است. پیوندهای ورودی که به یک وب سایت اشاره می‌کنند، برای موتورهای جستجوگر از اهمیت بسیاری برخوردارند و از آن‌ها برای رتبه‌بندی سایت‌ها در نتایج جستجو استفاده می‌شود.شاید بتوان این ادعا رو  کرد که بعد از تولید محتوا ، در دومین درجه از اهمیت ، لینک بیلدینگ یا همون بک لینک های سایت مهمترین عامل بالارفتن ما در نتایج گوگل هستن.گوگل خیلی به لینک های که سایت های دیگه به سایت شما میدن اهمیت میده ! حقیقتش رو بخواهید جناب گوگل معتقده که شما اصلا نباید کاری به لینک بیلدینگ داشته باشید! یعنی شما صرفا  باید به کاربران خودتون خدمت ارائه کنید ، سایت های بزرگ اگر ببینند محوای شما مناسبه قطعا ، به سایت شما لینک می دهند ! ولی خب این عملا در ایران اتفاق نمیوفته ! هیچ سایت بزرگی نیست رایگان به شما لینک بده ! پس ما مجبوریم کمی رنگ سیاه به کلاه خودمون بپاشیم و کلاه خاکستری رو سر کنیم !شما به دو دلیل باید لینک بیلدینگ رو بلد باشید ؟اول : اینکه تمام رقبای شما در ایران این کار رو انجام میدن ! اگر در ایران از بک لینک های با ارزش استفاده نکنید توی کلمات کلیدی رقابتی هیچ شانسی ندارید !دوم : اینکه رقیب های شما جهان پهلوان تختی نیستند ! متاسفانه شاهد هستیم سایت ها برای از دور خارج کردن رقیب هاشون میان برای سایت رقیب بک لینک های بی کیفیت میسازن اونم به تعداد زیاد ، بعد از مدتی رقیب پنالتی میشه و از دور خارج ! پس شما همیشه بک لینک های سایت خودتون رو چک کنید  و بک لینک های بی کیفیت و بی ارزش رو به گوگل گزارش بدید تا تاثیر بک لینک برای شما غیر فعال و دیگه برای شما دردسری ایجاد نشه !با ابزار Google Webmaster Tools و ابزار Majestic بک لینک های سایت خودتون رو چک کنید !آیا میشه به گوگل باج (رشوه) بدهیم ؟سرویس تبلیغاتی گوگل یا همون گوگل ادوردز(ادز)  یکی از مهمترین منابع کسب درآمدگوگل محسوب میشه  ، گوگل بر اساس هر کلیک که روی لینک شما میشه مبلغی رو از حساب شما کم میکنه ، ولی خب قاعدتا نباید در سئو تاثیر داشته باشه ! با اینکه گوگل خودش این بحث رو تایید کرده که در سئو تاثیر نداره ؛ ولی ما به وضوح شاهد تاثیر این سرویس روی سئوی سایت ها به خصوص سایت های که در سند باکس گوگل قرار دارن ، هستیم !شخصا پیشنهاد من اینه ، اگر هزینه شو دارید در روزهای اول که کسب و کارتون رو توی اینترنت راه انداختید استفاده از این سرویس میتونه کمک خیلی زیادی رو بهتون کنه !+ سوال : حالا اگر خواستیم بک لینک بخریم ، باید به چه خصوصیاتی توجه کنیم ؟جواب : زمانی که بک لینک های رایگان یا غیر رایگان دریافت می کنید ، حتما خصوصیات زیر رو در نظر بگیرید  - حتی المکان لینک متنی به سایت شما داده شود- استفاده از کلمه کلیدی مرتبط با موضوع فعالیت سایت شما در بک لینک- حتما و حتما و حتما ! سعی کنید از سایت های با موضوع کاری مشترک و حتی المکان زبان (فارسی) مشترک بک لینک بگیرید.- به مرور لینک بگیرید نه یهویی و یلخی تعداد زیادی بک لینک دریافت کنید- فقط و فقط و فقط ! از سایتی بک لینک بگیرید که توی کلمه کلیدی مورد نظر شما در نتایج گوگل از سایت شما بالاتر باشه .- به هیچ وجه از سایت های پنالتی شده بک لینک نگیرید .6- مراقبت خیلی ها این قسمت رو اصلا انجام نمیدن و متاسفانه در دراز مدت سایتشون ضربه های بدی توی سئو میخوره سئو یک رونده که قبل از شروع ساخت یک سایت تا آخرین روز فعالیتش باید همیشه به صورت مستمر انجام بشه . حتی رقیب های خیلی قدر مثل دیجی کالا اگر روزی بیخیال سئو بشن ! قطعا خیلی از سایت های دیگه به مرور زمان جایگاه دیجی کالا و امثال دیجیکالا رو توی رتبه های بالای گوگل تصاحب میکنند.فانوس دریایی به اسم بانس ریت !اول تعریف بانس ریت رو بخونید :نرخ دفع کاربر یا نرخ پرش کاربر ( Bounce rate) یک اصطلاح در زمینه بازاریابی آنلاین است. نرخ دفع، به‌طور معمول درصد کاربرانی است که بعد از دیدن یک صفحه از سایت خارج می‌شوند و نشان دهنده جذابیت سایت برای بازدیدکننده است. هر چه درصد بانس ریت کمتر باشد بهتر است.اگر درصد پرش کاربران یا بانس ریت بالا باشد به این معناست که بازدیدکننده‌های بیشتری بعد از وارد شدن به سایت و بررسی یک صفحه به بازدید سایر صفحات تشویق نشده یا مورد جذابی برای حفظ کاربر در سایت وجود نداشته و کاربران بیشتری بلافاصله بعد از ورود سایت را ترک کرده‌اند.پس هرچی نرخ پرش سایت شما کمتر باشد ، کاربران از سایت شما راضی تر هستند . اگر زمانی متوجه شدید  نرخ پرش سایتتون داره زیاد میشه حتما باید دنبال دلیل اون بگردید و سریعا مشکل رو رفع کنید ! تنها دلیلی که بانس ریت سایت شما داره میره بالا اینه که کاربر یه مشکلی توی سایت شما دیده و سریع بعد از باز شدن سایت شما اونرو می بنده ! حالا ممکنه به دلیل دیر لود شدن سایت باشه یا محتوای نامناسب یا حتی ظاهر زشت سایت ... به هر حال باید دلیل پیدا بشه و سریعا مشکل رفع شود.+ سوال : بانس ریت باید چقدر باشد؟جواب : قطعا نمیشه نسخه یکسان  برای همه سایت ها پیچید و قطعا این عدد در حوزه های مختلف، متفاوته ولی خب از نظر تجربی 40٪ به پایین یک درصد خوب برای میزان نرخ پرش سایت های ایرانی محسوب میشه.+ سوال : بهترین ابزار به دست آوردن بانس ریت چیه ؟جواب : قطعا ابزار گوگل آنالیتیکس !وارد اکانت آنالیتیکس خود شوید (از اینجا)از منوی behavior وارد زیر منو site content شویدگزینه all content را انتخاب کنیدروی عبارت Bounce Rate کلیک کنیدتله ای به اسم الکسا !الکسا (Alexa) یک سایت آنالیزکننده ترافیک وب هست که یکی از شرکت‌های زیرمجموعه شرکت آمازون محسوب میشه ؛ خُب رتبه در الکسا چون بر اساس بازدیدِ ، کاهش رتبه شما در سایت الکسا نشانه ی خوبی از رشد سایت شما هست ولی باید حواستون رو جمع کنید که خیلی از افراد کلاه بردار با استناد به این رتبه میتونن شما رو گول بزنن ! به راحتی میشه با صرف مقداری پول در عرض یک ماه به رتبه ی زیر 1000 ایران در الکسا رسید ولی این رتبه هیچ ارزشی برای گوگل نداره و حتی ممکنه تاثیر منفی هم این حجم از بازدیدکننده غیر واقعی بر سایت شما داشته باشه !سخن پایانی من سعی کردم با یه لحن خیلی ساده حدود 70-80 درصد سئو رو براتون توضیح بدم؛ قصد من این نبود که بیام یه سری ابزار رو معرفی کنم چون خیلی از فیلم ها و مقالات هستن که این ابزار رو خیلی بهتر از من توضیح دادن ولی حقیقتا قصد اصلی من این بود که شما اون جوهره‌ی اصلی سئو رو درک کنید که اگر روزی خواستید در دوره یا کارگاهی برای سئو شرکت کنید  بدونید دقیقا اون مدرس چی باید بهتون درس بده ! و یا اگر خواستید سایت خودتون رو به دست گروهی برای سئو بسپارید بدونید چه چیز های رو چک کنید تا خدای نکرده خسارت نبینید !امیدوارم از خواندن این مقاله لذت برده باشیدقطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?در صورت دنبال کردن بنده‌ی حقیر در ویرگول ، سعی میکنم مقالاتی با کیفیت تر از قبل به دلیل احساس حضور شما منتشر کنم .حتما از مقالات زیر خوشتان خواهد آمد ! شروع یادگیری برنامه نویسی با چاشنی کمالگرایی – قسمت اولساختار داده ها و الگوریتم ها به زبان آدمیزاد !امنیت کامل در نود جی اس ، راهکار عملی و بدون دردسر !</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Fri, 12 Jun 2020 22:10:26 +0430</pubDate>
            </item>
                    <item>
                <title>امنیت کامل در نود جی اس ، راهکار عملی و بدون دردسر !</title>
                <link>https://virgool.io/cheyab-blog/%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%DA%A9%D8%A7%D9%85%D9%84-%D8%AF%D8%B1-%D9%86%D9%88%D8%AF-%D8%AC%DB%8C-%D8%A7%D8%B3-%D8%B1%D8%A7%D9%87%DA%A9%D8%A7%D8%B1-%D8%B9%D9%85%D9%84%DB%8C-%D9%88-%D8%A8%D8%AF%D9%88%D9%86-%D8%AF%D8%B1%D8%AF%D8%B3%D8%B1-blpiecmfmu8v</link>
                <description>من تنها یک چیز می‌دانم و آن اینکه هیچ نمی‌دانم. (سقراط)مقدمهسلام دوست من امیدوارم حالت مثل حال الان من که دارم این مقاله رو برای شما می نویسم،عالی باشه، خُب ماجرا از اونجایی شروع شد که بعد از اینکه سه گانه معروف آموزش یادگیری برنامه نویسی رو نوشتم (نویسنده خود را اینجا با جی کی رولینگ خالق هری پاتر مقایسه می کند !! ) ، گفتم بیام یه مقاله تخصصی تر در زمینه مورد علاقه خودم بنویسم یکم از جنبه های عمومی برنامه نویسی به سمت تخصصی تر نوشتن با شیب ملایم تغیر جهت بدم !خُب ماجرا از اونجایی شروع شد که یه روز ابری بعد از انقلاب درونی خودم (اشاره به انقلاب کبیر فرانسه در سال 1799 ) ، همینجوری که داشتم دست نوشته های خودمو در مورد فریمورک جنگو و لاراول توی شومینه میسوزندم (با کمی اغراق !) از اینکه از بین جنگو (پایتون)  و لاراول (پی اچ پی ) و نود جی اس (جی اس ) ، برای یادگیری &quot;سمت سرور&quot; قرار بود فقط روی یک موضوع و تکنولوژی تمرکز کنم ، از انتخاب خودم یعنی نود جی اس خیلی خوشحال بودم ، ولی یه چیزی منو از این انتخاب خیلی می ترسوند ! حقیقت چون قبلش با جنگوی پر سر و صدا و لاراول پر زرق و برق کد زده بودم ،سادگی نود جی اس برام جذاب ولی کمی ترسناک بود !اصلا همین سادگی نود جی اس باعث شده بود انتخابش کنم ، دُرسته با یه دستور ساده ی php artisan میتونستم کل سیستم احراز هویت (ثبت نام ، ورود ، فراموشی رمز و... ) رو داشته باشم ولی واقعا این چیزی نبود من میخاستم ، از طرفی هم کلی کد اینور اونور لاراول و جنگو بود که اصلا من نمیفهمیدم اینا چی هستن ، گاهی جهت شیطنت حذفشون میکردم ببینم چه اتفاقی میوفته :Dولی توی نود جی اس همه چیز رو خودم مینوشتم ، و این به اندازه ای  برام جذاب بود ( برخلاف بعضی برنامه نویسی ها که برعکس من فکر میکنن و خب سلیقه شون اینه و صد البته قابل احترامه !) که روی تمام خوبی های جنگو و  لاراول مجبور شدم چشم ببپوشم .ولی خُب همین سادگی ، حس لُخت بودن بهم میداد ، انگاری که دارم لُخت مادر زاد بین هکر های کِرمون (کرمان) قدم میزنم :Dحس من موقع کار با نود جی اس قبل از نوشتن این مقاله :| این فوبیای هک شدن دست از سرم بر نمی داشت ،  خلاصه سرتون رو به درد نیارم باید دست به کار میشدم ، یه بار برای همیشه خیال خودمو ( و الان خیال شما رو ) راحت کنم.تصمیم گرفتم برم وسط دنیای هک و امنیت ، آره بهترین کار  این بود که از دید هکر ها به نود جی اس نگاه کنم پس بدون هیچ اتلاف وقتی عینک دودی رو زدم و با ابزار هکری افتادم به جون نود جی اس !نویسنده مقاله در هنگام تحقیق :| شروع کردم به تحقیق کردن و مقاله خوندن ، راستش نیم نگاهی هم به کتاب مقدس هکرها هم می انداختم، اوقات فراغتم رو  هم توی یوتیوب کلیپ با لهجه هندی میدیم برای ریاضت و تزکیه نفس !خلاصه سرت رو درد نیارم ، در تحقیقات فوق حساس خودم به دو دسته بندی کلی رسیدم : مشکلات (باگ های) نوع اول : که ما اون ها رو با نوشتن کد ها حل میکنیم ، اصولا این نوع مشکلات از بی دقتی برنامه نویس ها بوجود میاد و مختص زبان یا فریمورک خاصی نیست ، مشکلاتی  مثل عدم هش کردن پسورد ، نگذاشتن تاریخ مصرف برای توکن ها ،عدم اعتبار سنجی ورودی های کاربران در سمت سرور  و...مشکلات (باگ های ) نوع دوم: مشکلاتی هستند که لزوما ربطی به نوع برنامه نویسی ما ندارند و به نوعی باگ ابزارهای برنامه نویسی محسوب میشن ، این نوع باگ ها در ذات همه ی ابزار نهفته هستن ولی چون خالق خیلی از این ابزار ها از قبل این مشکلات رو به صورت پیشفرض (مثلا جنگو) رفع کرده ما فکر میکنیم این ابزار از این قاعده مستثنی هستند ! در این نوع باگ برنامه نویس خیلی مقصر نیست ولی باید جهت رفع مشکل اقدام کند .خب من توی این مقاله میخوام روش جلوگیری از  مشکلات نوع دوم رو براتون توضیح بدم :من این مشکلات (حملات) رو به 5 دسته ی کلی تقسیم کردم :1- NOSQL INJECTION2- HTTP headers attacks3-XSS attack4-HTTP Parameter Pollution attacks5-DDoS attacksمن قرار نیست اینجا براتون این نوع حملات و باگ ها رو توضیح بدم خودتون میتونید توی گوگل سرچ کنید در موردشون اطلاعات کسب کنید ، چون اصلا توی یک مقاله نمیشه توضیح داد این ها رو ! مثلا باگ نوع دوم خودش حداقل 15 مورد زیر مجموعه داره (تا اونجا که من مطالعه کردم ، شاید بیشتر هم باشن !)،ولی خب میتونم خیالتون رو راحت کنم که حداقل 95% حملات رو با دستورالعملی که جلوتر بهتون میگم قابل پیشگیری هستن.NOSQL INJECTION  تزریق کدهامتاسفانه این  مدل باگ خیلی بی ریخت و ضایع هستن ، اصلا یه جورایی میشه گفت اصن یه وضعی !شاید بگید خب این مدل باگ مربوط به دیتابیس هست ، اوکی قبول دارم ولی به هر حال شما باید یه مدل دیتابیس (NoSQL یا SQL ) استفاده کنید که باید بگم متاسفانه هر دو دارای این باگ مخوف هستن . چون من خودم از دیتابیس MONGO استفاده میکنم ، پس No SQL ها رو توضیح میدم ..در توضیح این باگ همینقدر بگم که اگر کد زیر رو به صورت ریکوئست بفرستم برای API شما میتونم بدون اطلاع از رمز ورود ، به کاربر admin وارد شوم خخخخخ{&amp;quotusername&amp;quot:&amp;quotadmin&amp;quot,&amp;quotpassword&amp;quot:{&amp;quot$ne&amp;quot: 1}} راه حلی برای NOSQL INJECTIONبهترین راه استفاده پکیج های تحت عنوان sanitize هست ، من چون از اکسپرس جی اس استفاده میکنم به صورت زیر با استفاده از Middleware عمل میکنم ولی شما میتونید از پکیج های دیگه  مربوط به فریمورک مورد نظر خودتون استفاده کنید :npm install express-mongo-sanitize  [github]const mongoSanitize = require(&#039;express-mongo-sanitize&#039;);app.use(mongoSanitize());حمله های  HTTP headers attacksحملات  HTTP headers خیل تنوع بالایی دارند در نگاه اول شاید خیلی خفن به نظر بیان ولی خُب اصلا اینجوریام نیست ! ( من حدود 15 تا از این حمله تو مقالات مختلف دیدم )چند تا از این نوع حمله ها  :dnsPrefetchControlframeguardhidePoweredByhstsieNoOpennoSniffxssFilterو...برای حل این مشکلات من شخصا خودم از پکیج کلاه ایمنی :|  یا همون helmet استفاده میکنم ، به نظرم استفاده ازش برای همه باید اجباری بشه !const express = require(&#039;express&#039;)  [github]
const helmet = require(&#039;helmet&#039;)
const app = express()
app.use(helmet()) xss تزریق اسکریپتاین مدل تقریبا یه جورایی زیر شاخه دسته بندی دوم هم محسوب میشه ولی به دلیل اهمیتش تصمیم گرفتم جداگانه بهش بپردازم .در سال 2014 حمله Cross Site Scripting یا به شکل مختصر XSS، (مخففش در اصل باید باشه CSS ولی چون با زبان CSS اشتباه گرفته نشه ، گذاشتن XSS )در تست‌های امنیتی اپلیکیشن‌های تحت وب، به عنوان بیشترین مورد آسیب پذیری در این اپلیکیشن ها شناخته شد. موارد بالا اهمیت XSS را نشان می‌دهند که تقریبا تمام اپلیکیشن‌های تحت وب باید برای برخورد با این حمله آمادگی داشته باشند چون کاملا در معرض آن قرار دارند.به شکل خلاصه آسیب پذیری XSS میتواند در هر جایی از اپلیکیشن رخ دهد که در آن، اطلاعات از یک منبع خارجی مانند ورودی کاربر به اپلیکیشن داده شوند و آن اطلاعات پتانسیل حمل کد اجرایی مانند جاوا اسکریپت را دارا باشند که ذاتا میتوانند خطرناک عمل کنند.هدف از حمله XSS، تزریق کدهای مخرب برای اجرا در صفحات وبی که به کاربرانشان اعتماد کرده اند(اگر بخواهیم خوش بین باشیم) است.به طور کلی حمله‌ی XSS به دو دسته ی اصلی تقسیم میشود:Non-Persistant XSS یا Reflected XSSPersistant XSS یا Stored XSSپکیج های زیادی برای این مشکل هست ولی خب طبق تست و برسی های که انجام دادم بنده بهترینش رو پکیج زیر میدونم :npm install xss-clean --save   [github]const xss = require(&amp;quotxss-clean&amp;quot);app.use(xss())HTTP Parameter Pollution attacks  &quot;به اختصار &quot;اچ پی پی انتقال اطلاعات با استفاده از پروتکل HTTP می تواند به روش های مختلفی انجام شود ، مانند:Within the URI – using the GET parametersWithin the request body – using the POST parametersIn the HTTP headers – using the COOKIE headerparam1=value1&amp; param2=value2در  حملات HPP ، مهاجم چندین پارامتر مثل بالا توی یه درخواست HTTP ارسال میکنه، پس مکانیسم های امنیتی که هر نمونه پارامتر را بصورت جداگانه بررسی می کنن ، یا کل داده ها رو  به صورت یک رشته واحد پردازش می کنن ، دیگه قادر به شناسایی حمله نخواهند بود.مثال زیر نمونه ای از این حمله رو در فریمورک ASP.NET که نصف سایت های دولتی ایرانی ازش استفاده میکنن رو نشون میده (یعنی فقط مخصوص نود جی اس نیست ) البته در گیتهاب ابزاری که معرفی کردم برای مقابله مثال های جالبی در جی اس براش زده که میتونید بعدا مطالعه کنید .Attack using HPP: http://webApplication/showproducts.asp?prodID=9 /*&amp;prodID=*/UNION /*&amp;prodID=*/SELECT 1 &amp;prodID=2 &amp;prodID=3 FROM /*&amp;prodID=*/Users /*&amp;prodID=*/ WHERE id=3 —راه حل : استفاده از پکیج HPPnpm install hpp --save  [github]const hpp = require(&amp;quothpp&amp;quot);app.use(hpp()); DDOS  حمله از دسترس خارج کردن سرویساین نوع حمله رو اینجوری تعریف کردن :تلاش برای خارج کردن منابع شبکه از دسترس کاربران مجازش می‌باشد؛  اگرچه منظور از حمله DOS و انگیزه انجام آن ممکن است متفاوت باشد، اما به‌طور کلی شامل تلاش برای قطع موقت یا دائمی یا تعلیق خدمات یک میزبان متصل به اینترنت است.بنابراین نمی‌تواند به سرویس‌های مورد نظرش سرویس بدهد و همچنین سیاست‌های مورد قبول فراهم کنندگان سرویس‌های اینترنتی را نقض می‌کنند.خُب قطعا متوجه شدید هدف این حمله فشار روی سخت افزار های سرور هست البته سرور ها و شرکت های که خدمات میزبانی رو ارائه میدن نسبت به قبل خیلی پیشرفت کردن  و انواع تنظیمات و کانفیگ های مخصوص رو برای جلوگیری از DDOS انجام میدن به قل خودشون آنتی دیداس (نرم افزاری و سخت افزاری ) روی سرورها پیدا میکنن ، خب شاید بگید این ربطی به ما نداره و در حوزه وظیفه DevOps باشه ولی باید بگم سخت در اشتباه هستید ، شما باید حتما تعداد ریکوئست های هر آی پی رو به یه رنج معقول محدود کنید چون تعداد ریکوئست بالا فقط مشکل دیداس رو بوجود نمیاره و ممکنه یوزر و پسورد کاربران شما با استفاده از نرم افزار های کرک مثل سنتری ، لو بره !من برای حل این مشکل از روش زیر استفاده میکنم :npm i express-rate-limit   [github]const limiter = rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 100 
});app.use(limiter);تنظیمات بالا این اجازه رو به هرکاربر میده که فقط در هر 15 دقیقه حداکثر 100 ریکوئست به ما بده !سخن آخر ...طبق نظر کاملا شخصی من : بنده معتقدم همینطوری که یه پلیس با اینکه خلاف کار نیست و اصلا وظیفه اش مبارزه با خلافکاراس ،ولی از خیلی از خلافکارا بهتر راه های پیچوندن رو بلده :D شما هم شاید هیچ وقت تا آخر عمرتون نیاز نباش کسی و چیزی رو هک کنید ولی به عنوان یه توسعه دهنده بک اند ( یا دولوپر ) وظیفه دارید دانش خودتون رو توی زمینه هک و امنیت بالا ببرید و بخشی از زمان مطالعاتی خودتون رو توی این حوزه صرف کنید .   هکر ها بعد از استفاده شما از این تنظیمات امنیتی  خخخخخخُب از اونجایی که من شما تنبلا رو میشناسم ، کل این تنظیمات رو برای اکسپرس جی اس انجام دادم و گذاشتم توی گیت هاب به صورت کامنت گذاری شده خیلی شیک و مجلسی، تر و  تمیز ؛ فقط کافیه برای شروع هر پروژه از این فایل با خیال راحت استفاده کنید (ستاره یادتون نره )لینک گیت هاب پروژه  https://github.com/hamed-zeidabadi/NodeJs_highest_security_api هشدار : مقاله زیر به شدت اعتیاد آور است !ساختار داده ها و الگوریتم ها به زبان آدمیزاد ! https://vrgl.ir/ijGuM قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?در صورت دنبال کردن بنده‌ی حقیر در ویرگول ، سعی میکنم مقالاتی با کیفیت تر از قبل به دلیل احساس حضور شما منتشر کنم .برای مطالعه بیشتر :A NoSQL Injection Primer...NOSQL INJECTION ...HTTP Response Splitting Software Attack ...What is Persistent XSSReflected Cross Site Scripting (XSS) AttacksNode.js – Protection from Brute Force and DDOS Attacks</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Fri, 29 May 2020 23:04:39 +0430</pubDate>
            </item>
                    <item>
                <title>ساختار داده ها و الگوریتم ها به زبان آدمیزاد !</title>
                <link>https://virgool.io/dataio/%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D9%88-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D9%87%D8%A7-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A2%D8%AF%D9%85%DB%8C%D8%B2%D8%A7%D8%AF-etqcpdmrqjxy</link>
                <description>بعد از خواندن این مقاله ، آدم قبل نخواهی بود !!مقدمه حقیقتش نمیخام فاز خفن بودن رو  بردارم بیام مثل بقیه مقالات  و کتاب ها یه سری فرمول و مفاهیم انتزاعی رو بیان کنم! راستش رو بخواهید نه من مهندس جعفرنژاد قمی  هستم نه شما حوصله خوندن چنین چیزهای رو دارید :Dماجرا از اونجایی شروع که حدود دو سه ماه پیش تصمیم گرفتم حدود 1 ساعت وقتمو در روز صرف مطالعه در شاخه علوم پایه و مبانی علوم کامپیوتر بکنم ،من که معمولا جز منابع انگلیسی چیزی نمیخونم ، اعتراف میکنم حتی منابع فارسی این مفاهیم خیلی برام گنگ بود چه برسه به خارجکی ها ! :D ولی خب بیخیال نشدم کم کم برام بعضی مطالب جا افتاد ولی معجزه زمانی رخ داد که این مطالب رو کم کم با تمرین وارد کدنویسی های (کدها) خودم کردم ، اون زمان بود که تفاوت زیادی رو احساس کردم !قطعا بعد از خوندن این مقاله شما هم مثل من کلی باحالتر کدنویسی می کنید ...پس یه سری از دست نوشته هامو توی این چند ماه تحت عنوان مقاله ای در اوردم و اینجا برای شما به اشتراک گذاشتم ، این مقاله شامل تمامی مباحث نیست ،شاید بعدا بقیه اش رو نوشتم ولی فعلا مهمترین هاشو براتون دست چین کردم ...  ، راستی تا اونجا که میشد سعی کردم اصلا از اصطلاح تخصصی خاصی استفاده نکنم ،مگر در مواقع ضروری ..شروع :Big O notation -  نماد اُ تُپل مُپلحقیقتا بخوام اعتراف کنم اولین بار که اسمشو دیدم و یه چند تا مثال (لگاریتم) ازش مطالعه کردم به معنای واقعی کلمه برگام ریخت ! اصلا هیچ ارتباطی بین مثال ها نمی دیدم ، فقط عدد بود و فرمولای عجیب غریب ! که من هیچی نمی فهمیدم ! پیش خودم گفتم واقعا تمام برنامه نویس ها اینا رو بلدن ؟؟ ای بابا اینا چقدر خفن هستن :| ولی یکم که جلوتر رفتم و بیشتر مطالعه کردم متوجه شدم نه اینقدرها هم ترسناک نیست ،تازه تپل مپل و جالب هم هست ...تصویر ذهنی من بعد از مطالعات فراوان از این مفهوم سخت :)بخوام ساده براتون توضیح بدم &quot;نماد O بزرگ&quot; یه روش هست توی ریاضیات محض که برای طراحی الگوریتم و پیشبینی رفتار الگوریتم ها استفاده میشه !خُب چه دردی رو از یه برنامه نویس دوا میکنه ؟ 3 تا کار برای ما انجام میده :اول : خوانایی بهتر الگوریتمدوم : سرعت بیشتر برنامهسوم : مصرف کم تر حافظهحالا این تُپل چطوری  این کارها رو  میکنه ؟یه پسر بچه تُپل لُپ گُلی به اسم  Big O notation  رو در نظر بگیرید ، حالا یه ظرف ماکارونی نارنجی رنگ (فانکشن ، متد ، الگوریتم ...! ) گذاشتین جلوش ، خب حالا شروع میکنه به خوردن کد های اضافی ما دیگه !لظفا بگذارید برایتان مثالی بزنم :فرض کنید میخواهی  که جمع اعداد مثبت رو حساب کنیم ،خب مثلا جمع 5 عدد اول اعداد طبیعی رو به صورت زیر حساب میکنیم  :1+2+3+4+5 = 15   //  OK :|خب این که آسونه ، حالا بخواهیم جمع 100 تا عدد طبیعی اول(ابتدا) رو حساب کنیم مسلما نیاز به یک فانکشن داریم ؛ فانکشن (تابع) رو میتونیم به صورت زیر بنویسیم :function addNum(n) {var total = 0;for (var i = 0; i &lt;= n; i++) { total += i; }return total 
}var number = addNum(100); 
// حالا اینجا  میتونیم مثلا با قرار دادن عدد 100 ، جمع 100 تا عدد طبیعی رو حساب کنیدخُب حالا از Big O استفاده میکنیم ، تُپلی به ما میگه که باید این کد ها رو به یک فرمول ساده قابل درک تر تبدیل کنید خب این کار به این صورت هست که ما خط به خط کد رو تحلیل میکنیم ببینیم چه بلای داره سر ورودی یا خروجی ما میاد (اعمال ریاضی) بعد با توجه به تحلیل اعمال ریاضی انجام شده روی ورودی ما میتونیم به یه فرمول برسیم : function addNum(n) {return  n * (n + 1) / 2  }var number = addNum(100);
دیدید چه با حال شد :D خب یه سری اعمال ریاضی با  اصطلاحات قلمبه ...  در اینجا انجام شد که به نظرم من یادگیریشون اصلا مهم نیست ! ، بیشتر نفس و معنای این تکنیک مهمه که به روح و جان یه برنامه نویس بشینه ، شما باید به عنوان یه برنامه نویس همیشه ورودی ها یک تابع(فانکشن) و همچنین فعل و انفعالاتی که روی اون ورودی انجام میشه رو تا پایان به صورت ذهنی تحلیل کنید که همیشه کوتاه ترین راه رو اون ورودی طی کنه تا از اون تابع خارج بشه ! چیزی که ما متاسفانه بیشتر توی برنامه نویس ها می بینیم اینه که به خروجی فقط اهمیت میدن حالا کدی که نوشتن درست کار کنه ، بقیه اش مهم نیست ، اصلا به این فکر نمیکنن چند خط کد به صورت بهینه نوشتن ... پس ، لطفا فقط خروجی کار براتون مهم نباشه !Arrays vs Objects حقیقتش رو بخواهید من زمانی که پایتون رو یاد گرفتم ، تفاوت خیلی چیزا رو تو زندگیم حس کردم :Dپایتون با داشتن 14 نوع از انواع مختلف داده (کی اولین بار گفته پایتون آسونه ؟ مگ دستم بهش نرسه ! ) یکی از گزینه های مناسب استفاده در علم داده هست ، ولی خُب حقیقتش رو بخواهید ما جاوا اسکریپت کارا خیلی در مورد این چیزا به مشکل نمیخوریم ، همه‌مون  به صورت ذاتی ! تقریبا میفهمیم کجا آرایه استفاده کنیم کجا آبجکت (شی) ولی جالبه اگر بدونید در جاوااسکریپت :{ } آبجکت (شی) : ما زمانی که بخواهیم حجم زیادی از اطلاعات رو داشته باشیم که به اون ها سریع دسترسی پیدا کنیم میایم از شی ها استفاده میکنیم ، دقیقا زمانی از شی ها استفاده میکنیم که خیلی دسته بندی اطلاعات برامون اهمیت نداشته باشه ! شاید براتون جالب باشه ما با مِتُد ()Object.entries میتونیم هر عضو آبجکت رو به آرایه به صورت  [key, value] تبدیل کنیم :|[ ] آرایه : شاید جالب باشه بدونید یک از معانی ترجمه کلمه Array  به زبان فارسی میشه منظم کردن ! خب از همین معنی شما کاملا متوجه شدید که زمانی دست بندی (جستجو) مد نظرمون هست باید از این نوع تایپ استفاده کنیم ، آرایه ها حدود 30 تا متد دارند که واقعا خیلی جذاب هستن ، نیازی نیست همه رو یادبگیرید ولی سعی کنید اون متد های اصلی رو حتما خوب درک کنید !آرایه ها از نظر پرفرمنس پایین تر از شی ها هستند !معمولا ما تو برنامه هامون همیشه سعی میکنیم از ترکیب این دو استفاده کنیم تا هم بتونیم بهترین پرفرمنس رو داشته باشیم هم دستمون باز باشه کلی متد برای استفاده داشته باشیم ! [    {key:value} ,  {key:value} ,  {key:value} ,  {key:value}    ]problem solving   مهارت حل مسئلهخُب رسیدیم به موضع مورد جذاب و مورد علاقه ی من !  بنده با این موضوع توی دانشگاه آشنا شدم (بالاخره دانشگاه که همش مضر نیست :D)  ، البته از اونجایی که به مباحث روانشناسی علاقه داشتم خارج از دانشگاه هم دنبال این موضوع رفتم ...حقیقتش رو بخواهید این مهمترین مهارت یک برنامه نویس هست ، اصلا اگر رئیس فرهنگستان زبان و ادب فارسی شخصا از من بپرسه یه اسم جایگزین برای شغل &quot;برنامه نویسی&quot; پیشنهاد بده من قطعا بهش میگم غلامعلی جان بزار &quot;مشکل باز کن&quot; :D (امیدوارم جناب حداد عادل مقاله بنده رو نخونن !) شما رو اصلا استخدام میکنن و بهتون پول میدن که مشکلات رو حل کنید ! حالا مشکل چیه ؟ مشکل هر چیزی میتونه باشه! به مثال زیر توجه کنید  (لطفا در مثال زیر مناقشه نکنید )  :عنوان پروژه : فروشگاه اینترنتی صنایع دستی بودجه پروژه : 500 هزار تومان چیزی که برنامه نویس خنگ می بینه : حاجی من یه سایت فروشگاهی نیاز دارم ! که کلی پول در بیارم ولی از اونجایی که خسیس هستم نمیخام خیلی خرج کنم !چیزی که برنامه نویس باهوش می بینه : حاجی من حس میکنم فروش محصولم کمه ، من میخواهم فروش محصولم رو از منطقه ای که هستم به تمام کسانی که در دنیا به اینترنت دسترسی دارند گسترش بدهم ! چون حس میکنم محصولم از نظر قیمت و کیفیت بدون رقیب هست ولی مشکلی که دارم اینه بودجه مالی محدودی دارم ...یکم تخیل کنید ببینید عکس العمل برنامه نویس خنگ و زرنگ چیه ؟؟من فکر میکنم برنامه نویس خنگ یه سایت با این CMS های آماده برای طرف میزنه و پول رو میگیره و میره ، صاحب پروژه میمونه با یه سایت که اصلا نمیدونه باید چه کار کنه ، چطوری قیمت گذاری کنه ، چطوری مطلب بنویسه ، سئو اصلا چیه ؟ ارور های سایت رو چطوری رفع کنه ! پس بعد از یه مدت که میبینه نتیجه ای حاصل نشد بیخیال سایته میشه ! و اصلا درش رو تخته میکنه .ولی برنامه نویس زرنگ میاد اول بررسی میکنه ، خب واقعا اگر محصولش اون چیزی میگه باشه به طرف پیشنهاد همکاری میده ، بدون دریافت پول یه سایت میاره بالا با استفاده از تجربه اش سئوی سایت رو اوکی میکنه و تبدیلش میکنه به یه برند پولساز ،به شریکش میگه چه محصولاتی بیشتر طرفدار داره روی اون نوع بیشتر وقت بزاره ، روزی میرسه که شاید به جای اون 600 تومن که ازش گذشته الان داره ماهی 6 ملیون با این سایت در میاره !البته این داستان تخیلی یه مثال کلی بود که ممکنه تو هر نقطه ای از زندگی ما رخ بده نه فقط لا به لای کدها  !برگردیم سر موضوع اصلی ، یعنی حل مسئله ، خب این موضوع غیر قابل کتمان هست  هر برنامه نویسی روزانه با باگ ها و مشکلاتی زیادی رو به رو میشه ، حتی بزرگترین برنامه نویس ها هم از این قاعده مستثنی نیستند ولی حالا مثلا به یک باگ برخوردیم چطوری حلش کنیم ؟؟مراحل حل مسئله :۱. فهم مسئله : دراین مرحله می‌باید درک کاملی از مسئله در ذهن خواننده به وجود آورید. این یعنی باید بفهمیم مسئله چه معلوماتی بما داده‌است وچه مواردی را از ما خواسته‌است. ( باگ دقیقا چیه ؟ )۲. انتخاب روش در این مرحله با استفاده از درکی که از مسئله در ذهن ما وجود دارد یکی از روش‌های حل مسئله مناسب با این مسئله را انتخاب می‌کنیم (میتونیم توی اینترنت سرچ کنیم یا از یه برنامه نویس دیگه کمک بگیریم)۳. اجرای روش: حال که روش مناسب را انتخاب کردیم ان را اجرا می‌کنیم (کد های جدید رو جایگزین کد های قبلی می کنیم )۴. بازگشت به عقب:جواب‌های بدست آمده را با صورت مسئله مقایسه کرده و یکبار دیگر مراحل بالا را مرور می‌کنیم تا مطمئن شویم قسمتی از مسئله را اشتباه نرفته یا جا نینداخته باشیم (از رفع باگ مطمئن میشیم بعد دلایل ایجاد باگ و نحوه ی دیباگ رو تو ذهن میسپاریم یا یاداشت میکنیم )بعد از مطالعه این چهار مرحله ، فکر کنم الان دقیقا فهمیدید که چرا هرچی برنامه نویس ها حرفه ای تر میشن ، کمتر باگ درست میکنن :Dالبته روش‌های زیادی برای حل مسئله مثل آزمون و خطا ، درخت تصمیم ، تخیل ! و... وجود دارند که توی اینجا مطرح کردنش ضرورتی نداره ولی شاید توی زندگی رزومره خیلی براتون مفید باشه حتما بعدا وقت کردید میتونید بیشتر در باره این موضوع مطالعه کنید ... Algorithms and flowcharts  الگوریتم و فلوچارتحقیقتش میخواستم یه مطلب خیلی خوب و جامع و کامل برای این موضوع بنویسم ، تا یه جاهایی  هم نوشتم ولی دیدم آقای محمدحسین میثاق پور مقاله ی رو تحت عنوان  الگوریتم و فلوچارت به زبان ساده نوشته ، که واقعا مقاله خوبیه ، دقیقا اون چیزی که توی ذهن من بود رو نوشته، و حتی شاید این کار رو بهتر از من انجام داده (اشک هایش رو پاک میکند) ،خب تصمیم گرفتم این قسمت رو به اونجا ارجاع بدم مطمئنم از این مقاله خوشتون میاد :D (لینک مقاله )راستی اگر سه گانه ی معروف &quot;شروع یادگیری برنامه نویسی&quot; رو نخوندی همین الان شروع کن!هشدار : مقاله زیر به شدت اعتیاد آور است !{ لینک مقاله شروع یادگیری برنامه نویسی } https://vrgl.ir/TOPrC قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Wed, 20 May 2020 18:57:42 +0430</pubDate>
            </item>
                    <item>
                <title>شروع یادگیری برنامه نویسی با چاشنی کمالگرایی – قسمت سوم (پایانی)</title>
                <link>https://virgool.io/@zeidabadi73/%D8%B4%D8%B1%D9%88%D8%B9-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%DA%86%D8%A7%D8%B4%D9%86%DB%8C-%DA%A9%D9%85%D8%A7%D9%84%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86%DB%8C-uzkuviw7pgjf</link>
                <description>قسمت قبل این مقاله را از ( این آدرس ) مطالعه کنید .… ]دانشگاه زدگی … ]مقدمه خُب رسیدیم به اینجا که بعد از اینکه حوزه فعالیتم رو در برنامه نویسی پیدا کردم و علاقه مندی و ابزار مورد نیازمو مشخص کردم با استفاده از یک نقشه راه عالی شروع به یادگیری عمیق مفاهیم کردم (این موضوعات رو به صورت کاملا عملی در قسمت قبلی مقاله توضیح دادم) ، واقعا به سختی تلاش می کردم ، حتی گاهی تا روزی 14-15 ساعت پشت سیستم بودم ،کلی زبان برنامه نویسی و فریمورک و کتابخانه و تکنیک و تاکتیک ، باگ و دیباگ و تست و... یاد گرفتم ، به جرات میتونم ادعا کنم تکه خط کدی رو ننوشتم مگر اینکه بارها و بارها در موردش سرچ کرده باشم و بدون این که ندونم چیه و دقیقا چه کار میکنه ازش استفاده نکردم (خاصیت خوب کمالگراها ) ، برای تمرین شاید چند صدبار یه کانتر (شمارنده اعداد) نوشتم و پاک کردم ، شاید یک خط در میون پایه ثابت تمام کدها کنسول دات لاگ بود ، خلاصه خیلی خوب کدها رو متوجه شدم تقریبا میشه گفت کل اون مفاهیمی که توی لیست یادگیریم (نقشه راه ) بود رو ، یاد گرفته بودم تا اینکه اون روز  ...هر موفقیت بزرگی حاصل جمع یا حاصل ضربی از موفقیت های کوچک و درس هائی است که از شکست های کوچک می آموزیم. همان گونه که برای ساخته شدن یک ساختمان زیبا هزاران آجر باید دقیق و متناسب با یکدیگر چیده شوند و طبیعتا نمی توان تا قبل از طراحی نقشه و ساخته شدن طبقه اول به فکر ساختن طبقه دوم بود، در زندگی یک انسان هدفمند نیز اوضاع به همین شکل است. همان گونه که بهترین نقشه ساختمان اگر روی کاغذ باقی بماند اهمیت چندانی پیدا نمی کند، بهترین فکرها نیز تا وقتی از وجه تئوریک به حالت عملی مبدل نشوند ارزش چندانی نخواهند داشت. از جمله رازهای موفقیت انسان های موفق; کوتاه بودن فاصله اندیشه تا عمل آنها است. پس بهتر است با خود فکر کنیم که چگونه می توانیم در راستای اهدافمان اقدامات عملی انجام دهیم.شروع اون روز وقتی تیک آخر رو جلوی اون کتابخانه لعنتی زدم (اشک هایش رو از خوشحالی پاک می کند ) ، حس کردم یه فوق لیسانس دیگه گرفتم !آری اینجانب آن روز ، مفتخر شدم دومین فوق لیسانس خودم را ، در رشته کدنویسی! گرایش باگ ابزار! از دانشگاه ذهنی خودم دریافت کنم !قاعدتا باید از شادی در پوست خیش نگنجم ! ولی اصلا خوشحال نبودم !حتما یه جای کار ایراد داشت  ...ولی آخه کجای کار ؟دیوار ؟!! جان !!  باید چه کار میکردم ! این فوق لیسانس رو هم مثل قبلی (اون یکی بخدا واقعی هست !) قاب کنم بگذارم روی دیوار اتاق ! تا هر وقت مادر از کنار آن ها عبور میکند قربان صدقه ی هوش ، زکاوت و استعداد پسر دلبندش برود !؟نه واقعا ، چرا ، آخه ؟ مشکل چیه ؟چرا حس خفن بودن ندارم ؟اینجا چرا اینجوریه واقعا  ، این چه مملکتیه ؟؟ همش تقصیر ... نه  نه  واقعا این جا ربطی به مملکت نداره ،  خب پس مشکل یه چی دیگه است ، ولی نمیدونم چی ...واقعا چرا ناراحتم ..واقعا چرا حالم بده ..من که تمام چیزایکه بنظرم نیاز بود رو یاد گرفته بودم ، چرا اون معجزه اتفاق نیوفتاد !واقعا چرا معجزه اتفاق نیافتد ؟من معجزه مووووووخام ? (وی خود را لوس میکند تا شاید معجزه اتفاق افتد)درد مشترک باید کمی رُک صحبت کنم ... حقیقتا خیلی از چیزهای که الان یاد گرفتید در مورد برنامه نویسی خیلی از آدم های دیگه حتی بهتر از شما یاد گرفتن (حتی دو سه تا مدرک از شریف و امیرکبیر هم اضافه تر دارند ) ولی چرا اونا موفق نشدن !؟  بعد اونا موفق نشدن شما انتظار دارید موفق شید ؟ این سوال هم برای من مدتی پیش ، ایجاد شده بود ، واقعا چرا حالا که برنامه نویسی رو از منابع روز دنیا (نه منابع 800 سال پیش دانشگاهی ) و با علاقه خودم ( نه صبح زود به اجبار حضور و غیاب استاد ) یاد گرفته بودم ، باز چرا حس خنگی داشتم؟واقعا مشکل اساسی چی بود ؟من متوجه شدم مشکل اساسی بدبختی من و شایدم شما ، صرفا محیط دانشگاه نیست، یعنی حالا چون از دانشگاه فارغ التحصیل شدی ، بعد بری دنبال علاقه ات لزوما موفق میشی ، ممکنه یه بیماری خطرناک توی دانشگاه گرفته باشی (حتی اگر هیچ وقت دانشگاه نرفته باشی فقط از کنارش رد شده باشی یا با یه دانشجو معاشرت کرده باشی هم احتمال ابتلا شما به این بیماری مُهلک تر از کرونا نیز وجود دارد !)لظفا بگذارید یک مثال برای شما بزنم ، خواهشا در این مثال کمی بدون مناقشه ، تأمل کنید !فرض کنید : من رو فردا تو خیابون می بینید ، از من میپرسید خب چه خبر ،چرا این قدر خوشحالی  (بلانسبت خر کیفی ! )، منم میگم چون از شرکت مایکروسافت جهت همکاری برام دعوت نامه اومده!خب قطعا شما بهم تبریک می گید و چیزی خیلی به روی مبارک بنده نمیارید ، ولی وقتی از من دور میشی ، توی ذهنت میگی این یارو که دیپلم رو به زور گرفته ،اونوقت این همه دکترای نرم افزار و سخت افزار از صنعتی شریف رو دعوت نمیکنن ولی اینو دعوت می کنن ! قطعا دروغ میگه ! ولی خب خودت میدونی که صاحب مایکروسافت (بیل گیتس) هیچ تحصیلات دانشگاهی نداره ! (در واقع مالک فقید اپل هم نداشت ! اصلا موسس فیسبوک هم نداره !) ولی چه مانعی در ذهن تو وجود داره که میتونی قبول کنی مدیر یه شرکت میتونه هیچ مدرک آکادمیک دانشگاهی نداشته باشه ولی نمیتونی بپذیری من به عنوان کارمند دون پایه همون شرکت باید حتما پی اچ دی با 7-8 تا آی اس آی خفن داشته باشم تا بتونم اونجا کار کنم ؟ شاید بگی نه خُب اونا فرق میکنن ؟ باش قبول ، اگر راست میگی فرق های که اونا رو از تو متمایز میکنه رو  توی دو خط بنویس ! (به غیر از رنگ چشم و مو و..)چرا تو جامعه ی ما اول باید مدرکشو داشته باشی  ، تا بهت اجازه بدن توی اون حوزه حرف بزنی ؟ دانشگاه زدگی ... ، خب باید هم به من حق بدید ، من 6-7 سال از سال ها مهم زندگیم رو توی یه فضای آکادمیک اونم از نوع بسته زندگی کردم ، قطعا روی من باید تاثیر میگذاشت ولی این تاثیر چی بود که نمیگذاشت توی برنامه نویسی پیشرفت کنم ؟بعد از کلی تفکر عمیق !!! به دوتا نتیجه رسیدم :اول : یادگیری کامل و جامع برای همه !بگذارید اینجوری توضیح بدم که من بعد از فارغ التحصیلی به خوبی ریاضی و آمار – حسابداری – مدیریت – اقتصاد خرد و کلان  و.. رو میدونستم ولی خب مشکل اینجا بود واقعا کل علم اقتصاد خرد و کلان با اون مفاهیم انتزاعی و تئوریک به درد من بازاریاب نمی خورد ! وجداناً به غیر از یه سری اصول کلی حسابداری ، من نیازی به علم حسابداری نداشتم فقط کافی بود بدونم  اینی که اینجا هست چیه و به درد چی میخوره ، دیگه بقیه اش به من ربطی نداشت ، من که نباید به عنوان بازاریاب سندهای مالی رو تنظیم کنم ؟ (حقیقتش رو بخواهید خود حسابدار ها هم همینا رو میدن نرم افزار های حسابداری و مالی براشون حساب میکنه !)  ، شرافتاً میتونم بگم تا حالا نتونستم حتی یک خط از اون مباحث ریاضیات پیشرفته ای که پاس کردم رو استفاده کنم ! برای من آموزش کار با ماشین حساب که توی مقطع راهنمایی یاد گرفته بودم کفایت میکرد ، پس چرا یاد گرفتم ؟ خب ربطش به برنامه نویسی ؟، متوجه شدم برنامه نویسی رو هم همینجوری یاد گرفتم ، بگذارید مثالی بزنم من یک ماه  جدی وقتمو روی زبان HTML گذاشتم ، چیز های یاد گرفتم که حتی فکر کنم خالق دبلیو تری اسکول (اینجا) هم بلد نباشه ، در صورتی که بعدا فهمیدم تمام این کارها رو باید با CSS انجام بدم ? (عملا فقط تگ &lt;div&gt;به دردم خورد ! ) ، بعد دوباره به صورت جدی وقت گذاشتم روی جاوا اسکریپت، بعدا فهمیدم که این متد های  الان بلدم حتی ریز به ریز با جزئیات توضیح بدم رو شاید تا آخر عمر هیج وقت نیاز نباشه ازشون استفاده کنم !دوم : نداشتن مقصد !آره من  یادگیری برنامه نویسی رو مثل واحد های درسی که وزارت علوم برای هر رشته برنامه ریزی میکنه ، برنامه ریزی کرده بودم ، مثلا اول یادگیری اچ تی ام ال ، بعد سی اس اس بعد جی اس بعد بعد بعد بعد ... خب آخرش چی ! هیچی !  یادگیری برای چی ؟ برای چه هدفی ؟به مثال زیر توجه کنید :+  4 سال کارشناسی تموم شد، خب من الان به عنوان یه کارشناس در رشته ایکس چه کاری باید بلد باشم انجام بدم ؟+ سی اس اس رو یاد گرفتم، خب من الان به عنوان یه برنامه نویس با مهارت  CSS چه کاری باید بلد باشم انجام بدم ؟چاره چیست ؟ خُب من ، تونستم با یک تکنیک خیلی ساده تمام چیزهای که یاده گرفته بوده بودم ، رو دسته بندی کنم ،این تکنیک به این صورت هست که :معمولی ترین پروژه ای که در حیطه فعالیتتون هست رو مشخص کنید ، اون رو به صورت مینیاتوری انجام بدید !- لطفا بیشتر توضیح بده !   + چشم  شما به عنوان مکانیک ماشین های سواری آیا تمام ابزار تعمیر ماشین های سنگین رو توی مغازتون دارید ؟- خُب دوره های پروژه محور رو استفاده کنیم حله دیگه؟  + خیرحقیقتش رو بخواهید این دوره های پروژه محور معمولا چند تا عیب خیلی ناجور دارند : اول : اینکه مدت زمانشون زیاد هست ، عموما توی این دوره ها 50-60 ساعت یه چیز عادیه ، و اصلا خیلیاشونم افتخار میکنن که 100 ساعت فیلم آموزشی درست کردن! همین زمان زیاد باعث میشه شما هیچ وقت این دوره ها رو به پایان نرسونید و فقط نکست نکست نکست بزنید تا فیلم ها تموم بشن !  دوم : اینکه معمولا مدرس ها به خاطر اینکه بگن اره دوره ما خفنه و همه چیز رو پوشش میده میان دوره رو یجوری تعریف میکنن که تمام ابزاری رو قبلا یاد دادن مورد استفاده قرار بگیره ، تا شما مجبور باشید پیشنیاز ها رو هم با دوره های ایشان یاد بگیرید ! جملاتی رو معمولا زیاد میگن اینو که توی فلان دوره گفتم ، اگر من اینو توضیح نمیدم حتما پیشنیاز رو بلدید (که معمولا پیشنیاز هم دوره ی قبلی خودشه ) و ... ( البته مدرس خوب و بد توی هر ضمینه ای داریم همه رو نمیشه با یک چشم نگاه کرد!) سوم : مهمترین مشکل هم اینه که شما چون نمی دونید الان مدرس به خاطر رفع چه مشکلی داره این ابزار رو استفاده میکنه (حتی اگر بهتون بگه هم واقعا نمیتونید درک کنید !) این باعث میشه خیلی یادگیری در شما عمیق نشه، و حالا کافیه یکم صورت مسئله عوض بشه ، سینتکس عوض بشه ، کار تیمی باشه و ...  هیچ گاه شما نخواهید توانست حل مسئله رو یاد بگیرید ! تا شب موقع خواب با چشم گریان به خاطر مشکلات به خواب نروید برنامه نویس موفقی نخواهید شد !- خُب باشه قبول ، اصلا تو خوبی ! حالا اینی ک میگی رو چطوری انجام بدیم ؟   + اینجوری معمولی ترین پروژه ای که در حیطه فعالیتتون هست رو مشخص کنید ، اون رو به صورت مینیاتوری انجام بدید !نمونه عملی : من در حوزه فرانت اند (برنامه نویسی سمت کاربر) میدونستم یکی از توقعاتی که از من میشه معمولا طراحی فروشگاه اینترنتی هست ، خب باید میدیدم واقعا چه ابزاری نیازه برای این کار ؟  رفتم توی گوگل زدم فروشگاه اینترنتی و چند تا لینک رو باز کردم ، از بین این سایت ها ، مدیسه رو انتخاب کردم و شروع کردم به تحلیل ، خب قسمت های مهمش که مربوط به من میشه چیه ؟+ شکل ظاهریش مثل ساید بار ، چت باکس و... +نمایش محصولات + حالت رسپانسیو+  سبد خرید  و...خب  حالا وقتش بود سَس ، ری اکت ، بوتسترپ ، ریداکس و.... رو قاتی پاتی کنم ! ببینم چیزی بلدم یا نه !شروع کردم به کد زدن ، نمیخواستم دقیقا کپی اونو بزنم فقط میخواستم مشکلات طراح های مدیسه رو خودم حس کنم ، نتیجه کار شد این : { خواهش میکنم نخندید بهم ، گناه دارم خووو }میخواستم حس خودمو منتقل کنم ، گیف گذاشتم !   دموی آنلاین    |    لینک پروژه در گیت هابپروژه ات رو قاب کن بزار رو دیوار نه مدرک تحصیلیت رو  ! حالا هر وقت خسته میشم یا نمیفهمم این‌جا رو باید چه کارش کنم ، یه چایی میریزم ، میام سراغ اولین پروژه خودم (یعنی همین که بالا گذاشتم) ، یکم به کدهای که نوشتم میخندم ، به خودم میگم هی پسر یادته این چیزی که الان جلوته یه روزی ترس انجام دادنش رو داشتی ، الان برات پروژه دم دستیه !! پس بدون یه روزی قرار خفن بشی ، برو حال کن و کلی خر کیف میشم ....... { پایان }قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Thu, 07 May 2020 17:44:54 +0430</pubDate>
            </item>
                    <item>
                <title>شروع یادگیری برنامه نویسی با چاشنی کمالگرایی – قسمت دوم</title>
                <link>https://virgool.io/Rocket/%D8%B4%D8%B1%D9%88%D8%B9-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%DA%86%D8%A7%D8%B4%D9%86%DB%8C-%DA%A9%D9%85%D8%A7%D9%84%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-gyymolfgcprj</link>
                <description>  مهم نیست که چقدر در جاده اشتباه پیش رفته ای! همین الان دور بزن ! قسمت اول این مقاله را از ( این آدرس ) مطالعه کنید .مقدمهسلام ، احتمالا با خوندن قسمت قبل مقاله ( اینجا ) ، از علاقه شدید اینجانب به بستنی آگاه شدید ، پس بگذارید یکی از مشکلاتی که توی بستنی خوردن برام پیش اومده رو بهتون بگم ..من با توجه به علاقه ام به بستنی ، خیلی زیاد بستنی میخورم ولی همیشه یه مشکلی داشتم وقتی میرفتم توی مغازه عمو بستنی فروش ، چون خیلی مدل های مختلف بستنی داشت ، توی انتخاب طعم بستنی دچار تشویش خاطر میشدم و در ذهنم بیت معروف &quot;روزی به دلبری نظری کرد چشم من / زان یک نظر مرا دو جهان از نظر فتاد &quot; با صدای مرحوم ایرج بسطامی (روحش شاد) تکرار می شد !مشتاقی و صبوری از حد گذشت یارا گر تو شکیب داری طاقت نماند ما راتا یه روز عمو بستنی فروش که حالا با هم رفیق شده بودیم (البته از لحاظ تکنیکی مشتری شاخص !)، بهم گفت چرا فقط یه طعم رو امتحان نمیکنی ! گفتم یعنی چی ؟، گفت ببین وقتی چند تا طعم مختلف رو میخوری عملا مزه هیچ کدوم رو دقیقا حس نمیکنی ، از امروز هر دفع که میایی ، به جای چند اسکوپ از طعم های مختلف بستنی نوش جان کنی فقط یک اسکوپ رو انتخاب کن تا واقعا طعمش رو حس کنی بعد نظرت رو یادداشت کن ، بالاخره یه روز میفهمی ترکیب مورد علاقه ات چیه ....شروعواقعا خیلی از ما انسان ها توی زندگیمون علاقه مندی های داریم که واقعا بهشون علاقه نداریم !مگه میشه ؟ یِسمگه داریم ؟ آف کُورس !اجازه بدهید چند مثال بزنم ...مثلا دوست داشتن چیزی که فردی بهش علاقه مند هستید اون رو دوست داره ! در این جا شما مثلا واقعا به اون عطر خاص علاقه ندارید ، شاید حتی قبلا از نظرتون خیلی هم بوی مزخرفی داشت ، ولی حالا که دل در گرو  عشق یار بستی اون عطر بوی خیلی خاصی داره ... !!مثلا رفتن دنبال خوانندگی به خاطر علاقه شما به شهرت ! ؛ در این جا شما واقعا به خوانندگی علاقه ندارید و لذتی از این کار نمی برید ولی به این خاطر الان خواننده ها روی بورس هستن و یجورایی مرکز توجه اقشار مختلف جامعه، کلاس خوانندگی ثبت نام کردید ...مثلا علاقه مند بودن به طراحی سایت و شروع یادگیری برنامه نویسی ؛ در صورتی که شما علاقه مند هستید مدیر یک فروشگاه اینترنتی باشید نه لزوما برنامه نویس ...خب حالا چه باید کرد ؟  خلاصه و مفید بخوام بگم :                                              طعم مورد علاقه ات رو پیدا کن به نظر من واقعا قدم گذاشتن توی یه مسیر پر از چالش و نسبتا طولاتی مثل یادگیری برنامه نویسی چیزی جز عشق و علاقه نمیتونه آدم رو توی مسیر نگه داره و از این رو این انتخاب ، یجورایی یه انتخاب سرنوشت سازه که ما متاسفانه تحت تاثیر حرف های دیگران ، تبلیغات ، آگهی های استخدامی و.. نمیتونیم به خوبی از پس انتخابش بر بیاییم ...انتخاب علاقه مندی در چهار گام گام اول : انتخاب زمینه فعالیت شما در این جا باید زمینه فعالیت خودتون رو توی برنامه نویسی مشخص کنید .اگر بخوام خیلی غیر حرفه ای به صورت هارد کد !! یه دسته بندی انجام بدم ، برنامه نویسی رو  به پنج دسته کلی تقسیم میکنم :برنامه نویسی سمت سرور (اون قسمتی که الان از ویرگول ما نمی بینیم ! )برنامه نویسی سمت کاربر (اون قسمتی که الان از ویرگول ما می بینیم ! )برنامه نویسی دسکتاپ ( فتوشاپ ، آفیس ، حسابداری و ... )برنامه نویسی موبایل (دیوار ، واتس اّپ ، اینستاگرام ، ماشین حساب و... )برنامه نویسی بازی (گیم های موبایل و دسکتاپ و حتی آنلاین ... )نکته : دیتا ساینس (علم داده )، برنامه نویسی برای ربات ها و تراشه های الکترونیکی و.. هست که من به دلایل فنی فعلا از توضیح اینها صرف نظر میکنم .نکته : دسته بندی بالا ، ایراد فنی و ناگفته های زیادی داره ، که فعلا در این مرحله از اون ها صرف نظر می کنیم چون مهم نیست ...خب دقیقا باید چطوری زمینه فعالیت خودتون  رو پیدا کنید ؟؟؟؟کاری نداره ،همین الان چشماتون ببندید برای 10 دقیقه  فرض کنید که عقل کل برنامه نویسی در تمامی کائنات هستید و همه چیز رو بلدید و هیچ محدودیت مالی ، زمانی و مکانی و.. ندارید ، حالا  یه لحظه عمیقا از ته ته ته دلتون حس کنید که میخواید با این علم و دانشی دارید چه کار کنید ؟ تبریک میگم شما زمینه علاقه مندی تون رو پیدا کردید !اگر واقعا به این نتیجه رسیدی مثلا دوست داری یه  فروشگاه اینترنتی برای کسب و کارت داشته باشی نه لزوما دانش طراحی سایت ، پس همین الان این نوشته رو ول کن برو یه نفر رو پیدا کن بهش پول بده برات اون فروشگاه رو بسازه ... وگرنه ادامه بده ...گام دوم : انتخاب ابزار !شکی نیست که هدف از خلق تمامی زبان ها ، فریمورک ها و ... به عنوان یک ابزار برای کمک به برنامه نویس ها (جامعه بشری ) بوده ! پس تعصب بیخودی مانع کسب است! حتی برای شما دوست عزیز ! ولی توی ایران عزیز ما یکم این قضایا  و داستان ها متفاوته ، یعنی هنوز یه جورایی اون نگاه باستانی خوب (اهورا مزدا ) و بد (اهریمن ) (منظورم نگاه صفر یا صدی هست ) در ما نسل به نسل ، سینه به سینه ، از پدر به پسر منتقل شده و واقعا توی خیلی از مسائل گریبان گیر ما شده ، ای خوشا فریادی از قصر دل بی‌تاب‌ها … ؛ نمیخام فاز نصیحت بردارم ، پس بگذریم ...حقیقتش رو بخواهید ، خود سازندگان این ابزارها و زبان ها   اینقدر که بعضی از ما ایرانی ها روی اختراعاتشون تعصب داریم ، خودشون تعصب ندارن ! باور کنید !خب با استفاده از مرحله یک باید یک لیست آماده کنیم ! چطوری ؟ اینطوری که مثلا فرض کنید شما علاقه مند هستید یک اپلیکیشن با حال برای اندروید طراحی کنید و کلی پول در بیارید ! کافیه توی گوگل سرچ کنید زبان های برنامه نویسی نرم افزار اندروید ! (بقیه چیز ها رو هم طبق مثال سرچ کنید )خب حتما به نتایج زیر می رسید !زبان های : جاوا ، کاتلین ، ری اکت نیتیو ، فلاتر ، زامارین و ... (همشون زبان نیستن )حالا کدوم ؟ اینا چی هستن ؟ کدوم بهتره ، کدوم آینده شغلی بهتری داره ، کدوم پرفرمنس بهتری داره ... صبر کنید !صبر کنید !صبر کنید !اینجا دقیقا شما روی همون تله ی معروف کمالگرایی ایستادید ...یه نفس عمیق بکشید و بیخیال این فکر ها بشید و ادامه آموزش رو بخونید ..گام سوم: مزه مزه کردن این جا هست که از ددی تراورسی یاری میجوییم ، برَد (Brad) یه یوتیوبر معروفه که تقریبا میشه گفت از تموم زبان ها و فریمورک های معروف یه  Crash Course (که من ترجمه‌اش میکنم &quot;دوره‌ی سقوط آزاد&quot;)رو تولید کرده ، که میتونید از (اینجا) به کانالش در یوتیوب دسترسی داشته باشید.حالا کافیه اسم زبان های معروف رو با یک پسوند کرش کورس در یوتیوب سرچ کنید ،مثلا :Kotlin Crash Course  || Flutter Crash Course || Java Crash Course ...پیشنهاد میکنم تا جایی که امکان داره از دوره های تراورسی مدیا ( توی یوتویب بقیه برنامه نویسا دَدی تراورسی صداش میکنن خخخخ ) استفاده کنید یا حداقل از دور های که بازدید بالا دارند استفاده کنید که وقتتون تلف نشه ، من دورهای تراورسی رو  به دلایل زیر پیشنهاد دادم به شما :+قبل از شروع دوره پیشنیاز ها رو میگه ! و این خیلی خوبه شما میدونید چه چیز های رو باید  بعدا برید یاد بگیرید!+پروژه ای که انتخاب میکنه معمولا پروژه آسونیه و کد های پروژه رو در اختیارتون میگذاره  پس دید کلی خوبی بهتون میده!+ از مستندات اون زبان یا ابزار کمک می گیره و باعث میشه شما کار با مستندات رو هم یاد بگیرید !+آروم و شمُرده و با لهجه خیلی خوبی صحبت می کنه ( تا حالا مجبور نشدی ویدیو از هندی ها ببینی ، که عاشقی از یادت بره !) شاید الان یک سوال براتون ایجاد شده ! من که اصلا برنامه نویسی بلد نیستم، یا زبان انگلیسی بلد نیستم !                                                این کار پس چه فایده ای داره ؟؟هدف این قسمت فقط پیدا کردن علاقه همراه با ایجاد  دیدکلی  نسبت به مسیر هست، مهم نیست ، فقط همراه اون ویدیو برو جلو و کد ها رو کپی کن اصلا ، اینجا مهم چیزی که یاد میگیری یا چیزی که ساختی نیست ! مهم سطح آدرنالین (ذوق زدگی ) خون شما هست !خواهش میکنم اجازه بدید یک مثال از خودم بزنم :من میخواستم یکی از فریمورک های سمت کاربر ( Front End ) رو شروع کنم با یک سرچ ساده رسیدم به سه اسم :ری اکت جی اس Reactاَنگیولار جی اس (آنگولار) Angularویو جی اس Veuواقعا انتخاب سختی بود ، هر سه تا به شدت معروف یودن و هر سه از تکنولوژی VDOM  استفاده میکردن ،پایه هر سه تا جاوا اسکریپت بود ، ولی باز هم من نمیدونستم کدوم رو انتخاب کنم ، با این همه شباهت از دید من زمین تا آسمون فرق داشتن .خُب خوشبختانه دَدی دوره هر سه تا رو داشت ، سه تا آموزش رو دانلود کردم ، شروع کردم به کد زدن همراه با مدرس ، اصلا چیز زیادی نمی فهمیدم (با اینکه جاوا اسکریپت رو خیلی خوب بلد بودم! ) ، تنها چیزای که بار اول متوجه شدم اینا بود :  اَنگیولار حس کد نویس بودن بهم نمی داد واقعا ، حس میکردم دارم با فریمورک های CSS کار میکنم ، ویو رو  مقلد انگیولار دیدم البته با رویکرد خودش ، آسون بود و شیرین ولی باز حس با حال بودن بهم نمیداد ، ولی ناگهان زندگی من با کد زدن توی فریمورک (صحیح تر کتابخانه ) ری اکت (ReactJs)  تغیر کرد (سطح آدرنالین رفت بالا ) ذوق زده شدم ،اووووو یــــــسسسسس ! این همونه که میخوام !  همین علاقه باعث شد بیخیال برنامه نویسی نشم دیگه ، چون قبلتر ها فقط محصول نهایی برام لذت بخش بود (میخواستم فقط زودتر پروژه تموم شه ) ولی الان ساعت ها با ری اکت کد میزنم بدون احساس خستگی و گرسنگی ! حتی گاهی پیش میاد یه قسمت رو به چند مدل مختلف مینویسم و پاک میکنم !گام چهارم : شروع یادگیری عمیقحالا که علاقه تون رو پیدا کردین ، زمینه فعالیت خودتون رو هم می دونید ، ابزار مورد نظرتون رو هم شناسایی کردید ، کار خیلی براتون آسونه ، فقط شروع کنید به یادگیری .البته در این جا دو تا موضوع معمولا مطرح میشه :اول  : انتخاب منبع ، (از نظر من ) بهترین و کاملترین و دقیق ترین آموزش و منبع یادگیری ، معمولا مستندات همون تکنولوژی هستند ولی خب توی کار یه چیزای کوچکی هم پیدا میشن در مورد اون زبان یا فریمورک که اینجا ذکر نشده ، که معمولا با یک سرچ ساده اغلب مواقع به نتیجه مورد نظر می رسید.دوم : زبان انگلیسی ! من کار به صحبت های دیگر دوستان ندارم ، نظر من اینه شما اگر حتی یکسال فقط روی مهارت زبان انگلیسی خود کار کنید بعد برنامه نویسی رو شروع کنید موفق تر از شخصی هستید که یکسال قبل تر از شما شروع کرده بدون دانش زبان (البته در بلندمدت ) . البته میتونید هم زمان این دو موضوع رو پیش ببرید !خُب  ، هر چی میتونید بخونید ،یادتون باشه بهترین شخصی تو دنیا زبان برنامه نویسی (یا فریمورک) مورد نظر شما رو بلد هست ، قطعا سازنده اونه ، پس از داکیومنت اصلی غافل نشید (توصیه تکراری) ، کدهای بقیه رو ببینید ، در یوتیوب سرچ کنید حتما به کلیپ های جالبی بر میخورید ،برای داشتن یه مسیر صحیح یادگیری  بهتره از کلید واژه &quot;نقشه راه&quot; در جستجوهاتون کمک بگیرید میتونه خیلی موثر باشه مثلا:Web development learning roadmap || Hack learning roadmap ...BackEnd learning roadmap || FrontEnd learning roadmap ...اینجوری میتونید راحت تر مسیر یادگیری خودتون رو جلو ببرید .قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?پایان قسمت دوم ادامه دارد ...قسمت بعدی این مقاله رو از این جا مطالعه کنیدپی نوشت 1 : اگر به یک زبان مسلط شوید ، بقیه زبان ها رو حتی کمتر از یک ساعت !!! می تونید یاد بگیرید ، پس خیلی وسواس به خرج ندید !پی نوشت 2 : تقریا میشه گفت عموم زبان ها و تکنولوژی ها توی ایران الان براشون تقاضای متخصص هست ، البته برای بعضی ها بیشتر و برای بعضی ها کمتر، ولی این رو هم باید در نظر بگیرید : تخصصی که متخصص بیشتری داره ! حقوق و مزایای کمتری هم معمولا داره !  شاید برایتان جالب باشه دوستی رو سراغ دارم که تخصصش کار با یکی از قالب های مدیریت محتوای وردپرس هست (نه حتی طراحی قالب وردپرس بلکه ویرایش یک قالب با صفحه ساز اون !) یعنی بدون دانش حتی ویرایش یک خط کد ماهانه پول خوبی از تخصصش (بازاریابی) در میاره ! شما تخصص رو کسب کنید راه پول در آوردن ازش رو زود پیدا میکنید .پی نوشت 3 : سعی کنید کد بزنید ، بازی کنید ، تمرین کنید ! حال کنید ، دنیا دو روزه ،  بیخیال این دوره های آموزشی 50-60 ساعته فارسی بشید، از این دوره ها برنامه نویس در نمیاد ! فقط پولتون رو هدر می دهید ! بعد از اتمام یکی از این دوره ها بهتون قول میدم که پژمرده شدید ! و از برنامه نویسی متنفر ! دیدم که میگم!پی نوشت 4 : برای خودتون یه دوره زمانی بلند مدت با هدف &quot;مشخص&quot; تعین کنید ، این چشم انداز نمی گذارد از مسیرتون فاصله بگیرید ، مثلا توی دفترچه یادداشت بنویسید تا یک سال دیگه بتونم یه سایت با امکانات ویرگول بنویسیم ! اسم و فامیل، تاریخ و امضاء ! (یجورایی تعهدنامه)پی نوشت 5 : کسی قرار نیست از شما امتحان بگیره !  از فضای مدرسه و دانشگاه فاصله بگیرید ! سینتکس ها رو صرفا حفظ نکنید ، این کار رو قبلا گوگل براتون انجام داده ، با داکیومنت دوست باشید ! ، یکم کنجکاوی بد نیست ، مثلا بهتر است به جای اینکه در گروه های تلگرامی به دنبال بهترین تکست ادیتور باشید تمام 10-12 تا ادیتور و ای دی ای معروف رو نصب و کار با اون ها رو تجربه کنید بعد با اختیار خودتون Vs Code را انتخاب کنید !!پی نوشت 5 : همانظور که ، به تعداد آدم های کره زمین راه رسیدن به خدا وجود داره (دیالوگ معروف فیلم مارمولک)،بنده نیز معتقدم به تعداد آدم های کره خاکی، راه برای یادگیری برنامه نویسی وجود داره ، پس اگر روشی که ذکر کردم مورد پسندتان نبود ، اُپن مایند برخورد کرده و ناسزا نگوید ! اگر راه بهتری را سراغ دارید ، با من و بقیه دوستان در نظرات به اشتراک بگذارید ...</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Wed, 06 May 2020 15:32:29 +0430</pubDate>
            </item>
                    <item>
                <title>شروع یادگیری برنامه نویسی با چاشنی کمالگرایی – قسمت اول</title>
                <link>https://virgool.io/coderlife/%D8%B4%D8%B1%D9%88%D8%B9-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%DA%86%D8%A7%D8%B4%D9%86%DB%8C-%DA%A9%D9%85%D8%A7%D9%84%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-ghn65cb9vqnw</link>
                <description>هرگز تسلیم نشو؛ سرباز پیاده در شطرنج اگر تا آخر ادامه بدهد وزیر می‌شود !  &quot; کمال گرایی در روان‌شناسی، ویژگی‌ شخصیتی است که خصوصیات آن، با تلاش فرد برای بی‌عیب‌و‌نقص بودن و تنظیم استانداردهایی برای بالاترین سطح عملکرد توصیف می‌شود و ... &quot;  ویکی پدیامقدمه یه روز گرم تابستانی ،وقتی وسط کویر لوت از گروه دوستانت جا موندی (شایدم عمدا ولت کردن رفتن !) خلاصه گم شدی ،  همینطوری خسته و رنجور و تشنه داری به دنبال یه آبادی،روستایی چیزی  میگردی ، چند تا کَرکَس هم دارن بالای سرت پرواز میکنن ، توی اون اوضاع ناجور یهویی برمیخوری به یه پیرمرد مهربون گاریچی که داره بستنی میفروشه !دست میکنی تو جیبت میبینی 10هزار تومن بیشتر پول نداری و پیرمرد قصه ی ما متاسفانه کارتخوان نداره ! خب پیرمرد مهربون میگه ، من 20مدل بستنی دارم (شکلاتی ، وانیلی ، فندقی ، توت فرنگی و... ) که با هر هزار تومن میتونی فقط 1 قاشق بستنی بخوری ، حالا کدوم طعم از بستنی رو انتخاب میکنی ؟ 10 قاشق از یک طعم برمیداری یا یک قاشق از 10 طعم های مختلف بستنی ؟شروع سلام عرض میکنم به همه‌ی شما دوستان عزیزم ، امیدوارم حال دلتون خوب باشه ، خب همینطور که مشخصه از عنوان مطلب ،افرادی که از کمالگرایی رنج و یا مثل من لذت می برند ، وقتی تو مسیری قرار می گیرند که باید از بین چند گزینه انتخاب های داشته باشند ، خیلی چالش های اساسی یک انتخاب مثل هزینه آموزش یا هزینه فرصت یا سختی و آسونی هر انتخاب براشون مهم نیست بلکه براشون بیشتر مهمه که بهترین انتخاب ممکن رو بدون در نظر گرفتن شرایط خود انجام بدن (تفاوت انتخاب یک فرد معمولی و یک کمالگرا در اینجا مشخص میشه !)البته اینو توی پرانتز بگم به نظر من هر کسی دارای طیف خاصی از کمالگرایی هست ، کمالگرایی اصلا یه صفت جدا نشدنی از انسانه و به هیچ وجه چیز بدی نیست ، ولی خب باید قبول کنیم آدم ها طیف های مختلفی از این صفت ( و صفات دیگه رو )  بروز می دهند ، مثلا توجه به نظافت و پاکیزگی خوبه ولی توجه بیش از حد به پاکیزگی تبدیل میشه به یک بیماری روحی به نام وسواس که فرد و اطرافیانش رو بشدت عذاب میده !خب کامبک می زنیم به داستان : اگر شما یه آدم معمولی باشید توی این شرایط براتون فرقی نداره و پول رو پرداخت می کنید و بستنی رو می خورید و لذت می برید ولی برای خیلی از آدم ها گرفتن این تصمیم سخته ، حتی ممکنه قید خوردن بستنی (قید یادگیری برنامه نویسی ) رو بزنند به خاطر اینکه نمیدونن کدوم بستنی (کدوم زبان برنامه نویسی یا فریمورک ) خوشمره تره ...شاید الان پیش خودتون بگید این داستان غیر واقعی و مسخره هست و حاصل تراوشات ذهن پریشان نویسنده می باشد ولی باور کنید این داستانی که من گفتم خیلی مسخره تر  از چیزی های نیست که امروزه ما در جوامع برنامه نویسی شاهدش هستیم! اجازه بدید یکم بیشتر براتون توضیح بدم ، تا حالا شده توی گروه های شبکه های اجتماعی مختلف ، انجمن های برنامه نویسی ، کلیپ های یوتیوپ ، دورهمی های برنامه نویسی به این جور سوالات برخورد کرده باشید ؟+بهترین IDE برای برنامه نویسی چیه ؟+وی اس کد یا اتم یا سابلایم تکست ؟+بک اند یا فرانت اند ؟+بهترین زبان برنامه نویسی ؟+کاملترین فریمورک زبان  X  ؟+پایتون یا جاوا اسکریپت ؟ فلاتر یا ری اکت نیتیو ؟ جنگو یا لاراول ؟خب این سوالات مسخره تره یا داستان نازنین من ؟ (خنده شیطانی ? )برمیگردیم به داستان : قبل از اینکه انتخاب کنید بستنی رو بخورید یا نه ، دوستانتون شما رو پیدا  می کنن و کلا قضیه بستنی خوردن کنسل میشه (سادیسم نویسنده !) ، رسیدی خونه ، حالت  بد میشه ، به بیمارستان مراجعه می کنی ، پزشک بهت توضیح میده که طبق نتایج آزمایشات شما به دلیل قرار گرفتن در معرض تشعشعات خورشید در بیابان( اقتباس از فیلم مردان ایکس) یه جهش ژنتیکی در بدنت به وجود اومده و صاحب استعداد خاصی شدی ، اون استعداد چیزی نیست جز برنامه نویسی ، پس باید هرچه زودتر برنامه نویسی رو برای نجات بشریت شروع کنی! ( اشک هایش را پاک می کند )برمیگردی خونه ! خب میری سراغ برادر گوگل و شروع به سرچ میکنی و احتمالا با نتایج زیر بر میخوری :یه سری مقاله ترجمه شده در مورد بهترین زبان های برنامه نویسی :زبان های که باید تا 2050 یاد بگیرید تا کرونا نگیری ! بهترین زبان سال 2020 ! با یادگیری این زبان ها تا سال 1400 استخدام شوید ! و... این جور چیزا که عموما هم توی همشون تموم چیز های که معرفی میکنن اول پایتون هست (سینتکس ساده ، دلیل بر یادگیری سریعتر و آسونتر نیست ، باور کن دوست عزیز!  دیدم که میگم !) و روبی و جاوا و گو ، سوئیفت و... هستنخب بعدش احتمالا میری سراغ سایت های کاریابی ، یهو برگات میریزه ! پس چی شد اون زبان های که توی اون سایت های بالا اسمشون بود ؟ پس کجاست اگهی استخدامی یادگیری ماشین ؟ گولنگ کجاس ؟ روبی ؟ اسکالا ؟ جاوا ؟ سوئیفت ؟  اینجا که همش برنامه نویس سی شارپ و پی اچ پی با 17 سال سابقه کار میخوان?بعد میگی بزار نظر چند تا متخصص رو بخونم ، میری توی انجمن های برنامه نویسی اونجاست که ضربه نهایی رو میخوری ! ( از لحاظ تکنیکی الان خزان شدی! ) با یه سری تاپیک مواجه میشی آدم های که مثل خودت سوال پرسیدن که از کجا شروع کنن و شروع میکنی جواب ها رو میخونی ...+داداچ برای پیدا کردن شغل بچسب به پی اچ پی ، اول خدا بعد لاراول بعد وردپرس !+داداچ  پی اچ پی مرد ، فقط جی اس ، یه بار یاد بگیر همه جا کد بزن  !+داداچ فقط پایتون خداست ،  نرو سمت جاوا اسکریپت که مثل نوشابه است ...+داداچ  پایتون کُنده ! برو سمت خانواده سی و سی شارپ ، شی گرائیت رو هم قوی کن !+داداچ  شی گرائی پرفرمنس بالایی نداره ، آینده متعلق به مکتب فانکشناله !در اینجا معمولا خیلی از افراد بیخیال میشن ، خیلی ها هم دل رو میزنن به دریا یکی رو انتخاب میکنن و..ولی مشکل ما اینجا افراد معمولی نیست چون اونا گلیم خودشون رو از آب میکشن بیرون بلکه مشکل  شبه کمال گراهایی (مثل خودم ) هستند که حتی با وجود شروع ، همش دلشون جای دیگست ...هرگز وجود حاضر غایب شنیده‌ای ؟  /  من در میان جمع و دلم جای دیگر است !       &lt;سعدی&gt;خب حالا باید چه کار کنیم ؟دوست عزیزم ، همین که تا اینجای متن رو خوندی یعنی شما دنبال یادگیری برنامه نویسی هستی ، حقیقتش اینه من این همه داستان سرایی کردم فقط تو رو بکشونم تا این پایین دو کلام حرف حساب باهات بزنم ، ببین داداشم (شایدم آبجی) همه افرادی که روز اول برنامه نویسی رو شروع کردن مثل الان تو چیزی بلد نبودن ، سر درگم بودن  ، بارها و بارها خسته شدن و حتی شاید مجبور شدن هرچی یاد گرفتن رو بریزن دور ، دوباره از اول شروع کنن ولی مطمئنم همه‌ی افراد موفق در یه چیز مشترک هستن ، بیخیال نشدن !خب این تکنیک که من میخوام بهتون معرفی کنم فقط باعث میشه بیخیال نشید ، حتی باعث میشه اشتیاق عمیق برای یادگیری برنامه نویسی در درون شما به وجود بیاد که در آینده برنامه نویس بزرگی شوید ، همین !قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?پایان قسمت اول ادامه دارد ...قسمت دوم مقاله را از اینجا مطاله کنید</description>
                <category>حامد زیدآبادی</category>
                <author>حامد زیدآبادی</author>
                <pubDate>Tue, 05 May 2020 17:44:58 +0430</pubDate>
            </item>
            </channel>
</rss>