Скорее всего, вы уже слышали о языке программирования Go, популярность его постоянно растет, что вполне обоснованно. Этот язык простой, быстрый и опирается на прекрасное сообщество. Один из самых любопытных аспектов языка — это модель многопоточного программирования. Примитивы, положенные в ее основу, позволяют создавать многопоточные программы легко и просто. Эта статья предназначена для тех, кто хочет изучить эти примитивы: горутины и каналы. И, через иллюстрации, я покажу, как с ними работать. Надеюсь, это будет для вас хорошим подспорьем в дальнейшем изучении.
Читать полностью »
Рубрика «Go» - 36
Изучаем многопоточное программирование в Go по картинкам
2018-06-03 в 13:28, admin, рубрики: Go, golang, параллельное программирование, ПрограммированиеМои шаги, успехи и ошибки в мире геймдева на примере игрового бота в Telegram
2018-05-31 в 9:08, admin, рубрики: Go, telegram, боты для социальных сетей, игры, Игры и игровые приставки, разработка игрВсем привет! Меня зовут Максим и я хочу рассказать вам историю создания проекта Wasteland Wars. Надеюсь, вам будет интересно, и, возможно, что-нибудь из этого сможет помочь вам избежать моих ошибок.
Читать полностью »
Как я год строил расширениe для браузера которое читает статьи голосом (с синхронизацией в подкаст)
2018-05-29 в 12:28, admin, рубрики: Amazon Web Services, AWS, dynamodb, Go, python, text-to-speech, WebExtensions, подкасты, Расширения для браузеровНе один раз я пробовал использовать сторонние API для получения голоса из текста который мне интересно прочитать — можно переключить чтение на уши когда глаза устали, или слушать во время комьюта. Знаю я такой не один, даже люди далекие от айти бывает загружают куда-то текст и скачивают mp3. И подкасты/аудиокниги становятся все популярнее, и голосовые интерфейсы. Очевидно что аудитория есть, топовые экстеншены в маркете Хрома на эту тематику имеют сотни тысяч пользователей. Но голоса от Амазона обычно у них нет (лучший из доступных, лучше нового от Гугла), а где есть нет чего-то другого, например возможности слушать в экстеншене — а не только добавлять в свой подкаст. Предложил идею проекта внутри компании — был получен апрув — пошла разработка.
Читать полностью »
Внедрение зависимостей в Go
2018-05-29 в 7:34, admin, рубрики: dependency injection, funcorp, Go, golang, java, uber, Блог компании FunCorp, Программирование, разработка мобильных приложенийНедавно я создал небольшой проект на языке Go. После нескольких лет работы с Java я был сильно удивлён тем, как вяло внедрение зависимостей (Dependency Injection, DI) применяется в экосистеме Go. Для своего проекта я решил использовать библиотеку dig от компании Uber, и она меня по-настоящему впечатлила.
Я обнаружил, что внедрение зависимостей позволяет решить множество проблем, с которыми я сталкивался в работе над Go-приложениями: злоупотребление функцией init
и глобальными переменными, чрезмерная сложность настройки приложений и др.
В этой статье я расскажу об основах внедрения зависимостей, а также покажу пример приложения до и после применения этого механизма (посредством библиотеки dig
).Читать полностью »
В процессе работы над небольшими проектами часто возникает необходимость в кешировании данных и бывает так, что нет возможности использовать Redis или Memcache. В таких ситуациях подойдет простой и достаточно эффективный способ без использования дополнительных инструментов — кеширование в оперативной памяти.
В этой статье я расскажу, с чего начать, чтобы самостоятельно написать менеджер кеша в памяти на Go.
Вся программа Backend Conf: от микросервисов до бесконечных данных
2018-05-15 в 13:50, admin, рубрики: backendconf, Go, php, python, Блог компании Конференции Олега Бунина (Онтико), конференция, Разработка веб-сайтовПоследнее время, на фестивале РИТ++ докладов по серверному программированию меньше, чем по клиентскому. Связано ли это с популярностью noBackend подходов, общим смещением фокуса в сторону фронтенда, или просто традициями конференции, сказать трудно.
Тем не менее, в программе Backend Conf целых 25 докладов, и мы решили составить полный гид по ним всем. Потому что это все равно два потока, и все равно придется выбирать, куда податься.
Go: ускоряем выборку больших таблиц из MySQL
2018-05-14 в 8:26, admin, рубрики: Go, golang, highload, mysql, высокая производительностьЯ использую Go для написания рекламной сети вот уже почти год. Разработку веду на сервере Intel i7-7700, 16Gb RAM, 256Gb SSD. И в скрипте который выполняется раз в сутки появилась задача выбрать все показы за прошедшие сутки и пересчитать на этой основе статистику за день сразу по нескольким объектам (сайт, кампания, баннер).
По идиомам Go делается всё достаточно тривиально:
Читать полностью »
Пишем мессенджер с открытым исходным кодом
2018-05-13 в 2:53, admin, рубрики: android, Go, golang, messenger, open source, ReactJS, Системы обмена сообщениями, чатЗачем пишем?
Давным-давно в одной далекой стране была компания America Online. И был у нее удивительный частный Интернет за заборчиком, где вместо URL-ов были "keywords": что-то среднее между адресом веб страницы и купленным ключевым словом в рекламе. Компании боролись за интересные ключевые слова, как сейчас борются за домены, а реклама выглядела так: "посетите нас во всемирной сети по адресу www.example.com, или наберите AOL Keyword: 'banking'".
История имеет свойство повторяться. Сейчас роль Америки Онлайн играют основные мессенджеры: все они за заборчиками, несовместимы друг с другом, все изобретают свои keywords, желают схватить пользователя и уже никогда не отпускать. Компании не заинтересованы в открытости: более крупные игроки не желают делиться пользователями с более мелкими и уж тем более становиться открытыми. В результате невозможно послать сообщение даже из WhatsApp в Facebook Messenger, несмотря на то, что оба принадлежат одной компании. Да и пользователи ценят надежность и удобство выше абстрактной открытости, хотя многих раздражает, что часть друзей, например, в Telegram, часть в WhatsApp, а родители в Skype.
А вот роль открытого интернета, к сожалению, сегодня не играет никто. Ситуацию хочется изменить. Если XMPP не справился, может быть кто-то другой сможет? И тут рассказ про Tinode.
Руководство по ассемблеру Go
2018-05-11 в 7:01, admin, рубрики: Go, golang, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, отладка
Прежде чем заняться реализацией runtime и изучением стандартной библиотеки, необходимо освоить абстрактный ассемблер Go. Надеюсь, это руководство поможет вам быстро овладеть нужными знаниями.
Читать полностью »
Версионирование в Golang с vgo
В Go есть простая стандартная команда go get
, которая скачивает зависимости. Эта команда устанавливает последнюю версию, из master
ветки репозитория.
Это отлично подходит для небольших одиночных проектов. Но что если имеется два проекта которые зависят от разных версий одной сторонней библиотеки?
Versioned Go Command (vgo)
В Golang
версии 1.10 нам предоставили Versioned Go Command сокращенно vgo
. Эта консольная команда позволяет загружать и импортировать необходимые версии библиотек.
Проект находится в статусе активной разработки и для продакшена рекомендуют пока использовать dep
.