توی نسخه جدید 16.4 نکسجیاس، مهمترین خبر اینه که مدل جدید Cache Components بالاخره کامل آماده شده و توی پروژههای جدید به صورت پیشفرض فعاله؛ یعنی با دایرکتیو
https://nextjs.org/blog/next-16-4
@codehalics | کدهالیک
'use cache' میتونی خیلی راحت و دقیق تعیین کنی کدوم کامپوننت کش بشه تا سرعت لود صفحات فوقالعاده بره بالا و بخشهای استاتیک و دینامیک بدون دردسر کنار هم قرار بگیرن. علاوه بر ابزارهای کنترلی جدید مثل ensureStatic (برای جلوگیری از اجرا شدن کدهای دینامیک توی صفحات استاتیک) و مدیریت دقیقتر Prefetch، قابلیتهای خفنی هم برای ایجنتهای هوش مصنوعی اضافه شده مثلاً دستور next upgrade --agent که آپگرید پروژه رو به ایجنتها میسپاره. در نهایت هم کلی بهینهسازی سرعت و حافظه داشتیم؛ از کاهش ۲۰ تا ۲۵ درصدی مصرف دیسک توی Turbopack و سبکتر شدن باندل پروداکشن گرفته تا پشتیبانی از ریاکت ۱۹.۳.https://nextjs.org/blog/next-16-4
@codehalics | کدهالیک
❤13👍5🔥3👏1
توی NestJS اینکه چند تا پوشه مثل
اینطوری بخش سفارشات کاری نداره پرداخت چطوری تو دیتابیس ذخیره میشه یا چه ایمیلی میفرسته، ماژولها کاملاً مستقل میمونن و دیگه لازم نیست چرخههای وابستگی رو با
https://javascript.plainenglish.io/nestjs-module-boundaries-that-survive-growth-3c6781b2baf1
@codehalics | کدهالیک
Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چی رو میریزی تو SharedModule و همهجا ایمپورتش میکنی، کدهات شدیداً بهم گره میخورن و موقع تست گرفتن از Orders مجبور میشی کل دیتابیس و سرویس ایمیل رو هم بالا بیاری. راه درست اینه که به جای اکسپورت مستقیم ریپازیتوریها، بین بخشها یه قرارداد (Interface + Symbol) بذاری؛ یعنی مثلاً تو Orders فقط بگی:
// OrdersService.ts
constructor(
@Inject('PAYMENTS_PORT') private payments: PaymentsPort
) {}
اینطوری بخش سفارشات کاری نداره پرداخت چطوری تو دیتابیس ذخیره میشه یا چه ایمیلی میفرسته، ماژولها کاملاً مستقل میمونن و دیگه لازم نیست چرخههای وابستگی رو با
forwardRef از بین ببری.https://javascript.plainenglish.io/nestjs-module-boundaries-that-survive-growth-3c6781b2baf1
@codehalics | کدهالیک
👍4❤1
کدهالیک | codehalic
توی NestJS اینکه چند تا پوشه مثل Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چی رو میریزی تو SharedModule و همهجا ایمپورتش میکنی، کدهات شدیداً بهم گره میخورن و موقع تست گرفتن از Orders مجبور میشی کل دیتابیس و سرویس ایمیل رو هم بالا بیاری.…
این نکته رو هم اضافه کنم که این مورد داره ۲ اصل از اصول SOLID رو رعایت میکنه !
اول DIP (معکوسسازی وابستگی) چون بخش سفارشات بهجای دیتابیسِ پرداخت به یه انتزاع وصل میشه، و دوم SRP (تکمسئولیتی) چون ماژول فقط حواسش به وظیفهٔ خودشه و تنها یک دلیل برای تغییر داره، نه اینکه بارِ زیرساخت بقیه رو هم دوش بکشه. اینطوری ماژولها کاملاً مستقل میمونن و دیگه نیازی به ماستمالی چرخههای وابستگی با forwardRef نداری.
@codehalics | کدهالیک
اول DIP (معکوسسازی وابستگی) چون بخش سفارشات بهجای دیتابیسِ پرداخت به یه انتزاع وصل میشه، و دوم SRP (تکمسئولیتی) چون ماژول فقط حواسش به وظیفهٔ خودشه و تنها یک دلیل برای تغییر داره، نه اینکه بارِ زیرساخت بقیه رو هم دوش بکشه. اینطوری ماژولها کاملاً مستقل میمونن و دیگه نیازی به ماستمالی چرخههای وابستگی با forwardRef نداری.
@codehalics | کدهالیک
❤6👏1
کتابخونه Replicant یه ابزار کاربردی تو داتنته که با اضافه کردن یه لایه کش رو دیسک برای HttpClient، سرعت درخواستهای تکراری شبکه رو بهشدت بالا میبره. این ابزار به جای ذخیره دادهها تو حافظه رم، اونا رو روی دیسک مینویسه تا حتی اگه برنامه ریستارت شد دادهها باقی بمونن و از هدرهای استاندارد کش مثل Cache-Control و ETag هم کاملا پشتیبانی میکنه. شما میتونید ازش هم به صورت کلاس مستقل HttpCache و هم به عنوان یه DelegatingHandler کنار HttpClientFactory استفاده کنید که گزینه خیلی خوبی برای کم کردن بار شبکه و بالا بردن بازدهی برنامهست.
https://www.nikolatech.net/blogs/replicant-http-client-caching-dotnet
@codehalics | کدهالیک
https://www.nikolatech.net/blogs/replicant-http-client-caching-dotnet
@codehalics | کدهالیک
❤3
Getbootstrap
Install Bootstrap
Add Bootstrap to your project with CDN, package manager, or source files.
بوتاسترپ ۶ نسخه آلفا ۱ منتشر شد و جالبترین تغییرش اینه که رسماً داره میره سمت سبک تیلویند.
مثلاً ساختار کلاسهای ریسپانسیوش تغییر کرده و دقیقاً شبیه تیلویند شده؛ یعنی به جای d-md-none الان باید بنویسید md:d-none.
پشتیبانی از مرورگرهای قدیمی رو هم کلا کنار گذاشتن و حداقل مرورگر مورد نیاز شده کروم ۱۳۰، فایرفاکس ۱۳۲ و سافاری ۱۸. با این کار کلاً پالیفیلها حذف شدن و مستقیم رفتن سراغ قابلیتهای جدید مرورگر مثل کانتینر کوئریها، انتخابگر :has، سیستم رنگی oklch و تگ <dialog>.
از نظر فنی هم متغیرهای Sass جاشون رو دادن به CSS Token Mapها، سورسکد با تایپاسکریپت بازنویسی شده و ابزارهایی مثل Rolldown و Vitest اومدن جای Rollup و Karma. ضمناً فایلهای llms.txt و Agent Skills رو هم اضافه کردن تا کار با دستیارهای هوش مصنوعی موقع کدنویسی راحتتر بشه.
https://getbootstrap.com/docs/6.0/getting-started/install/
@codehalics | کدهالیک
مثلاً ساختار کلاسهای ریسپانسیوش تغییر کرده و دقیقاً شبیه تیلویند شده؛ یعنی به جای d-md-none الان باید بنویسید md:d-none.
پشتیبانی از مرورگرهای قدیمی رو هم کلا کنار گذاشتن و حداقل مرورگر مورد نیاز شده کروم ۱۳۰، فایرفاکس ۱۳۲ و سافاری ۱۸. با این کار کلاً پالیفیلها حذف شدن و مستقیم رفتن سراغ قابلیتهای جدید مرورگر مثل کانتینر کوئریها، انتخابگر :has، سیستم رنگی oklch و تگ <dialog>.
از نظر فنی هم متغیرهای Sass جاشون رو دادن به CSS Token Mapها، سورسکد با تایپاسکریپت بازنویسی شده و ابزارهایی مثل Rolldown و Vitest اومدن جای Rollup و Karma. ضمناً فایلهای llms.txt و Agent Skills رو هم اضافه کردن تا کار با دستیارهای هوش مصنوعی موقع کدنویسی راحتتر بشه.
https://getbootstrap.com/docs/6.0/getting-started/install/
@codehalics | کدهالیک
👍5❤1🔥1
ابزار REA یا همون Reverse Engineer Anything یه ابزار CLI و مبتنی بر پروتکل MCPئه که به ایجنت هوش مصنوعیت وصل میشه تا بتونه هر نرمافزاری رو کالبدشکافی و مهندسی معکوس کنه؛ از تحلیل دقیق فایلهای باینری و توابع گرفته تا کالبدشکافی برنامههای الکترون و جاوااسکریپت و حتی ردگیری رفتار برنامه موقع اجرا و توی مرورگر، همهرو انجام میده تا دستیار هوشمندت دقیقاً بفهمه پشت صحنهی برنامههای کامپایلشده چی میگذره و منطق درونیشون چطوری کار میکنه.
https://rea.tools/
@codehalics | کدهالیک
https://rea.tools/
@codehalics | کدهالیک
🔥6
دیتابیسها چطور هم سرعت بالایی دارن و هم با کرش کردن سیستم، دیتا رو از دست نمیدن؟ کلید ماجرا WAL یا Write-Ahead Logging هست.
دیتابیس به جای اینکه هر تغییر رو همون لحظه توی فایلهای سنگین اصلی ذخیره کنه (که کُند و پرریسکه)، اول تغییرات رو خیلی سریع و پشتسرهم توی یه فایل لاگ (WAL) مینویسه. همین که تو لاگ نوشته شد، به ما میگه کار با موفقیت انجام شد! بعداً سر فرصت تو پسزمینه، این لاگها رو روی فایلهای اصلی دیتا اعمال میکنه.
این کار دو تا مزیت طلایی داره:
۱. سرعت بالا: نوشتن ترتیبی (Sequential I/O) تو فایل لاگ خیلی سریعتر از گشتن و نوشتن تو فایلهای مختلفه.
۲. تضمین بقای دادهها (Durability): اگه یهو سرور خاموش بشه، دیتابیس موقع بالا اومدن دوباره این فایل WAL رو میخونه و تمام دیتایی که رو فایل اصلی نرفته بود رو بازسازی میکنه.
https://www.postgresql.org/docs/current/wal-intro.html
@codehalics | کدهالیک
دیتابیس به جای اینکه هر تغییر رو همون لحظه توی فایلهای سنگین اصلی ذخیره کنه (که کُند و پرریسکه)، اول تغییرات رو خیلی سریع و پشتسرهم توی یه فایل لاگ (WAL) مینویسه. همین که تو لاگ نوشته شد، به ما میگه کار با موفقیت انجام شد! بعداً سر فرصت تو پسزمینه، این لاگها رو روی فایلهای اصلی دیتا اعمال میکنه.
این کار دو تا مزیت طلایی داره:
۱. سرعت بالا: نوشتن ترتیبی (Sequential I/O) تو فایل لاگ خیلی سریعتر از گشتن و نوشتن تو فایلهای مختلفه.
۲. تضمین بقای دادهها (Durability): اگه یهو سرور خاموش بشه، دیتابیس موقع بالا اومدن دوباره این فایل WAL رو میخونه و تمام دیتایی که رو فایل اصلی نرفته بود رو بازسازی میکنه.
https://www.postgresql.org/docs/current/wal-intro.html
@codehalics | کدهالیک
❤7👍1
کدهالیک | codehalic
دیتابیسها چطور هم سرعت بالایی دارن و هم با کرش کردن سیستم، دیتا رو از دست نمیدن؟ کلید ماجرا WAL یا Write-Ahead Logging هست. دیتابیس به جای اینکه هر تغییر رو همون لحظه توی فایلهای سنگین اصلی ذخیره کنه (که کُند و پرریسکه)، اول تغییرات رو خیلی سریع و پشتسرهم…
حالا که فهمیدیم WAL چیه، بیاید ببینیم پس بکآپ (Backup) این وسط چکاره است؟
فرض کنید WAL همون دفترچه یادداشت روی میز شماست که نمیذاره قطعی موقت برق کارتون رو خراب کنه؛ اما اگه یه روز کلاً دفتر کارتون آتیش بگیره، هارد سرور بسوزه یا یه نفر اشتباهی کل دادهها رو پاک کنه چی؟ اینجاست که بکآپ به دادتون میرسه! بکآپ یعنی یه کپی کامل و امن از کل دیتابیس بگیریم و تو یه جای کاملاً مجزا (مثل یه سرور دیگه یا فضای ابری) ذخیرهاش کنیم. جادوی دیتابیسهای مدرن اینه که میان یه بکآپ پایهای میگیرن و بعد اون رو با همون فایلهای WAL ترکیب میکنن؛ با این تکنیک خفن، شما میتونید دیتابیس رو دقیقاً به هر ثانیه یا لحظهای در گذشته که دلتون میخواد برگردونید (به این کار میگن Point-in-Time Recovery یا PITR).
https://www.postgresql.org/docs/current/continuous-archiving.html
@codehalics | کدهالیک
فرض کنید WAL همون دفترچه یادداشت روی میز شماست که نمیذاره قطعی موقت برق کارتون رو خراب کنه؛ اما اگه یه روز کلاً دفتر کارتون آتیش بگیره، هارد سرور بسوزه یا یه نفر اشتباهی کل دادهها رو پاک کنه چی؟ اینجاست که بکآپ به دادتون میرسه! بکآپ یعنی یه کپی کامل و امن از کل دیتابیس بگیریم و تو یه جای کاملاً مجزا (مثل یه سرور دیگه یا فضای ابری) ذخیرهاش کنیم. جادوی دیتابیسهای مدرن اینه که میان یه بکآپ پایهای میگیرن و بعد اون رو با همون فایلهای WAL ترکیب میکنن؛ با این تکنیک خفن، شما میتونید دیتابیس رو دقیقاً به هر ثانیه یا لحظهای در گذشته که دلتون میخواد برگردونید (به این کار میگن Point-in-Time Recovery یا PITR).
https://www.postgresql.org/docs/current/continuous-archiving.html
@codehalics | کدهالیک
👍4❤2
نظرسنجی جدید Stack Overflow از بیش از ۳۰ هزار توسعهدهنده در ۱۶۹ کشور نشون میده که هوش مصنوعی به بخش ثابتی از کار برنامهنویسها تبدیل شده، اما اعتماد به خروجیهاش همچنان محدوده.
حدود ۸۰ درصد افرادی که هر روز از AI استفاده میکنن، روزانه دستکم یک ساعت باهاش کار میکنن. با این حال، فقط ۷ درصدشون برای تصمیمهای مهم کاری به خروجی هوش مصنوعی اعتماد دارن. از طرف دیگه، ۷۹ درصد شرکتکنندهها میگن دسترسی به منابع و مراجع پاسخهای فنی تولیدشده با AI براشون مهمه.
این آمار نشون میده برنامهنویسها از هوش مصنوعی برای سرعت بخشیدن به کارشون استفاده میکنن، اما همچنان پاسخهاش رو بررسی میکنن و بهسادگی نمیپذیرن. در عمل، AI به یکی از ابزارهای روزمره توسعه نرمافزار تبدیل شده، ولی ارزیابی صحت خروجیها و تصمیمگیری نهایی همچنان بر عهده انسانه.
استفاده از هوش مصنوعی بیشتر شده، اما اعتماد بهش هنوز به کیفیت پاسخها و امکان بررسی اونها بستگی داره.
@codehalics | کدهالیک
حدود ۸۰ درصد افرادی که هر روز از AI استفاده میکنن، روزانه دستکم یک ساعت باهاش کار میکنن. با این حال، فقط ۷ درصدشون برای تصمیمهای مهم کاری به خروجی هوش مصنوعی اعتماد دارن. از طرف دیگه، ۷۹ درصد شرکتکنندهها میگن دسترسی به منابع و مراجع پاسخهای فنی تولیدشده با AI براشون مهمه.
این آمار نشون میده برنامهنویسها از هوش مصنوعی برای سرعت بخشیدن به کارشون استفاده میکنن، اما همچنان پاسخهاش رو بررسی میکنن و بهسادگی نمیپذیرن. در عمل، AI به یکی از ابزارهای روزمره توسعه نرمافزار تبدیل شده، ولی ارزیابی صحت خروجیها و تصمیمگیری نهایی همچنان بر عهده انسانه.
استفاده از هوش مصنوعی بیشتر شده، اما اعتماد بهش هنوز به کیفیت پاسخها و امکان بررسی اونها بستگی داره.
@codehalics | کدهالیک
❤8🔥1🤔1
پروژهای که قرار بود جای Node.js رو بگیره، حالا قراره توسعهاش متوقف بشه! کلادفلر تمام تیم Deno رو جذب میکنه، اما خود Deno Runtime فقط یک سال دیگه آپدیت امنیتی و باگفیکس میگیره و بعد توسعهاش متوقف میشه. سرویس Deno Deploy هم تا شش ماه دیگه تعطیل میشه. البته Deno متنباز باقی میمونه و کلادفلر بیشتر دنبال استفاده از تکنولوژیها و تیم این پروژه برای توسعه زیرساخت خودش، بهخصوص اجرای Workerها خارج از سرورهای کلادفلره.
@codehalics | کدهالیک
@codehalics | کدهالیک
❤2👍1🤯1
پروژهای که رایان دال با ایدهای متفاوت از Node.js شروع کرد، حالا به پایان مسیر توسعه خودش نزدیک میشه. ایده دال این بود که تجربه توسعه با جاوااسکریپت رو از مشکلات و تصمیمهای قدیمی Node.js جدا کنه و محیطی مدرنتر و امنتر بسازه. Bun هم با ایدهای مشابه وارد شد، اما با تمرکز روی سرعت بالا، اجرای مستقیم TypeScript، نصب سریع پکیجها و سازگاری با اکوسیستم Node.js. نکته جالب اینجاست که هر دو پروژه برای جذب توسعهدهندهها مجبور شدن تا حد زیادی با همون اکوسیستمی سازگار بمونن که قرار بود جایگزینش کنن. چون وقتی میلیونها پروژه، کتابخونه و ابزار به Node.js وابستهان، سرعت بالاتر یا معماری بهتر بهتنهایی برای مهاجرت کافی نیست. با این حال، برخلاف Deno که حالا آینده Runtime مستقلش در هالهای از ابهامه، Bun همچنان مسیر خودش رو دنبال میکنه و نشون میده شاید راه تغییر اکوسیستم، نه ساختن یک جایگزین کاملاً جدا، بلکه بهتر کردن توسعه در کنار حفظ سازگاری با چیزهایی باشه که از قبل هستن
این ویدیو راجب nodejs و ۱۰ تا چیزی که بابتش پشیمونه خیلی ترند شده بود :
https://www.youtube.com/watch?v=M3BM9TB-8yA
@codehalics | کدهالیک
این ویدیو راجب nodejs و ۱۰ تا چیزی که بابتش پشیمونه خیلی ترند شده بود :
https://www.youtube.com/watch?v=M3BM9TB-8yA
@codehalics | کدهالیک
👍7
یکی اومده بازی GTA V رو روی مرورگر پورت کرده و میتونین آنلاین بازیش کنید !
https://gta.deloskiyt.pl/
@codehalics | کدهالیک
https://gta.deloskiyt.pl/
@codehalics | کدهالیک
😁8❤2