Как стать автором
Обновить

Комментарии 2474

НЛО прилетело и опубликовало эту надпись здесь
Всё хорошо в меру. Только что попробовали открыть XML файл в пару сотен метров (не спрашивайте зачем) в 17 VisualStudio под десяткой. На относительно свежем компе с 4 пнём (хз какой именно) и 16ГБ оперативки. Через 15 минут грохнули не дождавшись его выхода из медитации.
А в FARе за сколько откроет?
Мгновенно, он умеет обрабатывать кусочками из произвольного места. Только colorer плагин будет в фоне с начала расцветку считать.

'кусочками' научно называется memory mapped files :)

К словам придираетесь
Я не придираюсь — даю детали для потенциально заинтересовавшихся реализацией.
Мне кажется, memory mapped files тут мало при чём. Речь о том, что некоторые редакторы способны отображать файл, лишь распарсив его целиком, а некоторым достаточно распарсивания некоторых определённых частей (в т.ч. той, которая должна быть отображена в данный момент, т.к. находится в видимой на экране части документа). Memory mapped files тут в принципе можно применить, но, по-моему, не обязательно, обычных lseek/read вполне достаточно, разница скорее в алгоритмах, а не в lseek+read vs. mmap.
Memory mapped files тут не просто можно, а обязательно ибо иначе будет больше вероятность лагов ;)
Мне кажется, или в случае, если весь файл влезает в RAM (точнее даже не так, если все данные, необходимые парсеру/просмотрщику влезают в RAM), то это совершенно лишнее? Исходя из определения
Не лишнее, memory mapped files позволяют убрать лишнюю прослойку и сразу использовать данные из файлового кэша системы. При использовании обычного подхода получится, что система в любом случае откроет файл и он в любом случае будет в кеше, но в память приложения данные придётся копировать. и для sasha1024 тоже.
Я так понимаю, в кэше будет не обязательно весь файл, а может быть часть файла (если он большой).
А что значит «но в память приложения данные придётся копировать»?
Upd.: А, всё, я кажется, понял. При read происходит перенос данных в уже выделенную пользователем память. При этом эта память уже контроллируется приложением, т.е. оптимизировать это каким-то ре'map'ингом страниц (или как там ОС это делать может) не выйдет.
Агу, именно так. Кроме того остаётся пусть и небольшой но оверхед на работу самих API файловой системой, а тут для приложения сразу доступен уже очищенный от всего связанного с ФС кусок памяти содержащий данные файла.
Ну, оверхед на работу с файловой системой будет в любом случае — разве нет?
Этот оверхед конечно останется, но вся эта работа и так производится. Просто тут очень удобно получается, что данные уже лежат в памяти и воспринимать их как файл нет никакой необходимости.
Ну, на скорости это практически не сказывается.
О чём вы спорите?
Far давно в Open Source — уже можно было пять раз посмотреть
Не совсем понял, как реализация Far'а что-то докажет.
Более того благодаря этому можно делать очень полезные вещи для многопроцессной обработки чего либо.
По сути, благодаря mmap мы избегаем лишнего копирования данных из одного участка оперативной памяти в другой. Что достаточно быстрая операция. А основной затык тут не в mmap vs. lseek+read, а именно в алгоритмах, которые либо довольствуются малыми кусочками файла, либо заставляют вычитать с диска (нагрузка на диск) и распарсить (нагрузка на процессор и опять же таки оперативную память) значительный кусок файла или вообще весь файл.
Обосновать как-то сможете?
редактор/ide отображает (при подсветке синтаксиса и прочих плюшках) не plain text (где да, memory mapping помог бы) а по сути AST дерево, которое надо где то хранить. И вот это AST во первых весит больше исходника, во вторых его еще создать надо — то есть распарсить весь исходник. vim худо бедно справляется потому что у него подсветка на регулярках, и она регулярно ломается.
И вот это AST во первых весит больше исходника…
Кстати, необязательно. Это AST может:
  • во-первых, не содержать в себе сами строки, а лишь ссылаться на позиции в исходном файле;
  • во-вторых, быть не полностью детализированным (т.е. условно говоря, мы распарсим первую функцию в файле-исходнике полностью на всю глубину, но если она выше екрана, то тут же забудем результат парсинга за исключением её собственно начала и конца (т.е. удалим все узлы глубже узла самой функции), а если она снова попадёт в экран — распарсим заново (т.е. детализируем этот кусочек дерева)).
Но, да, на практике там делают немногие, та и в любом случае всё, что выше экрана, придётся распарсить, а это время, даже если результат детально не хранить.
Похожий функционал был еще в некоторых DOS-приложениях (для просмотра БОЛЬШИХ изображений вроде растровых карт) а в DOS memory-mapped files не бывает. Руками можно все сделать. Сложно но можно.

Memory mapped files — это просто немного удобства для программиста. Под CP/M-80 (в которой ещё не было не то что mmf — банальных file handles) текстовый редактор wordstar спокойно правил файл больше размера оперативки.

Не знаю, как фар, а блокнот++ открывает за <1сек.
Вообще по опыту там дико тормозит подсветка кода, и такая беда не только там.
Ну конечно, ведь в этом случае надо разбить текст на токены, и хорошо если разработчик предусмотрел токенизацию ± экран, но ведь в сложных больших структурах где, к примеру, есть один корень и много ветвей (тот же xml), это может быть нереально, соответственно нельзя определить где находится начало, откуда можно стартовать синтаксический разбор, и соответственно корректную подсветку создать просто не выйдет.
Как раз в xml это проще простого. Токенов там мало и они все достаточно легко распознаются. Там не требуется делать разметку с корня, достаточно чуть отойти назад и найти начало любого токена. Проблема будет только с CDATA, но на него пофиг.
Возможно, но опять же имхо зависит от структуры xml, на моём текущем проекте xml, смёрженный из 5-10 xml может быть от 100-150 MiB и выше, как повезёт. В этом случае открытие файла в np++ становится мучением, как и работа с ним.
Раньше использовал EditPlus2 (не помню, почему отказался частично), до 50Мб он переваривал не морщась, больше не пробовал.
При открытии большой пачки файлов, пусть даже мелких, на сотню байт-пару килобайт, зависает на иногда до 5-10 секунд, на так и не посчитал каком по счёту файле, что-то после 120, но не всегда на одинаковом количестве. (вот сейчас проверил — завис, правда только на пару секунд, на 127-ом)

Я тоже отказался от него в больше части предыдущих операций и перешёл на AkelPad. Он оказался лучше Notepad++.
Если не секрет, зачем нужно открывать 100+ файлов одновременно? А если какое-то однотипное массовое редактирование, то уж проще скриптами. Ну и пару сек — это не катастрофа. Многие редакторы один файл открывают дольше.
Пара секунд только сейчас, при открытии же «обычной пачки» из ~200-300 файлов — зависает на заметное время.

