metaclass: (Default)
[personal profile] metaclass
И таки несамочевидное решение "сделать одноразовую опердень по-человечески, с кодогенератором, F# и тестершами" показало свою полезность и адекватность в первый же день использования оной опердени.
Пользователи по результатам уточнили требования, а внутреннее тестирование обнаружило небольшой баг, что привело к необходимости добавить одно поле в таблицу. Если бы не кодогенерация - я бы сейчас искал и менял вручную с десяток мест, где нужно добавить это поле - объект данных, его дампы, dao-классы, sql-запросы, гриды для отображения, подписи к этим гридам и прочая, и прочая.
А так доработка даже с учетом того, что кодогенератор пока не умеет миграцию БД ни в каком виде, заняла 40 минут.

Date: 2010-11-08 04:14 pm (UTC)
From: [identity profile] mend0za.livejournal.com
Из сегодняшнего митинга нас (н) с заказчиком (з):

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

Date: 2010-11-08 04:16 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Может вы еще и водопадную модель заказчику предложите?:)

Date: 2010-11-08 04:22 pm (UTC)
From: [identity profile] mend0za.livejournal.com
а что ета? :)

Сегодня анкету внутреннюю по проекту заполнял. Долго думал что вписать в графу "методология разработки" - предложенные варианты RUP, XP, Scrum - думал над ними - и вписал - (прочерк).

Date: 2010-11-08 04:51 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Водопадная - это когда сначала подробнейшее планирование, потом долгая и аккуратная разработка, потом сдача заказчику и все. Никаких итераций и обратных связей.

Date: 2010-11-08 08:21 pm (UTC)
From: [identity profile] mend0za.livejournal.com
коллега, я знаю что такое waterfall :)

Date: 2010-11-09 06:37 am (UTC)
From: [identity profile] blackyblack.livejournal.com
Это прям как коммунизм. В реальной жизни в чистом виде не встречается.

Date: 2010-11-08 04:52 pm (UTC)
From: [identity profile] gds.livejournal.com
поздравляю.

Date: 2010-11-08 05:14 pm (UTC)
From: [identity profile] komarov.livejournal.com
очень круто

Date: 2010-11-08 06:44 pm (UTC)
From: [identity profile] eric burglsan (from livejournal.com)
А так и должно быть, ибо это правильное решение в отличие от.

Date: 2010-11-08 07:27 pm (UTC)
From: [identity profile] fraks-nsk.livejournal.com
Стесняюсь спросить - если миграция БД не предусмотрена - как внедряется новое поле?
Из ваших слов как-то думается что кодогенератор генерит новый скрипт для БД и потом в новую пустую базу данные переливаются? Или тупо ручками одно поле добавляли в уже существующую базу?

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

Date: 2010-11-08 07:38 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Для сложных случаев - я сравниваю старый и новый скрипт диффом и по разнице ручками делаю скрипт миграции. С генерацией занудных вещей типа "грохнуть в правильном порядке все зависимости от таблицы" и потом "создать все зависимости заново со всеми правами".
Для простых - в базу ручками - это одно место где нужно руками работать, а все остальное - запросы, классы, отчеты итд - генерируется.

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

Date: 2010-11-09 10:37 am (UTC)
From: [identity profile] zamotivator.livejournal.com
OpenSource будет?

Date: 2010-11-09 10:54 am (UTC)
From: [identity profile] metaclass.livejournal.com
Хотелось бы, но вряд ли. Мне никто не выделит времени на приведение этого в пригодный к повторному использованию вид.

Date: 2010-11-10 07:42 am (UTC)
From: [identity profile] nivanych.livejournal.com
Всё меня мучает вопрос.
А вот если бы была агда2 под точканет, ви бы его пользовали, ребе? ;-)

Date: 2010-11-10 08:54 am (UTC)
From: [identity profile] metaclass.livejournal.com
Я про нее не дочитал толком. Скорее всего да, т.к. тамошние зависимые типы это какой-то более полноценный вариант той кодогенерации и метапрограммирования, коим я занимаюсь.

Date: 2011-07-10 09:24 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
Ребе, можете, пожалуйста, подробнее пояснить? Интересно, как метапрограммирование отображается на зависимые типы.
upd. Нашел пост http://metaclass.livejournal.com/523635.html - читаю, если что, вопросы буду задавать уже там.
Edited Date: 2011-07-10 09:26 pm (UTC)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 27th, 2025 01:29 pm
Powered by Dreamwidth Studios