<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های عبداله کشتکار</title>
        <link>https://virgool.io/feed/@abdollahkeshtkar</link>
        <description>مهندس نرم‌افزار | عاشق پایتون و ری‌اکت | https://akeshtkar.com/</description>
        <language>fa</language>
        <pubDate>2026-06-17 02:43:55</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/22040/avatar/nIy2vy.jpeg?height=120&amp;width=120</url>
            <title>عبداله کشتکار</title>
            <link>https://virgool.io/@abdollahkeshtkar</link>
        </image>

                    <item>
                <title>کدنویسی در کوئرا: داستان ارتقاء تجربه‌ی برنامه‌نویس (DX)</title>
                <link>https://virgool.io/@abdollahkeshtkar/%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%DA%A9%D9%88%D8%A6%D8%B1%D8%A7-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%D8%A7%D8%B1%D8%AA%D9%82%D8%A7%D8%A1-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-dx-h2ol0x5j7ffh</link>
                <description>source: envato.comدر این نوشته قصد دارم درمورد کارهای که از زمان حضورم (شهریور ۹۹) برای ارتقاء تجربه‌ی برنامه‌نویس انجام داده‌ایم، از تجاربی که موفق شدن، تجاربی که شکست خوردند و تجاربی که فوق‌العاده اثرگذار بودند بگم.قبل از شروع، یه دور بریم DX یا Developer Experience رو ببینیم چی چی هست.source: me :)مختصر مفید بگم، تجربه‌ی برنامه‌نویس همون تجربه‌ایه که برنامه‌نویس هنگام توسعه محصول بهش دست پیدا می‌کند. ممکن است مثبت باشد یا منفی. برای مثال فرض کنید یک شرکت برای توسعه بک‌اند خود از فریمورک outdated استفاده کند و فرض کنیم که این فریمورک الکی سخته، در این حالت برنامه‌نویس هنگام توسعه لذت نمی‌برد که هیچ، بلکه اذیت می‌شود و ممکن است از کار زده شود. خیلی شرکت‌ها روی UX تمرکز می‌کنند اما یادمان نرود که برنامه‌نویس هم یه‌جوری کاربر شرکته. (اسکی رفته از متن این پست زیبا)در کوئرا هم مشکلات DXی مثل سایر شرکت‌ها هست، در ادامه قراره یه سری کارهای که برای ارتقاء DX انجام دادیم را مرور می‌کنیم. امیدوارم مفید واقع شود.همچنین این تجارب حول محور فرانت‌اند و ابزارهای آن می‌باشند. درمورد معماری دوست دارم در یک نوشته‌ی جداگانه بنویسم. خیلی دوست داشتم وارد جزئیات بشم که چه مزایای و معایبی داشتن ولی سعی کردم هرکدوم با یک مثال یا خطره این مورد رو رفع کنم، حس کردم دیگه خیلی بلند شده.تست نویسیدو نوع تست داریم، تست دستی و تست اتوماتیک. تست دستی به این صورته که برنامه‌نویس به‌صورت دستی فیچری که پیاده‌سازی کرده رو تست می‌کند اما در تست اتوماتیک، یک کد برای اعتبارسنجی کد می‌نویسیم و هروقت تغییری ایجاد کردیم، با اجرای کد می‌توان فهمید که سیستم طبق خواسته‌های ما کار می‌کند یا خیر.یکی از کارهای که دوست داشتیم بکنیم این بود که از تست‌های دستی جلوگیری کنیم، به مرور که سیستم بزرگ‌تر می‌شود خیلی احتمال این به‌وجود دارد که ما اشتباه کنیم یا چیزی جا بندازیم.یاد یه خاطره افتادم، پارسال محمد یه سایدبار استیکی خفن درست کرده بود، کدش یه ذره پیچیده بود بالاخره مجبور بود case ها مختلفی هندل کند. به منم گفتن که برم فلان‌کارو بکنم حالا منه تازه‌وارد بله کداشو پاک کردم و با css اینو هندل کردم و با کلی ذوق کدهاشو پاک کردم و مرج‌ریکوست دادم. حدس بزنید چی شد؟ بلع گند زده بودم، برای حالت سایدبار دراز‌تر صفحه فکر نکرده بودم و با کلی WTF روبه‌رو شدم ??source: googleاگر تست بود همون لحظه می‌تونستم بفهمم که سوتی دادم. خلاصه دست به کار شدیم و شروع کردم تست نوشتن برای کوئراکالج منم مسئول نوشتن بودم.فکر کنم یه هفته درگیر بودم اما شکست خورد. بنظرم دلیلش این بود که خوب برنامه‌ریزی نکرده بودم و همچنین به اندازه کافی آماده نبودم.هنگام تست نوشتن کلی سوال برام پیش‌اومده بود که مبهم بودن و این اتفاق باعث شد که کد کثیف شود و قابل استفاده نباشد.اما یک سری درس یادگرفتم که از اونجایی که نمی‌خوام نوشته طولانی بشه پس نمی‌گم ??تایپ اسکریپتsource: googleاه تایپ‌اسکریپت، لذت‌بخش‌ترین زبانی که باهاش کار کرده‌ام (البته اگه می‌شه بهش گفت زبان، بالاخره این‌جور بحثا همیشه هستند) کلا خیلی خفنه.چرا تصمیم گرفتیم تایپ اسکریپت رو وارد جنگ کنیم؟ اگر کاربر کوئرا هستید احتمالا با بخش بانک سوالات آشنایی داشته باشید.آبان ۹۹ بود که صاحب محصولمون یک دیزاین جدید برای طراحی بانک‌سوالات به ما داد و خب به سلطان واگذار شد ?  دیزاین سابق با Django Template پیاده‌سازی شده بود منم با دیدن دیزاین جدید گفتم که خب خیلی سخته بخوام اونجا ترتیبش بدم. پس تصمیم گرفتم بیارمش رو React.از اونجایی که این محصول برای اولین بار قدمش داخل فولدر ری‌اکت گذاشت، تصمیم گرفتم بیام تایپ‌اسکریپت به پروژه اضافه کنم. فرصت خوبیه که هم یادبگیرم و هم یه ابزار قدرتمند به پروژه اضافه شود.خوبه اینجا اضافه کنم که اگه پروژتون خوب با TypeScript نوشته‌شده باشه، همین الان بصورت خودکار تست استاتیک نوشته‌اید و خیلی جلو افتاده‌اید. خلاصه شروع کردم پروژه رو با تایپ‌اسکریپت با کلی بدبختی زدم و تموم شد.اون موقع فکر SEO نکرده بودم، هرچند درمورد اینکه گوگل با جاوااسکریپت اوکیه و می‌ذاره اجرا شه خونده بودم اما خب دقت نکرده بودم که بعد لود جاوااسکریپت تازه من باید ریکوست می‌زدم داده‌ی رو می‌گرفتم.محمدجواد تیم لید تلنت هست گفت که سئو رو چکار کردی منم خب تازه‌وارد خام یه تست با Lighthouse گرفتم و اگه یادم باشه فکر کنم از ۱۰۰ نمره‌ی ۷ گرفتم ?درسته اون تسک هیچوقت مرج نشد ولی نیمه پرلیوان این بود که اولین بار تو عمرم از cherry pick استفاده کردم و کانفیگ تایپ اسکریپت رو منتقل کردم به برنچ دیگه و اون توسط حضرت مرج شد.اولین نویسنده‌ی تایپ‌اسکریپت در کوئرا هم محمد بود، این فرصتو از دست دادم ولی اوکیه باشه.اینکه به مرور تایپ‌اسکریپت چه مزایای داشت در یک نوشته دیگری می‌گم ولی فعلا به همینا اکتفا کنید.(درنهایت امسال تیم تلنت صفحه‌ی بانک‌سوالات با NextJS پیاده‌کرده‌اند.)فرمت‌کردن کد و قوانین نوشتن آنعاقبت استفاده نکردن از Code Formatter با قوانین مشخصهیچی به‌اندازه کدی که فرمت نشده منو دیونه نمی‌کنه ? قبل از شروع این فاز، فرمت شدن کدهامون توسط PyCharm هندل می‌شد. (بله درسته از VSCode استفاده نمی‌کردیم)وای اونایی که با Prettier کار کرده‌اند، نحوه فرمت شدن کد توسط PyCharm ببینن روانی می‌شین قول میدم.اگر شمام توی شرکتی کار می‌کنید احتمالا یک سری قوانین کدنویسی داشته باشید. از کجا چیو import کنم، از const let یا var کجا استفاده کنم، فاصله بین توابع و هزار کوفت دیگه.اون موقع ما این‌هارو نداشتیم و هرکی هرکاری که دلش می‌خواست انجام می‌داد. تا اینکه تصمیم گرفتیم ESLint رو به پروژه اضافه کنیم. حالا تصور کنید که یک پروژه‌ای که تابحال هیچ قانونی نداشته یهو قانون‌گذاری سنگین اتفاق بی‌افته.همزمان با این کار یک ابزاری برای مطمئن شدن از رعایت قوانین قبل از commit کردن خود استفاده کردیم. همه‌گی دعا می‌کردیم که نیازی نباشه درگیر فیچری بشیم که با React زده شده، چون مجبور بودیم به‌دلیل یک تغییر ساده، کل ایرادهای ESLint رو  اصلاح کنیم ?این کار خیلی اذیت‌کننده بود. اما به مرور باعث جلوگیری از باگ‌های متفاوتی می‌شد. حداقل به‌شخصه تجربه‌ام مثبت بوده و حتی بخاطر ارورهای که می‌داد مجبور می‌شدم درمورد یه سری مباحث مطالعه کنم و موارد جدیدی یادبگیرم. (در CRA بصورت پیش‌فرض این ابزارها فعال هستند)کند و سریع. Webpackنه،‌ Viteاگه از من بپرسند بزرگترین چالشی که در فرانت‌اند کوئرا داشتید چی بوده، بدون یه ذره شک می‌گفتم Webpack. (شریک‌های جرم شامل Babel و ts-loader می‌شود)source: googleقصد ندارم بحثو تخصصی کنم. پس فرض کنید شما درحال نوشتن یک وب‌سایت هستید و با هر تغییری که انجام می‌دهید، ۱۰ ثانیه (نسبت به سرعت سیستم شما ممکن است بیشتر هم شود) طول می‌کشد که تغییرات خود را ببینید تازه اگر سوتی داده باشید بالاخره بازم ۱۰ ثانیه طول می‌کشد که آن تغییرات را مشاهده کنید. همچنین زمان بالا اومدن برنامه شاید یک دقیقه باشد که ممکن است حس کنید یک دقیقه که چیزی نیست، ولی تا امتحان نکنید نمی‌فهمید. قول می‌دم.اگر برنامه‌نویس جونیوری مثل من باشید ممکن است این مورد خیلی شما را کند کند (کند کند کند کند ??) خیلی تلاش کردیم که اینو رفع کنیم.یه تسک تحقیقاتی درمورد Parcel آوردم ولی درنهایت حس کردم که نمی‌تونه تاثیر خاصی داشته باشد.بعد مدتی یه تسک تحقیقاتی برای SWC آوردم که ببینم می‌شه ازش استفاده کرد یا نه ولی بخاطر یک سری محدودیت موفق نشدم.رفتم سراغ ESBuild ولی اونم موفق نشد. تا اینکه بهترین جمعه‌ی فرانتیم رسید. تو خونه بودیم محمد گفت که عبداله این Vite رو دیدی؟ منم گفتم اره یارو سازنده‌ی Vue خیلی حرفش می‌زنه ولی زیاد توجه نکرده بودم بهش.خلاصه سایتشو باز کردم و یه نیم ساعتی داخلش چرخیدم و بلع. هرچی نیاز دارم رو داشت. به به بالاخره قراره نگران کندی نباشم و قراره عشق و حال کنم. ?یک ابزاری که خیلی خوب دوتا باندلر ESBuild و Rollup هندل می‌کند اونم با HMR (بدون رفرش، جنگی و سریع تغییرات خود را ببینید)دیگه نتونستم منتظر شنبه بمونم برم سرکار اونجا ردیفش کنم. همون جمعه یک سره از ۲ ظهری تا ۳ شب نشستم و جمعش کردم و به به. (این لابه‌لاها مجبور بودم یه سری چیزا رو deprecated کنم، بخاطر همین طول کشید وگرنه خودش فکر کنم یه ۶ ساعت وقت گرفت (بدلایل محدودیت‌های خاصی که داشتیم مجبور بودم کارهای اضافه‌ای بکنم))بعد ریفکتور و اضافه کردن Vite، بالاخره بالا اومد اما تغییر خاصی حس نکردم، سرعت بیلد گرفتن از چندین دقیقه به ۲۰ ثانیه رسید ولی سرعت مشاهده تغییرات، از ۱۰ ثانیه به ۱۰ ثانیه رسید :‌)))))))) شکست عشقی سنگین خوردم بالاخره بیلد گرفتن اوکیه ولی اصل مشکل رفع نشد. تسلیم نشدم ادامه دادم و بالاخره با کلی تلاش HMR رو راه انداختم و بالاخره ۲ شب سرعت مشاهده تغییرات از ۱۰ ثانیه به ۱ ثانیه رسید. به به جانمی جان. اون لحظه همه خواب بودن و از هیجان داشتم می‌لرزیدم، منتظر روز بعد بودم سریع برسه برم به تیم بگم که اره بالاخره بزرگترین مشکل فرانت Reactمون رفع شده و قراره درست حسابی حال کنیم.حس من اون شب (البته من که مجرد بدبختم ولی خب)درکنار تمامی اینا به موفقیت‌های دیگه‌ای رسیدیم مثل حجم باندلمون به اندازه‌ی خوبی پایین اومد (با پیاده‌سازی استراتژی خوب برای chunk splitting)source: googleو اینم از ایندر نهایت اینم بگم کارهای متفاوتی مثل اضافه کردن React Query، Redux Toolkit و کارهای که فعلا یادم نیست کرده‌ایم ولی خب جا نمی‌شد.به‌شخصی تجربه‌ی خیلی جذابی در این مسیر داشتم، لذتی که تو حل اینجوری مشکلات هست، تو حل هیچ مشکلی نیست بنظرم. اینکه ببینی هم‌تیمی‌هات بدون اذیت شدن بتونن محصول رو توسعه بدن و کد بزنن، اصلا اوف.پ.ن۱: سعی کردم مباحث فنی رو باز نکنم و وارد جزئیات نشم پس اگر سوالی داشتید حتما بپرسید و اگر تونستم جواب بدم حتما اینکارو می‌کنم.پ.ن۲: از همین تربیون به همه‌ی بچه‌های تیم فنی کالج مصطفی، محمد، پیمان، حامد و همه‌ی بچه‌های تلنت مرسی می‌گم.پ.ن۳: احتمالا دقت کرده باشید که اول خیلی خام بودم و به مرور تجربه‌های بیشتری کسب کرده‌ام که باعث شدند به نتیجه‌های خوبی برسم. پس اگر شما تابحال تجربه‌ی کاری نداشتید، بدونید که همه اشتباه می‌کنند و همه‌ی ما یه روزی تنها چاپ کردن Hello World! بلد بودیم. مهم اینه که از این اشتباهات یادبگیریم و پیشرفت کنیم.فرق برنامه‌نویس جونیور و سنیوراین نوشته توسط من عبداله کشتکار یک توسعه‌دهنده فول‌استک در کوئرا نوشته‌شده است و امیدوارم که خوشتون اومده باشه.</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Sun, 16 Jan 2022 00:35:41 +0330</pubDate>
            </item>
                    <item>
                <title>اندر احوالات یک مضطرب</title>
                <link>https://virgool.io/@abdollahkeshtkar/%D8%A7%D9%86%D8%AF%D8%B1-%D8%A7%D8%AD%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%DB%8C%DA%A9-%D9%85%D8%B6%D8%B7%D8%B1%D8%A8-qc4fvicygrx6</link>
                <description>یکی بود یکی نبود، غیر از خدا هیچ‌کس نبود.تصور کنید استرس کل زندگیتان بگیرد. قصد کلاس رفتن دارید = استرس می‌گیرید. درحال رفتن = استرس. رسیدن = استرس. حضور و غیاب = استرس. قصد سوال پرسیدن دارید = استرس. استاد از شما سوال می‌پرسد = استرس می‌گیرید.سلام، من عبداله هستم یک برنامه‌نویس مضطرب. در این نوشته قصد دارم درمورد اندر احوالات من به‌عنوان یک آدم مضطرب بگم.source: lifesupportscounselling.com.auغذا گرفتنآدم روزانه ممکنه چندین وعده غذا بخورد. منم همینطور.سعید هم خونه‌ایم و پایه غذا سفارش‌دادن یا آشپزی کردنه. هروقت قصد خرید از اسنپ‌فود داشتیم به اون می‌گم سفارش بده تا سفارش برسه خودش تحویل بگیره چرا که هر لحظه گوشیو چک می‌کنم کی پیک میرسه، اگه رسید نکنه زنگ بزنه بپرسه که خونه کجاست منم آدرسو نشناسم یا قاطی کنم. مبادا طرف رفتارش باهام اوکی نباشه بهم بربخوره و تمام روز فکر کنم که چرا این رفتارو داشت. (AKA overthinker)خرید آنلاینهمین چهارشنبه (۲۴ آذر ۱۴۰۰) قصد خرید آنلاین یه کفشی داشتم و خیلی دوست داشتم که سریع برسد. دیدم که یکی از گزینه‌هاشون تحویل پیکه اونم توی ۲ ۳ ساعت. حالا ۱۰ شب بود نگران بودم که نکنه طرف الان بیاره ?مود شما:نوشتم که لطفا زنگ بزنید قبل ارسال که مطمئن باشیم که خونه‌ام، پنجشنبه رسید، ساعت ۱۷ یه گفت‌وگو آنلاین داشتم با انجمن علمی یکی از دانشگاه‌ها. پیک ساعت ۱۲ راه افتاد منم هی فکر می‌کردم گفت‌وگو شروع شه کی سفارشو از پیک تحویل می‌گیره. هم‌خونه‌ایام نیستن. برای آروم کردن خودم Linkin Park گوش می‌دادم که خداروشکر بعد از دوساعت پیک رسید ?کلاس زبانروزای فرد کلاس زبان دارم.این روزا به این صورت می‌گذرن که تا ۱۷ شرکتم بعد سریع اسنپ می‌گیریم می‌رم کلاس زبان، یا این چیزیه که احتمالا فکر کردید.برای من اینجوریه که از شب قبلش ذهنم درگیر می‌شه که فردا کلاس دارم. نکنه تمرینی حل نکردم. نکنه اون پسری که اون روز یه نگاهی بهم انداخت ناراحته و حالا دوباره می‌بینمش. اون دختری که وقتی داشت به پشت نگاه می‌کرد منم توی زاویه دیدش بودم شاید ازم خوشش نیاد.تا اینجا درمورد شب قبلش گفتم، حالا خود اون روزشو بگم.به این صورت که قبل از رسیدن به محل کار یه ساعت با خودم جنگم که یه ساعت زودتر بقیه دارم از اونجا لفت میدم و باید باهاشون خدافظی کنم.سپس تا دوساعت قبل راه افتادن که ساعت ۱۷ باید راه‌بیفتم. همینجوری بی هیچ دلیلی دل‌درد می‌گیرم، خوابم میاد و اینقد یهو خستگیم بالا می‌ره که روی مبله می‌رم یه نیم ساعت می‌خوابم.هرچی به این ساعت ۱۷ نزدیکتر می‌شم حالم بدتر می‌شه. حالا استرس گرفتن اسنپ به کل این‌ها اضافه می‌شود. یارو برسد. یا اگه طولش بده. یا تو ترافیک گیر کنیم و الا آخر.بازی مافیاجمعه (۱۹ آذر ۱۴۰۰) تولد محمد داشتیم که یکی دیگر از هم‌خونه‌ایامه، بچه‌ها اومده بودن مافیا بازی کنیم.بازی مافیا که می‌رسه واویلا، نابود می‌شم چرا که از بدشانسیم گادفاذر می‌شم ? و بله این دفعه‌ام گادفاذر اونم تو جمع ناشناس.استرسم به درجه‌ای رسیده که تیر تو هوا می‌زدم. نوبتم قبل از اینکه برسه = استرس. هدف یکی قرار بگیرم = استرس.در نهایت با کلی خرشانسی و شناخت دوستان ازم (اینکه استرسیم همیشه و چرت و پرت زیاد می‌گم) بردم (مرسی محمد که شک نکردی) ?? حس محمد هنگام خوندن این نوشتهرویداد گفت‌وگوفکر کنم حدود چهار هفته پیش امیرحسین (مدیرمحصول و دوستم) گفت که به یکی معرفیت کردم که بری رویدادی زر بزنی. منم باشه (بدنم اون لحظه: دل درد. مغزم: دستشوی کوو؟؟؟)بعد گفت که آیدیت دادم به این بنده خدا که باهات در ارتباط باشه. حالا یه هفته هر روز توقع پیام گرفتن از یک ناشناس داشتم که نمی‌دونستم اصلا جریان چیه.ایشونم بالاخره پیام داد. حدس بزنید چی‌شد. سه هفته باید بیشتر استرس بکشم چرا که گفت سه دیگه چن روز قبل پنج‌شنبه سوالارو میفرستم.حالا روز موعود رسید. این روز با اون جریان خرید کفشه تو یه روزه.کفشم که رسید استرس اون خوابید حالا استرس این ++++ شد. یهو سردم شد. داشتم یخ می‌زدم. شوفاژ روشنه ولی کافی نیست. راه‌حل نهایی؟ کاپشن کلفتم که امسال هوا اونقد سرد نشده بود که نیازم بشه. بالاخره به دادم رسید و دمای بدنم نرمال شد. آیا کافی بود؟ بد نبود ولی کافیم نبود. زیارت روانشناساین جریانات از بچگی بوده فکر کنم. تا اینکه یه دوماه پیش نوبت گرفتم که بالاخره برم پیش ناجیم. اونی که فکر می‌کردم قراره بالاخره مشکلاتم رفع کنه. روانشناس.گوگلو باز کردم، روانشناس بالینی تهران، اولین سایتو باز کردم و توی واتساپ پیام دادم که اره نوبت می‌خوام اونام گفتن که دوشنبه شب نوبت هست بیا منم باشه بای.روز موعود رسید، بالاخره قراره شفا پیدا کنم (از روزی که نوبتو گرفتم تا روز موعود دهن همه رو سرویس کردم که دارم می‌رم روانشناس، ذوق مرگم)حس من:حالا ساعت ۵.۲۰ اینا رسید و نوبت حرکت کردن به طرف کلینیک. و بلع. توی هوای گرفتم. سردی تمام بدنمو می‌گیره. توی اتوبوس هم مسیر جدیدی بود هی نشانو چک می‌کردم که نکنه رد شم از ایستگاهی که باید برم. بالاخره بعد کلی کلنجار رفتن با خود از یکی پرسیدم که ایستگاه ایکس کجاست و گفت همینی که داره میاد.منم پیاده شدم. و حالا از اونجا تا کلینیک چندین چالش داشتم. محله‌ی جدید + زمان + استرس اولین تجربه.از کل این‌ها بگذریم رفتم توی اتاق پیش روانشناس. گفت خب، زر بزن.منم شروع کردم غر زدن که اره استرسیم و اینا سردم می‌شه مثل این جریان و اون جریان.آخر گفت که مدیتیشن کن. قبل از خواب یه دوش بگیر بعد برو یه جای که راحت هستی، مبلی چیزی. و از نوک انگشت پاهات شروع کن عضله‌هاتو منقبض کن ۳ ثانیه نگه دار و بیا بالا ذره ذره تا برسی به مخت. حالا تصور کن که روی ابر‌های و کل افکار منفی و اینا رو مچاله کن و بنداز تو زباله و پرتش کن دور. حس من:منم گفتم باشه بای.اومدم خونه. شبش دوش و تایم خواب رسید. لم دادم رو زمین (aka محل خوابم) و شروع کردم منقبض کردن نوک انگشت‌های پاهام. ماهیچه‌های پاهام. برای اینکه منکراتی نشه مستقیم می‌پرم قسمت تصور کردن.شما بعد خوندن متنحالا شروع کردم تصور کردن که روی ابرهام. افکارم مچاله کردن و انداختن تو زباله. که یهو به خودم دیدم که چقد اسکلم و مسخره‌اس و حدس بزنید چی شد، هرچی گفتو فراموش کردم ??این بود خلاصه زندگی روزانه من به‌عنوان یک مضطرب. امیدوارم خوشتون اومده باشه. اگه نظری دارید حتما بنویسید ممنونم که تا اینجا خوندید با تشکر از شما و دوستان گرامی.همچنین مرسی از توییتر بابت میم‌ها.</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Fri, 17 Dec 2021 02:28:58 +0330</pubDate>
            </item>
                    <item>
                <title>مهاجرت به تهران: از عسلویه!</title>
                <link>https://virgool.io/@abdollahkeshtkar/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%A8%D9%87-%D8%AA%D9%87%D8%B1%D8%A7%D9%86-%D8%A7%D8%B2-%D8%B9%D8%B3%D9%84%D9%88%DB%8C%D9%87-qwappxta4ofs</link>
                <description>اسفند ماه ۱۳۹۸ - من: مامان، شش ماه دیگه می‌خوام برم تهران دوسال زندگی کنم!هروقت از بغل تهران رد می‌شدم، دوست داشتم برم داخلش ببینم چه خبره ولی سه سال از بغلش به طرف مقصد رد شدم!میدون آزادیاما بالاخره روزهای موعود رسیدندبعد از اتمام امتحانات ترم آخریم، دومین شنبه، بلیط رو گرفتم و غافل از اینکه دقیقا قراره با چی روبه‌رو بشم، سوار هواپیما شدم و رفتم.در این نوشته قصد دارم درمورد رفتن به تهران، چالش‌هایی که خوردم، هزینه‌ها، زندگی خوابگاهی و تفریح حرف بزنم.اگه شمام مثل من قبل رفتن به تهران، همیشه ذوقش داشتید، شاید این نوشته به دردتون بخوره شایدم نه، نمیدونم ?‍♀️بریم که شروع کنیمعسلویهاحتمالا همتون حداقل یه بار اسم عسلویه شنیدید، پایتخت اقتصادی ایران، جایی که خیلی‌ها پولدار می‌شن، یه سری دیگه بیکار و بیمار!ساحل نایبند - عسلویههمه ازم می‌پرسیدن که چرا می‌خواهی اینجا رو ول کنی بری تهران، کار هست درآمدش زیاده، خانواده اینجاست همه چی داری ماشین خونه غذا وووووولی هیچکی نمیدونه که مهمترین چیز رو ندارم، اونم خوشحالی!اون موقع دورکار بودم برای یه شرکت اصفهانی کار می‌کردم ولی دوست داشتم برم تهران و با یه سری شرکت خاص کار کنم و هرچی بجز آنها، راضی نبودم.جدا از این که من آدمیم که دوست نداره محیطش تکراری باشه و بخاطر همین در ۵ سال اخیر هر دوسال توی یک استان متفاوت زندگی کردم و کاملا راضی بودم از زندگی.پس این شد که پروژه‌ام با شرکت قبلیم تموم شد و همکاری هم قطع کردم و آماده رفتن بودم.پس‌انداز قبل رفتنپارک ملت - تهراناون موقع ۲۰ سالم بود، همه احتمالا یادتونه دیگه از اسفند ۹۸ تا مرداد ۹۹ بورس رو اوجش بود، منم از شانسم از قبل‌تر این تو بورس بودم و فقط عرضه‌اولیه می‌خریدم :‌))))) تا اسفند ۹۸ هزینه اینترنتم در‌می‌اومد ولی بعدش کلا از نظر مخارج از خانواده کاملا مستقل شدم.در کنار اینا هم داشتم فول‌تایم هم کنارش کار می‌کردم هرچند حقوقم اینقد کم بود که اگه بگم همینجا لفت می‌دید :)برای رفتن به تهران برنامه‌ام این بود که بیام بدترین حالت یعنی از تیر تا دی‌ماه بیکار بمونم، خرجمم پول خوابگاهم که ماهی ۴۵۰ هزار + خورد و خوراکم و تفریحات ۱ میلیون درنظر گرفتم پس خرج ۶ ماه یعنی ۹ میلیون درمیاد اگه رندش کنیم حالا بالا پایین بالاخره اتفاقات غیر منتظره، حداقل ۱۵ میلیون درنظر گرفتم که باید داشته باشم! با خوش‌شانسی خیلی زیاد تونستم تا تیر ۹۹ تقریبا ۲۱ میلیون پس‌انداز داشته باشم (از بورس و پروژه های ریز برنامه نویسی که از اینور اونور گیرم می‌اومد)تهران: زندگی خوابگاهی، مجردی، غذا و آدم‌هااستادیوم آزادی از بالا مالاهاخود‌ خوابگاهیه ماه قبل اینکه برم، تو اینترنت دنبال خوابگاه می‌گشتم که یکی پیدا کردم و درکل بین بقیه، تشخیص دادم که خوب باشه هزینشم اون موقع خوب بود اتاق ۴ نفره ماهی ۴۵۰ بود (با ودیعه ۴۰۰ هزاری)، زنگشون زدم که اره یه ماه دیگه قصد دارم بیام تهران و اینکه قبول می‌کنین جا هست و این حرفا و اونام گفتن اره بیا منم گفتم باشه بایغذا و گرسنگیخوابگاه‌های خودگردان برعکس خوابگاه‌های دانشجویی دیگه غذا اینا نمی‌دن بهت پس مجبوری بری تو کار آشپزی و این حرفا دیگه منم رفتم تو کار آشپزی‌ هرچند این خوابگاه اوایلش یکی داخلش یه سوپری داشت که شام درست می‌کرد ولی غذاش، خدا نصیب گرگ بیابون هم نکنه *اشک‌هاشو پاک می‌کند*خلاصه دیدم غذاشون مفت نمی‌ارزه که هیچ، بالاخره پس‌اندازم جوریه که باید کمتر بخورم یا خودم آشپزی کنم.دست به کار شدم که ماکارونی درست کنم، براساس زندگی قبلی تو بقیه خوابگاه ها، یه چیزای بلد بودم اینکه چی کجا باید بره ولی دقیق بلد نبودم، دل به دریا زدم و خریدها رو انجام دادم و بلهاینم از این:درسته نمکش خیلی کم بود، درسته خیلی نابود بود، ولی بالاخره اولین ماکارونیم بود بدون کمک هیچکی ?راستی کوکوسیب‌زمینیمم ببینید ?آدم‌هاهمه می‌دونیم که خوابگاه برید، راحت روزانه با ۱۰ آدم حداقل برخورد می‌کنیدآدم موفق، تلاش‌کار، باهوش،‌ دروغ‌گو،‌ دزد، ناامید و الی‌آخر.خودم بشخصه چون دانشجو بودم و ۴ سال خوابگاهی بودم، خیلی راحت بودم و کاملا عادت کردم با هرجور آدم تعامل کنم و راحت با طرف کنار بیام، حتی اگه آدم دروغ‌گویی یا ناامید بود!نکته‌مهمی که هست اینه که شما بیشتر این اهداف قدرت حرکت به شما بدن، اون محیطی که داخلش هستید تاثیر بیشتری می‌ذاره، اگه اون آدمی که تو اتاقتون یک آدم تاریخ دوستی باشه، شما تو اون مدت، با تاریخ آشنا می‌شید و باقی داستان. خرج و مخارج در پایتختموزه دفاع مقدس - خیلی باحاله کلی تانک مانک دارهبیایین اول دید کلی بدم بعد به دو دسته اولی خرج خوابگاهی دومی خرج خونه (طبق تجارب خودم)دید کلیواقعا تهران قیمت بیشتر چیزها بیشتر بقیه جاهاس، خودم بالاخره عسلویه هم میرفتم دیگه سرمیزدم به خانواده، بعد خرج هارو میدیدم، قیمت مرغ، میوه، حتی نون فرق دارن. پس یه وقت نیایید اینجا سورپرایز بشین که چقد گرونه و فلان ?خوابگاهقیمت خود خوابگاه‌ها طبق چیزایی که خودم دیدم، از ۵۰۰ شروع میشه میره بالا ولی میانگین فکر کنم ۸۰۰ اینا باشه واس اتاق ۴ نفره واس هر نفر، بالا شهر که ۱.۲ میلیونه طبق آخرین دانسته‌هام.برای خورد و خوراک، بیشتر آدم‌های که آشپزی بلدن اینجورین که شام که درست می‌کنن، برای یه وعده اضافه هم درست میکنن که فردا ببرن سرکار،‌خودمم یک سوم مواقع این‌کارو می‌کنم ولی چون آشپزی بلد نیستم، دیگه خودتون حدس بزنین چه کوفتی کوفت می‌کنم?‍♀️شاید بگین خب غذا از بیرون بگیر، اره اینم میشه ولی هروعده میانگین ۴۰ هزاره بعد روزی دو وعده، ماهی ۲.۴ه فقط غذا تازه، اگه مثل من پیش‌برید، میشه تقریبا ۱.۲ میلیون اینا میفته که معقوله!از غذا بیاییم بیرون، خرج اینترنت بگم، من خودم اینترنت خیلی واسم مهمه و آدم پرمصرفیم، پلنی که خودم میرم اینترنت یه سال همراه اول ۷۰ گیگه و قیمتشم ۱۷۰ هزاره و سه ماه واسم میمونه. یه بسته نامحدود ۱ تا ۱۱ ماهانه که ۲۲ هزاره هم میگیرم بغلش که مصرفم تقسیم شه. (اینم بگم که سرعت دانلود تو جایی که هستم ۴ مگابایته تقریبا) خرج تفریحات، اوه اوه دهن سرویسی اصلی اینجاست که وارد اعدادش نمی‌شم ?‍♀️خونههنوز به اون مرحله نرسیدم پس فعلا نو کامنت ???سایر عکس‌های پوینت‌لسکتابخونه مرکزی علمی تحقیقاتی - میلادو می‌تونین ببینین
