
Александр
27.11.2017
14:54:43
я боюсь гоу не переплюнет С если мы будем заниматся отрисовкой например 3D графики

Mike
27.11.2017
14:56:11
Для этого есть раст. Мы сейчас их оба юзаем — на го вебсервер, на расте нативный модуль с числодробилкой

Александр
27.11.2017
14:57:43
мне интересно как они сделали - play.golang.org
там же можно попробывать дотянуться до файловой системы

Google

John
27.11.2017
14:58:03

Александр
27.11.2017
14:58:29
все равно как то кмх

Kirill
27.11.2017
14:58:35

Александр
27.11.2017
15:01:41
а не, tcp/http таки запретили
2009/11/10 23:00:00 Get https://telegram.org/: dial tcp: Protocol not available

Aleksandr
27.11.2017
15:02:04
там все запретили, что небезопасно

Александр
27.11.2017
15:02:31
план по захвату мира накрылся :)

Alexey
27.11.2017
16:01:18
Ктот использовал редис? Вы кахдый раз перед тем как к нему обращаетесь пинг используете? _, err := client.Ping().Result()
Или как проверяете что он упал?
Или можно не проверять, просто err := client.Set("key", "value", 0).Err()

Ivan
27.11.2017
16:27:31
Обычно делаю pool подключений, а дальше проверяю уже ошибку.
И ping не делаю

Александр
27.11.2017
17:33:46
кстати про пулл подключений, самопальное что-то юзаете или либами?

Google

Ilya
27.11.2017
18:44:05
Подскажите, нормальная ли практика. Для Patch'a сделали на внешний API модельки, т.е. аля на Get, Post, etc.. запросы. Есть модели представления в базе данных. Чтобы вручную со строками не работать, делаем маппинг из структуры запросов на структуру БД, посредством тегов, т.е. приходит что-то нам на внешний слой, чекаем, валидируем, отдаем сторонней либе структуру запроса, которой уже скормлена структура БД и на основе тегов проходимся по структуре БД, сверяем типы, наличие вообще этих полей и отдаем стуктуру Update в которой инкапсулирована map[string]interface{} и уже отдаем на апдейт в драйвер базы данных


Александр
27.11.2017
21:30:37
Подскажите, нормальная ли практика. Для Patch'a сделали на внешний API модельки, т.е. аля на Get, Post, etc.. запросы. Есть модели представления в базе данных. Чтобы вручную со строками не работать, делаем маппинг из структуры запросов на структуру БД, посредством тегов, т.е. приходит что-то нам на внешний слой, чекаем, валидируем, отдаем сторонней либе структуру запроса, которой уже скормлена структура БД и на основе тегов проходимся по структуре БД, сверяем типы, наличие вообще этих полей и отдаем стуктуру Update в которой инкапсулирована map[string]interface{} и уже отдаем на апдейт в драйвер базы данных
я сам так делал, но не гибко ?
я сделал внутренную структуру, с которой удобно будет работать уже на вывод и фабричный метод который ее инициализурует

Ilya
27.11.2017
21:32:27
А чем не гибко?
В случае Patch'a мы не знаем, что именно нужно будет обновить, для всего остального уже делаем конкретные методы обновления группы полей

Александр
27.11.2017
21:33:25
func createModelFromDb(dbEntity *db.Enltity) {
model = &modelStruct{
name: dbEntity.name
}
model.family = dbEntity.family
return model;
}
вот такие фабрики
дело в том, что скорее всего 1 к 1 будет не достаточно в будущем, надо будет например подзапросы делать...
и констукция на тегах тут только все утяжелит

Ilya
27.11.2017
21:34:39
Например?

Александр
27.11.2017
21:36:31
func createModelFromDb(connect *db.Connect, dbEntity *db.Enltity) {
model = &modelStruct{
name: dbEntity.name
}
model.family = dbEntity.family
commentCount, err := connect.query('select count(*)......')
if err != nil {
model.commentCount = commentCount
}
return model;
}
а на тегах сколько тебе такое делать?
да и парсить теги, это обязательно пакет reflect. Тормоза и геморой ?

