Breaking News
القائمة
Advertisement

إحياء أداة BERT: كيف أُعيد بناء الجسر الرابط بين Excel و R ليدعم إصدار R 4.6

إحياء أداة BERT: كيف أُعيد بناء الجسر الرابط بين Excel و R ليدعم إصدار R 4.6
100%

يواجه محللو البيانات وخبراء النمذجة المالية الذين يعتمدون على لغة R في أعمالهم المعقدة عقبة محبطة: عملاؤهم يفضلون العمل حصرياً داخل برنامج Excel. لطالما كانت أداة Basic Excel R Toolkit (BERT) هي الجسر الرابط بين هذين العالمين، حيث تتيح للمستخدمين استدعاء دوال R مباشرة من خلايا جداول البيانات. ولكن منذ توقف مطورها الأصلي عن العمل عليها في عام 2018، تسببت التحديثات المستمرة للغة R في تعطل ميزاتها الأساسية بصمت.

الآن، نجح تحديث ضخم يقوده المجتمع في إحياء هذه الأداة، مما يوفر توافقاً كاملاً مع إصدار R 4.6 ويعالج أخطاء تجميد النظام التي أزعجت المستخدمين مؤخراً. يُعد هذا التحديث بالغ الأهمية لعلماء البيانات والمحللين الكميين الذين يحتاجون إلى نشر نماذج R مباشرة داخل خلايا جداول البيانات دون إجبار العملاء على تعلم برامج جديدة.

من خلال الترقية إلى هذه النسخة المحدثة، يمكن للمستخدمين استعادة عمل أدوات الرسوميات المعطلة، والقضاء على توقف الحسابات، والاستفادة من ميزات R الحديثة مباشرة داخل بيئة Excel بمعمارية 64 بت. مع تطور لغة R من الإصدار 3.4 إلى 4.6، أدت التغييرات الهيكلية في محرك الرسوميات وواجهات برمجة التطبيقات (APIs) إلى فشل الوظائف الإضافية القديمة أو انهيارها. لا يقتصر هذا التحديث على تحديث الأكواد البرمجية فحسب، بل يقدم مساراً متكاملاً للتكامل المستمر والتسليم المستمر (CI/CD) لضمان عدم تعطل هذا الجسر مع الإصدارات المستقبلية.

بنية الترقية إلى إصدار R 4.6

تطلب جعل وحدة تحكم BERT تتواصل مع الإصدارات الحالية من لغة R التعامل مع عدة تغييرات في واجهات برمجة التطبيقات منخفضة المستوى. تعمل أداة BERT من خلال تشغيل عملية منفصلة، وهي وحدة التحكم، التي تقوم بتحميل مكتبات الربط الديناميكي (DLLs) الخاصة بلغة R وتتواصل مع الوظيفة الإضافية في برنامج Excel عبر قناة اتصال. وتتركز معظم مشكلات التوافق مع الإصدارات داخل وحدة التحكم هذه.

ظهرت العقبة الرئيسية الأولى في إصدار R 4.3، الذي أضاف عنصر _Complex بمعيار C99 إلى بنية Rcomplex. ونظراً لأن مترجم Microsoft Visual C++ (MSVC) يرفض تجميع هذه الإضافة، كان لا بد من تعديل عملية البناء. قام المطورون بتعريف R_LEGACY_RCOMPLEX لإجبار المترجم على استخدام تخطيط الذاكرة القديم والمتوافق.

تمثل التحدي الثاني في اكتشاف الإصدار أثناء وقت التشغيل. نظراً لعدم وجود إصدار واحد من لغة R يمكن البناء عليه، تقوم وحدة التحكم الآن بالتحقق بنشاط من إصدار R الذي تتعامل معه أثناء التشغيل. إذا كان الإصدار خارج النطاق المدعوم، فإنها تنبه المستخدم فوراً بدلاً من الفشل بصمت. بالنسبة لإصدار R 4.6 تحديداً، تطلب التحديث استبدال دالة Rf_isFrame الملغاة بدالة Rf_inherits(sexp, "data.frame")، والتي تؤدي نفس المهمة تماماً وتُعد واجهة برمجة تطبيقات مستقرة منذ ما قبل إصدار R 3.5.

حل مشكلة عدم تطابق واجهة الرسوميات

