کدهالیک | codehalic
4.15K subscribers
536 photos
52 videos
67 files
610 links
دوره های آموزشیمون رو از داخل سایت ببینید

https://codehalic.ir
Download Telegram
Media is too big
VIEW IN TELEGRAM
این پروژه خیلی جالب بود یه نفر نرم افزار مدیریت انبار رو از یه کار خشک و تکراری به یه بازی استراتژیک و جذاب تبدیل کرده که با Opus 5.5 ساخته شده.

@codehalics | کدهالیک
❤13🔥5👍1
دوره جامع معماری نرم‌افزار منتشر شد.

در این آموزش ۴ ساعته و فشرده، مباحث Clean Architecture، DDD، میکروسرویس و Event-Driven با پیاده‌سازی تمامی مثال‌ها روی NestJS تدریس شده است.

جلسه دموی پروژه نیز به دوره اضافه شده و امکان ثبت‌نام با ۵۰٪ تخفیف فعال است.

https://codehalic.ir/courses/software-architecture-course

@codehalics | کدهالیک
🔥14❤3🤯3
یه اتفاق جالب افتاده: یه برنامه‌‌نویس موقع ساخت پروژه دات‌نت با Claude متوجه شده هوش مصنوعی خیلی شیک یه پکیج ناامن با آسیب‌پذیری جالب‌توجه وارد پروژه‌ش کرده! ماجرا اینه که AI به‌جای سرچ آنلاین به داده‌های قدیمی خودش اعتماد می‌کنه و حتی جدیدترین مدل‌ها هم خودکار این مشکل رو حل نمی‌کنن؛ مگر اینکه توی پرامپت رسماً مجبورشون کنین برن توی سایت nuget.org و آخرین نسخه پایدار رو چک کنن.

https://www.roundthecode.com/dotnet-blog/ai-added-vulnerable-nuget-package-to-dotnet-app?via=dailydev

پ.ن : همیشه باید نظارت کنین روی چیزی که ai براتون داره جنریت میکنه !

@codehalics | کدهالیک
🔥11🤯4❤1👍1
توی نسخه جدید 16.4 نکس‌جی‌اس، مهم‌ترین خبر اینه که مدل جدید Cache Components بالاخره کامل آماده شده و توی پروژه‌های جدید به صورت پیش‌فرض فعاله؛ یعنی با دایرکتیو 'use cache' می‌تونی خیلی راحت و دقیق تعیین کنی کدوم کامپوننت کش بشه تا سرعت لود صفحات فوق‌العاده بره بالا و بخش‌های استاتیک و دینامیک بدون دردسر کنار هم قرار بگیرن. علاوه بر ابزارهای کنترلی جدید مثل ensureStatic (برای جلوگیری از اجرا شدن کدهای دینامیک توی صفحات استاتیک) و مدیریت دقیق‌تر Prefetch، قابلیت‌های خفنی هم برای ایجنت‌های هوش مصنوعی اضافه شده مثلاً دستور next upgrade --agent که آپگرید پروژه رو به ایجنت‌ها می‌سپاره. در نهایت هم کلی بهینه‌سازی سرعت و حافظه داشتیم؛ از کاهش ۲۰ تا ۲۵ درصدی مصرف دیسک توی Turbopack و سبک‌تر شدن باندل پروداکشن گرفته تا پشتیبانی از ری‌اکت ۱۹.۳.

https://nextjs.org/blog/next-16-4

@codehalics | کدهالیک
❤12👍5🔥3👏1
توی NestJS اینکه چند تا پوشه مثل 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 | کدهالیک
👍3❤1
کدهالیک | codehalic
توی NestJS اینکه چند تا پوشه مثل Orders و Payments بسازی معنیش کد ماژولار نیست. وقتی همه چی رو می‌ریزی تو SharedModule و همه‌جا ایمپورتش می‌کنی، کدهات شدیداً بهم گره می‌خورن و موقع تست گرفتن از Orders مجبور می‌شی کل دیتابیس و سرویس ایمیل رو هم بالا بیاری.…
این نکته رو هم اضافه کنم که این مورد داره ۲ اصل از اصول SOLID رو رعایت میکنه !

