برنتی / می‌نویسم که فکر کنم

●این روزها درگیر مطالعه در رابطه با سیستم دیزاین و مسائل مربوط به پروداکت یا محصولم، و عمداً کمتر می‌نویسم

تصمیم‌های کوچیکی که تو دل نرم‌افزار گرفته می‌شن؛ همون‌هایی که هیچ چنج‌لاگی ثبت‌شون نمی‌کنه.

من مهندسی‌ام که بیشتر سمت فرانت کار می‌کنم، و اینجا همون‌جاییه که با خودم بلندبلند دربارهٔ تصمیم‌هایی فکر می‌کنم که تو هیچ diffـی دیده نمی‌شن، ولی خودشون تعیین می‌کنن کار کردن با یه سیستم و نگه‌داشتنش چه شکلیه.

§ نوشته‌ها43 نوشته
  1. 1405.07.18هزار آیکون در یک میلی‌ثانیه: کش کردن رسم SVG به‌جای memoکامپوننت آیکونی که SVG را از داده می‌سازد در هر رندر کمی کار اضافه می‌کند. اندازه گرفتم memo کجا کمک می‌کند و کجا نه، و با نگه داشتن عناصر رسم هر آیکون، رندر مجدد هزار آیکون را از ۳.۶ به حدود ۱ میلی‌ثانیه رساندم.
  2. 1405.07.04ساختن هوکی شبیه useSyncExternalStore از صفربا useState و useEffect قدم‌به‌قدم هوکی می‌سازم که به یک store بیرونی subscribe شود، باگ هر نسخه را نشان می‌دهم و آخر کار توضیح می‌دهم چرا نسخه‌ی خودِ ری‌اکت کاری می‌کند که از کد کاربر برنمی‌آید.
  3. 1405.07.03دیتابیس ستونی و OLAP: چرا گزارش سالانه را نباید از دیتابیس اپلیکیشن گرفتاز یک گزارش سالانه که دیتابیس فروشگاه را از کار می‌اندازد شروع می‌کنم و به تفاوت بار کاری OLTP و OLAP می‌رسم: دیتابیس ستونی مثل ClickHouse داده را چطور روی دیسک می‌چیند، چرا کوئری‌های تحلیلی روی آن چند ده برابر سریع‌تر است و چه چیزهایی را در ازایش از دست می‌دهید.
  4. 1405.07.03View در دیتابیس: وقتی سه تیم یک عدد را سه‌جور حساب می‌کننداز یک مسئله‌ی واقعی در طراحی سیستم شروع می‌کنم که در آن چند سرویس و تیم یک کوئری مشترک را هر کدام به شکل خودشان می‌نویسند و به view می‌رسم: view چیست، چه چیزی را حل می‌کند، materialized view کجا به کار می‌آید و در پروژه‌ی واقعی چطور باید ساخت و نگه‌داری‌اش کرد.
  5. 1405.07.03Bloom Filter: بررسی عضویت در مجموعه‌های بزرگ با حافظه‌ی کمBloom filter با چند بیت برای هر عضو جواب می‌دهد که یک مقدار «قطعاً در مجموعه نیست» یا «شاید هست». در این نوشته سازوکار، ریاضی انتخاب اندازه، یک پیاده‌سازی تست‌شده، محدودیت‌ها و جاهایی که در دیتابیس‌ها و CDNها به کار رفته را مرور می‌کنم و می‌گویم کجا در طراحی یک سیستم واقعی دردسر درست می‌کند.
  6. 1405.07.03ZooKeeper را هنوز باید بشناسیم؟ هماهنگی در سیستم‌های توزیع‌شدهکافکا دیگر به ZooKeeper نیاز ندارد، ولی مسئله‌ای که ZooKeeper حل می‌کرد سر جایش است. در این نوشته می‌گویم ZooKeeper چطور کار می‌کند، کجا هنوز به کار می‌آید و مهندس ارشد دقیقاً چه چیزی از آن باید بداند.
  7. 1405.07.03کافکا، RabbitMQ یا صف Redis؟ مقایسه با یک مثال سادههر سه ابزار پیام را از یک سرویس به سرویس دیگر می‌رسانند، ولی برای کارهای متفاوتی ساخته شده‌اند. در این نوشته با یک فروشگاه اینترنتی ساده نشان می‌دهم هر کدام کجا به کار می‌آید و کجا نه.
  8. 1405.07.03طراحی سرویس کوتاه‌کننده‌ی لینک: از یک سرور ساده تا مقیاس میلیاردیطراحی URL Shortener پرتکرارترین سؤال مصاحبه‌های طراحی سیستم است. در این نوشته قدم‌به‌قدم از ساده‌ترین نسخه با یک سرور و یک دیتابیس شروع می‌کنیم و تا معماری توزیع‌شده با کش، تولید شناسه‌ی توزیع‌شده، شاردینگ و آنالیتیکس جلو می‌رویم و مزایا و معایب هر مرحله را می‌سنجیم.
  9. 1405.06.29مشکل Tearing در ری‌اکت چیست؟تیرینگ زمانی رخ می‌دهد که یک مقدار بیرون از چرخه‌ی رندر ری‌اکت حین رندر تغییر کند و کامپوننت‌های مختلف در یک فریم، دو مقدار متفاوت از همان داده را نشان بدهند.
  10. 1405.06.29چطور در دیجیکالا با useSyncExternalStore جلوی رندرهای اضافه را گرفتیموقتی داده‌ی ویجت‌های یک لیست با تأخیر و به‌صورت پلکانی می‌رسد، نگه‌داشتن آن در یک state یا Context مشترک باعث می‌شود کل لیست با هر آپدیت دوباره رندر شود؛ useSyncExternalStore به‌همراه React.memo راه می‌دهد فقط همان ویجتی که داده‌اش عوض شده رندر شود.
  11. 1402.01.29جلوگیری از مشکل وضعیت‌های غیر ممکن یا impossible statesمشکل وضعیت‌های غیر ممکن یا impossible states زمانی اتفاق می‌افتد که فلگ‌هایی ایجاد کنیم که ترکیب برخی از مقادیر آنها شامل حالت‌هایی باشد که هیچ وقت اتفاق نمی‌افتد.
  12. 1401.02.16تفاوت اجرای Lazy و Eagerمقایسه‌ی اجرای Lazy و Eager
  13. 1401.02.15مفهوم point-free و Equational Reasoning چیست؟
  14. 1401.02.15آداپتور flip و reverse و spreadArgs
  15. 1401.02.15آداپتورها
  16. 1401.02.15تعریف آرگومان و پارامتر تابع
  17. 1401.02.15تابع unary و binary و ternary و n-ary چیست؟
  18. 1401.02.15HOF یا Higher Order Function چیست؟تابعی که تابع دیگری را به عنوان ورودی می‌گیرد و یا تابعی را به عنوان خروجی بر می‌گرداند.
  19. 1399.09.21طرز فکر رشد؛ کلید موفقیت در رهبری امروزخلاصه‌ای کوتاه از بخش کسب و کار و رهبری کتاب طرز فکر دکتر کارول دوک
  20. 1399.07.12سوالهای جاوااسکریپتی مصاحبه‌ی فرانت انددر این مطلب می‌خوام از سوالهای مصاحبه‌ی شرکت‌های مختلف مثل کافه بازار که یادم مونده برای موقعیت برنامه نویس فرانت اند یا فرانت اند دولوپر بنویسم.
  21. 1399.07.01برنامه‌نویسی فانکشنال در جاوااسکریپت - قسمت ۲"در این مطلب به شرح مفاهیم پایه برنامه نویسی فانکشنال بصورت خلاصه می‌پردازیم.
  22. 1399.06.18برنامه‌نویسی فانکشنال در جاوااسکریپت - قسمت ۱ Pure Functionsیک تابع Pure تابعی است که به ازای هر ورودی یکسان یک خروجی برگرداند و side effects یا اثرات جانبی هم نداشته باشد.
  23. 1399.06.17خطای Object literal may only specify known properties در تایپ اسکریپتدلیل خطای Object literal may only specify known properties تایپ اسکریپت بررسی وجود Property اضافی است تا مانع از پذیرش آن شود، در این مطلب به دو حالت مختلف تفسیر Interface در تایپ اسکریپت اشاره می‌کنیم و
  24. 1399.06.08امید ریاضی - گشتاور مرتبه‌ی nامدر این مطلب بصورت خلاصه با مثال‌های کاربردی به شرح امید ریاضی - گشتاور مرتبه‌ی nام و کاربرد آنها خواهیم پرداخت.
  25. 1399.06.08انواع روش‌های محاسبه‌ی میانگین (میانگین‌های فیثاغورثی)در این مطلب به شرح و مقایسه‌ی سه نوع میانگین فیثاغورثی یعنی میانگین حسابی، هندسی و هارمونیک می‌پردازیم.
  26. 1399.06.08تبدیل توزیع یکنواخت یا unifrom به نرمال یا normal در پایتونبا استفاده از قضیه حد مرکزی می‌توان یک مجموعه داده با توزیع uniform را به یک مجموعه دیگر با توزیع normal تبدیل کرد.
  27. 1399.06.08شاخص‌های تمرکز و پراکندگیبا استفاده از شاخص‌های تمرکز میزان تمرکز داده‌ها را و با استفاده از شاخص‌های پراکندگی میزان پراکندگی داده‌ها را در یک عدد خلاصه می‌کنیم.
  28. 1399.06.03دنیای جاوااسکریپت - مقدمهآموزش ساده و روان اصول جاوااسکریپت با مدل ذهنی Dan Abramov
  29. 1399.06.02معیارهای ارزیابی Accuracy - Recall - Precision و F1-scoreدر این مطلب با استفاده از مثال‌های ساده و کاربردی به شرح مختصر و مفید معیار شناخته‌شده‌ی ارزیابی نتایج داده کاوی مثل Accuracy - Recall - Precision و F1-score می‌پردازیم.
  30. 1399.06.01دنیای جاوااسکریپت ۵ - Prototypesمفهوم ساده‌ی Prototypes یا نمونه اولیه در جاوااسکریپت
  31. 1399.05.31دنیای جاوااسکریپت ۴ - mutate یا تغییر دادن object"مثال‌هایی از تغییر در object
  32. 1399.05.31دنیای جاوااسکریپت ۳ - انواع روش‌های مقایسه برابریانواع روش‌های مقایسه در جاوااسکریپت Object.is
  33. 1399.05.31دنیای جاوااسکریپت ۲ - متغیرها در جاوااسکریپتمتغیرها یا Variables در جاوااسکریپت و تفاوت آنها با مقادیر یا Values
  34. 1399.05.24دنیای جاوااسکریپت ۱ - انواع مقدارها یا Valuesجاوااسکریپت شامل ۹ نوع از مقادیر هست که ۷ مورد آن از نوع Primitive و یا اولیه و اصلی و ۲ مورد دیگر که از نوع Object و Function می‌باشند.
  35. 1399.02.09داده کاوی - ۷ - شباهت کسینوسی تعدیل یافتهشرح معیار شباهت کسینوسی تعدیل یافته و مقایسه با معیار شباهت کسینوسی
  36. 1399.01.31داده کاوی - ۶ - ضریب همبستگی پیرسونضریب همبستگی پیرسون معیاری برای مشخص کردن میزان شباهت
  37. 1399.01.28داده کاوی - ۵ - شباهت کسینوسیشرح ویژگی‌ها و پیاده‌یازی معیار شباهت کسینوسی در پایتون
  38. 1399.01.24یادگیری ماشین چیست؟تفاوت تولید برنامه بصورت سنتی با روش جدید یادگیری ماشین
  39. 1399.01.24قواعد نامگذاری به سبک PEP 8 در پایتونقواعد نامگذاری طبق استاندارد PEP 8 در پایتون
  40. 1399.01.24داده کاوی - ۴ - معیار‌های فاصلهشرح معیار‌های فاصله و پیاده‌سازی آنها در پایتون
  41. 1399.01.24داده کاوی - ۳ - جزئیات دیتاست‌هاشرح جزئیات داده‌های خامی که در قسمت‌های آتی از آنها استفاده می‌شود
  42. 1399.01.24داده کاوی - ۲ - تعاریفتعاریفی مستند از `داده کاوی`
  43. 1398.12.23داده کاوی در پایتون - ۱ - مقدمهمجموعه مقالات داده کاوی در پایتون
§ درباره

من سیدمحمدرضا برنتی هستم، چپترلید فرانت‌اند تیم Q-Commerce در دیجی‌کالا؛ بیش از سیزده سال است که نرم‌افزار می‌نویسم، از فول‌استک تا فرانت‌اند.

کارشناسی‌ام را در دانشگاه مازندران خواندم و پایان‌نامه‌ی کارشناسی‌ارشدم در علم و صنعت به پردازش تصویر اختصاص داشت؛ همان علاقه‌ای که هنوز مرا به سمت هوش مصنوعی می‌کشاند.

این‌جا جایی است که استدلال‌های پشتِ کامیت‌ها را می‌نویسم، نه خودِ کد را.

در حال حاضر به عنوان چپتر لید فرانت دیجیکالا مشغول به کارم.