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

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

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

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

... Read More

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

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

... 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

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 работать отказался.

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

... Read More

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

... Read More

Данная программа для потокового сжатия была мной обнаружена, когда надо было обеспечить регулярную (раз в сутки) передачу порядка 40Гбайт данных с одного сервера на другой по сети 100Мбит. Время копирования, в этом случае составляло чуть меньше часа. Пришла мысль передавать файл в сжатом виде, и после поиска в интернете я набрел на LZO (http://www.oberhumer.com/opensource/lzo/).

Основная прелесть данного архиватора в том, что он, в отличие, скажем, от GZip, жмет данные много быстрее, чем они читаются с диска. И при этом практически не нагружает процессор.

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