В Google Chrome переключение между табами по Ctrl+Tab всегда происходит по порядку следования табов. То есть нажатие на Ctrl+Tab всегда переключает на следующий по порядку таб, а Ctrl+Shift+Tab — на предыдущий. Это чрезвычайно неудобно, если приходится быстро и часто переключаться между несколькими табами, которые находятся в разных местах. Такая фича называется Most recently used switch (MRU Switch). В других браузерах такое поведение включается штатным образом через настройки, но не в chrome. Есть даже очень старая задача из трекера на эту тему, но она была без всяких комментариев закрыта гуглом несмотря на сотни комментариев.
Раньше было можно изменить поведение через расширения, но Google и эту возможность заблокировал, причём именно для сочетания Ctrl+Tab, внятного объяснения тоже не последовало.
Способ 1, через расширение QuicKey¶
Однако пользователи нашли способ. В chrome web store есть расширение QuicKey и в нём описана возможность включить MRU Switch через хак девелоперской консоли.
В этом тексте описаны полезные вещи, которые можно делать с Android через adb shell. И часто их можно сделать только так.
Чтобы выполнить инструкции из этой статьи, нужно сначала включить режим разработчика на телефоне:
- зайти в раздел Настройки/Settings → О телефоне/About Phone;
- найдите пункт с номером сборки (Build number) и нажимайте его быстро до тех пор, пока не появится надпись типа «Теперь вы стали разработчиком»
- в телефонах с MIUI нужно нажимать по пункту MIUI Version
Я много работаю с текстом и активно пользуюсь клавиатурными сочетаниями (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.
Иногда нужно выполнить простые операции над видеофайлами без установки специализированного GUI-софта. Для некоторых из них есть альтернативы из командной строки.
Чаще всего мы будем использовать ffmpeg.
Брошюра — это маленькая книжка. Если вы распечатаете 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.
В 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).
Аутентификация в информационной системе обычно происходит через логин и пароль. Логин служит для идентификации пользователя, а пароль — для подтверждения логина. Такая схема использовалась годами, однако со временем проблема кражи личности приобрела такие масштабы, что потребовался дополнительный уровень защиты — многофакторная аутентификация (multi-factor authentication, MFA).
Смысл MFA в том, что идентификация пользователя происходит по нескольким независимым каналам (факторам) и когда результат по всем положительный, система успешно завершает процесс аутентификации.
Сделал публичный телеграмный канал для блога: https://t.me/fieryfiles («Горюче-сказочные материалы») и сопутствующий чат для обсуждения https://t.me/fieryfiles_discussions.
В канале будет больше текстов на нетехническую тематику.
В 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 недоступны для свободного скачивания, однако их при желании можно найти в интернете. Их официальные русские переводы (ГОСТ), однако, свободно доступны и ссылки на них вы найдёте в тексте.
Другие стандарты доступны для свободного скачивания и я тоже дам ссылки на них.
Здесь описывается как конвертировать HDD в виртуалбокс с fixed на dynamic и наоборот. По мотивам вот этой статьи https://www.howtogeek.com/312456/how-to-convert-between-fixed-and-dynamic-disks-in-virtualbox/.
Традиционный дисклеймер: linux, command line only.
Просто так преобразовать файл диска нельзя, его можно склонировать с изменением типа и потом «перецепить» в настройках виртуальной машины. Все операции делаются через программу VBoxManage
. Я пока рассматриваю только диски без снапшотов.