Берутся попиксельные данные, отправляются в воркер
т.е. чисто теоретически, делегируем другому процессу. Если убрать тайминговые накладки, то то же самое я мог бы отправить на какой-то сервер, делегировав ему.
cpu-bound задачами
Можете из опыта набросать список таких задач, для расширения моего кругозора.
Модифицировать дом-дерево?
На глазок, setTimeout/interval, колбеки событий (например скрол, движения мыши). Да та же сортировка, фильтрация больших объемов данных, без лишних накладок в виде пересылки их куда-либо.
А разве web worker это не костыль для узкого спектра задач? Если в golang я могу любые задачи разбить на горутины, то web worker выполняет какую-то работу для основного процесса. У них нет общего контекста исполнения(только через api).
Разве я могу с помощью web worker распараллелить обработку DOM событий, рендеринг элементов или любые другие вычисления в контексте одного конкретного документа?
А откуда у них в бд будет хеш фотки, которую сделает ваш маленький ребенок? Если верить, то будут чекать только по хешу, а не пытаться определить что содержат ваши фотки.
Интересно сколько книг из жанра саморазвития/познания как раз таки написаны лит. неграми. Водой их обычно заливают так, как будто по одной методичке пишут. Ничего про Асю не говорю. Вопрос скорее про сам жанр и реальный вклад авторов, редакторов и лит. негров.
Поскольку данные на сервер передаются не телепатически, а по сети, то иногда можно просто подменять фп на этом уровне (если зареверсить алгоритмы шифрования).
Или на как вариант, после вызова функции canvasHash (или в самой функции), ставить брейкпоинт(DevTools протокол с этим хорошо справляется) и подменять значения на заранее собранные.
Не знаю как 10 лет назад, но сейчас операторы предоставляют возможность таргетированной рекламы как раз по конкретному местоположению, например, мегафон: https://target.megafon.ru/
Web worker не делает браузерный js многопоточным. Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным. Это все равно, что сказать, что ajax запросы делают js многопоточным или shell_exec сделает php многопоточным. Это просто делегирование работы другому процессу. У них нет общего контекста исполнения.
Все-же дополню своей ответ. Я использовал не особое и не свое определение, я использовал классическое определение языка поддерживающего многопоточность(Ниже уже расписал, чем эти языки отличаются от js, пусть браузерного).
Web worker не делает браузерный js многопоточным. Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным. Это все равно, что сказать, что ajax запросы делают js многопоточным или shell_exec сделает php многопоточным. Это просто делегирование работы другому процессу. У них нет общего контекста исполнения.
А то, что вы описали в обычных языках решается простыми атомарными операциями.
Формально в js(браузер) все вызовы функций эксклюзивные и атомарные.
Т.е. когда функция начала свое исполнение, то мы можем быть спокойны, что другая функция извне не прервет выполнение текущей или не будет выполнена параллельно. Соответственно для x = x + 1 мне не нужен мьютекс. Если из вашей функции убрать все await, т.е. сделать ее обычной функцией, в которой есть вызов двух связанных асинхронных функций, то это не нарушает принцип атомарности выполнения всей функции. Просто нужно понимать, что асинхронные функции будут отправлены в очередь исполнения, а не сразу же начнут свое выполнение — соответственно это решается просто на уровне архитектуры, без использования каких-либо техник многопоточного программирования, по типу мьютексов или семафоров.
В настоящем многопоточном языке, например golang, ситуацию, когда две и более горутин(асинхронных функций) пытаются, например, инкрементить одну и ту же переменку не обойтись без эксклюзивных локов/атомарных операций или каналов.
НО с вашим примером я согласен, тут потребуется применить те или иные техники(например очереди апдейтов), чтобы синхронизировать асинхронные вызовы. НО их можно решить только с помощью архитектуры и даже без await.
С данными примерами согласен, но одно дело когда 25% это 3500 руб, немного другое дело когда тот же телик за 60к+, то скидку в 20к вы также легко найдете? Уже молчу про товары с 6-значным ценником.
А тут цены повысятся у всех, это же не так работает что в Facebook они поднялись, а в Google нет.
Вы пишите про какие-то абстрактные цены на что-то, если речь про рекламу, то они могут подняться только если конечный потребитель вообще не откажется от услуг. Когда я сам для себя настраивал таргетинг в фб, то для меня был ключевой критерий это стоимость клиента, если было слишком дорого, то я не пользовался таргетингом.
Интересно, во Франции цены повысились на 3% после введения налога? Или после много миллиардных штрафов(и не рублей) от ЕС?
Практически любую электронику можно купить дешевле (и как правило дешевле на треть или подобное значение) в маленьком «сером» интернет магазине
Даже на треть. Вас самим не смешно? Первый попавшийся телефон на mvideo «Huawei P Smart 2021 4+128GB Crush Green (PPA-LX1)» 14000р, подскажите где найти его за 9240р? Если вы на полном серьезе говорите, что "Практически любую электронику" и «и как правило дешевле на треть», то поделитесь категориями товаров на эту любую электронику, чтобы мы сами убедились.
Мой пример показывает, что race condition в классическом его понимании отсутствует. Про какую гонку вызовов вы говорите в js? Приведите пример, чтобы мы общались предметно.
т.е. чисто теоретически, делегируем другому процессу. Если убрать тайминговые накладки, то то же самое я мог бы отправить на какой-то сервер, делегировав ему.
Можете из опыта набросать список таких задач, для расширения моего кругозора.
На глазок, setTimeout/interval, колбеки событий (например скрол, движения мыши). Да та же сортировка, фильтрация больших объемов данных, без лишних накладок в виде пересылки их куда-либо.
А разве web worker это не костыль для узкого спектра задач? Если в golang я могу любые задачи разбить на горутины, то web worker выполняет какую-то работу для основного процесса. У них нет общего контекста исполнения(только через api).
Разве я могу с помощью web worker распараллелить обработку DOM событий, рендеринг элементов или любые другие вычисления в контексте одного конкретного документа?
Поправьте меня, если я не прав.
Вы про web worker (в браузере)?
А откуда у них в бд будет хеш фотки, которую сделает ваш маленький ребенок? Если верить, то будут чекать только по хешу, а не пытаться определить что содержат ваши фотки.
Интересно сколько книг из жанра саморазвития/познания как раз таки написаны лит. неграми. Водой их обычно заливают так, как будто по одной методичке пишут. Ничего про Асю не говорю. Вопрос скорее про сам жанр и реальный вклад авторов, редакторов и лит. негров.
CanvasBlocker легко детектится, если знать что проверять ))
Даже более того, если знать как проверять, то можно получить реальный отпечаток канваса, даже с CanvasBlocker-ом.
Было бы желание и средства, а способ найдется ))
Поскольку данные на сервер передаются не телепатически, а по сети, то иногда можно просто подменять фп на этом уровне (если зареверсить алгоритмы шифрования).
Или на как вариант, после вызова функции canvasHash (или в самой функции), ставить брейкпоинт(DevTools протокол с этим хорошо справляется) и подменять значения на заранее собранные.
Банально, при случае, можно идентифицировать вас в других базах данных, которые собраны на других проектах.
Не знаю как 10 лет назад, но сейчас операторы предоставляют возможность таргетированной рекламы как раз по конкретному местоположению, например, мегафон: https://target.megafon.ru/
50% это если оба исхода равновозможные)
Web worker не делает браузерный js многопоточным. Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным. Это все равно, что сказать, что ajax запросы делают js многопоточным или shell_exec сделает php многопоточным. Это просто делегирование работы другому процессу. У них нет общего контекста исполнения.
Все-же дополню своей ответ. Я использовал не особое и не свое определение, я использовал классическое определение языка поддерживающего многопоточность(Ниже уже расписал, чем эти языки отличаются от js, пусть браузерного).
Web worker не делает браузерный js многопоточным. Web worker это отдельный процесс, с которым взаимодействует ваш основной js. То, что web worker выполняет какую-то работу для основного процесса, не делает основной процесс многопоточным. Это все равно, что сказать, что ajax запросы делают js многопоточным или shell_exec сделает php многопоточным. Это просто делегирование работы другому процессу. У них нет общего контекста исполнения.
Формально в js(браузер) все вызовы функций эксклюзивные и атомарные.
Т.е. когда функция начала свое исполнение, то мы можем быть спокойны, что другая функция извне не прервет выполнение текущей или не будет выполнена параллельно. Соответственно для x = x + 1 мне не нужен мьютекс. Если из вашей функции убрать все await, т.е. сделать ее обычной функцией, в которой есть вызов двух связанных асинхронных функций, то это не нарушает принцип атомарности выполнения всей функции. Просто нужно понимать, что асинхронные функции будут отправлены в очередь исполнения, а не сразу же начнут свое выполнение — соответственно это решается просто на уровне архитектуры, без использования каких-либо техник многопоточного программирования, по типу мьютексов или семафоров.
В настоящем многопоточном языке, например golang, ситуацию, когда две и более горутин(асинхронных функций) пытаются, например, инкрементить одну и ту же переменку не обойтись без эксклюзивных локов/атомарных операций или каналов.
НО с вашим примером я согласен, тут потребуется применить те или иные техники(например очереди апдейтов), чтобы синхронизировать асинхронные вызовы. НО их можно решить только с помощью архитектуры и даже без await.
Откуда в вас такая категоричность, прям утверждаете так как будто ваше мнение единственно верное, а все непременно неправы? ))
Налоги это зло потому что повышают стоимость конечного продукта?
Вы пишите про какие-то абстрактные цены на что-то, если речь про рекламу, то они могут подняться только если конечный потребитель вообще не откажется от услуг. Когда я сам для себя настраивал таргетинг в фб, то для меня был ключевой критерий это стоимость клиента, если было слишком дорого, то я не пользовался таргетингом.
Интересно, во Франции цены повысились на 3% после введения налога? Или после много миллиардных штрафов(и не рублей) от ЕС?
Даже на треть. Вас самим не смешно? Первый попавшийся телефон на mvideo «Huawei P Smart 2021 4+128GB Crush Green (PPA-LX1)» 14000р, подскажите где найти его за 9240р? Если вы на полном серьезе говорите, что "Практически любую электронику" и «и как правило дешевле на треть», то поделитесь категориями товаров на эту любую электронику, чтобы мы сами убедились.
Вы про какие инструменты? Разве условный фейсбук обязуясь выполнять GDPR сам не добавляет в свой функционал «контроль за личными данными» из настроек?