oleg_log
Приз на самого внимательного погромиста-аутиста (внезапно из 50 человек еще никто не заметил)
О, из доп 200 чел сразу появились ответы: пробел после 1го иф.
В общем это странно, что при добавлении новых изменений автор не нажал форматирование кода.
Соотв кто-то тут не скаут и не выполняет правила.
В общем это странно, что при добавлении новых изменений автор не нажал форматирование кода.
Соотв кто-то тут не скаут и не выполняет правила.
Все время забывал рассказать про 1 карго-культ. У нас есть метрики, алёрты, PagerDuty который умеет в слак/смс/звонок/мобилочку и...ноль контекста, где произошла проблема.
Ведь в описание оповещения мы не собираемся добавлять префикс prod/test/dev, чтобы быстро намекнуть дежурному всепропало/ланщас/лол.
В итоге каждый алёрт это пойти на страницу самого алерта, нажать cmd+F и найти желанное слово dev и забить. В общем ток ща рещили добавить префикс. Прошло лишь пару лет (возможно 5, я не уверен).
Ведь в описание оповещения мы не собираемся добавлять префикс prod/test/dev, чтобы быстро намекнуть дежурному всепропало/ланщас/лол.
В итоге каждый алёрт это пойти на страницу самого алерта, нажать cmd+F и найти желанное слово dev и забить. В общем ток ща рещили добавить префикс. Прошло лишь пару лет (возможно 5, я не уверен).
oleg_log
Все время забывал рассказать про 1 карго-культ. У нас есть метрики, алёрты, PagerDuty который умеет в слак/смс/звонок/мобилочку и...ноль контекста, где произошла проблема. Ведь в описание оповещения мы не собираемся добавлять префикс prod/test/dev, чтобы…
Все порешалось 2 строками в ямле. Красота.
(хм, соре, надо было без оповещения написать)
(хм, соре, надо было без оповещения написать)
Сейчас поднялась волна очередного "ой наши данные уходят в левые руки", в этот раз из-за FaceApp и старения. Видите ли они данные отдают на сервер и непонятно, что там будет.
Ну...а в чем новость? почему залив фоточек в вк/телегу/в удаленную графану-сервис не делает того же самого?
Возмужения по поводу "они собирают данные для нейронки, чтобы построить модель для старения и поиска нас при помощи камер" как минимум смешно звучит после ФБ и 10years challenge.
Альо ребятки.
Ну...а в чем новость? почему залив фоточек в вк/телегу/в удаленную графану-сервис не делает того же самого?
Возмужения по поводу "они собирают данные для нейронки, чтобы построить модель для старения и поиска нас при помощи камер" как минимум смешно звучит после ФБ и 10years challenge.
Альо ребятки.
oleg_log
Хм, жависты-сишарповцы, а у вас есть тулы для race detection? Вот чтобы я мог быстро проверить, все ли красиво между тредами и никакие данные не пересекаются? аля Go race detector / C++ ThreadSanitizer, если знаете что это. Быстрый гуглеж как-то не сильно…
Недавно спрашивал для тулзы для race detection и вот что подкинули:
Решение от FB для Java, C/C++, Objective-C, но это все статический анализ
https://fbinfer.com/
https://github.com/facebook/infer
ReSharper - естественно для .Net и тоже статика (платное как помню)
CHESS Microsoft Research. По описанию как раз, что надо - проверка на баги в рантайме.
http://research.microsoft.com/en-us/projects/chess/
(еле нашел репу https://github.com/LeeSanderson/Chess)
Для C/C++/Fortran еще Helgrind
http://valgrind.org/docs/manual/hg-manual.html
Итог чуток ожидаемый и стремный (для меня) - как можно спокойно писать потокобезопасный код, без использования чего-то автоматического для проверки? Бррр
Решение от FB для Java, C/C++, Objective-C, но это все статический анализ
https://fbinfer.com/
https://github.com/facebook/infer
ReSharper - естественно для .Net и тоже статика (платное как помню)
CHESS Microsoft Research. По описанию как раз, что надо - проверка на баги в рантайме.
http://research.microsoft.com/en-us/projects/chess/
(еле нашел репу https://github.com/LeeSanderson/Chess)
Для C/C++/Fortran еще Helgrind
http://valgrind.org/docs/manual/hg-manual.html
Итог чуток ожидаемый и стремный (для меня) - как можно спокойно писать потокобезопасный код, без использования чего-то автоматического для проверки? Бррр
Fbinfer
Infer Static Analyzer | Infer | Infer
A tool to detect bugs in Java and C/C++/Objective-C code before it ships
Столкнулся с ADHD-driven development в личном проекте.
(ADHD = Attention deficit hyperactivity disorder
= Синдром дефицита внимания и гиперактивности)
Я вроде как хочу что-то сделать, но все это происходит неструктурированно. В голове есть фичи, есть понимание, как должно выглядеть.
Но коммиты получается внезаными, делаются другие, менее приоритетные вещи, и вроде прогресс есть, а вроде и нет.
Возможно стоит делать более мелкие и детализированные таски.
Не помню такого у себя ранее. Хм..
(ADHD = Attention deficit hyperactivity disorder
= Синдром дефицита внимания и гиперактивности)
Я вроде как хочу что-то сделать, но все это происходит неструктурированно. В голове есть фичи, есть понимание, как должно выглядеть.
Но коммиты получается внезаными, делаются другие, менее приоритетные вещи, и вроде прогресс есть, а вроде и нет.
Возможно стоит делать более мелкие и детализированные таски.
Не помню такого у себя ранее. Хм..
Вот очень бесящая вещь
Часто происходят ошибки конвертации (ой, а как минуту в секунду, а часы? а тут делить надо, или умножить? почему не корень из числа?).
Потом это раздутое имя, этож просто lifetime, какая разница в чем мы хотим хранить ВРЕМЯ ?
Ну и во всех[citation needed] есть тип для длительности времени аля
Пожалуй одно место где надо это в конфиг-файле(ямл, жсон). Чтобы не долбаться с префиксами можно сделать
#бесит_в_коде
(заведу новый тег что ли, в закладках уже 5 вещей лежит)
int sessionLifetimeSeconds потому-что стрельба себе по ногам.Часто происходят ошибки конвертации (ой, а как минуту в секунду, а часы? а тут делить надо, или умножить? почему не корень из числа?).
Потом это раздутое имя, этож просто lifetime, какая разница в чем мы хотим хранить ВРЕМЯ ?
Ну и во всех[citation needed] есть тип для длительности времени аля
time.Duration. Смысл переизобретать?Пожалуй одно место где надо это в конфиг-файле(ямл, жсон). Чтобы не долбаться с префиксами можно сделать
lifetimeSeconds: xxx и норм. Но вот по коду гонять суффикс -Seconds - зашквар.#бесит_в_коде
(заведу новый тег что ли, в закладках уже 5 вещей лежит)
oleg_log
Вот очень бесящая вещь int sessionLifetimeSeconds потому-что стрельба себе по ногам. Часто происходят ошибки конвертации (ой, а как минуту в секунду, а часы? а тут делить надо, или умножить? почему не корень из числа?). Потом это раздутое имя, этож просто…
Прям мемом по больным ранам.
Короч self-documenting code это отмазка от работы.
Антирез, спаси https://xn--r1a.website/oleg_log/1309
Короч self-documenting code это отмазка от работы.
Антирез, спаси https://xn--r1a.website/oleg_log/1309
oleg_log
Какие шрифты гоняете?
Ну и сразу ссыль на FiraCode кто не знает
https://github.com/tonsky/FiraCode
Кстати на днях в Google Fonts были добавлены. Приятно.
https://github.com/tonsky/FiraCode
Кстати на днях в Google Fonts были добавлены. Приятно.
GitHub
GitHub - tonsky/FiraCode: Free monospaced font with programming ligatures
Free monospaced font with programming ligatures. Contribute to tonsky/FiraCode development by creating an account on GitHub.
Forwarded from I hate overtime
#messaging #arch
CAP vs exactly once
Как-то так получается, что на каждой галере приходится объяснять коллегам почему ни один message broker не умеет в exactly once и что не стоит ждать чуда от магической очереди, которая придет и подарит все те же гарантии, что и in-proc, при этом размазав нагрузку и сделав всё остальное, что мы там ждем от мессаджинга. Оставлю кэп-пост тут, если кому пригодится -- велкам
Ок, поехали, если нет exactly once, то что есть? Есть at most once, когда нам ок потерять сообщеньку, но дубли не допустимы и at least once, когда, наоборот, ок задублировать, но не ок потерять.
Как это работает: есть 2 стула push и pull, при первом сообщенька заталкивается консьюмеру и консьюмер рапортует, что он ее получил. На втором стуле консьюмер сам читает батчами и иногда говорит, что вот до сюда я отработал. Суть на самом деле в том, что брокер всегда ждет от консьюмера(ов) отмашки о том, запроцессил ли он сообщения или нет, и если нет, то принимается решение на основании установленной at * once политики.
Вернемся к exactly once. Какие же брокеры мы любим? Правильно, персистентные! Поэтому систему брокер-консьюмер можно представить в виде 2 хранилищ, которые надо держать строго консистентными при политике exactly once. А вот тут и всплывает CAP, который говорит, что в распределенных системах мы можем всегда расчитывать либо на доступность, либо на строгую консистентность. Недоступный брокер нам вряд-ли подходит(очередь останавливается, если какая-то сообщенька не обработана консьюмером), так что останавливаемся на AP-схеме. Что это значит применительно к гарантиям доставки: пусть сообщенька была успешно обработана подписчиком, но, по какой-то причине, сообщение о успешной обработке не было получено брокером. Что в этом случае будет делать брокер? Можно либо понадеяться, что сообщение доставлено, либо перепослать. Если перепослали, то нарушаем exactly once и получаем at least once, если оставляем, то теряем сообщение на аналогичном кейсе, где консьюмер все-таки не смог обработать сообщение, но получаем at most once.
На закуску, увлекательное чтиво про разные типы консистентности на примере бейсбола(правила знать не надо, там объяснят)
CAP vs exactly once
Как-то так получается, что на каждой галере приходится объяснять коллегам почему ни один message broker не умеет в exactly once и что не стоит ждать чуда от магической очереди, которая придет и подарит все те же гарантии, что и in-proc, при этом размазав нагрузку и сделав всё остальное, что мы там ждем от мессаджинга. Оставлю кэп-пост тут, если кому пригодится -- велкам
Ок, поехали, если нет exactly once, то что есть? Есть at most once, когда нам ок потерять сообщеньку, но дубли не допустимы и at least once, когда, наоборот, ок задублировать, но не ок потерять.
Как это работает: есть 2 стула push и pull, при первом сообщенька заталкивается консьюмеру и консьюмер рапортует, что он ее получил. На втором стуле консьюмер сам читает батчами и иногда говорит, что вот до сюда я отработал. Суть на самом деле в том, что брокер всегда ждет от консьюмера(ов) отмашки о том, запроцессил ли он сообщения или нет, и если нет, то принимается решение на основании установленной at * once политики.
Вернемся к exactly once. Какие же брокеры мы любим? Правильно, персистентные! Поэтому систему брокер-консьюмер можно представить в виде 2 хранилищ, которые надо держать строго консистентными при политике exactly once. А вот тут и всплывает CAP, который говорит, что в распределенных системах мы можем всегда расчитывать либо на доступность, либо на строгую консистентность. Недоступный брокер нам вряд-ли подходит(очередь останавливается, если какая-то сообщенька не обработана консьюмером), так что останавливаемся на AP-схеме. Что это значит применительно к гарантиям доставки: пусть сообщенька была успешно обработана подписчиком, но, по какой-то причине, сообщение о успешной обработке не было получено брокером. Что в этом случае будет делать брокер? Можно либо понадеяться, что сообщение доставлено, либо перепослать. Если перепослали, то нарушаем exactly once и получаем at least once, если оставляем, то теряем сообщение на аналогичном кейсе, где консьюмер все-таки не смог обработать сообщение, но получаем at most once.
На закуску, увлекательное чтиво про разные типы консистентности на примере бейсбола(правила знать не надо, там объяснят)
Announcing The New Go Store
ЗАПИСЫВАЕМСЯ НА ГОФЕРОВ ОСТАЛОСЬ 2 КОФТОЧКИ 💋👌
https://blog.golang.org/store
ЗАПИСЫВАЕМСЯ НА ГОФЕРОВ ОСТАЛОСЬ 2 КОФТОЧКИ 💋👌
https://blog.golang.org/store
oleg_log
Announcing The New Go Store ЗАПИСЫВАЕМСЯ НА ГОФЕРОВ ОСТАЛОСЬ 2 КОФТОЧКИ 💋👌 https://blog.golang.org/store
fastest checkout ever
лол, настолько быстрый, что скидку 20% пропустил (вот промо Gopher20)
лол, настолько быстрый, что скидку 20% пропустил (вот промо Gopher20)
oleg_log
Какие шрифты гоняете?
Так вот, что стало известн.
Конечно же 1е что сообщили это Fira Code. Пользуюсь сам и доволен. Меня устраивает. Знаю, что многим не заходят эти странные символы, но...не знаю, мне наоборот показались удобнее /shrug
(https://github.com/tonsky/FiraCode)
Потом много упоминаний Iosevka, мне показался узким, но говорят привыкаешь и ок (https://github.com/be5invis/Iosevka)
FuraCode - попатченный Fira Code от Nerd Fonts
Ну и еще моношрифтики:
DejaVu Sans Mono (https://www.fontsquirrel.com/fonts/dejavu-sans-mono)
Noto Sans (https://fonts.google.com/specimen/Noto+Sans)
Hack (https://github.com/source-foundry/Hack)
Go Mono (да, это офиц от го) (https://blog.golang.org/go-fonts)
(последние 2 оказались популярными, и для кода, и для терминалов)
Отдельно решил указать:
PragmataPro (https://www.fsd.it/shop/fonts/pragmatapro/
Source Code Pro (https://fonts.google.com/specimen/Source+Code+Pro)
А кое-то кто пилил лабы на Хаскеле по ночам с Comic Sans
(да, @youhadnojob ?)
И вообще есть репо Nerd Fonts, в котором фонтовые энтузиасты собираюь и патчат шрифты (забавно звучит) https://github.com/ryanoasis/nerd-fonts
Конечно же 1е что сообщили это Fira Code. Пользуюсь сам и доволен. Меня устраивает. Знаю, что многим не заходят эти странные символы, но...не знаю, мне наоборот показались удобнее /shrug
(https://github.com/tonsky/FiraCode)
Потом много упоминаний Iosevka, мне показался узким, но говорят привыкаешь и ок (https://github.com/be5invis/Iosevka)
FuraCode - попатченный Fira Code от Nerd Fonts
Ну и еще моношрифтики:
DejaVu Sans Mono (https://www.fontsquirrel.com/fonts/dejavu-sans-mono)
Noto Sans (https://fonts.google.com/specimen/Noto+Sans)
Hack (https://github.com/source-foundry/Hack)
Go Mono (да, это офиц от го) (https://blog.golang.org/go-fonts)
(последние 2 оказались популярными, и для кода, и для терминалов)
Отдельно решил указать:
PragmataPro (https://www.fsd.it/shop/fonts/pragmatapro/
Source Code Pro (https://fonts.google.com/specimen/Source+Code+Pro)
А кое-то кто пилил лабы на Хаскеле по ночам с Comic Sans
(да, @youhadnojob ?)
И вообще есть репо Nerd Fonts, в котором фонтовые энтузиасты собираюь и патчат шрифты (забавно звучит) https://github.com/ryanoasis/nerd-fonts
GitHub
GitHub - tonsky/FiraCode: Free monospaced font with programming ligatures
Free monospaced font with programming ligatures. Contribute to tonsky/FiraCode development by creating an account on GitHub.
Если у вас есть свободный час, а он есть, посмотрите этот доклад от Jonathan Blow https://www.youtube.com/watch?v=pW-SOdj4Kkk
О том, как мы теряем знания, утопая в абстракциях. Доклад может вогнать в депрессию, поэтому воспринимать осторожно, но чутко.
+ отсылка к Отцам и 3 неделям на создание Unix (https://xn--r1a.website/oleg_log/967)
О том, как мы теряем знания, утопая в абстракциях. Доклад может вогнать в депрессию, поэтому воспринимать осторожно, но чутко.
+ отсылка к Отцам и 3 неделям на создание Unix (https://xn--r1a.website/oleg_log/967)
YouTube
Jonathan Blow - Preventing the Collapse of Civilization (English only)
Jonathan's talk from DevGAMM 2019.
https://www.youtube.com/c/DevGAMMchannel
https://www.youtube.com/c/DevGAMMchannel