metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-11-01 11:22 pm

Гуе-визардо-мышедизайнерская разработка софта

А вот скажите, как вы относитесь к инструментам, в которых для подключения, например, к БД, нужно пройти 5-10 экранов визарда? Ну или там поработать полчасика в неудобном мышедизайнере.
С одной стороны, для начинающих это сильно снижает порог входа - нажимаешь "сделать чо нибудь", оно задает кучу вопросов и это чо нибудь делает. С другой стороны - внутренности либ для подобных инструментов чуть более чем всегда совершенно не
пригодны для обычной разработки - "чтобы создать что-то из кода, надо выполнить страницу неадекватных вуду заклинаний".
Я подобные вещи стараюсь не использовать, благо, разработчики все делают для того, чтобы это было неудобно и медленно для сколько-нибудь сложных задач и подобное ретроградство и луддизм находят понимание среди коллег, особенно тех, кто ничем, кроме текста и его редакторов, принципиально не пользуется.

[identity profile] dizel-by.livejournal.com 2013-11-01 08:28 pm (UTC)(link)
Я за любые визарды хочу убивать, например. За некоторые — с особой жестокостью. И да, я не пользуюсь ничем, кроме текста и его редакторов =))

[identity profile] falcrum.livejournal.com 2013-11-01 08:37 pm (UTC)(link)
Хочется спросить и тебя, и топикстартера: вы с БД, в которых не один десяток таблиц, работаете как - храня схему в голове?

[identity profile] dizel-by.livejournal.com 2013-11-01 08:44 pm (UTC)(link)
Ну да, а что? Структура правильно спроектированной БД помещается в гойлову, даже если там 100500 таблиц :)

[identity profile] bydlorus.livejournal.com 2013-11-01 09:18 pm (UTC)(link)
Ну во-первых есть автодополнение (мы же работаем с API, в которых тысячи классов), а во-вторых показ схемы это не "мастер".

[identity profile] metaclass.livejournal.com 2013-11-01 10:06 pm (UTC)(link)
Ну у меня чо-то порялка 400 таблиц в 4 оперденях.
Держу в SQL скриптах, которые под контролем версий. То, что разрабатываю в данный момент - закэшировано в голове.
Новые подсистемы - в кодогенераторе, который в свою очередь, модели хранит в БД. Думаю - оставлять в реляционной БД или переделать хранилище на текстовую БД, чтобы лучше дружило с контролем версий.

[identity profile] falcrum.livejournal.com 2013-11-02 06:12 am (UTC)(link)
Ну да, "а потом этими же губами она будет целовать моих детей?" (с) В смысле, ну так нефиг тогда возмущаться, что никто не может тебя подменить хотя бы на время хотя бы на куске работы: не пробовал затянуть эти же sql-скрипты в bpwin какой - на предмет наглядности данных и связей промежду ними? Хотя от "опердени аж в 100 таблиц" я ржу в голос...

[identity profile] metaclass.livejournal.com 2013-11-02 06:30 am (UTC)(link)
Пробовал. Нахрен такую наглядность.

[identity profile] metaclass.livejournal.com 2013-11-02 07:21 am (UTC)(link)
Мне проще работать с однозначным представлением графов в виде текста, нежели в виде картинок. На картинках приходится скрывать часть информации, чтобы оно было читабельным.
Основную работу все равно приходится вести в тексте (контроль версий, сборка, итд). Два эквивалентных представления (внутренний формат ER/UML софтов и SQL-скрипты) создают лишнюю работу по преобразованию и могут привести к противоречиям.

[identity profile] jakobz.livejournal.com 2013-11-02 12:34 pm (UTC)(link)
А что ты используешь для представления базы в виде текста?

Просто в source control-е же этого нет ничего обычно - там diff-скрипты лежат от нулевой версии, которые чтобы получить текущее положение дел надо еще накатить.

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

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

[identity profile] fraks-nsk.livejournal.com 2013-11-02 02:47 pm (UTC)(link)
>> А что ты используешь для представления базы в виде текста?

Вообще-то база изначально в виде текста и существует, исходник так сказать.
Можно поставить вопрос иначе - а что используется для преобразования исходного текста в какую-нибудь визуализацию?

[identity profile] jakobz.livejournal.com 2013-11-02 03:08 pm (UTC)(link)
База существует в виде понятных ей одной бинарных файлов. Ну, и часто - в виде diff-скриптов в source control-е, которые если последовательно запустить - получится такая же база. Где ты там исходник видел?

[identity profile] metaclass.livejournal.com 2013-11-02 07:03 pm (UTC)(link)
У меня два разных исходника: для создания с нуля и для миграции между разными версиями.
В конечном итоге - diff-скрипты и есть исходник.

[identity profile] jakobz.livejournal.com 2013-11-04 10:10 am (UTC)(link)
А как ты эти исходники синхронизируешь?

