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

Go *

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

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

Анонс книги Брайана Кернигана «The Go Programming Language»

Время на прочтение2 мин
Количество просмотров19K
На Амазоне анонсировали новую книгу Брайана Кернигана и Алана Донована с ёмким названием «The Go Programming Language». Кто не в курсе — Брайан Керниган это один из соавторов Unix, автор cron-а и автор одной из самых культовых книг в мире программирования "The C Programming Language", написанную вместе с Деннисом Ричи в 1978-м.

Книга доступна для предзаказа, релиз бумажной версии запланирован на 27 августа 2015.


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии11

Компилятор Go переписан на Go

Время на прочтение2 мин
Количество просмотров44K
Вот такими словами начинается комментарий к свежему коммиту в master-ветку Go:
This change deletes the C implementations of the Go compiler and assembler from the master branch.
(«Эти изменения удаляют C-реализацию компилятора и ассемблера Go из главной ветки»)

Эти слова — труд почти года работы команды Go по переписыванию компилятора с C на Go. Это был на 90% автоматический процесс. Теперь Go компилирует сам себя.

Зачем это было нужно и чуть больше подробностей под катом.


Картинка: Твиттер Russ Cox
Читать дальше →
Всего голосов 78: ↑69 и ↓9+60
Комментарии112

Уменьшение накладных расходов для утилит на golang

Время на прочтение3 мин
Количество просмотров11K
Цель работы — сократить накладные расходы на хранение большого количества утилит, написанных на golang.

Один из побочных эффектов статической компиляции golang — относительно большие накладные расходы на хранение рантайма и всех используемых библиотек внутри каждого исполняемого файла. Например небольшая утилитка, которая только и делает что обращается через сеть к серверу и выполняет простые полученные команды — весит 5.5Мб.
Когда такая утилитка одна — это в современных условиях это еще не страшно. Когда утилиты накапливаются и их становится уже несколько десятков или сотен — чисто по-человечески становится жалко сотен мегабайтов, утекающих «вникуда».

Для решения этой проблемы я написал библиотеку multiex, которой и делюсь с сообществом. С её помощью можно объединить несколько программ в один исполняемый файл с минимальными изменениями внутри кода программ и без изменения внешнего поведения. Мысль была взята у busybox — все программы компилируются в один файл, а выполняемый код выбирается при запуске, исходя из имени запускаемого файла.

Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии52

Пишем симулятор медленных соединений на Go

Время на прочтение6 мин
Количество просмотров16K
В этой статье я хочу показать, как просто в Go можно делать достаточно сложные вещи, и какую мощь в себе несут интерфейсы. Речь пойдет о симуляции медленного соединения — но, в отличие от популярных решений в виде правил для iptables, мы реализуем это на стороне кода — так, чтобы можно было легко использовать, к примеру, в тестах.

Ничего сложного тут не будет, и ради большей наглядности я записал ascii-анимации (с помощью сервиса asciinema), но, надеюсь, будет познавательно.


Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии7

Истории

Чат вконтакта в качестве терминала

Время на прочтение3 мин
Количество просмотров24K
Вдохновлённый постом «Простой диспетчер задач с веб-интерфейсом, написанный на языке GO для Unix-систем включая Android», языком Go и утилитой simple status, я решил написать в качестве забавного эксперимента чат-бота для социальной сети Vkontakte со схожим функционалом.

Почему выбор пал на чат-бота и социальную сеть? Кроме очевидного just for fun имеются и практические выкладки:
  • Не нужны дополнительные телодвижения для доступа к приложению, запущенном на компьютере с динамическим ip или находящимся за роутером.
  • Доступ к Вконтактике есть практически везде – достаточно иметь при себе телефон с доступом в интернет.
  • Вопрос о реализации аутентификации на уровне конечного приложения практически отпадает.

Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии1

Централизованные логи для приложений с помощью связки heka+elasticsearch+kibana

Время на прочтение7 мин
Количество просмотров17K
В статье описана настройка центрального логирования для разных типов приложений (Python, Java (java.util.logging), Go, bash) с помощью довольно нового проекта Heka.

Heka разрабатывается в Mozilla и написана на Go. Именно поэтому я использую его вместо logstash, который имеет сходные возможности.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии7

Operation Go — игра-боевик для Go-программистов

Время на прочтение1 мин
Количество просмотров29K
Сегодня появилась в сети игра для программистов — Operation Go. На мой взгляд, это очень качественно сделанная игра, в которой нужно проходить миссии, понимая, разбирая и дописывая код на Go. Всё это с сюжетом, развитием и фабулой, хорошим саундтреком, интересно и затягивающе. Вы выступаете в роли агента секретной службы, которому регулярно приходится сталкиваться с решением проблем при помощи кода.

