@proGO

Страница 183 из 1674
Kirill
29.07.2016
07:21:54
ну, у меня проблем не было

Mars
29.07.2016
07:24:07
ну, у меня проблем не было
Сложность избыточная, мне кажется. Нужно же быть проще

Daniel
29.07.2016
07:24:10
о, кстати. а что такое go generate. моего английского не хватило, чтобы сложить слова в смысл. не можешь буквально одной-двумя фразами? мне тупняк пройти
go generate - это некоторое соглашение об описании внешних тулзов в тексте go-проекта. специального вида комментарий. и программа, которая обходит дерево сорцов и вызывает, что сказано это что сказано может делать что угодно, но идея в том, что оно генерит сорцы для go, которые потом компиляются а проект например - ресурсы так можно в свой проект включать, с помощью go-bindata. из файлов генерится go-файлик, в котором эти файлы присутствуют в виде []byte ну или вот у нас есть в проекте такой набор комментов: //go:generate bash -c "printf 'package main\n\n' > version.go" //go:generate bash -c "printf 'const globalVersionString=\"%s\"\n' git rev-parse HEAD >> version.go" //go:generate bash -c "printf 'const globalVersionUint32=0x%7.7s\n' git log --pretty=format:'%h' -n 1 >> version.go" //go:generate bash -c "printf 'const globalVersionTimestamp=%d\n' git log -1 --format=%ct >> version.go"

Google
Daniel
29.07.2016
07:25:29
нету никакого makefile

Mars
29.07.2016
07:26:32
Вызывать будет нужно либо go generate либо make build либо что то еще

Если так, то все проще описывать сборку где то вне исходников на го

Daniel
29.07.2016
07:27:31
go generate у меня, очевидно, есть - он из базовой поставки go

а вот make|gmake у меня может и не быть

Sergey
29.07.2016
07:28:17
мы кстати для версии используем -ldflags "-X main.version=$version"

Daniel
29.07.2016
07:28:18
нахера еще один тулчейн втаскивать в экосистему

Mars
29.07.2016
07:29:20
нахера еще один тулчейн втаскивать в экосистему
1. Он гибкий 2. Есть почти везде, а вот го не везде

Sergey
29.07.2016
07:29:22
правда оно кажется не сработает при const version, только при var version

Kirill
29.07.2016
07:29:57
1. Он гибкий 2. Есть почти везде, а вот го не везде
а зачем тебе makefile, генерящий .go, если там нет go?

Dmi
29.07.2016
07:39:07
какой проект можно посмотреть, для того чтобы понять, как привильно организовать структуру, правильно стрктурировать в пакеты, и т.д. ?

Google
Daniel
29.07.2016
07:40:13
а что такое - правильно

Dmi
29.07.2016
07:40:45
best practics

Daniel
29.07.2016
07:41:19
эмм

у нас проекту полгода

я уже раза 4 перекраивал его структуру

и в пятый не перекраиваю только потому, что настала пора его полностью переписать :)

Dmi
29.07.2016
07:42:34
просто хотелось взглянуть, как грамотные этом плане, люди это делают

Daniel
29.07.2016
07:43:19
на самом деле - можно поглядеть в telegraf, который от influxdb

Phil
29.07.2016
07:43:29
я уже раза 4 перекраивал его структуру
ну кстати история перекроя тоже интересная штука. это риторическое утверждение с моей стороны. однако.

Daniel
29.07.2016
07:43:30
там оправданно сложная структура

но сам influx такое дерьмо, что возникают сомнения в грамотности этих людей

даи telegraf задуман прикольно, а реалиован как обычно местами

Dmi
29.07.2016
07:44:53
Daniel
29.07.2016
08:00:14
json не годится для конфигов - в нем нет комментов

Kirill
29.07.2016
08:00:28
вида свойство объекта __comment

Daniel
29.07.2016
08:01:23
yaml, правда, тоже счастье то еще - в нем пробельные символы синтаксической значимостью обладают

Google
Мерлин
29.07.2016
08:02:25
json не годится для конфигов - в нем нет комментов
И структура не очень удобная Toml и ini имхо - самое то

Nikolay
29.07.2016
08:02:49
@onokonem в обучном json каментов нет, в формате jsonshema - можно указать описание поля: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Product", "description": "A product from Acme's catalog", "type": "object", "properties": { "id": { "description": "The unique identifier for a product", "type": "integer" } }, "required": ["id"] }

