masked, myself

Welcome!

Это информационная запись, висящая в самом верху журнала. Зафрендить меня можно тут, но учтите что я заношу во френды только тех, кого регулярно читаю или знаю лично. (Можно глянуть примерно о чём я тут писал последние восемь лет.)

FYI: Мой Google+ | Мой FriendFeed | Мой Я.ру | Мой старый сайт.

Другие мои сайты (такие как любимые цитаты или юмор-ленту) можно найти на странице профиля, можно читать единой лентой через Я.ру или Soup.io, а проще всего - просто подписаться на рассылку через rss2mail.</a>

Пишу я в основном для себя: или чтобы как-то самовыразиться, или чтобы оставить себе какую-то информацию на память. Однако к конструктивным обсуждениям отношусь сугубо положительно. Материться при желании можно, но в меру и к месту. Не умеющих вести беседу, троллей, провокаторов, расистов и прочих *-фобов буду е-банить на месте. Не говорите, что вас не предупреждали и не обижайтесь.

promo recoder august 1, 2018 12:09 36
Buy for 100 tokens
Не так давно Фейсбук научил меня ещё одной классификации людей, в дополнение к стратегам и тактикам, интерналистам и экстерналистам, и разным морально-политическим приверженцам. Впервые эта классификация описана ещё двадцать лет назад Картером и Сэнджером в книге The Programmer's Stone…
masked, myself

Shopping Cart Theory

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

Магазинная тележка - отличная лакмусовая бумажка, показывающая способности человека.
Убрать за собой тележку - это объективно правильное действие. За редчайшим исключением, любой человек способен вернуть привезённую к своей машине тележку, хотя и бросать её где попало тоже совершенно законно.
И вот получается, что возвращают тележки только те, кто следует своему внутреннему осознанию правильности мироустройства без какого-либо внешнего принуждения. Просто по доброте душевной. По зову заботливого сердца. Следуя принципу законопослушности.
И наоборот, не возвращающие тележки - варвары, не способные совершать правильные поступки без силы закона и угрозы насилия.

Оригинальный текст делал упор на оценку отдельно взятого индивидуума, и делал вывод о том насколько хорошим членом общества он является и насколько мощным в таком обществе должно быть государство, как инструмент насилия. Настоящий философ наверное бы призвал дух Канта и долго матросил бы категорический императив. А мне, как выходцу из страны долго пытавшегося вывести породу высокоморальных людей, интереснее статистические результаты. Причём во вполне прикладном аспекте.

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

А лучшим индикатором характера отдельно взятого человека я всё ещё считаю простое правило:

О характере человека можно судить по тому, как он ведет себя с теми, кто ничем не может быть ему полезен, а также с теми, кто не может дать ему сдачи.
corporate, lazy, wally

Дивный Новый Облачный Мир

Переменчивая судьба забросила меня из уютной среды C++ разработки на передний край боевых действий - в облачные технологии. И вот уже которую неделю я пребываю в состоянии лёгкого офигевания...

Справедливости ради надо сказать что у нас и в направлении C++ последние годы движуха началась. Как десять лет назад отцы пообещали раз в три года перетряхивать стандарты, так и клепают новые фичи всё забористее и забористее. Чуть отвлёкся - и всё, перестаёшь понимать язык называемый Modern C++. Как завещала Чёрная Королева - "здесь приходится бежать со всех ног, чтобы только остаться на том же месте!" Добром эта гонка в пучины сложности не кончится, но какие альтернативы?

И вот я, старый C++ программист, привыкший к строгой типизации и оптимизации вплоть до порядка машинных инструкций, окунаюсь в новомодные облачные технологии. Что же я вижу?

Мир горизонтального масштабирования не устаёт поражать меня своей фантастической расточительностью. Вместо привычных килобайтов памяти и нескольких нитей исполнения тут счёт идёт на виртуальные машины или на худой конец на контейнеры. Тут у нас виртуальная машина, там у нас виртуальная машина, "и сверху у нас две маленькие виртуальные машиночки" для избыточности и географической распределённости. Впрочем, счета за каждый облачный компонент обязательно придут. И за процессорное время. И за каждый мегабайт траффика. Провайдер облачного счастья своей выгоды не упустит.

Вот он какой оказался - этот дивный новый облачный мир... Будем надеяться все эти жертвы будут не напрасны.

В любом случае - спасибо судьбе за очередную возможность проверить себя: не слишком ли я стар для этого нового дерьма?

  • Current Music
    Bodies (Drowning Pool) - Kids' Edition
  • Tags
