2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 13:16 


11/08/18
363
Добрый день,

есть вебморда научного аппарата на классическом htmp-css-js, но она получает извне довольно много данных, которые хочется отрисовывать и делать с ними статистику.

Нужна тотальная совместимость по всем браузерам.

На данный момент реализовано так, что куски этой вебморды написаны на вебассембли.

Недостатки такого решения
1. вебассембли конечно показывает под гигафлоп на топовых мобильниках, но, хочется больше,
2. в вебассембли нет научных библиотек, а надо конкретно хотя бы Lapack, и желательно еще чего, что есть в SciPy, например, и компилить все это барахло с сорсов в вебассембли довольно не комфортно.

Хочется заменть вебассембли питоном.

Скажите, пожалуйста, можно ли как-то исхитриться и вставить питоновский скрипт в веб морду, чтобы юзер, при загрузке этой веб морды во-первых, дал согласие, поставить у себя питон с библиотеками, а потом оно у него автоматически из браузера вызывалось и регулярно обменивалось данными внутри мобильника?

Нужна тотальная совместимость среди всех мобильников, планшетов и компов.

Спасибо!

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 13:22 
Аватара пользователя


29/05/17
806
ilghiz,
может это поможет: https://habr.com/ru/company/piter/blog/532454/

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 15:33 


11/08/18
363
Mental в сообщении #1565978 писал(а):
ilghiz,
может это поможет: https://habr.com/ru/company/piter/blog/532454/

Спасибо большое, Mental за содействие!

Как я понимаю, это транслятор питона в JS, а сам JS потом будет выполняться в браузере.

У меня довольно сложная вычислительная задача, которую я хочу решать на клиенте, ибо клиенты сейчас все довольно быстрые.

Если взять десктоповый браузер и в нем

1. на JS написать какую-нибудь простую математику, то можно наблюдать примерно 1-10 миллионов операций в секунду,
2. на вебассембли написать то же самое, то можно наблюдать 1-2 миллиарда арифметических операций в секунду (можно проверить на самописном тесте https://www.elegant-nmr.com/perf_test.html ) ,
3. но средствами NumPy на том же компе можно достигать 20-100 миллиарда арифметических операций в секунду.

В браузерах не старых многоядерных мобильников наблюдается практически такая же ситуация с числом арифметических операций.

Собственно за пункт 3 и идет борьба.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 16:43 
Аватара пользователя


29/05/17
806
ilghiz в сообщении #1565988 писал(а):
на JS написать какую-нибудь простую математику, то можно наблюдать примерно 1-10 миллионов операций в секунду

Можно использовать node.js, которая в свою очередь использует V8, который осуществляет компиляцию исходного кода JavaScript непосредственно в собственный машинный код, минуя стадию промежуточного байт-кода.
ilghiz в сообщении #1565977 писал(а):
Скажите, пожалуйста, можно ли как-то исхитриться и вставить питоновский скрипт в веб морду, чтобы юзер, при загрузке этой веб морды во-первых, дал согласие, поставить у себя питон с библиотеками, а потом оно у него автоматически из браузера вызывалось и регулярно обменивалось данными внутри мобильника?

Это - обычная Python программа, которая должна скачиваться и устанавливаться отдельно, но пользователь, как известно ленив.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 17:14 


11/08/18
363
Спасибо большое, Mental за советы!

Mental в сообщении #1565992 писал(а):
Можно использовать node.js, которая в свою очередь использует V8, который осуществляет компиляцию исходного кода JavaScript непосредственно в собственный машинный код, минуя стадию промежуточного байт-кода.

я где-то видел, что вебассембли как раз делает то же самое, что и Node.js, собственно поэтому он последнее время все менее и менее распространен. Поправьте, пожалуйста, если я не прав.

Mental в сообщении #1565992 писал(а):
Это - обычная Python программа, которая должна скачиваться и устанавливаться отдельно, но пользователь, как известно ленив.

то есть у меня одна дорога - делать апп для каждой платформы, втыкать их во все плейсторы, поддерживать кучу операционок...

Как раз этого хотелось бы избежать ибо нужна скорость разработки, а потенциальные тестеры сидят на совершенно разных платформах и мне будет их очень сложно убедить переползать ради моего агрегата на какую-то платформу, которую я буду им навязывать.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 17:22 
Аватара пользователя


29/05/17
806
ilghiz в сообщении #1565995 писал(а):
я где-то видел, что вебассембли как раз делает то же самое, что и Node.js, собственно поэтому он последнее время все менее и менее распространен. Поправьте, пожалуйста, если я не прав.

Я не работал с вебассембли поэтому ничего конкретного не подскажу, а платформа Node.js это тот же JS с кучей библиотек (в её терминологии пакетов).

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 17:25 
Заслуженный участник
Аватара пользователя


03/06/08
2320
МО
ilghiz в сообщении #1565995 писал(а):
делать апп для каждой платформы, втыкать их во все плейсторы, поддерживать кучу операционок...

Как раз этого хотелось бы избежать ибо нужна скорость разработки, а потенциальные тестеры сидят на совершенно разных платформах и мне будет их очень сложно убедить переползать ради моего агрегата на какую-то платформу, которую я буду им навязывать

Но Вы же хотите, чтобы расчёт производился на клиенте, а тогда какие варианты?
js за счёт заведения, а дальше гуляем на свои.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 19:52 


11/08/18
363
пианист в сообщении #1565997 писал(а):
Но Вы же хотите, чтобы расчёт производился на клиенте, а тогда какие варианты?
js за счёт заведения, а дальше гуляем на свои.

Спасибо большое, пианист за комментарий! Я разделяю ваши доводы и, кстати, ожидал такого комментария...

Но все-таки вебассембли - тоже за счет заведения едет, то есть попытки уже есть. Просто вебассембли довольно куцый, и за десяток лет существования он так и не оброс нужными библиотеками, вот поэтому и ищу альтернативу. То есть хочу гулять за счёт заведения, то бишь браузера. Мне фактически только лапак и Фурье надобно, остальное все свое есть на С, С++, и, при необходимости на питоне будет.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 22:04 
Заслуженный участник
Аватара пользователя


01/09/13
4656
ilghiz в сообщении #1565977 писал(а):
во-первых, дал согласие, поставить у себя питон с библиотеками

А ключи от квартиры не надо? ;-)