Для перевода делаю копию файлов. А им нужно иногда конвертирование между форматами (из Unix в Win) и изменение кодировки (последнее можно автоматизировать).
После покупки автором оригинала — огрызкобука, часть файлов он стал сохранять в формате Unix. Изредка он заменяет много файлов, бывают сбои синхронизации и резервного копирования. На самом деле такое редко нужно, но всё же бывало, такое приходилось делать массово.
Да, можно написать конвертер и я писал один (но только для смены кодировки), но он тоже не универсален, тем более учитывая, что иногда файлы для работы нельзя выделить из всей пачки :(.
Осталось понять чем вам perl-скрипт на 20 строк не угодил и зачем для конвертации вообще привлекать редактор.
«Осталось понять, чем...» вы читали предыдущий комментарий :(. В котором я достаточно полно описал, зачем мне нужен редактор, да, помимо двух «конвертаций»!
А ещё, помимо самого скрипта, мне внезапно(!) понадобится интерпретатор — сам perl. Офигенный «скрипт», угу.
А ещё, он делает только одно, довольно редко нужное действие, но не делает второе, самое важное конвертирование — смену кодировки.
А ещё, он делает только одно, довольно редко нужное действие, но не делает второе, самое важное конвертирование — смену кодировки.
Смену кодировки делает iconv.

А ещё, помимо самого скрипта, мне внезапно(!) понадобится интерпретатор — сам perl.
На любой современной Unix-системе он есть. А откуда у вас возьмутся файлы в Unix-кодировке если у вас нету Unix'а — для меня загадка.

В любом случае если такое происходит не один раз в жизни, то проще поставить CygWin, чем забивать гвозди микроскопом, если один раз — можно и потерпеть пока редактор эти файлы откроет…
В любом случае если такое происходит не один раз в жизни, то проще поставить CygWin, чем забивать гвозди микроскопом

Забивание гвоздей микроскопом — это как раз куча мусора в системе в виде cygwin'ов, перлов и прочей ненужной гадости для решения одной задачи.

Ваши комментарии оскорбляют мой разум! Даже не знаю, чего в них больше — издёвки, насмешки или просто оскорбления.

Вы второй раз не потрудились прочитать, видимо лозунг — «комментарий не читай, ответ строчи», вам весьма близок?

Ezhyg 24.09.18 в 00:41
После покупки автором оригинала — огрызкобука, часть файлов он стал сохранять в формате Unix

khim 24.09.18 в 04:30
А откуда у вас возьмутся файлы в Unix-кодировке если у вас нету Unix'а — для меня загадка.

Для меня загадка — диагноз, который можно поставить по этой цепочке комментариев.
Вдобавок даже в предыдущем комментарии вы, похоже, так же не потрудились прочитать комментарий на который решились ответить, с как бы «желанием» помочь.
Смену кодировки делает iconv.

Я рад за него, чесслово! Мало того, изредка, даже использую его помощь.

На любой современной Unix-системе он есть.

Не на любой. Но это и не важно, при чём тут юниксы ваще? EditPlus2 — Windows программа, как я могу работать в ней, при этом конвертировать что-то скриптом питона, а затем айконвом? (только не вздумайте мне рассказывать про вторую машину или виртуалки)

В любом случае если такое происходит не один раз в жизни, то проще поставить CygWin, чем забивать гвозди микроскопом, если один раз — можно и потерпеть пока редактор эти файлы откроет…

Да уж… тащить огромный пакетище для мелких разовых вещей — очень по красноглазиковски!
Здесь я согласен с Druu

Если уж вы решили комментировать, то будьте добры, потратьте своё, безусловно бесценное, время и прочитайте уже комментируемое!
Не оскорбляйтесь так сильно. Я, например, долго пытался понять, автор какого именно оригинала купил огрызок, и почему он, автор, решил сохранять в Юникс-формате.

Опять же, программисты наверное предполагают, что у вас есть возможность хоть на чем-то написать маленький скрипт. Наверняка, не пытаясь этим вас обидеть.

Ну а айконв, наверное, посоветовали, поскольку вы писали свой велосипед.

Никоим образом не пытаюсь оскорбить ваш разум. Может, я не совсем понял, что он писал и как думал, поэтому заранее прошу у него прощения.

Надеюсь, мой незаангажированый комментарий убедит вас, что вас не хотели обидеть.

Что до сотен файлов открытых в редакторе — то, очень интересное наблюдение. Прям как в том анекдоте, на любую бензопилу, найдется рельса которая её сломает. Интересно, сколько сотен или тысяч файлов повесят редактор окончательно.
Да, так и не понял каким именно вы пользуетесь.
Я никогда не оскорбляюсь, не вижу смысла. Чего и вам желаю :D

долго пытался понять, автор какого именно оригинала купил огрызок, и почему он, автор, решил сохранять в Юникс-формате.

Автор оригинала (файлов), переводимого мной (слово перевод вам надеюсь понятно?)

Формат Юникс, потому что огрызкобук же, потому что там этот формат вообще-то по умолчанию в его редакторе. А не самого мак-а, потому что его редактор — *никсовый, а не яблочный.

Опять же, программисты наверное предполагают, что у вас есть возможность хоть на чем-то написать маленький скрипт. Наверняка, не пытаясь этим вас обидеть.

поскольку вы писали свой велосипед.

Так я и написал. Хотя это не скрипт и уж точно не велосипед! Нормальная команда запуска редактора без гуя (консольно), с параметрами конвертирования из одной кодировки в другую. И я сразу же объяснил, что конвертировать надо «два раза», но нет… начинается снова предложение вначале одного, на перле, потом второго на пхп, да и вообще не под ту ось. Это же клиника!

Что до сотен файлов открытых в редакторе — то, очень интересное наблюдение.

Я же говорю, это бывает нужно редко, ну какие буквы-то незнакомы? :(
Тем более, не важно — отдельно я сконвертирую или вместе, мне же всё равно эти файлы открывать и редактировать.
Всего файлов там около 3800, но ни разу ещё не было чтобы «испортилось» больше пары сотен.

И я описал почему я так же отказался, как и автор комментария, прокомментированного мной.
Раньше использовал EditPlus2 (не помню, почему отказался частично)


0xd34df00d в репах есть:
безазотистые вещества (6,5 %), азотистые вещества (1,1 %), жиры (0,2 %), минеральные соли (в нём очень большое содержание кальция), витамины (А — 0,04 мг, С — 8—20 мг, B1 — 0,08—0,11 мг), значительное количество сахаров и витамина PP. Богата янтарной кислотой.

Никаких dos2unix там нет! Это ген такой или вещество?
НЛО прилетело и опубликовало эту надпись здесь
Notepad++ не очень, т. к. не предназначен даже для самого базового редактирования кода (не поддерживает Tab indent space align). Зато зачем-то поддерживает подсветку кода. Бред.
Подсветка кода сильно нужнее. Хотя выравнивание не помешало бы, есть такое.
Но и подсветку значительно сложнее сделать. На несколько порядков.
Это чем сложнее?)
Какая разница какой фон под символом?
Красный, белый или зилёный?
Почему белый фон под символом рендерится за 10мс, а красный фон за 100мс?))) Цыфры условные.
Вы вообще понимаете, что разницы в принципе нет никакой? И не должно быть.
Разница получается в таких вот поделиях исключительно потому, что поделие сделано из говна и палок. Подсветку прикручивают не на том уровне абстракций. Всего навсего…
Для подсветки нужен хоть какой-то синтаксический анализатор конкретного языка. На регулярках или строящий AST, обрабатывающий весь файл целиком или потоковый, в основном потоке или в фоновом процессе, но анализатор. Для каждого языка.
Ага ага…
Вы еще скажите, что отрисовка процессором символа с фоном медленней, чем определение того какой под символом фон нужен.
Причём тут это?
Как это причем?
У вас решение какое-то дичайшее.
Вы говорите что парсить строчьку дороже, чем символ с красным фоном рисовать.
ВЫ ОБЪЯСНИТЕСЬ ХОТЯ БЫ КАК-ТО??? Как такое может быть вообще?
Или вы что не понимаете, что вы люто бредите??
НЛО прилетело и опубликовало эту надпись здесь
Вообще то тут сильно зависит от того, что парсить и как рисовать. И на каком железе. Парсинг строки кода на C++ может быть сильно медленнее, чем отрисовка символа 16х16 пикселей с заданным фоном.
А вообще мне кажется, Вы с VolCh о разных вещах говорите. Вы — о времени выполнения, а он — о времени разработки.
НЛО прилетело и опубликовало эту надпись здесь
Конечно парсить строчку, иной раз в несколько мегабайт длиной, дороже, чем рисовать сиволы с разным цветом фона. Как минимум в случае когда символы мы по любому рисуем и нам нужно лишь определять каким цветом и с каким фоном их рисовать.
В реальность вернитесь уже.
У вас строка бывает длиной в несколько мегабайт? И зачем подсвечивать эту строчку длиной в мегабайт?
Вы про какой парсинг сейчас говорите?
Давайте разбираться. Парсинг всего документа целиком — это одно. И да, совершенно прав человек, когда пишет, что если начало комментария 900 строчками выше, то надо парсить весь документ. Так символ комментария может быть не только на 900 строк выше, а выше еще и на 1800-ой строке. Комментарий кто-то попытался сделать вложенным например. И не надо говорить что где-то это запрещено, а где-то разрешено, и где-то документ будет валидным, а где-то нет. Суть не в этом. Парсить ДОКУМЕНТ в любом случае нужно. Но я не про парсинг документа) Я про парсинг строки. Т.е. где в строке подсветить символы. Я про графику. И только. Т.е. есть строка, уже распарсенная. Так вот вам в этой строке нужно подсветить исходя из распарсенного — символы 10,11,12, 34,35,36 и т.д. Вот это и тормозит. А тормозить не должно никак. Имея именно распарсенный документ любой, т.е. абсолютно любой — тормозит именно подсветка символов. Это же увидеть абсолютно легко. Берете документ на 10кб и на 10мб — подсветка тормозит в обоих случаях. И тормозит именно определение того, где какой символ подкрасить, т.е. фон поменять. А фон меняют через лютые костыли зачем-то. Вот это и тормозит больше всего.
Выходит так, что тормозит не парсинг документа, а графика. Это как с курсором выжирающим ядро. Типа того.
Документ состоит из строк. Распарсить документ = распарсить все строки. И это вам нужно вернуться в реальность, где строки никто не парсит снова, чтобы подсветить её части. Определение цветов символов в строке — это не парсинг.
Да что вы говорите) Т.е. если вы получили некую структуру данных о документе, то в ней что-то сказано о том где и как красить фон символов? Наложение раскраски тоже никто не отменял. Закомментированное что-то может быть тоже внутри раскрашено, но бледно. Перенос строки разве кто-то отменял? И как вы в такой строке красить собираетесь? А если идут 20 табов и строка уходит за экран? Тоже подкрашивать то что ушло за экран? Вам графическую часть парсить придется и еще как. И да, тут нужно будет тоже парсить. И это парсинг тоже.
Наложение — это наложение, проецирование если угодно, может разметка, но никак не парсинг. И до графической части там ещё далеко.
А до какого уровня парсить, насколько подробную подсветку мы хотим?
Рисовать буквы одним цветом, цифры другим, прочие символы третьим — элементарно и почти ничего не стоит. Подсветка ключевых слов, строк, комментариев — уже зависит от синтаксиса языка. Выделить имена классов, элементы перечислений, парные скобки — нужен полноценный парсер. Неиспользуемые параметры? Неинициализированные переменные? Теперь рисование разноцветных символов требует транслятора с анализом dataflow…
Я имею ввиду реализовать подсветку синтаксиса в редакторе программного кода на порядки сложнее, чем реализовать в редакторе tab indent space align.

Во втором случае понадобится всего несколько строчек кода, а в первом месяцы или даже годы работы (если делать в одиночку, придумать кучу всяких тем, поддержать 100 языков программирования, для каждого из которых нужен синтаксический анализатор, сделать всё оптимайзно, красиво в архитектурном плане и т. д.).

Так вот, Notepad++ решил пойти по странному пути. Потратить годы работы на подсветку синтаксиса — это ок, а потратить 5 минут времени на Tab indent space align — не ок, хотя эти две фичи одинаково важны.
Ну, на счет одинаково важны — это все таки субъективно. Я вот вообще почти не слыхивал про tab indent space align, а подсветка синтаксиса очень помогает.

Если отключить из редактора intellisence, подсветку синтаксиса, то вероятнее он откроется быстрее. Тот же sublime, если автоматом не поставит подсветку синтаксиса, то может открывать файлы в разы больше чем с подсветкой. Хотя Vim например и с подсветкой открывает достаточно шустро.