masked, myself

Хроники хронического прокрастинатора

Хочешь навести порядок во всём мире, сначала приберись у себя дома.
Хань Сян-цзы
Сам я из тех, кто всё время борется с хаосом и регулярно терпит неудачу. Кто начинает новые хобби-проекты при дюжине застрявших на пол-пути. Кто оставляет открытой вкладку в браузере чтобы дочитать её завтра.

И вот в один прекрасный день счётчик открытых вкладок на иконке TooManyTabs показал мне число в две с лишним сотни, что объяснило общую нехватку памяти в системе. Безо всякой аналитики стало очевидно, что количество недочитанного вышло из-под контроля. Проблему надо было решать системно.

Не откладывай на завтра то, что можешь отложить на послезавтра.
Марк Твен
Решение нашлось в виде расширений под названием Tab Snooze для Хрома и Snooze Tabs для Firefox. С их помощью любую вкладку можно отложить "на попозже", "на завтра", "на следующую неделю", или "на потом". Совсем "на потом" откладывать не практично - мы же понимаем, что никто и никогда не пойдёт рыться в списке URLов в каком-то там расширении... Так что я стал закрывать вкладки с расчётом на завтра и понедельник. Браузер радостно вздохнул, удивившись освободившейся памяти.

Несколько месяцев я кайфовал от найденной панацеи, пока не заметил что пачка само-открывающихся с утра закладок становится с каждым днём больше. Особенно по понедельникам. Очевидно, схема оказалась неработоспособной в долгосрочной перспекетиве. В отчаянии я просто открыл новую заметку в Evernote и начал записывать туда все ссылочки для прочтения, закрывая вкладки в Хроме. Всё что не требует срочного внимания - идёт в заметочку "на потом". Красота! Правда, за несколько месяцев такой практики ссылок там накопилось за пять сотен. Зато открытые вкладки - только нужные и по делу!

А вчера посмотрел на число открытых вкладок - а их опять там 388...

  • Current Mood
    embarrassed embarrassed
  • Tags
real, honest

Пол-жизни в ЖЖ

Сегодня у меня любопытный юбилей: 20 лет этому Живому Журналу! Практически пол-жизни. Формально конечно меньше , но уж точно больше чем пол-жизни творческой.

Статистика блоггинга у меня скромная: чуть больше 1400 заметок, чуть меньше 10000 комментов. В последнее время COVID и прочие житейские неурядицы и вовсе испортили статистику. Всего двенадцать постов за весь ебучий 2020 год - ну куда это годится? То ли дело раньше было!

Откроешь какой-нибудь 2006 год, полистаешь... Увы, больше половины ссылок в старых постах протухли и не ведут никуда. Так что информационная ценность этого архива сомнительна.

Зато какая ностальгическая ценность! Ещё и сам ЖЖ теперь масла подливает - каждый день присылает рассылочку "а ты помнишь что писал пятнадцать лет назад?". Почитаешь, вспомнишь, какая жизнь была... другая. Да и сам ЖЖ был другой.

Попробую мысленно вернуться в те славные времена. Больше думать, чаще писать, меньше залипать во всяких Твиттерах да Фейсбуках.

Make LiveJournal great again!

masked, myself

Не только игровой сервер

Продолжаю настройку домашнего сервера. Хотелось научиться запускать на нём небольшие домашние self-hosted сервисы.

Перво-наперво я себе поставил KeyBase, в котором есть встроенный приватный git, где удобно хранить конфигурацию. Также он менеджер ключей, чатик, и крипто-кошелёк, кто ещё там - стучитесь, законнектимся.

Установил официальный Docker for Windows. На удивление он оказался вполне неплох: на месте и GUI и командная строка и даже docker-compose, которым я и воспользовался.

Несколько лет назад я открыл для себя удивительную софтинку Traefik - хитрую HTTP-прокси, которая умеет интегрироваться с Docker'ом, позволяя на лету конфигурировать виртуальные хосты из запущенных docker-сервисов. Через неё одно удовольствие на лету поднимать/опускать разные микросервисы.

Каждому микросервису выдам свой под-домен. Публичные сервисы будут жить на настоящих под-доменах, а домашние сервисы будут жить в доменах *.home, которыми будет управлять PiHole. Заодно - порежу нафик все шпионские и рекламные домены через PiHole.

