• Что такое preset?

    Don't want to assemble your own set of plugins? No problem! Presets can act as an array of Babel plugins or even a sharable options config.

    https://babeljs.io/docs/en/presets/

    Пресеты - это какая-либо готовая настройка. Полифил - костыль для браузера. Это совершенно разные вещи. Но есть пресеты с полифилами.
    Ответ написан
    Комментировать
  • Есть ли смысл становиться тестировщиком если не лады с математикой?

    Target1
    @Target1
    вообще без разницы 60253d62a13e9825204182.jpeg
    Ответ написан
    Комментировать
  • Как правильно хостить автономный бэкэнд (Laravel) и фронтэнд (Nuxt) на одном vps?

    Sanes
    @Sanes
    Какой-нибудь докер - возможно?

    Достаточно какой-нибудь LAMP/LEMP по-человечески настроить.
    Ответ написан
    Комментировать
  • Устарел ли getElementsBy* и чем лучше querrySelector?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Вот народ ушел в спор о производительности, но никто даже не попытался разобраться, а что под капотом... Производительность ведь искусственными бенчмарками меряют, ага...
    Что ж, времена сейчас такие
    многие на работу кодеров берут, которые даже интереса не имеют в глубь копать. Инженеров брать... - это устаревший подход, как выразился автор "популярного сайта", который прочел автор вопроса. Инженеры они дорогие, и найти их сложно, лучше кодер, пусть и не желающий на работе мозг включать, не говоря уж о желании в устройстве инструментов разбираться.

    Говорить о том, что некие фичи устарели - крайне глупо, если знать, что они ведут себя иначе, чем более модные альтернативы. Предлагаю немного разобраться и начать с того что на поверхности:
    - getElementById и querySelector возвращают конкретную ноду в единственном экземпляре
    - querySelectorAll и getElementsByName возвращает статичную коллекцию NodeList
    - getElementsByClassName, getElementsByTagName и getElementsByTagNameNS возвращают динамическую коллекцию HTMLCollection
    Как видим результат у разного апи различен, а значит и говорить, что некоторые из них устарели - глупо.
    Правда тут есть забавный момент
    в спеке HTMLCollection отмечен как "исторический артефакт", который не стоит использовать при проектировании нового апи. Но заметка эта не для веб-разработчиков, а для тех кто проектирует новое DOM апи.

    С устареванием вроде разобрались, но в вопросе еще есть часть "чем лучше". И тут есть теория, что getElementsBy* быстрее querySelector*. Чисто теоретически звучит логично, querySelector* должен делать полный поиск по дереву со сложностью O(n), а getElementsBy* могут использовать индексы на базе HashMap и получать данные со сложностью O(1), тут и особенности HTMLCollection будут кстати, так как можно не копировать коллекцию, а отдавать одну и ту же (и браузеры действительно так делают). Но без пруфов теория так и останется теорией.
    И бенчмарки - так себе пруф
    Хотя направлять инвесторов в нужную сторону - самое то. Проблема бенчмарков, что можно написать их так, что любая из сравниваемых сторон заметно обгонит другую. Дело техники. Например BubbleSort с O(n2) при определенных условиях в чистую уделывает MergeSort и QuickSort с их O(n×log2n), а именно при n=20 или меньше, 400 простых memswap в наглую рвут 87 рекурсивных операций с memcpy внутри
    Гораздо лучше тут выглядят исходники. И я выбрал исходники chromium, как самого распространенного:
    - getElementsBy* методы все как один обращаются к некой шаблонной функции EnsureCachedCollection, которая в свою очередь обращается к некоему NodeLists кэшу, устроенному внутри действительно как HashMap или что-то наподобие. Никакого поиска тут нет, просто берутся готовые значения, сложность у всего этого действительно константная O(1).
    - querySelector* используют абстракцию SelectorQuery, которая и в самом деле делает поиск по DOM. Но данный поиск неплохо оптимизирован и обвешан кэшами. Притом CSSOM использует абсолютно тот же алгоритм поиска DOM нод для каждого селектора в css.
    Для примера
    в подключенных на странице этого вопроса стилях более 1600 правил (некоторые из которых потенциально могут содержать несколько селекторов), полная обработка стилей из этого файла заняла на моей машине (Ryzen 3600 в стоке) чуть больше 9 мс. Если все это немного округлить, то понадобится 15000 querySelectorAll подряд, притом с разными селекторами, чтоб был промах кэша, дабы я ощутил заметную глазу задержку в ~100мс


    На этом спор думаю можно закрыть. querySelector* методы действительно могут быть медленнее, но чтоб убить ими производительность, нужно очень постараться. На фоне того, что пишут кривые ручки среднестатистического дешевого js-кодера это будет незначительной потерей измеряемой в наносекундах. Используйте то что удобнее в каждой конкретной ситуации.
    Ответ написан
    1 комментарий
  • Есть ли CMS для интернет-магазина с хорошим REST API?

    @caballero
    Программист
    чтобы был смысл писать мобильное приложение нужно сначала иметь не одну тысячу клиентов, причем постоянных клиентов, - никто не станет ставить мобильное приложение неведомого магазина.

    А чтобы иметь много клиентов надо вложить много усилий и денег - мобильное приложение там вопрос десятый - клиенту все равно через что покупать - сайт и с мобилы работать будет
    Ответ написан
  • Как наиболее рационально обновлять данные в моделях Laravel?

    Fernus
    @Fernus
    Техник - Механик :)
    1. Сделать функцию, которая будет на вход получать значение цены и тип валюты...а далее умножать на курс этой валюты при выводе...
    2. Сам курс можно обновлять раз в какое-то время (хоть раз в 10 минут) - не дорогостоящая операция;
    3. В том месте, где будет использоваться цена, использовать функцию из пункта 1.

    Операция умножения при выводе много ресурсов не потратит...
    Ответ написан
    Комментировать
  • Как наиболее рационально обновлять данные в моделях Laravel?

    New_Horizons
    @New_Horizons
    Бред:
    по одному update запросу на каждую валюту, типа того:
    update `products`
    set `price` = (`base_price` * ?)
    where `currency` = 'EUR';

    Где ? - курс.
    Ответ написан
    2 комментария
  • Как отключить автоматическое закрепление вкладки с открытым файлом на удаленном сервере в phpstorm?

    Это проблема последнего обновления, подробнее посмотрите тикет: WI-55870.

    Уже исправлено и доступно в RC версии (получить её можно через Toolbox App).
    Ответ написан
    1 комментарий
  • Какие недостатки у такой авторизации?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Есть такая русская пословица, "дурная голова ногам покоя не даёт".
    Вот она про это "изобретение".
    Ответ написан
    Комментировать
  • Какие недостатки у такой авторизации?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    - Что будет если пользователя взломали, и взломщик залогинен. Дальше пользователь бежит меняет пароль, но взломщик продолжит сидеть под пользователем, ибо файл.
    - Что будет если пользователя вдруг забанят? А вы не сделали запрос к БД и не узнали этого.
    - Вообще любая ситуация когда вам нужно получить актуальные данные о текущем авторизованном пользователе из базы, но вы этого не делаете, так как экономите на этом запросе. Например решили добавить роли пользователям на сайте, меняете role для юзера. Как без запроса к БД текущему пользователю это узнать, что у него поменялась роль и теперь доступны доп. функции?

    Чтобы убрать этот долбозапрос

    Поймите и примите простую истину - база данных создана для того чтобы РАБОТАТЬ, так пусть же работает и исполняет ваши долбозапросы. Не нужно тут ничего придумывать.

    «Преждевременная оптимизация — корень всех зол». Дональд Кнут.
    Ответ написан
    3 комментария
  • Как прикрепить файл из папки в сообщение вк?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы слишком начинающий питонист, чтобы решать такие задачи интуитивно. Вам нужно подучиться.

    F = open(os.path.join(DIR, random.choice(os.listdir(DIR))))

    В переменной F у вас созраняется не картинка, не файл, и не его содержимое, а специальный объект, который позволяет получить содержимое файла с диска.
    У этого объекта есть техническое строковое представление, но оно никак не связано с содержимым файла.
    И вы это техническое название объекта, предназначенного для доступа к файлу подставляете в текст сообщения для отправки. Соответствующий результат и получаете.
    Даже если бы вы подставили в текст сообщения не техническое название объекта для доступа к файлу, а само содержимое файла, вам бы это все равно не помогло. Файл картинки - это бинарный файл. Там байты, которые не прочитать глазами. Вы неправильно пользуетесь библиотекой, не понимаете различия между файлом, его содержимым, его форматом и представлением.
    В комментариях к вашему вопросу вам сказали как загружать картинки чреез API контакта.
    Видимо содержимое файла нужно отправить http post-запросом на специальный сервис для ее хранения, а уж ее идентификатор прикрепить специальным образом в состав сообщения.

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

    Ввиду всего вышесказанного могу вам сказать, что вам рано решать такие задачи. Поучитесь немного базовым вещам. Найдите документацию и примеры, разберите их.
    Сейчас, с учетом формулировки задачи, ответ как отправить картинку вам не поможет.
    Представьте, что "начинающий хирург" будет спрашивать в интернете почему пациенты, у которых он вырезает аппендицит не выздоравливают. На предоставленном фото он делает это не на том месте и кухонным ножиком.
    Ответ написан
    Комментировать
  • Правильно ли монтировать /var на HDD вместо SSD чтобы он прослужил больше?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Нет, все эти советы по поводу "сбережения ресурса SSD" относятся к самым ранним поколениям накопителей. Современные накопители морально устареют гораздо раньше того момента, когда их ресурс на запись будет исчерпан.
    Ответ написан
    8 комментариев
  • Объясните на понятном языке, что такое URL обратного вызова?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    callback url - чужой сервер сделает в нужное время запрос на ваш сервер.
    Примеры.
    Платежные агрегаторы делают
    а) пречек - передают информацию что вам хотят оплатить . в ответ нужно дать согласие на принятие денег.
    Типа проверка того что ваш сервер готов отдать товар и сам сервер живой и можно с клиента списывать в вашу пользу деньги.
    б) авизо - деньги с клиента реально списаны.

    Интеграция с телефонией
    дергает ваш сервер CRM о событиях (идет вызов, принят вызов, начат разговор, беседа завершена)

    Телеграм бот - сервер присылает апдейты моментально. Вам не нужно дергать апи по крону чтобы их получить.

    Ну и другие случаи интеграции с АПИ, когда инициатором события должен выступать чужой сервер
    Ответ написан
    Комментировать
  • Что это обозначает?

    Adamos
    @Adamos
    Это значит, что ТС не способен скопировать из терминала строчку и вместо этого постит черный квадрат.
    Кстати, скопировав строчку из терминала, ее совсем несложно кинуть сначала в Гугль, и только потом - на Тостер.
    Ответ написан
  • Зачем во Vue запросы выносят в services?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    1. Для упрощения кода. Скажем, чтобы не писать каждый раз всю конструкцию аля
      axios.get(ENDPOINT + '/api/' + API_METHOD, {
        params: {
          id
        }
      })
      .catch
      ...

      Делается обёртка, условная функция getUser(id). В неё выносится вся логика по работе с запросом, определение маршрутов АПИ, обработка ошибки и так далее. Наружу торчит только одна функция и параметр.
    2. При работе с TS это проще типизировать. Намного легче описать типы принимаемых параметров и возвращаемый тип для нескольких функций, чем описывать универсальную конструкцию для доступа к любым методам апи.
    3. Ну и наконец: сервис можно вызывать прямо в компонентах. Вызывать методы АПи не обязательно внутри Vuex. Доже чаще это должно выполняться внутри отдельных компонентов, каждый из которых работает с одним-двумя апи, а не со всем набором.
    Ответ написан
    4 комментария
  • Что можете сказать о курсах ITEA?

    Adamos
    @Adamos
    Заплати скорей за курсы,
    Коли сам в ученье туп!
    Выйдет с курсов по Плюс-Плюсу -
    Полу-Страус! Полу-труп!
    Ответ написан
    1 комментарий
  • Что можете сказать о курсах ITEA?

    YuriyVorobyov1333
    @YuriyVorobyov1333
    Software Developer
    Как показывает практика, всю информацию, которую дают на курсах, можно самому найти в "интернетах".
    Больше всего смущает этот текст:

    Стать Java Developer? С ITEA!
    Курс C++ Advanced — обучение разработке программного обеспечения на одном из самых популярных языков программирования. С нами ты выучишь язык эффективно, быстро и качественно!

    Причем тут Java?)
    Ответ написан
    3 комментария
  • Почему функция stripos маленькие буквы и большие буквы не считает под одно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    print stripos('abc', 'b'); // 1
    print stripos('abc', 'B'); // 1

    Другое дело, если вы пытаетесь использовать эту функцию с многобайтными символами, например с русскими буквами в UTF-8. В этом случае нужна функция mb_stripos из библиотеки mbstring.
    Ответ написан
    1 комментарий
  • Почему после установки не совпадает структура папок Laravel?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    гайды-то небось от 5 версии, если вообще не 4-й
    исправить просто - смотреть не "гайды", а документацию
    Ответ написан
    6 комментариев
  • Почему сгенерированный js в одну строку?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Во-первых, зачем? Этот код не сделан для того что бы его читать, он для выполнения компьютером. Этот код называется минифицированным, что сокращает размер файлов.
    Во-вторых, в видосе, скорее всего, использовалось расширение для ide, которое представляет однострочный код в код с отступами и переносами.

    Но тебе этого не нужно. Этот файл вообще трогать не нужно.
    Ответ написан
    2 комментария