Экспериментариум
Иногда натыкаешься на программные ошибки, в местах где их меньше всего ожидаешь увидеть: в простом коде, который не менялся вот уже много лет и активно используется в разных частях программы.
Исправление таких “невозможных” ошибок обычно возможно только в случае особого стечения обстоятельств.
После обнаружения этой ошибки эмоции меня переполняли около суток.
... 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
Почесав репу и содрогнувшись от связанных с 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, жмет данные много быстрее, чем они читаются с диска. И при этом практически не нагружает процессор.
Это позволяет использовать его, например, для передачи по сети резервной копий базы данных — исходный файл огромный и упираешься в пропускную способность сети, а сжимать чем-то другим слишком долго.