Вы видите копию треда, сохраненную 5 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Когда открываю из вебшторма в браузере, то функция remove срабатывает, но на кодепине не работает, в чем может быть проблема?
Если что функция в самом низу кода
Это магия.
Попробуй справочник по языку хоть раз в своей жизни прочитать.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Object_initializer
Зумеры разучились не только за индустрией следить, но и нити тредов разматывать, чтобы уловить контексты.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#object_literals
> In ES2015, object literals are extended to support ... shorthand for foo: foo assignments
Да нет, это просто ты тупенький.
самое смешное, что мне кинули статью, откуда я пример притащил
Аноны, подскажите по коду, там есть намек на ООП или это функциональное программирование?
И блок, говорящий о том, что датчиков нет, тоже появляется? и нижняя кнопка становится неактивной?
Монады там видишь? Если нет, то не функци анально. Так же там ни одного класса не объявлено, так что даже не ООП.
У меня да, я другой анон. С очисткой кэша обновись, так бывает.
Да мне тестовое дали, сделать эту самую панель. Что такое Erp я примерно понимаю, а вот как эта самая панель должна выглядеть и что там должно быть, я ваще хз
Да мне тестовое дали, сделать эту самую панель. Что такое Erp я примерно понимаю, а вот как эта самая панель должна выглядеть и что там должно быть, я ваще хз
Этим же вопросом задавался недавно. Но решил, что лучше жс выдрочить назубок, чем скакать по языкам, поверхностно их изучая. Так что для себя решил изучать жс дальше и глубже
Ну жс я и так изучаю по мере работы, так что от него я никуда не денусь, я после работы хочется еще чего-то, потому что учить жс уже до блевоты немного после 8-11 часов долбёжки по задачам. А хочется еще другой язык попробовать, чтобы не закрываться в своём жс мирке
Как ты сюда залазишь все время, тварь?
Если просто из праздного интереса, то вряд ли уйдешь дальше хеллоуворлда, но можешь попробовать кложу или руби, первый даст тебе преставление, что такое реальный современный ФП язык, второй даст представление об ООП и красивом лаконичном коде. А так я бы на твоем месте выбрал цель, для чего ты учишь и что хочешь делать кроме фронта, и потом уже язык выпирал.
Шмель, ну сейчас без ТСа никто уж и не пишет, говоря жс я автоматически подразумевал ТС в том числе.
>>280243
Да в том в том и дело, что в случае с экзотическими языками, я может в чем-то и разберусь, а вот дальше никуда не уплыву. Наверное в данный момент цель - начать немного разбираться в бекенде попутно изучая еще что-то кроме жс.
>>280244
Вот это реально too СЛОЖНА, опять же сами по себе плюсы не сказать что сильно востребованы, если ты только не сенъер с 60 лет опыта
У меня знакомый из фронта переехал на флаттер, кайфует, говорит нет этой размазни из десятка технологий, сидишь углубляешься во что-то одно.
> У меня знакомый из фронта переехал на флаттер, кайфует, говорит нет этой размазни из десятка технологий, сидишь углубляешься во что-то одно.
Так он на дарте
Да, на фронта. Не, там задание больше техническое, вернее оно только техническое. Бек с которого данные по запросу брать там предоставляется, про дизайн вообще ни слова(имею ввиду что и как должно выглядеть) но мне же как-то его нужно организовать н? Например там написано "послать запрос "сюда" оттуда придут данные "те" эти данные нужно ебнуть а таблицу. Или на дизайн вообще не будут смотреть даже если это хуйня из под ногтя?
>Или на дизайн вообще не будут смотреть даже если это хуйня из под ногтя?
Нам блять откуда знать? Спроси у работодателя.
man behance dribble
Так тебе востребованность или "знания" нужны? Изучай жаву тогда, ковырятели жаваподелий всегда будут нужны. Или какой-нибудь ГО, но там для полного углубления придётся письку отрезать.
Точно, я совсем забыл про флаттер
Всё смотришь, смотришь, ждёшь пока код сам себя напишет?
Когда пишешь копию чего то,надолго не хватает.
Но свое полная хрень
> Но свое полная хрень
Не пизди. Даже если сделал говно, все равно на душе приятно, что сделано твоими руками. Еще приятнее от мысли, что каких-то месяц-два назад ты и это говно не смог бы написать.
Так я и так это написал,что свое полное уг
>Когда пишешь свое, то есть интерес.
А у меня нету. Меня преследует мысль, что я обкакаюсь и сделаю обязательно плохо, что надо сначала опытного кого-то посмотреть как он это делает.
По нажатии на кнопку "добавить товар в корзину" я в колбеке создаю новый html элемент и добавляю его в список.
Так вот этот товар/новый элемент <li нужно удалить при необходимости.
Но навесить вне функции я обработчик на новый элемент не могу, так как весь код уже считан.
У меня есть два варианта как решить эту проблему, но я знаю, что есть человеческое решение проблемы.
Кстати гугл, стек и прочие молчат, лол.
На киберфоруме задай
Тайпскрипт это просто типизированный ЖС, там нихуя сверх этого нет. Дарт это другой язык для других задач
Смысл тайпскрипта в том, чтобы добавлять типы во время разработки для уменьшения количества ошибок и для большего удобства, я к примеру сейчас вообще не могу писать на обычном жсе, это просто моча говна без типов, просто ебанный хаос. В рантайме никакого ТСа нет, он существует только на этапе разработки
да лучше уж питон чем пыха))
а так тут анончики меня флаттером заинтриговали, я давно ищу что-то годное под мобилку.
ибо как мне кажется за этим будущее (мое)
>Blazor WebAssembly apps run client-side in the browser on a WebAssembly-based .NET runtime
MS смогли и гугл сможет
Что ты блядь несешь вообще шиз? Ты сам понимаешь? Нахватался умных слов и думаешь тут за СВОЕГО сойдешь, вкатун? Иди нахй
Дарт не обязывает знать жс, тайпскрипт же без жс не нужен.
Ты в двух постах запутался? Для тебя какие слова умными то оказались? С тобой я бы не хотел за своего сойти
Ливни с треда, долбоеб
И чё, что они в разных модулях? CSS-модули в первую очередь - инструмент для удобства разработки, знание каскадности он не заменит.
Им дали инкапсуляцию стилей в ShadowRoot, они продолжают заниматься кодогенерацией и еблей с каскадами.
я тот анон с вопросом с картинкой пару постов выше, там про обработчики событий
Теневой корень - костыль для пердоликов, не могущих в каскад.
У тебя там innerHTML, getAttribute(), setAttribute() и конкатенация строк заместо интерполяции. Учи интерфейсы ДОМа, чтобы не быть жиквериком.
В общем, есть 12 элементов по 2 строки каждый и массив из почти тысячи массивов, в каждом из которых так же по 2 строки.
Вот эти 2 строки и 12 элементов нужно сравнить с 2 строками из тысячи+ массивов и выполнить функцию при двойном совпадении
Сейчас я делаю так:
forEach для этих 12 элементов, беру из каждого элемента 1 и 2 строку (они находятся в разных блоках) и прохожу циклом for по тысяче массивов, проверяя в if 1 строка === строка под индексом 0 && 2 строка === строка под индексом 1.
Это работает, но это пиздец как медленно. А между тем, количество массивов будет только расти. Надо полагать я делаю что-то не правильно.
Учитывая, что в 1к+ массивов первые строки часто повторяются, а вторые как правило нет. Но для true обе должны совпадать строкам из 12 элементов.
Можно ли сделать быстрее или только базу данных использовать?
В моем проекте уже используется IndexedDB, были мысли на время условной "сессии" выгружать этот большой массив в базу и по индексу быстро искать, а потом либо удалять его, либо дополнять новыми данными, которые хранятся в файле Юзерскрипта. Но звучит это как костыль.
>В общем, есть 12 элементов по 2 строки каждый
Мапа/словарь ты хотел сказать?
>и массив из почти тысячи массивов, в каждом из которых так же по 2 строки
Тоже звучит как мапа/словарь.
>forEach для этих 12 элементов, беру из каждого элемента 1 и 2 строку (они находятся в разных блоках) и прохожу циклом for по тысяче массивов, проверяя в if 1 строка === строка под индексом 0 && 2 строка === строка под индексом 1.
Да ты же ебанутый, если тебе нужно найти подмножество, то итерация всегда должна идти против большего множества.
>Учитывая, что в 1к+ массивов первые строки часто повторяются, а вторые как правило нет. Но для true обе должны совпадать строкам из 12 элементов.
Судя по описанию ты сравниваешь заголовки/параметры хттп запроса. Ну так блять и храни их в Headers/URLSearchParams, в них куча идиоматичных методов встроено для всевозможных итераций и сравнений.
>В моем проекте уже используется IndexedDB, были мысли на время условной "сессии" выгружать этот большой массив в базу и по индексу быстро искать, а потом либо удалять его, либо дополнять новыми данными, которые хранятся в файле Юзерскрипта. Но звучит это как костыль.
Какая блять база банных? Ты в простые структуры данных не можешь, а хочешь натянуть БД.
Ну вообще я уже натянул БД, только для других целей.
>Мапа/словарь
Что ты имеешь ввиду? У меня натурально 12 элементов на странице, в каждом еще по 2 элемента, в которых по 1 строке.
И массив в файле из 1к+ массивов [Строка 1, Строка 2].
Первая строка часто повторяется как на странице, так и в массивах, но во второй хранится URL. В общем, первых строк совпадающих будет гарантированно много, а вот УРЛов одинаковых как правило всего несколько.
Но мне нужно только двойное совпадение 2 строк на странице с массивами в файле, чтобы выполнить действия над элементом на странице.
>итерация всегда должна идти против большего множества
В смысле, сперва проходить циклом по 1к+ массивов, а потом для каждого искать совпадения в элементах (другом массиве), а не наоборот?
Но что это принципиально меняет? Кроме возможности раньше найти совпадения и выполнить действия. Это же ускорит процесс только время от времени, когда совпадения не в конце файла. Разве нет?
Я же сразу обозначил, что нуб. Учусь на боевых так сказать, исключительно для себя.
>Что ты имеешь ввиду?
В том, что у тебя явное разделение на ключ/значение, то есть архетипичный юзкейс для мап и словарей.
Конкретно мапы есть в самом языке:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
Можешь тут прочитать про словарики:
https://livecodestream.dev/post/everything-you-should-know-about-javascript-dictionaries/
>Но что это принципиально меняет?
В том, что ты пробегаешься по жирному массиву один раз, а не 12. Плюс если писать итерацию через for...of, то можно прервать её при нахождении всех ключей, а не по достижении конца итерации.
>явное разделение на ключ/значение
Ну по сути да, нужно сопоставить ключи и значения, если есть двойное совпадение, выбрать соответствующий элемент на стр. Ключей может штук 10, а значения это разные УРЛ
>мап и словарей
Пока хз че это. Буду курить мануалы. Я сперва подумал про Array.map(), который же по сути тоже цикл.
Я так бегло почитал пока, это разве не тоже самое? У меня же в цикле получается if проверяет соответствие по индексам массивов 0 и 1, считай те же Ключ/Значение.
Как бы логика подсказывает, что кроме циклов то ниче и не сделаешь, ведь проверять надо все, если только не менять структуру хранения, по типу как Индексы в БД, но придется типа разделять массивы на условные категории, чтобы искать только в них. В принципе, это можно сделать в коде 1 раз за сессию, не меняя сами массивы. Или это хуйня?
>по жирному массиву один раз, а не 12
Но ведь в обратном случае получается те же 12 раз на каждую итерацию жирного массива. От перемены мест слагаемых.. как говорится. Или я туплю?
Ну вот с фор оф это может и обретает смысл. Но опять же, совпадение может быть не одно и в любом из 12 элементов, но все они не могут совпадать 100%, а значит все равно нужно пройти весь массив данных.
А что если преобразовать пары в строку с разделителем и сравнивать по 1 строке, а не по 2? Мне же в любом случае нужно точное совпадение. Это будет быстрее? Логика подсказывает разницы нет.
>У меня же в цикле получается if проверяет соответствие по индексам массивов 0 и 1, считай те же Ключ/Значение.
Так я и говорю, что твои данные в виде мапы представлены. Вот только в отличие от чистых массивов у мапы есть идиоматические методы get(), set(), has(), тогда как для массива нужно городить конструкции с референсом по индексу или деструктурировать на каждый пук. Хотя если тебе в результате нужно больше одного значения на ключ, то мапа на подойдёт.
>Но ведь в обратном случае получается те же 12 раз на каждую итерацию жирного массива. От перемены мест слагаемых.. как говорится. Или я туплю?
12 раз по каждому элементу массива не одно и то же, что 12 раз по всему массиву.
>А что если преобразовать пары в строку с разделителем и сравнивать по 1 строке, а не по 2? Мне же в любом случае нужно точное совпадение. Это будет быстрее? Логика подсказывает разницы нет.
Сомневаюсь, что это будет лучше, так как тебе или придётся новый массив из этих строк создавать, или создавать по строке на каждом шаге. Но как минимум можешь поменять порядок проверки, чтобы сперва сравнивалось по значению, так как они более редкие. И если не совпадает значение, то ключ не имеет смысла сравнивать.
>>280556
Позвольте вклиниться в ваш благородный разговор. Сам являюсь начинающим, поэтому не судите строго. Мне кажется такой вот план был бы норм:
1. Перегнать список из 1к массивов в хэш-мапу (и сохранить куда-нибудь, чтобы каждый раз не гонять)
2. Используя ту же хеш-функцию хешать по очереди каждый из 12 проверяемых массивов и проверять наличие такого хэша в хэш-мапе.
В результате будем иметь православную сложность О(1).
Из i7 2600k 16gb 1333mhz ssd 500mb
До i9 12900k 32gb 4000mhz ssd 500mb
Проект в среднем раньше обновлялся от 15 до 40 секунд, теперь 1-4 секунды
Стартовал проект раньше примерно за 30сек-1.5 минуты, теперь окло 10-15 секунд
Бек билдился и стартовал примерно 2 минуты, теперь около 20 секунд.
Раньше потреблялось 15.9гб из 16, теперь около 18 и есть запас на всё остальное.
Это просто к вопросу о том, какой комп может быть нужен для перекрашивания кнопок, и насколько может всё стать быстрее при апгрейде, у меня теперь неиронично даже работа намного быстрее стала выполнятся, потому что раньше что-то крашнется на беке, тебе нужно все рестартить, и пока всё это запускается отвлечешься на что нибудь, и ужи трижды забудешь нахуй о том, что вообще там что-то делал. Потом еще обновлю ссд на м2, тоже сравню скорость, задавайте ответы.
ого, пипец я копить на такой буду))) ладно хоть видюха не нужна пока
Чел, пчел, шмель...
Чтобы найти работу и зарабатывать этим деньги на жизнь.
А это зачем? UI очень хорошо собирается с помощью обычной верстки, такой подход даже в AAA играх используется.
Спасибо, интересно.
Так ты просто поридж с клиповым мышлением. Плюс такие "удобства" ведут к нечитаемым сырцам, так как ты привыкнешь на дебаг каждого пука весь стэк поднимать, вместо того, чтобы хотя бы базовый анализ проводить.
Чево нахуй?
>Плюс такие "удобства" ведут к нечитаемым сырцам
Ты сам понял, что спизданул? Перечитай мой пост еще раз, шиз
Вообще наверное никто так не разбирается в ненужности разных дорогих штук, как нищуки, которые никогда этого себе не купят, очень похоже на твой случай.
Да, я вместо того, чтобы запускать и обновлять билд в 10 раз быстрее должен делать базовый анализ. Очень полезный совет, жаль я его до покупки не услышал, какая-то рандомная шиза стекломойного долбоёба
Нихуя пориджа припекло, пиздуй перезапускать стэк, стэк сам не перезапустится. Не забудь ещё М2 поставить, будешь заодно винду постоянно (и быстро) перезапускать.
>Вообще наверное никто так не разбирается в ненужности разных дорогих штук, как нищуки, которые никогда этого себе не купят, очень похоже на твой случай.
Ещё себя сразу в богачи записал, охуеть просто. У тебя типичное оправдание потреблядской покупки, вон даже таймеры замерил и запостил в этом треде, хотя для этого есть отдельная доска (и конечно же ни слова о запускаемом стэке).
>Да, я вместо того, чтобы запускать и обновлять билд в 10 раз быстрее должен делать базовый анализ. Очень полезный совет, жаль я его до покупки не услышал, какая-то рандомная шиза стекломойного долбоёба
Что и требовалось доказать, ты уже свой пост забыл, в котором говорилось про дебаг проблем, в котором ты же и плакался, что дебажить забываешь, так как за 2 минуты у тебя ужё всё вылетает из головы.
Берешь обе строки из массива, конкатенируешь, кидаешь в хэш-функцию. Кешельме бешельме - готов хэш для мапы.
Или можешь не пихать в ф-цию а сразу юзать получившуюся строку в качестве хеша.
Или можешь массив застрингифаить в JSON и использовать то что получилось в качестве хеша.
Короче, хэш можешь готовить как угодно на свой вкус, это не шибко принципиально (в случае массива из 2х строк).
>Берешь обе строки из массива, конкатенируешь, кидаешь в хэш-функцию.
В большем массиве нет гарантии уникальности конкантенации обоих элементов.
>Или можешь массив застрингифаить в JSON и использовать то что получилось в качестве хеша.
Ну да, просто ебани строчный литерал в несколько мегабайт, так все проблемы решишь.
>Короче, хэш можешь готовить как угодно на свой вкус, это не шибко принципиально (в случае массива из 2х строк).
Готовить ты его можешь как угодно, вот только без уникальных индексов в датасете будешь бибу сосать со своими хэшами.
>у мапы есть идиоматические методы get(), set(), has()
Как я понял эти методы для более сложной обработки данных, чем простое сравнение 2 строк. А то получается так, что мне сперва надо перебрать весь массив и создать Мапу (допустим это можно сделать 1 раз за сеанс), а потом опять же перебирать всю эту мапу каждый раз, как тот же массив, для поиска совпадений. В чем здесь получается профит по сравнению с тем, что есть:
// это строки
if (url === Links[1]
&& tag === Links[0])
>сперва сравнивалось по значению
Как видишь, у меня изначально так и сделано.
Или в Map, при переборке по условному Key1 в ключах Tag, все остальные ключи не итерируются обработчиком вообще?
>12 раз не одно и то же
Вот тут можно поподробней? Что-то я не въеду в фундамент.
Ведь с точки зрения математики - 1000 строк по 12 раз каждая будет тоже самое, что 12 раз по 1000
Нет, я понимаю, что в некоторых ситуациях результат можно раньше получить в 1 случае, но мне в любом случае будет необходимо дождаться прохода по всему массиву, потому что совпадение может быть в конце.
И в моем случае, если совпадение 1 элемента будет условно в 995 массиве, то результат я получу раньше, чем в твоем, и уже выполню с ним действия, чем буду ждать пока по каждому массиву итератор пройдется 12 раз.
Ты ток не подумай, что это доеб. Я реально хочу понять как делать правильно, а не чтоб работало.
>>280576
>хеш-функцию
Ну я видимо больше новичок, чем ты. Не знаком с этими методами. Но как я примерно представляю, это что-то типа уникального числового идентификатора, в котором будет зашифрована строка?
Звучит разумно, но как то громоздко что-ли для такой с виду простой задачи.
Так то при условии всего около 10 уникальных тегов, не проще 1 раз за сеанс создавать отдельные массивы на каждый тег из общего массива и дальше проходить только по нужным при совпадении тега (ключа)?
Большой массив то не меняется на протяжении сеанса, динамические только эти 12 элементов.
>у мапы есть идиоматические методы get(), set(), has()
Как я понял эти методы для более сложной обработки данных, чем простое сравнение 2 строк. А то получается так, что мне сперва надо перебрать весь массив и создать Мапу (допустим это можно сделать 1 раз за сеанс), а потом опять же перебирать всю эту мапу каждый раз, как тот же массив, для поиска совпадений. В чем здесь получается профит по сравнению с тем, что есть:
// это строки
if (url === Links[1]
&& tag === Links[0])
>сперва сравнивалось по значению
Как видишь, у меня изначально так и сделано.
Или в Map, при переборке по условному Key1 в ключах Tag, все остальные ключи не итерируются обработчиком вообще?
>12 раз не одно и то же
Вот тут можно поподробней? Что-то я не въеду в фундамент.
Ведь с точки зрения математики - 1000 строк по 12 раз каждая будет тоже самое, что 12 раз по 1000
Нет, я понимаю, что в некоторых ситуациях результат можно раньше получить в 1 случае, но мне в любом случае будет необходимо дождаться прохода по всему массиву, потому что совпадение может быть в конце.
И в моем случае, если совпадение 1 элемента будет условно в 995 массиве, то результат я получу раньше, чем в твоем, и уже выполню с ним действия, чем буду ждать пока по каждому массиву итератор пройдется 12 раз.
Ты ток не подумай, что это доеб. Я реально хочу понять как делать правильно, а не чтоб работало.
>>280576
>хеш-функцию
Ну я видимо больше новичок, чем ты. Не знаком с этими методами. Но как я примерно представляю, это что-то типа уникального числового идентификатора, в котором будет зашифрована строка?
Звучит разумно, но как то громоздко что-ли для такой с виду простой задачи.
Так то при условии всего около 10 уникальных тегов, не проще 1 раз за сеанс создавать отдельные массивы на каждый тег из общего массива и дальше проходить только по нужным при совпадении тега (ключа)?
Большой массив то не меняется на протяжении сеанса, динамические только эти 12 элементов.
>В большем массиве нет гарантии уникальности конкантенации обоих элементов.
Да и пофигу. При создании мапы дубли просто уберутся.
>Ну да, просто ебани строчный литерал в несколько мегабайт, так все проблемы решишь.
Я в душе не ебу что у него за строки. Если длинные - то, ясен хрен, мозги надо включить и почикать их хэшем. Если короткие - то можно и не ебаться.
>Готовить ты его можешь как угодно, вот только без уникальных индексов в датасете будешь бибу сосать со своими хэшами.
В чем будет заключаться суть сасания? Не улавливаю.
Хэш функция делает из любой залупы уникальный идентификатор "разумной" длины.
Например, скармливаешь ей iso-образ на 10Гб и она превращает его в набор из, допустим, 64 символов: asdkfjaslkdjfaosie334304skdjf.
Наверняка ты сталкивался на торрентах со всякими sha256, md5 и прочими. Вот это они, хэш функции. Можешь загуглить подробнее в яндексах я разрешаю.
Тебе нужно уяснить одну простую концепцию, которая отличает массивы от объектов (или хэш-мап):
- Проверить наличие элемента в массиве можно ТОЛЬКО перебором. И это долго.
- Проверить наличие элемента в объекте (мапе) можно МГНОВЕННО. Если знаешь его ключ. Типа ты не перебираешь все элементы и сравниваешь, а просто проверяешь:
of (obj[любое дерьмо]) { значит элемент в объекте есть }
Ключами в данном случае и работают вычисленные хэши.
Типа:
const твойМассив = ['хуй', 'пизда']
const хэшТвоегоМассива = hash(твойМассив) // пусть вернет строку 'хуйпизда'
const типаМапа = { } // на самом деле обычный объект, чтобы не выебываться
const твойМассивМассивовГдеИскать = [['огурцы','залупа'],['хуй', 'пизда']...]
// заполняем мапу (потом сохраняешь ее куда-нибудь, чтобы снова не ебаться) как угодно проходя по массиву
твойМассивМассивовГдеИскать.forEach( e => {
const хэшТекущегоМассива = hash(e);
типаМапа[хэшТекущегоМассива] = e;
});
// И все собсна!
>Как я понял эти методы для более сложной обработки данных, чем простое сравнение 2 строк.
С таким редукционизмом можно любую проблему описать как сравнение строк. И ты сравниваешь 2 массива, которые очень заёбисто сравнивать из всех непримитивных типов. То, что ты там строки сравниваешь внутри них - вторично.
>а потом опять же перебирать всю эту мапу каждый раз, как тот же массив, для поиска совпадений
Мапа не перебирается "как массив", она перебирается как хэштаблица. И в отличие от базовых объектов, в пустой мапе нет встроенных ключей, наследованных от конструкторов.
>Ведь с точки зрения математики - 1000 строк по 12 раз каждая будет тоже самое, что 12 раз по 1000
Причём здесь математика? Мы в треде про программирование, если что.
>Большой массив то не меняется на протяжении сеанса, динамические только эти 12 элементов.
Так это ещё хуже, так как в худшем случае ты будешь пробегать 12 раз по массиву при изменении этих элементов.
>>281016
>Я в душе не ебу что у него за строки. Если длинные - то, ясен хрен, мозги надо включить и почикать их хэшем. Если короткие - то можно и не ебаться.
Вторая строка - урл. И там непонятно, имеет ли индекс пары значение или нет.
>Вторая строка - урл. И там непонятно, имеет ли индекс пары значение или нет.
Ты додумываешь условия задачи, так можно рассуждать бесконечно. В исходном условии - дан массив из двух строк. Требуется проверить наличие такого массива в другом (баааальшом) массиве таких массивов. Все остальное - детали, которые будут влиять на нюансы, но не на суть решения.
>Мапа не перебирается "как массив"
Значит как раз то, что мне нужно. Спасиб за объяснение, буду изучать подробно.
>в худшем случае
Не, там как раз при каждом переходе на след страницу надо пробегать 12 раз. Поэтому я и запарился на счет скорости.
Тем более, что массив может раздуться до нескольких тыс массивов.
Там щас как бы всего чуть больше сотни массивов и в консоли я уже вижу 1680 итераций. Дальше то пиздец будет явно.
>>281060
>додумываешь
Не, он прав, я это описывал. В массивах по 2 строки - короткий текст[0] и ссылка[1].
Но я согласен, что сути не меняет. Задача то избежать повторной итерации всего массива.
class User {
constructor(name) {
// вызывает сеттер
this.name = name;
}
get name() {
return this._name;
}
set name(value) {
this._name = value; //префикс
}
}
let user = new User("Иван");
Код будет работать, так как там есть префиксы. Но если их убрать, например:
this.name = value;
Получим ошибку:
RangeError: Maximum call stack size exceeded
at User.set name [as name]
Но почему мы не можем писать сеттеры и геттеры без префиксов, если писали, что
>Защищённые свойства обычно начинаются с префикса _.
>Это не синтаксис языка: есть хорошо известное соглашение между программистами, что такие свойства и методы не должны быть доступны извне.
Тогда почему без префикса вызывается ошибка?
class User {
constructor(name) {
// вызывает сеттер
this.name = name;
}
get name() {
return this._name;
}
set name(value) {
this._name = value; //префикс
}
}
let user = new User("Иван");
Код будет работать, так как там есть префиксы. Но если их убрать, например:
this.name = value;
Получим ошибку:
RangeError: Maximum call stack size exceeded
at User.set name [as name]
Но почему мы не можем писать сеттеры и геттеры без префиксов, если писали, что
>Защищённые свойства обычно начинаются с префикса _.
>Это не синтаксис языка: есть хорошо известное соглашение между программистами, что такие свойства и методы не должны быть доступны извне.
Тогда почему без префикса вызывается ошибка?
Я хз, не разбирался с этим, но выглядит как будто ты вызываешь сеттер в сеттере, получается хуита.
Бля спасибо что напомнил.
Надо сделать фото где на колени с поднятым кулаком стою и добавить he/him на линкдине.
лол, префикс это не часть языка, у тебя _name и name это совершенно разные переменные
можешь почитать про классы ещё, про оператор new, про ООП в js , а также data properties, accessor properties. Если будет name, то при создании объекта через new ты получишь бесконечную рекурсию, поэтому ошибка, ты привысил максимальное колличество функций, которые можно вызвать. Только я немного сам не понял, почему получается рекурсия, если при создании объекта присваивается имя, а гет и сет просто висят, они же не вызываются, видимо вызываются при вызове конструктора?
Так у тебя при this.name = name; в конструкторе вызывается сеттер, который и уходит в рекурсию.
ну всё я запутался, при попытке задать свойство name отрабатывает set name, нахуя он уходит в рекурсию
При попытке задать свойство name отрабатывает set name, который пытается задать свойство name, при это отрабатывает set name... нутыпонел
Так у symbol { enumerable : true } только вот циклы его не видят.
https://jsfiddle.net/ycdexr6t/
>к такому символу нельзя уже никак обратиться
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols
я имел в виду передать как аргумент куда-то именно этот символ
Нету никакого "соглашения между программистами", это перекатуны с питона/жабы своё говно тащат в язык. Просто запомни, что в жаваскрипте нету никаких "приватных" членов и прочих хуёв и отталкивайся от этого.
Не ну можно же через замыкание приватные члены ебануть
Доступно только в относительно свежих браузерах, а в ноде ещё не разобрались с модулями.
Про 90% рынка будешь кабанчику рассказывать, когда на его старом айфоне твоё поделие не будет работать.
Я и работаю на кабанчика, мань. Все у всех работает уже несколько лет как. Старый айфоны внезапно обновляются без твоего разрешения. Но ты, конечно, об этом не знаешь.
>Я и работаю на кабанчика, мань.
О, типичный свидетель ООП, тюремный слэнг прилагается.
>Старый айфоны внезапно обновляются без твоего разрешения.
Да ещё и пиздобол.
А получить можно только по ебалу.
https://github.com/sudheerj/javascript-interview-questions
Чел, если ты не можешь задать конкретный вопрос, то гугли сам.
Именно "готовиться" по этому списку, имхо, не очень.
Он неплох для самопроверки - типа что ты можешь ответить по каждому вопросу. Но сами ответы не являются хорошим подготовительным материалом. Тут лучше почитать кантора и мдн.
Сколько значение перменной весит, такой и объём.
Попытался сделать if внутри useEffect, откуда вызывается extraReducer проводящий fetch запрос - нихуя не работает. мне прям внутри самого редюсера запрашивать инфу из другого редюсера и проверять ее? что то мне подсказывает что оно тогда не будет нихуя обновляться
Гайды все по redux какие то слишком простые, в залупу не лезут, так что как такие вещи правильно делать я из них не узнал, поэтому надеюсь на вас
А всзял бы Рязань, было бы еще быстрее
Это далеко не самый простой.
Анончики, вас увольняни с галер?
Омежка что ли? Че такими терминами кидаешься, че самый умный?
Я не понимаю, вот вам не лень блять словами описывать, что код должен делать вместо песочницы и более простого описания.
Все равно, что на собеседовании код маркером на доске писать.
Вопрос в первую очередь касается передачи "ChangeAutorizationStatus" во внешнюю функцию которая запрос делает и в результате успеха меняет стейт на true. Это же хуевая практика? И на сколько хуевая?
>словами лучше понимаю чем когда чужой код кидают
Обосрешься с подливой на первом собесе где тебя попросят это сделать. Посмотри чужой код на гитхабе, почитай, собери у себя, поиграйся, посмотри как и что работает, после вопросов быть не должно. То что ты там под видосики пишешь - кол в вакууме.
Понимаю, но вот чужой код пока не научился читать нормально, теряюсь что где и куда передается. Вот если беру код и делаю зарисовки что откуда и куда тогда проще.
А по вопросу моему что скажешь?
Сама по себе функция, которая отвечает за запрос, не должна быть сделана так, что она ожидает именно функцию изменения стейта в качестве аргумента. Она должна ожидать функцию вида (response) => void в качестве аргумента и всё. Будет эта функцию изменять стейт или нет - не важно.
То есть в теории ты можешь прокинуть сеттер стейта в качестве аргумента, если хочешь ответ с сервера сразу в стейт поставить, в этом ничего криминального нет. Главное, чтобы функция, которая делает запрос на сервер, была достаточно абстрактной, чтобы она не знала о том, откуда она вызывается, а коллбэк может быть любым.
На пальцах:
const makeRequest = (successCallback) => axios.get('/checkAuth').then(response => successCallback(response.data))
//в компоненте можно хоть так хоть так её вызывать
makeRequest(ChangeAuthorizationStatus) или makeRequest(res => ChangeAuthorizationStatus(res))
не называй функции с большой буквы, ёбаный рот, так только конструктор-функции называют
Благодарю!
да вот в гугле чет толковых задач не нахожу, все хуйня какая-то по типу "сверстать форму с 3 кнопками при клике на каждую отдельный роут показывает разный текст и картинки" хотелось бы ченить по сложнее(не сильно я новенький во всем этом) аля, отправить запрос "сюда", принятые данные в таблицу с возможностью фильтрации. И подобное
>Вот делаю я из redux reducer`а fetch
Мы вам перезвоним. Запросы делаются из middleware. Гугли redux-thunk. Из него есть доступ ко всему стейту.
включает, но он там как то подругому работает, типа они еще слой абстракции добавили по верх него
мне интересно именно как делать fetch по условию(я уверен что я могу это сделать, мне интересно именно как нормальные люди его делают, чтобы не изобретать велосипед)
Когда создаю новый чистый проект и пишу код, функции и все остальное подсвечивается как и прежде. А в этом проекте цвета не отображаются, что за косяк?
Это вебшторм
Ниебу как в вебшторме но обычно в редакторах можно выбрать язык подсветки, возможно в этом проекте не js выбран
Редакс-тулкита в большинстве проектов не будет, так что на твоем месте я бы осваивал редакс в его первозданном виде.
Почему не совпадают внешний и внутренний консоль логи? Фактическому состоянию чекбокса соответствует внешний консоль лог. Почему внутренний пиздит?
Уже понял, спасибо за подсказку где это искать
я щас для себя пишу проектик, обычный redux я уже трогал немного и убедился в том, что это кал
надеюсь мне по сабжу кто-то ответит
тулкит писечка, я не знаю каким надо быть говноедом, писать на ванильном редаксе, это же просто страдания
Потому что сетстейт работает асинхронно.
Вот такое у меня. Захожу в другой проект, настройки те же, но там код с подсветкой
setTimeout(myObj.logInfo, 0) <- теряем контекст myObj, this становится Window(logInfo возвращает this)
Решается либо через bind: bindLog = myObj.logInfo.bind(myObj) <- это понятно
Но ещё решается так: setTimeout(() => myCat.logInfo(), 0)
Почему тут помогает стрелочная, если она берёт контекст из окружения, здесь она откуда берёт контекст?
Один чел написал, что "set timeout callback on its own closure", я понимаю что это значит, но где можно почитать про это поведение?
Напиши промисовую обёртку над таймаутом и перестань жрать говно.
Катись в онлифанс
Катись в онлифанс
Ты скозал?
Куда съебал маржин-райт?
Никуда не съебывал, на месте.
Как же бомбит, когда выходит какой-нибудь видос по JS или React и уже в первый день тысячи и десятки тысяч просмотров. Мне в такие моменты кажется, что если я у соседа-алкаша этажои ниже спрошу про JS и окажется что он тоже вкатывается, и племянник его.
Как вы вообще эти видосы ебаные смотрите, ни код скопировать нихуя, то что уместилось бы на одной страничке с пояснениями растягивается на полчаса экранного времени с ненужным пиздежом, это же неэффективно.
Зумерки могут каждые пять сек прерываться на просмотр инстаграмчиков тикточеков и прочей хуйни, пока бухтельщик бухтит на фоне. С чтением так не получается.
вот тебе и бизнес идея
А потом идут сюда спрашивать как объявить переменную!. Надо записать скринкаст по объявлению переменной со смехуечками на час, стотыщ просмотров гарантированы
В настоящих программах это как-то используется? И если да, то нахуя?
Используется. В основном, в библиотечном коде.
Чтобы для тебя либа или фреймворк выглядели как кнопка "сделать заебись", спрятав все подводные камни от глаз твоей хрупонькой душонки породив этим другие подводные камни, но для их разрешения можно просто прочитать доку либы, а не строить камнеобъезжательные велосипеды самому.
>В настоящих программах это как-то используется?
Дефайн "настоящаа программа". Код ноды достаточно настояще?
https://github.com/nodejs/node/blob/c17dcb32533aa007dfbf507d22c28ef3c7c11c29/lib/internal/fs/utils.js#L42
https://github.com/nodejs/node/blob/cd298fc8ffa1ffeb09351f8a46ed099553267ffd/lib/internal/per_context/primordials.js
В примордиалах так и вообще весь букет из карирований, контекстов и абстрактных фабрик.
А что ты ожидаешь от них? Как и любые курсы - это в первую очередь наёб гоев на даллары. И после этих курсов тебя в яндекс всё равно не возьмут, так как у них есть бесконечный поток студентов, готовых за дошик работать.
Но если ты совсем овощь, то и практикум сойдёт.
>охуеваю от этих доменов, сервисов, секвелайзов и тайп скрипта
Если ты будучи фронтом охуеваешь от всего этого, то не быть тебе фулстаком.
Всегда проходил мимо сатанинского треда, а тут чёрт меня дёрнул картинку в оппосте раскрыть.
> Отношение == не обладает транзитивностью
Пезда. Пойду-ка я отседа...
Потому что == работает с приведением типов, если сравниваешь разные типы. Если хочешь нормальное сравнение, то есть === (и !==), он не приводит типы, так что все штуки в оппосте будут неравны.
А почему не наоборот? Почему когнитивно более сложная операция не названа изъёбистым "===", а более простая "=="?
Хз, но подозреваю что "так исторически сложилось", когда-то решили что == это хорошая идея, а потом обратная совместимость, все дела.
Так она более простая, так как тебе интерпетатор автоматом строку в число проинтерпетирует и наоборот, тогда как со строгим равенством надо ебаться с приведением типов.
Да, очень простая операция. Просто запоминаешь как все типы преобразуются и ебаться вообще не надо. А если забыл, то сюрприз будет, ведь все любят сюрпризы.
>так как тебе интерпетатор автоматом строку в число проинтерпетирует и наоборот
>как со строгим равенством надо ебаться с приведением типов
Ебаться как раз не надо, когда нужно приводишь, когде не нужно не приводишь.
а по-моему это заебись, когда язык за тебя и типы определяет, и память очищает)
Ничего он не определяет, а на похуе строчку к числу приведет и чуть что пукнув с ошибкой свалиться
Ну для человека как раз проще забить на типы и поэтому чаще используется == , что не так?)
>что не так?)
Всё так. Для тебя. А я пойду в пезду, как намеревался с самого начала.
Можно объяснить этому челу что такое "контроль сложности" за мой счёт? С меня как всегда нихуя.
У тебя на фронте воркеров нет? Одна из разновидностей как раз сервис воркером называется. Лайтовая версия пердолинга с БД и обёртками над ней есть в виде IndexedDB. У него как раз вырвиглазное API, так что для комфортного использования им нужно сперва написать свою обёртку на промисах, то бишь сервис для работы с ним. Плюс воркеры тоже могут его дёргать, так что если сильно хочется, то типичные бэкопроблемы с кэшем, многопокпоком и очередями можно прямо на фронт завезти.
Не понимаю с утра ваших речевых оборотов. иди своей дорогой сталкер
Ну ты и сравнил нормальный бэк где дохуище безнеслогикой с индексдб и обёрткой над ней, ну свой пет проект с бэком на firebase я могу и сейчас захуярить, поглядывая в доку
Более того, все айдишники, объявленные в разметке, автоматом добавляются как переменные в глобальный скоуп с ссылкой на элементы. Так что можно не заморачиваться со всякими методами итерации по ДОМу и просто вызывать условный `zalupa_input` когда надо.
>Ну ты и сравнил нормальный бэк где дохуище безнеслогикой
Хочешь сказать у тебя на фронте даже бизнес-логики нет? Ты там шаблоны чтоли верстаешь?
>ну свой пет проект с бэком на firebase я могу и сейчас захуярить, поглядывая в доку
Но ведь не захуярил. Так что пока ты пиздобол-верстальщик.
Сейчас после каждого await стоит
>if (this.isFinished) return;
Как лучше это реализовать?
// элементы
const in_1 = document.getElementById("input_1");
const in_2 = document.getElementById("input_2");
const btn = document.getElementById("btn");
// функция проверки и вкл/выкл кнопки
const check = () => btn.disabled =
in_1.value.length < 3 || in_2.value.length < 3;
// проверять при изменении инпутов
in_1.addEventListener('input', check);
in_2.addEventListener('input', check);
// проверить разок в самом начале
check();
Но у меня формы с инпутами динамические, создаются после выполнения функции и у каджого инпута не может быть id, так как они одинаковые. Как это можно сделать по другому? пробовал вешать на каждый инпут onkeyup, но также не сработало.
пробовал написать вот такую функцию, вешать addEvent, но в консоли выдается ошибка TypeError: Cannot read properties of null (reading 'addEventListener')
function check () {
if (inputCelsius.value.length < 0) {
buttonCalculateAverage.removeAttribute('disabled')
} else {
console.log('нет')
}
}
Как это решается?
// элементы
const in_1 = document.getElementById("input_1");
const in_2 = document.getElementById("input_2");
const btn = document.getElementById("btn");
// функция проверки и вкл/выкл кнопки
const check = () => btn.disabled =
in_1.value.length < 3 || in_2.value.length < 3;
// проверять при изменении инпутов
in_1.addEventListener('input', check);
in_2.addEventListener('input', check);
// проверить разок в самом начале
check();
Но у меня формы с инпутами динамические, создаются после выполнения функции и у каджого инпута не может быть id, так как они одинаковые. Как это можно сделать по другому? пробовал вешать на каждый инпут onkeyup, но также не сработало.
пробовал написать вот такую функцию, вешать addEvent, но в консоли выдается ошибка TypeError: Cannot read properties of null (reading 'addEventListener')
function check () {
if (inputCelsius.value.length < 0) {
buttonCalculateAverage.removeAttribute('disabled')
} else {
console.log('нет')
}
}
Как это решается?
Если элемент динамический, на body например вешаешь onkeyup, а там уже смотришь target события, если это нужный инпут, делаешь проверку.
Просто набери событиенейм в гугле и пройди по первой ссылке, обычно developer.mozilla.org или w3schools
В спеке, очевидно же. А потом городить проверки на реализации, когда какая-нибудь сафари мобайл своим путём идёт.
https://codepen.io/AsvaId/pen/rNYVpBY
Сделал вот такое, но выдается ошибка
Cannot read properties of undefined (reading 'length')
Где я обосрался?
Чел, ты даже codepen не смог оформить, нах ты весь код страницы вставил
а ошибок в консоли я не увидел кстати. ну или хз куда там жать
Во-первых, querySelectorAll('type-celsius') - точку забыл, у тебя тега type-celsius нет. Я и с классом таким элемента не нашел. Ты уверен, что длина этого псевдомассива может теоретически быть -1 или -2?
Во-вторых, у тебя эта ошибка лезет даже когда фаренгейт делаешь.
Куда мне до тебя - властителя indexdb, повелителя воркеров. Я кстати охуенный сервис написал вот - http://localhost:3000 можешь глянуть
Ну вот допустим я хотел узнать при каком ивенте возникает сабмит формы. На MDN я этого вообще не нашел, в описании onKeyDown ничего про это нету. Загуглить на всяких стаковерфлоу конечно можно, но не охото васянские решения читать, хочется понять как это работает, чтобы не споткнуться на каких-то нюансах.
>>283166
Про какие именно спеки речь? Это типо еще от браузера отличаться может? Ну и хуйня...
>при каком ивенте возникает сабмит формы
черным по белому же
https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event
> The submit event fires when the user clicks a submit button (<button> or <input type="submit">) or presses Enter
Но фулстеком ты всё равно не станешь.
А что это за ивент такой "press enter"? Я знаю только onKeyDown, onKeyUp и onkeyPress.
Так а я именно про нажатие Enter. В каком ивенте мне надо делать preventDefault, чтобы форма не сабмитилась при нажатии Enter? Сейчас то я разобрался методом проб, но как в будущем искать дефолтное поведение ивентов и что они вызывают?
В гугле вбиваешь свои великолепные вопросы.
>В каком ивенте мне надо делать preventDefault, чтобы форма не сабмитилась при нажатии
https://stackoverflow.com/questions/11235622/jquery-disable-form-submit-on-enter
этого всего в спеках не опишешь чел. форма по дефолту сабмитится если юзер нажал enter в текстовом input'е. соответственно вешаешь обработчик на keypress и если enter . при этом надо проверить что это не textarea тк там enter это перевод строки.
Чтобы именно предотвратить submit если он был вызван enter'ом а не кликом на кнопку например
Это дефолтное поведение, зачем его предотвратить. preventDefault нужен что бы не отправить форму постом по action
https://codepen.io/AsvaId/pen/rNYVpBY
Итак, чуть изменил, после ввода в инпут кнопка начала активироваться, но она активируется, даже если в инпуте нажать бекспейс и когда инпут снова пустой она не деактивируется
Как я понял здесь проблема в неправильно прописанном условии
input.value != 0 так как это условие не работает, при любом нажатии клавиши функция запускается, а не при наличии цифр в инпут
А нахуй тебе не сходить? вместо спасибо за прошлый совет, приперся "продолжаем помогать мне писать мое говно". сам пиши
При клике у тебя срабатывает button:focus:active и button:focus
Их между собой никак разделить не получится
при клике у тебя срабатывает button:focus:active
при просто фокусе только button:focus
button:focus:not(:active) - стили для фокуса без active напр. borderc-lor:green
button:focus:active - стили для фокуса с active, напр. border-color:red
>button:focus:not(:active) - стили для фокуса без active напр. borderc-lor:green
Нет, это так не работает, любой клик сразу же хуярит дополнительно еще и фокус стили
>при клике у тебя срабатывает button:focus:active
>при просто фокусе только button:focus
button:focus будет работать при любом из этих действий. Нот актив не работает, я не знаю почему
Угласны? Сознали?
Можно такое же ревью кода двача?
Шиз называющий локальные переменные глобальными. Очередной дилетант, который решил, что он шарит. Гной современности.
Кому-от не похуй? Задача сделана? Таски закрыты? Пошел нахуй.
А, не дочитал извенити
Я тоже делал,но забил на вебсокетах
Иди подмойся маня . или кидай песочницу а не пизди я не телепат ниебу что у тебя там кнопка
https://codepen.io/bitard999/pen/vYWGYbd
https://spb.hh.ru/vacancy/50995230?from=vacancy_search_list&query=React-разработчик&hhtmFrom=vacancy_search_list
>Подмылся, у тебя если курсор уже наведён на элемент, то ты разницы не заметишь, но за старания спасибо
Че? табом переключаешь - зеленый. мышкой кликаешь - красный. стили разные епт.
>Опять же, если ты нажал на элемент, и убрал с него курсор, то он так и останется в состоянии active
Не active, а focus, потому что прикинь кликая на кнопку ты переводишь фокус на нее. и когда увел мышь она останется в фокусе. но когда кликаешь стиля фокуса нет
Смотри на гитхабе код популярных проектов, вот он хороший.
Если б было так. Много где нужно умение писать юнит тесты, уметь в тайпскрипт, знать вебсокеты и вебворкеры, а тут нихуя не надо, реакт, редакс, и умение писать SPA, все. Гит, вебпак и нпм это вообще пиздец требование.
>Не active, а focus, потому что прикинь кликая на кнопку ты переводишь фокус на нее. и когда увел мышь она останется в фокусе. но когда кликаешь стиля фокуса нет
Блядь, стиль от фокуса остается и после того, как ты кликнул по кнопке, а мне нужен стиль фокуса только для таба
Чел, я ссылку приложил и в после написал про 100к. Там кстати "ОТ" 100к
>Если б было так. Много где нужно умение писать юнит тесты, уметь в тайпскрипт, знать вебсокеты и вебворкеры, а тут нихуя не надо, реакт, редакс, и умение писать SPA, все. Гит, вебпак и нпм это вообще пиздец требование.
Да везде такие требования, ТС это уже давно стандарт, гиты вебкпаки и прочее говно уже даже за условие не считается, можешь и не знать, всё равно работать с этим будешь
Остаётся потому что кликом ты включаешь фокус, это логично. Можешь на mouseup какой-нибудь blur повесить
>на mouseup какой-нибудь blur
Я проблему уже решил, и потому и спрашивал, может кто знает какой-то крутой подход для этого, чтобы в пару строк и без костылей. Но вышло всё равно с костылями.
>потому что кликом ты включаешь фокус, это логично
Ну я об этом в изначальном посте писал, че ты блядь мне объясняешь
за бомбёж извени
Изначально ты спрашивал про разделение стилей, и это легко сделать, а то что после клика остается фокус было уже другой частью вопроса и вот это решается "костылем" только непонятно почему ты это называешь костылем. Потому что это нормальное поведение а костыль это то что ты хочешь сделать.
>это нормальное поведение
К сожалению нормальное поведение это то, что твой UX-ер считается нормальным поведением
Спасибо, я это тоже нагугливал, там переделывать нужно дохуя, в общем всё, забейте, задача уже решена
Буквально вкатуси с перезвоним треда.
резюме двачера
Почему у многих есть такая категория, как "Начало карьеры", а у меня нет?
На сабмите вешаешь его, дебич.
Чувак придумал простую игру и заработал
мне пичот
гейммейкеры одни из самых верных слуг сатаны
представьте сколько людей тратят туеву хучу времени на дроч бесполезной хуйни. прогресс дал людям долгую но пустую и бессмысленную жизнь которую они проводят за играми которые буквально называюся таймкиллерами, чтобы путь от пизды до могилки не казался таким скучненьким
https://store.steampowered.com/app/1794680/Vampire_Survivors/
Лол, вы тут выше оказывается тоже игру обсуждали. Ну лет через 10 под ЖСОС будем сидеть еще
если он не проходит то мне нужно повесить на Input проперти invalid, в ином случае valid.
Так какой функцией вешается проперти на компонент? я понимаю что можно тупа бутстраповский класс повесить, но это как то не круто, как пропертиз то менять? в доках реакта не могу найти, нашел какой то setProps но я не понял из стандартной библиотеки он или нет
В кредитах в игре написано
>Захожу в кредитсы, а она нахуй написана на электроне и ЖСе
Я тебе даже больше скажу - клиент стима тоже написан на электроне и реакте (фейсбучном фреймворке ЖСа). Так что играя в это поделие ты как минимум два инстанса хрома открываешь.
>топ 20 игра в стиме написана на ёбанном джаваскрипте.
Электрон только запускает инстанс хрома, движок которого написан на крестах. Всё графно один хуй обрабатывается на видимокарте через крестовые/сишные либы. Может там придётся дёргать ноду, чтобы почитать/записать файл настроек в файловой системе. Заместо БД там скорее всего SQLite, который никакого отношения к ЖС не имеет. В итоге ЖС там исключительно для запуска html с канвасом, ну может ещё и либу для работы с канвасом запускает.
Так я и бет, никаких проблем
>>284025
Ну понятно что оно работает на видеокарте, как и 3Д графика в браузерах, просто я все равно немного прихуел с такого поворота. Очевидно, что хром это не лучший игровой движок, не лучше ли игру на нормальном игровом движке запускать? По твоей логике любой стек для чего угодно можно использовать, ведь это всё равно в итоге компилится в бинарный код. Если уж приводить пример с десктоп ЖС, то наверное самый лучший пример это VSCODE.
>Очевидно, что хром это не лучший игровой движок, не лучше ли игру на нормальном игровом движке запускать?
Дефайн "нормальный". Для пиксельного говна хуюнити не нужен.
>хром это не лучший игровой движок
Blink - это лучший Layout Engine. А имея заебательский Layout Engine ты можешь написать, что-угодно.
Но нахрена мне эта папка, если все файлы нужны в основной папке без всяких App. Как используя команду "vue create" создается проект в основной папке, без создания дополнительной. Работаю в вебшторме.
буду благодарен за ответы
ну так и создай vue проект через сам webstorm, а не командой npm, командой он вроде всегда подпапку создает
Спасибо, нашел! А через вебшторм можно выбирать всякие тупескрипт и прочие? все, что можно выбрать при прописывании команды? сейчас попробовал через сам шторм, не увидел вариантов выбора
Дебил, указывая "название" ты указываешь путь относительно папки, в которой вызываешь команду. А теперь пиздуй читать, что такое урлы.
Призывая достигаторов и фантазеров.
Так туда мидлов в основном берут, да и зачем туда идти?
ПУШ ТЕБЕ В ЕБАЛО, НАААААААААААААААААААААААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!
Ну если ты активно будешь выдрачивать все их требования и активно навязывать свою кандидатуру, могут и взять. Так иногда людей в компании берут, даже если они с 3-4 раза только проходят, правда если ты так выдрочишься, то тебе может и не обязательно в яндекс идти. В сбер я думаю требования пониже могут быть, у них дохера всякой разработки есть, не везде наверное нужны сеньеры с 20 летним опытом
В больших проектах разное юзают
> на больших и сложных проектах юзают Ангуляр, а не тот же Реакт
Не почему, используют Реакт, я собесился в одну компанию, где они раньше использовали ангуляр, и теперь переходят не реакт, на мой вопрос почему, ответили что-то в духе "пук-среньк", из чего я делаю вывод, что просто рыночек порешал. И тенденция сейчас такая, что реакт отвоёвывает всё больше пространства. Будет больше ангуляра, перекачусь в ангуляр, мне похуй, че вы мне сделаете?
Встречал по работе большие проекты на обоих фреймворках. Правда когда работал на Ангуляре был еще джуном и уже слабо помню, но его архитектура с сервисами и rxjs распологает писать объектно ориентированный код. Поэтому в него можно удачно вписать всякие стандартные паттерны и сложные архитектуры. Проект был реально большой, но даже я тогда довольно выстро в нем осваивался, благодаря солидной архитектуре и ооп.
На реакте же все на функциональных компонентах и бесконечных хуках, ну и менеджер состояний типо редакса имеет свои проблемы и скелится не то чтобы прям очень удобно. Но я не уверен, что проект максимально компетентно был сделан. Может можно и получше изъебнуться как-то с реактом.
Зато для средних/маленьких проектов реакт как по мне подходит ГОРАЗДО лучше, чисто нахуярить на нем парочку страниц можно очень быстро.
А переходят на него наверно чисто потому что реакт популярней=проще найти работника.
Но если бы мне пришлось на каком-нибудь гигантском проекте работать, я бы скорее предпочел ангуляр с нормальным лидом.
https://jsfiddle.net/2rjma0yw/
Так он у тебя и занимает всю высотю родительского блока, у которого высота в 100% вьюпорта.
у свойства .item еще убери bg-lime
Открываешь в отладчике браузера вкладку Network, в ней жмешь таб "Img". В етой вкладке буду показаны все запросы к кортинкам, кортинки которые не удалось загрузить будут подсвечены красным. Щелкаеш на запрос, в информации о запросе будет полный путь до картинки по которому браузер попыталсе ее запросить. Смотриш етот путь, сравниваеш с тем где реально лежат файлы в твоей ветке которая деплоится на gh pages. Пытаешся понять причину несоответствия. Есть ли етот файл в ветке с gh pages, правильно ли к нему формируется урл из разметки и т.д.
У ангуляра было три года форы и он заходил как готовый фреймворк и использовал концепты, знакомые бекендерам, которых можно было переманивать.
Реакт появился позже и как библиотека визуализации, вокруг которой надо самому собирать приложение.
Со временем три года перестали быть значимым разрывом, плюс их преимущество сгладил переход AngularJS -> Angular 2. Реакт оброс сообществом, инфраструктурой и рецептами по написанию приложений любого уровня сложности.
В сухом остатке, реакт не требует особого интеллекта, можно посадить любую обезьяну и она особо не накосячит, а если накосячит то ето легко исправляется. Ангуляр имеет чуть менее пологую кривую обучения, при етом не предоставляя никаких плюшек которые бы ето оправдывали. Ето кмк сыграло ключевую роль в популярности.
>можно посадить любую обезьяну и она особо не накосячит
<AppContext.Provder value={{appState, setAppState}}> // для удобства :)
Есть ветки мастер, дев и taskBranch.
Если мы ведем ветку с мастера на taskBranch.
git checkout -b taskBranch
То мы получаем все данные из мастера. После завершения таски пушу в ремоут. А теперь неясность. Как обновлять данные?
Как понимаю просто в taskBranch низя запулить дев(а там все общие правки).
Как быть? Нужно обновить taskBranch без пушинья всех коммитов из дева.
Какие блять данные обьявлять?
я понимаю, что var в цикле делает переменную глобальной, а let локальной. но я всё ещё не понимаю, почему если вар, то этот код логает 3 3 3, а через лет он логает 0 1 2 как и должен
Потому что с var твой код эквивалентен
var i;
for (i = 0; i <3; i++)
функция log вызывается когда, когда уже вишли из цикла и i равна 3
А с let ты к каждой итерации создаешь новую переменную c текущим значением i
Вызывается всегда после цикла
но в случае с var она печатает глобальную переменную i у которой значение 3
а в случае в let печатает значение локальной для итерации переменной i, которое потом не меняется
1280x720, 0:14
Следовательно делаю правки в деве, а потом черри-пиком беру оттуда правки? Меня из-за истории не пидорнут?
>Команда git cherry-pick берёт изменения, вносимые одним коммитом, и пытается повторно применить их в виде нового коммита в текущей ветке.
Ок, понял. Правки в деве, потом их в ветку.
А я такого выбора не имею, у меня есть приказ и я его выполню в любом случае.
Звиняйте за возможно борзый вопрос, но скиньте плез какой-нибудь сайт с готовыми решениями на React, дабы не городить велосипеды.
Сам как считаешь, что более вероятно, что это css - ФОРМАЛИЗОВАННЫЙ DSL - работает рандомно, или что это ты необучаемая ленивая мартыха чтаешь документацию рандомно?
Долго еще будешь с магическим мышлением носиться и считать, что программы что-то делают случайно?
Например?
а от меня чё ты хочешь
Залезь в доку и почитай. Там есть раздел про изменения в v6
Поздравляю, теперь к говенному коду у тебя добавятся еще и говенные типы, в два раза больше говна разгребать - в два раза больше работы.
Я не против, если ide сама будет определять типы, но пока она так не умеет, а я не хочу запариваться запоминанием что возвращает функция: строку или число, буду типизировать.
Ты даже про деструктуризации и методы массивов не знаешь, какой тебе тайпскрипт?
Не общайся с опущенным, он уже успел побрататься с оттипизированными.
Привет! Кто-нибудь собирается пойти на профессию в htmlacademy? Могу помочь купить с приличной скидкой. Например, стандартная профа "Фронтенд-разработчик" будет стоить 99к, вместо 159к
@umnyash
export const zapros = zaprosFactory();
function zaprosFactory() {
let zaprosRezultat;
return async (...params) => {
if (zaprosRezultat) {
return zaprosRezultat
}
const response = await fetch(...params)
zaprosRezultat = await response.json()
return zaprosRezultat
}
}
Настолько жирно, что даже шутить устал.
Есть рефы. Но селекторы тебе в большинстве случаев нахуй не нужны, так как атрибуты можно менять условно в зависимости от состояния.
>Который по факту верстальщик бомжара.
Там единственная надежда - это то, что стажировку дают.
>Который по факту верстальщик бомжара.
Там пиздец меня раздражает, что там по плану месяц изучают вёрстку реакт компонентов. Это же жопа какая-то. Если уж учить реакт, так полностью.
И короче, вот они так хуячат. Да.
А хтмлакадемия за сотни нефти под 200к предлагают просто научить верстать Барбершоп и верстать просто реакт компоненты без тайпскрипта, без редакса, без нихуя.
>вёрстку реакт компонентов
Там же вроде просто про Styled components рассказывают. А в курсе по реакту уже нормальный реакт, с тайпскриптом, юнит-тестами и т.д.
>хтмлакадемия за сотни нефти под 200к предлагают просто научить верстать Барбершоп
Во-первых за 135к, во-вторых вон чел кинул вариант за 100к купить. 200к это хуйня из-под коня, там 2 года длительность, а в обычном формате 1 год.
С тайпскриптом, тестами и редаксом это другая профессия, реакт разработчик, где учат верстке 1 месяц всего в начале, чтобы ты банально представлял, что такое дом. Там полный фарш, конечно, ну и даже это стоит 150к.
Я считаю, что та профессия с вёрсткой она какая-то странная и нежизнеспособная в 2к22, очень жесткой обман наивных гречневых.
Беру materialUI и окрашиваю его в те цвета, в которые он себя окрасит.
>это другая профессия
И в ней тоже жопа, что вёрстки нету. Обрезанная она какая-то. Нежизнеспособная.
То есть не просто азов вёрстки, а тех джвух интенсивов по вёрстке.
Ну по факту верстку можно и самостоятельно освоить или же там же купить асинхронную профессию фронта, она стоит как интенсив, но зато все модули и никто не подгоняет плюс можно выкинуть ненужное. Жалко год назад этого не было, я бы сразу 2 профы взял и в ус не дул.
Ну вообще всё полностью можно самостоятельно освоить, не платя им ничего, послать их нахуй
Я искал, походу они всё устаревшее нахуй эти книги. Тут или по доке клепать или какие-то видеокурсы искать. Я на Udemy искал, там курсы по ноде какие-то рыхлые, даже если они длинной 60-70 часов, всё равно не покидает ощущение, что там Индус пройдется по самым базовым верхам, скипнет для упрощения все подводные камни и усложнения, и ты останешься с хуем к носу.
Нет
vue норм тема, всё збсь
Отшлифуй знания вью, и ты сразу нужен будешь
Никто не отрицает, что можно. Да и не заставляет никто.
Очень сильно. Хуй найдешь работу.
А зная один фреймворк, перекатиться на другой очень сложно, придется заново верстку и жс изучать, там же все по-другому.
Я не вкатыш. Просто резюме опубликовал, хочу работу сменить - а 95% херочек, которые мне пишут, хотят React разраба.
Как хочешь. Можешь бэм применять. Но вообще это не модно. Модно, чтоб css-in-js было.
сам в кодинге полный ноль (не кройте хуями, плз), кто-то может объяснить, возможно ли написать что-нибудь подобное для телеграма: https://habr.com/ru/post/439218/
если возможно, то сколько это времени и сил отнимет? возможно ли новичку такое сотворить?
>Нужен ли бэм
Нет. Да и вообще у меня есть мнение, что если человек на полном серьезе может посмотреть на названия классов, написанные в бэм стиле и его первым вопросом не будет "что это за ебаное дерьмо, и как сделать по-человечески?", то у него явно легкая степень умственной отсталости.
Москва не сразу строилась!
Брать любой препроцессор и пользоваться его средствами для нестинга селекторов и модификаторов, уж не 2005 год на дворе, чтобы пытаться это все в названия классов запихнуть.
Распечатай и положи на стол, в понедельник проверю. Свободен, шнырь.
ща читаю eloquent javascript
в главе с наследование столкнулся с таким кодом
class Matrix {
constructor(width, height, element = (x, y) => undefined) {
this.width = width;
this.height = height;
this.content = [];
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++) {
this.content[y width + x] = element(x, y);
}
}
}
get(x, y) {
return this.content[y this.width + x];
}
set(x, y, value) {
this.content[y * this.width + x] = value;
}
}
class SymmetricMatrix extends Matrix {
constructor(size, element = (x, y) => undefined) {
super(size, size, (x, y) => {
if (x < y) return element(y, x);
else return element(x, y);
});
}
set(x, y, value) {
super.set(x, y, value);
if (x != y) {
super.set(y, x, value);
}
}
}
let matrix = new SymmetricMatrix(3, (x, y) => `${x},${y}`);
console.log(matrix.get(2, 3));
console.log(matrix)
Вопрос как тут работает вот этот код ? Что в нем происходит ?
constructor(size, element = (x, y) => undefined) {
super(size, size, (x, y) => {
if (x < y) return element(y, x);
else return element(x, y);
});
}
понятно что мы наследуемся от класса Matrix но что происходит после super для меня загадка. И да - супер-класс генерит матрицу, наследуемый симметричную матрицу.
ща читаю eloquent javascript
в главе с наследование столкнулся с таким кодом
class Matrix {
constructor(width, height, element = (x, y) => undefined) {
this.width = width;
this.height = height;
this.content = [];
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++) {
this.content[y width + x] = element(x, y);
}
}
}
get(x, y) {
return this.content[y this.width + x];
}
set(x, y, value) {
this.content[y * this.width + x] = value;
}
}
class SymmetricMatrix extends Matrix {
constructor(size, element = (x, y) => undefined) {
super(size, size, (x, y) => {
if (x < y) return element(y, x);
else return element(x, y);
});
}
set(x, y, value) {
super.set(x, y, value);
if (x != y) {
super.set(y, x, value);
}
}
}
let matrix = new SymmetricMatrix(3, (x, y) => `${x},${y}`);
console.log(matrix.get(2, 3));
console.log(matrix)
Вопрос как тут работает вот этот код ? Что в нем происходит ?
constructor(size, element = (x, y) => undefined) {
super(size, size, (x, y) => {
if (x < y) return element(y, x);
else return element(x, y);
});
}
понятно что мы наследуемся от класса Matrix но что происходит после super для меня загадка. И да - супер-класс генерит матрицу, наследуемый симметричную матрицу.
Codepen, JSFiddle или из шапки треда песочница.
Нечитаемо
Вот пиздец, ебаная макака, неужели это настолько тяжело - сделать возможность постинга кода хотя бы моноширинным текстом с сохранением отступов? Хуй с ней с подсветкой уже.
Передаем в родительский конструкто два аргумента и функцию, в родителе функция потом вызывается с иксом и игреком. Че непонятного?
const Component = () => {
return(
<button onClick={example(params)}
)
}
я могу так переменные вне реакт компонента писать? В чем подводные?
благодарю анон, именно что-то типа такой графики и надо было.
Приду домой с работы и попробую разобраться
смутило так же описание кода, например вот это
To ensure the matrix is symmetrical, the constructor wraps the element function to swap the coordinates for values below the diagonal.
где там оборачивается функция и зачем ?
>но проблема в том что тень должен быть не прямоугольным
Я про box-shadow. Когда мы делаем border-radius, тень тоже под него подстраивается. Тут должно быть так же, тень подстраивается под срезанные углы.
А тень как сделатт?
Вызываю location в консоль. Плюс есть страница для несовпадающих маршрутов, через path=" * ". Location показывает путь и вообще все так, будто страница должна отрисоваться.
clip-path: polygon()
То что обведено зеленым это обертка над функцией element, которая еще и замыкает эту функцию.
Для тени используй фильт drop-shadow
Я уже ведро слёз пустил из-за того что не могу нормально сверстать адаптивную сетку с превьюшками с подписями, ебанный врот, неужели мне и тут рефами реакта обмазывать и считать жаваскриптом?
По обеим.
const sqSideSize = Math.min(height, width)
return <Box width={sqSideSize} height={sqSideSize}>{child}</Box>
если на человеческий.
Тебе просто пердолинг на бэке совсем мозг съел. Зачем тебе блять попиксельно высчитывать размер квадрата, когда достаточно, чтобы его стороны были равны и он не вылазил за пределы родителя? Твоя проблема в том, что ты сразу какое-то генерик решение пытаешься хуйнуть, когда тебе надо карточку с брэйкпонтами сверстать.
> Зачем тебе блять попиксельно высчитывать размер квадрата
Пчел, мне это как раз не надо. Я псевдокодом просто написал что хочу получить - вмещать сраный квадрат (и содержимое в его пределах) в не менее сраного родителя, который может быть хоть вертикально вытянутым, хоть горизонтально вытянутым.
Что такое карточка и брейкпоинты?
У флексов ещё надо добавить { flex-basis: var(--local-card-size) }
https://tproger.ru/translations/javascript-this-keyword/
Звучит неплохо, но ведь value --local-card-size родителя нужно прописывать отдельно, правильно? Я не вижу здесь и не нахожу в гугле его автоматический расчет.
И ещё переменные вроде вебвью не поддерживаются, а это важно.
Нахуй читать, бери пиши. Практикой и поставленными целями куда лучше и быстрей доходит.
>Я не вижу здесь и не нахожу в гугле его автоматический расчет.
Автоматический расчёт от чего?
Вот от этого.
У меня таблица на матрешке из флексов, содержимое меняется кодом только при малых размерах главного родителя, в остальных случаях содержимое неизменно и его размеры должны меняться пропорционально размерам главного родителя. Короче, чтобы на девайсах с разным dpi была одна и та же верстка, пропорционально и плавно меняющая размеры при изменении размеров вьюпорта.
>содержимое меняется кодом только при малых размерах главного родителя
А "малый размер родителя" от чего зависит?
Гитхаб
как ты узнал?
Я напрягся, но не растерялся и согласился. Открыли мне сайт с прохождением на время там было 20 минут. Ну короче чё вы думаете, я набрал 106 баллов всего. Как итог - мы вам перезвоним.
Такие дела. до сих пор грустно от этого собеса.
У реакта нет DI, у ангуляра он есть. Без DI писать крупные проекты можно только основываясь на костылях. Также ангуляр это фреймворк, а не библиотека как реакт, что подразумевает следование принципам этого фреймворка, общую структуру и правила, в реакте каждый пляшет как он привык и хочет, общей дисциплины нет. Следовательно, если компания хочет быстро выкатывать фичи и при этом никак не влиять на выкатывание будущих, а также иметь меньшую зависимость от сотрудников которые в компании 2+ года, то она выбирает ангуляр. Если компании нужно выкатить чтото asap и ей похуй на всё остальное и будущее проекта в целом, то она выбирает реакт, либо если продукт компании быстро сверстанный на реакте выстрелил, то она тоже его выбирает, просто потому что это говно уже сложно переписать на ангуляр не потратив уйму времени и денег.
В целом, если ты уверен в своем продукте, у тебя есть клиенты и ты не хочешь их потерять, то твой выбор это реакт.
Если ты не уверен выстрелит или нет, у тебя неь клиентов, то твой выбор это реакт.
Хуя как фантазёра порвало, на ангуляр просто в своё время сектанты своих кабанчиков подбивали переходить, попутно рассказывая мифы про настоящее ООП. А евангелическое сектантство как раз в тырпрайзе заходит. Поэтому и получился в итоге тырпрайз-онли пласт легаси-говна на ангуляре, а не из-за DI.
Про какое легаси ты лепечешь, болезный? Я сейчас работаю на проекте, который писался на 8 ангуляре, сейчас перешли на 12. Код чист как слеза младенца, новые сотрудники в шоке от того как просто вкатиться на новый проект, и от того как легко имплементятся новые фичи. Почему так? Потому что архитектура построена грамотно, уже на всё есть подходящая группа сервисов, всё зависит от абстракций, а не деталей, как и положено в хорошем коде. В то время как ракто макака в поте рвёт волосы на жопе от незнания того, как он будет пробрасывать тысячу пропсов через тысячу компонентов, ангулярогосподин инжектит нужные сервисы и заканчивает писать тесты.
То что addTask возвращает то что нужно отрендерить, конечно пиздец. Ну и модель крторой ты таски добавляешь ничего кроме смеха не вызывает.
От ширины еще более главного родителя. А уже тот может или заполнить собой весь вьюпорт или же получить сбоку допблок, вёрстка адаптивная и просто так отталкиваться от вьюпорта не выйдет да и не хочу, хочу не зависеть от кривости мизинца правой ноги.
>>287343
Возможно, но
>Is there a better way which doesn't use CSS properties and calculations?
Вебвью нужен.
В общем я понял, адаптивный квадрат сделать с простым наследованием размеров родителя то ещё веселье.
Я вкатун, увидел твой пост, интересно было смогу ли я прочесть статью по ссылке. Внатуре спать хочется. Я пока читал, ушел на 1 час вздремнуть. Только сейчас дочитал. Ну, неплохая статья. Я вкачуся, вот увидити.
А чем добавлять? Пытаюсь первый раз MVC применить и что-то пока не особо понятно, что куда.
Просто это хуево написаная статья. Поэтому ее трудно читать. Не потому что тема сложная, а потому что написано через жопу.
Но беда в том, что хороших статей (как и всего остального хорошего) всегда меньше, чем такой вот каши. Поэтому да, иногда приходится жрать, что нашел.
Забей хуй. Если с порога такие неадекватные предложения, то на работе вообще был бы пиздец. Нахуй такое надо. Айкью тест может показать только одно - какой еблан человек, который предлагает пройти айкью тест.
Скинь этот сайт
Со временем научитесь на такие идиотские предложения отвечать в духе - невопрос, но сначала я должен убедиться, что ваш iq соответсвующий, так что давайте сначала вы.
Толстота
Я как-то на собесе тест на логику проходил. Но он был настолько простым, что видимо был введен чтоб совсем даунов отсеивать. Про айкью на собесах первый раз вижу. Зачем вообще веб-макаке iq?
xss?
function someFunc(c) {
console.log(typeof c);
}
console.log(someFunc([0, 1, 0, 0, 1, 0]));
А что по твоему должно быть?
Потому что массивы тоже object, и чтобы понять что это все-таки массивы, нужно еще поприседать.
npm i is-array
типа array = [321, 654, 987] превратить в [123, 456, 789]
через .then работает через раз(иногда getPlaylist присылает плейлисты с еще не удаленным плейлистом), понимаю, что надо как то через async await, но не понимаю как конкретно это реализовать
round log10321 = 2
321 / 100 = 3,21 floor = 3
3,21 - 3 = 0,21 10 = 2,1 floor = 2
2,1 - 2 = 0,1 10 = 1
1 100 = 100
2 10 = 20
3 * 10 = 1
100 + 20 + 1 = 121
Остальные числа по аналогии
ну мне для задачки. тесты прошло и похуй
async и await это абстракция над then, проблема в том, что ответ на удаление не даёт гарантий на то что запрос плейлиста даст тебе актуальный результат. И этот запрос тебе нужно делать только при подключении, потом ты просто обновляешь стейт в соответствии с операциями добавления и удаления.
>потом ты просто обновляешь стейт в соответствии с операциями добавления и удаления
так и сделал в итоге
>я эту хуйню даже прочитать не могу
А это потому что ебаная макака не может сюда добавить какой-нибудь аналог тега <pre>, так что макаба съела звездочки и сделала курсив.
У меня два затупа:
1. Почему в обычной анонимной cb функции this имеет значение объекта, на котором произошло событие? Ведь, по идее, ему неоткуда там взяться.
2. Почему при использовании стрелочной функции this имеет значение глобального объекта? Ведь, по идее, он должен хватать внешний контекст, т.е. тот this, который в функции addEventListener. А она, по идее, запускается с контекстом объекта btn.
Как же так получается?
я тоже путаюсь жоско, тыщу раз прочитал уже все статьи про this, походу никто не понимает это на 100%
Потому что у стрелочных функций нет this, они используют тот this, который у места где они вызваны, а ты это вызываешь там, где this это window.
Сеньоры, объясните, вы этот this вне классов всяких используете вообще? А то выглядит как пиздец и не совсем понятно нахуя.
>пишешь бэк
>архитектишь бд
>адаптируешь сложные алгоритмы используя комбинаторику
>не можешь сверстать ничего сложнее кнопки с синим бэкграундом и транзишином при хавере
Ебало имеджинировали?
Типичный скуфобэкендер
на месте мамки, яб тебя выгнал из дома
Мне очень кратко донесли это одной фразой.
При стрелочной функции контекст формируется во время объявления, при декларативном - во время вызова.
Соответственно, контекст во время объявления стрелки нигде, т.к. кнопка не нажата, она просто объявлена и все, вот ее контекст и является глобальным.
Первый же вариант формирует контекст именно когда ты вызываешь его.
Если надо контекст в стрелке, делаешь bind
Да, это понятно, что у стрелок нету this и они берут его из внешнего окружения.
Но я не понимаю, почему у нее во внешнем окружении this=window. Ведь она передается как колбэк в метод объекта - разве в этом случае ее внешнее окружение не будет методом, в которую она передается? А метод, вызываемый через . вроде как должен иметь this равным объекту слева от точки.
>>288367
Да, конечно, можно все получить в объекте события. У меня вопрос возник на почве написания XMLHttpRequest-а.
Написал вот так:
xhr.addEventListener('load', () => console.log(this.response));
И ждал, что в this будет xhr. А там вместо этого window!
"Вот это поворот!"(с)
>>288334
Чот так написано, что я ничего не понял X_X
Поясните кто-нибудь тупому мне
>>288451
Хм... А когда объявляешь анонимную ф-цию (любую) в параметрах вызова ф-ции, разве она не считается объявленной внутри этой функции?
ну двач на пхп, рутрекер на пхп и ничё, норм работают. главное всё же это не язык
Нет не считается, потому что вот это
x.addEventListener('qwe', () => console.log(this.hui))
это то же самое, что:
const f = () => console.log(this.hui)
x.addEventListener('qwe', f)
>разве она не считается объявленной внутри этой функции?
Э, вроде считается, но раз клик не произошел, все равно контекста кроме глобального нет.
>Чот так написано, что я ничего не понял
Если передаёшь колебком обычную функцию в обработчик событий, то у неё контекст this = currentTarget, а у стрелки так не делается
Ага! Слушай, ну если так - то все встает на свои места!
Т.е. когда я пишу объявление ф-ции в параметрах вызова, она "объявляется" снаружи вызова, а не внутри. Правильно понял?
Если так, то это прямо серьезно добавляет к моему пониманию "какого хрена происходит в JS"
Да, видишь, пишут, что походу она объявляется таки снаружи! Тогда понятно, что там будет window (т.к. оно и есть "наружа"). Буду теперь знать лол
>>288495
Да, вроде почти допер. Непонятным осталось разве что одно - откуда этот this берется в обыной cb-функции. Просто bind-ится "под капотом" внутри метода?
Ну у обычного вызова функции this как правило это global object. Так что получается да, просто биндится, если я не ошибаюсь
Определённое время думал насчёт it, куда идти, что делать. Остановился на вебе.
Погуглил, почитал, что да как изучать, для чего нужно, все дела.
Собственно, вопрос:
Хватит ли 14-16 (на крайний случай 18) месяцев для "вката" и получения каких-нибудь копеек на правах джуниора при стабильном, но не слишком быстром обучении (ололо двух часов в день)?
И, если можно, кто с чего начинал ознакомление с вебом, в каком порядке удобнее изучать документацию и так далее?
Не бейте вкатуна ссаными тряпками, пожалуйста или бейте, если поможете ответом.
На завод
18 месяцев по 2 часа в день - должно хватить. Сильным джуном вряд ли станешь, но просто джуном - вполне. Дерзай.
Чистого кодинга 2 часа будет, остальное общение, сжатие кулаков и кричалки МЫ КОМАНДА!!!!!!!!
Зачем ты читаешь статьи вместо документации.
Да забей хуй, это токсичные обрыганы, которые всем подряд такое пишут ЭТА НЕ ТВАЁ ТЕБЕ НЕ СТОИТ ЭТА НЕ ТВАЙЕЕ)))))000, шли нахуй таких долбоёбов, и можешь смело считать их матерей проститутками
немоёвкатилсязагод
>какого хрена происходит в JS
Какого хрена происходит в любом яп, ты хотел сказать. Везде агрументы вычисляются перед вызовом функции, в которую они переданы.
сейчас прохожу курсы и тут есть кандидаты совсем печальные и ниче им не мешает хотя б попробовать. ну и мне кажется с полного нуля я неплохо продвинулся, могу решать задачки с кодварс 5-6 уровня, простенький лендинг сверстать, разобрался с гитом. Еще пол годика в таком режиме поебашу и можно по собесам идти, куда нибудь макакой за 500$
благодарю за поддержку анончик.
Нахуй их пушить, если они при билде создаются?
"Какого хрена..." - это я в широком смысле. Просто у меня часто в голове возникает именно этот вопрос в процессе обучения JS (когда я начинаю путаться вот в таких вещах). Другие ЯПы не учил, поэтому это не претензия именно к JS. Скорее претензия ко мне лол
не хочу рекламировать. типа хекслет, сайт с видео + задачи + ментора в течении дня можно доебывать
А какие курсоделы не цыгане по-твоему?
Любые это по факту продажа за небольшую сумму инфы структурированной, а большая часть денег платится именно за менторство.
тогда и книгоделы тоже
Разобрался, создал новую коллекцию, запихнул туда items
Не густо
Так, мой престарелый друг, давно бы пора понять, что если бы это и было возможно, то именно вы - пожилые мамины сычи из-за которых люди теперь считают что наличие софт-скилов и погромирование нечто малосовместимое и реализовали бы подобное, а не ныли как это вы мне перезвоните.
>>289103
Да я, Цукербергом мне не быть, производительность не улучшу, зато все трудяги Китая будут при работе. А то сидят тут выдумывают пок пок надо 2 и 2 сложить и на 2 умножить правильно, что бы погромистом стать.
> Так, мой престарелый друг, давно бы пора понять, что если бы это и было возможно, то именно вы - пожилые мамины сычи из-за которых люди теперь считают что наличие софт-скилов и погромирование нечто малосовместимое и реализовали бы подобное, а не ныли как это вы мне перезвоните.
Чел, понятность текста - 3 из 10. Пришлось перечитывать и я не уверен, что понял смысл до конца.
мимо
Человек, неспособный придумать себе пет-проект, не станет программистом никогда.
Как нода тогда в консольку пердолится?
Только сейчас решился википедию открыть? Сочувствую. Умудряться тормозить в эпоху, когда не надо прикладывать никаких усилий для доступа к знаниям, это наверное тяжело.
Реализация ≠ спецификация. Обсер спекодебила номер два.
Год назад полуркал редакторы текста, графики и звука, поработал на бирже копирайтеров и понял что это такое дно, что лучше уж капчевать
Сейчас луркаю уже второй курс по программированию, но понимаю что чтобы стать программистом мне нужно будет года три работать за еду, а у меня жена и ипотека. Либо вкатываться, и после работы пиздовать на вторую работу, а я ее не нашел
В принципе на жилье и еду денег хватает, а вот на приличный автомобиль и море каждый год нет, так что лишняя копеечка бы не помешала
И работать как? Ну чисто теоретически и я могу зазубрить ответы на вопросы и попасть на позицию джуна. Дальше-то чего, я ж нихуя не умею
Без задней мысли
А команде нужен такой долбоеб, чтоб еще и обучался с 0 на ходу? Я же не тяночка с сиськами-карамелька для глаз
А жена кем работает?
блять извините как я посмел ответить на вопрос
Так ты уже программист, ЧПУ это же про программирование.
Понял, огромное спасибо. А так далается ли обычно или могут доебаться проверяющие код, что прописываю стайл внутри тега?(ведь это устаревший метод) хотя навернео до всего можно доебаться. Спасибо еще раз
Пиздец проблема, создать файл с одной строкой.
что бы получать респонс красиво без колбеков и говна
Легаси на классовых кто-то должен поддерживать.
>>289393
Нужно прописывать, чтобы любом компе сделать npm i и работать. Если без флага установить пакет, он установится, но в зависимости не попадет.
>>289427
Так же зачем классы, если можно ебаться с прототипами, зачем реакт, если все можно на ванильном js писать.
>Нужно прописывать, чтобы любом компе сделать npm i и работать. Если без флага установить пакет, он установится, но в зависимости не попадет.
Пердед, ты из какого года пишешь?
Есть, всякие сайты-анкеты, дневнички, тесты "какое ты животное" и прочее говно из нулевых и начала десятых.
Сейчас конечно если такое где-то сделать, тимлид хуем по губам проведет.
мимо пиарщик жетбрейнс
Если я ооп знаю и понял синтаксис жс , плюс то что наследование тут не типичное, а смесь прототипов и классического наследования, плюс типы данных понял и т.д. Надо ли мне углубляться или можно уже переходить к DOM и прочему? Уж слишком мне лень перечитывать то что 1000 раз было изучено с других ЯП, с небольшими поправками. Или будут дрочить всякие нюансы на собесах?
Ну добавь отдельную папку backgrounds в папку img и оттуда подтягивай. Может у тебя будет 20 фонов для разных страничек, и изменять в случае чего удобно будет. Старый выкинешь нахуй, новый так же подпишешь и все.
Да, ты шиз.
Мне посоветовали шторм еще когда я начинал вкатываться, там по сравнению с вскодом только эммет в css не такой удобный.
Пройди тест на learn.javascript
Если соснешь - надо углубляться.
Если по красоте ответишь - можно попробовать обойтись.
Знать нюансы - полезно. Но устроиться, кмк, можно и без них. Просто контора будет неоч и будешь часто лажать.
/^\/b|d|int|test\/?$/
да, я очень оригинальный и решил попытаться написать движок для борды
Я хочу, чтобы она реагировала на, допустим, "/b" или "/b/", но она реагирует на любой дальнейший ввод, например "/bqwerty" или "/testtttt". Знак доллара ведь должен означать конец строки, почему он не работает?
Нашел. Вместо pl и pr пишется ps и pe (типа паддинг старт и паддинг энд)
Типичный пользователь бутстрапа.
Я даже не представляю, какие типы предоставляет сам React, что об этом можно почитать?
Читая объявления интерфейсов.
Одновременно. Первый день HTML + CSS, второй JS, третий React, и так по кругу.
Из сервиса
SQL запрос от клиента получать.
в котором разложил все по полочкам https://www.youtube.com/watch?v=3m0kXW3V02c
можете не тратится на дорогостоящие курсы
Редактор не нужен
Спасибо, Петян, годный контент.
Бота разве что браузерного. 2d игру можно конечно на мобилку через ionic, но на мобилке пока еще чаще всего на жаве игре пишут или на свифте.
ПЕРЕКАТ >>2290355 (OP)
ПЕРЕКАТ >>2290355 (OP)
ПЕРЕКАТ >>2290355 (OP)
ПЕРЕКАТ >>2290355 (OP)
ПЕРЕКАТ >>2290355 (OP)
ПЕРЕКАТ >>2290355 (OP)
ПЕРЕКАТ >>2290355 (OP)
Лучше котлин. Да, способны. Жс вообще на это тоже способен, но с изъебствами. Что ты сделать-то хочешь?
Например с матаном у меня такого не было. Если ты понимаешь, то можешь решить, не понимаешь - не можешь
мимо нюфаг
Ребят посоветуйте пожалуйста ресурс где могут помочь по теме создания телеграм ботов на NodeJS. Может есть специализированный чат какой-нибудь.
А еще лучше подробный гайд где разбирали бы взаимодействие JS с api телеграма, разные ивенты и особенно асинхронность, как правильно организовывать код. Все уроки которые нашел (наверняка плохо искал) сводятся к 10 минутному описанию самых базовых очевидных вещей.
Видел хорошие уроки на питоне, но не теряю надежду что на JS тоже есть.
var o = { x: 5, y: 3 };
var { x: a, y: b } = o;
console.log(a, b); // a = 5, b = 3
Первый раз увидел за 5 лет в жс.
>Первый раз увидел за 5 лет
Чел...
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Вы видите копию треда, сохраненную 5 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.