Там опубликовали предварительные релиз ноуты к Go 1.19. Лично для меня самое интересное — это появление
https://tip.golang.org/doc/go1.19
atomic.Pointer[T]. Если я правильно понял, теперь можно будет делать lock free операции не только над счётчиками, но и над структурами. В общем то, что в языках типа Clojure было давно, и наконец-то доехало до нас.https://tip.golang.org/doc/go1.19
tip.golang.org
Go 1.19 Release Notes - The Go Programming Language
Forwarded from БлоGнот
Сложно найти человека, который не знал бы сайт Stack Overflow, некоторые вообще код не пишут, только копируют оттуда. Поэтому мне было интересно найти и послушать свежий подкаст с Робертой Арковерде, которая с 2014 работает в компании и теперь является директором по разработке, где она очень доступно и хорошо рассказывает о технической изнанке популярного сервиса.
И надо сказать, очень неожиданные вещи сообщает — весь Stack Overflow работает на 9 физических серверах, никакого облака, эти серверы работают под управлением Microsoft IIS, загружены на 5-10 процентов, основное приложение монолитное (никаких микросервисов) и написано на .NET, причем практически не используется кэширование — как оказалось, создаваемый кэш оставался во многом невостребованным и быстрее и надежнее держать треть базы данных прямо в памяти. И вот со всем этим сервис отрабатывает 6 тысяч запросов в секунду, отдавая почти 2 млрд показов страниц в месяц. А всего в компании работает порядка 50 разработчиков. И они не стремятся гнаться за модными технологиями — тем более, что в нынешнем состоянии способны выкатывать изменения хоть несколько раз в день за 4 минуты.
Подкаст, разумеется, на английском, и там есть транскрипция, если кто-то хочет быстро прочесть.
https://www.hanselminutes.com/847/engineering-stack-overflow-with-roberta-arcoverde
И надо сказать, очень неожиданные вещи сообщает — весь Stack Overflow работает на 9 физических серверах, никакого облака, эти серверы работают под управлением Microsoft IIS, загружены на 5-10 процентов, основное приложение монолитное (никаких микросервисов) и написано на .NET, причем практически не используется кэширование — как оказалось, создаваемый кэш оставался во многом невостребованным и быстрее и надежнее держать треть базы данных прямо в памяти. И вот со всем этим сервис отрабатывает 6 тысяч запросов в секунду, отдавая почти 2 млрд показов страниц в месяц. А всего в компании работает порядка 50 разработчиков. И они не стремятся гнаться за модными технологиями — тем более, что в нынешнем состоянии способны выкатывать изменения хоть несколько раз в день за 4 минуты.
Подкаст, разумеется, на английском, и там есть транскрипция, если кто-то хочет быстро прочесть.
https://www.hanselminutes.com/847/engineering-stack-overflow-with-roberta-arcoverde
Hanselminutes
Engineering Stack Overflow with Roberta Arcoverde
The Hanselminutes Podcast by Scott Hanselman - Fresh Air for Developers - Deep tech talk from an inclusive perspective
👍2
Чтобы нормально вкатиться в цикл выпуска видосов, я хочу выпустить ещё один «лёгкий» видос, а потом уже что-то похардкорнее. Тем, которые я хочу осветить в первую очередь довольно много, но вдруг есть что-то, про что вы хотите узнать больше, а существующие источники вам в этом не до конца помогли? Напишите об этом, плиз, сюда в комменты или личку (@tomakado).
Один из моих любимых докладов про Go — это тот, где Алексей Акулович показывает, как написать веб-сервер. который работает быстрее аналогичного на Си.
https://youtu.be/p1ILhiq5Clw
https://youtu.be/p1ILhiq5Clw
YouTube
Работа с сетью в Go. Алексей Акулович, Вконтакте.
Рассмотрим варианты работы с HTTP, TCP, UDP как из stdlib, так и некоторые сторонние решения. От высокоуровневых, до прямых сисколов и их вариантов. Будут примеры кода, сравнения реализации, обязательные бенчмарки.
Набор полезных «фреймворков» мышления для решения задач, системного мышления и принятия решений:
https://untools.co
https://untools.co
С первого взгляда показалось, что это что-то проклятое, но я посмотрел примеры, и захотелось попробовать.
Утилита позволяет делать поиск по истории гит-репозитория в SQL-стиле.
https://github.com/filhodanuvem/gitql
Утилита позволяет делать поиск по истории гит-репозитория в SQL-стиле.
https://github.com/filhodanuvem/gitql
GitHub
GitHub - filhodanuvem/gitql: 💊 A git query language
💊 A git query language. Contribute to filhodanuvem/gitql development by creating an account on GitHub.
Сходил вчера на собеседование, и на нём мне напомнили про сюрпризы, которые могут поджидать разработчика при работе с интерфейсами. Один из таких сюрпризов может проявиться, если к переменной с типом-интерфейсом не синхронизирован конкурентный доступ.
TLDR: когда вы не обеспечиваете синхронный доступ к переменной с интерфейсным типом, не удивляйтесь, если обнаружите, что тип данных внутри указан один, а значение совсем другого типа. Это связано с тем, что Go обеспечивает атомарное обновление только переменных с типами из одного машинного слова. Интерфейсы к ним не относятся.
https://dave.cheney.net/2014/06/27/ice-cream-makers-and-data-races
TLDR: когда вы не обеспечиваете синхронный доступ к переменной с интерфейсным типом, не удивляйтесь, если обнаружите, что тип данных внутри указан один, а значение совсем другого типа. Это связано с тем, что Go обеспечивает атомарное обновление только переменных с типами из одного машинного слова. Интерфейсы к ним не относятся.
https://dave.cheney.net/2014/06/27/ice-cream-makers-and-data-races
👍1
Go 1.19 в релизе! Из интересного:
Остальное — в релиз ноутах.
• Обновилась модель памяти, и теперь она ближе к моделям памяти C, C++, Java, JavaScript, Rust и Swift.• Появился тип atomic.Pointer[T], позволяющий делать атомики не только из базовых типов.• Добавлена поддержка ссылок, списков и более явных заголовков в комментариях.• Теперь возможно задавать софт-лимиты (рекомендуемые ограничения) по памяти для рантайма.Остальное — в релиз ноутах.
go.dev
Go 1.19 Release Notes - The Go Programming Language
🔥5
Я тут функциональщины принёс. Есть библиотека mo, которая позволяет использовать монады в Go 😳 Наверное, я пока попробую использовать отсюда только
https://github.com/samber/mo
Option и Either, хотя может и остальные пригодятся когда-то...https://github.com/samber/mo
GitHub
GitHub - samber/mo: 🦄 Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...)
🦄 Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...) - samber/mo
🔥3❤2
🚕 У Uber есть свой большой гайд о том, как писать на Go. Пока не дочитал до конца, но то что успел прочесть звучит разумно и почти полностью согласуется с тем, как я привык писать на Go.
Крайне рекомендуется к ознакомлению: https://github.com/uber-go/guide
🙂
Крайне рекомендуется к ознакомлению: https://github.com/uber-go/guide
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - uber-go/guide: The Uber Go Style Guide.
The Uber Go Style Guide. Contribute to uber-go/guide development by creating an account on GitHub.
👍5🔥1
Сижу и мечтаю о том, как все перестанут использовать SQL в частности и реляционный подход в целом везде, где только можно, и натыкаюсь на нечто под названием TablaM — реляционный язык программирования.
Вообще реляционные СУБД всегда казались мне странным явлением, по крайней мере, в том виде, в котором они существуют сейчас:
1. Люди не мыслят таблицами и отношениями между ними — иначе в каждом (нормальном) языке программирования кроме структур данных, таких как связный список, мапа и т.д. присутствовали бы реляционные таблицы.
2. Я не знаю ни одного человека, который назвал бы SQL вменяемым языком, но почему-то индустрия продолжает им пользоваться, придумывая поверх него другие языки (ORM) вместо того чтобы решить проблему на корню.
Казалось бы, TablaM и другие подобные проекты (если они вообще существуют — скиньте ссылку, интересно поглядеть) как раз решают две проблемы выше. Но нет — TablaM лечит скорее симптом, чему саму болезнь. Ещё раз: люди не мыслят таблицами. Да, у реляционного подхода есть свои применения, но проблема в том, что SQL используют вообще везде.
Вообще реляционные СУБД всегда казались мне странным явлением, по крайней мере, в том виде, в котором они существуют сейчас:
1. Люди не мыслят таблицами и отношениями между ними — иначе в каждом (нормальном) языке программирования кроме структур данных, таких как связный список, мапа и т.д. присутствовали бы реляционные таблицы.
2. Я не знаю ни одного человека, который назвал бы SQL вменяемым языком, но почему-то индустрия продолжает им пользоваться, придумывая поверх него другие языки (ORM) вместо того чтобы решить проблему на корню.
Казалось бы, TablaM и другие подобные проекты (если они вообще существуют — скиньте ссылку, интересно поглядеть) как раз решают две проблемы выше. Но нет — TablaM лечит скорее симптом, чему саму болезнь. Ещё раз: люди не мыслят таблицами. Да, у реляционного подхода есть свои применения, но проблема в том, что SQL используют вообще везде.
TablaM
The practical relational programing language for data-oriented applications
Видос готов! Он уже доступен для тех, кто подпишется на Бусти или Патреоне 😉
В открытый доступ ролик выйдет через несколько дней.
Кроме раннего доступа, платным подписчикам доступны и другие ништяки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5⚡2❤1🎉1
prealloc — линтер, который сообщает о том, что слайс можно преаллоцировать. Обычно я такое глазами определяю. Надо будет попробовать подключить и сравнить, кто лучше справляется: превосходная машина или кожаный мешок.
https://github.com/alexkohler/prealloc
https://github.com/alexkohler/prealloc
GitHub
GitHub - alexkohler/prealloc: prealloc is a Go static analysis tool to find slice declarations that could potentially be preallocated.
prealloc is a Go static analysis tool to find slice declarations that could potentially be preallocated. - alexkohler/prealloc
👍4