Рубрика «Go»

Go: Хороший, плохой, злой - 1

У Go есть некоторые замечательные свойства, которым посвящён раздел «Хороший». Но когда речь заходит о применении этого языка не для создания API или сетевых серверов (для чего он и был разработан), а для реализации бизнес-логики, то я считаю Gо слишком неуклюжим и неудобным. Хотя даже в рамках сетевого программирования найдётся немало подводных камней как в архитектуре языка, так и в реализации, что делает Go опасным, несмотря на его кажущуюся простоту.

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

Как пользоваться интерфейсами в Go - 1

В свободное от основной работы время автор материала консультирует по Go и разбирает код. Естественно, что в ходе такой деятельности он читает много кода, написанного другими людьми. В последнее время у автора этой статьи сложилось впечатление (да именно впечатление, никакой статистики), что программеры стали чаще работать с интерфейсами в «стиле Java».

Этот пост содержит рекомендации автора материала об оптимальном использовании интерфейсов в Go, основанные на его опыте в написании кода.

В примерах этого поста мы будет пользоваться двумя пакетами animal и circus. Многие вещи в этом посте описывают работу с кодом, граничащим с регулярным применением пакетов.

Как делать не надо

Очень распространенное явление, которое я наблюдаю:

package animals 

type Animal interface {
	Speaks() string
}

// применение Animal
type Dog struct{}
func (a Dog) Speaks() string { return "woof" }

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

Содержание

  1. Blockchain на Go. Часть 1: Прототип
  2. Blockchain на Go. Часть 2: Proof-of-Work
  3. Blockchain на Go. Часть 3: Постоянная память и интерфейс командной строки
  4. Blockchain на Go. Часть 4: Транзакции, часть 1
  5. Blockchain на Go. Часть 5: Адреса
  6. Blockchain на Go. Часть 6: Транзакции, часть 2
  7. Blockchain на Go. Часть 7: Сеть

Вступление

В предыдущей статье мы начали реализацию транзакций, а также ознакомились с принципом ее работы: нет учетных записей, личные данные (например, имя или серия и номер паспорта) не требуются и не хранятся нигде в Bitcoin. Но все же должно быть что-то, что идентифицирует вас как владельца выходов транзакции (т. е. владельца монет, заблокированных на выходах). И это то, для чего нужны адреса в Bitcoin. До сих пор мы использовали произвольные строки в качестве адресов, теперь пришло время реализовать реальные адреса, таким образом, каким они реализованы в Bitcoin.
Читать полностью »

RTCP REMB: подкручиваем настройки видеозвонка в браузере - 1

Находчивые ребята из Tribe не только нашли свою нишу на стыке конференсинга и gamedev’а (что само по себе уже интересно), но и хорошо знают, что творится под капотом у WebRTC. Менеджер по продукту Тимотэ Ле Борнье периодически описывает техническую сторону своего детища; мы решили перевести его статью про нестандартную, но очень любопытную функциональность WebRTC. Уверены, вам будет интересно. Ну а пока вы читаете, мы продолжим готовить инсайд про наши обновленные видеоконференции… Но это уже другая история.
Читать полностью »

image

Привет! Весна пришла на планету, а вместе с ней и многочисленные митапы и конференции.

Мы продолжаем формировать IT-community в Казахстане и делиться опытом веб-разработки и использования передовых технологий. 21 апреля в г. Алматы проведем первую международную веб-конференцию Kolesa/Web 2018!

В программе 7 докладов от Колёса Крыша Маркет, Avito, Badoo, дискуссии в перерывах и море вкусных угощений.
Читать полностью »

Привет! Я пишу php-parser на Go, и самый часто задаваемый вопрос: “А зачем это нужно?”

PHP парсер это библиотека которая разбивает текст на лексемы, а затем по грамматическим правилам, описанным в форме Бэкуса-Наура, собирает AST(Абстрактное синтаксическое дерево) с которым уже можно работать в языке программирования.