Ilya
27.11.2017
21:38:34
Ну это можно решить кодогенерацией
И использовать такой маппинг только для патчей
А они не так часто прилетают
С каунтом немного не понял, но такая схема работает только с тем, чтобы что-то переназначать, никаких inc и подобного

Александр
27.11.2017
21:40:35
"никаких inc и подобного" ??

Ilya
27.11.2017
21:40:56
Ну например счётчик увеличить
Просто я не совсем понял про подзапросы

Google

Александр
27.11.2017
21:43:01
я писал про вариант на чтение

Ilya
27.11.2017
21:43:16
А, про чтение нет, это используется лишь на патч

Александр
27.11.2017
21:43:17
когда надо из сущности выбрать, без какой либо записи

Ilya
27.11.2017
21:44:32
А с чтением думаю ручной маппинг на нужную структуру и все

Александр
27.11.2017
21:47:47
про запись...
я из json инициализирую структуру, потом валидирую опять же по тегам, с помощью либы https://github.com/go-playground/validator
если все хорошо, кормплю структуру в фабрику в пакете Entity и там опять "ручной" маппинг до бд
и так для каждой модели
p.s. не стряляйте в пианиста, он играет как умеет ?

Ilya
27.11.2017
21:54:29
А зачем фабрики для этого?

Александр
27.11.2017
21:59:35
что бы инкапсулировать сложные инициализации ?

Savely
27.11.2017
22:02:54
Все перегуглил. Ничего не нашел:
Можно ли дебажить Gomobile приложения? Писать вслепую очень сложно.

Savely
27.11.2017
22:03:12
Или таких экстремалов тут нет?)

Александр
27.11.2017
22:09:05
начнем с того что час ночи по москве ?
я думаю проснутся с утра

Savely
27.11.2017
22:10:40

Александр
27.11.2017
22:12:19
ой, настоящие с 10 до 19 работают ?Остальное время это от лукавого

Roman
28.11.2017
07:36:23
Настоящие по UTC работают
ибо влом еще часовые пояса хранить в базе
с этим пусть фронт трахается

Google

Admin
ERROR: S client not available

nezorflame
28.11.2017
07:38:35
Настоящие сами себе график выбирают, тогда уж
Щас бы себя в рамки запихивать в 2к17

Александр
28.11.2017
07:39:33
Настоящие по UTC работают
а если надо пользователю уведомления слать? ? Причем с настроенным режимом "не беспокоить" по его часовому поясу

Yaroslav
28.11.2017
07:39:35
Ща бы в 2017 использовать 2к17

?
28.11.2017
07:40:57
Сейчас бы шашлычка☺️

Kirill
28.11.2017
07:51:41
Привет, подскажите gorm реально не умеет работать со слайсом интов или я что-то не так делаю?

Александр
28.11.2017
08:02:43
Умеет
База то какая?

Kirill
28.11.2017
08:03:16
постгрес
converting argument $11 type: unsupported type []int, a slice of int
пишет

Александр
28.11.2017
08:04:27
А поле бд как объявлено? Тегом указан тип?

Kirill
28.11.2017
08:05:30
нет, он вроде умный, сам все понимает
попробую явно указать

Александр
28.11.2017
08:05:46
Не понимает)

Kirill
28.11.2017
08:06:12
простые типы понимает)

Александр
28.11.2017
08:13:16
там во на соседнем канале спрашивают про оптимизации компилятора, никто не сталкивался? он оптимизирует код?
например const = true
if const {}
обрежет?

Kirill
28.11.2017
08:18:32
Categories []int `json:"categories" gorm:"column:categories,type:integer[]"

Google

Kirill
28.11.2017
08:19:04
указал так, горм все равно ругается (sql: converting argument $11 type: unsupported type []int, a slice of int)

Kirill
28.11.2017
08:20:01
Это не горм, а стандартный database/sql ругается, он не знает что делать с этим типом
https://github.com/lib/pq/blob/master/array.go

Kirill
28.11.2017
08:47:31
Я что-то туплю, не могу догнать, как это пофиксить можно?
или никак? тупо в строку складывать и парсить?