Задать вопрос
  • Как правильно склонировать объеты?

    bingo347
    @bingo347 Куратор тега JavaScript
    Антон Антон, можно и lodash, хотя я лично предпочитаю ramda, если сборка tree-shake'ается нормально, то это будет в разы оптимальнее, чем через сериализацию гонять
  • Почему не отправляются сообщения в iframe?

    bingo347
    @bingo347 Куратор тега JavaScript
    корректный origin будет http://child.com, я бы в первую очередь глянул, нет ли редиректа на https
  • Что лучше для работы с файлами QT или C#?

    какое отношение gui фреймворк имеет к работе с файлами?
  • Как правильно склонировать объеты?

    bingo347
    @bingo347 Куратор тега JavaScript
    как же на qna не хватает отметки ненравится...
    клонировать объекты через сериализацию - верх расточительства, да еще и клон будет с потерями...
  • Как использовать дженерики в @Input?

    bingo347
    @bingo347 Куратор тега JavaScript
    Не притворяйся как будто не понял о чем пишу. Весь контент по программированию на английском зачем вообще русские слова юзать тогда.
    @fomenkogregory, иф ол ов контент ин Инглиш, вай ду ю райт ин Рашн он дэ текникал ресурс? nadeus' ponyatno stalo, pochemu po-angliiski ludi pishut latinicey, a po-russki - kirilicey?
  • Возможен ли условный тип исходя из статического свойства класса в TypeScript?

    bingo347
    @bingo347 Куратор тега TypeScript
    func<typeof B, boolean>(true); // так тоже примет...
    
    // лучше уж так написать:
    function func<T extends typeof A>(param: T['bool'] extends true ? number : string) { }
  • Почему функция addTask() не работает?

    bingo347
    @bingo347 Куратор тега JavaScript
    Рич Пиана, добавлю небольшое замечание: в валидном html внутри элемента ul могут находится только элементы li
    Браузер имеет полное право "починить" такую невалидную верстку выкинув div.wrapper_li вместе с div.buttons за пределы ul, оставив внутри лишь li, не удивляйтесь, если где-то из-за этого верстка поедет
  • Почему много людей в IT недовольны своей работы?

    но 20 миллионов нищих граждан России я думаю скажут обратное.
    Ярослав Александров, конечно, зависть то к счастью не приводит... В совке почти все были обречены быть нищими, кроме горстки людей, которые обзавелись нужными знакомствами и завидовать некому было. А сейчас есть возможности, вот только тем, кто по каким-то причинам не в состоянии поднять свою 5 точку, остается только завидовать, ибо на большее не способны... Какое уж тут счастье?
  • Реакция в 00:00, как сделать?

    bingo347
    @bingo347 Куратор тега JavaScript
    WbICHA, Что б функция была чистой, я никогда не мутирую аргументы, это путь к трудноуловимым багам. Тем более v8 вполне способен оптимизировать клонирование объектов, особенно встроенных, особенно если предыдущий при этом дохнет.
    Функция getMidnightDate берет полночь от переданной даты (по дефолту текущая), как по мне это гораздо логичнее, чем возвращать полночь от какой либо другой даты.
  • Как сделать постоянный фоновый Process в C#?

    Борис Животное,
    мысль интересная, но "если да кабы", в данном случае точно известно, что нет там никаких переопределённых операторов, это обычная строка.
    Я бы не был так уверен работая с completeness type system. Ну и даже если сегодня там строка, от которой нельзя наследоваться, никто не гарантирует, что завтра эту строку не завернут в декоратор, и у него не будет перегрузки операторов. И тайпчекер ничего не скажет, что проверка на null вдруг стала некорректной. И даже если здесь всегда будет строка, в других местах может быть не строка, и у Вас будет 100500 разных вариантов сделать одно и то же, либо будут ошибки.
    Зачем выдумывать какую-то надёжность и проблему, которой нет и быть не может?
    Если бы проблемы не было, то с развитием языка не появлялись бы способы для ее решения. Проблема огромна, большинство ПО пестрит багами, и большинство из них существуют из-за таких вот "я не вижу проблем, я не хочу развиваться, я застрял в 90х и мне норм, пишу как умею".
    Если проверка на null кинет эксепшен, то это нужно исправить тому, кто пишет код, а не "надёжной" проверкой скрывать проблему.
    То есть по Вашему лучше переложить ответственность, заодно наложив искусственные неявные ограничения, вместо того чтоб решить проблему на корню? Использование более надежного подхода как раз таки не скрывает проблему, а решает ее.
    И причём здесь вообще библиотека и функциональный подход?
    А причем тут функциональный подход? Или увидели монады и все, "а-а-а, ФП, сложна, лучше пойду дальше быдлокодить"? Так вот, монады это не про ФП, монады это про гарантии, что с данными будут работать корректно. И да, ошибки - это тоже данные, поэтому их нужно возвращать как результат, а не бросать вместе с исключительными ситуациями, и монада Either (или аналоги) идеально для этого подходит, так как гарантирует, что вызывающая сторона не получит свои данные пока не обработает ошибку. Механизм throw-try-catch ничего не гарантирует, а на практике он приводит к скрытым багам из-за нарушенного потока данных.
  • Как сделать постоянный фоновый Process в C#?

    чем операция is более надёжна? Чем проверка
    !(value is null)

    надёжнее такой проверки?
    value != null

    Борис Животное, если у проверяемого типа будут перегружены операторы сравнения, то Вы легко поймаете NPE, is же не приведет к такому результату

    про исключение вообще забавно. Особенно про нечитаемый файл и возврат с помощью return. И что нужно по вашему вернуть через return, если файл не читается? Слово Error :)? Нужно бросать исключение, а если быть точным, то оно будет брошено методом класса фреймворка, если файл не удастся открыть. Какие могут быть баги, если try catch на уровне метода нажатия на кнопку и пользователь знает об ошибке? В данной ситуации try catch нужно использовать, а не крашить приложение.

    Верните Either отсюда, а там может и до Option дойдете, тогда и на null проверять не придется
  • Почему не работают функции на js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Scriptoo, в любом случае, Вы считали поля еще до того как пользователь их заполнил
  • Как сделать постоянный фоновый Process в C#?

    Не нужно от них избавляться. Если это нажатие на кнопку, там ему самое место, просто нужно или залогировать информацию об ошибке, или вывести информацию на экран (или всё вместе). Если бы он в классе с алгоритмом подавлял ошибки, то да, это было бы не то что неподдерживающийся хаос, это просто был бы нерабочий код, который нельзя так писать. Проще говоря, если не будет трай кэтча в методе нажатия на кнопку, то приложение будет просто крашиться. Мы же можем приложение не крашить, а просто завершить выполнение работы не получив результат. В таком случае, имея логи, можно разобраться в проблеме. Бывают ошибки, не связанные с алгоритмом, например, антивирус заблокировал файл, не удалось его открыть и прочитать. У меня такое было.
    Если произошло исключение (исключительная ситуация) - программа должна была падать, ибо это косяк программиста и его надо ловить как можно раньше. Если файл не читается - это не исключение, а ошибка, ее не надо кидать через throw, ее нужно возвращать через return и обрабатывать, ибо это штатная ситуация, ожидаемый результат вызова. Вездесущие try-catch - рассадник багов.
  • Как сделать постоянный фоновый Process в C#?

    Борис Животное, нет, в JS нет такой операции is, это операция из последнего шарпа, и она более надежна чем v != null
  • Как реализовать функцию которая выводит значение объекта?

    bingo347
    @bingo347 Куратор тега JavaScript
    А зачем здесь acc =? Без него логика не изменится, но уберется сайд эффект, что сделает функцию чистой с точки зрения оптимизатора, и позволит применить больше оптимизаций, тот же инлайнинг например
  • Как развернуть юнион в интерфейс?

    bingo347
    @bingo347 Куратор тега TypeScript
    G F, с типом символов у TS есть некоторые траблы, так как все символы имеют unique тип, но unique типы еще до конца не реализованы.
    Можно ограничить U только строками, и тогда все будет работать:
    type Union = 'a' | 'b' | 'c';
    type Obj<U extends string> = {
      [K in U]: any;
    };
  • Как повысить производительность js-кода?

    bingo347
    @bingo347 Куратор тега JavaScript
    WbICHA, меня именно эта строка и смущала, так как менять размеры массива через установку элементов не очень хорошая идея в плане производительности
  • Как повысить производительность js-кода?

    bingo347
    @bingo347 Куратор тега JavaScript
    WbICHA, разница в 10 раз выглядит мега странно, но тем не менее:

    win10, node 12.13.0, v8 7.7.299.13-node.12, AMD Ryzen 5 3600

    first for: 78.940ms
    ----------------------
    second for: 1536.180ms
    вообще в 20 раз вышло

    Debian 10, linux 4.19.0-5-amd64, node 14.4.0, v8 8.1.307.31-node.33, Intel Pentium G4560

    first for: 108.457ms
    ----------------------
    second for: 1.829s
    где-то в 1.5 раза...
  • Как повысить производительность js-кода?

    bingo347
    @bingo347 Куратор тега JavaScript
    xmoonlight, хм, думал количество realloc сократит, но кажись v8 как-то оптимизирует