• Как так оказалось, что часть Windows 10 не русифицирована?

    vla3d
    @vla3d
    У меня версия 19041. Такого пункта в данном месте нет.
    Возможно, вкладка добавляется драйверами на аудио (такое бывает например с тачпадом)
    Ответ написан
    3 комментария
  • Как нормально перегрузить функцию?

    К сожалению, в TypeScript придётся проверять через if.
    function dispatch<T>(key: DispatchKey<T>, value: DispatchValue<T>): void;
    function dispatch<T>(keys: DispatchKey<T>[], iterator: (key: DispatchKey<T>) => DispatchValue<T>): void;
    function dispatch<T>(
        keyOrKeys: DispatchKey<T> | DispatchKey<T>[],
        valueOrIterator: DispatchValue<T> | ((key: DispatchKey<T>) => DispatchValue<T>)
    ): void {
        if (Array.isArray(keyOrKeys) && typeof valueOrIterator === 'function') {
            setState((prev) => {
                const updated = keyOrKeys.map((key) => valueOrIterator(key));
                console.log(updated);
                return prev;
            });
        } else {
            setState((prev) => ({
                ...prev,
                [keyOrKeys]: valueOrIterator,
            }));
        }
    }
    Ответ написан
    7 комментариев
  • В чем преимущества TS?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    А ещё динамическая типизация сильно экономит время на написание кода - это очень нехилая оптимизация рабочего процесса.

    Это утверждение верно относительно языков с изначально статической типизацией против языков с динамической, но не верно для TS как такового. Если не использовать маньячные правила типа обязательного ручного проставления типов, то в 80% случаев TS сам прекрасно выводит тип, без лишних телодвижений.
    Огромное ускорение от типизированого автокомплита в IDE и отсутствия возможности, например, случайно кинуть в функцию объект вместо строки, с лихвой перекрывает оставшиеся 20%.
    Редкие случаи когда TS писал мне "какую-то хрень" и отказывался что-то делать, заставляя сидеть и разбираться - на поверку оказывались сильно неочевидными косяками в моём коде, которые могли бы привести к реальным багам.
    Ответ написан
    Комментировать
  • В чем преимущества TS?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Во-первых, откуда вдруг на клиенте должны появиться огромные объёмы данных, которые будут генерировать эти ошибки и затруднять их поиск? Вы собрались логику на клиенте считать? Тогда у нас уже тут принципиальное несовпадение по вопросам "соответствующих инструментов". Клиент в вебе нужен только для представления. Ну ещё какой-то интерактив - формы, события... Всё.

    Как там в 2010?

    как мартышка ковыряешься с проставлением типов (а иногда это и не особо очевидно), а потом оказывается что какой-нибудь популярный плагин (условный слайдер) в твоей экосистеме - не типизирован. Ручками писать? Потрошить внутренности плагина? Искать аналог?

    Это уж как вам удобно. Вам в большинстве случаев понадобится типизировать от стороннего плагина несколько, а то и один метод и пару аргументов. Не хотите ручками? Идём на https://www.typescriptlang.org/dt/search/ и ищем готовое. А в большинстве случаев достаточно создать файлик типа modules.d.ts и там прописать строчку declare module 'ldapjs-type-parsers';, где подставить имя пакета, для которого нет типов.

    Вопрос звучит как "уговорите меня использовать TypeScript". В общем вас никто не заставляет. Если лично вам неудобно, то пишите на JS.
    P.S. Я уже молчу про удобство рефакторинга ))
    Ответ написан
    7 комментариев
  • Можно ли сделать паузу в javascript?

    @zkrvndm
    Софт для автоматизации
    Можно, используйте await:
    window.addEventListener('load', async () => {
        
        var data1 = await $.getJSON('https://json файл разные');
        
        console.log('Получены данные:', data1);
        
        $(".mypanel").html(data1.hls);
        
        var A = ',{"get":"';
        var B = '",';
        var C = '"img":"';
        var D = '"}';
        var master = [A,data1.hls,B,C,D];
        
        var data2 = await $.post('zapros2.php', {name1: master});
        
        console.log('Получены еще данные:', data2);
        
    });

    Для справки: при AJAX запросах jQuery возвращает объект Deferred, который обратно совместим с Promise.

    Соответственно к нему можно применять await.
    Ответ написан
    1 комментарий
  • Как запустить computed в VUE3?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Ключевое слово в качестве имени переменной - что за бред?
    Как достучаться до параметров из script setup - читаем документацию.
    У вычисляемого свойства нет сеттера - так пусть будет функцией, объект не нужен.

    Исправляем:

    const props = defineProps({
      showBgBlue: {
        type: Boolean,
        default: true,
      },
    });
    
    const mainClass = computed(() => props.showBgBlue ? 'bg-blueGray-50 py-12' : 'bg-white');
    Ответ написан
    5 комментариев
  • Правильно ли я понимаю причину ререндеров в react+redux?

    @i1yas
    Предположу что вы делаете так:
    const MyForm = () => {
        const name = useSelector((state) => state.user.form.name);
        const surname = useSelector((state) => state.user.form.surname);
        const email = useSelector((state) => state.user.form.email);
        const agree = useSelector((state) => state.user.form.agree);
    
        ...
    }

    В этом случае даже один селектор тригернет ререндер компонента MyForm

    Нужно переработать форму так, чтобы компонент каждого поля внутри себя использовал useSelector:
    const Field = ({ name, ... }) => {
        const value = useSelector(...);
        ...
    }
    const MyForm = () => {
        return (
           <FormContainer ...>
              <Field name="name"/>
              <Field name="surname"/>
              <Field name="email"/>
              ...
           </Form>
        )
    }


    Собственно, это не специфика редакса, это то как хуки и рендеринг в реакте работают. Если ты подписался на значение, то все компненты ниже по дереву будут ререндериться на каждом апдейте. Общее правило - делать подписку на значение как можно ближе к месту использования этого значения.
    Ответ написан
    3 комментария
  • Зачем использовать callback функцию(именно передавать ее в качестве аргумента),если можно просто вызвать функцию,которая видна например по замыканию?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Callback-функция может меняться от вызова к вызову основной функции.
    Например, метод Array.prototype.sort(), в который передаётся функция, определяющая порядок сортировки. В зависимости от переданной callback-функции метод может сортировать как числа, так и строки или объекты, как в возрастающем или убывающем порядке, так и в более сложном, например по расстоянию от заданной точки.
    Кстати, onload в вашем примере - это тоже callback-функция, только переданная как свойство, а не аргумент другой функции.
    Ответ написан
  • Как добавить .webp в React?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1. Gulp точно не нужен. Мне прям вспомнился 2016 - тогда еще были сборки реакта галпом...
    2. В составе create-react-app используется webpack. Нужно просто расширить конфиг с помощью craco.
    Вот тутор , который сам для себя проверял на работоспособность: How to Optimize Images for Usage in Websites
    Ответ написан
    1 комментарий
  • Как типизировать асинхронный конструктор, если он не возвращает экземпляр?

    vabka
    @vabka
    Токсичный шарпист
    Попробуй вместо "асинхронного конструктора" сделать асинхронный фабричный метод, который будет возвращать промис с полностью собранным объектом

    class Something {
        constructor(private text: string){
    
        }
        
        public static async create(): Promise<Something>{
            const text = await Promise.resolve("txt");
            return new Something(text);
        }
    }
    Ответ написан
    1 комментарий
  • Jquery Что это за инициализация класса и зачем?

    @weart
    чтобы юзать внутри $('.pirozok')
    Ответ написан
    Комментировать
  • Почему везде используют const вместо let в JS?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Редактор кода домой не отпустит, пока переменную, которую нигде не изменяют,
    не объявить вместо let — const )

    Иммутабельность должна быть явной!

    При чтении кода гораздо удобнее для понимания изначально знать, что от константы сюрпризов не ждать.
    А переменную стоит посмотреть внимательнее: где, как, зачем и на что меняют.
    Ответ написан
    Комментировать
  • Как сделать, чтобы нормально удалялись русские символы в терминале PhpStorm?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Зачем писать сообщение коммита через терминал? В самом IDE же нормальный интерфейс для коммитов? Через терминал вы всё равно не сможете больше одной строки вставить в сообщение.

    Git Bash внутри IDE он абсолютно такой же, как тот что запускается отдельным окном.
    Но там почему-то настройки локализации не передаются.
    Помогает правка .bashrc, добавьте туда строки
    LANG="ru_RU.UTF-8"; export LANG
    LC_ALL="ru_RU.UTF-8"; export LC_ALL

    Возможно станет получше.
    Ответ написан
    6 комментариев
  • Как записать в JSON число только с ДВУМЯ цифрами после точки?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Вам программа подсказывает что вы неверно работаете с сущностью "бабло".
    Бабло должно быть строкой или интом.
    Вы делаете из него флоат и получаете ровно то, с чем борятся говоря "бабло должно быть строкой".

    1) Функции связанные с деньгами это отдельный класс в приложении который использует для их расчета функции bcmath, умеющие считывать произвольное число знаков до и после запятой и считать число не взирая на разряд.

    2) Для работы с деньгами используют библиотеку phpmoney где большая часть нужных вам вещей уже завернута, есть парсер и форматтер, поддерживаются валюты и с гемором но можно даже создавать свои. К сожалению, парсинг валют с сайта банков вы скорее всего будете писать сами, т.к. предложенный вариант парсит их из какого-то источника, который не учитывает ситуацию в вашей стране, но сама поддержка переводов валюта-валюта есть.

    3) Для работы с деньгами дописывают функции "округление в большую сторону и округление в меньшую сторону с учетом копейки в последнем разряде", их в пхп нет, они считаются "не математическими", как и вся экономика основаны на "кто кому чего должен" а не "сколько будет". Так округление 1.0005 до двух знаков равно 1.00, тогда как экономика считает что 1.01. И тут тоже два пути. Если вы выставляете клиенту цену, то это 1.01 (копейку содрать с клиента), а если клиент пополняет баланс, то это округление в меньшую сторону - на баланс зачисляется 1.00 (снова содрать копейку). Экономика очень подлая хрень. Она экономит всё. Но не за счет себя, а за счет того, кто платит. И вы еще спрашиваете почему "бизнес это благо", потому что те кто им занимаются грабят остальных средь бела дня (если даже в программировании вопрос копейки, то что в маркетинге - я боюсь даже представить, цена из воздуха, хайп и лексусы) и никто еще и доказать этого не может. Везде бумага "сам согласился и подписал".

    4) Для работы с баблом также вводят собственную валюту (желательно), т.к. остальные скачут как хотят, а ваша цена на сайте остается прежней, но при этом в самих валютах имеет разное выражение. Помните, да, "Игровое золото"? Это не просто "прикольно". Это юридически и экономически необходимо. Вам. Ведь если компания теряет деньги, то внезапно оказывается, что сам директор кроме бумаг ничего не выдает в мир. А вот из-за вас, программистов, у него из кармана утекает. Замалчивая факт "откуда приходит" очень весело обвинять всех, что "из-за них - уходит".

    Как и в экономике. Кто делает - тот платит. Кто не делает - тот выигрывает. В общем - мобилизация не случайность. Медитируйте. Желательно с книгой Ленина.
    Ответ написан
    24 комментария
  • Как записать в JSON число только с ДВУМЯ цифрами после точки?

    @zkrvndm Автор вопроса
    Софт для автоматизации
    Проблема была в настройках хостинга, конкретно же в директиве serialize_precision.
    Обычно ставится -1 на новых версиях php, у меня же значение было иное, оттуда и проблемы.
    Ответ написан
    Комментировать
  • Как убрать эту линию в phpStorm и вообще зачем она нужна?

    delphinpro
    @delphinpro Куратор тега PhpStorm
    frontend developer
    Опция называется Hard wrap at.
    Задаётся как общая для редактора, так и может быть переопределена для отдельного языка.
    632c6af440f08828626401.png
    Ответ написан
    Комментировать
  • Какая видеокамера подойдет/такое может?

    @TheBigBear
    СтарОдмины мы
    Если на коленке...
    Любая Wi-fi внешняя китай-камера с поддержкой P2P и приложением на телефоне. Лично я топлю за IMOU - у них есть полезная функция Human detected
    Любой USB свисток с поддержкой Wifi (например Huawei 3372) плюс автомобильная USB зарядка (защищается от непогоды на раз)
    Блок питания на 12В. Это может быть аккумулятор от автомобиля или ИБП или твори на 18650
    На ИБПшном аккуме 7 АЧ вся эта конструкция продержится больше суток

    Я когда делал миниатюрные 5В бесперебойники на одном аккуме 18650 с платой с Али делал замеры
    Например камера Imou Cue 2 потребляет 5В 0.4 А в нормальном режиме и 0.5 А в просмотре через WiFi и 0,5-0.6 А при включении ночной подсветки

    Возможно и существуют камеры со встроенной СИМкой - я такие не юзал, а конструкцию выше - да
    Ответ написан
    6 комментариев