
Виктор
19.02.2018
11:02:40
Это грубо говоря папка в которой ты работаешь

Andrey
19.02.2018
11:02:54

Виктор
19.02.2018
11:03:04
в го нельзя (не надо) создавать отдельыне папки допустим на рабочем столе и там билдить и делать все

Dmitry
19.02.2018
11:03:14
Так. Если я как советуют в доке создам для GOPATH каталог C:\go-work, то я смогу проекты писать в каатлоге D:\Projects\Go

Google

Виктор
19.02.2018
11:03:20
там у тебя будут и библиотеки твои
и твои проекты
и ты сможеь утилитами билдить говоря просто namespace твоего проекта
и т.д.

Andrey
19.02.2018
11:03:48
сделай GOPATH=D:\Projects\Go
твои проекты будут в D:\Projects\Go\src
скомпилированные бинарники в D:\Projects\Go\pkg
и советую сразу использовать go dep

Dmitry
19.02.2018
11:04:51
Мдэээ... очень неудобно для меня.

Andrey
19.02.2018
11:05:22
Это очень удобно для тебя

Paul
19.02.2018
11:05:50
а сторонние либы и кэши - в gopath

Dmitry
19.02.2018
11:06:26
У меня не все проекты в одном каталоге будут. Условно часть в d:\PetProject, а другие в d:\CoolProject

Google

Dmitry
19.02.2018
11:06:38
Значит придётся переписывать GOPATH
Или можно через точку с запятой перечислить?

Paul
19.02.2018
11:07:09

Dmitry
19.02.2018
11:07:50
А, всё увидел. Круто тогда

Виктор
19.02.2018
11:08:14
Это по началу неудобно)
Когда первый раз встерчаешь такой подход становится неуютно. Особенно если перешел с С++ или С#.
Но потом видишь в этом только плюсы и удобства

分解物質
19.02.2018
11:10:29
аааааааа

Andrew
19.02.2018
11:12:42
Жиза.

John
19.02.2018
11:13:11
Никогда не понимал, зойчем собирать в докере ... =\

Виктор
19.02.2018
11:13:55
Зачем...непонятно. Единственное зачем это нужно чтобы изолировать среду. Можно иметь докер билдер образ. В нем билдить ,высовывать готовый бинарик и в другой образ пихать чтобы иметь легковестный контейнер

Айбелив
19.02.2018
11:14:46

Andrew
19.02.2018
11:15:14

Виктор
19.02.2018
11:15:34
Еще удобно это тем что с помощью compose ты можешь одной командой поднять проект на машине не имея рабочего окружения и тебе не нужно будет иметь все библиотеки а толкьо то что нужно

Айбелив
19.02.2018
11:15:36

Виктор
19.02.2018
11:15:54
ты в продакшен зависимый не ходишь?)

Alexander
19.02.2018
11:16:17

Айбелив
19.02.2018
11:16:19
3. Если выкат в kubernetes или ещё куда, то docker — это не только удобно, но и необходимо.

Виктор
19.02.2018
11:17:00
Но даже в кубик лучше не онбилд а уже бинарик делать. Ресурсы не резинвоые. Иметь онбилд образ для каждого проекта

Google

Andrew
19.02.2018
11:17:13
ты в продакшен зависимый не ходишь?)
Вот выпустили новую версию Go. Пишут в чейнджлоге, что исправили одно, другое. Думаю, тестами тоже покрыли. Так что новая версия должна быть стабильнее ?

Айбелив
19.02.2018
11:17:43

Виктор
19.02.2018
11:17:45
Ну так то оно так. И так делают про любой язык программирования. У кого-то изменения стабильные у кого-то нет.
НО

Daniel
19.02.2018
11:17:50
есть несколько поводов собирать в докере

Виктор
19.02.2018
11:17:50
ты не можешь это гарантировать
это раз

Daniel
19.02.2018
11:18:05
1. современные CI собирают в докере

Виктор
19.02.2018
11:18:07
2. Этого не могут гарантировать создатели СТОРОННИХ библиотек

Alexander
19.02.2018
11:18:10

Виктор
19.02.2018
11:18:15
а ты от них зависим

Daniel
19.02.2018
11:18:32
2. вместе с CGO не бывает кроскомпиляции

Daniel
19.02.2018
11:18:57
3. CGO + so libs требуют определенного окружения
4. Dockerfile с успехом заменяет Makefile

Andrew
19.02.2018
11:19:46

Виктор
19.02.2018
11:19:54
А compose c machine заменяет десяток мейкфайлов и скриптов)

Daniel
19.02.2018
11:19:55
5. этот способ потестировать сборку "с белого листа"