(no subject)

[identity profile] metaclass.livejournal.com - 2013-11-04 10:16 (UTC) - Expand

(no subject)

[identity profile] jakobz.livejournal.com - 2013-11-04 10:21 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-11-04 10:35 (UTC) - Expand

[identity profile] theaspect.livejournal.com 2013-11-18 09:39 am (UTC)(link)
Ребе, а ты используешь какую-нибудь тулзу для накатывания и донакатывания миграций?

(no subject)

[identity profile] metaclass.livejournal.com - 2013-11-18 09:46 (UTC) - Expand

[identity profile] fraks-nsk.livejournal.com 2013-11-04 05:49 am (UTC)(link)
Что бы эти бинарные файлы создать требуется дать серверу команды.
Либо эти команды даются в текстовом виде скриптом и это и есть исходник
либо это делается через ГУЙ.

Если у какого-то сервера есть возможность создать объекты в базе только через гуй и мышку - это адов пиздец и втопку такой сервер.

Некоторые сервера даже бэкапы баз делают в текстовый вид.

(no subject)

[identity profile] jakobz.livejournal.com - 2013-11-04 10:05 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2013-11-04 20:58 (UTC) - Expand

(no subject)

[identity profile] jakobz.livejournal.com - 2013-11-04 21:35 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-11-05 02:09 (UTC) - Expand

(no subject)

[identity profile] jakobz.livejournal.com - 2013-11-05 07:54 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2013-11-05 07:50 (UTC) - Expand

(no subject)

[identity profile] jakobz.livejournal.com - 2013-11-05 08:06 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2013-11-05 08:12 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-11-05 08:18 (UTC) - Expand

[identity profile] fraks-nsk.livejournal.com 2013-11-04 05:51 am (UTC)(link)
Кстати, про бинарный вид. Программы они тоже работают только в бинарном виде (условно, не будем вдаваться в различные варианты :) ) Тем не менее, исходником программы называют не этот бинарный вид а ее текст на котором она была написана, на каком-то из языков программирования, в текстовом виде.

[identity profile] jakobz.livejournal.com 2013-11-02 12:04 pm (UTC)(link)
В SQL Server есть диаграммы, в них можно прям потыкать всякие "добавить колонку", драг-н-дропом связи навести. Потом в ней же нажать "generate script", и с ним уже дальше что-то делать - миграцию данных туда дописать, в SVN какой положить как diff-скрипт.

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

[identity profile] berezovsky.livejournal.com 2013-11-02 12:10 pm (UTC)(link)
Отсутствует контроль над ситуацией.
Никогда не знаешь, что лишнего туда генератор напихает и заебёшься сравнивать каждый раз.
А когда каждый символ написан тобой, точно знаешь, чего ждать.
Если нужно видеть схему, почти любая мышедизайнер умеет реверс инжиниринг, как из базы, так и из скрипта.

[identity profile] jakobz.livejournal.com 2013-11-02 12:21 pm (UTC)(link)
Так оно и делает реверс. Все что хранится дополнительно для схемы - это тупо координаты табличек.

Оно на удивление нормально генерирует скрипты. Которые потом уже живут в виде текста - ревьювятся, тестируются, выкладываются в контроль версий, откуда их потом CI прогоняет по тестовым и боевым базам.

[identity profile] berezovsky.livejournal.com 2013-11-02 12:27 pm (UTC)(link)
Э-э-э, ты имеешь в виду, что CI лезет в репозиторий, берёт скрипт и прогоняет его по всем продакшенам?

[identity profile] jakobz.livejournal.com 2013-11-02 12:41 pm (UTC)(link)
CI (точнее спец. утилитка) лезет в репозиторий, смотрит что в нем нового относительно спец. таблички в базе, и накатывает скрипты в хронологическом порядке на:
- по коммиту - на базу-болванку, чисто отфильтровать сразу скрипты, которые падают
- по коммиту - на trunk-систему
- на системы девелоперов когда они забирают себе свежий код
- по кнопке/расписанию на QA/UAT-систему
- по кнопке на Staging-систему, куда скидывается база с прода
- по кнопке на прод

Никаких кривых рук на прод-систему в идеале вообще не допускается, для деплоя используется та же утилита, тот же набор скриптов, и тот же их порядок, который для этого использовался для поднимания нескольких тестовых систем, и проверен руками и роботами.

[identity profile] berezovsky.livejournal.com 2013-11-02 12:43 pm (UTC)(link)
Серьёзно. Но это, похоже, в рамках одной конторы.

(no subject)

[identity profile] jakobz.livejournal.com - 2013-11-02 12:53 (UTC) - Expand

[identity profile] dizel-by.livejournal.com 2013-11-02 05:57 pm (UTC)(link)
mplayer с libaa? :)