کدهالیک | codehalic
3.47K subscribers
319 photos
8 videos
66 files
359 links
دوره های آموزشیمون رو از داخل سایت ببینید

https://codehalic.ir
Download Telegram
یه پست بامزه و جالب امروز راجب به استفاده از ai دیدم که ترجمش رو براتون میزارم حس و حال های مشترکی با خود من داره و همینارو منم حس کردم و جالب بود !

از حرف زدن با هوش مصنوعی خسته شده‌ام.

چند ریپازیتوری در GitHub پیدا کردم که بدافزار پخش می‌کردند. از AI پرسیدم باید چه کار کنم، اما جواب مفیدی نداد. بعد در GitHub یک بحث باز کردم. کسی جواب داد، اما دقیقاً همان متن AI بود. وقتی گفتم، کامنت حذف شد. نفر بعدی هم دوباره همان پاسخ AI را فرستاد.

در یک شرکت هم از مدیر یک سؤال کاری پرسیدم. به‌جای جواب، اسکرین‌شات ChatGPT فرستاد. گفتم ربطی به سؤال من ندارد و اشتباه است. یک دقیقه بعد دوباره اسکرین‌شات دیگری فرستاد، بدون اینکه حتی جواب را بخواند.

اخیراً هم در Reddit با کسی در حال گفتگو بودم، اما بعد از چند پیام فهمیدم دارم با یک AI صحبت می‌کنم.

مشکل فقط AI نیست؛ این است که آدم‌ها هم دیگر فکر نمی‌کنند، فقط پاسخ AI را کپی می‌کنند و می‌فرستند.

از حرف زدن با AI خسته شده‌ام. می‌خواهم با انسان‌ها صحبت کنم.


https://orchidfiles.com/im-tired-of-ai-generated-answers/

@codehalics | کدهالیک
👍11
یه باگ امنیتی مهم توی FastAPI (و Starlette) وجود داره که باعث میشه با دستکاری هدر Host، مسیر درخواست جعلی ساخته بشه و در بعضی حالت‌ها بشه احراز هویت یا دسترسی به APIها رو دور زد.

https://badhost.org/

@codehalics | کدهالیک
2
کلودفلر یه فیچری داده بیرون به اسم Cloudflare Flagship یک سرویس مدیریت Feature Flag است که به توسعه‌دهنده‌ها اجازه می‌دهد قابلیت‌های نرم‌افزار را بدون نیاز به انتشار مجدد کد کنترل کنند. با استفاده از آن می‌توان فیچرها را برای درصدی از کاربران فعال کرد، به‌صورت مرحله‌ای rollout انجام داد یا بر اساس قوانین و ویژگی‌های کاربر آن‌ها را محدود یا فعال کرد. این سرویس با Cloudflare Workers و استاندارد OpenFeature سازگار است و امکان مدیریت ساده و انعطاف‌پذیر ویژگی‌های اپلیکیشن را فراهم می‌کند.

https://developers.cloudflare.com/flagship/

پ.ن : این ویژگی از چند وقت پیش برای عده ای فعال شده بود ولی الان وارد فاز پابلیک بتا شده !

@codehalics | کدهالیک
Forwarded from کار باشه !
فرصت ریلوکیشن به ارمنستان

WE'RE HIRING — Senior Angular Developer (Yerevan · Hybrid · Visa & Relocation Support)

ArgusRecruit · Many Eyes. One Purpose.

We're recruiting on behalf of an international software company on a confidential basis. They're looking for a Senior Angular Developer to own architecture decisions and shape the frontend of a product used across multiple markets.

📍 Yerevan, Armenia · 🏢 Hybrid · 💼 Senior · Full-time
🌍 Visa sponsorship and relocation support available for international candidates
🇬🇧 English required

What you'll do:
• Design and develop production-grade frontend applications using Angular (v14+)
• Optimize for speed, responsiveness, and cross-device performance
• Build type-safe API consumption layers
• Implement security and accessibility (A11y) standards
• Conduct code reviews and support the full development lifecycle
• Mentor mid-level engineers and shape frontend architecture

