Недавно набрел на забавную игру на гитхабе - Terasology. По сути, люди делают из изначально демки с использованием вокселей полноценную игру с геймплеем от MineCraft с такой-то ГРАФИКОЙ. Скриншоты выглядят чертовски круто, но сама игра в грубокой преальфе. Поэтому набросал небольшой несерьезный пост по игре.
воскресенье, 6 ноября 2016 г.
суббота, 22 октября 2016 г.
Re: Qt Script not dead
В прошлый раз я написал о том, что по-хорошему, с Qt Script надо бы куда-нибудь мигрировать пока не поздно..
И тут же поймал себя на мысли, что, возможно, я ошибаюсь и сделать автоматическую привязку слотов и свойств классов Qt в целевом языке займет чрезвычайно много времени, или вообще невозможно без влезания во внутренние структуры Qt, которые недоступны и недокументированы.
С этой целью и решил сделать свою библиотеку и привязать возможность скриптования с использованием Qt через Duktape, как основного движка для JS.
суббота, 15 октября 2016 г.
Когда Q_DECLARE_METATYPE недостаточно
Недавно столкнулся с ситуацией, когда макроса из заголовка оказывается недостаточно для полноценной работы с рефлексией и слотами в Qt.
воскресенье, 7 августа 2016 г.
Qt Script not dead
Есть в Qt такой модуль, который уже с 5-й версии является deprecated и полноценной замены ему, по моему мнению, пока не предвидится. Я говорю, конечно же, о Qt Script и его использовании для реализации скриптов со стороны пользователя .
воскресенье, 3 июля 2016 г.
git squash
Недавно понял, зачем некоторые мейнтейнеры просят делать git squash в репозиториях при слиянии с основной веткой разработки.
пятница, 21 августа 2015 г.
Мой опыт статического анализа кода с PVS-Studio
Имеется у меня графический
движок, с уклоном в разработку игр, который вырос из студенческого проекта
и разрабатывается мной в свободное от основных занятий время.
Писался он изначально
из-за желания изучить OpenGL, и поднять уровень знаний языка C++ и его
инфраструктуры, а также, потому что хотелось написать игру. Игра так и осталась
впереди, а движок пришлось несколько раз переделать, из-за проблем в коде.
Сейчас, я частенько
дописываю те или иные возможности в данном проекте. Со студенческих времен он
сильно изменился: появилась более-менее нормальная архитектура, появились тесты,
которые позволяют худо-бедно проверять стабильность серьезных изменений в
архитектуре проекта, которые нет-нет, да и возникнут.
Статический анализ до
этого я применял на данном проекте, но не срослось с ним: Cppcheck последний
раз, отработав часа три, показал три замечания и все оказались несущественными,
так как могли воспроизвестись только на древних компиляторах.
Начитавшись статей на хабре
и других ресурсах, решил попробовать PVS-Studio и прогнать его из-за интереса
на своем проекте и посмотреть, что из этого получится.
Результаты первого
прохода меня удивили: 80+ ошибок нашлось в главном проекте! Конечно, некоторые
оказались дубликатами или не приводили к серьезным проблемам (пока), но, тем не
менее, исправить предстояло много чего. Конечно же, подвел старый код, в
котором оказалось много проблем:
деструкторы, которые должны были быть виртуальными, отсутствие в
некоторых местах проверок на NULL и прочее. Однако и в относительно новых
участках кода нашлись странные вещи.
Приведу несколько примеров,
чтобы не быть голословным.
Например, оказалось,
что PVS-Studio хорошо находит дублирующие проверки:
Возможно, здесь остались следы от процесса отладки
некого бага, но проверка явно здесь не нужна (animationswayinstance.cpp).
Также обнаружилась целое множество однотипных сообщений
об ошибках:
Оказалось, что проблема находилась в макросе: был
неверно выбран тип поля. Код работал, но расход памяти благодаря замене типа на
правильный сократился (object.h):
Нашлась и куда более серьезная ошибка в самописном
загрузчике формата TGA (tgaloader.cpp).
Ошибка здесь заключается в том, что в сравнениях необходимо
изменить равенство на неравенство, так как это следует из последующего текста. Приятно, что статический анализатор нашел
такую серьезную ошибку.
Ещё интересной подсказкой для меня стало требование замены CreateThread:
Ещё интересной подсказкой для меня стало требование замены CreateThread:
Каким-то образом, я пропустил то, что это API стало deprecated, и было довольно приятно узнать, что его стоит заменить.
PVS-Studio для моего проекта показал гораздо лучшие результаты, чем Cppcheck по количеству найденных ошибок. Хоть здесь и приведены лишь наиболее критичные, но применение данного инструмента позволило мне существенно повысить качество моего небольшого проекта.
четверг, 16 апреля 2015 г.
Hello world!
Вдохновившись замечательным видео, написал хелловорлд на JavaScript.
Вот здесь уже сделали эту задачу и достигли немалых успехов, однако я попробовал повторить подобный успех и попытался минимизировать количество строковых литералов, чисел и символов, используемых в программе.
Впрочем победить вариант по ссылке в виде ёлочки не удалось. Тем не менее, код получился немного непохожим на другие решения, так что прилагаю (запускать в консоли Chrome).
Вот здесь уже сделали эту задачу и достигли немалых успехов, однако я попробовал повторить подобный успех и попытался минимизировать количество строковых литералов, чисел и символов, используемых в программе.
Впрочем победить вариант по ссылке в виде ёлочки не удалось. Тем не менее, код получился немного непохожим на другие решения, так что прилагаю (запускать в консоли Chrome).
Подписаться на:
Сообщения (Atom)





