LaurVas

Строгий календарь 2019

   дизайн

Скачать в pdf: версия на одном и на двух листах (по 6 месяцев).

Календарь предназначен для печати на форматах от А4 до А2, поэтому в самом документе поля отсутствуют. При печати указывайте в параметрах что-то вроде “масштабировать под размер области печати”, чтобы края не пропали.

В распечатанном календаре надо подписать все важные дни (для этого отведено место справа от даты) и повесить его на видном месте.

Под катом — почему он такой.

Оконный менеджер i3

   linux

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

 

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

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

  • Окна всегда занимают всю площадь экрана.
  • Окна не перекрывают друг друга.
  • В i3 я спокойно ориентируюсь в 20 открытых окнах. Раньше путался уже на 10.
  • Всё управление окнами осуществляется с клавиатуры.
  • Всё хорошо сразу, на дефолтном конфиге. Не возникает желания переделать дизайн по-своему.

К тайловому оконному менеджеру (сокращённо WM) надо привыкнуть. Это нормально. Linux тоже поначалу был непривычен, верно? Запаситесь терпением, и оно окупится.

Строгий календарь 2018

   дизайн

Ключевые особенности моего календаря:

  • без отвлекающих картинок
  • максимально используется доступная площадь
  • месяцы идут подряд один за другим
  • нерабочие дни хорошо видно
  • месяцы пронумерованы

В этот раз взял шрифт Roboto Sans. В отличие от 2017 года, в 2018-ом разное количество недель в первом и втором полугодии. Из-за этого календарь получился не таким геометрически строгим, как прошлый раз.

Скачать в pdf: версия на одном и на двух листах (6+6).

Календарь предназначен для печати на форматах от А4 до А2, поэтому в самом документе поля отсутствуют. При печати указывайте в параметрах что-то вроде “масштабировать под размер области печати”, чтобы края не пропали.

В распечатанном календаре надо подписать все важные даты (для этого отведено место справа от даты) и повесить его на видном месте.

Мой лончер на базе Dmenu

   bash

Dmenu — это простая, но очень полезная деталь лего утилита. Она читает список из стандартного ввода (stdin) и отображает его на экране в виде вертикального (ключ -l) или горизонтального списка. Пользователь может выбрать один из пунктов стрелками на клавиатуре или печатая символы. Выбранный пункт направляется в стандартный вывод (stdout).

В стандартной поставке вместе с dmenu идёт скрипт dmenu_run для запуска приложений. Ему на вход ничего подавать не надо, он сам возьмёт все бинари из PATH и поместит их в список dmenu, после чего запустит выбранную программу.

Я придумал более удобный скрипт для запуска приложений.

Как случайно не выключить сервер по ssh

   linux bash

Однажды я набрал sudo poweroff не в той консоли и погасил какой-то сервер вместо домашнего компьютера. После этого я задумался, что неплохо было бы иметь защитный механизм от невнимательности. Возникла идея простой проверки: если poweroff или reboot был запущен по ssh, то предупредить пользователя что он собирается выключить/перезагрузить сервер и потребовать подтверждение.

Получился маленький скрипт:

/usr/local/sbin/poweroff
#!/bin/bash

action=$(basename $0)
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
  read -p "You are going to $action $(hostname) over ssh. Are you sure (y/N)? " -r
  if [[ $REPLY =~ ^[Yy]$ ]]; then
    /sbin/$action
  fi
else
  /sbin/$action
fi

Делаем загрузочный образ из контейнера

   debian linux

Пользовался я контейнерами и бед не знал. Но вот понадобилось как-то собрать пакет openjdk-6. А он при сборке ругается на ядро: uname -a ему не нравится. Говорит не буду такое поддерживать. Значит надо собирать на железе или виртуалке. Устанавливать систему с нуля не хотелось — слишком долго. И тогда я подумал, что можно развернуть бэкап контейнера на диск, добавить загрузчик и ядро и получить Debian, способный работать самостоятельно. А чтобы не выполнять одну и ту же работу дважды, я решил работать не на диске, а в образе, и сохранить его на будущее.

Эта инструкция подойдёт для всех релизов Debian и Ubuntu. Я буду переносить Debian Jessie.

Использование утилиты debootstrap

   debian

Debootstrap — это первый шаг в ручной установке Debian и при подготовке линукс-контейнера на основе Debian или Ubuntu. Благодаря ему в пустом каталоге зарождается жизнь.

Чтобы не повторять одно и то же в трёх местах, я вынес этот шаг в отдельный пост.

Запускаем Debian в chroot-окружении

   chroot debian

Обновление. Инструкция в этой статье рабочая, но сам 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 контейнера, но есть небольшие отличия.

Строгий календарь 2017

   дизайн

Ключевые особенности моего календаря:

  • без отвлекающих картинок
  • максимально используется доступная площадь
  • месяцы идут подряд один за другим
  • нерабочие дни хорошо видно
  • месяцы пронумерованы

Скачать в pdf: версия на одном и на двух листах (6+6).

Календарь предназначен для печати на форматах от А4 до А2, поэтому в самом документе поля отсутствуют. При печати указывайте в параметрах что-то вроде “масштабировать под размер области печати”, чтобы края не пропали.

Распечатанный календарь вешается на видном месте, все важные даты подписываются (для этого отведено место справа от даты).