И зачем после этого "вебморда" и проблемы "что бы работало во всех браузерах"?

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 22:32 


11/08/18
363
Geen в сообщении #1566009 писал(а):
ilghiz в сообщении #1565977 писал(а):
во-первых, дал согласие, поставить у себя питон с библиотеками

А ключи от квартиры не надо? ;-)

И зачем после этого "вебморда" и проблемы "что бы работало во всех браузерах"?


Спасибо, Geen, за комментарий!

Питон со всеми библиотеками не я буду поддерживать, так? А вот доверие к тому, кто эти питоны разрабатывает и уже сколько-то на рынке будет выше, чем ко мне.

У меня стартап, голимый, и без стороннего финансирования. Но есть надежда уже скоро иметь готовую версию аппаратуры, которую хотелось бы обкатать на пользователях. Так как железка мне не дешева в производстве, я не готов отдавать ее кому не попадя, а кто попадя, будет вертеть носом. Заняться поддержкой всей и вся архитектурой я не готов, а средств вебассембли мне катастрофически не хватает. Очень надеюсь, что объяснил почему и как.

Может кроме питона есть какая-то другая альтернатива?

Geen в сообщении #1566009 писал(а):
проблемы "что бы работало во всех браузерах"?

Скажите, пожалуйста, а почему вы это проблемой назвали, ведь это - удобство, не так ли?

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение02.10.2022, 23:29 
Заслуженный участник
Аватара пользователя


01/09/13
4656
ilghiz в сообщении #1566011 писал(а):
А вот доверие к тому, кто эти питоны разрабатывает и уже сколько-то на рынке будет выше, чем ко мне.

Нет. Вопрос не доверия к питону, вопрос именно доверия к скриптам, которые этот питон будет исполнять (имея почти полный доступ к устройству).
И это тот же вопрос, по которому Ява-аплеты прикрыли...

ilghiz в сообщении #1566011 писал(а):
Скажите, пожалуйста, а почему вы это проблемой назвали, ведь это - удобство, не так ли?

У Вас много лишнего времени заниматься вёрсткой во всех браузерах? Если нет, то зачем Вам браузер вообще?

-- 02.10.2022, 23:34 --

И это я ещё не спрашиваю как Вы намерены организовать взаимодействие браузера и сторонней программы (питона, в данном случае)...

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение03.10.2022, 00:17 


11/08/18
363
Спасибо большое, Geen, что советуете!

Geen в сообщении #1566013 писал(а):
Нет. Вопрос не доверия к питону, вопрос именно доверия к скриптам, которые этот питон будет исполнять (имея почти полный доступ к устройству).
И это тот же вопрос, по которому Ява-аплеты прикрыли...

Это верно, но, грубо говоря, я ожидаю, что первые пользователи будут соглашаться - ведь они решили таки протестировать мое устройство!

А вот гемор по вхождению в appstore на всех платформах я хотел бы избежать, да и похоже при поддержке всех платформ (или почти всех) мне придется много разработческих лицензий покупать, вникать как этим пользоваться, портировать, и это - для меня просто не подъемная работа.

Geen в сообщении #1566013 писал(а):
ilghiz в сообщении #1566011 писал(а):
Скажите, пожалуйста, а почему вы это проблемой назвали, ведь это - удобство, не так ли?

У Вас много лишнего времени заниматься вёрсткой во всех браузерах? Если нет, то зачем Вам браузер вообще?

я стараюсь придерживаться стандартным вещам, сама вебморда будет довольно простенькой - несколько кнопок, чекбоксов и менюшек и 3Д визуализатор и, по возможности без вреймворков.

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

Geen в сообщении #1566013 писал(а):
Если нет, то зачем Вам браузер вообще?

