Бэкендошная via @like
Доброго времени суток!
Началась шестая неделя самоизоляции и удаленной работы. Появившееся время решил потратить на возрождение одного из своих петпроджектов, который когда-то давно был заброшен в долгий ящик по причине того, что была жесткая привязка к .NET платформе, изучать и развиваться в которой не было моим приоритетом. Привязка была из-за того, что была необходимость работать с провайдером данных, который предоставлял свой API через Component Object Model. На момент, когда появилась идея петпроджекта (около 3-х лет назад) мне казалось что вся логика работы должна быть заложена именно в платформе .NET и других вариантов быть не может. Но теперь же я понимаю что все это можно архитектурно оформить в виде микросервиса, с которым будет происходить общение.
Об архитектуре и реалзиции я расскажу в одном из следующих постов, а пока что хочу поделиться с вами личным мнением о двух прочтенных за время карантина книгами.
Первая - "Apache Kafka. Потоковая обработка и анализ данных". Её я читал именно в рамках реализации петпроджекта, потому как в качестве варианта коммуникации между микросервисами я выбрал брокер сообщений, а именно Apache Kafka. Книга была прочитана на 2/3 и на текущем моменте отложена, потому как информации, которую я получил, мне было достаточно для начальной реализации обмена сообщениями и тонкостей взаимодействия. Дальнейшие части книги обязательно прочту при развертывании Kafka в прод-среде. Книга, на мой взгляд, является информативным источником по взаимодействию с брокером сообщений и будет полезна вам, если вы, как и я, только начинаете знакомиться с Kafka.
Вторая книга - "Go на практике" оказалась для меня менее удачной: почти половина книги была просто пролистана, потому как информация была для меня вторичной. И о данной книге сложилось странное впечатление. С одной стороны - примеры, которые там приведены, действительно показывают Go в практических, нежели теоретических вещах. Но с другой - эти же примеры не особо утруждают себя объяснениями почему принято делать именно так, а не иначе. Так что рекомендация по книге - не ждать от нее погружения в Go и приобретать только в качестве подручного справочника. И уж точно не стоит ее читать в качестве первой книги по Golang. Лучше документация или "Язык программирования Golang" Донована и Кернигана.
И личные мысли о самоизоляции и карантине. Хотя я и не отказываюсь от возможности удаленной работы, но все же хочется на пару дней в офис, потому как очень соскучился по коллегам. Продуктивность вроде не упала, но тут наверно в дело вступает тот факт, что кроме как работать, больше заниматься и нечем: домашние дела переделаны, выход на улицу для прогулок закрыт. Последнее очень удручает, потому как погода стоит превосходная и я надеялся что наконец-то, спустя 5 лет, открою личный велосезон в конце марта. Но нет, видимо снова придется открывать в июле. Хорошо, если этого года 😉
Началась шестая неделя самоизоляции и удаленной работы. Появившееся время решил потратить на возрождение одного из своих петпроджектов, который когда-то давно был заброшен в долгий ящик по причине того, что была жесткая привязка к .NET платформе, изучать и развиваться в которой не было моим приоритетом. Привязка была из-за того, что была необходимость работать с провайдером данных, который предоставлял свой API через Component Object Model. На момент, когда появилась идея петпроджекта (около 3-х лет назад) мне казалось что вся логика работы должна быть заложена именно в платформе .NET и других вариантов быть не может. Но теперь же я понимаю что все это можно архитектурно оформить в виде микросервиса, с которым будет происходить общение.
Об архитектуре и реалзиции я расскажу в одном из следующих постов, а пока что хочу поделиться с вами личным мнением о двух прочтенных за время карантина книгами.
Первая - "Apache Kafka. Потоковая обработка и анализ данных". Её я читал именно в рамках реализации петпроджекта, потому как в качестве варианта коммуникации между микросервисами я выбрал брокер сообщений, а именно Apache Kafka. Книга была прочитана на 2/3 и на текущем моменте отложена, потому как информации, которую я получил, мне было достаточно для начальной реализации обмена сообщениями и тонкостей взаимодействия. Дальнейшие части книги обязательно прочту при развертывании Kafka в прод-среде. Книга, на мой взгляд, является информативным источником по взаимодействию с брокером сообщений и будет полезна вам, если вы, как и я, только начинаете знакомиться с Kafka.
Вторая книга - "Go на практике" оказалась для меня менее удачной: почти половина книги была просто пролистана, потому как информация была для меня вторичной. И о данной книге сложилось странное впечатление. С одной стороны - примеры, которые там приведены, действительно показывают Go в практических, нежели теоретических вещах. Но с другой - эти же примеры не особо утруждают себя объяснениями почему принято делать именно так, а не иначе. Так что рекомендация по книге - не ждать от нее погружения в Go и приобретать только в качестве подручного справочника. И уж точно не стоит ее читать в качестве первой книги по Golang. Лучше документация или "Язык программирования Golang" Донована и Кернигана.
И личные мысли о самоизоляции и карантине. Хотя я и не отказываюсь от возможности удаленной работы, но все же хочется на пару дней в офис, потому как очень соскучился по коллегам. Продуктивность вроде не упала, но тут наверно в дело вступает тот факт, что кроме как работать, больше заниматься и нечем: домашние дела переделаны, выход на улицу для прогулок закрыт. Последнее очень удручает, потому как погода стоит превосходная и я надеялся что наконец-то, спустя 5 лет, открою личный велосезон в конце марта. Но нет, видимо снова придется открывать в июле. Хорошо, если этого года 😉
Бэкендошная via @like
Доброго времени суток!
С 7-ой попытки, в PHP наконец-таки приняли то, что в мире Java известно как аннотации, а в мире PHP теперь будет известно как атрибуты.
Наконец-то уйдут в прошлое описания роутов и сущностей через комментарии.
Считаю это большим прорывом в развитии языка.
Но с чем пока что сложно согласиться, это с синтаксисом. Угловые скобки вместо привычных at-символов (@). Разработчики уже негласно "проголосовали" за использование @ - взгляните на то как это было реализовано на основе Symfony, Doctrine, Psalm и т.д.
В общем, бочка со здоровенной ложкой дегтя, к которой все же придется привыкать. Надеюсь что это будет единственное неудобство реализации и удобства с легкостью его нивелируют.
Ссылка на RFC: https://wiki.php.net/rfc/attributes_v2
С 7-ой попытки, в PHP наконец-таки приняли то, что в мире Java известно как аннотации, а в мире PHP теперь будет известно как атрибуты.
Наконец-то уйдут в прошлое описания роутов и сущностей через комментарии.
Считаю это большим прорывом в развитии языка.
Но с чем пока что сложно согласиться, это с синтаксисом. Угловые скобки вместо привычных at-символов (@). Разработчики уже негласно "проголосовали" за использование @ - взгляните на то как это было реализовано на основе Symfony, Doctrine, Psalm и т.д.
В общем, бочка со здоровенной ложкой дегтя, к которой все же придется привыкать. Надеюсь что это будет единственное неудобство реализации и удобства с легкостью его нивелируют.
Ссылка на RFC: https://wiki.php.net/rfc/attributes_v2
Можно ли обогнать по производительности стандартные структуры данных из пакета atomic? Попытка дать ответ в видео
www.youtube.com/watch?v=9CFbBoMvl48
#golang
www.youtube.com/watch?v=9CFbBoMvl48
#golang
Если вам было интересно - на какие концепции опирается Docker и как под капотом устроены контейнеры, то вот отличное видео, где за двадцать минут в режиме live coding'а докладчик создает собственную реализацию контейнеров с изоляцией процессов и файловой системы от родительской ОС
https://www.youtube.com/watch?v=HPuvDm8IC-4
#golang #docker
https://www.youtube.com/watch?v=HPuvDm8IC-4
#golang #docker
YouTube
Golang UK Conf. 2016 - Liz Rice - What is a container, really? Let's write one in Go from scratch
Everyone has heard of Docker, but what is a container? Is it really "a lightweight VM"? In this talk we'll dispel the magic by writing a container in about 100 lines of Go.
👍1
Изящное решение проблемы фризов из-за работы GC в Go от сотрудников Twitch
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
#golang
https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/
#golang
blog.twitch.tv
Go memory ballast: How I learnt to stop worrying and love the heap
I’m a big fan of small code changes that can have large impact. This may seem like an obvious thing to state, but let me explain:
👍2
Как работает pdqsort в Golang - алгоритм сортировки, позволяющий избежать худшего случая для quicksort
https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b
#golang
https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b
#golang
Medium
Go’s new sorting algorithm: pdqsort
Understand the new sorting algorithm Go started using and how it differs from regular the Quicksort.
Бэкендошная
Как работает 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