• Мои обновления

    Привет. Недавно я сильно апгрейднул всю свою, скажем так, экосистему. Я уже сделал заметку в канале, но аудитория блога больше канала, так что расскажу здесь подробнее что произошло.

    (далее…)
  • Установка gitea на чистый сервер

    Привет. Надеюсь, эта шпаргалка поможет тебе установить собственное «гитхаб»-лайк хранилище кода. Очень рекомендую это сделать, причём на отдельный сервер.

    Делал я это, используя бинарник. Вкратце, шаги простые:

    • подготовить ОС
    • подготовить БД
    • подготовить nginx
    • скачать бинарник gitea
    • разобраться с конфигами
    • выполнить установку
    • настроить демона
    Погнали
  • Сравнение SMOK Novo 2 и Voopoo Vinci Pod kit

    Привет. Завёлся однажды у меня смок. В целом, как первенец, он меня устроил. Но спустя примерно полгода я решил сменить устройство. Ниже расскажу что к чему, кратко, в сравнении.

    Сабж
    Перейти к сравнению
  • Установка разрешения на мониторе через терминал на Ubuntu 18+

    Привет. Я тут запилил простой скрипт для установки кастомного разрешения экрана на Ubuntu.

    Однажды, я столкнулся с такой проблемой. Есть два 100% одинаковых монитора. Оба работают в максимальном разрешениии 1600×900. Оба подключены к родным видео-выходам на материнке. Однако один монитор подключен к D-Sub напрямую, а второй — через переходник HDMI <-> D-Sub. И картинка на втором по умолчанию всегда в 1920×1080, которое монитор героически сжимает в свои 1600×900 (и которое внезапно отсутствует в настройках). В результате на экране мелкое невнятное мыло, но судя по всему, картинка выдаётся в настоящем FullHD.

    Ниже — получившийся скрипт. На самом деле, я уже не один год использовал его упрощённую версию для себя. Просто я причесал его, чтобы выложил в паблик. Всё работает хорошо. Тебе остаётся только выставить положения мониторов в настройках ОС (и там, кстати, появится новый недостающий режим). Скрипт можно использовать также и с одним монитором.

    (далее…)
  • Обработка аргументов в bash-скриптах без getopt и getopts

    Привет. Я в свободное время для рабочих целей пишу один проект, который состоит из кучи bash-скриптов. Есть одна точка входа, которая из cli принимает аргументы. Этот скрипт подключает остальные куски функционала через source. В этих кусках описаны функции, которые должны обрабатывать разные аргументы, нужные только для чего-то конкретного.

    В первой версии проекта я просто явно передавал $1, $2, $N сверху вниз, в другие функции. Это было топорным решением, и оно работало, потому что возможные аргументы и их порядок был известен и прост. Но эстетически это было отвратительно. Чтобы мне было приятно смотреть на код, нужно было сильно усложнить вообще всё, чтобы всё стало намного проще.

    Итак, я должен принимать от пользователя разные аргументы в разные функции, при этом я хочу дать пользователю возможность передать на вход:

    • длинные аргументы без значений:
      ./script.sh --foo --bar
    • длинные аргументы со значениями:
      ./script.sh --foo=bar
    • короткие аргументы без значений:
      ./script.sh -a -b -c
    • короткие аргументы со значениями:
      ./script.sh -a avalue -b bvalue
    • комбинировать короткие любые короткие аргументы в одно слово:
      ./script.sh -abc bvalue
    • всё перечисленное выше — одновременно!
    • порядок аргументов не должен иметь значения
    • иметь доступ к любому из них откуда угодно в любой момент времени.
    (далее…)