پارک آب و آتش - بسی جای زیباییهپل طبیعت - بسی عاشق اینجامپ‌.ن ۱: این خلاصه‌ای از تجارب من بود، کلی اتفاقات دیگه‌ای افتاد، شاد و تلخ ولی خب اینجا جا نمی‌شن.پ.ن ۲: تهران خبریه؟ برای من اره خبری بود، با کلی آدم مشتی آشنا شدم، (همچنین آدم گوهی :)) کلی پیشرفت داشتم و کلی زندگی کردم، این بیشتر برمیگرده به دیدم نسبت به زندگیه چون ممکنه یکی دیگه اینقد اوکی نباشه یا ممکنه خیلی بهتر من بترکونه و عشق و صفا.پ.ن ۳: عکسا همشون خودم گرفتم ?، دوست داشتم عکسای بیشتری بزارم که حسو منتقل کنم ولی فعلا همینا بسهپ.ن ۴: من آدمیم که وقتی می‌نویسم دیگه دوباره بررسی نمیکنم که مطمئن بشم اشتباه تایپی داشته باشم چون با ♥ نوشتم، پس اگه اشتباهی دیدین به بزرگواری خودتون ببخشیدامیدوارم خوشتون اومده باشه، مرسی که تا اینجای کار خوندنین،‌ موفق باشید!به راستی اگه از این خوشتون اومد می‌تونین سایر نوشته هامم بخونین https://virgool.io/@abdollahkeshtkar/%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%DA%AF%D8%B1%D9%81%D8%AA%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-apfewogkggtp  https://virgool.io/@abdollahkeshtkar/%DB%8C%DA%A9-%D8%B3%D8%A7%D9%84-%DA%AF%D8%B0%D8%B4%D8%AA-%D8%A7%D8%B2-%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA-yqbqscq446fc  https://virgool.io/@abdollahkeshtkar/%D8%B2%D9%86%D8%AF%DA%AF%DB%8C-%D8%AF%D8%B1-%DA%A9%D9%88%D8%A6%D8%B1%D8%A7-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-yq7ebrayom67 </description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Mon, 02 Aug 2021 22:35:37 +0430</pubDate>
            </item>
                    <item>
                <title>یک سال گذشت از تصمیم پیشرفت</title>
                <link>https://virgool.io/@abdollahkeshtkar/%DB%8C%DA%A9-%D8%B3%D8%A7%D9%84-%DA%AF%D8%B0%D8%B4%D8%AA-%D8%A7%D8%B2-%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA-yqbqscq446fc</link>
                <description>من برنامه نویس خوبی نیستم٬ باید مهارت‌هام و تسلطم بالاتر ببرم.نتیجه گیری بود که این یک سال پیش در همچین روزهایی بهش رسیدم، در این یه سال زندگی پرچالش و هیجانی داشتم. بریم ببینیم چکار کردم، آیا نتایج اوکین و از همه مهم‌تر، آیا راضیم؟Photo by James Harrison on Unsplashپارسال همین روزها بود که همزمان امتحانات ترم آخریم، مصاحبه کافه‌بازار و کوئرا بودن. همه چی داشت خوب پیش می‌رفت تا اینکه در فاصله‌ی یک هفته دوتا ایمیل با متن رد شدن گرفتم. غرور چیزیه که نبودش بده ولی زیادشم خوب نیست، خیلی ناراحت و شکسته شدم ?.قبلش خوبه که پست‌های زیر را مطالعه کنید که ببینید چی شد که ایطور شد :) https://virgool.io/@abdollahkeshtkar/%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%DA%AF%D8%B1%D9%81%D8%AA%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-apfewogkggtp  https://virgool.io/@abdollahkeshtkar/%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-y2i3abcrkiue بریم ببینم چقد رو حرف‌هام موندم، چکار کردم و نتایج چی بودناولین تصمیم: مطالعه کتاب‌های تخصصیPhoto by Mikołaj on Unsplash   برنامه‌ام این بود که مهارت‌های جنرالم و پایتونم ارتقا بدم، دقت کنید که اون موقع ادعای پایتونیم می‌شد و درواقع فرانتم اونقدارم خوب نبود پس توی رودمپم نداشتمش.همزمان سه تا کتاب Clean Code, Fluent Python و The Algorithms Design Manual شروع میکنمجوگیری خیلی سمه منم آدم فوق‌العاده جوگیریم :) احتمالا حدس بزنید چی شد، بله دقیقا از این سه تا فقط یکی رو مطالعه کردم، اونم Fluent Python بود.چندین فصلش مطالعه کردم ولی پیشرفتی که با خوندن این چندین فصل خیلی زیاد بود و جهشی بود.اتفاقی که اقتاد این بود که یک سری محدودیت هایی داشتم تو فانکشنال طور نوشتن تو پایتون که با خوندن فصل مربوطه رفع شد و همچنین خلاقیتم تو نوشتن کلاس‌ها فوق‌العاده زیاد شد.کتاب‌های که به مرور مطالعه کردم شامل Python Tricks، How linux works، Refactoring UI و You Dont know js بودن که کامل نخوندم فقط درحدی که جوگیریم رفع بشن که بازم بدردبخور واقع شدن.دومین تصمیم: به‌چالش کشیدن خودPhoto by Jukan Tateisi on Unsplashکدکاپ ۴سه‌سال پیش مسابقات کدکاپ ۴، تقریبا اولین مسابقه‌ای بود که شرکت کردم، اتفاقی که افتاد اینه که گند زدم و یه سوالم نتونستم حل کنم و طبیعی بودپایتون - کوئرا | خرداد ۹۹بعد کلی گند زدن تو این مدت، این اولین مسابقه‌ای بود که تمام جدی بودمرتبه‌ی ۴۵مخیلی ذوق کرده بودم، خیلی بیشتر اون چیزی که فکر می‌کنید.چون تونستم خود قبلیم با اختلاف رد کنم و بخاطر این بود که اعتماد به نفسم بالا رفت. (درسته رتبه خاصی نیست ولی برای من خاص بود)چطور تونستم پیشرفت کنم؟ خب مدت طولانیه و یه جوری طبیعیه ولی بیشترین تاثیر می‌شه گفت از شرکتی که داخلش کار کرده بودم پروژه پایتون زده بودم دو سه تا و اینکه خودمم پاره وقت فری‌لنسر هم بودم.اون موقع تسلطم زیاد نبود مثل الان.مسابقه اسنپ‌فود FE / React | شهریور ۹۹اولین مسابقه‌ی ری‌اکتی من بود، قبلا فقط پایتون جنگوها رو شرکت می‌کردم اما تصمیم گرفتم شانسم برای این مسابقه امتحان کنم، و ببینم کد تخفیف ۲۰۰ هزار تومنی اسنپ‌فود می‌برم یا نه :))))))))))آیا بردم؟رتبه‌ی ۸جواب: نفر ۱۰م تخفیف گیرش اومد ولی من نه ??اینجا خیلی به خودم افتخار کردم، به عنوان اولین مسابقه عملکرد خیلی خوبی بود.چطور تونستم این پیشرفت رو داشته باشم؟ بنظرم دوتا دلیل داشت یکی اینکه همیشه قبل مسابقات میرم داخل سوالات کوئرا و سوالات قدیمی رو حل می‌کنم و خیلی تاثیر میزاره، هم آشنا شدن با سیستم داوری و همچنین آشنا شدن با مشکلات احتمالی.مسابقات کدکاپ ۵ | پایتون/جنگو | آذر ۹۹میشه گفت بین پراسترس‌ترین رویدادهای بود که بدجور منتظرش بودم، اینجا بود که واقعا می‌تونستم ببینم چقد مالم، آیا همون چیزی که هستم که فکر می‌کنم؟توقعم از پایتون/جنگو بین ۶ الی ۱۰ بود، به این دلیل که تسلط واقعا زیادی نداشتم و خب اتفاقی که افتاد این بود:رتبه‌ی ۴فوق‌العاده بود، بهتر چیزی که تصور داشتم، یکی از دلایل خوبی که تونستم این رتبه رو بگیرم این بود که شاغل بودم و شبانه‌روزی با پایتون و جنگو سروکار داشتم.همچنین اون کتابی که گفته بودم، Fluent Python خیلی تاثیر گذار بود.ولی هیچی مثل خوندن کد بقیه و کسب تجربه نیست واقعا، همچنین خوندن سورس کد جنگو، کاملا می‌فهمین داخلش چی می‌گذره.مسابقات کدکاپ ۵ | Front-End/React | آذر ۹۹مسابقه‌ای که بدجور منتظرش بودم، خیالم راحت بود که راحت ۲تای اول می‌شم.یادتونه گفتم که یه مدت اعتقادم این بود که تخصصم فقط پایتون بود؟ این روز مسابقه اعتقادم این بود که ته ری‌اکتم دیگه.مسابقه شروع شد، اولین نفری بودم که سوال اولیو حل کرد، سوال دومی شروع شد بازم اولین نفر تموم کردم سومی همینطور بود تا اینکه جدول رو رفرش کردم دیدم سوال دوم و سوم که نمره گرفته بودم، صفر داده بود :))))بدجور استرس داشتم، تختم می‌لرزید، پیام پشتیبانی دادم معلوم شد که مشکل داوری بود و باید دوباره ارسال می‌کردم که درست بشه و همین کارو کردم و درست شد، ولی استرسم بدجور رفته بود بالا.خلاصه تا سوال چهارم حل کردم اول بودم، تا رسیدم سوال آخریقاتل :‌))))نتونستم حلش کنم و دلیلش چندماه بعد فهمیدم، به این دلیل بود که داخلش یک تیکه بود که نوشته don&#x27;t touch this piece of code و منم و خیلیا دیگه گوش کردیم، و نتونستیم حلش کنیم، ولی اونی که اون تیکه رو تغییر داد، رتبه‌های خفنو آورد.رتبه‌ی ۷مبله رتبه‌ی ۷م، خیلی بد، من داغون، ناراحت، مشت میزدم به دیوار و تخت، ناراحتی شدید و شکست روحی :))))))اینقد مسابقه واسم مهم بود، تصور کنید که کاملا مطمئنید که بین ۲تای اولین ولی ۷م بشین.خیلی حس مزخرفیه اینقدر بود که همون لحظه پیام به مدیر فنیم دادم که حرف بزنیم اینکه چرا گند زدم و چرا عملکردم خوب نبود :)))))))))))))))))و این بود پایان مسابقات برای من، درنهایت ۸م شدم بین ۵هزار شرکت‌کننده، به نظر خیلیا خیلی خوبه ولی برای من، عملکرد بدی بود بنظرم و راضی نبودم.آخرین مسابقه | Quera Connect - Front-End/React | اسفند ۹۹برای این مسابقه دیگه استرس زیادی نداشتم، زیاد برام مهم نبود، چون دیگه به سطحی که می‌خواستم رسیدم، اون سطحی که دیگه نیازی نیست به کار بگردی، خود کار بیاد طرفت.ولی بهرحال نیاز به پول داشتم :))))))رتبه‌ی ۳ماین بود داستان من و مسابقات کوئرا، دیگه بعد این اجازه‌ی شرکت در مسابقات نداشتم و بطور غیرمستقیم درگیر طراحی و کمک به طراحان مسابقات شدم.دیگه چه اتفاقاتی افتادن؟هیچ‌چیزی مثل مسابقه برای پیشنهاد کاری گرفتن نمیشه، بنظرم آسونترین راهه. برای من اینطور بود که تو این یه سال و تاثیر گذاری که داشتم هم تو رزومه هم بخاطر مسابقات، از ۱۱ ۱۲ تا شرکت پیشنهاد خیلی خوبی داشتم ولی خب بخاطر علاقم به شرکت کوئرا، بیخیال شدم.همچنین پیشنهادات پاره‌وقت دیگه‌ای، پروژه‌های ریز خارجی که گیرم اومد، اینکه بین یه سری آدم معروف شدم هم بهترین حس دنیاست :))پیشرفتم در کارم خیلی زیاد بود، هرچند هنوزم خیلی ضعف دارم، هروقت به اون سطحی رسیدم که بدون نوشتن باگ‌های تابلو، کدم از مرحله ریویو رد بشه، اونوقت راضی می‌شم.و اینکه پیشرفت فنی که داشتم یکی این بود که مغزم داره تبدیل به مفسر میشه، دیگه مثل قبل کدهام هی تست نمیکنم بعد هر خط کد نوشتن و دقیقا می‌تونم همزمان تحلیل کنم :))) و این خیلییییییی حس خوبیه، امیدوارم شمام این حسو تجربه کنین اگه نکردین.اخیرا تونستم اولین تجربه‌ام بعنوان مصاحبه‌کننده کسب کنم و بطور جالبی تونستیم فیدبک خیلی مثبتی بگیریم و خیلی راضیم.و...درسال آینده قصد دارم چکار کنم؟دیگه نمی‌تونم تو مسابقات شرکت کنم پس مجبورم یک سری اهداف دیگه‌ای بچینمدوست دارم که تیم لید بشم تا با هم بتونیم پیشرفت خیلی لذت‌بخشی داشته باشیمدوست دارم که ته جنگو، ته پایتون و ته جاوااسکریپت برم، ببینم چه خبریهدوست دارم Open Source Contributor بشمو مهم‌تره همشون، دوست دارم که شناخته بشم!پیشنهاداتم برای شمابنظرم خوبه که این‌کارا بکنید:تو لینکدین فعالیتتون بیشتر کنین، ارتباط با بقیه بگیرین و شایدم باشون دوست بشین.تجربه‌کردن همیشه کافی نیست، خوبه که درکنارش کتاب تخصصی هم مطالعه کنید.خوندن کدهای کثیف و تبدیل آنها به کد تمیز، همچنین کلا کد خوانی خیلی خوبه، اگر الان تنها هستید و تیمی ندارید، میتونین کدهای پروژه های اوپن سورس و درخواست‌های مرج(Pull Requests) بخونین.خوبه که سعی کنید راجب چیزایی که بلدید بنویسید، نیازی نیست حساس بشید، نوشتن خیلی خوبه، همچنین یاد دادن.وقتی کلکل راجب برنامه‌نویسی می‌کنید، خوبه که طرفو بفهمید، خیلی وقتا شده من بحث کنم راجب حالا یک معماری یا ابزار یا ... ولی تهش حق با من نباشه. (غرور آدمو کور میکنه)این بود داستان من تو یک سال اخیر، امیدوارم سرتون درد نیاورده باشم ?‍♀️?‍♀️اگر نظری ایده‌ای پیشنهادی فوشی داشتین حتما بگین، البته فوشه تو تلگرام یا جای خصوصی بگین ?‍♀️ممنونم که تا اینجا خوندید، شب و روزگارتان خوش :)Abdollah Keshtkar | Akeshtkar.comSoftware Engineer @ Quera.irhttps://www.linkedin.com/in/abdollah-keshtkar/Contact me at Akeshtkar78@gmail.com</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Wed, 07 Jul 2021 23:29:05 +0430</pubDate>
            </item>
                    <item>
                <title>زندگی در کوئرا: به‌عنوان یک برنامه‌نویس!</title>
                <link>https://virgool.io/@abdollahkeshtkar/%D8%B2%D9%86%D8%AF%DA%AF%DB%8C-%D8%AF%D8%B1-%DA%A9%D9%88%D8%A6%D8%B1%D8%A7-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-yq7ebrayom67</link>
                <description>داخل کوئراسلاممن عبداله، الان ۹ ماهه که عضو تیم فنی کوئرا کالج هستم!چطور شد که این طور شد؟بعد از سه بار رد شدن در بازه زمانی یک سال و نیم در مصاحبه‌های کوئرا بالاخره در شهریور ماه ۱۳۹۹ عضو تیم شدم.قبل از اینکه شروع کنم بهتره اول بگم چرا کوئراحالا واقعا چرا کوئرا؟بعنوان آدمی که نه میتونه از پایتون/جنگو دل بکنه و نه از JS/React کوئرا اولین شرکتی بود که با این استک شناختم، این اولین دلیلم بود، تنها شرکتی که میشناختم و از استکی که عاشقشم استفاده می‌کرد! و این واقعا بیشتر اون چیزی که فکر میکنید واسم اهمیت داشتم بخاطر همین اولویتش نسبت به بقیه شرکت‌ها خیلی بیشتره!اون موقع نمیدونستم که تیمش کلی آدم‌های خفن و مشتی داره پس چرا دروغ بگم واقعا، دقیقا بخاطر استکش بود که اولین بار دوسال پیش رفتم سراغش.اگه بیشتر درمورد &quot;زندگی قبل کوئراییم&quot; کنجکاوید میتونید نوشته‌ی &quot;تصمیم گرفتم برنامه نویس بهتری بشم&quot; مطالعه کنید که بعد رد شدن همزمان در مصاحبه‌هایه کوئرا و کافه‌بازار نوشتم، بخونید که بنظرم جالبه!اولین روزها در کوئرااولین باری بود که رفته بودم شرکت، اینقد ذوق داشتم که دزدکی همینجوری عکس میگرفتم ?با تیم آشنا شدم، مصطفی، محمد، پیمان و امیرحسین اعضای تیم فنی کالج بودن و صاحب محصولمون هم که مهدی شکری گله. قبلا نمیشناختمشون ولی از بین همه اینا یک نفر رو از قبل میشناختم اونم از دوره‌ی پایتون پیشرفته کوئرا که قبلا طی کرده بودم، علی شفیعی.خلاصه سرتون درد نیارم پروژه نشونم دادن، برقام ریختن، واویلا هیچی بلد نیستم حالا چکار کنم، ری‌اکت کم کار کرده بودم و اینقد کد خفن ندیده بودم از اونورم جنگو فیچرهای Advancedش استفاده نکرده بودم و کلا هرچی بیشتر کد هارو میدیدم بیشتر برقام میریختن?این جریان تا چندین ماه و همچنان ادامه دارد، الحق که محمدجواد(مدیر تیم کریرز) و مصطفی خدان.اون موقع که مصطفی رو میدیدم اینجوری بود که کاملا fluent بود تو پایتون و جنگو، یعنی انگار مغزش مفسر داره خلاصه بازم بگم، برقام.یوسف و محمدمن یوسف مهدی‌پور هستم از کوئرا. احتمالا خیلیاتون این جمله رو شنیده باشین اگه با پشتیبانی کوئرا در ارتباط بودین.یوسف پشتیبان و هسته‌ی کوئراس، با هم تو یه روز اومدیم. آشپز (ولی نمک نمیزنه به غذاش?)، آدم دلسوز، تلاشگر.محمد کیه؟ عضو تیم خودمه، تقریبا هم سنیم، برگ‌ریزون، باهوش و قدرتمند در زمینه برنامه‌نویسی و هرچی دیگه!اگه بگم کوئرا با رفتن دوتا آدم خیلی اذیت میشه، اولی یوسفه دومی محمده.کوئرا و تیم ها در کلی نگاهایستگاه BRT دانشگاه شریف | صبح و شبم با این ایستگاه شروع و پایان می‌شهمیگن آدمایی که در کوئرا کار می‌کنن، به عشق کوئرا کار می‌کنند. - قال عبدالهاین حرفم شاید بگین چرته ولی ۹۵ درصد مواقع برام ثابت شد تو این مدت.هر روز در کوئرا درس زندگیه، از آشنا شدن با آدم‌های متفاوت و یادگیری ازشون تا باگ نوشتن و دهن‌سرویسی شدن.تیم مارکتینگ؟ تیمیه که با اومدنش به شرکت هر دوشنبه‌ی هفته، صبحونه پرملات میزنیم و کلی شرکت انرژی میگیره.تیم محتوا؟ تیمیه که هر روز ازش کلی مطالب و درس زندگی یاد میگیریم.تیم محصول؟ متن میده، به کد تبدیلش میکنیم و کوئرا رو خفن‌تر میکنیم با کمک ‌همدیگه!تیم مالی؟ خودتون میدونین، نیازی نیست چیزی راجبشون بگم ?هیچکس: داداش سایر یادت نرهنه نمیره، اجرایی نظم میده بهمون، کاری میکنه بیشتر دلم بخواد برم شرکت سراغ یخچال ?پشتیبان که قبلا بهتون گفتم، بسشه دیگه پرو میشه ?بقیه هم که تاج سرن!تیم فنیما در تیم فنی هر کدوم یک تخصص داریم که بهتره بقیه‌ی اعضا هست (البته استثنا مصطفی که تو همه‌ی مباحث بهتره همس ‌?‍♀️)مثلا پیمان خدای کوئری زدن و گیته ویا محمد که کلا گو کار(?) تیمه.حامد؟ حامد بک‌اند کار برق‌ریزمونه، مهدی؟ سیستمت بهش بگو خودش باگ‌هاش تو ذهنش پدیدار میشن، بدیمش تیم محصول بنظرم ?من چیم؟ من Senior Bug Developerم، اگه ی روز اومدین تو کوئرا قسمت کالجش دیدین ۵۰۰ خوردین، احتمال ۸۸ درصدش تقصیر منه ?داستان ریویو و ریوایزمصطفی و بقیه وقتی کدام ریویو می‌کنناین داستان یه مدت خیلی زیاد بود که تو ستون Revise پر تسک‌هایی با عکس Guido van Rossumه (عکس پروفایلمه). یک روز در تیم فنیکارهای هفتگی اینکه هر هفته یک نفر L&amp;D ارائه میده راجب یک موضوع فنی خاص که در این‌جا میتونین ببینین (اخیرا آپدیت نشده) ولی بخدا هر هفته ارائه داریم ?‍♀️.هر دوهفته یک جلسه اسپرینت داریم که تسک‌هارو میچینیم، برای اونایی که زیاد درجریان این موضوع نیستن یا تازه واردن بگم اینجوری که امیرحسینمون (درسته صاحب محصوله ولی برای ما مدیرمحصوله ?) تسک هارو میده و ما یکی یکی تصمیم میگیریم که فلان تسک چند ساعت طول میکشه (به مرور هرچی تجربه‌ی اعضا دقیق‌تر بشه این تایم هم دقیقتر میشه ولی همیشه صد درصد نیست ممکنه یک تسک چندین روز طول بکشه و کاملا طبیعیه و همه همدیگر رو میفهمیم)بعد این جلسه مدیر تیم فنیمون که مصطفی با امیرحسین (صاحب محصول) این تسک هارو به هر کدوم از ما Assign می‌کنن و ما تو این دو هفته میزنیم (دوباره بگم که ممکنه یکی حتی خیلی زودتر تموم کنه یکی تموم نکنه و این کاملا طبیعیه).این کارایی که هفتگی انجام میشه. حالا روزانههر روز سه تا دیلی داریم (حالا دیلی چیه، یه جلسه کوتاه مدت که اول صبح، وسط روز و آخر روز داریم و از کارهایی که قراره انجام بدیم، خواهیم داد و دادیم میگیم، اگرم سوالی موردی بود راجبش حرف میزنیم اینم بگم که همیشه حرفای کاری نیست بعضی وقتا(شایدم بیشتر وقتا) حرف و شوخی هم هست. هر کدوم هم حداکثر ۱۰ دقیقه طول می‌کشه)ابزاری که استفاده می‌کنیم Pycharmه، اگه باهاش دشمنی دارین بگم که منم باش داشتم و عاشق VSCode بودم ولی الان واقعا دم JetBrains گرررررررم خیلی مشتیه ?تسک‌ها به دو دسته تقسیم میشند، توسعه و ریویو. که اول اسپرینت تصمیم گرفته میشه که تسک X من بزنم و مهدی دهنمو سرویس کنه یا حامد بزنه و مصطفی باش عشق کنهتسکها که زده میشن و همه ریویو هاشونو میکنن حالا نوبت گادفادر میرسه، مصطفی. واویلا واویلا ☠مصطفی وقتی میخواد شروع کنه ریویو کردنپایاناین بود کوئرا از دید من، اتفاقات زیادی میفته ولی نمیشه همشونو در اینجا جا کرد، کلی آدم های باحال و باهوش دیگه‌ای داریم مثل سلیب، نیما، خانم عامل، باقر، مازیار وووووو کلی دیگه که اگه بخوام بنویسم مجبورین فقط اسم بخونین ?این بود یک روز من بعنوان عضو تیم فنی درکوئرا، امیدوارم خوشتون اومده باشه.نکته‌۱: همه میدونیم که خیلی شرکت‌ها ایراد دارند و کوئرا هم‌همینطوره و این حقیقته. تلاشمون اینه که سعی کنیم این‌رو به حداقل ممکن برسونیم و همیشه پیشرفت کنیم.نکته۲: بنظرم شرکت‌های زیادی با این سبک هستن، دوستانه و خانواده‌طور، اینجور شرکتا کاری میکنن که همزمان کنار کار، از زندگی هم لذت ببرید. (البته تجربه‌های بد هم خیلی پیش میاد و طبیعیه (واس منم با شرکت قبلی پیش اومده))نوشته شده با ❤ توسط من</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Sun, 30 May 2021 12:48:15 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش Webpack</title>
                <link>https://virgool.io/@abdollahkeshtkar/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-webpack-vrxnxhvbym6o</link>
                <description>نکته: اگه در هر جای مقاله فکر کردین اشتباهی کردم حتما حتما در کامنتا بگین، مرسی که هستین.Webpack دیگه چه کوفتیه؟جواب کوتاه: یک باندلر جاوا‌ اسکریپتجواب بلند:فرض کنید شما دارین یک اپ مینویسن و ۱۰۰ فایل js دارین٬ مرورگر مجبوره تک تک به تک تک این فایل ها ریکوست بزنه و بگیره، قیافه‌ Network اون لحظه خیلی دیدنیه بنظرم، دهنش سرویسه.حالا ما گفتیم ۱۰۰ فایل جی‌اس٬ فکر نکنین زیادن چون پروژه های گنده تر خیلی خیلی بیشتر فایل دارن و بماند که هنوز فایل های CSS و کتابخونه‌هایی که import کردیم وووو هم حساب نکردیم.اینجاست که باندلر‌ها میان وسط، که یکیشون Webpackهوب‌پک میاد همه‌ی فایل‌ها رو براساس نیازش جمع میکنه و میندازه داخل یه فایل جی‌اس و یه فایل CSS ووو.حالا شاید بگین خب دهن سرویس این فایل نهاییمون خیلی سنگین میشه، عجله نکنین چون اینجا که جریان Splitting میاد وسط.فرض کنید یه اپ گنده داریم که از دو بخش تشکیل میشه، ما میتونیم این دو بخش به دوتا فایل مختلف تقسیم کنیم یا حتی بیشتر، حالا این مهم نیست، مهم اینکه که میشه پروژمون به چندتا تیکه تبدیل کرد.ساختار زیر رو داشته باشیم فعلا بعنوان پروژه‌ی فرضیمون (مقدار پرانتزها به import شدن در اون فایل اشاره میکنه)دوتا اپ اصلی به اسم users و dashboard داریم و یه پوشه مشترک به اسم common، کاربران به users و ادمین‌ها به dashboard دسترسی دارن.ساختار فرضی پروژموناینم فایل webpack.config.js:فایل کانفیگ Webpackقراره در ادامه دو مورد رو بررسی کنیم، مورد اول ریختن همه‌ی پروژه داخل یه فایل و مورد دوم هم تقسیم پروژه.قبل اینکه شروع کنیم، بیایید اول Dependency Graph رو بررسی کنیم.حالا این Dependency Graph چیه؟خب فرض کنیم پروژمون ۱۰۰ تا فایل داره که ۷۰ درصدشون استفاده میکنیم توی دوتا فیچری که الان داریم و ۳۰ درصد فعلا توی پروداکشن استفاده نکردیم چون هنوز اون فیچر مشتی سومی آماده نشده و در حال توسعه هست.اینجا ما نباید اون ۳۰ درصد هم باندل کنیم چون الکی الکی فایلمون سنگین‌تر میکنیم.اینجا وب‌پک چکار میکنه٬ میاد فایل اصلی که بهش دادیم رو dependency هاش رو بررسی میکنه، چطور بررسی میکنه؟ با بررسی مواردی که داخل اون فایل import شدن، Dependency Graph رو میکشه. (عکسش توی دوتا حالت که بررسی میکنیم گذاشتم)خب برگردیم سر اون دوتا حالت که بالاتر گفتمحالت اول: انداختن کل قیمه‌ها تو ماستافایل کانفیگ Webpackبیایین فایلمون اینجوری کانفیگ کنیم، که فایل اصلیمون index.js هست و خروجیمون هم یه فایل bundle.jsه.خب فرض کنیم اپ users و dashboard حجمشون به ترتیب ۲ و ۴ مگه، یعنی حجم نهاییمون مثلا ۸ مگ میشه (با احتساب کتابخونه‌هایی که جدا نصب کردیم).Dependency Graphحالا کاربر بدبخت بخواد وارد سایت بشه مجبوره ۴ مگ اضاف هم بگیره، برای چیییی واقعا؟ چرا باید دهن مرورگر و اینترنت کاربر رو سرویس کنیم؟پس چکار میکنیم؟حالت دوم: هرکی جایه خودشخب حالا بیایین به Webpack بگیم که بیاد خروجی رو دوتا فایل جداگونه بده که هرکدوم براساس نیازمون بگیریم.یه همچین چیزی میشه:فایل کانفیگ Webpackبهش گفتیم دوتا فایل اصلی داری که توی خروجی باید این دوتا رو باندل کنی و هر کدوم جا بدی، اگه [name] رو bundle می‌نوشتیم الان تویه یکی باندل می‌کرد، مثل حالت اولی، بگذریم.اینجا خروجیمون میشه یه فایل users.js به حجم ۲ مگ و یه فایل dashboard.js به حجم ۴ مگ، با این کار تونستیم کلی سرعت لود سایت بالا ببریم و اینجوری همه راضی، کاربر راضی شما راضی صاحب محصول هم راضی.Dependency Graphمنابع و ابزار‌هایی که استفاده کردم:سایت Webpack.برای عکس کد ها از https://carbon.now.sh استفاده کردم.و برای گراف ها هم از  http://www.webgraphviz.com استفاده کردم.Abdollah Keshtkar | Software Engineer @ QueraContact me at AKeshtkar78@gmail.com</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Thu, 24 Dec 2020 17:07:29 +0330</pubDate>
            </item>
                    <item>
                <title>چطوری میخوام برنامه نویس بهتری بشم</title>
                <link>https://virgool.io/@abdollahkeshtkar/%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-y2i3abcrkiue</link>
                <description>اگه نوشته ی قبلیم مطالعه کرده باشید میبیند که هفته‌ی قبل به یک نتیجه گیری و تصمیم مهمی رسیده بودم.من برنامه نویس خوبی نیستم٬ باید مهارت‌هام و تسلطم بالاتر ببرم.برای اینکه بفهمین چطور به اون نتیجه گیری رسیدم میتونین به نوشته‌ی قبلیم مراجعه کنید https://virgool.io/@abdollahkeshtkar/%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%DA%AF%D8%B1%D9%81%D8%AA%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-apfewogkggtp در اینجا میخوام بهتون بگم که چطوری میخوام برنامه نویس بهتری بشم٬ شاید کسی بتونه استفاده کنه.چطور میخوام برنامه نویس بهتری شم؟ایراد اولی: تمیزی کد و معماری نرم افزاراگه استاد دانشگاهی باشین یا معلمی یا بالاخره کسی باشین که همیشه کد های بقیه رو میخونه میبینین که خیلی از تازه وارد ها و برنامه نویسا حتی ارشد کد‌هاشون خیلی کثیف و داغونه٬ نام گذاری متغیر هاشون بطور x, y, zه٬ کد هاشون هیچ معماری خاصی نداشت٬ تکرار کد و کلی ایراد دیگه٬ خودمم اینطوری بودم هنوزم هستم:))بیایید بهتون بگم چرا این خیلی بدهآذر ۹۸ یک پروژه‌ی ساخته شده با جنگو تحویل گرفتم٬ قرار بود باگ‌ها و فیچر‌هایی که کلاینت میگفت رو رفع کنم٬ خب این برای من مشکلی نبود بالاخره یه سال دو سال جنگو کار کرده بودم و رو پایتون تسلط خوبی دارم.تا اینکه پروژه رو تحویل گرفتم و خب٬ برگ‌هام کلهم اجمعین ریختن زمین:)))خوانایی کد = ۰, بهینگی کد = ۰, DRYبودن کد = ۰, و کلا پروژه نگهداری ازش کار هفت خان رستم بوده٬ خلاصه منم بدنم مور مور شد و گفتم Challenge Accepted.نشستم اول خط به خط کد ها رو خوندم٬ کد ها به این صورت بود که بین خط ها یه دونه فاصله هم نبود٬ بجونم قسم :)پس دو روز اولی نشستم کل کد ها رو مرتب و تمیز کردم٬ جاهایی که نیاز بود اسم متغیر ها هم درست کردم و خوانایی کد رو بردم بالا که حداقل بتونم با یه نگاه حدس بزنم چکار میکنه بالاخره یه دونه Comment هم نداشت.اینم بگم پروژه توسط بچه های صنعتی اصفهان نوشته شده٬ قابل توجه دانشجو ها اینکه دانشگاه این مباحث یادنمیده و بهتره خودمون دنبالش بریم.از این پروژه چی یاد گرفتم؟با صرف نظر از مباحث فنی که یادگرفتم٬ فهمیدم اگه براساس معماری خاصی یا کلا بدون معماری برنامه‌ام بنویسم٬ نگهداری ازش کار فوق العاده سختی میشه و فهمیدم که مباحث Clean Code خیلی مهمتر اون چیزی بود که فکر میکردم.راه حل این مشکل؟تصمیم گرفتم دو کتاب بخونم٬ کتاب باحال Clean Code اقای Robert Cecil Martin و Clean Architecture از همین آقا.خودم تازه Clean Code رو شروع کردم و دو فصل اولش که خوندم واقعا به نتایج خیلی بهتری رسیدم.یکی از باحالترین قسمت‌هاش که برای منم خیلی جالب بود٬ نام گذاری متغیر ها بود٬ دوتا تیکه کد میزاشت همه چی کد یکی بود فقط اولی اسم متغیر ها یه جوری بود دومی اسم متغیر مناسب بود. با نگاه کردن به کد دومی بدون هیچ کامنتی راحت میشد فهمید که چکاره اس این کد.کتاب دومی هم هروقت این کتاب رو تموم کردم شروعش می‌کنمایراد دومی: زبان مادری برنامه نویسینکته: زبان اولم پایتونه پس فعلا میخوام رو بهتر کردن پایتونم حرف بزنم.همه با بحث‌های زبانی آشنایی داریم٬ خودمم کلی وارد Languages war شدم :))ولی اینجا بحثم این نیست که کدوم زبان بهتره کدوم بدتره٬ میخوام راجب تسلط رو زبان بنویسم٬ بنظرم هر برنامه نویسی باید یک زبانی داشته باشه که سر و تهش بفهمه.همه میدونیم که هر زبان ویژگی ها و روش های خاص خودش برای پیاده کردن داره٬ تو پایتون هم به این روش و ویژگی ها میگیم پایتونیک یه نمونه هم list comprehensionهاست.خیلی‌ها وقتی یک زبانی یادمیگیرن تا یه محدوده ای یادش میگیرن مثلا درحد شی گرایی یا آدم هایی که از بقیه زبان‌ها مثل Java به پایتون مهاجرت میکنن از تکنیک های پایتونیک خبری نداری و خلاصه درگیر این مباحث نمیشن چون میدونیم دیگه همه  ی زبان ها ویژگی های مشترک دارن پس منی که فردا رفتم dart یاد بگیرم فقط چیزهایی که توی پایتون و بقیه زبان ها یادگرفتم اونجا یاد میگیرم و از تکنیک های خودش غافل میشم.چرا این بده؟یه مثال ساده: فرض کنید لیست اعداد دارید و میخواهید میانگین اون لیست رو حساب کنیداحتمالا اینجوری بنویسیدmy_cool_list = [10, 4, 16, 20]
