Это копия, сохраненная 9 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Это повидл до спецолимпиады, 1.5 года. Для двух без премии маловато.
>И у каждой интересоваться "как дела"?
в моём примере была одна асинхронная задача, конечно их может быть больше
>Но не интересуется у самой задачи о ходе её выполнения
ага а где я писал, что интересуются у самой задачи, что за бред?
>он просто берёт ближайшую задачу и выполняет (не "проверяет ход выполнения", а просто выполняет, когда надо), ни о чём её не спрашивая.
он проверяет есть ли задачи в очереди и нет ли задач в call stack, тогда добавляет их туда из очереди
>Но они выполняются синхронно. И их не называют "асинхронные задачи" (от этого только путаница в головах, как мы видим на твоём примере про бредовой фразе "интересоваться, завершилась ли асинхронная задача"), их называют микро-/макротасками, а выполняются они все синхронно.
не согласен, асинхронные таски выполняются асинхронно от общего потока, потому что после колстека (в него попадёт например setTimeout либо fetch-запрос) они уходят выполняться на браузер апи и уже потом от апишек приходят соответствующие функции-обработчики (таски) в очереди, потом они отправляются в колстек, если он пустой. насчёт микро/макро хз, вроде они так называются да. функции-обработчики синхронные
> ага а где я писал, что интересуются у самой задачи, что за бред?
Была фраза "интересоваться, завершилась ли асинхронная задача". Даже если и не "у самой задачи", то всё равно ты говорил про "интересоваться о ходе выполнения", в этом главная проблема. Движок не интересуется о ходе выполнения, он просто выполняет.
> не согласен, асинхронные таски выполняются асинхронно от общего потока,
К тому моменту основной поток уже завершился, его нет. С точки зрения движка, основной поток — такая же таска, как и остальные в очереди. Он выполняется синхронно, до конца, потом следующая задача выполняется точно так же синхронно, просто после него.
Асинхронность — это о том, как они добавляются в очередь. А выполняются они все синхронно.
> функции-обработчики синхронные
Это, по сути, и есть таски. Выполняются синхронно, по очереди.
Event delegation
Анончик, насколько хуевая затея для вкатуна немного надрочившись с css юзать какой-нибудь tailwind для своих пет-проектов, если сильно впадлу верстать на голом css?
Насколько вообще это гиблое дело чуть сразу научившись центрить див браться учить подобные инструменты?
Просто хочу сосредоточиться на ебле с жсом, а не на ебле с версткой под каждое устройство, но, видать, слишком много хочу.
В любом случае, добра, анон.
Напомните, сколько понадобилось лет, чтобы снова вернуться к раздаче статики?
Круто, перезвони, когда хоть кто-нибудь это в продакшене запустит.
Учим еще и это теперь?
надо не просто код страницы смотреть, а текущий код DOM, ибо всякий говняк может динамически подгружаться.
то есть юзай Ctrl+Shift+I вместо Ctrl+U
Вчера в очередной (третий) раз уволился с работы, в связи с чем стал актуальным вопрос — как с пользой для карьеры провести ближайшие пару-тройку месяцев.
Неиронично хочу претендовать на ЗП в 300к, а с текущими знаниями/опытом совесть не позволяет такие деньги просить.
К слову об опыте, всю дорогу был рядовым разрабом, клепал тасочки из джиры. Хочется архитектурные скиллы подтянуть, чтобы из мешанины реакта/редакса/аксиос/юи-библиотек делать жизнеспособные большие приложения.
Так же интересует тема с криптой/блокчейнами/дефи — сложилось впечатление, что там можно серьезные суммы рубить.
Ну и в контексте политической обстановки, может вообще стоит искать релокейт, хотя этот вариант мне не очень нравится, но будущее айти (да и в целом) неоднозначно.
TL;DR:
- какие (и где) скиллы в целом и по архитектуре в частности, в контексте реакт разработки подтянуть
- стоит ли разбираться с блокчейнами, смартконтрактами. Какие перспективы для фронт-разраба в этом поле
- стоит ли искать релокейт
Конечно пиздуй в скрипту, там деньги раздают.
Объясните, пожалуйста, я так нихуя и не понял, вот что ждун жабаскриптер что должен уметь по части Canvas, чтоб найти работу?
>что ждун жабаскриптер что должен уметь по части Canvas
Должен уметь создать собственный 3d графический движок
Ну и чем это отличается от некста? Кроме того, что дено никто в проде нормально еще не запускал, в отличии от ноды.
ну хотя бы свой пеинт сделай веб версию
Никаких, хают его поехавшие пердолики. Электрон обычно выбирают, когда выбор стоит между десктопным приложением или его отсутствием.
В плане архитектуры у него очевидный косяк в том, что ты запускаешь среду, предназначенную быть огороженной от файловой системы для запуска сторонних скриптов, без этого огорождения, со всеми вытекающими последствиями. И костылить эти вытекания будешь ты.
В плане разработ очки там кромешный пиздец из зависимостей, легко конкурирующий с CRA. Но как я говорил выше, выбора нет и существующий пиздец никак не сравнится с одновременной поддержкой кодовой базы веб-версии и какого-нибудь говнеца, слепленного на Qt.
А что скажешь за альтенативы из жиэс-списка тут?
https://github.com/sudhakar3697/electron-alternatives
> базовый интенсив по жамаскрипту. Там они начали с темы Canvas
Базовый — т. е. с нуля? И они сразу на канвас перескочили? Хоть объяснили, что такое функции, как их вызывать, что такое объекты, как обращаться к свойствам и методам? А то без этого рисовать проблематично.
Ты не сказал, какой flex-direction у родителя, так как при строчном ширина должна решаться через flex-shrink, flex-grow, flex-basis.
У родителя родителя flex-direction: column.
Вот кароче ссылка на сам элемент: https://mui.com/material-ui/react-app-bar/#app-bar-with-a-primary-search-field
Я говорю про Search width
И там ещё есть пустой бокс, какое у него назначение?
Нет. Дока тайпскрипта перечисляет все фичи, которая имеет, большая часть которых будет непонятна вкатуну.
Ну значит мигрировывай существующую кодовую базу на тайпскрипт. Понимание фич имеет каскадные требования, например дженерики будут казаться перегруженным говном до тех пор, пока достаточно не наебёшься с организацией типов и интерфейсов без них. И так для большинства продвинутых фич.
Почему я могу кинуть в него a[0] = new class B() и тсу похуй ?
в рантайме ничего не будет крашиться, говорили они
Дьявол в кишочках
Походу да, какой-то мутный у него тип для dispatch
dispatch: ExtractDispatchExtensions<M> & Dispatch<A>
может из-за мидлвар такая хрень
Знакомый с другой компании говорит что пздц мало, но я что-то ссу больше попросить
По феласофии ты можешь диспатчить любые экшоны (AnyAction), даже те, которые никто не слушает. Задачка редюсера - чекнуть тип и брать пэйлоад правильно, а не неправильно
Поэтому <LocalAction> в configureStore - это неверно
Ну пока что реально
> Ты неправильно типизируешь, типизируй правильно
Сейчас затипизировал поправильнее, но с мидлварами всё равно какая-то хрень
В чем космический смысл этих ментальных упражнений?
createSlice или createReducer и createAction помогают со всем этим
Я без опыта костыливание на вордепрессе + jquery не идет в счет устроился реакт макакой за 100к/месяц год назад.
Указать типы у вызова функции это не челлендж, лол
Челлендж - написать так, чтобы типы указывать не надо было
TS птица гордая, не пнешь - не полетит. Не раз замечал за ним такое. Выводит типы неплохо, но пнуть все-таки иногда надо
Я двигаюсь по гайдбуку из шапки php треда. В данный момент делаю финальную задачку про сайт для создания и прохождения тестов и понимаю, что упираюсь в js и ajax-запросы.
Так как гайдбук относительно старый, то использовать для решения задач предлагается jQuery.
Я правильно понимаю, что jQuery сейчас нигде не использует и стоит сразу переходить к изучению фреймоворков?
Я успею освоить за пару дней какой-нибудь реакт в степени достаточной для решения простых задач ?
Тут про написание воркбенча для опросников. Пока о таком даже не думаю, но возможно попытаюсь.
От js мне банально нужна возможность обновления контента на странице без релоада и прочие мелочи.
640x480, 0:16
Спасибо! Вроде бы это то, что нужно
умеет, но я не понял какой пост?
зависит от твоих потребностей, php его примет или в $_POST, и тогда ничего не нужно парсить, или в php://input - тогда прийдется парсить, но опять же - зависит от того, в каком формате ты собираешься отправлять запрос. Если formdata - $_POST, если json - php://input
https://stackoverflow.com/questions/8893574/php-php-input-vs-post
Помогите выбрать ORM (js) для PostgreSQL для старого проекта
Нужно хранить Объект в базе со вложенными полями. Большой йоба-объект, там вложенность 3-4го уровня будет и куча полей. Описывать всё это ручкам - ебанись, количество ошибок будет возрастать при каждом изменения поля. Меньше кода - лучше.
Поэтому, нужны миграция. Вот я описал схему в JS, и база данных должна попукивать в ответ, делая ALTER, ещё и безопасная проверка данных автоматически будет.
И если это объект с вложенными полями, значит там будут JOIN в большом количестве, которые явно не хочется руками писать на каждый CRUD. Хочется простого интерфейса уровня object.create(JSON), object.update(JSON), object.remove(id) и тд и тп. Отправляю на либу JSON, а либа всё по sql-табличкам сохраняет консистентно.
А также, в таблице SQL уже есть классическая "плоская" таблица, к которой бы надо привязать отношения по ключу.. Хотелось бы такой миграции, чтобы старые таблицы не разъебало, а добавлялись новые
Какой ORM мне больше всего подойдёт?
Prisma
Лучше N+1 в производительности, чем пердолиться с тысячами и тысячами строк кода
Ну да лучше всю инфраструктуру насиловать, лишь бы строчки не писать.
Нахуй ты тогда мигрируешь на постгрес? С говноорм производительность у него будет не лучше условной монги, а может даже и хуже.
ну когда работаешь с реактом, то импортишь картинки как модули и потом вставляешь через переменную в имг срс
Во-первых это фича вебпака.
Во-вторых - нет, так как статический импорт в лупе - нонсенс.
У вебпака есть костыль, который в реквайр может целую папку запихнуть, но там уже сам будешь это говно разматывать в коде.
Менее костыльный способ - написать скрипт, который будет собирать все файлы в условной папке и создавать для них импорты в отдельном модуле. Там же можно их в коллекцию для итерации запихнуть.
Ну вот учиться то ещё можно, но в реальные проекты тащить запрещено. Те, которые начались после 2020го, когда появился TS
Но это чуть сложней
height и width атрибуты
реакт натив?
На какие телефоны? Это тебе не ПК, где можно написать приложение для одной ОС и портировать на другую, на телефонах анальный вендорлок.
>на каком жс-фреймворке можно писать андройд-приложения
>что не SPA/веб
У меня для тебя плохие новости, Нэйтив под андроид, но он вроде как спа.
rn не спа
И как лучше запилить? Я сделал как опциональные параметры, но как-то не очень наверно объект с undefined передавать
export const getEvents = (params?: IGetEventsParams) => {
return http.get('events', { params });
};
я мог бы это сделать с помощью canvas, но тогда я все равно не смогу потом получать цвет на квадратном градиенте слева, потому что он представляет из себя 3 diva, вложенных друг в друга. самый первый слой d1 это просто однородный фон, d2 горизонтальный белый->прозрачный градиент, d3 вертикальный черный->прозрачный градиент.
такой подход позволяет достаточно быстро отрисовывать градиент путем изменения только цвета фона дива d1. с тем же canvasом у меня фризила отрисовка градиента.
вот тут https://cssgradient.io/ сделано по такому же принципу, через 3 слоя дива, но как получать в таком случае цвет пихеля я хз
>Каким образом?
Попросился на собес у себя в компании написав руклю
>Что спрашивали?
Как отцентровать div без гридов и флексов, отличие let от var, че за useEffect ну и подобные простые вопросы.
>вот тут https://cssgradient.io/ сделано по такому же принципу
Хуйню несешь. Там берутся координаты указателя и в зависимости от этих координат высчитывается цвет.
какую хуйню я несу? ф12 нажми, там 3 дива, у одного из них просто меняется цвет фона в зависимости от выбранного цвета. а то что потом через координаты можно получить итоговый цвет, зная цвет на этом ползунке, это и так понятно. не понятно как получить цвет на этом ползунке. а ползунок все тот же див с нарисованным через css градиентом
это не может быть быстро никак. даже пробовать не буду
класс, спасибо!
ну казино это зашквар
таак а это уже интересно звучит, у меня прям хуй встал
Просто в рут кидаешь все скрипты. Идеальная хэш-таблица и всякие альясы и резолверы не нужно настраивать.
а как потом ориентироваться в коде?
Создаешь две папки с именами "bolshoy_yoba" и "maly_yoba". В первую кидаешь все большие файлы (> 1000 строк), в первую - все маленькие. Так очень удобно оценивать качество кода: если в первой папке файлов больше чем во второй, значит код говно.
Ну у меня это один запрос, просто а одном случае params передаются а во втором нет
Это все выглядело как средний пет, но разрослось в пиздец. Я даже, бывает, начинаю путаться в папках и файлах, где какой кусок кода. По ощущениям сделано процентов 60. Код превращается в лапшу, чувствую что пишу хуйню. Пытаюсь сделать одну фичу, понимаю, что она тянет за собой 10 других, которые я не знаю как делать. Очень много затупов даже не в плане "как писать код", а в плане "как это лучше организовать", потому что я не знаю блять, у меня нет опыта, я понятия не имею как это делается в серьезных проектах.
Хочется дропнуть нахуй и заняться чем попроще, а потом вернуться и все доделать. Что скажете?
посмотри какие-нибудь видео с лайв кодингом и внедряй оттуда фичи
>по блату
Скорее, зарекомендовал себя. Ну и блатом я бы это не назвал, все равно я уже на протяжении нескольких лет плотно задрачивал JS и TS, значительно продвинулся вперед джунского уровня.
Поставить дебаунс до конца проигрывания звука.
Чел, я работал все это время, но не должности разраба, периодически контактировал в связи со своими должностными обязанностями с командой разрабов, вот так и получилось.
Нет, не по блату. Блат - действие, ущемляющее интеерсы третьих лиц. Кого я ущемил, если я не говнокодю и вполне успешно выполняю таски из жиры? Или ты действительно думаешь, что намного лучше взять разраба-мимокрока чем разраба, который прекрасно знает в чем специфика проекта и прекрасно знаком с корпоративной культурой именно этой конторы?
Да это душнила же ебаный, особенно учитывая, что никогда в айти нетворкинг не считался зазорным.
>Блат - действие, ущемляющее интеерсы третьих лиц.
Хуя манямирок. Блат - это когда ты без опыта на 100к попадаешь потому что ошивался возле команды разрабов. Возвращайся, когда пройдёшь собес на вакансию, выложенную в hh, со своим пук-среньк без опыта но учил ts. Ну или по крайней мере не манямиркуй здесь, а где-нибудь в /b/ или /wrk/.
>Или ты действительно думаешь, что намного лучше взять разраба-мимокрока чем разраба, который прекрасно знает в чем специфика проекта и прекрасно знаком с корпоративной культурой именно этой конторы?
Так это каноничный блат. Тут подскочил, здесь подлизался, а там и в дамки.
А на чем пишешь?
получается хорошо что хорошо получается получается то хорошо а когда не получается то плохо
>Возвращайся, когда пройдёшь собес на вакансию, выложенную в hh, со своим пук-среньк без опыта но учил ts
Разве не так вкатываются?
Анаболики.
>Блат - это когда
>Блат - (по Фасмеру - от идиш blat — «посвященный, согласный»; или польск. (воровск.) blat - «взятка», в свою очередь от нем. die Blatt - «бумажн. деньги»[1]) — жаргонное слово, широко распространённое на территории бывшего СССР, означающее знакомство или связи, используемые в личных целях и ущемляющие интересы третьих лиц.
Еще раз. Чьи интересы я ущемил? Вкатун с двачей, которое не имеют понятия о корп культуре, но явно являются лучшим кандидатом, да?
>без опыта
Т.е. 2 года опыта верстания шаблонов на вордпрессе, параллельного самообучения, 5 лет работы в <компаниянейм>, из которых несколько лет непосредственного изменения бизнес процессами не являются опытом?
> на 100к
Дефолтная зарплата в МСК. Мог бы даже больше попросить.
>Возвращайся, когда пройдёшь собес на вакансию, выложенную в hh, со своим пук-среньк без опыта но учил ts
Проходил, и на миддла и на миддла+. Разрешаешь вернутся?
>Так это каноничный блат.
Т.е. то, что во всех более-менее конторах вакансии размещаются в первую очередь для сотрудников данных контор, а потом уже попадают на HH это блат, да?
>Еще раз. Чьи интересы я ущемил? Вкатун с двачей, которое не имеют понятия о корп культуре, но явно являются лучшим кандидатом, да?
Вот про этот манямирок я и говорил. Ты, как очевидный приблатнённый, уже начинаешь фантазировать, что сам всего добился, а не сеть тебя пристроила. Это конечно хорошо, что ты пристроился, вот только воздержись от советов по трудоустройству, таких пиздоболов-советчиков полон двач.
>Т.е. 2 года опыта верстания шаблонов на вордпрессе, параллельного самообучения, 5 лет работы в <компаниянейм>, из которых несколько лет непосредственного изменения бизнес процессами не являются опытом?
Ты же тут >>>2393993 распинался, что вообще безопытный макакен, а теперь внезапно оказалось, что аж целых 7 лет опыта. Зато понятно, что пиздобольство является частью корпоративной культуры в вашей фирме, что ты аж на анонимном форуме не можешь не пиздеть.
>Т.е. то, что во всех более-менее конторах вакансии размещаются в первую очередь для сотрудников данных контор, а потом уже попадают на HH это блат, да?
Не поверишь...
> вот только воздержись от советов по трудоустройству
Ладно, не буду советовать обзаводится связями, твоя правда.
>распинался, что вообще безопытный макакен
Где я распинался? Я вообще не писал там ни про опыт разработки, ни про опыт коммерческой разработки, ни про опыт работы в принципе. Ты себе там что-то нафантазировал и теперь срешь в тред.
>7 лет опыта.
У нигде не писал про 7 лет опыта. Но раз уж ты не понимаешь, дополню инфу про мой опыт работы:
1 год на червепидорской должности уровня курьера яндекс еды, параллельно обучение в вузе на комьютерсаенс очно-заочно
3.5 года работы манагером низшего звена. Именно менеджером в прямом смысле этого слова, а не продажником. Параллельно заканчивал обучение в вузе, где-то на середине начал пилить по заказам сайты на дефолтном кабанском стеке jquery select2 bootstrap bitrix потом перекатился на вордпресс. В последствии забил хуй и начал пилить пет проекты на TS, ванильном css и ванильных же веб компонентах. Параллельно дрочил задачки с codeforces синий ник кстати на с++
Ну и потом я получил диплом и устроился реакт макакой, дальше ты знаешь.
>Не поверишь...
Не поверю. Давай мне сюда определение того, что явялется блатом в твоем понимании. Сейчас ты только маняооправдания уровня "Это не это" можешь высрать.
ну как блеадь!?
++hui++
или как?
адище блядское...
native код и immer
таки я обосрался, редюсер в сторе не указал. ну вот опять обосрался и обосранные шорты вам показал да что же это творится
>напиши лучше
как минимум, s[0,1,2,3] и d[0,1,2,3] можно в один цикл зассунуть
>подумой
У тебя var, ты не думоешь, ты вкатываешься
а this тут при чем? что так что так одно и тоже. только с this короче и элегантней выглядит
>Я без опыта костыливание на вордепрессе + jquery не идет в счет устроился реакт макакой за 100к/месяц год назад.
>Т.е. 2 года опыта верстания шаблонов на вордпрессе, параллельного самообучения, 5 лет работы в <компаниянейм>, из которых несколько лет непосредственного изменения бизнес процессами не являются опытом?
Бессмысленный говнокод. Выше уже объяснили что this в этом контексте указывает на функцию-обработчик события. Писать надо было vertGradientColor.removeEventListener() а не this.removeEventListener()
Это решается на уровне прекоммит хуков. Тебе условно должно быть похуй, как там точки в коде расставляются.
да я уже исправил, код работал не как ожидалось, как оказалось
>прекоммит хуков
Это сеньры-помидоры настраивают и миддлы настраивают? Я просто хочу обычный пет-проект отрефаткорить, чтоб выглядело не совсем уж всрато.
>Что скажете?
Ничего не скажу. Если бы ты просто книги читал, ты бы даже не знал что такая проблема существует. Все эти техники отрабатываются на практике. Написание проектов в большинстве своём - это бесконечное самосовершенствование. Вначале ты делаешь хуйню. Потом ты чуть улучшаешь. Потом ещё. И ещё. И ещё. И в конце превращается в годный продукт. Вопрос только в том, стоят ли усилия результата? То есть - стоит ли вообще возиться с этим проектом?
В жсе это настраивается через prettier + husky. Помидором быть не обязательно.
ООП придумало концепцию иерархии!
Даже standard не смог это решить, поэтому есть standard и semistandard
>У JS задача - получить числа, обработать, и вернуть другие числа
Так, ладно, допустим, я шиз, который хочет так и сделать.
Мне жс вернул что-то после манипуляций с апи, дальше как сделать так, чтобы в html поменялось текстовое наполнение блока и классы?
они нужны хотя бы для того, чтобы обозначить, заканчивается у тебя выражение или нет
>В JavaScript нет GIL, однако, JS — это однопоточный язык
Нипонял блять. Если в ЖС нет нужны в глобальной блокировке интерпретатора (которая есть в Петухоне например, для того чтоб данные не скорраптились во время сборки мусора) то какого хуя тут 1 поток? Почему нельзя запилить нормальную многопточку на Ноде? воркеры сразу нахуй лол, это же не тред а по факту отдельный интерпретатор жса поднимается
В волшебном жс данные не корраптятся при многопокпоке?
на ноде некоторые методы работают больше чем в 1 поток, те которые на с++ написаны
Ебин, многопоточка на трэдах пиздец прожорливая по памяти и проседает по производительности. Нахуй не нужна для нагруженного IO
Для тяжелых вычислений создаются трэды, но с ними нет ебли по синхронизации, так как внезапно они занимаются только вычислениями
Все IO крутится в реакторе на одном трэде
Прожорливая она только если тредов ну слишком дохуя, например счет пошел на несколько сотен (кстати если у тебя асинхронка на 1 потоке и дохуя тасок в ивент-лупе висит это не лучшим образом отражается на быстродействии сервака и сборке мусора). В Жаве например заранее создается пулл тредов и в случае нового коннекшна берется один из свободных, бесконечно они не плодятся, зато в таком случае ты используешь все ядра своей машины а помимо этого - не блокируешься на CPU-операциях, в ЖС если в твоей async-функции встретится блокирующая операция парсинга например или обработка пары десятков тысяч извлеченных строк из БД, весь твой мейн тред заблочится
Нода в первую очередь для IO пилилась, а хайлоад через пул потоков это рофл. Да, иногда бывает что вычисления тормозят основной трэд, но исключение и они решаемы.
array && array?.length && <Component>
или можно просто
array?.length && <Component>
Хайлоад это го. в основе которого лежат внезапно именно треды, правда легковесные
Хайлоада на ноде без шаманства с горизонтальным масштабированием в принипе быть не может
Это не перебор?
array && typeof Array !== "undefined" && typeof Array.isArray === "function" && typeof Array.isArray([]) === "boolean" && Array.isArray(array) && array?.length && <Component>
Точно, спасибо
onClick
https://levelup.gitconnected.com/whats-new-in-javascript-after-the-es2022-release-de13dd091a61
Да, можно авейтить без функции, только это как есть ножом, да, чуть форму изменили, но язык все равно режет.
Подождем ES2025
> как минимум
а максимум?
> У тебя var
потому что ваш конст - это говно из жопы, а не значимое ключевое слово, всем допизды до этой параши из дохулиарда буков
если ты привык жрать дерьмище уебищное, вместе с .length сука, то я нет и я на хую вертел это уебище.
Постараюсь обьяснить подробнее. У меня при нажатии включается залипание клавиши, как его убрать? once: true это одно единственное нажатие
Сука ну ты тупой валенок хуле.
>Постараюсь обьяснить подробнее
Залипание клавиш - это фича винды такая, какое оно отношение к JS имеет? Олсо, >>397358 прав. Ты либо описывай свою проблему так как написано в оппосте:
>Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю».
либо гуляй.
как переназначить ебаную часть обжекта, но чтобы остальная осталась??
ну и плюс надо распидорашивать это говно перед добавлением, иначе оно заменяет нахуй весь дикт уууу блядь и дерьмище какое же убожество просто для ублюдков пиздец просто...
> Прописать переменную в html. Работа с макетом должна оставаться в макете работа со стилями в стилях..
> Понятно конечно, что всем этим будет заниматься по итогу подключенная либа. Но на уровне API всё будет ровно - никакого смешивания.
Что-то по типу этого?
Это у тебя редюсеры такие? А нахуя в первом из них присваивание? Да ещё и в свойство аргумента.
2604x1440, 0:19
> редюсеры
чего бля? я вашей скотопидарской терминалогии не понимаю и понимать не собираюсь (вместе со скотопидарскими ублюдскими ключевыми словами)
есть простое нерусское слово АККУМУЛЯТОР и я в душе не ибу как его здесь применить, а главное нахуя
я просто пытаюсь захуярить динамические опции и это должно быть проще простого, ведь у нас реактивность, а не хуй собаки, но это жсговно и надо ДЕЛАТЬ ПОПРАВОЧКУ
>>397514
котей, ты пынямаешь разницу между написать и инсталлировать?
не хочу тебя обидеть, но у меня возникают сомнения на счет твоей проф пригодности..
Не хочу тебя обидеть, но ты ебобо, которое себе на ровном месте проблемы выдумывает.
Да все уже поняли, что ты пытаешься написать что-то на языке, которого не знаешь (результат немного предсказуем), отчего у тебя бомбит на весь тред.
Лучше ответь, что ты пытаешься сделать с помощью этой конструкции:
> ...dict['name'] = {
> vAxis:{
> title: 'ny i dermishe',
> }
> }
?
Функция твоя называется "add_to_opt", но ты с какого-то хуя пишешь "dict['name'] = ", это добавляет не в options, а перезаписывает свойство 'name' внутри 'dict'. Нахуя? Что ты вообще имел в виду этим?
> есть простое нерусское слово АККУМУЛЯТОР и я в душе не ибу как его здесь применить, а главное нахуя
Редюсер — это функция, которая с этим аккумулятором и работает. Так что если твой options — аккумулятор, то нахуя ты в dict что-то записываешь?
>>397550
> я показал ход мыслей, в питоняшке это добавление дикт айтема
Внутрь dict? У тебя получилось добавление именно внутрь dict. Нахуя? У тебя есть аккумулятор options, в него и добавляй. А ты в dict зачем-то добавляешь, ишь чего выдумал.
> пиздец ты реально из-за своей духоты не понял что я это сделал для ПРИМЕРА
Лол. Сам выдумал для примера хуйню, а потом: "как справится с этим дерьмом? (первый блок, второй работает все заебись)".
Предлагаю тебе ДЛЯ ПРИМЕРА написать в терминале "rm -rf", а потом приходить спрашивать "как справится с этим дерьмом?".
> > это функция
> итератор
При чём тут итератор?
> а ты должен был показать как надо, а не душнить здесь блядь анрилейтед хуетой
Так нихуя ведь не понятно, что ты пытался добиться своей конструкцией. И раз во втором блоке всё работало нормально, то почему в первом сделано по-другому? Это как прийти и спросить:
"Сап двач, пытаюсь пожарить котлеты. Когда провожу хуем по ободку раскалённой сковороды, то очень больно и котлеты не готовятся. Как справиться с этим дерьмом? (это в первом случае; а во втором случае, когда я фарш на сковороду кидаю, всё работает заебись)".
А на все вопросы о том, для чего вообще хуем по раскалённой сковороде водить, отвечать, что это ДЛЯ ПРИМЕРА, чтоб показать ход мыслей, а вы все должны объяснить, как правильно делать, а не душнить.
Если создавать дополнительный массив с отфильтрованными это же плохая идея?
В этом мобх селекторов нет что ли?
>создавать дополнительный массив с отфильтрованными это же плохая идея
Абсолютно. В сторе держишь нормализованные данные, всё остальное вычисляешь из них
Это когда у тебя мамка с неграми якшалась и получился ты.
это местная нейросеть, угадывается по словам "додик", "пиздорылый", "питоняша", "проф пригодность", "профнепригодный" и скринам размером 3440x1440
Узнал, что в хук useNavigate можно вписать кастомный стейт. Как из компонента главной страницы достать этот стейт?
>Есть реакт-компонент с кнопкой. По нажатию этой кнопки происходит редирект на главную страницу
Сделать эту "кнопку" ссылкой, а текст показывать перед ней.
У меня после нажатия кнопки редирект происходит на главную страницу. Нужно юзеру показать, что его действие успешно завершилось. Нашел инфу, что стейт useNavigate можно отследить useLocation.
Я не знаю что такое селекторы (пиздец).
Если я в самом компоненте делаю что-то типа const todotodisplay = filter === "all" ? todostore.todos : todostore.completedtodos
и тд это же тоже самое что продублировать данные? Пиздец я даун.
>У меня после нажатия кнопки редирект происходит на главную страницу.
То есть ссылка.
>Нужно юзеру показать, что его действие успешно завершилось.
Так и показывай это перед ссылкой.
Когда полная поддержка?
Вроде того.
Нихуя непонятно как структурировать всю хуйню, что в компоненте держать и как надо, ищешь что-то, а там написано для старых версий, жспараша
Просто там где ты отрисовываешь делаешь дополнительный массив типа const filteredArray, который фильтруется по твоим условиям
Ну мы так на стажировке делали, а вообще по идее фильтрации и сортировки на бэке делаются
>40к удаленка, разве сейчас для джунов требования не гига высокие везде в айти?
не знаю, видимо.
такто ты учишь весь базовый стек, а дальше уже учить не много нужно, поэтому наверное это правильно
Какое действие выполнено то нахуй? У тебя действие выполняется при нажатии на кнопку, там и выполняй действие и показывай пользователю нужную инфу.
Ну есть кнопка которая отправляет айди итема на бэк чтобы удалить его. Если мне придет ответ, что бэк удалил слово, нужно сделать редирект клиенту на главную. И на главной нужно показать попап или другую хуйню что итем удален.
Не работает.
Редирект мгновенно происходит. Не буду же я таймер вешать на тост с последующим редиректом.
Ну а как это делать, чтоб юзер увидел этот попап и отправить его на главную?
Да я не знаю как в веб-параше это называется. Нужно просто вывести небольшой <div> в верхнем углу экрана с крестиком. В нем черным по белому написано: N элемент удален.
Я с useNavigate({state:...}) отправляю клиента на главную, где отлавливаю стейт с useLocation. Все бы ничего, но при F5 на главной странице это уведомление снова появляется.
Нормальная практика. Если массив большой в usememo заверни или про селекторы погугли. Если там больше десятка элементов в принципе не бывает, то сортируй хоть каждый рендер.
Ну заведи себе глобальный стор, где будет список тостов. Сделай компонент который их рисует и добавь на главную. Не надо в стейт роутера ничего пихать без особой нужды.
Под твое описание попадает тост и снэкбар.
>отправляю клиента на главную
Еще раз поясняю для тупого вкатуна. Ты не должен отправлять клиента на главную твой порядок действий:
1) Юзер запускает действие
2) при ошибке - обрабатываешь ошибку
3) При успехе: создаешь тост/снэкбар и после этого делаешь редирект на главную. Тост при этом остается висеть на странице то таймаута/ручного удаления.
>Ну заведи себе глобальный стор, где будет список тостов
Оверинжениринг. Пишется на ванилле в 10 раз короче и понятнее чем эта мешанина из стэйтов, сторов и контекстов.
>Я с useNavigate({state:...}) отправляю клиента на главную, где отлавливаю стейт с useLocation. Все бы ничего, но при F5 на главной странице это уведомление снова появляется.
У тебя роуты фейковые, там ничего не редиректится. Поэтому ты можешь смело оборачивать страницу в какой-нибудь лейаут и дальше делать так:
<Layout>
<Toast />
<MainPage />
</Layout>
и всё. Страница сорсит некий стор свыше, что хочешь и когда хочешь, то и размещаешь.
https://bun.sh/
bun is a new:
JavaScript runtime with Web APIs like fetch, WebSocket, and several more builtin. bun embeds JavaScriptCore, which tends to be faster and more memory efficient than more popular engines like V8 (though harder to embed)
JavaScript/TypeScript/JSX transpiler
JavaScript & CSS bundler
Task runner for package.json scripts
npm-compatible package manager
All in one fast & easy-to-use tool. Instead of 1,000 node_modules for development, you only need bun.
Bun.js uses the JavaScriptCore engine, which tends to start and perform a little faster than more traditional choices like V8. Bun is written in Zig, a low-level programming language with manual memory management.
Most of Bun is written from scratch including the JSX/TypeScript transpiler, npm client, bundler, SQLite client, HTTP client, WebSocket client and more.
>JavaScript runtime with Web APIs like fetch, WebSocket, and several more builtin
Нихуя себе, в ноде такого нет наверно
>npm-compatible package manager
>All in one fast & easy-to-use tool. Instead of 1,000 node_modules for development, you only need bun.
Очень прохладно.
Мелкие пакеты суки не отправляются вообще, видимо пока кокой-ты буфер не заполнится.
Можно ли её преобразовать в нормальную дату, используя методы самого Date?
Отдельно конечно же, так как в нормально организованной бд категории будут идти внешними ключами.
function getDate(dateStringRu) {
const monthsNames = Array.from({ length: 12 }, (_, monthIndex) => {
const date = new Date();
date.setMonth(monthIndex);
return date.toLocaleDateString('ru-RU', { month: 'short' });
});
const [day, month, year = new Date().getFullYear()] = dateStringRu.split(' ');
const monthNum = monthsNames.findIndex(monthName => monthName.includes(month));
return new Date(year, monthNum, day).toLocaleDateString('ru-RU');
}
Ты не понимаешь значение слова «демпинг».
Так если был бы низкий, то как раз бы не заморачивался всякими хуками с контекстами и просто бы хуярил useEffect() с проп дриллингом колбэков.
А так ты каноничный midwit.
>а могли бы просто навернуть FastAPI
Зачем? Ты из мира Pysechki будешь верещать про перформанс?
1928x1440, 1:17
то что зум не работает на лог виде - это походу не баг, а фича пиздорылых додиков из гхугла
но с каких хуев панинг отваливается когда я форсирую айфрейм!? притом его можно забагать и он сорт оф будет
минвайл если отключить айфраейм, то пан появится, но отвалятся стили для тайтлов
в вашем вебоуебище хоть что нибудь ПРОСТО РАБОТАЕТ ?
>>398210
> будешь верещать про перформанс
у тебя стокгольмский синдром додик, ты обожрался говна..
>>398211
додь, его в еуроппе уже начинают регулить, а тогда он нахуй невосрется маргиналам - и его сольют все олмост инстантли
шнобель, спок.
шнобель, спок.
бамп вопросу
> по vue
оф дока почти топовая
нахуй тебе еще что то?
но вообще классика это тот порноактер с квадратной челюстью из акадимайнд и толстый пидарок с мерзким голосом
Ничего, фронтомакаке такое знать не положено, а то у тебя не дай бог рвотный рефлекс будет возникать от одного взгляда на очередной ряктовысер.
Да самую базу только. Пояснить за структуры данных, big O, дерево там уметь обойти. Паттерны джуну не нужны.
observer pattern нужен чтобы понтануться
Сорян, не тот трэд
>Как бы выкатиться с помойного проекта, не задев чувств коллег?
Напиши заявление на увольнение, а в заявление не пиши текст, вставь только картинку с Ельциным, который говорит новогоднюю речь.
>Прямо вот с порога заявить, что качество кода настолько говно, что они его не вывезут?
Можно сначала просто попроситься в другой проект, потому что этот не нравится. Потом уже можно подробнее, если будут спрашивать, что не так, говорить, что не нравится такое, ну и если не поймут, то прямо сказать, что это говно.
Скачал виртуальную клавиатуру. Но нажатие кнопок там задано просто буквами QWERTY. Не работает ни на одной раскладке, кроме английской.
Какие естт способы это фиксить?
Вопрос: сильно ли будет сложнее сделать это всё на электроне? Чтобы юзверь кликнул на иконку и запустил окошко? Или я заебусь руби к нему прикручивать? Там много джаваскрипта надо знать?
Ну, то бишь, там будет одна страничка, нашлёпанная на шаблонизаторе HTML для руби, это можно ПРОСТО ВЗЯТЬ И запускать в десктопном электроновском окошке вместо браузера?
Конечно сложнее, так как тебе ещё надо будет с нодой пердолиться. Плюс ты, как рубист, не имеешь опыта пердолинга с npm, а электрон просто хуеву тучу пакетов тянет.
js первый раз трогаю, и то факультативно
row !== undefined ? row.username == 'admin' : false
Он и есть. Посути это `row.username == 'admin'`, а остальное проверка чтобы на пустом row код не упал.
Хоть что-то знаю
Вопрос поинтереснее — что тут происходит? Вроде как проверяет айпи на 127.0.0.1 и если да, то возвращает 401, а в другом случае просто закидывает логин и пароль дальше?
А, да. Проглядел. Проблема в том, что вот это говно у меня висит как раз на локалхосте и возвращает примерно ничего
Дебагер и console.log() в помощь.
Ну req.body это очевидно тело запроса, оттуда достаем юзернейм и пароль, чтобы не писать каждый раз req.body.username
Это деструктуризация, не в каждом языке есть.
По синтаксису на вебсокеты похоже
Так. глянул я по совету товарища выше логи, и увидел, что в ответ на запрос с локалхоста оно кидает 401. Тут что-то не так
Condition1 ? result1 : condition2 ? result2 : condition3 ? result3 : condition4 ? result4 : default
Не, трогать исходники нельзя. Они валяются на ремоут серваке, и мне нужно сформировать запрос, который обойдёт эту хуйню
Это изи уровень, так что вряд ли тут бд надо ломать. В целом, всё жсовское я уже узнал, и пойду дальше думать
А 172.17.0.1 — айпи внутренней сети докера. Хз как локалхост получить
О, спасибо, потыкою!
Ладно, я вернулся. Откуда socket.remoteAddress берёт айпи? В доках не написано, но аналоги дёргают из X-forwarded-for. Может, оно тоже?
Ты прямо из этого контейнера код запустить не можешь? Ну или хоть телнет запустить?
Это не полноценная машина, а просто челлендж. Тут не нужно влазить на машину и устраивать в ней RCE
Мне просто надо отправить пакет, чей ip определится как 127.0.0.1, и я считай прошёл. Но надо понять, откуда этот метод (socket.remoteAddress) берёт айпишник. Вот и спрашиваю у жсеров
удваиваю этого
У тебя и так иф в три этажа.
Проверяю тип аргумента. Язык ведь динамический, вдруг там строка заместо объекта придёт.
тип сюжета это костыль к джавасценарию, за угловатый не знаю но советую реагировать, смотреть документации, видео на ютубе, свободный лагерь кода
Через || может тогда, раз так много лжи?
и не реактивный а РЕАГИРУЮЩИЙ
Пишичерез if else лучше. Минификатор все равно тернарку высрет в прод, так что похуй
>Вот и спрашиваю у жсеров
Поиском по гитхабу не судьба?
https://github.com/nodejs/node/blob/8e19dab677e64ec5ba40ab8523d23d02c92a24a2/lib/net.js#L807
> Это говнокод или такое допустимо писать?
> Condition1 ? result1 : condition2 ? result2 : condition3 ? result3 : condition4 ? result4 : default
>>399002
> И какой выход из положения? Свитч? If в три этажа?
[
[getCondition1, getResult1],
[getCondition2, getResult2],
[getCondition3, getResult3],
[getCondition4, getResult4],
].reduce(
(
[isDone, getPrevResult],
[getCondition, getCurrentResult]
) => !isDone && getCondition() ? [
true,
getCurrentResult
] : [
isDone,
getPrevResult
],
[false, getDefault]
)[1]();
Я ж не первый день мониторю хх. И речь идёт о ПОЛНАЯ СТОПКА вакансиях, где КОНЕЦ СПИНЫ это С#
Потому что это такой же экшн, но со специфичными аргументами. Плюс вьюхи ебать не должно, тханки они там прокидывают или джейсоны, они просто аргументики в экшн криэйторы передают.
блядь ты со своим промптом уже заебал (навали скриптов на али, перестань жрать говно уебок блядь..)
как я понял ты пытался сказать что рект популярней вю, и вот это мислидинг хуета
а что до твоего индуссохуеглотского дотнета с уебищным куском говнобойлейрплейта за решоткой - то похуй абсолютно
очень хорошо что мелкопарашу насильно отменили у всех даунских кабанчиков.
railway
reg.ru
>хотел бы попробовать стать ПОЛНАЯ СТОПКА программистом
А для чего? В чем профит? Зарплаты такие же или ниже, знать надо больше
> Потому что это такой же экшн, но со специфичными аргументами.
Но у экшона нет аргументов, это же просто объект.
> Плюс вьюхи ебать не должно, тханки они там прокидывают или джейсоны, они просто аргументики в экшн криэйторы передают.
То есть, чтоб тханк-криэйтор снаружи выглядел как обычный экшон-криэйтор? В принципе, логично.
Но если уже унифицировать, то не легче ли вообще вместо любых криэйторов, результат которых надо диспатчить, сделать сразу экшон-диспатчеры? То есть это как экшон-криэйтор, но он экшон не возвращает, а сразу диспатчит. А компоненты его просто вызывают.
>УГЛОВАТЫЙ
>ты пытался сказать что рект популярней вю
Вкатун, не знающий английского не палится
>рект популярней вю, и вот это мислидинг хуета
Ты пьяный? РЕГАИРУЮЩИЙ популярнее чем все остальные фреймворки вместе взятые.
да
Именно джс не очень тяжёлый, тяжело на практике применять. А конкретно при изучении языка самое сложное для меня - это скоупы у функций или прототипирование объектов, именно сложность в том, как всё запутанно (prototype vs [[prototype]] vs __proto__) а не в самих концепциях
>понять нахуя это дерьмо было вообще создавать и пихать в ебанный браузер
соглы, это всё возникло потому что нетскейп был пиздатый браузер и под него как раз сделали жаваскрипт
> При нажатии на кнопку стоит функция, но есть проблема, что при зажатии кнопки включается залипание клавиш и функция ебашит сто тысяч раз. Как это исправить?
https://javascript.info/keyboard-events#auto-repeat
JS разумеется. Можно педалить оба конца сразу и шарить код между ними.
а что не кал?
может надо было в питон вкатываться?
тоже во фронте разочарован пиздец, тошгнит просто
Тебе для бэка реакт сильно хорошо-то и не надо знать, недельку поковыряй для базы и в ноду.
> И? Как исправить то?
Там же написано:
> For events triggered by auto-repeat, the event object has event.repeat property set to true.
Соответственно, в начале своей функции, которая принимает event, пишешь:
if(event.repeat) return;
и она при повторах ничего после этой строчки не делает. Очевидно же.
Если надо ещё и отменить какое-либо действие по умолчанию, то можешь добавить false:
if(event.repeat) return false;
Нет, мне еще рисовать надо будет на канвасе. button с position=absolute раскидывать - какой-то костыль
рельсы -это зомби
Не за что.
Вообще, старайся находить в учебнике релевантные темы и задрачивать их параллельно с написанием кода. Придётся иногда переписывать многое заново (когда начнёшь лучше разбираться в нужной теме и поймёшь, что до этого написал херню), но с каждым разом должно уже быть легче и быстрее.
Вот работаешь ты с клавиатурными ивентами — читай вдумчиво раздел учебника про это (и вообще про ивенты), ссылка у тебя уже есть. Ну и в целом желательно читать учебник, чтобы интуитивно понимать, например, что если функция вызывается слишком много раз, то это не такая уж проблема — можно просто внутри самой функции проверить что-нибудь с помощью if и сделать return, если надо. Или обернуть в другую функцию, которая проверяет условие, и вызывает основную функцию только в нужные разы. И тебе останется лишь найти нужное условие, которое можно проверять.
Понял, спасибо
>Все что я с бэка получаю лучше записывать в стейт менеджер
Смотря в какой. Если в редакс - идешь нахуй, если в специализированный для серверного состояния менеджер, например react-query, то да.
Пойдет, туда можно.
>почему в редакс нельзя?
Потому что редакс предназначен для хранения состояния клиента, только его. Никаких форм/серверного состояния и прочего в нем хранить не следует. В нем нет таких нужных фич как кэширование, инвалидация, нет возможности отслеживать загрузку/ошибки из коробки, огромное количество бойлерплейта.
редакс хуйня получается?
почему на любых ваках его форсят изучать, если есть мобх?
я уже заебался учить новые и новые фреймворки, выясняя, что у них много хейтеров и есть альтернативы поулчше...
>редакс хуйня получается?
Не хуйня. Я же говорю, используется для хранения состояния клиента.
>мобх
Тот же ни на что не годится кроме хранения клиентского стейта.
Объясните плез че за херня, может было у кого. Решил задеплоить приложуху на CRA на Github pages. До этого yarn start и yarn build с локальным серваком работали. Установил gh-pages, прописал predeploy и deploy скрипты, как в доке CRA пишут, запускаю скрипты и на продакшен, на локальной build сборке, на показывает пустой экран, будто приложения и нет никакого. Приходится откатывать и тогда снова работает.
нужны первые 6 цифр, а потом, вне зависимост от того, что идет дальше, дробная часть
например
11111111111.123
Я не пойму как второй паттерн с дробной частью записать так, чтобы он стригерился после любого количества чисел после первого паттерна, сейчас регекс пикрил
Я вроде сталкивался с таким год назад - в регексе есть такая херня, которая тебе нужна (любое количество символов вплоть до символа X). Positive lookahead или как то так мб
Можно задачу обозначить по другому, нужно ограничить инпут так, чтобы я мог указывать количество цифр до точки и после. После вот я указать могу, а ДО не получается
Попробуй (\d{1,6})[^\.]\.(\d{0,3})
Потом с помощью знака вопроса сделаешь необязательным всё, что не обязательно. А сейчас в моём варианте дробная часть обязательна, как и точка перед ней.
Ну и границы поставь, если нужно.
> после любого количества чисел после первого паттерна
Только чисел? Тогда скорее (\d{1,6})\d\.(\d{0,3})
>>400076
У тебя плюс жадный, сожрёт и точку.
>>400099 (Del)
> ∗?
> ∗?
Нахера?
Макаба ебучая, вся разметка к чертям.
>>400124 (Del)
Но там же всего лишь \d
Хотя, наверное ты прав, у тебя вроде немного быстрее будет
Третий
Нахуй ты их так приложил?
Проиграл
> Всё перечёркнуто красным
ты ж каложор ебучий, УБЕРИ НННАХУЙ ЭТОТ УЕБИЩНЫЙ ВИЗУАЛЬНЫЙ ШУМ СУКА БЛЯДЬ...
Тупой дебс, написано же, поменяй конфиг плагина prettier в еслинте
Потому что там в плагине prettier надо настроить символ конца строки, советую поставить любой. Либо просто в правом нижнем углу в VS code поменяй crlf На lf
Дебил, который не может в питоновские компрехеншоны, что-то там про каложоров затирает, лел.
потому что ты пишешь каменты по-русски и пихаешь везде этот нахуй невсравшийся визуальный шум.
> Потому что статичные свойства класса работают в жс не так как в других языках.
А как они там работают? Там this указывает на экземпляр класса? А на какой из них?
Datepicker. Там есть twoInputMod. Он доступен везде, кроме то функции. В ней он сразу скукоживается.
Выдает ошибку о несуществовании элемента с классом "info_left_msg" (он есть на этой же странице acc.php, но с другим GET-запросом "id", потому нужен), а код, который идет ниже, то есть, начиная с 108 строки, уже не работает
Кроме как переставлять местами выхода не нашел. Есть еще какие-то варианты мб?
Нет, это временный костыль, чтобы не заморачиваться полным переписыванием каждой строчки. Сперва убираешь вызовы жиквери костылями, а потом разбираешься что не так.
>выдает ошибку из-за того, что такой элемент не найден
Пиздишь. Ванильные методы просто null вовзращают, ничего они не выкидывают
document.querySelectorAll("dsadsa").forEach(el => {...})
document.querySelector("sadsadsa")?.addEventListener
И ты под переходом с jquery на ваниллу подразумеваешь замену $ на querySelector? Лучше бросай это дело и говнокодь на жикарве дальше
>>401052
Вот это мощно, конечно, но какого хуя код не может просто работать невзирая на отсуствие элемента? Не понимаю я логики js и мне тупо интересно, в какой строчке и как в jquery прописано, чтобы это работало нормально
>>401054
Я в этом посте показал, посмотри внимательно на консоль >>400971
>>401055
Как с селекторами работать я уже научился, мне нужно, чтобы код, который находится ниже строки с "ошибкой", работал, тчобы скрипт не вставал в этом месте
>>401057
Ну не только работу с селекторами, но и замену вообще всех функций по типу click, hide, each и так далее. Плюсом, уже ни в одной вакансии нет требования знания jQuery, но вот JS повсеместно, который я почти не знаю из-за того, что всегда юзал jQuery
>какого хуя код не может просто работать невзирая на отсуствие элемента?
Потому что ебаного элемента нет. А ты подразумеваешь, что он есть. Соответственно, логично выкинуть ошибку.
>Я в этом посте показал, посмотри внимательно на консоль
Так тут даже не метод выкидывает ошибку, а попытка обращения к свойству у null
> тчобы скрипт не вставал в этом месте
Так ты пиши свои функции таким образом, что бы они запускались только в случае, если юзер находится на странице.
> всегда юзал jQuery
Ты за все свое время юзания, судя по твоему коду, не научился делегировать обработчики событий на родительский элемент. Чем ты вообще занимался все это время?
>Не понимаю я логики js и мне тупо интересно, в какой строчке и как в jquery прописано, чтобы это работало нормально
Да никак это нормально не работало, жиквери просто молча сглатывает ошибки, а современный жс падает при малейшем пуке не туда.
querySelector("hui")?.addEventListener(...)
Потому что семантика статичного метола подразумевает отвязанность от конкретного экземпляра класса. Либо делай обычный метод, либо лобавляй третий аргумент, либо делай два статичных метода один для сингл второй для ту
Нахуй здест регексп, дурилка? Чего вы везде суете регексп?
const firstSix = str.substring(0, 6);
const mantissaIndex = str.indexOf(".", firstSix.length);
const mantissa = mantissaIndex > -1 ? `.${str.substring(mantissaIndex)}` : "";
return `${firstSix}${mantissa}`;
А если регексп и использовать, то не для соединения, а удаления чисел которые идут после 6го числа и до точки.
const selectedHandler = [firstHandler, secondHandler, thirdHandler, ...restHandlers].find(handler => handler.evaluate());
return selectedHandler?.result ?? default;
Перед открытием модалки. Модлка должна быть максимально тупым компонентом, который просто знает как отобразить данные и куда направить обработанные дейсьвия пользователя
> const selectedHandler = [firstHandler, secondHandler, thirdHandler, ...restHandlers].find(handler => handler.evaluate());
> return selectedHandler?.result ?? default;
А для создания хэндлеров дополнительный класс писать, лол?
Спасибо!
>жиквери просто молча сглатывает ошибки
Нет, не сглатывал. Просто у него под капотом создавался массив и он итерировался по этому массиву при вызове методом. Нет элементов масситва - нет итераций и нет ошибок.
>>397834
1) Ты запускаешь получение данных.
2) Открываешь модалку с прелоадером
3) При получении данных отображаешь их в модалке или отображаешь инфу об ошибке
Да
class ExpressionBoundLazyEvaluator {
constructor(expressionToEvaluate, trueResult){
this.evaluate = ()=> {
if(expressionToEvaluate()) {
this.result = trueResult;
} else {
this.result = undefined;
}
}
};
}
const futureDate = Date.now() + 50000;
const evaluators = [new ExpressionBoundLazyEvaluator(() => Date.now() > futureDate, "50 seconds passed")];
И по итогу получилось как у меня (>>399244), только в сумме длиннее и на классах. И семантика всратая: вопреки названию, "evaluate" возращает не вычисленный результат, а true/false.
UPD: Лол, присмотрелся, а там даже true/false не возвращается, всегда будет undefined. Метод массива .find в любом случае ничего никогда не найдёт, в конце итоговый результат будет всегда default, заебись решение.
И почему у тебя каждый result в функцию не обёрнут? Проверки lazy, а результаты внезапно не lazy.
Твой код тяжело читать, тяжело будет добавить обработку ошибок или логирование, да и в целом расширить/изменить. И в добавок ко всему он выполняет лишние итерации. Не вижу никаких плюсов, предложенное решение проигрывает даже обычному набору if блоков с return в каждом.
> Твой код тяжело читать
Код, где evaluate не возвращает результат вычислений — ещё тяжелее (дезинформация хуже отсутствия информации). А ещё он не работает, потому что там даже true/false не возвращается, и .find никогда ничего не найдёт.
> И в добавок ко всему он выполняет лишние итерации
А вот тут ты абсолютно прав. Сам .find здесь намного лучше будет, чем .reduce, надо только правильно его использовать.
Вот, сделал хороший вариант:
[
[getCondition1, getResult1],
[getCondition2, getResult2],
[getCondition3, getResult3],
[getCondition4, getResult4],
].find(
([getCondition]) => getCondition()
)?.[1]() ?? getDefault();
Можно лучше, если ты так классов боишься:
const [, getResult = getDefault] = [...].find(...);
return getResult();
>ну тут и процедурок хватит
>ну тут других процедурок хватит
>ну зас объединим первые и вторые процедурки, написав еще одни, слишком много кода от них зависит
Поздравляю, вы успешно прошли путь до монолита. Обратного пути нет.
>>401498
> Вот, сделал хороший вариант:
> ...
> )?.[1]() ?? getDefault();
А, нет, не хороший. Если нужный результат должен быть null или undefined, то вместо него будет default. Та же ошибка, что и здесь:
>>401207
> return selectedHandler?.result ?? default;
О, а вот тут уже этой ошибки нет:
>>401544
> const [, getResult = getDefault] = [...].find(...);
> return getResult();
Ещё можно так, чтоб переменные не плодить:
(
[
[getCondition1, getResult1],
[getCondition2, getResult2],
[getCondition3, getResult3],
[getCondition4, getResult4],
].find(
([getCondition]) => getCondition()
)?.[1]
??
getDefault
)();
> если ты так классов боишься
Только неуместных и излишне громоздких, да ещё и с дезинформирующей семантикой.
Если надо семантику, то можно обычными объектами. Так даже понятнее, ведь при вызове конструктора класса не видно, что означают аргументы (только если IDE подсвечивает, но мы сейчас не об этом), а с объектами видно:
(
[
{check: getCondition1, eval: getResult1},
{check: getCondition2, eval: getResult2},
{check: getCondition3, eval: getResult3},
{check: getCondition4, eval: getResult4},
].find(
({check}) => check()
//или case => case.check(), чтоб нагляднее
)?.eval
??
getDefault
)();
>>401498
> Вот, сделал хороший вариант:
> ...
> )?.[1]() ?? getDefault();
А, нет, не хороший. Если нужный результат должен быть null или undefined, то вместо него будет default. Та же ошибка, что и здесь:
>>401207
> return selectedHandler?.result ?? default;
О, а вот тут уже этой ошибки нет:
>>401544
> const [, getResult = getDefault] = [...].find(...);
> return getResult();
Ещё можно так, чтоб переменные не плодить:
(
[
[getCondition1, getResult1],
[getCondition2, getResult2],
[getCondition3, getResult3],
[getCondition4, getResult4],
].find(
([getCondition]) => getCondition()
)?.[1]
??
getDefault
)();
> если ты так классов боишься
Только неуместных и излишне громоздких, да ещё и с дезинформирующей семантикой.
Если надо семантику, то можно обычными объектами. Так даже понятнее, ведь при вызове конструктора класса не видно, что означают аргументы (только если IDE подсвечивает, но мы сейчас не об этом), а с объектами видно:
(
[
{check: getCondition1, eval: getResult1},
{check: getCondition2, eval: getResult2},
{check: getCondition3, eval: getResult3},
{check: getCondition4, eval: getResult4},
].find(
({check}) => check()
//или case => case.check(), чтоб нагляднее
)?.eval
??
getDefault
)();
>()().?..??
>так даже понятнее
>любое обращение к this в getCondition/Result приведет к ошибке
Чел, плес. Это код вкатуна который думает, что он всё хорошо изучил.
Как будто на жабе монолиты невозможно писать. С обычным процедурным монолитом разница только в том, что ты будешь тонны интерфейссов абстрактных фабрик писать поверх.
Жаба тут твоя ни при чём. На фронте уже давно перешли на тайпскрипт, который позволяет типизировать код не влияя на его производительность. Можешь хоть 10000 интерфейсов породить, на рантайме не отразится, в то время как жаба будет добавлять каждый в таблицу интерфейсов
>На фронте уже давно перешли на тайпскрипт, который позволяет типизировать код не влияя на его производительность.
Казалось бы, причём здесь классы?
Еще такой вопрос, а что кроме бека стоит в стейт менеджер пихать, как понять?
>стейт менеджер
Что за стейт менеджер? Тебе выше уже ответили, что данные каждого типа идут в специализированный для этого стейт менеджер, от useState(this.state) до редаксов, мобиксов, формиков и подобного.
Всё, что можно сохранить в переменную.
> >()().?..??
Ок, если это СЛИШКОМСЛОЖНА, то можно и вариант с отдельной переменной (>>401544), он действительно проще воспринимается, тут не спорю.
> >так даже понятнее
Что понятнее чем что?
Это:
[
{
check: () => player.job === 'warrior',
eval: () => player.sword
},
{
check: () => player.job === 'magician',
eval: () => player.wand
},
{
check: () => player.job === 'assassin',
eval: () => player.hiddenBlade
},
]
чем это:
[
new ExpressionBoundLazyEvaluator(
() => player.job === 'warrior',
player.sword
),
new ExpressionBoundLazyEvaluator(
() => player.job === 'magician',
player.wand
),
new ExpressionBoundLazyEvaluator(
() => player.job === 'assassin',
player.hiddenBlade
),
]
?
Да, первый вариант намного понятнее. И результат вычисляется лениво, хз почему в классе ExpressionBoundLazyEvaluator сделано не так, а через жопу.
> >любое обращение к this в getCondition/Result приведет к ошибке
С чего бы? Если функция почему-то не стрелочная, то просто будет undefined. Да и вообще, зачем там this? Чтобы что? Если всё-таки за каким-то хером надо, то можно забиндить, я не запрещаю.
И в чём принципиальная разница здесь: >>401422? По-твоему, там this внутри expressionToEvaluate будет вести себя как-то по-другому? Лол, ты серьёзно так считаешь?
> Чел, плес. Это код вкатуна который думает, что он всё хорошо изучил.
Забавно, учитывая, что в двух пунктах из трёх обосрался ты, а не я. Первым «лови вора» кричит сам вор, как говорится. Ну и мой код хотя бы работает, в отличие от >>401207 с >>401422, так что я, по крайней мере, хоть как-то изучил, в отличие от.
> >()().?..??
Ок, если это СЛИШКОМСЛОЖНА, то можно и вариант с отдельной переменной (>>401544), он действительно проще воспринимается, тут не спорю.
> >так даже понятнее
Что понятнее чем что?
Это:
[
{
check: () => player.job === 'warrior',
eval: () => player.sword
},
{
check: () => player.job === 'magician',
eval: () => player.wand
},
{
check: () => player.job === 'assassin',
eval: () => player.hiddenBlade
},
]
чем это:
[
new ExpressionBoundLazyEvaluator(
() => player.job === 'warrior',
player.sword
),
new ExpressionBoundLazyEvaluator(
() => player.job === 'magician',
player.wand
),
new ExpressionBoundLazyEvaluator(
() => player.job === 'assassin',
player.hiddenBlade
),
]
?
Да, первый вариант намного понятнее. И результат вычисляется лениво, хз почему в классе ExpressionBoundLazyEvaluator сделано не так, а через жопу.
> >любое обращение к this в getCondition/Result приведет к ошибке
С чего бы? Если функция почему-то не стрелочная, то просто будет undefined. Да и вообще, зачем там this? Чтобы что? Если всё-таки за каким-то хером надо, то можно забиндить, я не запрещаю.
И в чём принципиальная разница здесь: >>401422? По-твоему, там this внутри expressionToEvaluate будет вести себя как-то по-другому? Лол, ты серьёзно так считаешь?
> Чел, плес. Это код вкатуна который думает, что он всё хорошо изучил.
Забавно, учитывая, что в двух пунктах из трёх обосрался ты, а не я. Первым «лови вора» кричит сам вор, как говорится. Ну и мой код хотя бы работает, в отличие от >>401207 с >>401422, так что я, по крайней мере, хоть как-то изучил, в отличие от.
>>401826
> Да, первый вариант намного понятнее
Можно ещё понятнее:
[
{
if: () => player.job === 'warrior',
get: () => player.sword
},
{
if: () => player.job === 'magician',
get: () => player.wand
},
{
if: () => player.job === 'assassin',
get: () => player.hiddenBlade
},
]
А как вообще происходит взаимодействие например Реакта с сервером? К примеру у меня есть интернет магаз, мне надо чтобы списки товаров подгружались с бэка, или отфильтрованные товары. Это надо просто гет-запрос делать из компонента к базе?
Насколько?
Вот сейчас у меня такой GitHub: https://github.com/vertically-challenged
А в резюме просто расписано, какие технологии я использовал на каждом из проектов в GitHub
А чем не тайпскрипт?
АХАХХАХАХХ
Это копия, сохраненная 9 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.