Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 28.04.15 06:56
Оценка:
Есть схема БД, которая определяется юзером. Сама юзерская БД примитивная (всего несколько типов колонок), но все же БД. Ее нужно замапить на сервере на какой-нибудь мускул. Проблема в том, что стираться ничего не должно (бесконечной глубины Undo). Отсюда следует, что простейшее решение — создавать/менять/убивать таблицы в настоящей БД один в один с виртуальной юзерской — немного не катит (?), нужны метаданные.

В продакшене по мере нагрузки можно будет переписать все на ++/noSQL, а для прототипа нужно что-нибудь, чтоб попроще был код и мало его.

Что посоветуете? Да, очень не хочется даже в прототипе: 1) тащить зависимости от виндов, поэтому .Net нежелателен; 2) ломать голову об 100500 конфигов, поэтому Java нежелательна. Но, конечно, если есть суперудобные решения для этих платформ, я готов мириться.

Теперь, что касается клиента. Уметь представлять таблицы надо по заданным шаблонам, например, поля булевого типа надо показывать как обычным чекбоксом, так и супегламурным айфоноподобным анимированным. И желательно, чтобы сервер об этом ничего не знал. То есть, много кастомных контролов и CSS. Наваять на обычном jQuery + UI? Или взять что-нибудь вроде Angular?
Re: Какие фреймворки использовать для прототипа?
От: xednay89 Россия  
Дата: 28.04.15 12:36
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Есть схема БД...


Не совсем понял что надо, но если взять postgreSQL с json-ами, которые он поддерживает — это не поможет?
Re[2]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 28.04.15 13:19
Оценка:
Здравствуйте, xednay89, Вы писали:

BDA>>Есть схема БД...


X>Не совсем понял что надо, но если взять postgreSQL с json-ами, которые он поддерживает — это не поможет?


Не поможет, или я не понял, как использовать.

Что надо — надо дать пользователю виртуальную БД, а данные этой БД где-то хранить. Для начала, в реальной SQL-базе. Причем, что важно, юзерские запросы не тупо транслировать в БД, а хранить в виде записей: юзер создал таблицу, юзер добавил колонку, юзер внес запись, юзер убил таблицу. Чтобы можно было откатиться на любую дату, а данные никогда нельзя было потерять.

Надо полагать, ORM для этого не очень подходит.
Re[3]: Какие фреймворки использовать для прототипа?
От: iPrior Россия darkmonk9@gmail.com
Дата: 28.04.15 13:26
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Здравствуйте, xednay89, Вы писали:


BDA>>>Есть схема БД...


X>>Не совсем понял что надо, но если взять postgreSQL с json-ами, которые он поддерживает — это не поможет?


BDA>Не поможет, или я не понял, как использовать.


BDA>Что надо — надо дать пользователю виртуальную БД, а данные этой БД где-то хранить. Для начала, в реальной SQL-базе. Причем, что важно, юзерские запросы не тупо транслировать в БД, а хранить в виде записей: юзер создал таблицу, юзер добавил колонку, юзер внес запись, юзер убил таблицу. Чтобы можно было откатиться на любую дату, а данные никогда нельзя было потерять.


BDA>Надо полагать, ORM для этого не очень подходит.


То есть некое подобие лога транзакций? — может в эту сторону покопать..?
Re[4]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 28.04.15 13:33
Оценка:
Здравствуйте, iPrior, Вы писали:

BDA>>Что надо — надо дать пользователю виртуальную БД, а данные этой БД где-то хранить. Для начала, в реальной SQL-базе. Причем, что важно, юзерские запросы не тупо транслировать в БД, а хранить в виде записей: юзер создал таблицу, юзер добавил колонку, юзер внес запись, юзер убил таблицу. Чтобы можно было откатиться на любую дату, а данные никогда нельзя было потерять.


BDA>>Надо полагать, ORM для этого не очень подходит.


P>То есть некое подобие лога транзакций? — может в эту сторону покопать..?


Мне кажется, нет. Данные об операциях должны быть гражданами первого класса, а записи в transaction log — какие-то системные, судя по тому, что я прочитал. Впрочем, если на них удастся построить хак, я только за, но как, например, в мускуле запросить данные из таблицы, дропнутой полгода назад? Можно его так настроить?
Re[5]: Какие фреймворки использовать для прототипа?
От: iPrior Россия darkmonk9@gmail.com
Дата: 28.04.15 13:42
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

P>>То есть некое подобие лога транзакций? — может в эту сторону покопать..?


BDA>Мне кажется, нет. Данные об операциях должны быть гражданами первого класса, а записи в transaction log — какие-то системные, судя по тому, что я прочитал. Впрочем, если на них удастся построить хак, я только за, но как, например, в мускуле запросить данные из таблицы, дропнутой полгода назад? Можно его так настроить?


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

