برنامه نویسی

Project Chronicles – انتشار 0.3

Summarize this content to 400 words in Persian Lang

پیوندها

Repo که من روی آن کار کردم

مسائل

https://github.com/tarasglek/chatcraft.org/issues/704
https://github.com/tarasglek/chatcraft.org/issues/613
https://github.com/tarasglek/chatcraft.org/issues/731

درخواست های کششی

https://github.com/tarasglek/chatcraft.org/pull/712
https://github.com/tarasglek/chatcraft.org/pull/714
https://github.com/tarasglek/chatcraft.org/pull/732

این پست در مورد a Project-release 0.3 برای دوره OSD600 در کالج سنکا. برای نسخه 0.3، دانش آموزان ملزم به مشارکت در پروژه منبع باز بودند. این بار از ما خواسته شد که در پروژه بزرگ‌تری در مقایسه با آنچه برای Hacktoberfast کار کرده‌ایم، مشارکت کنیم و مشارکت‌های بزرگ‌تری داشته باشیم.

برای انتشار 0.3، تصمیم گرفتم روی پروژه ای که برای آخرین کامیت خود در طول Hacktoberfast روی آن کار کردم، کار کنم. به جای یافتن یک مخزن جدید، می‌خواستم روی پروژه‌ای کار کنم که قبلاً دانش آن را دارم. من فکر می کردم که این برای درک یک پروژه بزرگتر و چگونگی ساختار پروژه های بزرگتر و اینکه از چه پشته های فناوری استفاده می کنند و چگونه کار می کنند مفیدتر باشد. و مهمتر از آن، من چت کرافت را خیلی دوست دارم. من خیلی علاقه دارم React و Typescript، که در پروژه استفاده می شوند. بنابراین به کار روی این پروژه ادامه دادم.

مسئله 1

من به مسائل موجود در مخزن نگاه کردم و این مشکل را پیدا کردم. مسئله این بود که برای برخی از مدل های llm، نماد مناسبی ارائه نمی کرد.

چطور درست کردم

اول باید بفهمم علت این مشکل چیست. احساس درونی من به من می گفت که باید قسمتی وجود داشته باشد که منطقی را مدیریت کند که برای کدام نماد باید از آن استفاده کنند. شروع کردم به پیدا کردن قسمت با استفاده از git grep با جستجوی کلمات کلیدی مانند icon، model، و avatar. سپس، متوجه شدم که این منطق در کجا پیاده سازی شده است. مشکل این است که وقتی نماد را تعیین می کند، نام مدل را بررسی می کند. با این حال، برخی از نام های مدل شامل حروف بزرگ هستند، اما منطق حروف بزرگ را بررسی نمی کند، بنابراین من آن را به حروف کوچک و بزرگ حساس کردم.

مسئله 2

از آنجایی که من برای آخرین دو مشارکت روی مسائل مربوط به رابط کاربری کار کردم، با این موضوع اطمینان بیشتری پیدا کردم، و مشکل دیگری را پیدا کردم که مربوط به UI است، که در مورد سرریز غیر ضروری در PreferencesModal.

چطور درست کردم

پیدا کردن مشکل در کجا رخ می دهد بسیار سریعتر بود زیرا من قبلاً دو مشارکت داشته ام. با این حال، رفع مشکل به این راحتی نبود. میدونستم که باید درستش کنم css اما نمی دانست چگونه رویکردی که من اتخاذ کردم آزمون و خطا بود. من تمام راه حل هایی را که می توانستم به دست بیاورم امتحان کردم. به عنوان مثال، من سعی کردم مقداری بالشتک، حاشیه، ارتفاع یا عرض اضافه کنم و برخی را تغییر دادم css ویژگی هایی مانند display یا overflow-x. در نهایت، یکی از جعبه های انعطاف پذیر را پیدا کردم weight مشخص شده تا والدش سرریز نشود.

مسئله 3

در حالی که داشتم روی مسائل قبلی کار می کردم. وقتی باز کردم متوجه شدم که اشکالاتی وجود دارد PreferencesModal. برای آیفون، وقتی لمس می کنید input عنصر در PrefeencesModal، به طور خودکار بزرگنمایی می کند (تلفن اندرویدی به طور خودکار بزرگنمایی نمی کند). با این حال، به دلایلی، نمی‌توانید به اندازه معمولی بزرگ‌نمایی کنید (بزرگ‌نمایی و کوچک‌نمایی در هر محیطی، خواه موبایل یا ios یا دسکتاپ، جلوگیری می‌شود). این در واقع من را خیلی آزار می داد در حالی که با آن بازی می کردم Chatcraft و زمانی که داشتم برنامه را تست می کردم. برای همین موضوع را باز کردم.

چطور درست کردم