avg = sum(my_cool_list) / len(my_cool_list)
print(avg)

# or

my_cool_list = [10, 4, 16, 20]

sum_of_values = 0
for number in my_cool_list:
    sum_of_values += number

avg = sum_of_values / len(my_cool_list)
print(avg)طبق مواردی که خیلی زیاد دیدم (بین دانشجو ها) بیشتر به صورت زیر مینویسندرحالی که پایتون تابع mean از کتابخونه statistics برای محاسبه میانگین داره.from statistics import mean

my_cool_list = [10, 4, 16, 20]
print(mean(my_cool_list))البته این مثال خیلی ساده ایه و میشد مثال های پیچیده تری نوشت ولی میخواستم منظورم برسونم.چطور میخواهم این مشکل رو حل کنم؟جدیدا هروقت میخواهیم یه ابزاری یادبگیریم یا زبان جدیدی یادبگیریم میریم طرف udemy یا اگه انگلیسی خوب نیستیم میریم فرادرس. بنظرم برای شروع این روش‌های خوبی هستن ولی به مرور این روش ها مشکل ساز میشن٬ درجریانیم که فیلم های آموزشی مثل کتاب جزئیات ندارن.پس من تصمیم گرفتم بین دوتا کتاب Fluent Python و Python Cookbook یکی رو بردارم که درنهایت بخاطر مواردی که قبلا گفتم (اینکه موارد پایه داره یادم میره) بنظرم باید از صفر زبانو مرور کنم و پایه ام و هم چنین سطح فعلیم بالاتر ببرم.ایراد سومی: ساختمان داده و طراحی الگوریتم‌هاساختمان داده و طراحی الگوریتم‌ها دوتا اسمین که ۹۰درصد دانشجو های رشته‌ی کامپیوتر ازشون متنفرن ولی بخواهیم نخواهیم کل برنامه نویسی براساس این دوتا مبحث هست.چرا ما باید روش های نوشتن الگوریتم یادبگیریم؟بیایید با مثال جالب شروع کنیمتیکه کد زیر رو ببینیدdef fib(x: int) -&gt; int:
    if x &lt;= 2:
        return 1
    else:
        return fib(x - 1) + fib(x - 2)
