<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Ural penguins - Сообщения с тегом Go</title>
  <id>http://uralbash.ru/blog/tag/go/atom.xml</id>
  <updated>2015-08-20T10:59:00Z</updated>
  <link href="http://uralbash.ru/" />
  <link href="http://uralbash.ru/blog/tag/go/atom.xml" rel="self" />
  <generator uri="http://ablog.readthedocs.org" version="0.8.4">ABlog</generator>
  <entry xml:base="http://uralbash.ru/blog/tag/go/atom.xml">
    <title type="text">Обновление до Go1.5</title>
    <id>http://uralbash.ru/articles/2015/go1.5/</id>
    <updated>2015-08-20T10:59:00Z</updated>
    <published>2015-08-20T10:59:00Z</published>
    <link href="http://uralbash.ru/articles/2015/go1.5/" />
    <author>
      <name>Uralbash</name>
    </author>
    <content type="html">&lt;div class=&quot;section&quot; id=&quot;go1-5&quot;&gt;

&lt;p&gt;Для управления версиями я пользуюсь &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/moovweb/gvm&quot;&gt;moovweb/gvm&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;gvm&quot;&gt;
&lt;h2&gt;Установка gvm&lt;/h2&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ bash &amp;lt; &amp;lt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;go-1-4&quot;&gt;
&lt;h2&gt;Установка Go 1.4&lt;/h2&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ gvm install go1.4
$ gvm use go1.4
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;go-1-5&quot;&gt;
&lt;h2&gt;Установка Go 1.5&lt;/h2&gt;
&lt;p&gt;Теперь компилим &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Go&lt;/span&gt;&lt;/code&gt; при помощи &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Go&lt;/span&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ &lt;span class=&quot;nv&quot;&gt;GOROOT_BOOTSTRAP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;~/.gvm/gos/go1.4 gvm install go1.5
Installing go1.5...
 + Compiling...
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Выберем новую версию:&lt;/p&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ gvm use go1.5
Now using version go1.5
$ go version
go version go1.5 linux/amd64
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Убедимся в ее наличии:&lt;/p&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ gvm list --all

gvm gos &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;installed&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

   go1.4
&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&amp;gt; go1.5
   system
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://uralbash.ru/blog/tag/go/atom.xml">
    <title type="text">Локальный Continuous Integration сервер</title>
    <id>http://uralbash.ru/articles/2014/ci/</id>
    <updated>2014-04-13T04:40:00Z</updated>
    <published>2014-04-13T04:40:00Z</published>
    <link href="http://uralbash.ru/articles/2014/ci/" />
    <author>
      <name>Uralbash</name>
    </author>
    <content type="html">&lt;div class=&quot;section&quot; id=&quot;continuous-integration&quot;&gt;

