Задать вопрос
  • Почему при запуске сервера Vite выходит ошибка о том, что не найден файл main.jsx?

    spmbt
    @spmbt
    Потому что этот файл (или подобный стартовый) должен для Vite лежать в корне проекта, а не в /src, как для Webpack. Не знаю, какими путями у вас он появился в /src - его оттуда руками с правкой путей нужно перенести на правильное для Vite место (про это не так давно (2 мес) статья была на Хабре, плюс у меня Vite стартует из корня, как и полагается ему, и там ставим или index.html, или скриптовой файл.
    Ответ написан
    Комментировать
  • CORS error как исправить?

    spmbt
    @spmbt
    Чтобы заработали Javascript и CSS в собранном сборщиком файле, в том числе для React, Vue; нужно:
    1) убрать и изменить стоп-атрибуты в HTML,
    2) сменить абсолютные пути на относительные в ссылках запуска бандлов, стилей и в картинках.

    На июль 2025 у Хрома имеются такие "затыки".
    *) атрибуты "crossorigin" останавливают с ошибкой в отладчике - убрать эти атрибуты у <script> и <link>
    *) в скриптах сборщик проекта пишет &script type="module" ... - это локально не запускается. Заменить на &script type="text/javascript" ..., причём без слова "text/" не пойдёт.
    *) все ссылки сборщик проекта любит делать со слешем впереди - а это отсчёт от корня домена: "/assets/... Заменить на относительные ссылки (правильные) или, если надо, абсолютные локальные типа file:///

    В итоге, должно получиться что-то типа такого, и это будет запускаться локально.
    <!doctype html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/svg+xml" href="vite.svg" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Vite + Vue + TS</title>
        <link rel="stylesheet" href="assets/index-BA6qXr_z.css">
      </head>
      <body>
        <div id="app"></div>
      </body>
        <script type="text/javascript" src="assets/index-C1hEJ-6O.js"></script>
    </html>

    Здесь поправлен путь перед vite.svg и assets, плюс правки атрибутов. И чтобы скрипт Vue стартовал - место запуска перемещается вниз, как в HTML показано (а в текущей сборке он был в хедере). (У Реакт19-проекта ничего менять в бандле и положении запуска не приходится.)

    Также, можно без переделок пользоваться IDE типа Webstorm со встроенным локальным сервером, у кого она есть - тогда нужно только поправить ссылки (потому что корень сервера будет не от папки ./dist/, а от корня открытого проекта), а CORS не помешает, т.к. уже сервер. Затем, открыть из любого проекта HTML, справа вверху подсветятся значки браузеров - клик по значку, и страница откроется.
    Ответ написан
    Комментировать
  • Ошибка в FF DOMException: "The quota has been exceeded."?

    spmbt
    @spmbt
    Наблюдал такое в Dev версии Firefox 85.0b4 после длительного пользования, более месяца. Не исключено, что в стабильной версии тоже будет проявляться, но ошибка, видимо, накапливаемая за долгое время, поэтому не знаю, как повторить.

    При этом, в неиспользуемой стабильной версии Firefox и в используемой стабильной Chrome - всё нормально.

    Проявляется в том, что единственная запись небольшого безобидного значения в localStorage приводит к последующей невозможности записи по ошибке "quota". Проверка реального объёма скриптом записывания в Storage всё более крупного объёма данных показывает, что, в самом деле, ничего записать нельзя. После localStorage.clear() снова оказывается возможной запись, но до меньших пределов, чем прописано в dom.storage.default_quota. Со временем, похоже, есть тенденция этому пределу сокращаться.

    Чтению имеющихся записей это не мешает, но удаётся записать до ошибки или очень мало КБ (5-100), или не даёт писать ошибка. indexedDB при этом совершенно пустая на домене, есть лишь немного cookie.

    При этом на другом домене этого же браузера всё работает отлично, как и в Хроме.

    Хотя очень похоже, что это есть баг браузера, пришлось дописать автоматическую очистку локалстораджа по localStorage.clear(), с восстановлением своих записей, так как не исключено, что в стабильных версиях браузера она тоже будет наблюдаться.

    А описать багрепорт невозможно, т.к. неизвестна процедура воспроизведения.
    Ответ написан
    Комментировать
  • В чем плюс использования redux-saga для приложения в отличии от обычного redux?

    spmbt
    @spmbt
    Обеспечивает корректность асинхронных запросов к сервисам. В чистом Редаксе теоретически тоже можно, но трудно выстроить правильную архитектуру при числе запросов к API более 1. Другие альтернативы корректных архитектур - MobX, redux-thunk.
    Ответ написан
    Комментировать
  • Эмуляторы для разработки на Smart TV?

    spmbt
    @spmbt
    1) Хороших эмуляторов нет. Разработка под эмулятор будет по стилям отличаться от реальных ТВ. Делать под эмулятор - фактически, тратить время, т.к. потом - переделывать.
    2) Которые есть - имеются строго под заданный бренд и заданное поколение (версию) своих телевизоров. Искать их - на сайтах для разработчиков у производителей. У мелких (Toshiba и китайские ноунеймы), возможно, эмуляторов не найдётся. У Самсунга и LG точно есть. Но с особенностью - что может не запуститься. Лучше всего их софт для разработчиков работает (хотя и плохо) под Windows.
    3) Версий ТВ уже накопилось у них штук по 5-8, при этом все дружно начинают игнорировать поддержку ТВ старее примерно 4-5 лет. Sony - так вообще перешла на Android-TV, что неплохо, но добавляет зоопарка разнородных систем.

    Итого, чтобы разрабатывать под Smart TV, надо

    1) брать IDE для разработки для каждого бренда каждое своё (иначе Самсунг просто не даст тестировать на своих новых ТВ 2015 года и новее, к примеру),

    2) регистрироваться как разработчик (иначе - п.1), забыть про "свободную" публикацию приложений - разработка, если не выложена в магазин вендора, запускается только на ТВ разработчика под его логином.

    3) понакупить ТВ нужных систем - в первую очередь - Самсунг, LG и Сони в порядке
    приоритета. Старые версии можно игнорировать, но без ТВ вам нереально будет пройти модерацию при выкладке приложения в магазин. И если правда вам нужно приложение в магазине - нужно назваться компанией (формально, для вендора) и приготовиться на 1-6 месяцев переписки с модераторами. Они сами могут ошибаться легко и не пропускать. Но если вы ошибаетесь, скорость ответов от них для вас резко падает - с 3 дней до 3 недель, скажем. И считайте, что нужно пройти 5-10 попыток выложить приложение (т.к. найдя 1 ошибку или псевдоошибку, следующие уже не ищут). Разумеется, с соблюдением авторских прав владельцев контента. У Apple TV - наверное, похожая отдельная песня. ( https://www.digger.ru/things/5-prichin-ne-pokupat-... )

    Можно, конечно, распространять полулегально (хотя что считать легальностью?) разработческие версии, но года с 14-го Самсунг и ЛГ поставили ограничение, что собранное приложение для разработчика запускается, но не больше полугода (примерно). Потом надо снова пересобрать приложение. Другие пересобрать могут, т.е. распространять тогда надо исходный код с инструкциями и скриптами сборки (Node JS). Но без ТВ это у них не получится. А у Самсунга запустить из-под другого аккаунта - наверное, можно, ведь модераторы как-то проверяют. А просто разработчики - не уверен. Во всяком случае, могут и этот канал закрыть. (Или вы раз в полгода обновляете разработческую сборку, а другие тоже заходят с паролями разработчиков. Разумеется, эту "нездоровую движуху" вендор увидит по количеству запусков и аккаунтов и может, например, перекрыть. Т.е. вы этим способом не можете просто взять, написать и пользоваться с распространением - ТВ в этом плане не свободны. Неизмеримо проще просто использовать ТВ как монитор 4К, а сделать просто одно веб-приложение - игра, потоковое видео, прикладное - неважно.).

    С Тошибой запустить - мороки поменьше, запретных правил не так много. И вообще, чем меньше сил у вендора, тем меньше проблем с разработкой под него. А монстры уж очень обкладывают сертификациями, цифровыми подписями собранное приложение. И из-за этого сертификата не факт, что для Самсунга 2015+ получится собрать своими скриптами приложение. Для LG 2014 у меня получалось сделать из командной строки Нодой. И Самсунг тогда ещё не имел сертификации приложения (некий модуль в IDE, дающий подпись на базе вашего пароля разработчика) и тоже мог собираться без IDE.

    Для Андроид-ТВ-приставок приложения, проходящие через Аппстор Гугла - наверное, самый практичный вариант для себя и знакомых, имеющих такие же приставки. Но все они слабые (раз в 10 слабее компа или в 5 - смартфона) и быстро стареют, поэтому, в основном, игра не стоит свеч. Поэтому так мало приложений в магазинах вендоров. Там работают в основном фильмо- или ТВ-прокатчики, могущие позволить парк ТВ для разработки.

    Не всё так просто в королевстве датском.

    Тут https://en.wikipedia.org/wiki/List_of_smart_TV_pla... списки зоопарка. Большинство - устаревшие платформы. Актуальные - Android TV, Smart TV Alliance, Tizen OS for TV и Samsung Smart TV (Orsay OS) не для Тайзенов (выпускаются и сейчас).
    Ответ написан
    2 комментария
  • Почему gulp (v4) выдает "Did you forget to signal async completion?"?

    spmbt
    @spmbt
    Нужно запустить продолжение процесса:

    function cleanSassBlocks(f) { f();
        arrBlocksNames.forEach(function(blocksName) {
            return gulp.src(blocksName + '/**/*.css' )
                .pipe(clean({force: true}));
        }); 
    ...


    (как подсказано в https://github.com/sindresorhus/del/issues/45#issu... )
    Ответ написан
    Комментировать
  • Как различать объект DOM и объект Object в JS?

    spmbt
    @spmbt Автор вопроса
    > document.body+''
    "[object HTMLBodyElement]"
    > document.querySelector('div')+''
    "[object HTMLDivElement]"
    > document.querySelector('span')+''
    "[object HTMLSpanElement]"


    Или то же самое - .toString() (это в Firefox) - начинает становиться некоторым стандартом. Раньше JQuery 1.x определяла DOM-элемент наличием свойства .attributes, когда разброс по выдачам у браузеров был велик.
    Ответ написан
    Комментировать
  • Как выровнять текст относительно маркера в маркированном списке?

    spmbt
    @spmbt
    + text-indent (смещение 1-й строки)
    Ответ написан
    Комментировать
  • Необычное поведение JS в Firefox, почему так?

    spmbt
    @spmbt
    У Fx ограничение времени исполнения скрипта - 10 с. Увеличить его можно, поставив в about:config переменную
    dom.max_script_run_time
    в нужное значение. (Быстрее не будет, но и прерываться будет не так часто.)
    Ответ написан
  • Ноутбук в качестве второго монитора на Windows 7. Реально?

    spmbt
    @spmbt
    Maxivista www.thg.ru/display/maxivista/maxivista-01.html
    Air Display getairdisplay.com (Win7+)
    (обе - не только для планшетов)
    www.zoneos.com/zonescreen.htm - для компов, бесплатна;
    Если выводить на планшеты (расширение вопроса) Android или iPad, то ScreenSlider, iDisplay, Splashtop Xdisplay.
    Ответ написан
    Комментировать
  • Прижать футер книзу страницы

    spmbt
    @spmbt
    ...при условии, что футер должен быть частью основного блока, который располагается по центру страницы и сверху/снизу от него должны быть отступы.

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

    В Вашем случае - то, что по центру (по горизонтали) - несущественно. А вот Хедер и футер у вас должны быть сделаны 0% высоты, а остальными стилями вставить в них нужную ненулевую высоту блоков. Пример того, как это делается со страницами Хабра, описан здесь: http://habrahabr.ru/post/151320/ чтобы увидеть, как работает - поставить скрипт (лучше на Firefox или старую Оперу, там надёжнее работало) и перейти на короткую страницу, например, эту https://auth.habrahabr.ru/settings/privacy/ (до вчера работали QA, где было много коротких страниц). Так же будут работать и короткие статьи и прочее, например, страница подготовки статьи.

    Ответ написан
    Комментировать
  • Масимально простое приложение для уменьшения картинок?

    spmbt
    @spmbt
    www.picresize.com/
    и подобные (онлайн-сервисы)
    Ответ написан
    Комментировать
  • Как убрать из обработки один java script на сайте?

    spmbt
    @spmbt
    stackoverflow.com/questions/3141064/how-to-stop-all-timeouts-and-intervals-using-javascript
    В простых, но частных случаях помогает clearTimeout(1); для Fx и clearTimeout(0); для Chrome.
    Ответ написан
    Комментировать
  • Вопрос к администрации Хабра или Очередная идея про «Убийцу Фейсбука»

    spmbt
    @spmbt
    Если никто не будет против, но Вы так и не избавитесь от ощущения плагиата, могут помочь регулярные покаятельные исповеди, тексты которых можно будет собирать на собственных рекламных страничках или в блоге «Я пиарюсь». Тогда окружающие будут всё больше и больше проникаться вашими страданиями и со временем — всё больше и больше прощать.
    Ответ написан
    1 комментарий
  • Выбор ноутбука на следующие 5-ть лет

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

    На мой взгляд, ноутбук несколько теряет смысл если начинает не помещаться в формат сумки под документы A4 (это 14") — его сложнее перевозить. Он компактный — в этом плюс, легко переносится из комнаты в комнату, но медленнее и шумнее компьютера в отдельном системном блоке. И не сделано ещё хорошего ноута на 5 лет — процессоры только-только упали в теплорассеянии, как и видеокарты (NVidia 630 год назад), SSD не устоялись в качестве и цене, экраны — только начинают переходить на 1920. Поэтому года через 2-3 появятся и будут конкурировать более совершенные, лёгкие и дешёвые модели. Лучше брать ноут на 2 года или субноут под мобильные задачи.
    Ответ написан
    1 комментарий
  • Event когда чужой ajax завершил работу, jQuery?

    spmbt
    @spmbt
    onreadystatechange (только он может не во всех браузерах работать), не тот, который имеет отношение к аяксу, а этот: www.developphp.com/view_lesson.php?v=867

    developer.mozilla.org/en-US/docs/Web/Reference/Events/readystatechange
    Ответ написан
    1 комментарий
  • Вставить пустую строку в хабраредакторе

    spmbt
    @spmbt
    Это сделано сознательно, чтобы горе-сеошники не привлекали внимание пустыми промежутками и лента шла сплошной. Есть как минимум 3 HTML-способа обойти это в рамках статей но я не советовал бы пользоваться ни одним из них.
    Ответ написан
    Комментировать
  • Как организовать javascript код?

    spmbt
    @spmbt
    Если код раскладывается на дерево согласно зависимостям: общий код — в корне, частные — в подкаталогах, то можно так и хранить. Если хочется держать в одном каталоге, то или дерево подкаталогов дублируется там, или всё в одной куче, а вытаскивание из неё организуется через зависимости. Если частный код или плагин употребляется в более одном месте, его переносят к общему корню каталогов. Зависимости можно визуализировать в одном JSON-файле, чтобы скрипт мог доставать без ручной правки кодов во многих местах. Аналогичный вопрос часто свстаёт в среднесложных системах с более 2 десятками файлов. По теме, скорее, лучше гуглить на @require JS", «commonJS», AMD, хотя в них не решается вопрос о путях к файлам — это всё на усмотрение программиста.
    Ответ написан
    2 комментария
  • Как оградить HTML тег от воздействия css стилизации?

    spmbt
    @spmbt
    Назвать все дивы и прочие общие имена тегов своими именами, которым прописать необходимые свои стили и стили оригинальных тегов по умолчанию. Например, DIV заменить на MYAPPDIV, SPAN на MYAPPSPAN и т.д.
    Ответ написан
    Комментировать