Рубрика «Go» - 30

Дзен Go - 1

Оценивая свою работу, я недавно много размышлял о том, как мне писать хороший код. Учитывая, что никто не интересуется тем, как писать плохой код, возникает вопрос: как узнать, что ты написал на Go хороший код? Если есть какая-то шкала между хорошо и плохо, то как понять, какие части шкалы относятся к хорошему? Каковы его свойства, атрибуты, отличительные признаки, паттерны и идиомы?
Читать полностью »

Выступление на Go 1.10 Release Party @ Badoo

Артемий Рябинков (Avito): Graceful Shutdown в Go-сервисах и как подружить его с Kubernetes - 1

Артемий рассказал про подходы к безопасному завершению работы многопоточных программ на Go, в частности о том, как контролировать горутины и управлять ими. Объяснил, почему во время выкатки сервисов в Kubernetes пользователям может возвращаться множество ошибок. Чтобы подробнее раскрыть, почему так происходит, схематично показал, как работает Kubernetes внутри, и почему он не позволяет сделать выкатку сервисов бесшовной.

Артемий Рябинков (АР): – Не считаю себя хорошим спикером – всего во второй раз выступаю, но, надеюсь, вам понравится.

Мне интересно, кто здесь собрался? Кто считает себя гуру в Go? Тяните руку!.. Вам не будет интересно. Всем остальным должно быть интересно – новичков здесь больше, поэтому, думаю, доклад зайдёт.

Тема простая – Graceful Shutdown. Мы хотим, чтобы наши сервисы завершались аккуратно.

Артемий Рябинков (Avito): Graceful Shutdown в Go-сервисах и как подружить его с Kubernetes - 2

Меня зовут Артемий, я работаю в «Авито», в команде мессенджера. В «Авито» мы используем Kubernetes, пишем на Go и PHP. На Go сейчас более активно стали, больше народу начинает писать. Появляется Boilerplate Go-шного сервиса, который начинает включать много функционала. Функционал, которого у нас раньше не было, но он появился – это Graceful Shutdown, и о нём я хочу рассказать (и почему он не работает в «Кубернетес»).Читать полностью »

Kyiv Go Meetup May 2018:

Алексей Грачёв: Go Frontend - 1

Ведущий: – Всем привет! Спасибо, что вы здесь собрались! Сегодня у нас два официальных спикера – Лёша и Ваня. Будет ещё два, если у нас хватит времени. Первый спикер – Алексей Грачёв, он расскажет нам о GopherJS.

Алексей Грачёв (далее – АГ): – Я – Go-девелопер, и я пишу веб-сервисы на Go. Порой приходится сталкиваться с фронтендом, иногда приходится залазить туда ручками. Хочу рассказать о своём опыте и исследованиях Go на фронтенде.

Легенда такая: сначала поговорим, почему мы хотим запускать Go на фронтенде, потом поговорим, как это можно сделать. Есть два пути – Web Assembly и GopherJS. Посмотрим, в каком состоянии эти решения и что можно делать.Читать полностью »

И мышонок, и лягушка. Универсальный Компилятор - 1В серии про надежное программирование [1], [2] остался незаслуженно забытым Swift.
Я, честно говоря, просто не считал его кроссплатформенным, а работающим исключительно для macOS/iOS.
Тут случайно выяснилось, что Swift также поддерживается такой средой разработки, как RemObjects Elements.

Оказалось, у неё Универсальный Компилятор. Умеет компилировать программы на C#, Go, Java, Oxygene Object Pascal, Swift для: Android, Cocoa (MacOS, iOS, tvOS), JVM, Linux (x64, armv6, aarch64), .NET/.NET Core/Mono, Native Windows(x86/x64), WebAssembly.
Причем делает это практически в любых комбинациях язык -> целевая система! Например, можно написать программу на Java, которая будет использовать WPF для целевой платформы .NET, и это все есть в примерах, идущих в поставке.

Итак, представляю мини-заметку про RemObjects Elements, а заодно про надежность двух поддерживаемых в ней языков — Swift и Oxygene.

Рисунок с сайта radionetplus

Читать полностью »