Очень круто сделано, правда. Попробуйте и будьте готовы открыть для себя некоторые новые аспекты Go или стандартной библиотеки. В некоторых уровнях нужна математическая соображалка. Ну и английский, само собой.

Я бы такие игрушки на собеседованиях ставил кандидатам и смотрел, как человек решает.



Анонс на reddit: www.reddit.com/r/golang/comments/2veiht/operation_go_a_routine_mission
Автор — Andy Brewer
Всего голосов 35: ↑33 и ↓2+31
Комментарии48

Всё, что вы хотели знать про GOPATH и GOROOT

Время на прочтение3 мин
Количество просмотров183K
Несмотря на то, что Go считается одним из самых легких для входа языков, приходится регулярно слышать: «как-то все непонятно, какие-то переменные GOROOT и GOPATH нужно устанавливать». И хотя тема полностью раскрыта на официальном сайте Go, не будет лишним объяснить совсем простым языком.

TL;DR


Теперь чуть подробнее:
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии22

Кросс-компиляция в Go

Время на прочтение9 мин
Количество просмотров109K
Несмотря на то, что кроссплатформенность стала фактически стандартным атрибутом практически всех современных языков и библиотек, создавать по-настоящему кроссплатформенный продукт, всё равно было непросто. Компилируемые языки и сопутствующие библиотеки требовали сложной установки и настройки среды сборки и библиотек, а интерпретируемые — обязывали иметь или деплоить в составе необходимую версию интерпретатора. Есть немало проектов, пытающихся сделать этот процесс чуть более простым, но зачастую единственным решением оставалось устанавливать отдельный сервер и компилировать нативно.

В Go кросс-платформенность вышла на тот уровень, когда впервые можно смело отказаться от compile farms, специально настроенных dev-сред, виртуальных машин для сборки или chroot/docker-dev решений. И это ещё один серьезный game-changer, подробнее о котором я и хочу рассказать и показать на примерах
Поехали.


Читать дальше →
Всего голосов 51: ↑50 и ↓1+49
Комментарии13

Конференция dotGo 2014 в Париже

Время на прочтение3 мин
Количество просмотров4.2K
Лучше поздно, чем никогда. В октябре 2014 в Париже прошла первая в Европе конференция посвященная целиком языку Go. Организаторами стали ребята из dotConference, которые черпают вдохновение от TED-овских конференций и позаимствовали некоторые моменты для всех своих dot-конференций. Получается у них, надо сказать, здорово. Видео-материалы конференции, а также немного личных впечатлений читайте ниже.


Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии3

Главное преимущество Go

Время на прочтение5 мин
Количество просмотров39K
Если спросить среднестатического Go-девелопера, какие есть преимущества у Go — скорее всего вы услышите уже знакомый перечень плюшек. О них уже написано немало, но очень часто обходится стороной другая вещь, гораздо более интересная — долгосрочный эффект тех или иных решений дизайна языка. Я хочу раскрыть эту тему чуть шире, которая на самом деле актуальна не только для Go. Но в данной статье я возьму для примера два аспекта — способ обработки ошибок в Go и систему тестирования и постараюсь показать, как дизайн языка вынуждает людей писать более качественный код.


Читать дальше →
Всего голосов 94: ↑70 и ↓24+46
Комментарии207

«Велосипед» проверки версии сайта

Время на прочтение3 мин
Количество просмотров4.6K
Всем добрый день.

В связи с растущей нагрузкой на один из сайт компании, в которой я числюсь системным администратором, было принято решение воспользоваться балансировщиком Keepalived. Останавливаться на этом продукте не буду, опишу возникшую проблему.

Раскладка происходит из gitlaba. Для того, чтобы отдел тестирование был в курсе того, что он вообще тестирует, давным давно на каждый отдельный сайт был добавлен файл. Обычный txt файл, который генерировался при раскладке. В себе этот файл содержал информацию о текущей версии (бранч, ревизию, хэш последнего коммита и список последних 300 коммитов.) То есть благодаря этому файлу, тестировщик знает, что именно он тестирует. Выглядит это примерно так:


Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии8

Docker в продакшене — чему мы научились, запустив более 300 миллионов контейнеров

Время на прочтение7 мин
Количество просмотров70K
Docker в продакшене на Iron.io


Ранее в этом году (прим. 2014 г.), мы приняли решение запускать каждую задачу на IronWorker внутри своего собственного Docker контейнера. С тех пор мы запустили более 300 000 000 программ внутри собственных Docker контейнеров в облаке.

