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

Go *

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

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

Организация стажировки от идеи до найма

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

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

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

Спойлер: в итоге стажировка была организована силами 2 HR и 3 человек из команды разработки. Помимо оплаты нашего времени и выплат стажерам, не было потрачено ни рубля дополнительно.

Читать далее

V lang. Обзор и сравнение с Golang

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

Всегда приятно видеть, когда появляются новые языки программирования, хочу представить вашему вниманию язык V, его автор, конечно, же не я)))

Читать далее о V lang

Простой mp3-плеер с графическим интерфейсом на Go

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

Мы продолжаем рассматривать разные платформенные применения Go (ранее мы посмотрели как использовать Go для микроконтроллеров, веб-приложений, разработки API, создания мобильных приложений) и сегодня поговорим об использовании Go для создания приложений для настольных компьютеров на примере реализации несложного mp3-плеера с поддержкой графического интерфейса. Мы будем использовать связывание с GTK для реализации интерфейса, библиотеки декодирования mp3 и взаимодействия с аудиосистемой (для Windows, Linux и MacOS).

Читать далее

Пишем обёртку для API Токийской фондовой биржи на Golang

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

Целевым REST API будет jquants-api, описанный в предыдущей статье.

Я решил реализовать обёртку на Golang, что оказалось чрезвычайно быстро и удобно. В итоге я выполнил эту задачу за один вечер, а получившуюся Golang-обёртку с базовыми функциями загрузил на GitHub.

В этой статье я вкратце расскажу о процессе написания API и моих шагах по реализации проекта.
Читать дальше →

Перевод RabbitMQ «Hello World» для Golang

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

Это перевод официальной документации RabbitMQ.

Планируется сделать перевод на все 7 базовых руководства, которые помогут новичкам погрузиться в мир RabbitMQ. На некоторых форумах я встречал негодования, что еще никто не сделал перевод на русский для данных руководств. Я постараюсь как можно более качественно и понятно донести информацию из документации. Если есть какие-то замечания, то обязательно пишите в комментариях.

Читать далее

Теория квантовых состояний: из жизни в код

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

Расскажу вам о моём вИдении правильного программирования любых систем.

Кратко о себе: программист самоучка, примерно в 1992 году начинал с ассемблера, крякая через HIEW (Огромное СПАСИБО автору этого замечательного дизассемблера) всякие DOS-игрухи-проги, и прогая всё, что в голову взбредёт - от игр до вирей (домашних и добрых).

Подробнее о "Теории квантовых состояний" >

Наступая на грабли. Опыт написания Kubernetes Operator’а

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

Недавно мной, совместно с коллегой, был реализован оператор для Kubernetes’a - Vector Operator. (Вот тут описано как мы пришли к решению, что там нужен свой оператор для Логирования в Kubernetes).

В рамках данной статьи я опишу разные интересные Задачи/Проблемы с которыми мы столкнулись в процессе разработки и как их решили.

Читать далее

Фронтенд на Go с использованием библиотеки RUI

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

Изначально библиотека RUI разработана для создания клиент-серверных веб приложений на языке go, где вся обработка осуществляется на сервере, а браузер используется только как тонкий клиент.

Однако в последней версии библиотеки (0.10.0) была добавлена поддержка технологии WebAssembly. Теперь стало возможным объединить серверную и клиентскую часть в единый модуль исполняемый в браузере. При этом требуются минимальные изменения в уже существующем проекте использующем библиотеку RUI

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

Читать далее

Разработка мобильных приложений на Go

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

Язык программирования Go стал настоящим открытием для разработчиков инструментов для системного администрирования и DevOps благодаря комбинации возможностей низкоуровневой разработки (и в этом он подобен C) и поддержке автоматической сборки мусора, исключению прямой работы с указателями, наличию конкуретной многозадачности (goroutines) и возможности компиляции непосредственно в исполняемый образ. Постепенно Go начал использоваться для других целей: создание веб-приложений, разработка для микроконтроллеров. Почему бы не использовать все его возможности для создания мобильных приложений? В статье мы обсудим некоторые подходы к разработке приложений на Go для мобильных устройств.

Читать далее

ogen: OpenAPI v3 генератор для Go

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

Чем больше кода, тем больше багов. Проект ogen генерирует код по OpenAPI спецификации, избавляя от сотен (или даже тысяч) строк скучного шаблонного кода на Go, который приходится писать вручную с риском допустить опечатку или ошибку.


Генератор пишет клиент и сервер, а разработчику остаётся только реализовать интерфейс для сервера. И никаких interface{} и рефлексии, только строгая типизация и кодогенерация.


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

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

Про использование S3 storage как key-value database

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

На сегодняшний день S3 storage получила очень большое распространение и поддерживается практически всеми облачными провайдерами. Из описания S3 storage мы видим, что эта штука предназначена для хранения файлов с быстрым доступом к ним из всего мира. И это стереотип! Все, кто недостаточно знаком с S3, считают, что этот сервис предназначен для хранения файлов.

Точно такое же мнение про S3 storage было и у меня до тех пор, пока я не попал в мой текущий проект по разработке онлайн игры для десктопа.

Читать далее

golang, GRPC, Jaeger и distributed tracing

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

Сразу хотел бы обозначить, что в данной статье не стоит цели рассказать обо всех указанных в заголовке технологиях, а скорее просто how to инструкция как настроить это все у себя в проекте.