Блокнот++ открывает быстрее секунды с подсветкой. На самом деле там 2 проблемы
1. подсветка. У многих она тормозит. У некоторых — безбожно.
2. Весь файл в одну строку. Такая подстава многие редакторы ставит на колени. Как пример: PSPad с подсветкой справляется, а вот с однострочниками нет. Более того, там даже прокрутка будет безбожно тормозить (если вкл автоматический перенос)
Помнится перестал использовать PSPad после того как надоели постоянные падение при попытке открыть хотя бы метровый файл
Та же самая ситуация, сам по себе PSPad был отличным продуктом, но если бы не эти мелочи. Но зато я открыл для себя существование Notepad++ и Sublime Text
Если бы ещё в Notepad++ можно было бы редактировать программный код. Туда зачем-то впихнули подсветку синтаксиса, а какой в этом толк, если всё-равно не поддерживает tab indent space alignment.
НЛО прилетело и опубликовало эту надпись здесь
Подсветка синтаксиса в Notepad++ полезна тем чтобы глаза не вытекали и чтобы можно было, например, скрипт для cmd отредактировать. А для редактирования кода и разработки есть IDE, её и необходимо использовать.
Имеющаяся IDE неповоротлива и бедна на подсветку синтаксиса, поэтому используется Notepad++
А что мешает самим написать плагин?
  1. Написал бы, но я работаю с другими языками программирования.
  2. Это странно, для такой базовой функциональности писать плагин. Давайте ещё напишем плагин нажатия клавиши Enter, чтобы перенести курсор на следующую строку, предваритально создав её, потом напишем плагин для стрелок — а чё, хочешь перемещаться по коду, ставь плагин! и т. д.
  3. У notepad++ есть какие-то баги с плагинами — не сохраняются настройки.
  4. Но конечно же всегда можно сделать Pull Request! Но даже если бы я писал на этом языке, то не знаю, стал ли бы я делать. Потому что когда языки совпадали, я пулл реквестил аж в 5 проектов. В двух из них авторы до сих пор рассматривают их уже 2 года (хотя перед pull request'ом я с ними общался, они были не против изменений). Казалось бы, всё готово, им нужно только одну кнопку нажать и смержить изменения, но нет. В одном проекте исправил ошибку, но pull request тупо отклонили, сказав, что не хотим мы ваших исправлений. И только в двух проектах pull request'ы без проблем приняли.

    Выяснять отношения и годами просить принять pull request поднадоедает. Хочется просто взять, реализовать фичу, и всё, а не заниматься не пойми чем. Хочется заниматься именно программированием.
хм
  • вы перемещаетесь по коду стрелочками
  • «Выучить новый язык программирования» на уровне написания плагина непосильная задача

да практически герой статьи в топике.
Необязательно непосильная, но значительно усложняет процесс. Вместо того, чтобы взять и написать, нужно вначале изучить язык, потом разобраться как писать эти плагины, подключать и т. д.

И самое главное — ради чего? Ради того, чтобы следующий человек пришёл и сказал «А где tab indent space alignment?»? Ну да, наверное, найдёт плагин в гугле. По факту плагин уже есть давно. Но работает плохо. +В Notepad++ не сохраняются настройки плагинов.
Не замечал такой проблемы. Может, это из-за того что программа с плагинами поставлена в папку Program Files запись в которую под правами пользователя по умолчанию системой пресекается.
НЛО прилетело и опубликовало эту надпись здесь
Должны, но приложение можно поставить и по старинке, оно будет всё хранить в своей папке получая каждый раз облом. А в новой винде есть ещё и прозрачный механизм переноса этих файлов в профиль для старых приложений, они не заметят подвоха. Может, механизм как-то неправильно работает — насройки исправно сохраняются, но плагины пытаются читать их по старому месту?
НЛО прилетело и опубликовало эту надпись здесь
Странно. Сам активно им пользовался и падений особо не припомню. Отказался как раз из-за невозможности работы с большими однострочными файлами (дичайше тормозил). Но если файл порубить предварительно на строки — вполне норм. Для нарезки использовал EditPlus2, он без проблем пережевывал 50+метров (больше просто не пробовал)
Я в читерскую бытность частенько открывал непотребные файлы текстовыми редакторами. Переживали такое немногие. Это было году в 2004 в расцвет WinXP и тогда много чего под винды отваливалось по разным причинам.

Ну сделай ты подсветку синтаксиса отдельными потоком, чтобы не мешать пользователю пользоваться твоей программой.
Сперва разработчики для iOS догадались (ОК, их заставили) переносить тяжёлые и долгие операции в фоновые потоки.
За ними подтянулись разработчики для Android.
А на десктопах всё так же по старинке всё одним потоком, последовательно — если у пользователя комп тормозит, то пусть купит себе новый, ага.

Интересно, за что Вас заминусовали…
Ну у джетбрейнс парсинг отдельным потоком или процессом

За это мы их и любим.
Но очень многие разработчики ожидают, что их творения будут работать в идеальных условиях, на быстрых процессорах, с достаточным количеством памяти, с быстрой и всегда доступной сетью и т.п.

… с правами админа (десктоп), с доступом ко всем возможным действиям, нужным и ненужным, но пусть будут (мобайл)…

Первое еще можно понять — сисадмин по своей лени выдал разработчику полные права для изменения либ и прочего, вот последний так же ленится релогаться туда-обратно и пишет под админом. Ваше право, возьмите да укажите в требованиях к установке полные права. Нееет, мы умолчим о том, что разработка у нас через одно место, а юзер пусть грешит на себя — то ли комп глючит, то ли ОС криво встала… Из последнего — надстройка Overwolf для TeamSpeak3: под юзером запускалась, все рисовала, но не коннектилась к ей же запущенному TS3.
Порой доходит до абсурда — пользовался плагином EveryHTTPS, и на одном из сайтов сертификат был выдан на айпишник локалхоста, то есть у админа всё работало…

Чтобы делать что-то в отдельном потоке — нужны на порядок более квалифицированные разработчики. Без этого ловим глюки и тормоза (потоки ждут друг друга — не раз наблюдал, как в несколько потоков оказывается медленннее, чем в 1).

Ну, я думаю, такие вещи, как посветка синтаксиса, в любом случае квалифицированные разработчики делают, не?
нужны на порядок более квалифицированные разработчики.

Что значит «на порядок более квалифицированные»? Человек, если вообще способен быть программистом, способен и освоить многопоточность. Многопоточность может потребовать больше внимательности и времени на проектирование, но для её использования не нужно какое-то профессиональное просветление. Это такой же обязательный навык для любого программиста (кроме тех, кто пожизненно связался с какой-то принципиально однопоточной платформой), как и умение делать циклы. Просто проходится на чуть более поздних лекциях.
Я бы согласился, если бы не истории, что физзбазз для людей просто рокет саенс.
Не забывайте, что в коде неминуемо будут ошибки, которые потом придётся искать. Как по вашему, достаточно для этого «пройти многопоточность на более поздних лекциях»?

Конечно, сейчас есть методы, позволяющие кардинально уменьшить сложность многопоточного кода (например, делать все данные либо локальными, либо immutable — вроде современные языки даже научились жёстко устанавливать это ограничение), но всё равно сложности хватает.
Проблема в том что эту подсветку и структуру данных которую читает процесс редеринга надо синхронизировать. И тут мы получаем два варианта: или отрисовка пишет непосредственно в структуру которой оперирует рендер и огромные процессорные ресурсы улетают на обработку блокировок или у синтаксиса своя копия отрисока с ней сверяется по необходимости и мы имеем примерно удвоенное потребление памяти.
у синтаксиса своя копия отрисока с ней сверяется по необходимости и мы имеем примерно удвоенное потребление памяти.

С одной стороны, да. С другой стороны, я помню, как четверть века назад притормаживала подсветка синтаксиса в Turbo Pascal 7 на компьютере «Поиск 1.04». Было примерно как сейчас у меня в браузере при комментировании этой ветки. Лагало, неприятно было, но работать было можно.
Checkit показывал, что быстродействие того «Поиска» было на уровне 0,5 от IBM PC XT (там был 16-битный проц на 5МГц, 608К ОЗУ, и программная эмуляция видеоадаптера IBM CGA). И там подтормаживала подсветка синтаксиса. Блин, но я никак не могу понять, почему она в некоторых IDE подтормаживает сейчас, на восьми 64-битных суперскаляных ядрах по 4ГГц каждое.
да. vim почти всегда шустро.
любопытно за счет чего
XML хороший пример, но в другом смысле. Среди читающих это есть некоторая доля программистов, некоторым из них приходилось парсить XML. Сколько из них пользовались XML DOM парсером, который по определению жрет память, а сколько гораздо более экономным XML SAX парсером? Вот то-то же, DOM настолько удобен для программиста, что в 99% процентов случаев ему прощали его цену. А из десятков таких нюансов и складывается общий оверхед.
На самом деле sax\dom — это фигня (хотя да, скорость там очень отличается). Недавно столкнулся с кодом, который на больших объёмах почему-то (только у клиента) дико тормозил. Практически экспоненциально! Т.е. для файлов в 100 кб вывод занимает секунд 10, а метр — уже к часу дело идёт. Начал разбираться. Оказалось файл формируется по шаблону, а шаблон тупо нарезается на блоки, из которых собирается файл. String.replace-ом. В итоге у разраба на машине с 16Гб оперативки всё работает, а вот у клиента с 2..4Гб моментально выжирается вся оперативка и дальше становится всё очень печально…

Напомнило, как я в своё время всадил фееричную багу.
После нескольких часов работы программа начинала тормозить. Причина: в ней было отладочное окошко с текстбоксом лога, в который я при обработке очередного блока данных добавлял точку (что-то тип dbgForm.textboxLog.Text.Append(".") — дело было на дельфях). Что с каждой точкой оказывалось всё медленней...

В драйверах Qualcomm как-то нашли кусочек кода, где для того, чтобы найти максимум в массиве, его сортировали по неубыванию. Пузырьком.
Это драйвер, т.е. критичный к производительности код. Для мобильных устройств. От Qualcomm.
Если массив маленький, то не критично. Но зачем так криво делать? Можно просто в цикле прогнать один раз.

Да возможно все гораздо проще — исходно надо было сортировать небольшой массив или его часть, сделали пузырек, потом требования изменились и оказалось, что нужен только один элемент, а пузырек остался, т.к. не стали все переделывать.


Почему-то многие забывают, что код не всегда пишется оп и сразу, зачастую он не раз рефакторится, прежде чем дойти до продакшена.

Абсолютно точно.
То ли в 2014, то ли в 2015 у нас налоговая приняла законы, по которым XML-ины электронной отчётности по размеру стали допустимы до 10гб (вроде бы с изначального «копеечного» лимита 10-100мб), так все решения на DOM'ах очень красиво посыпались, когда пошли клиенты с громадными «контролируемыми сделками» и «книгами для ндс». Потому что DOM одной только памяти жрёт х10 от размера файла, и если раньше (100мб-1гб) на это закрывались глаза, то на 100гб глаза уже не закроешь, не говоря уже о платформе х86.
Делал в те времена в системе электронной отчётности проект по уходу с DOM (легаси было крепко на него завязано, XPath и прочие плюшки активно использовались) на SAX в один пробег, с «эмуляцией» плюшек или обоснованным отказом от них — веселья было много. Теперь в резюме указываю тег XML, а на собеседованиях периодически посмеиваются, мол, что там знать-то, древовидная структура, теги/атрибуты и всё. Так-то оно да, но, как и в физическом мире, когда масса объекта пересекает определённые границы, проявляется много интересных эффектов, о которых даже не думаешь, щупая маленькие объекты.
Мы с этой проблемой лет на 10 раньше столкнулись. Объёмы тогда были не такие, но 50..100 метров на тех машинах тоже было не подарком.
НЛО прилетело и опубликовало эту надпись здесь
Но это уже не DOM.
НЛО прилетело и опубликовало эту надпись здесь
Это сильно зависит от структуры документа. Бывают форматы, где есть ссылки из начала в конец, т.е. для обработки самого начала уже надо иметь доступ ко всему файлу. И загружать его всё равно придётся полностью. Так что никакое О(1) не отменит того, что грузиться оно будет медленнее и памяти занимать сильно больше. Причём второе — бессмысленно, т.к. программы обычно всё-таки не работают с самим деревом, а просто загружают его в свою структуру просто дублируя данные.
НЛО прилетело и опубликовало эту надпись здесь
В смысле? Чтобы сохранить ссылку нужно сначала распарсить весь файл и найти, куда ссылаться, т.е. нужна доп логика над парсером. Проще sax-ом обработать в один проход. А ещё ссылки бывают не только вперёд, но и назад. DOM для того и нужен, чтобы работать с рандомным доступом, без этого смысла в нём нет.
НЛО прилетело и опубликовало эту надпись здесь
Вот только вы, похоже, не учли один нюанс. В этом случае парсер(!) должен знать структуру конкретного файла, чтобы понимать, что является ссылкой, а что якорем. Что слегка убивает идею универсального псевдо-dom. Imho на этом этапе проще перейти к нормальному sax, это будет проще, чем морочиться со всей лишней логикой чтобы вкорячить сюда то, что тут не требуется. (троллейбус.jpg)
НЛО прилетело и опубликовало эту надпись здесь
Парсер просто выдаёт ленивое дерево нод

А как парсер сможет выдать дерево нод (не важно лениво или нет), не зная структуры документа?


Вообще по такой логике можно любую задачу решить за О(1) — объявить что ф-я, которая делает то, что нужно, ленивая, и не запускается, т.к. оказывается не нужна.
В итоге можно мгновенно решать np-задачи.

НЛО прилетело и опубликовало эту надпись здесь
Ок. Пусть fb2.
Есть док, у которого в самом начале ссылка на картинку с обложкой, которая лежит в конце. Когда клиент захочет сразу же отобразить обложку (ну он же работает с dom и уверен, что она уже загружена) вы предлагаете:
1. загрузить весь документ до обложки и работать как с обычным dom?
2. дропнуть всё до обложки а потом начать парсить сначала, когда клиент продолжит читать документ с начала первой главы?
3. ???
Когда клиент захочет сразу же отобразить обложку (ну он же работает с dom и уверен, что она уже загружена)
Даже если она уже загружена — поиск в нём долог и дорог. И да, сложить две строки — это тоже дорого и сложно. Как и выделить подстроку. И как изменить регистр. И как многое другое. Лучше всего про эту банальность (как и почти любую другую банальности) описал Джоел

Если вы будете помнить, о том, что поиск в DOM — это дорого и долго, то у вас всё будет работать быстро и с DOM'ом и, чуть медленнее (но со значительной экономией памяти) — с «ленивым» DOM'ом. Если же вы будете считать, что складывать строки легко и быстро — то вам, извините, никакие абстракции не помогут. Скорее помешают.

У меня есть ощущение, что вина всему — то, что начинающие программисты больше не начинают с Бейсика на C64. Когда вы писали на языке, который был в 100-500 раз медленнее (не в 100500, а в 100-500 — это довольно точная оценка), чем тот же алгоритм в машинных кодах и при этом процессор у вас был частотой 1 (один) мегагерц… то увидеть, что операции со строками — таки медленные можно было почти что невооружённым глазом. А сейчас — сеньор-программисты об этом не подозревают… а абстракции… абстракции могут быть любыми — важно только не забывать, что все они — дырявые
Собственно на вопрос вы так и не ответили. Те, кто понимает, что dom — это медленно и дорого — его по возможности не используют, так что речь не о них. И при повторном чтении там будет совсем не чуть медленнее (тем более что построение dom уже само по себе весьма затратно). Да и речь вообще была о том, что просто так заменить dom на ленивый нельзя. А не просто так — почему сразу не использовать sax?
НЛО прилетело и опубликовало эту надпись здесь
Для ленивых — может быть. Для остальных — наоборот, меньше смысла, т.к. логика обработки меняется.
НЛО прилетело и опубликовало эту надпись здесь
Вы меня упорно отказываетесь понимать. Какие 2 прохода? Вы работаете с dom! В sax всё прекрасно делается за 1 проход. Речь не о нехватке памяти, а о дублировании в памяти всего документа в dom.

А если вы работаете проходами, то на кой чёрт вам dom, если всё равно алгоритм работы полностью меняется. IMHO ленивый dom имеет смысл только при простой последовательной обработке, когда очень лень эту обработку писать. Да и то по факту сильно проще там не станет.
НЛО прилетело и опубликовало эту надпись здесь
А в чём проблема? Мы же знаем, что картинка будет позже в добавим, когда дойдёт до неё дело. А вот работающие с dom такими вопросами обычно не заморачиваются, т.к. по идее всё дерево доступно полностью сразу.

Это всё хорошо, когда вы пишите редактор xml или сериализацию один-в-один. Но когда данные в памяти не соответствуют структуре файла (а обычно так и бывает) — их всё равно придётся преобразовывать. И когда это делать разницы нет. Хоть при обработке потока xml, хоть выгребая из дерева. Но первое быстрее и требует меньше памяти.
А вот работающие с dom такими вопросами обычно не заморачиваются, т.к. по идее всё дерево доступно полностью сразу.
Никогда оно не бывает «доступно всё сразу». если всем известные числа вспомнить, то легко понять, что переход к следующему элементу — это что-то типа 0.5 нс (обращение к кешу L1), у куда-то «вдаль» — что-то типа 100 нс. Разница — два порядка. И да, это в полностью распарсенном и загруженном дереве.
Всё-таки речь не о том, что они не бесплатны, а о том, что об этом никто не задумывается. Особенно с учётом того, что на загрузку там тратится на много порядков больше времени, чем на доступ. Собственно на фоне загрузки доступ уже можно считать условно бесплатным. Ну не считая случаев, когда загрузка засрёт всю память и мы будем работать со свопом. Это к обработке уже не относится.
Особенно с учётом того, что на загрузку там тратится на много порядков больше времени, чем на доступ.
Ой ли? А если прикинуть? Если доступ к памяти занимает 100 наносекунд, то на 10Гбит/с канале вы за это время загрузите 120 байт. То есть «много порядков» у вас будет только если ссылки из одного места в другое случаются пару раз в файле на мегабайт. Иначе — эти величины очень даже могут быть сравнимы.

Собственно те самые числа «должен знать каждый» именно потому что часто вещи, которые «на много порядков больше времени» занимают вовсе не так много, как вам кажется — и соотвественно «очень простые и быстрые» вещи часто оказываются вовсе не такими «простыми и быстрыми»…

Ну не считая случаев, когда загрузка засрёт всю память и мы будем работать со свопом.
А почему, собственно? Если у вас система на SSD, то обращение к своп-файлу вполне может происходить на скоростях в несколько гигабайт в секунду… а вот если нужен произвольный доступ — то там числа совсем-совсем другие, конечно…

Это к обработке уже не относится.
А у чему это, я извиняюсь, относится? Если вам дадут XL-файл гиг на 10 — что вы ним будете делать?
100 наносекунд, то на 10Гбит/с канале вы за это время загрузите 120 байт.

Да нифига вы за это время не загрузите. На один TCP-handshake куда больше времени уйдет.
Иначе — эти величины очень даже могут быть сравнимы.
В сферических условиях в вакууме всё может быть. В общем случае на больших файлах разница будет и приличная
А почему, собственно? Если у вас система на SSD, то обращение к своп-файлу вполне может происходить на скоростях в несколько гигабайт в секунду… а вот если нужен произвольный доступ — то там числа совсем-совсем другие, конечно…
В основном потому, что изначально задача была в частности «не засрать всю память». А если это неизбежно — то не полагаться, что программа всегда будет работать на машине с топовым ссд неограниченного размера или как минимум с 128Гб оперативки.

Вот мы плавно и вернулись к началу этого разговора, когда вместо нормального проектирования разработчик полагается на то, что железо всё вытянет.

А у чему это, я извиняюсь, относится? Если вам дадут XL-файл гиг на 10 — что вы ним будете делать?
Для начала я выясню, что, собственно с этим файлом требуется сделать. И если нет задачи написать клон excel — обычно требуется лишь загрузка из него значений, для чего пихать весь файл в память нет совершенно никакой необходимости.

Если вдруг имелся всё-таки XML файл, то тем более. SAX-парсеру размеры файла совершенно не важны.
НЛО прилетело и опубликовало эту надпись здесь
Если доступ к памяти занимает 100 наносекунд, то на 10Гбит/с канале вы за это время загрузите 120 байт.
Это сравнение апельсинов с бегемотами. Сравнивать задержку доступа с устоявшейся скоростью передачи несколько странно.
Время есть время. Тот п#зд$ц, который мы тут наблюдаем в Хроме вот на этой самой странице с вероятностью 99% связан с тем, что кто-то исходил из логики: на загрузку там тратится на много порядков больше времени, чем на доступ… но применение этой логики достаточное число раз привело к тому, что… имеем то, что имеем то, что имеем: Chrome 54 — работает быстро, а «ускоренный» Chrome 69-70… вот так, как он работает…

А если произвольный доступ не нужен, то можно снова лениво стримить всё дерево в DFS-порядке, и мы вернулись в начало.
Не совсем. На SSD «ленивое» построение дерева приведёт, скорее всего, к ускорению. В оперативке — вряд ли. Но в случае, если человек считает, что произвольный доступ не стоит ничего и не учитывает того, что он, в общем-то, не так далёк от скорости работы сети… не поможет ничего!
НЛО прилетело и опубликовало эту надпись здесь
Я пытался объяснить, что вы используете сложный компонент с неизвестной внутренней логикой вместо быстрого и простого как полено, и при этом всё равно вынуждены использовать его как простой потому, как иначе не получится. Ну не смог и ладно…
А зачем парсеру знать структуру? Парсер — это синтаксис, структура — это семантика конкретных элементов.

Парсер же возвращает АСТ (ну, условно, в общем АСТ может быть произвольным графом, а не деревом)? АСТ — это и есть структура документа, разве нет?

НЛО прилетело и опубликовало эту надпись здесь
С трудом представляюю как на основе исходного кода можно построить синтаксический граф не в виде дерева. Внутренние ссылки, перекрёстные, циклические, рекурсивные и т. п. уже не относятся, как по мне, к синтаксическому разбору, это уже дальше этап разбора дерева.
Внутренние ссылки, перекрёстные, циклические, рекурсивные и т. п. уже не относятся, как по мне, к синтаксическому разбору, это уже дальше этап разбора дерева.

В лиспе АСТ является произвольным графом.

НЛО прилетело и опубликовало эту надпись здесь

Штука в том, что ридер-макросы не являются токенами, и в них вы можете производить произвольного вида вычисления. Например — взять кусок АСТ и замкнуть его самого на себя:
для
#1=(yoba . #1#)
получится бесконечный АСТ '(yoba yoba yoba yoba yoba ....)
можно сделать такой цикличный АСТ, отдать на евал и он повиснет, например, ну или построить граф любого вида.

Как был реализован IXMLDOMNode::parentNode?
Может быть и никак.
С чего вы взяли что оно ему надо было?
Он же не полную реализацию стандарта заваял. Полная реализация вообще никому не нужна, никогда.
Но это уже не DOM.
Еще раз?) Давайте отвечу по-другому. Ему не нужная реализация полного дома. И вам не нужна) Она никому не нужна.
Человек отбросил лишнее, и алгоритмически оно у него полетело. При этом совместимость осталась.
В чем собственно проблема?

