← All posts tagged profit

SannySanoff
programming profit kdb Написал мониторинг. Поставил, стало быть, prometheus. Штук десять разных систем льют в него данные.

А проблема в том, что я не люблю ихний pull, то есть когда он ходит сам за данными, а я ему отдаю по запросу. Потому что у меня там кластер, динамическое всё, кубернетезы, нужно использовать чужие костыли, service discovery всётакое, делать динамический список таргетов. Всё как завещали отцы.

Сделал я pushgateway, то есть как не рекомендовали отцы. И из скриптов туда заливаю данные, а потом сам прометеус их оттуда готовенькими всасует. А данные у меня разные есть, но как известно, данные данным рознь. Таковая система работает с данными типа "загрузка ЦПУ", но плохо работает с данными "запросов в секунду", потому что их хорошо агрегировать "запросов в минуту", "в час" итд. Прометеус это умеет, но в системе с пуш гейтвей не работает, потому что если я например буду каждую секунду в гейтвей заливать цифру "запросов-в-секунду", они не будут там накапливаться, а только последнее хранится. Потом раз в полминуты эти данные забираются уже прометеусом и сами понимаете. Это не синхронизируется в принципе. И не лечится. Так задизайнено. Keep it simple. Ну я приблизительно синхронизировал, порядок совпадает и ладненько. Всякие там jobs, instances как положено.

Потом пошел значит через API запросы гонять и рисовать стало быть graphviz граф на ПЕТОНЕ, в котором на дугах нарисовано к-во запросов в минуту час итд, а в квадратиках загрузка процов итп. Получилось пресимпатишно. НО.

1) куча запросов к прометеусу за данными — тормозит, сотня запросов к прометеусу на 1 отрисовку
2) pushgateway со своими нерешаемыми проблемами.

ДОЛГО ЛИ КОРОТКО

Короче, выкинул прометеус нафиг. Больше ничего не трогал. Оставил как есть все сенсоры на всех 10 сервисах, которые пушают мне свои цифры. И загрузку, и к-во запросов за отчетный период (раз в полминуты лью например).

Взял в руки kdb+. Написал парсер заливаемых данных (POST query). Написал табличку в памяти которая хранит всё что в нее кладут, без вопросов, для последних нескольких миллионов записей, подчищая.

Вместо 100 запросов за данными к прометеусу, теперь запускаю 1 раз весь отрисовочный код, собираю в коллекцию все запросы которые были сделаны (запросы структурно оставил те же самые, токо в kdb syntax перевел), а отдаю нули. Потом 1 раундтрип к кдб с массивом запросов. Потом второй проход снова запускаю отрисовочный код, на этот раз он реально рисует: запросы свои запрашивает, но никто никуда не ходит — все ответы уже на руках.

Результат:

Код отрисовки стал двухпроходной (к-во и структура кода не изменилось, 7 строк ПЕТОНА добавилось которые запускают 2 прохода).

Весь код на kdb+, заменивший прометеус, состоит из 8 (восемь!) строк: пять строк REST сервер беcпарольный, который принимает метрики. 3 строки второй сервер, запароленный, в нем собственно определение таблицы 1 строка, к нему приходят с отрисовочного кода запросы за данными, и две строки утильных функций с повторяющимся кодом для агрегации.

Код, отправляющий данные с сервисов, — без изменений.

8 строк на нормальном языке ваш прометеус, миллениалы.

Да, и алерты на кдб проще будет прикручивать: нормальный язык, а не конечно любопытный, но ограниченный язык запросов к прометейной базке.
SannySanoff
коварно profit Вот гугл придумал свой pagerank. А ведь pagerank это по сути экстракция трудов других людей, которые самим фактом своего труда апрувят какие-то другие линки. Так было, и это работало, ДО централизованного веба.

А щас шо? Фейсбучики, и линки на фейсбучики, твитерчики и линкединчики, образно говоря. И жуечка сбоку. Гугл пожрал работу децентрализованного веба, децентрализованный веб подскукожился, стало более грустно.

Всем, впрочем, в основном пофиг. Всем, впрочем, всегда в основном пофиг.
SannySanoff
programming profit У меня такое случается, что я меняю шрифты в IDE.

Находка сезона iosevka ss07 просто глаз радуется, лигатуры там опять-таки норм (стрелочки клеви).

