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

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

    Seasle
    @Seasle
    \( ゚ヮ゚)/
    К сожалению, в 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 комментариев
  • Где лучше хранить БД? В докере или нет?

    @bacon
    если тебе пофиг на данные, храни в докере, если нет, то через volumes
    Ответ написан
    Комментировать
  • В чем преимущества TS?

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

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

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

    Как там в 2010?

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

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

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

    @zkrvndm Куратор тега JavaScript
    Софт для автоматизации
    Можно, используйте 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 Что это за инициализация класса и зачем?

    @TheAndrey7
    Убирайте. Она совершенно не нужна, если jq не используется в коде.
    Ответ написан
    Комментировать
  • Jquery Что это за инициализация класса и зачем?

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

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

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

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

    Seasle
    @Seasle Куратор тега CSS
    \( ゚ヮ゚)/
    Ответ написан
    1 комментарий
  • Как сделать, чтобы нормально удалялись русские символы в терминале 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, у меня же значение было иное, оттуда и проблемы.
    Ответ написан
    Комментировать