А проблема в том, что стремятся создать универсальную библиотеку, а это полная чушь. Потому что даже математически это невозможно. Если вы разгоняете что-то, то что-то просядет в другом месте.

В идеале же одна универсальная библиотека пусть будет, я не против, собрать проект не вдаваясь в подробности нужно быстро. Но для случаев кода дом не нужен полностью, должны быть другие реализации. И их должно быть много. Выбираете под себя вам нужную, т.е. ту которая максимально заточена под вашу конкретную задачу, а не ворох, а остальное там вообще не должно быть реализовано, ну потому что не нужно оно.

И кто так делает?) Никто. Потому что мозгов нет совершенно.
И поможет ли оно? Нет) Потому что нужно понимать из вороха узкозаточенных реализаций что они могут. А значит нужно все равно глубоко знать реализации. Так таких людей опять нет)

В итоге — вменяемых реализаций нет. Людей понимающих реализации тоже нет.
Что остается в сухом остатке, впрочем на самом деле в жидком? Правильно: только гавно.
Но для случаев кода дом не нужен полностью, должны быть другие реализации. И их должно быть много.

Так а почему вы их еще не написали? Идите и пишите, вместо того чтобы в комментах говно обсуждать.

Можно же просто написать свою. Я в начале этого года пытался писать свой браузер. Разбивку на токены и построение DOM реализовывал сам. И оно работает вполне шустро (правда, на очень больших файлах пока не тестил)
НЛО прилетело и опубликовало эту надпись здесь
Хм, библиотеку не помните, но уверены, что она обеспечивала O(1) по памяти? Звучит правдоподобно.
НЛО прилетело и опубликовало эту надпись здесь
Нелюблю аппл, но помню как хлопал в ладоши при подключении к клиенту пирса (файлообменник в Новосибе) с маковского Леонардо (или как-там) клиента, который сначала подключался, показывал чатик и позволял уже формировать запросы на поиск файлов, а в фоне отрисовывал всю чепуху с 30к пользователей онлайн… На старом компе под виндовым DC++ это занимало минуту, на новом — секунд 15… Даже оптимизировать ничего не надо, просто ненужную задачу выбросили в фон и нехай там хоть по 5 минут думает.

Или снимаешь галочку отображения списка клиентов в виндовом DC клиенте и получаешь тот же результат. При количестве пользователей в десятки тысяч этот список все равно смысла не имеет. Это не местечковый хаб с чатиком из начала 2000х, не нужен там этот список, там большая часть не люди, а приставки к ТВ.
Я ещё и чат отключал. Запуск приложения и подключение к хабу — секунда, ну может две.

А в vscode как на этом же файле? Это ведь vscode сейчас как раз модно и молодежно.
Лучше чем Sublime (возможно от версии зависит). У меня саблим долго грузил и падал на файле 131МБ, а vscode свободно открыл (предупредил о возможных тормозах и предложил отключить подсветку, я не стал этого делать и так норм работает, только памяти выжирает не мало) и в отличие от n++ сворачивал и разворачивал огромные ветки/узды без особых тормозов (в n++ они были минутами).
Невероятно, но факт. МС 20 лет (!), начиная с Windows 98 заявляет, что-де «переписали большую часть кода с нуля на ассемблере» и т.д. и т.п. Но с каждым разом «переписанная» система становится всё больше, а детские глюки как были, так и остаются.
НЛО прилетело и опубликовало эту надпись здесь
Точно помню, что в те времена читал такое в журналах.
никогда они такого не говорили.
9x до самого своего упора, до ME, была допиленной 95 виндой на которую в 98 накатили IE4… да и закопали её потому что «переписывать» было себе дороже
Ну, я и сам так считаю и спорить не буду. Но точно помню слова про переписанный код, ассемблер, рост производительности и всё такое.
НЛО прилетело и опубликовало эту надпись здесь

