بررسی وضعیت signals در جنگو

سلام دوستان ایا توی جنگو روشی هست که بیایم بررسی کنیم که ایا سیگنال های که موقع ایجاد ابجکت داده شده انجام شدن یا نع هنوز در حال انجام هستن
کسی در این مورد نظری نداره

کلا اگر از signal ها فاصله بگیری بهتره. به نظر من یکی از بدترین چیزایی هست که جنگو داره و به مرور زمان خیلی دردسر ساز می شه

2 Likes

ممنون
روش بهتری برای مدیریت دارین یا خودتون استفاده کردین

روش بهتر اینه که جنگو استفاده نکنی :joy:

ولی اگر مجبوری خیلی بهتره تا می تونی متد های کلاس ها رو مستقیم override کنی. یه جاهایی که نمی شه مثل 3rd party libs دیگه مجوری بری سراغ سیگنال ها

1 Likes

الان من یه ریکامند سیستم درست کردم خوب بعد هر item جدیدی که توی اپ ذخیره میشه اطلاعاتش فرستاده میشه برای اون سرور

روشی هست که توی ذخیره شدن پست ها از ادمین پنل دخالت کرد

الان پست ها رو بعضی وقت ها با موبایل از طریق ادمین پنل اد میکنم بخاطر همین
باید روند ذخیره پست از درق ادمین پنل رو تغییر بدم

اینو فعلا نمیتونم :joy:

اوکی مرسی

توی بعضی جا ها از celery استفاده کردم با signal ها خیلی مشکل داشت

کلا مشکل سیگنال ها اینه که implicit هستند و راحت می شه فراموش کرد که همچین چیزی هست و دیباگ کردن رو خیلی سخت می کنن. اون کسی که این ایده رو داده باید پیدا کرد یه تیر زد تو پاش :joy:

3 Likes

چرا جایی که save میکنی به صورت explicit داده جدیدو نمیفرستی به سرور ؟

:joy: :joy:

به نظر شما چه فریمورکی از چه زبانی میتونه همچین کار های رو هندل کنه و کم نیاره
و یا این که خودش شما تجربه خوبی ازش داشته باشین

خوب همه کتابخونه ها و فریمورک های وب این کار رو می تونن انجام بدن و کم نمیارن. اما بستگی به دیزاینشون شما درگیر یه سری مشکلات می شین که در طولانی مدت می تونه خیلی به شما صدمه بزنه. من خیلی ترجیح می دم که از ابزار ها و زبان های فانکشنال استفاده کنم و مخصوصا کلوژر. ولی جدا از اون توی زبان های تو سطح پایتون خیلی خیلی روبی رو بیشتر ترجیح می دم و ریلز رو.

1 Likes

از فانگشنال ها elixir نگاه کردم جالب بود

ممون از راهنمای

2 Likes

نمیدونم چرا شما کلا با همه چیز مخالفید و در زمان هایی هم رنگ عوض میکنید و میگید با توجه به هدف باید از تکنولوژی، فریمورک و زبان استفاده کرد. شما براي اين مورد اصلا نمیدونید ایشون چیکار داره میکنه با جنگو و پاسخ میدید که از جنگو استفاده نکنه.

=====
Screenshot from 2020-04-21 22-29-00

=====
بهتره اول تکلیف خودتون با خودتون رو مشخص کنید. یا شما مخالف همه زبان ها و فریمورک ها به غیر از کلوژر هستید و یا اینکه در هر جایی بسته به نوع نیاز تکنولوژی، زبان و فریمورک انتخاب میشه.
و به عنوان یه همکار که بهتون خیلی احترام میزارم بابت اینکه لطف میکنید و به سوالات دوستان پاسخ میدید خواهش میکنم صرفا به سوال پاسخ بدید و هر سوالی رو به تاپیک آموزش و بیان برتری های کلوژر ختم نکنید. ما هم مثال شما هم از کلوژر استفاده میکنیم و از هم پایتون و سایر ابزارها وزبان ها و به شخصه هیچ برتری خاصی بدون در نظر گرفتن هدف نمیتونم بیان کنم.

