ScriptKiddo, спасибо, надеюсь есть такой разъём на материнке (только вроде по нему чуть медленнее передача данных). Припаять - тоже мысль, но совершенно непонятно, как проблема могла повториться на уже новой, полностью заменённой материнке?
ScriptKiddo, я уже после совета здесь спросил там) Честно говоря, даже не знал, что есть русский форум Lenovo, всегда задавал вопросы на англоязычном, но там как-то мало чем помогли ранее.
Четыре года миновало с тех пор. В итоге да, взял AvalonEdit для отображения, ANTLER4 для парсинга кода, вместе получилась IDE, вполне быстрая, анализом синтаксиса по всему проекту, разными плюшками поиска, автозамены и пр. Проект правда в итоге закрыли, но это фриланс, нашел другие, тот же AvalonEdit потом встретил в опен-сорсном проекте (куда меня почему-то наняли за деньги): https://github.com/WildGums/CsvTextEditor
Радует, честно, что наши ребята делают такие продукты. Но честно говоря, не вижу конкурентных преимуществ, чтобы выбрать его. Он наверняка хорош, но есть еще множество других бесплатных открытых решений, с большой международной командой, где-то и корпорации поддерживают. И вообще, если речь не о чем-то вроде Joomla, то я воздержусь от бесплатного продукта, в наших реалиях это, увы, отсутствие гарантии что через месяц его не забросят. Зачем создавать еще один (100500-й) движок? Почему не направить свою энергию в развитие того, что есть? Или это новое несет какую-то уникальную фичу (тогда она должна быть сразу в лендинге видна).
xmoonlight, немного не соображу, это же не template а framework? Я в PHP и фронте не спец совершенно, мне нужен quickStart архив с шаблоном, развернул - и работает. Обычно для шаблонов такие сборки есть готовые, но тут сайт выглядит скорее как реклама платформы, нежели шаблона. А чем кстати Helix3 так хорош?
Может плагины нужны? Из коробки не работает. Сходил по ссылке, там есть live демо, не, не хочет по Ctrl+V из буфера брать картинку. Только выбрать на диске.
Arkadiy Parinov, когда система на продакшене, как без локальной базы? Сразу все изменения на бой? Надо же протестировать все. В Azure есть прям встроенный редактор запросов. Задача очень простая: обновить страницу (т.е. html, который лежит в базе как строка). Страница может быть большой, и не очень удобно ее текст вставлять прям в тело запроса (плюс, придется все кавычки экранировать). Удобно читать запрос их файла. Я могу это сделать на локальной базе. Обновить страницы, схему, все что надо, потом все проверить. И когда сайт протестирован - залить на Azure. Сайт залить легко. А вот базу - целая история.
xmoonlight: да я понимаю, вопрос не стоит юридически, или финансово (не докажу обратное - не заплатят), нет. Проект так-то закончен (и даже оплачен), просто у них возникли вопросы, сомнения, и мне бы хотелось помочь (если в моем коде ошибка - мой долг это исправить). У них в компании есть эксперт по работе мозга (они так говорят), он им выдал именно такую инфу.
xmoonlight: говорю же, источники по-разному все говорят. Может много факторов (шум, какая точка, состояние человека). Может сама методика измерения разная (но я не знаю иного способа, кроме как взять интеграл по кривой, ограниченный диапазоном частот). Нормальной ссылки так и не нашел.
Спасибо за ответ!
Хорошо, пусть будет так,
Project.Data.Contracts.IUser
Project.Data.Impl.User
WebApi.UserViewModel
Т.е. WebAPI-контроллер получает/отдает объекты UserViewModel (не уверен, кстати, в названии, ViewModel обычно для передачи в MVC View используются, а тут именно REST API).
Далее, мы из контроллера дергаем слой сервисов, который уже работает исключительно с IUser, поэтому либо придется перед этим прямо в контроллере сделать маппинг (через AutoMapper), либо передать этот UserViewModel, для чего сделать его наследником IUser. Это первое место, которое меня смущает. Маппинг может работать медленно, ну и не хочется в каждый метод контроллера тащить код маппинга. Может быть лучше все-таки унаследоваться от IUser, но это архитектурно не очень: прямая зависимость Presentation слоя от слоя Data (в обход сервисов). Хотя может это и норм.
Есть еще второй момент. В Project.Data.Impl есть database-specific класс User и репозиторий (к нему, или вообще на все объекты). Поскольку репозиторий реализует интерфейс из Project.Data.Contracts, он, естественно, принимает на вход IUser. Т.е. внутри метода репозитория, например, Create, нам приходит IUser, и нам надо перейти от него к User. Опять же, либо маппинг, либо через Reflection пройти по типам проекта и найти IsAssignableFrom. Но вот в моем случае с Dapper все еще печальнее: там не подсунуть Type, там именно generic, т.е. что-то типа db.Query($"SELECT * FROM {nameof(T)}").ToList();
где T - должен быть User. Там есть вторая форма без , работающая через dynamic, но боюсь это плохо скажется на производительности (да и типобезопасность страдает). Есть у меня одна идея, но у нее тоже имеется минус. Сейчас попробую кратко рассказать.
Репозиторий я сделал не generic-классом, а обычным классом с generic-методами. Знаю, так редко делают, но я вижу это удобным. Например, в каком-то сервисе, мне надо записать объекты двух разных типов. Сейчас я просто через constructor-injection получаю IRepository и его методы могу использовать для разных типов (repository.Get(), repository.Get()). А если параметризовать сам репозиторий, тогда придется заводить в сервисе два разных репозитория, для двух типов. А если типов 10? Неудобно. Но, зато, если сделать generic-class, тогда вопрос снимается, можно через DI-контейнер зарегистрировать нужную реализацию.
Сергей: понял, спасибо! А есть хоть примерное понимание, что при этом подают на вход нейронной сети? Я так понимаю, вход - это N переменных типа float в диапазоне [0..1]. Можно разложить сигнал на спектральные диапазоны, и подать нормированные значения амплитуд каждого из них (типа, альфа - 0.2, бета - 0.4, дельта - 0.1 и т.д.). Вот тут такое решение используют: ai2-s2-pdfs.s3.amazonaws.com/9ded/c198b4e9c1286a75...
Но как еще можно сигнал во временной области подать на НС - что-то даже идей нет. Ну а на выходе, как я понимаю, нужные нам состояния, например 4 выхода - это 4 направления движения, где 1 - туда и сработала команда.
Сергей: ну я примерно так и думал, а как тогда подобные устройства работают из коробки для разных людей, без обучения нейронной сети на каждом конкретном человеке?