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

Go *

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

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

Как мы зашифровали net/rpc

Время на прочтение2 мин
Количество просмотров6.9K
Мы проектировали агента для бекапов. Агент узнает у бекенда что бекапить и отправляет данные в хранилище. Злая врезка в канал и подмена адреса хранилища катастрофична.

HTTPS протестировали в первом подходе. Было ощущение, что можно сделать проще. Внутренние сервисы начинали масштабироваться по датацентрам. Хотелось сделать надежное решение для агента и внутренних сервисов. Без туннелей и HTTPS.

В итоге заменили HTTPS на net/rpc + crypto/tls.
Читать дальше →

Подборка библиотек для бекенда

Время на прочтение2 мин
Количество просмотров13K
Мы пишем свои бекенды на Go. Собираем метрики кода и балансируем запросы на шарды.
Шифруем RPC. Общаемся с Монгой. За год разработки сформировался стек проверенных библиотек.
Например, goagain сэкономил кучу времени и дебага после обрыва клиентов внутреннего RPC.

Делимся подборкой библиотек, проверенных и работающих в бою.
Читать дальше →

О плюсах и минусах Go

Время на прочтение16 мин
Количество просмотров52K
В данной статье я хочу поделиться опытом, полученным в ходе переписывания одного проекта с Perl на Go. В ней будет больше о минусах, чем о плюсах, ибо о достоинствах Go и так поведано немало, а вот о подводных камнях, ожидающих новых разработчиков, узнать зачастую, кроме как от собственных шишек — неоткуда. Пост никоим образом не преследует цели охаять язык Go, хотя, признаться, некоторые вещи я был бы рад не писать. Также в нем охвачено сравнительно небольшой срез всей платформы, в частности, не будет ничего о шаблонах, регекспах, распаковке/запаковке данных и подобного, часто используемого в веб-программировании, функционала.
Читать дальше →

Go + Heroku: развертывание web-приложения

Время на прочтение3 мин
Количество просмотров19K
Для размещения своего web-приложения в облаке уже существует не мало различных сервисов и хостингов, однако лишь немногие поддерживают работу с Go. Среди них можно обратить внимание на следующие:
— Google App Engine
— Heroku
Некоторые другие сервисы также предлагают поддержку Go, однако на платной основе, что не всегда выгодно для разработчика, например, если он проводит различные эксперименты, изучая особенности языка. Выбрав такие критерии выбора, как простоту развертывания, скорость и удобство, я остановился на Heroku.
Читать дальше →

Истории

Свой dynamic dns на Go с помощью Cloudflare

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

Зачем вообще это нужно?


Так получилось, что с работы мне довольно часто надо получить ssh доступ к своему домашнему компьютеру, а провайдер выдает белый, но динамически меняющийся ip адрес. Разумеется, выбор пал на динамический dns и я взял первого попавшегося бесплатного провайдера no-ip. Их демон прекрасно справлялся с задачей, меняя dns-запись на бесплатном домене третьего уровня от сервиса, а на моем домене был прописан CNAME на их домен.

Все это прекрасно работало до того момента, как я купил себе Zyxel Keenetic Giga. Он дружит с no-ip из коробки, но почему-то с моего домена теперь зайти не получалось. Эту проблему можно было бы решить покупкой статического ip у провайдера, записью в конфигурации ssh по прекрасному гайду от amarao, но так же не интересно! Итак, пришло время написать свой сервис!
Читать дальше →

[Перевод] Почему Go не так хорош

Время на прочтение16 мин
Количество просмотров56K
Всем привет! Недавно вышел перевод статьи о том, как TJ Holowaychuk прощался с Node.js, решив двигаться в сторону Go. В конце статьи была ссылка на посвящённый сравнению и критике языка Go пост Уилла Ягера, который просили перевести — собственно, с результатами перевода я и предлагаю ознакомиться. Я пытался более-менее сохранить как многословный стиль изложения, присущий автору, так и оригинальную разбивку на предложения и параграфы.
Буду очень рад любым конструктивным замечаниям и предложениям по переводу, опечаткам и/или оформлению, но очень прошу помнить, что точка зрения переводчика может не совпадать с позицией автора переведённой статьи.
Читать перевод

TJ Holowaychuk: Прощай Node.js

Время на прочтение5 мин
Количество просмотров54K
Примечание от переводчика:

Я решил перевести эту статью в основном из-за личности автора. TJ вложил очень много усилий в развитие Node.js и его инфраструктуры, он автор таких проектов как express, jade, mocha, stylus, автор 550 репозиториев на npm. Существуют также теория, что под этим именем скрывается группа людей.

Как бы то ни было, JavaScript и Go сообщества в ближайшие время ожидают изменения.

Покидая страну Node.js


