سبد خرید
{{item.quantity}}
تعداد را بنویسید. بیش‌تر از 0 بنویسید. کم‌تر از {{item.product.variant.max + 1}} بنویسید.
{{item.promotion_discount|number}} تومان تخفیف
{{item.total|number}} تومان
مبلغ قابل پرداخت
{{model.subtotal|number}} تومان
ثبت سفارش
سبد خرید شما خالی است
بازطراحی رندر پول‌ریکوئست‌های میلیونی در گیت‌هاب کوپایلوت

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

منبع رسمی گزارش: این مطلب برگرفته از مستندات رسمی منتشر شده در وب‌سایت GitHub Engineering Blog می‌باشد.

بر اساس گزارش منتشرشده در وبلاگ مهندسی گیت‌هاب (GitHub Engineering Blog)، رابط کاربری نمایش تغییرات (diff) در اپلیکیشن GitHub Copilot بازطراحی شد. این بازنویسی برای مدیریت پول‌ریکوئست‌های بسیار حجیم شامل ۲۲۰۰ فایل، بیش از ۱ میلیون خط تغییر و افزون بر ۴۰۰ کامنت بررسی درون‌خطی انجام شده است.

چالش مقیاس‌پذیری و شکست مجازی‌سازی سنتی

نمایش سریع diffهای کد به مجازی‌سازی (Virtualization) متکی است؛ فقط حدود ۱۰۰ ردیف در DOM بارگذاری می‌شوند و با اسکرول، عناصر بازیافت می‌شوند. این مدل بر قرارداد اندازه ثابت پیش از رندر (all heights known before paint) استوار است. محاسبه اسکرول‌بار و موقعیت ردیف N از طریق جدول ریاضی ارتفاع‌ها انجام می‌شد.

ورود کامنت‌های بررسی کد این سیستم را دچار اختلال می‌کند. ارتفاع کامنت به فاکتورهای ناشناخته پیش از رندر بستگی دارد: شکست خطوط Markdown، بلوک‌های بازشونده details، کادرهای درج پاسخ، تصاویر با بارگذاری ناهمگام و تفاوت‌های پیشنهادی. تخمین ثابت یا اصلاح ارتفاع پس از نقاشی DOM باعث پرش ناگهانی اسکرول (scroll jump) در اسناد طویل می‌شود.

معماری هندسه دوگانه (Two Geometries)

مهندسان گیت‌هاب برای حل مشکل، ساختار ریاضی ارتفاع کل صفحه را به دو دامنه مستقل تفکیک کردند:

total height = deterministic code height + Σ dynamic block effective heights + scroll padding

  • هندسه کد (Code geometry): قطعی، بر پایه پیش‌محاسبه جمع پیشوندی (prefix-summed) و ریاضیات Typed-array. با تغییر اندازه کامنت‌ها هرگز مجدداً محاسبه نمی‌شود. عدم استفاده از مؤلفه React به ازای هر خط و پیاده‌سازی رندرینگ امری (imperative recycled renderer).
  • هندسه بلوک‌های پویا (Dynamic block geometry): اختصاص کلید پایدار بر اساس فایل، شماره خط و جهت، نه مختصات پیکسلی. ثبت اثر انگشت (fingerprint) برای محتوا و وضعیت باز بودن المان‌ها، به همراه دسته‌بندی عرض پنجره برای جلوگیری از بی‌اعتباری اندازه‌گیری در تغییر اندازه صفحه.

ارتفاع واقعی بلوک‌های پویا به شکل تنبل (lazy) اندازه‌گیری شده و اصلاحات ارتفاع به موقعیت فعلی دید کاربر مهار (anchor) می‌شوند تا جابجایی اسکرول رخ ندهد.

پیشنهاد ویژه شیرازگِیت

خرید قانونی گیت‌هاب کوپایلت (GitHub Copilot)

فعال‌سازی مستقیم با کارت‌های بین‌المللی معتبر، بدون واسطه، با ضمانت کامل تا آخرین روز اشتراک و پشتیبانی سریع در شیرازگِیت.

نوید بهروزی
نوشته شده در 10 مهر 1405 توسط نوید بهروزی
اشتراک‌گذاری
همچنین بخوانید...

دیدگاه خود را بنویسید

  • {{value}}
این دیدگاه به عنوان پاسخ شما به دیدگاهی دیگر ارسال خواهد شد. برای صرف نظر از ارسال این پاسخ، بر روی گزینه‌ی انصراف کلیک کنید.
دیدگاه خود را بنویسید.
جستجو
برای جستجو در نوشته‌های وب‌سایت، کلمه‌ی کلیدی مورد نظر خود را بنویسید و بر روی دکمه کلیک کنید.
دسته‌بندی
عضویت خبرنامه
عضو خبرنامه ماهانه وب‌سایت شوید و تازه‌ترین نوشته‌ها را در پست الکترونیک خود دریافت کنید.
پست الکترونیکی را بنویسید.
© ۱۴۰۳ - ۱۴۰۵ - کلیه حقوق و امتیازات این وبسایت متعلق به شیراز گیت میباشد | طراحی توسط شیراز استودیو
دسته‌بندی کالاها