What we're looking for:
• 6+ years in frontend development with strong Angular focus
• Expert-level TypeScript, RxJS, and state management (NgRx)
• Component libraries and design systems experience
• Strong responsive design and A11y standards
• Unit testing (Jasmine/Jest) and E2E testing (Cypress/Playwright)
• Git with collaborative workflows
• Fluent English

This is a senior, hands-on role for someone who cares about clean component architecture and the boring parts — testing, code reviews, accessibility — not just shipping features.

— Where ambitious talents meet exceptional employers —

👉 Apply confidentially: https://lnkd.in/d5UzDKp4


#relocation #frontend


💬 @job_bashe | گروه کار باشه با دسته بندی شغلی
📢 @karbashe_ir | کانال کار باشه
3
کار باشه !
فرصت ریلوکیشن به ارمنستان WE'RE HIRING — Senior Angular Developer (Yerevan · Hybrid · Visa & Relocation Support) ArgusRecruit · Many Eyes. One Purpose. We're recruiting on behalf of an international software company on a confidential basis. They're looking…
توی کانال دوممون یعنی کار باشه جاب آفر های سطح لینکدین و توییتر و جاهایی که توی جابینجا و جاب ويژن نیستن ولی میتونین مستقیم براشون اپلای کنید رو میزاریم

اگر مایل بودید حتما به کانال دوممون هم جوین بشید !

تمام تلاشمون اینه که افرادی که تعدیل شدن رو زودتر بفرستیمشون سرکار

@karbashe_ir
6
یه سری بحث‌ها درباره .NET 11 هست که می‌گن مدل async/await قراره یه تغییر جدی تو معماریش داشته باشه؛ یعنی بخشی از کارهایی که قبلاً Roslyn انجام می‌داد (مثل ساخت state machine و مدیریت await) بیشتر منتقل می‌شه به خود runtime و CoreCLR. تو این مدل جدید، به‌جای اینکه وضعیت‌های async مثل قبل هی برن روی heap و فشار GC زیاد بشه، گفته می‌شه اجرای این حالت‌ها به runtime نزدیک‌تر و بهینه‌تر می‌شه تا allocation کمتر بشه و performance تو سناریوهای سنگین async بهتر دربیاد و latency هم پایین‌تر بیاد. حتی بعضیا می‌گن دیباگ و trace هم تمیزتر می‌شه چون اون همه MoveNext و state اضافی کمتر دیده می‌شه؛ البته فعلاً بیشتر در حد بحث و پیش‌نمایشه و باید دید واقعاً تو نسخه نهایی چطور پیاده می‌شه.

#.Net11

@codehalics | کدهالیک
3👍2
بیاید یه لایف هک توی لینوکس بهتون یاد بدم

تازه فهمیدم nala چقدر از apt بهتره.
عملاً همون کارای apt رو انجام میده ولی خروجی تمیزتره، سرعت دانلود بهتره، mirror مناسب پیدا می‌کنه و موقع نصب پکیج‌ها آدم واقعاً می‌فهمه داره چه اتفاقی میفته.
مثلاً به‌جای این:
sudo apt install nginx
الان اینو می‌زنم:
sudo nala install nginx
ظاهر خروجی خیلی مرتب‌تره، dependencyها واضح‌تر نمایش داده میشن و حس مدرن‌تری داره.
ترکیبش با screen هم عالیه؛
یه سشن باز می‌کنی، آپدیت رو می‌ذاری اجرا شه و حتی اگر SSH قطع شد چیزی از دست نمیره.
از اون ابزاراییه که بعد از استفاده، برگشتن به apt یکم سخت میشه.

