-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
نظر / پیشنهادات / سوال در مورد پروژه #3
Comments
به ندرت دیده می شود بین خطوط فاصله ای باشد و این مورد تنها برای توابع رعایت شده است و خوب است. مورد بعد اینکه متغییر های اصلی یک تابع را سعی کنید به بالا و ابتدای تابع منتقل کنید و بعد از تمام شدن متغییر ها هم یک new line برای جدا کردن از ادامه کد قرار دهید. |
در برخی جاها بعد و قبل از = فاصله ای وجود ندارد و در برخی جاها وجود دارد.
|
در نوشتن دستورات SQL بهتر است عادت بشود کلمات کلیدی و اصلی با حروف بزرگ نوشته بشود و شناسه هایی که مربوط به پایگاه داده ما / جداول و ستون ها هست بین دو کاراکتر grave قرار گیرد.
البته تصحیح بشود که این مورد اخر که اشاره کردم مربوط به mariadb است و در psql اصولا به این صورت نیست. |
پیشنهاد: |
نکته: |
متغییر های const را به بالا منتقل کنید حتی می تواند بالاتر از تعریف types ها قرار گیرد. پیشنهاد: بهتر است که مشخصات محرمانه را از سورس کد جدا کنید و از فایل .env بخوانید. |
بله راجب این مورد هم قبل تر بهتون گفتم که میخوام متغیرهای محرمانه رو داخل فایل env. ببرم و از کتابخونه go-dotenv استفاده کنم |
خوب است که از این تابع ویژه گو نیز استفاده کردید )
|
جایی ندیدم که در حین درج یا ویرایش نام یک لینک بررسی کنید که نام جز اسامی رزرو شده و کلیدی هست یا خیر. |
اگر مشکلات روتر حل شده است می توانید پیشوند /links که به تمام روت ها داده اید را نیز حذف کنید. |
چشم این کار رو حتما انجام میدم |
در توضیح پروژه ذکر شده بود که دو شیوه برای ایجاد یک لینک کوتاه وجود دارد اما در حال حاظر تنها یک شیوه پیاده سازی شده است:
شیوه دوم نیز اضافه بشود خوب است.
که البته در این حالت نیاز به مقدار نام در پست ندارد و ان را از لینک میگیرد. پیشنهاد: سعی کنید از تکرار کردن کد های تکراری بین این دو مسیر خودداری کنید. |
از انجایی که تمام این ثابت ها مربوط به دیتابیس هستند بهتر است در نام انها این موضوع نیز مشخص بشود. |
همانطور که در توضیح داشتیم برای ایجاد لینک کوتاه حتما نیاز به وبسرویس نبود و هر کسی اجازه درج لینک کوتاه را داشت. بنابراین در روت هایی مثل زیر وجود وبسرویس لازم نباید باشد اما وجود داشتن آن باعث ذخیره لینک کوتاه شده بدون محدودیت زمانی خواهد بود:
|
در مورد شناسه یا نام لینک ها
ب |
در مورد شناسه ها در نظر داشته باشید که باید trim کنیم و بررسی کنیم که رشته تهی نباشد و در صورتی که نامی که کاربر ارسال کرده است خالی است خطایی نشان بدهیم
ب |
در مورد وبسرویس ایجاد لینک کوتاه در صورتی که کاربر name ای ارسال کرده است پس باید معتبر باشد و بعد از حذف کاراکتر های اضافه تهی نباشد. اگر چنین باشد خطا خواهد بود. اما در حالتی که نامی فرستاده است که مجاز است لینک کوتاه شده ایجاد خواهد شد. حتی در حالتی که کاربر نامی ارسال نکرده است نیز باید لینک کوتاه ایجاد بشود. و یک شناسه تصادفی برای آن در نظر گرفته بشود. |
خطا در کد زیر این مورد بنظر رخ میدهد:
|
من این بخش رو آپدیت کردم ولی هنوز pr نزدم این بخش الان اگر کاربر مقدار درستی برای limit وارد نکرده باشه یک ریسپانس بر میگردونه و میگه که مقدار limit اشتباهه |
در اینجا هم احتمالا همین مورد وجود دارد و در صورتی که دیتابیس به هر دلیلی به مشکلی برخورد کند کل سرویس ممکن است متوقف شود. |
در رابطه با خطاها هم در صورتی که کنار برنامه یک فایل .log نیز تولید کنید به توسعه برنامه کمک می کند در این حالت اگر وبسرویس بالا باشد و کاربران استفاده کنند در صورتی که باگ و مشکلی نیز وجود داشته باشد با مراجعه به فایل لاگ می توانید از این موضوع مطمئن شوید. |
چشم حتما نوشتن لاگ در فایل رو به بهترین شکل اضافه میکنم |
بهتر است از تکرار خودداری بشه و در اخر قبل از ارسال خروجی استاتوس مثبت چک بشود که اگر کوئری به درستی ران شده است خروجی مثبت باشد در غیر این صورت خطا نمایش بدهد و خروجی استاتوس منفی باشد. |
خیلی عالی. خوب بود. مواردی که نوشتم رو میتونید بررسی و بهبود بدید. راستی بهتر است که برنامه نیز به چندین فایل تقسیم بشود. فعلا |
واقعا واقعا ممنونم ازتون خیلی خیلی نظرات سازنده و خوبی بود و بیشتر برای من این جالب بود که تقریبا نصف اون ها رو حین کد زدن با خودم فکر میکردم که الان انجام بدم یا بزارم برای ریفکتور کردن و چون فقط میخواستم سریع یک چیزی بنویسم که کار بکنه و بعد ریفکتور بکنم قید خیلی چیزها رو زدم اما خیلی چیزها رو هم اصلا حواسم بهشون نبود و درست بهشون فکر نکرده بودم همه نظرات و پیشنهاداتتون تمام و کمال اعمال میشه خیلی ممنونم از وقت با ارزشی که گذاشتید |
سلام Line 10 in 739eb24
من باشم بین کتابخانه هایی که خارجی هستند (جز اصل زبان نیستند) و کتابخانه هایی که داخلی برای خود پروژه هست تفکیک سازی می کردم و یک خط جداسازی قرار میدادم. بهرحال این یک نظر است. |
در ریدمی طبق توضیحات نوشته شده به عنوان مثال: هردو مسیر گفته شده است پاسخگو است. آیا این مورد لحاظ شده است و / در انتها اختیاری هست یا خیر؟ |
POST /:name or POST /:name/ این دو مسیر هم به همین صورت. |
منظورتون رو از جدا سازی نفهمیدم |
خیلی ممنون |
https://github.com/BaseMax/BitlyGo/blob/main/api/root.go#L6 این مورد قراره تکمیل بشه؟ |
اره انقدر درگیر بقیه بودم که این رو بلکل یادم رفت |
مورد مشابه اپدیت شد: |
باید فردا بشینم برای کل توابع پروژه کامنت بنویسم |
قبلا چند فایل migrations وجود داشت اما الان تنها یک فایل شده است. آیا چیزی از بین رفته یا جا مانده است؟ |
جدولی برای api keys ها هم بنظر وجود ندارد. یا احتمالا حذف شده است. |
کامیت زدم به عنوان rebuild migrations به خاطر این بود که توی اون تیبل ها خیلی داشتم حاشیه میرفتم و اصل مطلب اصلا گم شده بود تصمیم گرفتم که اول اصل مطلب رو پیاده سازی کنم و بعد برم سراغ حواشی |
داشتم فایل https://github.com/BaseMax/BitlyGo/blob/main/pkg/strutil/regex.go رو میخوندم. آیا تابعی باری اعتبار سنجی لینک ها نیز استفاده شده است که اعتبار سنجی کند لینک های هدف که قرار است کوتاه شود لینک صحیحی است یا نه؟ |
بله از پکیج url استفاده کردم برای این کار |
ممنون دیدم خوبه: Line 46 in 17bf999
|
بنظر من این روند مقداری مشکل دارد. وقتی که قرار است لینکی با یک شناسه تصادفی تولید بشود. تا زمانی که یک شناسه یکتا تولید نشده است روند تولید شناسه تصادفی باید تکرار بشود و انتظار میرود که لینک با موفقیت ساخته بشود و کاربر خطای لینک تکراری نگیرد چون کاربر شناسه ای را تعیین نکرده است. البته با این فرض گفتم که خطاهای تکراری بودن شناسه را هندل کرده اید. |
این که شناسه نباید تکراری باشه رو هندل کردم و حتی ارور مسیح در این باره هم ریسپانس میشه اما به این که هی بسازه تا وقتی که یونیک باشه رو متاسفانه توجه نکردم |
آیا چیزی در ذهن دارید و بنظرتان بخشی از کار هست که باقی مانده است؟ |
بله توی تلگرام مطرح کردم الان هم اینجا میفرستم دوباره ببخشید یک سوال داشتم تازه داشتم فکر میکردم که اگه بخوایم یه تیبل داشتیم برای کاربران و دوتا route هم اضافه کنیم برای رجیستر و لاگین توی لینک ها یه محدودیت به وجود میاد برای کاربرانی که رجیستر نکردن اونم اینه که فقط میتونن لینک بسازن و آپدیت کنن و حذف کنن نظری برای این بخش ندارید؟ |
متوجه نشدم سوال دقیقا چیست |
سلام، شرمنده من دیشب خوابم برد و نتونستم جواب شما رو به موقع بدم الان کامل شرح میدم. ببینید فرض کنید ما یک سرویس داریم که میایم کاربرهای جدید رو رجیستر میکنیم و براشون یک عدد api key میسازیم حالا این کاربران میتونن لینک بسازن و از تمامی فیچرهای وب سرویس ما استفاده کنن اما حالا از یه سمت دیگه یک سری ها هم هستن که رجیستر نکردن و توی دیتابیس ما هم نیستن و مسلما api key هم ندارند حالا چه اتفاقی میوفته؟ لینک هایی که این افراد میسازن بدون owner_id در دیتابیس ثبت میشه انگار که این لینک هیچ صاحبی نداره پس بنابراین اندپوینت هایی مثل top/ یا search/ یا expire-soon/ برای کاربران ثبت نام نشده نمیتونه پاسخ بده، حالا چرا؟ به خاطر این که ما نمیدونیم کدوم لینک ها توی دیتابیس برای این فردی هست که رجیستر نکرده امیدوارم که منظورمو خوب رسونده باشم و زیاد پیچیده نکرده باشم😅 به هر حال ایده ای دارید برای مشکل بالا؟ |
سلام |
نه اعتبار سنجی اجباری نشود. خوب نیست. داکر هم اضافه کنید عالیست که این کار را ببندیم. |
حله پس من اون سه قسمت رو عمومی میکنم برای مهمان ها و داکر هم اضافه میکنم سعی میکنم تا شب تمومش کنم |
سلام |
سلام آیا مشکل حل شده؟ و اگر نه پوش کنید نگاهی کنم.
…On Wed, Aug 31, 2022, 11:15 AM Ahmad Amoori - [Freelancer] < ***@***.***> wrote:
سلام
من دیشب کامل کردم همه چیزو و کد به خوبی کار میکنه اما موقع داکرایز کردن سر
docker-compose یک مشکلی برام پیش اومد و تا ساعت ۵ صبح هم نشستم پاش و باز هم
حل نشد مشکل اینه که docker-compose نه اجازه میده من environment variable ست
کنم نه اجازه میده من command ران کنم هرچیم سرچ میکنم جواب خوبی پیدا نمیکنم
—
Reply to this email directly, view it on GitHub
<#3 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAUI56HKSKN7VIFTQIRC4GDV335PNANCNFSM57UYZZXA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
سلام بله مشکل خیلی وقته حل شده و بنده pr هم زدم |
مرج شد. کار تمامه؟ |
یک تابعی تازه اضافه کردم اما نمیتونم پول ریکوئست بزنم تغییر رو نمیتونه ببینه فکر کنم چون همزمان با مرج شدن بود ولی اره کار تمومه |
دوباره pr بفرستید. |
نمیزاره میگه که هیچ فرقی باهم ندارن |
بالاخره شد |
سلام ایراداتی را در README.md دیدم که حل شد می توانید چند کامیت اخیر را نگاهی داشته باشید. |
سلام حتما الان نگاه میندازم |
به نام خدا
سلام
جاهایی که از تابع GetUserByApiKey استفاده می شود احتمالا باید بررسی بشود که آیا کاربری یافت شده است یا خیر. مثل:
در چند جا این مورد کامل بررسی نشده است. مثل:
The text was updated successfully, but these errors were encountered: