Pull to refresh
32
0
Ефимов Кирилл @kirill89

Пользователь

Send message
Помню в компании, где я работал делали защиту от такого скрейпинга для какой-то геолокационной игры:

— аккаунт привязан к телефону
— запросы 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 (из описания проблемы). Или я что то упустил?
Вопрос не в скорости, а в совместимости. Плюс Node.js несколько шире чем просто JavaScript, посмотрите список модулей, которые есть в его ядре.
Согласен, извращенность в этом есть, хотя я бы скорее назвал это непривычностью. Общение через сокеты подразумевает ряд усложнений, нужен интерфейс взаимодействия, нужно настраивать окружение, следить за ошибкам и падениями в разных местах, обрабатывать ситуации когда один из сервисов недоступен. Автор предлагает более простой способ интеграции. Хотя, конечно, всё зависит от конкретного проекта.
Не хватает объяснения как работает «НЕ» на транзисторах. Показал жене, она спросила — пришлось объяснять :)
Многие заметили совершенно правильно — прежде всего код интересует команду. Качество кода сильно влияет на скорость с которой новый сотрудник сможет адаптироваться. Оно влияет на возможность качественно заделать ваши баги когда вы в отпуске. Хороший тимлид никогда не допустит гниющего кода, потому что каждый человек, работающий над проектом, становится трудно заменим.
Но безусловно, во всем надо знать меру.
Потом добавить возможность сразу твитнуть результат, и упомянуть в нем других пользователей.
Из своего опыта, антикафе, к сожалению, не всегда удачное решение. Они всё таки больше предназначены для отдыха и, ближе к вечеру, там довольно шумно. Скорее имеет смысл искать коворкинг, но их достаточно мало.
Установленная в автономном режиме винтовка транслирует видеопоток по WiFi, так что стрелок может располагаться в удобном кресле где-то неподалёку.


Подскажите какой в этом смысл? Я правильно понимаю, что направлять винтовку на цель должен человек в ручную, никаких механических систем наведения в стойке винтовки нет?
На тему цветового обмана ещё очень понравилось:
image
Поясните пожалуйста, почему больше шансов? GPS достаточно точен.
Местоположение браслета в вашем приложении определяется координатами посредника (человека у которого установлено приложение)?

Плюс в вашем случае я должен надеяться что рядом с браслетом окажется «добрая душа» с приложением, а для 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"});
Я вам искренне завидую! Должно быть очень интересно поучаствовать в таком проекте.
Большое спасибо! Особенно за «cd -» — не знал.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity