Задать вопрос
  • Выигрывает ли nodejs в производительности php на примере обычного сайта?

    bingo347
    @bingo347 Куратор тега Node.js
    devilsD, ну вот как пример, сисадмин с прошлой работы рассказывал:
    был там написанный мной микросервис на ноде, работавший себе прекрасно в 4 процесса на ноде и обслуживавший примерно 15 тысяч запросов в секунду (не ахти какая нагрузка на самом деле)
    и так как после моего ухода поддерживать все это было особо некому, а сервис был не особо большой, то переписали они его на php7, когда понадобился новый функционал.
    Как итог пришлось все масштабировать под такой нагрузкой на 2 физические машины на 12 ядерных современных зионах.
    Выводы делайте сами...
  • Какой оптимальный JS фреймворк для мобильного SPA?

    bingo347
    @bingo347 Куратор тега JavaScript
    JohnDaniels, про костыли я тоже писал, это не решение, давайте придумаем еще 100500 способов сделать одно и то же, так как каноничный способ плохой изначально. И как я и писал, Ваш бандл будет примерно на 20% больше, чем если бы Вы писали каноничный vue
  • Почему пустой $_POST при запросе по fetch()?

    bingo347
    @bingo347 Куратор тега JavaScript
    То есть типа мне нужно пройтись по всем элементам settings, и сделать

    Ok Google: mdn fetch request body
  • Как найти все символы после точки?

    bingo347
    @bingo347 Куратор тега JavaScript
    LissaAlbatross, в нотации O-большое считают худший случай
    indexOf - это линейный поиск, так что да, это O(n)
    насчет slice не уверен, потенциально он может как просто сделать ссылку на часть исходной строки (так как строки в js не изменяемы, это вполне валидно) - это будет O(1), но так же может быть и копирование - O(n)
    Надо поискать, как реализовано в v8
  • Что можно написать на Vue?

    как будто в vuex или vue-router есть какая-то магия? Тот же vue под капотом
  • Как найти все символы после точки?

    bingo347
    @bingo347 Куратор тега JavaScript
    LissaAlbatross, я большую часть о подкапотном устройстве черпаю от сюда https://github.com/v8/v8
    При том, что у меня весьма поверхностные познания в плюсах, мое знание C + высокое качество кода v8 вполне позволяют разбираться, что там происходит, хотя в последнее время они все больше прибегают к кодогенерации, что затрудняет обновление познаний.

    В частности по регекспам, вот Вам конечный автомат управляемый скомпилированной регуляркой: https://github.com/v8/v8/blob/master/src/regexp/re...
  • Как найти все символы после точки?

    bingo347
    @bingo347 Куратор тега JavaScript
    LissaAlbatross, в подавляющем большинстве случаев люди пользуются RegExp или от лени или от неумения сделать нормально, абсолютно при это не думая, как это нечитаемое нечто будут поддерживать коллеги или они сами спустя неделю, не говоря уже о том, что о производительности вообще мало кто думает (может это и к лучшему, пока я не перешагнул через пол ляма в месяц, я этому даже рад). Но в целом RegExp под капотом - это конечный автомат со сложностью в худшем случае O(n2), помимо того регулярку необходимо скомпилировать, что тоже не бесплатно.

    Насчет split, его минус в том, что он будет всегда искать до конца строки, тогда как indexOf остановит поиск если нашел искомую подстроку. Кроме того split отрежет от исходной строки столько кусков, сколько найдет. В общем под капотом у него мой пример, только в цикле.
    Ну и Вы конечно забыли, что у split есть параметр limit, позволяющий ограничить количество поисков.text.split('.', 1)[0] всего одна циферка, но будет в разы быстрее
  • Как получить Blob из input[type="files"]?

    bingo347
    @bingo347 Куратор тега JavaScript
    Надим Закиров, я всегда начинаю поиск по интересующему меня web-api с запроса "mdn <название api>", например "mdn File"
    mdn - самый полный справочник по js и web-api, к тому же многое переведено на русский.
  • Как получить Blob из input[type="files"]?

    bingo347
    @bingo347 Куратор тега JavaScript
    Надим Закиров, все верно, по сути файлы - те же blob'ы просто с доп полями вроде имени файла в файловой системе пользователя
  • Какой оптимальный JS фреймворк для мобильного SPA?

    bingo347
    @bingo347 Куратор тега JavaScript
    CryNet, да это так, когда я начинал на vue2, там тоже вакансий было раз 2 и обчелся, и ничего взлетели со временем.
    На реакте и тогда было много вакансий, ибо кто-то должен же поддерживать ту кучу легаси, которую на нем уже понаписали.

    Антон Швец, смотрел уже раньше
  • Какой оптимальный JS фреймворк для мобильного SPA?

    bingo347
    @bingo347 Куратор тега JavaScript
    за 2мб бандлы нужно расстреливать...
  • Какой оптимальный JS фреймворк для мобильного SPA?

    bingo347
    @bingo347 Куратор тега JavaScript
    dmitry-toster, с реактом по серьезному работал последний раз году в 16, но впрочем наблюдаю за ним... и чисто субъективно, как был отвратительным таким и остался. Куча ручной работы, мега тормазной вирутальный дом, нет системы событий, поток данных только вглубь, а если надо наоборот, то начинаются танцы с бубном вроде колбэков в пропсах, вообщем боль и страдание, особенно если нужны инпуты... Плюс в последнее время он мне попадается больше на доработки, но не он один. И с ним больше всего вижу говнокода, вызванного в том числе борьбой с этим поделием. А самое интересное, я реально не понимаю, а что он дает? Возможностей по сравнению с ванилой - ноль, удобство - вообще в минусе. Виртуал дом? ну так это медленно же... да и реализую я такой за пару вечеров если очень надо будет... Вообщем не вижу ни одной причины кроме пиара от фб, почему это поделие так популярно.
    Вью - с ним очень плотно работаю с выхода 2 версии. В целом впечатления приятные, пока не наткнешься на тормоза с его плоской системой реактивных зависимостей в купе с неоптимальной отпиской. Особенно это заметно с vuex на больших динамичных страницах. Ну и на сегодня у вью хуже всего дела обстоят с тайпскриптом. Вью отвратительно типизирован сам, он мешает типизировать компоненты (правда есть костыли для обхода, но с ними бандл растет примерно на 20%), vuex не типизируется вовсе. Реакту тут конечно повезло больше, благо майкрософту приглянулся jsx для личных целей и они сделали tsx... Хотя это породило в реакте еще больше говнокода в виде и логика и ui в одной куче... Ну и еще, после реакта и свелт у вью кажется убогим ограничение, что компонент может иметь только 1 дом элемент верхнего уровня... Ну и опять же виртуал дом, но хотя бы не ререндерится на каждый чих как у реакта.
    Свелт - первое впечатление у всей команды - "а так можно было?" Продуктивность выросла в разы после вью (о реакте тут даже говорить не приходится), самый большой бойлерплейт, который приходится на нем писать - это: const dispatch = createEventDispatcher(); - и вызван он объективной причиной, свелт не будет тащить механизм событий в компонент, если он не нужен разработчику. Нужно писать очень мало кода, и весь он по делу, большинство наших компонентов помещаются в 1 экран при разрешении 1920х1080, это при том что в одном файле и ui логика (в основном импорты и пропсы, изредка реактивные выражения), шаблон и стили в scss. В самих компонентах нет тайпскрипта (и возможно не будет, ибо свелт - компилятор надмножества js+html и ts не понимает некоторые его синтаксические штуки), но все что вокруг у нас на хорошем ts, и тут все что импортируется из свелт прекрасно типизировано, включая svelte/internal. С граблями тоже встретились, но они не критичны, в частности есть проблемы с дев сборкой и с hmr под вебпаком, в итоге собираем в прод сборку даже на деве, теряя часть понятности в выхлопе компилятора, ну и сорсмапы для свелт пока тоже не работают (хотя и у вью есть с этим проблемы, но тот хотя бы не трогает скрипты, а шаблон делает деревом и оставляет на откуп рантайма, свелт же компилится в работу с нативным дом с учетом очень точечных обновлений, понять из выхлопа компилятора что было в шаблоне весьма сложно). В остальном впечатления весьма положительные, от бойлерплейта в реакте после этого еще больше тошнит, к вью тоже возвращаться не особо хочется
  • Как применять функцию ко всем div с id/class?

    bingo347
    @bingo347 Куратор тега JavaScript
    потеряли объект ивента и насоздавали 100500 однотипных функций... хороший совет однако...
  • Как рендерить рекурсивный вызов компонета Vue?

    конкретно на vue - никак, только оборачивать в еще 1 div
  • Как задать переменные в области видимости для нового экземпляра класса?

    bingo347
    @bingo347 Куратор тега JavaScript
    Вопрос в том, можно ли это сделать без изменений в A.js

    lightalex, потенциально нода это позволяет, но это будет неявное поведение, а как известно неявное - причина багов.
    Вам придется хакнуть модульную систему ноды. Почитать можно в офф доке:
    https://nodejs.org/dist/latest-v14.x/docs/api/modu...
    https://nodejs.org/dist/latest-v14.x/docs/api/vm.html
  • Можно ли использовать (а если можно то как) vuex внутри плагина для Vue?

    DenniLa2, если $myPlugin - это vue компонент, то достаточно добавить в него одноименный computed, если обычный объект - то просто сделать в нем getter через Object.defineProperty