Я собрал несколько примеров где это используется.Читать полностью »

Привет. Хочу пригласить бэкендеров на Backend United #1. Винегрет — митап, посвященный кросс-языковым решениям для разработки серверной части. Обсудим общие подходы и инструменты для разных языков. Вы услышите доклады от представителей Gett RnD и Avito. Встреча пройдет в среду, 18 апреля, в московском офисе Avito.

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

Backend United #1. Винегрет. Анонс - 1

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

Привет!

Меня зовут Марко, я работаю в Badoo в команде «Платформа». Не так давно на GopherCon Russia 2018 я рассказывал, как работать с координатами. Для тех, кто не любит смотреть видео (и всех интересующихся, конечно), публикую текстовый вариант своего доклада.

Знакомство с гео-библиотекой S2 от Google и примеры использования - 1

Введение

Сейчас у большинства людей в мире есть смартфон с постоянным доступом в Интернет. Если говорить в цифрах, то в 2018 году смартфон будет у почти 5 млрд людей, и 60% из них пользуются мобильным Интернетом.

Это огромные числа. Компаниям получать координаты пользователей стало легко и просто. Эти лёгкость и доступность породили (и продолжают порождать) огромное количество сервисов, основанных на координатах.

Всем нам известны компании типа Uber, игры, покорившие мир, такие как Ingress и Pokemon Go. Да что уж там, в любом банковском приложении есть возможность увидеть банкоматы или скидки поблизости.

Мы в Badoo также очень активно используем координаты, чтобы предоставлять своим пользователям лучший, актуальный и интересный для них сервис. Но о каком именно использовании идёт речь? Давайте посмотрим на примеры сервисов, которые у нас есть.
Читать полностью »

Всем привет! В марте в московском Технополисе прошла конференция, посвященная языку программирования Go — GopherCon Russia 2018. На ней прозвучали выступления от core-team — было круто услышать из первых уст о том, как нужно делать правильно. И конечно, не обошлось без докладов про микросервисы, опентрейсинг, работу с сетью в Go, создание клиентских библиотек и крутых инструментов.
Хотим сказать «спасибо» выступающим — за доклады и организаторам — за возможность пообщаться с живым Бредом Фитцпатриком и настоящей Эшли МакНамара. Под катом рассказываем о докладах, мастер-классах и конкурсе от Avito, а также разыгрываем немного Go-сувенирки.

Avito на GopherCon Russia 2018 - 1

Большинство фото мы взяли из отчета, выложенного на странице GopherCon Russia 2018 в Facebook.

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

Всем привет! Я работаю в Avito и занимаюсь разработкой инструментов для тестирования. Когда у нас стало много UI-тестов, мы столкнулись с проблемой масштабирования Selenium-серверов, и сейчас я расскажу, как мы ее решили.

И так как же все-таки выполнять много UI-тестов параллельно, используя Selenium Grid? К сожалению — никак.
Selenium Grid не способен выполнять большое количество задач параллельно.
Хотите зарегистрировать действительно большое количество нод? Что ж, попробуйте.
Хотите скорости? Её не будет — чем больше нод зарегистрировано на гриде, тем менее стабильно выполняется каждый тест. Как следствие — перезапуски.
Хотите отказоустойчивость на случай, если Grid перестал отвечать? Тоже нет: вы не можете запустить несколько реплик и поставить перед ними балансировщик.
Хотите обновить Grid без даунтайма и чтобы тесты, выполняющиеся в данный момент, не упали? Нет, это не про Selenium Grid.
Хотите не держать тысячи Selenium-ов разных конфигураций в памяти, а поднимать их по требованию? Не получится.
Хотите знать, как решить все эти проблемы? Тогда приглашаю вас прочитать эту статью.

Как выполнять много UI-тестов параллельно, используя Selenium Grid? - 1

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