Ну это так, на вскидку...

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

Готовых решений я не встречал, собсно как и с такой задачей.
Re: Какие фреймворки использовать для прототипа?
От: BulatZiganshin  
Дата: 29.04.15 15:27
Оценка: 12 (1)
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Теперь, что касается клиента. Уметь представлять таблицы надо по заданным шаблонам, например, поля булевого типа надо показывать как обычным чекбоксом, так и супегламурным айфоноподобным анимированным. И желательно, чтобы сервер об этом ничего не знал. То есть, много кастомных контролов и CSS. Наваять на обычном jQuery + UI? Или взять что-нибудь вроде Angular?


у меня нет опыта веб-программирования, но чисто по рекламе мне очень понравился webix
Люди, я люблю вас! Будьте бдительны!!!
Re: Какие фреймворки использовать для прототипа?
От: Baudolino  
Дата: 29.04.15 16:49
Оценка: 2 (1)
Здравствуйте, 0BD11A0D, Вы писали:

BDA>2) ломать голову об 100500 конфигов, поэтому Java нежелательна.

100500 конфигов это миф, который к современной Java не имеет никакого отношения.
Для прототипа можете выбрать связку Spring Boot + PostgreSQL + Heroku
Конфиги не требуются, нужно только выбрать фичи, которые хотите иметь в своем приложении:
http://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-first-application.html

Деплоймент в продакшн:
http://docs.spring.io/spring-boot/docs/current/reference/html/cloud-deployment-heroku.html

BDA>Теперь, что касается клиента.

React.js
Re[2]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 29.04.15 17:49
Оценка:
Здравствуйте, Baudolino, Вы писали:

B>100500 конфигов это миф

...
B>http://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-first-application.html

Если это миф, то почему по вашей же ссылке лежит конфиг? Я не хочу раздувать холивор, но про Джаву я давно знаю, что это способ нагнать важности девелопменту и раскрутить заказчика на бабки. А у меня цель противоположная — прототип написать как можно быстрее и дешевле. И если только не окажется, что в Спринг встроена поддержка виртуальных баз, нахрен мне это счастье — ПОМы, Мавены и прочее. Надо у жены спросить, она с этим Спрингом хорошо знакома.
Re[3]: Какие фреймворки использовать для прототипа?
От: Qulac Россия  
Дата: 29.04.15 18:16
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Здравствуйте, xednay89, Вы писали:


BDA>>>Есть схема БД...


X>>Не совсем понял что надо, но если взять postgreSQL с json-ами, которые он поддерживает — это не поможет?


BDA>Не поможет, или я не понял, как использовать.


BDA>Что надо — надо дать пользователю виртуальную БД, а данные этой БД где-то хранить. Для начала, в реальной SQL-базе.

Пусть так и будет.

BDA> Причем, что важно, юзерские запросы не тупо транслировать в БД, а хранить в виде записей: юзер создал таблицу, юзер добавил колонку, юзер внес запись, юзер убил таблицу. Чтобы можно было откатиться на любую дату, а данные никогда нельзя было потерять.


Это можно решить используя паттерн undo/redo stack, только хранить все запросы в бд.

BDA>Надо полагать, ORM для этого не очень подходит.


Скорей всего да и в первую очередь из-за скорости.
Программа – это мысли спрессованные в код
Re[3]: Какие фреймворки использовать для прототипа?
От: Baudolino  
Дата: 30.04.15 10:26
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Если это миф, то почему по вашей же ссылке лежит конфиг?

Если вы не пишете три строчки на каком-нибудь PHP, у вас всегда есть файл, в котором описаны настройки проекта, его зависимости и способ сборки.
В node.js это package.json, в Java, Scala, Groovy это pom.xml, build.xml или build.gradle, в C это makefile и т.д.
Для Spring Boot это единственный конфиг, который вам реально необходим и это даже не обязательно XML, так что 100500 конфигов в Java это действительно миф.

BDA>Я не хочу раздувать холивор, но про Джаву я давно знаю, что это способ нагнать важности девелопменту и раскрутить заказчика на бабки.

Вас кто-то дезинформировал.

BDA>А у меня цель противоположная — прототип написать как можно быстрее и дешевле.

Вы сейчас приводите субъективно-эмоциональные аргументы, даже не попытавшись адекватно оценить предложенное решение. Это как-то не вяжется с утверждением, что вы не хотите разводить холивар. Хотите обсудить решение предметно, давайте обсудим. Если вам оно не интересно просто потому, что у вас сложилось предвзятое отношение насчет платформы, которую вы не очень хорошо знаете — желаю удачи с поиском того, что подойдет вам больше.
Re[3]: Какие фреймворки использовать для прототипа?
От: baranovda Российская Империя  
Дата: 06.05.15 21:56
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Если это миф, то почему по вашей же ссылке лежит конфиг? Я не хочу раздувать холивор, но про Джаву я давно знаю, что это способ нагнать важности девелопменту и раскрутить заказчика на бабки. А у меня цель противоположная — прототип написать как можно быстрее и дешевле. И если только не окажется, что в Спринг встроена поддержка виртуальных баз, нахрен мне это счастье — ПОМы, Мавены и прочее. Надо у жены спросить, она с этим Спрингом хорошо знакома.


