Web التجميع في الإنتاج و "حقل الألغام" من Smart TV: مقابلة مع أندريه ناجح



الاهتمام بـ WebAssembly كبير ، ولكن حتى الآن نادراً ما تقابل أشخاصًا يستخدمون هذه التكنولوجيا في مشروع عامل. تطوير التطبيقات للتلفزيون الذكي هو أيضًا "جافا سكريبت غير عادي" ، عندما سمع الجميع عن شيء ما ، لكن القليل منهم جربه شخصياً.

يتمتع Andrei andreynagih Nagih بخبرة في كلا المجالين: كان يعمل سابقًا في تطبيقات التلفزيون الذكي لمشروع Peers.TV ، وفي الأشهر الأخيرة أصبح معتادًا على WebAssembly حتى أنه قدم تقريراً حول هذا الأمر في مؤتمر HolyJS الخاص بنا. وفي HolyJS البث عبر الإنترنت ، سألناه عن كليهما.

والآن قرروا أنه قد يكون من الممتع أيضًا لقراء هبر ، وقاموا بإعداد نسخة نصية من المقابلة.

(إذا كان شخص ما أكثر راحة مع تنسيق الفيديو ، فبدلاً من قراءة المنشور ، يمكنك مشاهدة الفيديو الأصلي .)

يوجين فيلينيري تريفونوف: لقد قمت بتقديم عرض تقديمي هنا حول WebAssembly - هل كان هناك العديد من أسئلة الجمهور ، وهل كانوا من "مهتمين من الناحية النظرية" ، أو هل سبق أن وجدت استخدامًا عمليًا؟

أندريه ناجيخ: بعد التقرير ، أجبت على أسئلة مختلفة تمامًا في منطقة المناقشة لمدة ساعة ، وأنا مندهش لوجود عدد كبير منهم عبر الطيف. في الأساس ، كانت الأسئلة من أولئك "الغريبين" ، لكن كان هناك أشخاص يستخدمونها بالفعل. ما يثير الدهشة ، لأن هؤلاء الناس قليلون. كانت هناك أسئلة عملية للغاية.

يوجين: في السابق ، كانوا يقولون عن WebAssembly "بمجرد أن نضجت وأصبحت قابلة للتطبيق." والآن التكنولوجيا هي كيف "ناضجة"؟

أندري: إن التكنولوجيا نفسها تعمل بالفعل بالفعل ، ويمكن استخدامها في الإنتاج. نحن نستخدمها. لكن المشكلة تكمن في الأدوات. المترجم نفسه جيد جدًا ، حيث اتضح أنه أقدم من التقنية نفسها - إنه متوفر من الإصدار السابق ، مع asm.js. لكن أدوات التصحيح ، وخرائط المصدر ، المصحح - هذا لا يزال صعبا. أعتقد أنه في العام المقبل أو اثنين من المتصفحات سوف تسحب هذه النقاط.

يوجين: وبسبب ما تحتاجه في البداية WebAssembly - ما هو نوع المشروع ، وما فائدة هذا؟

أندرو: أحد مشاريعنا ، ByteFog هو تقنية لتسليم محتوى الفيديو P2P. ربما لدينا حالة المستخدم المثالية التي يمكنك التفكير في WebAssembly. لقد كان لدينا بالفعل قاعدة كبيرة للرموز في C ++ ، ولم نكن نريد إعادة كتابتها إلى لغة أخرى ، ونحن في حاجة إليها في المتصفح. لذلك ، يبدو أن هذه التكنولوجيا تناسب مائة بالمائة هنا.

في البداية اعتقدنا أننا سنأخذها ، فقط قم بتجميعها وستعمل. لكن ، بالطبع ، لا يحدث هذا في الحياة ، ولهذا السبب وُلد هذا التقرير عن أشعل النار ، وفي الواقع ، حول كيفية جر كل شيء إلى الإنتاج.

أوليغ أوليغشير تشيروخين: وما هي المشاكل الرئيسية التي نشأت؟

