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

Go *

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

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

Golang: context изнутри

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

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

Читать далее

От Firebase к Self-Hosted

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

Приложению cara.app пришёл счет от Vercel на 96280$. Многие стартапы начинают с Vercel и Firebase, затем из нежелания платить гуглу уходят на свои сервера

Поговорим с нюансами про стэк технологий и оценим усилия на миграцию на свои сервера. Разберём на примере Go с k8s и инфраструктурой мониторинга, но без Firebase (Github)

Читать далее

Паттерны Go — Паттерн «Опции» — ключ к простому рефакторингу в будущем

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

Привет Хабряне! Давно хотел написать статью о паттерне опций в функциях и почему его использование настолько шикарно. В статье будет упрощенный пример из жизни, так что не судите строго. Заранее благодарен за комментарии и указания на неточности.

Читать далее

SOLID в Go и щепотка паттернов

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

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее

Как мы создавали PaaS-платформу App.Farm — цифровое сердце РСХБ

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

Привет, Хабр! Меня зовут Константин Белкин, я Teamlead SRE в РСХБ‑Интех. Сегодня я расскажу вам про App.Farm — PaaS‑платформу, которую мы самостоятельно разрабатываем и поддерживаем с сентября 2020 года.

Читать далее

Группировка ExCobalt снова в обойме и обзавелась новым бэкдором на Go

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

Спустя месяц в копилку расследований экспертного центра безопасности Positive Technologies (PT Expert Security Center) добавилось еще одно, причем о группировке ExCobalt, за которой мы следим с ноября прошлого года. Напомним: тогда наша команда выяснила, что в составе ExCobalt есть участники небезызвестной APT-группы Cobalt (ее профайл можно посмотреть здесь), которые активны как минимум с 2016 года. ExCobalt поменяла сферу интересов и, в отличие от предшественника, специализируется на кибершпионаже и краже данных.

Этой весной группировка вновь стала заметна на киберпреступной арене и занесла в актив любопытную вредоносную программу, ранние версии которой нам уже встречались во время реагирования на инциденты в ряде российских компаний. Мы назвали найденный бэкдор GoRed — такое имя носил его первый образец, обнаруженный нашей командой.

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

Больше о бэкдоре

Go gamedev: низкоуровневое API рисования в Ebitengine

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

Я уже несколько лет использую игровой движок Ebitengine, но ранее у меня получалось обходиться лишь высокоуровневым способом отрисовки объектов — DrawImage.


Функция DrawTriangles казалась не очень понятной человеку, который привык к концепции "есть спрайт — можно рисовать".


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


Давайте разбираться, что это за треугольники и с чем их едят.


Читать дальше →

Как упаковать бэкенд-код на Go для аналитики на базе Spark

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

Всем привет! Я Ваня Ахлестин, занимаюсь поддержкой и развитием аналитической платформы кластера Search&Recommendations на базе Spark и Hadoop в Авито. Сегодня расскажу, как начать использовать ваш код из Python или PySpark и не тратить много времени дорогих разработчиков.

Читать далее

Выжимаем из Go максимум производительности

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

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

Меня зовут Никита Галушко. Я старший программист-разработчик в отделе высоконагруженных систем и оптимизации ВКонтакте. В статье поделюсь, какие хитрости помогут использовать Go на полную мощность.

Читать далее

Микросервисы с Go-Micro на примере

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

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

Читать далее

Анти-паттерны в Go Web Applications

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

В какой-то момент моей карьеры меня перестало радовать ПО которое я разрабатывал.

Больше всего мне нравилось работать с низкоуровневыми деталями и сложными алгоритмами. Но после перехода на пользовательские приложения эта часть работы почти исчезла. Теперь программирование казалось мне просто перемещением данных из одного места в другое с помощью уже готовых библиотек и инструментов. Знания, которые я получил раньше о программном обеспечении, уже не были такими полезными.

Читать далее

История переформатирования 100 000+ файлов Google в 2012 году

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

В сентябре далёкого 2012 года я трудился начинающим инженером в Google, занимаясь разработкой Bazel (инструмент сборки, внутри компании также известный под именем Blaze). Однажды мне на почту пришло загадочное приглашение из Google Календаря. Его прислали два инженера из США, пригласив на встречу меня и моего тимлида.

