• Как привязать функцию в функцию при помощи bind?

    @Yurajun Автор вопроса
    class ModalSignInSms {
        constructor() {
           this.$modalBtnSend = $('.js-btn');
       }
       async sendModal(e)  {
            e.preventDefault();
            console.log('form sent')
            // something happening
       }
    }
    
    class SendReview extends ModalSignInSms {
        constructor(el) {
            super();
             this.$modalBtnSend.on('click', async (e) => {
               await this.sendModal(e);
               await this.sendReview();
             }); 
        }
        async sendReview() {
            console.log('review sent');
        }
    }
    Ответ написан
    Комментировать
  • Можно ли во vue вложить метод в объект?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Сделайте packet свойством, а не методом.
    Ответ написан
    2 комментария
  • Почему export/import не срабатывает?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    Гуглится по первой ссылке
    https://stackoverflow.com/questions/45854169/how-c...
    Ответ написан
    Комментировать
  • Как сгладить контуры SVG?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Добрый день.

    Поколдовали с вашей svg-шкой и со стороны дизайна и на фронте, вывод: видимо дело в том, что браузеры рендерят векторные изображения таким образом, что получаются такие "лесенки", хотя на самом деле в самом файле все хорошо. У вас была проблема с тем, что пропорции исходного изображения не соответствуют пропорциям контейнера, в котором оно используется, думали, что из за этого проблема — тоже не помогло.

    Предлагаем тогда, чтобы сгладить этот эффект, немного изменить само изображение и "утолщить" тонкие элементы, это не решит проблему, но сделает её менее заметной.

    Было:
    5e3d5a1152258521154092.png

    Стало:
    5e3d5a2e71f32230995787.png

    Исправленный файл
    https://mab.to/sG4WI9YUe

    Вообще алгоритмы рендеринга векторов бывают разные, можно посмотреть эту статью и попробовать поискать ещё решение: https://habr.com/ru/post/318880/

    Pavel Palenin
    Head of design in Athanor
    Ответ написан
    2 комментария
  • Переключение стилей по кнопке?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Ну вы прям как беспомощные дети, право слово.
    Открываем исходники(там всего два файла) и практически с первых строк видим как там всё устроено. Переменная которая вам нужна - mixColor.
    Вот только там не чёрный цвет, а вовсе даже белый, потому что на самом деле там происходит не смена цвета body, а наложение div с классом darkmode-layer поверх всего в режиме: mix-blend-mode: difference;.
    Тут уж вы сами подбирайте нужный цвет с нужным режимом смешивания.
    Ответ написан
    3 комментария
  • Javascript framework, который использует "$"?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Классическая реализация метода noConflict() выглядит примерно так:
    const original = globalThis.libraryVariable; // сохраняем предыдущее значение заменяемой переменной
    globalThis.libraryVariable = libraryExport; // перезаписываем нашей либой
    libraryExport.noConflict = () => {
      globalThis.libraryVariable = original; // восстанавливаем сохраненное значение
      return libraryExport; // возвращаем нашу либу
    };
    где:
    globalThis - стандартное (начиная с ES2020) имя для глобального объекта (window, self - в браузере, global - в ноде - псевдонимы)
    libraryVariable - глобальная переменная содержащая библиотеку, в случае с jQuery таких переменных 2 - $ и jQuery
    libraryExport - внутренняя переменная, которая так же хранит ссылку на библиотеку (это нужно, чтоб либа не сломалась, даже если Вы руками измените глобальную переменную)

    P.S. в современном мире большинство библиотек по возможности используют модульную систему и не засоряют глобальный объект
    Ответ написан
    Комментировать
  • Почему данном случае теряется контекст this?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Простой ответ:
    Берём метод:
    метод = function(){
      console.log(this)
    };
    и(не важно как) пихаем его в какие-то объекты.
    Получаем:
    хрень.метод() // this - хрень
    хрень.кишки.метод() // this - хрень.кишки
    метод() // this - window
    
    хрень.метод.call(хрень.кишки) // this - хрень.кишки
    метод.call(хрень.кишки) // this - хрень.кишки
    метод.call(null) // this - null
    
    элемент.addEventListener('оппа', хрень.метод) //  this -элемент
    элемент.addEventListener('оппа', метод) //  this -элемент
    элемент.addEventListener('оппа', хрень.кишки.продукт.метод) //  this -элемент

    По сути this для фукции - это то, что идёт перед точкой, кроме тех случаев когда он переопределён явно. Всё, никакой эзотерики.)

    fn.call(!this ? this : obj) - это чушь скорее всего. Если this - falsy, то ставим его как this при вызове функции fn, иначе ставим obj. Falsy this может быть только при явном указании(или в strict режиме, при вызове функции напрямую("без точки перед ней")), и скорее всего передача пустого this в таком случае просто сломает выполнение fn.

    Ну ещё следует упомянуть стрелочную фукнцию:
    метод = () => {
      console.log(this)
    };
    это можно считать за явное указание this, потому что this тут всегда привязан тот, что был при создании стрелочной функции, независимо от того как и откуда её вызывают.
    Ответ написан
    3 комментария
  • Как максимально ускорить скорость работы сайта?

    Fqyeh29
    @Fqyeh29
    ↓ ИМХО ↓
    Включите отладку:
    5e1ebe9da47d1424580792.png

    И увидите сколько времени занимает каждый компонент. Ищите долгие и разбирайтесь с ними индивидуально.
    5e1ebe10b6f6d259225638.png
    Ответ написан
    2 комментария
  • Что это за сортировка (JS)?

    longclaps
    @longclaps
    не особо разобравшись в ее теории
    Это звучит забавно.
    Да, это быстрая сортировка в её игрушечном варианте и даже чуть хуже (есть избыточная проверка).
    Неигрушечный вариант экономней по памяти, но требует аккуратной работы с индексами.
    Ответ написан
  • Как бороться со стрессом на работе?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Мозг каждый день кипит так же, как в первый день. Шаг влево шаг вправо, и вот, я уже ничего не знаю и ничего не умею... ощущение, что на работе я как будто не прогрессирую, а наоборот деградирую...

    У меня такое было, когда я только перешел во фронтенд и пытался держать слишком много деталей о языках и инструментах в голове. Со временем понял, что это не имеет смысла - все меняется быстрее, чем я запоминаю. Перешел от мысли "я использую инструменты" к мысли "я делаю штуки" и сразу полегчало, стал держать в голове только общие идеи о том, как что-то делается, или что вообще бывает в какой-то области, а конкретные инструкции по применению отдельных инструментов изучаю по ходу дела. Изменил фокус своего самообразования, если это можно так назвать. В результате все препроцессоры слились в один, новые библиотеки становятся все менее сложными в освоении, поскольку идеи везде плюс-минус одинаковые и.т.д. Решения стало принимать гораздо проще. И аргументировать тоже. Иногда складывается такое впечатление, что у нас в отрасли совсем ничего не появляется нового уже лет пять, а то и больше. Да, я забываю как использовать флексы, путаю call() и apply(), гуглю свои же ответы на тостере, но это не важно. Голова занята решением проблем, в ней теперь нет никакой второстепенной информации и это очень здорово. Статьи писать тоже полезно оказалось - написал, "поставил на полочку", и забыл. А если будет нужно - можно достать и посмотреть. Таким образом вот эта вся фигня с закипанием мозгов практически ушла.
    Ответ написан
    1 комментарий
  • Чем отрубать напругу?

    @Newbie2
    Ну пускатель можно поставить. Катушку питать от "потребителя", внутри поставить шунтируемую кнопку.

    p.s. если нагрузка небольшая, можно просто автомат на 1 ампер поставить в шкафу и всё. При попытке подключить нагрузку больше 220 Ватт он отрубится. Можно поставить реле тока, которое будет отрубать нагрузку при превышении тока (если у вас подключена нагрузка большая, то решение не имеет смысла).

    Пускатель ещё можно вот так подключить:
    5db3033345ae8805895047.png
    Ответ написан
    2 комментария
  • Зачем в книгах оставляют пустые страницы?

    Издержки печатной верстки:
    • Чтобы набралось число страниц делимое на 4.
    • Чтобы очередная глава началась с правой страницы.
    Ответ написан
    Комментировать
  • Правильно ли всегда использовать npm ci вместо npm install?

    Lynn
    @Lynn
    nginx, js, css
    На сервере однозначно правильно.
    https://docs.npmjs.com/cli/ci.html

    This command is similar to npm-install, except it’s meant to be used in automated environments such as test platforms, continuous integration, and deployment [...]


    Более того, я и в разработке использую её, кроме случаев когда надо явно что-то обновить.
    Ответ написан
    Комментировать
  • Как скачать миллион картинок?

    deepblack
    @deepblack
    download_images_from_csv.sh (допилите под себя если нужно)
    spoiler
    #!/bin/bash
    COLUMN=1 # csv column to extract
    RENAME=false # if we should rename the file, note that is was really specific for my problem.
    THREADS=16 # threads to use by parallel
    
    #Set Script Name variable
    SCRIPT=`basename ${BASH_SOURCE[0]}`
    
    #Set fonts for Help.
    NORM=`tput sgr0`
    BOLD=`tput bold`
    REV=`tput smso`
    
    # Help function
    function HELP {
      echo -e \\n"Help documentation for ${SCRIPT}."\\n
      echo -e "Basic usage: ./$SCRIPT"\\n
      echo "Command line switches are optional. The following switches are recognized."
      echo "-f csv file = required should be last argument"
      echo "-c column, default $COLUMN"
      echo "-t threads, default $THREADS"
      echo "-r renamd, should be renamed - work in progress here because this is really specific renaming"
      echo -e "-h --Displays this help message. No further functions are performed."\\n
      echo -e "Example: ./${BOLD}$SCRIPT -rc 2 -f file.csv"\\n
      exit 1
    }
    
    
    #Check the number of arguments. If none are passed, print help and exit.
    NUMARGS=$#
    if [ $NUMARGS -eq 0 ]; then
      HELP
      exit 1
    fi
    
    while getopts ::c::r:h:f FLAG; do
      case $FLAG in
        t)
            THREADS=$OPTARG
          ;;
        c)
            COLUMN=$OPTARG
          ;;
        r)
            RENAME=true
          ;;
        h)  #show help
          HELP
          ;;
        \?)
          echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
          HELP
          ;;
      esac
    done
    
    shift $((OPTIND-1))
    
    FILE=$1
    # shift ops, all optional args are now removed $1 will have to be the filename
    
    if [ "$RENAME" = true ]; then
        mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
            (cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {}; mv {/} `echo "{/}" | tr "." "_" | cut -d "_" -f1,3 | tr "_" "."`')
    else
        mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
            (cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {};')
    fi
    Ответ написан
    Комментировать
  • Что такое T в угловых скобках в документации к RxJS?

    shai_hulud
    @shai_hulud
    Это TypeScript. В такой нотации видно, что принимается в аргументах и что будет вернется.

    T это generic параметр. В данном контексте это тип фильтруемого значения.

    MonoTypeOperatorFunction это функция с сигнатурой (source: T): R которая еще и унарная функция итд. Это всё иерархия типов для того что бы можно было композировать друг с другом функции по их "смыслу" а не сигнатуре.
    Ответ написан
    1 комментарий
  • Как получить изображение канваса, который рисует изображение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вы создаете асинхронный код в onload, который должен запуститься после загрузки изображения. Даже если оно уже загружено и ждёт в кеше, этот кусок кода всё равно запустится сразу после текущего куска кода.

    Но перед этим должен закончится текущий кусок кода, в конце которого вы выводите канвас в строку. И естественно, там ничего нет.

    После того, как выполнится console.log, на канвасе будет нарисовано изображение (в onload).

    P.S. Когда исправите эту ошибку, столкнетесь со следующей. Но это будет уже другой вопрос.
    Ответ написан
    Комментировать
  • В чем суть облачных сервисов?

    @EraserKhv
    Системный администратор
    Проще объясню.
    Предположим, гипотетическая ситуация, которой обычно объясняют зачем тебе Облако. - Есть у тебя интернет-магазин плюшевых мишек. Развернул ты сайт у себя на компьютере , который стоит в офисе в кладовке, и все хорошо, посещение сайта 1000 пользователей в день, продаешь ты свои 5 мишек в день, никаких проблем.
    Но тут надвигается 8 марта, и посещаемость сайта увеличивается до 5000 в час и твой компьютер не вывозит ни по процессору, ни по диску, ни по оперативной памяти, ни по пропускной способности интернет канала, службы обрабатывающие HTTP запросы все время отваливаются, интернет-канал забит, жесткий диск молотит, но все происходит все очень медленно, а ты на этом компе еще Z отчет кассовый делаешь в конце дня, а в соседнем цехе усиленно пекли печеньки с предсказаниями в глазури, автомат в ВРУ не выдержал, и отключился вместе со всем зданием и твоим компом. ПО итогу ты к 8му марта продаешь всего 3 медведя, да и еще кассовый отчет для налоговой не сгененрировал. После подобного факапа, ты себе говоришь: "ну на следующий праздник я так не облажаюсь". Выделяешь в офисе помещение под серверную, ставишь серверную стойку, покупаешь 4 сервера полноценных и распараллеливаешь инет запросы, новая система хранения данных, источник бесперебойного питания, 2 кондиционера и интернет канал расширяешь. Итогом к 8му марта следующего года, эта конфигурация выдерживает возросшую нагрузку и ты продаешь 45 медведей к 8му марта, профит ? А вот и нет, вся эта конфигурация нужна тебе в преддверии 8го марта, а остальные, предположим 360 дней, тебе бы хватало однго старого компьютера. А серверная потребляет только электричества на 500 руб в день, а интернет канал, и обслуживание серверов итого дороже!

    Так вот в облаке можно арендовать эти мощности на несколько дней, пока идет самый сенокос, а остальные дни довольствоваться слабенким виртуальным сервером за 300 руб в день.
    Ответ написан
    2 комментария
  • Наилучший метод для изучения английского?

    sim3x
    @sim3x
    Простыню не читал
    Лучший метод - практика 24/7
    Ответ написан
    14 комментариев
  • POST для получения данных?

    @Vitsliputsli
    Насколько плохо использовать POST для получения данных и в боди передавать параметры?

    Филдинг, когда описывал архитектуру REST, ни слова говорил о методах http. С другой стороны, методы http настолько обобщены, что говорить о каком-то "правильном" использовании не приходится, но тем не менее, для получения более привычно использовать GET. Используя POST вы рискуете вызвать непонимание людей, которые будут поддерживать этот код. Но зачем?
    Ответ написан
    4 комментария
  • Как найти хостинг домена на RU-CENTER, чтобы получить доступ к администрированию сайта?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    название сайта в панели НЕ ВСЕГДА РАВНО имени домена!
    смотрите синонимы

    а админов можно редактировать в базе данных
    Ответ написан
    1 комментарий