• Почему синхронный код в JS потребляет больше памяти?

    Fragster
    @Fragster
    помогло? отметь решением!
    await - это не "синхронно". Это синтаксический сахар. Соответственно, "внутри" всё то же самое, те же промисы и коллбэки. Скорее всего кушать память стало из-за кривого переписывания.
    Ответ написан
    Комментировать
  • Как распределить значение по ячейкам примерно равномерно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    function distribute(arr, val) {
      let n = arr.length;
      let dVal = val;
      while (dVal > 0) {
        let d = dVal / n;
        dVal = 0;
        for (let i = 0; i < arr.length; i += 1) {
          if (arr[i] === 1) {
            continue;
          }
          arr[i] += d;
          if (arr[i] < 1) {
            continue;
          }
          dVal += arr[i] - 1;
          arr[i] = 1;
          n -= 1;
          if (n === 0) {
            return undefined;
          }
        }
      }
      return arr;
    }
    Ответ написан
    2 комментария
  • Как распределить значение по ячейкам примерно равномерно?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Для каждой ячейки известна её оставшаяся до потолка 1 «ёмкость».

    Сложить ёмкости = capacity вместимость всего массива.
    Если X > capacity — «невпихуемо!» — задача не имеет решения.

    Коэффициент k = X / capacity меньше или равен 1.
    Идти по ячейкам, откусывать от X в очередную кусочек, пропорционально ёмкости этой ячейки с коэфф. k.

    Так в каждую доложат пропорционально её ёмкости, сглаживая неравномерность заполнения.
    шесть строк на JS
    const spread = (value, arr) => {
      const CELL_MAX = 1;
      const sum = arr.reduce((acc, c) => acc + c);
      const capacity = arr.length * CELL_MAX - sum;
      if (value > capacity) throw new Error("Value won't fit");
      const k = value / capacity;
      return arr.map(el => el + (CELL_MAX - el) * k);
    }
    
    spread(0.2, [ 0.1, 0.1 ]) // [ 0.2, 0.2 ]
    spread(0.2, [ 0.1, 0.99 ]) // [ 0.29780219780219785, 0.9921978021978022 ]
    Ответ написан
    2 комментария
  • Существует ли какая- та тула, плагин или просто сервис который бы помогал улучшить код.?

    На небольших масштабах с этим справляются различные инструменты статического анализа (типа sonar или pvs) а также твоя IDE (например в intellij idea ultimate достаточно много разных анализов и рефакторингов).

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Как только такая появится, вы станете не нужны.
    Ответ написан
    Комментировать
  • Можно ли назвать это обучение?

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

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    То, что Вы перечислили, это компиляторы макроассемблера. Сам ассемблер - набор кодов конкркетной архитектуры процессора.
    Такчто проще всего начать с процессоров архитееуры CISC. Это в основном 8, 16 и 32 разрядные архитекуры. Архитектура RISC более проста, но и более стожна, за счет большего количества действий, в программировании.
    Предлагаю взять что-то из семейства микроконтроллеров mips8, купить набор для разработчика за 1000 рублей и поморгать саетодиодами. Хотя до светодиодов дойти буднт труднл.
    Лучшая книга по ассемблеру - Дональд Кнут!
    Он придумал простой виртуальный процессор, на основе которого написаны его книги "искусство програмиирования". Есть куча эмуляторов для его архитектуры. Дерзайте!
    Ответ написан
    3 комментария
  • Почему вовремя ввода определённых чисел воспроизводит - 0 или Nan?

    1. В этой строке
    (a + b + c) / 2
    Будет происходить целочисленное деление, тк сумма a+b+c и 2 имеют тип int.
    Чтобы это исправить, тебе надо написать так:
    (a+b+c)/2.00
    Значение 2.00 имеет тип double и тогда деление пройдёт как ожидается.

    2. При значениях 9 9 19 будет браться корень отрицательного числа (даже если исправить первую проблему), а так как double - это не комплексное число, то и значение такое оно представить не может.

    3. А почему 0 у тебя получается в первом случае - хз. Запускал в консоли и у меня получилось 55.31
    Мой код

    // Запускал в roslynpad. Тебе возможно придётся убрать вызовы Dump и добавить юзинги
    var result1 = CalcualteAreaOfTriangle(11,11,12).Dump("result 1");
    var result2 = CalcualteAreaOfTriangle(9,9,19).Dump("result 2");
    
    
    static double CalcualteAreaOfTriangle(int a, int b, int c)
    {
        var p = (a + b + c) / 2.00;
        p.Dump("p");
        var s1 = Math.Sqrt((p * (p - a) * (p - b) * (p - c)).Dump("pre sqrt"));
        var s2 = 0.5 * a * b;
        if (s1 == s2)
        { // Кстати это почти никогда не будет срабатывать из-за IEEE754
            Console.WriteLine("Треугольник прямоугольный");//а точно ли?
        }
        return s1;
    }



    PS:
    button1, a, b, c, s1, s2, label4, label5, Form1, textBox1, textBox2, textBox3, button1, p
    Осуждаю такое именование.
    Ответ написан
    3 комментария
  • Какие есть максимально простые напоминалки для Windows 10?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Почта и Календарь.
    Ответ написан
    Комментировать
  • Где стоит писать свою 2д игру?

    LittleBob
    @LittleBob
    Если хотите харда - можно на SFML, MonoGame и прочих таких фреймфорках.
    Либо по классике, Unity, Godot, GameMakerStudio.
    От ваших запросов всё зависит.
    Ответ написан
    1 комментарий
  • Где стоит писать свою 2д игру?

    Проще всего взять уже существующий движок.
    UE кмк - это оверкилл, да и он больше для 3d.

    Я бы выбирал между Unity и Godot
    Ответ написан
    1 комментарий
  • На каком ЯП стоит писать программу для управления компьютерным клубом (десктоп)?

    Совершенно не имеет разницы на чём это делать.

    Тут у тебя по сути две (или три) части:
    1. Пользовательский интерфейс, где можно кнопочки нажимать и посылать какие-то команды (типа разблокировать комп №42 на 3 часа)
    2. Некоторая система, которая будет непосредственно эти команды реализовывать.
    3. Возможно, ещё какая-нибудь финансовая система, чтобы ещё деньги считать и чеки печатать.

    Все три могут быть как частями одной программы, написанной на одном языке, так и несколькими независимыми программами (написанными, возможно, на разных языах), которые между собой общаются через какой-нибудь сетевой протокол (например по HTTP).

    Самое сложное (не понятное) - это вторая, и она даже может состоять из нескольких частей (например сервер, который всем управляет и агент на управляемом компьютере)

    Пользовательский интерфейс может быть написан решительно на чём угодно - это может быть даже сайт, который будет через http обращаться к серверу, а может быть и привычный для тебя Windows Forms

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

    Griboks
    @Griboks
    Надо сделать интересную игру.
    Ответ написан
    2 комментария
  • Как написать маску для банковской карты и для даты в формате ММ/ГГ?

    iMedved2009
    @iMedved2009
    Не люблю людей
    /([0-9]{4}) ([0-9]{4}) ([0-9]{4}) ([0-9]{4}) ([0-9]{4})/


    /([0-9]{2}\/[0-9]{2})/
    Ответ написан
    Комментировать
  • Можно ли обучить бота повторять действия в игре?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если речь идет о computer vision - то да. Скорее всего можно. Но мне жаль ваш талант. Если вы действительно создатите такого бота который обучается по картинке то вас можно нанимать на работу и платить столько денег что дешевая прокачка Эльфа в какой нибудь MMORGPG вам станет просто не нужна. Сможете купить все.
    Ответ написан
    Комментировать
  • Как программно решить проблему потери пакетов или хотя бы сгладить её?

    ValdikSS
    @ValdikSS
    Попробуйте kcptun, он создан как раз для таких ситуаций.
    Ответ написан
    Комментировать
  • Как программно решить проблему потери пакетов или хотя бы сгладить её?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дело в том что нельзя решать проблемы TCP находясь выше уровня TCP.

    Сами потери пакетов этот протокол решает повторной пересылкой (TCP Retransmission).
    Тоесть технически это уже решено в самом протоколе. Разумеется не безплатно и ценой
    потери времени. Когда у вас примерно 50% теряется - это ситуация "очень плохо".

    Так работать нельзя и нужно решать эту проблему именно в том месте где она возникает. Если
    это физический уровень то надо менять кабели (антены) или если это работа шейперов и firewalls
    то решать это соотв там.

    По поводу удвоения трафика и избыточности. Можно использовать различные коды Хемминга и РидаСоломона
    но они требуют буфера. Причем если единица потери у вас это TCP-пакет то для удачного восстановления
    надо хотя-бы передать 1000 пакетов оснащённых кодами восстановления (и при этом гарантировать
    что ретрансмиссий не будет ибо они не нужны) и на выходе где-то (интересно где?) их всех собрать
    в один массив и быстринько проверить что инфы для восстановления уже достаточно чтоб пролечить
    потерянный пакет. Как это сделать - ума не приложу. Но это полюбому будет на уровне IP/UDP
    и это совершенно новый протокол. Крайне ресурсоёмкий по памяти и с длинным лагом по TTFB.

    Вобщем схема очень напоминает скачивание большого торрент-файла по UDP в условиях рандомного порядка
    следования чанков этого самого файла. Кому такая схема нужна? Это нединамично и неотзывчиво. Никаких онлайн
    игр и стриминга тут нельзя построить.
    Ответ написан
    2 комментария
  • Как программно решить проблему потери пакетов или хотя бы сгладить её?

    @nApoBo3
    1. Вы не совсем понимаете, что такое потеря 50% пакетов. В вашем гипотетическом сценарии, это потеря каждого второго пакета, но в реальной жизни это не так.
    Удвоением кол-ва пакетов вы проблему усугубите.
    2. И да, эту проблему можно для части протоколов решить программно, но не уверен, что такие решения есть в готовом виде. Вам потребуется реализовать собственный аналог tcp для ситуации с большой потерей пакетов, работающий поверх udp или более низких протоколов, плюс промежуточный прокси.
    Возможно подобные решения есть, я про подобные вещи когда-то читал для нефтяники на спутниковых каналах, там были свои протоколы, для ускорения передачи данных, поскольку tcp плохо подходит для каналов с большими задержками.
    Ответ написан
    2 комментария
  • Как программно решить проблему потери пакетов или хотя бы сгладить её?

    hint000
    @hint000
    у админа три руки
    Попробую уточнить вопрос, как я его понял.
    В UDP тупо перепосылать пакеты нельзя.
    Про UDP согласен, забудем про него.
    В TCP пакеты и так перепосылаются при недоставке.
    Есть ли тонкие настройки (для ядра Linux и т.п.) параметров TCP, такие, чтобы минимизировать задержки при повторной отправке пакетов, ценой большей утилизации пропускной способности, когда заведомо известно о больших потерях?

    Исходя из уточненной формулировки гуглим: https://www.google.com/search?q=high+tcp+packet+lo...
    Попадаем сюда: xgu.ru/wiki/TCP_tuning
    Потом сюда: https://www.linux.org.ru/forum/talks/10310095
    И сюда: https://habr.com/ru/post/168407/
    И, наконец, попытаемся призвать в топик самого ValdikSS , может быть с момента публикации статьи появилось что-то новое по этой теме.

    Собственно,
    sysctl -w net.ipv4.tcp_congestion_control=westwood
    Ответ написан
    Комментировать
  • Как программно решить проблему потери пакетов или хотя бы сгладить её?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В TCP пакеты и так перепосылаются при недоставке.
    В UDP тупо перепосылать пакеты нельзя. Поскольку сам UDP не предусматривает контроль за доставкой, то два одинаковых пришедших UDP-пакета могут быть поняты как два независимых запроса/команды.
    Ответ написан
    3 комментария