Перейти к содержимому

Open

Фотография

Рефакторинг софта TrueSpectrum


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 04 Июнь 2020 - 12:02

Добрый день, коллеги.
 
Наши светильники BEAMS используют множество ноу-хау, которые делают их свет лучшим из всего, что есть сейчас на рынке. Более того - они же позволяют создание светильников, максимально приближенных к идеалу, насколько это вообще возможно на данном этапе развития технологий.
 
Один из ключевых компонентов светильников - контроллер TrueSpectrum. Отличительная его особенность от всех остальных контроллеров светодиодного света, без единого исключения, в том, что он построен на базе полноценного, хоть и не очень мощного по нынешним временам, компьютера. У него на борту полноценная ОС Linux, а также куча разного софта, необходимого для успешной работы устройства. Всё в контроллере TrueSpectrum подчинено одной цели - пользователю должно быть легко и удобно. Всё сложности должны быть от него спрятаны. То есть все сложности работы с контроллером максимально перекладываются с пользователя на нас, разработчиков. Таким образом, софт контроллера TrueSpectrum получился крайне, просто чудовищно, сложным в разработке.
 
Отдельная и длинная история, почему исторически софтовая парадигма сложилась так, как сложилась. Она выходит за рамки форума в принципе, и я бы не хотел туда углубляться. Скажу только, что некоторые решения, принятые 5 лет назад, осложняли нам жизнь до сих пор. В результате контроллер отлично работал с одиночным светильником, но групповое управление у него работало не так хорошо, как бы нам хотелось. Поэтому было принято решение сделать рефакторинг софта TrueSpectrum. То есть, практически полностью его переделать.
 
Рефакторинг - занятие не только сложное и затратное во всех смыслах, но и очень муторное. По сути дела, приходится "ломать неправильно сросшееся", что всегда непросто... Но - мы хотим, чтобы наши светильники были максимально близки к идеалу, насколько это возможно в принципе. Поэтому мы делаем рефакторинг уже некоторое время. В этой теме я буду обозначать реальные, видимые глазом бенефиты, которых удалось достичь на этом пути. Когда их наберётся достаточно много, мы сделаем релиз новой прошивки, которую все желающие смогут установить.
 
Я постараюсь собрать все значимые новости в этом посту. Итак, первый пошёл!
 
1. Загрузка интерфейса контроллера стала быстрее примерно в 10 раз. 
 
Мой системщик даже перевыполнил план :) Сегодня было проведено тестирование ряда сетевых функций. В частности, сканирования сетей. Оно также стало в разы быстрее. Итак, посему - второе улучшение в списке.
2. В несколько раз ускорено сканирование сетей. Чем сетей больше, тем больше ускорение по сравнению с тем, что было до рефакторинга.
 

 

В видео неоднократно показывается загрузка интерфейса, чтобы было понятно, что такая высокая скорость - не уникально, а обычно. Также показывается заход как с URL, так и с IP адреса.


  • kuzia2k это нравится

#2 huhrik

huhrik

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 1 152
  • Меня зовут:Михаил
  • Откуда:Москва, САО

Отправлено 04 Июнь 2020 - 16:57

Это на новых платах, которые приедут? Или на всех ранее выпущенных будет? А когда будет?
  • DNK это нравится

#3 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 04 Июнь 2020 - 17:10

Это на новых платах, которые приедут? Или на всех ранее выпущенных будет? А когда будет?

Для всех контроллеров TrueSpectrum будет доступно это обновление. Даже для тех, которые выпущены 5 лет назад. Но - не все навороты будут там работать. В частности, кнопки там точно работать не будут.

 

Когда будет - пока не очень понятно. Возможно, мы будем "двигать планетную систему к другой звезде" (С)ЗТ в несколько приёмов, то есть будет выпущено несколько версий прошивки, пока не выйдет условно последняя. Посмотрим, как дело пойдёт. Многое пишется сейчас на языках низкого уровня, а это кропотливая работа. Зато - она даёт вот такие весомые плоды.

 

Сейчас допиливается часть, отвечающая за сканирование сетей. Десятикратного ускорения не обещаю, но в разы будет быстрее.



#4 Александр Авдеев

Александр Авдеев

    Продвинутый пользователь

  • Авдеевы
  • PipPipPip
  • Cообщений: 15 903
  • Меня зовут:Александр
  • Откуда:Ухта, Республика Коми

Отправлено 04 Июнь 2020 - 17:34

ЭТО то что, у меня уже стоИт? 

Прошивка v4.0.4.133r

BEAMS-R-6
 

