
Alexei
12.10.2018
05:33:25
вот .ю.
но жто нужно перезапустить приложение
верно же

Vadim
12.10.2018
05:34:07

Google

Alexei
12.10.2018
05:36:41
немного не понял..

Zver
12.10.2018
05:38:35

Alexei
12.10.2018
05:38:52
а все примерно понял куда рыть
спасибо!

Евгений
12.10.2018
05:53:19
ну вот, значит таки [] не возвращает копию
Вы как-то заморочились.
a - слайс
а[0] - первый элемент его
Этот элемент можно скопировать
с := а[0], тогда конечно изменение копии не будет менять оригинал.
Либо взять адрес &а[0] и тогда можно менять элемент

Нави
12.10.2018
06:02:18
вчера так и не определился что использовать, какой синтаксис удобней и быстрее юзается, GORM или XORM для баз данных?

Vladimir
12.10.2018
06:14:55
Парни, я снова с redigo. https://play.golang.org/p/gDl37LrZwkU
Первоначально сохраняю структуру через HMSET. В последующем мне нужно изменить несколько полей в уже существующем хеше редиса
приходится делать через map[string]<Type> и также записывать через HMSET
все работает, но как всегда, есть Но
мне нужно помнить название полей, который были в тегах структуры
Field2 int redis:"field2"
что в таком случае делать? если я буду сохранять структуру целиком, он каждый раз будет записывать все поля, даже те, которые не изменились

Google

Vladimir
12.10.2018
06:19:52
field2 := map[string]int{"field2": 10}
conn.Do("HMSET", redis.Args{}.Add(key).AddFlat(field2)...)

Pavel
12.10.2018
06:20:36
Сложно чет
А почему все поля нельзя записать?

Vladimir
12.10.2018
06:21:11
потому что их сначала нужно из редиса вытащить
а я знаю заранее ключ, и мне нужно некоторые поля просто менять, например, по таймеру

Pavel
12.10.2018
06:23:16
А новое значение поля от старых значений не зависит?

Vladimir
12.10.2018
06:23:41
нет
к примеру, я обновляю прогресс от 0 до 100

Pavel
12.10.2018
06:28:20
Ну если тебе хак с кастомной командой не нравится, то вынеси это поле в отдельный ключ.

Mykyta
12.10.2018
06:54:21

Никита
12.10.2018
07:06:47

Евгений
12.10.2018
07:10:27
Сделай мапу нужных изменений changes := map[string]interface{} и измени только эти поля. Например:
- меняешь в стуктуре какое-то поле
- сразу помечаешь в мапе changes[fieldName] = fieldValue
- затем записываешь в редис
for k, v := range changes {
/// здесь собираешь команду в редис
}

Нави
12.10.2018
07:13:02

Mykyta
12.10.2018
07:13:33

Vladimir
12.10.2018
07:14:36
вот это неудобно

Евгений
12.10.2018
07:14:58
возьми их через рефлексию

Vladimir
12.10.2018
07:15:38
по мне так это лишний оверхед, проще в IDE рефакторить

Artem
12.10.2018
07:16:49

Евгений
12.10.2018
07:18:12
Можно даже сделать вот такую гомопидарасию - интерпретируемый язык из Го :)))
Делаешь структуру, ей делаешь setter SetField(name string, value interface{}) (sic! :) ), через него меняешь значения этой структруы и записываешь в мапу, что изменил. Затем метод FlushChanges() все это заливает в редис.

Google

Mykyta
12.10.2018
07:21:22
Хочу ссылку на бест практис где написано это. Мб я чего-то не знаю
Проблема в том, что в большинстве баз данных, рандомный uuid наносит непоправимый вред btree индексу и вставки начинают тормозить из-за фрагментации этого индекса. В качестве решения используют инкрементальный uuid на основе timestamp. uuid нужен, когда эти айдишники надо генерировать на стороне приложения, а не бд: если система распределенная и нет транзакций, например. Если у тебя обычное приложение с одной бд и транзакциями, тебе никакой uuid не нужен. И хранить его тож очень жирно выходит, ведь uuid занимает 16 байт.

Никита
12.10.2018
07:24:03
Если мне нужно создать запись в бд и вернуть пользователю айди созданной записи сразу, оправдано ли использование uuid?

Nick
12.10.2018
07:24:25

Евгений
12.10.2018
07:24:41

Artem
12.10.2018
07:24:49

