В приличном месте такое использование any никогда ревью не пройдёт. Посмотрите как надо: https://cs.opensource.google/go/go/+/refs/tags/go1.23.1:src/encoding/json/stream.go;l=289 И да, в вашем примере лапши будет гораздо больше, ведь вам же надо перебирать все возможные типы для всех возможных опций. В Go используя any вы теряете информацию о типе, но не получаете ничего. Если тип переменной известен - никогда не передавайте её как any, это просто не имеет смысла.
Поищите на Наге, там несколько лет назад были удивлённые возгласы фанатов, которые закупали их тысячами, а они тысячами могли приехать с непроклеенными частями (радиаторы кажется) внутри и весело греметь при тряске. Т.е. контроля качества нет вообще. И это на голову выше надёжности Asus? Ни за что не поверю, хоть и терпеть его (Asus) не могу.
Если у вас тормозит net/http - вы делаете что-то не то. Тормозить должна база, ответы других сервисов или БЛ (зависит от задачи), а не протокол передачи данных. Если он правда тормозит, вы что-то неправильно спроектировали (не взяли grpc или nginx там где надо было). А ещё оно иногда падучее (zero allocation не просто даётся). Итого: актуально для школьников-бенчмаркеров, а для бизнеса не оч.
Поддержу, статья про другой принцип SOLID. Принцип открытости-закрытости простыми словами звучит так: "любые изменения в систему должны вноситься за счёт написания нового кода, а не изменения старого". Т.е. мы пишем новый модуль/компонент и заменяем им старый, остальные модули/компоненты не изменяются и работают как раньше. Интерфейс, кстати, действительно в этом помогает: замена одной реализации интерфейса на другую - идеальная демонстрация.
Скоро. Но только на новых Nvidia. У них будет новый open source драйвер (он есть уже сейчас, но пока beta). Дело в том, что на графике Intel и AMD работает отлично, так что проблема не в самом вялом, а на стороне Nvidia.
вбейте в гугл оба варианта, вот те тысячи, где "посев", там и переводят, а те четыре, где "семена" (seed и seeds вообще-то слова разные и не заменяемые просто так, но в вашем мгимо видимо не проходили)
Обычно ругаю ваши статьи, но тут спасибо. И всё же пара замечаний:
Seed обычно переводят как посев, а не как семя.
Посев не должен быть переменной. Он или константа (тогда, когда это необходимо), или псевдослучайное число, вычитанное из /dev/urandom. В Go для этого есть хелпер crypto/rand.Read()
И немного душноты: на Linux рандом работает только если запущен rngd. Он вычитывает энтропию из доступных устройств (TPM, процессор (в них сейчас есть выделенная инструкция), virtio, если мы внутри виртуалки, и т.д.) и "закачивает" её в urandom. В крайнем случае есть сурогатная альтернатива в виде Haveged. Без них конечно ничего не ломается, но всё что "crypto" работает медленно, а псевдослучайные числа, скажем так, не совсем случайные.
Деньги. Они в первый же день уволятся по собственному после восстановления, но работодатель должен будет выплатить всю недополученную зарплату за всё это время, если не путаю.
Раньше macos сильно тормозила: во-первых ни одной крутой ФС, во-вторых своя графика с неоптимизированными под перфу драйверами (где-то у phoronix были сравнения при прочих равных)
Тем более что софта там и без архитектурных ограничений куда больше.
но практически примерно столько же смысла сколько в хакинтошах (установка макоси на не-эппл железо) - красноглазие ради красноглазия.
Эти два разве не противоречат друг другу напрямую?)
Неа, большая часть софта под Linux open source. Исходник можно легко собрать под ARM, поэтому почти всё сразу доступно нативно. По-моему здесь и было упомянуто, что нет Slack и Steam, а остальное из популярного уже есть и работает.
Надо переделывать тест) 10-е поколение Intel - приличные современные камни, но они устарели морально из-за рывка по перфе, который произошёл после их релиза. Надо сравнивать с Ryzen на Zen 3 и новее и c Intel 13-го поколения и новее.
Строго говоря оба параметра vm.dirty* непоняты и неверно поданы. Первый "vm.dirty_expire_centisecs" ничего не сбрасывает. Он только помечает данные к сбросу (как устаревшие). Периодически флашер (он работает параллельно) проверяет, какие данные помечены устаревшими и сбрасывает их на диск. У него своя настройка периодичности "vm.dirty_writeback_centisecs". Из коробки 5 секунд, но можно и час поставить. Тогда данные будут сбрасываться каждый час, а не когда там "vm.dirty_expire_centisecs" что-то пометил. Второй "vm.dirty_ratio" вообще с флашем не связан. Он определяет максимальный размер буфера. Когда мы добираемся до него - запись становится синхронной постоянно блокируясь пока диск что-то пишет. Флашинг начинается сильно раньше этого и его контролирует "vm.dirty_background_ratio". И он не может быть больше половины "vm.dirty_ratio". Т.е. флашинг начинается не тогда, когды мы вбрали весь буфер, а сильно заранее, где-то при заполнении на половину или даже ещё раньше.
Коллега ниже верно подметил, комменты актуализируются с другой скоростью относительно кода. Иными словами, я могу понять любой Go-код кроме того, в котором комментарий вводит в заблуждение.
Ничего маргинального в понимании ненужности комментариев в Go нет. Роб Пайк много лет на своих лекциях повторяет: "Комментарий никогда не должен отвечать, "что?" делает код. Если вам приходится писать такой комментарий - код плох и его надо переписать. Комментарий может отвечать только на вопрос "почему?" т.е. иногда нужно указать причину того, что код делает именно это (совместимость с каким-то хитрым API или легаси, неочевидные особенности работы железа, хитрая оптимизация и т.д.)". Отсюда и вытекает упомянутый идеоматичный нейминг (e.g. namespace.New), код сам описывает что делает.
На первый взгляд логично и обосновано, но только на первый. Если внимательно посмотреть на рынок вакансий, то видно, что спрос на middle+/senior огромный, а на jun/jun+ его нет вообще. У этого могут быть разные причины, но я почти уверен, основная - "набрали с софтскилами, а инженерные задачи решать некому", вот и бегают, ищут профи.
Долина Кремниевая, там полупроводники производят (они являются по сути кусками кремния). Если безграмотным англоязычным ещё можно простить (у них эти 2 слова отличаются всего на 1 букву при написании, и ещё меньше при произношении), то на русскоязычном ресурсе - нет ?♂️
Т.е. променяют родную, понятную и прозрачную юрисдикцию и премиальный рынок на сотрудничество с полубезумными царьками из диких нищих бантустанов? Это же гарантированое разорение уже в среднесрочной перспективе. И эти ребята прекрасно всё просчитали, потому и не делают такое.
В приличном месте такое использование any никогда ревью не пройдёт. Посмотрите как надо: https://cs.opensource.google/go/go/+/refs/tags/go1.23.1:src/encoding/json/stream.go;l=289
И да, в вашем примере лапши будет гораздо больше, ведь вам же надо перебирать все возможные типы для всех возможных опций. В Go используя any вы теряете информацию о типе, но не получаете ничего. Если тип переменной известен - никогда не передавайте её как any, это просто не имеет смысла.
Поищите на Наге, там несколько лет назад были удивлённые возгласы фанатов, которые закупали их тысячами, а они тысячами могли приехать с непроклеенными частями (радиаторы кажется) внутри и весело греметь при тряске. Т.е. контроля качества нет вообще. И это на голову выше надёжности Asus? Ни за что не поверю, хоть и терпеть его (Asus) не могу.
Если у вас тормозит net/http - вы делаете что-то не то. Тормозить должна база, ответы других сервисов или БЛ (зависит от задачи), а не протокол передачи данных. Если он правда тормозит, вы что-то неправильно спроектировали (не взяли grpc или nginx там где надо было). А ещё оно иногда падучее (zero allocation не просто даётся).
Итого: актуально для школьников-бенчмаркеров, а для бизнеса не оч.
Поддержу, статья про другой принцип SOLID. Принцип открытости-закрытости простыми словами звучит так: "любые изменения в систему должны вноситься за счёт написания нового кода, а не изменения старого". Т.е. мы пишем новый модуль/компонент и заменяем им старый, остальные модули/компоненты не изменяются и работают как раньше. Интерфейс, кстати, действительно в этом помогает: замена одной реализации интерфейса на другую - идеальная демонстрация.
Прострелил то прострелил, но ружьё то не у них совсем, они просто миньоны, которым буквально приказывают)
Go 2 не будет же, сто раз уже подтвердили.
Скоро. Но только на новых Nvidia. У них будет новый open source драйвер (он есть уже сейчас, но пока beta). Дело в том, что на графике Intel и AMD работает отлично, так что проблема не в самом вялом, а на стороне Nvidia.
Для старых Nvidia карт нового драйвера не будет.
вбейте в гугл оба варианта, вот те тысячи, где "посев", там и переводят, а те четыре, где "семена" (seed и seeds вообще-то слова разные и не заменяемые просто так, но в вашем мгимо видимо не проходили)
Обычно ругаю ваши статьи, но тут спасибо. И всё же пара замечаний:
Seed обычно переводят как посев, а не как семя.
Посев не должен быть переменной. Он или константа (тогда, когда это необходимо), или псевдослучайное число, вычитанное из /dev/urandom. В Go для этого есть хелпер crypto/rand.Read()
И немного душноты: на Linux рандом работает только если запущен rngd. Он вычитывает энтропию из доступных устройств (TPM, процессор (в них сейчас есть выделенная инструкция), virtio, если мы внутри виртуалки, и т.д.) и "закачивает" её в urandom. В крайнем случае есть сурогатная альтернатива в виде Haveged. Без них конечно ничего не ломается, но всё что "crypto" работает медленно, а псевдослучайные числа, скажем так, не совсем случайные.
Деньги. Они в первый же день уволятся по собственному после восстановления, но работодатель должен будет выплатить всю недополученную зарплату за всё это время, если не путаю.
Раньше macos сильно тормозила: во-первых ни одной крутой ФС, во-вторых своя графика с неоптимизированными под перфу драйверами (где-то у phoronix были сравнения при прочих равных)
Эти два разве не противоречат друг другу напрямую?)
Неа, большая часть софта под Linux open source. Исходник можно легко собрать под ARM, поэтому почти всё сразу доступно нативно. По-моему здесь и было упомянуто, что нет Slack и Steam, а остальное из популярного уже есть и работает.
Спасибо за статью.
Вот тут
нет.
defaultMaxIdleConns - это не размер пула в общем смысле. Можно глянуть в словаре Idle, можно глянуть по коду, там тож понятно.
Надо переделывать тест) 10-е поколение Intel - приличные современные камни, но они устарели морально из-за рывка по перфе, который произошёл после их релиза. Надо сравнивать с Ryzen на Zen 3 и новее и c Intel 13-го поколения и новее.
Строго говоря оба параметра vm.dirty* непоняты и неверно поданы. Первый "vm.dirty_expire_centisecs" ничего не сбрасывает. Он только помечает данные к сбросу (как устаревшие). Периодически флашер (он работает параллельно) проверяет, какие данные помечены устаревшими и сбрасывает их на диск. У него своя настройка периодичности "vm.dirty_writeback_centisecs". Из коробки 5 секунд, но можно и час поставить. Тогда данные будут сбрасываться каждый час, а не когда там "vm.dirty_expire_centisecs" что-то пометил. Второй "vm.dirty_ratio" вообще с флашем не связан. Он определяет максимальный размер буфера. Когда мы добираемся до него - запись становится синхронной постоянно блокируясь пока диск что-то пишет. Флашинг начинается сильно раньше этого и его контролирует "vm.dirty_background_ratio". И он не может быть больше половины "vm.dirty_ratio". Т.е. флашинг начинается не тогда, когды мы вбрали весь буфер, а сильно заранее, где-то при заполнении на половину или даже ещё раньше.
Коллега ниже верно подметил, комменты актуализируются с другой скоростью относительно кода. Иными словами, я могу понять любой Go-код кроме того, в котором комментарий вводит в заблуждение.
Спасибо за статью.
Ничего маргинального в понимании ненужности комментариев в Go нет. Роб Пайк много лет на своих лекциях повторяет: "Комментарий никогда не должен отвечать, "что?" делает код. Если вам приходится писать такой комментарий - код плох и его надо переписать. Комментарий может отвечать только на вопрос "почему?" т.е. иногда нужно указать причину того, что код делает именно это (совместимость с каким-то хитрым API или легаси, неочевидные особенности работы железа, хитрая оптимизация и т.д.)". Отсюда и вытекает упомянутый идеоматичный нейминг (e.g. namespace.New), код сам описывает что делает.
На первый взгляд логично и обосновано, но только на первый. Если внимательно посмотреть на рынок вакансий, то видно, что спрос на middle+/senior огромный, а на jun/jun+ его нет вообще. У этого могут быть разные причины, но я почти уверен, основная - "набрали с софтскилами, а инженерные задачи решать некому", вот и бегают, ищут профи.
Долина Кремниевая, там полупроводники производят (они являются по сути кусками кремния). Если безграмотным англоязычным ещё можно простить (у них эти 2 слова отличаются всего на 1 букву при написании, и ещё меньше при произношении), то на русскоязычном ресурсе - нет ?♂️
Т.е. променяют родную, понятную и прозрачную юрисдикцию и премиальный рынок на сотрудничество с полубезумными царьками из диких нищих бантустанов? Это же гарантированое разорение уже в среднесрочной перспективе. И эти ребята прекрасно всё просчитали, потому и не делают такое.