أندرو: المشكلة الرئيسية هي أنه ليس لدينا إمكانية الوصول إلى النظام. كان لدينا تطبيق أصلي ، يمكن أن يفعل أي شيء. عندما ننقلها إلى المتصفح ، لا يمكننا فعل أي شيء خارج JavaScript. وتحتاج إلى التعايش معه بطريقة أو بأخرى ، تحتاج إلى استخدام واجهات برمجة التطبيقات للمستعرض.

استغرقت عملية نقل طلبنا ، بشروط ، ثمانية أشهر. صحيح ، خلال هذه الفترة فعلنا إعادة بيع جيدة لقاعدة الكود لدينا ، والتي ، بشكل عام ، جيدة. والآن يمكننا نقله في مكان آخر.

أوليغ: لقد تم ذكر Tulling بالفعل ، ولكن هل من الممكن بمزيد من التفاصيل؟ تصحيح الأخطاء ، تتبع ، التنميط ، هذا كل شيء.

أندرو: باختصار ، كل شيء سيء. ولكن هناك ومضات صغيرة من الأشياء الجيدة.

حسنًا ، لقد استقر المترجم بشكل أو بآخر: إنه Emscripten (أتحدث عن C ++ ، في أوقات تشغيل أخرى - Rust ، Go ، Kotlin / Native - بطريقة مختلفة).

تصحيح الأخطاء: يدعم Firefox خرائط المصدر ، والتي في حد ذاتها ليست سيئة. يسمح لك Google Chrome فقط برؤية رمز المجمّع ، ويمكنك وضع نقاط توقف هناك ، لكن هذا صحيح.

يعمل الملف التعريفي بشكل أفضل في Firefox ، في Chrome بشكل أسوأ قليلاً. الفرق هو أن فايرفوكس يزيل الأسماء ، أي يجعلها كما هي في الكود المصدري. يعرض Chrome أسماءًا مشوهة ، وتحتاج إلى التحديق لفهم ما هو عليه.

أوليغ: كيف يتكيف الناس من JavaScript إلى C ++ والعكس؟

أندري: ربما ، يمكنك أن تنظر إلي هنا - في البداية الواجهة الأمامية ، التي لمست الآن الرمز الأصلي. لكن ، لأكون صادقًا ، حتى قبل المشروع ، كنت أرغب في محاولة تبول شيء ما أصليًا. لذلك ربما لست ممثلًا للغاية.

تحدثنا كثيرًا مع زميلي Yura ، الذي يتحدث في المشروع على جانب C ++: أخبرني عن "الإيجابيات" ، وأخبرته عن JavaScript. وكان مهتمًا بـ JavaScript. صدفة - عشرة من أصل عشرة: مواطن يريد جافا سكريبت لتعلم عندما كان؟ ولدينا فريق جيد.

لا يزال هناك شخص ثالث - هذا هو Kolya ، المهندس المعماري الذي نظر بشكل عام إلى رمز المجمّع وقال: "الرجال ، يمكن تصحيحه على أي حال. انظروا ، كل شيء واضح: هذه آلة مكدسة ، وهنا نعمل مع الذاكرة ، هنا حسابي ... شباب ، لماذا نحتاج إلى خرائط المصدر؟ " حسنًا ، إنه يعرف كيفية الكتابة للأنظمة المدمجة ، وفي وقت فراغه يفعل ذلك.

أوليغ: وهل كان لديك أي مفاجآت خاصة من C ++: من اللغة ، من قابليتها للاستخدام ، العمل معها؟

أندريه: حسنًا ، بالطبع ، كنت مستعدًا لهذا. المفاجأة الأكثر أهمية هي أنه بعد التحدث مع الإيجابيات خلال المشروع ، أدركنا أن JS و C ++ لديهما الكثير من القواسم المشتركة. يبدو أن لغات مختلفة تماما ، ولكن يمكنك العثور على نقاط التقاطع. يمكنك حتى تقديم تقرير منفصل عن هذا الموضوع ، وسوف تحتاج إلى التفكير فيه.