Виктор
19.02.2018
11:20:09
Ну надеятся то ты можешь. Но гарантировать не можешь)
Да и зависимость отбагов или апи предыдущих версий никто не отменял

V
19.02.2018
11:20:45
а если проект (сингл репозиторий) микросервисный и не все сервисы на го, то удобно ли организовывать проект с глобальным-то gopath?

Google

Dmitry
19.02.2018
11:20:47

Andrew
19.02.2018
11:21:51

Виктор
19.02.2018
11:21:58
обычно микросервесный проект организовывают на докермашин(и наверное проще иметь для него одну дирректорию или правильную сборку из репозитория)

Айбелив
19.02.2018
11:22:06

Виктор
19.02.2018
11:22:10
Ну так то да. Но баги то откуда-то все равно есть?)
Го язык молодой как бы

Айбелив
19.02.2018
11:23:18

Виктор
19.02.2018
11:24:18
ну я имею ввиду обычно под словом(классически) кубернетсы это чутьболее новая штука(и более хорошая естественно). Правда я к ней только только иду :)

Admin
ERROR: S client not available

Виктор
19.02.2018
11:24:28
Не подскажите кстати что по ним ЛУЧШЕ почитать?

Айбелив
19.02.2018
11:25:04

Виктор
19.02.2018
11:25:33
Спасибо :)

Айбелив
19.02.2018
11:26:40
учитывая, что под яблоками kubernetes из коробки, то вообще не нужно заморачиваться

Ильдар
19.02.2018
11:27:16
Всем привет! Хочу протестировать скорость записи и чтения памяти. Выполняю в цикле:
var buf bytes.Buffer
p := []byte("...") // 1024 байт
buf.Write(p)
Считаю количество циклов, делю на время выполнения, получаю скорость. И она примерно соответствует действительности.
Далее пытаюсь тоже самое сделать для чтения через p = buf.Bytes() но ничего не выходит, независимо от размера buf - выполняется безмерно большое количество циклов за выделенное время, и оно не меняется от размера buf, что свидетельствует о том, что при p = buf.Bytes() (и любых аналогичных методах чтения), самого чтения не происходит. Происходит лишь перестановка указателя, как я понял.
Вопрос: как имитировать чтение в никуда?

Andrew
19.02.2018
11:34:54


Ильдар
19.02.2018
11:35:18
Другими словами, если я после p = buf.Bytes() провожу какие-либо действия с p, то чтение происходит. А если не произвожу никаких действий, то и чтения реального не происходит. Какое-то нейтральное действие с p нужно сделать, а какое - не знаю. Просто перебрать его побайтово в цикле - не вариант. Это ресурсоёмко получается.

Andrew
19.02.2018
11:37:03
Ммм, предлагаю делать io.Copy из buf в /dev/null

Igor
19.02.2018
11:40:07
io.Discard

Ильдар
19.02.2018
11:41:03
Спасибо! Сейчас попробую...

Google

Kirill
19.02.2018
11:41:39
только не io ?

Igor
19.02.2018
11:42:45
ага)
запамятовал

Ильдар
19.02.2018
11:43:03
ioutil.Discard
Не помогло.
p := bytes.Repeat([]byte("1"), 1024)
r := bytes.NewReader(p)
и потом в цикле:
io.Copy(ioutil.Discard, r)
По идее, при изменении 1024 на бОльшее значение, количество циклов в ограниченный отрезок времени должно уменьшаться, так как на запись уходит дольше времени...
Но этого не происходит.
Пробовал 1024 (1 килобайт) увеличить до 1000 мегабайт даже.
При любом раскладе у меня получается 37 399 239 циклов в секунду, что соответствует 35 Гигабайтам данных в секунду, чего на DDR3 быть не может.
При записи, причём, всё в порядке. При увеличении объёма 1 записываемого блока через buf.Write() число циклов пропорционально снижается.
Всё, понял... туплю я.

Andrew
19.02.2018
12:17:02

Ильдар
19.02.2018
12:18:34
io.Copy(ioutil.Discard, r) дважды не выполняется. Он доходит до конца r и всё.

Fduch
19.02.2018
12:24:58
А как ГО на ФрииБСД себя чувствует?
FreeBSD 8.2-RELEASE
$ go version
go version go1.10 freebsd/386
$ go run hello.go
go tool compile: pipe: function not implemented
гуглил, ни чего не нагуглил.

Vladimir
19.02.2018
12:25:31
кажется последний го умевший 8куэ то что-то типа 1.8

Fduch
19.02.2018
12:25:47
то есть на 8.2 вариантов нет?

Vladimir
19.02.2018
12:25:53
обновится :D