Именно так. Лично мне пришлось пару лет назад купить новый телефон, потому, что полностью устраивающий меня galaxy s2 открывал сообщение в скайпе за 30 секунд. К слову, прямо сейчас при наборе этого сообщения и пришедший ему на смену s6 подтормаживает. Неужто разрабы хабра тоже вирусом поражены?

Редкие посты получают 1000+ комментариев.
1000 комментов, каждый в среднем по 300 символов. Сколько это? 300 килобайт?
Килобайты особо непричём, скорее дело в количестве Dom нод и т. п.
600. UTF-8 же.
Способ повесить ваш Chrome на минуту-полторы, если у вас x86:

1. Нажмите на этой странице Ctrl+U
2. Нажмите Ctrl+A на открывшейся вкладке
3. Кликните по выделенному тексту правой кнопкой мыши в любом месте
4. <>
5. <>
6. <>
7. Снимайте процесс, если надоело ждать.
У меня Firefox и он не подвесился, хотя реагировал не сразу (сотни миллисекунд).
Надо проверить, интересно. У меня в Chrome 45 всё встало «колом» :)

Прошло полгода — спустя минуту исходный код страницы так и не открылся...

НЛО прилетело и опубликовало эту надпись здесь
Мозилла той же версии — нормально, и даже подлагивает почти незаметно. Исходник открывал полминуты, после чего появились первые 240 строк, после чего остаток открывался еще полминуты.
Вивальди 2.5.1525.43 (64-bit)
Примерно так же. Единственно, исходник открывал почти минуту, зато открыл сразу полный текст.
Palemoon 28.5 x64
Конкретные лаги и фризы, до десяти секунд, на протяжении всех пяти минут проверки. Исходный код открыл очень быстро, секунд за десять, но догружал до полного все ту же минуту.
IE11 приятно поразил почти полным отсутствием лагов при прокрутке после загрузки страницы. Но дальше…
Дальше начались сначала фризы при вызове контекстного меню, потом попытку открыть исходный код после пятиминутного ожидания пришлось прерывать снятием задачи в таскменеджере, потом и окно браузера со страницей пришлось убивать через таскменеджер, поскольку никакой вменяемой реакции добиться уже не получалось.

Вердикт: за Palemoon обидно.
chrome 94.0.4606.61 — загружалась секунд 20. Но проблема не в этом. А в том, что после открытия исходного кода у меня зашумел и залагал весь ноут. Сейчас этот комментарий набирается со скорость примерно 2 символа в секунду. Тормозит жестко
Firefox ESR (78/15).
Страница грузилась секунд десять, комментарий набирается без проблем. Посмотрю, как будет отправляться, заодно поточнее хронометрирую скорость обновления.

UPD. Отправился коммент мгновенно, а вот полное обновление заняло таки двадцать две секунды.
UPD2 — но лагов не было никаких. Десктоп, седьмая винда, 8 гигов оперативки и i5-2320.
Почему 600? 1 символ UTF-8 занимает от 1 до 4 байт, а не ровно 2.

Речь про комментарии здесь, а они на русском. Русские буквы 2 байта занимают.

У хабра вроде есть приложение, где (наверное) можно хорошо оптимизировать отображение только нужной информации, для плавности.
А кто сказал, что сделать хорошее, быстрое и надежное приложение обязательно очень долго и очень дорого?
Вот тот же Web. Да, если каждый раз с нуля переписывать все эти библиотеки и фреймворки, то конечно. Только нужны ли они на 99% сайтов? Веб — это информация, текст, таблицы, картинки. Для этого всего вообще не нужен ни js, ни всякие библиотеки/фреймворки. уберите бессмысленное и бесполезное украшательство — и веб начнет летать на самых убогих компьютерах.
А там, где они нужны, как правило, хватило бы ресурсов и для написания «с нуля». Но незачем, ибо пипл и так хавает.
обычно люди которые так говорят, не занимались веб разработкой. Такие иллюзии достаточно быстро ломаются об реальность на больших проектах.
Реальность состоит в том, что никто не хочет и не будет переделывать всё с нуля на больших проектах даже если это спасёт планету от метеорита. Ещё реальность состоит в том, что с первого раза может получиться только случайно, а в большом проекте — никогда.
НЛО прилетело и опубликовало эту надпись здесь
Причем тут «хочет, не хочет».
Кто за это платит? По своему желанию переделываются только пет-проекты.
В случае больших проектов, переделать все это далеко не копейки.
Я никогда не работал в больших корпорациях, поэтому хотелось бы узнать, почему, например, когда я открываю Facebook.com как неавторизованный пользователь, страница занимает 6.16 MB и браузер отправляет 65 запросов? Наверное, дело в том, что форма регистрации использует AJAX-запросы и там всё «очень сложно»?! Ну, достаточно открыть страницу авторизации с «обычной» формой и полюбоваться «оптимизацией» — 3.75 MB и 37 запросов. Также, например, «оптимизирована» и главная страница Twitter.com — никаких форм с AJAX-запросами, однако размеры страницы составляет 2.41 MB, и браузер отправляет 18 запросов.

Забавно, что даже при редактировании файла на Github.com страница весит
лишь 1.63 MB (а там ведь подсветка кода, AJAX-запросы, живой поиск, предпросмотр, и другие полезные функции).

«Вы ничего не понимаете, веб-программирование — это крайне очень супер сложно и вообще сперва добейся (закончи месячные курсы фулл-стека на пайтоне)».

Представьте сколько аналитики, поведенческих метрик и рекламы с вас собирают facebook и twitter.
Ну и конкретно на facebook большинство запросов это статика. Как прикажите картинки то грузить?
На странице авторизации Facebook загружаются 6 картинок: два спрайта и 4 однопиксельных изображений. Общий размер картинок: 33.76 килобайт, когда страница занимает 3.75 мегабайт и это только для того чтобы отображать форму с двумя полями и одной кнопкой.

Насчёт аналитики — даже Google Analytics и Яндекс.Метрика с Вебвизором вместе взятых не занимают больше 250 KB. Тут проблема не в аналитике, а в том, что разработчики банально не используют условные загрузки. По моему мнению, незачем загружать стили/скрипты комментариев, чата, списка друзей, редактирование профиля и других функций недоступны неавторизованных пользователей. Но, возможно это лишь мои иллюзии, ведь я не работал в крупных корпорациях.
Ну как же зачем?! Прогреть кэши перед входом пользователя на основной сайт, а не форму авторизации. Да, на одну страницу это слишком жирно, но зато после авторизации пользователь уже не будет ждать пока все скрипты загрузятся, особенно с медленным инетом, а сразу начнет поглощать контент.
А Вы точно веб-разработчик? Даже если Вы правы насчёт этой теории, это, мягко говоря, неправильно. Не говоря уже о том, что после авторизации, страница «нагревается» до 42 MB.
Заголовок спойлера

Почему это неправильно? Если для ФБ ценны в первую очередь те, кто пойдет авторизироваться или регистрироваться, то логично сделать удобнее именно им.

А то, что там после загрузки еще больше, ни о чем не говорит. Вполне вероятно, что на странице логика грузятся только те библиотеки, которые делают изначальное отображение интерфейса и общие для всех пользователей. А после авторизации уже происходит фактические наполнение данными, но пользователь сразу видит уже какой-то каркас интерфейса.
Если пользователь РЕШИЛ зарегестрироваться, то его не остановят мегабайты первой странички. Может, в первый раз отпугнёт и он передумает но через день-два-неделю он обязательно вернётся и зарегистрируется.
К сожалению, сам на мобильном интернете очень многих постов и картинок просто не увидел — тупо не дождался их загрузки, дольше 10 секунд загрузки — это уже бесполезная трата времени и вещь уходит куда-то далеко в бесконечную ленту событий, возврат к которой в будущем маловероятен.
Неправильно, по крайней мере потому, что нужно уважать пользователей и помнить, что не у всех топовые устройства и высокоскоростной + безлимитный интернет. Правильно, когда нужное загружается «при необходимости», а не по принципу «а вдруг пользователь захочет каждую минуту загрузить новый аватар, редактировать профиль, отправить сотни эмодзи в чате, сделать селфи, и многое другое, причём всё сразу».

Вы предполагаете, что разработчики заранее кэшируют данные, а я не думаю, что они отличаются от тех, кто подключают jQuery на всех страницах сайтах, когда данная библиотека будет использована только на странице контактов, и то, чтобы анимировать одну кнопку, если пользователь открыл страницу 29 февраля в полночь. Во-первых, если бы они заботились об активных пользователях, они бы использовали условные загрузки по крайне мере после авторизации. Во-вторых, они подключают мегабайтные скрипты на всех страницах. В-третьих, пару мегабайт до авторизации лишь «цветочки» по сравнению, с тем, что происходит после. Если бы Вы проверили Вашу «теорию» о кэшировании, то заметили бы, что после авторизации сайт совсем «не летает», даже если все скрипты загружаются из кэша. Он и не будет, ведь это не SPA, и мегабайтные скрипты выполняются каждый раз, когда пользователь переходит на другую страницу.

Facebook и Twitter лишь примеры, но они далеко не единственные кто не допускают, что пользователь не будет использовать даже 10% функционала. Посмотрите, сколько ненужных стилей, скриптов и медиа файлов загружаются на веб-сайтах; какие права требуют простые приложения; какие спецэффекты используются, дабы рассказать какие «мы современные»; сколько шрифтов подключаются лишь, чтобы «показать красивое название сайта». Практически все с каждым днём «улучшают» свои программы и сайты, но, к сожалению, это происходит только в пресс-релизах.

Напоследок, хотелось бы напомнить, что даже js-файл размером в 1 MB это довольно много для сайта, где пользователи пишут и читают обычные посты. И, тем не менее, Вы хотите оправдать разработчиков, которые подключают десятки мегабайт JavaScript. Боюсь, я не могу согласиться с Вами, поэтому, прошу Вас, не вздумайте переходить на сторону зла!
Я напомню, что Фейсбук непосредственно заинтересован, чтобы им пользовалось как можно больше людей и не будет специально делать так, чтобы ухудшить динамику регистраций или логинов.
Еще напомню, что эта компания стоит сотни миллиардов и каждый день ее сервисом пользуется больше миллиарда человек и этого бы не было, если бы они разгильдяйски относились к таким важным элементам, как главная страница сайта.

С вашей стороны очень самонадеянно считать что вы знаете лучше, как надо делать и что решение сделать именно такой механизм работы страницы авторизации у Фейсбука продиктован ленью или некомпетентностью разработчиков.

У них есть огромное количество данных о том, что происходит на сервисе на каждом этапе его работы, данные о сотнях миллионах пользователей (если говорить о веб версии). Равно как и есть возможность протестировать и сравнить множество альтернативных вариантов.

Догрузить пару мегабайт библиотек в фоновом режиме, пока юзер вводит логин и пароль, чтобы после авторизации интерфейс с базовом виде прорисовался как можно быстрее — вполне здравое решение.

Единственный сценарий, при котором такой подход может навредить, это если посетитель не будет авторизироваться, а просто зайдет на страницу. В этом случае загрузятся лишние мегабайты.

Но сервис вполне логично ставит интересы таких посетителей ниже тех, кто авторизацию пройдет.
Еще напомню, что эта компания стоит сотни миллиардов и каждый день ее сервисом пользуется больше миллиарда человек и этого бы не было, если бы они разгильдяйски относились к таким важным элементам, как главная страница сайта.

Наивное утверждение. Сервис настолько огромен и популярен, что у существующих пользователей просто-напросто нет выбора (нет аналогов, куда перейти, ведь все друзья в сидят в фейсбуке). А с новыми пользователями то же самое — в мелкую соцсеть типа MySpace идти нет смысла, так как там почти никого нет.