يوجين: والآن ، بعد واحد والآخر ، ماذا تريد أن تكتب؟

أندرو: في الواقع ، لست مستعدًا للكتابة في إنتاج C ++. أود أن أفعل شيئًا على ذلك لنفسي. لكن جافا سكريبت - أين تذهب؟

أوليغ: وماذا عن حقيقة أن C ++ سريع ، مع مجموعة من الميزات الرائعة مثل القوالب؟ هل يمكن أن تساعد القوالب الواجهة الأمامية عند كتابة بعض التعليمات البرمجية فائقة القياسية؟

أندريه: هناك مثل هذه النكتة: "إذا كانت لديك مشكلة وترغب في حلها باستخدام تعبير منتظم ، فتهانينا ، لديك الآن مشكلتان". لدي شعور بأن هناك شيء مشابه مع القوالب. في مشروعنا ، نحاول عدم استخدام القوالب ، فالمهندس المعماري مقاوم للغاية عندما يحاول مطورو C ++ تنفيذ شيء هناك. تكمن المشكلة في تصحيح الأخطاء: من غير الواضح أبدًا أين حدث الخطأ بالضبط.

أوليغ: هذا ، ليس من الواضح ما يحدث في الكود الذي تم إنشاؤه؟ لا يستطيع بناء خريطة المصدر إلى المصدر؟

أندرو: بقدر ما أعرف ، حتى في لغة C ++ الأصلية باستخدام القوالب ، يعد تصحيح الأخطاء أمرًا صعبًا. عندما نسحبه تحت WebAssembly ، سنواجه مشكلات في تصحيح الأخطاء ضمن WebAssembly. لذلك ، أعتقد أنه سيكون جحيمًا تمامًا. (ينظر بعناية إلى الكاميرا) الأطفال ، لا تستخدم قوالب C ++!

أوليغ: بدون قوالب ، سيتحول إلى C. سيكون من الممكن أن تكتب في C. النقي

أندرو: لكن ماذا عن الأشياء؟

أوليغ: حسنًا ... "C مع فصول" ، نعم. أعتقد فقط أن كتابة التعليمات البرمجية في C مع الفئات وفي C ++ الاصطلاحية مع القوالب طريقتان مختلفتان تمامًا.

أندرو: نعم ، هذا ممكن.

أوليغ: السؤال الفلسفي: ألا تعتقد أنه عند إضافة WebAssembly إلى المتصفحات ، يتم فتح بوابة إلى الجحيم؟

أندرو: يبدو كذلك. لأنه الآن ، على الأرجح ، سيكون من المألوف أخذ أي من المكتبات أو برامج C ++ التي تمت كتابتها لكامل وجود C ++ ، حاول تجميعها في المستعرض ومعرفة ما يحدث. لقد أظهرت اليوم عرضًا تجريبيًا لنظام التشغيل Windows 2000 في المتصفح.

أوليغ: أعني ، هل هذا مجرد نظام تشغيل Windows 2000 كامل؟

أندرو: نعم ، هذا هو نفس نظام Windows 2000 ، الذي كان منذ 18 عامًا وكان بحاجة إلى جهاز كمبيوتر كامل لتشغيله - والآن يحتاج Chrome إليه.

أوليغ: وماذا عن الأشياء التي تتطلب وضع kernel ، هل هذا كل شيء؟

أندرو: تعمل في محاكي QEMU ، وتم استضافتها شخصيًا بواسطة WebAssembly بواسطة Fabrice Bellar (مؤلف كتاب QEMU). بالطبع ، لا يمكنك الوصول إلى نظام الملفات ، الشبكة. ولكن هذا هو نظام التشغيل Windows 2000 ، حيث يبدأ ، ينتشر ، وكل شيء موجود. يمكنك أن ترى.