You've run into a really hairy area of asm code.
My first suggestion is not try to call from assembler into Go. — Ian Lance Taylor

До тех пор, пока ваш ассемблерный код делает что-то простое, всё выглядит неплохо.

Как только у вас возникает задача вызвать из ассемблерного кода Go функцию, один из первых советов, который вам дадут: не делайте так.

Но что если вам это очень-очень нужно? В таком случае, прошу под кат.

Что нужно знать, если вы хотите вызывать Go функции из ассемблера - 1

Читать полностью »

Привет! Представляю вашему вниманию перевод статьи Functional options on steroids от автора Márk Sági-Kazár.

image

Функциональные опции — это парадигма в Go для чистых и расширяемых API. Она популяризирована Дейвом Чейни и Робом Пайком. Этот пост о практиках, которые появились вокруг шаблона с тех пор как он был впервые представлен.

Функциональные опции появились как способ создания хороших и чистых API с конфигурацией, включающей необязательные параметры. Есть много очевидных способов сделать это (конструктор, структура конфигурации, сеттеры и т. д.), но когда нужно передавать десятки опций они плохо читаются и не дают на выходе таких хороших API, как функциональные опции.Читать полностью »

На последнем Zabbix Summit 2019 вместе с выходом Zabbix 4.4 был анонсирован новый Zabbix Agent 2, ключевая фишка которого — возможность написания плагинов к нему на языке Go. И многие сразу стали спрашивать: а как же, собственно, эти плагины писать, как они устроены? Где взять документацию и примеры?

В этой статье я хочу дать ответы на эти и некоторые другие вопросы. Обо всём по порядку, но если вы из тех, кто сразу рвётся в бой, смело пропускайте вступительную часть и переходите к практике ⎝◔◞ ◔⎠

Итак...

Разработка плагинов для Zabbix Agent 2 - 1

Читать полностью »

image

На русскоязычных ресурсах трудно найти подходящую информацию, возможно этот материал позволит вам понять некоторые основы для создания многопользовательских игр и не только. Я планирую сделать серию статей по созданию 2.5D MMORPG, то бишь в изометрии, наш мир будет разделен на процедурно-генерируемые чанки, состоящие из тайтлов. Сервер будет написан на языке Golang, который как мне кажется отлично для этого подходит, клиентская часть будет на JavaScript с использованием фреймворка — Phaser.js

Создаем генерацию мира

И так в этой статье мы напишем генератор чанков для ММО на Голанг, мы не будем пока рассматривать Phaser. Для процедурной генерации нам потребуется шумовая функция, мы будем использовать Шум Перлина, рекомендую ознакомиться с данной статьей и переписать код на Го или взять мой вариант.
Читать полностью »

Предлагаю ознакомиться с расшифровкой доклада Виталия Левченко Go vs Python

Go — волшебное слово, решение всех проблем продакшна разом и одновременно негодная технология без эксепшнов. Истина посередине, поэтому поговорим о конкретных примерах:

  • asyncio vs горутины;
  • производительность узких мест;
  • лаконичность vs простота кода;
  • порог входа;
  • тулинг и паттерны поиска проблем и оптимизации производительности;
  • обслуживание в продакшне.

Читать полностью »

Привет! Мы вернулись из Казани, где проводили свой первый региональный митап для Go-разработчиков вместе с сообществом GolangKazan. Спасибо всем, кто пришёл послушать доклады и познакомиться — было здорово.

На митапе выступали спикеры из компаний «Дремучий лес», Авито, Ozon.ru и Marketplace Technologies. Они рассказывали про разбор и хранение большого XML-файла на маленькой VDS, language server gopls, CI/CD платформу drone.io и инструменты для миграции баз данных.

Под катом вас ждут видеозаписи всех докладов с таймкодами для удобной навигации, ссылки на репозитории спикеров на Гитхабе и фотоотчёт с митапа. А мы пойдём паковать рюкзаки ко второму казанскому митапу по фронтенду, который пройдёт уже 15 февраля.

Материалы с казанского Go-митапа: разбор XML, gopls, drone.io и работа с миграциями - 1

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js