Я сразу узнал имена отправителей — это были Роб Пайк и Расс Кокс. И хотя работать мне с ними не доводилось, я был о них наслышан. Расса Кокса я знал по его блогу, который любил читать, а Роба Пайка просто, потому что он известен. В ходе встречи они поделились с нами своим амбициозным планом: переформатировать каждый BUILD-файл Bazel в кодовой базе Google с помощью автоматизированного скрипта.
Читать дальше →

Go и pgx. Пагинация в запросах к БД Postgres

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

Доброго дня! Хочу поделиться лайфхаком по реализации универсального способа пагинации в произвольных запроса к БД для получания списков.

Имеем изначально задачу по реализации HTTP REST CRUD сервера на Go. База данных - PostgreSQL. Используемый драйвер - pgx - PostgreSQL Driver and Toolkit.

Задача в общем тривиальная - сделать так, чтоб запросы получали на вход параметры пагинации (номер страницы, количество записей на страницу) и отдавали на выход поля таблицы и общее доступное количество страниц.

Общее количество страниц в таблице БД получить несложно:

Читать далее

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

Go развивается в неверном направлении

Время на прочтение7 мин
Количество просмотров18K
Язык программирования Go известен своей простотой в использовании. Благодаря продуманному синтаксису, возможностям и инструментарию, Go позволяет писать легко читаемые и поддерживаемые программы произвольной сложности (см. этот список на GitHub).

Некоторые инженеры-программисты называют Go «скучным» и «устаревшим», поскольку в нем отсутствуют передовые возможности других языков программирования, такие как монады, опциональные типы, LINQ, средства проверки заимствований, абстракции с нулевыми издержками, аспектно-ориентированное программирование, наследование, перегрузка функций и процедур и т. д. Хотя эти возможности могут упростить написание кода для определенных областей, они имеют ненулевые издержки в дополнение к преимуществам. Эти возможности обычно хороши для тренировки мозга. Но нам не нужна дополнительная умственная нагрузка при работе с производственным кодом, поскольку мы и так заняты решением бизнес-задач. Основная цена всех этих возможностей – возрастание сложности результирующего кода:
Читать дальше →

# Casbin — легко о сложном в авторизации

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

Сегодня мы поговорим о том, как сделать вашу систему авторизации надежной, гибкой и простой в управлении с помощью библиотеки Casbin. Если вы когда-нибудь задумывались о том, как настроить права доступа в своем приложении, но вас пугала сложность этого процесса, то эта статья для вас. Мы разберем основные понятия и покажем, что настройка авторизации может быть не такой уж и сложной задачей.

Casbin — это мощная и легко расширяемая библиотека для управления доступом, которая поддерживает различные модели контроля доступа. Вот несколько примеров:

Читать далее

Исправляем следующие 10 000 багов, связанных с наложением ссылок

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

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

Под катом автор блога Considerations on Codecrafting рассматривает ошибки, связанные с наложением ссылок, предлагает методы их предотвращения и призывает внедрить эти методы на уровне проектирования новых языков.

Читать далее

Почему люди злятся из-за итераторов в Go 1.23

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

Недавно я увидел сообщение, демонстрирующее будущий дизайн итераторов для Go 1.23 (август 2024 года). Насколько я могу судить, многим людям этот дизайн не нравится. Я хотел высказать свои мысли по этому поводу как разработчик языка.

Читать далее

Учимся работать с Kubernetes через запуск приложения

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

Вместе с Павлом Агалецким, ведущим разработчиком PaaS в Авито, изучим команды утилиты kubectl в Kubernetes, попробуем запустить два приложения и познакомимся с консольным дашбордом k9s.

Читать далее

Об одном использовании gRPC: HTTP-прокси pog-server

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

В наше время программисту приходится использовать прокси-сервера. Я пользовался одним, пока не потребовался доступ к ChatGPT: так у меня стало 2 прокси-сервера.

Затем мне потребовался Terraform. Он заработал, однако вместе с этим я делал запросы к Google API, и тот забраковал прокси-сервер. Так мне пришлось балансировать, когда и какой прокси-сервер использовать.

Так появилась задача найти такой кристально чистый IP, чтобы через него были доступны сервисы выше и не только.

Читать далее

Потрясающе быстрые теневые стеки для Go

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

Программные теневые стеки могут обеспечить до 8 раз более быструю трассировку стека в Go рантайме по сравнению с раскруткой указателя фрейма, которое было реализовано в go1.21. Это не означает, что данная идея должна сразу же вырваться из лаборатории, но она предлагает интересный взгляд на потенциальное будущее трассировки стека с аппаратным ускорением через теневые стеки.

Читать далее

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