أوليغ: دعنا ننتقل إلى موضوع تطبيقات التلفزيون الذكي. بالمناسبة ، يمكنك القيام بشيء مثير للاهتمام مع WebAssembly هناك؟

أندرو: سيكون من الممكن إذا تم دعمه هناك. ما هي مشكلة التلفزيون الذكي؟ يشبه هذا التطور تطوير الواجهة الأمامية قبل عشر سنوات ، لأنه لا يتم تحديث أجهزة التلفزيون الذكية. اشترى رجل جهاز تلفزيون وعلقه على الحائط ، وكان معلقًا هناك لسنوات.

أوليغ: ولكن لدي باستمرار هناك "الانتظار ، يتم تحميل البرامج الثابتة." يغضب بالفعل.

أندريه: ربما يتم تحميل البرنامج الثابت ، لكن ، حسب علمي ، فإنه لا يقوم بتحديث النظام مباشرة ، المتصفح. نتيجةً لذلك ، ما زلنا ندعم أجهزة التلفزيون منذ عدة سنوات ، والتي يظهر عليها المتصفح Chrome 5.

أوليغ: حتى لا أتذكر ذلك.

أندرو: لا أتذكر ذلك أيضًا. يعد تطوير التلفزيون الذكي ، وخاصة القديم ، حقل ألغام ، مثل الواجهة الأمامية لحرب المتصفح.

أوليغ: إذن ، كان عليك عمل تخطيط عبر متصفح فائق ، والذي سيعمل على كل من الإصدارات القديمة والإصدارات الجديدة؟

أندرو: نعم. في الواقع ، لا تكمن المشكلة في التخطيط بقدر ما هي في جافا سكريبت - عدم التوافق من خلال واجهة برمجة التطبيقات ، والآن لن أذكر كل شيء.

أوليغ: وماذا عن المتصفحات الأخرى التي تريد استخدامها على التلفزيون الذكي ، ولكن ليس كذلك؟

أندرو: مليون الأشياء ، بدءا من الثنيات (وليس حتى جافا سكريبت) وتنتهي مع WebRTC. ByteFog يستخدم WebRTC. سيكون أمرا رائعا إذا سحبنا الشفرة التي لدينا بالفعل على التلفزيون الذكي ...

يوجين: وإلى جانب المشكلة المذكورة ، تطوير التلفزيون الذكي - كيف يبدو؟ ماذا كانت الأحاسيس؟

أندرو: في بعض الأحيان بدا أن مطوري متصفحات Smart TV لم يعجبهم المبرمجون الذين طوروا تطبيقات للتلفزيون الذكي ، لأن أدوات تصحيح الأخطاء كانت سيئة للغاية ، لم يكن هناك عمليا أي منها. هذا لا ينطبق على منصات Tizen و webOS الحديثة ، لقد حققوا نتائج أفضل هناك. لكنني فعلت هذا في وقت سابق ، ثم كانت هناك منصات قديمة ، وكان كل شيء سيئًا هناك. كانت أفضل أداة لتصحيح الأخطاء هي weinre ، وهي ليست مصحح أخطاء بالفعل - لا يمكنك إيقاف JavaScript هناك ؛ هذا هو نوع منفذ Chrome DevTools الذي يعمل على مآخذ الويب. بشكل عام ، كان من الممكن تصحيح التنسيق ، ولكن مع جافا سكريبت كان من المستحيل عملياً فعل أي شيء. بطريقة ما عشنا.

أوليغ: ولكن لماذا التصحيح على التلفزيون الذكي نفسه ، إذا كنت تستطيع تشغيله في متصفح؟

أندرو: في المتصفح ، لدينا جافا سكريبت ، وهناك واجهة برمجة التطبيقات التي يعطينا المتصفح. هذان شيئان مختلفان. وبالمثل ، على التلفزيون لدينا JavaScript ، لدينا API من محرك المتصفح ...

أوليغ: على الأرجح ، هذا هو WebKit.