این تابع فیبوناچی مقدار ورودی رو با استفاده از روش بازگشتی حل میکنه٬ کده سالمه و مشکلی نداره.حالا به تیکه کد زیر نگاه کنیدcalculated_values = {}
def fib(x: int) -&gt; int:
    if x &lt;= 2:
        return 1
    else:
        if x not in calculated_values:
            calculated_values[x] = fib(x - 1) + fib(x - 2)
        return calculated_values[x]در اینجا ما مقدار هایی که حساب کردیم ذخیره میکنیم تا نیاز نشه دوباره حساب کنیممیدونین فرقشون چیه؟ به مقایسه‌ی زیر نگاهی بندازین(به ترتیب تایمی که طول کشید برای محاسبه n برای روش اول و دوم به ثانیه)محاسبه فیبوناچی عدد ۲۰م: 0.006s - 0.0000031sمحاسبه فیبوناچی عدد ۳۰م: 0.2s - 0.0000033sمحاسبه فیبوناچی عدد ۴۰م: 25s - 0.0001sمحاسبه فیبوناچی عدد ۵۰م: *فک نکنم هیچوقت تموم شه* - 0.00017sهمانطور که میبیند روش دوم با اختلاف خیلی زیاد سریعتره٬ این است قدرت الگوریتم و روش خوب:)چطور مهارت های الگوریتم نویسیمون بالاتر ببریم؟در اینجا بنظرم بهترین روش برای ارتقا مهارت‌های الگوریتم نویسیمون خوندن و مطالعه کردن راجب الگوریتم ها می‌باشد٬ و بنظرم چیزی نیست که بخواهیم با تجربه کردن بیشتر توش پیشرفت داشته باشیم٬ با مطالعه خیلی پیشرفت بهتری میشه داشتکتابی که مد نظرمه برای این بحث کتاب The Algorithm Design Manual از آقای Steven Skiena هست.من قراره چطور مطالعه کنم و این ایرادهایی که دارم رفع کنم؟فکر کنم خیلی رو این مورد تاکید کردم که حافظه ام ماهیه پس نیازه روشم متفاوت باشه٬ فکر کنم خیلی هامون میدونیم که هرچی خودمون درگیر یه بحثی کنیم بیشتر یادمیگیریم و بیشترین سطح یادگیری٬ یاد دادنه.اره تدریس و یاد دادن بهترین روش برای یادگیریه.برنامه ام چیه؟خیلی وقته که دلم میخواست یک سایتی داشته باشم که توش مباحثی که یادمیگیرم ویا مشکلاتی که حل میکنم داخلش بنویسم بخاطر همین تصمیم گرفتم سایت جدید بسازم و ساختم.همزمان سه تا کتاب Clean Code, Fluent Python و The Algorithms Design Manual شروع میکنم و هر مبحثی که یاد میگیرم توی سایتم مینویسم تا اینجوری هم تو مغز خودم سیو باشه و هم شاید کمکی برای بقیه و رفرنسی باشه.فعلا سایته خالیه و کامل نیست٬ مرحله‌ی سئوش هستم و هروقت تموم شد اینجا معرفیش میکنم و شروع میکنم ترکوندن :)ممنونم که تا اینجا خوندید٬ امیدوارم براتون مفید واقع بشه.اگه نظری پیشنهادی دارین حتما بگین.نوکرتون عبداله کشتکار - برنامه نویسی که فکر میکنه برنامه نویسی بلده</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Sat, 25 Jul 2020 13:41:19 +0430</pubDate>
            </item>
                    <item>
                <title>تصمیم گرفتم برنامه نویس بهتری بشم</title>
                <link>https://virgool.io/@abdollahkeshtkar/%D8%AA%D8%B5%D9%85%DB%8C%D9%85-%DA%AF%D8%B1%D9%81%D8%AA%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-apfewogkggtp</link>
                <description>من برنامه نویس خوبی نیستم٬ باید مهارت‌هام و تسلطم بالاتر ببرم.این نتیجه گیری بود که این هفته بهش رسیدم٬ بیایید بهتون بگم چرا و چطور تصمیم گرفتم حلش کنمچطور به این نتیجه گیری رسیدم؟‌من ترم اخر کارشناسیم شاید بهتره بگم قرار بود ترم آخری باشم ولی باتشکر از استادمون٬ ظاهرا یه ترم اضاف هم قراره باشم.از ترم اول کاردانی تا این ترم بنظر خودم توی مباحث عملی حرف نداشتم خیلی وقتا بین دوتای اول شایدم اولی میشدم٬ ولی توی برگه‌ی تئوری کم پیش میاد نمره‌‌ی خوبی بگیرم و معمولا بین ۵ تای اخری هستم.برام سوال بوده که واقعا چرا همچین میشه٬ من یه مشکل شاید روانی دارم که هم زمان که میخونم یادم میره و باید کلی تمرکز و زور بزنم تا بتونم حفظ کنم ولی قدرت درکم خوبه٬ نتیجه میگیریم که درسای منطقی و ریاضیم خوبن و حفظیاتم خیلی بدن.برنامه نویسی کردن از اونجایی که همیشه گوگل هست هیچوقت نگران حفظ کردن مباحث نبودم (اینم بگم میدونم که نباید کامل حفظ کنیم)٬ ولی ابزار هارو حفظ میکنم تا هروقت به یه مشکلی خوردم بفهمم تو گوگل دنبال چی باشم.با همین رویکرد تصمیم گرفتم که هروقت به یه مشکل خوردم دنبال راه حل باشم و دنبال یادگیری مباحث متفاوت نباشم٬ یک نمونه مثال بزنم براتونترم ۷ درس هوش مصنوعی داشتم که این درس یه پروژه داره منم تصمیم گرفتم مسئله N وزیر (nتا وزیر در یک صفحه شطرنج nدرn بزاریم بدون اینکه همو تهدید کنن) رو با ژنتیک حل کنم. حالا چرا این مسئله؟ چون گفتم دیگه٬ تا زمانی که از یه چیزی استفاده واقعی نکنم نمیتونم یادش بگیرم پس تصمیم گرفتم با ی تیر دوتا نشون بزنم و به درس طراحی الگوریتم‌ها مراجعه کنم و این طور شد که تونستم ی ذره از الگوریتم ژنتیک کار کنم٬ الگوریتم عقب‌گرد رو پیاده کنم و مسئله Nوزیر رو درک کنم.اتفاق جالبی که این ترم افتاد اینکه درس مباحث ویژه که داشتیم خودم مبحث ژنتیک به استاد پیشنهاد دادم اونم قبول کرد٬ بعد بخاطر اتفاقات کرونا کلاس عملی نداشتم و فقط تئوری بود٬ اینجوری شد منی که اولین نفر کلاسمون بود که ژنتیک پیاده کرد دقیقا همون درس افتادم بقیه ۹۵ درصد پاس کردن٬ این نتیجه اصلا واسم قابل هضم نبود٬ اگه یادتون باشه بالا گفتم که نمیتونم حفظ کنم و فقط مسیرو حفظ میکنم٬ اینجوری شد که ۹ ترمه شدم.بعد مسئله بالایی٬ این هفته یک اتفاق جالب دیگه ای افتاد٬ مصاحبه با یه شرکت خوب ایران برای موقعیت Software Engineer داشتم٬ مرحله الگوریتمی و سوال برنامه نویسی به خوبی قبول شدم تا رسیدم مرحله اخری که تماس تصویریه.یک سوالی پرسید٬ سوالی ساده و معمولا همه جوابش میدونن هرکی که پایتون پایه کار کرده میفهمه و بلده ولی منی که ۳ ۴ ساله پایتون فریلنسر کار کردم و ی مدت هم به چند نفر یاد میدادم و حتی پایتونیست خوب و معروف دانشگاه بین اساتید و بچه های کامپیوتر مثلا هستم جواب این سوال یادم رفته!٬ سوال این بود که فرق tuple و list چیه!!تعجب کردم که واقعا چطور همچین موردی یادم رفته٬ مگه میشه منی که این همه ادعای پایتون و برنامه نویسی دارم همچین چیزی یادم رفته باشه.بعد مصاحبه که تموم شد تو فکر فرو رفتم٬ ی خاطره یادم اومد. ترم ۷ درس هوش مصنوعی ارائه پایتون بعنوان زبان برای هوش مصنوعی داشتم٬ استاد پرسید که فرقی داره از tap یا space و یا تعداد space ها برای indentation در پایتون هست یا خیر منم اون لحظه موندم و برای جمع کردن حماقتم به استاد گفتم امتحان کنیم ببینیم.و این جوری شد که توی این مدت کل علمم تو پایتون و برنامه نویسی برام زیرسوال رفت و فهمیدم که برنامه نویس خوبی نیستم٬ پس تصمیم گرفتم برنامه نویس بهتری بشم.مطلب بلندی شد پس ادامه اش در یه روز دیگه مینویسم و بهتون میگم که چطور میخوام برنامه نویس بهتری بشم.عبداله کشتکار - یک برنامه نویسی که فکر میکنه برنامه نویسی بلده https://virgool.io/@abdollahkeshtkar/%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%85-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C-%D8%A8%D8%B4%D9%85-y2i3abcrkiue </description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Thu, 23 Jul 2020 15:04:52 +0430</pubDate>
            </item>
                    <item>
                <title>پایتون و داینامیک تایپ بودن: annotationها</title>
                <link>https://virgool.io/@abdollahkeshtkar/%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%88-%D8%AF%D8%A7%DB%8C%D9%86%D8%A7%D9%85%DB%8C%DA%A9-%D8%AA%D8%A7%DB%8C%D9%BE-%D8%A8%D9%88%D8%AF%D9%86-annotation%D9%87%D8%A7-uhhf2dmdd9ee</link>
                <description>همه ما میدانیم که پایتون یک زبان dynamic typeه یعنی متغیرهاش درهنگام runtime تایپشون مشخص میشه و راحت عوض میشه.احتمالا اگه شما هم پایتون نوشته باشین احتمالا تایپ های بعضی متغییر ها با هم قاطی کردین٬ شایدم اشتباهی به یک متغیر جا رشته٬ عدد دادین.مشکلی نیست٬ در سال 2006 دوتا برنامه نویس اومدن برای پایتون سینتکس جدید اضافه کردن٬ این سینتکس به این صورته که میشه برای متغییر یک راهنما نوشت٬ حتی برای تابع و مقداری که برمیگرداند.خب بیخیال حرف‌های اضافنکات مهم:اگه از VSCode استفاده میکنید حتما افزونه pyright رو نصب کنید تا اگه برخلاف قوانین (بعدن منظورم میفهمین) عمل کردین٬ ادیتوره ارور نشون بده.لازم به ذکر است اگه برخلاف راهنماهایی که نوشتید عمل کردید٬ هیچ مشکلی توی اجرای برنامه نخواهد بود و این بیشتر یک راهنما هست٬ درکل قرار نیست پایتون استاتیک بشه.خب بریم مثال بزنیم که این درواقع به چه دردمون میخورهساده ترین مثال٬ فرض کنین میخواهین تابع جمع کردن دوتا عدد بنویسینdef add(first, second):
    return first + second

