Экспериментариум

Сегодня у меня наконец-то от LAMP-стека осталась только буква L.

Теперь вместо связки Linux+Apache+MySQL+PHP у меня используется Linux+Nginx.

Далее будет небольшая хронология событий.

... Read More

QWERY+AZERTY клавиатура Волей случая мне пришлось познать работу с клавиатурой в игровом проекте. Надо отметить, что тема эта оказалась сложее, чем ожидалось. И, к примеру, в Unreal Engine и Cry Engine с клавиатурой есть проблемы. Обычно их не видно, но в процессе интернационализации они проявляются очень сильно.

Далее будут использоваться термины Windows, но общая идея справедлива для всех операционных систем.

Беда в том, что для клавиатуры существует не только несколько понятий “нажатости” клавиши:

  1. клавиша физически нажата на клавиатуре (состояние клавиши по данным DirectInput);
  2. пришло событие о нажатии клавиши (события WM_KEYDOWN/WM_KEYUP из операционной системы).

Но и несколько способов идентификации клавиши:

  1. по физической позиции на клавиатуре (сканкод);
  2. по символу, который соответствует данной клавише.
... Read More

Некоторое время назад для диагностики проблем с антивирусом мне понадобился .exe файл без каких-либо внешних зависимостей.

... Read More

Достаточно длительное время я работал с UnrealEngine.

Основным моим занятием было решение проблем связанных непосредственно с движком, которых там, как и в любом крупном продукте хватает.

Для работы мы использовали изрядно подлатанную локальную сборку UnrealEngine. При этом по возможности отправляли изменения в исходный репозиторий к EpicGames в качестве Pull Requests-ов.

Недавно я решил почесать своё чсв удовлетворить свое любопытство и собрать статистику по контрибьюторам.

... Read More

Некоторое время назад добавили в проект на UnrealEngine виджет WebBrowser.

Достаточно быстро выяснилось, что этот виджет отсутствует под Linux. Из-за этого развалился кукинг, в том числе и серверной части.

Путем наворачивания костылей удалось восстановить сборку проекта без WebBrowser-а под Linux, но так же было решено сделать это чуть позже по-человечески. То есть научиться собирать WebBrowser под Linux.

... Read More

Одно из моих поделий (https://github.com/bozaro/octobuild) для установки под Windows упаковывается в .msi-пакеты. И чтобы не держать для сборки Windows, я заморочился и разобрался, как собираться из под Windows.

... Read More

К сожалению, дедупликация сама собой в Btrfs не происходит.

Для неё нужен пинок снаружи.

Для этого можно воспользоваться утилитой dupremove (https://github.com/markfasheh/duperemove):

#!/bin/sh
/usr/local/sbin/duperemove -dr /var /usr /home

По работе приходится активно латать Unreal Engine. При сборке нового редактора порождается много толстых .pdb-файлов, которые мы выкладываем на самопальным Symbol Server.

Сам Unreal Engine удалось научить подгружать данные .pdb в случае краша и отображать детальный стек вызовов.

Подгрузка .pdb категорически отказывалась работать на сборочном сервере. И вот вчера я наконец-то заборол эту проблему…

... Read More

Иногда натыкаешься на программные ошибки, в местах где их меньше всего ожидаешь увидеть: в простом коде, который не менялся вот уже много лет и активно используется в разных частях программы.

Исправление таких “невозможных” ошибок обычно возможно только в случае особого стечения обстоятельств.

После обнаружения этой ошибки эмоции меня переполняли около суток.

... Read More

Некоторое время назад пришлось разобраться с мультиплексированием в SSH.

После этого повторные подключения по SSH выполняются мгновенно.

... Read More