Александр, тебе в итоге надо отправить форму с файлом. Используй FormData, запихни туда файл, отправь. Сабмит формы - это отправка формы, плюс переход на новую страницу. Это всегда можно сделать через XMLHttpRequest/fetch, и будет намного удобнее для пользователя.
воткнуть файл или блоб в < input type=file > не получится.
раньше ещё был, совсем недавно, хороший сайт refactoring.guru, но теперь что-то не открывается, видимо утонул из-за всей этой содомии с буквой z. Автор там из Украины, баннер вывешивал.
А по архитектурностям всяким, лучше заодно изучить TypeScript, и уже вооружившись им, подходить к трудам классиков. В википедии, по аббревиатурам SOLID, GRASP и т.д., будет как краткое описание, так и ссылки на книги и хорошие статейки.
Ну, разумеется, Роберт Мартин "Чистая архитектура" - это прям обязательно.
почему TS? да потому что без него ты не сможешь понять, о каких "абстракциях" и "реализациях" говорят все эти люди.
дмитрий шевченко, очень смущает тот факт, что у sinx*sgn(cos x) есть разрывы в точках, где cos меняет знак. Возможно, потому и не прокатывает просто взять и посчитать ньютоном-лейбницем.
lexstile, если что, этот воинствующий джун ничего внятного тут не написал (как минимум, предельно очевидно, что сабжевый хук ни коим образом не связан с кэшированием useQuery, да и вообще с useQuery). Просто чел позавчера открыл для себя декораторы и от радости снесло крышу.
Adamos, векторное произведение - это 2 умножения. Итого O(n * ln(n)) умножений. Тут вопрос, что быстрее - один арккотангенс, или ln(n) умножений :-)
Как вариант, можно не разводить тригонометрию, а посчитать котангенсы (вроде их, если опираемся на самую левую из самых нижних) - просто одну координату делим на другую. Там правда отдельно надо обрабатывать особые случаи, когда угол равен 0 (а котангенс равен бесконечности).
Но это надо создавать отдельный массив структур, возиться с ним... Я бы забил и оставил векторные умножения "на лету".
alexalexes, это можно будет легко обстряпать через new Function(...)
а вот регуляркой можно предварительно пофильтровать, чтобы всякая хрень не проскочила
Антон Горецкий, ну так я и привел примеры именно для данного хука. Debounce в чистом виде это конечно хорошо, но прикручивать его к этим примерам придется за тот же десяток строк.
Антон Горецкий, например, для передачи отложенного значения в пропсы компонента, в котором по этому значению делается запрос на сервер. Или для запроса через useQuery (который в React Query). Исходное неотложенное значение - из какого-нибудь текстового инпута, и дожидаемся "окончания ввода".
const Navbar = ({topActive, setTopActive})