وابستگی چرخشی (Circular Dependency) زمانی اتفاق میفته که دو ماژول یا ماژولهای بیشتری به همدیگه وابسته باشن، طوری که عملا یک حلقه بسته ایجاد میکنن. این موضوع میتونه باعث مشکلات جدی در اجرای کد بشه. توی این پست به همراه مثال بررسیش کردم.
@techstuff100
@techstuff100
👍4👏1
اولین پست Mediumم منتشر شد!
چند وقت پیش درگیر ستاپ کردن Flipper Debugger برای یه پروژه React Native بودم. ستاپش یه مقدار زمان برد و به یه سری خطا و چالش خوردم، ولی با خوندن داکیومنتها و گشتن توی Issues پروژه تونستم راهش بندازم. گفتم تجربهام رو توی یه مقاله مدیوم بنویسم که هم خطاهایی که خوردم رو توضیح بدم، هم روش حلشون رو. شاید به درد بقیه هم بخوره.
لینک مقاله:
https://medium.com/@seyed-mahdii-jalali/setting-up-flipper-debugger-for-react-native-android-projects-aba186b0b855
پ.ن: این اولین تجربهم توی نوشتن و انتشار پست توی مدیومه. اگه دوست داشتین، بهش claps بدین و حمایتش کنین. اگه هم نکتهای برای بهتر شدنش به ذهنتون رسید، ممنون میشم بهم بگین.
@techstuff100
چند وقت پیش درگیر ستاپ کردن Flipper Debugger برای یه پروژه React Native بودم. ستاپش یه مقدار زمان برد و به یه سری خطا و چالش خوردم، ولی با خوندن داکیومنتها و گشتن توی Issues پروژه تونستم راهش بندازم. گفتم تجربهام رو توی یه مقاله مدیوم بنویسم که هم خطاهایی که خوردم رو توضیح بدم، هم روش حلشون رو. شاید به درد بقیه هم بخوره.
لینک مقاله:
https://medium.com/@seyed-mahdii-jalali/setting-up-flipper-debugger-for-react-native-android-projects-aba186b0b855
پ.ن: این اولین تجربهم توی نوشتن و انتشار پست توی مدیومه. اگه دوست داشتین، بهش claps بدین و حمایتش کنین. اگه هم نکتهای برای بهتر شدنش به ذهنتون رسید، ممنون میشم بهم بگین.
@techstuff100
🔥10👍2👏2
آشنایی با Pub/Sub Messaging
ا Pub/Sub Messaging یه روش ارتباطی غیرهمزمانه که توی سیستمهای توزیعشده، مخصوصا معماریهای ابری و میکروسرویسها کاربرد زیادی داره. با این مدل، سرویسها میتونن بدون نیاز به ارتباط مستقیم، پیامها رو رد و بدل کنن. این روش باعث مقیاسپذیری بهتر، کاهش وابستگی بین سرویسها و پردازش همزمان درخواستها میشه. کاربردش هم توی مواردی مثل اعلانهای لحظهای، پردازش همزمان دادهها و هماهنگی بین سرویسهای سرورلس دیده میشه.
این سیستم از Publisher، Subscriber، Message و Topic تشکیل شده. Publisher پیامها رو روی یه Topic منتشر میکنه و Subscriberهایی که به اون Topic علاقه دارن، پیام رو دریافت میکنن. این روش یه ارتباط یکبهچند و بدون وابستگی ایجاد میکنه، که باعث افزایش انعطافپذیری سیستم میشه.
لینک مقاله:
https://aws.amazon.com/what-is/pub-sub-messaging/
@techstuff100
ا Pub/Sub Messaging یه روش ارتباطی غیرهمزمانه که توی سیستمهای توزیعشده، مخصوصا معماریهای ابری و میکروسرویسها کاربرد زیادی داره. با این مدل، سرویسها میتونن بدون نیاز به ارتباط مستقیم، پیامها رو رد و بدل کنن. این روش باعث مقیاسپذیری بهتر، کاهش وابستگی بین سرویسها و پردازش همزمان درخواستها میشه. کاربردش هم توی مواردی مثل اعلانهای لحظهای، پردازش همزمان دادهها و هماهنگی بین سرویسهای سرورلس دیده میشه.
این سیستم از Publisher، Subscriber، Message و Topic تشکیل شده. Publisher پیامها رو روی یه Topic منتشر میکنه و Subscriberهایی که به اون Topic علاقه دارن، پیام رو دریافت میکنن. این روش یه ارتباط یکبهچند و بدون وابستگی ایجاد میکنه، که باعث افزایش انعطافپذیری سیستم میشه.
لینک مقاله:
https://aws.amazon.com/what-is/pub-sub-messaging/
@techstuff100
🔥4👏1
This media is not supported in your browser
VIEW IN TELEGRAM
کلاسهای مختص screen readerها
توی Tailwind یه کلاس داریم به اسم
@techstuff100
توی Tailwind یه کلاس داریم به اسم
sr-only که باعث میشه یه المان از صفحه مخفی بشه، ولی همچنان برای screen readerها قابل دسترس باشه. همونطور که میبینید، ChatGPT هم ازش استفاده کرده. حالا اگه بخوایم یه المان sr-only شده رو دوباره قابل نمایش کنیم، میتونیم از کلاس not-sr-only استفاده کنیم.@techstuff100
👍6❤2🔥1
ایندکس دیتابیس (Database Index) چیه و چرا مهمه؟
فرض کنیم یه جدول با میلیونها رکورد داریم و میخوایم یه داده خاص رو سریع پیدا کنیم. بدون index، این کار مثل پیدا کردن یه اسم تو یه کتاب هزار صفحهای بدون فهرسته. اما با استفاده از index، میتونیم خیلی سریعتر اطلاعات موردنظر رو پیدا کنیم، درست مثل اینکه یه کتاب فهرستدار رو باز کنیم و مستقیم بریم سراغ صفحهای که لازم داریم.
ایندکسها در دیتابیس یه جور جدول کمکی هستن که اطلاعات کلیدی رو نگه میدارن تا جستجوها سریعتر انجام بشه. بهصورت پیشفرض، کلیدهای اصلی (Primary Keys) همیشه ایندکس میشن؛ اما میتونیم برای ستونهای دیگه هم index دستی بسازیم. البته باید حواسمون باشه که هر تغییری تو جدول باعث آپدیت شدن ایندکسها بشه و ممکنه سرعت INSERT/UPDATE رو کمی کاهش بده. پس بهتره فقط برای ستونهایی که زیاد جستجو میشن، ایندکس بذاریم.
مقاله:
https://www.codecademy.com/article/sql-indexes
@techstuff100
فرض کنیم یه جدول با میلیونها رکورد داریم و میخوایم یه داده خاص رو سریع پیدا کنیم. بدون index، این کار مثل پیدا کردن یه اسم تو یه کتاب هزار صفحهای بدون فهرسته. اما با استفاده از index، میتونیم خیلی سریعتر اطلاعات موردنظر رو پیدا کنیم، درست مثل اینکه یه کتاب فهرستدار رو باز کنیم و مستقیم بریم سراغ صفحهای که لازم داریم.
ایندکسها در دیتابیس یه جور جدول کمکی هستن که اطلاعات کلیدی رو نگه میدارن تا جستجوها سریعتر انجام بشه. بهصورت پیشفرض، کلیدهای اصلی (Primary Keys) همیشه ایندکس میشن؛ اما میتونیم برای ستونهای دیگه هم index دستی بسازیم. البته باید حواسمون باشه که هر تغییری تو جدول باعث آپدیت شدن ایندکسها بشه و ممکنه سرعت INSERT/UPDATE رو کمی کاهش بده. پس بهتره فقط برای ستونهایی که زیاد جستجو میشن، ایندکس بذاریم.
مقاله:
https://www.codecademy.com/article/sql-indexes
@techstuff100
👍7👏2
هوک useInsertionEffect در React
توی این پست دربارهی useInsertionEffect صحبت کردم، اینکه کِی بهش نیاز داریم و چه کمکی به ما میکنه، به همراه یک مثال برای درک بهتر رفتارش در مقایسه با useEffect و useLayoutEffect.
@techstuff100
توی این پست دربارهی useInsertionEffect صحبت کردم، اینکه کِی بهش نیاز داریم و چه کمکی به ما میکنه، به همراه یک مثال برای درک بهتر رفتارش در مقایسه با useEffect و useLayoutEffect.
@techstuff100
👍4👏2🤔1
پشت صحنه کوئریهای SQL
وقتی یه کوئری مثل
رو اجرا میکنیم، پشت صحنه چند تا مرحله اتفاق میفته که باعث میشه دیتابیس بتونه بهترین و سریعترین نتیجه رو برگردونه. این مسیر از چک کردن دسترسی کاربر شروع میشه، بعدش کوئری بررسی و بهینهسازی میشه، و در نهایت به موتور ذخیرهسازی میرسه که دادهها رو از دیسک میخونه.
اما چطور این فرآیند سریع و بهینه انجام میشه؟ دیتابیس از چند تا بخش هوشمند مثل Query Optimizer (که بهترین روش اجرای کوئری رو انتخاب میکنه) و Execution Engine (که مراحل اجرای کوئری رو هماهنگ میکنه) استفاده میکنه. مثلا، Lock Manager از تداخل دسترسیها جلوگیری میکنه و Buffer Manager اول حافظه رو چک میکنه تا از خوندن غیرضروری از دیسک جلوگیری بشه.
لینک مقاله:
https://newsletter.systemdesigncodex.com/p/the-journey-of-a-sql-query-through
@techstuff100
وقتی یه کوئری مثل
SELECT name, age FROM users WHERE city = 'New York';رو اجرا میکنیم، پشت صحنه چند تا مرحله اتفاق میفته که باعث میشه دیتابیس بتونه بهترین و سریعترین نتیجه رو برگردونه. این مسیر از چک کردن دسترسی کاربر شروع میشه، بعدش کوئری بررسی و بهینهسازی میشه، و در نهایت به موتور ذخیرهسازی میرسه که دادهها رو از دیسک میخونه.
اما چطور این فرآیند سریع و بهینه انجام میشه؟ دیتابیس از چند تا بخش هوشمند مثل Query Optimizer (که بهترین روش اجرای کوئری رو انتخاب میکنه) و Execution Engine (که مراحل اجرای کوئری رو هماهنگ میکنه) استفاده میکنه. مثلا، Lock Manager از تداخل دسترسیها جلوگیری میکنه و Buffer Manager اول حافظه رو چک میکنه تا از خوندن غیرضروری از دیسک جلوگیری بشه.
لینک مقاله:
https://newsletter.systemdesigncodex.com/p/the-journey-of-a-sql-query-through
@techstuff100
👍5👏1
ساخت تایپهای deep immutable در تایپاسکریپت
گاهی وقتها لازم داریم مطمئن باشیم که یک آبجکت بعد از مقداردهی اولیه مقادیرش تغییر نکنه. توی این پست با const assertion و Object.freeze بررسی میکنم که چطوری میشه یه آبجکت رو هم در زمان کامپایل و هم در زمان اجرا فریز کرد.
@techstuff100
گاهی وقتها لازم داریم مطمئن باشیم که یک آبجکت بعد از مقداردهی اولیه مقادیرش تغییر نکنه. توی این پست با const assertion و Object.freeze بررسی میکنم که چطوری میشه یه آبجکت رو هم در زمان کامپایل و هم در زمان اجرا فریز کرد.
@techstuff100
👍4🔥1👏1