<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های MoHsEn</title>
        <link>https://virgool.io/feed/@mhsn</link>
        <description>برنامه نویس و دواپس ، علاقه مند به امنیت</description>
        <language>fa</language>
        <pubDate>2026-06-16 19:48:34</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/51296/avatar/rulvJK.jpeg?height=120&amp;width=120</url>
            <title>MoHsEn</title>
            <link>https://virgool.io/@mhsn</link>
        </image>

                    <item>
                <title>با داکیومنت ضعیف مایکروسافت برای ASP.Net چه کنیم؟</title>
                <link>https://virgool.io/@mhsn/%D8%A8%D8%A7-%D8%AF%D8%A7%DA%A9%DB%8C%D9%88%D9%85%D9%86%D8%AA-%D8%B6%D8%B9%DB%8C%D9%81-%D9%85%D8%A7%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%A7%D9%81%D8%AA-%D8%A8%D8%B1%D8%A7%DB%8C-aspnet-%DA%86%D9%87-%DA%A9%D9%86%DB%8C%D9%85-pw7rlay5auqq</link>
                <description>چند مدتی هست که یادگیری ASP.Net رو شروع کردم و اولین چیزی که با اون مواجه شدم داکیومنت ضعیف و بسیار بسیار پراکنده مایکروسافت در این زمینه بود که واقعا سردرگمم کرد.دلیلش چی بود؟اصولا وقتی ما درباره داکیومنت حرف میزنیم یعنی معرفی کردن ویژگی ها و استفاده درست از اون،نه آموزش پروژه محور یه فریمورک تحت سلیقه نویسنده داکیومنت ، که دقیقا مایکروسافت این اشتباه رو توی قسمت های مختلفی از داکیومنتش انجام داده و این به این معنی هست که شما بدون توضیحات ویژگی، کد مشاهده میکنید و کاری که از دستتون بر میاد چیه؟ کپی پیستاگه حتی چند صفحه از مستندات فریمورک لاراول رو و سپس چند صفحه از مستندات فریمورک ASP.Net &amp; ASP.Net Core رو مطالعه کنید کاملا متوجه تفاوت بین مستندات بین این دو فریمورک میشید.متاسفانه فریمورک وب مایکروسافت با تمام امکانات از جمله دیباگ بهتر ، امنیت بیشتر ، سرعت اجرای بیشتر از مستندات بسیار ضعیفی برخوردار است.موضوع دوم که واقعا احساس میشد پراکندگی مستندات بود. یعنی شما اگه از طریق دسته بندی ها هم به این مستندات دسترسی پیدا کنید متوجه میشید که شما در حالی که دنبال داکیومنت ASP.Net بودید وارد صفحات ASP.Net Core شدید و اون رو مطالعه کردید.دلیل این کار اینه که مایکروسافت قصد بولد کردن ASP.Net Core رو داره و این خیلی خوبه بخاطر Cross Platform بودن دات نت کور و... ؛ اما انتقادی که میشه کرد اینه که آیا وقتی یک فریمورک آپدیت شد باید فریمورک قبلی فراموش شه کاملا؟ پس پروژه هایی که قبلا با فریمورک قدیمی تر انجام شده و الان نیاز به تغییرات داره چی؟اما راه حل چیه؟ چطور راه بیوفتیم؟۱.تمرینبهترین راه برای یادگیری یک زبان برنامه نویسی ، نوشتن برنامه با آن زبان استدنیس ریچی ، خالق زبان برنامه نویسی C و یونیکساین نقل قول از دنیس ریچی درباره فریمورک ها هم صدق میکنه اما پیشنهاد من اینه که اگه شما با زبان سی شارپ آشنایی ندارین بهتره که اول syntax این زبان رو یاد بگیرید و بعد شروع به کار با فریمورک ASP.Net کنید.اما مهمتر از همه تمرین کردن و نوشتن برنامه های تستی برای خودتون هست که باعث میشه شما قابلیت تشخیص خطا و افزایش قدرت کدنویسی در خودتون رو افزایش بدین.۲.استفاده از داکیومنت ها و وبسایت های دیگهقطعا وبسایت های مختلفی وجود دارند که درباره این فریمورک و زبان برنامه نویسی سی شارپ تولید محتوا هم به زبان فارسی هم به زبان انگلیسی انجام دادن و شما کافیه با یک موتور جستجو سرچ کنیداین موضوع میتونه یک موضوع جزئی مثل:&quot;how to create a controller in asp.net core&quot; یا یک موضوع کلی مثل:&quot;asp.net web api app tutorial&quot;باشه.۳.استفاده از یوتیوب:افرادی که علاقه بیشتری به آموزش از طریق ویدیو دارن میتونن از طریق سرویس ویدیویی یوتیوب(یوتوب) اقدام به یادگیری کنن.اگه داخل یوتوب فارسی سرچ کنید با ویدیو های ایرانی هم مواجه میشین که مفید هستن.۴.استفاده از کد های دیگراناصولا فریمورک ها به این دلیل ایجاد شدن که برنامه نویس ها چرخ رو دوباره اختراع نکنن.یعنی چی؟ یعنی وقتی یک کار قراره همیشه با یک اصول انجام بشه چرا باید برای هر پروژه این کار تکرار بشه و دوباره کد هایی نوشته بشه که ممکن هم هست ایرادات مختلفی داشته باشن.پس شما میتونین از ماژول ها یا کتابخانه های مختلفی که توسط افراد دیگه ایجاد شده استفاده کنید.از طریق سرویس هایی مثل Github میتونید کد های دیگر توسعه دهندگان رو مشاهده کنید و یادبگیرید یا حتی کپی کنید اما حواستون باشه اول کد رو درک کنید و بعد کپی کنید.شما چه پیشنهادی دارین؟کامنت کنین :)امضا:mhsn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Thu, 01 Jul 2021 14:00:49 +0430</pubDate>
            </item>
                    <item>
                <title>دور وقتت حصار بکش : دور شدن از اینستاگرام</title>
                <link>https://virgool.io/fboard/getting-away-from-instagram-ycp6w8t3mnrz</link>
                <description>قطعا اگر شما هم در شبکه های مجازی عضو شده اید تجربه این را داشته اید که ساعت ها در این شبکه ها چرخیده اید و متوجه عبور وقت نشده اید.پس از گذشت مدتی احساس کردید که &quot;شما به شبکه های اجتماعی اعتیاد پیدا کرده اید&quot; ، اگر عنوان این مطلب برای شما جالب بود و باعث شد که نگاهی به آن بیاندازید پس شما هم این اعتیاد را مثل من و خیلی ها دارید.اصولا این شبکه های اجتماعی (مخصوصا اینستاگرام) بر این اساس طراحی و ساخته میشوند که شما در آنها همیشه سرگرم باشید،به همین دلیل است که شما همیشه پست ها و مطالبی را در قسمت Explore میبینید که به آن ها علاقه مندید و همین باعث میشود که کنترل وقت از دست خارج شود.قرار نیست که در این مطلب درمورد خوب یا بد بودن شبکه های اجتماعی با حرف بزنیم،بلکه درباره استفاده بهینه و کاملا کنترل شده از این نرم افزار ها به طوری که به کار و وقت گرانقیمت ما آسیبی وارد نشود.از خودتان این سوال را بپرسید که برای چه از اینستاگرام استفاده میکنید؟قطعا با جواب ها گوناگونی روبرو هستیم مانند:برای تعامل با اطرافیان،دوستان و همکارانکسب اطلاعات و اخبار جدیدبیزنس یا انجام کار هایی که به شغل شما مربوط هستسرگرمیاگر شما از طریق اینستاگرام کسب درآمد دارید طبیعی است که وقت بیشتری را در اینستاگرام بگذارید و تولید محتوا یا تبلیغات انجام بدید.اما اگر به عنوان مثال شما در اینستاگرام به عنوان &quot;سرگرمی&quot; فعالیت دارید و یا کارتان چک کردن استوری های تکراری شات کردن و تبلیغات است باید بیشتر حواستان به کنترل وقتتان باشد.راه حل هایی برای کنترل خودمان:۱.اولویت دیگری برای خودتان تعریف کنید:اگر اعتیاد به گشت و گذار و فوبیای از دست دادن اطلاعات (استوری های) دوستانتان را دارید قطعا وقتی از خواب بیدار شدید اولین کاری که انجام میدهید چک کردن اینستاگرام است.چرا که این کار به نظر خیلی خوشایند هست و اگر یک روز استوری هارا چک نکنیم احساس اینکه چیزی در برنامه روزانه‌مان انجام نشده روی دوشمان سنگینی میکند.درصورتی که هیچ کدام از این اطلاعات نه به درد ما خواهد خورد نه مخاطبشان ما هستیم.اگر بتوانید یک اولویت مفید و خوبی مانند کتاب خواندن را جایگزین اینستاگرام کنید واقعا تحسین برانگیز هستید.۲.با ما کاری ندارند:حتما برای شما هم این حس پیش آمده که امروز که چند ساعتی است اینستاگرام یا تلگرامم را چک نکردم کلی پیام ناخوانده برایم آمده است ولی وقتی که چک میکنید میبینید واقعا هیچ پیام خاصی ندارید جز اینکه دوستانتان مطالبی را برایتان فرستاده اند که چندان هم تمایل به دیدن آنها ندارید.این را در ذهن خود آویزان کنید که خودتان و وقتتان مهم تر هستید و دیگران با شما کار خاصی ندارند و یک زمان معین برای چک کردن و استفاده از شبکه های اجتماعی برای خودتان تعیین کنید (در ادامه بیشتر در این باره گفته شده)خودتان و وقتتان مهم تر هستید و دیگران با شما کار خاصی ندارند۳.از جلوی چشام دور شو:مهمترین دلیلی که همیشه پس انجام کاری با تلفن همراهمان دوباره به اینستاگرام بازمیگردیم جلوی چشم بودن این نرم افزار هاست.اکثرا اینستاگرام،تلگرام،واتساپ،تیک تاک در صفحه اصلی تلفن های همراه ما جا خوش کرده اند و قصد تغییر مکان هم ندارند چون ما با وجود آنها احساس راحتی میکنیم ; اما حالا وقت این است که میانبر این نرم افزار ها را از صفحه اصلی خودمان &quot;حذف کنیم&quot; تا اگر وقتی تماسمان با دوستمان تمام شد و به صفحه اصلی منتقل شدیم چشممان به آنها نخورد که ناخوادگاه وارد آنها شویم.میتوانید میانبر یک نرم افزار خواندن کتاب یا پادکست رو جایگزین آن کنید،درست است که با هر دفعه باز شدن صفحه اصلی تلنگری به شما وارد میشود اما جوابگو است :)۴.کنترل زمان و استفاده از هشدار دهنده ها:اگر لیست کار های روزانه را مینویسید میتوانید زمانی را برای استفاده از اینستاگرام و شبکه های اجتماعی برای خودتان معیین کنید که اعتیادتان را ارضا کند اما دوباره ممکن است که در فضای پر از خالی مطالب تکراری غرق شوید ; راه حل چیست؟ استفاده از هشدار دهنده ها.خوشبختانه اینستاگرام قابلیت هشدار استفاده در روز را دارد و شما میتوانید از طریق مسیر تنظیمات زیر وارد این قسمت شده و زمان استفاده خودتان را کنترل کنید.۱.وارد تنظیمات اینستاگرام بشید۲. اکانت( Account ) یا حساب را انتخاب کنیدفعالیت شما ( Your Activity ) را انتخاب کنیدتب زمان ( Time ) را انتخاب کنید.میتوانید میانگین استفاده روزانه از اینستاگرام را نیز در این صفحه ببینیدتنظیم یاد آوری روزانه ( Set Daily Reminder ) را انتخاب کنید.زمان استفاده روزانه را وارد تنظیم کنیدبه این صورت در هر روز که زمان استفاده شما از اینستاگرام به زمان تعیین شده برسد داخل نرم افزار یک هشدار به شما نمایش داده میشود که شما از ۸۰ درصد بسته های اینستاگرام خود استفاده کرده اید D:البته شما بعد از دیدن این هشدار میتوانید به فعالیت خود ادامه دهید اما اگر وقت شما برای شما ارزشمند است باید آن را ترک کنید تا برنامه روزانه شما به بهترین شکل ممکن پیش برود.امیدوارم که وقتتون هیچوقت هدر نره ممنون بابت مطالعه این مطلب . موفق باشید :)</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Wed, 17 Mar 2021 04:32:21 +0330</pubDate>
            </item>
                    <item>
                <title>اهمیت TaskList یا TODO،چگونه TODO List بنویسیم؟</title>
                <link>https://virgool.io/@mhsn/todolist-qr38cfnyh2nl</link>
                <description>نه تنها در برنامه نویسی بلکه در تمامی شغل ها همیشه کار های ناتمامی وجود دارن که باید حل شن و لازم داریم که اونهارو بر اساس اولویت هاشون بچینیم که به موقع انجامشون بدیم تا بار سنگین به تعویق انداختن کار ها از دوشمون برداشته شه.TaskList یا TODOList همونطور که از اسمش پیداست به معنای لیست وضایف هست،یک فایل خیلی ساده هست که برعکس ساده بودن یکی از مهمترین کار ها برای انجام دادن هنگام برنامه نویسی هست.قطعا برای شما هم پیش اومده که در حین برنامه نویسی یه ایده یا باگ به ذهنتون برسه که به خودتون قول دادین که پیاده یا حلش کنین که ممکنه حلش کرده باشین یا تا همین الان که این مقاله رو میخونین درحد ایده یا قول باقی مونده باشه.اینجاست که لیست وضایف به کمکمون میاد تا اونارو ذخیره کنیم.این کار دو مزیت خیلی موثر داره:۱:فراموش نمیکنین که چیکار باید میکردین۲:چون اونو نوشتین ترغیب به انجام دادنش میشینچطور TODO بسازم؟شما میتونید حتی یه فایل تکست ایجاد کنید و داخل اون کار هایی که لازمه بکنین رو بنویسین و گاها بهش سر بزنید و ببینید چه کار هایی رو انجام و چه کار هایی رو انجام ندادین ولی ما از راه پیشنهاد شده که توسط گیت هاب هم پشتیبانی میشه استفاده میکنیمیک فایل بدون پسوند با نام TODO ایجاد کنید تا VS Code هم اونو تشخیص بده و از طریق آیکون پیدا کردنش آسون باشه.پیشنهاد من اینه که این فایلو توی پوشه اصلی پروژه بسازین نه توی زیر شاخه پوشه ها!!اگر از لینوکس استفاده میکنین از این کامند میتونین برای ایجاد فایل TODO استفاده کنین:touch TODOشکل کلی یک فایل TODO به این شکل هست؛ براساس گفته گیت هاب- [x] Finish my changes 
