Помню в компании, где я работал делали защиту от такого скрейпинга для какой-то геолокационной игры:
— аккаунт привязан к телефону
— запросы API с токеном пользователя
— можно рассчитать расстояние между координатами запросов, и если пользователь «двигается слишком быстро» — банить его на 10 минут
Не совсем. Например при использовании try-catch делать return await очень даже оправдано:
async function t() { return Promise.reject(new Error('t')); }
async function a() {
try {
return await t();
} catch(e) { console.log(`In a: ${e}`); }
}
async function b() {
try {
return t();
} catch(e) { console.log(`In b: ${e}`); }
}
a().catch(e => console.log(`Outside of a: ${e}`));
b().catch(e => console.log(`Outside of b: ${e}`));
// In a: Error: t
// Outside of b: Error: t
Получается что наобороть return без await в async функциях — антипаттерн. Можно потерять catch. Я понимаю что это довольно редкий случай, но это делает его еще более опастным.
В таком случае в статье потеряна связь между проблемой и решением. Судя по презентации Zone.js, его прежде всего применяют для отладки, профилирования и тестирования.
Поясните пожалуйста, как ваша реализация или Zone.js помогает решить проблему потери контекста? Вы в точности так же передаете в setTimeout некую функцию, которая впоследствии биндится на какой-то объект класса Context, но меня то интересует что бы её контекстом оставался feedback (из описания проблемы). Или я что то упустил?
Согласен, извращенность в этом есть, хотя я бы скорее назвал это непривычностью. Общение через сокеты подразумевает ряд усложнений, нужен интерфейс взаимодействия, нужно настраивать окружение, следить за ошибкам и падениями в разных местах, обрабатывать ситуации когда один из сервисов недоступен. Автор предлагает более простой способ интеграции. Хотя, конечно, всё зависит от конкретного проекта.
Многие заметили совершенно правильно — прежде всего код интересует команду. Качество кода сильно влияет на скорость с которой новый сотрудник сможет адаптироваться. Оно влияет на возможность качественно заделать ваши баги когда вы в отпуске. Хороший тимлид никогда не допустит гниющего кода, потому что каждый человек, работающий над проектом, становится трудно заменим.
Но безусловно, во всем надо знать меру.
Из своего опыта, антикафе, к сожалению, не всегда удачное решение. Они всё таки больше предназначены для отдыха и, ближе к вечеру, там довольно шумно. Скорее имеет смысл искать коворкинг, но их достаточно мало.
Установленная в автономном режиме винтовка транслирует видеопоток по WiFi, так что стрелок может располагаться в удобном кресле где-то неподалёку.
Подскажите какой в этом смысл? Я правильно понимаю, что направлять винтовку на цель должен человек в ручную, никаких механических систем наведения в стойке винтовки нет?
Поясните пожалуйста, почему больше шансов? GPS достаточно точен.
Местоположение браслета в вашем приложении определяется координатами посредника (человека у которого установлено приложение)?
Плюс в вашем случае я должен надеяться что рядом с браслетом окажется «добрая душа» с приложением, а для GPS это не требуется.
По поводу времени автономной работы не берусь утверждать, но можно настроить GPS трекер так, что бы он редко посылал координаты и тем самым сильно увеличить время работы. Недели явно достаточно что бы отыскать пропавшее чадо по координатам.
А я накопил побольше памяти, потом нажал «Drip Memory» и стал дублировать запрос из консоли. За 10 секунд накрутил 130 MB и меня забанили. :)
Дублировал так:
$.ajax({type:"POST",async:a,url:GAME_URL+(loggedIn?"events":"eventsanon"),data:"<base64 из request payload запроса>",contentType:"text/plain"});
— аккаунт привязан к телефону
— запросы API с токеном пользователя
— можно рассчитать расстояние между координатами запросов, и если пользователь «двигается слишком быстро» — банить его на 10 минут
Получается что наобороть return без await в async функциях — антипаттерн. Можно потерять catch. Я понимаю что это довольно редкий случай, но это делает его еще более опастным.
Но безусловно, во всем надо знать меру.
Подскажите какой в этом смысл? Я правильно понимаю, что направлять винтовку на цель должен человек в ручную, никаких механических систем наведения в стойке винтовки нет?
Местоположение браслета в вашем приложении определяется координатами посредника (человека у которого установлено приложение)?
Плюс в вашем случае я должен надеяться что рядом с браслетом окажется «добрая душа» с приложением, а для GPS это не требуется.
По поводу времени автономной работы не берусь утверждать, но можно настроить GPS трекер так, что бы он редко посылал координаты и тем самым сильно увеличить время работы. Недели явно достаточно что бы отыскать пропавшее чадо по координатам.
жертвамиподопытными.Дублировал так:
$.ajax({type:"POST",async:a,url:GAME_URL+(loggedIn?"events":"eventsanon"),data:"<base64 из request payload запроса>",contentType:"text/plain"});