Entry tags:
Хреновые будни прикладника
Под бодрящие звуки Steppennwolf с воодушевлением, обострённым близким дедлайном, ломаю первую, вылизанную и оттестированную версию своего кустарного кодогенератора.
В настоящий момент дикий мужчина делает полиморфизм и reflection на Plain C + AWK + С Preprocessor.
Да содрогнется любой заказчик от недо-функциональщика на бреющем полёте метапрограммирования.
Cрезающего сосны под корень. Потом верхний слой почвы. Следом гранит. Но в итоге выходящий на около-земную орбиту.
BORN TO BE WIILD! Пусть сдохнут все кто нас не любит.
Есть пространство переменных, имеющих имя и ID, могущих быть 5-ти типов (битовое поле, uint8, uint16, uint32, string и массивы из перечисленных). Их писать и читать. IPMI Config Variables, если кому-то что-то говорит.
Пространство переменных определено в ортодоксальном текстовом CSV-файле. Переменные физически могут быть дьявол знает где. Большая часть - 16KB двоичная область на NVRAM EEPROM, в упакованном двоичном формате. Остальное размазано по системе как джем по бутерброду пенсионера. Legacy формат, окаменевшее дерьмо бронтозавра , нечестивой своей киркой не трожь.
В CSV файле есть директивы препроцессора (ifdef, комментарии), дающие рудиментарное управление конфигурациями. Я заманчиво пообещал заказчику возможность редактировать раскладку переменных из Excel, но пока соскакиваю с темы. Пусть правят CSV руками.
По CSV скриптом на AWK генерятся развесистые данные, описывающие весь этот переменный бред в понятиях мест хранения и представления.
Библиотека на выходе даёт простейшее API вида set_variable_value(), get_variable_value(). И ей начхать на размер хранимых данных, место хранения, организацию и порядок.
А ещё наверху FUSE бантиком (опциональным). Чтобы показать красоту и благолепие. И была ночь, и был день шестой, и закачик сказал "это хорошо!". До того у него ехала крыша от устного и графического материала, сопровождавшего разработку, намечалась истерика от словосочетания "кодогенерация".
Наблюдательный персонаж скажет "ASN.1"! И будет почти теоретически прав. Самопальный, предметно ориентированный, ASN.1 PEP-подобный чугунный самокат с квадратными колёсами из массива ольхи.
Промышленное чугунное литьё самоката сопровождалось починянием примуса в NVRAM EEPROM драйвере. Авторы нашего Linux BSP как на подбор - резиновые изделия N2 размера XXXL. Гондоны и лицензия-суходрочеры, кто не понял.
Эмуляция ООП на структурах и указателях функций. Самодельное RTTI. Кустарный Reflection (пригодился в FUSE).
Насладитесь тестовой обвязкой, эмулирующей анально-ориентированный мир MTD в Linux.
EEPROM_IMAGE=eeprom.backup
ifeq ($(ARCH),i686)
$(MTD):
cp $(EEPROM_IMAGE) /tmp/$(EEPROM_IMAGE)
-sudo losetup $(LOOP_DEVICE) /tmp/$(EEPROM_IMAGE)
-sudo modprobe block2mtd block2mtd=$(LOOP_DEVICE)
endif
test: $(BINARY_TEST) $(MTD)
@rm -f *.gcda
./$(BINARY_TEST) $(MTD)
clean:
rm -fv $(OBJ) $(OBJ_TEST) $(DATA_FILE) $(BINARY) $(BINARY_TEST) *.gcda *.gcno core
ifeq ($(ARCH),i686)
-sudo rmmod block2mtd
-for i in /dev/loop*; do sudo losetup -d $$i; done
-rm -fv /tmp/$(EEPROM_IMAGE)
endif
Особенно хороши unit-тесты на Check + --coverage. Покрытие кода тестами предыдущей версии близко к 100%. В ggcov смотреть обожаю, радует глаз.
В настоящий момент дикий мужчина делает полиморфизм и reflection на Plain C + AWK + С Preprocessor.
Да содрогнется любой заказчик от недо-функциональщика на бреющем полёте метапрограммирования.
Cрезающего сосны под корень. Потом верхний слой почвы. Следом гранит. Но в итоге выходящий на около-земную орбиту.
BORN TO BE WIILD! Пусть сдохнут все кто нас не любит.
Гнусные подробности
Есть пространство переменных, имеющих имя и ID, могущих быть 5-ти типов (битовое поле, uint8, uint16, uint32, string и массивы из перечисленных). Их писать и читать. IPMI Config Variables, если кому-то что-то говорит.
Пространство переменных определено в ортодоксальном текстовом CSV-файле. Переменные физически могут быть дьявол знает где. Большая часть - 16KB двоичная область на NVRAM EEPROM, в упакованном двоичном формате. Остальное размазано по системе как джем по бутерброду пенсионера. Legacy формат, окаменевшее дерьмо бронтозавра , нечестивой своей киркой не трожь.
В CSV файле есть директивы препроцессора (ifdef, комментарии), дающие рудиментарное управление конфигурациями. Я заманчиво пообещал заказчику возможность редактировать раскладку переменных из Excel, но пока соскакиваю с темы. Пусть правят CSV руками.
По CSV скриптом на AWK генерятся развесистые данные, описывающие весь этот переменный бред в понятиях мест хранения и представления.
Библиотека на выходе даёт простейшее API вида set_variable_value(), get_variable_value(). И ей начхать на размер хранимых данных, место хранения, организацию и порядок.
А ещё наверху FUSE бантиком (опциональным). Чтобы показать красоту и благолепие. И была ночь, и был день шестой, и закачик сказал "это хорошо!". До того у него ехала крыша от устного и графического материала, сопровождавшего разработку, намечалась истерика от словосочетания "кодогенерация".
Наблюдательный персонаж скажет "ASN.1"! И будет почти теоретически прав. Самопальный, предметно ориентированный, ASN.1 PEP-подобный чугунный самокат с квадратными колёсами из массива ольхи.
Промышленное чугунное литьё самоката сопровождалось починянием примуса в NVRAM EEPROM драйвере. Авторы нашего Linux BSP как на подбор - резиновые изделия N2 размера XXXL. Гондоны и лицензия-суходрочеры, кто не понял.
Особо гнусные подробности
Эмуляция ООП на структурах и указателях функций. Самодельное RTTI. Кустарный Reflection (пригодился в FUSE).
Насладитесь тестовой обвязкой, эмулирующей анально-ориентированный мир MTD в Linux.
EEPROM_IMAGE=eeprom.backup
ifeq ($(ARCH),i686)
$(MTD):
cp $(EEPROM_IMAGE) /tmp/$(EEPROM_IMAGE)
-sudo losetup $(LOOP_DEVICE) /tmp/$(EEPROM_IMAGE)
-sudo modprobe block2mtd block2mtd=$(LOOP_DEVICE)
endif
test: $(BINARY_TEST) $(MTD)
@rm -f *.gcda
./$(BINARY_TEST) $(MTD)
clean:
rm -fv $(OBJ) $(OBJ_TEST) $(DATA_FILE) $(BINARY) $(BINARY_TEST) *.gcda *.gcno core
ifeq ($(ARCH),i686)
-sudo rmmod block2mtd
-for i in /dev/loop*; do sudo losetup -d $$i; done
-rm -fv /tmp/$(EEPROM_IMAGE)
endif
Особенно хороши unit-тесты на Check + --coverage. Покрытие кода тестами предыдущей версии близко к 100%. В ggcov смотреть обожаю, радует глаз.
no subject
no subject
че-та сегодня долбанутый день какой-то - сплошные выносы мозга.
no subject
мне сегодня с гордостью предложили быть qa-лидом вот, чем вообще пиздец вырвали сознание
no subject
за что тебя так?
no subject
no subject
no subject
no subject
no subject
no subject
Да, меня от него штырит.
no subject
no subject