این ویدئو هم جالب بود... آسیبپذیری http smuggling تو داتنت با امتیاز 9.9 رفع شده ولی azure هنوز از نسخه آسیب پذیر استفاده میکنه!
اینکه LLMهای جدید بلافاصله به copilot اضافه میشن ولی همچین مورد خطرناکی هنوز رو azure وجود داره واقعا عجیبه
پ.ن: http smuggling تقریبا (خیلی فنی و دقیق نمیگم) اینجوری هست که یه درخواست http داخل یه درخواست دیگه وجود داره. مثلا ریورس پراکسی فقط درخواست بیرونی رو میبینه ولی سرور درخواست درونی رو هم اجرا میکنه که ممکنه مخرب باشه.
https://youtube.com/watch?v=LE758TvUE5c
@DevTwitter | <Serajoddin Aliabadi/>
اینکه LLMهای جدید بلافاصله به copilot اضافه میشن ولی همچین مورد خطرناکی هنوز رو azure وجود داره واقعا عجیبه
پ.ن: http smuggling تقریبا (خیلی فنی و دقیق نمیگم) اینجوری هست که یه درخواست http داخل یه درخواست دیگه وجود داره. مثلا ریورس پراکسی فقط درخواست بیرونی رو میبینه ولی سرور درخواست درونی رو هم اجرا میکنه که ممکنه مخرب باشه.
https://youtube.com/watch?v=LE758TvUE5c
@DevTwitter | <Serajoddin Aliabadi/>
👍12🍌8❤1🔥1
سلام به یکی از باحال ترین فیچر های routing در next.js به نام Parallel Routes.
فیچر Parallel Routes به شما اجازه میده که همزمان یا بهصورت شرطی، یک یا چند صفحه (Page) رو در داخل یک Layout واحد رندر کنید. تصور کنید یک داشبورد دارید که همزمان بخشهای آمار، نوتیفیکیشنها و اطلاعات تیم رو نمایش میده. هر کدوم از این بخشها میتونن بهطور مستقل، دادههای خودشون رو فچ کنن و حالت (State) خودشون رو حفظ کنن، حتی وقتی کاربر در حال جابجایی بین زیرمسیرها (Sub-routes) است.
مزایای کلیدی:
- رندر همزمان (Simultaneous Rendering): چندین بخش مختلف UI در یک URL و یک Layout واحد.
- اسلات نامگذاریشده (Named Slots): با استفاده از قاعده
- حفظ محتوا (Context Preservation): در ناوبری سمت کلاینت (Soft Navigation)، محتوای اسلاتهای دیگر حفظ میشه، که برای سناریوهایی مثل نمایش Modalها روی محتوای اصلی (با ترکیب با Intercepting Routes) عالیه.
در پروژهای که در گیتهاب آپلود کردم، سعی کردم یک سناریوی عملی از پیادهسازی Parallel Routes رو نشون بدم. شما میتونید ساختار پوشههای Slots (@...) و نحوهی پاس دادن اونها به کامپوننت layout.js رو ببینید.
برای علاقهمندان به Next.js و App Router، حتماً کدم رو بررسی کنید و بازخورد بدید. خوشحال میشم نظرات شما رو بشنوم و با هم بیشتر یاد بگیریم!
استفاده از Parallel Routes برای داشبوردها، صفحات پروفایل کاربر با تبهای مختلف، و Modalهای Overlay بسیار توصیه میشه!
شما Parallel Routes رو برای چه سناریویی استفاده میکنید؟
لینک گیتهاب پروژه: https://github.com/Ardalan1380/parallel-routes
@DevTwitter | <Ardalan Hosseini/>
فیچر Parallel Routes به شما اجازه میده که همزمان یا بهصورت شرطی، یک یا چند صفحه (Page) رو در داخل یک Layout واحد رندر کنید. تصور کنید یک داشبورد دارید که همزمان بخشهای آمار، نوتیفیکیشنها و اطلاعات تیم رو نمایش میده. هر کدوم از این بخشها میتونن بهطور مستقل، دادههای خودشون رو فچ کنن و حالت (State) خودشون رو حفظ کنن، حتی وقتی کاربر در حال جابجایی بین زیرمسیرها (Sub-routes) است.
مزایای کلیدی:
- رندر همزمان (Simultaneous Rendering): چندین بخش مختلف UI در یک URL و یک Layout واحد.
- اسلات نامگذاریشده (Named Slots): با استفاده از قاعده
@folder مسیریابی موازی تعریف میشن و به عنوان props به Layout والد پاس داده میشن. این باعث میشه کد تمیزتر و ماژولارتر بشه.- حفظ محتوا (Context Preservation): در ناوبری سمت کلاینت (Soft Navigation)، محتوای اسلاتهای دیگر حفظ میشه، که برای سناریوهایی مثل نمایش Modalها روی محتوای اصلی (با ترکیب با Intercepting Routes) عالیه.
در پروژهای که در گیتهاب آپلود کردم، سعی کردم یک سناریوی عملی از پیادهسازی Parallel Routes رو نشون بدم. شما میتونید ساختار پوشههای Slots (@...) و نحوهی پاس دادن اونها به کامپوننت layout.js رو ببینید.
برای علاقهمندان به Next.js و App Router، حتماً کدم رو بررسی کنید و بازخورد بدید. خوشحال میشم نظرات شما رو بشنوم و با هم بیشتر یاد بگیریم!
استفاده از Parallel Routes برای داشبوردها، صفحات پروفایل کاربر با تبهای مختلف، و Modalهای Overlay بسیار توصیه میشه!
شما Parallel Routes رو برای چه سناریویی استفاده میکنید؟
لینک گیتهاب پروژه: https://github.com/Ardalan1380/parallel-routes
@DevTwitter | <Ardalan Hosseini/>
👍16🍌12❤2🔥2
داشتم رو یه پروژه ای کار میکردم که نیاز داشتم که noscript رو به صورت کامپوننت داشته باشم مثل noscriptr توی ریکت اما برای svelte
یه لایبرری نوشتم که که اینکارو میکنه
فقط کافیه توی پروژه svelte ایتون اینجوری فایل های noscript تون رو ایمپورت کنید.
https://github.com/mostafa-kheibary/svelte-noscript-import
@DevTwitter | <Mosi/>
یه لایبرری نوشتم که که اینکارو میکنه
فقط کافیه توی پروژه svelte ایتون اینجوری فایل های noscript تون رو ایمپورت کنید.
https://github.com/mostafa-kheibary/svelte-noscript-import
@DevTwitter | <Mosi/>
👍23🍌15❤2👎1
کد پیچیده سیشارپ و داتنت نوشتن خیلی لذت بخشه.
هر لذتی لزوما خوب نیست :))) استثنا اینجا خوب و لازم بود
سالها بود که چنین کد داتنتی ننوشته بودم.
این پروژه هم فوقالعاده است، یه نگاه بهش بکنید.
بعد حدود ۹ سال دوباره ازش استفاده کردم.
https://github.com/Fody/Fody
@DevTwitter | <Ashkan Nourzadeh/>
هر لذتی لزوما خوب نیست :))) استثنا اینجا خوب و لازم بود
سالها بود که چنین کد داتنتی ننوشته بودم.
این پروژه هم فوقالعاده است، یه نگاه بهش بکنید.
بعد حدود ۹ سال دوباره ازش استفاده کردم.
https://github.com/Fody/Fody
@DevTwitter | <Ashkan Nourzadeh/>
👎20🍌18👍8🔥2
🍌298👎5👍1
🍌62👍8
یه ریپو جالب که md رو تبدیل به pdf میکنه، برای ریپوهایی که مستندات رو ترجمه کردن ک میخوان کتابش کنن خیلی خوبه:
https://github.com/amirroox/MarkdownToBook
در حال حاضر این ویژگی هارو داره:
- تبدیل دسته ایی مارک داون (markdown) به کتاب (PDF)
- سینتکس هایلایتر (Syntax highlighting) بر اساس Prism.js
- اضافه کردن کاور تمام صفحه
- ساپورت از زبان فارسی (راست چین
- مشخص شدن تعداد صفحات
- دارای فهرست بر اساس فایل های مارک داون (قابلیت کیلک) + فهرست کل
- اضافه کردن مشخصات مترجم / مشارکت کننده ها + عکس و لینک های فضای مجازیشون
- ساپورت کردن تمامی موارد مارک داون
- شخصی سازی تمامی موارد اعم از رنگ، فونت، بک گراند و غیره + 3 تا تم پیشفرض هم داره که میتونید از اون استفاده کنید
- اضافه کردن هدر و فوتر (هدر برای عناوین فصل ها و فوتر برای متن شخصی سازی شده)
- اضافه کردن پیشگفتار قبل از صفحه فهرست و مشارکت کننده ها
@DevTwitter | <Peyman/>
https://github.com/amirroox/MarkdownToBook
در حال حاضر این ویژگی هارو داره:
- تبدیل دسته ایی مارک داون (markdown) به کتاب (PDF)
- سینتکس هایلایتر (Syntax highlighting) بر اساس Prism.js
- اضافه کردن کاور تمام صفحه
- ساپورت از زبان فارسی (راست چین
- مشخص شدن تعداد صفحات
- دارای فهرست بر اساس فایل های مارک داون (قابلیت کیلک) + فهرست کل
- اضافه کردن مشخصات مترجم / مشارکت کننده ها + عکس و لینک های فضای مجازیشون
- ساپورت کردن تمامی موارد مارک داون
- شخصی سازی تمامی موارد اعم از رنگ، فونت، بک گراند و غیره + 3 تا تم پیشفرض هم داره که میتونید از اون استفاده کنید
- اضافه کردن هدر و فوتر (هدر برای عناوین فصل ها و فوتر برای متن شخصی سازی شده)
- اضافه کردن پیشگفتار قبل از صفحه فهرست و مشارکت کننده ها
@DevTwitter | <Peyman/>
❤24👍7🍌5🔥2
این ریپو یه نمونهی کاربردی از ساخت MCP Server هست که بهتون نشون میده چطور میتونید MCP سرور خودتون رو بسازید
پروژه با Node.js و Hono ساخته شده تا بهتر مفهوم ارتباط بین مدل هوش مصنوعی و سرور MCP رو درک کنید.
با این ریپو میتونید یاد بگیرید چطور:
یه MCP Server سبک و سریع بسازید
ابزارها رو به مدلهای هوش مصنوعی متصل کنید
دادههای داینامیک (مثل نرخ ارز) رو در پاسخ مدل استفاده کنید
https://github.com/hshoja/Currency-Exchange-MCP-Service
@DevTwitter | <Hamid/>
پروژه با Node.js و Hono ساخته شده تا بهتر مفهوم ارتباط بین مدل هوش مصنوعی و سرور MCP رو درک کنید.
با این ریپو میتونید یاد بگیرید چطور:
یه MCP Server سبک و سریع بسازید
ابزارها رو به مدلهای هوش مصنوعی متصل کنید
دادههای داینامیک (مثل نرخ ارز) رو در پاسخ مدل استفاده کنید
https://github.com/hshoja/Currency-Exchange-MCP-Service
@DevTwitter | <Hamid/>
1❤6👍6🍌2👎1
معرفی ابزار فوق العاده WrenAI برای BI کارها.
به کمک WrenAI میتونید داشبوردهایی از جنس BI یا نمودارهای خیلی زیبا طراحی کنيد.
یعنی شما فقط درخواست تون رو از طریق متن مینویسید و توی خروجی متن به نمودار و داشبورد های خیلی زیبا و کاربردی تبدیل میکنه.
این ابزار open source و توی گیتهاب میتونید دانلود کنید یعنی یه جورایی GenBI هست که ابتدا متن رو از کاربر دریافت میکنه، متن به کوئری SQL تبدیل میشه و خروجی کوئری در قالب نمودار و چارت درمیاد.
https://github.com/Canner/WrenAI
@DevTwitter | <Ali Nazarizadeh/>
به کمک WrenAI میتونید داشبوردهایی از جنس BI یا نمودارهای خیلی زیبا طراحی کنيد.
یعنی شما فقط درخواست تون رو از طریق متن مینویسید و توی خروجی متن به نمودار و داشبورد های خیلی زیبا و کاربردی تبدیل میکنه.
این ابزار open source و توی گیتهاب میتونید دانلود کنید یعنی یه جورایی GenBI هست که ابتدا متن رو از کاربر دریافت میکنه، متن به کوئری SQL تبدیل میشه و خروجی کوئری در قالب نمودار و چارت درمیاد.
https://github.com/Canner/WrenAI
@DevTwitter | <Ali Nazarizadeh/>
👍12🔥1🍌1
دیروز یکی از دوستهام ازم پرسید:
«پروتوکل HTTPS از رمزگذاری نامتقارن استفاده میکنه، درسته؟»
و جوابش هم آره بود، هم نه.
آره، چون در ابتدای ارتباط از رمزگذاری نامتقارن (Public/Private Key) برای تبادل امن کلید استفاده میشه.
نه، چون بعد از اون، خودِ دادهها با رمزگذاری متقارن منتقل میشن — سریعتر و سبکتر.
حالا بریم سراغ پشتصحنهی اتفاقات
وقتی مرورگر و سرور تصمیم میگیرن “امن” حرف بزنن، چیزی به نام TLS Handshake انجام میشه — همون مغز اصلی HTTPS:
1- مرورگر (Client) میگه:
«سلام! من میخوام ارتباط امن برقرار کنم، اینم لیست الگوریتمهای رمزنگاریای که بلدم.»
2- سرور جواب میده:
«باشه، این یکی رو انتخاب میکنم.» و پارامترهای امنیتی خودش رو هم مشخص میکنه.
3- حالا نوبت اعتمادسازیست:
سرور گواهی دیجیتال (Certificate) خودش رو میفرسته. این گواهی شامل کلید عمومی سرور (Public Key) و اطلاعات هویتی دامنه است.
مرورگر این گواهی رو با استفاده از زنجیرهی اعتماد به Certificate Authority (CA) بررسی میکنه.
اگر معتبر بود، مرورگر حالا کلید عمومی سرور رو در اختیار داره و مطمئنه که طرف مقابل واقعیست.
4- اگر الگوریتم انتخابشده نیاز به تبادل پارامترهای اضافی برای تولید کلید داشته باشه (مثلاً در روش Diffie-Hellman)، سرور این اطلاعات رو در مرحلهی Server Key Exchange میفرسته.
در بعضی روشها این مرحله وجود نداره، چون همون گواهی کافیست.
5- سرور میگه: «من دیگه آمادهام.» (Server Hello Done)
6- مرورگر یک pre-master secret تولید میکنه، اون رو با کلید عمومی سرور رمز میکنه و میفرسته. فقط سرور میتونه با کلید خصوصی خودش اون رو باز کنه.
7- مرورگر اعلام میکنه از اینجا به بعد همهچیز رمزنگاری میشه (Change Cipher Spec).
8- مرورگر یک پیام تست رمزگذاریشده میفرسته (Finished) تا مطمئن بشن از کلید یکسان استفاده میکنن.
9- سرور هم به حالت رمزنگاری سوئیچ میکنه.
سرور پیام تست خودش رو میفرسته. حالا دیگه ارتباط کاملاً امنه — همهچیز با رمزگذاری متقارن ادامه پیدا میکنه.
@DevTwitter | <Abolfazl Bakhtiari/>
«پروتوکل HTTPS از رمزگذاری نامتقارن استفاده میکنه، درسته؟»
و جوابش هم آره بود، هم نه.
آره، چون در ابتدای ارتباط از رمزگذاری نامتقارن (Public/Private Key) برای تبادل امن کلید استفاده میشه.
نه، چون بعد از اون، خودِ دادهها با رمزگذاری متقارن منتقل میشن — سریعتر و سبکتر.
حالا بریم سراغ پشتصحنهی اتفاقات
وقتی مرورگر و سرور تصمیم میگیرن “امن” حرف بزنن، چیزی به نام TLS Handshake انجام میشه — همون مغز اصلی HTTPS:
1- مرورگر (Client) میگه:
«سلام! من میخوام ارتباط امن برقرار کنم، اینم لیست الگوریتمهای رمزنگاریای که بلدم.»
2- سرور جواب میده:
«باشه، این یکی رو انتخاب میکنم.» و پارامترهای امنیتی خودش رو هم مشخص میکنه.
3- حالا نوبت اعتمادسازیست:
سرور گواهی دیجیتال (Certificate) خودش رو میفرسته. این گواهی شامل کلید عمومی سرور (Public Key) و اطلاعات هویتی دامنه است.
مرورگر این گواهی رو با استفاده از زنجیرهی اعتماد به Certificate Authority (CA) بررسی میکنه.
اگر معتبر بود، مرورگر حالا کلید عمومی سرور رو در اختیار داره و مطمئنه که طرف مقابل واقعیست.
4- اگر الگوریتم انتخابشده نیاز به تبادل پارامترهای اضافی برای تولید کلید داشته باشه (مثلاً در روش Diffie-Hellman)، سرور این اطلاعات رو در مرحلهی Server Key Exchange میفرسته.
در بعضی روشها این مرحله وجود نداره، چون همون گواهی کافیست.
5- سرور میگه: «من دیگه آمادهام.» (Server Hello Done)
6- مرورگر یک pre-master secret تولید میکنه، اون رو با کلید عمومی سرور رمز میکنه و میفرسته. فقط سرور میتونه با کلید خصوصی خودش اون رو باز کنه.
7- مرورگر اعلام میکنه از اینجا به بعد همهچیز رمزنگاری میشه (Change Cipher Spec).
8- مرورگر یک پیام تست رمزگذاریشده میفرسته (Finished) تا مطمئن بشن از کلید یکسان استفاده میکنن.
9- سرور هم به حالت رمزنگاری سوئیچ میکنه.
سرور پیام تست خودش رو میفرسته. حالا دیگه ارتباط کاملاً امنه — همهچیز با رمزگذاری متقارن ادامه پیدا میکنه.
@DevTwitter | <Abolfazl Bakhtiari/>
👍41❤5🍌5👎4
#کدبوک
راهنمایی جامع برای مدیریت و تأمین امنیت سیستمهای لینوکسی:
- آموزش اصول مدیریت کاربران، دسترسیها و پیکربندی سیستم
- پیادهسازی سیاستهای امنیتی، فایروال و مانیتورینگ
- آشنایی با ابزارهای امنیتی پیشرفته در لینوکس
- مناسب برای مدیران سیستم و توسعهدهندههایی که به امنیت سرور اهمیت میدن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
راهنمایی جامع برای مدیریت و تأمین امنیت سیستمهای لینوکسی:
- آموزش اصول مدیریت کاربران، دسترسیها و پیکربندی سیستم
- پیادهسازی سیاستهای امنیتی، فایروال و مانیتورینگ
- آشنایی با ابزارهای امنیتی پیشرفته در لینوکس
- مناسب برای مدیران سیستم و توسعهدهندههایی که به امنیت سرور اهمیت میدن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
❤8👍1🔥1
یه مقالهی خوب در مورد بهینهسازی PHP برای پروداکشن
جزئیات خوبی رو توش گفته که با رعایت کردنش میتونید سرعت بیشتری رو با PHP تجربه کنید
https://mateusguimaraes.com/posts/optimizing-php-applications-for-performance
@DevTwitter | <Milad Niroee/>
جزئیات خوبی رو توش گفته که با رعایت کردنش میتونید سرعت بیشتری رو با PHP تجربه کنید
https://mateusguimaraes.com/posts/optimizing-php-applications-for-performance
@DevTwitter | <Milad Niroee/>
👍14👎6❤3🔥1
مدتیه دارم از Claude Code برای کارهای مختلف استفاده میکنم. چند روز پیش تصمیم گرفتم یکی از فرآیندهای کاری خودم، یعنی پیدا کردن نقاط قوت، ضعف و فرصتهای توسعه در پلاگینهای وردپرس رو بهبود بدم.
فرآیند رو ضبط کردم و نتیجهاش شد یک ویدئوی حدوداً نیمساعته که از لینک زیر میتونید ببینید
https://www.youtube.com/watch?v=hwhCmbSBeQQ
@DevTwitter | <Navid Kashani/>
فرآیند رو ضبط کردم و نتیجهاش شد یک ویدئوی حدوداً نیمساعته که از لینک زیر میتونید ببینید
https://www.youtube.com/watch?v=hwhCmbSBeQQ
@DevTwitter | <Navid Kashani/>
👍18❤6👎3🔥1
زبالهای به نام وردپرس
خب راستش، از دید یه دولوپر کمالگرا، این حرف میتونه معنی داشته باشه اگه فقط از دید تکنیکال نگاه کنیم، شاید بیراه هم نگفته باشه.
وردپرس باگ داره. کند میشه. مقیاسپذیریش سخته. پلاگینها با هم میجنگن.
ولی سؤال مهمتر اینه:
آیا “درستترین راه فنی”، همیشه “درستترین تصمیم محصول” هم هست؟
وردپرس واقعاً برای معماری تمیز ساخته نشده
در مقیاس بالا دردسر درست میکنه
و اکوسیستم پلاگینهاش مثل یه لگوی نصفهکارهست که هرلحظه ممکنه فروبپاشه
اما اگه از دید محصول نگاه کنی، ماجرا فرق میکنه
تصمیمگیری در محصول یعنی درک محدودیتها، انتخاب بهینه، و تحویل دادن چیزی که کار میکنه
نه صرفاً چیزی که شیک توسعه پیدا کرده
وردپرس شاید از نظر فنی زباله باشه
ولی برای خیلی از بیزینسها، همون زباله تبدیل به ماشین درآمدزایی شده
چون سریع لانچ میشه
با سئو آشناست
برای تیم کوچک قابل استفادهست
و محتوامحور طراحی شده
یعنی برای خیلی از MVPها، انتخاب بدی نیست
اتفاقاً خیلی وقتا، انتخاب بهشدت مناسبیه
نه چون بهترینه
بلکه چون متناسب با منابع و نیاز و فاز رشده
مشکل جایی شروع میشه که وردپرس رو ابزار نهایی فرض میکنن
یا برعکس
از اول دنبال ساختن یه سیستم کاملن سفارشی میرن، در حالیکه هنوز هیچکس نمیدونه محصولشون جواب میده یا نه
تناقض جالب اینجاست
سازمانها برای ERP و CRM، قالب آماده میخرن
اما برای یه سایت معرفی ساده، میرن سراغ تیم توسعه و دهها جلسهی فنی
وردپرس زباله نیست
ابزاریه که اگه درست استفاده نشه، به زباله تبدیل میشه
و اگه درست استفاده بشه، میتونه راه رو برای یه بیزینس واقعی باز کنه
نه برای دمو دادن به تیم فنی
انتخاب ابزار، نشونهی فهم ما از مرحلهایه که توش هستیم
نه نشونهی میزان تسلطمون روی syntax
@DevTwitter | <Reza Mehrniya/>
خب راستش، از دید یه دولوپر کمالگرا، این حرف میتونه معنی داشته باشه اگه فقط از دید تکنیکال نگاه کنیم، شاید بیراه هم نگفته باشه.
وردپرس باگ داره. کند میشه. مقیاسپذیریش سخته. پلاگینها با هم میجنگن.
ولی سؤال مهمتر اینه:
آیا “درستترین راه فنی”، همیشه “درستترین تصمیم محصول” هم هست؟
وردپرس واقعاً برای معماری تمیز ساخته نشده
در مقیاس بالا دردسر درست میکنه
و اکوسیستم پلاگینهاش مثل یه لگوی نصفهکارهست که هرلحظه ممکنه فروبپاشه
اما اگه از دید محصول نگاه کنی، ماجرا فرق میکنه
تصمیمگیری در محصول یعنی درک محدودیتها، انتخاب بهینه، و تحویل دادن چیزی که کار میکنه
نه صرفاً چیزی که شیک توسعه پیدا کرده
وردپرس شاید از نظر فنی زباله باشه
ولی برای خیلی از بیزینسها، همون زباله تبدیل به ماشین درآمدزایی شده
چون سریع لانچ میشه
با سئو آشناست
برای تیم کوچک قابل استفادهست
و محتوامحور طراحی شده
یعنی برای خیلی از MVPها، انتخاب بدی نیست
اتفاقاً خیلی وقتا، انتخاب بهشدت مناسبیه
نه چون بهترینه
بلکه چون متناسب با منابع و نیاز و فاز رشده
مشکل جایی شروع میشه که وردپرس رو ابزار نهایی فرض میکنن
یا برعکس
از اول دنبال ساختن یه سیستم کاملن سفارشی میرن، در حالیکه هنوز هیچکس نمیدونه محصولشون جواب میده یا نه
تناقض جالب اینجاست
سازمانها برای ERP و CRM، قالب آماده میخرن
اما برای یه سایت معرفی ساده، میرن سراغ تیم توسعه و دهها جلسهی فنی
وردپرس زباله نیست
ابزاریه که اگه درست استفاده نشه، به زباله تبدیل میشه
و اگه درست استفاده بشه، میتونه راه رو برای یه بیزینس واقعی باز کنه
نه برای دمو دادن به تیم فنی
انتخاب ابزار، نشونهی فهم ما از مرحلهایه که توش هستیم
نه نشونهی میزان تسلطمون روی syntax
@DevTwitter | <Reza Mehrniya/>
👍139👎10❤8🔥3
تیم Hugging Face یه قابلیت خیلی خوب معرفی کرده به اسم Streaming Datasets. یعنی دیگه لازم نیست کل دیتاستهاتون رو دانلود کنید تا آموزش مدلهاتون شروع بشه! فقط با یه خط کد فعالش میکنید:
چند تا نکتهی جذابش که احتمالاً خوشتون میاد:
- دیگه خبری از «هارد پر شد»، «دانلود بیپایان» یا خطای ۴۲۹ نیست.
- سرعت شروع کار خیلی بالا رفته: تا ۱۰ برابر سریعتر در resolve فایلها، ۲ برابر نمونه در ثانیه، و حداقل خطا حتی با ۲۵۶ workers همزمان.
- زیرساختشون کلی بهینه شده: cache اشتراکی برای فایلها، pre-fetch برای Parquet، و بافر قابل تنظیم برای بهینهسازی I/O
- حتی از SSD لوکال هم تو بعضی تستها سریعتر بوده!
اگه دارید روی مدلهای بزرگ یا دیتاستهای چندترابایتی کار میکنید، حتماً این قابلیت رو تست کنید. احتمالاً کلی تو زمان و هزینهی زیرساختتون صرفهجویی میکنه.
Link:
https://huggingface.co/blog/streaming-datasets
@DevTwitter | <Mehdi Allahyari/>
dataset = load_dataset("HuggingFaceM4/FineVisionMax", split="train", streaming=True)چند تا نکتهی جذابش که احتمالاً خوشتون میاد:
- دیگه خبری از «هارد پر شد»، «دانلود بیپایان» یا خطای ۴۲۹ نیست.
- سرعت شروع کار خیلی بالا رفته: تا ۱۰ برابر سریعتر در resolve فایلها، ۲ برابر نمونه در ثانیه، و حداقل خطا حتی با ۲۵۶ workers همزمان.
- زیرساختشون کلی بهینه شده: cache اشتراکی برای فایلها، pre-fetch برای Parquet، و بافر قابل تنظیم برای بهینهسازی I/O
- حتی از SSD لوکال هم تو بعضی تستها سریعتر بوده!
اگه دارید روی مدلهای بزرگ یا دیتاستهای چندترابایتی کار میکنید، حتماً این قابلیت رو تست کنید. احتمالاً کلی تو زمان و هزینهی زیرساختتون صرفهجویی میکنه.
Link:
https://huggingface.co/blog/streaming-datasets
@DevTwitter | <Mehdi Allahyari/>
🔥28👍8❤1
️ Cache Components in Next.js 16:
این مکانیزم باعث میشه تا data fetching از فرآیند prerendering کنار گذاشته بشه و fetch شدن data بصورت dynamic انجام بشه و همیشه data ی تازه fetch بشه به جای اینکه از data ی cache شده استفاده بشه. البته به علت وجود مکانیزم PPR یا همون Partial Prerendering، قسمت های static کامپوننت ها همواره prerender میشن.
برای فعال سازی این flag باید cacheComponents رو در فایل config بصورت true قرار بدید و برای غیر فعال کردن موردی این مکانیزم هم میتونید از یه directive به نام "use cache" در بالای کامپوننت ها استفاده کنید.
@DevTwitter | <Amir Hossein Saberi/>
این مکانیزم باعث میشه تا data fetching از فرآیند prerendering کنار گذاشته بشه و fetch شدن data بصورت dynamic انجام بشه و همیشه data ی تازه fetch بشه به جای اینکه از data ی cache شده استفاده بشه. البته به علت وجود مکانیزم PPR یا همون Partial Prerendering، قسمت های static کامپوننت ها همواره prerender میشن.
برای فعال سازی این flag باید cacheComponents رو در فایل config بصورت true قرار بدید و برای غیر فعال کردن موردی این مکانیزم هم میتونید از یه directive به نام "use cache" در بالای کامپوننت ها استفاده کنید.
@DevTwitter | <Amir Hossein Saberi/>
❤7👍3🔥1