#کدبوک
موضوعات اصلی کتاب شامل:
مفاهیم پایه پردازش زبان طبیعی و یادگیری عمیق
معماری ترانسفورمر و اجزای آن
نحوه آموزش و تنظیم مدلهای زبانی
پیادهسازی عملی یک LLM از صفر
تکنیکهای بهینهسازی و مقیاسپذیری
روشهای ارزیابی عملکرد مدل
چالشهای پیشرو در توسعه LLMها
نکات عملی برای پیادهسازی موفق
این کتاب برای:
متخصصان هوش مصنوعی
دانشجویان یادگیری ماشین
توسعهدهندگانی که میخواهند وارد حوزه LLM شوند
مناسب است و با رویکردی عملی و گام به گام، مفاهیم پیچیده را به شکلی قابل فهم توضیح میدهد.
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
موضوعات اصلی کتاب شامل:
مفاهیم پایه پردازش زبان طبیعی و یادگیری عمیق
معماری ترانسفورمر و اجزای آن
نحوه آموزش و تنظیم مدلهای زبانی
پیادهسازی عملی یک LLM از صفر
تکنیکهای بهینهسازی و مقیاسپذیری
روشهای ارزیابی عملکرد مدل
چالشهای پیشرو در توسعه LLMها
نکات عملی برای پیادهسازی موفق
این کتاب برای:
متخصصان هوش مصنوعی
دانشجویان یادگیری ماشین
توسعهدهندگانی که میخواهند وارد حوزه LLM شوند
مناسب است و با رویکردی عملی و گام به گام، مفاهیم پیچیده را به شکلی قابل فهم توضیح میدهد.
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
👍26❤1
مثال از Best Practices در SQL Query
بهینهسازی کوئریها در دیتابیسهای بزرگ اهمیت فوقالعادهای داره. مثالی که در تصویر گذاشتم رو ببینید:
بهینهسازی کوئریهای SQL باعث بهبود عملکرد و کاهش استفاده غیرضروری از منابع میشه. با حذف subqueryهای غیرضروری و استفاده از Joinهای بهینه و Group By، میتونید کوئریهای سریعتر و کاراتری داشته باشید. همچنین، استفاده از Index روی ستونهای پرکاربرد مثل user_id و post_id میتونه زمان اجرای کوئریها رو به شدت کاهش بده.
همیشه بهینهسازی رو در اولویت قرار بدید، چون هر میلیثانیه اهمیت داره!
@DevTwitter | <Saber Qadimi/>
بهینهسازی کوئریها در دیتابیسهای بزرگ اهمیت فوقالعادهای داره. مثالی که در تصویر گذاشتم رو ببینید:
بهینهسازی کوئریهای SQL باعث بهبود عملکرد و کاهش استفاده غیرضروری از منابع میشه. با حذف subqueryهای غیرضروری و استفاده از Joinهای بهینه و Group By، میتونید کوئریهای سریعتر و کاراتری داشته باشید. همچنین، استفاده از Index روی ستونهای پرکاربرد مثل user_id و post_id میتونه زمان اجرای کوئریها رو به شدت کاهش بده.
همیشه بهینهسازی رو در اولویت قرار بدید، چون هر میلیثانیه اهمیت داره!
@DevTwitter | <Saber Qadimi/>
👍28🔥3
امنیت پسوردها با استفاده از Salt و Pepper
در دنیای دیجیتال امروز، امنیت اطلاعات شخصی و حساس یک اولویت اساسی است. یکی از مهمترین بخشهای این امنیت، نحوه مدیریت پسوردها است. امروز میخواهم در مورد دو مفهوم مهم در این زمینه، یعنی SaltوPepper صحبت کنم.
۱. Salt
سالت یک مقدار تصادفی است که به پسورد کاربر اضافه میشود قبل از اینکه آن را هش کنیم. این کار به جلوگیری از حملات Rainbow Table کمک میکند، زیرا حتی اگر دو کاربر پسورد یکسانی داشته باشند، با داشتن Saltهای مختلف، هشهای متفاوتی تولید خواهند کرد.
به عنوان مثال، در PHP میتوانیم از تابع password_hash استفاده کنیم:
خروجی این تابع به شکل زیر خواهد بود:
$2y$11$KIXqJCD7UgxE2ZmRkU8DeOeXeP5.h6yDkpH2Slbdm/o7NRlfdEme6
این رشته چهار قسمت دارد:
1. نوع الگوریتم (
2. هزینه (Cost) (
3. سالت (Salt) (
4. پسورد هش شده
۲. Pepper
پپر یک مقدار ثابت و محرمانه است که به پسورد اضافه میشود، اما بر خلاف Salt، این مقدار در پایگاه داده ذخیره نمیشود. در عوض، این مقدار در کد برنامه نویسی (Application Code) قرار میگیرد.
به عنوان مثال، در کد زیر:
در اینجا، پسورد کاربر ابتدا با Pepper ترکیب میشود و سپس هش میشود. این کار به امنیت بیشتر پسوردها کمک میکند و حتی اگر یک پایگاه داده دزدیده شود، مقدار Pepper میتواند به عنوان یک لایه امنیتی اضافی عمل کند.
@DevTwitter | <Firoozeh Daeizadeh/>
در دنیای دیجیتال امروز، امنیت اطلاعات شخصی و حساس یک اولویت اساسی است. یکی از مهمترین بخشهای این امنیت، نحوه مدیریت پسوردها است. امروز میخواهم در مورد دو مفهوم مهم در این زمینه، یعنی SaltوPepper صحبت کنم.
۱. Salt
سالت یک مقدار تصادفی است که به پسورد کاربر اضافه میشود قبل از اینکه آن را هش کنیم. این کار به جلوگیری از حملات Rainbow Table کمک میکند، زیرا حتی اگر دو کاربر پسورد یکسانی داشته باشند، با داشتن Saltهای مختلف، هشهای متفاوتی تولید خواهند کرد.
به عنوان مثال، در PHP میتوانیم از تابع password_hash استفاده کنیم:
$password = "Test1234";
$options = [
'cost' => 11
];
$hashed_password = password_hash($password, PASSWORD_BCRYPT, $options);
خروجی این تابع به شکل زیر خواهد بود:
$2y$11$KIXqJCD7UgxE2ZmRkU8DeOeXeP5.h6yDkpH2Slbdm/o7NRlfdEme6
این رشته چهار قسمت دارد:
1. نوع الگوریتم (
$2y$)2. هزینه (Cost) (
11$)3. سالت (Salt) (
KIXqJCD7UgxE2ZmRkU8DeOeXeP5.)4. پسورد هش شده
۲. Pepper
پپر یک مقدار ثابت و محرمانه است که به پسورد اضافه میشود، اما بر خلاف Salt، این مقدار در پایگاه داده ذخیره نمیشود. در عوض، این مقدار در کد برنامه نویسی (Application Code) قرار میگیرد.
به عنوان مثال، در کد زیر:
// config.conf
$pepper = "PT0s!NsO9";
// register.php
$pwd = $_POST['password'];
$pwd_peppered = hash_hmac("sha256", $pwd, $pepper);
$pwd_hashed = password_hash($pwd_peppered, PASSWORD_ARGON2ID);
add_user_to_database($username, $pwd_hashed);
در اینجا، پسورد کاربر ابتدا با Pepper ترکیب میشود و سپس هش میشود. این کار به امنیت بیشتر پسوردها کمک میکند و حتی اگر یک پایگاه داده دزدیده شود، مقدار Pepper میتواند به عنوان یک لایه امنیتی اضافی عمل کند.
@DevTwitter | <Firoozeh Daeizadeh/>
🔥46👍17🤣4❤3
تکنولوژی و ابزار فرانت به سرعتی در حال تغییره که آدم از پشت نمیتونه برسه بک اند و حوزه های دیگه رو نمیدونم ولی شما فرض کن تو فرانت داری با پنج شیش تا ابزار کار میکنی برای مثال:
React
Next
CSS Frameworks
Bundlers
JavaScript
ریکت و نکست که دارن به سرعت فضایی آپدیت میدن نکست که دیگه اصلا هر دو هفته یچیز جدید میده الان مثلا Server actions اضافه کرد که خیلی کاربردیه
ریکت بزودی ورژن جدید که تغییرات جامع داره رو میده بیرون
برای فریم وورک های سی اس اس تیلویند از یه طرف و shadcn UI و ... دارن به کلی صنعت رو به سویه جدید میبرن
جاوااسکریپت تو ورژن جدیدش که هنوز در مرحله تایید هستش کلی فیچر جدید داره به زبان اضافه میکنه
هر روز باید کلی وقت بزاری اخبار بخونی و نه تنها از جدیدترین چیز ها اطلاع داشته باشی بلکه باید به اونا تسلط هم داشته باشی مثلا همین سرور اکشن های نکست به سرعت توسط کامیونیتی مورد استقبال قرار گرفت
بنظرم یه باید عجله کنیم تو یادگیری و پیاده سازی
چون به مدت دیگه نه تنها دیگه نمیتونید مباحث رو توی نه ماه تا یکسال جمع کنید بلکه استخدام هم سخت تر میشه چون حجم پیش نیاز ها به قدری سنگین داره میشه که نه تنها مسائل پایه رو باید تسلط داشته باشید و اینکه اگه یه کوچولو حواستون به مسیرتون نباشه ممکنه دچار
Tutorial Hell
بشید، خلاصه خواستم بگم بهتون اگه از فضای مجازی دور شدید بخاطر اعتیاد آور بودنش یه راه حلی پیدا کنید آپدیت هارو بگیرید هر روز به کم وقت بزارید چیزای جدید بخونید اوناییم که وقت کافی نمیزارن و تخصصشون محکوم به فنا هستن، تلخه ولی واقعیته
دوران دانشجویی هم باید کار کنید رو تخصصتون هم درستون بخونید شرایط طاقت فرساست
@DevTwitter | <Mohammad Mousavi/>
React
Next
CSS Frameworks
Bundlers
JavaScript
ریکت و نکست که دارن به سرعت فضایی آپدیت میدن نکست که دیگه اصلا هر دو هفته یچیز جدید میده الان مثلا Server actions اضافه کرد که خیلی کاربردیه
ریکت بزودی ورژن جدید که تغییرات جامع داره رو میده بیرون
برای فریم وورک های سی اس اس تیلویند از یه طرف و shadcn UI و ... دارن به کلی صنعت رو به سویه جدید میبرن
جاوااسکریپت تو ورژن جدیدش که هنوز در مرحله تایید هستش کلی فیچر جدید داره به زبان اضافه میکنه
هر روز باید کلی وقت بزاری اخبار بخونی و نه تنها از جدیدترین چیز ها اطلاع داشته باشی بلکه باید به اونا تسلط هم داشته باشی مثلا همین سرور اکشن های نکست به سرعت توسط کامیونیتی مورد استقبال قرار گرفت
بنظرم یه باید عجله کنیم تو یادگیری و پیاده سازی
چون به مدت دیگه نه تنها دیگه نمیتونید مباحث رو توی نه ماه تا یکسال جمع کنید بلکه استخدام هم سخت تر میشه چون حجم پیش نیاز ها به قدری سنگین داره میشه که نه تنها مسائل پایه رو باید تسلط داشته باشید و اینکه اگه یه کوچولو حواستون به مسیرتون نباشه ممکنه دچار
Tutorial Hell
بشید، خلاصه خواستم بگم بهتون اگه از فضای مجازی دور شدید بخاطر اعتیاد آور بودنش یه راه حلی پیدا کنید آپدیت هارو بگیرید هر روز به کم وقت بزارید چیزای جدید بخونید اوناییم که وقت کافی نمیزارن و تخصصشون محکوم به فنا هستن، تلخه ولی واقعیته
دوران دانشجویی هم باید کار کنید رو تخصصتون هم درستون بخونید شرایط طاقت فرساست
@DevTwitter | <Mohammad Mousavi/>
👍113🤣8❤3👎3
یکی ادعا کرده که یه رباتی نوشته که برای هر اگهی کار تو لینکدین رزومه و کاورلتر شخصی سازی شده مینویسه و جواب سوالارم میده و اتومات ایزی اپلای میکنه. باهاش تو ۲۴ ساعت ۱۰۰۰ تا اگهی اپلای کرده و ۵۰ تا مصاحبه گرفته! کدشم تو گیت هاب ۱۸ هزار تا استار گرفته!
https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk
@DevTwitter | <Shana/>
https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk
@DevTwitter | <Shana/>
1👍81🤣26🔥3👎1
ا گه دوست دارید با سرویسهای AWS کار کنید اما امکانش براتون فراهم نیست، این یکی رو دیگه نمیتونید کرک کنید و استفاده کنید!
ولی یه راه بهتر هست که نه نیازی به کردیت کارت داره، نه حتی ثبت نام توی AWS.
برای این کار میتونید از پروژه localstack استفاده کنید. این پروژه مجموعهای از سرویسهای AWS رو کاملا شبیه سازی کرده و کافیه که شما طبق داکیومنت جامع و خوبی که داره، روی کامپیوتر خودتون به راحتی راه اندازیش کنید. docker compose هم داره.
چند نمونه از سرویسهایی که پشتیبانی میکنه:
AWS Lambda
S3
Dynamodb
Kinesis
SQS
SNS
مثلا اگر در پروژهای مشارکت دارید که از S3 برای ذخیرهسازی و مدیریت فایلها استفاده میکنه اما امکانش براتون فراهم نیست که از سرویس اصلی برای آزمون و خطا استفاده کنید، از این طریق به راحتی میتونید کد خودتون رو لوکال تست کنید.
https://github.com/localstack/localstack
@DevTwitter | <Amir Ziapour/>
ولی یه راه بهتر هست که نه نیازی به کردیت کارت داره، نه حتی ثبت نام توی AWS.
برای این کار میتونید از پروژه localstack استفاده کنید. این پروژه مجموعهای از سرویسهای AWS رو کاملا شبیه سازی کرده و کافیه که شما طبق داکیومنت جامع و خوبی که داره، روی کامپیوتر خودتون به راحتی راه اندازیش کنید. docker compose هم داره.
چند نمونه از سرویسهایی که پشتیبانی میکنه:
AWS Lambda
S3
Dynamodb
Kinesis
SQS
SNS
مثلا اگر در پروژهای مشارکت دارید که از S3 برای ذخیرهسازی و مدیریت فایلها استفاده میکنه اما امکانش براتون فراهم نیست که از سرویس اصلی برای آزمون و خطا استفاده کنید، از این طریق به راحتی میتونید کد خودتون رو لوکال تست کنید.
https://github.com/localstack/localstack
@DevTwitter | <Amir Ziapour/>
❤21👍13🔥2🤣1
چند هفته پیش یک یک ابزار جدید و رایگان از گوگل به اسم NotebookLM را معرفی کردم که میشه باهاش علاوه بر اینکه سوال و جواب بپرسید راجع به فایل هاتون یک فایل صوتی یا یکجور پادکست هم درست کنید که خیلی جالبه. الان هم توی Twitter این ابزار کلی trend شده.
حالا کمپانی Meta اومده یک ورژن اپن سورس این ابزار را داده به اسم NotebookLlama. میتونید فایل های pdf را در ۴ مرحله به پادکست صوتی تبدیل کنید.
مرحله 1: پیشپردازش PDF: با استفاده از مدل Llama-3.2-1B-Instruct، فایلهای PDF را پیشپردازش کرده و آن را به صورت فایل .txt ذخیره کنید.
مرحله 2: نگارش transcript: با استفاده از مدل Llama-3.1-70B-Instruct، رونوشت پادکست را از متن بنویسید.
مرحله 3: بازنویسی دراماتیک: با استفاده از مدل Llama-3.1-8B-Instruct، رونوشت را دراماتیکتر کنید.
مرحله 4: تبدیل متن به گفتار: با استفاده از parler-tts/parler-tts-mini-v1 و bark/suno، یک پادکست گفتگو محور تولید کنید.
https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama
@DevTwitter | <Mehdi Allahyari/>
حالا کمپانی Meta اومده یک ورژن اپن سورس این ابزار را داده به اسم NotebookLlama. میتونید فایل های pdf را در ۴ مرحله به پادکست صوتی تبدیل کنید.
مرحله 1: پیشپردازش PDF: با استفاده از مدل Llama-3.2-1B-Instruct، فایلهای PDF را پیشپردازش کرده و آن را به صورت فایل .txt ذخیره کنید.
مرحله 2: نگارش transcript: با استفاده از مدل Llama-3.1-70B-Instruct، رونوشت پادکست را از متن بنویسید.
مرحله 3: بازنویسی دراماتیک: با استفاده از مدل Llama-3.1-8B-Instruct، رونوشت را دراماتیکتر کنید.
مرحله 4: تبدیل متن به گفتار: با استفاده از parler-tts/parler-tts-mini-v1 و bark/suno، یک پادکست گفتگو محور تولید کنید.
https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama
@DevTwitter | <Mehdi Allahyari/>
👍24🔥10
فوت و فن مدیریت امنیت:
برای سازمانها و شرکتهای کوچک تامین هزینه برای خرید تجهیزاتی مانند hashtag#waf بسیار بالا بوده و بعضا با مقاومت مدیران روبرو میشه.
پیشنهاد میشه از ابزار open source برای اینکار استفاده کنید و در ادامه با ارائه گزارش لاگهای فعالیت و رفع مخاطرات و تصویر سازی سناریو های ممکن مدیران را از ریسک نبود تجهیز مطلوب آگاه کنیم.
ابزار bunkerweb رو برای waf داشته باشید
https://github.com/bunkerity/bunkerweb
@DevTwitter | <Peyman khodabandeh/>
برای سازمانها و شرکتهای کوچک تامین هزینه برای خرید تجهیزاتی مانند hashtag#waf بسیار بالا بوده و بعضا با مقاومت مدیران روبرو میشه.
پیشنهاد میشه از ابزار open source برای اینکار استفاده کنید و در ادامه با ارائه گزارش لاگهای فعالیت و رفع مخاطرات و تصویر سازی سناریو های ممکن مدیران را از ریسک نبود تجهیز مطلوب آگاه کنیم.
ابزار bunkerweb رو برای waf داشته باشید
https://github.com/bunkerity/bunkerweb
@DevTwitter | <Peyman khodabandeh/>
👍13🤣8
خواهشا ردیس را به عنوان Primary Database استفاده نکنید!
یکی از جذابترین ریفکتور هایی که در اکالا انجام دادم، به ریلیز کردن ۴۰ گیگابایت رم ردیس برای استفاده در سبد خرید و سفارشها مربوط میشه. در این فرآیند، موفق شدم تنها از ۴۰۰ مگابایت رم استفاده کنم!
در شروع کار، به این فکر میکردم که چگونه میتوانم ۴۰ گیگابایت رم را آزاد کنم. اولین راهحلی که به ذهنم رسید، فشردهسازی دادهها بود. اما هیچ کامپرسوری نمیتوانست به اندازه کافی این حجم داده را فشرده کند، و هزینهی Decompress کردن آن بخاطر لود بالای سیستم، بسیار بالا بود.
هر کلید ما حاوی حدود ۱-۲ کیلوبایت JSON بود و مجبور بودیم که هر محصول را بدون TTL در Redis نگه داریم، زیرا Round Trip ما به Redis در لحظه به حدود ۳۰K میرسید و Redis ۴۰ گیگابایتی را مصرف میکرد. هیچ اپلیکیشنی نمیتوانست این حجم Request را با منابع پایین و زمان پاسخدهی ۱۰ میلیثانیه انجام دهد!
در ادامه، وقتی وارد فضای حل مسئله شدم:
پاکسازی دادههای اضافی: اولین قدم ما حذف کلی دادههای غیرضروری بود که هر کلید را به حدوداً ۵۰۰ بایت تبدیل کرد.
استفاده از Protobuf: به این فکر کردم که چرا از JSON استفاده کنیم؟ با استفاده از deserializer و serializer قدرتمندی مثل Protobuf، میتوانستیم حجم دادهها را به طور چشمگیری کاهش دهیم. با تبدیل دادهها به باینری و ذخیره آن، حجم هر کلید به حدود ۳۰۰ بایت کاهش یافت، که به معنای کاهش ۸۰ درصدی مصرف رم بود. با این حال، کیفیت و سرعت بالا در اکالا برای ما بسیار مهم بود.
شکستن کلیدها: کلیدها را به دو بخش تقسیم کردم:
اطلاعات محصول (شامل نام، بارکد، آدرس عکس و...) در یک کلید با حجم تقریباً ۲۰۰ بایت.
موجودی هر محصول در فروشگاهها در کلیدی دیگر با حجم حدود ۱۰۰ بایت.
در روش قبلی، اگر یک میلیون کالا داشتیم، مصرف حدود ۲۸۶ مگابایت بود. اما در روش جدید، فرض کنیم از یک میلیون تا 2000 محصول داریم و برای یک میلیون کالا موجودی در استور های مختلف، حدود ۹۵ مگابایت مصرف میشد!
کش کردن محصولات: همچنین، کالاهای اضافهشده به سبد خرید مشتریان را به مدت ۴ روز کش کردم. به جای استفاده از Redis به عنوان Primary Database و بدون TTL، هرگاه دادهای نداشتیم، از منبع اصلی اطلاعات را میگرفتیم و دوباره به مدت ۴ روز کش میکردیم. اگر کاربری همان کالا را دوباره به سبد خرید اضافه میکرد، TTL آن به صورت Sliding افزایش مییافت.
در نهایت، با همین ۴۰۰ مگابایت، همه چیز به خوبی به هم رسید و ما توانستیم پرفورمنس و سرعت را بدون هیچ افت کیفیتی حفظ کنیم!
@DevTwitter | <Hassan Arab borzo/>
یکی از جذابترین ریفکتور هایی که در اکالا انجام دادم، به ریلیز کردن ۴۰ گیگابایت رم ردیس برای استفاده در سبد خرید و سفارشها مربوط میشه. در این فرآیند، موفق شدم تنها از ۴۰۰ مگابایت رم استفاده کنم!
در شروع کار، به این فکر میکردم که چگونه میتوانم ۴۰ گیگابایت رم را آزاد کنم. اولین راهحلی که به ذهنم رسید، فشردهسازی دادهها بود. اما هیچ کامپرسوری نمیتوانست به اندازه کافی این حجم داده را فشرده کند، و هزینهی Decompress کردن آن بخاطر لود بالای سیستم، بسیار بالا بود.
هر کلید ما حاوی حدود ۱-۲ کیلوبایت JSON بود و مجبور بودیم که هر محصول را بدون TTL در Redis نگه داریم، زیرا Round Trip ما به Redis در لحظه به حدود ۳۰K میرسید و Redis ۴۰ گیگابایتی را مصرف میکرد. هیچ اپلیکیشنی نمیتوانست این حجم Request را با منابع پایین و زمان پاسخدهی ۱۰ میلیثانیه انجام دهد!
در ادامه، وقتی وارد فضای حل مسئله شدم:
پاکسازی دادههای اضافی: اولین قدم ما حذف کلی دادههای غیرضروری بود که هر کلید را به حدوداً ۵۰۰ بایت تبدیل کرد.
استفاده از Protobuf: به این فکر کردم که چرا از JSON استفاده کنیم؟ با استفاده از deserializer و serializer قدرتمندی مثل Protobuf، میتوانستیم حجم دادهها را به طور چشمگیری کاهش دهیم. با تبدیل دادهها به باینری و ذخیره آن، حجم هر کلید به حدود ۳۰۰ بایت کاهش یافت، که به معنای کاهش ۸۰ درصدی مصرف رم بود. با این حال، کیفیت و سرعت بالا در اکالا برای ما بسیار مهم بود.
شکستن کلیدها: کلیدها را به دو بخش تقسیم کردم:
اطلاعات محصول (شامل نام، بارکد، آدرس عکس و...) در یک کلید با حجم تقریباً ۲۰۰ بایت.
موجودی هر محصول در فروشگاهها در کلیدی دیگر با حجم حدود ۱۰۰ بایت.
در روش قبلی، اگر یک میلیون کالا داشتیم، مصرف حدود ۲۸۶ مگابایت بود. اما در روش جدید، فرض کنیم از یک میلیون تا 2000 محصول داریم و برای یک میلیون کالا موجودی در استور های مختلف، حدود ۹۵ مگابایت مصرف میشد!
کش کردن محصولات: همچنین، کالاهای اضافهشده به سبد خرید مشتریان را به مدت ۴ روز کش کردم. به جای استفاده از Redis به عنوان Primary Database و بدون TTL، هرگاه دادهای نداشتیم، از منبع اصلی اطلاعات را میگرفتیم و دوباره به مدت ۴ روز کش میکردیم. اگر کاربری همان کالا را دوباره به سبد خرید اضافه میکرد، TTL آن به صورت Sliding افزایش مییافت.
در نهایت، با همین ۴۰۰ مگابایت، همه چیز به خوبی به هم رسید و ما توانستیم پرفورمنس و سرعت را بدون هیچ افت کیفیتی حفظ کنیم!
@DevTwitter | <Hassan Arab borzo/>
4👍125🔥21🤣5❤4
بعد از تجربه چندین پروژه در طراحی پنل و سایت اصلی، چه به صورت فردی و چه در قالب کارهای گروهی، اکنون در فریمورک Vue.js همراه با فریم ورک لارول پیش میبرم . در این مسیر، با Vuex به عنوان ابزار مدیریت وضعیت اصلی Vue 2 و Vue 3 کار کردهام. اما با توجه به اینکه در Vue 3، ابزار Pinia به عنوان ابزار رسمی و توصیهشده برای مدیریت وضعیت معرفی شده،
,ولی بازم vuex در ویو ۳ کاربرد داره ولی خب ... تصمیم گرفتم به تدریج از Vuex جدا شم و به Pinia مهاجرت کنم. اما چرا؟؟
در Vue.js روشهای مختلفی برای مدیریت وضعیت (State Management) وجود دارد که انتخاب هر روش به نیاز و پیچیدگی پروژه بستگی دارد. در زیر، برخی از ابزارها و روشهای پرکاربرد برای مدیریت وضعیت در Vue را بررسی میکنیم:
استفاده از props و events
این روش ابتداییترین روش مدیریت وضعیت است. از props برای ارسال داده از کامپوننت والد به فرزندان و از events برای انتقال دادهها به سمت بالا استفاده میشود. این روش در پروژههای کوچک و ساده مؤثر است اما برای پروژههای بزرگ کافی نیست.
استفاده از provide و inject
provide و inject به اشتراکگذاری وضعیت بین کامپوننتها بدون نیاز به props کمک میکنند. این روش در شرایطی که چندین کامپوننت نیاز به داده مشترک دارند مناسب است اما در پروژههای بزرگ محدودیت دارد.
ابزار Pinia، ابزار رسمی و توصیهشده برای Vue 3، با API ساده و روانی که دارد، تجربه توسعهدهنده را بهبود داده و از ویژگیهای Vue 3 مانند Composition API و سیستم واکنشپذیری پیشرفته بهره میبرد. این ابزار جایگزین Vuex در Vue 3 شده و برای پروژههای بزرگ گزینهای بهینه است.
ابزار Vuex ابزار اصلی مدیریت وضعیت در Vue 2 است و ساختاری متمرکز برای مدیریت دادهها ارائه میدهد. Vuex از state، mutations، actions و getters برای مدیریت وضعیت استفاده میکند. با وجود امکان استفاده از Vuex در Vue 3، تیم Vue اکنون Pinia را به عنوان جایگزین رسمی برای Vue 3 معرفی کرده است.
استفاده از Composition API و reactive
در Vue 3، Composition API و reactive به توسعهدهندگان امکان میدهند که وضعیتهای محلی را با سادگی بیشتری مدیریت کنند. این روش برای پروژههای متوسط و کوچک کارآمد است.
کتابخانههای خارجی (مانند Redux یا Zustand)
برخی از پروژههای پیچیده نیاز به ابزارهای دیگری مانند Redux دارند، هرچند این کتابخانهها مخصوص Vue نیستند و بیشتر در پروژههای چندپلتفرمی کاربرد دارند.
تجربه ای داشتم این بود که اگر بخواین با nuxt مخصوصا ورژن ۳ کارکنید pinia بهترین هست این جمله من دلیل نمیشه vuex بد باشه نه منظوم این نیست :)
منظورم این که راحتر دیپلوی میشه در ناکست ۳ و همین ...
@DevTwitter | <amirreza raadi/>
,ولی بازم vuex در ویو ۳ کاربرد داره ولی خب ... تصمیم گرفتم به تدریج از Vuex جدا شم و به Pinia مهاجرت کنم. اما چرا؟؟
در Vue.js روشهای مختلفی برای مدیریت وضعیت (State Management) وجود دارد که انتخاب هر روش به نیاز و پیچیدگی پروژه بستگی دارد. در زیر، برخی از ابزارها و روشهای پرکاربرد برای مدیریت وضعیت در Vue را بررسی میکنیم:
استفاده از props و events
این روش ابتداییترین روش مدیریت وضعیت است. از props برای ارسال داده از کامپوننت والد به فرزندان و از events برای انتقال دادهها به سمت بالا استفاده میشود. این روش در پروژههای کوچک و ساده مؤثر است اما برای پروژههای بزرگ کافی نیست.
استفاده از provide و inject
provide و inject به اشتراکگذاری وضعیت بین کامپوننتها بدون نیاز به props کمک میکنند. این روش در شرایطی که چندین کامپوننت نیاز به داده مشترک دارند مناسب است اما در پروژههای بزرگ محدودیت دارد.
ابزار Pinia، ابزار رسمی و توصیهشده برای Vue 3، با API ساده و روانی که دارد، تجربه توسعهدهنده را بهبود داده و از ویژگیهای Vue 3 مانند Composition API و سیستم واکنشپذیری پیشرفته بهره میبرد. این ابزار جایگزین Vuex در Vue 3 شده و برای پروژههای بزرگ گزینهای بهینه است.
ابزار Vuex ابزار اصلی مدیریت وضعیت در Vue 2 است و ساختاری متمرکز برای مدیریت دادهها ارائه میدهد. Vuex از state، mutations، actions و getters برای مدیریت وضعیت استفاده میکند. با وجود امکان استفاده از Vuex در Vue 3، تیم Vue اکنون Pinia را به عنوان جایگزین رسمی برای Vue 3 معرفی کرده است.
استفاده از Composition API و reactive
در Vue 3، Composition API و reactive به توسعهدهندگان امکان میدهند که وضعیتهای محلی را با سادگی بیشتری مدیریت کنند. این روش برای پروژههای متوسط و کوچک کارآمد است.
کتابخانههای خارجی (مانند Redux یا Zustand)
برخی از پروژههای پیچیده نیاز به ابزارهای دیگری مانند Redux دارند، هرچند این کتابخانهها مخصوص Vue نیستند و بیشتر در پروژههای چندپلتفرمی کاربرد دارند.
تجربه ای داشتم این بود که اگر بخواین با nuxt مخصوصا ورژن ۳ کارکنید pinia بهترین هست این جمله من دلیل نمیشه vuex بد باشه نه منظوم این نیست :)
منظورم این که راحتر دیپلوی میشه در ناکست ۳ و همین ...
@DevTwitter | <amirreza raadi/>
👍34❤4
اگه دنبال کار میگردین، دیگه دوره دستی انجام دادنش تموم شده.
ابزار پایین تمام فرایند رو انجام میده. صرفا فقط اطلاعاتتون رو باید بهش بدین.
https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk
@DevTwitter | <Hosein Haqiqian/>
ابزار پایین تمام فرایند رو انجام میده. صرفا فقط اطلاعاتتون رو باید بهش بدین.
https://github.com/feder-cr/Auto_Jobs_Applier_AIHawk
@DevTwitter | <Hosein Haqiqian/>
👎52👍12🤣2
اکستنشن رسمی ChatGPT به طرز عجیبی خوب و قویه، بیچاره سم آلتمن گفت نمیخوام "جو" بدم، ولی این یکی واقعا خوبه!
سم آلتمن درست میگفت.
https://chromewebstore.google.com/detail/chatgpt-search/ejcfepkfckglbgocfkanmcdngdijcgld
@DevTwitter | <Sabber/>
سم آلتمن درست میگفت.
https://chromewebstore.google.com/detail/chatgpt-search/ejcfepkfckglbgocfkanmcdngdijcgld
@DevTwitter | <Sabber/>
2🤣54👍18❤3👎2
بیشتر از 700 سوال پر تکرار برای متخصصین Front-end و Back-end
تایپکهایی که شامل این Repository میشه :
System Design - Algorithm - Data Structure - Solid Priciples - Live Coding - Task - Design Pattern - Coding Challenge - Live Coding Chanllenge
https://github.com/Soheib-Kiani/most-repeated-interview-questions
@DevTwitter | <Soheib/>
تایپکهایی که شامل این Repository میشه :
System Design - Algorithm - Data Structure - Solid Priciples - Live Coding - Task - Design Pattern - Coding Challenge - Live Coding Chanllenge
https://github.com/Soheib-Kiani/most-repeated-interview-questions
@DevTwitter | <Soheib/>
👍25❤7👎1
Media is too big
VIEW IN TELEGRAM
این ویدیو الگوریتمهای مختلف Sorting رو به تصویر میکشه و نشون میده چطور هر کدوم عملیات مرتبسازی رو انجام میدن.
واقعا دیدنیه و کلی چیز میشه ازش یاد گرفت
@DevTwitter | <Mohammad Eslami/>
واقعا دیدنیه و کلی چیز میشه ازش یاد گرفت
@DevTwitter | <Mohammad Eslami/>
🔥58👍7❤4👎2
چند ماه پیش که از خدمت سربازی برگشتمو دیدم هیچی از کد زدن و برنامه نویسی یادم نمی یاد شروع کردم یه پروژه لاراولی باز کردم و از فکتوری و faker استفاده کردم همه چی خوب بود تا اینکه نتونستم عکس باهاش تولید کنم یا حتی وکتور یا یه منبع کاملی از هرچیزی که بخوام
خلاصه چون freepik میشناختم و قبلا هم باهاش کار کردم میکردم گشتم api شو پیدا کردم خودم یه پکیج ازش ساختم
https://github.com/alirezaevil81/freepik-geter
عزیزانی که با php کد میزنید یه نگاهی بندازید شاید به دردتون بخوره
@DevTwitter | <alireza haraji/>
خلاصه چون freepik میشناختم و قبلا هم باهاش کار کردم میکردم گشتم api شو پیدا کردم خودم یه پکیج ازش ساختم
https://github.com/alirezaevil81/freepik-geter
عزیزانی که با php کد میزنید یه نگاهی بندازید شاید به دردتون بخوره
@DevTwitter | <alireza haraji/>
❤28👍10👎7🔥4
یه فرصت خیلی خوب برای علاقمندان به یادگیری دیتابیس PostgreSQL
اِرِن فرَنسِز (Aaron Francis) که تجربه ای نزدیک به 20 سال، با پستگرس داره و از مدرسین فعال حوزه ی لاراول هم هست، دوره Mastering Postgres رو منتشر کرده که نزدیک به 11 ساعت آموزش هست.
25 ویدیو اول این دوره رایگان هست که میتونید ازش استفاده کنید.
https://masteringpostgres.com/
@DevTwitter | <Ali Salehi/>
اِرِن فرَنسِز (Aaron Francis) که تجربه ای نزدیک به 20 سال، با پستگرس داره و از مدرسین فعال حوزه ی لاراول هم هست، دوره Mastering Postgres رو منتشر کرده که نزدیک به 11 ساعت آموزش هست.
25 ویدیو اول این دوره رایگان هست که میتونید ازش استفاده کنید.
https://masteringpostgres.com/
@DevTwitter | <Ali Salehi/>
👍35🤣9❤7👎1
کمپانی HuggingFace یک سری مدل کوچک به اسم SmolLM2 که تا سقف ۲ میلیارد پرامتر دارند، معرفی کرده که برای خیلی از کارها از جمله بازنویسی متن (rewriting)، خلاصه کردن متن (summarization)، و function calling میتونید راحت به صورت لوکال با سرعت خیلی بالا ازشون استفاده کنید.
https://huggingface.co/collections/HuggingFaceTB/smollm2-6723884218bcda64b34d7db9
@DevTwitter | <Mehdi Allahyari/>
https://huggingface.co/collections/HuggingFaceTB/smollm2-6723884218bcda64b34d7db9
@DevTwitter | <Mehdi Allahyari/>
👍29👎3
یک ریپو جالب پیدا کردم که سه تا از معروف ترین فریم ورک و تکنولوژی های فرانت یعنی React, Angular , Vue رو با جاوا اسکریپت خالی یا VanillaJS هر کدوم تو یک فایل پیاده سازی کرده پیشنهاد میکنم حتما بهش یک نگاهی کنید
بستگی به فریم ورکی که کار می کنید دید خیلی خوبی بهتون میده که این فریم ورک ها چطوری کار می کنند.
مثلا اگر React کار می کنید متوجه می شید که هووک useState چطوری کار می کنه!
https://gist.github.com/faustinoaq/b19da758fc45155a0b3b10d9f578c5ce
@DevTwitter | <Saman Keighobadi/>
بستگی به فریم ورکی که کار می کنید دید خیلی خوبی بهتون میده که این فریم ورک ها چطوری کار می کنند.
مثلا اگر React کار می کنید متوجه می شید که هووک useState چطوری کار می کنه!
https://gist.github.com/faustinoaq/b19da758fc45155a0b3b10d9f578c5ce
@DevTwitter | <Saman Keighobadi/>
🔥37👍8
باز هم یه حرکت جدید از لاراول! با معرفی Laravel Cloud، دیپلوی و مقیاسپذیری اپهای لاراولی راحتتر از همیشه میشه!
این پلتفرم با امکاناتی مثل مقیاسبندی خودکار، انتشار مستقیم از گیت، و امنیت قوی در برابر حملات DDoS، کار دیپلوی رو بیدردسر میکنه.
قرار هست Laravel Cloud از اواخر ۲۰۲۴ در دسترس باشه؛ اگر کنجکاوید، میتونید برای ثبتنام و اطلاعات بیشتر به سایتشون (cloud.laravel.com) سر بزنید.
همچنین میتونید تریلر این محصول جذاب رو در یوتیوب ببینید:
https://www.youtube.com/watch?v=olaSFcQZQWQ
@DevTwitter | <Amir Asgary/>
این پلتفرم با امکاناتی مثل مقیاسبندی خودکار، انتشار مستقیم از گیت، و امنیت قوی در برابر حملات DDoS، کار دیپلوی رو بیدردسر میکنه.
قرار هست Laravel Cloud از اواخر ۲۰۲۴ در دسترس باشه؛ اگر کنجکاوید، میتونید برای ثبتنام و اطلاعات بیشتر به سایتشون (cloud.laravel.com) سر بزنید.
همچنین میتونید تریلر این محصول جذاب رو در یوتیوب ببینید:
https://www.youtube.com/watch?v=olaSFcQZQWQ
@DevTwitter | <Amir Asgary/>
👍30🤣14👎9
چک لیست افزونه های کاربردی و منتخب وردپرس
1. کش و بهینهسازی برای سرعت
- LiteSpeed Cache
افزونهای قدرتمند برای بهبود سرعت بارگذاری و کش صفحات.
- WP Rocket
یکی از بهترین افزونههای کش برای بهینهسازی عملکرد سایت.
- W3 Total Cache
بهینهسازی کش و افزایش سرعت بارگذاری وبسایت.
2. بهینهسازی دیتابیس
- WP Optimize
بهینهسازی و پاکسازی دیتابیس برای افزایش کارایی.
3. صفحه ساز گرافیکی
- Elementor
صفحهساز محبوب و کاربرپسند برای طراحی صفحات وب.
4. جدول ساز
- TablePress
ایجاد و مدیریت جداول بهصورت ساده و کارآمد.
5. فروش محصول (فیزیکی و مجازی)
- WooCommerce
افزونهای جامع برای راهاندازی فروشگاه آنلاین.
6. فروش محصول مجازی
- Easy Digital Downloads (EDD)
مخصوص فروش محصولات دیجیتال و دانلودی.
7. برگزاری دورههای آنلاین
- LearnDash
افزونهای قدرتمند برای ایجاد و مدیریت دورههای آموزشی آنلاین.
- Tutor LMS
پلتفرم کامل برای مدیریت دورههای آنلاین و آموزش.
8. فرم ساز
- Gravity Forms
فرمساز پیشرفته با امکانات زیاد.
- MetForm
فرمساز گرافیکی و آسان برای استفاده.
9. ورود و ثبت نام با پیامک
- DigiTS
مدیریت ورود و ثبتنام با استفاده از پیامک.
- Kerasno
افزونهای دیگر برای احراز هویت با پیامک.
10. جلوگیری از کامنت اسپم
- Akismet
افزونهای برای جلوگیری از کامنتهای اسپم و غیرمجاز.
11. ویرایش گروهی محصولات ووکامرس
- Advanced Bulk Edit
ویرایش آسان و سریع محصولات ووکامرس بهصورت گروهی.
12. سئو
- Yoast SEO
یکی از بهترین افزونههای سئو برای بهینهسازی محتوا.
- Rank Math
افزونهای قدرتمند برای مدیریت سئو و بهینهسازی سایت.
13. امنیت
- Wordfence Security
حفاظت از وبسایت در برابر حملات و بدافزارها.
- iThemes Security
بهبود امنیت و جلوگیری از نفوذ به سایت.
14. بهینهسازی تصاویر
- Smush
فشردهسازی و بهینهسازی تصاویر بدون کاهش کیفیت.
- Imagify
بهینهسازی تصاویر و افزایش سرعت بارگذاری.
15. پشتیبانگیری
- UpdraftPlus
تهیه نسخه پشتیبان و بازیابی آسان وبسایت.
- BackupBuddy
مدیریت آسان نسخههای پشتیبان و بازیابی.
@DevTwitter | <Farhad Safari/>
1. کش و بهینهسازی برای سرعت
- LiteSpeed Cache
افزونهای قدرتمند برای بهبود سرعت بارگذاری و کش صفحات.
- WP Rocket
یکی از بهترین افزونههای کش برای بهینهسازی عملکرد سایت.
- W3 Total Cache
بهینهسازی کش و افزایش سرعت بارگذاری وبسایت.
2. بهینهسازی دیتابیس
- WP Optimize
بهینهسازی و پاکسازی دیتابیس برای افزایش کارایی.
3. صفحه ساز گرافیکی
- Elementor
صفحهساز محبوب و کاربرپسند برای طراحی صفحات وب.
4. جدول ساز
- TablePress
ایجاد و مدیریت جداول بهصورت ساده و کارآمد.
5. فروش محصول (فیزیکی و مجازی)
- WooCommerce
افزونهای جامع برای راهاندازی فروشگاه آنلاین.
6. فروش محصول مجازی
- Easy Digital Downloads (EDD)
مخصوص فروش محصولات دیجیتال و دانلودی.
7. برگزاری دورههای آنلاین
- LearnDash
افزونهای قدرتمند برای ایجاد و مدیریت دورههای آموزشی آنلاین.
- Tutor LMS
پلتفرم کامل برای مدیریت دورههای آنلاین و آموزش.
8. فرم ساز
- Gravity Forms
فرمساز پیشرفته با امکانات زیاد.
- MetForm
فرمساز گرافیکی و آسان برای استفاده.
9. ورود و ثبت نام با پیامک
- DigiTS
مدیریت ورود و ثبتنام با استفاده از پیامک.
- Kerasno
افزونهای دیگر برای احراز هویت با پیامک.
10. جلوگیری از کامنت اسپم
- Akismet
افزونهای برای جلوگیری از کامنتهای اسپم و غیرمجاز.
11. ویرایش گروهی محصولات ووکامرس
- Advanced Bulk Edit
ویرایش آسان و سریع محصولات ووکامرس بهصورت گروهی.
12. سئو
- Yoast SEO
یکی از بهترین افزونههای سئو برای بهینهسازی محتوا.
- Rank Math
افزونهای قدرتمند برای مدیریت سئو و بهینهسازی سایت.
13. امنیت
- Wordfence Security
حفاظت از وبسایت در برابر حملات و بدافزارها.
- iThemes Security
بهبود امنیت و جلوگیری از نفوذ به سایت.
14. بهینهسازی تصاویر
- Smush
فشردهسازی و بهینهسازی تصاویر بدون کاهش کیفیت.
- Imagify
بهینهسازی تصاویر و افزایش سرعت بارگذاری.
15. پشتیبانگیری
- UpdraftPlus
تهیه نسخه پشتیبان و بازیابی آسان وبسایت.
- BackupBuddy
مدیریت آسان نسخههای پشتیبان و بازیابی.
@DevTwitter | <Farhad Safari/>
👍21🤣17🔥4👎3