Бэкендошная
107 subscribers
2 photos
66 links
Канал о backend-разработке и backend-разработчиках: языки программирования, алгоритмы и структуры данных, методологии, околопрограммистские темы и никакого (ну почти) фронтенда
Download Telegram
Доброго времени суток!

Началась шестая неделя самоизоляции и удаленной работы. Появившееся время решил потратить на возрождение одного из своих петпроджектов, который когда-то давно был заброшен в долгий ящик по причине того, что была жесткая привязка к .NET платформе, изучать и развиваться в которой не было моим приоритетом. Привязка была из-за того, что была необходимость работать с провайдером данных, который предоставлял свой API через Component Object Model. На момент, когда появилась идея петпроджекта (около 3-х лет назад) мне казалось что вся логика работы должна быть заложена именно в платформе .NET и других вариантов быть не может. Но теперь же я понимаю что все это можно архитектурно оформить в виде микросервиса, с которым будет происходить общение.

Об архитектуре и реалзиции я расскажу в одном из следующих постов, а пока что хочу поделиться с вами личным мнением о двух прочтенных за время карантина книгами.

Первая - "Apache Kafka. Потоковая обработка и анализ данных". Её я читал именно в рамках реализации петпроджекта, потому как в качестве варианта коммуникации между микросервисами я выбрал брокер сообщений, а именно Apache Kafka. Книга была прочитана на 2/3 и на текущем моменте отложена, потому как информации, которую я получил, мне было достаточно для начальной реализации обмена сообщениями и тонкостей взаимодействия. Дальнейшие части книги обязательно прочту при развертывании Kafka в прод-среде. Книга, на мой взгляд, является информативным источником по взаимодействию с брокером сообщений и будет полезна вам, если вы, как и я, только начинаете знакомиться с Kafka.

Вторая книга - "Go на практике" оказалась для меня менее удачной: почти половина книги была просто пролистана, потому как информация была для меня вторичной. И о данной книге сложилось странное впечатление. С одной стороны - примеры, которые там приведены, действительно показывают Go в практических, нежели теоретических вещах. Но с другой - эти же примеры не особо утруждают себя объяснениями почему принято делать именно так, а не иначе. Так что рекомендация по книге - не ждать от нее погружения в Go и приобретать только в качестве подручного справочника. И уж точно не стоит ее читать в качестве первой книги по Golang. Лучше документация или "Язык программирования Golang" Донована и Кернигана.

И личные мысли о самоизоляции и карантине. Хотя я и не отказываюсь от возможности удаленной работы, но все же хочется на пару дней в офис, потому как очень соскучился по коллегам. Продуктивность вроде не упала, но тут наверно в дело вступает тот факт, что кроме как работать, больше заниматься и нечем: домашние дела переделаны, выход на улицу для прогулок закрыт. Последнее очень удручает, потому как погода стоит превосходная и я надеялся что наконец-то, спустя 5 лет, открою личный велосезон в конце марта. Но нет, видимо снова придется открывать в июле. Хорошо, если этого года 😉
Доброго времени суток!

С 7-ой попытки, в PHP наконец-таки приняли то, что в мире Java известно как аннотации, а в мире PHP теперь будет известно как атрибуты.

Наконец-то уйдут в прошлое описания роутов и сущностей через комментарии.

Считаю это большим прорывом в развитии языка.

Но с чем пока что сложно согласиться, это с синтаксисом. Угловые скобки вместо привычных at-символов (@). Разработчики уже негласно "проголосовали" за использование @ - взгляните на то как это было реализовано на основе Symfony, Doctrine, Psalm и т.д.

В общем, бочка со здоровенной ложкой дегтя, к которой все же придется привыкать. Надеюсь что это будет единственное неудобство реализации и удобства с легкостью его нивелируют.

Ссылка на RFC: https://wiki.php.net/rfc/attributes_v2
Можно ли обогнать по производительности стандартные структуры данных из пакета atomic? Попытка дать ответ в видео

www.youtube.com/watch?v=9CFbBoMvl48