Далее пригодился листочек с нарисованной схемой: по одной крышей мы поднимем Traefik как reverse proxy, PiHole как локальный DNS сервер, и Portainer для управления контейнерами. Заводим такой магический "docker-compose.yaml":

version: '3.8'

networks:
  whisper: { internal: true }
  shout:   { }

services:
  traefik:
    image: traefik:v2.3
    container_name: traefik
    command:
      - "--api"
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.http.address=:80"
      - "--entrypoints.https.address=:443"
    networks: [shout, whisper]
    ports:
      - "80:80"
      - "443:443"
    labels:
      traefik.enable: true
      traefik.http.routers.dashboard.rule: "Host(`traefik.nexus.home`) || Host(`traefik.192.168.1.3.xip.io`)"
      traefik.http.routers.dashboard.service: "api@internal"
      traefik.http.routers.http-catchall.rule: "hostregexp(`{host:.+\\.rocks}`)"
      traefik.http.routers.http-catchall.entrypoints: http
      traefik.http.routers.http-catchall.middlewares: redirect-to-https
      traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
      traefik.http.middlewares.redirect-to-https.redirectscheme.permanent: true
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    networks: [shout]
    ports:
      - '53:53/tcp'
      - '53:53/udp'
      - '8053:80'
    volumes:
      - D:/homelab/etc/pihole:/etc/pihole/
      - D:/homelab/etc/dnsmasq.d:/etc/dnsmasq.d/
      - D:/homelab/var/log/:/var/log/
      - D:/homelab/var/log/lighttpd/:/var/log/lighttpd/
    dns:
        - 1.1.1.1
        - 1.0.0.1
    environment:
      PROXY_LOCATION: pihole
      TZ: 'America/New_York'
    restart: unless-stopped
    labels:
       traefik.enable: true
       traefik.port: 80
       traefik.http.routers.pihole.rule: "Host(`pihole.nexus.home`) || Host(`pihole.192.168.1.3.xip.io`)"
       traefik.docker.network: shout
       traefik.http.services.pihole.loadbalancer.server.port: 80

  portainer:
    image: portainer/portainer
    container_name: portainer
    labels:
      traefik.enable: true
      traefik.http.services.portainer.loadbalancer.server.port: 9000
      traefik.http.routers.portainer.rule: "Host(`portainer.nexus.home`) || Host(`portainer.192.168.1.3.xip.io`)"
      traefik.http.routers.portainer.entrypoints: http
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    networks: [whisper]

Осталась одна тонкость - в .../etc/dnsmasq.d/ кладём конфигурационный файлик с address=/.nexus.home/192.168.1.3. И можно всё поднимать!

Проверяем PiHole через оставленную дырочку по адресу http://localhost:8053/admin и убеждаемся что всё работает. Настраиваем PiHole по вкусу. И устанавливаем `192.168.1.3` как DNS-сервер на локальном сетевом адаптере.

Теперь, когда у нас есть DNS-сервер и обратный прокси - можно смотреть локальные сайты на http://traefik.nexus.home и http://portainer.nexus.home. А если всё работает - выставить наш `192.168.1.3` для DNS на роутере и наслаждаться отсутствием рекламы и доступом к сервисам на *.nexus.home. Правда надо бы не забыть законопатить доступ к сторонним DNS на роутере. А может быть, даже настроить нормальный DoH для домашней сети.

А на досуге надо будет повыбирать DNS провайдера. А выбор там есть: Couldflare c 1.1.1.1 и 1.0.0.1 (которые вроде бы самые шустрые), Google с 8.8.8.8 и 8.8.4.4, Quad9 c 9.9.9.9 и 149.112.112.112, Yandex для любителей посконного с 77.88.8.8 и 77.88.8.1, или платный NextDNS?

Итак, фундамент для домашних сервисов заложен. Можно удовлеворённо выпить кофе и обдумать дальнейшую стратегию.

masked, myself

Игровой сервер

Как известно, программист - это такой работник умственного труда, который на работе старается спрограммировать всё побыстрее, чтобы наконец пойти домой и попрограммировать для удовольствия. А как же тут попрограммировать для души, когда домашний игровой комп сыграл в ящик, не гудит и не мигает лампочками? Пришлось выделить из семейного бюджета солидную сумму на покупку нового компа в серьёзной конфигурации: Ryzen 7, RTX видеокарта, 32G памяти, все дела.