Я сражался с Node.js достаточно долго, что бы перестать получать от этого удовольствие, это мое официальное прощание! И, что еще важнее, я ищу людей, которые смогут поддерживать мои проекты!

Node отлично справляется с некоторыми вещами, но, к сожалению, это не самый подходящий инструмент для того, что мне сейчас интересно. Я все еще планирую использовать его для сайтов, но если вы хотели бы заняться поддержкой одного из моих проектов, дайте мне знать. Просто оставьте комментарий с вашим именем на Github, ссылкой на npm и названием проекта. Как обычно я прошу не делать больших изменений в существующих API: создать новый проект будет проще.

Я также продолжу поддерживать Koa.

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

Go-дайджест: июнь 2014

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

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

Новости

  • Вышел Go 1.3 — Версия 1.3 была выпущена 18 июня, спустя шесть месяцев после версии 1.2, и она не содержит изменений в языке. Основная работа была произведена над реализацией, что обеспечило точную сборку мусора, рефакторинг тулчейна, результатом которого стала более быстрая сборка, особенно больших проектов, и значительное улучшение производительности. Прочитать о новом релизе подробнее можно здесь [ru], и еще подробнее — на официальном сайте [en] и в коротком обзоре [en].
  • Поддержка Android в Go 1.4 [en] — Скорее всего, в новой версии языка появится поддержка Android, причем биндинги для OpenGL и Java позволят писать игры на Go и использовать свой код на мобильной платформе.
  • Dropbox отдали в open source свои библиотеки для Go [en] — Как стало известно, хотя в Dropbox и продолжают разрабатывать большую часть функционала на Python, но критические для производительности компоненты уже мигрировали на Go. В связи с чем компания написала несколько своих «велосипедов», которые многим будут полезны. Выложенные компоненты предназначены для работы с кэшированием и Memcache, построением SQL-запросов, улучшенным выводом ошибок и улучшенным алгоритмом хэширования.
  • Состоялась встреча Golang Moscow — Видеозаписи докладов с московской встречи гоферов, состоявшейся 21 июня, можно посмотреть по ссылке.
  • На прошедшей Google I/O 2014 было несколько докладов про Golang — И их записи будут доступны в виде скринкастов несколько позже.
  • Cayley, открытая графовая база данных от Google, написанная на Go — Работает как надстройка над LevelDB или MongoDB. Есть обзор и видео.
  • juju — Крутой DevOps-инструмент для управления облаками от Ubuntu — теперь и на Github.
  • Релиз beego 1.3 — Новый релиз фреймворка для быстрой разработки веб-приложений и API на Go
  • Релиз отличного менеджера зависимостей gpm v1.2.3

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

Видеозаписи докладов конференции Golang Moscow

Время на прочтение1 мин
Количество просмотров7.1K
image

Сегодня на площадке Digital October состоялась встреча московского сообщества разработчиков на языке программирования Go.

Доклады на мероприятии были следующие:

  • Вячеслав Бахмутов из Яндекса рассказал про опыт использования Go в своей компании в облачной платформе Cocaine. «В Яндексе нет вакансий на gophers, берут питонистов, а потом говорят – будешь писать на Go» coocheenin
  • Артём Андреенко из Openstat (Spylog) рассказал про опыт использования Go в своей компании в режиме реального времени.
  • Александр Орловский из sports.ru рассказал про очереди сообщений (и в частности NSQ).

Видеозапись докладов доступна для всех интересующихся по ссылке:
digitaloctober.ru/ru/events/golang_moscow

Фотография взята из Твиттера @HornedKavu

Делаем многопользовательскую игрy на Go и WebSocket'ах

Время на прочтение9 мин
Количество просмотров49K
golang gopher
Продолжаем знакомство с языком программирования Go (golang). В прошлый раз мы посмотрели основные конструкции языка. В этой статье я хочу показать использование горутин и каналов. И, конечно, продемонстрировать все это на реальном приложении, в данноcм случае многопользовательской игре. Рассматривать будем не всю игру, а только ту часть бэкэнда, которая отвечает за сетевое взаимодействие между игроками посредством WebSoket.

Игра пошаговая, для двух игроков. Однако, описанные ниже приемы можно применять для создания других игр, от покера до стратегий.
Читать дальше →

Является ли Go языком ООП?

Время на прочтение9 мин
Количество просмотров75K
Object-oriented design is the roman numerals of computing.
— Rob Pike, автор Go.

image

Предлагаю вашему вниманию вольный перевод заметки «Is Go An Object Oriented Language?» за авторством Steve Francia, в которой автор наглядно рассказывает об особенностях использования парадигмы ООП в Go. Сразу предупреждаю, что из-за свойств оригинального материала большую часть текста пришлось переформулировать полностью, где-то добавить своего. Флажок перевода убирать не стал.
Читать дальше →

Разбор строки адреса (улица [дом]) средствами Golang и Postgis

