Forwarded from Ninja Learn | نینجا لرن
💎 پکیج joi در جاوااسکریپت 💎
امروز میخوام در مورد یه پکیج خفن به اسم joi توی جاوااسکریپت صحبت کنم. 😎
خب بذارید اول بگم joi چیه و به چه دردی میخوره. 💡
فرض کن توی پروژهت میخوای ورودیهای کاربر رو validate کنی، مثلا فرم لاگین، ثبت نام، یا هر چیزی که قراره دیتای کاربر رو بفرسته.
معمولا برای اینکه مطمئن بشیم اطلاعاتی که میگیریم درسته، مثل ایمیل درست باشه، پسورد حداقل تعداد کاراکتر رو داشته باشه و ...، باید خودمون یه سری شرط بنویسیم که معمولا کدنویسی زیادی میطلبه.
حالا اینجاست که joi وارد میشه! 😎
با این پکیج میتونی خیلی راحت و سریع همه چیز رو ولیدیت کنی و نیازی نیست کلی کد بنویسی. 🙌
❓چطوری نصب کنیم؟
خیلی سادهست:
❓حالا استفادهاش چطوریه؟
یه مثال ساده میزنم:
همونطور که میبینید، با joi میتونید به راحتی اسکیماهای مختلف برای ولیدیت کردن دیتا تعریف کنید.
نیازی نیست نگران درست بودن دیتا باشید، چون خودش همه چیز رو چک میکنه. 😎💪
برای مطالعه بیشتر میتونید به این سایت مراجعه کنید 😁
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوام در مورد یه پکیج خفن به اسم joi توی جاوااسکریپت صحبت کنم. 😎
خب بذارید اول بگم joi چیه و به چه دردی میخوره. 💡
فرض کن توی پروژهت میخوای ورودیهای کاربر رو validate کنی، مثلا فرم لاگین، ثبت نام، یا هر چیزی که قراره دیتای کاربر رو بفرسته.
معمولا برای اینکه مطمئن بشیم اطلاعاتی که میگیریم درسته، مثل ایمیل درست باشه، پسورد حداقل تعداد کاراکتر رو داشته باشه و ...، باید خودمون یه سری شرط بنویسیم که معمولا کدنویسی زیادی میطلبه.
حالا اینجاست که joi وارد میشه! 😎
با این پکیج میتونی خیلی راحت و سریع همه چیز رو ولیدیت کنی و نیازی نیست کلی کد بنویسی. 🙌
❓چطوری نصب کنیم؟
خیلی سادهست:
npm install joi
❓حالا استفادهاش چطوریه؟
یه مثال ساده میزنم:
const Joi = require('joi');
const schema = Joi.object({
username: Joi.string().alphanum().min(3).max(30).required(),
password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),
email: Joi.string().email({ tlds: { allow: false } })
});
حالا میایم دیتا رو با این اسکیما ولیدیت میکنیم
const { error, value } = schema.validate({
username: 'user123',
password: 'mypassword',
email: '[email protected]'
});
if (error) {
console.log('خطا: ', error.details);
} else {
console.log('همه چی اوکیه: ', value);
}همونطور که میبینید، با joi میتونید به راحتی اسکیماهای مختلف برای ولیدیت کردن دیتا تعریف کنید.
نیازی نیست نگران درست بودن دیتا باشید، چون خودش همه چیز رو چک میکنه. 😎💪
برای مطالعه بیشتر میتونید به این سایت مراجعه کنید 😁
#JOIValidation #JavaScriptTips #BackendDevelopment
Forwarded from Syntax | سینتکس (alireza-fa)
امروز یه باگ بامزه تو پروژه Django خورد تو صورتم که گفتم باهاتون درمیون بذارم، شاید یه روزی به دادتون برسه!
اگه بعد از ساختن یه آبجکت توی ویو (مثلاً با متد create) بلافاصله آیدی اون رو بدی به یه تسک Celery، ممکنه توی محیط پروداکشن با ارور DoesNotExist مواجه بشی — در حالی که لوکال همه چیز درست کار میکنه!
چرا این اتفاق میافته؟
چون وقتی تنظیماتی مثل ATOMIC_REQUESTS = True فعال باشه، Django تا زمانی که ریکوئست کامل نشه، اطلاعات رو به دیتابیس commit نمیکنه.
از اون طرف Celery تسک رو بلافاصله بعد از پاسخ 201 اجرا میکنه؛ یعنی قبل از اینکه دیتابیس واقعاً اطلاعات رو ذخیره کرده باشه.
راهحل درست و اصولی:
به جای اینکه تسک رو همون لحظه اجرا کنیم، باید صبر کنیم تا commit تموم بشه.
و Django خودش این ابزار رو بهمون داده:
transaction.on_commit(lambda: my_task.delay(obj_id))
این خط یعنی: «بعد از اینکه commit شد، حالا برو سراغ تسک.»
یه نکته ساده ولی حیاتی که میتونه جلوی کلی باگ دردسرساز رو بگیره — مخصوصاً وقتی کد رو از dev میبریم روی production!
Source
#django
@Syntax_fa
اگه بعد از ساختن یه آبجکت توی ویو (مثلاً با متد create) بلافاصله آیدی اون رو بدی به یه تسک Celery، ممکنه توی محیط پروداکشن با ارور DoesNotExist مواجه بشی — در حالی که لوکال همه چیز درست کار میکنه!
چرا این اتفاق میافته؟
چون وقتی تنظیماتی مثل ATOMIC_REQUESTS = True فعال باشه، Django تا زمانی که ریکوئست کامل نشه، اطلاعات رو به دیتابیس commit نمیکنه.
از اون طرف Celery تسک رو بلافاصله بعد از پاسخ 201 اجرا میکنه؛ یعنی قبل از اینکه دیتابیس واقعاً اطلاعات رو ذخیره کرده باشه.
راهحل درست و اصولی:
به جای اینکه تسک رو همون لحظه اجرا کنیم، باید صبر کنیم تا commit تموم بشه.
و Django خودش این ابزار رو بهمون داده:
transaction.on_commit(lambda: my_task.delay(obj_id))
این خط یعنی: «بعد از اینکه commit شد، حالا برو سراغ تسک.»
یه نکته ساده ولی حیاتی که میتونه جلوی کلی باگ دردسرساز رو بگیره — مخصوصاً وقتی کد رو از dev میبریم روی production!
Source
#django
@Syntax_fa
Linkedin
#django #celery #pythontips #databasetransactions #backenddevelopment… | Amir Derakhshanfar | 41 comments
امروز یه باگ بامزه تو پروژه Django خورد تو صورتم که گفتم باهاتون درمیون بذارم، شاید یه روزی به دادتون برسه!
اگه بعد از ساختن یه آبجکت توی ویو (مثلاً با متد create) بلافاصله آیدی اون رو بدی به یه تسک Celery، ممکنه توی محیط پروداکشن با ارور DoesNotExist مواجه…
اگه بعد از ساختن یه آبجکت توی ویو (مثلاً با متد create) بلافاصله آیدی اون رو بدی به یه تسک Celery، ممکنه توی محیط پروداکشن با ارور DoesNotExist مواجه…
Forwarded from Golden Code (علی 🇨🇴)
"چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور میکنن Laravel جواب نمیده! ولی واقعیت اینه که اگر از ابزارها و تکنیکهای درست استفاده کنی، Laravel خیلی هم قدرتمنده
✅ استفاده از Queue Jobs
ارسال عملیاتهای سنگین به صف برای پردازش در پسزمینه
✅ بهینهسازی دیتابیس: تعریف Index مناسب
استفاده از Query Builder به جای Eloquent برای کوئریهای سنگین یا حتی اگه می تونین کوئری خام بنویسین معجزه رو می بینید
✅ استفاده از Transaction
برای تضمین atomic بودن عملیاتهای حساس جاهایی که چند کار مرتبط با هم رو می خواین انجام بدین عالیه
✅ استفاده از chunk
بارگذاری و پردازش دادههای بزرگ بهصورت تکهای
✅ ۵. استفاده از Redis یا Kafka
برای صفهای سریع و سبک Redis
برای پروژه های بزرگ و real-time کافکا باور کنید معجزه می کنه
✅ بهینه سازی کد PHP و مصرف حافظه
استفاده از cursor() بهجای بارگذاری کل دیتا
جلوگیری از لوپهای سنگین و غیرضروری
نتیجه؟
اگه این موارد رو به درستی پیاده کنید، Laravel بهراحتی از پس میلیونها ترنزاکشن برمیاد بدون اینکه اپلیکیشنت کرش کنه! "
#Laravel
@GoldenCodeir
(به منبع توجه کنید👇🏾)
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور میکنن Laravel جواب نمیده! ولی واقعیت اینه که اگر از ابزارها و تکنیکهای درست استفاده کنی، Laravel خیلی هم قدرتمنده
✅ استفاده از Queue Jobs
ارسال عملیاتهای سنگین به صف برای پردازش در پسزمینه
✅ بهینهسازی دیتابیس: تعریف Index مناسب
استفاده از Query Builder به جای Eloquent برای کوئریهای سنگین یا حتی اگه می تونین کوئری خام بنویسین معجزه رو می بینید
✅ استفاده از Transaction
برای تضمین atomic بودن عملیاتهای حساس جاهایی که چند کار مرتبط با هم رو می خواین انجام بدین عالیه
✅ استفاده از chunk
بارگذاری و پردازش دادههای بزرگ بهصورت تکهای
✅ ۵. استفاده از Redis یا Kafka
برای صفهای سریع و سبک Redis
برای پروژه های بزرگ و real-time کافکا باور کنید معجزه می کنه
✅ بهینه سازی کد PHP و مصرف حافظه
استفاده از cursor() بهجای بارگذاری کل دیتا
جلوگیری از لوپهای سنگین و غیرضروری
نتیجه؟
اگه این موارد رو به درستی پیاده کنید، Laravel بهراحتی از پس میلیونها ترنزاکشن برمیاد بدون اینکه اپلیکیشنت کرش کنه! "
#Laravel
@GoldenCodeir
(به منبع توجه کنید👇🏾)
https://www.linkedin.com/posts/fererydoon-salemi_laravel-php-backenddevelopment-activity-7327385475915128832-DtQB?utm_source=share&utm_medium=member_android&rcm=ACoAACtoqKYB5Pk8cjIxolPHpdjShKtRL0tcolQ
Linkedin
#laravel #php #backenddevelopment #performance #scalability #queues #databaseoptimization #horizon | Fereydoon Salemi
تو مسیر که داشتم می اومدم یه پست دیدم که تا خواستم جواب بدم صفحه رفرش شد و رفت
دوستی که این سوال رو پرسیده بودی، امیدارم جوابش رو ببینی
چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور…
دوستی که این سوال رو پرسیده بودی، امیدارم جوابش رو ببینی
چطوری تو لاراول از پس پردازشهای سنگین بر بیایم؟
وقتی حجم ترنزاکشنها بالا میره (مثلاً ۱ میلیون رکورد!)، خیلیها تصور…
Forwarded from Gopher Academy
🔵 عنوان مقاله
Twenty Talks from GopherCon UK 2025
🟢 خلاصه مقاله:
** پلیلیست YouTube با عنوان Twenty Talks from GopherCon UK 2025 مجموعهای از بیست ارائه تازهمنتشرشده از کنفرانس ماه گذشته Go در لندن را یکجا گرد آورده است. همهی Talks عمیق و فنیاند؛ اگر فقط یکی را میخواهید ببینید، پیشنهاد میشود “What’s Coming in Go 1” از Daniel Marti را از دست ندهید.
#Go #Golang #GopherConUK #YouTube #ConferenceTalks #SoftwareEngineering #BackendDevelopment
🟣لینک مقاله:
https://golangweekly.com/link/174632/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Twenty Talks from GopherCon UK 2025
🟢 خلاصه مقاله:
** پلیلیست YouTube با عنوان Twenty Talks from GopherCon UK 2025 مجموعهای از بیست ارائه تازهمنتشرشده از کنفرانس ماه گذشته Go در لندن را یکجا گرد آورده است. همهی Talks عمیق و فنیاند؛ اگر فقط یکی را میخواهید ببینید، پیشنهاد میشود “What’s Coming in Go 1” از Daniel Marti را از دست ندهید.
#Go #Golang #GopherConUK #YouTube #ConferenceTalks #SoftwareEngineering #BackendDevelopment
🟣لینک مقاله:
https://golangweekly.com/link/174632/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
GopherCon UK 2025
Discover all the sessions from GopherCon 2025, the premier Go programming conference bringing together the global Go community. Explore the latest in Go deve...