Философия ума

5 января 2025
Этот пост посвящен вольному пересказу книги “Philosophy of mind: A contemporary introduction” за авторством Джона Хейла. Мне показались интересными идеи, которые там рассказываются, и хотя книга сама по себе написана куда менее зубодробительно, чем многие философские трактаты, я решил попробовать изложить идеи из нее еще более понятным языком для тех, у кого нет желания осиливать все 300 страниц заумного текста. Философия? В МОЕМ XXI веке? Когда я рассказывал подруге про эту книгу, ее первая реакция была “звучит прикольно, но разве философия еще нужна? Читать далее

Хочется странного, или запускаем кубернеты на macOS

27 июля 2022

Летнее утро началось с ласковых лучей солнца, оторвавших меня от некрепкого сна. Понежевшись в его лучах (а также лучах экрана смартфона) я отправился на кухню и начал готовить незамысловатый завтрак. В очередной раз на этой неделе меня ждали разогретые в микроволновке макароны с сосисками. Задумчиво пережевывая простое блюдо, лишенное сильных гастрономических качеств, я понял, что надо как-то растрясти обыденность и сделать что-то странное. Например, запустить Kubernetes на своем макбуке.

Зачем? Конечно же, потому что это круто. Но помимо этого я прочитал комментарий на оранжевом сайте, что люди запускают kube-apiserver отдельно, чтобы использовать такие концепты куберов, как reconcilliation loop1 и декларативную модель, но не для запуска приложений, а для каких-то других целей. Доказательств этому я в интернете не нашел, поэтому решил, что надо послужить примером.

Читать далее

Мой домашний датацентр, часть 2: сетевые приключения

7 марта 2022

Так как мой домашний датацентр заслуживает быть геораспределенным, настало время поднимать вторую реплику в другой локации. Это породило определенную цепочку зависимостей, во главе которых было заменить унылый провайдерский роутер на что-то более веселое и оживленное. Например, на новенький роутер Mikrotik. Как положено настоящему системному администратору, даже дома должен быть церебральный секс. Казалось бы, взял коробочку, воткнул в розетку, и оно должно заработать, да?

Нетрудно догадаться, что если бы все решалось именно так, я бы не писал этот пост…

Читать далее

Новый блог 2: блогенье

23 января 2022

Мой блог в очередной раз переехал. Ради того, чтобы хостить 7 постов (включая этот), приходится воистину страдать. GitHub меня откровенно разочаровал своей политикой удаления моего блога из Pages без какого-либо уведомления и/или предупреждения, так что похоже, что действительно настало время двигаться на более независимые платформы. Доверять нельзя никому. Под катом вас ждут детали очередного переезда.

Читать далее

Мой домашний датацентр, часть 1: Весело, оживленно

18 января 2022

Как положено любому уважающему себя айтишнику, у меня дома стоит датацентр. Как положено любому настоящему айтишнику, датацентр в относительно прискорбном состоянии. Как положено любому уважающему себя айтишнику, я храню обещание, что однажды даже с ним разберусь. В рамках программы повторного использования техники, в качестве домашнего датацентра работает Mac Mini 2011 года под управлением Mac OS 10.15. Под катом будет рассказано, как дойти до такой жизни, и с чем мириться.

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

Читать далее

На пути к Kubernetes: от контейнеров к оркестрации. Основы Docker. Создаем контейнеры.

20 декабря 2020

Анонс цикла

Это первый пост из серии1, посвященной всему, связанному с контейнерами. Согласно концепции, посты будут представлять собой не линейную цепочку (часть 1, часть 2, часть 3, ремейк первой части, приквел), а дерево. Отправная точка - знание того, как работать в терминале, и знание какого-либо языка программирования2, последующие статьи будут содержать список материала из блога, с которым рекомендуется ознакомиться прежде, чем браться за текущую. В статьях в первую очередь будет рассказано про интерпретируемые (Python, Perl, базовые навыки абстракции помогут с остальными) языки, позже3 будут покрыты вопросы компилируемых.

Теперь перейдем к “мякотке” обсуждения: контейнеры.

Читать далее

Go, DNS, и корпоративный VPN: сага о бутылочном горлышке

10 сентября 2020

Вас ждет захватывающая история того, как несчастный девопс копался в исходниках всего, что подвернется под руку, просто чтобы заработала одна команда. В посте прячутся костыли, добро, и целая масса ковролина. Чтобы фантасмагория была понятнее, поясню: все события происходили на macOS (darwin/amd64).

Читать далее

Вот и помер Docker Swarm

21 июля 2020

Введение

Да, можно сказать, что он еще не умер, его разработка не заморожена, и в некоторых местах он все еще используется. Но в нише web-scale он однозначно был вытеснен Kubernetes. Предлагаю провести “ретроспективу”, и сказать, что он умел лучше конкурента, а где он проиграл.

Установка

В том, что касается деплоя, Docker Swarm на много порядков проще, чем Kubernetes. В качестве “движущихся частей” есть только dockerd, а все администрирование делается через docker. Создать кластер, установив docker на каждую машину можно очень просто: на будущем мастере запускается docker swarm init, который выдаст команду, с помощью которой можно присоединить воркеров. На этом установка завершается.

Сравним это с Kubernetes: установка “по старинке” настолько длинная, что пальцы успевают устать от одного пролистывания. Вместо этого предлагается использовать Ansible репозиторий, или хотя бы kubeadm. После успешной установки методом “установил и забыл” через год вас ждет сюрприз: все сертификаты истекли, и их надо заменять. Сами себе злобные буратины, что не учли? Да. Сложно ли узнать, что сертификаты надо ротировать? Да, если вы использовали готовые утилиты. В связи с этим рекомендуется хотя бы раз помучаться и поставить его своими руками полностью вручную. Почему-то с докером такого делать не надо. В его копилку за это отправляется большой плюс.

Читать далее

Самописная команда git-batch

22 января 2019

Думаю, для большинства разработчиков это достаточно стандартная ситуация, когда в папочке dev/work лежит очень много репозиториев, и следить за каждым неудобно. Есть различные менеджеры, которые утверждают, что помогут с этим разобраться, но тот же Sublime Merge достаточно куц по функционалу для того, чтобы сразу сделать какую-нибудь операцию в куче репок, например, посмотреть все ветки во всех репках чтобы вспомнить, над какими задачами еще идет работа, или же подтянуть все свежие ветки из апстрима. Но мы-то знаем, что наш лучший менеджер — это zsh, и что программа любой сложности заменяется ворохом shell скриптов! На сцену выходит очень простой, но достаточно действенный способ: команда, которую я лаского обозвал git-batch:

function git-batch() {
    OLD_PWD=$PWD
    # For simplicity let's assume my git repos have .git in them and no
    # other directory does.
    GIT_REPOS=$(find . -name ".git" | xargs -n1 dirname)
    while read -r REPO_DIR; do
        echo "$REPO_DIR:"
        cd $REPO_DIR
        # All the output is redirected to stdout and indented.
        # We can redirect stderr because the command output is tainted
        # by indent anyway.
        $@ 2>$1 | sed 's/^/  /'
        cd "$OLD_PWD"
    done <<< "$GIT_REPOS"
}
Читать далее

Новый блог

21 января 2019

Одним январским вечером мне пришла в голову отличная идея, о которой стоило немедля написать в свой канал, чтобы человечество ее оценило. Идея эта, как вы можете догадаться - тот пост, в котором достаточно много кода и inline разметки. Довольно долго я боролся с телеграмом, чтобы текст разметился в соответствии с тем, как я его разметил, но результат остался печален, и пост пришлось спрятать.

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

Читать далее