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