А в чем мне рисовать интерфейс программы, чтобы работало на вышеуказанных платформах? Я честно говоря, не вижу вообще альтернативы, кроме JS. Если я не прав, пожалуйста, поправьте! Но я надеюсь, вы не предложите рисовать интерфейс для каждой из платформ - как я говорил, это не реалистично. Кроме JS я умею на тикле, и, к сожалению не знаю других сред типа C# и QT, поэтому конкретно в моем случае, ИМХО, JS - просто безальтернативно.

Geen в сообщении #1566013 писал(а):
И это я ещё не спрашиваю как Вы намерены организовать взаимодействие браузера и сторонней программы (питона, в данном случае)...

ХЗ, это как раз и был мой вопрос. Как организовать взаимодействие вебассембли с JS - я уже научился, выше я приводил самописный пример, который средствами вебассембли считает умножение двух матриц и измеряет скорость как долго это вычисляется. Исходники видны в самом html, а Сишник - лежит там же, только надо расширение с html на cpp изменить, можете посмотреть и убедиться как там все просто. Я ожидал, что можно что-то аналогичное сделать на питоне, фактически только из-за того, что в питоне есть уже куча готовых нумерических библиотек, конкретно меня интересовали OpenCL и Lapack. Мне также нужен еще и OpenGL, но, по крайней мере WebGL так и так есть в JS, поэтому WebGL как замена OpenGL меня полностью устраивает.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение03.10.2022, 05:47 
Заслуженный участник
Аватара пользователя


03/06/08
2320
МО
ilghiz
Да, wasm, согласен.
Но если и wasm'а не хватает, почему Вы не хотите перенести расчёты на сервер?
Это бы избавило от кучи проблем. Предвидится вал запросов?

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение03.10.2022, 06:53 
Аватара пользователя


29/05/17
806
ilghiz в сообщении #1566014 писал(а):
А в чем мне рисовать интерфейс программы, чтобы работало на вышеуказанных платформах?

Если интерфейс умеете рисовать при помощи JS, то можно использовать тот же jQuery. На выходе получаете сайт одинаково работающий во всех браузерах. Я сам лично использую Vue, эта штука немного посложнее, но позволяет делать отличные SPA.

 Профиль  
                  
 
 Re: Зацепить питоновский скрипт в вебморду чтоб везде работало
Сообщение03.10.2022, 11:35 


11/08/18
363
Спасибо большое, пианист, что советуете!

пианист в сообщении #1566017 писал(а):
ilghiz
Но если и wasm'а не хватает, почему Вы не хотите перенести расчёты на сервер?
Это бы избавило от кучи проблем. Предвидится вал запросов?

Да, это тоже решение, но немного меня не устраивающее.

На данный момент сервер - это встроенный (embedded) процессор в переносном оборудовании и, к сожалению, он полностью забит работой по формировке данных для юзера.

Суммарно за один сьеанс эксперимента (около получаса) набирается довольно много данных, примерно до гигабайта - это трехмерная картинка на неравномерной сетке в каждой точке которой есть еще много параметров, которые юзер может включить или выключить при отображении. Отрисовка есть своя самописная на С++ с элементами OpenGL и использованием лапака с Фурье. Из-за последних - как раз сыр-бор, я видел в сети сборки лапака под wasm, но есть подозрение, что там не все очень надежно. Пока пробно пытался без лапака с Фурье что-то отрисовывать, но видно, что производительности немного не хватает.

Если заставить сервер рисовать и посылать картинки, то в качестве сервера придется дополнительно ставить что-то довольно мощное, причем если это делать на клиенте, то ресурсов надо меньше, чем если на сервере, так как будет еще большой трафик. Пробно на 4-той распбери с 4 гигабайтами были большие тормоза, то есть надо ставить полноценную материнку и какой-нибудь маленький писюк. Это сильно повышает потребление электричества этой системы и ведет за собой то, что в аппаратуре появляются дополнительные батарейки. Сейчса это все весит около 6кг, а с таким сервером, скорей всего будет за 10кг, и постепенно это будет переставать называться portable.

Причем по производительности не хватает совсем не много, и, всегда, если будет сильно тормозить, можно укорить юзера, что де очень старый мобильник.

Еще причина, почему хочется не выполнять эту отрисовку на сервере - это автономность визуализации. То есть эксперимент закончили, аппаратуру выключили, а данные все еще в браузере на мобильнике и юзер продолжает на них смотреть.


Mental в сообщении #1566018 писал(а):
Если интерфейс умеете рисовать при помощи JS, то можно использовать тот же jQuery. На выходе получаете сайт одинаково работающий во всех браузерах. Я сам лично использую Vue, эта штука немного посложнее, но позволяет делать отличные SPA.

Спасибо большое, Mental, за советы!

Да, полностью согласен, jQuery, или Vue - очень подходит. У меня в самом интерфейсе кроме хелпа только несколько кнопок, чекбоксов и менюшек, а все остальное - сама трехмерная картинка. То есть управление возможно проще вообще на голом JS сделать, так как ключевая задача - отрисовка с масштабированием 3Д картинки.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group