Васильев Виктор
в го нельзя (не надо) создавать отдельыне папки допустим на рабочем столе и там билдить и делать все
Dmitry
Так. Если я как советуют в доке создам для GOPATH каталог C:\go-work, то я смогу проекты писать в каатлоге D:\Projects\Go
Васильев Виктор
там у тебя будут и библиотеки твои
Васильев Виктор
и твои проекты
Васильев Виктор
и ты сможеь утилитами билдить говоря просто namespace твоего проекта
Васильев Виктор
и т.д.
Andrey
сделай GOPATH=D:\Projects\Go
Andrey
твои проекты будут в D:\Projects\Go\src
Andrey
скомпилированные бинарники в D:\Projects\Go\pkg
Andrey
и советую сразу использовать go dep
Dmitry
Мдэээ... очень неудобно для меня.
Andrey
Это очень удобно для тебя
Logan
а сторонние либы и кэши - в gopath
Dmitry
У меня не все проекты в одном каталоге будут. Условно часть в d:\PetProject, а другие в d:\CoolProject
Dmitry
Значит придётся переписывать GOPATH
Dmitry
Или можно через точку с запятой перечислить?
Logan
Dmitry
А, всё увидел. Круто тогда
Васильев Виктор
Это по началу неудобно)
Васильев Виктор
Когда первый раз встерчаешь такой подход становится неуютно. Особенно если перешел с С++ или С#.
Васильев Виктор
Но потом видишь в этом только плюсы и удобства
分解物質
分解物質
аааааааа
Anonymous
Anonymous
Никогда не понимал, зойчем собирать в докере ... =\
Васильев Виктор
Зачем...непонятно. Единственное зачем это нужно чтобы изолировать среду. Можно иметь докер билдер образ. В нем билдить ,высовывать готовый бинарик и в другой образ пихать чтобы иметь легковестный контейнер
Anonymous
Васильев Виктор
Еще удобно это тем что с помощью compose ты можешь одной командой поднять проект на машине не имея рабочего окружения и тебе не нужно будет иметь все библиотеки а толкьо то что нужно
Салтыдык
Васильев Виктор
ты в продакшен зависимый не ходишь?)
Alexander
Салтыдык
3. Если выкат в kubernetes или ещё куда, то docker — это не только удобно, но и необходимо.
Васильев Виктор
Но даже в кубик лучше не онбилд а уже бинарик делать. Ресурсы не резинвоые. Иметь онбилд образ для каждого проекта
Anonymous
ты в продакшен зависимый не ходишь?)
Вот выпустили новую версию Go. Пишут в чейнджлоге, что исправили одно, другое. Думаю, тестами тоже покрыли. Так что новая версия должна быть стабильнее 🤔
Салтыдык
Васильев Виктор
Ну так то оно так. И так делают про любой язык программирования. У кого-то изменения стабильные у кого-то нет.
Васильев Виктор
НО
Daniel
есть несколько поводов собирать в докере
Васильев Виктор
ты не можешь это гарантировать
Васильев Виктор
это раз
Daniel
1. современные CI собирают в докере
Васильев Виктор
2. Этого не могут гарантировать создатели СТОРОННИХ библиотек
Alexander
Васильев Виктор
а ты от них зависим
Daniel
2. вместе с CGO не бывает кроскомпиляции
Daniel
3. CGO + so libs требуют определенного окружения
Daniel
4. Dockerfile с успехом заменяет Makefile
Васильев Виктор
А compose c machine заменяет десяток мейкфайлов и скриптов)
Daniel
5. этот способ потестировать сборку "с белого листа"
Васильев Виктор
Ну надеятся то ты можешь. Но гарантировать не можешь)
Васильев Виктор
Да и зависимость отбагов или апи предыдущих версий никто не отменял
V
а если проект (сингл репозиторий) микросервисный и не все сервисы на го, то удобно ли организовывать проект с глобальным-то gopath?
Dmitry
Васильев Виктор
обычно микросервесный проект организовывают на докермашин(и наверное проще иметь для него одну дирректорию или правильную сборку из репозитория)
Салтыдык
Васильев Виктор
Ну так то да. Но баги то откуда-то все равно есть?)
Васильев Виктор
Го язык молодой как бы
Салтыдык
Васильев Виктор
ну я имею ввиду обычно под словом(классически) кубернетсы это чутьболее новая штука(и более хорошая естественно). Правда я к ней только только иду :)
Васильев Виктор
Не подскажите кстати что по ним ЛУЧШЕ почитать?
Васильев Виктор
Спасибо :)
Салтыдык
учитывая, что под яблоками kubernetes из коробки, то вообще не нужно заморачиваться
Ильдар
Всем привет! Хочу протестировать скорость записи и чтения памяти. Выполняю в цикле:
var buf bytes.Buffer
p := []byte("...") // 1024 байт
buf.Write(p)
Считаю количество циклов, делю на время выполнения, получаю скорость. И она примерно соответствует действительности.
Далее пытаюсь тоже самое сделать для чтения через p = buf.Bytes() но ничего не выходит, независимо от размера buf - выполняется безмерно большое количество циклов за выделенное время, и оно не меняется от размера buf, что свидетельствует о том, что при p = buf.Bytes() (и любых аналогичных методах чтения), самого чтения не происходит. Происходит лишь перестановка указателя, как я понял.
Вопрос: как имитировать чтение в никуда?
Anonymous
Ильдар
Ильдар
Другими словами, если я после p = buf.Bytes() провожу какие-либо действия с p, то чтение происходит. А если не произвожу никаких действий, то и чтения реального не происходит. Какое-то нейтральное действие с p нужно сделать, а какое - не знаю. Просто перебрать его побайтово в цикле - не вариант. Это ресурсоёмко получается.
Anonymous
Ммм, предлагаю делать io.Copy из buf в /dev/null
I
io.Discard
Ильдар
Спасибо! Сейчас попробую...
Kirill
io.Discard
в соседнем чате предлагал как раз
Kirill
только не io 🙂
I
ага)
I
запамятовал
Ильдар
ioutil.Discard
Ильдар
Не помогло.