
Aleksander
20.04.2017
19:02:25
все норм. получилось
спасибо
Еще один вопрос возник) Если у меня на сервере крутятся несколько разных доменов, которые используют 80 порт. Каждый сайт будет отдельным приложением. Через Apache раньше все работало для такой инфраструктуры. А как мне в go сделать чтобы они правильно работали?

Phil
20.04.2017
21:47:17
Чтобы "крутились"? ))))))))))))

Google

Constantine
20.04.2017
21:48:25
портами разруливай

Slava
20.04.2017
21:51:18
нужен прокси, который умеет http разруливать, к примеру nginx
а все программы уже на своих портах/сокетах
есть реверс прокси и на го хороший https://github.com/containous/traefik
это если нужно что посложнее =)

Aleksander
20.04.2017
21:56:17

Slava
20.04.2017
22:01:29
можно, если держать по интерфейсу на программу, а днс резолвить в интерфейс
но это.. странно

Dmitry
21.04.2017
08:06:46
У меня задача сделать проксирование входящих запросов на определённые url'ы по некоторой логике.
К примеру, на входящий запрос /service/data делаю запрос на нужный url+"/data" и ответ от него передаю в ответ.
Как элегантно сделать что-то наподобие ResponseWriter.Write(resp)?

Dmitriy
21.04.2017
08:25:46
io.Copy ?

Dmitry
21.04.2017
08:28:11
Кроме тела ещё заголовки, статус.

Dmitriy
21.04.2017
08:30:27
Имхо, тогда нужно лезть глубже, т.е. не пользоваться оберткой http.Handler и тогда можно будет копипастить со всем-всем. Однако, затраты на реализацию, имхо, будут сложнее, чем простой io.Copy + парсинг хидеров

Dmitry
21.04.2017
08:31:53
OK, спасибо.

Google

Максим
21.04.2017
09:02:06
Кто-то docker golang использовал?

/dev/m
21.04.2017
09:05:35
а так, я юзаю

Максим
21.04.2017
09:07:07
а так, я юзаю
вопрос в следующем. Создаю контейнер, прокидываю, скачиваю библиотеки, делаю go install. Вроде все собирается, но запустить не удается

/dev/m
21.04.2017
09:10:12
для запуска лучше собирать образ на scratch. Добавив туда скомпилированную программу и указав entrypoint

Максим
21.04.2017
09:11:40
а в чем отличие scretch? пока не смотрел Dockerfile

Aleksandr
21.04.2017
09:12:29

Максим
21.04.2017
09:13:55
@zelenin Так. С помощью него создаю контейнер. И дальше выполняю те же команды что я указывал в другом чате?
судя по документации прокидываем все в /go/src/app, затем go get -v app и после go install -v app

Aleksandr
21.04.2017
09:15:11
go build -o app
app билдишь в диру на хост
потом с хоста забираешь в другой образ

Максим
21.04.2017
09:16:03
то есть получается билдим в одном контейнере, а запускаем в другом?

Aleksandr
21.04.2017
09:17:33
да
docker run —rm -v "$PWD":/go -w /go/src -e CGO_ENABLED=0 golang go build -o "app"
что-то такое

Максим
21.04.2017
09:18:31
да
для билда используем golang:1.8, а для запуска golang:1.8-stretch?

Aleksandr
21.04.2017
09:18:36
ну что значит запускаем? дистрибьютмм на продакшн

Google

Максим
21.04.2017
09:20:45
@zelenin пример организации сего есть?))

Aleksandr
21.04.2017
09:23:12
@zelenin пример организации сего есть?))
у меня свой registry, так что подставь правильные названия образов
docker run --rm -v "$PWD":/go -w /go/src ${registryHost}/go:1.8.0-2 go build -o "../build/app"
Dockerfile:
FROM docker.****:443/alpine:3.5-1
MAINTAINER Aleksandr Zelenin <aleksandr@zelenin.me>
ENV PATH /app:$PATH
RUN mkdir -p /app
COPY app /app
WORKDIR /app
CMD ["app"]

Максим
21.04.2017
09:24:23
а официальный golang:1.8-alpine не подошел?