همه کامند هایی که با apt میزنین با nala هم میتونین بزنین مثلا nala upgrade
اولش یه اسکرین بسازین توش دستورارو بزنین و بعد دیتچ کنین و برید پی کارتون خودش پشت زمینه کل سیستم اپدیت میکنه بدون که بخواد سیشن ssh شما روش تاثیری داشته باشه !

@codehalics | کدهالیک
7👍4🆒1
بابک تو خیلی بامزه ای این چیه تو پنلت گذاشتی مگ ClashOfClans عه ؟ :))))))))))))))))

@codehalics | کدهالیک
😁15👎1🐳1😭1
کدهالیک | codehalic
بابک تو خیلی بامزه ای این چیه تو پنلت گذاشتی مگ ClashOfClans عه ؟ :)))))))))))))))) @codehalics | کدهالیک
یه بارم تو ی بیزینسی میدیدم که کاربر میخواد شارژ بخره هر بار که میخواد بخره ۱۲ بار ریکوست میزنه حداقل اخرم هیچ کدوم نمیخره ورداشتن ایپیشو بلاک کردن
بعدا فهمیدیم رو دکمه مادر مرده خرید که میرفت به درگاه لودینگ نزاشته بودن بعد خیلی دیر میرفت درگاه طرف هی ریکوست میزد چرا این لامصب نمیره تو درگاه !
نمیدونم چقد مرتبط بود این داستان ولی واقعا یه سری از اینایی ک زیاد ریکوست میزنن گندکاریای خودمون توی اپلیکیشنه
ما ک اونو بلاک کردیم ولی یاد گرفتیم واس این کارا یه کلید یونیک بسازیم برای یه کاربر توی ردیس که سیصد بارم زد نره سیصد تا تراکنش بسازه که بعدا بخوایم بلاکش کنیم چون‌اپ موبایل بود نمیشد دیگ ریلیز بدیم درستش کنیم اینو !

@codehalics | کدهالیک
😁9
داشتم مقاله معرفی Claude Opus 4.8 از Anthropic رو می‌خوندم و حس کردم کم‌کم داریم وارد فاز جدیدی از مدل‌های AI می‌شیم. جایی که صرفاً باهوش‌تر بودن مهم نیست، بلکه اینکه مدل چقدر قابل اعتماده اهمیت بیشتری پیدا کرده. چیزی که توی این نسخه خیلی روش تاکید شده اینه که Claude کمتر وقت‌ها الکی با اعتمادبه‌نفس جواب اشتباه میده و وقتی مطمئن نیست، راحت‌تر عدم قطعیت رو نشون میده. شاید ساده به نظر بیاد ولی به نظرم دقیقاً همین فرق بین یه مدل نمایشی و یه مدلیه که واقعاً بشه توی کار جدی بهش تکیه کرد.

از اون طرف قابلیت‌های agenticش هم خیلی خفن شده. مدل می‌تونه برای تسک‌های پیچیده چندتا workflow موازی اجرا کنه، خروجی‌ها رو بررسی کنه و بعد جمع‌بندی نهایی بده. یعنی کم‌کم داریم از «چت‌بات» فاصله می‌گیریم و می‌رسیم به چیزی شبیه همکار واقعی.

حسی که از کل مقاله گرفتم این بود که رقابت اصلی AI دیگه فقط روی benchmark و عدد و رقم نیست؛ روی اعتماد کاربره. هر مدلی که کمتر hallucinate کنه و رفتار قابل‌پیش‌بینی‌تری داشته باشه، احتمالاً برنده‌ی نسل بعدیه.

#Opus_48

https://www.anthropic.com/news/claude-opus-4-8

@codehalics | کدهالیک
👍31
یه خبر جنجالی این چند روزه مربوط به دعوای مایکروسافت با یه پژوهشگر امنیتیه که چندتا آسیب‌پذیری خطرناک ویندوز رو عمومی منتشر کرده بود و بعدش GitHub اکانتشو بست. داستان فقط بستن اکانت نیست؛ طرف میگه مایکروسافت عملاً زندگیشو خراب کرده چون نه توی برنامه bug bounty حمایتی دیده، نه گزارش‌هاش جدی گرفته شده و حالا هم دسترسیش قطع شده.

