Pull to refresh
4
0

Backend-разработчик

Send message

В статье опечатка, не в 1973 году, а в 1972. Иначе получается, что только 49 лет прошло.

ещё есть третьи, которым фиолетово :-)

Спасибо! Хороший материал для итеративного освоения. :-)

Вы из-за деревьев леса не видите. Не суть - мьютексы или клонировать реквест надо, главное, что требуется много лишних телодвижений, из-за того, что http.Request - мутабельная структура, которую требуют некоторые стандартные интерфейсы, у которой нет защищённых геттеров и сеттеров. Почему бы изначально не сделать http.Request интерфейсом? Если в каких-то случаях это не создаёт особых проблем, есть случаи, когда с реквестом возиться дорого.

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

В качестве примера можете поисследовать код Caddy. Хотя опять же, нет смысла это делать, отрицая наличие проблемы.

Статья хорошая, без фанатизма, старается привлечь внимание к существующим проблемам без какого-то хейта и холивара. Автор не топит за Rust или за другой язык. Он говорит о том, что выбор языка нужно делать как можно более осознанно исходя из задач и возможностей.
Спасибо за перевод!

Нет здесь никаких странностей для тех, кто работает с сетевым ПО. Мы используем под капотом сервер Caddy. Вполне обычная история, когда пишется промежуточный обработчик http-реквеста в цепочке (это и в другом подобном ПО будет решаться похожим образом)

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) error {

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

Go для нашей команды оказался реальной болью, когда мы решили писать на нём кэширующий прокси-сервер. Рейс-кондишны приходится отлавливать регулярно, ведь http.Request, который передаётся по цепочке обработчиков (в том числе сторонних) - это мутабельная незащищённая структура. Причём такие штуки отлавливают и в стандартной библиотеке: https://github.com/golang/go/issues/30597

А ещё мы отловили баг в библиотеке http/2, которому уже идёт второй год и чинить его, видимо, слишком дорого и некому. При определённых условиях сервер просто-напросто зависает: https://github.com/golang/go/issues/42534

А теперь взять и переписать всё - дорого. Возможно, будем в будущем слезать потихоньку в сторону Rust или ещё чего.

Что-то вспомнился мультфильм «ВАЛЛ-И».

Bastyon перспективнее выглядит

Соцсеть на блокчейне "Бастион" peertube под капотом использует https://bastyon.com/

Если бы открыли код, наверняка бы появилась такая группа. Возможно, даже хватило бы одного разработчика, как было с движком игры The Prince & The Coward: https://forums.scummvm.org/viewtopic.php?f=1&t=14939

Смысл в том, чтобы можно было внедрить поддержку в ScummVM. Эта штука позволяет играть в старые адвенчуры на разных платформах (https://www.scummvm.org/).

Исходники "Братьев Пилотов" бы ещё открыли вместе с невыпущенной 3-ей частью 3D-сериала. :-)

Поздравляю с релизом! Когда будет Linux-версия? Unity же из коробки в неё умеет.

Хорошая, интуитивно-понятная методика. Статья не содержит откровений, но от этого не становится менее полезной. Простые истины можно и нужно проговаривать. Спасибо за статью!

По теме статьи на Хабре недавно был опубликован гораздо более толковый материал: https://habr.com/ru/post/599771/

Да, с тяжеловесностью есть проблема. С другой стороны, развиваются как альтернативные клиенты, так и серверы нового поколения. В частности, есть сервер на Go - https://github.com/matrix-org/dendrite, и на Rust - https://gitlab.com/famedly/conduit.

1

Information

Rating
Does not participate
Location
Россия
Registered
Activity