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-12-18 в 12:00

Иногда нужно выполнить простые операции над видеофайлами без установки специализированного GUI-софта. Для некоторых из них есть альтернативы из командной строки.

Чаще всего мы будем использовать ffmpeg.

Sergey Stolyarov | 2020-09-15 в 10:13

Рисование буллетов и других маркеров

► ● • ∙ ◆ ◇ ◈ ◉ ○ ∘ ◦ ◼ ◻ ▪ ∙ ▫ ★ ☆ ♦ ♢ ✓ ☑ ☒ ∗

▶ ▼ ◀ ▲ △ ▷ ▽ ◁

← ↑ → ↓ ↖ ↗ ↘ ↙

Рисование блоков

Тонкие одинарные линии: ┌ ┐ └ ┘ ─ │ ┬ ┴ ┤ ├ ┼

И пример блока из них:
┌─┬┐ 
├─┼┤   
├─┴┤
└──┘

┌ ─ ┬ ┐

│ ─ ┼ ┤   

├ ─ ┴ ┤

└ ─ ─ ┘

Рисование отбивок

Звёздочки по центру:

❈ ❈ ❈

Линии по центру:

──────────────────

══════════════════

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 | 2020-09-05 в 00:12

В 2016 я написал статью Человеческим языком о цифровых сертификатах: ASN.1, X.509, PKI, в которой постарался максимально понятно рассказать о цифровых сертификатах с примерами их использования через консоль и openssl. С того времени многое изменилось: openssl версии 1 ушёл в массы, появились и стали активно использоваться его форки (libressl и boringssl), появилась (типа) поддержка гостовских алгоритмов. Плюс я получил неожиданно много обратной связи, чего совершенно не ожидал, и в итоге в 2020 году появился этот полностью переработанный и актуализированный текст.

Но настал 2024 год и уже в массы ушла версия openssl 1.1.1 с новыми крайне полезными фичами, однако я решил новую статью не писать, а постепенно актуализировать эту, плюс немного стилистически причесать.

*Целевая аудитория этой статьи — айтишники, поверхностно знакомые с понятием цифрового сертификата, сопутствующими понятиями и техническими стандартами (X.509, PKI, PKCS). Текст не является пересказом документации или сборником рецептов, воспринимайте его как короткий учебник, рассказывающий о базовых концептах криптографии и сложившейся вокруг стандарта X.509 инфраструктуры.

Чаще всего цифровой сертификат ассоциируется с браузером, веб-сайтом и шифрованием трафика в HTTPS-соединении. И обычно на самом факте существования сертификата у большинства айтишников понимание темы заканчивается. Многие статьи на эту тему с самого начала топят читателя в абстрактных и несущественных деталях (например, раз, два). Между тем, базовые концепции системы сертификатов очень простые и я о них расскажу.

В центре внимания у меня сертификат, так как именно вокруг него крутятся все остальные концепты.

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

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

Для полноценной работы вам понадобится linux с терминалом и установленным openssl версии 1.0 или выше. С некоторым оговорками подойдёт macos с терминалом (в macos последних версий установлен форк openssl под названием libressl, поэтому желательно установить именно openssl, например, из homebrew).

Sergey Stolyarov | 2020-06-26 в 19:16

Аутентификация в информационной системе обычно происходит через логин и пароль. Логин служит для идентификации пользователя, а пароль — для подтверждения логина. Такая схема использовалась годами, однако со временем проблема кражи личности приобрела такие масштабы, что потребовался дополнительный уровень защиты — многофакторная аутентификация (multi-factor authentication, MFA).

Смысл MFA в том, что идентификация пользователя происходит по нескольким независимым каналам (факторам) и когда результат по всем положительный, система успешно завершает процесс аутентификации.

Sergey Stolyarov | 2020-01-20 в 11:26

Сделал публичный телеграмный канал для блога: https://t.me/fieryfiles («Горюче-сказочные материалы») и сопутствующий чат для обсуждения https://t.me/fieryfiles_discussions.

В канале будет больше текстов на нетехническую тематику.