چیزی که ماجرا رو حساس کرده اینه که این پژوهشگر برخلاف روال معمول، مستقیم جزئیات حمله‌ها رو منتشر کرده؛ یعنی منتظر اصلاح مشکل از سمت مایکروسافت نمونده. همین باعث شده الان بحث اصلی این باشه که آیا مایکروسافت حق داشته برای جلوگیری از پخش شدن این ابزارها اکانتشو ببنده، یا چون GitHub مال خود مایکروسافته، از قدرتش برای ساکت کردن منتقد استفاده کرده.

به نظرم این اتفاق یه تصویر جالب از دنیای امنیت امروز نشون میده. از یه طرف شرکت‌ها می‌ترسن آسیب‌پذیری‌ها عمومی بشن و سریع مورد سوءاستفاده قرار بگیرن، از اون طرف پژوهشگرها میگن وقتی شرکت‌ها همکاری نمی‌کنن، انتشار عمومی تنها راه فشار آوردنه.

البته این وسط گیت هاب اکانت منو هم بن کرد دستش درد نکنه البته من احتمالا بخاطر استفاده از SNI Spoofing این اتفاق برام افتاد ولی شماها دیگ اینکارارو نکنین که بن میشید !

https://www.tomshardware.com/tech-industry/cyber-security/microsofts-github-bans-security-researcher-who-posted-zero-day-windows-exploits-because-company-ruined-their-life-expert-claims-action-is-vindictive-and-promises-further-retaliation

@codehalics | کدهالیک
2
‏دوستان می‌دونستید که این روشن/خاموش شدن Wifi ویندوزتون باگ نیست؟! به‌خاطر فیلترینگ شدید فایروال‌های ایرانه🤦🏻‍♀️

دلیل و راه‌حلش:
‏تست اتصال مایکروسافت (NCSI) که فیچر ویندوز ۱۰ به بعده بلاک می‌شه؛ به زبان ساده، به‌خاطر فیلترینگ، ویندوز فکر می‌کنه اینترنت قطع شده و برای همین هی وای‌فای رو خاموش/روشن می‌کنه تا اتصال برقرار شه.

‏راه غیرفعال کردنش:
‏۱. همزمان کلید Windows + R رو فشار بده (کلید ویندوز همون لوگو ویندوز روی کیبورد)
‏۲. توی کادر Run که باز شد، بنویس regedit و اینتر رو بزن.
‏۳. برو این مسیر:
‏HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
‏۴. روی EnableActiveProbing دابل‌کلیک و بعدش Value رو ۰ کن.
‏۵. سیستم رو ری‌استارت کن و تمام.