اول DIP (معکوس‌سازی وابستگی) چون بخش سفارشات به‌جای دیتابیسِ پرداخت به یه انتزاع وصل میشه، و دوم SRP (تک‌مسئولیتی) چون ماژول فقط حواسش به وظیفهٔ خودشه و تنها یک دلیل برای تغییر داره، نه اینکه بارِ زیرساخت بقیه رو هم دوش بکشه. اینطوری ماژول‌ها کاملاً مستقل می‌مونن و دیگه نیازی به ماست‌مالی چرخه‌های وابستگی با forwardRef نداری.


@codehalics | کدهالیک
❤5👏1
کتابخونه Replicant یه ابزار کاربردی تو دات‌نته که با اضافه کردن یه لایه کش رو دیسک برای HttpClient، سرعت درخواست‌های تکراری شبکه رو به‌شدت بالا می‌بره. این ابزار به جای ذخیره داده‌ها تو حافظه رم، اونا رو روی دیسک می‌نویسه تا حتی اگه برنامه ریستارت شد داده‌ها باقی بمونن و از هدرهای استاندارد کش مثل Cache-Control و ETag هم کاملا پشتیبانی می‌کنه. شما می‌تونید ازش هم به صورت کلاس مستقل HttpCache و هم به عنوان یه DelegatingHandler کنار HttpClientFactory استفاده کنید که گزینه خیلی خوبی برای کم کردن بار شبکه و بالا بردن بازدهی برنامه‌ست.

https://www.nikolatech.net/blogs/replicant-http-client-caching-dotnet

@codehalics | کدهالیک
❤2
بوت‌استرپ ۶ نسخه آلفا ۱ منتشر شد و جالب‌ترین تغییرش اینه که رسماً داره می‌ره سمت سبک تیلویند.

مثلاً ساختار کلاس‌های ریسپانسیوش تغییر کرده و دقیقاً شبیه تیلویند شده؛ یعنی به جای 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 | کدهالیک
👍4❤1🔥1
ابزار REA یا همون Reverse Engineer Anything یه ابزار CLI و مبتنی بر پروتکل MCPئه که به ایجنت هوش مصنوعی‌ت وصل میشه تا بتونه هر نرم‌افزاری رو کالبدشکافی و مهندسی معکوس کنه؛ از تحلیل دقیق فایل‌های باینری و توابع گرفته تا کالبدشکافی برنامه‌های الکترون و جاوااسکریپت و حتی ردگیری رفتار برنامه موقع اجرا و توی مرورگر، همه‌رو انجام میده تا دستیار هوشمندت دقیقاً بفهمه پشت صحنه‌ی برنامه‌های کامپایل‌شده چی می‌گذره و منطق درونی‌شون چطوری کار می‌کنه.

https://rea.tools/

@codehalics | کدهالیک
🔥4
دیتابیس‌ها چطور هم سرعت بالایی دارن و هم با کرش کردن سیستم، دیتا رو از دست نمیدن؟ کلید ماجرا WAL یا Write-Ahead Logging هست.

دیتابیس به جای اینکه هر تغییر رو همون لحظه توی فایل‌های سنگین اصلی ذخیره کنه (که کُند و پرریسکه)، اول تغییرات رو خیلی سریع و پشت‌سرهم توی یه فایل لاگ (WAL) می‌نویسه. همین که تو لاگ نوشته شد، به ما میگه کار با موفقیت انجام شد! بعداً سر فرصت تو پس‌زمینه، این لاگ‌ها رو روی فایل‌های اصلی دیتا اعمال می‌کنه.

این کار دو تا مزیت طلایی داره:
۱. سرعت بالا: نوشتن ترتیبی (Sequential I/O) تو فایل لاگ خیلی سریع‌تر از گشتن و نوشتن تو فایل‌های مختلفه.
۲. تضمین بقای داده‌ها (Durability): اگه یهو سرور خاموش بشه، دیتابیس موقع بالا اومدن دوباره این فایل WAL رو می‌خونه و تمام دیتایی که رو فایل اصلی نرفته بود رو بازسازی می‌کنه.

https://www.postgresql.org/docs/current/wal-intro.html

@codehalics | کدهالیک
❤4👍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 | کدهالیک
👍3❤2