مطمئناً نادرست است – برنامه مجموعه دستور العمل: تاکنون …

مطمئناً از سال 1987 نادرست است
راه اندازی
بنابراین من همچنان به کدنویسی ادامه میدهم در حالی که به دنبال اولین شغل خود در زمینه کارآموزی (Alternance، اینجا در فرانسه) به عنوان یک برنامهنویس نرمافزار هستم، همانطور که قبلاً گفتهام برنامه درسی پروژه Odin را دنبال میکردم، اما اخیراً تمرکزم روی یک برنامه درسی متمرکز شده است. پروژه جانبی شخصی که در زمانی که در مدرسه فناوری Ada درس می خواندم با آن بازی می کردم، وب سایتی که مردم می توانستند مجموعه دستور العمل های خود را از انواع وب سایت های مختلف، معروف، دستور پخت و آشپزی تهیه کنند.
الهام اولیه زمانی شروع شد که من به طور تصادفی با یک کتابخانه خراش وب ساخته شده در پایتون با هدف صریح خراش دادن از این منابع محبوب دستور العمل ها، رسپی-خراش ها، آشنا شدم.
برنامه اولیه من که اکنون مدت ها رها شده بود این بود که از Next/Nuxt برای ایجاد قسمت جلویی استفاده کنم و قسمت پشتی آن در پایتون باشد، به من اجازه دهد از کتابخانه دستور العمل ها استفاده کنم و از Supabase برای سازماندهی پایگاه داده استفاده کنم. کاربران و مجموعه دستور العمل های آنها، و به کاربران اجازه می دهد لیستی از مواد تشکیل دهنده را وارد کنند و مجموعه ای از دستور العمل ها را از مجموعه گزینش شده خودشان که حاوی آن دستور العمل ها است، به آنها ارائه شود، به مردم این امکان را می دهد تا بر اساس مواد موجود، الهام بگیرند که چه چیزی بپزند. به آنها در آن زمان با استفاده از کتابخانه recipe-scrapers، من به آنها اجازه می دادم یک URL برای اضافه کردن یک دستور غذا به مجموعه خود وارد کنند، و همچنین صفحه ای که تمام دستور العمل های ذخیره شده در مجموعه را نمایش می دهد و به آنها اجازه می دادم هر چیزی را که دیگر نمی خواستند حذف کنند. مشمول. هیچ چیز خیلی احمقانه ای نیست، یک ایده ساده بسیار شیرین، که مطمئن می شوم به اندازه کافی پاسخگو باشد تا هنگام مشاهده با تلفن خوب به نظر برسد.
یکی دو هفته کار و تمام میشه….
آغاز ==واقعی==
بنابراین با تمام اعتماد به نفس کسی که می خواست متوجه شود چقدر اشتباه می کرد، به دنبال راه اندازی یک پروژه Nuxt در دایرکتوری frontend خودم رفتم و خیلی سریع در میان زنگ ها و سوت ها و عملکردهای گنجانده شده گم شدم، همه آنها بسیار مفید و آماده شدند. ، اما به سرعت متوجه شدم که در واقعیت، تنها چیزی که واقعاً میخواستم این بود که با استفاده از Vue تمرین کنم، بنابراین با یک مسیر برگشت سریع و نصب سریع Vite Vue3، به نقطه اول برگشتم، البته با کمی درک بیشتر از کجا. و زمان استفاده از Nuxt، یعنی در یک پروژه بزرگتر و پیچیده تر و در آینده زمانی که من تجربه بیشتری داشتم.
مرحله بعدی راه اندازی دایرکتوری backend من بود، که باید کمی ساده تر باشد، من قبلاً کمی از پایتون استفاده کرده ام، نیازی به فرو رفتن در جنگو نیست، می دانستم که Flask یک چارچوب نسبتا سبک وزن است که می توانم از آن برای باطن خود استفاده کنم، و من کاملاً مطمئن بودم که موارد ضروری را که برای پروژه من نیاز داشتم را دارد… و حداقل تا اینجای کار درست بودهام.
ولی پسر من محیط های مجازی و مسائل وابستگی رو پیش بینی نکردم….
عملاً به محیط زیست وابسته است
تجربه قبلی من با پایتون بسیار کم عمق بود، فقط نوشتن اسکریپت های کوچک و دنبال کردن چند آموزش، ساخت بازی های ساده مبتنی بر کنسول و مواردی از این دست. راهاندازی یک محیط مجازی لزوماً دشوار نبود، اگرچه سادهترین کاری نیست که از زمان شروع یادگیری کدنویسی انجام دادهام، اما واضح است که بسیار مفید است. ایجاد یک محیط قابل تنظیم، که در آن نسخه پایتونی را که میخواهم استفاده کنم، تعریف میکنم و کتابخانههای مورد نیاز را در یک محیط محلی نصب میکنم، و من را از آلوده کردن محیط جهانی پایتون با کتابخانههای نسبتاً تخصصی و خاص باز میدارد.
مشکل اصلی بعد از راه اندازی محیط مجازی من و نصب کتابخانه recipe-scrapers و وابستگی های آن بود ….. کار نکرد.
اکنون، چند ماه از آخرین باری که از کتابخانه دستور خراشها استفاده کرده بودم گذشته بود، اما نمیتوانستم ببینم چرا کار نمیکند. غریزه اولیه من این بود که در کدم اشتباه کرده بودم، اما در نهایت پس از تأیید اجرای صحیح آن، فکر کردم که شاید در راه اندازی venv (محیط مجازی) خود اشتباه کرده ام، که جدیدترین فناوری من است. اجرا شد ولی بعد از حذف و راه اندازی مجدد و بدون هیچ مشکل واضحی… حداقل 3 روز گیر کردم (اگر صادقانه بگم بیشتر شبیه یک هفته کامل…)
در نهایت برای کتابخانه به GitHub برگشتم و مشکلات مطرح شده را بررسی کردم و دیدم، درست در بالای صفحه شخصی به این موضوع اشاره می کند:
افزودن lxml>=5.0.0،<5.1.0 به requires-dev.txt و نصب مجدد از طریق pip این مشکل را برای من حل کرد.
اه اه! تسکین شیرین، حماقت خود من نبود که باعث ایجاد مشکلات شد، بلکه وابستگی به کتابخانه دستور العملها که یک به روز رسانی سریع دارد! و راه حل همین جاست، خدا را شکر که نارضایتی دارید!
این در یک مسیر انحرافی کوتاه برای کاوش در مورد استفاده و مفید بودن یک فایل requires.txt (یک فایل json.lock pythonesque که تمام کتابخانههای لازم و نسخه مورد نیاز را فهرست میکند) ارسال شد و مشکل من را حل کرد.
در نهایت، یک دستور پخت کار!
آماده سازی کامل شد …. حالا چی؟
بنابراین بالاخره من همه چیز را سر جای خود داشتم. دایرکتوری ریشه من دارای دایرکتوری های بک اند و فرانت اند بود، با یک محیط مجازی پایتون که با ساختار چارچوب Flask در جای خود راه اندازی شده بود، و یک کتابخانه دستور-خراشگر کار می کند، و یک پروژه vite-Vue در دایرکتوری frontend من راه اندازی شده بود.
مرحله بعدی برنامه ریزی معماری سایت و فهمیدن اینکه چه مسیرهایی را باید تعریف کنم، به چه نوع صفحات مختلفی نیاز دارم، چه عملکردی را می خواهم برای MVP اضافه کنم … صبر کنید، من چیزی را فراموش می کنم. ….
پایگاه داده پایه
بخش پایانی سه پایه تنظیم من، یک پایگاه داده! بنابراین فکر اولیه من این بود که از یک پایگاه داده مبتنی بر SQL با جداول در همه جا استفاده کنم. در حال بازگرداندن یک JSON، تصمیم گرفتم MongoDB را بررسی کنم، زیرا میدانستم که سیستم مبتنی بر سند ممکن است برای برنامه من مناسبتر نباشد و دستور العملها را به عنوان اسناد در مجموعهای برای دستور پختها و اطلاعات مربوطه (عنوان، تصویر، زمان پخت، مواد لازم، دستورالعمل های آشپزی) و داشتن مجموعه ای جداگانه برای کاربران (نام کاربری، ایمیل، رمز عبور). بنابراین با استفاده از راهاندازی آنلاین MongoDB Atlas، یک پایگاه داده اولیه ایجاد کردم و با استفاده از رشته اتصال ارائه شده، میتوانم از باطن خود به پایگاه داده خود متصل شوم!
پایان آغاز
بنابراین در حال حاضر من همه قطعات را در جای خود و آماده دارم، و باید کمی به ترسیم معماری خود سایت و تقریباً ترسیم مسیرهای API فکر کنم. در مقاله بعدی خود، مراحل بعدی را که برداشتهام و نحوه شکلگیری و تکامل ساختار سایت واقعی و همچنین جزئیات بیشتری از کد واقعی استفاده شده در قسمتهای جلویی و پشتی را شرح خواهم داد.
تا دفعه بعد، ایمن و شاد باشید، از اینکه وقت گذاشتید و مقدمه و تنظیم پروژه جانبی کوچک من را مطالعه کردید متشکرم.