Size: a a a

2019 July 18
oleg_log
Прям мемом по больным ранам.
Короч self-documenting code это отмазка от работы.
Антирез, спаси https://t.me/oleg_log/1309
источник
oleg_log
Какие шрифты гоняете?
Анонимный опрос
50%
Обычные в редакторе
14%
Специально выбранные
33%
FiraCode или другое с лигатурами
1%
Спецом отказался от monospace(!!!)
2%
Другое напишите в лс, плес, @olegkovalov (пред пункт тоже можно в лс, хочу узнать что с вами не так)
Проголосовало: 526
источник
oleg_log
Ну и сразу ссыль на FiraCode кто не знает
https://github.com/tonsky/FiraCode

Кстати на днях в Google Fonts были добавлены. Приятно.
источник
oleg_log
#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.
На закуску, увлекательное чтиво про разные типы консистентности на примере бейсбола(правила знать не надо, там объяснят)
источник
oleg_log
#CAP
источник
oleg_log
Announcing The New Go Store

ЗАПИСЫВАЕМСЯ НА ГОФЕРОВ ОСТАЛОСЬ 2 КОФТОЧКИ 💋👌

https://blog.golang.org/store
источник
oleg_log
fastest checkout ever
лол, настолько быстрый, что скидку 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
источник
2019 July 19
oleg_log
Если у вас есть свободный час, а он есть, посмотрите этот доклад от Jonathan Blow https://www.youtube.com/watch?v=pW-SOdj4Kkk

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

+ отсылка к Отцам и 3 неделям на создание Unix (https://t.me/oleg_log/967)
источник
oleg_log
источник
oleg_log
Вспомнился мой закреп из твитора:

The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software
—IEEE Standard Glossary of Software Engineering Terminology
источник
oleg_log
How many hours have you spent practicing programming?

In 2013 I emailed 50 programmers whose projects I studied and admired asking them "Would you be willing to share the # of hours you have spent practicing programming? Back of the envelope numbers are fine!". Some emails bounced back. Some went unanswered. But five coders wrote back.

But, while waiting for more responses to trickle in, I slowly forgot about this project, until this morning (7/18/2019), when I stumbled upon one of those old emails. Sorry for the delay!

No evidence has been found that the 10,000 hour strategy is flawed. :)

https://github.com/breck7/30000hours
источник
oleg_log
Я на последнем го-митапе чуток разжовывал идею 'Accept interfaces, return structs'. И вот что меня удивило, так это кол-во людей, возносящих это в абсолют.

2 отличных гофера (привет Искандер и Алексей) отдельно мне намекнули, что стоит добавить "возвращайте ошибки как error, а не как *myError", иначе потом в коде получается каша и теряются абстракции. Это говорилось про начинающих гоферов в основном , но...

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

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

Золотой фонд цитат: Делигируйте херню

https://www.youtube.com/watch?v=K6oZuB8_dU8&feature=youtu.be
источник
oleg_log
источник
oleg_log
An active monitoring software to detect failures before your customers do. cloudprober.org

https://github.com/google/cloudprober

Гугловская репа без го модулей #кортизолу_олегу
источник
oleg_log
За что я люблю репозитории больших фирм(да и небольших), так это за небольшие инсайты.

Mcrouter is a memcached protocol router for scaling Memcached deployments. It's a core component of cache infrastructure at Facebook and Instagram where mcrouter handles almost 5 billion requests per second at peak.

https://github.com/facebook/mcrouter
источник
2019 July 20
oleg_log
Как же метко показано все. Спасибо @todayishared
источник
oleg_log
Хм, жаль я не заглядывал вовнутрь проекта раньше.

Оказывается там все размудрено(крайнее, обратное к намудрено) в виде "микрорепозиториев".

В основной репе ток 1 файл main.go который читает конфиг из модуля/репы конфиг и запускает модуль cmd. И вот это все разные репозитории. А там и еще другие для контроллеров, адаптеров и прочего...

#кортизолу_олегу с утра
источник