فردا ساعت ۸ شب؛ یک وبینار درمورد Text Embedding و وکتورایز کردن متن و ذخیره اونها توی Vector Database ها خواهیم داشت و درنهایت وکتور دیتابیسمون رو به یک LLM متصل میکنیم تا کاربر بتونه با زبان طبیعی توی دادهها سرچ بزنه و به نتیجه برسه.
مثلا: "چه غدایی با گوشت، سیب زمینی و گوجه میتونم درست کنم؟" و سیستم بر اساس داده ها نزدیک ترین پیشنهادات رو به کاربر درقالب متن + لینک به رسپی ها بده
مثلا: "چه غدایی با گوشت، سیب زمینی و گوجه میتونم درست کنم؟" و سیستم بر اساس داده ها نزدیک ترین پیشنهادات رو به کاربر درقالب متن + لینک به رسپی ها بده
👍12👌5
Panic Dev
فردا ساعت ۸ شب؛ یک وبینار درمورد Text Embedding و وکتورایز کردن متن و ذخیره اونها توی Vector Database ها خواهیم داشت و درنهایت وکتور دیتابیسمون رو به یک LLM متصل میکنیم تا کاربر بتونه با زبان طبیعی توی دادهها سرچ بزنه و به نتیجه برسه. مثلا: "چه غدایی با…
از اینجا مطالب رو دنبال کنید:
https://news.1rj.ru/str/ArminNotes/157
* کانال پابلیکه و نیاز نیست جوین بدید اگه علاقهای ندارید — بعدا نگید تبلیغ میکنه :)))
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Armin's Notes 🪴
درود 😁👋
از اونجایی که امشب قراره یک وبینار جمع و جور درمورد Semantic Search و Word Embedding و VectorDB ها داشته باشیم - به جهت اینکه قبل از وبینار یه Big Picture از کلیت ماجرا گرفته باشید و بدونید که قراره چیکار کنیم یکسری توضیحات رو به صورت متنی براتون…
از اونجایی که امشب قراره یک وبینار جمع و جور درمورد Semantic Search و Word Embedding و VectorDB ها داشته باشیم - به جهت اینکه قبل از وبینار یه Big Picture از کلیت ماجرا گرفته باشید و بدونید که قراره چیکار کنیم یکسری توضیحات رو به صورت متنی براتون…
👍7❤🔥2🔥1
Panic Dev
توضیحات اولیه پس از ۳ ساعت تموم شد 😁
با احترام فراوان اگه قراره امشب تشریف بیارید توی لایو این موارد رو بخونید - من با این فرض که شما تمام مطالب رو خوندید و متوجه شدید صحبتارو پیش میبرم و دیگه چیزایی که الان تایپ کردم رو تکرار نمیکنم.
شروع:
t.me/ArminNotes/157
پایان:
t.me/ArminNotes/198
اگه موردی هم هست توی کامنتهای همین پست یا به صورت ناشناس از لینک زیر ارسال کنید برام جواب میدم.
https://news.1rj.ru/str/BiChatBot?start=sc-ac97b074ad
با احترام فراوان اگه قراره امشب تشریف بیارید توی لایو این موارد رو بخونید - من با این فرض که شما تمام مطالب رو خوندید و متوجه شدید صحبتارو پیش میبرم و دیگه چیزایی که الان تایپ کردم رو تکرار نمیکنم.
شروع:
t.me/ArminNotes/157
پایان:
t.me/ArminNotes/198
اگه موردی هم هست توی کامنتهای همین پست یا به صورت ناشناس از لینک زیر ارسال کنید برام جواب میدم.
https://news.1rj.ru/str/BiChatBot?start=sc-ac97b074ad
Telegram
Armin's Notes 🪴
درود 😁👋
از اونجایی که امشب قراره یک وبینار جمع و جور درمورد Semantic Search و Word Embedding و VectorDB ها داشته باشیم - به جهت اینکه قبل از وبینار یه Big Picture از کلیت ماجرا گرفته باشید و بدونید که قراره چیکار کنیم یکسری توضیحات رو به صورت متنی براتون…
از اونجایی که امشب قراره یک وبینار جمع و جور درمورد Semantic Search و Word Embedding و VectorDB ها داشته باشیم - به جهت اینکه قبل از وبینار یه Big Picture از کلیت ماجرا گرفته باشید و بدونید که قراره چیکار کنیم یکسری توضیحات رو به صورت متنی براتون…
👍3🔥2
اقا ببخشید دیگه :)) میت پرمیوم نداشتیم بیشتر از ۱ ساعت در خدمتتون باشیم.
سوالی ابهامی چیزی به وجود اومد همینجا بپرسید جواب بدم
سوالی ابهامی چیزی به وجود اومد همینجا بپرسید جواب بدم
👍6❤🔥4🔥1
نمیدونم راهتون به API چت بات ها خورده یا نه
ولی یه مشکلی که شاید داشته باشید این هست که
وقتی میخواید سوال کاربر و OpenAi بدید تا جواب بهتون بده .
تو حالت عادی که rest api کال میکنید . به این صورت
احتمالا خیلی طول میکشه
چون باید تمام جواب و پردازش کنه یه جا درستش کنه و بهتون برگردونه
هرچی جواب بزرگ تر باشه ، مدت زمان انتظار کاربر شما بالا تر میره .
و این میتونه اون رضایت و حس کاربری که موقع کار با چت بات ها دارن با پلتفرم شما نداشته باشن
البته از نظر فرانتی امده بودن بهش انیمیشن داده بودن ،
وقتی جواب از API میرسید همه رو یه جا چاپ نمیکرد
مثل همون چت بات ها با انیمیشن چاپ میکرد
ولی این باعث نمیشد جواب زودتر جنریت بشه و باز اون انتظار زیاد بود
خیلی وقت پیش گزارش کرده بودن که این حالت اصلا مورد رضایت کلاینت ها نیست .
امروز راه حلی براش یه جا دیدم ، جالب بود .
راه حلی که براش پیدا شد و پیاده سازی شد اینجوری بود .
برای اینکه بتونید سریعتر به کاربر جواب نشون بدید و دقیقا همون حس چت بات هارو بهش بدید، استفاده از استریم اونت
پلتفرم هایی مثل openAi این قابلیت و دارن که درخواست بدی به صورت استریم بهت جواب بدن .
ولی از طرفی شما هم باید بتونید اینو پشت صحنه بگیرید و به فرانت خودتون هم به صورت استریم نشون بدید .
برای این کار شما یه endpoint میخواید که به صورت SSE به فرانت شما وصل بشه .
بعد شما درخواستش رو به openAi میدید و میگید به صورت استریم بهم جواب بده .
وقتی جواب و میگیرید پارس میکنید و با همون SSE به فرانت خودتون بر میگردونید .
حالا کاربر شما میتونه به صورت ریل تایم جوابی که جنریت میشه رو ببینه و دقیقا همون حس رضایت چت بات واقعی رو داشته باشه .
در تصاویر هم میتونید نمونه کد سمپل رو ببنید .
شاید در آینده به دردتون خورد😊
@panicdev
ولی یه مشکلی که شاید داشته باشید این هست که
وقتی میخواید سوال کاربر و OpenAi بدید تا جواب بهتون بده .
تو حالت عادی که rest api کال میکنید . به این صورت
$client = OpenAI::client(config('services.openai.key'));
$response = $client->chat()->create([
'model' => 'gpt-4o',
'messages' => $messages,
]);
return response()->json([
'message' => $response
->choices[0]
->message,
], 200);
احتمالا خیلی طول میکشه
چون باید تمام جواب و پردازش کنه یه جا درستش کنه و بهتون برگردونه
هرچی جواب بزرگ تر باشه ، مدت زمان انتظار کاربر شما بالا تر میره .
و این میتونه اون رضایت و حس کاربری که موقع کار با چت بات ها دارن با پلتفرم شما نداشته باشن
البته از نظر فرانتی امده بودن بهش انیمیشن داده بودن ،
وقتی جواب از API میرسید همه رو یه جا چاپ نمیکرد
مثل همون چت بات ها با انیمیشن چاپ میکرد
ولی این باعث نمیشد جواب زودتر جنریت بشه و باز اون انتظار زیاد بود
خیلی وقت پیش گزارش کرده بودن که این حالت اصلا مورد رضایت کلاینت ها نیست .
امروز راه حلی براش یه جا دیدم ، جالب بود .
راه حلی که براش پیدا شد و پیاده سازی شد اینجوری بود .
برای اینکه بتونید سریعتر به کاربر جواب نشون بدید و دقیقا همون حس چت بات هارو بهش بدید، استفاده از استریم اونت
پلتفرم هایی مثل openAi این قابلیت و دارن که درخواست بدی به صورت استریم بهت جواب بدن .
ولی از طرفی شما هم باید بتونید اینو پشت صحنه بگیرید و به فرانت خودتون هم به صورت استریم نشون بدید .
برای این کار شما یه endpoint میخواید که به صورت SSE به فرانت شما وصل بشه .
بعد شما درخواستش رو به openAi میدید و میگید به صورت استریم بهم جواب بده .
وقتی جواب و میگیرید پارس میکنید و با همون SSE به فرانت خودتون بر میگردونید .
حالا کاربر شما میتونه به صورت ریل تایم جوابی که جنریت میشه رو ببینه و دقیقا همون حس رضایت چت بات واقعی رو داشته باشه .
در تصاویر هم میتونید نمونه کد سمپل رو ببنید .
شاید در آینده به دردتون خورد
@panicdev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🕊1
چرا لاراول sail استفاده نکنیم ...
اگر شما هم با تعداد متعددی پروژه همزمان کار میکنید یا بین پروژه های لاراولی زیاد سوئیچ میشید .
اجرا همزمان پروژه ها با sail منابع زیادی میطلبه یا باید یکی رو down کنید بعد یکی رو up یا کانفیگ و پورت متفاوت برای هرکدوم روی env ست کنید .
ولی از همه مهم تر که من دیروز باهاش برخورد کردم
اشغال فضای زیادی دیسک هست .
برای هر پروژه لاراولی که بخواید با sail اون رو راه اندازی کنید
از اول یه image براش بیلد میشه و دوباره تمام کانتیر های mysql , redis و ... براش از اول ساخته میشه .
مسئله اول ،اون سردرد موقع هر بار بیلد و pull که به جای خودش
ولی در این بین کلی image دارید هر بار به اضافه کلی volume
من وقتی دیروز فضای دیکسم به شدت پر شده بود امدم تمیز کاری کنم
وقتی یه docker prune زدم ۴۵ گیگ فضا ازاد شد!
اینجا بود که فهمیدم برای دولوپری که تو تمام پروژه ها تمام enviroment اش تقریبا یکی هست
خیلی زیاد داره فضا و اینترنت مصرف میشه .
خوب به این فک کردم بریم سراغ جایگزین .
همونطور که میدونید هستن ابزار هایی مثل herd , longhorn , valet که یا برای ویندوز یا قشر پولدار خانواده اپل
و چیز به درد بخوری پیدا نکردم که یکبار اجرا بشه و تمام پروژه ها رو ساپورت کنه . و همش در حال سوئیچ نباشم .
در اخر به این نتیجه رسیدم باید برگردم به خودم یه چیزی بزنم .
که تهش شد این ریپازیتوری ساده .
https://github.com/mohaphez/larasaur
شما با استفاده از این یه پوشه دارید به اسم
بعد داخلش یه فولدر میسازید
بعد یه
این تمام کامند هایی که نیاز دارید بهتون میده
حالا پروژه هاتون میره داخل پوشه
مثلا با این ساختار
همه چی امادست
اول یه دستور up میزنید
که بیلد اولیه گرفته بشه و سرویس ها بیاد بالا
بعد داخل هر پروژه که دارید یا جدید میسازید داخل خود مسیرش مثلا
یه دستور
میزنید این براتون یه کانفیگ nginx میسازه میندازه برای داکر و یه دامین با پسوند
مثلا این میشه
و تمام
کلا بعد از این دیگه هر چی پروژه میسازید یه addsite میزنید و یه دستور restart
بعد همه چی امادست .
هم روی محیط ایزولست هم در مصرف اینترنت و وقت صرفه جویی شده هم فضای کمتری میگیره
هم روی سیستمتون نیاز به نصب دپندسی های زیادی ندارید برای راه اندازی lamp
گذاشتم شاید به درد شما هم خورد .
الان فقط زمانی سراغ sail میرم که پروژه واقعا محیط متفاوت خاصی بخواد مثل php 7.4
@panicdev
اگر شما هم با تعداد متعددی پروژه همزمان کار میکنید یا بین پروژه های لاراولی زیاد سوئیچ میشید .
اجرا همزمان پروژه ها با sail منابع زیادی میطلبه یا باید یکی رو down کنید بعد یکی رو up یا کانفیگ و پورت متفاوت برای هرکدوم روی env ست کنید .
ولی از همه مهم تر که من دیروز باهاش برخورد کردم
اشغال فضای زیادی دیسک هست .
برای هر پروژه لاراولی که بخواید با sail اون رو راه اندازی کنید
از اول یه image براش بیلد میشه و دوباره تمام کانتیر های mysql , redis و ... براش از اول ساخته میشه .
مسئله اول ،اون سردرد موقع هر بار بیلد و pull که به جای خودش
ولی در این بین کلی image دارید هر بار به اضافه کلی volume
من وقتی دیروز فضای دیکسم به شدت پر شده بود امدم تمیز کاری کنم
وقتی یه docker prune زدم ۴۵ گیگ فضا ازاد شد!
اینجا بود که فهمیدم برای دولوپری که تو تمام پروژه ها تمام enviroment اش تقریبا یکی هست
خیلی زیاد داره فضا و اینترنت مصرف میشه .
خوب به این فک کردم بریم سراغ جایگزین .
همونطور که میدونید هستن ابزار هایی مثل herd , longhorn , valet که یا برای ویندوز یا قشر پولدار خانواده اپل
و چیز به درد بخوری پیدا نکردم که یکبار اجرا بشه و تمام پروژه ها رو ساپورت کنه . و همش در حال سوئیچ نباشم .
در اخر به این نتیجه رسیدم باید برگردم به خودم یه چیزی بزنم .
که تهش شد این ریپازیتوری ساده .
https://github.com/mohaphez/larasaur
شما با استفاده از این یه پوشه دارید به اسم
projects مثلا بعد داخلش یه فولدر میسازید
dev-env و فایل های این ریپازیتوری میره داخلش بعد یه
bash install-dev-shortcuts.sh
این تمام کامند هایی که نیاز دارید بهتون میده
حالا پروژه هاتون میره داخل پوشه
projects مثلا با این ساختار
~/projects/
├── dev-env/
├── x/
│ ├── a-laravel/
│ └── b-laravel/
├── y/
│ ├── c-laravel/
│ └── v-laravel/
└── z/
├── h-old-laravel/
└── b-new-laravel/
همه چی امادست
اول یه دستور up میزنید
up
که بیلد اولیه گرفته بشه و سرویس ها بیاد بالا
بعد داخل هر پروژه که دارید یا جدید میسازید داخل خود مسیرش مثلا
cd ~/projects/a-laravel
یه دستور
addsite
میزنید این براتون یه کانفیگ nginx میسازه میندازه برای داکر و یه دامین با پسوند
.local میسازه مثلا این میشه
a-laravel.local
و تمام
کلا بعد از این دیگه هر چی پروژه میسازید یه addsite میزنید و یه دستور restart
بعد همه چی امادست .
هم روی محیط ایزولست هم در مصرف اینترنت و وقت صرفه جویی شده هم فضای کمتری میگیره
هم روی سیستمتون نیاز به نصب دپندسی های زیادی ندارید برای راه اندازی lamp
گذاشتم شاید به درد شما هم خورد .
الان فقط زمانی سراغ sail میرم که پروژه واقعا محیط متفاوت خاصی بخواد مثل php 7.4
@panicdev
🔥13👍3❤🔥1
🎯 وقتی شرطی نوشتن قشنگتر میشه!
🤔 میدونی Conditionable چیه؟
یه Trait جدیده که به کلاس Fluent اضافه شده و بهت اجازه میده توی زنجیرهی متدها (method chaining) شرط بذاری، بدون اینکه if/else وسط کدت بیاد و ظاهرشو به هم بزنه.
🔁 قبل از Conditionable:
✅ بعد از Conditionable:
زیبا نیست؟ 😍
📦 مثال واقعی توی API Resource:
همه چیز شرطیه، ولی هنوز قشنگ و قابلخونده! 🔥
🧠 نتیجهگیری:
با when() و unless()، میتونی شرطها رو تو دل همون زنجیره بنویسی و خوندن کدت رو فوقالعاده راحت کنی.
لاراول بازم یه قدم دیگه برای تجربه بهتر توسعهدهنده برداشته. 👨💻💚
منبع : مقاله
@panicdev
🤔 میدونی Conditionable چیه؟
یه Trait جدیده که به کلاس Fluent اضافه شده و بهت اجازه میده توی زنجیرهی متدها (method chaining) شرط بذاری، بدون اینکه if/else وسط کدت بیاد و ظاهرشو به هم بزنه.
🔁 قبل از Conditionable:
$data = Fluent::make([
'name' => 'Michael Nabil',
'developer' => true,
'posts' => 25,
]);
if (auth()->isAdmin()) {
$data = $data->set('role', 'admin');
} else {
$data = $data->forget('posts');
}
✅ بعد از Conditionable:
$data = Fluent::make([...])
->when(auth()->isAdmin(), fn ($d) => $d->set('role', 'admin'))
->unless(auth()->isAdmin(), fn ($d) => $d->forget('posts'));
زیبا نیست؟ 😍
📦 مثال واقعی توی API Resource:
return Fluent::make([
'id' => $user->id,
'name' => $user->name,
])
->when($request->user()->can('view-statistics'), fn ($d) =>
$d->set('post_count', $user->posts()->count())
->set('comment_count', $user->comments()->count()))
->when($user->isVerified(), fn ($d) =>
$d->set('verified', true)
->set('verification_date', $user->verified_at->toDateString()))
->unless($request->includesPersonalData(), fn ($d) =>
$d->forget('email'))
->toArray();
همه چیز شرطیه، ولی هنوز قشنگ و قابلخونده! 🔥
🧠 نتیجهگیری:
با when() و unless()، میتونی شرطها رو تو دل همون زنجیره بنویسی و خوندن کدت رو فوقالعاده راحت کنی.
لاراول بازم یه قدم دیگه برای تجربه بهتر توسعهدهنده برداشته. 👨💻💚
منبع : مقاله
@panicdev
👍22👎3👌2🔥1
اگه دوس دارید با مفهوم اسکوپ و کوئری رجیستری توی لاراول عمیقا آشنا بشید و بتونید مثل یه Pro Player ازشون استفاده کنید این مقاله زیبا و کامل رو از دست 👀
https://laravel-news.com/query-scopes
https://laravel-news.com/query-scopes
Laravel News
Learn to master Query Scopes in Laravel - Laravel News
In this article, we're going to take a look at local query scopes and global query scopes
🔥9
🚀 متد Dispatch در Laravel یعنی چی؟ پشت صحنهاش چیه؟
وقتی توی لاراول مینویسی:
داری یه job رو میفرستی به صف (queue)، ولی پشت پرده کلی داستان اتفاق میافته که فهمیدنش میتونه کمکت کنه حرفهایتر کار کنی 👇
🔹 اولین مرحله:
لاراول با dispatch()، Bus::dispatch() یا helper با نام dispatch() شروع میکنه. اینها همه از کامپوننت Bus استفاده میکنن تا job رو آمادهی ارسال کنن.
🔹 چطوری آماده میکنه؟
بسته به نوع job، یکی از این ۳ شیء ساخته میشه:
متد PendingDispatch —> برای job معمولی
متد PendingChain —> برای jobهای زنجیرهای
متد PendingBatch —> برای batchها
🔐 جاب یکتا (Unique):
اگه job از ShouldBeUnique استفاده کنه، لاراول بررسی میکنه که توی صف، همین job با همون شناسه (ID) وجود داره یا نه.
اگه باشه و هنوز پردازش نشده، job جدید ارسال نمیشه.
✅ فقط برای job معمولی فعاله، نه chain یا batch.
🔄 وقتی از chain یا batch استفاده میکنی:
توی chain همه jobها به اولین job چسبیدان.
توی batch اطلاعاتشون توی دیتابیس ذخیره میشه.
💾 بعد از این آمادهسازیها، اگه dispatch بعد از commit تنظیم شده باشه:
لاراول صبر میکنه تا همه تراکنشهای دیتابیس تموم شن (موفقیتآمیز).
اگه rollback شه، job هم اصلاً فرستاده نمیشه.
🧬 تبدیل job به payload:
لاراول باید یه payload بسازه که شامل اینا میشه:
تنظیمات مثل maxTries, timeout, retryUntil
سریالایز کردن job با serialize() (و تبدیل مدلها با trait مخصوص)
رمزنگاری job اگه از ShouldBeEncrypted استفاده کرده باشه
اجرای hookها مثل Queue::createPayloadUsing()
در نهایت تبدیل به JSON و ارسال به صف (database, Redis, SQS و...)
📬 برای event listener، mail, notification و broadcastها:
اگه ShouldQueue رو پیادهسازی کرده باشن، مستقیم میان توی queue (و نه Bus).
یعنی قابلیتهایی مثل unique، chain یا batch اینجا اعمال نمیشن.
🧠 و اما closure؟
اگه بخوای یه closure رو بفرستی به صف، Laravel با SerializableClosure سریالایزش میکنه، رمزنگاریش میکنه و با job مخصوصش (CallQueuedClosure) میفرسته صف.
🎯 جمعبندی:
دستور Job dispatch فقط یه خط نیست! یه مکانیزم کامل پشتشه که با قدرت و امنیت بالا job رو آماده میکنه، serialize و encrypt میکنه، و با دقت میفرسته صف. یاد گرفتنش کمک میکنه کدت تمیزتر و قابل کنترلتر باشه 💪
🔗 منبع : مقاله
@panicdev
وقتی توی لاراول مینویسی:
MyJob::dispatch($data);
داری یه job رو میفرستی به صف (queue)، ولی پشت پرده کلی داستان اتفاق میافته که فهمیدنش میتونه کمکت کنه حرفهایتر کار کنی 👇
🔹 اولین مرحله:
لاراول با dispatch()، Bus::dispatch() یا helper با نام dispatch() شروع میکنه. اینها همه از کامپوننت Bus استفاده میکنن تا job رو آمادهی ارسال کنن.
🔹 چطوری آماده میکنه؟
بسته به نوع job، یکی از این ۳ شیء ساخته میشه:
متد PendingDispatch —> برای job معمولی
متد PendingChain —> برای jobهای زنجیرهای
متد PendingBatch —> برای batchها
🔐 جاب یکتا (Unique):
اگه job از ShouldBeUnique استفاده کنه، لاراول بررسی میکنه که توی صف، همین job با همون شناسه (ID) وجود داره یا نه.
اگه باشه و هنوز پردازش نشده، job جدید ارسال نمیشه.
✅ فقط برای job معمولی فعاله، نه chain یا batch.
🔄 وقتی از chain یا batch استفاده میکنی:
Bus::chain([...]);
Bus::batch([...]);
توی chain همه jobها به اولین job چسبیدان.
توی batch اطلاعاتشون توی دیتابیس ذخیره میشه.
💾 بعد از این آمادهسازیها، اگه dispatch بعد از commit تنظیم شده باشه:
لاراول صبر میکنه تا همه تراکنشهای دیتابیس تموم شن (موفقیتآمیز).
اگه rollback شه، job هم اصلاً فرستاده نمیشه.
🧬 تبدیل job به payload:
لاراول باید یه payload بسازه که شامل اینا میشه:
تنظیمات مثل maxTries, timeout, retryUntil
سریالایز کردن job با serialize() (و تبدیل مدلها با trait مخصوص)
رمزنگاری job اگه از ShouldBeEncrypted استفاده کرده باشه
اجرای hookها مثل Queue::createPayloadUsing()
در نهایت تبدیل به JSON و ارسال به صف (database, Redis, SQS و...)
📬 برای event listener، mail, notification و broadcastها:
اگه ShouldQueue رو پیادهسازی کرده باشن، مستقیم میان توی queue (و نه Bus).
یعنی قابلیتهایی مثل unique، chain یا batch اینجا اعمال نمیشن.
🧠 و اما closure؟
اگه بخوای یه closure رو بفرستی به صف، Laravel با SerializableClosure سریالایزش میکنه، رمزنگاریش میکنه و با job مخصوصش (CallQueuedClosure) میفرسته صف.
🎯 جمعبندی:
دستور Job dispatch فقط یه خط نیست! یه مکانیزم کامل پشتشه که با قدرت و امنیت بالا job رو آماده میکنه، serialize و encrypt میکنه، و با دقت میفرسته صف. یاد گرفتنش کمک میکنه کدت تمیزتر و قابل کنترلتر باشه 💪
🔗 منبع : مقاله
@panicdev
👌13👍1
تجربه کسی که راه زیادی رو رفته تا گلوگاه های یک زیرساخت و شناسایی کنه برای اینکه بتونه پاسخگوئه یک میلیون یوزر باشه .
https://medium.com/@kanishks772/scaling-to-1-million-users-the-architecture-i-wish-i-knew-sooner-39c688ded2f1
https://medium.com/@kanishks772/scaling-to-1-million-users-the-architecture-i-wish-i-knew-sooner-39c688ded2f1
Medium
Scaling to 1 Million Users: The Architecture I Wish I Knew Sooner
When we launched, we were happy just having 100 daily users. But within months, we hit 10,000, then 100,000. And scaling problems piled up…
14👍2🔥1
دوتا پکیج زیبا ببینیم ، هم کاراییشون زیباست هم سورس کدشون
https://prismphp.com
https://laragent.ai
خودم به شخصه prism پسندیدم ، ولی خوب laragent هم تحت توسعست ، احتمالا به زودی چیزای بهتری و بیشتری ساپورت کنه .
@panicdev
https://prismphp.com
https://laragent.ai
خودم به شخصه prism پسندیدم ، ولی خوب laragent هم تحت توسعست ، احتمالا به زودی چیزای بهتری و بیشتری ساپورت کنه .
@panicdev
Prismphp
Prism is a powerful Laravel package for integrating Large Language Models (LLMs) into your applications.
👍12