print(add(10, 5)) # 15
print(add(&amp;quotHello&amp;quot, &amp;quotWorld&amp;quot)) # HelloWorldمعلومه که تابع بالا دوتا ورودی میگیره و با هم جمع میکنه٬ ولی یه نکته اینجاست٬ ما برای جمع کردن دوتا عدد استفاده کردیم درحالی که میشه دوتا رشته داد و پایتون مشکلی نخواهد داشت.حالا میاییم ورودی ها تابع به شکل زیر مینویسیم.def add(first: int, second: int):
     return first + second

# این خط مشکلی نخواهد داشت
print(add(10, 5)) # 15

# ولی در اینجا ادیتور یک زیرخط قرمز میکشد که شما جای عدد٬ رشته دادین
print(add(&amp;quotHello&amp;quot, &amp;quotWorld&amp;quot)) # HelloWorld حالا بریم یک مورد کاربردی‌ترفرض کنید یک تابع فیبوناچی میخواهید بنویسیدخب ما توقع داریم یک ورودی عدد بگیریم و یک عدد هم برگردونیم.در کد زیر یه ایرادی هست٬ گفتیم که یک عدد برمیگردونیم ولی pass نوشتیم یعنی قرار نیست چیزی برگردونده شود٬ پس یک خط قرمز زیر int کشیده میشهdef fib(num: int) -&gt; int:
    passحالا به کد زیر نگاه کنید# wrong