Интерфейс менеджера грузится порядка 6-10 секунд.



#5 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 04 Июнь 2020 - 18:28

Не, это у тебя первый робкий шажок стоит :)

 

Сейчас потрясу инженера на предмет видео.



#6 Александр Авдеев

Александр Авдеев

    Продвинутый пользователь

  • Авдеевы
  • PipPipPip
  • Cообщений: 15 903
  • Меня зовут:Александр
  • Откуда:Ухта, Республика Коми

Отправлено 04 Июнь 2020 - 18:31

Ну тогда ждемс...


  • DNK это нравится

#7 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 04 Июнь 2020 - 21:23

Видео в первой теме разместил. Как мне кажется, весьма показательное.

 

Хочу сказать пару слов, почему я считаю такую быструю загрузку интерфейса контроллера очень важной. Дело в том, что я неоднократно слышал пожелания, чтобы появился нативный под каждую платформу софт TrueSpectrum. Основное, что хотели пользователи - ускорение отклика системы. Нативные программы всегда грузятся значительно быстрее, чем WEB-интерфейс. Сейчас мы сделали так, что WEB-интерфейс грузится так быстро, как не всякий нативный софт может :)



#8 aquanavt

aquanavt

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 539

Отправлено 04 Июнь 2020 - 22:51

он построен на базе полноценного, хоть и не очень мощного по нынешним временам, компьютера

Могу я поинтересоваться названием этого компьютера и ревизией если можно?

 

 

софт контроллера TrueSpectrum получился крайне, просто чудовищно, сложным в разработке

Cколько строк кода? Не считая шаблоны, верстку HTML, стили и т.д.

 

Чем сетей больше, тем больше ускорение по сравнению с тем, что было до рефакторинга.

Давайте для начала определимся, что происходит: рефакторинг или оптимизация? Это разные вещи.
Рефакторинг: ребята торопились к релизу, наделали костылей, подпорок, других нехорошестей в коде, увеличили технический долг, после релиза уменьшают технический долг, убирают костыли, покрывают код тестами и т.д. Рефакторинг не изменяет поведение приложения и не подразумевает (если конечно не совсем какие-то дикие вещи рефакторились) увеличения производительности, а вот уменьшить даже вполне может (не всегда)! Цель рефакторинга: сделать дальнейшую разработку более прогнозируемой/дешевой. Знать, сколько времени займет разработка конкретной функциональности, может быть очень полезно. Это для бизнеса.

Оптимизация производительности: ребятам сказали, что на максималках не пашет производительность недостаточная, предпринимаются шаги по увеличению оной. В этом случае могут быть задействованы любые, самые наигрязнейшие хаки, сейчас правда меньше этим занимаются, раньше частенько и недокументированные возможности железа использовались. Цель оптимизации: сделать довольным пользователя/снизить свои расходы (если к примеру речь идет об облачных сервисах). Обычно это для пользователя или для бизнеса.

 

Нативные программы всегда грузятся значительно быстрее, чем WEB-интерфейс.

Пользователи в большинстве своем (включая меня) не отличат закрученный в WebView "WEB-интерфейс" от нативного приложения, для них это и будет выглядеть как нативное приложение.


  • DNK и Pavel Pro это нравится

#9 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 04 Июнь 2020 - 23:29

Могу я поинтересоваться названием этого компьютера и ревизией если можно?

Это заказной микрокомьютер на SoC AR9331, на борту ОС OpenWRT.

 

Кстати, уникальным он был 5 лет назад. С тех пор подобных наделано уже столько, что и не сосчитать :) Почему я это вспомнил? Потому что он у нас появился немного раньше Black Swift. Разработки были параллельными. Но мы друг о друге не знали.

 

Cколько строк кода? Не считая шаблоны, верстку HTML, стили и т.д.

Не совсем корректный вопрос. Потому что собирается руками сама ОС, собираются многие приложения, например вебсокет. Плюс - часть написана под интерпретаторы, где это оправдано, часть откомпилирована. Если говорить только об коде в С, то это около 200 тысяч строк. Именно "около", потому что постепенно туда мигрирует всё больше и больше.

 

Давайте для начала определимся, что происходит: рефакторинг или оптимизация? Это разные вещи.

Рефакторинг. Вполне глубокий. В том числе замена частей, написанных на интерпретаторах (в частности, Питон) на С. Увеличение скорости работы - не всегда самоцель, но побочный эффект, безусловно, приятный.
 

Рефакторинг не изменяет поведение приложения и не подразумевает (если конечно не совсем какие-то дикие вещи рефакторились) увеличения производительности

