What is an api?
مشخصا هر کسی که برنامه نویس باشه با API ها سر و کله زده اما بیایم ببینیم مفهوم API دقیقا چیه.
ای پی آی (API) یا Application Programming Interface به معنای واسط برنامهنویسی است. API یک مجموعه از توابع و روشهای برنامهنویسی است که به توسعهدهندگان اجازه میدهد تا بتوانند از قابلیتها و امکانات یک سامانه، برنامه یا سرویس دیگری استفاده کنند.
ای پی آی به طور خلاصه یک ابزار ارتباط بین برنامههاست که عملکردهای زیرساختی را برای دیگر برنامهها فراهم میکند تا بتوانند به راحتی و منعطفتر کار کنند.(مثلا وقتی داریم از یک پکیج استفاده می کنیم برای ما api هایی رو قرار داده تا بتونیم از قابلیت هاش استفاده کنیم)
مشخصات اصلی API عبارتند از:
- تعریف یک سری قوانین برای تعامل بین سیستمها یا اجزا
- تعریف ساختار دادهها، پارامترها و قالبهای ارتباطی
- فراهم کردن توابع و متدها برای انجام کارهای مورد نیاز
- محافظت از بخشهای داخلی سامانه از دسترس خارجی
- استانداردسازی روش تعامل بین برنامهها
بنابراین API یک ابزار قدرتمند است که تعامل و همکاری بین برنامهها را بسیار آسانتر میکند.
#API
@citax_tel
مشخصا هر کسی که برنامه نویس باشه با API ها سر و کله زده اما بیایم ببینیم مفهوم API دقیقا چیه.
ای پی آی (API) یا Application Programming Interface به معنای واسط برنامهنویسی است. API یک مجموعه از توابع و روشهای برنامهنویسی است که به توسعهدهندگان اجازه میدهد تا بتوانند از قابلیتها و امکانات یک سامانه، برنامه یا سرویس دیگری استفاده کنند.
ای پی آی به طور خلاصه یک ابزار ارتباط بین برنامههاست که عملکردهای زیرساختی را برای دیگر برنامهها فراهم میکند تا بتوانند به راحتی و منعطفتر کار کنند.(مثلا وقتی داریم از یک پکیج استفاده می کنیم برای ما api هایی رو قرار داده تا بتونیم از قابلیت هاش استفاده کنیم)
مشخصات اصلی API عبارتند از:
- تعریف یک سری قوانین برای تعامل بین سیستمها یا اجزا
- تعریف ساختار دادهها، پارامترها و قالبهای ارتباطی
- فراهم کردن توابع و متدها برای انجام کارهای مورد نیاز
- محافظت از بخشهای داخلی سامانه از دسترس خارجی
- استانداردسازی روش تعامل بین برنامهها
بنابراین API یک ابزار قدرتمند است که تعامل و همکاری بین برنامهها را بسیار آسانتر میکند.
#API
@citax_tel
❤9
Media is too big
VIEW IN TELEGRAM
واکنش پدر مادرا درباره شغل های نسبتا جدید و امروزی
هنوزم بعضی از پدر مادرا میگن "تو خونه پول درآوردن و پشت میز نشستن که کار نیست 😕 "
@citax_tel 👈 سیتاکس
هنوزم بعضی از پدر مادرا میگن "تو خونه پول درآوردن و پشت میز نشستن که کار نیست 😕 "
@citax_tel 👈 سیتاکس
😁10👎2
phind.com
یه موتور جستجو برای برنامه نویس ها است ... تلفیق جالبی از ریزالت گوگل و GPT که تمام چند صفحه اول رو میخونه و نتیحه رو برامون مینوسیه، کدش رو هم مینویسه
https://zzzcode.ai/
این هم یه ابزار شدیدا باحاله که هم میتونه داکیومنت براتون درست کنه هم میتونه کد های هر زبانی رو به زبان دیگه تبدیل کنه و هم ....
گفتم شاید بد نباشه شیر کنم که شما هم استفاده کنید
[Shahriar]
#هوش_مصنوعی
@citax_tel 👈 سیتاکس
یه موتور جستجو برای برنامه نویس ها است ... تلفیق جالبی از ریزالت گوگل و GPT که تمام چند صفحه اول رو میخونه و نتیحه رو برامون مینوسیه، کدش رو هم مینویسه
https://zzzcode.ai/
این هم یه ابزار شدیدا باحاله که هم میتونه داکیومنت براتون درست کنه هم میتونه کد های هر زبانی رو به زبان دیگه تبدیل کنه و هم ....
گفتم شاید بد نباشه شیر کنم که شما هم استفاده کنید
[Shahriar]
#هوش_مصنوعی
@citax_tel 👈 سیتاکس
❤8
قرار زبان برنامه نویسی Mojo رو یکم بررسی کنیم.
البته فکر می کنم خیلی زوده بخوایم دربارش حرف بزنیم اما با توجه به اینکه سر و صدای زیادی کرده پس بیاید ببینیم چیه
#mojo
@citax_tel 👈 سیتاکس
البته فکر می کنم خیلی زوده بخوایم دربارش حرف بزنیم اما با توجه به اینکه سر و صدای زیادی کرده پس بیاید ببینیم چیه
#mojo
@citax_tel 👈 سیتاکس
🔥6👍2
Mojo
زبان برنامه نویسی Mojo یک زبان جدید است که توسط شرکت Modular AI در سال ۲۰۲۳ معرفی شده است.
این زبان با هدف ایجاد یک زبان ساده، سریع و قابل انعطاف برای کارهای مرتبط با هوش مصنوعی و یادگیری ماشین طراحی شده است.
زبان Mojo دارای سینتکسهای شبیه به پایتون و کمی js است، اما عملکرد آن مشابه به زبانهای C و Rust است(این قسمتش یکم عجیبه).
این زبان از کل اکوسیستم کتابخانههای پایتون پشتیبانی میکند (در این صورت چجوری می تونه 35 هزار برابر سریع تر باشه) و همچنین قابلیت استفاده از سخت افزارهای مختلف مانند CPU، GPU، TPU و ASIC را دارد.
برخی از ویژگیهای منحصر به فرد زبان Mojo عبارتند از:
- موازی سازی خودکار کدها برای بهرهوری بالاتر از منابع سخت افزاری (قطعا پوینت مثبتی هستش در مقابل پایتون)
- بررسی و ارزیابی نوع داده در زمان کامپایل برای جلوگیری از خطاهای زمان اجرا
- کامپایل ایستا به وسیله LLVM برای تولید کد ماشین بهینه
- پشتیبانی از برنامه نویسی متا در زمان کامپایل برای تولید کد دلخواه
- قابل توسعه با استفاده از ماژولها و پکیجهای خارجی
#Mojo
@citax_tel 👈 سیتاکس
زبان برنامه نویسی Mojo یک زبان جدید است که توسط شرکت Modular AI در سال ۲۰۲۳ معرفی شده است.
این زبان با هدف ایجاد یک زبان ساده، سریع و قابل انعطاف برای کارهای مرتبط با هوش مصنوعی و یادگیری ماشین طراحی شده است.
زبان Mojo دارای سینتکسهای شبیه به پایتون و کمی js است، اما عملکرد آن مشابه به زبانهای C و Rust است(این قسمتش یکم عجیبه).
این زبان از کل اکوسیستم کتابخانههای پایتون پشتیبانی میکند (در این صورت چجوری می تونه 35 هزار برابر سریع تر باشه) و همچنین قابلیت استفاده از سخت افزارهای مختلف مانند CPU، GPU، TPU و ASIC را دارد.
برخی از ویژگیهای منحصر به فرد زبان Mojo عبارتند از:
- موازی سازی خودکار کدها برای بهرهوری بالاتر از منابع سخت افزاری (قطعا پوینت مثبتی هستش در مقابل پایتون)
- بررسی و ارزیابی نوع داده در زمان کامپایل برای جلوگیری از خطاهای زمان اجرا
- کامپایل ایستا به وسیله LLVM برای تولید کد ماشین بهینه
- پشتیبانی از برنامه نویسی متا در زمان کامپایل برای تولید کد دلخواه
- قابل توسعه با استفاده از ماژولها و پکیجهای خارجی
#Mojo
@citax_tel 👈 سیتاکس
👍8
متخصصین درباره Mojo چی میگن !
نظر متخصصین درباره زبان Mojo متفاوت است.
برخی از آنها این زبان را یک رقیب جدی برای پایتون در حوزه هوش مصنوعی میدانند و برخی دیگر این زبان را یک تلاش ناتمام و ناقص معرفی میکنند.
برخی از نظرات مثبت و منفی درباره زبان Mojo:
نظرات مثبت:
"موجو یک زبان بسیار جذاب و قدرتمند است که سادگی پایتون را با عملکرد C و Rust ترکیب میکند. این زبان به توسعه دهندگان هوش مصنوعی امکان میدهد که بدون نگرانی از جزئیات سخت افزار، برنامه های با پرفورمنس بالا و کارآمد بسازند."
"موجو چشماندازی نوین و جدید از زبان برنامه نویسی ارائه میدهد. این زبان نه تنها از کل اکوسیستم پایتون پشتیبانی میکند، بلکه قابلیت های جدیدی را به آن اضافه میکند. من به شخصه از ویژگیهای موازی سازی خودکار و بررسی نوع داده در زمان کامپایلی Mojo خوشحالم."
نظرات منفی:
"موجو یک زبان ناقص و ناتمام است. این زبان هنوز در حال توسعه است و بسیاری از ویژگیها و کتابخانههای ضروری را ندارد. من فکر نمیکنم که Mojo بتواند جایگزین پایتون شود، چرا که پایتون یک زبان بسیار پخته و قابل اعتماد است."
"موجو یک زبان بدون هدف است. این زبان سعی دارد همه چیز را در خود جای دهد، اما هیچ کدام را به خوبی انجام نمیدهد. Mojo نه سادگی پایتون را دارد، نه عملکرد C و Rust را. این زبان فقط گیج کننده و پر مشکل است."
"موجو یک زبان بلا استفاده و بلا مصرف است. این زبان هیچ چیز جدید و متفاوتی به دنیای برنامه نویسی نمیافزاید. Mojo فقط یک تقلید بد از پایتون است که سعی دارد با قول دادن سرعت بالا، توجه کاربران را جلب کند."
#Mojo
@citax_tel 👈 سیتاکس
نظر متخصصین درباره زبان Mojo متفاوت است.
برخی از آنها این زبان را یک رقیب جدی برای پایتون در حوزه هوش مصنوعی میدانند و برخی دیگر این زبان را یک تلاش ناتمام و ناقص معرفی میکنند.
برخی از نظرات مثبت و منفی درباره زبان Mojo:
نظرات مثبت:
"موجو یک زبان بسیار جذاب و قدرتمند است که سادگی پایتون را با عملکرد C و Rust ترکیب میکند. این زبان به توسعه دهندگان هوش مصنوعی امکان میدهد که بدون نگرانی از جزئیات سخت افزار، برنامه های با پرفورمنس بالا و کارآمد بسازند."
"موجو چشماندازی نوین و جدید از زبان برنامه نویسی ارائه میدهد. این زبان نه تنها از کل اکوسیستم پایتون پشتیبانی میکند، بلکه قابلیت های جدیدی را به آن اضافه میکند. من به شخصه از ویژگیهای موازی سازی خودکار و بررسی نوع داده در زمان کامپایلی Mojo خوشحالم."
نظرات منفی:
"موجو یک زبان ناقص و ناتمام است. این زبان هنوز در حال توسعه است و بسیاری از ویژگیها و کتابخانههای ضروری را ندارد. من فکر نمیکنم که Mojo بتواند جایگزین پایتون شود، چرا که پایتون یک زبان بسیار پخته و قابل اعتماد است."
"موجو یک زبان بدون هدف است. این زبان سعی دارد همه چیز را در خود جای دهد، اما هیچ کدام را به خوبی انجام نمیدهد. Mojo نه سادگی پایتون را دارد، نه عملکرد C و Rust را. این زبان فقط گیج کننده و پر مشکل است."
"موجو یک زبان بلا استفاده و بلا مصرف است. این زبان هیچ چیز جدید و متفاوتی به دنیای برنامه نویسی نمیافزاید. Mojo فقط یک تقلید بد از پایتون است که سعی دارد با قول دادن سرعت بالا، توجه کاربران را جلب کند."
#Mojo
@citax_tel 👈 سیتاکس
👍5
با این کار ها سرعت یادگیریتو سه برابر کن !
هیچوقت پست های اینستاگرام سیتاکس رو توی تلگرام قرار نمیدم چون محتواش تو فضای تلگرام نمیچسبه. اما این پست خیلی خاصه شبیه به کامیک شده منکه واقعا کیف کردم.
همچنین به گرافیست کارمون خسته نباشید میگم
ایدی گرافیست کارمون اگه پروژه دارید می تونید بهش پی ام بدید:
@Ali_reza_Jalilian
پ.ن
مشکلی که خیلیا وقتی میخوان تخصص هایی مثل برنامه نویسی و طراحی گرافیک رو شروع کنن اینه که زیادی به نحوه تدریس مدارس و دانشگاه ها عادت کردن.
اینجور اشخاص وقتی میخوان وارد تخصصی مثل برنامه نویسی شن اولین کاری که میکنن دنبال مدرس میگردن و همچنین حضوری آموزش دادنه هم براشون مهمه.
اما برنامه نویسی و تخصص هایی شبیه به برنامه نویسی تمرکز اصلی باید روی خودآموزی باشه. اصل موضوع اینه تا زمانی که نحوه یادگیری خودتونو به خودآموز تغییر ندید برنامه نویس حرفه ای نمیشید و تو سطح مبتدی باقی میمونید.
پس اول از همه به خودت متکی باش و سرچ کردن رو یاد بگیر بعدش با کمک مدرس و منتور، راه خودتو هموار کن و از تحربیاتش استفاده کن.
@citax_tel 👈 سیتاکس
هیچوقت پست های اینستاگرام سیتاکس رو توی تلگرام قرار نمیدم چون محتواش تو فضای تلگرام نمیچسبه. اما این پست خیلی خاصه شبیه به کامیک شده منکه واقعا کیف کردم.
همچنین به گرافیست کارمون خسته نباشید میگم
ایدی گرافیست کارمون اگه پروژه دارید می تونید بهش پی ام بدید:
@Ali_reza_Jalilian
پ.ن
مشکلی که خیلیا وقتی میخوان تخصص هایی مثل برنامه نویسی و طراحی گرافیک رو شروع کنن اینه که زیادی به نحوه تدریس مدارس و دانشگاه ها عادت کردن.
اینجور اشخاص وقتی میخوان وارد تخصصی مثل برنامه نویسی شن اولین کاری که میکنن دنبال مدرس میگردن و همچنین حضوری آموزش دادنه هم براشون مهمه.
اما برنامه نویسی و تخصص هایی شبیه به برنامه نویسی تمرکز اصلی باید روی خودآموزی باشه. اصل موضوع اینه تا زمانی که نحوه یادگیری خودتونو به خودآموز تغییر ندید برنامه نویس حرفه ای نمیشید و تو سطح مبتدی باقی میمونید.
پس اول از همه به خودت متکی باش و سرچ کردن رو یاد بگیر بعدش با کمک مدرس و منتور، راه خودتو هموار کن و از تحربیاتش استفاده کن.
@citax_tel 👈 سیتاکس
🔥9
سوال:
برای یک سرویس چت میخوام از Fastapi و سوکت نویسی استفاده کنم (جنگو چنلز بلد نیستم)
یک monolithic برنامه اصلی هست
این قسمت چت رو میخوام میکروسرویس بچسبونم بهش
مدل کاربر اعتبار سنجی ها (jwt ) رو چطور درست میکنن
یا اگر با مدل دیگه تو برنامه اصلی کار داشتیم چطور کار میکنند باهاش.
[Mojtaba]
@citax_tel 👈 سیتاکس
برای یک سرویس چت میخوام از Fastapi و سوکت نویسی استفاده کنم (جنگو چنلز بلد نیستم)
یک monolithic برنامه اصلی هست
این قسمت چت رو میخوام میکروسرویس بچسبونم بهش
مدل کاربر اعتبار سنجی ها (jwt ) رو چطور درست میکنن
یا اگر با مدل دیگه تو برنامه اصلی کار داشتیم چطور کار میکنند باهاش.
[Mojtaba]
@citax_tel 👈 سیتاکس
👍7
Syntax | سینتکس
سوال: برای یک سرویس چت میخوام از Fastapi و سوکت نویسی استفاده کنم (جنگو چنلز بلد نیستم) یک monolithic برنامه اصلی هست این قسمت چت رو میخوام میکروسرویس بچسبونم بهش مدل کاربر اعتبار سنجی ها (jwt ) رو چطور درست میکنن یا اگر با مدل دیگه تو برنامه اصلی…
اطلاعات مورد نیاز کاربر رو توی توکن مینویسی و توی سرویسای دیگت میتونی از توکن بخونی، مثل یوزرنیم، تلفن، یوزر آیدی، نقش ها، زبان، ادرس تصویر پروفایل..
برای امنیت بیشتر توکن رو رمزنگاری میکنی که با یککلید مشخص که فقط برنانه خودت داره میتونه خونده و ادیت بشه.
حالا اون سرویس چت از توکن کاربر رو میشناسه. برای باقی مباحث ممکن هست نیاز به ذخیره اطلاعات کاربر و مشتقاتش روی سرویس چتت هم داشته باشی. این جزو چالش های میکروسرویس ها هست دیگه. یا باید هر بار نیاز داری بری از سرویس اصلیت بگیری یا تو سرویس ثانویه ات همنگهداری کنی و اپدیت بکنی در صورت تغییر ( یکپارچگی داده ها)
ارتباط مابین سرویس ها، میتونه از طریق rest api ها باشه، میتونه از طریق grpc باشه، میتونه از طریق message broker ای مثل rabbitmq باشه..
شکستن وظایف یک پروژه به سرویس های مجزا شروع میکروسرویسی شدنه معماریت هست. هر چند که به این میگیم bounded contexts تا میکروسرویس.
سمت سوکت نویسی هم نرو وقتی کتابخونه های خوبی مثل signalr و grpc و امثالهم هست. سیگنال آر راحته همه جا میتونی استفاده کنی پرفورمنسشم خوبه.
کلاینت ها همه به یک Hub لیسن میشن که متد های خودش رو داره مثلا send و get. به محض اومدن پیام یک ایونت بهشون داده میشه که بیا بگیر دیتات رو اپدیت کن
ارتباط bidirectional و duplex
من برای سرویس چت اینکارو کرده بودم:
ارسال و دریافت از طریق api ها
نوتیفیکیشن و اعلان اپدیت از طریق signalr. یعنی نوتیف یا خبر رو با سوکت میدادم دیتا رو از api میگرفتن. میتونی جفتشو ببری تو همون signalr اصلا که دیتا رو موردی اپدیت کنی
[mrgrayhat]
@citax_tel 👈 سیتاکس
برای امنیت بیشتر توکن رو رمزنگاری میکنی که با یککلید مشخص که فقط برنانه خودت داره میتونه خونده و ادیت بشه.
حالا اون سرویس چت از توکن کاربر رو میشناسه. برای باقی مباحث ممکن هست نیاز به ذخیره اطلاعات کاربر و مشتقاتش روی سرویس چتت هم داشته باشی. این جزو چالش های میکروسرویس ها هست دیگه. یا باید هر بار نیاز داری بری از سرویس اصلیت بگیری یا تو سرویس ثانویه ات همنگهداری کنی و اپدیت بکنی در صورت تغییر ( یکپارچگی داده ها)
ارتباط مابین سرویس ها، میتونه از طریق rest api ها باشه، میتونه از طریق grpc باشه، میتونه از طریق message broker ای مثل rabbitmq باشه..
شکستن وظایف یک پروژه به سرویس های مجزا شروع میکروسرویسی شدنه معماریت هست. هر چند که به این میگیم bounded contexts تا میکروسرویس.
سمت سوکت نویسی هم نرو وقتی کتابخونه های خوبی مثل signalr و grpc و امثالهم هست. سیگنال آر راحته همه جا میتونی استفاده کنی پرفورمنسشم خوبه.
کلاینت ها همه به یک Hub لیسن میشن که متد های خودش رو داره مثلا send و get. به محض اومدن پیام یک ایونت بهشون داده میشه که بیا بگیر دیتات رو اپدیت کن
ارتباط bidirectional و duplex
من برای سرویس چت اینکارو کرده بودم:
ارسال و دریافت از طریق api ها
نوتیفیکیشن و اعلان اپدیت از طریق signalr. یعنی نوتیف یا خبر رو با سوکت میدادم دیتا رو از api میگرفتن. میتونی جفتشو ببری تو همون signalr اصلا که دیتا رو موردی اپدیت کنی
[mrgrayhat]
@citax_tel 👈 سیتاکس
🔥7
Syntax | سینتکس
اطلاعات مورد نیاز کاربر رو توی توکن مینویسی و توی سرویسای دیگت میتونی از توکن بخونی، مثل یوزرنیم، تلفن، یوزر آیدی، نقش ها، زبان، ادرس تصویر پروفایل.. برای امنیت بیشتر توکن رو رمزنگاری میکنی که با یککلید مشخص که فقط برنانه خودت داره میتونه خونده و ادیت بشه.…
تو آخر بعضی پستا داخل براکت اسمی رو مینویسم منظورم اینه توسط این شخص نوشته شده
👍6
🔥3
Race condition
معمولاً race condition هنگامی رخ میدهد که دو یا چند نخ به صورت همزمان به منابع مشترک دسترسی دارند و تغییرات را اعمال میکنند. این تداخل میتواند به تداخل در دسترسی به دادهها، تعارض در تغییرات و حالتهای نامتوازن منجر شود.
برای مثال، فرض کنید جدول یوزر یک column به اسم score دارد که داخلش امتیاز کاربر رو ذخیره میکنیم.
ممکنه کاربر در یک لحظه دو تا امتیاز بگیره که باید به درستی ذخیره بشن.
اگه در یک لحظه اتفاق بیوفته هر دو نخ فیلد score رو میگیرن و امتیاز رو اضافه میکنن. اینجاست که race condition اتفاق میوفته و دیتا به درستی ذخیره نمیشه در واقع یکی از این دو امتیاز ذخیره نمیشه
سوال
برای جلوگیری از این اتفاق ما باید نحوه ذخیره امتیازات رو تغییر بدیم.
شما چه تغییری بوجود میارید تا در هر حالت امتیاز به درستی ذخیره بشه ؟!
روش های پیشنهادی پست بعدی قرار میگیره
#race_condition #دیتابیس
@citax_tel 👈 سیتاکس
معمولاً race condition هنگامی رخ میدهد که دو یا چند نخ به صورت همزمان به منابع مشترک دسترسی دارند و تغییرات را اعمال میکنند. این تداخل میتواند به تداخل در دسترسی به دادهها، تعارض در تغییرات و حالتهای نامتوازن منجر شود.
برای مثال، فرض کنید جدول یوزر یک column به اسم score دارد که داخلش امتیاز کاربر رو ذخیره میکنیم.
ممکنه کاربر در یک لحظه دو تا امتیاز بگیره که باید به درستی ذخیره بشن.
اگه در یک لحظه اتفاق بیوفته هر دو نخ فیلد score رو میگیرن و امتیاز رو اضافه میکنن. اینجاست که race condition اتفاق میوفته و دیتا به درستی ذخیره نمیشه در واقع یکی از این دو امتیاز ذخیره نمیشه
سوال
برای جلوگیری از این اتفاق ما باید نحوه ذخیره امتیازات رو تغییر بدیم.
شما چه تغییری بوجود میارید تا در هر حالت امتیاز به درستی ذخیره بشه ؟!
روش های پیشنهادی پست بعدی قرار میگیره
#race_condition #دیتابیس
@citax_tel 👈 سیتاکس
👀8
Syntax | سینتکس
Race condition معمولاً race condition هنگامی رخ میدهد که دو یا چند نخ به صورت همزمان به منابع مشترک دسترسی دارند و تغییرات را اعمال میکنند. این تداخل میتواند به تداخل در دسترسی به دادهها، تعارض در تغییرات و حالتهای نامتوازن منجر شود. برای مثال، فرض…
روش های پیشنهادی که دوستان گفتن
میثم:
سمافور
میوتکس
مهدی:
میریزیم توی ربیت از اونجا میریزیم توی دیبی
تمام امتیاز ها توی صف قرار میگیرن تا کم کم وارد دیبی بشن
اینطوری تایم رید و رایت کردن دیتابیس هم حذف میشه و تایم ریکویست هم چند میلی ثانیه کم تر میشه
m:
میتونیم از transaction.atomic و لاک کردن استفاده کنیم
بنظرتون کدوم روش منطقی تره! یا اینکه روش بهتری براش دارید؟(صرف نظر از اینکه با چه ابزاری قراره پیاده شه)
@citax_tel 👈 سیتاکس
میثم:
سمافور
میوتکس
مهدی:
میریزیم توی ربیت از اونجا میریزیم توی دیبی
تمام امتیاز ها توی صف قرار میگیرن تا کم کم وارد دیبی بشن
اینطوری تایم رید و رایت کردن دیتابیس هم حذف میشه و تایم ریکویست هم چند میلی ثانیه کم تر میشه
m:
میتونیم از transaction.atomic و لاک کردن استفاده کنیم
بنظرتون کدوم روش منطقی تره! یا اینکه روش بهتری براش دارید؟(صرف نظر از اینکه با چه ابزاری قراره پیاده شه)
@citax_tel 👈 سیتاکس
👍6
روشی که خودم برای حل این مشکل استفاده میکنم به این شکل است که اون آبجکت دیتابیس رو لاک میکنم تا تغییرات رو انجام بدم و بقیه ترد ها در اون لحظه دسترسی نداشته باشن.
توی جنگجو به این صورت پیاده می شه.
سوال:
چرا من
instance = cls.objects.select_for_update().filter(user=user)
بیرون از transaction.atomic نوشتم؟
پاسخ یکی از دوستان که کاملا درسته:
چون کلا کوئری ها لیزی هستن تا زمانی که جایی استفاده نکنی اجرا نمیشن.
اونجا که exists رو میزنی اونم به دلیل وجود if قبلش اجرا میشه
@citax_tel 👈 سیتاکس
توی جنگجو به این صورت پیاده می شه.
سوال:
چرا من
instance = cls.objects.select_for_update().filter(user=user)
بیرون از transaction.atomic نوشتم؟
پاسخ یکی از دوستان که کاملا درسته:
چون کلا کوئری ها لیزی هستن تا زمانی که جایی استفاده نکنی اجرا نمیشن.
اونجا که exists رو میزنی اونم به دلیل وجود if قبلش اجرا میشه
@citax_tel 👈 سیتاکس
❤7👍2