&lt;img alt=&quot;_static/2014/ci1.jpg&quot; class=&quot;align-center&quot; src=&quot;_static/2014/ci1.jpg&quot; style=&quot;width: 400px;&quot; /&gt;
&lt;p&gt;Идея непрерывной интеграции заключается в том, что при любом изменении проекта
он пересобирается в условиях приближенных к реальной эксплуатации и каждый раз
запускает тесты. Это позволяет моментально отловить баги и исправить их не
отходя от кассы, пока ещё помнишь что понаписал.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;Принцип работы у всех примерно один:&lt;/div&gt;&lt;/blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;скачать код&lt;/li&gt;
&lt;li&gt;создать окружение&lt;/li&gt;
&lt;li&gt;установить (собрать) код&lt;/li&gt;
&lt;li&gt;запустить и протестировать&lt;/li&gt;
&lt;li&gt;отправить уведомление&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это можно сделать самостоятельно, например при помощи &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;fabric&lt;/span&gt;&lt;/code&gt;, &lt;a class=&quot;reference external&quot; href=&quot;https://www.freebsd.org/cgi/man.cgi?query=cron&quot;&gt;cron&lt;/a&gt;,
&lt;a class=&quot;reference external&quot; href=&quot;https://www.freebsd.org/cgi/man.cgi?query=chroot&quot;&gt;chroot&lt;/a&gt; или &lt;a class=&quot;reference external&quot; href=&quot;http://docker.io/&quot;&gt;docker&lt;/a&gt; или при помощи готовых &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;CI&lt;/span&gt;&lt;/code&gt; серверов:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://jenkins-ci.org/&quot;&gt;jenkins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://buildbot.net/&quot;&gt;buildbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://travis-ci.org/&quot;&gt;travis-ci&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://stridercd.com/&quot;&gt;StriderCD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/drone/drone&quot;&gt;drone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Облачные &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;CI&lt;/span&gt;&lt;/code&gt; сервера:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://travis-ci.org/&quot;&gt;https://travis-ci.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://drone.io&quot;&gt;https://drone.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Облачный &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;CI&lt;/span&gt;&lt;/code&gt; отлично подойдет для &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;OpenSource&lt;/span&gt;&lt;/code&gt; проектов, а остальное можно
тестировать на локальном сервере.&lt;/p&gt;
&lt;p&gt;Посмотрим как это работает на примере python + pyramid приложения.&lt;/p&gt;
&lt;img alt=&quot;_static/2014/ci2.JPG&quot; class=&quot;align-center&quot; src=&quot;_static/2014/ci2.JPG&quot; style=&quot;width: 400px;&quot; /&gt;
&lt;div class=&quot;section&quot; id=&quot;id1&quot;&gt;
&lt;h2&gt;Начнём с Travis-ci&lt;/h2&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;https://travis-ci.org/&quot;&gt;&lt;img alt=&quot;_static/2014/travis.png&quot; class=&quot;align-left&quot; src=&quot;_static/2014/travis.png&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Следит за вашими репозитариями на &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/&quot;&gt;github&lt;/a&gt;, выкачивает при каждом коммите,
собирает окружение в индивидуальном контейнере каждый раз, имеет простой
конфиг. Работает только с &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/&quot;&gt;github&lt;/a&gt;, закрытые репы за деньги.&lt;/p&gt;
&lt;br clear=&quot;both&quot;/&gt;&lt;p&gt;Авторизация через гитхаб аккаунт, дальше указываем что будем тестировать&lt;/p&gt;
&lt;img alt=&quot;_static/2014/travis1.png&quot; src=&quot;_static/2014/travis1.png&quot; /&gt;
&lt;p&gt;Теперь положим в корень репы на гитхабе файл с настройками &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;.travis.yml&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;img alt=&quot;_static/2014/travis3.png&quot; src=&quot;_static/2014/travis3.png&quot; /&gt;
&lt;p&gt;В этом файле находятся инструкции, какое окружение нужно для вашего проекта,
как его собирать, запускать тесты и куда слать уведомления.&lt;/p&gt;
&lt;div class=&quot;literal-block-wrapper docutils container&quot; id=&quot;id3&quot;&gt;
&lt;div class=&quot;code-block-caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;.travis.yml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;highlight-yaml&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;python&lt;/span&gt;

&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;notifications&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;sacrud@uralbash.ru&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;arkadiy@bk.ru&amp;quot;&lt;/span&gt;

&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;python&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;1. &amp;quot;2.7&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;2. &amp;quot;2.6&amp;quot;&lt;/span&gt;

&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;1. pip install nose coverage coveralls&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;2. pip install pyramid pyramid_jinja2 pyramid_beaker&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;3. pip install -r requirements.txt&lt;/span&gt;

&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;1. nosetests --with-coverage --cover-package sacrud --cover-erase --with-doctest&lt;/span&gt;