А если вы почитаете, что люди пишут про скорость работы (что веб версии, что мобильного приложения в том же Google Play), то вы увидите, что негативных отзывов гораздо больше, чем позитивных (я правда читал только русскоязычные комментарии, но можно начать хотя бы с России как частного случая). Вы только вспомните: мобильное приложение фейсбука стало настолько тяжёлым, что из него выпилили мессенджер и выпустили отдельным приложением! А потом ещё выпустили Facebook Lite, к слову…
Хотелось бы добавить, что лично я не считаю, что огромное количество денег и пользователей это показатель профессионализма. Скорее это говорит о том, что они хорошие бизнесмены и маркетологи.

Действительно, сверхпопулярные компании могут позволить себе очень многое. И если они изначально работают над привлечением новых пользователей, то став популярными, чаще всего в первую очередь они думают, как извлечь максимальную прибыль. Как монополисты они уверены, что пользователи никуда не убегут, а значит, они могут творить любую дичь. Правда, некоторые из них (например, IE, ICQ, MySpace, Yahoo) поплатились за это.
А что в своё время натворил MySpace? Я туда заходил 2-3 года назад и был в полном восторге — и от дизайна, и от того, насколько сайт был шустрым и минималистичным.
Это сейчас он «шустрый и реалистичный». Потому что у разработчиков нет ресурсов, чтобы рюшечек навешать. А когда Facebook «взлетел» примерно 10 лет назад — всё было наоборот.

Дорога ложка к обеду. Очень хороший пример тут — OS/2 и Windows. Когда в 1992м вышла OS/2, которая требовала 8MB, а на 4MB еле «шевелилась», то народ выбрал вышедшую тогда же Windows 3.1, которая сносно работала на 1MB, а на 2MB «летала». IBM вложила кучу ресурсов и в 1994м выпустил OS/2 Warp, которая более-менее работала на 2MB, а на 4MB — так вообще хорошо. Про неё начали потихоньку говорить, но через полгода — вышла Windows 95, которая требовала уже 4MB, а для приличной работы — 8MB… казалось бы должен был быть провал? Но нет: за 3 года ситуация с памятью изменилась и те 8MB, которые в 1992м казались чем-то запредельным в 1995м уже перешли в категорию «дорого, но терпимо»… а зато у Windows95 была куча программ, которых у OS/2 не было…
Я напомню, что Фейсбук непосредственно заинтересован, чтобы им пользовалось как можно больше людей и не будет специально делать так, чтобы ухудшить динамику регистраций или логинов.
Еще напомню, что эта компания стоит сотни миллиардов и каждый день ее сервисом пользуется больше миллиарда человек и этого бы не было, если бы они разгильдяйски относились к таким важным элементам, как главная страница сайта.

Я не встречал ни одного человека, который бы сказал что ему нравится дизайн и функциональность фейсбука. Ни в России, ни в Европе. Пользуются им все просто потому что им уже пользуются все и чтобы с него уйти нужно, во-первых, найти куда, а так как все пользуются ФБ, то адекватно развитого ничего и нет, во-вторых, переманить туда всех нужных знакомых, что тоже титанический труд, человеку проще ничего не менять и плеваться чем напрягать мозг и совершать какие-то действия, а в-третьих, нужно придумать что делать с новыми знакомыми и всякими группами которые тоже будут по умолчанию в ФБ. Так что пока этим поделием в принципе можно будет пользоваться — им будут пользоваться все. Это никак не говорит о том что они знают что делают. Более того я знаю больше одного человека, которые из-за всего этого бреда в ФБ отказались от него несмотря на все перечисленные пункты.
На самом деле вы оба правы. Facebook, конечно, знает что делает, но… не сегодняшний Facebook. Хочу напомнить, что Facebook — далеко не первая социальная сеть, до него были MySpace, Orkut и другие. А знаете что с ними произошло? Их обошёл маленький и шустрый (в те времена) Facebook. А потом… потом менеджеры в Facebook выяснили что «рюшечки» привлекают пользователей! Процесс идёт по накатанной схеме. В результате в какой-то момент вы имеете кучу пользователей, которых привлекли на начальном этапе (и ненавидящих современный Facebook), пользователей которых «зачинатели» привели и тех, кто фанатеет от рюшечек и кому пофигу что они тормозят. Тут вы имеете максимальную капитализацию, аудиторию и прочее. Но эта ситуация неустойчива: в какой-то момент, после очередного раунда «добавления рюшечек» всё начинает тормозить настолько, что люди начинают уходить. И если этого не осознать и добавить «рюшечек» ещё — то всё начнёт рассыпаться: вначале уйдут первые (ценившие скорость), потом вторые (так как ушли первые), а потом и ценившие «рюшечки» не захотят в «пустом доме» жить. Но Facebook'у пока удаётся балансировать «на грани»: периодически он всё-таки занимается оптимизацией своих страниц, в результате такого коллапса, как, скажем, у Orkut'а не происходит.
Позвольте сообщить, что супер-профессионалы из супер-прибыльной компании не оправдывали Ваши слова: habr.com/ru/post/444766
Крупные корпорации это всегда бюрократия. Не исключено, что какие-нибудь маркетологи решили, что именно страница логина должна принять на себя удар по перфомансу и сразу подгрузить всё, что нужно юзеру, чтобы после логина он на доли секунды быстрее увидел свою вожделенную ленту новостей.
Можно ещё вспомнить «модемные» времена и Мейл.ру, чья страничка весила килобайт 50. И при этом работала, письма писались, отправлялись. Понятно, что сейчас там и форматирование и всякая живая загрузка. Но, страница выросла мегабайт до 5, если не больше, то раз в 100. Но удобство (как ни измеряй;) и скорость в 100 раз не выросли.
Че-то вы загнули… 1.1МБ на странице авторизации ФБ
Заголовок спойлера
image
Chrome показывает размер сжатых данных. Активируйте «Use large request rows», чтобы увидеть реальный размер.

Заголовок спойлера

А зачем оценивать «разжатые» данные?
Это подмена понятий, ваш изначальный комментарий негодовал о:
почему, например, когда я открываю Facebook.com как неавторизованный пользователь, страница занимает 6.16 MB и браузер отправляет 65 запросов


Вам эти данные приходят в сжатом виде и весят никак не 6 с лишним мегов.
1МБ нa страничку, учитывая шрифты/иконки/картинки — это более менее.
Нa мобильной версии приходит около 300кб нa всю страницу.

Так что не сгущайте краски.
Ну так «занимает» же, а не «качается». И эти мегабайты яваскрипта еще надо распарсить и выполнить.
Вот именно, HTML/JS/CSS еще парсится и интерпретируется. Результат займет в памяти еще больше места.

Цифра в 6 мегабайт не характеризует ничего, в отличие от сжатого размера, который реально передавался по каналу пользователю.
Для пользователей с широким каналом от этого ни холодно ни жарко, сжатие разве что помогает разгрузить магистральные каналы. Имеет значение именно не сжатые данные, они ведь занимают реальную память. А интернет-канал это дело вторичное, и количество трафика играет роль только при жестких ограничений на сеть — мобильные сети и т.п. таким образом сжатие играет вторичную роль, решая только одну проблему из множества.
> Имеет значение именно не сжатые данные, они ведь занимают реальную память.

Это нет так. Реальную память занимает *результат* исполнения кода, а не исходный текст. Короткий код может легко занять много памяти, достаточно насоздавать много объектов в цикле.
Если это делает ДАЖЕ короткий код, сложно представить на что способно большое количество кода.
На самом деле, как ни странно, сложно. В частности в одной из программ, в которой я переделал один модуль, сложную систему объектов была заменена на заранее просчитанную таблицу. Модуль на 200K стал модулем на 1M, но зато таблица на пару мегабайт перестала строиться при запуске — что улучшило время запуска (сильно), скорость работы (заметно), и потребляемую память (вдвое). Уменьшился даже запакованный образ дистрибутива, пострадало только место на диске (но это для нас был самый некритичный параметр).
> сложно представить на что способно большое количество кода

Еще как сложно! Там могут быть оптимизации, ленивые вычисления, которые сэкономят память.

Гадать о производительности кода по его размеру — такое себе занятие. Именно поэтому размер сжатого кода еще имеет какое-то значение, то разжатого – цифра ни с чем ни связанная.
Вы думаете, что все пользователи получают данные в сжатом виде? Или, что сжатие даётся пользователям даром и мегабайты хлама никак не влияют на производительность?
Вы думаете, что все пользователи получают данные в сжатом виде?

У 99% браузеры поддерживают сжатие.

Или, что сжатие даётся пользователям даром

Да, почти даром.

мегабайты хлама никак не влияют на производительность

Вот это ужe под вопросом. Возможно, как написали выше, они грузят что-то заранее, чтобы потом нe «лагало» и нe погружало ничего.
Даже если разжатие не сильно нагружает процессор (скорее всего, это так), память всё-таки критична. Например, у меня в телефоне браузер крашится, если веб-страница пытается съесть больше 12-13 мегабайт (с учётом графики, шрифтов и всего-всего). А тут в мобильной версии сколько, говорите, после разжатия будет? Уже мегабайта 2-3, а это ещё без фотографий и текстов. А когда пользователь залогинится — тогда самый трэш и начнётся. Там ещё и доп. стили и скрипты прилетят, и реклама с логикой её показа.
Например, у меня в телефоне браузер крашится, если веб-страница пытается съесть больше 12-13 мегабайт

Он крашится если вкладка загружает больше 13 мегабайт? Чего? Диска или памяти?
Одни фотки сейчас весят по 2-3, если не больше. Может вам надо обновить телефон?
А не поздно писать обличающие статьи, если потребители уже считают происходящее нормой?..
Зря вас заминусовали. Да, телефон надо обновить, вы правы. Эта модель вышла летом 2011-ого. Но парадокс в том, что вплоть до весны-лета 2013-ого года всё работало более-менее сносно (в 2012-ом так вообще летало). Вы полагаете, тогда фотки весили сильно меньше? За счёт чего?

Оффтопик
Первый сайт, на котором я испытал вылет — сайт сети кинотеатров «Формула Кино»… Оказалось, что проблема была в том, что они встроили на сайт видео трейлеров к фильмам. И они, даже не запускаясь, крашили браузер на середине загрузки страницы, если не нажать «стоп». Это было ещё году в 13-ом. Сейчас вылетает вообще на 90 процентах сайтов (исключая мобильную версию вк, форумы типа 4pda и ещё несколько хорошо оптимизированных под мобильные телефоны порталов).

Краш скорее всего был по оперативной памяти. Наверное, не на 15 мегабайтах, а на 40-50 (это вроде предел для одного приложения в Андроид 2.3), при доступных 150 мегебайтах всего на все приложения в сумме. Это число я написал по ошибке, перепутал с размером кэша после вылета.
FB скорее всего так делает, чтобы заранее прогрузить в кэш или даже запустить выполнение тех скриптов, которые потребуются после авторизации.

Видимо, посчитали что лучше пусть у тех, кто просто открыл и не авторизировался, делались лишние запросы, чем заставлять дополнительно ждать загрузки тех, кто таки авторизировался с этой страницы.
Полагаю потому что строчить блог посты и хайпиться другими способами, и решать реальные задачи это разные вещи.
Я много имел дело с реалиями вебразработки, но все же пикрелейтед — это дно.

На пике первая загрузка гмейла в последней лисе.
Но ведь это не вина гугла, что в Firefox не реализовали ShadowDOM v0 (точнее, пытались, но он пока страшно далёк от завершения, а пока реализовывали, сама спецификация v0 стала deprecated, так что силы брошены на ShadowDOM v1).
Но ведь это не вина гугла, что в Firefox не реализовали ShadowDOM v0

