Как стать автором
Обновить
94.23

Go *

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

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

Создание CLI утилит на Go с библиотекой Cobra

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

Сегодня мы рассмотрим, как с помощью замечательной библиотеки Cobra превратить обычный Go-код в инструмент CLI. Cobra позволяет создавать интерфейсы командной строки.

Начнем с самого начала — установки и настройки проекта.

Читать далее
Всего голосов 4: ↑3 и ↓1+5
Комментарии2

Новости

Не только VPN. Как это было и куда идет

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

Немного истории, реализация php, perl и банальная реализация на Golang.
Интересно? Добро пожаловать в подкат...

Читать далее
Всего голосов 18: ↑10 и ↓8+4
Комментарии9

Шаблон Go-микросервиса для начинающих от .NET разработчика. Часть 2

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

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

Читать далее
Всего голосов 9: ↑3 и ↓6+1
Комментарии9

Кратко про сетевые протоколы в Golang: TCP, QUIC и UDP

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

Сегодня мы кратко рассмотрим то, как реализовать такие протколы, как TCP, UDP и QUIC в Golang.

Начнем с TCP.

Читать далее
Всего голосов 12: ↑7 и ↓5+5
Комментарии1

Истории

Зачем нужен код-ревью?

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

Привет, Хабрюзеры.

Недавно я устроился на вакансию Golang junior разработчика в новую компанию. Ранее я несколько лет программировал на PHP, пока не познакомился с Go. Думал, что моя мечта сбылась: я набрался опыта, стал более опытным специалистом и теперь могу продолжать развиваться. Однако, после выполнения задачи код, написанный мной, нужно было отправить на код-ревью. После этого мне приходили правки, которые я должен был исправить и снова отправить на ревью. Раньше я не понимал, зачем нужен этот процесс. На форумах и в сообществах многие писали, что код работает — и слава Богу, так зачем нужны эти ревью?

Теперь, после некоторого времени работы, я хотел бы поделиться своим мнением о код-ревью и объяснить, почему этот процесс важен.

Читать далее
Всего голосов 13: ↑5 и ↓8+3
Комментарии9

Создание Framework для Go: Вдохновение от Laravel

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2+8
Комментарии11

Как наш ученик попал на стажировку в VK. История Артёма Мазура

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

Мы следим за жизнью всех ребят, которые приходят в ЦПМ и участвуют в наших проектах. Каждый раз, когда мы узнаем об их достижениях, нам очень трепетно и радостно! Сегодня мы хотим поделиться историей Артёма Мазура, который прошел на стажировку, внимание, в VK!

Читать далее
Всего голосов 25: ↑2 и ↓23-21
Комментарии6

Быстрый старт: Docker + SMTP + Java/Go

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

Не так давно у меня появилась необходимость на нескольких проектах сделать регистрацию с подтверждением email, так же хотелось минимизировать затраты и исключить лишние телодвижения, так сказать методом ctrl+c ctrl+v, без танцев с бубном. Так же нам не нужно принимать почту и прочее, просто отправка, не более

P.s. Для прожженных отцов разработки ничего нового тут не будет

Итак, поехали ;-)

Читать далее
Всего голосов 7: ↑2 и ↓5+1
Комментарии10

Ошибки в языке Go — это большая ошибка

