Сообщения

С++ получить имя класса без RTTI

Собственно, предисторию не помню, но помню что в голову пришла идея получать имя класса из предефайненной константы(!) __PRETTY_FUNCTION__. И еще я знаю что во многих командах разработки RTTI не приветствуется. Вот код: template < typename Type > std :: string typeName () { std :: regex regex ( "Type = ([0-9A-Za-z:<>, ]*)" ); std :: smatch match ; std :: string str ( __PRETTY_FUNCTION__ ); std :: regex_search ( str , match , regex ); return match [ 1 ]. str (); } Общая идея в том, что бы передать тип в шаблонную функцию, а потом получить имя этого типа из названии функции через регулярку. Код работает в clang и gcc. Результат я кэширую, а потому, скорость работы функции не очень важна. Возможно, я расскажу про то, как кэширую в другой статье, так как происходит это интересным способом. Вот ссылка на лучшее решение и обсуждение работы в MSVC: https://stackoverflow.com/questions/35941045/can-i-obtain-c-type-names-in...

Git и Yandex.Disk

Изображение
Распределенность и гибкость Git'а позволили нам с братом реализовать очень интересный workflow. Я называю его "бомж-репозиторий". Смысл в том, что удаленный репозиторий хранится не на сервере, а в синхронизируемой папке Яндекс Диске. Достаточно что бы там лежала только папка ".git". Компьютеры разработчиков так же держат у себя локальные копии репозитория. 

Yandex-Disk на Ubuntu

Примерно 2 недели назад ext4 раздел примонтированный в /home перестал читаться, видимо после очередного аварийного выключения. Раньше такого со мной еще не было. Хорошо, что я делаю бекапы и Legacy данные утеряны не были, однако, это стало поводом задуматься над облачным хранением данных. Много памяти для хранения мне не надо, так как все свежие проекты хранятся на bitbucket, github и рабочем репозитории. Видео я на жестком не храню, фоточек у меня тоже не много.

Заметка про FreeBSD

Это просто заметка. Проблема в том, что я не ушел дальше настройки wi-fi из-за недостатка времени (неосилятор). В конечном итоге, я поставил Ubuntu 16.4.2, где исправили проблемы с которыми я столкнулся в прошлой версии. Хоть Ubuntu это не так круто как FreeBSD, она позволяет начать работать сразу окончания установки. Заметку эту я публикую что-бы избавиться от чувства бесполезно проведенных двух вечеров.

Unity3d Ubuntu серый экран

Причин серого экрана: 1. Нет node.js или npm 2. Права доступа 3. Кривые конфиги 4. Что-то еще Во первых, стоит посмотреть логи. Логи Unity сохраняет в ~/.config/unity3d/Editor.log В моем случае, редактор по какой-то причине пытался найти папку node_modules в каталоге /opt/Unity/Editor/Data/Tools/nodejs/bin Я же по счастливой случайности нашел ее в соседнем каталоге /opt/Unity/Editor/Data/Tools/nodejs/libs и скопировал в bin. После этого все заработало. Еще вот тут много полезной инфы https://forum.unity3d.com/threads/starting-unity-and-its-black.378326/

WebGL туториал 3 (Текстурированный куб)

Изображение
В двух предыдущих статьях мы разобрались со многими вещами. И вот на очереди текстуры. Статья должна быть простой, по сравнению с предыдущей. Мы добавим пару строчек в шейдер и одну функцию для загрузки текстуры, так же увеличим количество вершин объекта, что бы получился куб.

WebGL туториал 2 (Цветная плоскость в 3d)

Изображение
В предыдущей части туториала я описывал простейший случай рисования в WebGL. Теперь мы немного усложним имеющийся код. Изменения коснутся шейдеров, мы научимся передавать в них произвольные данные. Наконец появится пару строчек на тему алгебры. Нам придется задействовать матричные преобразования, чтобы говорить о 3D в привычном понимании. Вкратце, в конце туториала мы получим квадрат раскрашенный градиентным кружочком, который будет поворачиваться вслед за курсором. Полный код примера тут .