#golang
Если вам было интересно - на какие концепции опирается Docker и как под капотом устроены контейнеры, то вот отличное видео, где за двадцать минут в режиме live coding'а докладчик создает собственную реализацию контейнеров с изоляцией процессов и файловой системы от родительской ОС

https://www.youtube.com/watch?v=HPuvDm8IC-4

#golang #docker
👍1
Как работает pdqsort в Golang - алгоритм сортировки, позволяющий избежать худшего случая для quicksort

https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b

#golang
Доклад, который меньше чем за 30 минут познакомит вас с основными концепциями языка Rust и покажет - как его можно использовать в WEB-разработке

https://www.youtube.com/watch?v=eggRLQYkauo

#rust
👍1
На примере сортировок разбираемся - когда увеличение распараллеливания вычислений не приводит к увеличению производительности

https://convey.earth/conversation?id=44

#golang
Простенькая книга для погружения в разработку на Golang через TDD

Шаг за шагом проходится по основам языка, его концепциям, знакомит с подходами к разработке и все это на примере построения реального приложения

https://quii.gitbook.io/learn-go-with-tests/
👎1
Привет!

Сегодня я принес вам доклад про Best Practise разработки на Golang.

Докладу уже более 4х лет, но он все еще не теряет актуальности

https://www.youtube.com/watch?v=MzTcsI6tn-0

#golang
Если вы хотели начать контрибьютить в open source, но не могли найти подходящий проект, то данный репозиторий может стать отличным подспорьем в этом начинании.

В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source

https://github.com/MunGell/awesome-for-beginners

#opensource #golang #rust #php
👍1
Привет!

Неделю назад я делился лучшими практиками разработки на Golang.

Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang

https://www.youtube.com/watch?v=Jns0QgJtAYY

#golang
Привет!

Сегодня будет та самая оговорка про "почти никакого фронтенда", вынесенная в описание канала - 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
На прошедшей конференции Open-Source Summit 2022 в секции ответов на вопросы Линус Торвальдс упомянул о возможности скорой интеграции в ядро Linux компонентов для разработки драйверов устройств на языке Rust.

Не исключается, что патчи с поддержкой Rust будут приняты в ближайшем окне приёма изменений, формирующем состав ядра 5.20, намеченного на конец сентября.

Поддержка Rust преподносится как опция, не активная по умолчанию и не приводящая к включению Rust в число обязательных сборочных зависимостей к ядру.

Подробнее про то, какие проблемы будет решать Rust в качестве языка разработки ядра самой популярной ОС для серверов во всем мире можно прочесть в статье

https://www.memorysafety.org/blog/memory-safety-in-linux-kernel/

#rust
Если вы разрабатываете на 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
Статья о системе статических проверок и методов на этапе компиляции в Rust, помогающих предотвратить баги, которые в других языках программирования возникают в рантайме.

Большинство из предотвращаемых багов связаны с памятью.

В статье показаны основные концепции Rust, которые позволяют не вдаваться в вопросы управления памятью, но при этом предотвращают неопределенное поведение еще на этапе компиляции.

https://polyfloyd.net/post/how-rust-helps-you-prevent-bugs/

#rust
Обширная статья Uber про выявленные шаблоны состояния гонки в микросервисах на Go

https://eng.uber.com/data-race-patterns-in-go/

#golang #microservices
Привет!

Совсем недавно я делился с вами новостью про возможность включения Rust в качестве языка разработки ядра Linux.

А сегодня предлагаю доклад, который вдается в историю языков программирования для написания ОС и пытается порассуждать на тему - достойный ли кандидат Rust для того чтобы написать ОС схожую по производительности с ОС написанными на C

https://www.youtube.com/watch?v=HgtRAbE1nBM

#rust
Несмотря на то, что Golang не замечен в высоком потреблении памяти, очень полезно понимать - как она расходуется вашим приложением и не происходит ли где-то избыточных аллокаций.

Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.

Именно про такие примеры и пойдет речь в сегодняшней статье.

https://www.ribice.ba/golang-memory-savings/

#golang