Может мой опыт пригодится. У меня последний опыт работы с Java был на уровне консольных прикладух, функций для Oracle и чуть-чуть веб на уровне понимания что такое сервлеты.
Последние две недели осваиваю стек Web.
Итак, накачал себе Netbeans и Glassfish, а база у меня Oracle.
Netbeans вообще ничем внимания не привлек — обычная и понятная IDE.
Первым делом волевым усилием освоил maven — репозиторий пакетов. Раньше jar-ы нужно было качать отовсюду самому, а теперь они все сами скачиваются и ставятся с зависимостями.
Glassfish тоже в общем-то обычный контейнер сервлетов, но с отладчиком Netbeans стыкуется криво, есть ньюансы.
В паре Netbeans и Glassfish тупят, тормозят, жрут очень много памяти и иногда вылетают с ее нехваткой.
Spring для J2EE нынче в мейнстриме. Но осваивается тяжело. Конфиги реально бесят. Но я пострадал пару дней, потом порог как-то сам собой перешагнулся и все стало вполне понятно. Принципы REST, DI, IoC, MVC и прочие абревиатуры мне знакомы из .NET, так что с ними проблем не возникло. В общем, Spring-ом надо просто переболеть, дальше к нему образуется стойкий иммунитет.
Для клиента по наводке Булата пробую Webix. Копаю неполный второй день, и могу сказать, что он мне понравился.
Так что Java как вариант — вполне себе. Но нужна хорошая рабочая станция.
Re[4]: Какие фреймворки использовать для прототипа?
От: hrensgory Россия  
Дата: 07.05.15 04:20
Оценка: 6 (1) +2
07.05.2015 0:56, baranovda пишет:

> Итак, накачал себе Netbeans и Glassfish, а база у меня Oracle.


Мсье знает толк Из всего что есть в мейнстриме вам попалась самая
бестолковая ИДЕ, самый глючный сервер приложений и самая ресурсоёмкая БД.

Советую заменить Netbeans на IDEA, а глассфиш — на wildfly 8 (ex. jboss).

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 07.05.15 10:15
Оценка:
Здравствуйте, baranovda, Вы писали:

B>Но осваивается тяжело. Конфиги реально бесят.


Я ж говорю. А вот зачем подвергаться, когда фреймворк можно просто скопировать? Самому себе зряплату потом поднять?
Re: Какие фреймворки использовать для прототипа?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.15 11:53
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Есть схема БД, которая определяется юзером. Сама юзерская БД примитивная (всего несколько типов колонок), но все же БД. Ее нужно замапить на сервере на какой-нибудь мускул. Проблема в том, что стираться ничего не должно (бесконечной глубины Undo). Отсюда следует, что простейшее решение — создавать/менять/убивать таблицы в настоящей БД один в один с виртуальной юзерской — немного не катит (?), нужны метаданные.


Есть уже готовый бесплатный SharePoint Foundation. Делает все что нужно. В 2013 можно рендеринг таблиц\форм на свои контролы переписать. Встроенная версионность есть.

Правда серьезные ограничения на количество данных. Но если все руками забивать, то вполне хватит.
Re[2]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 07.05.15 13:32
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Есть уже готовый бесплатный SharePoint Foundation.


Он не является фреймворком, и этого достаточно. Но, между нами, он еще и редкое УГ.
Re[3]: Какие фреймворки использовать для прототипа?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.15 16:08
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Здравствуйте, gandjustas, Вы писали:


G>>Есть уже готовый бесплатный SharePoint Foundation.


BDA>Он не является фреймворком, и этого достаточно. Но, между нами, он еще и редкое УГ.


А вам шашечки или ехать? Все что описано — умеет изкаропки, а что еще для прототипа надо?
Re[4]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 07.05.15 17:06
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

BDA>>Он не является фреймворком, и этого достаточно. Но, между нами, он еще и редкое УГ.


G>А вам шашечки или ехать? Все что описано — умеет изкаропки, а что еще для прототипа надо?


