Задать вопрос
  • Что такое "Место для ссылки на вашу облачную функцию"?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Спросите у знакомого
    Ответ написан
    Комментировать
  • Как подсоединить обработчики к данным которые я вывожу из localstorage?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Ответ на поставленный вопрос «Почему?» — потому, что из LocalStorage вытаскиваете HTML разметку и вставляете её, но слушатели событий к элементам не привязаны. Только при создании новой задачи у вас срабатывает b1.addEventListener('click', () => {

    Стоит разделять данные и их отображение.
    У todo приложения данные – это массив задач. Данные сохраняются в LS. Задача, минимально, это строка текста.
    Текстовое поле, кнопка для удаления — это всё уже мишура, отображение. Генерится динамически из данных.

    Три штуки в этом приложении:
    1. массив с задачами (задача просто строка, что там ввел юзер)
    2. отрисовка интерфейса из массива
    3. изменение массива через действия в интерфейсе
    И работают они по кругу )

    Что-то изменили – изменился массив – отрисовалось с нуля заново всё, как при первой загрузке.
    Так не накосячите со слушателями событий, в том числе.
    Но придётся усложнить данные: не просто строки, ещё и состояние выполнено/не_выполнено.

    К примеру, можно так держать данные:
    const tasks = [
      {text: "Заварить кофе", isDone: false},
      {text: "Пожарить яичницу", isDone: false},
      {text: "продрать глаза", isDone: true},
    ];
    Сохранять в LS сериализованный в JSON этот массив:
    const itemKey = 'tasks';
    localStorage.setItem(itemKey, JSON.stringify(tasks));
    Ответ написан
    Комментировать
  • Как получить элемент из объекта по значению?

    v3shin
    @v3shin
    Веб-шаман
    Вариант 1: переформировать объект в такой вид
    let myObject = {
      ZZE: {
        key: 'ZZE',
        text: '...',
      },
    };
    // myObject['ZZE'].text


    Вариант 2: выводить данные таким способом:
    assetDescription.find(a => a.key === 'ZZE').text
    Ответ написан
    Комментировать
  • Как отсортировать элементы обьекта на основе порядка в массиве?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Примерно так

    const result = arr.map((item) => ({
       ...item,
       ...objectFromServer[item.id]
    }));


    arr - исходный отсортированный массив
    Ответ написан
    1 комментарий
  • Как в массиве с массивами найти объект у которого значение больше чем у других объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    В заголовке вопроса:

    найти объект

    В тексте:

    найти самое большое значение

    Ну и как это понимать? Сами-то в курсе, чего вам надо?

    Первое:

    const obj = arr.flat().reduce((max, n) => max?.age > n.age ? max : n, null);

    Второе:

    const val = Math.max(...arr.flat().map(n => n.age));

    Кстати, а что если максимум представлен в нескольких экземплярах? Можно получить все такие объекты:

    const objs = arr.reduce((acc, n) => (
      n.forEach(m => (
        m.age > acc[0] && (acc = [ m.age, [] ]),
        m.age === acc[0] && acc[1].push(m)
      )),
      acc
    ), [ -Infinity, [] ])[1];
    Ответ написан
    Комментировать
  • Как написать такой switcher на react?

    0xD34F
    @0xD34F Куратор тега React
    function Switch({ options, value, onChange }) {
      const highlight = useRef();
    
      useEffect(() => {
        const activeButton = highlight.current.closest('.c-switch').querySelector('.is-active');
        highlight.current.style.width = `${activeButton?.offsetWidth ?? 0}px`;
        highlight.current.style.transform = `translateX(${activeButton?.offsetLeft ?? 0}px)`;
      }, [ value ]);
    
      return (
        <div className="c-switch">
          <div className="c-switch__highlight" ref={highlight}></div>
          {options.map(n => (
            <button
              key={n.value}
              className={n.value === value ? 'is-active' : ''}
              onClick={() => onChange(n.value)}
            >{n.text}</button>
          ))}
        </div>
      );
    }

    https://jsfiddle.net/4hbkm9e8/
    Ответ написан
    3 комментария
  • Кто-нибудь может помочь реализовать смену данных пользователя самим пользователем?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Сначала дернуть из базы пользователя по юзернейму (по паролю нельзя, он хеширован)
    Если запись нашлась – хорошо, пользователь есть

    SELECT * FROM users WHERE username=:username

    Получаем объект/массив с данными пользователя
    Примерно такой:

    $user = [
      'id' => 1,
      'username' => 'vasya',
      'password' => 'длинный хеш'
    ]


    Потом проверяем старый пароль из формы, правильный ли

    password_verify($old_password, $user['hash'])

    Если прошли проверку, значит логин и пароль вбили правильно, можно менять

    Делаем хеш нового пароля

    $hash = password_hash($new_password, PASSWORD_DEFAULT);


    И закидываем в базу

    UPDATE users SET password=:hash WHERE id=$user['id']
    Ответ написан
    Комментировать
  • Как отсортировать map по числам (от большего к меньшему )?

    Aetae
    @Aetae
    Тлен
    Во-первых: если ключи у вас строки - используйте объект без прототипа (Object.create(null)) вместо Map - работа с ним на порядок быстрее.
    //upd: как верно заметил Дмитрий Беляев, в современных браузерах быстродействие Map не меньше Object.

    Во-вторых: порядок ключей в Map соответствует порядку добавления и не может быть изменен постфактум. Вам следует для сортировки получить из Map массив, отсортировать, и либо создать новый Map из оного, либо заново добавить все значения в исходный, предварительно тот очистив.
    Если ключи заранее известны, то лучше подготовить Map заранее с пустыми значениями - перезапись не меняет порядок.
    Ответ написан
    4 комментария
  • Некорректно работает удаление записей. Как исправить?

    @DimaIs
    При вызове функции delete_note происходит удаление заметки по ссылке save_note, которая в свою очередь ссылается на последнюю созданную заметку (иначе говоря, на ее ноду):
    save_note = document.createElement("div");
    save_note.className = "note";

    При первом удалении все проходит гладко, т.к. нода существует в элементе, но при повторном выполнении она уже отсутствует в дереве элементов (если, конечно, вы не создали еще одну заметку, тем самым не переопределив переменную save_note)
    Выход отсюда такой - надо для каждой новой заметки замкнуть ссылку на ее ноду в функции удаления:
    let save_note = document.createElement("div");
    save_note.className = "note";
    ..................
    function delete_note(note_node){
          section.removeChild(note_node);
    }
    delete_icon.addEventListener('click', () => { delete_note(save_note); });
    Ответ написан
    Комментировать
  • Информация для мозга во время перерывов между программированием в течение рабочего дня?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Просто нужен рабочий режим.

    Например, с 10 до 17 работаю и ничем другим не занимаюсь. До и после - что угодно, любые развлечения по желанию (можно и снова поработать, если хочется, но в рабочее время отвлекаться нельзя). Также можно выделять время не по часам, а по результату - не отвлекаться, пока задача не выполнена.

    Блокировать сайты не обязательно, просто нужно соблюдать дисциплину. Ведь в том же ютубе может быть обчающий ролик по работе или что-то подобное. Вы сами решаете, что относится к работе, а что - нет.

    Если работа не связана с постоянными ответами на звонки, то полностью откладываете смартфон. Переводите его в режим "не беспокоить". В исключениях - лишь ваши вторая половинка, мама, сын и дочка, которые могут звонить в любое время. Это значит, что смс и мессенджеры тоже заглушены. Переводить взгляд на телефон тоже запрещено. Тянуться к нему и проверять что-либо - тем более. Но если по работе, то, опять-таки, можно. Однако никаких соц. сетей, хабра и всего такого.

    В работе, особенно в творческих профессиях, таких как программирование, важна концентрация. Поэтому мелкие отвлечения, даже если они сами по себе не занимают много времени, всё же отнимают много времени от самой работы. По науке считается, что если вы отвлеклись, не доведя работу до логического конца, то из только что потраченного рабочего времени вычитается 23 минуты, они считаются потраченными впустую. После отвлечения придется повторно делать примерно то же самое, потратив эти же 23 минуты (примерно).

    Так что проводите границы между работой и отдыхом, а также между разными работами и между разными задачами в пределах одной работы, и между разными хобби в пределах отдыха. Не занимайтесь мультитаскингом, это не только не продуктивно, но и вредно для ума в целом (но это уже другая история). Делайте рабочие интервалы времени достаточно большими, чтобы "разогрев" перед работой (вникание в проблемную ситуацию) не был впустую. А как отдыхать - не так важно, выбирайте по вкусу, пробуйте всякое.
    Ответ написан
    Комментировать
  • Копирование кода?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    Мы не знаем. Возможно, вы гений, который изобрёл новые способы написания эффектов на CSS.
    Но дело может быть в использовании пре- и пост-процессоров. Одни только вендорные префиксы могут в два раза увеличить количество строк на выходе. Или в том, что в копируемом коде учтены какие-то дополнительные сценарии или кроссбраузерность. Или в том, что вы скопировали не то, что нужно было.
    Ответ написан
    Комментировать
  • Что делать если не получается писать код имея нужные знания?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    я сталкиваюсь с тем, что я не понимаю как его делать, хотя там есть все то, что я уже проходил.

    Это нормальная практика, называется она "не набита рука".

    Но, если я вижу решение того или иного задания, то я сразу же понимаю почему те или иные действия выполнены при решение.

    Всё правильно, так и пишут код и находят решения 80% программистов. Гуглят решения -> компонуют решения под свой проект -> делают рефакторинг кода(если требуется) -> получают деньги. PS: не все крутые дядьки сеньоры-помидоры отличаются от вас мозгами, просто они уже вложили от 2000 до 10 000 часов на изучения материала, на который вы потратили только 100-200 часов. В этом вся разница.

    но как разобраться со своей проблемой я не знаю.

    Очень просто. Решать типовые(и не типовые) задачи(от самых простых, до более сложных) по 5-8 часов в день, и каждый месяц делать breackpoint, анализируя пройденный путь. Если через полгода не будет результата - всё и правда плохо, и скорее всего вам нужно качать не только программирование, но и умение логически и критически мыслить, умение деструктурировать задачи на под задачи.
    Ответ написан
    5 комментариев
  • Как будет лучше новичку вникнуть в мир программирования?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Определиться с областью, в которой хочешь работать.
    2. Погуглить какие языки в этой области в основном применяются.
    3. Взять учебник по этому языку, изучить его, наваять пет-проект.
    4. Устроиться на работу.
    Ответ написан
    5 комментариев
  • Нормально ли писать лендинги без фреймворков?

    Kozack
    @Kozack
    Thinking about a11y
    Да. Поймите, что вам скорее всего оторвут руки не за то, что вы что-то не использовали, а наоборот -- использовали то, без чего можно было бы обойтись.
    Если вы не видите острой нужны в фреймворке -- не используйте
    Если вам не нужна база данных, не нужна какая-то логика на сервере -- нафиг php.
    Если у вас нет каких-то интерактивных частей в лендинге -- нафиг JS.

    Чем проще, чем легче будет проект -- тем лучше.
    Ответ написан
    Комментировать
  • Существует ли корреляция между языком программирования и интеллектом?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Естественно такого нет и быть не может.
    Все языки программирования работают примерно одинаково, за исключением узкоспецифических.

    Но нужно понимать, что узкоспецифические языки применяются в узкоспецифических областях, где также необходимы и другие узкоспецифические знания, которые могут составлять бОльшую область, чем сам язык.

    Для более-менее релевантной оценки, которая будет отличаться от пальцем в небо, надо вычистить мозг от ВСЕХ других знаний, оставив только язык программирования, а это невозможно. Поэтому чтобы вы не искали - это будет чушь.
    Ответ написан
    2 комментария
  • Объясните пожалуйста как работает l[...num+'']?

    WblCHA
    @WblCHA
    [...num+''] = [...`${num}`] = [...num.toString()] = num.toString().split('')

    Строка ─ это массив символов, так что это преобразование одного массива в другой.
    По поводу использования, хочешь ─ используй, не хочешь ─ не используй. Это стандартный синтаксис без ноухау.
    Единственное я хз как там с производительностью, но, думаю, она будет выше.

    И да, лучше используй этот вариант: [...`${num}`]. Просто нагляднее и современнее.
    Ответ написан
    1 комментарий
  • Почему не загружается правильно сохраненные данные?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Потому что Вы в addTaskдобавляете класс lineThrough а в css у Вас textThrough.

    const DONE = done ? 'textThrough' : ''; // profit
    Ответ написан
    1 комментарий
  • Как установить php-intl система windows?

    PiSaiK
    @PiSaiK
    IT куратор
    в OpenServer
    1. Остановить OpenServer
    2. Зайти в меню -> Дополнительно -> Конфиграция -> PHP
    3. Откроется файл конфигурации
    4. Найти строку "extension=php_intl.dll"
    5. Убрать ";" в начале строки -> Сохранить
    6. Запустить сервер
    Ошибка должна исчезнуть
    Ответ написан
    2 комментария