После нескольких месяцев использования, мы хотели бы поделиться с сообществом некоторыми из проблем, с которыми мы столкнулись в построении инфраструктуры, основанной на Docker'e, как мы преодолели их, и почему это стоило того.
Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии10

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

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Спортивный телеком: «СМОТРИ+»

Время на прочтение12 мин
Количество просмотров9.8K
«Мы продолжаем наш репортаж!»
Николай Николаевич Озеров


Легендарный телекомментатор Николай Озеров, которому в этом году исполнилось бы 92 года, превратил спортивные трансляции в шоу, привлекающие к экранам телевизоров миллионы любителей спорта. Технологии с тех пор ушли достаточно далеко, но суть остается прежней – не имея возможности в силу различных обстоятельств лично присутствовать на интересном спортивном событии, можно следить за оными посредством телекоммуникационных технологий.

Сегодня компания «МегаФон» пошла навстречу любителям спорта и заядлым болельщикам, выпустив специальное телекоммуникационное приложение «СМОТРИ+».

Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии7

Простой диспетчер задач с веб-интерфейсом, на GO для Unix-систем, включая Android

Время на прочтение4 мин
Количество просмотров31K
Простой диспетчер задач с веб-интерфейсом, написанный на языке GO для Unix-систем включая Android.

Читать дальше →
Всего голосов 55: ↑44 и ↓11+33
Комментарии5

Другая сторона Go: рисуем анализируя данные

Время на прочтение5 мин
Количество просмотров18K
Go — универсальный язык программирования который отлично подходит для фоновых задач, но иногда вам может понадобится генерировать изображения опираясь на входящие данные. Go отлично работает с созданием визуальных объектов. В этом посте описан один из методов создания изображений (в частности векторной графики) на основе данных с помощью пакета SVGo.

Библиотека SVGo занимется одной единственной задачей: генерирует SVG и отдает его в io.Writer. I\O пакет в Go позволяет вам выводить результаты используя необходимый интерфейс (стандартный вывод, файлы, сетевые соеденения, веб сервер).

Для SVGo первостепенны высокоуровневые объекты такие как круги, прямоугольники, линии, полигоны и кривые. Стили и атрибуты являются второстепенными и применяются по мере необходимости.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии9

Golang и ООП

Время на прочтение5 мин
Количество просмотров133K
Если вы еще не пресытились постами в блогосфере на тему «является ли Go ООП-языком», то вот вам еще один. И краткий ответ — «да, но это не важно».
Впрочем, я постараюсь не зацикливаться на терминологии и академических определениях, а сделать акцент на том, как мы делаем это в Go.


Читать дальше →
Всего голосов 63: ↑56 и ↓7+49
Комментарии65

Использование Go в правительстве

Время на прочтение3 мин
Количество просмотров15K
Когда UK Government Digital Service (Служба Электронного Правительства Великобритании) взялась за GOV.UK код был в основном написан на Ruby. С тех пор мы попробовали в деле несколько языков включая Java, Clojure, Scala, Python и Javascript. В последнее время мы переключились на Go для ряда проектов.
Ниже короткий отчет о полученном опыте. Как мы использовали Go и что на наш взгляд полезно знать другим разработчикам помышляющим о внедрении языка в своем окружении. Если вас интересуют подробности, то более детальную информацию мы публиковали в блоге — router (мой перевод), crawler и CDN acceptance test.
Читать дальше →
Всего голосов 53: ↑32 и ↓21+11
Комментарии22

Go исполнилось 5 лет

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

В своем посте, посвященному праздничному событию, один из создателей языка Andrew Gerrand вспоминает то, как прошли эти годы и как все было пять лет назад. Вот так тогда выглядел официальный сайт; сами авторы Go называли его «системным языком», каждую строчку кода надо было заканчивать точкой с запятой, для сборки своих приложений приходилось писать мейкфайлы — и будущее языка было покрыто мраком. Сразу после релиза «язык от Google» привлек широкое внимание, после чего основная волна быстро схлынула, не увидев в языке ничего нового. Те немногие, кто увидел в языке будущее, сформировали «ядро» команды его разработчиков, и вышедшая в 2012 году первая версия языка была серьезным достижением, благодаря которому на сегодняшний день в развитии языка и экосистемы вокруг него решили принять участие сотни программистов.

Помимо «праздничного» поста, интерес представляет опубликованная расшифровка недавнего выступления Брэда Фицпатрика про настоящее и будущее Go. Официально Брэд — создатель memcached, OpenID и LiveJournal — занимается разработкой Camlistore, но по ходу дела ему приходится часто заглядывать в исходники Go и добавлять необходимый для Camlistore функционал в библиотеки языка или фиксить баги.
Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии41

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

Работа

Go разработчик
114 вакансий