Nikolay
29.07.2016
08:03:21
Т.е. в json хранится не сам конфиг, а его структура

сам конфиг уже из этой структуры генерится

описание конфига в yaml (или в xml)
вот про это имел ввиду

Мерлин
29.07.2016
08:04:17
Ещё в одно время я пришёл к тому, что пользовательские параметры должны задаваться через флаги, а конфигурация лежит в бд

Vitaliy
29.07.2016
08:24:39
скорее consul

Daniel
29.07.2016
08:38:43
ну вот у нас все равно ароспайк - в него и сложили мы конфиг.

Nikita
29.07.2016
09:16:29
Привет Никита, я от тебя овета жду уже вторую неделю :(
Ты везде. Я надеялся что все вопросы решились без меня. Я тут ботов для тг писал

Amir
29.07.2016
09:39:21
Не решились :(

А объясните плиз принцип работы этой конструкции

s := []int{2, 3, 5, 7, 11, 13}

s = s[:0]

s = s[:4]

ну инициализация среза я понял в переменную s

получается s и s[] разные конструкции да?

Zver
29.07.2016
10:23:31
Одинаковые.

Google
Zver
29.07.2016
10:23:37
Слайсы.

Amir
29.07.2016
10:23:57
ну мне после руби немного нелогично)

в s литерал слайса

s = s[:0] урезаем до 0

срез пустой

s = s[:4] расширяем до 4х элементов

теперь там снова данные

почти магия

Zver
29.07.2016
10:24:49
Кассандра инициализируешь, то это уже слайс, а потом слайс от слайса.

Admin
ERROR: S client not available

Amir
29.07.2016
10:25:57
получается s = []int{2, 3, 5, 7, 11, 13}

s ссылается на литерал []int{2, 3, 5, 7, 11, 13}

которые ничерта не меняется

и даже если я напишу s2 := s[:4]

и дальше s3 := s[2:]

я буду получать срезы из лиетала?)

Zver
29.07.2016
10:29:32
Вообще надо запомнить, что слайс это просто ссылка на диапазон массива.

Amir
29.07.2016
10:29:43
ок

это я уже осознал

это надо вкурить хорошенько

Google
Zver
29.07.2016
10:30:21
Фактически просто с одним и тем же масмивом работаешь и все.

Amir
29.07.2016
10:30:31
а если я добавлю туда элементы

Zver
29.07.2016
10:30:58
А вот это надо попробовать. )

Amir
29.07.2016
10:32:59
никуя не просто)

https://blog.golang.org/go-slices-usage-and-internals

с картинками стало понятней)

Daniel
29.07.2016
10:33:29
а если я добавлю туда элементы
append возвращает новый слайс

Amir
29.07.2016
10:33:43
Мне только стало жутко интересно почему в английской статье вот это - x := [3]string{"Лайка", "Белка", "Стрелка"}

Phil
29.07.2016
10:34:00
append возвращает новый слайс
я так понимаю не всегда.

Daniel
29.07.2016
10:34:13
подлежащий массив может остаться тем же, а может быть заменен на массив большего размера (с копированием информации из старого)

я так понимаю не всегда.
слайс новый всегда. массив - когда потребутеся

Phil
29.07.2016
10:34:52
слайс новый всегда. массив - когда потребутеся
ой. да. всё. надо больше кофе пить. чушь конечно я смолол. я конечно имел ввиду новый массив

Amir
29.07.2016
10:35:30
ой как интересно

Zver
29.07.2016
10:35:37
Перезаписывается элемент массива при добавлении в слайс.

packages = s[:0] main import ( "fmt" ) func main() { s := []int{2, 3, 5, 7, 11, 13} s = s[:0] s = s[:4] s = append(s, 5) s = s[:6] fmt.Printf("%v",s) }

Amir
29.07.2016
10:35:44
если добавить к урезанному слайсу оно влезет перед урезанными элементами

Zver
29.07.2016
10:36:02
[2 3 5 7 5 13]

Amir
29.07.2016
10:36:16
хм

заменяет

len=6 cap=6 [2 3 5 7 11 13] len=0 cap=6 [] len=4 cap=6 [2 3 5 7] len=6 cap=6 [2 3 5 7 100 13] len=6 cap=6 [2 3 5 7 100 13]

Zver
29.07.2016
10:37:00
Получается расширило слайс в массиве и перезаписало соответствующий элемент.

Если еще пару раз добавить, то расширит массив.

Страница 183 из 1674