أندرو: نعم ، كقاعدة عامة. وهناك فئة أخرى من واجهات برمجة التطبيقات - تلك التي توفرها منصة هذا التلفزيون. بادئ ذي بدء ، هذا هو لاعب ، ثم ميزات أخرى - التحكم عن بعد وهلم جرا. لن تكون واجهات برمجة التطبيقات هذه في المتصفح.

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

أوليغ: وكم عدد المنصات التي تعين عليك التعامل معها ، ومع مرور الوقت أصبحت أصغر أو أكبر؟

أندريه: عندما كنت مشتركًا في Smart TV ، كان هناك انتقال للمصنعين من أنظمة التشغيل القديمة ، والتي كانت تسمى Linux بشكل مشروط ولكل منها صلصة خاصة بها ، إلى بعض الأنواع الجديدة. ثم اضطررنا إلى كتابة ثلاثة تطبيقات مختلفة - من أجل Samsung و LG و Panasonic. نسخ هذه التطبيقات ، نسبيا ، رمز. ثم يتم إصدار الأخبار بشكل متزامن تقريبًا أن Samsung تتحول إلى Tizen ، وتقوم LG بالانتقال إلى webOS ، وباناسونيك تنتقل إلى Firefox OS (بعد ذلك لم تنجو ، وباناسونيك الآن مفترق).

بشكل عام ، يبدو أن الجميع يغيرون المنصة - لماذا لا يتلاقون على منصة واحدة؟ سيكون أفضل للجميع ، خاصة للمطورين: سيكون هناك المزيد من البرامج ، سيتلقى المستخدمون برامج أكثر فائدة. لكن لا ، ما زلنا نكتب تطبيقات مختلفة.

أوليغ: هل من الممكن ملء بطريقة ما على جميع المنصات؟

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

أوليغ: وهناك أجهزة تلفزيون أندرويد؟

أندرو: هناك ، ونوعان. كيف فعلت ذلك من قبل؟ لقد أدخلنا نظام Android منتظمًا في التلفزيون ، ودعنا نذهب إليه. ثم صنعت جوجل فرعًا خاصًا من Android TV ، تم تحسينه بشكل أفضل مع D-Pad ، أي جهاز التحكم عن بُعد. هناك أيضا هذه التلفزيونات. لكن هذه قصة منفصلة ومتجر منفصل.

وإذا فاز الجميع في أجهزة Android المحمولة واستقرت مجموعة متنوعة من الشركات المصنعة على نظام التشغيل هذا ، فلن تتمكن Google من فعل ذلك مع أجهزة التلفزيون. بدلاً من أن يقتصر كل شيء على نظام أساسي واحد ، يوجد واحد آخر ، كما في صورة xkcd.



Eugene: لدي تلفزيون تحت تلفاز Android الخاص بي مع شاشة 4K ، لكنه يقبل 4K حقًا من مدخل HDMI ، لكن جهاز Android المدمج موجود في 720p. لماذا يحدث هذا؟ نظرًا لأن التلفزيون ملائم للميزانية وفقًا لمعايير 4K ، فهل من المحتمل أن تقوم الشركة المصنعة بالتوفير على الأجهزة؟

أندريه: نعم ، أعتقد ، هنا يعارضون حقيقة أن نظام التشغيل لا يمكنه تقديم صورة 4K على هذا الجهاز. في الواقع ، هذا موقف شائع عندما لا يستخدم Smart TV (أي ، الجزء الموجود على التلفزيون الذي يأتي من التطبيقات) دقة ملء الشاشة. تم تسريب FullHD إلى HD Ready ، و 4 K إلى FullHD أو حتى 720p. هذه لحظة مثيرة للاهتمام عندما يتعذر علينا عرض محتوى 4K على تلفزيون 4K ، على الرغم من أن لدينا كل من التلفزيون والمحتوى.

