24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Сап, jsач, нужна твоя помощь (сам ещё только вкатываюсь).
Суть: Есть массив промисов (если надо, можно вместо него использовать сет промисов, чуть переписав окружающий код), с которым работают асинхронные функции. Они могут в рандомное (с нашей точки зрения) время добавлять туда промисы и удалять их оттуда. Задача: сделать функцию, которая принимает этот массив и возвращает один общий промис на выполнение всех промисов в массиве (включая добавленные позже и исключая удалённые из массива).
Promise.all не работает, он не обращает внимания на те промисы, которые добавлены позже его вызова.
Добавление я, вроде бы, смог реализовать (т. е., если используется только .push, то можно внутри асинхронной функции спокойно перебирать массив (с awaitами на каждой итерации), и если в конец массива будут добавлены новые промисы, то цикл обязательно до них дойдёт).
А вот с удалением серьёзные проблемы. Если, например, цикл дошёл до какого-то промиса и ждёт его, а в это время какая-то другая асинхронная функция удалила этот промис из массива, то как об этом узнать и прервать бессмысленное ожидание промиса, который уже удалён из массива?
Репощу сюда из предыдущего треда. Здарова, вебаны. Такое дело. На https://duckduckgo.com при нажатии на капс форма поиска теряет фокус. Я пытаюсь это предотвратить. Очевидная идея — написать юзерскрипт, который будет перехватить нажатие клавиши и вернуть фокус на место. Но нет. document.querySelector("#search_form_input").onkeydown=((e) => {console.log(e.which); return;}) $(document).keydown((e) => {console.log(e.which); return;}) И то, и то просто не печатает кейкод для капса. Потому что, как выяснилось, по какой-то причине в ЖСе для этих кнопок ивент нажатия просто не создаётся. document.querySelector("#search_form_input").setAttribute("autofocus", "") Тоже ничего не меняет. У гугла, кстати, форма фокус не теряет. Браузер Firefox 87.
>>1993845 >>1993843 >>1993834 >>1993824 Всё, я разобрался. Это из-за какого-то косяка в i3. Когда делаешь биндинг на любую клавишу/сочетание, это происходит. Странно, что это эта "особенность" оконного менеджера проявляется исключительно в браузере и исключительно на одном сайте.
У меня есть в стейте типо статус приложухи isUpdated. Короче некоторые экшены при попадании в редюсер изменяют его с true на false. Хочу чтобы если flase, то у меня фетчилась дата с сервера. Как сделать чтобы функция мониторила статус isUpdated и автоматически что-то фетчила с сервера? В useEffect прописать state.isUpdated? Но тогда это получится бесконечный цикл фетчей.
Нужно: Принимать в инпут только целые положительные числа и убирать все нули, если они стоят перед любыми другими цифрами, типа 002 -> 2
И вот что за пиздец на строке 7, я могу заменить эти нули на что угодно, но только не на пустой символ. Если заменяю их на числа от 1-9 все круто, 001 становится например 991. Но если хочу заменить на пустой символ и потом вернуть в setProductCount число, а не строку, преобразовывая через + оператор. То хуй там, нули игнорятся и остаются на том же самом месте. Они не меняются на пустой символ. Что за хуита? Почему нельзя заменить нули на пустой символ? Они ведь все равно еще до преобразования в число преобразовываться должны же?
>>1994071 Вот теперь объясни, в каком месте я сру себе в штаны? Почему реплейс не хочет заменять нули на пустой символ, но заменяет на что угодно другое?
>>1994074 Может я потерял нить твоих рассуждений, но нахуя тебе в принципе что-то реплейсить на пустой символ?
>Нужно: Принимать в инпут только целые положительные числа и убирать все нули, если они стоят перед любыми другими цифрами, типа 002 -> 2
По регулярке проверяешь, совпадает ли введенный формат. И проверяешь начинается ли значение с 0, если да, то делаешь +value.toString() (если нужно дальше работать со значением как со строкой). Или тебе нужно еще проверять кейсы типо 102 -> 12?
>>1994074 >>1994071 Я не понимаю почему, но дальше всё передается так, как если бы нуля не было, как в твоем примере, даже без моей проверки. Но в самом инпуте остается 002, а дальше в корзину попадает просто обычная цифры 2, даже если её в консоль как строку вывожу. Я не могу понять почему нули не пропадают из инпута. Причем пустой символ явно заменяется на 0, и возможно каким-то хером пустой символ заменяется на 0 многократно? Потому что сама замена-то работает, что за пиздец?
>>1993733 Необязательно отменять сам промис. Важно, чтоб функция перестала его ждать. Сейчас подумал конкретно над этим — можно внутри функции оборачивать каждый промис в Promise.race(этотПромис, промисНаОтмену), и тогда при срабатывании отмены (правда тут вопрос, каким образом заставить её сработать в нужный момент), функция перестанет ждать изначальный промис.
>>1993785 > не лезь, дебил она тебя сожрёт А на чём ещё сайты делать?
> >если надо, можно вместо него использовать сет > чё несёт вообще Просто подумал, что необязательно именно массив. В сете каждый промис будет встречаться один раз, что как раз подходит, ведь нет смысла несколько раз ждать один и тот же промис.
> >возвращает один общий промис > ты хочешь странного Что тут странного? Ведь для чего-то же Promise.all() существует, вот мне нужно что-то похожее, но получше. С нужной задачей Promise.all() не справляется.
>>1994079 >>1994077 Дело в том, что setProductCount принимает только число, ну и в целом там дальше проверок никаких делать не нужно из-за этого. Поэтому я любые введенные значения преобразую в число. Но вот дело в том, что мне просто из начала только для пользователя нужно убирать нули. И преобразования вида +value эти нули из инпута не убирают. Хоть и для дальнейших вычислений все нули пропадают если они стоят вначале.
Дальше в качестве функции я передаю коллбек вида setProductCount={(count) => (handleItemInputCounter(item, count))}. Чтобы потом это поле введенное обрабатывать. Но блядь, почему заменя корректно работает с каким угодно символом, кроме пустого значения? Такое ощущение, что пустое значение заменяется многократно на ноль. Как если в консоли ввести + и пустые кавычки
>>1994104 > >Что тут странного? > Твой общий промис резолвится, потом ты добавляешь новый промис в исходный массив. Ожидаемое поведение? Отсутствие действия. Если в массиве в какой-то момент не остаётся pending промисов (все или завершились, или удалились из массива), то текущая задача выполнена, общий промис завершился, дальше моя функция ничего делать не должна (а если вдруг надо, то её нужно заново вызвать).
Суть в том, что в компоненте basketInput.tsx обрабатывается значение. А в компоненте App значение принимается с помощью коллбека. Может это какой-то лютоебанутый способ, я не знаю, но дело в том, что в реальном проекте туда передается еще и объект товара, так что обновление стейта там происходит чуть сложнее, и поэтому я значение из инпута принимаю таким образом. Но факт в том, что нули НЕ УБИРАЮТСЯ даже в этом упрощенном примере.
И теперь главное: 1. В этом тестовом примере первый нолик я заменил на цифру 5. Просто удалите начальную еденичку в инпуте клавиатурой (не стрелочками) и когда появится нолик, начните вводите любое число и первый нолик заменится на 5. Если вы в коде, в строке 14 компонента basketInput.tsx поменяете 5 на пустое значение, то все нули будут оставаться на месте. 2. Если убрать оператор + из 14 строки, и получается, передавать в setProductCount строку, НУЛИ УБИРАЮТСЯ!. Но тогда будет ошибка типизации, так как функция просит только числа. И я не хочу отправлять никуда строку, чтобы потом обрабатывать тип значения, я хочу чтобы компонент возвращал только числа.
Готов принимать хуи ведрами, только объясните в чем тут ошибка.
У тебя был productCount=4 который ты передал в value инпуту, потом ты ввел "0" первым символом, value у инпута стало "04", а productCount ты посчитал как 4, это 4 передается обратно в value, и поскольку value не поменялось с прошлого раза, то dom можно не теребить, чего реакт и не сделал. Reconciliation!
Когда ты "0" заменяешь на "5" то у тебя получается новые value отличное от предыдущего, потом dom нужно обновить.
Когда ты уже поймешь что When leading zeros occupy the most significant digits of an integer, they could be left blank or omitted for the same numeric value.[3]
[3] - Zegarelli, Mark (2014), Basic Math and Pre-Algebra Workbook For Dummies (2nd ed.), John Wiley & Sons, p. 8, ISBN 9781118828304.
>>1994171 Спасибо большое, вот такого ответа мне вообще никто не давал, я думал у меня уже крыша едет и я чего-то очевидного не вижу. Наверное очевидное, да, но все же. Спасибо тебе большое
есть section в нем лежат список, два заголовка и кнопка при добавлении hover к section, нужно менять цвет у обоих заголовков и у элементов списка. я так понимаю, это можно сделать только путем использования js. ибо через css я уже несколько часов не могу понять КАК
я очень зеленый во всем этом деле, недавно загорелся желанием и пока начал с html и css, планирую изучать js как только буду достаточно понимать разметку и стили
Анонсы, знает кто как сделать звуковое оповещение в Tampermonkey на одном сайте?
Вот такой код не работает, Хром ругается "Cross-Origin Read Blocking (CORB) blocked cross-origin response". Уже блядь весь реддит перечитал, там везде похожий код, который нихуя не работает вообще
>>1994352 получается я в скрипте прямо так и пишу, только меняю mySection, zagolovok на свои селекторы? просто я попробовал и не получилось кусочек css и то что он делает приложу, думаю, так будет логичнее
>>1994534 >Как это - навернулось? Ну вот так. До обновления были отступы, пробелы, табуляции. Обновился - их нет. Код выглядит как сплошная стена текста, остались только переходы на новую строку.
>Может просто настройки где-то на дефолтные откатились? Я не сильно давно пользуюсь, поэтому не знаю.
Есть функция, которая диспатчит экшн, и следом пишет данные из стейта в локал сторадж. При этом в сторадже данные появляются так, как будто никакого диспатча не было. При этом если послать второй экшн, то данные в сторадже изменяется, но так как будто был отослан только один экшн. Я пробовал ставить таймаут на вызов записи в сторадж, но это не помогает. Где я делаю что-то неправильно? Функция литерали двухстрочная: dispatch(action_object) localStorage.setItem("...", string)
>>1994842 Хуевая затея, там кроме рака нихуя не будет, мимо олд js тредов Такие конфы создавались 5 раз, на 2й-3 день они удалялись, пусть лучше в личке общаются
>>1994850 >на 2й-3 день они удалялись Это потому что кто-то чмоня, которая любит вдыхать только ИЛИТНЫЙ ПЕРДЕЖ. Наоборот, чем больше всякого пиздеца и треша, тем лучше.
>>1994754 Идея хуйня. Вы будете двумя долбоебами которые ничего не знают, вас будет тошнить от друг друга, потому что в друг друге вы будете видеть самих себя.
Есть кнопка, по умолчанию серая. Есть функция, которая при нажатии на эту кнопку меняет её цвет с серого на зелёный. При перезагрузке страницы, цвет меняется на цвет по умолчанию, а я хочу, чтобы он сохранялся. Как я понимаю, это из-за того, что у меня вся страничка отрисовывается тремя файлами HTML, CSS и JS. Соответственно, никакого бэкенда у меня нет, и каждый раз браузер получает один и тот же исходный файл, где кнопка серая. Вопросы следующие: можно ли каким-то образом менять CSS-правило не в браузере, а непосредственно в исходном файле, или обязательно добавлять для этого бэкенд? Если всё таки придётся добавлять его в структуру проекта, то как это сделать? И правильно ли я вообще думаю?
>>1994862 если они развиваются не по одному курсу, то может нормально сработать, допустим сегодня чел1 выучил тему 1, чел2 выучил тему 2, но в любой момент они могут поделиться знаниями друг с другом, или разобраться в теме 3
>>1994865 Цвет кнопки должна для одного человека меняться и за ним привязываться, или чтобы любой человек мог зайти и нажатием опять поменять цвет кнопки для всех?
>>1994869 У меня был похожий опыт, в итоге мы пообщались года 3 назад. Парнишка был с дамбасса, хотел уехать в Харьков если ты все-таки переехал - красавец. В итоге мы пиздели на отвлеченные темы, что там в дамбассе, обсуждали семейные обстоятельства и прочую хуиту, но только не кодинг.
>>1994865 Ещё пока ковырялся со сменой цвета наткнулся на странную фичу. По умолчанию цвет кнопки серый, значит при проверке условия она должна сразу же поменять цвет? Неее, нифига подобного. При первом нажатии кнопка остаётся серой, дальше работает как по маслу. Задался вопросом "Почему так?", добавил перед проверкой условия вывод цвета в консоль, и оказывается, при первом нажатии у кнопки вообще как будто нет цвета. Как это понимать?
Как заебало нахуй, что невозможно найти вменяемых статей по работе разных модулей (даже популярных) с тайпскриптом. Я такой человек, что для того чтобы понять что-то на 100%, мне мало прочитать доки, мне надо увидеть code example, все целиком, как что работает. Какой-нибудь маленький пример. И как же заебало, что блять негры и женщины набранные по квотам пишут ебаные статьи с нерабочим кодом. Вот я 5 минут назад читал статью, модуль Х с тайпскриптом и там, блять, ни в одной функции нет типа возвращаемого значения. Ну типо нахуй нужно, угнетатели хуевы понапридумывали говна. Писал негр. В другой статье половина кода типизирована как any. Охуенно. Писала женщина. Пиздец, заебись блять. Охуенный у тебя тайпскрипт. Я тоже не какой-то суперпрограммист, а скорее всего хуевый. Но каждый ебаный раз, когда я открываю какую-то статью почитать, у меня на каком-то блять подсознательном уровне возникает понимание, что автор нихуя не понимает о чем пишет, а свой код даже не в состоянии запустить.
>>1995034 Нет, нихуя. Уникальные типы возвращаемых значений, уникальные аргументы, интерфейсы и т.д. И приходится либо сидеть и ебать себе мозги чтением лапшеобразного d.ts файла, либо прочитать одну годную статью, где вменяемо используются основные фичи.
Как же заебало, что я не могу понять синтаксис языка и во всех примерах в разные места засовывают разные штуки и добавляют новые поверх, хуй поймешь куда можно всунуть строку, куда нет.
Всем привет. Работаю над одним проектом, и там есть требование, чтобы при потере соединения(например человек с планшетом зашел в лифт и там нет интернета) приложене продолжало функционировать. При этом в оффлайне оно взаимодействует уже с данными, которые кешируются на клиенте. А потом как только соединение восстановилось, данные "пушились" на бекенд и актуализировались с учетом работы в оффлайн-режиме. Т.е. то что пользователь "наредактировал" в оффлайне должно в любом случае потом улететь в базу как только появится сеть.
Куда копать, чтобы реализовать такую штуку? Пока на ум приходит IndexedDB в API браузера, но не совсем понятно как "отлавливать" автоматически момент когда сеть потеряется/снова вернется. Раз в n минут опрашивать бэкенд и смотреть на статус код ответа кажется ужасным решением, т.к. это не гибко, не безопасно и есть риск потерять данные.
>>1995573 > но не совсем понятно как "отлавливать" автоматически момент когда сеть потеряется/снова вернется. Ты почему даже не попробовал в гугл этот вопрос вбить, программист?
>>1993705 (OP) Можете посоветовать библиотеку? Которая бы предоставила некий холст, на котором можно позиционировать объекты по XY, который можно приближать-отдалять, перемещать/прокручивать, который бы позволял размещать на себе объекты (на которые бы также распространялось приближение-отдаление), выводить какую-то информацию, удалять ее, ну и пагинацию поддерживал в идеале.
Что-то вроде, только гораздо более сложно, предлагает draw.io, на холсте которого ты рисуешь свои диаграммы или виджет яндекс-карт, на которых можно размещать свои метки и подписи. Мне это нужно для отрисовки планов этажа и размещения на них элементов, подсветки зон и т. д.
В нпм по запросу "canvas" гуглятся соответствующие низкоуровневые штуки, по "floor plan" какие-то непонятные проекты без демок, как найти нужное я хз. Возможно, мне нужна некая рисовалка svg с вставкой элементов поверх, хз. Но делать на голом канвасе или даже на движке карт вроде лифлета кажется сложноватым.
Guys, а нахуя в конструкторе вызывать метод супер, если он не используется на практике? Ну мол дока реакта говорит вызывайте всегда супер когда делаете компонент на классе. Но пропсы видно в рендере даже если мы не вызываем супер.
Тогда супер для пропсов отпадает, что же остается? Остается что супер нужен лишь для того что бы зацепить в созданный класс, методы которые прендлежат React.Component? которыми никто не пользуется по сути, у нового класса всегла свои методы.
>>1995697Да не я уже понял, это что бы this корректно работал в конструкторе, хуета короче ебаная. Я всегда через стрелочные пишу. Да и ваще на хуках. Щас прост копаюсь в мелких нюансах перед собесом
Привет двач. Сейчас будет конченная просьба, но тем не менее. Я 6 лет пишу на ноде, уже дохуя сениор с зп 5к, но есть одна толстая вонючая проблема. Я не понимаю ООП, SOLID и такие простые штуки как DI. Как, сука, это понять? Может кто-то заделиться материалом для ну совсем тупых?
>>1993705 (OP) Не понимаю почему при перетаскивании появляется просто запрещающий значок без самого элемента, а должно быть как на пике взял тутор даже, там на видео с таким же кодом видно элемент, у меня просто значок гуглил дев мозила, там в апи днд ничего про такое не сказано >>1995902 >ООП я сам сейчас начинаю пользоваться тайпскриптом, не понимаю зачем, но много где нужен Наверное стоит поделать что-то простенькое типа свое апи для туду листа какого-нибудь + почитать что-то типа введения в ооп
>>1995915 https://www.npmjs.com/package/ibm-watson Любая либа, которая не будет отправлять твою хуйню куда-то там в какие-то сервисы будет работать оффлаен. Посмотри вот это, глянь как происходит рекогнишен. Если это тупо апишка, то в оффлайне не оживёт. В остальном тебе похуй куда ставить потобные тулзы - на экспресс ебучий, нест, хапи или электрон - и то и то нода
>>1995607 Стили в head, скрипт перед закрытием body, всё ок Потестил с другими тегами и параметрами, та же фигня. Есть одна безумная теория, что в DOM, с которым я работаю, значения стилей по умолчанию всегда "", и меняются только когда я начинаю с ними работать. Я шизик, или такое возможно?
>>1995915 Вообще наверное в оффлайне это залупа полная, у тебя в любом случае будет какая-то апишка, которая будет всю эту хуйню слать в какой-то сервис, который тебе уже будет отправлять результат обработки, либо ты просто добавишь толстую жирную либу в свой проект. Не надо так. В зависимости от того, насколько критичен спич рекогнишен можно либо использовать апишки под это дело https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition либо изъебнуться и прикрутить что-то работающее локально, либо еще больше изъебнуться и прикрутить third party на каких-то сях или пистоне и реализовать интерфейс общения с этой залупой. Но в последнем случае будет высока вероятность, что ты сделаешь велосипед и легче будет поискать что-то готовое. Но с третьей блять стороны есть вероятность что это готовое будет дырявое и нести для твоего проекта потенциальную опасность, поэтому три раза подумай, и уже потом добавляй новую говнолибу в свой проект >>1995942 -кун
>>1995957 Похоже style это именно стили на конкретном элементе а не ксс. Тебе немножко надо переписать логику: добавляй и убирай классы, а не напрямую стиль.
>>1994934 Так, чтобы ДОМу со стилями работать, надо сперва распарсить стили из ксс и прикрутить к элементу, а потом уже считывать значение. Ты можешь проверить это, смотря на элемент в ДОМе - значение появится только после нажатия кнопки. Соответственно до вызова `style` на элементе никакого значения нет и нужно сперва вызвать `getComputedStyle()`, чтобы его присвоить. Именно поэтому любой подход, дрочащий стили напрямую через ДОМ - всегда лютый оверхед по сравнению с манипуляцией строки класса или других аттрибутов. TC39 дал им CSS, который всегда работает на парралельном потоке и ускоряется видимокартой, крась блять кнопки им. Говорит не хочу красить кнопки списком стилей, хочу жрать говно и красить кнопки через костыльную ассинхронщину на основном потоке. И это фронтэндеры блять? Пидоры это, а не фронтэндеры. А насчёт сохранения состояния кнопки без бэкенда, тут только `localStorage` поможет.
>>1996020 Я не споро, анон. Просто финская фирма предлагает перекатиться удаленно к ним на ембер. И периодически вакансии мелькают с ним и сразу в описании ваканси обычно пишут ЕМБЕР ЭТО ОХУЕННО, МЫ РАССКАЖЕМ ПОЧЕМУ ЕМБЕР ОХУЕННЫЙ. Но я вот не особо задумывался правда ли это, а сейчас задумался и ты вот говоришь что ембер говно и статистика тоже не даст соврать. Судя по всему это скоро новый легаси.
>>1996065 Это уже легаси. Эмбер может прекрасно ложиться на их проект, все такое, но по факту Эмбер нахуй не нужен. Он может и не быть говном, но это никак не поменяет того факта что тебе выгоднее реакт. У нас на проекте используется hapi. Это сука пиздец, от него блевать хочется. Но архитектор залупится писать новые сервисы на чем угодно кроме него, мол, нихуя не знаю, хапи заебись, остальные фреймворки нинужны. С эмбером мб та же история и там такой же мамонт сидит и залупится юзать реакт. так-то реакт тоже говно и мб он это прекрасно понимает и поэтому топит за эмбер, но с финансовой стороны вопроса это никак не меняет тот факт, что реакт востребованнее и дороже.
Коллеги, такой вопросец: имеется типикал массив объектов типа {id:intiger, name:string}. Нужно удалить из него объект, зная только индекс. Обычно я использую такой подход - https://jsfiddle.net/murbhpek/1/ Или есть более красивое/удобное решение?
допустим я делаю сайт и использую какую нибудь стороннюю либу есть ли какая нибудь умная тулза которая выкинет из кода этой либы все то что я в своем основном проекте не использовал? то есть уменьшит размер js файла
>>1996449 Тут вебпук не будет волшебной таблеткой, так как у пикси даже дефолтного импорта нет. С пикси надо пердолиться по-особому и ставить отдельные пакеты вида `@pixi/${name}`. Скорее всего придётся выделить отдельный файл для реэкспорта таких пакетов с одного места, если тебе конечно писать отдельный импорт каждый раз не норм.
>>1996462 может ты мне подскажешь мне пикси нужен для создания viewport на канвасе чтобы можно было его зумить приближать и т д. Впоследствии будет пиксельный редактор типо. Я ведь не ошибся в выборе? я посомтрел и мин версия пикси примерно 500кб плохо конечно но что поделаешь...
>>1997025 >а плодить конкурентов разбалтывая годноту я не хочу. Типикал токсик пидораха. ВСЕ СЕБЕ, ДОМА ПРИХОДИТСЯ, КРУГОМ ВРАГИ, НАМ ВСЕ ЧУЖИМ НИЧЕГО, УХ ПРОВАЛИТЬСЯ БЫ ЭТОМУ ПЕТЬКЕ! ЛИШЬ БЫ НАШ САРАЙ ВЕТРОМ НЕ СДУЛО, УИИИИ ХРЮК ХРЮК. СМОТРИ КАКУЮ ШТУЧКУ ПРИНЕСЛА ТАКОЙ НИ У КОГО НЕТ! Как хорошо что за бугром люди живут а не орки.
>>1996013 Вот-вот, я об этом же >>1996030 Да, наверное так будет удобнее, и в целом код станет понятнее. Я буквально только вчера увидел такую реализацию, самому как-то в голову не приходило, что можно вешать стили на классы и навешивать сами классы
Если под DI ты имеешь в виду Dependency Inversion, то в обоих постах она затрагивается, но сама концепция элементарная - инверсия зависимостей позволяет тебе не зависеть напрямую от низкоуровневых деталей в высокоуровневых компонентах, а общаться с ними только через заранее известный интерфейс.
Например, если ты хочешь говорить с базой данных приложения, то без DI ты это сделать можешь только через import db from "db", привязавшись таким образом к той конкретной имплементации, которая лежит в том конкретном файле. С DI ты избавляешься от этого импорта и получаешь БД из какого-то другого места(в рантайме или через контейнер) привязываясь только к публичному интерфейсу, который может реализовать любая имплементация.
Более того, вся концепция ООП была придумана и существует только для того, чтобы DI реализовывать, потому что это настолько важный и удобный паттерн.
Какая есть простенькая либа для валидации JSON на клиенте? Нужно чисто проверка полей а-ля required: True, empty: False, type: number. AJV же больше для сервер-сайда заточен?
Пацаны как думаете если уже сам в ручную могу с любыми api работать, вывести инфу, настроить поиск, собрать электронный магазин на коленке, редукс сторы и хуки тож пишу уже по памяти, базовый js всякие замыкания, эвентлупы и прочую дрисню знаю и подавно. Есть смысл аплаиться на джунчика? Я знаю точно что да, но мне вот пришла в голову мысль угареть по алгоритамам на пару месяцев, книжки и туториалы посмотреть что бы в ооп шпрехать сильнее. Есть смысл алгоритмы изучать, или реакто макакам на алгоритмы похуй?
>>1997278 На алгоритмы в целом похер, самые нужные все уже давно придуманы и лежат в библиотеках. Лучше учись в чистый код, рефакторинг, технологии и методологии разработки ПО.
https://www.npmjs.com/package/idb Это код с официальной страницы пакета IDB для упрощения работы с indexedDB. Вопрос на миллион долларов: что здесь не так? Поясняю: может быть я пиздец тупой и вижу ошибку там, где ее нет. А может быть все норм и я просто не понимаю каких-то осоебнностей использования языка. Короче, полчаса-час на ответы, либо до трех первых ответов, либо до первого угадавшего, а потом посмотрим, обосрался ли я.
>>1997887 Проектики разные в портфолио пилить, хотя у меня их уже 5 штук спа в портфолио полноценных. Да пришел к выводу что буду готовиться к собесам месяц, потом пойду их проходить. У меня такое ощущение что вот чегото не хватает сейчас, а именно на собесе и зададут такие вопросы которые я не знаю, поэтому постоянно готовлюсь дотошно что бы быть сильным на вопросах. Но уже складывается ощущение что можно и на мидла идти кек, короче свои тараканы в голове в плане подготовки, не хочу выглядеть как васян вкатун с курсов, которых 90% и которые сливаются на собесах
>>1997904 >на собесе и зададут такие вопросы которые я не знаю Поэтому нужно брать количеством, а не выжидать конкретную "свою" вакансию. Джуну надо каждый день подаваться куда только можно. А так можно вечно ждать сидеть, это глупо.
>>1993705 (OP) Как игнорировать собственное превосходство над другими кодерками и нормально работать? Вот не могу бля нормально продолжать кодить на жс, пока осознаю что нахожусь много выше всякого быдла на жаве, питонах, шарпе и прочем говне. Всякий раз как юзаю стрелочную функцию, ахуеваю от удобства и продвинутости жс по сравнению со всякими быдлоподелками
Я, видимо, чего-то не понимаю. Пытаюсь освоить indexedDB с idb. Я не могу понять как мне этим пользоваться. Вот я создал базу. Теперь я хочу написать функцию, которая принимает аргумент и сует его в базу. Везде в доках делают так: async function newDB() { const database = await openDB("huita", 1, { //createStore //createIndex //blahblahblah }); //реализация CRUD await database.add("huita", someShit) await database.delete("huita", someShit) ... }
Я один искренне не понимаю, как потом этим пользоваться? Почему везде круд пишут внутри функции-создателя БД. Окей, известно, что в ЖС функция это объект. То есть блять мне на полном серьезе предлагают потом к круду лезть через жопу путем вызова newDB.functionAdd()? Я просто не понимаю как этим пользоваться что куда писать? Более здравым мне кажется вариант с разбиением этой хуйни на куски. Типо: async function newDB() { const db = await openDB("huita", 1, { //createStore //createIndex //blahblahblah }); }
async function addToDB(someShit) { const database = await openDB("huita", 1, { await database.add("huita", someShit) }); и т.д. }
Но этого почему-то нигде нет. И даже в полном примере Article store просто хуячат все в создающую функцию без задней мысли, будто бы все операции с базой проводятся из этого одного файла, будто бы не может возникнуть необходимость из рандомного файла сделать обращение к базе, чтобы, например, что-то считать. Я просто блять не понимаю. И нигде в интернете ничего внятно не объясняется, у пакета миллион загрузок в неделю и 0 инфы. Может быть кто-то с этой хуйней работал? Дайте код посмотреть.
Есть у кого решение проблемы для nodejs+express? Я должен пост обработать с кодировкой win-1251, мне его присылают, мой сервер сразу выбрасывает ошибку UnsupportedMediaTypeError: unsupported charset "WINDOWS-1251". То есть он ничего не успевает сделать. Как обработать пост с такой кодировкой на express?
Есть приложуха на рякте. Надо её натянуть на электрон прикрутив несколько фич с последнего. Посоветуйте статей каких-нибудь как это лучше всего и безболезненно сделать.
Есть две функции, которые делают то же самое - таймер обратного отсчета. Первая универсальная, у нее есть аргументы minutes, seconds. Вторая работает напрямую со значением из глобал скоупа (переменными pomodoroMinutes, pomodoroSeconds).
Логика у функций одинаковая, но вторая работает нормально, а первая как-то странно. Вторая выводит как надо: "1:59", "1:58", ... , "0:00". Первая выводит: "1:59", "1:59", ... , "1:59"
И не понимаю, это из-за интервала нельзя в функции значение из глобал скоупа менять или почему так нахуй? В первой функции проверял minutes === pomodoroMinutes, когда вызываешь ее с pomodoroMinutes, но эта хуйня все равно не работает!
>>1998237 Ебать ты долбоеб братишка. Хуже дебила, который для идентификации данных лепит где попало uuid вместо автоинкремента, может быть только червь-пидор. Особенно приятно работать в админке с таким дерьмищем, когда ты не можешь посмотреть заказ 123, тебе нужно смотреть заказ 22af49d4-8e7e-4666-8bd6-d6e0f6b41ed6 и хочется ебало набить разработчику.
uuid имеет смысл использовать только если данные сильно публичные, да и то не во всех случаях, да и то не uuid, а что-нибудь более читаемое.
Есть приложуха, которая работает с indexedDB. Как мне правильнее организовать логику работы? Вносить все изменения в стейт и потом просто сохранять их в БД, или все операции проводить с БД, как если бы это была полноценная серверная БД, а потом делать setState(getDataFromBD)?
Че за хуйня анон? блок не правильно закрывается, в шаблонной строке, вчера все норм было, седня смотрю усы не правильно видят друг-друга, код вроде работает, но это парсер наверно хуй забивает и пропускает. Но разметка говорит что есть вопросики.
Собсно на пике. подчеркнул красной полоской.
Es lint колбасит или шо? Не моху понять нихуя че он ругается!
>>1998430 Как таковой ошибки нет, просто плагин ругается как буд-то скобки не закрыты, и выдает одну красную в конце. Я удалил часть этой шаблонной строки - все заебись, вставляюю ее обратно опять разметка в коде едет, хз че за баг, но я почитал на мдн, с шаблонной строкой все праввильно делаю, походу vs code тупит. Я даж переписал строку заного, нихуя не поменялось. ДУмал мож пробел какой закрался.
>>1997955 >>1997964 Но я не ищу веб-геометрию, анон, спасибо конечно, добра тебе, но я вообще ни разу не ищу веб-геометрию на вебгл, я вообще не ищу параметризованного рисования примитивов, иначе бы взял канвас или хотя бы д3 какой-нибудь. Я ищу либу для отрисовки векторного фона по определенной сетке, поверх которого буду накладывать другие векторные объекты, по наведению-нажатию на которые буду выводить тултипы (или еще как-то обрабатывать эти события), и все это с приблизить-отдалить-влево-вправо-вверх-вниз. Так, как если бы мне надо было отрисовать план здания. Что-то вроде я находил тут https://codepen.io/zachdunn/pen/VvRXdP но визуально как-то стремно смотрится (периодически залезаешь за край карты, масштабирование смазанное и т. д.). Если кто не поленится смотреть - замените https на http тут https://gojs.net/latest/projects/floorplanner/FloorPlanner.html и на хабре советовали мертвые ссылки на либы для отрисовки svg https://qna.habr.com/q/372165 Я хотел нечто подобное, только в более вылизанном виде. >>1995662 Вот типа того, да, вот этот пример особенно. https://qna.habr.com/q/372165 но canvas... У них, я так понял, не решена проблема с z-index, а перерисовывать заново при каждом изменении - ну хуй его знает... Особенно, когда надо поверх пихать плашки всякие всплывающие, тексты и т. д.
>>1998437 По ссылкам не ходил, но прост попробуй на лифлете, там можно поменять геокарту на твою кастомную карту, и есть плагины для рисования полигончиков почти без багов. Ну и нет ничего проблемного в перерисовке 60к/с, твою видеокарту именно для этого и делали
>>1998132 Вот типа того, да, вот этот пример особенно. http://fabricjs.com/build-minimap но canvas... У них, я так понял, не решена проблема с z-index, а перерисовывать заново при каждом изменении - ну хуй его знает... Особенно, когда надо поверх пихать плашки всякие всплывающие, тексты и т. д. >>1998449 Да я хотел что-то окологотовое. Буду смотреть на фабрик.жс, наверное, выглядит охуенно.
>>1998484 >Зачем они плодят сущности? А вообще это суть фронтенда. Придумать для одной задачи хуеву тучу инструментов, которые со временем станут депрекейтед.
>>1998332 Хуярить свой модуль, который в зависимости от поддержки indexedDB будет хранить состояние в редуксе/indexedDB/локалсторэдж, а компоненты будут только пропукивать объекты в специально выделенные функции, от результата вызова которых зависит состояние компонента.
>>1998227 Ты берешь примитивное значение из глобала и передаешь аргументом в функцию. Функция создает новую ссылку на свою переменную. Ты ее меняешь и она пропадает после выхода из контекста.
как аргументировать команду перейти на хуки с классов, кроме как что классы это устаревшее говно и ооп вообще для пидоров? есть ли более нормальные аргументы?
Насколько вообще оправдано юзать стрелочные функции 24\7\365. Хуячить их везде, где нужно и где не нужно. Забыть нахуй что существует слово function и хуярить исключительно стрелочные? Насколько сильно стрелочные функции влияют на производительность?
>>1998656 Классовые компоненты имеют свои преимущества. Например любые методы, которые ты объявляешь не будут пересоздаваться при каждом чихе. В функциональном компоненте это надо все оборачивать в useCallback. Нужно придумывать костыли, чтобы имитировать первый рендер и последующие. Если копнуть уже глубже, когда куча методов не было дипрекейтед, то там можно так гибко настроить, что сейчас будет полной головной болью.
Если я не ошибаюсь, то уже вроде придумали решение, что методы сразу биндятся в последней версии реакта в конструкторе.
У меня в проекте модульное ксс, много модулей и один отдельный ксс "простой" файл. Вебпак настроен чтобы компилировать и модули и не модули. Это норм, что мне этот "простой" файл приходится инклюдить в один из модулей, чтобы с него стили брались? Разве вебпак не должен автоматически компилировать все, не важно заинклюдил я его или нет?
>>1998874 >Например любые методы, которые ты объявляешь не будут пересоздаваться при каждом чихе Но ведь денчик сказал что функции относятся к рендеру, а не к инстансу >надо все оборачивать в useCallback А может и не надо >имитировать первый рендер и последующие Почему это должно значить? Надо ведь декларативненько, а не "вот сейчас компонент отрендерится в первый раз и тут мы..." >придумали решение, что методы сразу биндятся Спасибо, уже не надо
И так начал учить реакт. Попробовал дергать api по примеру с https://ru.reactjs.org/docs/faq-ajax.html , норм. Как теперь, последовательно, отправить 2 запрос добавив в УРЛ параметр полученный в первом запросе( к примеру ключ,токен,фильтр и.тд.)?
>>1993705 (OP) Все знают что в жс-системе надо быть модным подтянутым пацанчиком, а то тебя обоссут и определят в петушиный угол 3 пхпшникам, поэтому есть вопрос: зашкварно ли в 2021 писать function для объявления функций?
>>1998656 Не надо никого уговаривать, пусть сидят в своём болотце классов пока код не станет совсем легаси-помойкой.
>>1998874 >Нужно придумывать костыли, чтобы имитировать первый рендер и последующие. А может, проблема не в реакте, а в отсутствии логики у разработчиков, которые пишут говно и неспособности читать?
У меня в приложении кондишонал рендеринг, типо такого: {условие ? компонент : затычка} Есть проблема. При обновлении страницы на 1 наносекунду появляется затычка и тут же заменяется на компонент. Лично меня это раздражает, хотя я понимаю, что это потому что условие не выполняется мгновенно. Это можно как-нибудь пофиксить или просто хуй забить?
>>1999042 Еще можно в дид компонент маунт не вставлять прелоадер, а вставить его в компонент апдейт, то при первой загрузке страницы он тоже не будет показываться, вариаций много короче
Сап, сломал всю голову, но не могу понять как это сделать, если кто то подскажет в каком направлении двигаться буду очень благодарен.
Вообщем, по клику требуется найти похожие элементы на матрице, которые примыкают друг к другу, схематично изображу так.
1|1|2 1|2|2 1|1|2
То есть, необходимо найти цифру 2, по которой кликнули. Пробовал создать многомерный массив, и проходить по нему циклом, но не получилось, встал вопрос, каким образом искать элемент сверху и снизу. Может есть какой то другой способ нахождения примыкающих друг другу элементов, чтобы были найдены элементы по горизонтали и по вертикали?
>>1999374 Ну смотри, я вообще ни разу не математик, а реакт-формодрочер, поэтому мое решение скорей всего будет неоптимальным. Но допустим смотри, мы щелкаем на самой правой верхней двойке. Это будет грубо говоря по координатам 3,1 (3 по горизонтали, 1 по вертикали). Нужно проверять соседние координаты, соответствуют ли они кликаемому числу. То есть какие соседние элементы у 3,1? это 2,1 и 3,2. Думаю мысль понятна.
>>1999444 Соседние координаты от щелчка если мы за основу берем х,y (без диагонали) это: 1) (x, y-1) 2) (x+1, y) 3) (x, y+1) 4) (x-1, y) Ну и делаешь проверку чтобы ни одна координата не было меньше 0.
>>1999480 Да это очередной залетный зумерок. 2 месяца на проекте посидел, видосики на ютабе посмотрел и все - гуру нахуй, можно уже "тупым дедам" советовать что и как надо делать Примечательно что предложить что-то такие клованы всегда рады, но реализовывать - это не к ним, пусть кто-нибудь другой пытается воплотить их великую мечту в реальность и переписать 5 десятков модулей под новый стиль
>>1999552 Не переписывать а потихоньку внедрять хуки. То есть новый функционал делать полностью с хуками. Старый пусть на классах остается. В чем проблема?
>>1999561 пусть пишут на const Component = ({}) => {}
Тут нет слова function
Уже три года как реакт дал им божественные хуки с возможностью дописывать кастомные хуки, но нет, они будут обмазываться классами. Хотя достаточно обновить ривакт до 16.8+ и просто начинать новые компоненты писать на хуках, а старые или переписывать по мере возможности или вообще оставить как есть.
Сап ангулярщики подскажите как мне подменять компоненты в build-time ?
те есть у меня компонент core/search-form я хочу сбилдить фронт для клиента, у которого другие требования к форме поиска ( другая верстка/ф-ционал ) сделал пакет clientName в нем реализовал форму поиска как бы мне подцепить ее в движок вместо старой?
проблема остается в том что мне нужно передать новую "измененную форму" с самого верху приложения, у вас в ангуляре есть чето типа реактового контекста для этого?
>>1999742 алсо как вы делаете инпуты ( пропсы компонента ) обязательными? ну те чтобы если я в верстке пишу <search-form /> он бы мне не давал его отрендерить покуда я не пропишу <search-form lang='ru' /> например ?
анчоусы, реквестирую помощь. сейчас делаю тз и там один из пунктов написать свой дейтпикер. то есть полностью на ванилле. без либ, jquery и тп. подскажите алгоритм и как делать то такое вообще? уже много че в инете перекопал но там пиздец какой то. везде jquery ебучий, либо же какие то компонентики для фреймворков. отдельная благодарность если поделитесь линками на готовые/полуготовые вариант
Как описать в тс такой тип: something: any = { "строка-ключ": { "строка-ключ": [строка, еще строки...], еще много таких пар строка-массив... }, еще много таких объектов... } ?
>>2000068 Делай мвс. Контролер принимает инпут (мышь, стрелки) и обновляет модель. Вьюха подписана на обновления модели. Модель простая, это текущая дата в милисекундах. Модель преобразуешь в массив чисел - дни текущей недели. этот массив посылаешь во вьюху при обновлении модели. Контроллер обновляет модель тривиально +-10006060247
>>2000232 >бля пишешь ТЗ описываешь интерфейсы и желательно тесты объясняешь разрабу чего от него хочешь >ждешь >ждешь >?? >profit Мда, вот и дождались И запомните дети, никогда не пишите календари сами
ну за 20 мин на коленке набросал, чего ты ожидаешь так то я это и сказал > ну и нахуя собственно говнокодить свой велосипед?
>>2000068 далее реализовываешь new Proxy к результирующему объекту далее пилишь класс i18n + наследуешься от Calendar и в getYear уже возвращаешь html верстку
>>1998132 А как нормальный тултип сделать (вылезающая всплывающая подсказка над элементом, у которого сработал ховер, с динамическим контентом внутри, разная для разных элементов)? Гуглятся тухлые ответы на stackoverflow и нерабочие варианты на кодпен. >>1995662 Бамп, к слову.
>>2000338 Блять как я же орирую с дебичей которые даже не могут запилить себе резюме на хх или хабр карьере, а хуячат на авито. Я гарантирую что тот пчел в спортивках не вкатится тупо из-за своей фоточки.
>>2000340 Не решающую, но очень важную. Как сказал мне один лид который нанимал людей, лучше взять компанейского приятного середнячка и его прокачать до нормального уровня, чем взять сильного по скилам токсика, который распугает всю команду.
Почему в жс-фреймворках такой фетиш на декораторы? Что на фронте что на бэке Вот пример из Nest.js - создаем Controller путем декорирования класса, но почему не путем наследования? Это ж более логично
так, всем спасибо хотя вы отвечали не мне лол. варик с ТС попозже гляну. ебал я эту хуйню своими руками писать пиздец. хорошо что только для тестового такое надо. >>2000068 - кун
>>2000408 DI это ладно, но зачем оборачивать декоратором объект Request в контроллерах? Можно же просто передават ьв коллбек 1й параметр - Request, это весьма очевидный контракт, нахрена какие-то декораторы мутить?
>>2000521 ПРОСТО ВКАТИСЬ Я в 27 вкатился на вижуал бэйсик, программировал в экселе. Зато БД подтянул Потом было уже проще перекатиться в веб. Вот я уже 3 года там, до сих пор нихуя не умею, зато платят нормальные бабки. И ты так делай
>>2000338 Бля, то читаю стори что "вкатываюсь-вкатываюсь никак не могу вкатиться, все скипают, тогов работать за еду" то "вкатился изи на 70к, через 3месяца апнулся до 120к, еще через 3 получил оффер в дргую компанию и стал получать 200к" Где тру?
>>2000534 >"вкатился изи на 70к, через 3месяца апнулся до 120к, еще через 3 получил оффер в дргую компанию и стал получать 200к" Ха, возможно это был я.
>>2000429 Чтобы сказать фреймворку что нужен Request. Не всегда же тебе нужен реквест, иногда тебе нужен просто параметр из path, иногда из query, иногда body, причем смапленный в твои dto, иногда все вместе. Всегда передавать реквест - это значит всегда пердолиться с рассериализацией, а это именно то, что апи фреймворки хотят упростить
Как можно на практике задрочить ооп и вообще все эти классы в js? Запилил уже несколько сайтов на реакте, но там ооп не используется, классовый синтаксис уже тоже. А потом на собесах начинают дрочить этими зисами, наследованиями, и начинаешь срать в штаны. Просто так сферически учить неинтересно и запоминается плохо. Если я наверну сейчас Ангуляр или начну что-то на three.js пилить, это мне может помочь? Как учили вы? Просто вот пока сайты делал (платно, коммерчески), мне всего один раз понадобилось из объекта удалять поля, и то, я в итоге сделал это иммутабельно через деструктуризацию, и в реакте много того, что в обычном js вообще делается по другому. И собственно вот весь этот дроч каких-то тем без реального применения это для меня вообще пиздец. Поэтому хочу попробовать что-то на реальной практике учить.
>>2000534 Проблема в том, что вот этих "джунов", которые прошли один курс и запилили по гайдам тудушку квадриллионы, из них человек 10 могут вообще внятно объяснить, что за хуйню они делают и зачем
>>2000679 В ангуляре тоже ооп нет, классы там для инжектов в конструктор и чтобы декораторы было куда нацепить. Там такая же иммутабельность по тем же причинам и FRP.
This на собесах, мне кажется, спрашивают только в контексте самого языка, типа если ты его проебешь, то ты знаешь как так получилось и как с эти бороться.
>>2000689 Да поверхностно я конечно понимаю что это и как работает. Хочется именно нормально с этим поработать, чтобы это всё на практике закрепилось и чтобы я знал где и когда всё это можно применить
>>2000679 >и в реакте много того, что в обычном js вообще делается по другом Реакт и есть обычный JS на 95%. Просто в нем используется более функциональный подход, как и везде сейчас.
This'ы в 2021 смешно писать.
Если так хочется разобраться, то читай learn . javascript .ru и пиши пет проекты без фреймворка.
>>2000534 На 100к вкатываются люди которые умеют решать задачи для бизнеса, искать информацию , уметь применять ее и т.д. На зп ниже 50к - идут либо инцелы студенты после вузика, либо инцелы по жизни которые так и не поняли че от них требуется,- "ну назоводе говорили гайки крутить, я и крутил". Т.е. инцелы мыслят так - денег хочу много, а че от меня требуется не ебу. Вот вам моя всратая верстка, и знания по джсу который я учил раз в неделю. Таких успешно посылают на хауй на этапе скрининга. Адекватные люди мыслят так - так ебать, че там на мидла джуна требуется за 100к, ага вот курсы на торентах 20 штук с серьезной логикой(клон спотифая, клон ютуба, клон фейсбука не рофл главное базовую логику повторить у себя, не обязательно весь функционал переписывать, написать и уметь объяснить че ты написал), вот собесы на ютубе, вот вакансии, вот статьи на виси от синьеров из санфрана, везде все расписано, все расказано, учим, дрочим, запоминаем, успешно применяем, аплаимся на 100к.
Сам вкатился в этом году на 100к, первый моя работа программистом. 2й собес по счету, аплаили на 80к, я выжал на 100.На вакансии не распылялся, в ИП Педриченко Иван Иванович резюме не отправлял, только в Корпорации уровня Тиньков, Вконтаке, Мейлсру и т.д. те что в топе по финансам и инраструктуре, потому что не хотел работать на дно галере или в мелкостудии. Историю своего вката подробно напишу сюда в мае либо июне, когда будет свободное время, там длинная простыня, надо будет ее редактировать и подумать еще над содержанием, пока вот краткая затравка для неосиляторов. Вот вам еще пасхалка это сказал черчиль, маск процитировал когда тесла почти стала банкротом - Если вы осознанли что проходите через ад, не останавливайтесь, продолжайте идти. Можете применять на себя, когда будете сидеть сутками над своими проектам, изученим информации и т.д. Совет№2 - не сиди на дваче нигде кроме этого треда. Как правило анонимы здесь - это не успешные люди, и им проще говорить о своих не удачах, много токсичоности и прочей ерунды. Часто то что здесь принимается за проблему, в реальной жизни проблемой не является. Я когда перестал доску скролить, словно голову из унитаза с говном вынул. Чужое мнение влияет на нас, так пусть это будет мнение успешных людей, а не неудачников. Тут единственная нужная тебе доска, ее можно читать просто что бы оставаться в информационном поле айти, скажем так со со спецификой анонимности можешь попиздеть за движуху и конторы, либо за код. В остальных меди анонимности нет, там специфика общения другая, менее откровенная.
аноны, накидайте советов. есть 5 инпутов и 1 текстареа. при попытке засабмитить форму я пробегаюсь по всем элементам через for of и проверяю чтобы они тупо не были пустыми. если все ок и нигде не фейлится то форма валидна то надо вытащить данные с инпутом и отправить их в другую функцию там распарсится и в fetch перекинется. так вот как лучше по человечески это сделать ? не охото по каждому инпуту пробегаться, но нужно получить объект в виде ключ-значение. inb4: formData
>>2000801 Практически не спрашивают если это именно фронт. Могут как стилизовали код на прошлых проектах? modules или styled components? Подразумевается что вкатыш умеет верстать.
>>2000842 >>2000845 Короче ситуация такая. Консолька в девтулзе всегда выводит результат выражения даже если мы ее не просим. При вызову console.log ничего не возвращается и она выводит undefined.
>>2000842 >>2000847 Потому что функция возвращает undefined если явно return не указан Вот консолька в питоне. undefined тут нет есть только None, но все то же самое
>>2000432 декоратор ёпта ее вкурил што ли ёпта? функцию он принимает значит и функцию возвращает декорированную нах понимаешь? эта функция че-то там с args делает нах че-то блять вытаскивает выдрачивает 2й индекс трогает ёпта то есть 3й элемент рот его ебать почему так? а я ебу контракт у него такой нах на ус мотай папку слушай и збс будет
Пацаны в чем разница запросов разных? Я вот использую фетч, хватает для всего. Есть еще какой то ajax, когда его надо использовать? Какие еще запросы есть? Можно ли везде фетчем пользоваться в замен остальных?
>>2001322 Все запросы - это промисы. Каждый вид запроса обладает своим удобным сахаром. Запрос строится на xmlhttprequest. Твой фетч - это обертка над xmlhttprequest. Ajax это вообще технология обращения к серверу без релоада страницы. Но то, про что ты говоришь ты скорее всего имеешь ввиду ajax в jquery.
Сейчас популярен axios. Удобный иструмент, много работы удобной за тебя из под коробки делает.
>>2001362 >Какие требования такие и решения Не думал, что это что-то необычное - отловить асинхронную ошибку. Типа единственные правильный вариант это вовзращать промис в функции? А если промисов несколько, то все чтоль возвращать?
Так блят. Прочитал я доку по рякту, заделал свою тудушку и ещё один проект. Но чего я не понял так это как делать бляцкие SPA. Ну в смысле идея у меня есть, но она 100% сложна и не верная. Что я упустил?
Есть некий get-запрос с query-параметрами, при переходе по нему у клиента открывается новое окно и происходят всякие шняги
Проблема в том что т.к. query-параметры передаются в явном виде то человек может просто подменить один из них и поменять поведение в угоду себе, такого быть не должно
Очевидное решение - делать POST-запрос вместо GET, однако ж это лишь усложнит хитрожопым жизнь, но проблему не решит. По-прежнему детали запроса можно легко подменить. Как такое решать?
ТСач, поясни, с какого хуя стало возможным присваивать функцию с unknown аргументом в переменную, ожидающую функцию с аргументом конкретного типа? Официальную доку читал, там этот момент как-то стороной обошли.
let a = (v: number) => 0 let b = (v: unknown) => 0
>>1993705 (OP) 1. Как в реакте сбросить инпут файла? Чтобы имя отправленного файла обнулялось? Чет ничего не смог нагуглить. Пока все что придумал - закрывать форму и открывать опять. 2. Кто-нибудь работал с апи от дак дак го? Интересует их поиск. Знаю, что гугл позволяет такое делать, но за бабки. У них есть вот такая хуйня: >An API for some of our Instant Answers, not for full search results. То есть это значит, что они не дают доступа к поиску как гугл? Понятно что все еще можно просто посылать результат ввода из формы на дакдакго.ком, но хочется в пете выебнуться и посылать полноценные запросы по апи.
Шалом анон. Есть один флекс контейнер фиксированного размера - строка В нем два дива фиксированного размера - столбцы Задача: сделать так, чтобы при приближении, если столбец не влезает в экран, он переносился вниз. То есть это происходит динамически. Свойство flex-wrap: wrap не работает так как надо.
>>2002477 Причем здесь контравариантность? Допустим,
let v: number = 0; let u: unknown = 's'
v = u;
Здесь будет ошибка "Type 'unknown' is not assignable to type 'number'" и это вполне ожидаемо (а вот u = v как раз валидно и есть та самая контраваринтность).
>>2002584 Зум страницы опредялется в мета теге вью порт и задается фиксировано один раз при загрузке страницы н грузит под нее стили. Получается тут никак их не поменять гибко.
Смотри в сторону window и его методов, там найдешь зум и ему применишь стили.
Я знаю, что тут сидят опытные архитекторы и бекенд инженеры. А по сему вопрос: Слышал, что хранить бизнес логику в контроллере плохая практика. Хорошая ли практика хранить бизнес логику в мидлварах? или нужен дополнительный слой абстракций , к которому бы обращались эти мидлвары?
for (let i = 0; i < listOfNeighbours.length; i++) { for (let y = 0; y < listOfNeighbours.length; y++) { console.log(`Neighbour: ${listOfNeighbours[y]}`); } }
Какие же уёбищные в ангуляре формы всё-таки. Всё хорошо, пока тебе не понадобится маааленькая фича, которая за гранью фантазии разработчиков фреймворка: тут то ты понимаешь, что всё здесь намертво прибито гвоздями. Приходится расковыривать все кишки этих ёбаных форм, чтобы добавить тот или этот функционал, я заебался уже портянку писать. Зато в примерах всё красивенько.
>>2002831 Окей. Понадобилось поле ввода только положительных целых чисел. 1) стандартный input type=number просто смешон, забудем про него. 2) ммм, pattern? Нет, он всего лишь делает поле невалидным. Нам надо тупому юзеру наглядно показать, что нельзя вводить ничего кроме цифр, а не просто плашечку "неверное поле, имши!". 3) окей, что у нас дальше? Регулярочки всегда выручали нас. Можно разбить ящик с бананами [(ngModel)]. Но (ngModelChange) не обновляет видимый результат после преобразования регекспом, ведь всё невалидное превратится в 0 или пустую строку, а ебучая форма у мамы умная и не желает обновить поле, ведь типа "изменений нет!". Зафорсить её на это изменение тоже нельзя, ведь она лучше знает как правильнее. 4) Штош...гуманных способов больше нет, вызываем control.setValue(filteredValue); и ещё до кучи control.updateValueAndValidity(); чтобы ебальник ей закрыть о боже! О невалидности блять, да мы только что сделали сетвэлью, почему нахуй?!!!!
>>2002831 Вот ещё прикол: нельзя просто взять и присвоить полям формы свойства модели. >Type 'string' is not assignable to type 'number'. Ах ну да, у нас же для поля типа текст тип стринг, сделай нумбер и не будет ошибки. Да идите нахуй с этим говном.
>>2002796 for (let y = 0; y < listOfNeighbours.length; y++) { console.log(`Neighbour: ${listOfNeighbours[y]}`);
Вот так наверное хотел написать. Первая итерация идет по основному массиву, когда он в него заходит то итерирует каждый его под массив, каждый подмассив итерирует на его элементы, в зависимости от длинны под массива.
>>2002831 Если хранишь дату в модели в нечеловеческом формате и выводишь в ридонли поле через date пайп, то при ресете формы там остается невидимое значение, и теперь из кода через модель нельзя его поменять. Да, такие сценарии бывают, не пизди.
>>2002848 Ангуляр это не собрание твои любимых контролов, ты бы еще спросил почему select только нативный и где автокомплит. Формы - это про интеграцию модели (NgControl) и твоих нативных контролов (input, yobaInput и т.д.) Поэтому пишешь свой контрол как хочешь, а потом пишешь CVA на него.
>>2002848 >1) стандартный input type=number просто смешон, забудем про него. Чем это тебя не устраивает лол? Как раз можешь в ней пропердолить целочисленные положительные значения, а от всяких хитрожопых валидацию при сабмите скриптом проводить. >2) ммм, pattern? Нет, он всего лишь делает поле невалидным. Нам надо тупому юзеру наглядно показать, что нельзя вводить ничего кроме цифр, а не просто плашечку "неверное поле, имши!". Бля, добавь тогда параграф, или какой-нибудь смолл под полем, который говорит, что можно только целочисленные положительные значения в поле вводить. Уж пользователь наверно догадается, что невалидное поле над/под этим текстом означает. Можешь заодно ещё и в `title` запихнуть. На крайняк вкуривай Constraint validation API, который позволяет кастомизировать дефолтный попап, но там придётся чуть ли не свой модуль писать для этого дела.
>>2002877 >Нам надо... Ну ты понел.., не мне. Такая задача была. Мне то похуй какая баба всрака будет долбиться в неправильный паттерн.
А что касается input type=number, ему добавили возможность настройки, которая не работает. Спрашивается, нахуя? Зачем даешь право написать max min и step, если это распространяется только на стрелочки? Почему если эти параметры указаны, программно не ограничивать ввод? Чтобы я костыль очередной писал на жээсе?
>>2002889 > Чтобы я костыль очередной писал на жээсе? Потому, что это антипаттерн. Ограничивать пользовательский ввод изначально дело неблагодарное, следовательно, идя этим путем ты заслуженно получаешь свою порцию боли. Правильный путь - валидировать пользовательский инпут по блюру/потере фокуса.
Посоны, запрос к Api выдает инфу на нескольких страницах каждая с таким ключом - &page=1 вторая страница с контентов $page=2 b и т.д
Я запиливаю пагинацию у себя, и значит вопрос, как сделать так что бы если апи дал контент на несколько страниц, то кнопки для некст страниц отображались, а если не дал, то и не отображаются? Я понимаю что можно сделать проверку в useState мол если контент загрузился, покажи кнопку на некст страницу и подключи его с этим содержимым. Просто не догоняю, на каждую страницу делать отдельный запрос? Страниц с контентом может быть как 1 так и 10.
>>2002899 Почему было не взять либу типа материала просто? Я ебу? Нет. Мне спустили задачу, я поебался, правильный это путь или нет - не мое дело в данном случае. И хоть я задачу выполнил, формы огорчили тем что чуть отступишь от дефолта и тебе пизда.
>>2002912 >правильный это путь или нет - не мое дело в данном случае Ну понятно. А потом говорят "%фреймворк нейм% не оче". Вот теперь и у меня загорелось
>>2002922 Да все разобрался, там общего колличества страниц нет, но есть totalResults: "113";
ток не понял как теперь это вывести. если есть, если мне надо по 10 итем на страницу надо как-то map сделать на общее колличество и поделить на 10, а че мапить то если 113 это число.
>>2002942 Нужно применить математику. У нас было 113 яблок, одна корзина вмещает 10 яблок а мамаша ОПа вмещает ..., сколько корзин понадобится славику чтобы упаковать все яблоки?
>>2002998 Там про то, что бесконечный скрол хорош на сайте с лентой типа фейсбука, но плох в других случаях (например выдача поисковика или СУКА ДВАЧ ТРЕД НЕ НАЙДЕН)
>>2001336 > Твой фетч - это обертка над xmlhttprequest https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch >This kind of functionality was previously achieved using XMLHttpRequest. Fetch provides a better alternative that can be easily used by other technologies such as Service Workers. Fetch also provides a single logical place to define other HTTP-related concepts such as CORS and extensions to HTTP.
>>1993705 (OP) Как правильно вытащить координаты с navigator.geolocation.getCurrrentPosition? Я делаю так: function getPosition() { function onSuccess(position: GeolocationPosition) { const latitude = position.coords.latitude; const longitude = position.coords.longitude; return {latitude, longitude} } function onError(err: GeolocationPositionError) { console.log(err); }
return navigator.geolocation.getCurrentPosition(onSuccess, onError); // эта хуйня возвращает void поэтому нихуя не работает, компилятор ругается, когда я пытаюсь получить координаты {latitude, longitude} = getPosition();.
>>2003247 Почему так нахуй? const {latitude, longitude} = (await getCoords()).coords // заебись, чотко. //// const {latitude, longitude} = await getCoords() .then((position: GeolocationPosition) => {position.coords.latitude, position.coords.longitude}) .catch((error: GeolocationPositionError) => console.log(error)); // Property 'latitude' does not exist on type 'void'. Property 'longitude' does not exist on type 'void'.
Не то чтобы я настаивал на втором варианте, просто интересно. У чего он нашел тип void? Что там void?
>>2003296 Ок. А почему-тогда он у меня аж целых 4 раза возвращает значение широты, если я пытаюсь вывести его в консоль? const { latitude, longitude } = (await getCoords()).coords console.log(latitude); Он логирует одно и то же 4 раза подряд. Для интереса попытался сделать запрос к серверу, он отправил 4 запроса. Это полная хуйня. Это связано с тем что компонент лишние разы ререндерится (с чего бы это?) или что-то с промисами не так?
У меня в Интернет магазине, данные о купленных товарах содержатся в Local Storage, кроме того есть система авторизации на куки (имя пользователя содержится в куки). Я бы хотел связать эти два элемента, чтобы у определённого пользователя был свой набор купленных товаров (сейчас товары не связаны с пользователем). Есть советы как этого достичь?
>>1993705 (OP) Есть длинная форма (ангуляр), как в случае ее неудачной валидации перемещать экран посетителя к ближайшему месту где есть ошибка? А то не сразу ясно, че не так
>>2003377 Есть scrollTo(x, y), однако он скроллит так что эти координаты x, y оказываются в левом верхнем углу экрана а не как-то иначе. Надо чтобы в центре оказался элемент, где ошибка Можно получить координаты элемента, ок, но че дальше-то? Как понять сколько отнять от этих координат чтобы получить правильный scrollTo? Размер экрана у всех разный
Пацаны, а зачем во время выполнения реквестов мы дважды делаем await (дважды резолвим промис)? Достаточно же первого await-а, зачем делать response.json()?
>>1993705 (OP) NaN !== NaN в хату, аноны. Такой вопрос, заказчик-пидор, ставит задачу очень расплывчато, потом когда сделано уже много, начинаются песни про "а вот тут вот можно вот так вот, а вот тут изменить, а тут не очень". В итоге приходится переделывать. Собственно, куда читать, где смотреть, по постановке требований к ПО? Может тут есть лиды или ПМ, которые много общаются с мычащими уродами, не знающими чего они хотят? Что помогает вам четко формализовать требования?
>>2003571 Сроки наша контора сама ставит. Как правило часто выходим за сроки на сверках, но заказчик это понимает и не давит особо. Сейчас вот с короной вообще пиздец, пол года только на удаленку настраивались, но пока идем по графику. Но хочется научиться сразу ставить такие вопросы людям, чтоб они озвучивали, что конкретно им надо. Мне просто по человечески заебывает делать двойную работу и возвращаться к тому, что я уже сделал и забыл. Как то так, если что присоветуешь, буду очень благодарен.
>>2003590 Некоторые люди не знают что им надо пока им не покажешь, можете до разработки макетики рисовать@согласовывать, если переделки по внешнему виду, если по интеграциям - доки с описанием и диаграмками взаимодействий, но это все равно не 100% вариант, лел. Ну а если вам платят за переделки, то тебя это вообще ебать не должно, добро пожаловать
>>2003603 Ох, ебать, понятно, ладно, спасибо. Просто в конторе до этого аналитики в задачах аж прописывали количество символов в полях, а тут пиздос анархия.
>>1993705 (OP) Что можно использовать в качестве "затычки" для тернарного оператора после двоеточия? Например у меня есть условный оператор, но нет else. Тернарный оператор требует выражение после двоеточия.
Помогите люди добрые. Впервые юзаю вебпак и devServer.
Работаю с css при помощи плагина MiniCssExtractPlugin
Проблема вот в чем:
В начале js файла стоит import '../css/style.css'; Все работает превосходно, птички поют и т.д Если это закомментить перестает находить css (логично) Если расскоментить то он все еще не может нихуя найти
Помогает только полный ребут серва, после которого о чудо он снова видит файл build.css
Собственно как эту херню починить. Меня заебало каждый раз ребутать сервер.
Это к теме не относится но появилась такая проблема при работе с реактом, там честенько весь синтаксис рушится, а потом css файл перестает находить пишет Refused to apply style from 'http://localhost:8080/build.css' because its MIME type ('text/html')
>>2003702 Печально если так. Что характерно если не использовать MiniCssExtractPlugin а просто билдить все в один свалка-файл все работает и обновляется в реальном времени.
Но хотелось немного больше порядка чтоб css был отдельным файлом
Тестирую роутер в одной аппе, и короч такая хуйня, в компненте Home делаю запрос fetch, он заместо обычного адреса, в начале припихивает ему localhost:3000/www.api.com из-за чего запрос не срабатывает, я так понял это роутер че то шалит? Че может влиять на добавление этого локалхоста в начале, я так понял это какие то дефолтные настройки роутера
>>2003723 Дело не в роутере, лол. Удалил его, все равно криво отправляется, сука не пойма че за баг. В соседней аппе все ок работает, а тут залупа с адресом какая-то
Sup сделал аналог двача(на минималках) так же делал аналог аск.фм, он более доработанный чем имиджборда. Подскажите какой это уровень? Стек PERN + MobX Можно ли устроиться с этим куда нибудь? Подобные сервисы занимает сделать 1-3 дня с бесконечными перерывами поесть, позалипать вк, поссать, съездить в качалку и тд.
>>2003723 Твой сервер на локалхосте, но ты пытаешься с него фетчить другой сайт, не прописывая схему, в итоге фетч это распознает как локальный путь. Пиши fetch("http://themealdb.com/api/...") и ебись с отключением CORS в браузере
>>2003766 Я так и пишу, и все равно какая-то залупа. Лол. Мож апишка какая-то кривая. Буду копаться щас. Вообще с апи уже много работал, до этого штук 5 апи перепробовал все ок было, это первая которая вот чудит чет
>>2003653 Тернарный оператор красивее, лаконичнее. Я легко и быстро набираю его, не отрываясь от своего смузи. А if-else громоздкая и некрасивая конструкция.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Старая паста - https://pastebin.com/9yRADC0s