&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;after_success&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;coveralls&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Здесь я думаю и так все понятно. &lt;a class=&quot;reference external&quot; href=&quot;https://pypi.python.org/pypi/coveralls&quot;&gt;coveralls&lt;/a&gt; нужен для сервиса
&lt;a class=&quot;reference external&quot; href=&quot;https://coveralls.io/&quot;&gt;https://coveralls.io/&lt;/a&gt; (про него ниже).&lt;/p&gt;
&lt;p&gt;После каждого коммита создается задание в трависе которое заканчивается
примерно таким выводом &lt;a class=&quot;reference external&quot; href=&quot;https://travis-ci.org/ITCase/sacrud/jobs/22811094&quot;&gt;https://travis-ci.org/ITCase/sacrud/jobs/22811094&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Иногда СЕОшники всё портят как здесь
&lt;a class=&quot;reference external&quot; href=&quot;https://travis-ci.org/ITCase/sacrud/jobs/22688250&quot;&gt;https://travis-ci.org/ITCase/sacrud/jobs/22688250&lt;/a&gt; т.к. не умеют запускать
тесты, но благодаря &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;CI&lt;/span&gt;&lt;/code&gt; эти проблемы сразу обнаруживаются.
Более сложный конфиг с установкой postgres
&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/ITCase/pyramid_sacrud_example/blob/master/.travis.yml&quot;&gt;https://github.com/ITCase/pyramid_sacrud_example/blob/master/.travis.yml&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;drone-io&quot;&gt;
&lt;h2&gt;drone.io&lt;/h2&gt;
&lt;img alt=&quot;_static/2014/drone.io.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/drone.io.png&quot; /&gt;
&lt;p&gt;&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Drone&lt;/span&gt;&lt;/code&gt; похож на &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;travis-ci&lt;/span&gt;&lt;/code&gt; но он дешевле, умеет &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;bitbucket&lt;/span&gt;&lt;/code&gt; и исходный
код &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/drone/drone&quot;&gt;https://github.com/drone/drone&lt;/a&gt;. Очень удобно &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;OpenSource&lt;/span&gt;&lt;/code&gt; в облаке,
приватные репы на локальном сервере и все это имеет одинаковый конфиг. Конфиг
&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;.drone.yml&lt;/span&gt;&lt;/code&gt;, формат очень похож на &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;travis&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;literal-block-wrapper docutils container&quot; id=&quot;id4&quot;&gt;
&lt;div class=&quot;code-block-caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;.drone.yml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;highlight-yaml&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;python2.7&lt;/span&gt;
&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;1. pip install nose coverage pyramid pyramid_jinja2 pyramid_beaker&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;2. pip install -r requirements.txt&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;3. nosetests --cover-package=sacrud --cover-erase --with-coverage --with-doctest&lt;/span&gt;
&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;notify&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;recipients&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;1. sacrud@uralbash.ru&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;С облаком всё понятно, установим &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;drone&lt;/span&gt;&lt;/code&gt; локально. В качестве платформы
используется VM с Ubuntu server 12.04 с одним ядром и 2Гб ОЗУ, что вполне
достаточно для небольшой команды программистов.&lt;/p&gt;
&lt;p&gt;Т.к. drone собирает проекты в легковесных контенерах при помощи &lt;a class=&quot;reference external&quot; href=&quot;http://docker.io/&quot;&gt;Docker&lt;/a&gt;
вначале установим его
&lt;a class=&quot;reference external&quot; href=&quot;http://docs.docker.io/en/latest/installation/ubuntulinux/#ubuntu-precise&quot;&gt;http://docs.docker.io/en/latest/installation/ubuntulinux/#ubuntu-precise&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Сам drone устанавливается очень просто через &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;deb&lt;/span&gt;&lt;/code&gt; пакет
&lt;a class=&quot;reference external&quot; href=&quot;http://drone.readthedocs.org/en/latest/install.html&quot;&gt;http://drone.readthedocs.org/en/latest/install.html&lt;/a&gt;, теперь он у вас висит на
80 порту или на том который вы указали. Запускается и конфигурируется через
upstart (&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;start&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;drone&lt;/span&gt;&lt;/code&gt;, &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;stop&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;drone&lt;/span&gt;&lt;/code&gt;). Можно проверить локально,
если перейти в репозитарий проекта с файлом &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;.drone.yml&lt;/span&gt;&lt;/code&gt;  и запустить &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;drone&lt;/span&gt;
&lt;span class=&quot;pre&quot;&gt;build&lt;/span&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Для того что бы github или bitbucket слал уведомление вашему drone серверу
нужен статический IP. Пробросим порты к виртуалке на роутере :) и укажем IP в
настройках:&lt;/p&gt;
&lt;img alt=&quot;_static/2014/drone1.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/drone1.png&quot; /&gt;
&lt;p&gt;добавим репу:&lt;/p&gt;
&lt;img alt=&quot;_static/2014/drone2.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/drone2.png&quot; /&gt;
&lt;p&gt;После добавления в гитхаб появится новый аппликайшин:&lt;/p&gt;
&lt;img alt=&quot;_static/2014/drone3.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/drone3.png&quot; /&gt;
&lt;p&gt;&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Client&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;ID&lt;/span&gt;&lt;/code&gt; и &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Client&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;Secret&lt;/span&gt;&lt;/code&gt; нужно указать в настройках drone. Теперь
комитим и чиним.&lt;/p&gt;
&lt;img alt=&quot;_static/2014/drone4.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/drone4.png&quot; /&gt;
&lt;p&gt;Для приватных реп drone автоматически  прописывает RSA ключ. Его можно
посмотреть в настройках репы и скопировать вручную например или поменять.&lt;/p&gt;
&lt;p&gt;Вывод похож на travis:&lt;/p&gt;
&lt;img alt=&quot;_static/2014/drone5.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/drone5.png&quot; /&gt;
&lt;p&gt;Пару слов почему не другие системы. Во первых &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;drone&lt;/span&gt;&lt;/code&gt; это и облако и локалхост,
дальше bitbucket+github, контейнеры docker из коробки, иконка-статус сборки в
Markdown, написан на Go как и Docker. Из недостатков пока мало свистелок и
перделок, первое что бросается в глаза отсутствие кнопки REBUILD (пересобрать
вручную). Но т.к. проект молодой то всё обещают запилить в следующей версии,
судя по issue на github&amp;#8217;е.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Jenkins&lt;/span&gt;&lt;/code&gt; страшный, сложный, всё пилить руками, докера нет, написан на Java.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Buildbot&lt;/span&gt;&lt;/code&gt; написан на python, хорошая архитектура master-slave, можно запилить
slave в контейнеры, но написан на старой версии twisted и sqlalchemy аж 0.7
версии, код ужасен, инструкции из документации устаревшие, нужно додумывать,
конфиг сложный, будущего у системы нет.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;StriderCD&lt;/span&gt;&lt;/code&gt; написан на nodejs, много чего есть из коробки, принцип плагинов
через npm, docker пилить самому, глючный :( хотя выглядит неплохо.&lt;/p&gt;
&lt;p&gt;Есть ещё альтернативы типа gitlab-ci и наверняка ещё что-то, но я их не смотрел.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;coveralls&quot;&gt;
&lt;h2&gt;Coveralls&lt;/h2&gt;
&lt;div class=&quot;figure align-center&quot; id=&quot;id5&quot;&gt;
&lt;img alt=&quot;_static/2014/coverrals1.png&quot; src=&quot;_static/2014/coverrals1.png&quot; /&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://coveralls.io/r/ITCase/sacrud&quot;&gt;https://coveralls.io/r/ITCase/sacrud&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;figure align-center&quot;&gt;
&lt;img alt=&quot;_static/2014/coverrals2.png&quot; src=&quot;_static/2014/coverrals2.png&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;Coveralls отличное дополнение, в котором можно визуально отследить что ещё не
покрыто тестами. Из минусов, нет bitbucket, мне показался он дороговатым для
приватных реп и ещё лежит отдавая 503 на момент написания этой статьи, но
локальных альтернатив я не нашёл, к сожалению.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;anykey&quot;&gt;
&lt;h2&gt;AnyKey&lt;/h2&gt;
&lt;div class=&quot;line-block&quot;&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://jmcvetta.github.io/blog/2013/08/30/continuous-integration-for-go-code/&quot;&gt;http://jmcvetta.github.io/blog/2013/08/30/continuous-integration-for-go-code/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://lucapette.com/go/go-docker-and-a-ci-server/&quot;&gt;http://lucapette.com/go/go-docker-and-a-ci-server/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;id2&quot;&gt;
&lt;h2&gt;И напоследок...&lt;/h2&gt;
&lt;p&gt;В этом обзоре показан простой пример как можно настроить непрерывную интеграцию
проекта на python и pyramid. Но по аналогии можно поднять любой другой проект.
Думаю вам эта статья поможет, хотя бы начать писать тесты :)&lt;/p&gt;
&lt;img alt=&quot;_static/2014/ci_end.jpg&quot; class=&quot;align-center&quot; src=&quot;_static/2014/ci_end.jpg&quot; /&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://uralbash.ru/blog/tag/go/atom.xml">
    <title type="text">Пишем на Go (Golang)</title>
    <id>http://uralbash.ru/articles/2014/go/</id>
    <updated>2014-04-06T00:58:00Z</updated>
    <published>2014-04-06T00:58:00Z</published>
    <link href="http://uralbash.ru/articles/2014/go/" />
    <author>
      <name>Uralbash</name>
    </author>
    <content type="html">&lt;div class=&quot;section&quot; id=&quot;go-golang&quot;&gt;

