●این روزها درگیر مطالعه در رابطه با سیستم دیزاین و مسائل مربوط به پروداکت یا محصولم، و عمداً کمتر مینویسم
تصمیمهای کوچیکی که تو دل نرمافزار گرفته میشن؛ همونهایی که هیچ چنجلاگی ثبتشون نمیکنه.
من مهندسیام که بیشتر سمت فرانت کار میکنم، و اینجا همونجاییه که با خودم بلندبلند دربارهٔ تصمیمهایی فکر میکنم که تو هیچ diffـی دیده نمیشن، ولی خودشون تعیین میکنن کار کردن با یه سیستم و نگهداشتنش چه شکلیه.
- 1405.07.18هزار آیکون در یک میلیثانیه: کش کردن رسم SVG بهجای memoکامپوننت آیکونی که SVG را از داده میسازد در هر رندر کمی کار اضافه میکند. اندازه گرفتم memo کجا کمک میکند و کجا نه، و با نگه داشتن عناصر رسم هر آیکون، رندر مجدد هزار آیکون را از ۳.۶ به حدود ۱ میلیثانیه رساندم.React
- 1405.07.04ساختن هوکی شبیه useSyncExternalStore از صفربا useState و useEffect قدمبهقدم هوکی میسازم که به یک store بیرونی subscribe شود، باگ هر نسخه را نشان میدهم و آخر کار توضیح میدهم چرا نسخهی خودِ ریاکت کاری میکند که از کد کاربر برنمیآید.React
- 1405.07.03دیتابیس ستونی و OLAP: چرا گزارش سالانه را نباید از دیتابیس اپلیکیشن گرفتاز یک گزارش سالانه که دیتابیس فروشگاه را از کار میاندازد شروع میکنم و به تفاوت بار کاری OLTP و OLAP میرسم: دیتابیس ستونی مثل ClickHouse داده را چطور روی دیسک میچیند، چرا کوئریهای تحلیلی روی آن چند ده برابر سریعتر است و چه چیزهایی را در ازایش از دست میدهید.system design
- 1405.07.03View در دیتابیس: وقتی سه تیم یک عدد را سهجور حساب میکننداز یک مسئلهی واقعی در طراحی سیستم شروع میکنم که در آن چند سرویس و تیم یک کوئری مشترک را هر کدام به شکل خودشان مینویسند و به view میرسم: view چیست، چه چیزی را حل میکند، materialized view کجا به کار میآید و در پروژهی واقعی چطور باید ساخت و نگهداریاش کرد.system design
- 1405.07.03Bloom Filter: بررسی عضویت در مجموعههای بزرگ با حافظهی کمBloom filter با چند بیت برای هر عضو جواب میدهد که یک مقدار «قطعاً در مجموعه نیست» یا «شاید هست». در این نوشته سازوکار، ریاضی انتخاب اندازه، یک پیادهسازی تستشده، محدودیتها و جاهایی که در دیتابیسها و CDNها به کار رفته را مرور میکنم و میگویم کجا در طراحی یک سیستم واقعی دردسر درست میکند.system design
- 1405.07.03ZooKeeper را هنوز باید بشناسیم؟ هماهنگی در سیستمهای توزیعشدهکافکا دیگر به ZooKeeper نیاز ندارد، ولی مسئلهای که ZooKeeper حل میکرد سر جایش است. در این نوشته میگویم ZooKeeper چطور کار میکند، کجا هنوز به کار میآید و مهندس ارشد دقیقاً چه چیزی از آن باید بداند.zookeeper
- 1405.07.03کافکا، RabbitMQ یا صف Redis؟ مقایسه با یک مثال سادههر سه ابزار پیام را از یک سرویس به سرویس دیگر میرسانند، ولی برای کارهای متفاوتی ساخته شدهاند. در این نوشته با یک فروشگاه اینترنتی ساده نشان میدهم هر کدام کجا به کار میآید و کجا نه.kafka
- 1405.07.03طراحی سرویس کوتاهکنندهی لینک: از یک سرور ساده تا مقیاس میلیاردیطراحی URL Shortener پرتکرارترین سؤال مصاحبههای طراحی سیستم است. در این نوشته قدمبهقدم از سادهترین نسخه با یک سرور و یک دیتابیس شروع میکنیم و تا معماری توزیعشده با کش، تولید شناسهی توزیعشده، شاردینگ و آنالیتیکس جلو میرویم و مزایا و معایب هر مرحله را میسنجیم.system design
- 1405.06.29مشکل Tearing در ریاکت چیست؟تیرینگ زمانی رخ میدهد که یک مقدار بیرون از چرخهی رندر ریاکت حین رندر تغییر کند و کامپوننتهای مختلف در یک فریم، دو مقدار متفاوت از همان داده را نشان بدهند.
- 1405.06.29چطور در دیجیکالا با useSyncExternalStore جلوی رندرهای اضافه را گرفتیموقتی دادهی ویجتهای یک لیست با تأخیر و بهصورت پلکانی میرسد، نگهداشتن آن در یک state یا Context مشترک باعث میشود کل لیست با هر آپدیت دوباره رندر شود؛ useSyncExternalStore بههمراه React.memo راه میدهد فقط همان ویجتی که دادهاش عوض شده رندر شود.React
- 1402.01.29جلوگیری از مشکل وضعیتهای غیر ممکن یا impossible statesمشکل وضعیتهای غیر ممکن یا impossible states زمانی اتفاق میافتد که فلگهایی ایجاد کنیم که ترکیب برخی از مقادیر آنها شامل حالتهایی باشد که هیچ وقت اتفاق نمیافتد.
- 1401.02.16تفاوت اجرای Lazy و Eagerمقایسهی اجرای Lazy و Eagerjavascript
- 1401.02.15مفهوم point-free و Equational Reasoning چیست؟
- 1401.02.15آداپتور flip و reverse و spreadArgsjavascript
- 1401.02.15آداپتورهاjavascript
- 1401.02.15تعریف آرگومان و پارامتر تابعjavascript
- 1401.02.15تابع unary و binary و ternary و n-ary چیست؟javascript
- 1401.02.15HOF یا Higher Order Function چیست؟تابعی که تابع دیگری را به عنوان ورودی میگیرد و یا تابعی را به عنوان خروجی بر میگرداند.javascript
- 1399.09.21طرز فکر رشد؛ کلید موفقیت در رهبری امروزخلاصهای کوتاه از بخش کسب و کار و رهبری کتاب طرز فکر دکتر کارول دوکطرز فکر
- 1399.07.12سوالهای جاوااسکریپتی مصاحبهی فرانت انددر این مطلب میخوام از سوالهای مصاحبهی شرکتهای مختلف مثل کافه بازار که یادم مونده برای موقعیت برنامه نویس فرانت اند یا فرانت اند دولوپر بنویسم. javascript
- 1399.07.01برنامهنویسی فانکشنال در جاوااسکریپت - قسمت ۲"در این مطلب به شرح مفاهیم پایه برنامه نویسی فانکشنال بصورت خلاصه میپردازیم.js
- 1399.06.18برنامهنویسی فانکشنال در جاوااسکریپت - قسمت ۱ Pure Functionsیک تابع Pure تابعی است که به ازای هر ورودی یکسان یک خروجی برگرداند و side effects یا اثرات جانبی هم نداشته باشد.جاوااسکریپ
- 1399.06.17خطای Object literal may only specify known properties در تایپ اسکریپتدلیل خطای Object literal may only specify known properties تایپ اسکریپت بررسی وجود Property اضافی است تا مانع از پذیرش آن شود، در این مطلب به دو حالت مختلف تفسیر Interface در تایپ اسکریپت اشاره میکنیم و js
- 1399.06.08امید ریاضی - گشتاور مرتبهی nامدر این مطلب بصورت خلاصه با مثالهای کاربردی به شرح امید ریاضی - گشتاور مرتبهی nام و کاربرد آنها خواهیم پرداخت.واریانس
- 1399.06.08انواع روشهای محاسبهی میانگین (میانگینهای فیثاغورثی)در این مطلب به شرح و مقایسهی سه نوع میانگین فیثاغورثی یعنی میانگین حسابی، هندسی و هارمونیک میپردازیم.میانگین هندسی
- 1399.06.08تبدیل توزیع یکنواخت یا unifrom به نرمال یا normal در پایتونبا استفاده از قضیه حد مرکزی میتوان یک مجموعه داده با توزیع uniform را به یک مجموعه دیگر با توزیع normal تبدیل کرد.
- 1399.06.08شاخصهای تمرکز و پراکندگیبا استفاده از شاخصهای تمرکز میزان تمرکز دادهها را و با استفاده از شاخصهای پراکندگی میزان پراکندگی دادهها را در یک عدد خلاصه میکنیم.آمار
- 1399.06.03دنیای جاوااسکریپت - مقدمهآموزش ساده و روان اصول جاوااسکریپت با مدل ذهنی Dan Abramovجاوااسکریپ
- 1399.06.02معیارهای ارزیابی Accuracy - Recall - Precision و F1-scoreدر این مطلب با استفاده از مثالهای ساده و کاربردی به شرح مختصر و مفید معیار شناختهشدهی ارزیابی نتایج داده کاوی مثل Accuracy - Recall - Precision و F1-score میپردازیم.f1-score
- 1399.06.01دنیای جاوااسکریپت ۵ - Prototypesمفهوم سادهی Prototypes یا نمونه اولیه در جاوااسکریپتجاوااسکریپ
- 1399.05.31دنیای جاوااسکریپت ۴ - mutate یا تغییر دادن object"مثالهایی از تغییر در objectجاوااسکریپ
- 1399.05.31دنیای جاوااسکریپت ۳ - انواع روشهای مقایسه برابریانواع روشهای مقایسه در جاوااسکریپت Object.isجاوااسکریپ
- 1399.05.31دنیای جاوااسکریپت ۲ - متغیرها در جاوااسکریپتمتغیرها یا Variables در جاوااسکریپت و تفاوت آنها با مقادیر یا Valuesجاوااسکریپ
- 1399.05.24دنیای جاوااسکریپت ۱ - انواع مقدارها یا Valuesجاوااسکریپت شامل ۹ نوع از مقادیر هست که ۷ مورد آن از نوع Primitive و یا اولیه و اصلی و ۲ مورد دیگر که از نوع Object و Function میباشند. جاوااسکریپ
- 1399.02.09داده کاوی - ۷ - شباهت کسینوسی تعدیل یافتهشرح معیار شباهت کسینوسی تعدیل یافته و مقایسه با معیار شباهت کسینوسیداده کاوی
- 1399.01.31داده کاوی - ۶ - ضریب همبستگی پیرسونضریب همبستگی پیرسون معیاری برای مشخص کردن میزان شباهتداده کاوی
- 1399.01.28داده کاوی - ۵ - شباهت کسینوسیشرح ویژگیها و پیادهیازی معیار شباهت کسینوسی در پایتونداده کاوی
- 1399.01.24یادگیری ماشین چیست؟تفاوت تولید برنامه بصورت سنتی با روش جدید یادگیری ماشینداده کاوی
- 1399.01.24قواعد نامگذاری به سبک PEP 8 در پایتونقواعد نامگذاری طبق استاندارد PEP 8 در پایتون
- 1399.01.24داده کاوی - ۴ - معیارهای فاصلهشرح معیارهای فاصله و پیادهسازی آنها در پایتونداده کاوی
- 1399.01.24داده کاوی - ۳ - جزئیات دیتاستهاشرح جزئیات دادههای خامی که در قسمتهای آتی از آنها استفاده میشودداده کاوی
- 1399.01.24داده کاوی - ۲ - تعاریفتعاریفی مستند از `داده کاوی`داده کاوی
- 1398.12.23داده کاوی در پایتون - ۱ - مقدمهمجموعه مقالات داده کاوی در پایتونداده کاوی
من سیدمحمدرضا برنتی هستم، چپترلید فرانتاند تیم Q-Commerce در دیجیکالا؛ بیش از سیزده سال است که نرمافزار مینویسم، از فولاستک تا فرانتاند.
کارشناسیام را در دانشگاه مازندران خواندم و پایاننامهی کارشناسیارشدم در علم و صنعت به پردازش تصویر اختصاص داشت؛ همان علاقهای که هنوز مرا به سمت هوش مصنوعی میکشاند.
اینجا جایی است که استدلالهای پشتِ کامیتها را مینویسم، نه خودِ کد را.
در حال حاضر به عنوان چپتر لید فرانت دیجیکالا مشغول به کارم.