Время на прочтение3 мин
Количество просмотров15K
Hi, %habrauser%.
Столкнулся я на днях с интересной задачей — пользователь вводит строку, которая может быть улицей с домом, просто улицей или вообще не улицей, а нам надо узнать имел ли он ввиду улицу с домом и соответствующее ему подсказать.
— Казалось бы чего проще — разбей строку по пробелу и наслаждайся — подумал Штирлиц
— А как насчет улицы Павла Корчагина — шепнула птица Обломинго
— Эм, ну номер дома же наверняка число — сказал Штирлиц
— Ага, корп1 — хорошее число
— Мдя, придется изобретать велосипед

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

DevConf 2014: Пишем функциональное, надежное и быстрое веб-приложение на Go

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

Дмитрий Вьюков, разработчик, Google работающий над ядром языка Go выступит докладчиком на DevConf 2014

Поддержите Дмитрия, чтоб доклад вошел в программу конференции DevConf 2014


В программе еще 2 доклада по Go:
  • Go на Google App Engine — просто, надёжно, быстро и недорого.
  • Go: аналитика Рунета в реальном времени
Предлагаем Вашему вниманию интервью с автором доклада
Читать дальше →

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

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Реверс-инжинеринг и написание бота для flash игры на Go

Время на прочтение19 мин
Количество просмотров9.8K
image В этой статье я расскажу, как декомпилировать flash-приложение с последующим извлечением алгоритма подписи запросов на игровой сервер. И как на основе этой информации написать игрового бота на Go.
Все началось с того, что я искал стратегию, чтобы поиграть со своего android смартфона. Нашел неплохую игру под названием «Throne rush». Потом оказалось, что есть и браузерный клиент, что делает удобнее некоторые действия. Но все же игровой процесс явно требовал автоматизации. Я воспользовался прекрасным инструментом JPEXS Free Flash Decompiler, о котором далее пойдет речь.
Читать дальше →

Как ускорить программу на Go

Время на прочтение2 мин
Количество просмотров17K
Увы, я не веду свой бложик, а результат недавнего «открытия» обнародовать в виде заметки считаю необходимым. Полагаю, найдутся люди, которым это весьма пригодится.

Go — язык, компилируемый в нативный код, а посему, очевидно, должен быть быстрым. Однако, к сожалению, на данный момент это далеко не всегда соответствует действительности.
В моём же случае, Go проиграл PHP (ну, на самом деле модулю PHP на C, однако результат всё равно удручающий). Если кратко, то при вычислении Whirlpool-хеша Go проигрывал в 3,5-7.5 раз!
Покажи решение

Еще один дайджест (теперь Go)

Время на прочтение4 мин
Количество просмотров19K
image Привет всем фанатам и интересующимся Go. Это 6-й выпуск дайджеста ссылок и новостей о набирающем популярность языке. Не сочтите за наглую попытку пропиарить ресурс, на котором я регулярно публикую новости все о том же Go. Все последующие выпуски «тулзовин и хреновин» будут публиковаться именно на 4gophers.com. Кроме того, по просьбам трудящихся, теперь есть подписка на рассылку.

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

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

Пишем Penguin Daycare Simulator на Go (Google App Engine) и Lua (Corona SDK)

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

1. Введение


Данный проект представляет собой простой пример использования Google App Engine в мобильном приложении.

Cерверная часть предоставляет список пингвинов в формате JSON. Мобильный клиент запрашивает этот список по HTTP или HTTPS.
Также серверная часть ведёт запись определённых событий в базу данных, а именно количество посещений конкретного пингвина и количество нажатий кнопок: скормить рыбку и почесать животик.
У каждого пингвина есть поля описания Name, Bio и поля счётчиков.
Читай далее, если тебе не безразличны пингвины...

Язык Go для начинающих

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

Цель этой статьи — рассказать о языке программирования Go (Golang) тем разработчикам, которые смотрят в сторону этого языка, но еще не решились взяться за его изучение. Рассказ будет вестись на примере реального приложения, которое представляет из себя RESTful API веб-сервис.
Читать дальше →

Используем nginx, docker, skydns и skydock для обновления кода на лету (zero-downtime deployment)

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

Инструменты, которые мы будем использовать


Docker


Docker — простая и элегантная библиотека для создания легковесных изолированных друг от друга виртуальных контейнеров, в которых можно исполнять любой код. Совершенно не требователен к ресурсам, минимальный overhead.

Собрав контейнер один раз, его можно многократно использовать.

Простой пример — это БД Redis. Если нам необходимо несколько серверов Redis на одном компьютере, при обычном подходе нам придется изменять конфигурационные файлы в /etc/redis и менять файлы в /etc/init.d. Можно написать bash скрипт, но это не делает процесс легче.
Читать дальше →

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

Работа

Go разработчик
81 вакансия