Бэкендошная
Как работает pdqsort в Golang - алгоритм сортировки, позволяющий избежать худшего случая для quicksort https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b #golang
Коммит по внедрению pdqsort - https://github.com/golang/go/commit/72e77a7f41bbf45d466119444307fd3ae996e257
#golang
#golang
GitHub
sort: use pdqsort · golang/go@72e77a7
- Across all benchmarks, pdqsort is never significantly slower than the previous algorithm.
- In common patterns, pdqsort is often faster (i.e. 10x faster in sorted slices).
The pdqsort is describ...
- In common patterns, pdqsort is often faster (i.e. 10x faster in sorted slices).
The pdqsort is describ...
Доклад, который меньше чем за 30 минут познакомит вас с основными концепциями языка Rust и покажет - как его можно использовать в WEB-разработке
https://www.youtube.com/watch?v=eggRLQYkauo
#rust
https://www.youtube.com/watch?v=eggRLQYkauo
#rust
👍1
На примере сортировок разбираемся - когда увеличение распараллеливания вычислений не приводит к увеличению производительности
https://convey.earth/conversation?id=44
#golang
https://convey.earth/conversation?id=44
#golang
Простенькая книга для погружения в разработку на Golang через TDD
Шаг за шагом проходится по основам языка, его концепциям, знакомит с подходами к разработке и все это на примере построения реального приложения
https://quii.gitbook.io/learn-go-with-tests/
Шаг за шагом проходится по основам языка, его концепциям, знакомит с подходами к разработке и все это на примере построения реального приложения
https://quii.gitbook.io/learn-go-with-tests/
quii.gitbook.io
Learn Go with Tests | Learn Go with tests
👎1
Привет!
Сегодня я принес вам доклад про Best Practise разработки на Golang.
Докладу уже более 4х лет, но он все еще не теряет актуальности
https://www.youtube.com/watch?v=MzTcsI6tn-0
#golang
Сегодня я принес вам доклад про Best Practise разработки на Golang.
Докладу уже более 4х лет, но он все еще не теряет актуальности
https://www.youtube.com/watch?v=MzTcsI6tn-0
#golang
YouTube
Ashley McNamara + Brian Ketelsen. Go best practices.
https://talks.bjk.fyi/bketelsen/gcru18-best#/
Если вы хотели начать контрибьютить в open source, но не могли найти подходящий проект, то данный репозиторий может стать отличным подспорьем в этом начинании.
В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source
https://github.com/MunGell/awesome-for-beginners
#opensource #golang #rust #php
В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source
https://github.com/MunGell/awesome-for-beginners
#opensource #golang #rust #php
GitHub
GitHub - MunGell/awesome-for-beginners: A list of awesome beginners-friendly projects.
A list of awesome beginners-friendly projects. Contribute to MunGell/awesome-for-beginners development by creating an account on GitHub.
👍1
Привет!
Неделю назад я делился лучшими практиками разработки на Golang.
Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang
https://www.youtube.com/watch?v=Jns0QgJtAYY
#golang
Неделю назад я делился лучшими практиками разработки на Golang.
Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang
https://www.youtube.com/watch?v=Jns0QgJtAYY
#golang
YouTube
Golang Worst Practices - Oliver Powell
This event is brought to you by Go Singapore. GoSG is a meetup for the Go programming enthusiasts in Singapore.
Name: Oliver Powell
Topic: Golang Worst Practices
Evolutionary biology teaches us that the avoidance of failure is a better strategy than the…
Name: Oliver Powell
Topic: Golang Worst Practices
Evolutionary biology teaches us that the avoidance of failure is a better strategy than the…
Привет!
Сегодня будет та самая оговорка про "почти никакого фронтенда", вынесенная в описание канала - cтатья про WebAssembly
Результаты прошлогоднего опроса относительно развития WASM
Rust занимает лидирующие позиции и в вопросе про используемые языки, и в вопросе про желаемые/планируемые языки для WebAssembly
Среди направлений использования без сюрпризов - это WEB и serverless
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
#wasm #rust
Сегодня будет та самая оговорка про "почти никакого фронтенда", вынесенная в описание канала - cтатья про WebAssembly
Результаты прошлогоднего опроса относительно развития WASM
Rust занимает лидирующие позиции и в вопросе про используемые языки, и в вопросе про желаемые/планируемые языки для WebAssembly
Среди направлений использования без сюрпризов - это WEB и serverless
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
#wasm #rust
Обсуждение на тему "Настоящее и будущее микросервисной архитектуры".
Примеры разбиения доменного слоя на независмые сервисы, отвязка их друг от друга, методы общения и антипаттерны
https://www.youtube.com/watch?v=qzy2JfuOYRc
#microservices
Примеры разбиения доменного слоя на независмые сервисы, отвязка их друг от друга, методы общения и антипаттерны
https://www.youtube.com/watch?v=qzy2JfuOYRc
#microservices
YouTube
Present and Future of the Microservice Architecture
Level-up on the software skills most in-demand at QCon San Francisco Software Development Conference on Oct 24-28, 2022.
Uncover emerging software trends and practices to solve your complex engineering challenges, without the product pitches. QCon San Francisco…
Uncover emerging software trends and practices to solve your complex engineering challenges, without the product pitches. QCon San Francisco…
На прошедшей конференции Open-Source Summit 2022 в секции ответов на вопросы Линус Торвальдс упомянул о возможности скорой интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust.
Не исключается, что патчи с поддержкой Rust будут приняты в ближайшем окне приёма изменений, формирующем состав ядра 5.20, намеченного на конец сентября.
Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру.
Подробнее про то, какие проблемы будет решать Rust в качестве языка разработки ядра самой популярной ОС для серверов во всем мире можно прочесть в статье
https://www.memorysafety.org/blog/memory-safety-in-linux-kernel/
#rust
Не исключается, что патчи с поддержкой Rust будут приняты в ближайшем окне приёма изменений, формирующем состав ядра 5.20, намеченного на конец сентября.
Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру.
Подробнее про то, какие проблемы будет решать Rust в качестве языка разработки ядра самой популярной ОС для серверов во всем мире можно прочесть в статье
https://www.memorysafety.org/blog/memory-safety-in-linux-kernel/
#rust
Prossimo
Memory Safety for the World’s Largest Software Project
Rust for Linux and Prossimo The Rust for Linux project aims to bring a new system programming language into the Linux kernel. Rust has a key property that makes it very interesting to consider as the second language in the kernel: it guarantees no undefined…
Если вы разрабатываете на Golang, то наверняка знаете о возможности вызова C-кода из программ на Golang через CGO
Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?
Для этого есть полноценная утилита - CCGO.
И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C
Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.
И его результаты могут вас удивить
https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/
#golang #clang
Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?
Для этого есть полноценная утилита - CCGO.
И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C
Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.
И его результаты могут вас удивить
https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/
#golang #clang
Nobugware
Surprising result while transpiling C to Go - Fabrice Aneche
Experimenting transpiling Uber h3 library with ccgo.
Статья о системе статических проверок и методов на этапе компиляции в Rust, помогающих предотвратить баги, которые в других языках программирования возникают в рантайме.
Большинство из предотвращаемых багов связаны с памятью.
В статье показаны основные концепции Rust, которые позволяют не вдаваться в вопросы управления памятью, но при этом предотвращают неопределенное поведение еще на этапе компиляции.
https://polyfloyd.net/post/how-rust-helps-you-prevent-bugs/
#rust
Большинство из предотвращаемых багов связаны с памятью.
В статье показаны основные концепции Rust, которые позволяют не вдаваться в вопросы управления памятью, но при этом предотвращают неопределенное поведение еще на этапе компиляции.
https://polyfloyd.net/post/how-rust-helps-you-prevent-bugs/
#rust
polyfloyd's stuff
How Rust Helps You Prevent Bugs - polyfloyd's stuff
Introduction If you have ever written a program of any scale before, you may have run into bugs. Tiny mistakes that you made while writing that screw up the execution of your program. The more complex your program gets, the higher the chance of bugs slipping…
Обширная статья Uber про выявленные шаблоны состояния гонки в микросервисах на Go
https://eng.uber.com/data-race-patterns-in-go/
#golang #microservices
https://eng.uber.com/data-race-patterns-in-go/
#golang #microservices
Привет!
Совсем недавно я делился с вами новостью про возможность включения Rust в качестве языка разработки ядра Linux.
А сегодня предлагаю доклад, который вдается в историю языков программирования для написания ОС и пытается порассуждать на тему - достойный ли кандидат Rust для того чтобы написать ОС схожую по производительности с ОС написанными на C
https://www.youtube.com/watch?v=HgtRAbE1nBM
#rust
Совсем недавно я делился с вами новостью про возможность включения Rust в качестве языка разработки ядра Linux.
А сегодня предлагаю доклад, который вдается в историю языков программирования для написания ОС и пытается порассуждать на тему - достойный ли кандидат Rust для того чтобы написать ОС схожую по производительности с ОС написанными на C
https://www.youtube.com/watch?v=HgtRAbE1nBM
#rust
YouTube
Is It Time to Rewrite the Operating System in Rust?
QCon San Francisco, the international software conference, returns November 17-21, 2025. Join senior software practitioners from early adopter companies as they share real-world insights and actionable advice to help you adopt the right technologies and practices.…
Несмотря на то, что Golang не замечен в высоком потреблении памяти, очень полезно понимать - как она расходуется вашим приложением и не происходит ли где-то избыточных аллокаций.
Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.
Именно про такие примеры и пойдет речь в сегодняшней статье.
https://www.ribice.ba/golang-memory-savings/
#golang
Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.
Именно про такие примеры и пойдет речь в сегодняшней статье.
https://www.ribice.ba/golang-memory-savings/
#golang
И в случае, когда что-то пошло не так - очень важно уметь быстро откатываться до стабильного состояния.
Одна из техник, которая позволяет выполнять откат неудачных деплоев без плясок с шаманскими музыкальными инструментами - это Blue/Green.
Именно про нее и поговорим в сегодняшней статье.
https://readosapien.com/blue-green-deployment-zero-downtime-deployment/
#microservices #deploy #systemdesign
Readosapien
Blue-Green Deployment | Zero Downtime Deployment - Readosapien
This is a technique to reduce downtime in the process of releasing software updates. Read this article to know how it is implemented.
Обширная статья про некоторые неочевидные подводные камни Golang
Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться
https://rytisbiel.com/2021/03/06/darker-corners-of-go/
#golang
Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться
https://rytisbiel.com/2021/03/06/darker-corners-of-go/
#golang
Привет!
Неделю назад я делился с вами методикой Blue/Green деплоя.
Сегодня же принес статью про еще один вариант безболезненных выкаток - это Канареечный релиз.
Метод канарейки можно применять не только для поэтапной раскатки, не ломая функционал для львиной доли пользователей, но также и для того чтобы, проверять гипотезы методом A/B. Раскатите новый функционал на 50% пользователей и следите за изменением метрик для обеих групп.
https://codefresh.io/learn/software-deployment/what-are-canary-deployments/
#microservices #deploy #systemdesign
Неделю назад я делился с вами методикой Blue/Green деплоя.
Сегодня же принес статью про еще один вариант безболезненных выкаток - это Канареечный релиз.
Метод канарейки можно применять не только для поэтапной раскатки, не ломая функционал для львиной доли пользователей, но также и для того чтобы, проверять гипотезы методом A/B. Раскатите новый функционал на 50% пользователей и следите за изменением метрик для обеих групп.
https://codefresh.io/learn/software-deployment/what-are-canary-deployments/
#microservices #deploy #systemdesign
Codefresh
What Are Canary Deployments? Process and Visual Example
A canary deployment exposes a new feature to a subset of users, in order to test new functionality before releasing it to the entire user base.
Если ваше приложение на Golang активно использует память, то вам наверняка знакома проблема, связанная с частотой запуска GC, которая вызывает частые фризы из-за STW.
По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.
Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.
Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.
Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.
Про опыт его использования и пойдет речь в сегодняшней статье
https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html
#golang
По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.
Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.
Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.
Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.
Про опыт его использования и пойдет речь в сегодняшней статье
https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html
#golang
weaviate.io
GOMEMLIMIT is a game changer for high-memory applications | Weaviate
Go 1.19 introduced GOMEMLIMIT, which completely changes how you can manage memory limits in Go. Learn how it helps Weaviate be more reliable.
👍1
Привет!
Сегодня хочу поделиться видео-рассуждением на тему, сможет ли Rust стать главным языком системного программирования на следующие 40 лет
https://www.youtube.com/watch?v=A3AdN7U24iU
#rust
Сегодня хочу поделиться видео-рассуждением на тему, сможет ли Rust стать главным языком системного программирования на следующие 40 лет
https://www.youtube.com/watch?v=A3AdN7U24iU
#rust
YouTube
Rust: A Language for the Next 40 Years - Carol Nichols
Learn what makes the programming language Rust a unique technology, such as the memory safety guarantees that enable more people to write performant systems-level code. Hear about how Rust Editions evolve the language and the compiler without breaking existing…
💩1
Microservices. Microservices everywhere!
В последнее время микросервисы становятся чуть ли не must-have архитектурой для любой уважающей себя IT компании.
Но что, если микросервисы - это просто новый карго-культ и вам они не нужны?
Сегодня я принес вам статью, в которой автор описывает причины и приводит аргументы в пользу того, что на вашем проекте микросервисы могут скорее навредить, нежели принести ощутимую пользу при разработке и сопровождении.
https://itnext.io/you-dont-need-microservices-2ad8508b9e27
#microservices #systemdesign
В последнее время микросервисы становятся чуть ли не must-have архитектурой для любой уважающей себя IT компании.
Но что, если микросервисы - это просто новый карго-культ и вам они не нужны?
Сегодня я принес вам статью, в которой автор описывает причины и приводит аргументы в пользу того, что на вашем проекте микросервисы могут скорее навредить, нежели принести ощутимую пользу при разработке и сопровождении.
https://itnext.io/you-dont-need-microservices-2ad8508b9e27
#microservices #systemdesign
Medium
You Don’t Need Microservices
Microservices are very much in vogue for web software architecture. For most teams though, the monolith should remain the default choice.