Именно так. Функционал будет сохранён. А рефакторятся всякие вещи, трудно сказать, насколько они дикие, но застарелые - точно.
 

Пользователи в большинстве своем (включая меня) не отличат закрученный в WebView "WEB-интерфейс" от нативного приложения, для них это и будет выглядеть как нативное приложение.

Разумеется. Но - одно дело, когда приложение грузится 25 секунд, и другое - примерно в 10 раз быстрее :)



#10 aquanavt

aquanavt

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 539

Отправлено 05 Июнь 2020 - 00:01

Не совсем корректный вопрос. Потому что собирается руками сама ОС, собираются многие приложения, например вебсокет. Плюс - часть написана под интерпретаторы, где это оправдано, часть откомпилирована. Если говорить только об коде в С, то это около 200 тысяч строк. Именно "около", потому что постепенно туда мигрирует всё больше и больше.

Ядро Линукса (свежего) это порядка 25 миллионов строк, только ядро, без "приложений". Что там в OpenWRT используется, я не знаю, ну предположим 5 миллионов строк, если совсем древнее. "Ручная сборка", а скорее всего компиляция ядра под платформу, отношения к коду не имеет (там же не патчится это ядро, а лишь компилируется и линкуется). Вебсокет это не приложение, а протокол (печатный документ). Предполагаю, Вы имеете в виду, что дополнительно собираете библиотеки (сторонние) для включения поддержки вебсокета, возможно некий веб-сервер (готовый), не знаю, как это работает в этих железках.

200 тысяч строк кода на C это даже не неприлично много, это невообразимо много для такого приложения. Это скажем так сравнимо с количеством строк C кода в веб-сервере Nginx (на котором кстати и этот форум работает). Подозреваю, в эти 200 тысяч строк C кода также входят различные SDK и библиотеки.

 

К примеру, небезызвестная прошивка SSLAC-v0.36v1, код которой автор любезно открыл, это примерно 3 тысячи строк кода на C++ (примерно в 60 раз меньше, чем у TrueSpectrum), понятно что C дает определенный оверхед и сделано в TrueSpectrum больше, но не в 60 раз же.
 


  • Pavel Pro это нравится

#11 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 05 Июнь 2020 - 00:28

Ручная сборка", а скорее всего компиляция ядра под платформу, отношения к коду не имеет

Всё издали кажется проще. Простая компиляция ядра под платформу приводит к невозможности установить на него приложения, которые работали на предыдущей версии этой же ОС.
 

дополнительно собираете библиотеки (сторонние) для включения поддержки вебсокета

Да. И не только сторонние.
 

возможно некий веб-сервер

Да.
 

200 тысяч строк кода на C это даже не неприлично много, это невообразимо много для такого приложения.

Вам оно кажется простым? Тогда я расцениваю это как очень внушительный комплимент. Спасибо.
 

но не в 60 раз же.

Если вам интересно - познакомьтесь с функционалом TrueSpectrum поближе.



#12 Passattikk

Passattikk

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 254
  • Меня зовут:Дмитрий
  • Откуда:Минск

Отправлено 13 Август 2020 - 21:08

А можно мне такую прошивку?

#13 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 14 Август 2020 - 05:22

А можно мне такую прошивку?

Те, кто получали уже светильники новой партии, получили и бету софта, который является результатом частичного рефакторинга. Выпускать прошивку официально пока рановато. Может быть, на будущей неделе. Пожалуйста, подождите.



#14 Pavel Pro

Pavel Pro

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 14 766

Отправлено 09 Ноябрь 2020 - 18:38

Интересно, а куда делось моё июнбскле сообщение из этой темы где я спрашивал как скоро будут обновления софта для прожекторов?
Дима, ты что все втихаря стираешь?
Ого как.
Походу раздел вовсе становится неинформативнн так как владелец раздела чистит темы, причём похоже, что удаляются любые неудобные ему вопросы, даже те, на которые он отвечал.
Ого как!!!

#15 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 17 037

Отправлено 09 Ноябрь 2020 - 19:59

Интересно, а куда делось моё июнбскле сообщение из этой темы где я спрашивал как скоро будут обновления софта для прожекторов?

В этой теме нет ни одного удалённого сообщения. Ни мною, ни кем бы то ни было. Вообще. Можешь спросить у Николая, если мне не веришь.
 

Походу раздел вовсе становится неинформативнн

Походу твоя подозрительность уже руководит тобой :)
 

причём похоже

Говорят, полезно креститься, когда кажется ;)
 

Ого как!!!

Уот так уот! (С)Курицын






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных