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

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

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

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

... Read More

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

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

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

... Read More

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

После этого повторные подключения по SSH выполняются мгновенно. Для его включения под Linux необходимо выполнить команды:

... Read More

У Microsoft для создания груды файлов с отпладочной информацией есть утилита symstore.exe.

Эта утилита по сути копирует файлы из одного места в другое, при этом достаточно хитрым образом формирует путь к новому файлу.

Недавно со мной поделились алгоритмом формирования этого загадочного пути.

... Read More

Кратенько о git-lfs

8-ого апреля 2015 года GitHub анонсировал git-lfs.

Суть идеи здравая:

Так как в рабочей копии git всегда хранится вся история изменения файлов и из-за этого работать с большими файлами становится затруднительно. Они предлагают относительно элегантное решение, которое позволяет хранить большие файлы отдельно от git-репозитория.

При этом все взаимодействие с репозиторием и большими файлами (добавление/история/просмотр изменений и т.п.) происходит прозрачно для пользователя.

На момент анонса сам GitHub не предоставлял данный функционал. Мы поигрались с github/git-lfs и github/git-lfs, после чего пришли к выводу, что реализация еще слишком сырая.

Я оставил заявку на бета-тестирование и стал жать…

... Read More

Plex внутри libvirt
2 February 2015

Недавно озадачился установкой Plex-сервера внутри виртуальной машины (libvirt qemu внутри Ubuntu).

Долго не мог понять, почему телевизор видит Plex-сервер только очень небольшое время после его запуска.

Способ лечения проблемы оказался следующим:

echo -n 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

... Read More

Git as Subversion
21 October 2014

Двуликий сервер Некоторое время назад при старте нового проекта было решено попробовать использовать Git вместо Subversion. Через некоторое время коллектив разделился на тех, кто любит Git (программисты), и тех, кто его ненавидит (дизайнеры и художники). Эксперимент по замене Subversion на Git провалился и на горизонте замаячила перспектива возвращения Subversion.

Почесав репу и содрогнувшись от связанных с Subversion воспоминаний мужики решили: «А что, мы же программисты!» и запилили свой Subversion с Git-ом и печеньками. Так родился проект git-as-svn.

Теперь мы можем использовать и Git, и Subversion с одним и тем же репозиторием. Причем доступ через Subversion напрямую использует данные Git-репозитория, в отличие, скажем, от SubGit, где для Subversion используется отдельный репозиторий.

... Read More

Оказывается, в Ubuntu можно включить человеческий доступ по VNC.

Для этого нужно добавить в /etc/lightdm/lightdm.conf строки:

[VNCServer]
enabled=true
command=Xvnc -SecurityTypes None
depth=16
width=1280
height=960

И перезапустить lightdm (sudo service lightdm restart).

После этого, при попытке подключиться к компьютеру по VNC мы увидим нормальное окно приветствия.

Unity, кстати, по VNC работать отказался.

... Read More

Некоторое время назад встала задача запустить svnsync поверх существующей копии репозитория (проблема заключается в том, что svnsync init требует для настройки реплики пустой репозиторий).

... Read More

К сожалению, иногда команды reboot в Linux не достаточно для перезагрузки. Из-за этого появляется желание перезагрузить комп, находящийся за несколько километров, без выполнения корректной остановки демонов и т.п., то есть удаленно его Reset-нуть. Выполнить это можно командой:

... Read More