
Алексей
30.07.2018
10:17:20
или больше?

Andrey
30.07.2018
10:17:34
это обычный react/a2/vue
есть еще всякие трекеры

Google

Алексей
30.07.2018
10:17:59
обычный react/angular2/vue - это bundle.js и bundle.css

Andrey
30.07.2018
10:18:18
который только для прода и отключается
меньше css, быстрее DOM repaint

Алексей
30.07.2018
10:18:40
потому что никто в здравом уме без сборки фронт отдавать не будет

Andrey
30.07.2018
10:18:59
есть такая штука как critical-css для отрисовки нужной картинки на загрузке
ваши представления о вебе уже подустарели, можете обновить, клиентская оптимизация не так критична с h/2

Алексей
30.07.2018
10:21:35
и это без учёта node_modules

Andrey
30.07.2018
10:21:55
ну вот вы уже сами себе противоречите

Алексей
30.07.2018
10:22:13
а про размер node_modules вы и так знаете скорее всего
и эта здоровая штука в проде по любому должна бандлится

Andrey
30.07.2018
10:22:49
node_modules? для фронта?

Алексей
30.07.2018
10:23:04
потому как такое количество файлов даже через http2 будет передаваться слишком долго

Google

Andrey
30.07.2018
10:23:06
внутри любой SPA - вполне целевой набор css/js для конкретного экрана
ну а вы попробуйте, расскажете о новом опыте

Алексей
30.07.2018
10:23:56
если про прод, то там бандлы
в разработке фронта node_modules имеются

Andrey
30.07.2018
10:24:48
и прям на фронт и выплевываются в виде бандлов?
кажется, есть процесс сборки

Алексей
30.07.2018
10:25:58
бандл - это и есть результат процесса сборки

Andrey
30.07.2018
10:26:15
и весь node_modules прям выплевывается?
или я не понял?

Алексей
30.07.2018
10:26:18
куча модулей слепленных в один файл и минифицированные
из node_modules в том числе

Andrey
30.07.2018
10:26:46
ну хорошо, и как это связано с h/2?

Алексей
30.07.2018
10:26:49
потому что любой фреймворк и любая либа ставятся через npm в тот самый node_nodules

Andrey
30.07.2018
10:27:17
и поэтому h/2 не нужен?

Алексей
30.07.2018
10:27:34

Andrey
30.07.2018
10:27:53
весь веб это борьба за латенси

Алексей
30.07.2018
10:28:01
http 2 нужен конечно, но совершенно не является обязательным и необходимым

Andrey
30.07.2018
10:28:06
большую часть занимает хендшейк
в h/2 хендшейк один на весь сеанс передачи

Google

Andrei
30.07.2018
10:28:26
а в лабораторных условиях да, h2 крут, но только в них

Alexander
30.07.2018
10:28:54
щас бы в чатике по го обсуждать h/2, tls, node_modules и тд. https://t.me/goflood <- тут есть сиськи, печеньки и споры обо всем.

Andrey
30.07.2018
10:29:01
10 хендшейков и 1 хендшейк, что быстрее?

Алексей
30.07.2018
10:29:17

Andrey
30.07.2018
10:29:29
ого, и кто ему об этом расскажет?
наверное keepalive в настройках самого сервера?

Andrei
30.07.2018
10:29:47

Алексей
30.07.2018
10:30:11
То есть подключились к серверу X, либа смотрит, что уже был коннект к такому серверу и эфемерные ключи уже сгенерированны - всё юзаем их и не тратим время на новую генерацию и передачу откурытых ключей туда-сюда.
И мне кажется, что такая очевидная оптимизация уже сделана в протоколе

Andrey
30.07.2018
10:32:47
интересно, а где скип tcp handshake?

Алексей
30.07.2018
10:33:03
ну tcp handshake уже не скипнуть, да

Andrey
30.07.2018
10:33:27
а теперь еще раз, 10 хендшейков или 1 - что быстрее?

Алексей
30.07.2018
10:35:19
блин, я опять же не про то спорю вообще
я не говорю, что h/2 медленней
я говорю что он быстрее, но для нормальных сайтов незначительно

Andrey
30.07.2018
10:36:02
ловко вы крутитесь

Алексей
30.07.2018
10:36:04
нормальный сайт - это не несколько десятков мелких файлов

Google

Andrey
30.07.2018
10:37:18
не, эт нормально, просто очевидно, что при доказанном факте вы не готовы признать, что протокол решает проблемы без излишней оптимизации, которая как известно root of all evil
сводя весь разговор про неприменимость h/2 в случае количества файлов (= числа возможных коннектов для https) больше чем один

Алексей
30.07.2018
10:38:52

Andrey
30.07.2018
10:39:04
я вас услышал

Алексей
30.07.2018
10:39:51
И даже так можно сказать: скорее всего посылка одного большого файла всё равно будет быстрее посылки нескольких маленьких даже через h/2