Embrace, Extend, Extinguish нового поколения.
Это либо вина либо менеджмента гугла в плохой поддержке браузеров с 10% рынка суммарно, либо разрабов которые пишут код на плохо полифилящихся технологиях, которые только один браузер поддерживает, либо и тех, и других.
А разгадка проста — из-за сильной интеграции с другими сервисами гугла, в первую очередь с андроидом, гмейлом пользуются все и писать они могут практически любой говнокод. Сравните даже хотя бы с яндексовой почтой.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Да не стояло там ничего на месте. Во-первых, была прекрасная и весьма шустрая Опера (2004-2008 если берём). Во-вторых, Firefox был не так уж плох (хотя и медленней, но не медленней, чем IE, а ещё намного безопаснее и функциональнее). Так что конкуренты не просто были, они развивались. И IE тоже развивался. Вспомните 5.5 в Win2k, и сравните с 7.0 и 8.0. Совсем разные вещи
НЛО прилетело и опубликовало эту надпись здесь
Почему это был не его изобретатель

Изобретатель чего, AJAX?

Расскажите, это всё очень интересно. Мне тогда и в самом деле было 10-15 лет, и разработкой я тогда ещё не занимался, только читал книжки (года так с 2005-2006).

на ряду с полным месивом в поддержке существующих

Имхо, не было там особого месива. У меня до сих пор стоит учебник по JavaScript 2004 года издания на полке. Так вот, 60-70 процентов вещей, которые там описаны — кроссбраузерны на сто процентов (да-да, тот самый ES3). Остальное — в двух вариантах, для IE и для Firefox. Opera же, заняв очень мудрую позицию, часто поддерживала оба варианта (окей, не оба, почти всегда вариант IE; но начиная с момента, когда появился Хром, а в Хроме и Firefox подходы были более близки к друг другу и к стандарту — ситуация поменялась, и Opera стала делать как Chrome и Firefox, а синтаксис IE иногда поддерживался в придачу, «для совместимости» — как пример, свойство document.all, которого кроме IE нигде больше не было, а в Opera до версии 11.50 оно всё ещё работало).

Месиво всё-таки было и именно благодаря ему обрели популярность Prototype, MooTools и jQuery. Они брали на себя большую часть боли по поддержке особенностей браузеров. Отдельной историей было ещё и месиво с реализациями CSS.

А что именно было с реализациями криво? Про CSS тех лет я почти ничего не знаю. Ну то есть знаю поведение IE7-8, немного — IE6 (тестил на нём один свой проект ради спортивного интереса). Остальное мимо меня прошло.
Больше всего запомнилось, что размеры блока разные браузеры по разному понимали. Современным языком говоря было разное значение box-sizing и управлять им нельзя было. А pixel perfect тогда было обычным требованием, буквально принимали вёрстку диффом скриншота и макета
НЛО прилетело и опубликовало эту надпись здесь

В лидеры Хром выбился благодаря монопольному положению Гугла на рынке поиска и агрессивному маркетингу.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
значит они вовремя поняли, что интерфейс должен быть не настраиваемым, пошли так сказать по пути Эппла
НЛО прилетело и опубликовало эту надпись здесь
вроде ж справедливо
эээ… дефолтный интерфейс должен быть удобным… а все эти " в новой версии мы вам дадим мильон новых тем" вызывают тяжелый вздох…
Так его уже объявили deprecated
Вопрос — а нафига он вообще нужен? Без него интерфейс просмотра писем не сделать?
Конечно не сделать. А SquirrelMail вообще никогда не существовало.
Для того, чтобы судить о вкусе блюд, необязательно быть поваром.
И не надо про эти ваши «большие проекты». Реальность в том, что именно «большие проекты» в большинстве случаев нафиг не нужны, их лепят вместо простых сайтов с текстом и картинками потому что это «стильно, модно, молодежно», а не потому что необходимо.
а не потому что необходимо.

Если бы это не было необходимым, то простые сайты с текстом и картинками выигрывали бы в конкурентной борьбе, но мы наблюдаем обратную ситуацию — выигрывают те самые "большие проекты".


Так уж вышло, что в 2018 разница между десктопным приложением и сайтом в интернете стала бесконечна мала, можно сколько угодно по этому поводу плакаться, но фарш провернуть назад не удастся.


Можете себе свой гипертекстовый фидонет замутить и там делать свои страницы с простым текстом и картинками. В вебе поезд ушел.

Если бы это не было необходимым, то простые сайты с текстом и картинками выигрывали бы в конкурентной борьбе

Если бы были сайты с равноценным контентом, но в вариантах с рюшечками и без — то так бы и было. Но в погоне за модой сайты с хорошим контентом превратились в монстров. А одной скорости для выигрыша в борьбе мало.
И нет, разница между сайтами и приложениями никуда не делась.
Если бы были сайты с равноценным контентом, но в вариантах с рюшечками и без — то так бы и было.

Так этих сайтов нет, потому что они проиграли конкурентную борьбу.


А одной скорости для выигрыша в борьбе мало.

Ну вот видите, вы сами ответили. Производительность должна быть достаточной, прирост производительности выше чем нужно — уже не дает никакой пользы. И если клиента устраивает производительность на уровне 1% от возможной, то ПО работающее на уровне этого 1% будет иметь конкурентное преимущество над тем, что работает на уровне 90%. Потому что пользователю на эту разницу плевать, а вот затраты на разработку — возрастут.

Так этих сайтов нет, потому что они проиграли конкурентную борьбу.

Нет, они проиграли борьбу не потому что на них не было рюшечек, а потому что современные монстры раньше были нормальными легкими и быстрыми сайтами, их аудитория в значительной степени сформирована за много лет, а поведенческие факторы позволяют и сейчас удерживаться в топе поисковиков.
Ну вот видите, вы сами ответили.

Нет, просто вы меня поняли так, как хотели понять.
Дело не в том, что если сайт грузится за 10 секунд, то это нормально и быстрее не надо. Дело в том, что между сайтом за 10 секунд с хорошим контентом и сайтом за 1 секунду с плохим любой нормальный человек выберет первое. Зато между сайтами с хорошим контентом но загрузкой в 10 и 1 секунду — второе. Это не та разница, на которую можно наплевать.
И дело, кстати, не только в загрузке, но и в последующем скроллинге и т.п.
Зато между сайтами с хорошим контентом но загрузкой в 10 и 1 секунду — второе.

Если бы это было так — мы бы видели в топе сайты с хорошим контентом и загрузкой в секунду. Но это не так.


а потому что современные монстры раньше были нормальными легкими и быстрыми сайтами

Но их потом взяли и специально сделали ненормальными, тяжелыми и медленными? Зачем? Заговор рептилоидов?
Я серьезно спрашиваю. Как вы объясняете этот парадокс?

Я бы объяснил чрезмерным переусложнением логики с одной стороны (но усложнение нужно и порой неизбежно), тем, что мониторы стали больше и графика потяжелела, плюс стало больше видеоконтента и анимаций — с другой (в этом тоже есть плюс, ибо красиво и людям нравится), и с третьей стороны — большой ленью разработчиков, которые часто вместо того, чтобы закодить что-то самостоятельно, тянут сторонний фреймворк, половина возможностей которого им вообще не понадобится (может быть понадобится в перспективе, но не сегодня и даже не завтра). А во фреймворке ещё куча своих подкомпонентов. А фреймворков на крупных сайтах часто 2-3. Плюс на больших сайтах бэкенд тоже обычно отвечает далеко не молниеносно (взять тот же Twitch). Плюс объём пересылаемых на сервер и обратно данных, который растёт как минимум линейно вместе с усложнением логики.

Избежать всего этого можно — если делать простые и не очень красивые сервисы с небольшим количеством функций. «Дёшево и сердито». Но на такое меньше спрос, людям это уже приелось, им чего-то нового хочется. А за новое порой приходится платить тормозами, увеличившимся трафиком, необходимостью обновлять браузер и даже ОС…
Тем, что модно и тем, что можно (в смысле «гляди, как мы могЁм»). Туда же и регулярные редизайны.
И не надо говорить, что «компании все просчитывают перед тем как сделать». Ярчайший пример эпик фейла — Кинопоиск 2.0. Просто если изменения не такие резкие, то пользователи просто потихоньку привыкают, но это вовсе не значит, что они в восторге от всего этого.
Тем, что модно и тем, что можно (в смысле «гляди, как мы могЁм»). Туда же и регулярные редизайны.

Модно и можно кому? Вы же понимаете, что решение принимается не программистами? Зачем бизнес в это деньги вкладывает, если это ничего не дает?

Потому что бизнесу кажется (ключевой момент), что так будет лучше («патамушта какнкуренты так сделали, давай и мы сделаем»). Но «кажется» и «будет» — разные вещи.
Потому что бизнесу кажется (ключевой момент), что так будет лучше («патамушта какнкуренты так сделали, давай и мы сделаем»). Но «кажется» и «будет» — разные вещи.

Почему-то успешным оказывается именно тот бизнес, которому так кажется. А которому не кажется — успешным не оказывается.
Видимо, "кажется" обоснованно, в итоге.

НЛО прилетело и опубликовало эту надпись здесь
попытка ошибкой выжившего оправдать неверную логику?

При чем тут ошибка выжившего? И логика вполне верная.

НЛО прилетело и опубликовало эту надпись здесь

Еще раз — у нас, фактически, нет успешного бизнеса, которому не кажется (или есть, но это какие-то единичные и малоизвестные случаи).
Если бы данный фактор не влиял на результат, то мы бы не наблюдали такую ситуацию.

НЛО прилетело и опубликовало эту надпись здесь
Доказывайте.

Зачем? Это очевидное для любого пользователя интернетов в 2018 наблюдение. С-но, именно это наблюдение стало причиной появления обсуждаемой статьи. И 2к комментов к ней. Вы сейчас будете придуриваться и делать вид, что всего этого нет? Ну если нет — то и обсуждать нечего, сайты быстрые, весят мало.


А не те, которым не казалось, а когда достигли успеха — стало казаться.

А какая разница, стало или было? Это совершенно несущественный фактор.

НЛО прилетело и опубликовало эту надпись здесь
Итак, если бизнес достиг не думая, сейчас сидя на достигнутом стал думать, то успех и думанье за — никак не связаны.

Так никто и не говорит, что успех связан. Речь не о том.


Речь о том, что либо те, кто занимается успешным бизнесом — умные люди, и, с-но, если они считают правильным вешать на сайты свистоперделки, а Am0ralist не считает, то это потому, что они знают что-то такое, чего не знает Am0ralist.
Есть второй вариант — на самом деле отбор отрицательный, с-но условный Ларри Пейдж — тупой. Именно потому что он тупой, он и стал миллиардером (и остальные тоже). Из-за своей тупости он любит свистоперделки. А вот Am0ralist — он умный. По-этому он свистоперделки не любит, он знает, что все это просто каргокульт. И по той же причине миллионов Am0ralist не заработал — для этого надо быть тупым. Как Ларри.
Ну и третий вариант — все это просто такое большое совпадение.


Вариант по душе выбирайте уже сами.

НЛО прилетело и опубликовало эту надпись здесь
Зачем бизнес в это деньги вкладывает, если это ничего не дает?
За 4 года Webmoney сделали редизайн, по-моему, 6 раз, или даже 7. Зачем — непонятно.
За 4 года Webmoney сделали редизайн, по-моему, 6 раз, или даже 7. Зачем — непонятно.
Не только Webmoney, но и много крупных банков и магазинов часто меняют дизайн. ИМХО это сильно раздражает постоянных клиентов, которые привыкли к прежнему. ИМХО многие начальники, принимающие решения, просто не знают основ психологии, а исполнителям нужно показывать свою необходимость делая ненужную работу.
ИМХО многие начальники, принимающие решения, просто не знают основ психологии
Они как раз либо знают, либо догадываются.

