Итак, после мозгового штурма, устроенного здесь, как продолжение работ, описанных здесь за минувшее время была сделана реализация. Во многом отошедшая от начального замысла.
Нам удалось воплотить эпическую денежную дихотомию “дорогие идиоты - дешёвые идиоты”. Дорогой идиот - это я, дешёвый идиот - оператор GUI.
Документация по данным системы больше не нужна. GUI отныне самодокументированная сущность (в частности мы добавили в базу безразмерное текстовое поле Description).
Следующая фаза - экспорт из GUI в PDF. С выбросом оригинальных описаний в XLS и PDF - в утиль.
Update. О начинке библитеки. Забыл напомнить.
В библиотеке внутре керосинка!:
Отложенный во времени привет миру от нагадивших мне в душу Intel UPNP SDK (ООП на Plain C), Perl (значения по умолчанию), Ruby (Reflection), MVC/QT, ASN.1/asn1c (вся идея отрыва описания от реализации).
Ад и мета-программирование в комиксах.
Нам удалось воплотить эпическую денежную дихотомию “дорогие идиоты - дешёвые идиоты”. Дорогой идиот - это я, дешёвый идиот - оператор GUI.
- (M) База данных в SQlite3 - содержит данные на систему - 321 запись в основной таблице
- (V) GUI морда на QT/C++ - редактирование данных - 1160 строк
- (С) кодогенератор C на Python по данным базы (Чеусов! Фу! В вашем AWK нет SQlite и работы с BLOB!) - 290 строк
- библиотека в Plain C - набор API по работе с данными из кодогенератора - 4693 строки, включая Doxygen и пустые строки.
- Unit-тесты, Plain C - 1200 строк
Документация по данным системы больше не нужна. GUI отныне самодокументированная сущность (в частности мы добавили в базу безразмерное текстовое поле Description).
Следующая фаза - экспорт из GUI в PDF. С выбросом оригинальных описаний в XLS и PDF - в утиль.
Update. О начинке библитеки. Забыл напомнить.
В библиотеке внутре керосинка!:
- реализация собственной системы типов с колхозанским reflection
- полиморфизм и инкапсуляция на Plain C (ООП в стиле JavaScript)
- значениями по умолчанию у каждой из переменных
- системой нотификации изменений (как слинкованных приложений, так и посторонних процессов)
- Концепция “драйвер” (как аттрибут переменной) описывает способ доступа к данным (сейчас их 6).
Отложенный во времени привет миру от нагадивших мне в душу Intel UPNP SDK (ООП на Plain C), Perl (значения по умолчанию), Ruby (Reflection), MVC/QT, ASN.1/asn1c (вся идея отрыва описания от реализации).
Ад и мета-программирование в комиксах.
Как обычно - хочется страшного.
А именно - мне надо из Excel-таблицы генерить конфигурацию для моего кодогенератора (awk).
Конфигурация - в CSV-формате. Заказчик обоссал себе пятки и уже внёс в план.
Чо делать? Куда бежать? Кому сдаваться?
Update1, Use Case:
1. Есть Excel созданный лучшими умами современности, с данными о нашем формате и большой кнопкой "Сделать мне красиво".
2.Тупой лось малобюджетный junior-разработчик открывает xls-файл и нажимает большую красную кнопку.
3.Тупому лосю малобюджетному разработчику выдают диалог "Куда, сохранить сгенерированную конфигурацию, хозяин?"
4. Конфигурация сохранена и используется в компиляции.
Как мне представляется - тут чтото вроде VBA, но я областью не владею, потому спрашиваю.
Update2:Excel в роли GUI в котором рисуют конфигурацию на вход кодогенератора.
А именно - мне надо из Excel-таблицы генерить конфигурацию для моего кодогенератора (awk).
Конфигурация - в CSV-формате. Заказчик обоссал себе пятки и уже внёс в план.
Чо делать? Куда бежать? Кому сдаваться?
Update1, Use Case:
1. Есть Excel созданный лучшими умами современности, с данными о нашем формате и большой кнопкой "Сделать мне красиво".
2.
3.
4. Конфигурация сохранена и используется в компиляции.
Как мне представляется - тут чтото вроде VBA, но я областью не владею, потому спрашиваю.
Update2:Excel в роли GUI в котором рисуют конфигурацию на вход кодогенератора.
Хреновые будни прикладника
Oct. 25th, 2010 10:07 pmПод бодрящие звуки Steppennwolf с воодушевлением, обострённым близким дедлайном, ломаю первую, вылизанную и оттестированную версию своего кустарного кодогенератора.
В настоящий момент дикий мужчина делает полиморфизм и reflection на Plain C + AWK + С Preprocessor.
Да содрогнется любой заказчик от недо-функциональщика на бреющем полёте метапрограммирования.
Cрезающего сосны под корень. Потом верхний слой почвы. Следом гранит. Но в итоге выходящий на около-земную орбиту.
BORN TO BE WIILD! Пусть сдохнут все кто нас не любит.
( гнусные подробности )
( особо гнусные подробности )
В настоящий момент дикий мужчина делает полиморфизм и reflection на Plain C + AWK + С Preprocessor.
Да содрогнется любой заказчик от недо-функциональщика на бреющем полёте метапрограммирования.
Cрезающего сосны под корень. Потом верхний слой почвы. Следом гранит. Но в итоге выходящий на около-земную орбиту.
BORN TO BE WIILD! Пусть сдохнут все кто нас не любит.
( гнусные подробности )
( особо гнусные подробности )
Кодогенерация как высшая форма copy/paste
Nov. 4th, 2008 04:13 pmВ целлюлозе вышла очередная нетленка, порадовал журналЪ "Сетевые решения", №8/2008
Статья посвящена событиям давно минувших дней: командировке в Индию, во Flextronics Software Systems (now Aricent).
CMMI-5 (для тех кто в теме).
Написана в 2005 году, по горячим следам, но не утратила актуальности и теперь.
Статья посвящена событиям давно минувших дней: командировке в Индию, во Flextronics Software Systems (now Aricent).
CMMI-5 (для тех кто в теме).
"Когда я работал программистом в маленькой индийской корпорации .... (Читать)
Написана в 2005 году, по горячим следам, но не утратила актуальности и теперь.