Expertus metuit
Sergey Stolyarov | 2013-05-21 в 00:21

Создать файл ~/.gimp-2.8/fonts.conf вот с таким содержимым:

<fontconfig>
  <match target="font">
    <edit name="rgba" mode="assign">
      <const>none</const>
    </edit>
  </match>
</fontconfig>

Изначально проблема проявляется так: на краю отрендеренного текста цветные пятна.

Sergey Stolyarov | 2013-05-13 в 18:15

Это древний текст, вместо него была написана более общая и систематизированная статья о многих аспектах использования SSH: Эффективная работа с SSH

В SSH есть крайне полезная фича, позволяющая организовать прозрачный проброс трафика через практически любой SSH-сервер. Принцип туннелирования простой: подключаемся к ssh-серверу со специальными опциями и получаем SOCKS-прокси, висящий на указанном в опциях порту локальной машины. Что самое приятное — на удалённой машине не надо ставить никакой софт, плюс необязательно быть суперпользователем, достаточно обычного аккаунта.

Дальше я детально опишу сценарий настройки и конфигурации такой системы.

Sergey Stolyarov | 2013-04-05 в 10:42

В файле ~/.ssh/config можно писать алиасы для используемых хостов, указывать для разных хостов разные ключи и так далее.

Host home
    HostName home.example.com
    Port 1488
    Ciphers arcfour,blowfish-cbc
    Compression yes
    CompressionLevel 9


Host github.com
    IdentityFile ~/.ssh/id_rsa-github

Host bitbucket.org
    IdentityFile ~/.ssh/id_rsa-bitbucket
Sergey Stolyarov | 2013-03-06 в 15:14

    Здесь написано о GnuPG, как им пользоваться и при этом понимать, что делаешь. Изначально статья была написана в 2013 году, несколько раз слегка обновлялась, а в 2023 была значительно переработана и дополнена актуальной информацией.

    GnuPG (GNU Privacy Guard, официальный сайт gnupg.org) — это опенсорсная реализация открытого стандарта OpenPGP, изложенного в RFC 4880. GnuPG состоит из набора программ и библиотек, однако нас будет интересовать только консольная программа gpg. Она существует под все операционные системы, однако наиболее комфортно используется в linux и macos. По gnupg есть множество материалов, однако из-за высокой сложности базовых концептов, всегда есть что добавить или объяснить.

    В линуксах gnupg ставится из штатного репозитория, для макоси можно поставить из macports, brew, но я рекомендую GPG Suite. Все эти способы предоставляют вам консольную программу gpg с одинаковыми командами на всех операционках. Текущая актуальная версия GnuPG 2.2 и вся статья отталкивается именно от неё. Многие команды в принципе применимы и для более старых версий.

    Между разными версиями gnupg формат хранения данных в каталоге с конфигурацией несколько раз менялся и связанные с этим термины типа keyring уже во многом устарели, поэтому в обновлённой версии я постараюсь не углубляться в конкретные детали реализации и слова типа keyring/кейринг тут использоваться не будут. Чтобы подчеркнуть относительность конфигурации, я буду использовать слово конфиг, под которым вы должны понимать выбранный каталог с конфигурацией. Также я не буду вдаваться в эзотерические команды или свойства подписей, который никем нигде не используются.

    Когда я рассказываю о концепциях, то обычно использую термин OpenPGP, когда рассказываю о конкретных прикладных командах, то использую gpg или gnupg.

    Sergey Stolyarov | 2013-02-22 в 11:29

    Типичная ситуация: коннектимся с машины M1 на машину M2 через SSH, затем на машине M2 меняем юзера через sudo и хотим там запустить X11-приложение, чтобы оно открылось на дисплее машины M1. Это может быть, например, отладчик или графическая гуйня к базе.

    Дальше я по шагам распишу все этапы подключения с комментариями.

    Sergey Stolyarov | 2013-02-16 в 18:22

    Постоянно нужно и всегда забываю.

    % arecord - | aplay -
    
    Sergey Stolyarov | 2013-02-07 в 12:02

    encfs позволяет прозрачно шифровать каталог с файлами, используется достаточно надёжный метод, такой каталог можно сравнительно безбоязненно положить в Dropbox, например. Для доступа этот каталог монтируется через fuse с вводом пароля, после чего с ним можно работать как с обычным каталогом, все данные перешифровываются на лету.

    В debian/ubuntu ставится в два шага:

    # apt-get install encfs
    # adduser USER fuse
    

    После чего перелогиниться, чтобы пользователь проявился в группе fuse.

    Sergey Stolyarov | 2013-02-04 в 11:09

    Эта вот строчка мне каждый раз мозг выносит — куда воткнуть NOPASSWD в sudoers, чтобы заработало:

    %sudo   ALL=(ALL:ALL) ALL
    

    А разгадка проста:

    %sudo   ALL=(ALL:ALL) NOPASSWD:ALL
    

    И ещё одни важные грабли: срабатывает последнее правило, которое заматчило. Например, если вы хотите для себя одного сделать исключение в виде NOPASSWD, добавьте это правило в самом конце файла для гарантии, иначе может не сработать.

    Sergey Stolyarov | 2013-01-22 в 15:29

    Это древний текст, вместо него была написана более общая и систематизированная статья о многих аспектах использования SSH: Эффективная работа с SSH

    Аккаунт на ssh-сервере можно легко использовать для создания SOCKS-прокси, причём для этого достаточно обычного непривилегированного аккаунта. Всё делается очень просто (подключаемся к серверу example.com под юзером user):

    % ssh -D 127.0.0.1:13388 [email protected]
    

    Запускается с виду обычная ssh-сессия, оставляем её в таком виде, а дальше указываем в клиенте (веб-браузере, например) адрес SOCKS-прокси 127.0.0.1, порт 13388 и пользуемся.

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

    Другой полезный рецепт — создание туннеля до конкретного сетевого сервиса, работающего на удалённом сервере или доступного только с удалённого сервера. Делается это так:

    % ssh -L LOCAL_ADDR:2222:HOST_ADDR:80 [email protected]
    

    LOCAL_ADDR можно опустить, тогда будут использованы все локальные сетевые интерфейсы:

    % ssh -L 2222:HOST_ADDR:80 [email protected]
    

    При этом происходит следующее: все соединения с локальной машины к адресу LOCAL_ADDR:2222 (для бо́льшей безопасности можно указывать LOCAL_ADDR равным 127.0.0.1 или localhost) будут перенаправляться через SSH-соединение и уже с компьютера на другом конце отправляются на адрес HOST_ADDR:80. По такому принципу можно пробрасывать любое сетевое соединение; самый простой пример — до http-сервера, видного только в сети ssh-сервера, или до сервера базы данных.

    Вот пример для пробрасывания подключения до сервера mysql, доступного в удалённой сети по адресу 192.168.3.12 и порту 3306:

    % ssh -L 127.0.0.1:5900:192.168.3.12:3306 [email protected]
    

    Естественно, все эти опции можно задавать через конфиг ssh-клиента, создавая нечто вроде «профилей подключения» для разных туннелей и сервисов. Об этом я напишу чуть позднее.

    Другие статьи на эту же тему

    История изменений

    • 2013-01-22: изначальная версия
    Sergey Stolyarov | 2013-01-21 в 16:33

    Иногда нужно внедрить шрифты в уже существующий 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 на вашей машине.

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