Просто у них нет задачи понравится всем и каждому. И если старые пользователи ворчат, но не уходят, а новых сколько-то появляется — то цель достигнута, можно получить бонус.
Но новые появились бы и без смены дизайна, разве нет?

Я в курсе, что есть новые тренды. Но тут получается массовый «вирус» — 25-30 процентов сайтов делают редизайн (не обязательно самые крупные), они становятся «модными и современными», и остальным уже как-то неловко оставаться со старым — в частности, они боятся, что новые клиенты начнут не так охотно прибывать :)
Но новые появились бы и без смены дизайна, разве нет?
Статьи на Хабре и в других издания, шумиха в разных соцсетях и прочем. Ну а дальше — работает правило «не важно что о тебе говорят, лишь бы фамилию правильно называли».

Конечно тут важет факт редизайна, а не его тормоза, но… тут уж как получается…

Но тут получается массовый «вирус» — 25-30 процентов сайтов делают редизайн (не обязательно самые крупные), они становятся «модными и современными», и остальным уже как-то неловко оставаться со старым — в частности, они боятся, что новые клиенты начнут не так охотно прибывать :)
И они, к сожалению, правы. Мода тоже часто заставляет носить одежду, которая откровенно неудобно, а иногда и опасна для здоровья. Но ведь носят. Тоже самое и тут.

Но тут получается массовый «вирус» — 25-30 процентов сайтов делают редизайн (не обязательно самые крупные), они становятся «модными и современными», и остальным уже как-то неловко оставаться со старым — в частности, они боятся, что новые клиенты начнут не так охотно прибывать :)
И они, к сожалению, правы. Мода тоже часто заставляет носить одежду, которая откровенно неудобна, а иногда и опасна для здоровья. Но ведь носят. Тоже самое и тут.

Причём как раз некоторый парадокс в том, что айтишникам это очень тяжело понять, так как очень многие их них скорее готовы прослыть «немодными», тем мучиться с неудобной одеждой… но ведь людей, «следящих за модой» — куда больше.
Мода тоже часто заставляет носить одежду, которая откровенно неудобна, а иногда и опасна для здоровья.
ИМХО с модой сложнее см. Википедию:
Сегментами рынка модной индустрии являются категории, на которые подразделены различные марки и бренды, в зависимости от своих параметров — качества изделий, способа выпуска коллекций и ценовой политики производителя
Есть «Высокая мода», «Средний ценовой сегмент», «Массовые марки». В свою очередь в них есть под-сегменты.
Просто у них нет задачи понравится всем и каждому.
Не всем и каждому, а удержать постоянных клиентов. Нпр., если клиенты массово забирают вклады из банка — он может рухнуть.
И если старые пользователи ворчат, но не уходят,
Обычно уходят. В развитой экономике есть большой выбор. И внутри одной структуры часто бывает выбор. Нпр., операции по банковскому счету можно делать он-лайн, а можно в отделении. Если клиентам неудобно он-лайн, они будут использовать отделения банка загружая работников, а эффективность сайта упадет. Многие магазины торгуют не только по сети. Будет больше покупок вживую, больше заказов по телефону, а прибыль через сайт упадет.
Недавно АкБарс Банк замутил редизайн интернет-банка. Был довольно простой и кондовый как топор. Стал весь такой плоско-модный, с ненужными анимациями, блеклыми надписями, странными мелкими размерами шрифта (и как ни странно, чем важнее информация, тем мельче) и как следствие огромными пространствами между строками. Тихий ужас. К счастью, сделали кнопочку «Старый дизайн», но наверно скоро уберут.
НЛО прилетело и опубликовало эту надпись здесь
В развитой экономике при достаточной конкуренции малая и средняя фирмы не выживут при плохих решениях. К сожалению, большие компании, которые почти монополисты, могут позволить себе значительные убытки от неоптимальных решений.
НЛО прилетело и опубликовало эту надпись здесь
Встречал в литературе мнения, что ОС Dr DOS была в свое время лучше, чем MS DOS, что C++ не стал бы столь популярным, если бы MS Pascal не сильно уступал турбо паскалю и VBA бы не было. IE был не лучший браузер. MacOS 7.x сильно превосходила W-95 и W-98, но тут в случившемся кризисе виновата прежде всего Apple Computer, Inc… Нпр., ценовой политикой: мышь для мака стоила целых $60US, в то время как мышь для РС только 8.
PS Слышал мнения, что большой успех Явы был обусловлен мощным PR, а не только достоинствами. Однако, все подобные утверждения непроверяемы: история не имеет сослагательного наклонения.
Попробую ответить на ваш вопрос. Причин тут несколько:
1) решение «добавить вот эту рюшечку» обычно принимается не программистом, а каким-нибудь продажником или маркетологом (по крайней мере, в случае малого и среднего бизнеса, а не контор уровня Facebook), большинство из которых — это гуманитарии из тех, что называет процессором системный блок. Соответствено, о том, что это повлияет на скорость, они просто не думают.
2) у программиста, реализующего это решение, обычно не хватает либо квалификации (просто не знает, как сделать ту же асинхронную загрузку или догадаться повесить подгрузку скрипта на подходящее событие), либо времени (когда задача ставится в духе «это надо было сделать вчера, а ты тут собираешься еще два дня с оптимизацией возиться»), либо мотивации («зачем тратить усилия и оптимизировать, если все равно никто этого не оценит толком»).
3) выросло поколение пользователей, которое толком не знает, что такое по-настоящему быстрые сайты, и сложившуюся ситуацию воспринимает как норму (поэтому и не уходит к конкурентам, даже если они есть).
4) отношение к пользователю как к слепому и умственно отсталому существу, которое неспособно самостоятельно найти кнопку «подписаться» или «задать вопрос» и его необходимо потыкать мордой в баннер на полэкрана.
5) всеобщее убеждение, что программа или сайт должны постоянно обновляться вместо «хорошо сделанное и выполняющее свои задачи ПО в обновлениях не нуждается» (кроме разве что исправления уязвимостей в безопасности, если таковые будут найдены).
Имхо, никто не мешает публиковать хороший контент и быстрым сайтам без рюшечек (такие есть, и это не только старенькие форумы в классическом дизайне)… Другое же дело, что таких сайтов очень мало.
НЛО прилетело и опубликовало эту надпись здесь
Так не поиском единым. В том-то и дело, что даже очень хороших и красивых сайтов с рюшечками — больше чем на одну страницу выдачи, и на первую страницу все попасть не смогут. Кто-то всё равно проиграет в этой борьбе.

А те, кто без рюшечек — должны искать посетителей иначе. Своё ядро преданных пользователей, сарафанное радио. Я вот вспоминаю, многие паблики в вк вроде «Подслушано» в начале своего пути так развивались. А вовсе не через поиск, рекламу или оплаченные посты в других сообществах.
Солидные научные сайты (нпр arxiv.org ) и Википедия без рюшечек. ИМХО наука должна делать погоду в IT. К сожалению, не все берут пример с научных сайтов.
Согласен с вами целиком и полностью! Жаль, плюсануть кармы не хватает. Впрочем, это частный случай более глобальной проблемы «жаль, что наука и научный подход лишь в малой степени определяют жизнь людей».
НЛО прилетело и опубликовало эту надпись здесь
Гмейл выиграл не потому, что он свистит на компьютере пользователя.
Как раз за счёт этого. В 2004м, когда он появился большая чем почты в браузере была на обычных формах и потому работала гораздо медленнее, чем AJAX-подобный GMail…

Конечно в современных реалиях быстрого интернета и многомегабайтных страниц GMail'а разница невелика — но тогда GMail был меньше, а «обычная почта» — тормознее.
НЛО прилетело и опубликовало эту надпись здесь
И оно не свистело. Оно было удобно и по делу.
Так всегда бывает. Вначале добавляются фичи, которые реально удобны (AJAX позволил резко снизить задержки), а потом, через несколько лет — получаем монстра.

Во многом и Chrome был рождён из-за того, чтобы GMail-подобные сайты можно было писать не опасаясь добавить пару строк JavaScript'а… ну а потом, как и везде — оптмизаторы V8 упёрлись в возможности железа, а астронавты продолжили решать несуществующие проблемы…
Так оптимизаторы упёрлись в попытках оптимизации. Вопрос, зачем было пихать столько фич и свистелок, чтобы это в итоге начало тормозить? Причём это вопрос не только к Хрому. А также к авторам всё новых и новых стандартов (которые часто сначала добавляли, потом выпиливали, потом снова добавляли спустя год уже в другой версии).

Только вспомнить, сколько всего редко используемого (и в целом опционального) было напихано: Flex, CSS Grid, WebSQL (на страницах MDN как-то осторожно пишут, что лучше этим не пользоваться, поскольку разработка стандарта была приостановлена на стадии драфта), SPDY/HTTP2, WebRTC, WebAudio с кучей фильтров, больше подходящих для работы со звуком в проф. аудиоредакторе типа Nuendo/Cubase, чем для применения на сайтах или в JS игрушках (который сначала добавили, потом убрали, потом снова добавили в сокращённом варианте, но только в Chrome, в Firefox не стали).
НЛО прилетело и опубликовало эту надпись здесь
Флекс и грид для разных вещей, они отлично дополняют друг друга.
НЛО прилетело и опубликовало эту надпись здесь
HTTP2 ускоряет загрузку

Тогда почему я так мало где его вижу?

CSS Grid был бы полезным

Он не то чтобы бесполезен. Он сложен в освоении. По крайней мере для тех, кто пос старинке верстал на блоках.

Flex позволяет наконец нормально верстать

Вот здесь поподробнее, плиз. Чем до этого было не нормально?

И кстати с корректностью отображения у этой технологии всё плохо. Я молчу про Оперы на Presto, которые не умеют Flex, потому что его ещё не было, и Хромы версий до какой-то там. Но ирония в том, что даже в Firefox дизайн, сделанный на Flex-ах, безбожно корёжится аж до версии 51 включительно (она вышла, на минутку, не так уж и давно). Если кто не верит — можно открыть Twitch с помощью сервиса-эмулятора, позволяющего просматривать сайты в разных версиях браузеров под разными ОС.

Как по мне, при такой вёрстке как минимум меньше контроля над происходящим (хотя всё ещё можно корректировать огрехи расположения с помощью position: relative, но получается, что эти корректировки ещё и должны быть browser specific).
> По крайней мере для тех, кто пос старинке верстал на блоках.

Дожились, я думал по старинке это на таблицах…
НЛО прилетело и опубликовало эту надпись здесь
WebRTC, например, единственная возможность получать realtime аудио с сервера сейчас, когда Flash по умолчанию выключен в браузераx. HLS даёт задержки 20-30 секунд что бывает неприемлемо.
Фейсбук выиграл не потому, что у него пердящая форма авторизации. Гмейл выиграл не потому, что он свистит на компьютере пользователя. Ну и так далее.

Возможно, но мы же наблюдаем четкую корреляцию. Если пердящие формы и свистящие гмейлы сами по себе не являются причиной победы, то этой причиной является, по крайней мере, нечто с ними связанное.


Если "простые и легкие" сайты заменяются на свистящие и пердящие — значит в этом есть какой-то смысл, ведь это все требует каких-то дополнительных телодвижений, согласитесь.

НЛО прилетело и опубликовало эту надпись здесь

Так эти примеры как раз и демонстрируют то, о чем я говорю.
Зачем бы кому-то делать новый дизайн реддита, если для этого нет причин? Значит, причины были.

НЛО прилетело и опубликовало эту надпись здесь
Переключил GMail почту на упрощённое HTML отображение. Грузится мгновенно. В отличии от стандартного интерфейса, для которого даже прогресс-бар загрузки в виде логотипа сделали.
Это всегда так было. Даже в 2004м. Но раньше основной интерфейс, после загрузки, «летал». А теперь… увы…