def fib(num: int) -&gt; int:
    if num &lt; 1:
        return 1در کد بالا ما عدد برگردوندیم ولی باز ایراد میگیره چون باز اگه شرط اجرا نشه همچنان چیزی برگردونده نمیشود.حتما در نوشتن این راهنما ها نکات زیر رو رعایت کنین تا خوانایی کدتون بهتر بشه# correct
my_var: int
name: str = &amp;quotHello World&amp;quot
value: int = 10

# wrong
my_cool_name : int # حتما قبل دونقطه فاصله نزارین
my_cool_name_2:int # بعد دو نقطه فاصله بزارین اینم یه سری مثال های اضافdef func(a: int = 10, b: str) -&gt; str:
    pass

def sum_items(items: list) -&gt; int:
    return sum(items)امیدوارم مفید باشه٬ این اولین نوشته ام هست پس ممکن است توضیحاتم خوب نباشن پس لطفا به بزرگواری خودتون ببخشین D: احتمالا قسمت دوم بنویسم یا بریم سایر موارد cool پایتون کار کنیماگه پیشنهادی یا انتقادی هست حتما بگین.</description>
                <category>عبداله کشتکار</category>
                <author>عبداله کشتکار</author>
                <pubDate>Sat, 18 Jul 2020 19:03:43 +0430</pubDate>
            </item>
            </channel>
</rss>