كانت إحدى أكثر المشكلات إزعاجاً في عمليات تثبيت BERT القديمة هي فشل أداة رسوميات R، والتي تسمح برسم مخططات R مباشرة داخل خلايا برنامج Excel. تتحقق لغة R بنشاط من إصدار محرك الرسوميات الخاص بالوحدة النمطية كلما تم إنشاء أداة رسومية. ونظراً لأن هذا الإصدار يتغير عبر الإصدارات الرئيسية، حيث يستخدم إصدار R 4.2 محرك R_GE_group، ويستخدم R 4.5 محرك R_GE_glyphs، بينما يستخدم R 4.6 محرك R_GE_fontVar، فإن الوحدة النمطية المصممة لسلسلة واحدة ستنهار فوراً على سلسلة أخرى مع ظهور خطأ "عدم تطابق إصدار واجهة برمجة تطبيقات الرسوميات".

لحل هذه المشكلة، توفر حزمة التثبيت الجديدة إصدارات متعددة من وحدة BERTModule. يتضمن المثبت وحدة نمطية مجمعة واحدة لكل سلسلة من إصدارات R، مرتبة بدقة في أدلة فرعية. عند تشغيل برنامج Excel، يكتشف البرنامج النصي startup.R ديناميكياً إصدار R المضيف ويقوم بتحميل الوحدة النمطية المطابقة تماماً.

نظراً لأن جميع الوحدات الست مجتمعة تشغل مساحة تبلغ حوالي 3 ميجابايت فقط، فلا داعي لأن يختار المستخدمون إصدار R الخاص بهم أثناء التثبيت. إذا قام المستخدم بترقية تثبيت R لاحقاً، تكتشف أداة BERT التغيير تلقائياً وتنتقل إلى وحدة الرسوميات الصحيحة دون الحاجة إلى إعادة التثبيت.

معالجة خطأ تجميد النظام في Excel

كان الخطأ الأكثر خطورة الذي تمت معالجته في هذا التحديث هو مشكلة التوقف التام، حيث يؤدي استدعاء أي دالة R تتفاعل مرة أخرى مع برنامج Excel إلى تجميد جدول البيانات بالكامل. يعرض التطبيق رسالة "جاري الحساب (64 خيط معالجة)" ويتوقف إلى أجل غير مسمى، بينما تظل وحدة تحكم R خاملة تماماً.

نتج هذا التجميد عن حالة تسابق في كيفية التعامل مع عمليات الاستدعاء. عندما تقوم لغة R بالاستدعاء مرة أخرى إلى برنامج Excel، يصل الطلب على خيط معالجة منفصل. إذا نشأ الاستدعاء من وحدة تحكم BERT، يكون برنامج Excel خاملاً ويمكنه معالجته عبر نظام COM. ومع ذلك، إذا جاء الاستدعاء من خلية جدول بيانات، فإن خيط المعالجة الرئيسي لبرنامج Excel يكون محظوراً بالفعل في انتظار إرجاع الصيغة، مما يعني أنه يجب توجيه الاستدعاء مباشرة إلى خيط المعالجة المحظور.

حاولت الأكواد القديمة التمييز بين هاتين الحالتين عن طريق التحقق مما إذا كان قد تم إرسال إشارة بحدث ما، لكنها اعتمدت على مؤقت Sleep(1000) معيب. نظراً لأن استدعاء R يصل في غضون مللي ثانية واحدة تقريباً، فإن العلامة كانت لا تزال تشير بشكل غير صحيح إلى "استدعاء وحدة التحكم" للثانية الكاملة الأولى. تم توجيه الاستدعاء إلى مثيل Excel الذي كان في منتصف عملية حسابية، مما تسبب في انتظار كلتا العمليتين لبعضهما البعض إلى الأبد. يزيل الإصلاح التخمين الزمني تماماً؛ حيث تسجل الوظيفة الإضافية الآن معرف خيط المعالجة الرئيسي لبرنامج Excel عند بدء التشغيل لتوجيه عمليات الاستدعاء بشكل قاطع.

تحديث وحدة التحكم وبيئة البناء

