Задать вопрос
  • Где найти документацию об работе современных процессоров?

    Если интересуют ассемблерные команды, то читай Software Developer Manual для соответствующей архитектуры.

    Если интересует, на каких подходах строится дизайн современных процессоров, то читай книгу "Цифровая схемотехника и архитектура компьютера"
    Ответ написан
    Комментировать
  • Для каких задач важнее однопоток?

    1. Не все задачи можно распараллелить в принципе.
    2. Некоторые задачи распараллелить нетривиально
    3. Обработка небольших объёмов данных происходит быстрее в однопотоке из-за того что многопоток добавляет по сравнению с ними слишком много накладных расходов.
    Ответ написан
    Комментировать
  • Что ещё проверять для безопасности?

    Вот эта строка ничего не делает :)
    if(message.length > 150) message.substring(0, 150)

    Конкретно в показанном коде больше никаких уязвимостей не видно.
    Так что только общие советы - открывай OWASP и проверяй всё по порядку для своего приложения.
    Ответ написан
    4 комментария
  • Почему указанные драйвера могут не подходить?

    Если я не туплю, то драйвер этот для win10, а у тебя win7, если смотреть на UI
    Тебе нужен драйвер для win7

    Покажи что winver выдаёт
    Ответ написан
  • Как предоставить пользователям возможность восстановления пароля?

    Раз ты работаешь без identity и ef, то тебе нужно самостоятельно сгенерировать этот токен.

    Норм практика будет использовать тут JWT.
    Вот описание этого формата и библиотеки, которые можно будет использовать:
    https://jwt.io/
    В него следует встроить id пользователя, email на который было отправлено письмо, и время жизни, чтобы в случае изменения email или просрачивания - токен стал невалидным.

    Этот токен надо будет встроить в ссылку, которую отправишь пользователю.

    На странице сброса пароля тебе нужно будет этот токен отправить на сервер вместе с новым паролем.

    На сервере тебе надо будет проверить валидностт токена, что он не просрочен, и что почта не изменилась.
    В случае успеха - изменить пароль.

    А туториал, который ты нашла, сделан для старой версии asp net и сейчас устарел.
    Ответ написан
    2 комментария
  • Как получить данные с контейнера Postgresql в код бота C#?

    Никакого "коннекта к контейнеру" прописывать не нужно.
    Если у тебя настроена сеть в docker compose, то всё и так должно работать.
    Подключайся сразу к постгресу
    Ответ написан
  • Как правильно добавить взаимодействие с сервисом на Rust через MassTransit?

    vabka
    @vabka Куратор тега Rust
    Вроде пишут, что формат сообщений предопределён:
    https://stackoverflow.com/questions/49558358/masst...

    Раз так, то берёшь serde, amqprs и пишешь
    Ответ написан
  • Ошибка при открытие проекта на asp.net mvc в Visual Studio, как исправить?

    Судя по использованию System.Data.Entity и owin - проект духом явно старше, чем 2021.
    Это раз :)

    Два - у тебя не установлен .net Framework devpack - узнавай на какую версию нацелен этот проект и устанавливай.
    Я бы попробовал 4.6
    Ответ написан
    Комментировать
  • Есть ли язык программирования с GC, но в котором сложно восстановить исходный код?


    а в Java или C# он практически в открытом виде, почему так?

    Потому что у C# и Java есть ещё одно важное свойство: у них есть виртуальная машина и они компилируются сначала в промежуточный код. А в машинный уже делается через JIT-компиляцию.

    C# с недавнего времени поддерживает ещё и FullAOT - в таком режиме тоже код будет нечитабельный/нативный, как и в случае с Go.

    Есть ещё F# из мира дотнета, который хоть и компилируется в промежуточный код, но там компилятор такой код генерирует, что в принципе это не далеко от обфускации будет.


    Вот например в Go или Haskell не посмотришь исходный код

    Если ты уже нашёл ответ на свой вопрос, то зачем задаёшь?
    Ответ написан
  • Возможно ли использовать esp32+nrf24l01 в качестве репитера для передачи wi fi сигнала с эхолота?

    1. Не факт, что у nrf-ки радиус действия будет больше, чем у встроенной антенны эхолота
    2. Не факт, что esp32 в принципе на такое способна - нужно по факту прозрачно повторить весь wifi-сигнал, чтобы подключение к повторителю выглядело идентично подключению к самому эхолоту, как со стороны приложения, так и со стороны эхолота.

    3. Скорее всего, замена антенны на эхолоте будет эффективнее.

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

    vabka
    @vabka Куратор тега Веб-разработка
    Начнём с того что то что у тебя - это какие-то непонятные фигуры и стрелочки которые отражают непонятно что и непонятно зачем и для кого.

    А в реальном мире уже всё давно придумано:

    • Sequence diagram, если хочешь показать, в каком порядке и куда пойдут данные
    • Use case diagram, если хочешь показать варианты использования твоей системы разными авторами.
    • Нотация C4, если хочешь деконструировать свою систему.
    • Целая куча других диаграмм в рамках стандарта UML.



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

    Вот пара примеров диаграмм, как бы ты мог всё изобразить:
    Картинки

    Sequence:
    6466fad769376519395834.png
    Ответ написан
    2 комментария
  • Как заменить строку в скомпилированном .exe?

    Если строка длиннее - тогда всё что находится после такой строки будет сдвинуто и тогда поедут все указатели.
    Если строка короче, но ты не удалял байты, а просто занулил их - должно работать, но может быть нюанс:
    1. Строка может храниться не просто как её байты, а как длина + байты. Тогда тебе длину тоже надо поправить (например если это не си, где строки нуль-терминированные)
    2. Тк строка эта константная - компилятор может при компиляции заинлайнить все проверки на длину, да и саму длину тоже.

    Именно по этому нельзя менять длину строки. Ни в байтах, ни в символах.

    В теории, программа может поломаться даже если ты поменяешь, например, текст на английском на текст на русском, если используется utf-8, тк разработчик, надеясь на то что строка его неизменна, может заслайсить такую строку по байтам, тк он знает точное расположение каждого символа, а после твоей манипуляции получится невалидный utf8, из-за которого может поломаться в другом месте, где эта валидность проверяется.
    Ответ написан
    Комментировать
  • Программа не работает так, как должна (ошибки в логике, которые не могу найти)?

    Ты не сказал, как именно ошибка проявляется, так что сложно сказать.

    ошибки в логике, которые не могу найти

    Для этого:
    1. Рефактори код, чтобы с ним легче было работать.
    2. Покрывай код автотестами
    3. Тестируй нормально, а не наобум, чтобы понятно было, как проявляется ошибка, какое поведение ты ожидал от программы, а какое фактически произошло.
    Ответ написан
    5 комментариев
  • Как дать WSL2 больше процессора?

    1. Ты можешь при помощи команды wsl залезть непосредственно в тот WSL-образ, который используется докером.
    Там в /etc есть ещё один wsl.conf, в котором параметры из .wslconfig могут переопределяться.

    2. После изменения настроек нужно остановить WLS при помощи команды wsl --shutdown и подождать какое-то время.

    3. Если у тебя Pro-версия винды, то ты можешь через Hyper-V посмотреть, какие реально настройки по ресурсам выделены на виртуалку с WSL2
    Ответ написан
    Комментировать
  • Можно ли отключить LED-индикатор веб-камеры ноутбука?

    Зависит от конкретного ноутбука.
    Где-то этой лампочкой можно управлять программно (например она управляется чипом в камере), а где-то она включена в электрическую цепочку так, что если лампочка не горит - камера тоже не работает.

    Так что для надёжности следует либо покупать ноутбук с физической шторкой, либо заклеить глазок.
    Есть в том числе варианты с отодвигаемой наклеиваемой шторкой.
    Ответ написан
  • Как сравнить объекты и найти различия?

    Мне кажется, такой вариант вам может подойти:
    function generateJsonPatch(obj1, obj2) {
      const patch = [];
    
      // Рекурсивно обходим все свойства первого объекта
      for (const prop in obj1) {
        if (obj1.hasOwnProperty(prop)) {
          // Если свойство отсутствует во втором объекте, удаляем его
          if (!obj2.hasOwnProperty(prop)) {
            patch.push({op: "remove", path: `/${prop}`, oldVal: obj1[prop]});
          } else {
            // Если свойство является объектом или массивом, рекурсивно обходим его
            if (typeof obj1[prop] === "object") {
              patch.push(...generateJsonPatch(obj1[prop], obj2[prop]).map(p => {
                p.path = `/${prop}${p.path}`;
                return p;
              }));
            } else {
              // Если значение свойства отличается от значения во втором объекте, обновляем его
              if (obj1[prop] !== obj2[prop]) {
                patch.push({op: "replace", path: `/${prop}`, value: obj2[prop], oldVal: obj1[prop]});
              }
            }
          }
        }
      }
    
      // Обходим свойства второго объекта, которых нет в первом объекте
      for (const prop in obj2) {
        if (obj2.hasOwnProperty(prop) && !obj1.hasOwnProperty(prop)) {
          // Добавляем новое свойство
          patch.push({op: "add", path: `/${prop}`, value: obj2[prop], oldVal: undefined});
        }
      }
    
      return patch;
    }

    Вот что он выдаёт в вашем случае:
    [ { op: 'replace', path: '/colorQty', value: 1, oldVal: 0 } ]


    Код генерировал не я. Я попросил ChatGPT:
    prompt и оригинальный ответ



    Напиши функцию на javascript, которая принимает в себя два js-объекта или массива, на выходе я должен получить jsonpatch, который можно применить к первому объекту, чтобы получился объект идентичный второму

    ... вариант без oldValue ...

    добавь ещё в каждую операцию jsonpatch и старое значение, чтобы при чтении было понятно, что на что заменяется

    Вот обновлённый код функции generateJsonPatch с добавлением старого значения в каждую операцию jsonpatch:

    function generateJsonPatch(obj1, obj2) {
      const patch = [];
    
      // Рекурсивно обходим все свойства первого объекта
      for (const prop in obj1) {
        if (obj1.hasOwnProperty(prop)) {
          // Если свойство отсутствует во втором объекте, удаляем его
          if (!obj2.hasOwnProperty(prop)) {
            patch.push({op: "remove", path: `/${prop}`, oldVal: obj1[prop]});
          } else {
            // Если свойство является объектом или массивом, рекурсивно обходим его
            if (typeof obj1[prop] === "object") {
              patch.push(...generateJsonPatch(obj1[prop], obj2[prop]).map(p => {
                p.path = `/${prop}${p.path}`;
                return p;
              }));
            } else {
              // Если значение свойства отличается от значения во втором объекте, обновляем его
              if (obj1[prop] !== obj2[prop]) {
                patch.push({op: "replace", path: `/${prop}`, value: obj2[prop], oldVal: obj1[prop]});
              }
            }
          }
        }
      }
    
      // Обходим свойства второго объекта, которых нет в первом объекте
      for (const prop in obj2) {
        if (obj2.hasOwnProperty(prop) && !obj1.hasOwnProperty(prop)) {
          // Добавляем новое свойство
          patch.push({op: "add", path: `/${prop}`, value: obj2[prop], oldVal: undefined});
        }
      }
    
      return patch;
    }


    Каждая операция jsonpatch теперь содержит поле `oldVal`, которое хранит старое значение свойства, которое было изменено. Если свойство было удалено или добавлено, то `oldVal` будет иметь значение `undefined`.

    Пример использования:

    const obj1 = {a: {b: "hello"}, c: [1, 2, 3]};
    const obj2 = {a: {b: "world", d: "foo"}, c: [1, 2, 4, 5], e: "bar"};
    
    const patch = generateJsonPatch(obj1, obj2);
    
    console.log(patch);
    // Output:
    // [
    //   {"op":"replace","path":"/a/b","value":"world","oldVal":"hello"},
    //   {"op":"add","path":"/a/d","value":"foo","oldVal":undefined},
    //   {"op":"remove","path":"/c/2","oldVal":3},
    //   {"op":"add","path":"/c/3","value":5,"oldVal":undefined},
    //   {"op":"add","path":"/e","value":"bar","oldVal":undefined}
    // ]


    Обратите внимание, что поле oldVal в jsonpatch содержит информацию только о тех свойствах, которые были изменены или удалены. Если свойство не было изменено, то его oldVal будет иметь значение undefined.



    PS: сам удивился, на сколько он хорош в подобных задачах. Можно было бы написать и самому, точно также рекурсивно обойдя объекты, но эта шняга сэкономила достаточно много времени.
    Ответ написан
    3 комментария
  • Luajit и его портабельность?

    Все официально поддерживаемые платформы перечислены на официальном сайте проекта:
    https://luajit.org/install.html
    x86, x64, arm, arm64, ppc32, ppc/e500, mips32, mips64, risc-v (планируется)

    DynASM - это часть проекта luajit и вроде нет каких-то платформ, где он официально работает, но не работает luajit.
    Видел только всякие давно заброшенные эксперименты.
    Ответ написан
    Комментировать
  • Как сделать систему очков в телеграмм боте?

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

    Не особо понимаю, так как в моей схеме 2 маршрутизатора и один имеет выход в интернет, нужен ли другому тоже? Будет ли он работать без него?

    Ну у тебя на схеме компьютер тоже напрямую в интернет не воткнут.
    Почему у тебя не возник такой вопрос по поводу роутера, но не возник по поводу компьютера?
    И зачем тебе два свича на схеме?

    Домашний "Беспроводной роутер" - это несколько устройств в одном:
    1. Роутер
    2. Коммутатор
    3. Точка доступа

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

    Если беспроводной роутер должен создать новую подсеть - настраивай его как обычно.

    Кабель от свича втыкай в WAN-порт в обоих случаях (как правило)

    В любой непонятной ситуации - читай мануалы. Если мануал противоречит ответу - верь мануалу.
    Перед тем как идти настраивать - проверь мануал.
    Ответ написан
  • Берут ли на работу в IT с психическим расстройством?

    1. Просто при найме на работу не болтай о своих диагнозах - это создаст лишнее предвзятое отношение, которое тебе точно не нужно.
    Благо при найме на работу справку от врача предъявлять не нужно ;)

    "ПРЛ" и "ОКР" для не-психиатра - это непонятные слова и это ожидаемо, что люди тут ориентируются на стереотипы.

    2. Если умственной работе это не мешает, приступы в середине рабочего дня у тебя не происходят, конфликтов с коллегами на этой почве у тебя не (можешь себя контролировать, помогает медикаментозная/поведенческая терапия или просто очень слабо проявляется), то всё будет ок.
    Если вас что-то беспокоит - лучше проконсультируйтесь со специалистом, а не с родственниками/знакомыми.

    PS: есть среди родственников и знакомых люди с психическими расстройствами и могу сказать, что если они соблюдают все рекомендации врача и периодически наблюдаются - человек со стороны никогда не поймёт, что с ними что-то не так.
    Ответ написан
    Комментировать