Pawel
30.07.2018
10:39:53
ору че та
в нормальном фронте один js файл на spa

Admin
ERROR: S client not available

Andrey
30.07.2018
10:41:33

Алексей
30.07.2018
10:42:06

Andrei
30.07.2018
10:42:16
в нормальном фронте один js файл на spa
нормальный фронт при разработке состоит из множества файлов, которые, как правило, ставятся через npm и оказываются в node_modules^ а уже при деплое собираются в один большой файл

Алексей
30.07.2018
10:42:32

Pawel
30.07.2018
10:43:01

Andrei
30.07.2018
10:43:33

Andrey
30.07.2018
10:43:44

Daniel
30.07.2018
10:44:15
коллеги, о чем вы тут?

Andrei
30.07.2018
10:47:08
коллеги, о чем вы тут?
если вкратце, одна сторона кричит об очередной серебрянной пуле в виде http/2, а другая пытается отбрехатся, что http/2 по факту мало кому действительно нужен

Andrey
30.07.2018
10:47:44
интересная интерпретация мнения
пытался искать по словосочетанию "самый лучший", "silver bullet", "bulletproof"

Google

Andrei
30.07.2018
10:49:01
ну а как бы что вы пытались доказать все это время? что бинарный протокол быстрее текстового? да он быстрее

Andrey
30.07.2018
10:49:02
возможно современный звучит как state of art
но это неважно, люди разные.

Andrei
30.07.2018
10:49:56
но не настолько быстрее, чтобы все резко бросились его использовать, плюс как я писал выше, http/2 дико деградирует при плохом соединении, а это 90% бизнес кейсов

Roman
30.07.2018
10:52:16

Andrey
30.07.2018
10:52:26
у каждого инструмента своя сфера применимости, для go - возможными зонами комфорта будут parallel programming, system programming, microservices. для h/2 свои, все что хотелось бы донести

Roman
30.07.2018
10:54:07

Andrey
30.07.2018
10:54:34
без кипалайва от клиента и поддержке сервером - нет

Roman
30.07.2018
10:55:11
4.002s - HTTP2 is 14% faster than HTTP
4.164s - HTTP2 is 17% faster than HTTPS


Anton
30.07.2018
11:37:56
всем ? подскажите, пожалуйста, в каком направлении думать. нужно запилить поддержку мультиязычности в rest api, т.е. например некоторые строковые поля у структур превратить в набор переводов на разные языки. соответственно админам показывать все переводы, а клиентам только нужный. пока додумался до чего-то такого:
type TranslatedString struct {
Ru string `json:"ru,omitempty"`
En string `json:"en,omitempty"`
De string `json:"de,omitempty"`
Fr string `json:"fr,omitempty"`
}
type Thing struct {
ID *uuid.UUID `json:"id,omitempty"`
Name TranslatedString `json:"name,omitempty"`
Description TranslatedString `json:"description,omitempty"`
}
type ThingView struct {
Thing
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
}
но тут ещё не очень понятно, как, во-первых, это потом в SQL хранить, разве что поля с префиксом, вроде name_ru, name_en, и во-вторых, нужно будет каждой структуре ...View ручками добавлять методы типа Translate(lang string) и наполять эти переопределённые поля нужными строками, например:
// допустим у TranslatedString есть метод Translate(lang string) string
func (v *ThingView) Translate(lang string) {
v.Name = v.Thing.Name.Translate(lang)
v.Description = v.Thing.Description.Translate(lang)
// ...
}
может кто сталкивался, какой самый безболезненный способ с этим работать?


Aleksandr
30.07.2018
11:41:02
ты же 2 недели назад спрашивал про это

Anton
30.07.2018
11:42:06
ну задача та же, там про что-то другое был вопрос ?

Aleksandr
30.07.2018
11:43:42
поля с префиксом точно нет. храни в отдельной таблице

Dmitry
30.07.2018
11:43:58
Вот вот

Anton
30.07.2018
11:44:14
а, там было про то, почему когда есть тэг json:"...,omitempty" и используется кастомный метод MarshalJSON, то omitempty игнорируется
окей, спасибо. а реально вообще будет сделать некую функцию, основанную на рефлекшене, что-то типа func Translate(v interface{}) {}, которая сама будет проходиться по полям переданного в него объекта, понимать, что они определённого типа, например, TranslatedString и переводить их через поинтер? ну, чтобы ручками не писать методы к каждой ...View структуре.

Aleksandr
30.07.2018
11:53:26
зачем это все нужно?
у тебя есть два кейса - перевод интерфейса для юзера и перевод самого текста в админке для админов. верно?

Anton
30.07.2018
11:54:20
да

Aleksandr
30.07.2018
11:54:41
ну и это два разных кейса, которые по разному решаются