Визуальный просмотр в реальном времени нужен. Нейрохирурги умеют реагировать на нужный паттерн на экране, лично убедился. И 32 бита — тоже не просто так придуманное требование; конечно, оно нужно больше для исследователей, чем для клинического применения, но всё равно нужно.
Пока что максимальный тест, который я гонял, длился только 7 часов. Я ж только взялся за работу, это первые судороги моего монстра Франкенштейна :-)
Windows в виртуальной машине рассматривался, но был отметён сразу, как только я сказал, что придётся запускать на одном компе две операционки и использовать программу, которая транслирует вызовы из одной в другую. Если запускать внутренний Windows на полный экран сразу при загрузке компьютера, то кто и как будет заботиться об обновлениях внешнего Linux? Он, вообще-то, почти напрямую к мозгам подключён, если оставить его без обновлений, FDA взвоет. Какие-то автоматические решения использовать? - Я не спец в безопасности Linux`ов, боюсь в такие вещи лезть... А если не грузить виртуальную машину сразу, клиенты увидят непривычный интерфейс, впадут в кому и откажутся работать. Мы уже тестировали систему с Linux`ом на студентах, они пугаются. И это закалённые пьянками студенты-медики! Каково будет взрослым именитым докторам?!.. :-)
И, кажется, Matlab, который они будут запускать из-под виртуальной Винды, чтобы обрабатывать результаты расчётов, может работать медленнее, чем в "настоящей" системе.
Использовался DSP фирмы Texas Instruments, C6678 "Keystone I". В нём 8 ядер. Одно ядро занималось тем, что получало данные от FPGA по PCIe, шесть занимались применением фильтров к полученным данным, восьмое отправляло всё это богатство в UI через обычный Ethernet. Решение отлично работало на 128 каналах, но уже при 512 каналах начало скрипеть сразу по нескольким параметрам: ширины канала Ethernet перестало хватать, скорости выполнения фильтров перестало хватать, памяти перестало хватать, скорость получения данных из FPGA была на грани допустимого. (Там был PCIe Gen. 1). Можно было заменить DSP на Keystone II или что-то более существенное, поднять скорость Ethernet до 10 гигабит в секунду, перейти на другое подключение, но это увеличивало стоимость продукта, а она и так не низкая. Потом возникла гениальная мысль: почему бы всё, что можно, не перевести на GPU, оставив CPU только менеджмент, и не воткнуть FPGA в слот PCIe компьютера напрямую? Это исключает дорогущий модуль с DSP и, теоретически, должно сильно уменьшить latency. Я взял под козырёк и начал копать в указанном направлении.
Задержка будет большой. Там одно из условий — задержка между генерацией в мозге сигнала определённого вида и отправкой стимуляции в мозг в одну миллисекунду. Определённый вид можно узнать только после фильтра высоких частот, то есть нужно получить данные, пропустить их через фильтр, наложить шаблон, получить соответствие и принять решение о стимуляции за миллисекунду.
Сейчас, в предыдущей версии, где фильтр выполняется на отдельном DSP, задержка 1.2 миллисекунды, и это абсолютный максимум, если сделаю хуже — продукт не выпустят.
Только Windows в принципе. На Linux можно было бы добиться результата с меньшим геморроем и с меньшим latency, но клиенты при слове Linux впадают в кому.
Хотя жалко, потому что нынешняя программа, в отличие от предыдущей, легко портируется на что угодно, а низкая задержка (latency) перед обратной стимуляцией в качестве реакции на определённый входящий сигнал невероятно важна. С Linux`ом мне удалось снизить задержу до 4 миллисекунд, что, в принципе, достаточно для предотвращения эпилептических припадков. Из-под Windows пока не получается снизить меньше чем 6 миллисекунд, это на грани для эпилепсии и слишком долго для болезни Паркинсона.
С другой стороны, я пока в самом начале разработки продукта, так что, может, удастся натянуть сову на глобус и добиться идеальной 1 миллисекунды между генерацией импульса в мозге и отправкой ответной стимуляции обратно в мозг.
Раньше, в предыдущей версии продукта, был отдельный DSP, без операционки вообще, который я программировал, и который выполнял три четверти работы. В новой версии от этого DSP отказались, потому что исчерпали его возможности, а более дорогой DSP ставить не хотят: цену надо снижать, а не увеличивать.
Мой любимый вид тетриса - DOSовская игра Blockout. Трёхмерный тетрис с видом сверху, цвет показывает высоту над дном стакана. Ух, сколько в неё было времени угроблено!..
Ну, вот лично мне с каким-нибудь докером было бы менее удобно, чем с обычным и привычным дескбаром. А кто хочет, может установить себе альтернативу. Придумают тоже, превью окон… :)
а второй кейс — ну во всех ОС есть сейчас разделение экрана, это очень удобно при работе с несколькими окнами одновременно. или если просто открыть 2 окна, то тем же одним кликом по панели задач ты переключаешься между окнами — в чём отличие от клика по табам?)
Разница огромная. Во-первых, тут не «два окна», тут «сколько угодно комбинаций по 2, 3 или больше окон». У меня во время приступов программизма открыто обычно 3 или 4 набора «заголовок-код», в случае использования внешней библиотеки ещё и её заголовок добавляется, так что получается 3-4 частично перекрывающихся (и поэтому одновременно видимых) набора по 2 или 3 окна. Никакими другими интерфейсами такого расположения не добиться. И уж тем более тайловые интерфейсы тут не могут быть конкурентами, потому что в них тратится место экрана на рисование краёв обоих окон, а в случае простого частичного перекрывания (как у меня один набор из двух или трёх окон частично перекрывает другой) — в области перекрывания есть только одна граница одного окна. Учитывая потенциальный вертикальный скролл-бар у левого окна, две границы — это довольно много.
В Гайке вообще намного проще работать, не разворачивая приложения на полный экран. С современными размерами экранов это не проблема, зато можно одновременно видеть несколько приложений без траты места на отрисовку границ окон. Дома я пользуюсь только Гайкой, и привычки потихоньку перетекают на рабочую Винду, — в Винде на работе я теперь тоже редко открываю приложения на полный экран и часто использую частичное перекрытие окон приложений.
Переключаться одним кликом через Deskbar можно только в том случае, если там включено автоматическое разворачивание аппликаций, как вот на этом скриншоте. А если оно выключено, как на этом скриншоте, то надо сначала щёлкнуть по Deskbar`у, выедет дополнительное подменю с окнами программы, и уже в нём щёлкать по нужному окну (и попробуй вспомнить нужное, если у них неинформативные заголовки). У меня Application Expander выключен, я практически им не пользуюсь, и поэтому получается два клика вместо одного плюс лишнее возюканье мышкой. Радикальный пример: два окна друг поверх друга в левом нижнем углу экрана с выключенным Application Expander`ом: двигаем мышу через весь экран по диагонали, щелчок по программе, передвижение курсора на название нужного окна, щелчок, возвращение курсора через весь экран по диагонали. Того же эффекта можно добиться в один клик и с меньшим движением мышки. Ну, или на клавиатуре жмякнуть Ctrl+Tab. Но там свои приколы: если у программы несколько окон, то надо будет ещё выбирать стрелочками, на какое из них перепрыгивать…
да и фиг чего перетащишь из окна в окно в таком случае.
Это общая проблема в Гайке. Очень мало приложений поддерживают BMessage с drag'n'drop`ом, потому что там начинается большая морока с определением типа приволочённых данных и затем перебор вариантов на тему «что с этим drag'n'drop`нутым контентом мы вообще сумеем сделать». Поэтому у меня, например, просто нет привычки перетаскивать что-то из окна одной программы в окно другой, я всегда пользуюсь буфером обмена.
Это очень удобно во время программирования. Присобачиваешь заголовок к файлу с исходником, налепляешь несколько файлов друг на друга, сортируя их тайтлы, в результате получаешь очень быструю и понятную навигацию. Безумно удобно, в других операционках мне этого не хватает. Те же терминалы — если не хочешь терять место экрана на полоску вкладок внутри окна с командной строкой, просто открываешь несколько терминалов, располагаешь их один поверх другого и расставляешь заголовки. В одном зовёшь make, дожидаешься окончания компиляции, в другом запускаешь программу и смотришь, с какой ошибкой она упала на этот раз :)
Одновременная работа над несколькими файлами с tabbed-интерфейсом становится очень лёгкой даже в случае работы в офисных программах. Можно разместить друг на друге редакторы таблиц и текста и переключаться из одного в другой одним кликом. Или я, например, когда пишу рассказы, использую эту фишку для одновременного гуглежа всяких технических деталей для рассказов. То есть у меня открыты одновременно LibreOffice и Web+, и я переключаюсь между ними при помощи заголовков.
В общем, жаль, что в других операционках этого нет.
Да, как уже было сказано, это вполне нормальное явление. Когда популярный ресурс «просто плеер» накрылся из-за непродлённого вовремя домена, думаю, пострадало больше людей. Уверен, что в 2009-м году, когда оплачивали лицензию, десять лет казались огромным сроком. Да и исходники остались, наверняка игру можно просто пересобрать.
В общем, не трагедия и даже не беда. В конце концов, кто сейчас играет в игры 2009 года… *Уменьшаю громкость, чтобы никто не услышал звуки первого «Prince of Persia» Джордана Мечнера, в который я режусь ежедневно*
Я понимаю основную идею, но нет, Windows — объективная необходимость, данная нам в ощущении :-)
Нет, так это не работает, увы. Медицинская техника всё-таки. Надо очень подробно рассказать, что там внутри.
Реально там 64-битный Intel i7-9700 TE и 16 гигов памяти (из которых я кусок отрезал под свои игрища).
Визуальный просмотр в реальном времени нужен. Нейрохирурги умеют реагировать на нужный паттерн на экране, лично убедился. И 32 бита — тоже не просто так придуманное требование; конечно, оно нужно больше для исследователей, чем для клинического применения, но всё равно нужно.
Пока что максимальный тест, который я гонял, длился только 7 часов. Я ж только взялся за работу, это первые судороги моего монстра Франкенштейна :-)
Windows в виртуальной машине рассматривался, но был отметён сразу, как только я сказал, что придётся запускать на одном компе две операционки и использовать программу, которая транслирует вызовы из одной в другую. Если запускать внутренний Windows на полный экран сразу при загрузке компьютера, то кто и как будет заботиться об обновлениях внешнего Linux? Он, вообще-то, почти напрямую к мозгам подключён, если оставить его без обновлений, FDA взвоет. Какие-то автоматические решения использовать? - Я не спец в безопасности Linux`ов, боюсь в такие вещи лезть... А если не грузить виртуальную машину сразу, клиенты увидят непривычный интерфейс, впадут в кому и откажутся работать. Мы уже тестировали систему с Linux`ом на студентах, они пугаются. И это закалённые пьянками студенты-медики! Каково будет взрослым именитым докторам?!.. :-)
И, кажется, Matlab, который они будут запускать из-под виртуальной Винды, чтобы обрабатывать результаты расчётов, может работать медленнее, чем в "настоящей" системе.
Использовался DSP фирмы Texas Instruments, C6678 "Keystone I". В нём 8 ядер. Одно ядро занималось тем, что получало данные от FPGA по PCIe, шесть занимались применением фильтров к полученным данным, восьмое отправляло всё это богатство в UI через обычный Ethernet. Решение отлично работало на 128 каналах, но уже при 512 каналах начало скрипеть сразу по нескольким параметрам: ширины канала Ethernet перестало хватать, скорости выполнения фильтров перестало хватать, памяти перестало хватать, скорость получения данных из FPGA была на грани допустимого. (Там был PCIe Gen. 1). Можно было заменить DSP на Keystone II или что-то более существенное, поднять скорость Ethernet до 10 гигабит в секунду, перейти на другое подключение, но это увеличивало стоимость продукта, а она и так не низкая. Потом возникла гениальная мысль: почему бы всё, что можно, не перевести на GPU, оставив CPU только менеджмент, и не воткнуть FPGA в слот PCIe компьютера напрямую? Это исключает дорогущий модуль с DSP и, теоретически, должно сильно уменьшить latency. Я взял под козырёк и начал копать в указанном направлении.
Так и было раньше. От этого решения отказались.
Задержка будет большой. Там одно из условий — задержка между генерацией в мозге сигнала определённого вида и отправкой стимуляции в мозг в одну миллисекунду. Определённый вид можно узнать только после фильтра высоких частот, то есть нужно получить данные, пропустить их через фильтр, наложить шаблон, получить соответствие и принять решение о стимуляции за миллисекунду.
Сейчас, в предыдущей версии, где фильтр выполняется на отдельном DSP, задержка 1.2 миллисекунды, и это абсолютный максимум, если сделаю хуже — продукт не выпустят.
Только Windows в принципе. На Linux можно было бы добиться результата с меньшим геморроем и с меньшим latency, но клиенты при слове Linux впадают в кому.
Хотя жалко, потому что нынешняя программа, в отличие от предыдущей, легко портируется на что угодно, а низкая задержка (latency) перед обратной стимуляцией в качестве реакции на определённый входящий сигнал невероятно важна. С Linux`ом мне удалось снизить задержу до 4 миллисекунд, что, в принципе, достаточно для предотвращения эпилептических припадков. Из-под Windows пока не получается снизить меньше чем 6 миллисекунд, это на грани для эпилепсии и слишком долго для болезни Паркинсона.
С другой стороны, я пока в самом начале разработки продукта, так что, может, удастся натянуть сову на глобус и добиться идеальной 1 миллисекунды между генерацией импульса в мозге и отправкой ответной стимуляции обратно в мозг.
Раньше, в предыдущей версии продукта, был отдельный DSP, без операционки вообще, который я программировал, и который выполнял три четверти работы. В новой версии от этого DSP отказались, потому что исчерпали его возможности, а более дорогой DSP ставить не хотят: цену надо снижать, а не увеличивать.
Мой любимый вид тетриса - DOSовская игра Blockout. Трёхмерный тетрис с видом сверху, цвет показывает высоту над дном стакана. Ух, сколько в неё было времени угроблено!..
В Гайке вообще намного проще работать, не разворачивая приложения на полный экран. С современными размерами экранов это не проблема, зато можно одновременно видеть несколько приложений без траты места на отрисовку границ окон. Дома я пользуюсь только Гайкой, и привычки потихоньку перетекают на рабочую Винду, — в Винде на работе я теперь тоже редко открываю приложения на полный экран и часто использую частичное перекрытие окон приложений.
Переключаться одним кликом через Deskbar можно только в том случае, если там включено автоматическое разворачивание аппликаций, как вот на этом скриншоте. А если оно выключено, как на этом скриншоте, то надо сначала щёлкнуть по Deskbar`у, выедет дополнительное подменю с окнами программы, и уже в нём щёлкать по нужному окну (и попробуй вспомнить нужное, если у них неинформативные заголовки). У меня Application Expander выключен, я практически им не пользуюсь, и поэтому получается два клика вместо одного плюс лишнее возюканье мышкой. Радикальный пример: два окна друг поверх друга в левом нижнем углу экрана с выключенным Application Expander`ом: двигаем мышу через весь экран по диагонали, щелчок по программе, передвижение курсора на название нужного окна, щелчок, возвращение курсора через весь экран по диагонали. Того же эффекта можно добиться в один клик и с меньшим движением мышки. Ну, или на клавиатуре жмякнуть Ctrl+Tab. Но там свои приколы: если у программы несколько окон, то надо будет ещё выбирать стрелочками, на какое из них перепрыгивать…
Это общая проблема в Гайке. Очень мало приложений поддерживают BMessage с drag'n'drop`ом, потому что там начинается большая морока с определением типа приволочённых данных и затем перебор вариантов на тему «что с этим drag'n'drop`нутым контентом мы вообще сумеем сделать». Поэтому у меня, например, просто нет привычки перетаскивать что-то из окна одной программы в окно другой, я всегда пользуюсь буфером обмена.
Именно поэтому в BeOS, например, не было многотабовых мессенджеров. Нет смысла, табы реализуются на уровне операционной системы.
Одновременная работа над несколькими файлами с tabbed-интерфейсом становится очень лёгкой даже в случае работы в офисных программах. Можно разместить друг на друге редакторы таблиц и текста и переключаться из одного в другой одним кликом. Или я, например, когда пишу рассказы, использую эту фишку для одновременного гуглежа всяких технических деталей для рассказов. То есть у меня открыты одновременно LibreOffice и Web+, и я переключаюсь между ними при помощи заголовков.
В общем, жаль, что в других операционках этого нет.
В общем, не трагедия и даже не беда. В конце концов, кто сейчас играет в игры 2009 года… *Уменьшаю громкость, чтобы никто не услышал звуки первого «Prince of Persia» Джордана Мечнера, в который я режусь ежедневно*