‏دیگه این فیچر غیرفعال می‌شه و VPNتون قطع نمی‌شه :(
‏ البته تا وقتی که غیرفعاله حتی اگه اینترنت قطع باشه، همیشه «Connected» نشون
می‌ده


https://x.com/geekzahra/status/2060532878862352755?s=46


@codehalics | کدهالیک
2👍1
کدهالیک | codehalic
این مدت که اینترنت ملی بود یه چیزی خیلی رو مخ بود توی مک بوک ۱ دقیقه اینترنت نداری اما دلیلش چیه : حل مشکل تأخیر اینترنت روی مک (وقتی وصلی ولی ۱ دقیقه نت نداری) اگه اینترنتت داخلیه، macOS اول یه تست می‌زنه و همین باعث delay میشه. راه‌حل توی Terminal بزن:…
قبلا همین داستان روی اپل و مک بوک ها داشتیم که وقتی نت ملی بود بهتون یه سلوشون یاد دادم از قدیم پستش اینجاست
راستی یادتون باشه الان که اینترنت وصل شد برشگردونید به حالت قبلی یعنی روشنش کنین اگر خاموشش کردید !

@codehalics | کدهالیک
👍1
امروز یه پروژه جدید دیدم به اسم Perry که ایده‌اش برام جالب بود. ماجراش اینه که می‌خواد TypeScript رو مستقیم به اپلیکیشن Native تبدیل کنه؛ یعنی به‌جای اینکه برای ساخت اپ دسکتاپ یا موبایل مجبور باشیم بریم سمت Electron، WebView، Node Runtime یا چیزهای سنگین‌تر، با همون TypeScript کد بزنیم ولی خروجی نهایی شبیه یه اپ واقعی و سبک‌تر روی سیستم‌عامل اجرا بشه.

چیزی که این پروژه رو مهم می‌کنه، دقیقاً از همون درد معروف توسعه چندپلتفرمی میاد. TypeScript برای خیلی از تیم‌ها زبان راحت، سریع و آشناییه، ولی وقتی بحث خروجی واقعی برای ویندوز، مک، لینوکس، موبایل یا حتی ابزارهای CLI می‌رسه، معمولاً یا باید هزینه پرفورمنس بدی، یا حجم اپ زیاد می‌شه، یا درگیر runtime و bridge و WebView می‌شی. Perry انگار داره تلاش می‌کنه این فاصله رو کم کنه؛ یعنی هم راحتی TypeScript رو نگه داره، هم خروجی سبک‌تر و Native‌تر بده.

https://www.perryts.com/

@codehalics | کدهالیک
4👎1
کدهالیک | codehalic
امروز یه پروژه جدید دیدم به اسم Perry که ایده‌اش برام جالب بود. ماجراش اینه که می‌خواد TypeScript رو مستقیم به اپلیکیشن Native تبدیل کنه؛ یعنی به‌جای اینکه برای ساخت اپ دسکتاپ یا موبایل مجبور باشیم بریم سمت Electron، WebView، Node Runtime یا چیزهای سنگین‌تر،…
سینتکش هم بامزه است بزارید یه مثال بزنم براتون که این جا بیوفته :

فرض کن می‌خوای یه ابزار داخلی ساده بسازی؛ مثلاً یه پنل کوچک برای تیم عملیات که فایل JSON تراکنش‌ها رو باز کنه، سرچ کنه، خطاها رو هایلایت کنه و خروجی بده.

چند تا راه داری :
یا با React وب می‌سازی و توی مرورگر بازش می‌کنی.

یا با Electron می‌سازی که بشه اپ دسکتاپ، ولی حجمش زیاد می‌شه چون با خودش runtime و مرورگر داره.

یا با زبان‌های Native مثل Swift/Kotlin/C#/C++ می‌سازی که خروجی سبک‌تره، ولی تیم فرانت/JS باید وارد فضای جدیدی بشه.

ولی Perry می‌خواد بگه: همون TypeScript رو نگه دار، ولی خروجی رو Native بده. مثلاً یه چیزی شبیه این می‌نویسی:

import { App, VStack, Text, Button, State } from "perry/ui"

const count = State(0)

App({
title: "Counter",
width: 400,
height: 300,
body: VStack(16, [
Text(`Count: ${count.value}`),
Button("Increment", () => count.set(count.value + 1)),
]),
})


بعد با یه دستور مثل perry counter.ts -o counter تبدیلش می‌کنی به برنامه‌ای که روی سیستم اجرا می‌شه. طبق داکیومنت خود Perry، همین مثال یک پنجره Native روی مک/ویندوز/لینوکس باز میکنه !
چی میخوای دیگ :))))))))

Easy peasy lemon squeezy

@codehalics | کدهالیک
5
خیلی وقت بود نرفته بودیم سر قوانین مهندسی نرم افزار امروز یه قوانین بامزه رو که تقریبا هممون تا الان حسش کردیم رو بررسی میکنیم :

امروز یه قانون بامزه دیدم به اسم Putt’s Law که خیلی خلاصه می‌گه توی سازمان‌های فنی، معمولاً اونایی که تکنولوژی رو عمیق می‌فهمن تصمیم‌گیر نهایی نیستن، و اونایی که تصمیم نهایی رو می‌گیرن، همیشه عمق فنی ماجرا رو نمی‌بینن. برای همین هم خیلی وقت‌ها مدیر فکر می‌کنه «این که کاری نداره، تا هفته بعد آماده‌ست»، ولی تیم فنی می‌دونه پشت همون «کاری نداره» کلی وابستگی، تست، ریسک، زیرساخت، دیتابیس و بدبختی خوابیده. از اون طرف هم اگر آدم‌های فنی از بیزینس و محصول دور بمونن، ممکنه بهترین راه‌حل فنی دنیا رو بسازن، اما دقیقاً مسئله درست رو حل نکنن. تهش انگار این قانون می‌گه درد اصلی تیم‌های نرم‌افزاری فقط تکنولوژی نیست؛ فاصله بین فهم فنی و قدرت تصمیم‌گیریه.

#lawsofsoftwareengineering

@codehalics | کدهالیک
2
کدهالیک | codehalic
خیلی وقت بود نرفته بودیم سر قوانین مهندسی نرم افزار امروز یه قوانین بامزه رو که تقریبا هممون تا الان حسش کردیم رو بررسی میکنیم : امروز یه قانون بامزه دیدم به اسم Putt’s Law که خیلی خلاصه می‌گه توی سازمان‌های فنی، معمولاً اونایی که تکنولوژی رو عمیق می‌فهمن…
این قانون خیلی عمیقه. دقیقاً یکی از دردهای همیشگی ما فنی‌ها همینه؛ ممکنه بهترین، تمیزترین و مهندسی‌شده‌ترین راه‌حل دنیا رو بسازیم، ولی آخرش بفهمیم اصلاً چیزی نبوده که بیزینس لازم داشته. نمونه‌اش هم تا دلتون بخواد برای من اتفاق افتاده. یه چیزی ساختم که از نظر فنی واقعاً پرفکت بوده، همه‌چیزش فکرشده، قابل توسعه، تمیز و خفن؛ بعد آخر کار فهمیدم نیاز واقعی بیزینس یه چیزی بوده که شاید اگر اول درست حرف می‌زدیم و نیازمندی رو دقیق درمی‌آوردیم، ده دقیقه هم ازم وقت نمی‌گرفت. ولی من برای مشکلی در حد پیکان، یه فراری خیلی خفن و مجهز ساخته بودم که آخرش هیچ‌کس نه لازم داشتش، نه ازش سر درمی‌آورد.

یه زمانی آلمانی می‌خوندم، یه ضرب‌المثل بامزه داشتن که می‌گفت:
Erst denken, dann handeln.
لریش میشه: اول فکر کن، بعد عمل کن. حالا این «فکر کردن» توی کار فنی دقیقاً یعنی قبل از دست به کد شدن، بشینی با بیزینس حرف بزنی، مسئله رو بفهمی، نیازمندی رو دقیق دربیاری، بفهمی درد اصلی کجاست و بعد بری سراغ راه‌حل. ولی متأسفانه خیلی از ماها از همون اول می‌پریم وسط اجرا، چون ساختن برامون جذاب‌تر از فهمیدنه. در حالی که اشتباه محضه؛ تو اصلاً چه می‌دونی نیازمندی دقیق بیزینس چیه که داری براش سولوشن طراحی می‌کنی؟ خیلی وقت‌ها مهارت اصلی این نیست که راه‌حل پیچیده‌تر بسازیم؛ مهارت اصلی اینه که بفهمیم اصلاً لازم هست چیزی بسازیم یا نه.


