Задать вопрос
  • Как прикрутить многопоточную обработку без проблем с памятью?

    @kttotto
    пофиг на чем писать
    Если памяти не хватает, то без разницы сколько потоков Вы используете. Многопоточность нужна либо для асинхронности, либо для параллельности. Добавление потоков памяти не сэкономит, даже наоборот, увеличит ее расход и даже иногда скорости не добавляет.

    Если у Вас есть некий список, с которым работает много потоков, то рассмотрите возможность использования потокобезопасных коллекций. List не потокобезопасен.

    Если у Вас большой объем данных, который не влазит в память, то только подгружать данные частями, если хотите добавить параллельную обработку этих данных в разных потоках, то ,возможно, Вам подойдет Parallel.ForEach.

    И да, нет необходимости добавлять 100 потоков, как уже сказали, такое кол-во в кол-во ядер не влезет и производительности это не добавит, а даже наоборот, т.к. одно ядро будет делить время на часть выделенных потоков и будет переключать контекст между ними. Не факт, конечно, что даже два потока будут разделены по ядрам, за это ОС отвечает, но 100 потоков, это кажется перебором. Можно, конечно поэкспериментировать с кол-вом и посмотреть на производительность при этом.
    Ответ написан
    Комментировать
  • Маркетинговые ходы вокруг языка Ассемблер?

    @galaxy
    Ведь опытные программисты укладываются в набор команд 8086
    Нет. Лет 30 уже никто не пытается уложиться в 8086. Наоборот, если уж берутся писать на ассемблере, то часто с целью использования каких-то железо-зависимых вещей.

    Как и программы на Си, программы на Ассемблере нужно пересобирать под каждую следующую платформу. Разве нет?
    Что вы вкладываете в слова "новая платформа"?
    Другая ОС? - да, надо пересобирать, и часто менять, ведь API разных ОС отличается. При этом C часто позволяет исходный код программы не трогать, т.к. функции стандартной библиотеки, POSIX API предоставляют платформонезависимый интерфейс. А вот в программе на asm соответствующий код придется переписать.

    Новая версия ОС? - здесь есть свои нюансы, но собранная статически программа обычно прекрасно работает на протяжении многих поколений ОС (вы же не загружаете новую версию, допустим, игры под каждую версию Windows? Взять вон diablo 2 - как работала она под Win 98, так же отлично тот же бинарник заведется в Win 10).

    Новый процессор? - эти вообще паталогически обратно совместимы. Код, написанный или скомпилированный чисто под 30-летний 386 будет работать на i9 (при условии совместимости по пунктам выше).

    Возвращаясь к первоначальному вопросу: вы, видимо, не понимаете или не придаете значения тому, что существуют не только x86 процессоры. Изначально ЯП высокого уровня разрабатывались именно с целью абстагировать код программы от конкретного железа. В 60-80-е годы не было единой и даже какой-то одной распространенной железной платформы, что же прикажете, допустим, стандартные утилиты Unix переписывать каждый раз с начала и до конца на новом (подчеркну, НОВОМ, другом) ассемблере?
    Даже сейчас, когда вроде бы кругом x86, есть Itanium (ну ок, был в недавнем прошлом), ARM (в виде нескольких версий архитектуры и огромном количестве железных воплощений), где-то теплятся SPARC и PowerISA. Наконец, микроконтроллеры (привет ардуинщикам).

    Коротко: ЯП высокого уровня (не только C) позволяются абстагироваться (до определенных пределов) от железа и от ОС и не менять исходный код программ при переносе на другую платформу, ограничиваясь механической процедурой перекомпиляции.
    Ответ написан
    7 комментариев
  • Маркетинговые ходы вокруг языка Ассемблер?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Сразу видно человека, который ни Таненбаума не читал, ни даже Википедию не открыл. Ассемблер это не язык, это транслятор инструкций в машинный код. Ассемблеров ровно столько же столько аппаратных архитектур. Инструкций для одного процессора не будет в другом процессоре и они не взаимозаменяемые. Это самый низкий уровень где нет абстракций (немного утрирую, но по отношению к другим языкам это так)
    Ответ написан
    Комментировать
  • Как убрать загрузочный экран unity без plus и pro?

    GavriKos
    @GavriKos Куратор тега Unity
    Я знаю что это не законно

    Ну так давать ответы про незаконные действия таки против правил ресурса
    Ответ написан
    5 комментариев
  • Почему в качестве обработчиков событий класса нежелательно использовать стрелочные функции?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В этой статье (на англ.) называют такие минусы:
    1. стрелочные не попадают в прототип. Поэтому не получится с наследованием вызвать super.method()
    2. тормоза. Тесты показывают, что со стрелочными код работает много медленнее, чем с традиционными function, пусть и после .bind()
    Ответ написан
    Комментировать
  • Что будет за взлом сайта, почты или страницы, если это не причинило вреда?

    Это нарушение закона. Вы получили доступ к той информаци, на которую на что не имели право.
    Тайна частной переписки и всё такое.

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

    @cicatrix
    было бы большой ошибкой думать
    Это отдельное направление, которое называется Реверс-инжиниринг.
    Те, кто этим занимается, это действительно, своего рода, "элита", так как там не существует готовых методик, шаблонных решений и пр. Каждая новая программа - чёрный ящик, который надо разобрать и посмотреть, как он работает, при этом ты ничего не знаешь о том, что было на уме у его создателя.
    Разумеется, любая защита обходится, но дело это кропотливое, долгое, требующее хороших знаний языка ассемблера для той линейки процессоров, под который программа написана.
    Для C# существует IL-Spy или похожие дисассемблеры, которые действительно позволяют получить некое подобие исходного кода, но, зачастую, даже имея на руках код (очень часто обфуцированный) предстоит ещё очень долгая, нудная и кропотливая работа только для того, чтобы разобраться, что там вообще происходит.
    Кряк "взлом" программы часто сводится к подмене результата проверки условия. Простой if, казалось бы. Однако найти нужное место в машинном коде или в памяти процесса - очень и очень сложно.

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

    Прошу не писать о декомпеляторах!

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

    Когда код на руках есть - нужно уже своей головой разобраться в получившемся месиве.

    Всё делается руками, готовых решений нет.

    Я хочу стать крякером

    Не сможешь.
    Ответ написан
    Комментировать
  • Почему данные о GPS не сохраняются при скачивании из Google Photo?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    скорее всего у фоток нет коопдинат в exif, но вы все же посмотрите повнимательнее. Гугл может делать предположение о мемте съемки по времени и по соседним кадрам со смартфона. Может быть гугл еще как-то следит за тем, где вы были и к вашему местоположению на время съемки приаязываются и фотки.

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

    twobomb
    @twobomb
    Хех, так Dictinary же не потокобезопасный. Вам нужна или потокобезопасная коллекция или лок ставьте.
    В FileMapper добавьте где-нибудь
    private static object locker = new object();
    И попробуй переписать на такое

    private async Task checkFile(string path)
            {
                var fileType = await getFileAsync(path);
                
                    if (fileType.FileExtension != "None")
                    {
                          lock(locker){
                            this.filesMap.Add(path, fileType);
    }                    
                    }
                
            }

    P.S. Thread-Safe Collections
    Ответ написан
    3 комментария
  • Зависит ли маршрутизация от протокола: http или http/2?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Это какбы принципиально разные уровни даже в эталонной модели TCP, не то что в модели OSI.

    Маршрутизация никак не связана с прикладным протоколом, при условии, что на маршрутизаторах кто-то намеренно не делает DPI и фильтрацию.

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

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Могут если у владельцев компании появится сильное желание у вас отобрать этот домен. Подобные прецеденты были с компаниями вроде Google, Nike, Apple
    Ответ написан
    Комментировать
  • Как нейросеть формирует скрытые слои?

    @dmshar
    А вы сами-то пытались найти ответ на вопрос? Ведь информации в сети больше чем дофига. Зачем задавать на форуме тот вопрос, который всесторонне и подробнейше рассмотрен и в книгах и даже просто в интернет? Все равно тут лучше, чем в подготовленном источнике не объяснят.
    Ну ладно, хотите, что бы за вас нашли и преподнесли нужные источники - ну вот они, малая часть. Изучайте:
    https://habr.com/ru/post/461365/
    https://towardsdatascience.com/object-detection-wi...
    https://www.kdnuggets.com/2019/08/2019-guide-objec...
    https://www.pyimagesearch.com/2018/06/18/face-reco...
    https://towardsdatascience.com/introduction-to-ima...
    https://towardsdatascience.com/how-to-detect-objec...
    https://towardsdatascience.com/a-beginners-guide-t...
    https://towardsdatascience.com/computer-vision-cre...
    https://towardsdatascience.com/face-recognition-us...
    Ответ написан
    5 комментариев
  • Как такие вещи нужно реализовывать в c#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Сделайте функцию в чем ваш вопрос?
    Ответ написан
    3 комментария
  • Как бы вы сделали зрение NPC врага для stealth маханики?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Не надо это делать "в лоб" как камеру. Решайте этот вопрос геометрически.
    Если от врага до игрока небольшое расстояние И игрок попадает в сектор зрения (тоже обычная геометрическая формула) И между игроком и и противником нет стен (вот тут рейкаст) - то он в поле зрения.

    Можно конечно чистым рейкастом сделать, или вообще на коллайдерах.
    Ответ написан
    Комментировать
  • Откуда появляется объект DontDestroyOnLoad?

    @namee
    некий плагин. Смотрите, где скрипт Variables Saver
    Ответ написан
    4 комментария
  • Почему не обнуляется регистр cx?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему не обнуляется регистр cx?

    Сдаётся мне, ты совсем другой вопрос хочешь задать. Например, "почему подпрограмма A1 перевода строки в её числовое значение работает неправильно". Ответ на этот вопрос: потому что в следующем коде есть две ошибки:

    A1:
            push    ax
            push    cx
            push    dx
            push    di
            xor     cx, cx
    
            mov     di, 10
            mov     cx, [bx+2]

    - во-превых длина строки записана по смещению 1 в буфере, который заполняет функция 0ah прерывания 21h,
    - во-вторых, длина строки представлена одним байтом, а не словом, как ты читаешь.
    С учётом этого, код должен выглядеть вот так:
    A1:
            push    ax
            push    cx
            push    dx
            push    di
            xor     cx, cx
    
            mov     di, 10
            mov     cl, [bx+1]

    А буфер для ввода строки должен быть определён так:
    firstNum db 6,0,6 dup(?)

    Дальше, вот тут ты опять путаешь байты со словами и загружаешь в dx больше чем надо:
    .A2:
            xor     dx, dx
            mov     dx, [bx+si]
            sub     dx, '0'
            add     ax, dx

    должно быть
    .A2:
            xor     dx, dx
            mov     dl, [bx+si]
            sub     dl, '0'
            add     ax, dx


    Дальше у тебя какая-то ерунда с балансом стека:
    A1:
            push    ax
            push    cx
            push    dx
            push    di
    ...
            pop     si
            pop     di

    ты кладёшь в него одно, а снимаешь другое и в другом количестве. Но это не важно, потому что из функции A1 ты всё равно нигде не возвращаешься. Show_AX выглядит нормально.
    Ответ написан
    7 комментариев
  • Работа без договора. Физ лица. Можно ли взыскать?

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