Чтобы добавлять сообщения и комментарии, .

@mismatch:
mismatch

Может ли TreeSet содержать дубликаты? Не спешите с ответом, а лучше почитайте этот пост.

@mismatch:
mismatch

В The Myth of the Root Cause: How Complex Web Systems Fail и Each necessary, but only jointly sufficient пишут о том, что при анализе падения, выхода из строя сложной системы не следует искать единую корневую причину. Анализируя произошедшее падение постфактум нам свойственно выделять одни события и недооценивать другие, а также неправильно выстраивать их во времени, путая причину и следствие. Также, когда объяснение требуют как можно скорее, нам свойственно упрощать и не докапываться до истинных причин. Нахождение единственной причины падения сложной системы сравнивают с поиском единственной причины успеха человека / бизнеса. На самом деле причин много, но каждая из них по отдельности не является достаточной, а только некоторая их комбинация. Надо перестать воспринимать сложную систему как линейную, а в нелинейной системе, как известно, даже небольшие отклонения значений ее параметров могут приводить к существенным изменениям всей системы. Утверждается, что сложную систему следует считать сломанной по умолчанию.
Опасность сведения падения системы к единственной корневой причине заключается еще и в том, что по результатам анализа обычно принимаются меры по недопущению предполагаемой причины повторно, которые сами по себе могут стать причиной следующего падения.

@mismatch:
mismatch

On the criteria for decomposing systems into microservices — мудрость веков, собранная в одной презентации. Особенно полезно для молодых и юных, воспринимающих микросервисы как непаханое поле, где царит анархия :)

@mismatch:
mismatch

More unit tests? No! What your code needs is petrol and a match. — развлечение для JS разработчиков.

@mismatch:
mismatch

Thinking In Parallel — а нужно ли распараллеливать решение задачи? Всегда ли это уменьшает время решения? Вопрос распараллеливания — это вопрос оптимизации. Об этом и не только говорит Brian Goetz в этом видео.

@mismatch:
mismatch

youtube.com — !адекватное Java — интервью!

@mismatch:
mismatch

youtu.be — для тех, кто пишет многопоточные программы и использует разделяемое изменяемое состояние, но еще не в курсе, чем это может обернуться.

@mismatch:
mismatch

habrahabr.ru — отличный юмор для тех, кто понимает ;)

@mismatch:
mismatch

vimeo.com — неплохое систематизированное введение в RxJava для тех, кто потерялся в документации

@mismatch:
mismatch

somethingsimilar.com — Notes on Distributed Systems for Young Bloods

@mismatch:
mismatch

habrahabr.ru — «Красота» кода — зло! Никогда не называйте код «красивым», даже мысленно. Самый изощрённый говнокод получается из стремления «сделать красиво». Код может быть читаемым, предсказуемым, лаконичным — но никак не красивым!

Что тут скажешь? Сердцу не прикажешь :) Смотришь на один код и умиляешься, а от другого плеваться хочется. И в этот момент не раскладываешь код по полочкам. Это уже, когда джуну объясняешь, что такое хорошо и что такое плохо.

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

@mismatch:
mismatch

youtu.be — введение в Kafka Streams

@mismatch:
mismatch

youtu.be — Perfect Scalability (by Michael Nash). При идеальной масштабируемости чем больше добавляем ресурсов тем большую нагрузку система может выдержать и эта зависимость линейная. Избегайте разделяемого состояния и соревнования за доступ к нему (за счет дублирования данных). Не полагайтесь на порядок операций (сделайте их идемпотентными). Минимизируйте общение между компонентами вашей системы, отдавайте предпочтение асинхронному взаимодействию. Разрабатывайте компоненты так, чтобы падение одного из них не приводило к падению всей системы. Масштабируемая система должна быть децентрализованной и постоянно развиваться пока функционирует. Применяйте command sourcing, чтобы справиться с пиковыми нагрузками, — принимайте и запоминайте комманды сразу, применяйте, когда есть свободные ресурсы. Сложные системы плохо масштабируются.

@mismatch:
mismatch

infoq.com — One Weird Trick for Making Perfect Software — Pieter Hintjens (автор ZeroMQ) рассказывает о результато-ориентированном подходе к созданию идеального ПО. Идеальное ПО в первую очередь помогает конечным пользователям решать их собственные проблемы и успешно на рынке. Его разработка движима неудовлетворенными потребностями пользователя. Эти потребности документируются в виде набора небольших проблем, каждую из которых можно достаточно легко держать в голове и решить за относительно короткое время (не более нескольких часов — чем меньше, тем лучше). При этом разработка ведется так, что один коммит решает одну проблему и новая проблема решается преимущественно за счет добавления нового кода, минимально затрагивая существующий. Этот подход требует определенной компетенции от разработчика и не предполагает разгребания технического долга.

@mismatch:
mismatch

codepen.io — арпеджиатор на javascript

@mismatch:
mismatch

infoq.com — Тесты или продвинутая система типов? На что положиться? И то и другое требует дисциплины. При этом качество тестов может существенно варьироваться — не зря же придумали мерить покрытие и мутационное тестирование.

@mismatch:
mismatch

ted.com — Адам Грант: Неожиданные привычки тех, кто мыслит оригинально

@mismatch:
mismatch

infoq.com — если вы все еще пишете на ООП языке, но поглядываете в сторону ФП, морщась при упоминании монад и аппликативных функторов, этот доклад для вас.

@mismatch:
mismatch

youtu.be — полезно послушать, если вы пишите свой фронтэнд на react.js

@mismatch:
mismatch

youtu.be — хороший вводный доклад о HATEOAS и о том как добавить его в свой REST сервис, используя Spring Hateoas.