@codehalics | کدهالیک
👍2
سایت بالا بود و همه‌چیز ظاهراً درست کار می‌کرد. حتی لینک مستقیم عکس‌هایی که روی S3 بودند بدون مشکل باز می‌شدند و 200 برمی‌گشتند. اما کاور بعضی عکس‌ها در پروداکشن 500 می‌داد. وقتی DevTools را چک کردم، دیدم مرورگر به‌جای اینکه مستقیم عکس را از S3 بگیرد، دارد مسیر /_next/image را صدا می‌زند. همان‌جا مشخص شد مشکل از خود عکس یا S3 نیست، بلکه از Image Optimization در Next.js است. چون وقتی از کامپوننت Image استفاده می‌کنیم و optimization روشن باشد، Next.js عکس را از منبع می‌گیرد، resize و optimize می‌کند و بعد به مرورگر تحویل می‌دهد. این یعنی سرور کوچک من با 1 vCPU و 2GB RAM عملاً داشت نقش Image CDN را بازی می‌کرد. در محیط production، داخل Docker، با عکس‌های بزرگ PNG و سایزهایی مثل 3840، این پردازش گاهی به timeout یا خطای 500 می‌رسید. راه‌حل این بود که برای این شرایط، optimization را در Next.js خاموش کنم و images.unoptimized: true بگذارم تا مرورگر مستقیم عکس را از S3 بگیرد. خلاصه اگر لینک مستقیم S3 درست کار می‌کند اما /_next/image خطای 500 می‌دهد، احتمالاً مشکل از optimizer خود Next.js است، نه از فایل عکس یا S3.

نتیجه ساده است: اگر لینک مستقیم عکس درست کار می‌کند اما /_next/image خطای 500 می‌دهد، احتمالاً مشکل از S3 نیست؛ مشکل از این است که سرور Next.js توان پردازش و optimize کردن آن عکس را ندارد. برای سرورهای کوچک، image optimization واقعی باید روی CDN انجام شود، نه روی خود اپلیکیشن.

Hossein Molavi | The Engineering Mind

@codehalics | کدهالیک
👍12
در دیجیکالا برای حفظ سلامت معماری کدبیس‌های TypeScript و کنترل وابستگی بین ماژول‌ها، از ابزاری داخلی برای تحلیل coupling و cohesion استفاده می‌کنیم. حالا تصمیم گرفتیم نسخه ساده‌ای از این ابزار را با نام ts-modularity متن‌باز کنیم. این ابزار با اجرای دستور npx ts-modularity کدبیس را اسکن می‌کند و ساختار وابستگی‌ها، کلاسترهای طبیعی، چرخه‌های پنهان و بخش‌هایی را که نیاز به refactor دارند، به‌صورت بصری در مرورگر نمایش می‌دهد. هدف ts-modularity این است که تیم‌ها بتوانند خیلی سریع تصویر واضح‌تری از معماری واقعی کد خود داشته باشند و تصمیم‌های بهتری برای بهبود ساختار ماژول‌ها بگیرند.

https://github.com/mberneti/ts-modularity


@codehalics | کدهالیک
👏20👍2
یه قابلیت خیلی کم‌تر دیده‌شده توی Git هست به اسم rerere.

اسمش یعنی: Reuse Recorded Resolution
یعنی چی؟ یعنی اگه یه بار یه merge conflict رو حل کردی، Git می‌تونه یادش بمونه دفعه بعد اگه همون conflict تکرار شد، همون راه‌حل قبلی رو خودش دوباره اعمال کنه.
فقط کافیه یک بار فعالش کنی:
git config --global rerere.enabled true
از اون به بعد، مخصوصاً توی rebase، mergeهای تکراری، branchهای طولانی یا وقتی چند بار به یه conflict مشابه می‌خوری، Git کم‌کم می‌فهمه قبلاً چی کار کردی.

https://git-scm.com/book/en/v2/Git-Tools-Rerere

نمونه واقعی:
https://gist.github.com/skipcloud/f1033afb4fa5681d69fa63458cc95928

@codehalics | کدهالیک
9👎1