Expertus metuit
Sergey Stolyarov | 2012-12-21 в 15:00

Отключаем насовсем использование инкрементальных обновлений метаинформации (pdiff):

# echo 'Acquire::PDiffs "false";' > /etc/apt/apt.conf.d/50nopdiff

Одноразово можно так сделать:

# apt-get update -o Acquire::Pdiffs=false
Sergey Stolyarov | 2012-11-22 в 21:55

Тема заметки: конвертация музыкальных файлов (flac, mp3, wav, ape).

Меньше слов, больше дела.

Все скрипты ниже даны исключительно для образовательных целей, последние их версии всегда на гитхабе (не копипастите их с этой страницы):

git clone https://github.com/sigsergv/music-tools.git
Sergey Stolyarov | 2012-11-20 в 16:01

Проблема: при отправке письма через SMTP-сервер, в письмо добавляются заголовки, содержащие ip-адрес машины, с которой было отправлено письмо, выглядит это обычно так:

Received: from your.home-address.tld
        by mx.mailserver.tld with ESMTPS id ID1.1.2.3.4.5.6.7
        (version=TLSv1/SSLv3 cipher=OTHER);

Здесь your.home-address.tld — это как раз домашний адрес (с которого письмо отправлялось), а mx.mailserver.tld — адрес почтового сервера. Exim по умолчанию использует такой формат заголовка.

Цель: настроить SMTP-сервер исходящей почты, чтобы исключить из заголовка Receieved адрес домашней машины.

Рабочее окружение: Debian, Exim4

Sergey Stolyarov | 2012-08-09 в 16:14

Решил детально поисследовать редактор Sublime Text 2, который в последнее время стал сильно популярен в интернетах. В целом программа хорошая, вполне вполне сгодится как профессиональный текстовый редактор. Отлично подойдёт для программиста-на-всём (код раскрашивает, скобки подсвечивает).

Начальная конфигурация вполне удобная, хоткеи отторжения не вызывают, но требуют привыкания после Eclipse, например. Впрочем, все хоткеи настраиваемые.

Огромные возможности по настройке — всё делается через текстовые конфиги прямо в самом редакторе. Можно писать расширения на питоне. И этих расширений уже настрогал огромное количество.

Это была вводная часть, а сейчас про мой опыт работы и настройки редактора (будет расширяться со временем).

Sergey Stolyarov | 2012-07-25 в 16:00

Дропбокс некоторые свои функции реализует через браузер, для этого он генерит спецссылки и открывает их в браузере. При этом алгоритм определения, какой именно браузер открывать, не особо прозрачный и понятный (речь пойдёт только о дебиане/убунте).

  1. Сначала dropbox ищет исполнимый файл x-www-browser, если таковой есть, то ссылка передаётся ему аргументом командной строки. Поиск файла идёт сначала в /usr/lib/dropbox/, а затем в каталогах из переменной окружения $PATH.
  2. Затем проверяется значение переменной окружения $BROWSER, если там что есть, то оно запускается (со ссылкой в первом аргументе).
  3. Затем пытается запустить /usr/bin/sensible-browser
  4. Затем (непонятно зачем) — /usr/bin/x-terminal-emulator

Чтобы в дебиане ссылки открывались в браузере, который указан в переменной окружения $BROWSER:

update-alternatives --remove-all x-www-browser

Всё вышенаписанное получено эмпирическим путём и не обязательно соответствует реальной логике работы программы.

Sergey Stolyarov | 2012-03-08 в 13:33

Задача: нужно поставить Market (а теперь он называется Play) на андроидный виртуальный девайс. Широко известная в узких кругах процедура с копирование файла system.img больше не работает, пришлось искать новый способ.

Для работы Market на девайсе должен быть установлен Google Services Framework (gsf), это библиотека для работы с гуглоаккаунтами, нужна практически для всех гугловых приложений. В составе SDK уже есть образы с включённым gsf, именно на виртуальный девайс, основанный на таком образе, мы и будем ставить маркет.

Sergey Stolyarov | 2012-02-26 в 21:32

Обновлено 2015-09-17: исправлены ссылки на программы

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

Вот этим мы и займёмся. Традиционно здесь всё рассказывается в контексте линукса, с остальными операционками разбирайтесь сами, хотя принцип ровно такой же.

Sergey Stolyarov | 2011-08-03 в 15:50

Задача: есть PDF, в котором очень широкие поля, плюс куча мусора на них типа «Украдено в Хилтоне», поэтому нужно поля по максимум отрезать. Можно, конечно, рыть интернеты в поисках подходящей программы, но за короткий срок этого сделать не удалось.

Всё решилось совершенно неожиданным путём: ставим пакет python-pypdf, пишем простейший питоновский скрипт и получаем ровно что нужно.

Sergey Stolyarov | 2010-08-27 в 23:51

Внимание! Gimp 2.8 уже официально выпущен, поэтому статья уже неактуальна.

Собираем пакет с гимпом (девелоперскую ветку 2.7) для дебиана. Хоть способ и не совсем правильный и каноничный, но зато быстрый и работающий (quick and dirty). Сразу отмечу, что никакие зависимости в итоговый пакет не прописываются!

Обновление от 23 апреля 2012 г.: gegl обновлён до версии 0.2

Обновление от 14 мая 2012 г.: номер версии обновлён до 2.8

Ставим нужные пакеты для сборки, включая git:

sudo apt-get build-dep gimp
sudo aptitude install git
sudo aptitude install libtool ruby gtk-doc-tools libdbus-1-dev libtiff4-dev

Для сборки на 64-битной системе нужно также поставить пакет ia32-libs-dev.

Создаём новый пустой каталог (например, /home/user/gimp-build), в котором и будем всё собирать. Выкачиваем для начала гимп и сопутствующие библиотеки из git (довольно длительный процесс, так что запасаемся терпением), команды запускаем внутри каталога /home/user/gimp-build:

git clone git://git.gnome.org/babl
git clone git://git.gnome.org/gegl
git clone git://git.gnome.org/gimp
Sergey Stolyarov | 2010-08-26 в 23:15

Включаем микрофон или ещё какой источник звука к линейному/микрофонному входу.

Затем выбираем в alsamixer, например, нужный источник в capture device.

Запускаем собственно программу:

ffmpeg -f alsa -ac 2 -i hw:0 -acodec libmp3lame -ab 32k -ac 2 -f rtp rtp://192.168.1.2:5000

С аргументами можно играться, вещание нормально ловится, задержка минимальная.

© 2006—2024 Sergey Stolyarov | Работает на pyrengine