Все потоки
Поиск
Написать публикацию
Обновить
100.24

Go *

Компилируемый, многопоточный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

TypeScript 7 в 10 раз быстрее: анонс нативного компилятора TSGO

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.4K

11 Марта вышел аннонс Typescript 7, в котором рассказали о разработке нового tsgo компилятора.

Андерс Хейлсберг объявил о следующем этапе в развитии Typescript, направленном на кардинальное повышение производительности.
Основная ценность Typescript — это удобный опыт разработки, с ростом кодовой базы эта ценность становится всё более очевидной. Но, как показала практика, текущая реализация часто не справляется с очень крупными проектами. Разработчики сталкиваются с долгим временем загрузки, медленным автокомплитом и проблемами с производительностью.

Нативный порт компилятора на Go - tsgo доступен в репозитории на GitHub - typescript-go. Уже сейчас его можно потестировать и попытаться собрать какой-нибудь проект, но пока реализовано 80% функционала языка. А завершить разработку tsgo обещают в пределах 2025 года.

Читать далее

Запускаем код на Go снизу вверх

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.2K

В этой статье, как небольшое дополнение к предыдущей, я хочу рассмотреть, как Go работает с AST, и заодно реализовать конструкцию InverseCode{} которая будет читать код снизу вверх силами компилятора.

Читать далее

Разбор интервью с автором TypeScript о портировании его на Go

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров21K

Анонсирован порт TypeScript на Go, который показывает двухкратное уменьшение использования памяти и десятикратное улучшение скорости работы!

В этой статье мы разберем в деталях часовое интервью с автором TypeScript Андерсом Хейлсбергом об этом портировании.

Чего не хватает для лучшей производительности node.js?

Читать далее

Fan-Out, Fan-In с динамической балансировкой горутин в Golang

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.6K

Привет, Хабр!

Когда речь заходит о конкурентности в Go, паттерн Fan-Out, Fan-In — одна из важных концепций на мой взгляд. Он позволяет распределять задачи между несколькими горутинами и затем собирать результаты обратно в один поток.

Читать далее

Кастомные memory pools в Golang

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.4K

Привет, Хабр!

В этой статье рассмотрим, почему стандартный sync.Pool в Go не всегда спасает, когда речь идёт о высоконагруженных сервисах, и как кастомные memory pools позволяют взять под контроль работу с памятью.

Читать далее

Компилятор GO. Добавляем цикл WHILE

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров7.9K

На одной из конференций я наблюдал, как наши коллеги реализовывали тернарный оператор в Go с помощью комментариев. Доклад длился всего минут 10, и, честно говоря, я не смог уловить ничего внятного, кроме того, что ребята явно хорошо повеселились. Однако это вдохновило меня разобраться, как работает компилятор Go под капотом. А лучший способ разобраться — это попробовать написать что-то своё.

Самым простым и понятным для меня в этом плане показалась реализация цикла while. В этой статье я покажу, что у меня получилось выяснить. Вот примерный результат, к которому мы придём:

Читать далее

Настроить GPU-экспортеры? Легче создать свой или «как подружить экспортер Nvidia-smi-exporter с Pod’ми»

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров1.4K

Привет! Меня зовут Настя Бережная, я – DevOps-инженер, и в этой статье я расскажу о том, как мы пробовали использовать для решения своей задачи экспортеры Nvidia DCGM-Exporter и nvidia-gpu-exporter. Спойлер: как следует из названия статьи, несильно получилось договориться с этими двумя „товарищами”, о чем я расскажу далее. После некоторых скитаний по документациям, форумам и попытками настроить экспортер малой кровью, было решено создать свой.

Интересно? Читайте под катом!

Design by Contract на минималках: пишем assertions и улучшаем устойчивость на Go

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.8K

Всем привет! Меня зовут Александр Иванов, я старший разработчик в YADRO, работаю над созданием средств управления элементами опорной сети и пишу на Go. Мы с командой разрабатываем продукт для сервисов сотовой связи — качество нашей работы влияет на пользовательский опыт тысяч людей. Поэтому часто мы ищем решения, как повысить устойчивость работы кода в продакшене. 

Об одном из таких решений я расскажу в этой статье. Design by Contract — подход к проектированию ПО, в котором взаимодействие компонентов системы основано на контрактах. Контракты описывают ожидания вызываемой и вызывающей функции и улучшают производительность кода.

Читать далее

Как я написал пакет для быстрого создания и управления формами в Go

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.6K

Привет, Хабровчане! Сегодня я хочу рассказать о своём небольшом проекте - пакете goform, который я написал для упрощения работы с HTML-формами в Go. Это не просто ещё один пакет, а результат моего опыта и желания сделать процесс работы с формами более удобным и эффективным. В этой статье я поделюсь историей создания, функциональностью пакета и тем, как он может быть полезен другим разработчикам.