Aleksandr
21.04.2017
09:25:23
то есть билдить им можно и нужно, а класть бинарник уже в голый alpine/scratch

Максим
21.04.2017
09:28:49
Сейчас попробую
@zelenin спасибо

/dev/m
21.04.2017
09:29:56

Aleksandr
21.04.2017
09:30:19

/dev/m
21.04.2017
09:31:01
и можно всё сократить до:
FROM scratch
COPY ./app /
ENTRYPOINT ["/app"]
@zavitaev

Aleksandr
21.04.2017
09:32:18

/dev/m
21.04.2017
09:32:45

Aleksandr
21.04.2017
09:34:42
краткость сестра таланта
более длинно, не потому что хочется, а потому что есть обоснование. писать более кратко, забив на обоснование, нельзя.

Nikolay добряш
21.04.2017
11:45:03
ребят можно вопрос по goglang от джетбрейнов задать? это идешка ихняя

Cyril
21.04.2017
11:46:49
нужно писать код не пересекая её

Semyon
21.04.2017
11:47:09
Это голос совести
слушай его

Олег
21.04.2017
11:47:24
Если пересечь - в мире умрет один щенок

Google

Nikolay добряш
21.04.2017
11:47:38
?защита от былокодинга?

Semyon
21.04.2017
11:47:47
это рулер ограничивающий длину строки

Nikolay добряш
21.04.2017
11:47:52
он не ограничивает
я пробовал

Semyon
21.04.2017
11:47:56
потому что, судя по всему, у тебя огромный монитор и отличное зрение

Nikolay добряш
21.04.2017
11:48:11
обычный фулхд

Konstantine
21.04.2017
11:48:40
Реализовал авторизацию в либо по ВК, теперь можно поделиться и услышать критику: https://github.com/SolidlSnake/easyvk-go

Олег
21.04.2017
11:48:58
он не ограничивает
Это просто метка для удобства. Считается, что если строки не длиннее 80 символов, код легче читается.

Nikolay добряш
21.04.2017
11:49:31

Semyon
21.04.2017
11:49:31
код выглядит так

Aleksandr
21.04.2017
11:49:40
это ограничитель на 80 символов - кол-во символов в консоли в дремучие времена. теперь как бест практайс в код стайле

Semyon
21.04.2017
11:49:50
прикинь теперь число символов, которое влезет на экран у тебя и у меня

Nikolay добряш
21.04.2017
11:49:53
вим

Semyon
21.04.2017
11:50:19
и вот чтобы мы с тобой не подрались редактируя один и тот же код, пацаны придумали правило
строка должна быть не длиннее 80 символов
чтобы она влезала даже на экран утюга

Nikolay добряш
21.04.2017
11:50:46
всё догнал, а как нить её задействовать нельзя? что бы она не только визуальной была но и функциональной
а том ало ли что

Google

Nikolay добряш
21.04.2017
11:50:55
пропрет что нить нагошить

Semyon
21.04.2017
11:51:08
Нащот этой ИДЕ не знаю

Nikolay добряш
21.04.2017
11:51:08
или пришлют код с длиной строки в 2048 сиоволов

Semyon
21.04.2017
11:51:25
но много где можно красить строчку красной, если она вылезла
честно говоря, я почти везде на своих проектах ставлю рулер не на 80, а на 120 символов
проявляю слабость, так сказать
некоторые языки в 80 символов просто хрен упихнёшь

Nikolay добряш
21.04.2017
11:53:11
че там в гошечке то новго глобального? а то я подзавис на 1.3 версии а щас ставил уже 1.8.1

Aleksandr
21.04.2017
11:53:48
на самом деле это чисто легаси правило, т.к. большинство иде и редакторов имеют софт переносы и длинная строка не создает неудобства (не требует промотки экрана)

/dev/m
21.04.2017
11:53:51

Dmitry
21.04.2017
13:13:13
Дайте, пожалуйста, ссылку на быстрый json-маршаллер.

Илья
21.04.2017
13:13:56
easyjson?
https://github.com/mailru/easyjson

Dmitry
21.04.2017
13:15:14
?

Vladimir
21.04.2017
14:39:05
Лучше уж разбить на пакеты и принимать первым аргументом инстанс клиента.
Так и тесты будет писать проще.