Forwarded from лингвист реалист
"Спокойствие! Только спокойствие"
Решил перечитать любимую книгу детства: "Карлсон, который живёт на крыше". Тогда я прочитал её раза три и каждый раз оставался в полном восторге. Толстый шкодный чувак с мотором стал моей тайной ролевой моделью. Я был правильным отличником, а хотелось гулять по крышам, поглощать плюшки и "низводить" условную фрекен Бок. Если что, мультфильм покрывает лишь треть книги.
В 22 года я перечитал первую часть из трёх в оригинале, тем самым закрыв гештальт и бросив щведский язык после двух с половиной лет изучения. Тогда я больше обращал внимание на лингвистическую составляющую, чем содержательную.
И вот в 34 наступил очередной этап. Видимо, я почувствовал, что коронная фраза "умный, красивый, в меру упитанный мужчина в самом расцвете сил" стала напрямую относиться ко мне.
И что я могу вам сказать... Друзья, это жесть. Раньше я не понимал, почему шведы так недолюбливают Карлсона как персонажа. А теперь вижу, что это какой-то безработный необразованный абьюзер с завышенной самооценкой. А Малыш – типичная жертва. Он прекрасно видит, как Карлсон рушит всё вокруг, съедает вкусности без разрешения, обзывается, регулярно обижается и дуется. Но при этом Малыш скучает и страдает в отсутствие летающего другана.
В какие-то моменты с Карлсоном весело. А иногда он даже творит по-настоящему геройские деяния. Но потом вдруг пропадает или навязывает свои правила.
Видимо, книга всё же для детей. В этом случае всё идеально: смешной сюжет, понятные персонажи, динамичный язык. Читать её взрослым мозгом довольно неприятно. В какие-то моменты я просто пытался абстрагироваться. Если получалось, ржал в полный голос над проделками Карлсона и несчастной фрекен Бок. Если не получалось, охреневал и хотел отправить Малыша к психологу.
Моя очень субъективная оценка при чтении ребёнком: 10/10
А вы читали "Карлсона"? Как вам этот персонаж?
#ЛингвистРеалистКниги
Решил перечитать любимую книгу детства: "Карлсон, который живёт на крыше". Тогда я прочитал её раза три и каждый раз оставался в полном восторге. Толстый шкодный чувак с мотором стал моей тайной ролевой моделью. Я был правильным отличником, а хотелось гулять по крышам, поглощать плюшки и "низводить" условную фрекен Бок. Если что, мультфильм покрывает лишь треть книги.
В 22 года я перечитал первую часть из трёх в оригинале, тем самым закрыв гештальт и бросив щведский язык после двух с половиной лет изучения. Тогда я больше обращал внимание на лингвистическую составляющую, чем содержательную.
И вот в 34 наступил очередной этап. Видимо, я почувствовал, что коронная фраза "умный, красивый, в меру упитанный мужчина в самом расцвете сил" стала напрямую относиться ко мне.
И что я могу вам сказать... Друзья, это жесть. Раньше я не понимал, почему шведы так недолюбливают Карлсона как персонажа. А теперь вижу, что это какой-то безработный необразованный абьюзер с завышенной самооценкой. А Малыш – типичная жертва. Он прекрасно видит, как Карлсон рушит всё вокруг, съедает вкусности без разрешения, обзывается, регулярно обижается и дуется. Но при этом Малыш скучает и страдает в отсутствие летающего другана.
В какие-то моменты с Карлсоном весело. А иногда он даже творит по-настоящему геройские деяния. Но потом вдруг пропадает или навязывает свои правила.
Видимо, книга всё же для детей. В этом случае всё идеально: смешной сюжет, понятные персонажи, динамичный язык. Читать её взрослым мозгом довольно неприятно. В какие-то моменты я просто пытался абстрагироваться. Если получалось, ржал в полный голос над проделками Карлсона и несчастной фрекен Бок. Если не получалось, охреневал и хотел отправить Малыша к психологу.
Моя очень субъективная оценка при чтении ребёнком: 10/10
А вы читали "Карлсона"? Как вам этот персонаж?
#ЛингвистРеалистКниги
😁10🤡2
#prog #go #article #suckassstory
В стандартной библиотеке Go есть тип
Поле
Так как в Go нет констант (кроме чисел и строк),
Элемент синтаксиса
Какая по итогу ситуация? Во множестве реально используемых программ на Go есть код, который трогает глобальную переменную (и, так как это Go, без синхронизации), полагается на неявное обещание другого кода эту глобальную переменную не трогать и платят за проверки типов при касте, не смотря на то, что тип так-то известен статически. В теории тот факт, что
Очевидным выходом из этой ситуации является добавить функцию, которая будет возвращать значение
В стандартной библиотеке Go есть тип
http.Client — HTTP-клиент. Одно из полей этого типа — Transport. Это поле хранит значение, которое занимается обработкой единичных запросов. Разумеется, для поля Transport есть значение по умолчанию — DefaultTransport. Но есть одна загвоздка.Поле
Transport — и, соответственно, DefaultTransport — имеют тип RoundTripper. Это интерфейс с единственным методом:RoundTrip(*Request) (*Response, error)
DefaultTransport при этом на самом деле является значением типа Transport, у которого бОльшая часть полей является конфигурацией. На практике часто требуется скорректировать конфигурацию по умолчанию под нужды приложения (например, поменять таймауты). Но как это сделать?Так как в Go нет констант (кроме чисел и строк),
DefaultTransport является глобальной переменной пакета http. Соответственно, чтобы не поменять глобальную конфигурацию для всего, что использует http.Client (включая, возможно, код в зависимостях), нужно сначала сделать копию этой конфигурации. Более того, так как DefaultTransport имеет тип интерфейса RoundTripper, сначала нужно привести его к конкретному типу Transport. В итоге на практике во многих проектах на Go есть код наподобие этого:t := http.DefaultTransport.(*http.Transport).Clone()
// Change properties
t.TLSHandshakeTimeout = time.Second
t.DisableKeepAlives = true
Элемент синтаксиса
.(*http.Transport) является кастом интерфейса к конкретному типу, и так как синтаксически это не форма каста, которая возвращает два значения, это "небезопасный" каст, который паникует, если тип отличается от указанного.Какая по итогу ситуация? Во множестве реально используемых программ на Go есть код, который трогает глобальную переменную (и, так как это Go, без синхронизации), полагается на неявное обещание другого кода эту глобальную переменную не трогать и платят за проверки типов при касте, не смотря на то, что тип так-то известен статически. В теории тот факт, что
DefaultTransport является интерфейсом, позволяет поменять реализацию в будущем. На практике из-за существующего кода этого никогда не произойдёт, потому что сломает кучу работающего кода. Поменять тип DefaultTransport также нельзя, потому что это будет ломающим обратную совместимость изменение.Очевидным выходом из этой ситуации является добавить функцию, которая будет возвращать значение
DefaultTransport, как конкретный тип Transport. Соответствующее предложение поступило в мае 2020 года, однако воз и ныне там.pkg.go.dev
http package - net/http - Go Packages
Package http provides HTTP client and server implementations.
👍11😁6