
Roman
29.08.2018
12:46:46
стоит пропосал написать? хотя чуя я писать его буду наверное месяц..

Crypt
29.08.2018
12:48:52
Кто в AICups будет участвовать? Мне интересно, много народу на Go будет писать?

Lesha
29.08.2018
12:55:04

Google

Никита
29.08.2018
12:56:28

Roman
29.08.2018
12:56:51

Crypt
29.08.2018
12:58:43
а кинь ссылочкой
https://aicups.ru/ - завтра откроют третью бету и материалы к ней

Sergey
29.08.2018
13:12:51

Daniel
29.08.2018
13:13:23
а он почти никому не нужен :)

Wingman
29.08.2018
13:13:53
Особенно если хочется http2

Sergey
29.08.2018
13:14:57
На сколько я знаю, нет пакета для вебсокетов на хттп2 для го

Daniel
29.08.2018
13:15:25
http/2 же перпендикулярен вебсокетам
или даже параллелен

Sergey
29.08.2018
13:16:04
О вы математик

Daniel
29.08.2018
13:17:59
тем не менее - http/2 решает задачи, для которых был сделан вебсокет, другими средствами

Sergey
29.08.2018
13:21:02
Напомните пожалуйста, что значит "х" в импорте модуля.
x/net/http2

Daniel
29.08.2018
13:21:12
ничего

Google

Sergey
29.08.2018
13:22:18
ничего
Я вроде бы читал что они не от разработчиков Go

Daniel
29.08.2018
13:22:57
и это тоже, в общем, ничего не значит

Никита
29.08.2018
13:23:06

Sergey
29.08.2018
13:23:17

Daniel
29.08.2018
13:23:18
входит

Никита
29.08.2018
13:23:37
Как входит? Он не ставится вместе с Го

Daniel
29.08.2018
13:23:39
то, что не входит, имеет сервер в пути
чтобы понимать, откуда ставить
без сервра в импортх только то, что в GOROOT лежит

Sergey
29.08.2018
13:24:38

Daniel
29.08.2018
13:24:51
а?!
в смысле - SSL сейчас везде же обязателен практически

Sergey
29.08.2018
13:25:46
Но думаю, я смогу ускорить бэк из-за http2

Daniel
29.08.2018
13:32:07
я однажды делал уже шифрование свое, и даже неплохо получилось. но! ключи на эллиптических кривых решали мою задачу лучше :)
а у вас какая причина делать свое шифрование?