&lt;img alt=&quot;_static/2014/go.png&quot; class=&quot;align-left&quot; src=&quot;_static/2014/go.png&quot; /&gt;
&lt;p&gt;Go замечательный язык программирования, который можно компилировать,
компилировать под разные платформы (&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;ARM&lt;/span&gt;&lt;/code&gt;, &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;x86&lt;/span&gt;&lt;/code&gt;), распараллеливать. Он
проще &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;C/C++&lt;/span&gt;&lt;/code&gt; и уже сформировавшийся язык в отличии от &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Rust&lt;/span&gt;&lt;/code&gt; который
ломает программы с каждым обновлением. Область применения самая разная начиная
от консольных утилит, всяких парсеров, системного, сетевого ПО, связи с
физическими устройствами и заканчивая веб приложениями, &lt;span class=&quot;strike&quot;&gt;разве что пока нету
реализаций под смартфоны&lt;/span&gt; (&lt;a class=&quot;reference external&quot; href=&quot;https://docs.google.com/document/d/1N3XyVkAP8nmWjASz8L_OjjnjVKxgeVBjIsTr5qIUcA4/edit&quot;&gt;android&lt;/a&gt;).&lt;/p&gt;
&lt;br clear=&quot;both&quot;/&gt;&lt;p&gt;На Go уже написаны:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://docker.io/&quot;&gt;Docker&lt;/a&gt; - система легковесных контейнеров (переписан с &lt;a class=&quot;reference external&quot; href=&quot;http://www.python.org/&quot;&gt;python&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://drone.io&quot;&gt;http://drone.io&lt;/a&gt; - система непрерывного тестирования, поддерживающая
&lt;a class=&quot;reference external&quot; href=&quot;http://docker.io/&quot;&gt;Docker&lt;/a&gt; (о ней я напишу отдельно скорее всего) и огромное количество
других проектов, что удивительно ведь &lt;a class=&quot;reference external&quot; href=&quot;https://golang.org/&quot;&gt;go&lt;/a&gt; очень молодой проект, а ещё гугл&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Здесь я опишу процесс одной из возможных реализаций установки &lt;a class=&quot;reference external&quot; href=&quot;https://golang.org/&quot;&gt;Go&lt;/a&gt; под
&lt;a class=&quot;reference external&quot; href=&quot;https://www.kernel.org/&quot;&gt;Linux&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;id1&quot;&gt;
&lt;h2&gt;УСТАНОВКА&lt;/h2&gt;
&lt;div class=&quot;admonition seealso&quot;&gt;
&lt;p class=&quot;first admonition-title&quot;&gt;См.также&lt;/p&gt;
&lt;p class=&quot;last&quot;&gt;Более простой способ &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/moovweb/gvm&quot;&gt;moovweb/gvm&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;line-block&quot;&gt;
&lt;div class=&quot;line&quot;&gt;описано подробно в оф. документации &lt;a class=&quot;reference external&quot; href=&quot;http://golang.org/doc/install&quot;&gt;http://golang.org/doc/install&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://code.google.com/p/go/downloads/list?q=OpSys-FreeBSD+OR+OpSys-Linux+OR+OpSys-OSX+Type-Archive&quot;&gt;Скачать архив&lt;/a&gt; и распаковать в &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;~/golang&lt;/span&gt;&lt;/code&gt; например:&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ tar -C ~/golang -xzf go1.2.1.linux-amd64.tar.gz
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Добавляем в &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;~/.bashrc&lt;/span&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;literal-block-wrapper docutils container&quot; id=&quot;id5&quot;&gt;
&lt;div class=&quot;code-block-caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;~/.bashrc&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Go lang&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GOROOT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/golang
&lt;span class=&quot;nb&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;PATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$PATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$GOROOT&lt;/span&gt;/bin
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;создаем файл &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;hello.go&lt;/span&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;literal-block-wrapper docutils container&quot; id=&quot;id6&quot;&gt;
&lt;div class=&quot;code-block-caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;hello.go&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;highlight-go&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;package&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;main&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;quot;fmt&amp;quot;&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Printf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;quot;hello, world\n&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;и выполняем так:&lt;/p&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ go run hello.go
hello, world
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;или компилируем:&lt;/p&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ go build hello.go
$ ./hello
hello, world
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;теперь у нас установлен &lt;a class=&quot;reference external&quot; href=&quot;https://golang.org/&quot;&gt;go&lt;/a&gt; в системе. Если вам нужно свои пакеты хранить в
другой директории (не &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;$HOME/golang&lt;/span&gt;&lt;/code&gt;), но при этом что бы они находились в
общем окружении, то можно задать переменную окружения &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;GOPATH&lt;/span&gt;&lt;/code&gt;. У меня всё
вместе выглядит так:&lt;/p&gt;
&lt;div class=&quot;highlight-bash&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Go lang&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GOPATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/Projects/go
&lt;span class=&quot;nb&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GOROOT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/golang
&lt;span class=&quot;nb&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;PATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$PATH&lt;/span&gt;:&lt;span class=&quot;nv&quot;&gt;$GOROOT&lt;/span&gt;/bin:&lt;span class=&quot;nv&quot;&gt;$GOPATH&lt;/span&gt;/bin
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;vim&quot;&gt;
&lt;h2&gt;VIM&lt;/h2&gt;
&lt;p&gt;есть много дополнений для go но самая крутое из них это &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/fatih/vim-go&quot;&gt;https://github.com/fatih/vim-go&lt;/a&gt;
пример &lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;.vimrc&lt;/span&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight-vim&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;au&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;BufNewFile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;BufRead&lt;/span&gt; *.&lt;span class=&quot;k&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;ft&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;go&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;nu&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;au&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;FileType&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;go&lt;/span&gt; map &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;leader&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;r&lt;/span&gt; :&lt;span class=&quot;p&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;go&lt;/span&gt; run %&lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;CR&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;
Bundle &lt;span class=&quot;s2&quot;&gt;&amp;quot;fatih/vim-go&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;vim-go&lt;/span&gt;&lt;/code&gt; умеет:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;подсветка синтаксиса&lt;/li&gt;
&lt;li&gt;автодополнение кода gocode&lt;/li&gt;
&lt;li&gt;автоформатирование кода через gofmt&lt;/li&gt;
&lt;li&gt;автоимпорт недостающих библиотек goimports&lt;/li&gt;
&lt;li&gt;проверять код на наличие ошибок с помощью golint&lt;/li&gt;
&lt;li&gt;поддерживает снипеты ultisnips or neosnippet&lt;/li&gt;
&lt;li&gt;и многое другое&lt;/li&gt;
&lt;/ul&gt;
&lt;iframe width=&quot;420&quot; height=&quot;315&quot;
src=&quot;https://www.youtube.com/embed/rD11pEx5h8c&quot; frameborder=&quot;0&quot;
allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;id3&quot;&gt;
&lt;h2&gt;КНИГИ&lt;/h2&gt;
&lt;p&gt;книг много, но на великом только одна от издательства ДМК пресс, к счастью есть
эл.вариант книги хоть и в pdf.&lt;/p&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;http://dmkpress.com/catalog/computer/programming/978-5-94074-854-0/&quot;&gt;&lt;img alt=&quot;_static/2014/go_book.jpg&quot; class=&quot;align-center&quot; src=&quot;_static/2014/go_book.jpg&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;id4&quot;&gt;
&lt;h2&gt;Ресурсы&lt;/h2&gt;
&lt;div class=&quot;line-block&quot;&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://4gophers.com/&quot;&gt;http://4gophers.com/&lt;/a&gt; (ru)&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;#go-nuts in the irc.freenode.org network.&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://blog.golang.org/&quot;&gt;http://blog.golang.org/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;google group&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;reddit&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;anykey&quot;&gt;
&lt;h2&gt;AnyKey&lt;/h2&gt;
&lt;div class=&quot;line-block&quot;&gt;
&lt;div class=&quot;line&quot;&gt;Использование Си в Гоу&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/&quot;&gt;http://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;ORM&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/eaigner/hood&quot;&gt;https://github.com/eaigner/hood&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/jinzhu/gorm&quot;&gt;https://github.com/jinzhu/gorm&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Web&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Revel&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Gorilla&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;net/http&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Список пакетов&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://code.google.com/p/go-wiki/wiki/Projects&quot;&gt;https://code.google.com/p/go-wiki/wiki/Projects&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Go для программистов C++&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://netsago.org/ru/docs/1/16/&quot;&gt;http://netsago.org/ru/docs/1/16/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://eao197.narod.ru/desc/short_effective_go.html&quot;&gt;http://eao197.narod.ru/desc/short_effective_go.html&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Calling Go from Python via JSON-RPC&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;www.artima.com/weblogs/viewpost.jsp?thread=333589&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Go для Python программистов&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.slideshare.net/kcherkasoff/go-for&quot;&gt;http://www.slideshare.net/kcherkasoff/go-for&lt;/a&gt;-pythonistas#&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Тесты&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://smartystreets.github.io/goconvey/&quot;&gt;http://smartystreets.github.io/goconvey/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Примеры&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://gobyexample.com/&quot;&gt;https://gobyexample.com/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;CI&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/drone/drone&quot;&gt;https://github.com/drone/drone&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Хайлод++&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://www.youtube.com/watch?v=bqtN6XViejE&quot;&gt;http://www.youtube.com/watch?v=bqtN6XViejE&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;Туториал&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://tour.golang.org/&quot;&gt;http://tour.golang.org/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img alt=&quot;_static/2014/gopher.png&quot; class=&quot;align-center&quot; src=&quot;_static/2014/gopher.png&quot; /&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
</feed>