Читать далее

Как я создавал Observability для своих pet-проектов. Часть 2

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5K

В первой части мы развернули базовый стек для сбора метрик, логов и трейсов и интегрировали его с приложением на Laravel. Теперь покажу настройку Observability на примере простого Golang-приложения — настроим в нём структурированные логи, распределённый трейсинг и метрики, а также интегрируем с нашим стеком.

Читать далее

What's in the box!? Исследуем минимальное количество тредов golang-программы

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров3.7K

Именно с такой мыслью и именно с интонацией Брэда Питта я ушел спать вчера (сегодня) в 3:40 утра. После того, как в 23:10 "споткнулся" об утверждение Коли Тузова (в видео про устройство планировщика go), о том, что рантайм голенга создает треды заранее. Не верилось, настолько что я пошел перечитывать сорцы рантайма снова, тем более я туда с 1.17 не заглядывал.

Deep-dive go sheduler

Туториал: вход в мобильном приложении с Telegram

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.4K

Аутентификация в мобильных приложениях с помощью Telegram Login Widget обделена информацией как официальной документации, так и в интернете. В этой статье поделюсь примером реализации входа в iOS приложение c помощью Telegram. В статье приведены сниппеты кода на Typescript + React, Go и Swift.

Читать далее

Syscall и cgo в Go

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.4K

Привет, Хабр!

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

Читать далее

Ближайшие события

Запилил 100 проектов на Go и вот что скажу

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров23K

Когда начинаешь новый проект, то надо какое то время потратить чтобы подобрать подходящие библиотеки, подготовить структуру проекта, связать все воедино. Это занимает прилично времени. Целый день вполне может уйти. А экономить на этом шаге не стоит. Это ведь как фундамент. И вот, 5 лет назад я опубликовал каркас, который собрал для себя, чтобы делать с ним проекты на Go.

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

DI

По теме DI ко мне в чаще всего обращались с критикой, в том числе и коллеги. Поэтому с этого и начнем. В основном предлагали 2 идеи

Читать далее

Как управлять сборками в Go с помощью build tags

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.1K

Привет, Хабр!

Вы когда-нибудь сталкивались с ситуацией, когда нужно собрать Go-приложение под несколько платформ? Или выключить часть кода в проде, оставив её активной в дев-среде? Возможно, вы просто хотите поддерживать разные версии сборки с кастомными фичами без тонны if runtime.GOOS == "windows" {}?

В этом вам помогут build tags.

Читать далее

Обсуждаем изменения в Go 1.24, мьютексы и пакет unsafe — открытие сезона митапов для гоферов в Москве

Время на прочтение2 мин
Количество просмотров1.9K

С приходом весны из-под сугробов снова начинают прорастать полезные митапы. На первой в сезоне Go-сходке от YADRO предлагаем присоединиться к обсуждению изменений Go 1.24. Эксперты из AvitoTech, Yandex и YADRO подискутируют, как обновления повлияют на код разработчиков. Также вы узнаете, как обеспечить высокопроизводительную конкурентность в Go и с умом применять пакет unsafe. 

Офлайн-участников ждет демозона с оборудованием для ЦОД и телеком-операторов, технические интерактивы и подарки. Регистрация открыта!

Читать далее

Как создать свой алгоритм шифрования: от идеи до готового CLI-приложения

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3K

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

Читать далее

Выходим за рамки: создание оператора для наблюдения за внешними ресурсами в Kubernetes

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.1K

В этой статье мы рассмотрим, как создать оператор, который выходит за рамки кластера и взаимодействует с внешним миром. На примере мониторинга HTTP-серверов вы узнаете, как использовать kubebuilder для разработки custom-операторов и как организовать работу с внешними ресурсами. Статья будет полезна разработчикам, желающим расширить возможности своих Kubernetes-кластеров.

Читать далее

Страх и Ненависть в Ви.Tech: от монолита к не микросервисам

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров1.5K

Представьте: у вас есть монолит на PHP. Большой, сложный, местами запутанный – но такой родной. Он верой и правдой служит бизнесу много лет. А потом случается неизбежное – компания растет, нагрузки увеличиваются, и ваш надежный монолит начинает... задыхаться.

Я – Кирилл Кузин, go-разработчик платформенной команды Ви.Tech (IT-дочка ВсеИнструменты.ру). Последние три года мы переводим высоконагруженные части нашего кода с монолита на Go-сервисы. За это время успели перенести критически важные компоненты, увеличить производительность в десятки раз и найти свой путь между монолитом и микросервисами. О нем я сегодня и расскажу.

Сесть в машину без верха

BadgerDB как бэкенд для LDAP-каталога

Время на прочтение13 мин
Количество просмотров1.9K

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

Читать далее

Вклад авторов