Sergey Stolyarov | 2019-04-24 в 16:13

В 2017 году я написал статью Смарт-карты и программирование с примерами кода C/C++. Однако для обучения этот язык подходит плохо, поскольку предполагает достаточно низкоуровневое и многословное использование функций и данных, поэтому я решил сначала переписать все примеры на Java, однако в процессе пришлось значительно переосмыслить старый текст, обновить и переработать с учётом накопившегося опыта, ошибок и замечаний.

Статья 2017 «заморожена» и я не планирую её больше обновлять, однако вы можете её читать, если хотите понять, как всё работает на сравнительно низком уровне, где вручную нужно выделять и освобождать ресурсы, инициализировать буферы и так далее.

Это очень большой текст о смарт-картах и о том, как писать клиентский софт на Java для их использования. От вас требуется только знание Java, понимание базовых алгоритмов, структур данных и, собственно, смарткарты с терминалами. Все примеры ориентированы на unix-окружение, в первую очередь это linux и mac os x. Мобильные операционные системы не рассматриваются. Код, вероятно, работает в windows-окружении, однако я это не тестировал. Все примеры полностью независимы друг от друга и не используют никакие сторонние библиотеки или общие файлы.

Язык Java я выбрал по нескольким причинам. Во-первых, он достаточно высокого уровня и вы избавлены от ручного управления памятью. Во-вторых, в Java очень богатая стандартная библиотека. В третьих, Java как платформа работает на разных операционных системах практически одинаково, что очень упрощает процесс обучения. И самое главное, в штатной поставке платформы уже есть поддержка библиотеки для работы со смарт-картами. Я выбрал современную базовую версию SDK — 11 — и все примеры кода написаны с учётом работающих в этой версии фич (типа использования ключевого слова var для автоматического вывода типов).

❈ ❈ ❈

Для выполнения всех примеров кода вам нужен USB-терминал (ридер) для смарт-карт. В некоторых примерах можно использовать USB крипто-токен (eToken, yubico и т.п.), они используют тот же программный интерфейс.

Ещё в статье очень много новых англоязычных терминов, сокращений, ссылок на международные стандарты и спецификации. Слишком глубоко в детали я вдаваться не стану, но буду ссылаться на внешние документы. Очень желательно как минимум понимать английский, так как все оригинальные стандарты и спецификации написаны на нём.

Для более глубокого понимания вам нужно обязательно иметь под рукой упоминаемые стандарты. К сожалению, стандарты ISO/IEC недоступны для свободного скачивания, однако их при желании можно найти в интернете. Их официальные русские переводы (ГОСТ), однако, свободно доступны и ссылки на них вы найдёте в тексте.

Другие стандарты доступны для свободного скачивания и я тоже дам ссылки на них.

Sergey Stolyarov | 2018-12-05 в 14:23

Здесь описывается как конвертировать HDD в виртуалбокс с fixed на dynamic и наоборот. По мотивам вот этой статьи https://www.howtogeek.com/312456/how-to-convert-between-fixed-and-dynamic-disks-in-virtualbox/.

Традиционный дисклеймер: linux, command line only.

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

Sergey Stolyarov | 2018-09-27 в 10:00

GnuTLS — это программная библиотека для работы с SSL/TLS и сертификатами. Она может примерно то же, что и openssl, но разрабатывается независимо. Аналогично в составе gnutls есть набор консольных программ для работы с сертификатами, протоколами и прочими данными: certtool, gnutls-serv, gnutls-cli и т.д.

В плане работы с файлами сертификатов, ключей и CSR-запросов утилиты gnutls умеют делать практически то же самое, что и бинарник openssl. В этой статье я детально опишу типичные сценарии использования: создание ключей, сертификатов, запросов на сертификат, подписывание сертификатов.

Другие мои статьи на эту тему, но на базе openssl:

Certtool входит в состав gnutls и в debian/ubuntu ставится командой:

$ sudo apt install gnutls-bin

На макоси gnutls ставится через Homebrew:

$ brew install gnutls
© 2006—2024 Sergey Stolyarov | Работает на pyrengine