Нули — нулями, а не бублик с дыркой и не О, всякие амперсанды, буквы g и a, приятно смотреть. github.com
SannySanoff
programming С++ profit закончилось тем, что я переписал под себя cf (composable futures), точнее, я их выкинул и написал свое future/promise/when_all и все такое. Почему? Потому что те что были, как мне показалось, глючили в одном случае. Пока переписывал, оказалось мой баг был в моем коде, но дописал все равно.

Работает в несколько раз быстрее: копирует меньше, аллокаций делает меньше, и, стало быть, занимает меньшую долю общей нагрузки на мультицпу, кучу итп, я доволен. То шо было раньше, для моих нужд overengineered.
SannySanoff
WWW profit faggots Если пользоваться скайпом через веб (скайп — по большой нужде), то можно кастомными стилями его немного улучшить, например убрать эти неместные смайлики после каждой реплики собеседника.

собеседник: привет :)
я: привет
собеседник: шо-то мне седни херова :)
я: шо такое
собеседник: да температура 41,грипп наверное :)
я: еще новости?
собеседник: тут мой кот кажется помирает вообще, ппц карочи :( :)

короче, палю:

button[title="React to this message"] { display: none; }
SannySanoff
WWW profit Отключил в бровзере (vivaldi) отображаться строку с табами, которая под адрес лайном.

И.... ничего не потерял! Но приобрел вертикального пространства.

Пользую ctrl+tab со всплывающим списком, или поиск по имени. Ну иногда зайти в список окон и почистить нафиг 90%.

Лучше поздно, чем никогда!
SannySanoff
programming profit faggots Давеча случился релиз Flutter 1.0, по этому поводу был Live Event, где адепты и афтары собрались, показывали презентации, видосики, и коллективно радовались.

Я сам адепт Флуттера, но я не упущу случая пнуть. Там был один из главных дизайнеров (которые по визуальному дизайну), из тех, которые с высоким голосом и бородой от уха до уха. Он показывал демо, и она тормозила вплоть до 10FPS визуально в некоторых местах. На главной презентации.

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

Заминусовали.

"Оно не тормозит"
"Ты никогда не писал на флуттере"
"Это был не релиз билд (а дебуг моде)"

Не понимаю я с этими современными людишками ничего.
SannySanoff
programming profit Внезапно тазик на Google Cloud Engine 8ядерный, 32Гига, 8 локальных SSD стоит в районе $240/m.

Сделал для бенчмарка, получил RAID0 read speed 4 G / sec суммарно 2.6Т. Очень хорошо там хранить исторические данные для анализа.
SannySanoff
programming profit В целом angular dart ничо так, терпимо. Цикл edit-compile-run конечно подольше чем был в славном gwt, секунд 25 у меня на 2ядерном гейбуке.

Профит в том, что тайпчекает выражения в html шаблонах тоже, что немного утешает. Ну все остальное тоже тайпчекает, кроме левых проколов, таких как если ты написал левый тег, то он его молча как есть оставит. Всякие SCSS тоже нихрена не чекает, легло оно на что или нет. Но импорты в них понятно, ругается.

На безрыбье и рак — рыба.
SannySanoff
programming profit Загрузил немного данных в яндексовскую БД ClickHouse, сравнить перфоманс с KDB.

Clickhouse ничего почти кроме селектов не умеет, полезного мне мало (на KDB можно писать на супер-клевом встроенном языке который работает со скоростью самой бд, на clickhouse нет — вытаскивай результаты например в жабу и дальше только жаба, тащемта, а зачем мне жаба, шо я, буду на ней статистику гонять?).

Померял простой group-by, на memory table кликхауз уделал на этих запросах аналогичное KDB раза в полтора, на сжатой таблице хранимой на диске где-то того же порядка результат. Ну чо, нормуль, одобряю. Писать более сложные тесты не стал, потому что ну его нафиг, вот почему. А, и еще у них там сэмплинг есть при желании, то есть берутся не все данные, а регулярные кусочки, и по ним считаются приближенные данные, в кдб такое надо явно писать, но не было нужно.

Вердикт: перфоманс действительно на высоте, но использовать это для полезных целей кроме самого простого анализа time series не вижу смысла.
SannySanoff
programming profit вот раньше такая штука была, "zmodem" называлась. Шо это такое: сидишь в терминале, тебе запущенная в терминале консольная программа генерирует специальную последовательность, которую ТЕРМИНАЛ понимает и складывает в файл рядом с собой. Нужно чтобы передать например файл из консоли прямо ко мне, через сколько бы там я штук ssh не сидел далеко. Нужно, чтобы терминал умел понимать zmodem как он понимает ansi sequences. И кстати в другую сторону тоже работало.

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