Pull to refresh
47
0.2
Виктор Хомяков @victor-homyakov

Программист

Send message

Судя по юзернейму, для вас это особенно актуально :)

Проблема с антивирусом была в том, что антивирус дописывал на страницу скрипт с твоим уникальным ID, который автор страницы может собирать, сохранять и матчить между твоими разными заходами, например так:

  • заходишь на сайт в приватном режиме, Касперский дописывает скрипт /12345/main.js, сайт видит этот скрипт и сохраняет "был такой uuid 12345, больше про него ничего не знаю"

  • заходишь на тот же сайт в неприватном режиме, Касперский дописывает скрипт /12345/main.js, сайт такой "Ага! uuid 12345 - это Вася Пупкин"

  • через месяц чистишь всё в браузере, заходишь на тот же сайт в приватном режиме, Касперский дописывает скрипт /12345/main.js, сайт видит этот скрипт с этим же uuid и говорит "Здравствуйте, Вася Пупкин, вы целый месяц отсутствовали!"

WebRTC то включен только на практике не работает поскольку от функционала одни заглушки

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

Среди современной молодёжи, выросшей на телефонах и урезанных ноутбучных клавиатурах, мало кто вообще знает, что такое Page Up и Page Down.

будут сменять друг-друга мало говорящие надписи, да ещё и так быстро, что ты там ничего не успеешь прочитать?

А вот так как раз и не надо делать. Вывод всех подряд быстро сменяющихся сообщений сам по себе может замедлить процесс на десятки процентов даже на современном железе - есть прецеденты в виде MSBuild и npm install.

Лучше раз в 200-300 миллисекунд выводить последнее текущее сообщение/последнее значение прогресса выполнения, а полный список сообщений писать куда-то в лог.

Эту байку слышал почти тридцать лет назад в университете от преподавателей немецкого, только с более прозаичным финалом, т.к. при синхронном переводе обычно нет времени помолчать - разговор уйдёт вперёд. Из ряда "10 ложных друзей переводчика", "5 самых длинных немецких слов", "страшилки для начинающего переводчика".

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

Видел более лаконичную формулу (суть та же): π секунд == нановек

  • В тёмной теме Хабра часть картинок выглядит как "серое и чёрное на чёрном", ничего не разобрать

  • В главе "Я живу в US/UK. Надо ли мне вообще о таком задумываться?" потеряли выделение не-ASCII символов прямо в тексте главы, которое есть в оригинальной статье

  • Перевод низкокачественный, читается плохо

Лучше прочитать оригинал

Привет из будущего. Китай построил и запустил жидкосолевой исследовательский реактор https://en.wikipedia.org/wiki/TMSR-LF1.

Во-первых, в песочнице по ссылке из статьи https://codesandbox.io/p/sandbox/usecallback-test-cxxgv7?file=%2Fsrc%2Findex.js%3A14%2C1 StrictMode НЕ выпилен:

root.render(
  <StrictMode>
    <App />
  </StrictMode>
);

Во-вторых, речь не столько о StrictMode (да, он может вызывать отдельные части кода по два раза вместо одного, но он это делает одинаково в обоих сравниваемых вариантах, так что привносит одинаковые изменения в замерах), сколько о разнице в сборках React и бесполезности замеров тонких различий скорости в совсем не предназначенной для этого сборке. И вы вполне могли бы нагуглить, о чём речь, самостоятельно: https://www.google.com/search?q=react+development+mode+vs+production. Я и так вкратце об этом написал в предыдущем комментарии, но в интернете можно найти то же самое, описанное более подробно.

Учился по Петерсону

По Петерсон. Внезапно это не он, а она - Петерсон Людмила Георгиевна.

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

Уже есть учебники математики Петерсон, там достаточно материала по логике. Некоторые школы даже до сих пор по ним работают в классах с математическим уклоном (и да, они выкидывают из программы всё ненужное, чтобы вместить математику). Только это оказалось очень сложно и для учителей (не каждый учитель может это объяснить детям, некоторые задачи даже учитель не может решить) и для учеников (не хватает у большинства в этом возрасте общего интеллекта для понимания таких вещей, и времени надо очень много каждый день, а если заболел и что-то пропустил - потом вообще хрен догонишь).

Вы же понимаете, что замеряли скорость работы development-сборки реакта и что в production-сборке результаты измерений будут другими?

В development-сборке есть дополнительные проверки, они занимают дополнительное время, и на этом фоне искомая разница в один вызов useCallback на один ReactElement может быть незаметна. Пример - профайл десяти нажатий на кнопку "Update state" в приложении по вашей ссылке в Chrome. useCallback там есть, но он практически незаметен:

Разница в точности измерений (гранулярности значений) в некоторых браузерах.

performance.now():

  • в Chrome даёт точность до десятых долей миллисекунды

  • в Node.js - до сотых

  • в Firefox и Safari - до миллисекунды

Date.now() даёт точность до миллисекунды (как и требует спецификация).

Некоторые браузеры, позиционирующие себя как безопасные, раньше на хайпе атак Spectre и Meltdown специально ухудшали точность замеров и performance.now() и Date.now() до пяти миллисекунд. Сейчас не знаю, давно не проверял.

В WebStorm и других IDE от JetBrains давно есть аналогичная штука, называется Structural Search and Replace https://www.jetbrains.com/help/webstorm/structural-search-and-replace.html. Где-то в документации упоминалось, что там используется упрощённая, но более быстрая версия AST.

по итогу всегда получался стелсер-лучник (снайпер)

Вспомнил две старые истории. Первая - про игру Cold Zero. Там посреди одного уровня можно было получить снайперскую винтовку, но с ней было мало патронов - от одного до пяти, если правильно помню (там был противник-снайпер, и чем аккуратнее его снимешь - тем меньше раз он успеет по тебе выстрелить, тем больше патронов останется, а докупить патроны посреди уровня нельзя). Но потом я нашёл баг в игре и научился прямо на уровне размножать патроны, тогда и в этой игре стал снайпером :)

Вторая - про Planescape: Torment. В этой игре в принципе невозможно стать лучником. И вообще, лучник на всю игру только один.

Аналитик. Когда учился в универе - там была библиотека программ на Аналитике для геодезических расчётов, переводили их на что-то более современное (не помню уже, на что именно).

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

если игра завязана на сервера

То откройте код сервера или выложите его бинарники

1
23 ...

Information

Rating
2,327-th
Works in
Registered
Activity

Specialization

Frontend Developer, Специалист по производительности приложений в Node.js и браузерах
Senior
From 8,000 €
Performance
Performance Tuning
JavaScript
React