Mykyta
12.10.2018
07:25:26

Евгений
12.10.2018
07:25:30
Как только хранение распределилось на 2 базы - так все - хана сиквенсу (

Nick
12.10.2018
07:25:44
Не вижу прост проблем в использовании ин-тов и в распределённых системах

Евгений
12.10.2018
07:25:53

Mykyta
12.10.2018
07:25:53
еще я забыл про кейс, когда базу надо шардить

Nick
12.10.2018
07:26:11

Artem
12.10.2018
07:26:23

Евгений
12.10.2018
07:26:34
Есть у тебя 2 равнозначных ноды. Как сделать недублирующиеся id?

Никита
12.10.2018
07:26:38

Nick
12.10.2018
07:26:43
Ты можешь сделать пул аидишников свой для каждой ноды

Евгений
12.10.2018
07:27:00

Alexander
12.10.2018
07:27:04
можно банально использовать сервисы, у которых есть распределнные примитивы.

Mykyta
12.10.2018
07:27:06
Дублирование?
Последовательный uuid (v1) создается на основе мак-адреса (по факту ему можно что угодно подсовывать, ведь обычно мак адрес не имеет никакого смысла)

Евгений
12.10.2018
07:27:30

Google

Alexander
12.10.2018
07:27:33
тот же zookeper

Никита
12.10.2018
07:27:49

Евгений
12.10.2018
07:27:49

Alexander
12.10.2018
07:27:57
лол. простите

Mykyta
12.10.2018
07:28:17
Не все базы так могут
Какие не могут? Если использовать mysql вместо базы данных, даже оно умеет в last_inserted_id

Nick
12.10.2018
07:28:17
Условно первая нода оперирует аиди от 1-10 вторая от 10-20 и хранить эти диапазоны в той же Базе, ну будет в тебя разреженность зато работает)

Евгений
12.10.2018
07:28:23
Это понятно.
А если она на самом деле распределенная? Например, административно, а не только технически?

Nick
12.10.2018
07:29:22
И ? Какая разница что в базу то писать)

Artem
12.10.2018
07:29:31

Nick
12.10.2018
07:29:48
Или типы типа bigint
Не суть

Artem
12.10.2018
07:30:28

Nick
12.10.2018
07:31:45

Alexander
12.10.2018
07:57:00
> У программистов вообще какое-то странное отношение к тому, что для того чтоб работу работать надо ЧТО_ТО ЗНАТЬ И УМЕТЬ. Даже намек на то, что надо что-то знать может привести к тому, что программист начал кукситься, а предложивший такой ужас получил репутацию токсичного человека
в дополнение ко вчерашнему разговору

Pavel
12.10.2018
07:57:54
Этот вброс надо обсудить? ?

Misha
12.10.2018
08:01:29
Всем доброго времени суток! Посоветуйте, что почитать о микросервисах и как правильно выстраивать эту архитектуру в го? Есть ли какие-то хорошие материалы про это?

Google

Vladimir
12.10.2018
08:02:07
помоему даже книга была про микросервисы в го

Misha
12.10.2018
08:04:37
Они есть, вот какая лучше будет)

Артур
12.10.2018
08:04:57
Та, которая у тебя есть

Vladimir
12.10.2018
08:05:49
Та, которую можно скачать

Darwin
12.10.2018
08:06:01
Та, которая актуальная на 2018 год

Vladimir
12.10.2018
08:08:30
Вообщем, ты понял, что здесь тебе ничего не посоветуют конкретного :D

Vyacheslav
12.10.2018
08:08:35
Та, в которой информация дается полно и доступно

Misha
12.10.2018
08:09:06

Artem
12.10.2018
08:10:14
Понял хех
начни с building microservices (Sam Newman)

Misha
12.10.2018
08:10:57
О, слышал уже такое где-то, спасибо!)

lexxx
12.10.2018
08:16:45
)))))))))))

Marlik
12.10.2018
08:17:34

Misha
12.10.2018
08:18:08
Благодарю

Владимир
12.10.2018
08:18:53
годно

r
12.10.2018
08:19:21

Alexander
12.10.2018
08:19:53

lexxx
12.10.2018
08:20:40
поаккуратнее с растратами своего времени
ну я сейчас пишу в основном на node.js + typescript и в равной степени на go
есть ощущение что можно написать ПО для управления ракетами, которое используют в NASA за 2 недели

Alexander
12.10.2018
08:21:16