Я же сказал, он не является фреймворком. Сделать с ним ничего непредусмотренного неизвестными индусами нельзя, развивать в нужном направлении нельзя, можно только поставить и наслаждаться «искаропочностью». Недолго, правда. Последний раз, когда я его смотрел, банальнейший апдейт одного списка на несколько тысяч элементов по сложному условию сделать было невозможно. Ибо CAML не поддерживал(-ет?) сложные условия, космически уступая даже SQL, и приходилось крутить его в цикле, минимум по 2 запроса на элемент. При этом встроенный недокументированный таймаут на 30 секунд (? — точно не помню уже) тупо выгружал dll'ку, оставляя виртуальную базу в неконсистентном состоянии. А, как начал писать, всю говенность его вспомнил — и милая архитектура «1 событие — 1 класс (не инстанс! класс!)» заставляет генерировать простыни Handler1, Handler2 ... Handler3. Работать в результате можно только на живой базе, но там есть свои приколы. Полное отсутствие документации, например.

Короче, я шарик раньше сам продавал кому хочешь, мне его продавать не надо. Я скорее на брейнфаке буду программировать СУБД под свою задачу, чем соглашусь еще раз коснуться этого отстоя.

P.S. И на всякий случай: установить ШП не значит создать прототип чего бы то ни было, кроме как инсталляции ШП. Которая у меня, к слову, и так имеется.
Отредактировано 07.05.2015 17:11 0BD11A0D . Предыдущая версия .
Re[5]: Какие фреймворки использовать для прототипа?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.05.15 18:15
Оценка:
Здравствуйте, 0BD11A0D, Вы писали:

BDA>Здравствуйте, gandjustas, Вы писали:


BDA>>>Он не является фреймворком, и этого достаточно. Но, между нами, он еще и редкое УГ.


G>>А вам шашечки или ехать? Все что описано — умеет изкаропки, а что еще для прототипа надо?


BDA>Я же сказал, он не является фреймворком. Сделать с ним ничего непредусмотренного неизвестными индусами нельзя, развивать в нужном направлении нельзя, можно только поставить и наслаждаться «искаропочностью»....

Плохому танцору... ну ты понял.


BDA>Короче, я шарик раньше сам продавал кому хочешь, мне его продавать не надо. Я скорее на брейнфаке буду программировать СУБД под свою задачу, чем соглашусь еще раз коснуться этого отстоя.

Так тебе всетаки шашечки, а ехать и не нужно? Или ты думаешь, что запилив свою метамодель на СУБД с версионностью каждой строки у тебя прямо офигенский результат получится и язык запросов не жуже SQL? И сколько ты собрался это делать? Год? Два?

BDA>P.S. И на всякий случай: установить ШП не значит создать прототип чего бы то ни было, кроме как инсталляции ШП. Которая у меня, к слову, и так имеется.

Ну и в чем тогда проблема? Создал сайт, колонки, списки — готовый прототип, остальное на angular рисуешь. Потом шарик выкидываешь и пишешь полноценный бекэнд с логикой любой сложности.
Re[6]: Какие фреймворки использовать для прототипа?
От: 0BD11A0D  
Дата: 07.05.15 19:56
Оценка: +2
Здравствуйте, gandjustas, Вы писали:

G>Плохому танцору... ну ты понял.


Давайте поговорим про яйца, мне не трудно. Тем более, все в рамках темы, вроде бы. Не оффтопик, не холивор. Дык вот, как там, в ШП 2013/15/17, стало уже можно проапдейтить список одной транзакцией? Не по примеру из учебников, типа одно и то же значение суем в 100% элементов (bulk update), а вот... пусть у вас будет заделан CRM. В списке хранятся операции с клиентами. Можно найти все операции для кастомеров (из отдельного списка), подпадающих под некоторое условие (город, где у них офис) и поднять им приоритет? И не итеративно в цикле через ОМ, а транзакционно?

BDA>>Короче, я шарик раньше сам продавал кому хочешь, мне его продавать не надо. Я скорее на брейнфаке буду программировать СУБД под свою задачу, чем соглашусь еще раз коснуться этого отстоя.

G>Так тебе всетаки шашечки, а ехать и не нужно? Или ты думаешь, что запилив свою метамодель на СУБД с версионностью каждой строки у тебя прямо офигенский результат получится и язык запросов не жуже SQL? И сколько ты собрался это делать? Год? Два?

Зачем мне свой язык запросов? Я что, Майкрософт, с ее поиском фатальных недостатков? Если бы ШП давал SQL-интерфейс к [AllUserData], включая документацию, я бы, МОЖЕТ БЫТЬ, закрыл глаза на его общую упячность. А совсем без программирования у них тоже не получится — возьмем, например, такую ма-а-а-аленькую проблемку, как отказ считать результат агрегирующих функций (то, что во вьюхах идет как Total или типа того, не помню) гражданами первого класса, то есть элементами списков. Все-таки, dogfooding'а у них не было, это говорит каждый, кто пробовал запилить на шаре хотя бы элементарный багтрекер.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.