Прошло несколько недель (COVID всё же на дворе), и настал светлый день. Уставший FedEx'овец в маске дотащил здоровую коробку, и не спрашивая росписи о доставке, умчал вдаль шурша опавшими листьями. Коробку распаковали, комп собрали, подвели питание, включили - он загудел, засверкал светодиодными лентами через боковое стекло. Красота!

Тут меня начал мучать соблазн - ну что я, не настоящий программист что ли? Не пропадать же такой вычислительной мощности только для вечерних загонялок в Doom! Надо поднять нормальную Linuxовую виртуальную машину для разработки, а может даже и несколько, чтобы сделать себе devel, staging, и production.

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

Теперь буду записывать себе на память инструкции по поднятию домашней системы:

Collapse )

После этого можно удовлетворённо попить чайку и переходить к следующей стадии.

masked, myself

Отголоски воинственной молодости

Не так давно Steam сыграл со мной шутку, спросив меня "ты же любишь DooM, так вот попробуй например Counter-Strike". И тут меня чего-то вдруг накрыло такой волной ностальгии, что прям переросло в цунами. Вспомнились задорные юные годы, окончание рабочего дня, свежий вечерний московский воздух, и - многочасовые вечерние контртеррористические битвы в корпоративной сетке, традиционно завершавшиеся обсуждением стратегии и тактики за бутылочкой пенного напитка.

Поставил я этот CS remastered, побегал - оказалось оно! Те самые, знакомые до боли карты, только текстурки получше. Те же пушки, вроде бы та же игровая механика, ну разве что flashbang теперь вызывает стильное двоение в глазах. В общем - практически те самые ощущения, даже расстройства те же самые - как двадцать лет назад не получались хедшоты, так и сейчас не получаются. Да и AWP (aka слонобойка) как раньше не давалась, так и сейчас не даётся. У старого думера два союзника - шотган и пулемёт, а всё остальное - преходящее.

В общем, крепко мы подсели с сыном на эту реинкарнацию классики. Стали пропадать после рабочего дня за изогнутым экраном, делиться стратегиями и тактическими приёмами. Пиво я правда в одно лицо монополизировал пока...

«when your girlfriend says you need to replace your childish posters with real artwork» Понимаю, намёк тонкий, поймут не все...

Posted by Andrew Kondrashov on Tuesday, November 27, 2018

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

  • Current Mood
    nostalgic ностальгирую
  • Tags
masked, myself

Шарообразное разочарование

Помнится, тридцать пять лет назад в Советском Союзе случился фазовый переход, началась Perestroika и наступила Glasnost. Как нам тогда показалось, всё тайное стало явным, и истина, которая была out there, скоро явится нам во всей своей красе. Разумеется, из всех трещин советской цензуры полезла всякая мистика: легализовался весь спектр христианства, нарисовались целители и экстрасенсы, астрология стала непременным атрибутом любой газетёнки. А мы, юные и жадные до новых знаний гики, рванулись в новые околонаучные области.

Одной из самых красивых околонаучных загадок были шаровые молнии. Вот эти вот таинственные летающие клубки разумной энергии. Неуловимые и обладающие невроятной силой. Ну просто мечта физика-романтика. На телевидении очевидцы хвастались своими встречами с непознанным. В газетах и журналах "учёные" делились своими теориями возникновения этого феномена - от тороидальных ошмётков обычных грозовых разрядов до разумной энергии прибывшей к нам из других измерений. В книжных магазинах появились книжки шаромолниевой тематики. Цепкая детская память даже подкидывает эпиграф из одной такой книжки из домашней библиотеки:

Плывет шар тускло-алый -
Мне очень повезло.
Коснись же губ усталых,
Целуйся сквозь стекло...
© Ю. Железняков

Казалось, что победа научно-технического прогресса над всеми загадками природы уже совершенно неизбежна. И эти чортовы шары нам скоро раскроют все свои тайны, а может и будут по утрам кофе в постель приносить. Однако довольно скоро в стране стало нечего кушать и население озаботилось более насущными проблемами. Физики-романтики огорчились, но ещё не сдавались.

Прошли годы, нефть подорожала, наступила стабильность и вертикальность. У каждого второго появился цифровой фотоаппарат, а у каждого первого - мобильник с камерой. И казалось бы что вот - теперь-то мы завалим физиков своими свидетельствами и экспериментальными данными, и тайна энергетических клубков будет решена раз и навсегда. Но увы...

Frequency of Miracles from r/funny

Что случилось, господа физики-уфологи? Где тысячи качественных фотографий? Где экспериментальные подтверждения? Не говорите мне что это оказалось очередным детским разочарованием...