☕️ Мерлин заваривает τσάι 🐌
1.09K subscribers
3.54K photos
64 videos
94 files
2.43K links
Merlin makes a slice
Merlin iterates it's twice
Happy compiling!
Download Telegram
произошло размещение информации
WTF

В кодовую базу Chromium добавлена возможность блокировки открытия встроенного в браузер интерфейса для просмотра исходных текстов текущей страницы. Блокировка производится на уровне локальных политик, заданных администратором, через добавление маски "view-source:*" в список запрещённых URL, настраиваемый при помощи параметра URLBlocklist. Изменение дополняет ранее присутствующую опцию DeveloperToolsDisabled, позволяющую закрыть доступ к инструментам для web-разработчиков.

https://www.opennet.ru/opennews/art.shtml?num=56130
Forwarded from Segment@tion fault
​​И первый публичный анонс нашего pub/sub-сервера. Сервер - PubSubRT, протокол - PSRT (IESG approved, port 2873)

В чем особенности сервера:

1) Минимально простая конфигурация. На производительность влияет только один параметр - data queue. Чем он меньше - тем меньше latency, но клиент может дольше ждать перед отправкой сообщения

2) Работает максимально быстро, даже с большими пейлоадами. И да, latency на хорошей сети редко поднимается выше 0,5 ms (для мелких пейлоадов - в пределах 30-40 микросекунд)

3) Это не "черный ящик". максимальный мониторинг всего, что происходит внутри

4) Жесткое слежение за latency, warnings в логи, как только превышается допустимый параметр

5) Никаких "таблиц подписки" - только b-trees. Клиенты могут задать миллионы подписок на разные топики, но если сообщения не ходят сразу в миллион клиентов бродкастом - сервер этого не замечает.

Latency между паблишером и конкретным подписчиком мы считаем, как время с момента получения от паблишера первого байта OP_PUBLISH и до ухода последнего байта в дата-сокет подписчика

В чем особенности протокола. Основная особенность одна - мы использовали два сокета (на один порт) и отказались от карусели OP-ACK. Аргумент против один: это усложняет написание надежного клиента, впрочем клиенты на Rust и Python уже вполне надежные. Теперь аргументы в пользу:

- В Pub/Sub пуши от сервера приходят только когда вы получаете сообщение. поэтому пусть себе и ходят по выделенному сокету данных

- По сокету управления все операции - атомарные. Карусель OP-ACK на клиенте тоже не нужна, что намного облегчает логику

- Благодаря двум сокетам, сервер может посылать ACK на операции контроля прямо в то время, пока клиент по второму сокету скачивает большой пейлоад

- Внезапно, но есть куча клиентов, которые просто отправляют данные и ни на что не подписываются. В PSRT данные на сервер можно пушить хоть UDP-фреймами, с ACK или без

- Нет retains. На высоконагруженных Pub/Sub от них всё равно рано или поздно отказываются, потому что это обычно операции с диском

- Очень жесткий контроль таймаутов. Дохлый клиент будет с сервера немедленно выброшен. Дохлый сервер будет немедленно переподключен клиентом

- Максимально простой запуск TLS

- Репликация и HA из коробки. В сервере мы ее пока не открывали, но в будущем думаю да. Протокол репликации открыт

- Логическая совместимость с MQTT - те же топики, те же маски

Все это уже работает в продакшне у клиентов. Реальное ускорение с пейлдоадами >10kb на медленных каналах (нестабильный 1Mbit) - в 5-10 раз быстрее, чем MQTT. Наша EVA ICS уже получила поддержку PSRT в дополнение к MQTT, релиз выйдет примерно через месяц.

https://github.com/alttch/psrt
TIL в postgres можно накатывать ограничения только для новых записей

ALTER TABLE orders 
ADD CONSTRAINT check_price_gt_zero
CHECK (price >= 0) NOT VALID;

Вот это вот NOT VALID говорид постгре "падажжи, не проверяй старые записи, а вот новые валидируй"

https://hakibenita.com/postgresql-unknown-features#add-constraints-without-validating-immediately
Одна из интересных вещей, о которых не так давно прочитал - это система складывания, которая применялась при развертке панелей космических аппаратов, а сейчас используется, например, при складывании бумажных карт и схем. Называется она "Миура-ори" и, среди прочего, раскладывается одним движением руки. https://en.wikipedia.org/wiki/Miura_fold

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

change my mind
Наткнулся на любопытную идею квадратичного голосования.

Суть в следующем: при прямой демократии работает эффект "тирании большинства". Суть эффекта примерно состоит в следующем: идёт голосование по безразличному для большинства, но важному для небольшой доли людей вопросу, и в большом количестве случаев решение будет приниматься не заинтересованным меньшинством, а безразличным большинством (надо понимать, что роли меньшинства и большинства людей постоянно меняются в разных обстоятельствах).

Грубо говоря, голосуют люди района Кукушкино за постройку детских качелек в сквере имени Девяткина — и большинство проголосуют под действием случайного импульса, они в этот сквер не ходят. Посетители сквера и рады бы решить этот вопрос между собой — но, скажем, по историческим причинам, такие вопросы решаются на уровне района.

А через месяц голосование насчёт сноса гаражей на другом конце Кукушкино.

Квадратичное голосование -- это вариант голосования с покупкой голосов. При этом цена голосов растёт как квадрат их количества: если для на выборах тебе хочется купить 1 голос, то ты платишь 1 условный рубль (можно сделать так, что один голос тебе всегда достаётся бесплатно), если 2 голоса -- то платишь 4 рубля, если 1000 -- то миллион и т.д.

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

С другой стороны, просто купить голосование не получится -- да, условный богатенький буратино может купить 10к голосов, но они обойдутся ему в 100 млн рублей, в то время как чуть более чем 1000 вась с 256 рублями могут его опрокинуть.

Я не знаю, насколько жизнеспособен этот механизм, но меня заинтересовали две штуки:

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

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2343956
☕️ Мерлин заваривает τσάι 🐌
Наткнулся на любопытную идею квадратичного голосования. Суть в следующем: при прямой демократии работает эффект "тирании большинства". Суть эффекта примерно состоит в следующем: идёт голосование по безразличному для большинства, но важному для небольшой доли…
В комментах поделились выпуском базового блока с обсуждением книги https://xn--r1a.website/basicblockradio/431 #подкаст


Так же в шоунотах есть статья Виталика Бутерина с обзором книги авторов статьи https://vitalik.ca/general/2018/04/20/radical_markets.html — там затрагивается тема квадратичного голосования
Сообщество Go на следующий день после релиза 1.18 би лайк
Раз пошла такая пьянка, решил вытащить из стола свою старую библиотеку для батчинга. Старую версию (на interface{} и капле рефлексии) я использовал в нескольких домашних проектах.

Конечно, это в первую очередь для личного пользования, но вдруг кому-то понадобится что-то подобное

https://github.com/ninedraft/batch