- [ ] Push my commits to GitHub
- [ ] Open a pull request
- [x] = انجام شده
- [ ] = هنوز انجام نشدهکلمه x به همون معنای تیک زدن هست که یعنی این کار انجام شده و اگه خالی باشه به معنای انجام نشده هستسعی کنید هر ایده یا باگی که بنظرتون باید رفع یا پیاده شه رو داخل این فایل یادداشت کنید تا بتونید از بعدا استفاده کنید و کار هاتون رو پیش ببرید :)موفق باشید امضا mhsn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Fri, 29 Jan 2021 02:58:56 +0330</pubDate>
            </item>
                    <item>
                <title>کار کردن کد یا بدون باگ بودن کد؟کمی درباره باگ های امنیتی</title>
                <link>https://virgool.io/@mhsn/%DA%A9%D8%A7%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%AF-%DB%8C%D8%A7-%D8%A8%D8%AF%D9%88%D9%86-%D8%A8%D8%A7%DA%AF-%D8%A8%D9%88%D8%AF%D9%86-%DA%A9%D8%AF%DA%86%D8%B7%D9%88%D8%B1-%DA%A9%D8%AF%D9%85%D9%88%D9%86-%D8%B1%D9%88-%D8%AA%D8%B3%D8%AA-%DA%A9%D9%86%DB%8C%D9%85-k2bnfpq2rnf6</link>
                <description>خب سلام.امشب داشتم روی پلاگین وردپرسیمون که به زودی عرضه میشه کار میکردم و به این نکته برخوردم که ممکنه یکم سحل انگاری به کار بدم و کد هام رو اونطوری که باید تست نکرده باشم.متاسفانه اینطور هم بود و بعد چک کردن به باگ هایی برخوردم که اکثرا بخاطر مشغله زیاد یا کم تمرکز بودن ایجاد شده بودن.مهترین مسأله این بود که اروری نداشتیم و این دقیقا چیزیه که همه ما درموردش اشتباه میکنیم؛هر کدی که کار میکنه صرفا یه کد خوب و تمیز نیست.شروع کردم به رفع کردن باگ ها و طبق معمول یه کامیت به گیت عزیز دادم و پروژه رو آپدیت کردم و به خودم قول دادم از این به بعد بیشتر روی کد هایی که مینویسم فکر کنم و از اون مهمتر:کدهامو از هر نحوی تست کنم.خب قطعا مهمترین باگ ها که باید خیلی مواظب بود باگ های امنیتی مخصوصا توی وب اپلیکیشن ها و API ها و حتی نرم افزار های native که ممکنه یه دیتای حساس داخلش نوشته بشه (مثل پسورد ادمین و دسترسی ها به کل از طریق API) و اینجاست که یه نفر رشته های نرم افزار شما رو به راحتی با نرم افزار های معکوس کننده برگردونه و...یکی از این باگ های امنیتی که برای من هم پیش اومده اینه که شما وقتی به کاربر دسترسی آپلود فایل رو میدین کاربر میتونه یه فایلی که مخرب هست رو به سرور شما به اصطلاح inject یا تزریق کنه و اون فایل رو اجرا کنه و به سرور یا دیتای های شما آسیب بزنه یا از اون ها استفاده نادرست بکنه.ممکنه که خیلی از ما این اشتباه رو کرده باشیم و بگیم که خب کاری نداره که من میام میگم من فقط فایل هایی که فرمتشون jpg هست رو قبول میکنم.اینجاست که دقیقا اشتباه بزرگی کردین:توی دنیای لینوکس فایل ها از طریق فرمت شناخته نمیشن بلکه از طریق دیتای باینری یا هگزادسیمال اون ذخیره میشه و میشه با یه نرم افزار ساده ویرایشگر hex روش شناسایی فرمت رو دور زد و فایل php یا غیره خودمون رو توی سرور با فرمت jpg ذخیره و اجرا کرد.برای جلوگیری از این نوع حمله شما میتونید از کتابخانه ها و ابزار های آماده امنیتی استفاده کنید که باگ های اونا اکثرا رفع شده یا از طریق فانکشن های خود php یا زبان برنامه نویسیتون نوع فرمت فایل رو به طور دقیق بفهمید.یکی از توابع توی php برای چک کردن فرمت تابع mime_content_type هست که وابسته به توابع finfo هست و میتونه فرمت فایل رو از طریق کد هگز بفهمه و به شما کمک کنه از حملات از طریق آپلود جلوگیری کنین.نقشه بکشیدخیلی مهمه که شما قبل از نوشتن کد اون رو کاملا توی ذهنتون بنویسید و اجراش کنید و رو یه کاغذ تمامی مراحل و ویژگی ها و اصولی که باید در برنامه رعایت شه رو بنویسید این به شما کمک میکنه که راحت تر پروژه ای که قراره پیاده سازی بشه رو درک کنید.تست کردن کد چقدر مهمه؟از نظر من از مهمترین بخش های کد نویسی همینه که شما یک برنامه نویسی باشید که از تمامی زوایا به یک برنامه و مشکلاتی که توی اون میتونه بوجود بیاد نگاه کنه،اشتباه رایجی که گاهی مرتکب آن میشیم اینه که ما با اینکه مطلع هستیم که ممکنه این کدی که نوشتیم یا برنامه ای که ران کردیم دارای یه باگ امنیتی باشه ولی اون رو نادیده میگیریم(چون هیشکی اونو نمیبینه پس نمیتونه پیدا کنه) یا زمان رفع اون رو به تعویق میندازیم و با خودمون میگیم که &quot;بعدا حلش میکنم&quot; و این &quot;بعدا&quot; یعنی &quot;هیچوقت&quot;.پس سعی کنید کدی که نوشتید رو قدم به قدم ران کنید و ببینید که مشکلی داره یا نه.چطور کدمون رو تست کنیمپیشنهاد من اینه که کدی که نوشتید رو از چند طریق تست کنید:اجرا:قطعا وقتی ما کدنویسی میکنیم هدفمون اجرای اون کد و کار کردن به دلخواه ماست؛کد هایی که مینویسید رو به صورت گام به گام و با دقت تست کنید،به طور مثال اگر یه تابع نوشتید اون رو تست کنید و از درست اجرا شدن و کار کردن آن مطمعن بشید و بعد ادامه راه رو برید،این روش میتونه به شما کمک کنه که اگه مشکلی پیش اومد سریع تر رفع کنید؛چرا؟ چون تست کردن یه تابع با ۱۰ خط کد خیلی آسون تر از تست یه کلاس با کلی تابع یا یه فایل پر از کده که ممکنه پر از اشتباه باشه.تحمل ارور:حتما برای شما هم پیش اومده که یه نرم افزار به اصطلاح کرش کنه یا ارور بده و خارج بشه و ممکنه اطالاعتی که از طریق متغییر ها توی رم ذخیره شده بود پاک شن و مشکلات دیگه،خیلی مهمه که برنامه که مینویسیم تحمل ارور رو داشته باشه و بتونه در صورت بروز یک خطا اون رو کنترل کنه و از طریق یک alert به کاربر هشدار بده که کاربر هم بتونه تعامل بهتری با نرم افزار داشته باشه.البته با اینکه این خطا ها کم پیش میاد اما باید توجه داشته باشیم.باگ های امنیتی:همونطور که اشاره شد باگ های امنیتی خیلی میتونن خطرناک باشن و هر دولوپر خوبی باید بتونه باگ های امنیتی رو تست کنه و اونارو رفع کنه.البته باگ های امنیتی هر روز پیدا و رفع میشن و هزاران هزار باگ وجود داره که میتونه باعث نفوذ به سایت شما بشه.پس هیچوقت به امنیت کد هایی که نوشتید اعتماد نکنید :)نرم افزار های تست امنیت وب سایت برخلاف اون ذهنیتی که ازشون دارن میتونن بهمون کمک کنن تا باگ های امنیتی مثل باگ های SQL Injection رو پیدا کرد و اون رو رفع کرد.اگر یه کد حتی ساده نوشتید سعی کنید اون رو تمیز و به بهترین شکل بنویسید طوری که به خودتون بگید ایول این بهترین چیزی بود که میتونستم بنویسم و همچنین بعد نوشتن کدتون قطعا اون رو از هر طریق تست کنید(مثل کارفرما ها که با برنامه های ناز ما خشن رفتار میکنند :)) خیلی ممنون از مطالعه این نوشته :)امضا : mhsn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Tue, 12 Jan 2021 04:14:38 +0330</pubDate>
            </item>
                    <item>
                <title>لذت استفاده دو مانتیور در اوبونتو</title>
                <link>https://virgool.io/@mhsn/%D9%84%D8%B0%D8%AA-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%AF%D9%88-%D9%85%D8%A7%D9%86%D8%AA%DB%8C%D9%88%D8%B1-%D8%AF%D8%B1-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-vzlzqgkne7ka</link>
                <description>بعد از مدت ها میخاستم یه کاری که جدیدا خیلی مد شده و خیلی از برنامه نویس ها،گیمر ها و استریمر ها انجام دادن رو انجام بدم و اون چیزی نبود جز استفاده از مانیتور جانبی با لپ تاپلپ تاپ من یه  Lenovo Thinkpad T510i هست که یه مانیتور فکر کنم ۱۵ اینچی داشته باشه و یه سیستم معمولی که من با یه اوبونتو ۲۰ ازش راضیم و با کیبورد فوق العاده باحالش حال میکنم.دیده بودم که برخی از رفقا توی ویندوز این حرکت رو میزنن و فکر میکردم توی این اوبونتو این ویژگی محدود تر باشه و شاید نیاز به نرم افزار جانبی باشه تا عملکرد بهتری داشته باشه اما وقتی شروع به انجام دادنو تجربه ش کردم فهیمدم که خیلی خوبه و مثل همیشه کم از ویندوز و بقیه سیستم عامل ها نداره.بگذریم...چی نیازه؟اینجا من طریقه وصل کردن مانیتور جانبی به لپ تاپ و استفاده از سیستم لپ تاپ رو میگم.دیدم که برخی از دوستان و همکاران روی PC هم انجام میدن که اونو نمیدونم ماژول خاصی یا سخت افزار خاصی استفاده میکنن نمیدونم چون کارت گرافیک من تنها یه VGA میخوره و من تنها قادر به اشتراک یه تصویر توی PC خودم هستم.برگردیم به لپ تاپ:یه کابل VGA یا HDMI یا DVI و هر کابلی که هم مانیتورتون پشتیبانی کنه هم لپ تاپتونیه لپ تاپیه مانیتور جانبیاوبونتو عزیزچطور؟لپ تاپتون رو از طریق کابل هایی که بالا گفته شد به مانیتورتون وصل کنید.روی تسک بار بالا کلیک کنید و روی setting کلیک کنید تا صفحه تنظیمات اوبونتو براتون نمایش داده بشه.تسک بار اوبونتو ۲۰ پایدارحالا به قسمت Displays در اوبونتو ۲۰ و Devices در اوبونتو ۱۸ رفته و قسمت display رو انتخاب کنین.توی بالاترین قسمت با عنوانی به اسم display mode روبرو هستیم که روش های مختلف اشتراک صفحه لپ تاپ رو به ما ارائه میده.توی این قسمت روی Join Displays کلیک کنید.پایین تر یک صفحه برای شما نمایش داده میشود که با دو عدد مکعب که مکان مانیتور اصلی و فرعی شمارا مشخص میکنند که میتونید با درگ و دراپ مشخص کنید که مانیتور های شما به صورت افقی یا عمودی یا در چپ و راست هم قرار گرفته اند.در قسمت پایین هم که Primary Display هست میتونید انتخاب کنید که مانیتور اصلی و مانیتور فرعیتون کدوم باشه.مثلا اگه لپ تاپ شما پایینه و مانیتورتون بالاست میتونید مانتیور خودتون رو مانیتور اصلی تنظیم کنید که نوار تسک بار بالا برای شما نمایش داده بشه و موس از زیر به بالا منتقل شه.امیدوارم از این مطلب برای شما مفید باشه.تجربه من:دی ماه ۹۹ امضا :mhsn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Wed, 06 Jan 2021 03:55:14 +0330</pubDate>
            </item>
                    <item>
                <title>کنترل OAuth با PHP و JS در iframe</title>
                <link>https://virgool.io/@mhsn/%DA%A9%D9%86%D8%AA%D8%B1%D9%84-oauth-%D8%A8%D8%A7-php-%D9%88-js-%D8%AF%D8%B1-iframe-gfrvpusqdqav</link>
                <description>این روزا دیگه به جای وارد کردن کلی اطلاعات برای ثبت نام و ورود از حساب های کاربری شبکه های اجتماعی و اکانت های دیگه استفاده میشه و یه راه خیلی جالب هست که در چند سال اخیر در وبسایت ها هم قابل مشاهده بوده.پروتکل OAuth که ورژن جدیدش با اسم   OAuth2 شناخته میشه یه پروتکل استاندارد هست که وظیفه احراز هویت کلاینت ها و گرفتن اطلاعات اونارو به عهده داره و برای نرم افزار های وب،دسکتاپ،موبایل و ... به کار میرهدرواقع شرکت های بلاد کفر میان و API هایی بر اساس این پروتکل طراحی میکنن تا برنامه نویسا بتونن کاربران اپلیکیشن خودشون رو از طریق این API ها بشناسن و اطلاعات بگیرن،از جمله ارائه دهنده های این سرویس گوگل بزرگوار و لینکدین توییتر و ... میشه نام برداخیرا طی یه پروژه که به عهده من بود قرار شد که من صفحات ورود و عضویت رو با قابلیت ورود و ثبت نام با گوگل و لینکدین طراحی کنم.پس از طراحی مجزای این صفحات کارفرما تصمیم گرفت که این صفحه ها هردوشون توی یه modal نمایش داده بشه و از اونجایی که پروژه با cms وردپرس پیاده سازی شده بود من نمیخواستم فایل header رو زیادی شلوغ کنم و چون به این پیج ها به صورت مجزا هم نیاز داشتیم تصمیم گرفتم که بصورت embed و از طریق iframe و modal بوت استرپ ۴ لاگین و رجیستر رو پیاده سازی کنم اما این باعث میشد که بخاطر مشکلات امنیتی که توی iframe ها ممکنه پیش بیاد نمیشد از طریق iframe ها وب سایت دیگه ای رو بجز خود وبسایت لود کرد پس هنگام ثبت نام و لاگین از طریق گوگل و لینکدین به مشکل برمیخوردیم.پس اولین کاری که کردم از طریق جاوا اسکریپت یه فانکشن ساده ایجاد کردم که بتونه یه پنجره جدید باز کنه با لینکی که به عنوان پارامتر فانکشن میگیره.function load_api(link){window.open(link,&#039;auth&#039;,&#039;width=450,height=600,left=200,top=150,toolbar=1,status=1&#039;);
}یه لینک ارجاع به صفحه لاگین هم با تگ &lt;a&gt; ساختم و آدرس ارجاع رو که از طریق oauth گوگل گرفته بودم رو به عنوان پارامتر به تابع مشخص کردم:&lt;a href=&amp;quot&amp;quot =&amp;quotload_api(\&#039;&lt;?php echo($google_api_url); ?&gt;\&#039;);&amp;quot&gt;sign in with google&lt;/a&gt;تا اینجا یه لینک ارجاع ساخته بودم که توی یه پنجره 450 در 600 پیکسلی(فکر کنم) باز میشد و بعد از اینکه لاگین توسط گوگل انجام شد باز به صفحه لاگین redirect میشد پس من باید پنجره باز شده رو میبستم و پنجره اصلی که اصطلاحا بهش میگن opener (جاوا اسکریپت) رو هم رفرش میکردم که دیتا دوباره گرفته بشه و یوزر تشخیص داده بشه پس اینکارو انجام دادم:echo(&#039;&lt;script type=&amp;quottext/javascript&amp;quot&gt;if (window.opener != null)else{window.opener.top.location.reload();close();}&#039;);وظیفه این کد این بود که اول صفحه opener رو ریلود کنه بعدش هم خودش رو ببنده(پس از تایید لاگین این کد رو قرار دادم)یه چالش جالبی بود برام که گفتم ثبتش کنم تو اینجا تا شاید بدرد یکی خورداز چالش ها نترسین :) https://github.com/thephpleague/oauth2-google </description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Thu, 23 Jul 2020 02:59:16 +0430</pubDate>
            </item>
                    <item>
                <title>تاثیر منابع آموزشی در یادگیری</title>
                <link>https://virgool.io/@mhsn/%D8%AA%D8%A7%D8%AB%DB%8C%D8%B1-%D9%85%D9%86%D8%A7%D8%A8%D8%B9-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D8%AF%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-szzmxvpyrmky</link>
                <description>چطور باید آموزش دید و از کجا باید کمک گرفت؟این سوالیه که هر کسی هنگام شروع یادگیری هر چیزی از خود میپرسد و این روز ها نزدیک ترین و قابل دسترسی ترین منبع آموزشی اینترنت و استفاده از وبسایت های آموزشی که در هر زمینه ای با هر زبانی وجود دارد است.قصه از اونجایی شروع میشه که اینترنت هم میتونه مانند یک استاد به شما آموزش بده که چطور از توانایی هاتون استفاده کنید اما نکته ای که وجود داره اینه که بستگی داره این استاد کی باشه.وب سایت هایی وجود دارن که فقط برای اینکه مطالبشون بیشتر بشه و خودشون رو آپدیت و همه جانبه جلوه بدن از هر چیزی استفاده میکنن و هرچیزی رو داخل سایتشون قرار میدن،حتی اگه لازم باشه کپی میکنن تا بتونن مقاله ای منتشر کنن که هیچ ارزشی نداره و مخاطب رو جز اونکه ناامید کنه هیچی نداره.اما خوشبختانه شما میتونید با یک دکمه وبسایت رو عوض کنید و به وبسایتی مراجعه کنید که مخاطب هاش براش مهمن.برای مثال:یک وبسایت که در راستای آموزش برنامه نویسی کار میکنه مقاله ای رو نشر میده در رابطه با دانلود یک تصویر از طریق پایتون و داخل اون مقاله چیزی وجود نداره جز یک پاراگراف ساده و چندین سطر کد که معلوم نیست چه کسی و چطور اون رو نوشته و دارای قابلیت های اضافی که ممکنه کتابخانه ای که از اون استفاده کرده خیلی راحت تر initialize بشه و این باعث میشه فردی که دارای علاقه به این مبحث هست و دوست داره تست کنه نامید شه چون کد خطا میده کتابخانه نصب نمیشه و...سعی کنید از مستندات منتشر شده رسمی و خود مثلا زبان های برنامه نویسی استفاده کنید تا راحت تر و بروز تر و اصولی تر یاد بگیرید.امضا:mhsn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Sat, 04 Apr 2020 22:43:36 +0430</pubDate>
            </item>
                    <item>
                <title>نکات کدنویسی خوانا در تمام زبان های برنامه نویسی</title>
                <link>https://virgool.io/@mhsn/%D9%86%DA%A9%D8%A7%D8%AA-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AE%D9%88%D8%A7%D9%86%D8%A7-%D8%AF%D8%B1-%D8%AA%D9%85%D8%A7%D9%85-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-nffxdyye969m</link>
                <description>اول کتاب Clean Code از Robert C Martin میگه:نوشتن کد تمیز کاری است که شما با انجام دادن آن میتوانید خود را حرفه ای بنامید.شما چقدر حرفه ای هستین؟تو این مقاله میخوام چندتا نکته بگم که چطور کد تمیزی بنویسین و بعدا که خواستین آپدیت کنین یا پروژه رو بسپرین به یکی دیگه،ویرایش برنامه راحت تر باشه و کد به اصطلاح خوانا تری نوشته باشیننام متغیرهمه کسانی که تا حالا کدنویسی انجام دادن میدونن که متغییر ها قسمتی از حافظه هستند که به برنامه اختصاص داده میشن تا بشه یسری اطلاعات داخل اون ذخیره کرد و بعدا بشه بی معطلی از اون استفاده کردحالا از بحث تخصصی و وظیفه متغییر که بگذریم میرسیم به نام گذاری متغیر هاتمام زبان های برنامه نویسی دنیا از متغیر ها استفاده میکنن که نام این متغیر ها توسط برنامه نویس مشخص میشهبه طور مثال من در کد زیر متغیری با نام str از نوع String در زبان برنامه نویسی جاوا تعریف میکنم و مقدار اون رو برابر با Hello World قرار میدم:String str = &amp;quotHello World&quot;اما این اشتباهه!!چرا؟این کد از لحاظ فنی ایرادی نداره ولی مشکل اینجاست که متغیر من دارای یک نام کاملا غیر مربوطه!کلمه str مخفف کلمه String هست،ولی ممکنه برنامه من اونقدر بزرگ باشه که چندین متغیر String داشته باشه و من ممکنه که نام های غیر مربوطی مثل str رو الان یادم بمونه ولی مطمعنا پس از مدتی که خواستین برنامه رو ویرایش کنین مطمعن باشین که یادتون نمیاد str چیکار میکرد و مجبورین دوباره برین به قسمتی که متغیرو تعریف کردین یا کلی سرچ کنین بین کدتون که این متغیر کجا استفاده شده یا کجا ویرایش شده و...!برای همین باید از متغیر معنی دار استفاده کرد//روش نام گذاری اشتباهString n = &amp;quotHello World&quot;//روش نام گذاری صحیحString name = &amp;quotMohsen&quot;از کلاس ها و شی گرایی استفاده کنیدشی گرایی و کلاس ها که الان خیلی از زبان های برنامه نویسی این امکان رو دارا هستن یکی از بهترین راه ها برای نوشتن کد خوانا هست به غیر از این،به ما کمک میکنه که توابع رو به زیرشاخه یک کلاس منتقل کنیم تا هم راحت تر توابع رو پیدا کنیم و هم توابع منظم تر باشن.به طور مثال زبان C که از شی گرایی پیروی نمیکنه و یه زبان تابع محور هست کلی تابع داره که ممکنه بعدا یا اسماشون یادتون بره یا وظیفه شون ولی مثلا تو سی شارپ کلاس String دارای توابعی هست که مربوط به رشته ها هست و میتونیم به راحتی با IDE مخصوص که میشه همون Microsoft Visual Studio توابع مربوط به رشته هارو پیدا کنیم مثل تابع Split ، IndexOf و...وظیفه کلاس هاتون رو مشخص کنید و هیچوقت از یک کلاس برای انجام چند عمل مختلف استفاده نکنید به جاش کلاس دیگه ای ایجاد کنید.مثلا کلاسی که وظیفه اتصال به دیتابیس و Fetch(رفتن و آوردن دیتا) از دیتابیس رو داره رو بهش امکان Limit داده هارو ندین به جاش return کنید و Limit رو در کلاس یا تابع دیگه ای انجام بدین؛حالا چرا اینو میگم؟چون اگه شما داده هارو توی همون کلاس Limit کنید ممکنه بعدا یه جای دیگه از برنامه نیازمند اطلاعات از دیتابیس باشید که به صورت خام برگشت داده بشن.این بحث وظیفه کلاس ها شاید چیز ساده ای باشه ولی کمک میکنه که پروژه رو به صورت منعطف تری پیش ببرین.وقتی خودتون رو لایک میکنید کامنت هم بزارید :)منظورم اینه که وقتی که کد خفنی مینویسید و احساس میکنید که بعدا ممکنه وقتی دیدینش گیج بشین حتما و سریعا،آخر یا بالای کد کامنت بزارین(حتی اگه بحث امنیتی باشه هم میتونید کامنت بزارید چون کامپایلر ها و مفسر ها کامنت رو اجرا نمیکنن و در آخر فایل executable ی که تحویل میدن فاقد از هرگونه کامنتی هست).فاصله ی زیرشاخه هارو رعایت کنیدیکی از مهمترین بحث های کدخوانی و تشخیص بین شرط ها همین بحث فاصله بین کد هاست.چطور؟به طور مثال وقتی یک شرط یا تابع ایجاد میکنیم یک آکولاد باز و بسته ( {} ) هم باید باشه تا نقطه شروع و پایان تابع یا شرط ما مشخص باشه:Function main(){
       printf(&amp;quotHello\n&amp;quot);}تو کد بالا میبینید که دستور printf کمی جلوتر از آکولاد ها هست(دقیقا هشت کاراکتر فاصله که با کلید Tab ایجاد میشه)؛حالا این برای چی هست؟ممکنه ما توی یه تابع که خودش brace(آکولاد) داره کلی شرط و کد های دیگه داشته باشیم که توی شرط ها یا توی تابع اجرا بشه پس همین فاصله 8 تایی خیلی به تشخیص محل اجرای کد کمک میکنه.اعتراف میکنم نمیدونم اسمش چیه دقیقا D:کد تمیزاین مقاله در آینده آپدیت خواهد شد.امضا:MoHsEn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Tue, 31 Mar 2020 20:30:07 +0430</pubDate>
            </item>
                    <item>
                <title>تی تایپ:تمرین و یادگیری تایپ ده انگشتی فارسی</title>
                <link>https://virgool.io/@mhsn/%D8%AA%DB%8C-%D8%AA%D8%A7%DB%8C%D9%BE%D8%AA%D9%85%D8%B1%DB%8C%D9%86-%D9%88-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%AA%D8%A7%DB%8C%D9%BE-%D8%AF%D9%87-%D8%A7%D9%86%DA%AF%D8%B4%D8%AA%DB%8C-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-vjpposxcwehl</link>
                <description>تی تایپ | آموزش و تمرین تایپ ده انگشتیصفحه کلید در رایانه های رومیزی و همراه یکی از قطعات مورد نیاز برای کار های کامپیوتر حتی کار های روزمره است که خیلی از اشخاصی که با کامپیوترشان کار میکنند طریقه استفاده صحیح از آن را نمیدانند.مدت ها بود که خودم در حال یادگیری تایپ ده انگشتی بودم-با اینکه بدون نگاه کردن به کیبورد میتونستم تایپ کنم اما خطا های تایپیم کمی اذیت کننده بود-سایت های ایرانی و خارجی رو زیرو رو کردم و هرکدوم که آموزش یا تمرینی در این باره ارائه میداد رو دنبال کردم و تمرین کردم.حالا من دارم این متن رو در وضعیتی مینویسم که به تایپ ده انگشتی مسلط هستم و به عنوان برنامه نویس فکر کردم که میتونم وب سایتی ساده و سبک رو ارائه کنم که بشه توش تایپ ده انگشتی رو تمرین کرد و از طریق آموزش های سایت یادگرفت و حاصل این تصمیم شد ایده تی تایپتی تایپ چی هست؟تی تایپ -  TType.ir - یک وبسایت ساده و سریع هست که میشه توش تایپ تمرین کرد و از طریق آموزش ها انگشت هارو تمرین داد که تایپ سریع و بدون خطا هنگام برنامه نویسی / نوشتن نامه / چت و... داشت.همین الان شروع کنید و از امکانات کاملا رایگان این وبسایت استفاده کنید.امضا:MoHsEn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Thu, 26 Mar 2020 18:00:32 +0430</pubDate>
            </item>
                    <item>
                <title>اجرای برنامه در پشت زمینه ترمینال</title>
                <link>https://virgool.io/@mhsn/%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D9%BE%D8%B4%D8%AA-%D8%B2%D9%85%DB%8C%D9%86%D9%87-%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%84-pwqddxgix4cg</link>
                <description>اجرای برنامه در پشت زمینه تلگرامیه موقع هایی لازمه که یه برنامه رو از طریق ترمینال اجرا کنید و همچنین از همون ترمینال برای نوشتن کامند های دیگه استفاده کنید تو این پست میگم چطور با یک ترمینال چندین نرم افزار رو ران کنید و اونارو مدیریت کنیدبرای مثال ما میخوایم برنامه تلگرام رو از طریق دستور توی ترمینال اجرا کنیم؛کدی که استفاده میکنیم:$ Telegramبا اجرای این دستور برنامه تلگرام برای ما اجرا خواهد شد اما شما نمیتونید تا زمان بسته شدن تلگرام کامند دیگه ای به ترمینالتون تعریف کنید یعنی نرم افزار در پس زمینه اجرا شدهبرای اینکه فرایند رو به پشت زمینه انتقال بدین دو راه وجود دارهپس از اجرای برنامه در تلگرام کلید میانبر Ctrl+Z رو فشار بدید تا برنامه به پشت زمینه یا اصطلاحا bg انتقال پیدا کنهقبل از اجرای برنامه به انتهای آن یک &amp; اضافه کنید تا برنامه در بکگراند اجرا شود مثال$ Telegram &amp;مشکلی که ممکنه بوجود بیاد لاگ های اون فرایند یا نرم افزار هست به طور مثال وقتی من پروژه لاراول خودم رو از طریق Artisan اجرا میکنم(حتی اگه برنامه در پشت زمینه اجرا شه) لاگ هایی از طرف Artisan به ترمینال انتقال داده میشن؛ببینید:لاگ ها در ترمینال(KDE)این لاگ ها ممکنه یکم اذیت کنه برای برطرف کردنش از لینوکس کمک میگیریم:در پوشه روت یا ریشه لینوکس پوشه ای وجود داره به نام dev که داخل اون فایلی به نام null وجود دارهحالا این فایل برای چیه؟هر چیزی که به این فایل ارسال بشه گم و گور میشه و یعنی یه جور سطل آشغال مطلقه که داده هارو به هیچی تبدیل میکنهبرای اینکه ما لاگ هامون رو به dev/null انتقال بدیم باید از دستور &quot;&lt;&amp;&quot;استفاده کنیم:$ Telegram &amp;&gt; /dev/null با اجرای این دستور همه لاگ ها به null منتقل میشن و شما لاگی دریافت نمیکنیدحالا با &amp; در آخر کامند دستور رو در پشت زمینه اجرا میکنیم:$ Telegram &amp;&gt; /dev/null &amp;و شما براحتی میتونید بدون دخالت اون نرم افزار از ترمینال خودتون لذت ببرید :)برای مدیریت برنامه های در حال اجرا در پشت زمینه از دستور jobs استفاده میکنیم که پشت هر کامند اجرا شده یک شماره که از 1 شروع میشه وجود داره:[1]+  Running                 Telegram &amp;&gt; /dev/null &amp;حالا میتونید با دستور kill %1اون پراکسس رو ببندید(Terminte)با Jobs -l هم میتونید PID اون فرایند رو دریافت کنید امیدوارم مفید باشه.امضا:MoHsEn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Tue, 24 Mar 2020 17:41:45 +0430</pubDate>
            </item>
                    <item>
                <title>تجاربی که هر برنامه نویس مبتدی باید بداند</title>
                <link>https://virgool.io/coderlife/%D8%AA%D8%AC%D8%A7%D8%B1%D8%A8%DB%8C-%DA%A9%D9%87-%D9%87%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%85%D8%A8%D8%AA%D8%AF%DB%8C-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D8%AF%D8%A7%D9%86%D8%AF-eu0cmxlq2adz</link>
                <description>تجاربی که هر برنامه نویس مبتدی باید بداند1.با کدوم زبان برنامه نویسی شروع کنم؟درطول این چندسالی که برنامه نویسی رو با B4A شروع کردم و بعد ها سراغ سی شارپ رفتم و الان با PHP کار میکنم به یه چیزی رسیدم اونم این بود که کافیه اصول برنامه نویسی رو بفهمید بعدا میتونید زبان یا پلتفرم برنامه نویسی خودتون رو تغییر بدید و پروژه تون رو با اون جلو ببرید.پس نکته اول:هیچوقت نگران زبان برنامه نویسی نباشید2.شلوغش نکنیدهر پروژه ای که کار میکنید سعی کنید نظم و قوانین رو رعایت کنیدمثلا سعی کنید از کلاس ها و توابع بیشتر استفاده کنید تا خوانایی کد هاتون بالا بره و آپدیت و توسعه اون افزایش پیدا کنه.شئی گرایی رو یاد بگیرید.3.با ارور مهربون باشیدیک خاطره:یادمه چندسال پیش برنامه ی اندرویدی مینوشتم که اطلاعات یک سایت رو از طریق گت المنت(جاوا اسکریپت) دریافت میکرد و توی دریافت عکس ها به یک مشکل برخورد کرده بودم که هرکاری میکردم رفع نمیشد.عجیب این بود که همه چیز کاملا درست نوشته شده بود و من تعجب میکردم که چرا باگ ایجاد شده.بعد از یک هفته فهمیدم که کلمه src که مربوط به آدرس تصویر هست رو scr نوشتم :|-طبیعیه که توی هر برنامه ای که مینویسیم اروری دریافت کنیم چون ما هم آدمیزادیم و آدمیزاد میتونه اشتباه کنه.مواقعی که به یه ارور عجیب و غریب برمیخورید سعی کنید جزییات رو بررسی کنید و فقط متکی به IDE نباشید که ارور شمارو برطرف کنه.راه حل دیگه سرچ درباره ارور هست:هرچقدر سرچ خوبی داشته باشین زودتر میتونید ارور رو رفع کنید و پیشنهاد من به شما:انگلیسی سرچ کنید4.کامنت بزاریدگاهی اوقات خودم یه کد هایی مینویسم که میدونم بعدا ممکنه اگه ببینم متوجه نمیشم چیه پس سعی میکنم انتها یا بالای اون کد یه کامنت قرار بدم که بعدا اگه قصد ویرایش یا توسعه پروژه رو داشتم راحت تر بازیابی کنم پروژه رو تو ذهنم.این هم خوب نیست که برای هر خط کدی که مینویسید کامنت بزارید چون اینطوری هم وقت خودتون گرفته میشه هم پروژه تون تبدیل میشه به سررسید بقال سر کوچه D:5.نترسیدممکنه بعضی اوقات پروژه هایی براتون پیشنهاد بشه یا شما بخوایید تو سایت های فریلنسری مانند پونیشا پیشنهاد ثبت کنید تا برنامه نویسی کنید تو اینطور مواقع اصلا نترسید که نمیتونید پروژه رو تکمیل کنید و تحویل بدید؛البته این به این معنی نیست که شما دست به نوشتن پروژه ای کنید که نتونید اون پروژه رو تکمیل کنید و باعث بشه ناامید شین.سعی کنید حتما قبل از ثبت پیشنهاد و استارت پروژه روی کاغذ تمامی مراحل رو برای خودتون تو ذهن خودتون حل کنید و ویژگی هایی که درپروژه لازمه و شما نمیدونید رو یاد بگیرید تا هنگام انجام پروژه به مشکل برنخورید.امضا:MoHsEn</description>
                <category>MoHsEn</category>
                <author>MoHsEn</author>
                <pubDate>Tue, 24 Mar 2020 00:19:50 +0430</pubDate>
            </item>
            </channel>
</rss>