غالبًا ما تحتوي أجهزة التلفزيون على واجهة - وهذا هو ، للأسف ، آفة منصات التلفزيون الذكية. علاوة على ذلك ، في Yandex.Market ، لا تضع علامة على "تلفزيون لن تبطئ" وتصفيته. على ما يبدو ، يبقى أن يأتي إلى المتجر واختيار هناك.

أوليغ: وكيف يؤثر هذا على تطوير التطبيق؟ إذا قمت بإضافة الكثير من divs ، هل يصبح التطبيق أبطأ وأبطأ؟

أندرو: بالطبع. إذا كنت بحاجة إلى تقديم قائمة كبيرة ، فيجب عليك أن تحرفها وتجعلها ليست كلها ، ولكن في أجزاء. يمكن أن يكون لدينا مائتي منهم في قائمة القنوات ، ولم نتمكن من تقديم القائمة بأكملها - ثم كان لديه الفرامل عند التمرير.

أنا أتحدث عن الوضع منذ عامين. على أجهزة التلفزيون التي يتم إصدارها الآن ، يمكن أن تكون الأمور أفضل بكثير. لكن ، مرة أخرى ، نادراً ما يغير الناس أجهزة التلفزيون.

أوليغ: ما رأيك ، ما هو مستقبل كل ما نراه الآن في التلفزيون الذكي؟

أندرو: أنا متشائم. آمل ألا تتحقق توقعاتي ، لكننا رأينا انخفاض التكنولوجيا ثلاثية الأبعاد على أجهزة التلفاز ، عندما قالت جميع الشركات المصنعة: "حسنًا ، لا أحد يشتري هذا ، هذا ليس عاملاً رئيسًا عند اختيار الجهاز." يبدو أن التلفزيون الذكي يمكن أن يعاني هذا المصير ، على الرغم من أنني لا أريد ذلك.

أوليغ: وما هو النمط الرئيسي لاستخدام هذا الشيء إذا لم يكن لديك تلفزيون ذكي؟ خذ جهاز كمبيوتر كبير الدهون والتمسك به على التلفزيون؟

أندرو: كمبيوتر كبير ، أعتقد أن أحدا لن يلتصق. قد تكون وحدات التحكم هي أفضل خيار ، ولكن يوجد بين أجهزة التلفزيون الذكية وأجهزة التحكم المشتركة شيء واحد: التحكم عن بعد. وجعل التحكم عن بعد جيدة أمر صعب للغاية. في بعض الأحيان ، يصنعون عصا التحكم باستخدام مقياس التسارع ، أي أنهم يقومون بتطبيق التحكم بالإيماءات أو محاكاة الماوس ، لكن هذا بعيد عن المثالية. بشكل عام ، تكمن مشكلة التلفزيون الذكي في منطقة UI / UX. في جزء منه ، يمكن للتحكم الصوتي أن يساعد تلفزيون UX - على Peers.TV ، وهو مدعوم باستخدام الهاتف الذكي للمستخدم ، والآن نحن نعمل على جهاز تحكم عن بعد خاص مع ميكروفون.

يوجين: نعم ، أرى أن Google تقود التلفزيون بجد في اتجاه التحكم الصوتي. في حين أن هذا يحدث مع نجاح متفاوت. ولكن بعد ذلك ننهي المحادثة مثل هذا: دعونا نأمل في المستقبل القريب أن يكون كافياً للمشاهدين ليقولوا "ابدأ في بث HolyJS من أجلي"!

إذا كانت لديك أي أسئلة أثناء القراءة حول WebAssembly أو Smart TV ، فاطرح Andrey في التعليقات.

وانتبه أيضًا أنه في الفترة من 24 إلى 25 مايو ، ستُعقد HolyJS في سان بطرسبرغ. لم يتم الإعلان عن برنامجها بعد ، ولكن من المحتمل أن يكون هناك أيضًا مكان لجافا سكريبت غير نمطي يتجاوز الحد المعتاد للواجهة الأمامية - وأصبحت التذاكر أغلى تدريجًا.

Source: https://habr.com/ru/post/ar435976/


All Articles