:joy: یه جوری می گین انگار طرفداری تیم فوتبال هست و منم حذب باد هی از این تیم به اون تیم رنگ عوض میکنم.

تو این چند روزه یه پست در همین مورد جواب دادم. که دیدگاهم از نظر کاملا تکنیکال چیه و اگر فاکتور های دیگه توی داستان بیان چیه.

منظورم از هدف فقط هدف شخصی هست. مثلا کار خوب پیدا کردن یا اینکه نقل مکان و این چیزا که خوب خیلی تاثیر داره.

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

اگر می گم جنگو استفاده نکنین واسه اینه که ۱۱ سال هست دارم استفاده می کنم ازش از scale یه وب سایت کوچیک تا الان که بیشتر از که بیش از 100M req/sec داریم روش. طراحی سیگنال هاش یکی از ضعیف ترین و بدترین چیزایی هست که تاحالا دیدم. من به خیلی ها پایتون رو برای شورع و یه ابزار دم دستی پیشنهاد می کنم اما از نظر فقط تکنیکال به نظر زبان بسیار بی خودی هست ( که حالا می شه سرش بحث کرد )‌ اما به درد شورع می خوره به درد نوشتن سکریپت می خوره . کاملا باید منطقی با داستان برخورد کرد بر خلاف یه کامیونیتی مثل همین پایتون که خیلی تعصبی و چشم بسته طرفداریشو می کنن.

3 Likes

فکر میکنم اسپم داره میشه :slight_smile: ولی خب بهتره یه نتیجه ای داشته باشه.
من به شما بابت این انتقاد کردم که میگید از جنگو استفاده نکن بدون اینکه بدونید اصلا هدف ایشون چیه. اینکه پیشنهادتون استفاده نکردن از سیگنال رو میدید کاملا متفاوته با خود فریمورک (و باز هم فراتر زبان پایتون!!). ببینید شما به عنوان یه حرفه ای تاثیر زیادی روی افراد زیاد میذارید و من میخوام با انتقاد به شما به دیگران کمک کنم :slight_smile:

الان همین نظرتون مثلا. چرا واقعا کسی باید به یه زبان با همچین لحنی برخورد کنه؟ زبان بیخود مگه داریم اصلا؟ شما به تمامی کامیونیتی یکی از زبان های ترند جهان که احتمالا تعدادشون هم زیاده دارید توهین میکنید! و قبول دارم تعداد زیاد دلیل بر برتری نیست و صرفا دلیل بر محبوبیت هست و در همه زمینه ها همینه و نه فقط علوم کامپیوتر. من واقعا به این نحو برخورد شما که در هر سوالی بجای پاسخ مستقیم به پرسش به دنبال مقایسه زبان ها با کلوژر هستید و یا در لفافه تمایل به سخره گرفتن تکنولوژی و زبان کسی که داره سوال میپرسه رو دارید ( و نه پاسخ به سوال) به طور جدی انتقاد دارم و حس میکنم فضای حاکم رو به تنش دارید میکشونید دوست عزیز. اکثر تاپیک ها شده کل کل که این بهتره نه اون بهتره. این صحبت ها که به طور کلی یک زبان رو بکوبن و یا بیارن بالا جایی نداره در علوم کامپیوتر و فقط در زمینه های متفاوت بهترین رو میشه پیشنهاد داد (و بازم میگم اصلا شما نمیدونید ایشون چیکار دارن میکنن و میگید جنگو استفاده نکن!!!). جالبه من خودم به عنوان یکی از کامیونیتی لیسپ/کلوژر در مقابل شما قرار گرفتم. موفق باشید