Время на прочтение3 мин
Количество просмотров15K
// гофер пытается найти логику среди обработки ошибок
+-------+-------+-------+-------+-------+-------+
|       |  err  |       |  err  |       |  err  |
|  ,_,,,        |       |       |       |       |
| (◉ _ ◉)       |       |       |       |       |
|  /)  (\               |       |       |       |
|  ""  ""               |       |       |       |
+       +-------+       +-------+       +-------+
|       |  err          |  err  |       |  err  |
|       |               |       |       |       |
|       |               |       |       |       |
+-------+       +-------+       +-------+       +
|  err  |               |  err                  |
|       |               |                       |
|       |               |                       |
+       +-------+       +       +-------+       +
|       |  err  |               |  err  | logic |
|       |       |               |       |       |
|       |       |               |       |       |
+-------+-------+-------+-------+-------+-------+

Я пишу на Go несколько лет, в Каруне многие вещи сделаны на нём; язык мне нравится своей простотой, незамысловатой прямолинейностью и приличной эффективностью. На других языках я писать не хочу.


Но сорян, к бесконечным if err != nil я до конца привыкнуть так и не смог.


Да-да, я знаю все аргументы: явное лучше неявного, язык Go многословен, зато понятен, и всё такое. Но, блин, на мой взгляд Го-вэй Го-вэю рознь.

Читать дальше →
Всего голосов 44: ↑40 и ↓4+41
Комментарии82

Докеризация сборки проекта на всех уровнях

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

Всем привет, на связи Вадим Макеров, бэкенд‑разработчик iSpring. Успешная воспроизводимая сборка проекта является критическим фактором в поддержке и развитии проекта. При большом количестве проектов и технологических стеков гарантировать воспроизводимость сборки — «собралось однажды, соберется всегда» — сложнее.

О том, как реализовать идемпотентность сборки, я рассказывал в рамках митапа в офисе iSpring в 2023 году. Эта статья — текстовая версия моего доклада.

Читать про контейнеризацию сборки
Всего голосов 8: ↑8 и ↓0+10
Комментарии7

Горутины в Go: Базовые примеры

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

Горутины — это функции или методы, выполняемые конкурентно с другими горутинами в одном и том же адресном пространстве. Они легковеснее традиционных потоков, занимают меньше памяти и позволяют эффективно использовать ядра процессора.

Читать далее
Всего голосов 6: ↑4 и ↓2+4
Комментарии1

Анонимный RAT при глобальном наблюдателе

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0+11
Комментарии1

MapReduce на Go: превратите ваши большие данные в понятную карту и удобный редьюс

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

Часто задается вопрос: как эффективно и быстро обработать огромные объемы информации? Ответом на этот вызов стала концепция MapReduce, разработанная в недрах Google.

MapReduce — это парадигма программирования, созданная для обработки и генерации больших объемов данных с использованием параллельных распределенных алгоритмов. Основная фича проста: сначала данные разбиваются на небольшие части (фаза Map), а затем результаты этих частей агрегируются в финальный результат (фаза Reduce).

Читать далее
Всего голосов 11: ↑9 и ↓2+12
Комментарии2

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

Как и зачем создавать кастомные сборщики мусора в Go

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

В Golang (да в принципе во всех ЯП) управление памятью и эффективное использование ресурсов — основа создания высокопроизводительных приложений. Одним из важных инструментов, который помогает справляться с этой задачей, является сборщик мусора (на англ garbage collection). Встроенный сборщик мусора Go выполняет свою работу довольно хорошо, но иногда требуется более тонкая настройка, чтобы соответствовать специальным требованиям потребностям конкретного приложения.

Здесь нам и помогут кастомные сборщики мусора.

Читать далее
Всего голосов 8: ↑7 и ↓1+10
Комментарии6

Кластеризация множества объектов, алгоритм K-means++

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

Поступила задача выполнения кластеризации множества товаров, по их размерам (двумерная плоскость). Значения распределения: ширина и высота.

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

Читать далее
Всего голосов 5: ↑5 и ↓0+8
Комментарии4

Работа с аренами: почти избавляемся от GC

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

Меня зовут Максим Горозий. Я тимлид в Т-Банке, работаю над нашей образовательной платформой, которая служит для разных направлений бизнеса. В ИТ больше 10 лет и успел поработать в двух GameDev-компаниях, где управление памятью занимало весомое время в оптимизации производительности кода. Люблю строить системы и взаимосвязи между ними, а также EdTech и преподавание, а еще больше — работать над инструментами обучения. Хотя начинал с C, я идеологический фанат Go, DDD и Agile.

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

Читать далее
Всего голосов 27: ↑27 и ↓0+29
Комментарии15

Система Топологического Консенсуса (СТК)

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

Topological consensus system (TCS)

Автор: Александр Коробкин и его верная команда разработчиков

Сегодня мы рады представить вашему вниманию нашу новую инновационную технологию, основанную на протоколе Chord (https://en.wikipedia.org/wiki/Chord_(peer-to-peer)), но с рядом уникальных особенностей, которые увеличивают его функциональность и производительность. Мы назвали нашу технологию "СТК" (Система Топологического Консенсуса).

Предназначение СТК

СТК является распределенной хэш-таблицей (DHT), которая позволяет эффективно организовывать и управлять данными в распределенной системе. Она подходит для использования в различных приложениях, таких как:

Распределенные файловые системы: Обеспечение масштабируемого и надежного хранения данных.

Облачные решения: Организация данных и ресурсов в крупных облачных инфраструктурах.

Сетевые службы имен: Обеспечение эффективного и быстрого доступа к распределенным данным.

Интернет вещей (IoT): Управление огромными объемами данных от различных устройств в сети.

Системы контент-распределения (CDN): Оптимизация хранения и доступа к контенту для пользователей по всему миру.

Блокчейн приложения: Распределение и хранение транзакций и данных в сети блокчейн.

Читать далее
Всего голосов 4: ↑3 и ↓1+5
Комментарии1

Как отправлять SMS через МТС Exolve и Go

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

В одной из московских компаний решили расширить функции системы на Golang, и заказчик попросил внедрить в неё SMS и прочие каналы для уведомлений клиентов. В этой статье пошагово разберём, как отправлять SMS с использованием сервиса МТС Exolve и популярного языка программирования Golang.

Читать далее
Всего голосов 5: ↑4 и ↓1+5
Комментарии2

Баги, которые мы пишем, ищем и исправляем #2

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

Привет! Меня зовут Денис, я — разработчик ПО SEDMAX. Это промышленное ПО для сбора и визуализации данных в энергетике. Как и у всех, у нас бывают баги. Мне бы хотелось поделиться опытом в поиске таких багов, а также порассуждать на тему того, что необходимо было сделать, чтобы баг не появился. У нас серверная часть написана на go в виде некоторого множества сервисов, поэтому специфика большинства багов будет асинхронное взаимодействие, а код примеров представлен на go.

В прошлой статье были сделаны следующие выводы:

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Golang: пакет bytes изнутри

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

Приветствую, в прошлой статье мы разбирали определение bytes.Buffer изнутри. Теперь хочется обратить внимание на сам пакет bytes. Что за ним скрывается? Каждому разработчику приходилось использовать его будь то в production или локальной разработке. Это достаточно мощный по своим меркам пакет, который предоставляет нам функции для работы с байтами.

Читать далее
Всего голосов 10: ↑8 и ↓2+9
Комментарии8
1
23 ...

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

Работа

Go разработчик
130 вакансий