Аккаунт на ssh-сервере очень легко использовать для создания SOCKS-прокси, причём для этого достаточно обычного непривилегированного аккаунта. Всё делается очень легко:
% ssh -D 127.0.0.1:13388 user@example.com
После этого указываем в клиенте (веб-браузере, например) адрес SOCKS-прокси 127.0.0.1, порт 13388 и пользуемся.
По сути ssh-клиент организует туннель, по которому гоняется трафик. Особенным плюсом является то, что на стороне сервера не нужно вообще никакого специального софта для создания туннелей.
Ещё один полезный рецепт — создание туннеля до сетевого сервиса, работающего на удалённом сервере. Делается это так:
% ssh -L LOCAL_ADDR:2222:HOST_ADDR:80 user@example.com
При этом происходит следующее: все соединения к адресу LOCAL_ADDR:2222 (для бо́льшей безопасности можно указывать LOCAL_ADDR равным 127.0.0.1) будут перенаправляться через SSH-соединение на адрес HOST_ADDR:80. Таким образом можно пробрасывать любое сетевое-соединение; самый простой пример — до http-сервера, видного только в сети ssh-сервера.
Вот пример:
% ssh -L 127.0.0.1:5900:127.0.0.1:5900 user@example.com
Иногда нужно внедрить шрифты в уже существующий PDF-файл, но ссылки на шрифты в котором относительные, например, команда pdffonts показывает такое:
% pdffonts build.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Helvetica Type 1 no no no 2 0
Helvetica-Bold Type 1 no no no 3 0
ZapfDingbats Type 1 no no no 249 0
Courier Type 1 no no no 252 0
Symbol Type 1 no no no 253 0
Helvetica-Oblique Type 1 no no no 261 0
Helvetica-BoldOblique Type 1 no no no 430 0
Видно, что все шрифты не внедрённые (колонка emb). Спасает gs:
gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=output.pdf build.pdf
После её выполнения всё в порядке:
% pdffonts output.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
BOTQQP+Helvetica Type 1C yes yes no 619 0
BHJYCF+Helvetica-Bold Type 1C yes yes no 617 0
AUENQH+ZapfDingbats Type 1C yes yes yes 865 0
KTOSAE+Symbol Type 1C yes yes no 874 0
UMOKIT+Courier Type 1C yes yes no 872 0
LJPUJQ+Helvetica-Oblique Type 1C yes yes no 901 0
YQLVGH+Helvetica-BoldOblique Type 1C yes yes no 1408 0
P.S.
На названия конкретных шрифтов не обращайте внимания, по сути там будут те шрифты, в которые преобразуются алиасы типа Helvetica на вашей машине.
Отключаем насовсем использование инкрементальных обновлений метаинформации (pdiff):
# echo 'Acquire::PDiffs "false";' > /etc/apt/apt.conf.d/50nopdiff
Одноразово можно так сделать:
# apt-get update -o Acquire::Pdiffs=false
Тема заметки: конвертация музыкальных файлов (flac, mp3, wav, ape).
Меньше слов, больше дела.
Все скрипты ниже даны исключительно для образовательных целей, последние их версии всегда на гитхабе (не копипастите их с этой страницы):
git clone https://github.com/sigsergv/music-tools.git
Проблема: при отправке письма через 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
Во многих организациях есть внутренние проекты, которыми занимается программисты ИТ-отдела. Такие проекты часто скатываются в говно (как программное обеспечение), ибо релизить не надо, все пользователи под боком, на проблемы апгрейда-миграции пофиг — весьма распространённое мнение, между прочим. Намерения у программистов может и благие, но результат почти всегда плачевен: обязательно настанет время, когда прибить новый костыль к программе окажется некуда.
Совсем печально становится, когда такой проект достаётся «в наследство» от предыдущих поколений программистов. Многие программисты считают, что такой проект — это карьерный тупик, поэтому найти квалифицированного разработчика на легаси (=legacy) проект часто очень сложно — они воспринимают такую работу как нечто вроде ИТ-ассенизатора. В чём-то они правы, однако не всё так плохо, поскольку такая работа предоставляет редкий шанс проявить себя в роли «решателя проблем» — весьма полезный навык, пригодится в будущем, если решите пойти по менеджерской лестнице.
Решил детально поисследовать редактор Sublime Text 2, который в последнее время стал сильно популярен в интернетах. В целом программа хорошая, вполне вполне сгодится как профессиональный текстовый редактор. Отлично подойдёт для программиста-на-всём (код раскрашивает, скобки подсвечивает).
Начальная конфигурация вполне удобная, хоткеи отторжения не вызывают, но требуют привыкания после Eclipse, например. Впрочем, все хоткеи настраиваемые.
Огромные возможности по настройке — всё делается через текстовые конфиги прямо в самом редакторе. Можно писать расширения на питоне. И этих расширений уже настрогал огромное количество.
Это была вводная часть, а сейчас про мой опыт работы и настройки редактора (будет расширяться со временем).
Дропбокс некоторые свои функции реализует через браузер, для этого он генерит спецссылки и открывает их в браузере. При этом алгоритм определения, какой именно браузер открывать, не особо прозрачный и понятный (речь пойдёт только о дебиане/убунте).
- Сначала dropbox ищет исполнимый файл
x-www-browser, если таковой есть, то ссылка передаётся ему аргументом командной строки. Поиск файла идёт сначала в/usr/lib/dropbox/, а затем в каталогах из переменной окружения$PATH. - Затем проверяется значение переменной окружения
$BROWSER, если там что есть, то оно запускается (со ссылкой в первом аргументе). - Затем пытается запустить
/usr/bin/sensible-browser - Затем (непонятно зачем) —
/usr/bin/x-terminal-emulator
Чтобы в дебиане ссылки открывались в браузере, который указан в переменной окружения $BROWSER:
update-alternatives --remove-all x-www-browser
Всё вышенаписанное получено эмпирическим путём и не обязательно соответствует реальной логике работы программы.
Перевод статьи Майкла Чёрча Don’t waste your time in crappy startup jobs.
То, о чём я хочу рассказать, справедливо для июля 2012 г. 15 лет назад необязательно было так же, и не факт, что будет справедливо через год. Но в данный момент это абсолютно верно для большинства людей в достаточной степени, так что я считаю обязанным высказаться. Нынешний мир ИК-стартапов (ИК=инвестиционный капитал / venture capital) — я его нежно называю ИК-стан — является, мягко говоря, тотально напрасной тратой времени для большинства вовлечённых людей.
Задача: нужно поставить Market (а теперь он называется Play) на андроидный виртуальный девайс. Широко известная в узких кругах процедура с копирование файла system.img больше не работает, пришлось искать новый способ.
Для работы Market на девайсе должен быть установлен Google Services Framework (gsf), это библиотека для работы с гуглоаккаунтами, нужна практически для всех гугловых приложений. В составе SDK уже есть образы с включённым gsf, именно на виртуальный девайс, основанный на таком образе, мы и будем ставить маркет.