Expertus metuit
Sergey Stolyarov | 2021-03-24 в 22:34

Я много работаю с текстом и активно пользуюсь клавиатурными сочетаниями (keyboard shortcuts). На макбуке и в макоси в целом писать текст очень удобно из-за мощной и эргономичной системы клавиатурных сочетаний, они предсказуемо и одинаково работают в разных приложениях. Однако много людей такой полезной функциональностью не пользуются или даже не знают про её существование, а ведь иначе работа с компактной клавиатурой макбука сильно тормозится.

Клавиатура в мак-устройствах отличается от привычной ПК-клавиатуры набором модальных клавиш. Вместо привычных Shift, Alt, Control, Win там другие клавиши: Shift, Option, Control, Command и Fn. Только Shift (и частично Fn) работает одинаково на обоих системах, но остальные клавиши — нет, например, для сохранения документа стандартное сочетание в маке Command-S вместо Ctrl-S в винде.

В этом тексте я ограничусь только командами редактирования и навигации по документам, они применимы везде, где можно печатать текст: текстовые редакторы, поля ввода в формах, браузер и так далее. Большой (но не полный) список доступных можно найти на сайте apple: https://support.apple.com/en-gb/HT201236.

Apple использует специальные символы для обозначения этих клавиш:

  • Shift —
  • Option/Alt —
  • Control/Ctrl — ^
  • Command —

Однако в этом тексте у меня только обычные осмысленные названия клавиш типа Ctrl-A. Также все они исключительно для латинской раскладки, то есть никаких Ctrl-Ф вместо Ctrl-A.

Sergey Stolyarov | 2020-09-12 в 13:39

Брошюра — это маленькая книжка. Если вы распечатаете PDF-файл, то получите просто набор страниц, и даже если распечатать по две страницы на лист, то получится всё равно набор страниц. Однако можно документ напечатать в виде брошюры, когда страницы располагаются на листе так, что вы можете каждый сложить пополам, вложить их друг в друга и прошить/скрепить по линии сгиба. На выходе получится полноценная маленькая книжка.

В линуксе есть очень удобная программа pdfbook, которая конвертирует обычный PDF в брошюру, которую вы можете распечатать как обычный документ на обычном принтере и потом скрепить вместе по линии сгиба. Запускается она просто:

[user@shell]% pdfbook --a4paper input.pdf

На выходе получается файл input-book.pdf, который можно отправлять на печать.

pdfbook входит в состав пакета texlive-extra-utils (в debian/ubuntu ставится стандартной командой sudo apt install texlive-extra-utils), также вы можете поставить в макоси через brew, но для этого требуется установленный mactex.

Sergey Stolyarov | 2017-04-13 в 20:14

Индекс (оглавление) очень помогает в навигации по PDF-документу. Однако в некоторых PDF-файлах его нет. Добавить его можно через командлайновую программу pdftk (она есть для всех операционных систем).

Схема простая:

  1. экспорт метаданных в файл;
  2. добавление в файл метаданных оглавления;
  3. обновление метаданных в исходном документе.
Sergey Stolyarov | 2016-12-12 в 13:38

Ранее я уже писал несколько раз об организации ssh-туннелей: SOCKS-прокси через SSH, Туннель через SSH-сервер. В этой статье я расскажу, как максимально безопасно организовать SOCKS-прокси через ssh-туннель.

Обычно, когда делают SOCKS-прокси-туннель, просто добавляют к команде соединения через ssh аргумент типа -D localhost:8008. Потенциально это не очень безопасно по нескольким причинам:

  • вместо авторизации по ключу используется интерактивная авторизация по паролю;
  • на сервере может быть включен X-Forwarding, дыра;
  • авторизация происходит под обычным пользователем в интерактивной сессии.

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

Авторизация по паролю также чревата последствиями. Например, если вы хотите разрешить нескольким разным людям подключения с туннелем, вам придётся создать несколько аккаунтов на сервере с разными паролями. Авторизация через ключи решает эту и ещё несколько других проблем.

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

Sergey Stolyarov | 2015-02-07 в 21:57

По умолчанию в Time Machine бэкапится практически всё, включая совершенно ненужные файлы и каталоги — кеши, временный файлы и т.п.

В исключения надо добавить вот такие каталоги (для добавления произвольного каталога в селекторе файлов нужно нажать Shift+Cmd+g):

/var/vm
Это каталог с образами памяти, используется для суспенда, они довольно большие и точно не нужны в итоговом образе
/Library/Caches
~/Library/Caches
Разнообразные бесполезные для бэкапа кеши
~/Downloads
Скачанные файлы тоже в бэкапе не нужны

Также дополнительно нужно исключить:

~/Library/Application Support/Google/Chrome/Default/Application Cache
~/Library/Application Support/Google/Chrome/Profile 1/Application Cache
~/Library/Application Support/Yandex/YandexBrowser/Default/File System
Браузерные кеши, если вы пользуетесь профилями в браузере, то придётся ещё и кеши для них исключать (Profile 1 и т.д.).

Образы ненужных виртуальных машин.

Примонтированные защищённые разделы, например, через encfs.

Разнообразные медиа-каталоги, например, ~/Movies.

Каталоги с временными файлами, например, /tmp и ~/tmp (если вы такой локально используете).

Возможно, имеет смысл исключить из бэкапа сетевые хранилища типа Dropbox или YandexDisk.

Исключать из бэкапа каталог с homebrew не стоит, так как файлы из него расползаются по другим системным каталогам.

Есть ещё один подозрительный каталог — /private/var/folder, в него складывает скачиваемые файлы app store, например. И если установка какого-нибудь пакета сорвалась, этот файл будет там валяться. Система иногда при перезагрузке этот каталог чистит, поэтому я рекомендую перед бэкапом перезагружать машину, на всякий случай.

См. также http://essentialmac.co.uk/apple-mac-iphone-how-to/what-folders-to-exclude-from-time-machine-backups/

Sergey Stolyarov | 2014-08-12 в 16:36

Для второго питона:

python -m SimpleHTTPServer 9090

Для третьего:

python3 -m http.server 9090

Вместо порта 9090 можно указать другой. По умолчанию цепляется ко всем сетевым интерфейсам, но можно указать и конкретный, например:

python3 -m http.server --bind 127.1.2.3 9090
Sergey Stolyarov | 2014-07-14 в 14:15

Чтобы результат селектов в консольном клиенте sqlite3 выглядел по-человечески, нужно в конфиге программы (файл ~/.sqliterc) написать такое:

.headers on
.mode line

При таком конфиге выводе селектов будет примерно таким:

sqlite> select * from track limit 2;
       id = 1
   dir_id = 3
 filename = 01 - хора.mp3
    title = хора
  modtime = 
artist_id = 1
 genre_id = 1
 album_id = 1
    track = 1
   length = 232
     year = 2003

       id = 2
   dir_id = 3
 filename = 02 - айда, недо.mp3
    title = айда, недо
  modtime = 
artist_id = 1
 genre_id = 1
 album_id = 1
    track = 2
   length = 184
     year = 2003
Sergey Stolyarov | 2014-02-17 в 15:20

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

Структура статьи традиционная: знакомство с git, базовые команды, общепринятые подходы, а в конце справка о терминах и концепциях, список ссылок. Я не хочу углубляться в историю создания git и вообще стараюсь писать кратко, по делу и без воды, без слишком детальных объяснений команд, без копипасты манов или книг, однако при необходимости буду давать ссылки на сайты или книги по теме.

Я буду рассказывать только о классической программе git, работающей из командной строки. Все примеры использования предназначены для UNIX-подобных систем, например, линукса или макоси. Все примеры создания или модификации файлов также рассчитаны на UNIX-подобные системы. Почему именно консольный вариант: в гуёвых программах типа TortoiseGit очень сложно понять концепты, их авторы подразумевают, что вы всё уже знаете, а это не так. Почему линукс и макось: терминал в windows очень некомфортен, работать там больно и мучительно. Если у вас Windows, советую поставить убунту в Virtualbox/VMWare, также в комментариях Искандер упоминает git-bash для windows, но я об этом ничего сказать не могу.

Перед вами именно туториал, то есть в идеале вы должны читать его последовательно с начала и до конца, выполняя примеры из текста. У git обширная собственная терминология и куча общепринятых (в рамках git-экосистемы) названий сущностей; я постараюсь рассказать о самых важных из них, а вы постарайтесь их запомнить, они действительно очень важны и пригодятся, когда вы будете читать документацию или книги. Часть терминов я буду давать в переводе (например, «ветка» для слова «branch»), а часть — в транслитерации, так как адекватного перевода слова нет (например, «дифф» как перевод слова «diff»). Я очень не люблю многословные переводы простых слов и стараюсь по возможности ими не пользоваться, для понимания короткие слова важнее длинных фраз. Поэтому привыкайте к словам типа «коммит» или «репозиторий».

В тексте много примеров, они все согласованы с текстом и рассчитаны на параллельное их исполнение в процессе чтения. То есть дошли до примера, открыли терминал, выполнили указанные в тексте команды, порадовались, дальше читаем.

Статья ещё не завершена и будет постепенно дописываться, однако уже написанное радикально меняться не будет.

Sergey Stolyarov | 2014-02-15 в 12:48

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

Обновлено 2015-06-13: теперь всё рассказывается про Yosemite.

Стандартная конфигурация лично мне не особо нравится, плюс выведенными в интерфейс крутилками также не всё можно настроить, поэтому пришлось гуглить и экспериментировать. Чтобы ничего не забылось, традиционно сливаю всё накопленное в один большой пост со скриншотами, который буду держать в актуальном состоянии. Всё описанное касается версии Mac OS X Yosemite (10.10) с английским интерфейсом.

Sergey Stolyarov | 2014-01-23 в 11:10

Инструкции по разворачиванию LXC на Debian-мащине. Всё рассчитано на Debian Stable (Debian 10 Buster на момент написания статьи) и версию lxc 3.0.x.

LXC (LinuX Containers, http://linuxcontainers.org/) — это система виртуализации на уровне операционной системы, по сути нечто вроде продвинутого chroot. Удобно использовать для разработки и тестирования софта. Здесь рассматривается работа с lxc только средствами пакета lxc, а другие — например, через libvirt — нет.

Устанавливается стандартным образом:

::shell-session
$ sudo apt install lxc
←новые старые→
© 2006—2023 Sergey Stolyarov | Работает на pyrengine