@gogolang

Страница 1265 из 1630
Алексей
30.07.2018
10:17:20
разница там до 85%
85% - это когда два десятка файлов на сайт?

или больше?

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? для фронта?
не понял вопроса

если про прод, то там бандлы

в разработке фронта 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
ну хорошо, и как это связано с h/2?
это связано тем, что не будет супервыигрыша в 85% у http 2 на небольшом количестве файлов

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
ну хорошо, и как это связано с h/2?
из того, что я знаю, h/2 дико деградирует при плохом коннекте и потере пакетов, так что он еще ооочень долго не взлетит

а в лабораторных условиях да, 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
большую часть занимает хендшейк
я могу ошибаться, но мне кажется, что tls должен уметь минимизировать хэндшейк при повторных коннектах

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

наверное keepalive в настройках самого сервера?

Andrei
30.07.2018
10:29:47
щас бы в чатике по го обсуждать h/2, tls, node_modules и тд. https://t.me/goflood <- тут есть сиськи, печеньки и споры обо всем.
golang - специализированный на вебе язык, как бы это здесь не отрицали, а http и http2 - то веб

Алексей
30.07.2018
10:30:11
наверное keepalive в настройках самого сервера?
я про сам tls сейчас, а не про http

То есть подключились к серверу 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
не, эт нормально, просто очевидно, что при доказанном факте вы не готовы признать, что протокол решает проблемы без излишней оптимизации, которая как известно root of all evil
Как я и говорил ранее, эта "излишняя оптимизация" скорее всего будет необходима и при h/2. Потому что чудес не бывает и сотни файлов (а современный фронтенд до сборки в бандл - это сотни файлов в лучшем случае) не пройдут быстро-быстро даже через h/2.

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

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

Pawel
30.07.2018
10:39:53
и это без учёта node_modules
чаво? ноде модулес???

ору че та

в нормальном фронте один js файл на spa

Admin
ERROR: S client not available

Алексей
30.07.2018
10:42:06
чаво? ноде модулес???
Ну вообще-то да

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

Алексей
30.07.2018
10:42:32
в нормальном фронте один js файл на spa
Это в собранном состоянии

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% бизнес кейсов

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
ну и это два разных кейса, которые по разному решаются

Страница 1265 из 1630