/ Java

Web приложение для моделирования (МКЭ)

Время идет, и времени до защиты магистерской работы остается не так уж много. И если по мат. части практически все готово, то ПО находится на такой стадии, когда только я могу им воспользоваться. Настало время сделать его дружелюбным к пользователю! Проект - развитие моей дипломной работы, и не смотря что там все сделано не плохо, и работает до сих пор, и как не странно, мне до сих пор нравится как все вышло:

Что планируется

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

  • Регистрация пользователей
  • Управление своими сохраненными проектами, просмотр и изменение
  • Возможность создавать проекты на по шаблону
  • Показывать прогресс расчета
  • Уведомления по завершению расчет (опционально)
  • Новая ММ
  • Новый подход к интерфейсу решения задачи (об этом подробнее напишу, но основная идея перейти от одного окна для расчета с множеством меню, к полотну, решение будет идти сверху вниз - идея как notebook в IPython)

Многие из планируемых изменений не будут видны пользователю. Это различные архитектурные решения, а также новые подходы и новые фреймворки.

Напомню что было раньше

Мой текущий стек технологий был таким:

  • java 7
  • Jersy (RESTful)
  • AngularJS
  • ThreeJS
  • JQuery
  • Bootstrap 3
  • PostgreSQL

Для решения задачи использовал REST-сервис на сервере, с набором контроллеров, для решения задачи, изменения, отображения и прочего. REST был выбран после долгих раздумий и изучению подходов, это действительно оказался самый простой и красивый подход. Напомню, что REST это не никакой не протокол и не технология, это просто набор соглашений к построению архитектуры REST . Как и всегда полное следование соглашению иногда глупо, и не оправдывается, поэтому я не могу сказать свое приложение 100%. REST предполагает быть полностью stateless, и обязательные требования к запросам и ответам от сервера. Но не буду долго не нем, скажу лишь, что на java много фреймворков с которыми действительно приятно работать.

Для frontend был выбран AngularJS, не могу охарактеризовать его однозначно. То ты получаешь восторг как все здорово, а через время наталкиваешься на некоторое ограничение и начинаешь ненавидеть его. Но в целом он хороший, а то что сейчас все бросились его использовать гарантирует, что вы найдете ответы почти на любой вопрос. Документация тоже не плохая.

ThreeJS. Нисколько не пожалел, что для WebGL использовал именно его. Было желание писать все вручную, но я искренне рад, что выбрал ThreeJS, отличный движок. За время работы была только одна проблема: цветовая анимация:

Для morph анимации все было из коробки, для цветовой тоже был метод, но как оказалось не реализованный, после гугления и копания в исходниках это и было обнаружено. Поэтому решением было просто дописать самому, то чего не хватает. Люблю OpenSource. Не сарказм.

Что нового и зачем?

Теперь будет использоваться:

  • Java
  • AngularJS
  • Spring Framework
  • MongoDB
  • Material Angular или Material Design Lite
  • ThreeJS

Как видите, большая часть технологий осталась старой. Лишь выбрал Spring, раньше не хотел его использовать из-за того что это слишком массивный фреймворк, но честно оно того стоит. Также выбрал в качестве СУБД MongoDB, она не реляционная, документо-ориентированная СУБД. Одни её восхваляют, другие говорят что она плоха. Да почти все мы из мира SQL и нас учили какие должны быть правильные, нормализованные БД. Но тут все иначе, и честно, после NoSQL очень не хотелось бы переходить на обычные реляционные БД, тем более что нужды в этом в большинстве случаем и нету. Так что я восхваляю NoSQL! И да, для тех кто никогда не работал с Mongo лучше пройти курс - там расскажут все что вам нужно для начального понимания Mongo.

Придется переделать frontend - я год назад не очень понимал подход Angular, и поэтому большая часть сделано не должным образом. Но сейчас все будет)

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

Также поработаю над usability. Например добавлю progress bar, показывающий стадию решения. Пользователь существо нервное, и ему необходимо раз в какое-то время говорить, что что-то происходит. И главное чтобы он видел что, это идет к завершению.

И что же будет сделано в первую очередь?

Ну и хватит воды!

Создал новый, репозиторий, Universal Modeling. Cloud Modeling уже был занят под другой проект.

В первую очередь сделаю возможность запускать то что уже было разработано.

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

Web приложение для моделирования (МКЭ)
Share this

Subscribe to Yet another blog