Календарь предназначен для печати на форматах от А4 до А2, поэтому в самом документе поля отсутствуют. При печати указывайте в параметрах что-то вроде “масштабировать под размер области печати”, чтобы края не пропали.
В распечатанном календаре надо подписать все важные дни (для этого отведено место справа от даты) и повесить его на видном месте.
Иногда хочется расположить окна таким образом, чтобы они не перекрывали друг друга, а стыковались. Типа такого:
Это становится особенно актуально на больших мониторах. Разумеется, при должном усердии можно аккуратно расставить окна руками. Но стоит открыть лишь ещё один терминал, и весь порядок рушится. Да, в типовых ситуациях выручали горячие клавиши. Но на все комбинации окон не напасёшься горячих клавиш. А ещё я перфекционист и заморачиваюсь по поводу рационального использования площади монитора. Я отключал заголовки окон и радовался выигранному пространству:
i3 подарил мне неожиданный прирост эффективности и стал одним из моих любимых инструментов. Почему я так тащусь от него?
Окна всегда занимают всю площадь экрана.
Окна не перекрывают друг друга.
В i3 я спокойно ориентируюсь в 20 открытых окнах. Раньше путался уже на 10.
Всё управление окнами осуществляется с клавиатуры.
Всё хорошо сразу, на дефолтном конфиге. Не возникает желания переделать дизайн по-своему.
К тайловому оконному менеджеру (сокращённо WM) надо привыкнуть. Это нормально. Linux тоже поначалу был непривычен, верно? Запаситесь терпением, и оно окупится.
В этот раз взял шрифт Roboto Sans. В отличие от 2017 года, в 2018-ом разное количество недель в первом и втором полугодии. Из-за этого календарь получился не таким геометрически строгим, как прошлый раз.
Календарь предназначен для печати на форматах от А4 до А2, поэтому в самом документе поля отсутствуют. При печати указывайте в параметрах что-то вроде “масштабировать под размер области печати”, чтобы края не пропали.
В распечатанном календаре надо подписать все важные даты (для этого отведено место справа от даты) и повесить его на видном месте.
Dmenu — это простая, но очень полезная деталь лего утилита. Она читает список из стандартного ввода (stdin) и отображает его на экране в виде вертикального (ключ -l) или горизонтального списка. Пользователь может выбрать один из пунктов стрелками на клавиатуре или печатая символы. Выбранный пункт направляется в стандартный вывод (stdout).
В стандартной поставке вместе с dmenu идёт скрипт dmenu_run для запуска приложений. Ему на вход ничего подавать не надо, он сам возьмёт все бинари из PATH и поместит их в список dmenu, после чего запустит выбранную программу.
Я придумал более удобный скрипт для запуска приложений.
Однажды я набрал sudo poweroff не в той консоли и погасил какой-то сервер вместо домашнего компьютера. После этого я задумался, что неплохо было бы иметь защитный механизм от невнимательности. Возникла идея простой проверки: если poweroff или reboot был запущен по ssh, то предупредить пользователя что он собирается выключить/перезагрузить сервер и потребовать подтверждение.
Пользовался я контейнерами и бед не знал. Но вот понадобилось как-то собрать пакет openjdk-6. А он при сборке ругается на ядро: uname -a ему не нравится. Говорит не буду такое поддерживать. Значит надо собирать на железе или виртуалке. Устанавливать систему с нуля не хотелось — слишком долго. И тогда я подумал, что можно развернуть бэкап контейнера на диск, добавить загрузчик и ядро и получить Debian, способный работать самостоятельно. А чтобы не выполнять одну и ту же работу дважды, я решил работать не на диске, а в образе, и сохранить его на будущее.
Эта инструкция подойдёт для всех релизов Debian и Ubuntu. Я буду переносить Debian Jessie.
Обновление. Инструкция в этой статье рабочая, но сам chroot устарел как инструмент. Сейчас в большинстве случаев лучше взять Docker: в нём есть куча готовых контейнеров на любой чих. Однако, иногда chroot незаменим и будет нелишним посмотреть как им пользоваться.
Chroot-окружение — это самый доступный способ запустить линукс внутри линукса (т.н. контейнер). Внутренняя система будет изолирована от основной только на уровне корневой файловой системы (rootfs). Сетевой стэк, псевдо-файловые системы /proc, /sys, /dev будут общими для хоста и контейнера. Поэтому не стоит считать chroot-окружение достаточной мерой для изоляции опасных/недоверенных приложений. Для этого больше подходит systemd-nspawn или docker.
Основные риски:
Из chroot-окружения можно убивать процессы хоста.
Система из chroot-окружения имеет доступ к дисковым устройствам. Являясь рутом в контейнере, можно примонтировать блочное устройство хоста (какой-нибудь /dev/sda1) и делать с ним всё что угодно.
Если chroot так несовершенен, то зачем он нужен сегодня?
Не всё работает в systemd-nspawn контейнере. Из-за усиленных защитных мер в контейнере systemd-nspawn нельзя натянуть файл на петлевое устройство (loop device) и нельзя запустить ещё один контейнер (линукс внутри линукса внутри линукса). В чруте можно и то, и другое. Это может понадобится, например, для сборки livecd.
Не везде есть systemd. Таких дистрибутивов почти не осталось. Это либо что-то старое, либо Gentoo или Alpine. Chroot работает везде.
Дальше я расскажу как создать контейнер с Debian-based системой (Debian, Ubuntu, Kali). Делать надо то же самое, что и при создании systemd-nspawn контейнера, но есть небольшие отличия.
Календарь предназначен для печати на форматах от А4 до А2, поэтому в самом документе поля отсутствуют. При печати указывайте в параметрах что-то вроде “масштабировать под размер области печати”, чтобы края не пропали.
Распечатанный календарь вешается на видном месте, все важные даты подписываются (для этого отведено место справа от даты).