بالإضافة إلى محرك الحساب الأساسي، تلقت وحدة تحكم BERT نفسها تحديثاً هائلاً. تم بناء وحدة التحكم على بيئة Electron، لكن الإصدار القديم كان عالقاً في إصدار Electron 1.8 منذ عام 2017. يرفع الإصدار الجديد البيئة إلى إصدار Electron 44، مما يجعلها تتماشى مع معايير أمان Chromium الحديثة ويُحدّث محرر Monaco وتكاملات TypeScript.

أدت هذه القفزة الهائلة في الإصدارات إلى تعطل وظيفة الحافظة، حيث أسقط متصفح Chromium دعم أمر execCommand منذ فترة طويلة. اضطر المطورون إلى تنفيذ وربط إجراءات القص والنسخ واللصق وتحديد الكل يدوياً لضمان بقاء وحدة التحكم قابلة للاستخدام لكتابة الأكواد البرمجية.

بالإضافة إلى ذلك، تم تصحيح خطأ شديد في الأداء في نظام الإكمال التلقائي. في السابق، كان طلب الإكمال على رمز يطابق آلاف الرموز يؤدي إلى تعليق وحدة التحكم. تجاوزت حمولة البيانات قراءة قناة اتصال واحدة بحجم 64 كيلوبايت، مما تسبب في إسقاط الإطارات المقسمة بصمت. تمت إعادة كتابة كود القراءة لتجميع الرسائل متعددة الأجزاء بشكل صحيح، مما أدى إلى خفض أوقات الإكمال التلقائي إلى 28 مللي ثانية فقط حتى مع تحديد 5000 كائن.

كيفية إضافة وظائف التوثيق الذاتي

تُعد القدرة على جعل دوال R توثق نفسها داخل برنامج Excel إحدى أقوى الميزات الجديدة في هذا التحديث. في السابق، كانت دوال R المخصصة تظهر كصيغ فارغة. الآن، يمكنك إرفاق أوصاف تملأ مربع حوار وسيطات الدالة (Function Arguments) الأصلي في برنامج Excel.

لتمكين ذلك، تحتاج ببساطة إلى تعيين سمة description لدالة R المُصدّرة. يصف العنصر الأول الدالة نفسها، بينما تصف العناصر اللاحقة الوسيطات بالترتيب. يمكنك أيضاً تعيين سمة category لتجميع الدالة بشكل منطقي.

TestAdd 

بمجرد الحفظ، تقوم أداة BERT تلقائياً بإعادة قراءة الملف وتسجيل البيانات الوصفية. للحصول على التلميح الرمادي المضمن الذي يتبع كتابتك في شريط الصيغة، يتكامل التحديث مع إضافة Excel-DNA IntelliSense. تقوم أداة BERT الآن بإنشاء ملف XML المطلوب تلقائياً وتوفر ملف .xlam فارغاً لضمان اكتشاف الوظيفة الإضافية IntelliSense لتوثيق R المخصص وعرضه.

مستقبل صيانة البنية التحتية مفتوحة المصدر

يسلط إحياء أداة BERT الضوء على نقطة ضعف حرجة في مسارات بيانات الشركات: الاعتماد على مطورين فرديين للبنية التحتية الأساسية. عندما تنحى المؤلف الأصلي، تدهورت أداة قيمة للغاية ببطء بسبب التحولات الطفيفة في واجهات برمجة التطبيقات في لغتي R و Excel. إن حقيقة أن ملف رأس تم تحريره يدوياً على الجهاز المحلي لمطور واحد منع أي شخص آخر من تجميع المشروع لسنوات هي تذكير صارخ بهشاشة مسارات عمل البناء المحلي.

من خلال نقل عملية التجميع إلى بيئات تشغيل GitHub Actions، يضمن هذا التفرع عدم ارتباط المشروع ببيئة سطح مكتب واحدة. هذا التحول إلى خطوط أنابيب النشر المؤتمتة (CI/CD) ليس مجرد وسيلة راحة؛ بل هو آلية بقاء للجسور مفتوحة المصدر. إنه يضمن أنه مع استمرار تطور لغة R نحو الإصدار 5.0، يمكن صيانة تكامل Excel واختباره ونشره بواسطة المجتمع دون الاعتماد على نقطة فشل واحدة.

هل أعجبك هذا المقال؟
Advertisement

عمليات البحث الشائعة