اگر شما مد نظرتون سیگنال های داخلی جنگو برای مدل ها هست چهار حالت کلی داره. pre_init , post_init و pre_save و post_save .
اگر شما از object manager کاستومایز شده استفاده نمیکنید و خود جنگو میاد این ابجکت رو در دیتابیس میسازه میتونید از سیگنال post_save استفاده کنید و مطمین باشید که ابجکت ساخته شده و در دیتابیس ذخیره شده. حالا اگر بتونید بیشتر توضیح بدید که هدفتون چی هست بهتر میتونم کمکتون کنم. داکیومنت جنگو - سیگنال هم مطالعه کنید خیلی کمکتون میکنه.
و به نکته ای که ایشون گفتن توجه کنید چون این سیگنال ها رو اگر درست استفاده نکنید باعث میشه بعدها به مشکلات جدی برای دیباگ کردن و پیشبینی رفتار برنامتون پیش بیاد. چون این سیگنال ها به صورت built_in صدا زده میشن و شما توی خط کدهاتون نمیتونید متوجه بشید که سیگنالی ارسال شده یا خیر. ولی اگر بجا استفاده بشن خیلی میتونه مفید باشه.

سیگنال ها مثل callback
ریلز یکی از anti pattern های معروف هستند

من چند تا داستان خیلی ترسناک از استفاده callback ها در یک شرکت که کار میکردم دارم

خیلی از این نظر هارو با تجربه تلخ کسب شده شما میخواهی خودت دستت را ببری تو آتیش خود مختاری

2 Likes

اول اینکه فکر می کنم واضح بود که اینی که گفتم راه بهتر اینه که از جنگو استفاده نکینی شوخی بود ( اون سمایلی کنارش فکر کنم اینو می رسوند) اما در کل اگر می حق انتخاب دارند چرا نرن سراغ ابزار بهتر. جنگو فریم ورک خوبی نیست مشکل زیاد داره. تجربم می گه کسی که داره می ره تون این مسیر رو راهنمایی کن که نره تو چاه.

سیگنال ها هم چیزایی هستند که تا وقتی یکی تفنگ نذاشته رو سرت و گفته باید از سیگنال استفاده کنی وگرنه بنگ. نباید ازش استفاده کنی. کلا دیزاین غلطی هست.

اینکه بگی یه زبان بی خوده چه لحن بدیه ؟ بد بودن بی خود بودن یه صفت همین و خوب ابراز حقیقت بوده. شما ناراحت نشین. نظرم بوده.

بله. پایتون، php و … دلیل هم داره.

همممم اینکه افراد رو تعصبی خطاب کنم توهین نیست دوباره. خیلی ها تعصبی هستند توی دنیای تک. من هم بودم خوش بختانه الان نیستم. منم یه زمانی واسه پایتون گریبان می دریدم :joy: . ولی یه دوستی منو متوجه اشتباهم کرد و راهم عوض شد. حالا یه سری ها یا مثل من خوش شانس نیستن که دوست خوبی مثل اون بنده خدا داشته باشن. یه سری ها هم چشم ها رو بستن . این وسط به کسی توهین نشده.

اگر همین پست رو دباره مطالعه کنین می بینین که من تا زمانی که ازم در این مورد سوال نشده چیزی در مورد کلوژر نزدم.

فکر نمی کنم تنشی بین من و @mhabdi وجود داشته باشیه حتی یه ذره.

:wink:

من به شدت روی این حرفم پا فشاری می کنم. سیگنال ها ابزار خطرناکی هستند و نباید ازشون استفاده کرد. به هیچ وجه

3 Likes

دوست من موضوع رو شخصی نکنید یک چیزی که بده یا بی خوده باید گفت بی خود حالا اون زبان در یک موردی جامعه بهتری داره به عنوان ابزار باید ازش استفاده کرد بر اساس نیاز پروژه ولی دلیلی بر اینکه مشکل نداشته باشه نیست.

در کل زبان یک ابزار هست و نباید تعصب داشت. و باید نقد کرد حتی خشک و بسیار روک

7 Likes