Экспериментариум
Иногда натыкаешься на программные ошибки, в местах где их меньше всего ожидаешь увидеть: в простом коде, который не менялся вот уже много лет и активно используется в разных частях программы.
Исправление таких “невозможных” ошибок обычно возможно только в случае особого стечения обстоятельств.
После обнаружения этой ошибки эмоции меня переполняли около суток.
... Read More
SSH мультиплексирование
28 June 2015
Некоторое время назад пришлось разобраться с мультиплексированием в SSH.
После этого повторные подключения по SSH выполняются мгновенно.
... Read More
Получение идентификатора файла для Symbol-сервера
23 June 2015
У Microsoft для создания груды файлов с отпладочной информацией есть утилита symstore.exe.
Эта утилита по сути копирует файлы из одного места в другое, при этом достаточно хитрым образом формирует путь к новому файлу.
Недавно со мной поделились алгоритмом формирования этого загадочного пути.
... Read More
Производительность git-lfs
21 June 2015
Кратенько о 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
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
VNC сервер в Ubuntu 13.04
29 May 2013
Оказывается, в 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 работать отказался.
Настройка svnsync для существующей копии репозитория
5 August 2012
Некоторое время назад встала задача запустить svnsync поверх существующей копии репозитория (проблема заключается в том, что svnsync init требует для настройки реплики пустой репозиторий).
... Read More
Жесткая перезагрузка Linux
23 May 2011
К сожалению, иногда команды reboot в Linux не достаточно для перезагрузки. Из-за этого появляется желание перезагрузить комп, находящийся за несколько километров, без выполнения корректной остановки демонов и т.п., то есть удаленно его Reset-нуть.
... Read More
Сверхбыстрое сжатие — lzo
12 April 2010
Данная программа для потокового сжатия была мной обнаружена, когда надо было обеспечить регулярную (раз в сутки) передачу порядка 40Гбайт данных с одного сервера на другой по сети 100Мбит. Время копирования, в этом случае составляло чуть меньше часа. Пришла мысль передавать файл в сжатом виде, и после поиска в интернете я набрел на LZO (http://www.oberhumer.com/opensource/lzo/).
Основная прелесть данного архиватора в том, что он, в отличие, скажем, от GZip, жмет данные много быстрее, чем они читаются с диска. И при этом практически не нагружает процессор.
Это позволяет использовать его, например, для передачи по сети резервной копий базы данных — исходный файл огромный и упираешься в пропускную способность сети, а сжимать чем-то другим слишком долго.