Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
227 - Telegram Web
Telegram Web
👍5🔥2🆒1
👍5🔥4👨‍💻2
Использование Golang для разработки Node.js приложений (Node.js: In Go We Trust)

💎 Чат
: ссылка

Меня зовут Алексей Новохацкий, я – Software Engineer. Сейчас работаю над архитектурой высоконагруженных систем, провожу технические собеседования, воплощаю в жизнь собственные проекты.

Как известно, Node.js хорошо справляется с I/O intensive задачами. А вот для решения CPU bound мы имеем несколько вариантов – child processes/cluster, worker threads. Также есть возможность использовать другой язык программирования (C, C++, Rust, Golang) в качестве отдельного сервиса/микросервиса или через WebAssembly скрипты.

Подробнее: https://habr.com/ru/post/593537/
👍10👎4
📚 Лучшие бесплатные книги Golang 2023.

Есть много доступных книг по GO, некоторые полезные, некоторые не очень. Я думаю, что если вы изучаете Go, вы должны стремиться читать как можно больше книг.

✔️ Смотреть список
👍172🔥1
👎5🤯4👍2
Друзья, мы выделили отдельный канал для книг по Go.

Подписывайтесь и скачивайте: @golangsbook
👍10💩4🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
👣 WebPty

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

brew install abdfnx/tap/tran

🖥 Github
💩5👍3🤡1
👍3
Синтаксис Go, часть 1: полезные штуки, которых нет в Java

Некоторое время назад я начала изучать Go. Мотивация очень простая:

🔸 Популярность. Go занимает 4 место в Европе среди языков бэкенда. У Озона, Ламоды, ВК, Авито и других больших ребят есть сервисы на Go

🔸 Интерес. От языка, созданного гуглом, жду интересных идей и подходов к старым проблемам

🔸 А вдруг го лучше джавы? Может новые микросервисы писать на Go? Вдруг пора менять стэк и заводить канал Go: fill the gaps? Хочется разобраться и составить мнение на этот счёт

Первый шаг в изучении языка — синтаксис и стандартные библиотеки. Я человек простой, и тоже иду по этому пути.

Для большинства конструкций в Go можно легко найти аналоги в java. В этом посте я рассказажу об особенностях го, у которых НЕТ прямых аналогов в джаве.

Если бы я писала пост летом, то первым пунктом стали бы горутины, киллер-фича Go. В java 19 вышли виртуальные потоки, которые на первый взгляд похожи на горутины. В нюансах я когда-нибудь разберусь, а сейчас расскажу, чего в джаве точно нет:

1️⃣ Можно вернуть несколько значений из функции

name, count := processUser(user)

Подобные штуки доступны и в других языках, например, в Python.

Вернуть два значения — сверхпопулярный кейс, во многих java проектах для этих целей используют Map.Entry или создают класс Pair.

До сих пор не понимаю, почему в джаве нельзя вернуть пару. Технически это не должно быть сложно, можно сделать что-то среднее между дженериками и LambdaMetaFactory. Или добавить класс Pair в стандартную библиотеку.

2️⃣ Нет наследования

Только интерфейсы и композиция. Никаких проблем с абстрактными классами и сложными иерархиями. Одобряю👌

3️⃣ Объект можно передать по ссылке и по значению

В java всё однозначно:

▪️ void m(int value) — примитив копируется и манипуляции с value не отразятся на переданной переменной
▪️ void m(User user) — ссылка копируется, но указывает на тот же объект

В Go вариантов больше:

▫️ func m(value int) — примитив копируется как в джаве
▫️ func m(value *int) — передаём ссылку на примитив, внутри метода ей можно присвоить другое значение
▫️ func m(value User) — в метод передаётся полная копия объекта
▫️ func m(value *User) — передаём исходную ссылку на объект. Её можно переприсвоить новому объекту, и сам объект, конечно, можно менять

4️⃣ Оператор select
для получения самого быстрого результата от асинхронных задач.

Как это выглядит: допустим, мы отправили три задачи в асинхронное исполнение. Пишем:

select {
результат задачи 1: код А
результат задачи 2: код Б
результат задачи 3: код Ц
}

Какая задача первой вернёт результат, такой код и выполнится. При этом нам сразу доступен результат завершённой задачи.

Самый близкий java аналог — конструкция

CompletableFuture.anyOf(задача1, задача2, задача3).thenRun(код)

Код в thenRun выполнится, когда одна из задач завершится. Затем нужно пройтись по всем объектам CompletableFuture, чтобы выяснить, какая именно задача завершилась, и забрать у неё результат. В go эту задачу выполнить гораздо проще.

За кадром осталось много конструкций, которые выглядят по-другому, но я пока не поняла, чем они лучше аналогов в java. Возможно, когда перейду к изучению лучших практик, плюсы станут более весомыми. А может и нет:)

Но не всё так радужно, и в следующем посте опишу особенности Go, которые мне НЕ понравились😈
👍36🔥5👎2💩21👏1
👣 Pagoda — набор инструментов для быстрой и простой фуллстек-разработки на Go. Под капотом: echo, ent, Postgres, Redis, htmx, Alpine.js и Bulma.

git clone git@github.com:mikestefanello/pagoda.git
cd pagoda
make up

🖥 Github
🔥14👍1👎1
👣 conc: better structured concurrency for go

conc — это ваш набор инструментов для структурирования конкуренции в Go, который делает обычные задачи проще и безопаснее.

🖥 Github
👍1💩1
Опыт использования KrakenD от разработчиков МТС Travel

KrakenD — это готовое решение, которое используется в МТС Travel для реализации API-шлюза, важной штуки для продуктов с микросервисной архитектурой.

Туристический сервис появился у МТС в прошлом году, сейчас с помощью него можно забронировать отели по всей России, а также за рубежом. В базе уже более 16000 предложений различных отелей, хостелов и апартаментов.

Опыт МТС Travel может может пригодиться разработчикам из других сервисов. Подробнее о нем читайте в статье на Хабре.
🔥5🤯3🤡3👍1💅1
👍2💩2🔥1
Что выведет код?
Anonymous Quiz
39%
6 6
28%
6 12
33%
Посмотреть ответы
🔥2👍1
Чат-бот под несколько месенджеров

💎 Чат
: ссылка

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

Подробнее: https://habr.com/ru/post/649413/
👍5🔥1💩1
Что выведет код?
Anonymous Quiz
12%
11
7%
12
12%
21
22%
22
46%
Посмотреть ответы
👍5
Почему я перешёл с Python на Go: choose your fighter

💎 Чат
: ссылка

Привет, Хабр! Меня зовут Саша, я бэкенд-разработчик в Ozon. Пишу платформу для контента, который генерят пользователи: отзывов, комментов, вопросов, ответов. Раньше я писал на Python. Выбрал его изначально из-за лёгкого синтаксиса и большого количества вакансий для Python-разработчиков — изи катка для входа в профессию.

Подробнее: https://habr.com/ru/company/ozontech/blog/598381/
👍6
2025/07/11 21:08:57
Back to Top
HTML Embed Code: