
Dmitry
05.07.2018
23:13:17
если архитектура проекта позволяет это без переписывания кода(или незначительного) то говорят что она хорошо горизонтально масштабируется
под железом я понимаю как подключение железа напрямую так и посредством сетей

Zaur
05.07.2018
23:15:10
Аа, всё, я кажется врубился ? спасибо

Dmitry
05.07.2018
23:16:48

Google

/dev/null
06.07.2018
05:38:46
Ребят, у меня такой вопрос.
Как будет правильно реализовать следующие:
Есть куча xml файлов и инфой на 15Мб.
Хочу спарить инфу с документов в хеш таблицу а потом в цикле писать из этой таблицы в монгу.
Насколько правильно это будет? Или стоит каждый отдельный документ писать в базу, а не раздувать ОЗУ?

Ivanov
06.07.2018
06:06:24
Зачем хеш таблица? Пиши сразу в монгу, имхо

Nick
06.07.2018
06:12:59
Лучше писать батчами определенного размера

V
06.07.2018
06:16:01
Асинхронно парсить, разбить на несколько асинхронных батчей) конвеер

Nazary
06.07.2018
08:19:39
бляха, я чёт туплю
есть
type TName struct {
name string
rsp []string
}
и есть
var LIST = make(map[string]TName)
как в LIST[id] работать с полем rsp?

Lesha
06.07.2018
08:20:44
Rsp

Nazary
06.07.2018
08:20:45
append, к примеру

Lesha
06.07.2018
08:21:43
Сделай с большой буквы rsp
LIST[id].Rsp = append(LIST[id].Rsp, ...)
Ну лучше указатель (на TName) хранить и сначала из мапы получить его

Nazary
06.07.2018
08:23:01
тогда тоже большая буква?

Lesha
06.07.2018
08:23:07
да
Поля с большой буквы - public
с маленькой - private

Google

/dev/null
06.07.2018
08:24:23

Nazary
06.07.2018
08:31:35

Lesha
06.07.2018
08:32:35
obj, ok := LIST[id]
Если указатель, то сразу меняешь Rsp, если по значению, то обратно закидывай

GoodMoodDealler
06.07.2018
11:25:15
Я создаю массив каналов var ch [10]chan, как мне переопределить первый эллемент и сделать его буфферизированным?

Илья
06.07.2018
11:25:43
никак
хотя, что ты имеешь ввиду переопреледить, неясно

GoodMoodDealler
06.07.2018
11:29:54

Илья
06.07.2018
11:30:12
на плейграунде не ругается

GoodMoodDealler
06.07.2018
11:31:36
А не, все норм, спасибо)

Александр
06.07.2018
13:13:07
Всем привет, есть те кто работал с HomeKit?

Artem
06.07.2018
14:41:42
всем привет
IDs := r.URL.Query()["id"]
возвращает мне слайс ["1,2,3"] с одной строкой
как можно сразу получить слайс интов?
[1, 2, 3]
не нашел примеров
делать split потом по слайсу как то костыльно(
а приходит /?id=1,2,3

Aleksandr
06.07.2018
14:42:31

Artem
06.07.2018
14:43:42
эх(

Alexey
06.07.2018
15:45:56
Привет! Нужно смоделировать json в котором некоторые поля полиморфоные. Например, может быть просто логин, а может быть имя и фамилия:
"actor": {
"type": "login",
"login": "user"
}и
"actor": {
"type": "fullName",
"firstName": "John",
"secondName": "Doe"
}как бы это все замапить на структуры чтобы было удобно и парсить и создавать такие структуры.
Нашел только такое - http://eagain.net/articles/go-dynamic-json/ , но выглядит все это как ужасный костыль. Подскажите как сделать красиво :)

Daniel
06.07.2018
15:46:23
никак

Мерлин
06.07.2018
15:46:36

Daniel
06.07.2018
15:46:54
красиво не будет

Google

Alexey
06.07.2018
15:46:55

Daniel
06.07.2018
15:47:11
реально вариантов два

Мерлин
06.07.2018
15:47:19

Alexey
06.07.2018
15:47:31

Daniel
06.07.2018
15:47:38
или сделать структуру со всеми полями, или парсить в два прохода

Alexey
06.07.2018
15:48:00

Мерлин
06.07.2018
15:48:12
мне нужно лучше, а не хуже
лучше никак
ну, можно сделать разные наборы структур, а потом json iter-ом брать поле type и применять нужную структуру

Daniel
06.07.2018
15:48:15
нет базовой поддержки полиморфных структур

Alexey
06.07.2018
15:48:26
прямо канал скорби :(
спасибо!

Daniel
06.07.2018
15:48:46
у всех есть свои недостатки

Alexey
06.07.2018
15:49:57

Daniel
06.07.2018
15:51:18
на самом деле - не надо просто делать такую структуру json, и это хорошо, что она так плохо поддерживается в go - меньше будет таких уродцев появляться

Alexey
06.07.2018
15:52:08

Daniel
06.07.2018
15:52:25
полиморфизм - зло

Alexey
06.07.2018
15:52:40

Daniel
06.07.2018
15:53:07
в некотором смысле - да. но - он ведь и правда зло.

Alexey
06.07.2018
15:54:34

Daniel
06.07.2018
15:54:53
тогда - суперпозиция
которая тоже зло, но меньшее

Google

Alexey
06.07.2018
15:55:24
это ужасно в плане типов.

Daniel
06.07.2018
15:55:43
а полиморфизм не ужасен?

Alexey
06.07.2018
15:55:49
нет разницы между этим и map[string]string

Daniel
06.07.2018
15:56:06
разница, все же, есть

Alexey
06.07.2018
15:56:34
она только в количестве возможных ошибок, но не в факте их присутствия/отсутствия

Alexandr
06.07.2018
15:57:12
Гайз, а не знает кто-нибудь скелет проекта на Github на Go с Oauth2 для аутентификации и сессиями - чтобы его можно было за основу взять для небольшого проекта?

Admin
ERROR: S client not available

Daniel
06.07.2018
15:58:12

Alexey
06.07.2018
15:59:07
я бы хотел чтото типа
data User = UserWithLogin | UserWithName | Anonymous
и поддержку сериализации

Alexander
06.07.2018
16:13:28
Кто как конфиги хранит в приложениях? ini? json? yaml?

Fedor
06.07.2018
16:14:41
ENV

Jentry
06.07.2018
16:14:42
какая разница, viper все умеет, идеально из env подсасывать

Alexander
06.07.2018
16:18:15
ENV
типо через переменные окружения? а если их 25?

Fedor
06.07.2018
16:18:46
А какая разница, в bashrc кинул и забыл

Mike
06.07.2018
16:19:30

Alexander
06.07.2018
16:20:15

Mike
06.07.2018
16:21:38
ну обычно тебе нужна какая-то хуйня и ты добавляешь энв, потом их становится слишком много, ты охуеваешь, особенно если подменять туда-сюда надо и тестить, кладешь в джейсон, а потом если конфиг усложняется, в зависимости от привычек, или ничего не делаешь, или берешь что-то что попиздаче хранит структуры сложные

Alexander
06.07.2018
16:25:07
Еще вопрос, после go test cover вижу
coverage: 63.3% of statements

Google

Alexander
06.07.2018
16:25:37
есть какие-то утилиты или может параметры, которые подскажут что именно не покрыто?
То есть какие кейсы я забыл, не учел при тестах....

Mush
06.07.2018
16:26:46
какая разница, viper все умеет, идеально из env подсасывать
вайпер не все умеет.
если сложная структура, то надо обращаться по полному имени ключа.
например
database.host.
только в этом случае будет использована переменная DATABASE_HOST.
если же на свое несчастье код работает со структурой вайпера, которая не находится в корне конфига, а например внутри узла database,
то вызов GetString(“host”)
проверит переменнную HOST, а не DATABASE_HOST.
те чтобы юзать енвы, надо еще понимать, что всегда работаем с корнем конфига, что отсекает часть функционала вайпера

Vladislav
06.07.2018
16:26:58

Alexander
06.07.2018
16:27:34

Vladislav
06.07.2018
16:28:01

Alexander
06.07.2018
16:28:20
Ну чет GoLand не могет, или я его еще не научился готовить

Vladislav
06.07.2018
16:28:58

Alexander
06.07.2018
16:29:14
Нашел вот такое
Видимо надо поизучать поглубже, спасибо

GoodMoodDealler
06.07.2018
17:44:20
var i int
var results []string
for data := range in {
fmt.Println(i)
results[i] = data.(string)
i++
}
Печатает 0 и выдает index out of range
Вопрос, в чем я ошибся?

Владимир
06.07.2018
17:46:24
А зачем вы индекс самостоятельно увеличиваете, если можно for i, data := range in?

GoodMoodDealler
06.07.2018
17:47:05
too many variables in range
Если сделать как вы сказали