حالا آنقدرها طول نکشید تا بفهمیم کد این کار کجاست UI element از آنجایی که دو هفته است روی این پروژه کار می کنم واقع شده است. اگرچه می دانستم کدام صفحه مسئول این کار است، اما مطمئن نبودم که کدام عنصر را باید اصلاح کنم. با این حال، من احساس کردم که باید باشد Modal جزء، و من سعی کردم به آن نگاه کنم. با این حال، من چندان به Chakra-UI اطمینان نداشتم، و برخی از اجزای Chakra-UI منسوخ به نظر می رسیدند. هیچ سند رسمی برای برخی از قطعات وجود نداشت Modal. از آنجایی که هیچ سند رسمی وجود نداشت و همچنین ChatGPT به خوبی در مورد Chakra-UI نمی دانست، کمی ناامید شدم. در واقع ChatGPT در Chakra-UI بسیار بد است. من فقط شروع کردم به دنبال کردن کد و عمیق تر به کد. من انجام دادم ctrl + click در Modal جزء در VS Codeو کد کتابخانه را برای آن باز کرد. من انجام دادم ctrl + click در همه جای کد کتابخانه، و در نهایت رابط های prop را پیدا کردم که نشان می دهد چه گزینه هایی را می توانید به عنوان یک پایه به آن ارسال کنید. Modal جزء برخی از آنها در مورد scroll-block و zoom. من آن گزینه ها را امتحان کردم، و دقیقاً همانطور که می خواهم کار کرد.

من با این پروژه اعتماد به نفس بیشتری پیدا می کنم و بیشتر به آن علاقه مند و مجذوب آن می شوم. اکنون زمان کمتری برای کشف مشکلات و رفع آن نیاز است. من شخصاً ترجیح می‌دهم روی یک پروژه طولانی‌تر و عمیق‌تر کار کنم (در مقابل کار بر روی بسیاری از پروژه‌های مختلف). فکر می‌کنم جوانب مثبت و منفی وجود دارد، اما در حال حاضر فکر می‌کنم باید به یک پروژه پایبند باشم و عمیق‌تر باشم تا بتوانم درک کاملی از یک پروژه داشته باشم.و همچنین، در حال غلبه بر ترس برای یک پروژه بزرگتر هستم. Chatcraft پروژه بزرگی نیست، اما برای من با توجه به سطح مهارت برنامه نویسی من به اندازه کافی بزرگ است. من احساس می کنم که در حال رشد و پیشرفت هستم، که واقعاً خوشحالم می کند.

پیوندها

Repo که من روی آن کار کردم

مسائل

  1. https://github.com/tarasglek/chatcraft.org/issues/704
  2. https://github.com/tarasglek/chatcraft.org/issues/613
  3. https://github.com/tarasglek/chatcraft.org/issues/731

درخواست های کششی

  1. https://github.com/tarasglek/chatcraft.org/pull/712
  2. https://github.com/tarasglek/chatcraft.org/pull/714
  3. https://github.com/tarasglek/chatcraft.org/pull/732

این پست در مورد a Project-release 0.3 برای دوره OSD600 در کالج سنکا. برای نسخه 0.3، دانش آموزان ملزم به مشارکت در پروژه منبع باز بودند. این بار از ما خواسته شد که در پروژه بزرگ‌تری در مقایسه با آنچه برای Hacktoberfast کار کرده‌ایم، مشارکت کنیم و مشارکت‌های بزرگ‌تری داشته باشیم.

برای انتشار 0.3، تصمیم گرفتم روی پروژه ای که برای آخرین کامیت خود در طول Hacktoberfast روی آن کار کردم، کار کنم. به جای یافتن یک مخزن جدید، می‌خواستم روی پروژه‌ای کار کنم که قبلاً دانش آن را دارم. من فکر می کردم که این برای درک یک پروژه بزرگتر و چگونگی ساختار پروژه های بزرگتر و اینکه از چه پشته های فناوری استفاده می کنند و چگونه کار می کنند مفیدتر باشد. و مهمتر از آن، من چت کرافت را خیلی دوست دارم. من خیلی علاقه دارم React و Typescript، که در پروژه استفاده می شوند. بنابراین به کار روی این پروژه ادامه دادم.

مسئله 1

من به مسائل موجود در مخزن نگاه کردم و این مشکل را پیدا کردم. مسئله این بود که برای برخی از مدل های llm، نماد مناسبی ارائه نمی کرد.

چطور درست کردم

اول باید بفهمم علت این مشکل چیست. احساس درونی من به من می گفت که باید قسمتی وجود داشته باشد که منطقی را مدیریت کند که برای کدام نماد باید از آن استفاده کنند. شروع کردم به پیدا کردن قسمت با استفاده از git grep با جستجوی کلمات کلیدی مانند icon، model، و avatar. سپس، متوجه شدم که این منطق در کجا پیاده سازی شده است. مشکل این است که وقتی نماد را تعیین می کند، نام مدل را بررسی می کند. با این حال، برخی از نام های مدل شامل حروف بزرگ هستند، اما منطق حروف بزرگ را بررسی نمی کند، بنابراین من آن را به حروف کوچک و بزرگ حساس کردم.

