Задать вопрос
  • Как добавить префикс к словам?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Добавить - проще решить без регулярок
    str.split(',').map(s => '-' + s).join(',');
    Обратно можно через split + replace /^-/ + join. Или просто первый символ отсечь, если уверены в его наличии.
    Ответ написан
    1 комментарий
  • Как сделать синхронный scroll на react?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) В useEffect добавляем event listener на scroll у window
    2) Читаем в обработчике window.scrollY, записываем куда хотим
    3) Не забываем удалить листенер при анмаунте компонента (return в useEffect)
    Ответ написан
    Комментировать
  • Каким образом взаимодействует сегодня Back-End и Front-End?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Нет, не все сайты работают так (с разделением на фронт/бэк) - некоторые по-старинке. И не всегда новый подход оправдан.
    В основном имеет смысл там, где много интерактива - при старом подходе все равно приходится делать апи для всяких lazy-load/поиска/фильтрации, решать где/как будут хранится шаблоны, в каком формате передавать и пр. При новом подходе за все это отвечает фронт, бэк предоставляет только данные.

    • Чаще всего используется http+json для взаимодействия фронт-бэк, но есть варианты.
    • С помощью React мы запрос не делаем. React это что-то вроде продвинутого шаблонизатора. Запрос мы делаем через js (browser api). Бэк только отдает json.


    Преимущества:
    1. Можно разделить работу фронт и бэк команд
    2. Можно переписать фронт/бэк, используя интерфейс API как контракт взаимодействия
    3. Между фронтом и бэком бегают чисто данные, без шаблонов. Но см. п. 3 недостатков.
    4. Перенос нагрузки с бэка на фронт (редко это оправдано, но все же).
    5. Интерфейс становится более отзывчивым (если делать все хорошо)
    6. Проще протестировать поотдельности


    Недостатки:
    1. Больше кода, больше компетенций, сложнее система
    2. Проблемы с индексацией, задейсвуются смешанные варианты (SSR)
    3. Размер кода на фронте, больше нагрузка на устройства


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

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Подозреваю, что WebSocket сюда подойдет лучше.
    Фиксируем время подключения, периодически шлем "пинг", подсчитываем минуты. При отключении так же подсчитываем минуты (с подключения или последнего пинга).
    Проблема в том, что PHP не очень-то подходит для работы по WS, т.к. требует работы в качестве демона. Т.е. можно, но трудоемко.
    Можно со стороны прикрутить мини-сервис на node.js.
    Или сделать в формате "запрос каждые N минут", а дорабатывать уже после возникновения проблем с масштабированием (если до них дойдет).
    Ответ написан
    1 комментарий
  • От куда бесплатно парсить курсы криптовалют?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Не совсем понял - нужны средние цены валют или информация по торговым парам?

    Если торговые пары:
    - Непосредственно с апи бирж
    - Можно через бесплатные библиотеки, например ccxt

    Если средние:
    - Coingecko
    - Cryptorank
    - Cryptocompare
    - CMC
    - Наверняка есть и другие варианты - гугл в помощь
    Ответ написан
    Комментировать
  • Как при переборе массива с объектами удалить один элемент с объекта?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Не совсем понял, что требуется
    1) Удалить элемент из массива - filter
    2) Удалить элемент из объекта - оператор delete
    3) Получить объект без указанного свойства - `const {uselessParam, ...newObj} = obj;`
    4) Или так - `Object.fromEntries(Object.entries(obj).filter(...))`
    Ответ написан
    Комментировать
  • Как сбросить кеш на всех серверах?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Да, можно отправлять запросом, но:
    1) Есть функционал очистки кэша по определённым критериям, доступен он только в коммерческой версии nignx
    https://nginx.org/ru/docs/http/ngx_http_proxy_modu...
    2) Конечно, можно накостылить, чтобы по определённому запросу удалялись файлы. Но лучше это как-то защитить (хоть basic auth). И, кажется, это потребует перезапуска nginx (может и reload хватит).
    3) Ещё есть модуль https://github.com/FRiCKLE/ngx_cache_purge - но я не знаю, насколько он сейчас работоспособен

    Как вариант - перенести кэш из nginx в другое более управляемое хранилище (например редис) и очищать его при правках.
    Ответ написан
    7 комментариев
  • Как сделать калькуляцию строки в JS?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) В лоб и наименее безопасно - eval
    2) Чуть более замороченно - оборачиваем в функцию через new Function
    3) Замороченно, но интересно - распарсить строку, разбить на операторы и операнды и считать это всё с учётом приоритета операторов и скобок
    4) Скучно и обыденно - берём библиотеку типа mathjs и скармливаем ей
    Ответ написан
    Комментировать
  • На чем писать лендинг в 2021 в js разработке?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Всё сильно зависит от требований:
    1) Скорость загрузки - чем меньше сторонних либ, тем лучше
    2) Удобство поддержки. Обычно лэндосы делаются один раз и больше никогда не дорабатываются, т.е. на качество и красоту кода плюс-минус пофиг.
    3) Поддержка браузеров. Вроде, IE уже отмирает и эта фича jQuery уже особо не нужна.
    4) Поддержка SEO. С SPA фреймворками будут сложности, надо городить SSR/пререндеринг.
    5) Количество интерактива на странице. Если его нет, не считая анимаций - то зачем нам продвинутые библиотеки/фреймворки.

    Я не вижу ничего плохого, чтобы использовать jquery, но и смысла в нём тоже не вижу - браузерное апи вполне удобное для 90% задач, которые раньше решались этой либой.
    youmightnotneedjquery.com

    Я бы вообще взял что-то легковесное, что цепляется к уже имеющемуся html коду (а не генерит его с нуля). Вроде бы vue это умеет, давно его не трогал.
    Ответ написан
    Комментировать
  • Как правильно использовать useSelector и store.getState?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    В Redux Style Guide рекомендуют 2-й вариант
    https://redux.js.org/style-guide/style-guide#call-...
    Ответ написан
    3 комментария
  • Как конвертировать все scss в css?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    scss это препроцессор.
    Он берёт scss код и делает из него css код
    Т.е. нужно просто прогнать через него файлы проекта
    Ну, или действительно изучить scss - базовый функционал там не сложный
    Ответ написан
    Комментировать
  • Как запустить анимацию, когда доскролили к блоку?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Современный подход - Intersection Observer API
    https://developer.mozilla.org/ru/docs/Web/API/Inte...

    Старый - смотреть координаты блока и по скроллу разбирать данные вьюпорта. Пересекли или нет. Наверняка есть какие-то готовые библиотеки для этого.
    Ответ написан
  • Как сделать переносимый текст, который не влияет на остальные элементы в блоке?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Самый простой способ сделать блок в тексте обтекаемым - добавить ему float.
    Более продвинутых технологий для этого, по-моему, так и не ввели (например, если нужен не прямоугольный блок или для расположения блока в центре текста).
    Ответ написан
  • Почему пропадает первая тень?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Тень пропадает, потому что мы переписываем предыдущее свойство - так работает CSS.
    Если мы хотим добавить ещё одну тень к предыдущим двум - нужно добавить её через запятую в первую строчку box-shadow.
    Ответ написан
    Комментировать
  • Как реализовать логику смены на темную тему в приложении React?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    React от обычного сайта почти не отличается (если не использовать подходы css-in-js) - т.е. так же верстаем адаптив с media и импортим css файлики в наши компоненты.

    Подключать разные файлы - можно, но неудобно будет поддерживать.

    По тёмной теме вариантов много (не все про реакт):
    0) Дешево и сердито, через filter. Выглядит кривовато, но максимально просто.
    https://dev.to/jamiepo/go-dark-mode-with-css-filte...
    1) Использовать CSS variables и при изменении менять глобально класс для html. Текущую тему хранить в react context, например.
    https://css-tricks.com/a-complete-guide-to-dark-mo...
    https://medium.com/swlh/setting-up-light-and-dark-...
    2) Для некоторых решений css-in-js есть свои подходы.
    Для styled components, например https://styled-components.com/docs/advanced#theming
    Ответ написан
    2 комментария
  • Как включить decorators-legacy в react-create-app?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Из-коробки - никак.
    https://create-react-app.dev/docs/can-i-use-decorators/
    Декораторы, которые используются mobx - это стандарт, который не утвердили и его будут сильно переделывать.
    Т.е. использовать их не рекомендуется и последняя версия mobx умеет работать без них.

    Если всё-таки хочется - нужно модифицировать конфиг babel и добавить туда плагин декораторов.
    2 пути:
    - сделать eject и модифицировать конфиг вебпака
    - запускать CRA через обертку, которая будет модифицировать конфиг вебпака (например react-app-rewired / react-scripts / craco)

    https://github.com/gsoft-inc/craco/blob/master/rec...
    Ответ написан
    Комментировать
  • Где хранить большой массив объектов в реакт приложении?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Мой взгляд, на истину не претендую:

    Я сторонник того, что на клиенте вообще не стоит хранить большие объемы данных. Т.е. запрашивает только те, которые нам нужны для работы/отображения в конкретный момент. Все фильтры/сортировка/пагинация на стороне сервера. Понятно, что это не всегда возможно, поэтому идем дальше...

    В хранении большого объема данных в редаксе не вижу ничего плохого, если они редко меняются. Если часто - неприятно, нужно поддерживать иммутабельность, затраты на garbage collector.
    Плюсы - быстрый доступ до данных, т.к. хранятся они в памяти.
    Минусы - поддержка иммутабельности и затраты на память.

    Если уж отходить от редакса - можно воспользоваться каким-то стором на основе мутабельных объектов, например mobx.

    Если всё это держать в памяти не хочется - то действительно можно взять IndexedDB. Хранится на диске, между перезагрузками сохраняется, асинхронное апи, есть индексы по полям. Нужно учесть, что на браузерах в режиме инкогнито может не работать или работать ограниченно (для предотвращения отслеживания).

    Ну и, конечно, вопрос в объеме данных. Просто 2к объектов - не то, чтобы сильно много. Вопрос, насколько тяжелых объектов.
    Ответ написан
    2 комментария
  • Как в nextjs использовать config только для локальной разработки?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) Если я ничего не путаю - по умолчанию nextjs не умеет работать с json конфигами. Только с .env файлами. Т.е. используется сторонняя библиотека - какая?
    2) А develop.json, в данном случае, не соответствует конфигу для локальной разработки?
    Ответ написан
  • Примеры приложений MERN стека?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Вообще удобно смотреть по realworld app - там стандартизован интерфейс, есть разные имплементации фронтов и бэка
    https://codebase.show/projects/realworld
    Бэк по nodejs+mongo там сейчас не поддерживается.
    Но ознакомиться можно тут: https://github.com/gothinkster/node-express-realwo...
    Впрочем есть свежий пример на базе SQL БД: https://github.com/Varun-Hegde/Conduit_NodeJS
    С реактом там 3 варианта на выбор
    Ответ написан
    1 комментарий
  • Безопасно ли использовать легаси библиотеки рекакт?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    По сути, ничего криминального в использовании устаревших методов нет.
    Но нужно учитывать, что такая библиотека может осложнить переход на следующую версию react.
    Ну и да, при желании библиотеку можно форкнуть и доработать.

    Стоит или нет - вопрос, сколько времени/сил она сэкономит и нет ли других решений данной задачи.
    Ответ написан
    Комментировать