Причина по которой я сел писать этот пост - когда мне было нужно я не смог найти ничего подобного (возможно, как всегда, плохо искал). Так же во многих гайдах для работы с Jaeger использовали старую библиотеку от uber, а сейчас уже советуют отказываться от нее в пользу opentelementry клиента. Еще я толком не cмог найти информации как прокидывать trace-id через context между сервисами.

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

Читать далее

Apple HomeKit

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

В данной статье речь пойдет про Apple HomeKit Accessory Protocol (HAP): внутренности и разработку контроллера.

Apple HomeKit создан для взаимодействия контроллера (по умолчанию iOS-устройства, приложение Home) и множества устройств(аксессуаров). Протокол открыт для некоммерческого использования, загрузить его можно с сайта Apple. На основе этой версии протокола создано несколько open-source проектов, и когда говорят про HomeKit на каком-нибуль Raspberry Pi обычно подразумевают установку homebridge и плагинов для создания совместимых аксессуаров.

Обратная же задача - создание контроллера - не такая распространенная и из проектов мне удалось найти лишь pypi.org/project/homekit/.

Поставим задачу создать контроллер, например, для управления аксессуарами с Android-телефона и попробуем ее решить. Для простоты будем работать только с IP-сетями, без Bluetooth.

Читать далее

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

Использование HCL-конфигурации на примере создания задач в Jira. #3

Время на прочтение7 мин
Количество просмотров836

Часть 1
Часть 2

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

К моему удивлению, рабочее решение родилось в течение часа ?. И для его реализации пришлось обратиться к PartialContent и BodySchema из "Способа 4".

Читать далее

Использование HCL-конфигурации на примере создания задач в Jira. #2

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

...

В первой части был показан упрощенный шаблон HCL. Начнем его усложнять и приближать к моим требованиям.

Читать далее

Использование HCL-конфигурации на примере создания задач в Jira. Часть 1

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

Вдохновившись статьей "Добавляем в Go-проект конфигурацию на языке Terraform" захотелось попробовать в каком-нибудь проекте описать конфигурацию на HCL.

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

Забегая вперед скажу, что поиски примеров и изучение парсера дались мне трудно. Кроме пары банальных примеров найти что-то вменяемое мне не удалось. Были мысли сделать на python, но для python парсер оказался совсем убогим, мог только перевести HCL в dict и никакой валидации и обработки выражений. Поэтому пришлось вернуться к затее с Go.

Итак, начнем с самого простого примера. Хочу описывать структуру создаваемой задачи в блоке create, а для обновления использовать блок update. Начнем пока с create.

Читать далее

Где искать баги фаззингом и откуда вообще появился этот метод

Время на прочтение8 мин
Количество просмотров7.4K
Подход фаззинг-тестирования родился еще в 80-х годах прошлого века. В некоторых языках он используется давно и плодотворно — соответственно, уже успел занять свою нишу. Сторонние фаззеры для Go были доступны и ранее, но в Go 1.18 появился стандартный. Мы в «Лаборатории Касперского» уже успели его пощупать и тестируем с его помощью довольно большой самостоятельный сервис.



Меня зовут Владимир Романько, я — Development Team Lead, и именно моя команда фаззит баги на Go. В этой статье я расскажу про историю фаззинга, про то, где и как искать баги, а также как помочь фаззинг-тестам эффективнее находить их в самых неожиданных местах. И покажу этот подход на примере обнаружения SQL-инъекций.
Читать дальше →

Golang-дайджест № 22 (1 – 31 октября  2022)

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

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены Go 1.19.3 и Go 1.18.8, twilio выпускает официальную библиотеку Go Helper, autostrada генератор кодовой базы, LearnGo большая коллекция примеров, упражнений

Читать далее

Устройство и полезные фишки Hashicorp Vault

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

Мое видение продукта Vault от Hashicorp.

Думаю многие слышали о такой системе хранения секретов Vault от Hashicorp. Кроме Vault Hashicorp выпустила еще много востребованных решений - Boundary, Terraform, которые предоставляют возможности управления PAM (Privileged Access Management) и IAS(Infrastructure As a Code) соответственно и многие другие.

Читать далее o Hashicorp Vault

Дженерики в Go: когда нужны и когда можно без них

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

Много раз при обсуждении преимуществ и прелестей Go, как языка разработки, мне приходилось слышать что-то вроде «у вас даже нет дженериков» или «вот завезут дженерики, тогда и поговорим». Так вот, дженерики завезли, давайте посмотрим что из этого вышло. 

Меня зовут Павел Грязнов. Я уже несколько лет пишу на Go в прод, хотя знакомство с языком начал с самых ранних версий. Видел как Garbage Collector мог сделать stop the world на пару секунд, страдал от отсутствия системы зависимостей и других проблем. В этой статье я расскажу о дженериках в Go. Начнём с самых основ, продолжим более продвинутыми примерами и закончим бенчмарками.

Чтобы лучше показать работу дженериков на контрасте, я сравню примеры их использования на двух языках — Python и Go. C Python последний раз работал слишком давно, поэтому вторую часть доклада мне помогли сделать коллеги из Evrone. Пойдем по порядку: разберем, для чего нужны дженерики и какие задачи они решают. Посмотрим, как выглядит мир без дженериков, на их синтаксис, ограничения, бенчмарки и немного затронем функциональное программирование.

Читать далее

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