مسئله 2

از آنجایی که من برای آخرین دو مشارکت روی مسائل مربوط به رابط کاربری کار کردم، با این موضوع اطمینان بیشتری پیدا کردم، و مشکل دیگری را پیدا کردم که مربوط به UI است، که در مورد سرریز غیر ضروری در PreferencesModal.

چطور درست کردم

پیدا کردن مشکل در کجا رخ می دهد بسیار سریعتر بود زیرا من قبلاً دو مشارکت داشته ام. با این حال، رفع مشکل به این راحتی نبود. میدونستم که باید درستش کنم css اما نمی دانست چگونه رویکردی که من اتخاذ کردم آزمون و خطا بود. من تمام راه حل هایی را که می توانستم به دست بیاورم امتحان کردم. به عنوان مثال، من سعی کردم مقداری بالشتک، حاشیه، ارتفاع یا عرض اضافه کنم و برخی را تغییر دادم css ویژگی هایی مانند display یا overflow-x. در نهایت، یکی از جعبه های انعطاف پذیر را پیدا کردم weight مشخص شده تا والدش سرریز نشود.

مسئله 3

در حالی که داشتم روی مسائل قبلی کار می کردم. وقتی باز کردم متوجه شدم که اشکالاتی وجود دارد PreferencesModal. برای آیفون، وقتی لمس می کنید input عنصر در PrefeencesModal، به طور خودکار بزرگنمایی می کند (تلفن اندرویدی به طور خودکار بزرگنمایی نمی کند). با این حال، به دلایلی، نمی‌توانید به اندازه معمولی بزرگ‌نمایی کنید (بزرگ‌نمایی و کوچک‌نمایی در هر محیطی، خواه موبایل یا ios یا دسکتاپ، جلوگیری می‌شود). این در واقع من را خیلی آزار می داد در حالی که با آن بازی می کردم Chatcraft و زمانی که داشتم برنامه را تست می کردم. برای همین موضوع را باز کردم.

چطور درست کردم

حالا آنقدرها طول نکشید تا بفهمیم کد این کار کجاست UI element از آنجایی که دو هفته است روی این پروژه کار می کنم واقع شده است. اگرچه می دانستم کدام صفحه مسئول این کار است، اما مطمئن نبودم که کدام عنصر را باید اصلاح کنم. با این حال، من احساس کردم که باید باشد Modal جزء، و من سعی کردم به آن نگاه کنم. با این حال، من چندان به Chakra-UI اطمینان نداشتم، و برخی از اجزای Chakra-UI منسوخ به نظر می رسیدند. هیچ سند رسمی برای برخی از قطعات وجود نداشت Modal. از آنجایی که هیچ سند رسمی وجود نداشت و همچنین ChatGPT به خوبی در مورد Chakra-UI نمی دانست، کمی ناامید شدم. در واقع ChatGPT در Chakra-UI بسیار بد است. من فقط شروع کردم به دنبال کردن کد و عمیق تر به کد. من انجام دادم ctrl + click در Modal جزء در VS Codeو کد کتابخانه را برای آن باز کرد. من انجام دادم ctrl + click در همه جای کد کتابخانه، و در نهایت رابط های prop را پیدا کردم که نشان می دهد چه گزینه هایی را می توانید به عنوان یک پایه به آن ارسال کنید. Modal جزء برخی از آنها در مورد scroll-block و zoom. من آن گزینه ها را امتحان کردم، و دقیقاً همانطور که می خواهم کار کرد.

من با این پروژه اعتماد به نفس بیشتری پیدا می کنم و بیشتر به آن علاقه مند و مجذوب آن می شوم. اکنون زمان کمتری برای کشف مشکلات و رفع آن نیاز است. من شخصاً ترجیح می‌دهم روی یک پروژه طولانی‌تر و عمیق‌تر کار کنم (در مقابل کار بر روی بسیاری از پروژه‌های مختلف). فکر می‌کنم جوانب مثبت و منفی وجود دارد، اما در حال حاضر فکر می‌کنم باید به یک پروژه پایبند باشم و عمیق‌تر باشم تا بتوانم درک کاملی از یک پروژه داشته باشم.
و همچنین، در حال غلبه بر ترس برای یک پروژه بزرگتر هستم. Chatcraft پروژه بزرگی نیست، اما برای من با توجه به سطح مهارت برنامه نویسی من به اندازه کافی بزرگ است. من احساس می کنم که در حال رشد و پیشرفت هستم، که واقعاً خوشحالم می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا