<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد حسن خدامی</title>
        <link>https://virgool.io/feed/@Niklaus</link>
        <description>نوشته ها و آموزش های یک برنامه نویس که بنظر خودش خسته هست اما به نظر دیگران خستگی نمیشناسه. 
بیشترم راجب پایتون و جنگو نظر میده !</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:24:30</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2891888/avatar/8zTvsG.jpg?height=120&amp;width=120</url>
            <title>محمد حسن خدامی</title>
            <link>https://virgool.io/@Niklaus</link>
        </image>

                    <item>
                <title>اگر می‌خوای یک تکنولوژی رو واقعاً یاد بگیری، از کجا باید شروع کنی؟</title>
                <link>https://virgool.io/@Niklaus/%D8%A7%DA%AF%D8%B1-%D9%85%DB%8C-%D8%AE%D9%88%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-%D8%B1%D9%88-%D9%88%D8%A7%D9%82%D8%B9%D8%A7%D9%8B-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%DA%A9%D8%AC%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%B4%D8%B1%D9%88%D8%B9-%DA%A9%D9%86%DB%8C-gano3n9np8nv</link>
                <description>خیلی وقته ننوشتم فکر میکنم یه 7-8 ماهی می گذره اما خب چه میشه کرد؟ همیشه به قلم دست گرفتن علاقه داشتم. البته الان شده روی کیبورد کوبیدن! بعدا راجب این مدت زمانی که نبودم حرف میزنم اما الان با یه مقاله خفن اینجام.خب این یه مقاله هست راجع به اینکه اگر میخایم یه تکنولوژی رو خوب یاد بگیریم بهترین منبع اش کجاست؟   تمرکز این مقاله قطعا روی فریمورک ها هستش اما اول از زبان های برنامه نویسی شروع میکنیم.    اگر قبلا تجربه ای با برنامه نویسی اصلا ندارید قطعا پیشنهاد میکنم که کلاس برید یا دوره ببینید.  خودآموز یاد گرفتن از 0 میتونه باعث بشه زمان یادگیری شما طولانی تر بشه و از طرف دیگه ممکنه بعضی از مباحث رو جا بندازید. پس حتما یک دوره جامع استفاده کنید.    اگر صفر کیلومتر هستید خلاصه ی نقشه راه به صورت زیر هست:  1- اصول و پایه برنامه نویسی و الگوریتم2- زبان برنامه نویسی3-فریمورک و لایبری های مرتبط  بهترین منابع اگر صفر کیلومتر هستید به تفکیک زبان برنامه نویسی : پایتون    دوره ایرانی جامع ای ندیدم :)...  قطعا دوره های udemy (البته سون لرن بد نیست ولی udemy خیلی بهتره)     جاوا اسکریپت   توی منابع فارسی میشه گفت سبزلرن بدک نیست و برای شروع قابل قبوله اما وقتی حرفه ای تر شدید باید دنبال دوره های انگلیسی بگردید.    زبان های مارک آپ html و css   لطفا برای اینا دوره نرید... سایت w3schools بهترین منبع یادگیری html و css هستش.جاوادوره های مکتب خونه و فرادرس میتونه source و منبع خوبی باشه!سی شارپ (#C)دوره توسینسو به نظرم بد نیست! میتونه کامل باشه و شمارو روی غلتک بندازهزبان C   اینو خودمم خوب درس میدم حقیقتا ! اما دوره ی مکتب خونه و اولترا آموزش واقعا اوکین !     زبان C++  دوره ای نتونست نظرم رو جلب کنه به نظرم دوره های انگلیسی و کتاب های در زمینه ی آموزش C++ نوشته شدن واقعا اوکین!فلاتر: توی دوره های فارسی سبزلرن بدک نیست اما پیشنهادم دوره udemy هست... اینجوری بگم با اختلاف دوره های udemy.زبان golang:   میتونم بگم تنها جایی سورس فارسی هم تراز سورس انگلیسی میتونه باشه!سایت GOCASTS و سون لرن استاد  دوره ی نیک آموز رو دورادور میشناسم و فرد با سوادی هستند.اما خودتون با توجه به سرفصل بین این 3 وب سایت معرفی شده یه تحقیقی بکنید و بهترین رو انتخاب کنید.بهترین منابع اگر یه زبان برنامه نویسی رو تسلط کامل داری و انگلیست هم خوبه:   پایتون  کتاب python crash course با اختلاف جزو بهترین کتاب های جامع یادگیری پایتون هست.   داکیومنت پایتون رو شخصا پیشنهاد نمی کنم چون واقعا داکیومنت خیلی سنگینی داره و اصلا user friendly نیست.جاوا اسکریپتباز هم پیشنهادم دوره هست!!!! چون زبان به شدت نفهمی می باشد.     زبان های MarkUp html, css   اگر مربوط به کارت هست یاد بگیر اگر نه که هیچی بیخیالش ... بازم همون w3schools بهترینه.زبان #Cقطعا  خود سایت مایکروسافت!زبان Cباز هم پیشنهاد من دوره هست چون base تمامی زبان هاست و خوب یاد گرفتنش خالی از لطف نیست.زبان C++کتاب هایی که در سطح شهر و در مورد آموزش C++ میتونی پیدا کنی خوبن!!فلاتر:قطعا مستندات.گولنگ:  مستندات در قدم اول اما اگر پیچیده بود یک دوره از udemy.فریمورک ها رو میذارم برات بخش دوم این مقاله!مقاله های کوتاه یا مطالب طنز برنامه نویسی رو توی کانالم میذارم! میتونید منو دنبال کنید. https://t.me/pythontired</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Sat, 03 May 2025 06:06:34 +0330</pubDate>
            </item>
                    <item>
                <title>اولین مقاله به زبان انگلیسی در Medium</title>
                <link>https://virgool.io/@Niklaus/%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A7%D9%86%DA%AF%D9%84%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-medium-omobzbtevwg7</link>
                <description>واقعا عکس دم دست نداشتم بذارم!یه مدتی بود با خودم کلنجار میرفتم (یعنی تقریبا یه 7 روزی) که اصلا هدفم از مقاله نوشتن چی هست ؟ خب به این رسیدم که دوست دارم مقاله هام توسط دیگران خونده بشه ، نقد بشه، تایید یا تشویق بشه! خب با توجه به View ویرگول یکم این موضوع نا امید کننده بود... سعی کردم این موضوع رو با خودم حل کنم و به زور یه مقاله نوشتم که حل یک ارور در git بود که ویرگول باگ خورد و مقاله قبل از انتشار پاک شد :))))))))))))))))))))))))))))))))))))مطئمنن فشار رو درک می کنید دیگه ؟ درسته ؟! بنابراین میخاستم بیخیال شم (یا به قول خودم ببندم به درخت) که تصمیم گرفتم مقاله نوشتن انگلیسی رو شروع کنم چیزی که بهش بیشتر علاقه دارم. اما بعدش با خودم گفتم که دلم میخاد فارسی هم بنویسم... پس یه تصمیم گرفتم تصمیم گرفتم که مقاله ها از این به بعد دو زبانه باشن! در ویرگول فارسی و در سایت Meduim انگلیسی :))))))الان هم اولین مقاله انگلیسیم رو نوشتم و ساعت2.45 شب هست و خداروشکر فردا شرکت تعطیله :))))))))))خیلی نمیخام پر حرفی کنم اما 2 تا موضوع مهم:1- گیت هاب من : گیت-هاب2- مقاله های انگلیسی : مدیومو همین ... نمیخام خیلی درگیر لغات و کلمات بشم... پس سوالی بود بپرسید. </description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Thu, 26 Sep 2024 02:47:56 +0330</pubDate>
            </item>
                    <item>
                <title>آپاچی کافکا- به زبان آدمیزاد</title>
                <link>https://virgool.io/@Niklaus/%D8%A2%D9%BE%D8%A7%DA%86%DB%8C-%DA%A9%D8%A7%D9%81%DA%A9%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-fxxp96xysbun</link>
                <description> سلام! الان که دارم این مقاله رو مینویسم ساعت 3 صبح هست. به نظرم از بی خوابی و چشم درد تصمیم گرفتم به مقاله نوشتن رو بیارم. یه مهارتی که واقعا توی ایران خیلی کم بهش پرداخته میشه apache kafka هست ، چرا کم پرداخته میشه ؟ چون واقعا یکم پیجیده هست نسبت به بقیه تکنولوژی هایی که وجود دارن (مثل rabbitmq و حتی بعضی اوقات Redis)پایه زبانی که باهاش kafka طراحی شده جاوا و scala هست و خب طبیعیه خیلی باهاش توی ایران آشنایی وجود نداشته باشه و مورد آخر اینکه این تکنولوژی سال 2010  پایه گذاری و اواخر 2010 (تقریبا دیگه 2011 شده بود) عرضه شدهاول بگیم آپاچی کافکا چیه....این توضیح ChatGpt 4o هست اگر نمی فهمید حق دارید!میخام به زبان آدمیزاد بهتون بگم و تا اطلاع ثانوی گور بابای لفظ های آکادمیک! خیلی ساده و بگم کافکا یک producer داره و یک consumer که اگر بخوام فارسیش کنم یه تولید کننده داره و یک مصرف کننده. حالا بیایم توی یک مثال ساده این شاخ فیل رو بشکونیم یه نونوایی رو تصور کنیم.در اینجا یک شاطر هست که باید همین طور نون بپزه، تا آرد هست هی نون رو مییذاره توی تنور و اجازه میده پخته شه ،  ما که میریم نون میخرم ما consumer هستیم حالا کاربرد اصلی Kafka در مباحث async هست که در مثال بسیار ساده تر بگم مثل صف نان تکی و نان چند تایی میمونه!کاربردش چیه ؟ بازم خیلی خلاصه (چون خوابم میاد!)(یعنی الان چشمام دایگه داره سنگین و سنگین تر میشه فرض کنید یک پیامی  باید در دیتابیس ذخیره بشه کاربر پیام رو میفرسته به جای اینکه با لگد بره تو دیتابیس اول میره توی کافکا به خوبی پردازش میشه، بعدش میره به دیتابسی.دوست دارم ااین مقاله رو در قالب مقاله های کوتاه بنویسیم و بهتون توضیح بدم همینکه درکش کنید چیه خودش یه دنیا  نعمته.!سوالی داشتین هم بپرسید. نداشتنم بپرسید ایراد نداره !</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Thu, 12 Sep 2024 03:11:51 +0330</pubDate>
            </item>
                    <item>
                <title>مسیر برنامه نویس شدن</title>
                <link>https://virgool.io/@Niklaus/%D9%85%D8%B3%DB%8C%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D8%AF%D9%86-iihw5whxbquu</link>
                <description>عکس تزیینی می باشد!سلام! توی پست قبلی یکی از دوستامون یه ایده ی خیلی خوب داد بهم که بیام راجب مسیر برنامه نویسی و ورود به بازار کار و... مقاله بنویسم. و اینکه نظرتونم راجب ساخت چنل تلگرام بگید! سعی میکنم توی چند مقاله قدم به قدم این موضوع رو باز کنم قبل از شروع...بیاید سر یکسری مسائل باهم توافق کنیم اگر این مسائل رو قبول ندارید اصلا طرف برنامه نویسی نیاید و این  مقاله رو هم نخونید! (امروز گوشیم سوخت و از مود برنامه نویس خسته به برنامه نویس بی اعصاب تغییر مود دادم)توافقات!از کسانی که به شما قول می دهند شما را در مدت 20 روز ، 6.5 ساعت ، 5 دقیقه ، 1 ماه ، 2 ماه ، 1 هفته به صورت رایگان! یا با هزینه ی خیلی ناقابل سرمایه گذاری روی خودتون که چند میلیون هست! بپرهیزید! از کسانی که 24 ساعت در اینستاگرام فعالیت دارند و می گویند برنامه نویس خفنی هستند و علاقه مند به آموزش به شما هستند چون شما برای آن ها مهم هستید... بپرهیزید!از کسانی که نمیدونن برنامه نویسی چیه و فقط نظر میدن... بپرهیزید! از کسانی که فکر میکنند برنامه نویس یعنی سیگار کشیدن و قهوه خوردن و شب بیدار بودن... بپرهیزید ! (که البته خودم هر هم سیگار میکشم هم قهوه زیاد میخورم ولی چون الان فول تایم جایی هستم شب میخوابم!)از کسانی که می گویند همه ی آدم ها ذاتا برنامه نویس هستند و مغز توانایی خلق کد و الگوریتم را دارد... بپرهیزید!از کسانی که قبل از نوشتن کد مواد مخدر مصرف می کنند... بپرهیزید!(اگر متوجه نشدید این خط رو دارم تیکه میندازم!)از کسانی که فکر میکنند پرامپ نویسی هوش مصنوعی مهم تر از برنامه نویسی می باشد ... بپرهیزید!(نه اینکه بدرد بخور نیست ، اتفاقا هست! ولی نه در مرحله ابتدایی و شروع)از کسانی که فکر می کنند برنامه نویسی طراحی سایت با وردپرس است... نپرهیزید! (اینارو خدا زده... براشون دلسوزی کنید)از کسانی که فکر می کنند حتما باید بهترین لپ تاپ و کامپیوتر را برای برنامه نویسی داشت... بپرهیزید!بیاید مثل یک Document بریم جلو. نیازمندی ها - Requirements1- علاقه2- علاقه 3- علاقه  ... 999- علاقه1000- تسلط متوسط رو به پایین به زبان انگلیسی 1001- کامپیوتر+کیبرد+موس+هدست+یک مانیتور (مال زمان قاجار هم باشه اوکیه)1002- روحیه پرسشگری و انتقاد پذیری 1003- علاقه ی شدید به یادگیری شکستن باور های مزخرفبرنامه نویسان هکر نیستند! (شاید دانش نسبی و کمی راجب امنیت داشته باشیم خب اونم به واسطه کارمون! ولی هکر نیستیم! پس لطفا تا مارو میبینید نگید توروخدا اینستاگرام دوست دخترمو هک کن!!!!!!!!!!!!)ما منزوی های پشت سیستم نشین نیستیم! بله ماهم بلدیم حرف بزنیم و زندگی اجتماعی داریم!ماها اعتیاد به سیگار،قهوه و چایی نداریم(البته این در مورد من صدق نمی کنه)ما نمیدونیم چرا اینترنت ناسا سریع تر از اینترنت ایرانه! (کنایه از سوالات بی ربط پرسیدن.)صرفا برنامه نویسان متخصص سخت افزار نیستند(ممکنه در اون هم مهارت داشته باشند اما همشون خیر) و خیلی از چیز های دیگه که میشنویم...نیاز نیست تمامی زبان های برنامه نویسی رو بلد باشیم !بله، لطفا جمله ی بالارو 3 بار خونید، دانستن 1 زبان +1 فریمورک + چند تا library و چند تا وابستگی (مثلا دیتابیس، مثلا message broker یا...) کاملا کافیه! چه زمانی نیازه چند تا زبان یاد بگیریم؟1- زمانی که می خواهید مدیر پروژه بشید(که معمولا برنامه نویسان با بالای 8-9 سال سابقه به این سمت کشیده میشن)2- زمانی که مدیر Front End و یا مدیر Backend بشید. (تجربه مورد نیاز متغیره! معمولا از تقریبا 3-4 سال بگیر به بالا)از کجا شروع کنم؟اول : کشف کن که به برنامه نویسی ، کامپیوتر، سر و کله زدن با ارورهای متفاوت و... علاقه داری یا خیر (چون بدون علاقه توی این حوزه موفقیت وجود نداره) دوم : حالا که فهمیدی علاقه داری ببین دلت میخواد دقیقا با برنامه نویسی چیکار کنی. مثلا : بازی بسازی ، برنامه android بسازی، وب سایت بسازی و... سوم: حالا چند تا زبان رو جلوی روت داری و میتونی یاد بگیری... اما چهارم: اما  ببین کدوم از این زبان ها منسوخ شده هستند یا کدومشون الان بیشتر دارن استفاده میشن مثال: برای توسعه ی Backend چندین زبان وجود داره : 1- Python, 2-PHP, 3-Golang, 4-NodeJs(Basically useful for frontend but can use it for backend too), 5-NextJs and ETCخب مثلا بین زبان های بالا میخوایم بیایم و انتخاب کنیم الان... بین زبان های بالا (تا جایی که من اطلاع دارم!) Python و Golang در زمینه توسعه Backend خیلی محبوب تر هستند. (بقیه هم خوبن ولی اینا الان بیشتر رو بورسن!) پنجم : بعد از انتخاب میری راجب اون زبان تحقیق میکنی در این تحقیق مهم ترین کار این هست که ببینی RoadMap هر زبان به چه صورت هست، که بهت وب سایت زیر رو پیشنهاد میکنم roadmap.shمیری ببینی مسیر یادگیری اون زبان چجوری هست. عکس پایین یک مثال هست از مسیر یادگیری زبان Rustآخرین مسیر نوشته Keep Learning ! پس بدونید توی این شغل آپدیت نگه داشتن خودت از همه چیز مهم تره ششم: حالا که با مسیر یادگیری اش حال کردی میره یه نگاهی به syntax هم میندازی ببینی ارتباط میگیری یا نه! اگر همه چیز اوکی بود شروع میکنی یاد گرفتن! اگر اوکی نبود به مرحله 4 ام بر میگرده دانشنامه ی عمومی و کوتاه برنامه نویس عصبی1- کلمه Syntax در برنامه نویسی واقعا به معنای علائم نگارشی هست! (ببینی چطوری تابع رو تعریف می کنند، چجوری متغیر تعریف می کنند و...)2- از کجا میشه یاد گرفت؟ اگر پول داری برو داخل گوگل سرچ کن دوره آموزشی فلان زبان!(دوره از ارزون هست تا گرون) اگر نمی خوای پولی خرج کنی سایت های زیر رو لطفا بغل کن!w3schoolsyoutubeبخش های مختلف برنامه نویسی1- وب سایت 2- اندروید، آیفون (کلا اپ موبایل)3- ویندوز و سیستم عامل 4- تحلیل و آنالیز دیتا 5- هوش مصنوعی و طراحی حرفه ای الگوریتم(طراحی بسیار حرفه ای الگوریتم ممکن هست نیازمند دکتری ریاضیات هم باشه در موارد پیشرفته)6- برنامه نویسی بلاکچین(واقعا در این زمینه بنده هیچ اطلاعاتی ندارم)7- به این نمیشه گفت برنامه نویس... اما تعامل خیلی زیادی داره با برنامه نویس ها ... Ui/Ux 8- کارشناس امنیت 9- شبکه (خیلی مرتبط به برنامه نویسی نیست اما یه بخش هاییش هست میشه گفت 60 درصدش!)10- هک !11- بازی سازی 12- مدیریت حرفه ای دیتابیس های پیشرفته (خیلی این پوزیشن شغلی رو توی ایران ندیدم)واقعا بیشتر از این هم هست! و باید بری بگردی دنبالشو اگر بخوایم ریز بشیم هر کدوم از موضوعات بالا به چند بخش ریز تر تقسیم میشن!مثلا... برنامه نویس وب سایت به : فرانت اند و بک اند تقسیم میشه کارشناس امنیت :به iot میتونه مربوط بشه (در زمینه دوربین های مداربسته و...) میتونه Defense باشه ( اسم دقیق اش رو یادم نیست)میتونه PenTester باشه اگر دلت میخواد راجب تخصص من بدونی... من تخصمم وب سایت هست. با استفاده از Python و Djangoبرای بخش پایانی این مقاله برنامه نویس واقعا کیه ؟ کسی که بتونه اصل اوکام رو در چارچوب اصل اوکام توضیح بده.لطفا اگر مقاله رو تا اینجا حوصله کردید بخونید بهم بگید... باعث میشه از سوختن گوشیم کمتر ناراحت باشم!و آها تلگرام اونم بگید بزنم یا نه و همین ! تا مقاله بعدی مراقب خودتون باشید.</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Wed, 04 Sep 2024 02:19:28 +0330</pubDate>
            </item>
                    <item>
                <title>تجربه اولین کار فول تایم و حضوری - برنامه نویس خسته!</title>
                <link>https://virgool.io/@Niklaus/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D8%A7%D9%88%D9%84%DB%8C%D9%86-%DA%A9%D8%A7%D8%B1-%D9%81%D9%88%D9%84-%D8%AA%D8%A7%DB%8C%D9%85-%D9%88-%D8%AD%D8%B6%D9%88%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%AE%D8%B3%D8%AA%D9%87-felpct434z9u</link>
                <description>عکسه قشنگ تر شده نه ؟ سلام، میدونه یه 2 هفته ای هست مقاله نذاشتم خب چند تا دلیل داره که الان میگمفول تایم استخدام شدم و تمام تمرکزم روی این بود که بهترین عملکرد خودمو داشته باشم ایده های زیادی برای مقاله نوشتن داشتن و نمیدونستم از کجا شروع کنم  ویرگول با اینکه سایت فوق العاده ای هست برای نوشتن اما خیلی محبوب نیست و بستر قوی نیست برای اینکه مقاله ها و حرف هامو به گوش افراد برسونم و داشتم به اینکه فکر میکردم که چیکار کنم.(اینستاگرام ندارم و از اینستاگرام هم بدم میاد)(تو فکر چنل تلگرام بودم) خسته بودم ! خب حالا میخام از تجربه کار حضوری براتون بگم که خیلی خفنه :)!دقیقا دو هفته پیش استخدام شدم تو یه شرکت (که بخاطر محرمانگی فکر نکنم بتونم اسمش رو بگم!)(ازشون میپرسم اگر اوکی بودن که توی مقاله بعدی بیشتر راجبشون مینویسم) مورد مهمی که باید رعایت کنیم هممون قانون محرمانگی اطلاعات هست. اول به عنوان یک انسان ، بعد برنامه نویس و بعد کسی که مسئولیت پذیرفته در زندگیش باید یاد بگیریم رازدار باشیم!زمانی که برای مصاحبه رفتم فکر میکنم نزدیک 15 سوال فنی از من پرسیده شده که یکیشو غلط جواب دادم 4 تا رو نمیدونستم و مثل بچه خوب گفتم نمیدونم ! و 10 تارو به درستی پاسخ دادم. راجب ساعت کار و... بهم گفتن یکم دو دل بودم حس میکردم فضای شرکت یکم خشکه و... مصاحبه تموم شد و گفتند که تا 2 روز دیگه بهت خبر میدیم (لطفا همه شرکت ها یادبگیرن کارجو رو بیشتر از 3-4 روز معطل نکنید! و اگر رد میشن بهشون اطلاع بدید نوشتن یک پیام  و کپی پیست کردن آن و ارسالش به کسانی که در مصاحبه رد شدند، باعث درد گرفتن انگشتان مبارک شما نمی شود!)فردای اون روز با من تماس گرفتند و گفتند که از فردا پاشو بیا سرکار یکم دو دل بودم و با مِن مِن کردن پذیرفتم که برم. قرار بر این بود که یک هفته آزمایشی باشم و اگر شرکت خوشش نیومد یا خودم خوشم نمیاد 1 ریال هم دریافت نکنم ولی اگر خوشم اومد راجب حقوق و ... حرف میزنیم. من به خودم اعتماد داشتم پس پذیرفتم.و خب سر 4 روز ارزیابی من تموم شد و منو پذیرفتن ، ارزیابیشون من رو در سطح Mid-Level قرار داد! خیلی خوشحال بودم ، سطح Mid-Level به طور اصولی معمولا بین 2 الی 3 سال تجربه کار نیاز داره و من با چند ماه تجربه کار تونسته بودم توی ارزیابی شرکتی که (واقعا قوی و معتبر هست) رتبه  Mid-Level به دست بیارم! و خب این شروع تجربه کار من هست و فکر کنم تا اطلاع ثانوی بخوام توی این شرکت باشم و بهترین عملکردم رو ارائه بدم! چند تا نکته مهم یاد گرفتم که دوست دارم باهاتون درمیون بذارمشسعی کنید انعطاف پذیر باشید ! یعنی سیستم عامل ویندوز بود، لینوکس بود، مک بود هر چی بود سعی کنید یادش بگیرید (یه نکته هم بهتون میگم آخرش راجب مقاله)تمرین تمرین تمرین، تلاش تلاش تلاش، این واقعا تنها کاری بود که کردم ، یادم هست روز اول برای اینکه بتونم تسک رو ارسال کنم (تسک زمان دارم هم نبود) بیخیال خوردن ناهار شدم و تمرکز کردم روی کارم (شما ناهار بخورید لطفا! ولی منظور کلیم اینه تلاش کنید)هیچ وقت یک کتاب رو از جلدش قضاوت نکنید ! (اینو میذارم خودتون برداشت کنید)پول اولویت سوم هست! اولویت اول به عنوان یک برنامه نویس یادگیری و کشف بیشتر هست و اولویت دوم این هست که شما تقریبا 8-9 ساعت از روزتون رو در اون شرکت میگذرونید! پس یجایی رو پیدا کنید که روانی نشید! چیزایی که ممکنه یک برنامه نویس رو روانی کنه : 1- میکرومنجمنت، 2- درخواست اضافه کاری، 3- بیش از اندازه سفت و سخت بودن و محدودیت های شدید یک شرکت - 4- نداشتن شرایط استراحت! (خداروشکر توی شرکتی که هستم این موارد وجود نداره و تمامی این موارد رعایت میشه) یه سری رد فلگ هم دارن شرکت ها که در زمان خوندن آگهی میتونید متوجه بشید:حقوق و مزایا رقابتی ! --&gt; این یعنی دارید وارد یک شرکت زیرآب زن میشید که همه برای پول بیشتر میخان یکی دیگه رو خراب کنن، برنامه نویسی کار تیمیه!(از واژه زیرآب زن استفاده کردم اون واژه اصلی رو خودتون میدونید چیه :) ) مزایا : حقوق به موقع --&gt; عزیزم وظیفته به موقع حقوق بدی :) مزایا: بیمه --&gt; اینم وظیفته شرکت گرامی توضیحات خاصی راجب کار ننوشته و بیشتر راجب اینکه باید لباس و رفتار و عقایدت چطور باشه نوشته(توی آگهی) --&gt; !!!! وقتی میری برای مصاحبه خود کارفرما نمیدونه چی میخاد  و از تو میخاد در بیاره که چی میخاد ! شرکت حتی به خودش زحمت نداده رزومه و گیت هاب رو بررسی کنه !صد تا زبان مختلف رو ازت میخاد بلد باشی ! موارد بالایی که نوشتم رد فلگ هایی هست که توی این مدت مصاحبه هایی که داشتم (تقریبا 9 مصاحبه) بهش برخوردم و واقعا ردفلگ هست... اینارو دیدید فرار کنید و اون شرکت نرید! خب حالا گرین فلگ های یک شرکت (از شرکت خودمونم مثال میزنم، هرکیم بهم بگه پاچه خوار خودشه!)داشتن تایم آزاد و کافی برای استراحت و رفع خستگی قراردادن تایم Research and Develop روحیه تیمی و کمک به همدیگه سرمایه گذاری بلند مدت روی برنامه نویسروحیه هایی که باید به عنوان برنامه نویس داشته باشی:کنجکاوی و بسیار عملگرا مدام دنبال یادگیری باشی بتونی تصویر سازی بکنی (تسکی که بهت دادن رو) نظم، دیسپلین و آرامشسعی کنی از تجربیات دیگران استفاده کنی از سوال پرسیدن خجالت نکشی واژه نمیدونم برای خیلی از سوال هایی که ازت میپرسن ساخته شده ! ازش استفاده کنوقت های استراحت تلاش کنی از شخصیت درونگرای پشت سیستم نشین بیای بیرون و ارتباط و پیوندتو با همکارات بهتر کنی نکات مهم فنی که بنظرم باید یاد بگیرید جدای از زبانی که توش استاد شدید.سیستم عامل : من خودم از سیستم عامل فراری بودم ، یعنی واقعا ترجیح میدادم روی همون ویندوز کار کنم (با اینکه لینوکس هم بلدم در حدی که کارم رو راه بندازه) اما از مدیر شرکت یک نکته خیلی مهمی یاد گرفتم(میتونم بگم الان ایشون یکی از دوستان خیلی خوب من هست و براش خیلی احترام قائلم) نکته این هست که برنامه نویس BackEnd باید سیستم عامل رو بشناسه، باید محدودیت ها و ویژگی هاشو بدونه، باید  بفهمه منطق سیستم عامل چیه تا بتونه باعث پیشرفت خودش بشه. پدیده ای به نام Docker:برنامه نویس ها به زخم خوردگان از Docker معروف هستن اما فقط میتونم بگم هر  چقدر توش حرفه ای تر دارم میشم دارم تازه میفهمم چقدر ناب و خاص هست Dockerبلد بودن حداقل یک Message Broker:فکر نکنم نیازی به توضیح داشته باشه! معماری Sync و Async:نمیدونم اسمشو میشه گذاشت معماری یا نه (نمیدونم دارم اصطلاح رو درست استفاده میکنم یا خیر ) اما گور بابای کلمات ! sync و Async رو یاد بگیرید! (هر زبانی که حالا کار می کنید)و یه نکته مهم آخر به هیچ عنوان از استراحت و تفریح در ساعات بعد از کار و آخر هفته ها (به صورت متعادل) غافل نشید. آخر هفته ی خوب یعنی شنبه ی عالیدر نهایت به نظرتون چنل تلگرام بزنم ؟! ایده خاصی ندارم دوست دارم ایده هاتونو بشنوم! اگر اجازه دادن در مقاله ی بعدی اسم شرکت و یک مقاله ی کامل از محل کار مینویسم (البته اگر حسش بیاد و خستگی بهم غلبه نکنه)</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Fri, 30 Aug 2024 01:05:14 +0330</pubDate>
            </item>
                    <item>
                <title>ارور 405 در جنگو</title>
                <link>https://virgool.io/@Niklaus/%D8%A7%D8%B1%D9%88%D8%B1-405-%D8%AF%D8%B1-%D8%AC%D9%86%DA%AF%D9%88-erodisqw8cuu</link>
                <description>سلام امروز با یه آموزش اینجام! قبلا راجب خیلی از Status Code ها یه پست نوشتم، اگر نخوندیش پیشنهاد میکنم بخونیش اما اگر حوصله نداریم فداسرت الان قراره چیزی جز اون یاد بگیریم که ترکیبی با جنگو هم هست لیست HTTP Status Coideخب یه Status code که در مقاله ی بالا بهش اشاره نکردم 405 هست! خب قضیه 405 چیه ؟ و چرا الان دارم براش یه مقاله جداگونه مینویسم و به نظرم خیلی مهمه ؟ چون درست هندل نکردن این ارور میتونه منجر به یک فاجعه ی بزرگ توی سایت بشه ... چرا؟ 1-  تجربه کاربری ضعیف 2-  عدم اطلاع رسانی مناسب3- مشکلات SEO 4- احتمال لو رفتن اطلاعات سرورخب حالا بیایم از پایه بررسی کنیم ببینیم چطور این ارور به وجود میادبازم باید یه فلش بک بزنم به مقاله های قبلیم یادتونه راجب GET و POST اومده بودم یه مقاله نوشته بودم. پیشنهاد میکنم که بخونید دستور GET در برابر دستور POSTبیاید براتون یه مثال از دنیای واقعی بزنم اول:فرض کنید که یه مغازه داریم و ما فروشنده هستیم یه آقایی توی این مغازه ما کار میکنه به نام حسن آقا!این آقا کارش این هست که میاد و محصول رو برای مشتری توی کیسه پلاستیک میذاره، هیچکس این حسن آقا گل گلاب رو نباید ببینه! چون قیافه ترسناکی داره و ممکنه مشتری ما بترسه و دیگه هیچ وقت پاشو توی مغازه ی ما نذاره! خب حالا بریم توی سایت و جنگوما یه فروشگاه داریم که یک View داریم که کارش اضافه کردن محصولات به سبد خرید هست و هیچ کار دیگه ای نمی کنه. سبد خرید ما 2 شاخصه مهم داره تعداد محصولپس درخواست بایستی به صورت POST ارسال بشه. چرا ؟ چون هر محصول یک Form داره که ما در اون تعداد رو مشخص میکنیم. کدی که نوشته شده رو خوب بررسی کنید لطفا :)بخوام یه توضیح کوتاه بدم method Post این کلاس میاد از ما آیدی محصول رو میگیره ، میره چک میکنه ببینه توی انبار موجود هست یا نه بعدش یه فرم نشون میده میگه چند تا میخوای و ما بهش میگیم چند تا میخوایم و بعدش میاد به سبد خرید ما اضافه اش میکنه. (دقیقا مثل حسن آقا که مثال زدم، فقط هیچکس نباید ببینه حسن آقا رو!)همه ی View ها یک url دارن! و این view با دستور post کار میکنه. حالا اگر یک فردی بیاد و url این view رو سرچ کنه چه اتفاقی میفته ؟! آفرین ! حسن آقا رو میبینه!!!!! این قیافه حسن آقاست ! یا همون ارور 405 ما :)))))))))))اگرم تا الان بهم گفتید بی مزه با تمام احترام بی مزه خودتونید :))))))))))))یکم تخصصی تر حرف بزنم ! هیچ مشتری دوست نداره ارور ببینه وقتی که میخاد خریدی رو انجام بده یا هیچ کارفرمایی دوست نداره وقتی داره یکی از url هاشو تست میکنه همچین صفحه ی زشتی و کریهی رو ببینه چرا این اتفاق افتاد؟به زبان فارسی ساده : ما یه view داریم که فقط request باید به صورت POST برای اون ارسال بشه اما کاربر اومده و با GET این درخواست رو ارسال کرده.راه حل چیه ؟ راه حل ما به چند مرحله تقسیم میشه. پس بیاید بهتون بگم 1- اول برای تمیز تر شدن کد و اینکه خیالمون راحت بشه یه وقت باگ نخوره کد میایم و به کلاسمون method GET رو اضافه میکنیم اما به صورت زیر 3 خط اول رو نگاه کنید. Method POST رو هیچ دستی بهش نزدیم اما اومدیم یه Method GET اضافه کردیم داخل این METHOD GET اومدیم گفتیم که آقا جان فقط و فقط method POST مجازه دیگه هیچ چیزی جز اون مجاز نیست! فقط یادتون نره که HttpResponseNotAllowed رو ایمپورت کنید! from django.http import HttpResponseNotAllowedیه نگاهی به Django Document بندازیم class HttpResponseNotAllowed¶Like HttpResponse, but uses a 405 status code. The first argument to the constructor is required: a list of permitted methods (e.g. [&#x27;GET&#x27;, &#x27;POST&#x27;]).خیلی ساده بخوام ترجمه اش کنم گفته مثل HttpResponse هست اما از کد 405 استفاده میکنه و باید حتما یک آرگومان براش بفرستید که باید یک لیستی از method های مجاز باشه. همونکاری که ما توی کدمون کردیم ! بهش گفتیم فقط Method POST مجاز هست نه چیز دیگه ای! خب این مرحله اول بود بریم سراغ مرحله دوم 2- ساخت صفحه ی html ارور 405 !به این صورت در کنار base.html میام و  با اسم کد ارور صفحه ی html خودم رو میسازمو داخلش کد های زیر رو نوشتم ، حالا سلیقه ای هست شما هرجور دوست دارید بنویسید!من به عنوان یک Backend کار بی سلیقه ! سلیقه ام اینه :)))) چقدر سلیقه تکرار شد :))))ما با این کارمون یجورایی حسن آقا رو فرستادیم جراحی پلاستیک!! اما هنوز کارمون 2 تا ایراد کوچولو داره وقتی دوباره به url میریم که ارور 405 میخوریم باز عکس حسن آقا قبل از جراحی پلاستیک رو نشون میده!! علتش چیه ؟ 1- چون که ما هنوز روی Development هستیم ! و Debug = True هست ! ما برای تست صفحه های ارور بایستی بریم روی حال Production.پس میریم داخل settings.py و تنظیمات زیر رو انجام میدیمDebug = FalseAllowedHost = [&#039;127.0.0.1&#039;]2- مشکل دوم! متاسفانه یه حقیقت تلخی که وجود داره این هست که جنگو برای ارور 405 هندلر خاصی نداره :)) (من هرچی سرچ کردم نبود! اگر شما بلدید حتما به منم یاد بدید!) بنابراین باید بیایم خودمون override اش کنیم. خب یادتونه توی view اومدیم و method GET نوشتیم ؟ حالا باید تغییر اش بدیم!بذارید توضیح بدم دقیقا چیکار میکنیم! اول میایم و تابع render رو صدا میزنیم و میگیم رو request و اون صفحه ی Html رو دریافت کن، اما مثل همیشه Return اش نمی کنیم! و داخل یک متغیر ذخیره اش میکنیم. و بعدش در خط بعد با HttpResponseNotAllowed میایم و اون رو هم Return میکنیم! یکم توضیحش سخت شد میدونم! اگر متوجه نشدید سوال بپرسید.و نتیجه به همین زیبایی هست که میبینید ! حسن آقا بعد از جراحی پلاستیک !  راستی اینکه می بینید اعداد رو فارسی نشون میده بخاطر یه package هست که خودم نوشتمش ! البته توی نت 10000 تا مثل اش موجوده ولی توی گیت هاب میذارم این پکیج رو بزودی ! یه نکته مهم وجود داره که در مواقع خیلی کمی ما نیاز به هندل کردن ارور 405 داریم . (اگر پروژه ای دارید که خیلی زیاد توش این اتفاق می افته میتونیم براش mixin بسازیم.) راستی آدرس GitHub من :گیت هاب منخب همین دیگه! موفق باشید :)))) </description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Sat, 17 Aug 2024 11:16:19 +0330</pubDate>
            </item>
                    <item>
                <title>سنیور کیه ؟</title>
                <link>https://virgool.io/@Niklaus/%D8%B3%D9%86%DB%8C%D9%88%D8%B1-%DA%A9%DB%8C%D9%87-c9b2yh48me1m</link>
                <description>امروز داشتم توی تلگرام داخل یکی از کانال های برنامه نویسی یه سری مطلب میخوندم که یک مقاله ی خیلی جذاب دیدم. برای من همیشه سوال شده بود که فرق یه شخصی که 5 سال سابقه کار داره با منی که تقریبا 1 سال سابقه کار دارم چی هست. ولی خب خیلی پیگیرش نبودم با خودم میگفتم وقتی 5 سال سابقه کار رو کسب کردم میفهمم! اما امروز یه مقاله ای دیدم که به قلم آقای حسین دادخواه نوشته شده بود، بنده ایشون رو نمیشناسم اما به نظرم مقاله ی خیلی جذابی بود. ایشون اومده بود و از زبون خفن ترین برنامه نویسان و مدرسان برنامه نویس دنیا پاسخ سوال سنیور کی هست رو جمع آوری کرده بود. و خب تقریبا میشه گفت که پاسخ این سوال رو من گرفتم. امیدوارم شماهم این پاسخ رو بگیرید و در راستای صیقل دادن مهارت های تخصصی و مهارت های نرمتون تلاش کنید.سنیور کیه؟ سنیور کسیه که:  حل مسئله براش یه بازیه: مارتین فاولر میگه یه سنیور باید بتونه مشکلات پیچیده رو قشنگ تحلیل کنه و راهحلهایی بده که نه تنها جواب بده، بلکه بعداً هم دردسر درست نکنه.  یادگیری براش آب خوردنه: اندرو هانت و دیوید توماس تو کتاب &quot;The Pragmatic Programmer&quot; تاکید میکنن که یه سنیور همیشه در حال یادگیریه و با سرعت میتونه تکنولوژیهای جدید رو بگیره و تو کارش پیاده کنه. اصطلاحا میگن باید learning curve پایین باشه  به &quot;نمیشه&quot; اعتقادی نداره: باب مارتین میگه یه سنیور به جای اینکه بگه &quot;نمیشه&quot;، باید بیاد بگه &quot;چقدر هزینه داره&quot; و راههای مختلف رو ارائه بده، حتی اگه گرون دربیاد.  کدی که میزنه مثل جواهر میدرخشه (و تست شده است): کنت بک، پدر TDD، میگه که تست کردن کد از مهمترین بخشهای کاره. یه سنیور باید کدی بزنه که به طور کامل تست شده و هیچ خطایی توش نباشه. یه عده معتقدن که تست کار سنیور نیست! ای خدا  !!!حرفاش پایه و اساس داره، نه از روی حدس و گمان: استیو مککانل تو کتاب &quot;Code Complete&quot; میگه تصمیمات یه سنیور باید بر اساس تجربه و داده باشه، نه از روی حدس. این باعث میشه که هم تیمیها و هم مشتریها بهش اعتماد کنن.  استراتژی رو توی خونش داره: وارن برگر توی کتاب &quot;A More Beautiful Question&quot; میگه یه سنیور باید تصویر کلی رو ببینه و با تفکر استراتژیک تصمیمات بلندمدت بگیره.  دنبال مقصر نمیگرده، دنبال راه حله: کن بلانچارد تو کتاب &quot;The One Minute Manager&quot; میگه یه سنیور به جای اینکه بگرده ببینه کی اشتباه کرده، دنبال راه حل میگرده. این طوری فرهنگ همکاری و اعتماد تو تیم قوی میشه. قابل اعتماده: لینوس توروالدز، خالق لینوکس ، میگه که اعتماد یکی از مهمترین ویژگیهای یه سنیوره. سنیور باید بتونه با کیفیت کار و رفتار حرفهایش اعتماد دیگران رو جلب کنه.  زمان رو خوب مدیریت میکنه: استیون کاوی، نویسنده &quot;7 عادت افراد بسیار مؤثر&quot;، میگه: &quot;اولویتها رو اولویتبندی کنید.&quot; یه سنیور باید بتونه زمانش رو خوب مدیریت کنه و کارای مهمتر رو تشخیص بده تا پروژهها به موقع و با کیفیت تحویل داده بشن.  انعطاف‌پذیره: جیمز گوسلینگ، خالق جاوا ، میگه: &quot;تغییرات دائمی هستن و نرمافزار باید باهاشون سازگار باشه.&quot; یه سنیور باید همیشه آماده تغییر باشه و با شرایط جدید کنار بیاد.  تفکر انتقادی داره و تحلیلگره: ریچارد استالمن، بنیانگذار نرمافزار آزاد ، میگه: &quot;هر تصمیمی تو نرم افزار باید با دقت و تحلیل کامل گرفته بشه.&quot; یه سنیور باید بتونه مسائل رو تحلیل کنه و بهترین تصمیمات رو بگیره.  همیشه دنبال کیفیت و بهتر شدنه: ادوارد دمینگ، پیشگام مدیریت کیفیت، میگه: &quot;کیفیت نتیجه تلاش مداوم و بهبوده.&quot; یه سنیور همیشه دنبال اینه که کیفیت کد و فرآیندها رو بالا ببره و به تیم کمک کنه تا بهترین خودشون باشن.  دید کلی به پروژه داره: اریک ریموند، یکی از نویسندگان &quot;The Cathedral and the Bazaar&quot;، میگه: &quot;نگاه از بالا به پروژه بهتون کمک میکنه بفهمین هر تصمیم چطور بر کل سیستم تأثیر میذاره.&quot; یه سنیور باید دید کلی داشته باشه تا تصمیمات استراتژیک بگیره و پروژه رو به موفقیت برسونه.</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Sun, 11 Aug 2024 23:56:18 +0330</pubDate>
            </item>
                    <item>
                <title>یه برنامه نویس نه چندان خسته !</title>
                <link>https://virgool.io/@Niklaus/%DB%8C%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%86%D9%87-%DA%86%D9%86%D8%AF%D8%A7%D9%86-%D8%AE%D8%B3%D8%AA%D9%87-qgpqktjw7p2w</link>
                <description>فکر میکنم بعد از 8 ماه هست که دارم دست به قلم میشم و دوباره توی ویرگول مینویسم ، خب توی این چند ماه اتفاقات زیادی برام افتاده و شاید از یه برنامه نویس 0 کیلومتر تبدیل شدم به یه برنامه نویس 2 کیلومتر. اگر زیاد نگفته باشم :) چیزای خیلی زیادی یاد گرفتم توی این 8 ماه تقریبا Django رو Mastery کردم (صد البته که بی نهایت هست و در حد یک مید لول ) مهارت خودمو توی دیتابیس های nosql مثل redis خیلی بالا بردم. این مقاله صرفا آموزشی نیست ! شایدم باشه ! در واقع این مقاله راجب مسیر برنامه نویسی من توی این 8 ماه هستش. خب شاید عجیب باشه ولی راه صد ساله رو من یک شبه رفتم! من خرداد سال پیش شروع کردم به یاد گیری پایتون یعنی تقریبا یک سال و 3 ماه پیش و دوران برنامه نویسی رو شروع کردم. شایدم بخاطر کد زیر بوده که خوش شانسی آوردم! print(&#039;hello world&#039;)شاید جالب باشه براتون که در واقع توی سنت برنامه نویسی ، برنامه نویس هایی که اولین خط کدشون رو با hello world شروع میکنن خوش شانسی میارن ! خودم در طول این مدت برای خودم خیلی پروژه انجام میدادم حتی وب سایت شخصی ساختم و آدرسش رو آخر این مقاله میذارم.اولین پروژه غیر رسمی که بهم خورد ( یعنی نه قراردادی بود نه چیزی و اگر پول هم بهم نمیدادن دستم به هیچ جایی بند نبود.) مال یکی از دوستانم بود که توی آلمان برنامه نویس هست تخصص اش javascript هست و یک کد جنگو زده بود و از من میخاست که ادیتش کنم ! تجربه بدی نبود =)اما اولین و رسمی ترین تجربه ی من توی فروردین ماه اتفاق افتاد، که عضو یک تیمی شدم و اولین پروژه یک پروژه دانش بنیان بود! و از قضا به طرز عجیبی من برنامه نویس ارشد (Senior) پروژه شدم !!! خودم باورم نمیشد. ولی انگار واقعی بود ، تیم لید و مدیر برنامه نویسی این تشخیص رو داده بود و نظرش این بود که باید برنامه نویس ارشد باشم. الان که این رو دارم براتون مینویسم همین صبح جلسه اختتامیه پروژه رو با کارفرما و کارشناس ها داشتیم ما یه تیم 4 نفره بودیم توی Backend . سه نفر تخصصی Backend و یک نفر تیم لید. برای همینه که خودم و خیلی ها اعتقاد دارن راه صد ساله رو یک شبه رفتم ! تجربه چالش برانگیزی بود اما میتونم بگم برای خود من یه پله ی پرواز بود. مهارت های زیادی یاد گرفتم توی این پروژه و طی تحقیقات خودم که میتونم به موارد زیر اشاره کنمDocker , Redis , TDD (architect) , Linux                                           به نظر من که برای تقریبا 4 ماه فوق العاده بوده ! ولی یه حسی ته قلبم بهم میگی که این تازه شروع راهه و باید ادامه بدم شاید از این دریای عمیق 10 سانتی متر رو بشناسم ولی به خودم اعتماد دارم که یه روزی شاید چندین کیلومتر رو هم بشناسم. شاید بهترین تجربه ای که به دست آوردم موارد زیر بود: 1- هیچ وقت از یادگیری فرار نکن 2- ارور بهترین رفیق تو هست 3- جدای از مقامی که توی پروژه داری با همه ی هم تیمی هات رفیق شو ، پروژه تموم میشه اما رفیق های خوب میمونن 4- فقط به پروژه و کاری که میکنی بسنده نکن ، مدام روی خودت سرمایه گذاری کن و تحقیق کن 5- در این حین مواردی که حس میکنی خیلی پایه ای هستند و یا ارتباطی به پروژه ندارن رو تمرین کن تا دستت گرم بمونه 6- مهم نیست چقدر اوضاع مالیت خراب هست و آس و پاس هستی ! حتما بعد از موفقیت هات برای خودت هدیه بخر ، حتی قسطی!7- اگر تجربه ای دارید دوست دارم مورد هفتم رو تو بنویسی منم از تو یاد بگیرم. :) خیلی دلم میخاد الان به صورت جدی مقاله نوشتن رو ادامه بدم اما واقعا ایده ای ندارم چی میخام بنویسم و چی بهتره بنویسم! ولی میدونم که من عاشق دست به قلم شدنم.سایت شخصیم </description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Fri, 09 Aug 2024 03:44:08 +0330</pubDate>
            </item>
                    <item>
                <title>Postgresql آشنایی با</title>
                <link>https://virgool.io/@Niklaus/postgresql-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-caggmkiuiklf</link>
                <description>سلام ، امیدوارم حالتون خوب باشه امروز اومدیم که postgresql رو یکم مو شکافی کنیم تا بهتر باهاش آشنا بشیم و بگیم اصلا چی هست و چرا و چگونه و بقیه سوال هایی که به (چ) به ذهنت میرسه! اول از همه بگیم که دیتابیس ها به 2 دسته تقسیم میشند (به طور کلی ) 1- SQL:MySQLPostgreSQLOracleMSSQL2-NoSQL: MongodbRedisElasticsearchحالا فرقشون چی هست ؟ به طور کلی و خلاصه بخواهیم بگیم: دیتابیس های NOSQL برای پروژه خیلی بزرگ استفاده میشه (پروژه های بسیار حجیمی که استفاده از دیتابیس SQL ممکن نیست براش) مثال بخواهیم براش بزنیم توییتر و گوگل! دارن از MongoDb استفاده میکنن.از بحث خیلی خارج نشیم هدف ما PostgreSQL هست. اگر میخواهید بیشتر راجب فرق NOSQL و SQL بخونید توجه شمارو به عکس زیر جلب میکنم!تمامی توضیحات و فرق این دو دسته دیتابیس توی این عکس اومده و مطالعه اش میتونه خیلی مفید باشهخب بریم سر PostgreSQL:دیتابیس PostgreSQL همونطور هم که بالا گفتیم یک دیتابیس هست بر پایه ی زبان SQL که خیلی تطابق بالایی با زبان پایتون و فریمورک دجنگو داره (یکی از دلایلی که خیلی هم معروف شده همینه.)برای استفاده از PostgreSQL هم میتونیم از Pgadmin4 استفاده کنیم هم میتونیم از SQLshell استفاده کنیم که 100% shell رو ترجیح میدیم!پس برای اینکه PostgreSQL رو به خوبی بتونیم درک کنیم باید یکسری مقدمات از زبان SQL رو بتونیم لمس کنیم و یکسری مفاهیم رو درک کنیم که خیلی هم مهمن!1- SYNTAX:برای نوشتن دستورات SQL باید اون هارو CAPITAL یعنی با حروف بزرگ بنویسیم مثلاSELECT * FROM name_of_table;توی این دستور تمامی دستورات SQL بزرگ هستند به جز اسم اون table که ما معرفی کردیم2-Use (;)در پایان دستورات SQL لطفا سمی کالن فراموش نشود با تشکر ;3- Query bufferشاید جزو مهم ترین مباحث پایه ی SQL باشه بخوام به زبان خیلی ساده توضیح بدم Query buffer یه حافظه موقت هست که دستورات مارو در خودش نگه میداره تا ما سمی کالن بذاریم.در واقع قبل از ; با زدن ENTER دستورات ما اجرا نمیشن بلکه حتما باید ; بذاریم و بعد ENTER بزنیم به این نگه داشتن دستورات میگیم Query buffer
4- هر جا به بن بست خوردیم چیکار کنیم؟فقط کافیه که تایپ کنیم help !لیست کمک هایی که PostgreSQL میتونه به ما بکنه رو میبینم با زدن h\ دستورات SQL رو برامون بالا میارهبا زدن ?\ دستورات Postgresql و نکته مهم ما میتونیم به جای ; از g\ استفاده کنیم که ... خیلی پیشنهاد نمیشه.این پایه های زبان SQL که به دردمون میخورن فعلا! الان ساعت 04:54 صبحه و خیلی دلم میخواد چند تا مبحث دیگه هم باز کنم ولی دارم از خستگی بیهوش میشم ! پس بقیش باشه برای بخش دوم Postgresql</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Sat, 02 Dec 2023 04:56:50 +0330</pubDate>
            </item>
                    <item>
                <title>&quot;GET&quot; VS &quot;POST&quot;</title>
                <link>https://virgool.io/@Niklaus/get-vs-post-qrftcanbyjf1</link>
                <description>سلام، میدونم خیلی وقته نبودم. منم دلم براتون تنگ شده بود! این مدتی که نبودم کلی مطالب جدید یاد گرفتم مثل Django و postgresql و... که البته هنوزم دارم یاد میگیرم! امروز یه مقالک کوچیک داریم که فرق بین GET و POST چی و کجاها از این دو استفاده میکنیمخب برای درک بهتر این جمله رو باید خوب متوجه بشیم: اگر که ما METHOD رو تعریف نکنیم... به صورت پیشفرض بر روی GET تنظیم خواهد شد.خب پس یعنی GET بهتره ؟ نه! ربطی نداره اتفاقا امنیت POST بیشتره! بذارید موضوع رو براتون بازش کنمبیاید از داکیومنت خود Django کمک بگیریم ببینیم چی میگهAny request that could be used to change the state of the system - for example, a request that makes changes in the database - should use POST. GET should be used only for requests that do not affect the state of the system.GET would also be unsuitable for a password form, because the password would appear in the URL, and thus, also in browser history and server logs, all in plain text. Neither would it be suitable for large quantities of data, or for binary data, such as an image. A web application that uses GET requests for admin forms is a security risk: it can be easy for an attacker to mimic a form’s request to gain access to sensitive parts of the system. POST, coupled with other protections like Django’s CSRF protection offers more control over access.حالا به طور خلاصه بخوایم توضیح بدیم : 1- برای زمانی که قراره تغییری روی دیتابیس صورت بگیره باید از POST استفاده کرد فقط زمانی از GET استفاده میکنیم که تغییر بر کارکرد دیتابیس و یا سیستم نداشته باشه2- یادمون باشه که هر دو برای ارسال اطلاعات هستند فقط به شیوه های متفاوت3- امنیت POST بیشتره4- متد GET برای ارسال پسورد بسیار خطرناک هست چونکه اون رو در url نشون میده (با ذکر مثال توضیح میدم یعنی چی)5- متد POST محافظت CSRF انجام میده و برای پسورد ها و صفحه های مدیریتی خیلی مناسب تر هست.خب پس با توجه به این 5 مورد اصلا نباید از GET استفاده کرد؟ چرا باید استفاده کرد کجا ؟ مثال توی بخش Search ! این مثال رو نگاه کنیدقسمت search وب سایت Django از متد GET استفاده میکنه بنابراین کلید واژه ای که ما سرچ میکنیم رو داخل url میاره ! هیچ نیازیم نیست که بخوایم نگران امنیت یا... باشیم پس بهتره بگیم POST --&gt; وقتی که میخوایم اطلاعات مهمی رو ارسال کنیم و یا اطلاعاتی رو ارسال کنیم که قرار است تغییری در کارکرد سیستم و یا دیتابیس داشته باشه متد GET --&gt; برای نشون دادن اطلاعات به کاربر و اطلاعاتی که قرار است در اختیار کاربران قرار بگیرهخب ! تموم شد! مرسی که این مقاله رو خوندید نظرتونو حتما برام بنویسید.</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Tue, 28 Nov 2023 09:07:54 +0330</pubDate>
            </item>
                    <item>
                <title>HTTP Status Codes</title>
                <link>https://virgool.io/@Niklaus/http-status-codes-fo0o0tvji674</link>
                <description>یکی از مهم ترین کتابخوانه های python کتابخونه ی Request هست. که بعدا دوست دارم راجبش مفصل صحبت کنیم... اما برای استفاده از کتابخونه ی Request باید حتما Status code هارو بلد باشیم.(صرف نظر از برنامه نویسی برای SEO ، اطلاعات عمومی و خیلی چیزای دیگه مهمه!)بخوام خیلی خلاصه به زبان آدمیزاد و ساده بگم میشه این !Informational responses (100–199)Successful responses (200–299)Redirects (300–399)Client errors (400–499)Server errors (500–599)ترجمه؟ میشه این!پاسخ های اطلاع رسانی (199-100)پاسخ های موفقیت آمیز (299-200)پیام های انتقالی (399-300)خطای سمت استفاده کننده ((یعنی منو شما که سایت رو میبینیم)) (499-400)خطاهای سمت سرور(599-500)حالا بیایم دونه دونه به این Status Code ها بپردازیم: (خیلی خلاصه و مفید)سری کد های (100-199):کد 100 : Continueسرور درخواست اول رو دریافت کرده و متنظر درخواست بعدی هست.کد 101: Switching protocolسرور درخواست تغییر پروتکل رو از درخواست کننده پذیرفته.کد 102: Processingاین یعنی سرور درخواست رو دریافت کرده اما همچنان در حال پردازشه و حال نداره جواب بده!سری کد های (200-299):کد 200: OKاسمش روشه! OK ، یعنی درخواست با موفقیت انجام شدهکد 201: Createdدرخواست موفقیت آمیز بوده و سرور یک صفحه جدید ایجاد کردهکد 202: Acceptedدرخواست ارسالی از سمت سرور دریافت شده ولی هنوز عملیاتی روی درخواست صورت نگرفته.(سرور میفهمه ولی متوجه نمیشه. D:)کد 204: No Contentسرور درخواست رو با موفقیت پردازش کرده ولی هیچ محتوایی برگردانده نشدهسری کد های (399-300):کد 300: Multiple Choiceبرای درخواست ارسالی ، چند پاسخ مختلف وجود دارد که کاربر میتونه یکی از اون هارو انتخاب کنهکد 301: Moved Permanentlyآدرس درخواستی بطور کامل تغییر پیدا کرده و آدرس جدید در پاسخ ارسال میشهکد 302: Foundآدرس درخواستی به صورت موقت تغییر پیدا کرده.سری کد های (499-400):کد 400: Bad requestبدلیل اشتباه بودن اطلاعات ارسالی از سمت کلاینت ، سرور نمیتونه درخواست رو بفهمه ( اینجا که نه میفهمه نه متوجه میشه.)کد 401: Unauthorizedکاربر درخواست دسترسی به صفحه ای رو داره که اجازه دسترسی به اون رو نداره (برای مثال : یک کاربر اجازه دسترسی به پنل ادمین رو نداره)کد 402: Payment Requiredیعنی پول زور وده! یعنی نیاز به حساب کاربری خاصی (پولی) داری تا بتونی به این صفحه دسترسی پیدا بکنیکد 403: Forbiddenیعنی باز هم کاربر اجازه دسترسی به صفحه رو نداره! حالا فرقش با 401 چی هست؟ اینجاست: بذار اینجوری مثال بزنم ما یه سایت داریم که یک نویسنده داره و یک مدیر، نویسنده دسترسی محدودی به سایت داره برای مثال نمیتونه تغییری تو قالب سایت ایجاد کنه ولی مدیر میتونه اینکار رو انجام بده. حالا اگر نویسنده بخواد تغییری توی قالب اون سایت ایجاد کنه با کد 403 مواجه میشه.کد 404: Not Foundسرور قادر به پیدا کردن صفحه درخواست شده نمی‌باشد. یعنی اگر صفحه‌ای که درخواست کردیم در سرور وجود نداشته باشه، سرور کد 404 رو نمایش می‌ده.سری کد (599-500):کد 500: Internal server errorسرور با خطا مواجه شده و قادر به انجام درخواست نیست.کد 502: Bad Gatewayسرور مثل یه درگاه عمل میکنه و باید انتقال میداده به سرور بالاتر اما از سرور بالاتر Error دریافت کرده. (دانشجو ها موقع انتخاب واحد خیلی خوب با این کد آشنایی دارن)کد 503: Service unavailableسرور در حال حاضر در دسترس نیست. (نمیدونه چه بلایی سر ما اومده و ما اینجا داریم زحمت میکیشم!)کد 504: Gateway Timeoutدوباره سرور مثل یه درگاه عمل میکنه و باید انتقال میداده به سرور مادر(سرور بالاتر) ولی سرور مادر اصلا پاسخی بهش نداده.خب مرسی تا اینجا خوندی! Status codes خیلی بیشتر از اینا هستند اما بیشترین و رایج ترین کد هایی که ممکنه باهاشون مواجه بشیم اینان. </description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Fri, 06 Oct 2023 04:46:52 +0330</pubDate>
            </item>
                    <item>
                <title>شوخی با دوستات به سبک پایتونی!</title>
                <link>https://virgool.io/@Niklaus/%D8%B4%D9%88%D8%AE%DB%8C-%D8%A8%D8%A7-%D8%AF%D9%88%D8%B3%D8%AA%D8%A7%D8%AA-%D8%A8%D9%87-%D8%B3%D8%A8%DA%A9-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86%DB%8C-hptf9yr1gnxa</link>
                <description>با این شوخی حسابی میتونی رو مخ دوستت راه بری. (قراره یه شوخی بی خطر با موس کامپیوترش بکنیم!)بریم یه برنامه اعصاب خورد کن بسازیم:مواد مورد نیاز!1- کامپیوتر! 2- پایتون 3- پکیج pyautogui برای نصب پکیج pyautogui ، کافیه دکمه های win +R رو بزنید داخل  این کادر بنویسیم cmd تا اجرا بشهو با استفاده از دستور زیر pyautogui رو نصب می کنیم.حالا فقط کافیه کد زیر رو داخل Vscode بنویسم.(موقع تست این کد خودمم قربانیش شدم :))) )با این کد موس خود به خود به صورت Random شروع میکنه همینطور روی صفحه تکون خوردن و عملا هیچ اختیاری دیگه روی کنترل موس نداریم! یعنی اگر دوستتون این برنامه رو اجرا کنه قرار برای یه مدت بشینه و فقط به مانیتور خیره بشه! چون هیچ کاری نمیتونه بکنه.اگرم تنبلیمون میشه کد بزنیم! کد زیر رو Copy, Paste میکنیم !import pyautogui as pagimport randomimport timemousemoves = 0while mousemoves &lt;= 100:
    mouse_x = random.randint(900, 1500)
    mouse_y = random.randint(400, 800)    pag.moveTo(mouse_x, mouse_y, 0.2)    time.sleep(0.01)    mousemoves += 1فقط یه نکته : while mousemoves &lt;= 100:این عدد 100 تعداد تکون خوردن های موس هست. دیگه بسته به شوخیی که میخواید بکنید کم و زیادش کنید :)در آخر با پکیج pyinstaller به یک فایل اجرایی تبدیلش میکنیم ، کادوپیچش میکنیم و میدیمش به بهترین دوستمون! توی مقاله بعدی آموزش استفاده از pyinstaller رو مینویسمهمین! امیدوارم این آخرین باری نباشه که دوستت ازت کادو میگیره :))</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Sat, 23 Sep 2023 01:27:17 +0330</pubDate>
            </item>
                    <item>
                <title>دیکشنری ها در پایتون به ساده ترین زبان! بخش اول</title>
                <link>https://virgool.io/@Niklaus/%D8%AF%DB%8C%DA%A9%D8%B4%D9%86%D8%B1%DB%8C-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AA%D8%B1%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-noj4j7hsotoh</link>
                <description>اول از همه باید برسی کنیم ببینیم دیکشنری اصلا چیه؟دیکشنری به مجموعه ای key و value ها گفته میشه که برای نگه داری data(اطلاعات) از اون استفاده میشه.حالا فرقش با List , tuple , set و... چیه؟ فرقش key و value هست!بخوایم ساده بگیم برای کلیدی یک ارزش وجود داره ، یعنی چی؟ یعنی هر متغیری که (با variable اشتباه نگیرید.) ما به عنوان key اون رو مینویسیم یک value خاص مربوط به خودش رو داره.بیاید به این مثال بهتر متوجه بشیم:1- چجوری یک دیکشنری بسازیم:یادمون باشه نماد دیکشنری  {} هست که توی زبان انگلیسی بهش Curly Bracket گفته میشه تو فارسی بهش میگیم آکولاددیکشنری ما آمادست! الان توی این مثال عدد 1 که من نوشتم Key هست و &quot;this&quot; میشه Value ما.مزیت دیکشنری این هست که اطلاعات رو سازماندهی میکنه و یک نکته خیلی مهم دیگه2- یک key نمیتونه 2 تا value داشته باشه اما 1 value میتونه 2 تا key داشته باشه!از روی تصویر ببینیم فکر کنم خیلی توضحیش راحت تر باشه!این کد ماستاین خروجیمونکلمه this یک Value هست که ما هم به عدد 1 اون رو دادیم هم به عدد 4 پس یک Value میتونه به 2 یا حتی بیشتر Key داشته باشه.(Value ها یکم شیطونن! اما key ها خیلی وفادارن!) چرا؟ توی مثال پایین میبینیم:همونطور که میبینید داخل کد ما عدد 1 (key ما در واقع) 2 تا Value گرفته... حالا چی میشه؟!به اولی خیانت میکنه و میره با دومی! (شاید خیلیم وفادار نیستن!)در واقع Value تغییر پیدا میکنه و دیگه Value عدد 1 ، this نیست.3- یه نکته بدرد نخور:قبل از Python 3.7 دیشکنری ها Order نداشتن و مثل Set ها بودن اما بعد از اون آپدیت دیشکنری ها منظم شدن! (توی یک مقاله راجب Set ها توضیح میدم.)4- رعایت Clean Code:تقریبا از همه چیز مهم تره!سعی کنیم برای خوانا تر بودن دیشکنری رو به این صورت بنویسیم. خیالتون راحت روی خروجی هیچ تاثیری نمیذاره!خروجی5- به دست آوردن طول یک دیکشنری(Length)این که دیگه آب خوردنه ، از تابع ()len استفاده میکنیم.طول دیکشنری ما میشه 3. یعنی 3 تا Key, value داریم6- استفاده از Data types در دیکشنری:ما میتونیم از String , int , boolean , tuples , list در دیشکنری خودمون استفاده کنیم.توی این دیشکنری از تمامی Data types استفاده شده.این هم میشه خروجیمون7- به دست آوردن یک Value با استفاده از Key:فرض کنید که ما Key رو میدونیم اما نمی خوایم دنبال Value بگردیم یا صد تا دلیل دیگه! باید چیکار کنیم؟با استفاده از Key به راحتی میتونیم Value رو پیدا کنیم. چجوری ؟ اینجوری!print(اسم دیکشنری[key])همونطور که میبیند توی خروجی Value ها به ما داده شده.8- به دست آوردن Type:برای اینکه بفهمیم هر Variable ما از چه کلاسی هست (از چه Data type هست.) از تابع ()Type استفاده میکنیم.به نکته 6 برگردیم ، گفتیم که از تمامی Data types میشه استفاده کرد. ببینیم درست گفتیم یا نه!اگر به ترتیب بیایم پایین میبینم که درست گفتیم! خود متغیر ما (mmd_info) از کلاس dict یا دیکشنری هستو همینطور به ترتیب بیایم String , int , tuple , boolean , list هستند.9- برنامه نویسی مثل نوازندگی هست.امیدوارم که این مقاله کوتاه برات مفید بوده باشه نکته مهم این هست که برنامه نویسی مثل نوازندگی هست 1000 بار هم کلیپ ، آموزش ، مقاله و... بخونی نمیتونی مثل کسی که دو بار یک ویالون رو نواخته، بنوازی. حتما باید خودت دست به کار بشی و کد بزنی! هر سوالیم داشتی بپرس خوشحال میشم جواب بدمتوی پارت 2 یکم قراره بحث دیکشنری ها حرفه ای تر بشه.</description>
                <category>محمد حسن خدامی</category>
                <author>محمد حسن خدامی</author>
                <pubDate>Fri, 22 Sep 2023 06:26:06 +0330</pubDate>
            </item>
            </channel>
</rss>