Евгений
29.08.2018
13:57:45
Про обработку ошибок: мне понравился вариант в Rust - всего в 1 символ.
Могло бы выглядеть примерно так:
сейчас:
x, err := strconv.Atoi(a)
if err != nil {
return err
}
вариант:
x, err := strconv.Atoi(a)?
В оригинале:
Вот конструкция, которая может кинуть ошибку:
fn read_username_from_file() -> Result<String, io::Error> {
let f = File::open("hello.txt");
let mut f = match f {
Ok(file) => file,
Err(e) => return Err(e),
};
let mut s = String::new();
match f.read_to_string(&mut s) {
Ok(_) => Ok(s),
Err(e) => Err(e),
}
}
Сокращенная запись:
fn read_username_from_file() -> Result<String, io::Error> {
let mut f = File::open("hello.txt")?;
let mut s = String::new();
f.read_to_string(&mut s)?;
Ok(s)
}
? сокращенное:
``ìf err != nil {
return nil, err
}```
ну или сообразно кол-ву возвращаемых значений: все заданные - нулевое значение, ошибку - в error

Daniel
29.08.2018
13:59:33
будет нечитабельно
вообще, коллеги, проблема не в if err != nil

Google

Daniel
29.08.2018
14:00:15
проблемы глубже

Евгений
29.08.2018
14:00:33
на примере функции из предложения:
func printSum(a, b string) error {
x := strconv.Atoi(a) ?
y := strconv.Atoi(b) ?
fmt.Println("result:", x + y)
return nil
}

Lesha
29.08.2018
14:02:06

Dorian
29.08.2018
14:07:17

Sergey
29.08.2018
14:25:21
Плохая практика возвращать из функции указатель?

Daniel
29.08.2018
14:26:38
почему?
возвращайте то, что надо

Sergey
29.08.2018
14:28:11
А делать глобальный объект по типу Фасад - плохо?

Dorian
29.08.2018
14:28:32
Какой обьект?

Daniel
29.08.2018
14:28:42
с глобальными объектами сложнее

Sergey
29.08.2018
14:29:01
У меня есть структура Core, в нем Users, Redis, etc

Daniel
29.08.2018
14:29:22
а зачем она такая?

Dorian
29.08.2018
14:29:25
Пробовал, мне не понравилось

Sergey
29.08.2018
14:30:22

Dorian
29.08.2018
14:31:04

Sergey
29.08.2018
14:31:17

Dorian
29.08.2018
14:31:30
В них глобальные на уровне пакета с мутексами и прочим
Гляньте лог пакет из стд
Или фмт

Google

Sergey
29.08.2018
14:48:26
Если функция возвращает int а я потом его каждый раз конвертирую в uint8 - это не хорошо?

Daniel
29.08.2018
14:49:02
на этот вопрос нет однозначного ответа

Crypt
29.08.2018
14:52:51

Sergey
29.08.2018
14:53:06

Crypt
29.08.2018
14:53:16
тогда нет)

Никита
29.08.2018
14:58:19
Так а в чем смысл, если ты и так так выделяешь память под int, возвращая его из функции?
Конвертация тут не имеет никакой пользы

Dorian
29.08.2018
15:01:43
Вы там игры под 8ми битку пишете что ли?

Foxcool
29.08.2018
15:14:40
кстати
https://github.com/therecipe/qt юзал кто?

Александр
29.08.2018
16:09:34
ну гуи под гоу это "Такое"
из за сборщика мусора

Subbotin
29.08.2018
16:10:23
сборщик мусора - 5 мс
человеческий глаз такое не замечает

Евгений
29.08.2018
16:10:48
вроде не так плохо 5 мс?
а в java?

Subbotin
29.08.2018
16:11:03
как получится :)

Александр
29.08.2018
16:11:22
спроси у игроков CS:GO

Google

Sergey
29.08.2018
16:11:42

Александр
29.08.2018
16:11:58
мне 30 ?

Subbotin
29.08.2018
16:12:11

Виктор
29.08.2018
16:12:44

Subbotin
29.08.2018
16:13:51
а лаги интерфейса на 5 мс иногда потеряются в задержках рендерах и считывания сканкодов клавиш. на современных ноутах от нажатия на кнопку до появления символа на экране обычно проходят десятки милисекунд. в плохих случая - больше сотни

Александр
29.08.2018
16:14:20
рендер может попадать в циклы отрисовки на мониторе, и прочие радости

Виктор
29.08.2018
16:14:47
я бы это обсудил, но боюсь не подходящий чатик)

Subbotin
29.08.2018
16:15:24
я предлагаю сойтись на том что 5 мс - копейки на фоне обычных лагов системы
динамичные шутеры наверное не стоит на го писать

Roman
29.08.2018
16:16:54

Александр
29.08.2018
16:17:18
видел статейку забавную, лаги при 60 fps (заметные)
не давно только отловили в чем грабли

Виктор
29.08.2018
16:18:24

Roman
29.08.2018
16:20:27
60 fps = 16,6 миллисекунд на кадр, если у тебя в кадр X runtime решит порыскать по помойкам прям ровно 5 мс, то у тебя на кадр останется 11,6 миллисекунд, т.е. на целых 30,13% меньше для обработки логики и отрисовки.
а если GC займёт более 10 миллисекунд то ты практически кадр потерял и получил микролаг
GC можно использовать только для бизнес логики, не для самого рендера, тот должен быть manually managed