Задать вопрос
  • Как обезопасить программу С# от взлома?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    Что за каша? Что такого ценного в "других программах" и от чего их надо защищать? Сама программа обычно является обьектом защиты только если это игра - то есть работа программы самой по себе (среди не-игр это редко). Обычно не-игра защищается тогда, когда она производит что-то ценное.

    Вопрос - что ценного в ваших программах? Кому они нужны, кто будет их ломать?
    Ответ написан
    Комментировать
  • Как автоматизировать процесс установки программ на 1000 компьютерв?

    @NortheR73
    системный инженер
    хых...
    управлять 1000 компов не в домене - оригинальный вы человек...
    тогда, например, установка софта с помощью PowerShell-скрипта...
    Ответ написан
    Комментировать
  • Может ли пользователь сменить переменную JS?

    @Zukomux
    Баланс всегда должен приходить с сервера. Даже если пользователь совершил какую-то операцию, после этого необходимо заново запросить баланс. И считать единственным источником истины только результат верного ответа. Несмотря на то, что на фронте можно нарисовать любые цифры, на сервере всего будет истинное значение
    Ответ написан
    Комментировать
  • Может ли пользователь сменить переменную JS?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    То, что нельзя доверять данным полученным с клиента - это общеизвестное правило.
    Ответ написан
    Комментировать
  • Spring или Asp.net core для будущей работы?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    сам тащусь от программирования

    Вот представьте вам говорят: бросай своё баловство это - иди в строительство / нефтянку / наркоторговлю / проституцию / пхп.
    Это стабильно, это надёжно, это приносит больше денег.
    И, допустим, это даже будет правда.

    Но я искренне не понимаю как это может хоть кого-то мотивировать.
    Занимайтесь тем что вам интересно. Тогда будет у вас и карьера и сытое будущее.
    Только так. Не наоборот.
    Сначала любимое дело - потом все вот это остальное.
    Ответ написан
    3 комментария
  • Почему в таблицу может не вставляться текст на узбекском языке?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос с подвохом.
    Я сейчас сообразил, что узбекский - это не китайский же. Либо латиница, либо кирилица.
    То есть проблема скорее всего не в кодировке.
    А, как выяснилось в комментариях - тупо в неправильном выполнении запроса, и инъекциях.
    то есть переменные надо не напрямую пихать в запрос, а через специальные маркеры, как написано здесь https://habr.com/ru/articles/662523/

    Если же говорить про кодировки, то
    у поля (или таблицы) должна стоять не "одинаковая" кодировка, а utf8mb4
    в РНР при соединении должна устанавливаться кодировка utf8mb4
    в заголовках веб-сервер должен отдавать кодировку utf-8
    если текст пишется прямо в РНР коде, то этот код тоже должен быть в кодировке utf-8
    Ответ написан
    2 комментария
  • Как написать на с++ метод и экспортировать его в c# заинлайнить, и можно ли _fastcall его сделать???

    Nipheris
    @Nipheris Куратор тега C++
    Экспортированная функция работает в 4 раза медленнее.

    Разумеется, у вас всё время уходит на накладные расходы на PInvoke. Это полное безумие - выносить сложение чисел вообще в функцию, а тем более ещё и делать вызовом между языками. А PInvoke - это вам не InternalCall

    ВОПРОС как сделать функцию sum в с++ что бы она работала так же быстро как и sum в c# коде? Как ее заинлайнить

    Методы Math реализованы в самом рантайме и вызываются без маршалинга с помощью InternalCall. Не думаю, что это возможно для вашей функции.

    К примеру, если хочу c# библиотеку сделать, то просто добавили ссылку и забыл о всем. А когда добавляю так же ссылку на dll от с++ проекта, то ноль реакции.

    Потому что dll которые получились из C# - это дотнетовские сборки, которые только прикидываются Portable Executable, а вот то, что компилится из C++ - это действительно Portable Executable, и ничего дотнетовского там нет (если конечно это обычный C++ DLL-проект, а не C++/CLI).

    Кстати еще вопрос, как библиотеку с++ подключать к проекту, почему DllImport не находит, если указать ссылку на проект,

    Вам нужно настроить копирование C++ DLL в выходную директорию проекта, рядом с вашей дотнет-сборкой, в которой находится DllImport
    Ответ написан
    Комментировать
  • Как определить размер функции в байтах Машиного кода?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Язык программирования тебе это не подскажет. Он не знает.
    Об этом может знать компилятор, но для компиляторов такой "функции" как get_machinecode_instruction_length нету. Компилятор может генерировать не прямой код трансляции команд С++ в машинный код. Он может оптимизировать вызовы под конкретный процессор/архитектуру, по опциям для оптимизации загрузки данных в память и так далее.
    Просто посмотреть машинные коды - нужно читать datashit конкретной архитектуры, они более-менее стабильные.
    Ответ написан
    Комментировать
  • Откуда stackoverflow при работе с stackalloc c#?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Похоже (явного указания в документации я не нашел), что память в стеке освобождается только при выходе из всего метода, но не из блока внутри него. Освобождение памяти в стеке, как известно - это сдвиг указателя стека обратно, и похоже, этого в конце блока не происходит - только в конце метода. Косвенное подтверждение - в документации по stackalloc явно написано избегать вызовов stackalloc в цикле, как это у вас сделано: "Avoid using stackalloc inside loops. Allocate the memory block outside a loop and reuse it inside the loop." ( https://learn.microsoft.com/en-us/dotnet/csharp/la... )
    Ответ написан
    Комментировать
  • Тип данных "WORD" история происхожения названия какова?

    aspect
    @aspect
    Сакральность? — Хм

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

    @12rbah
    По какой то причине данный код раз от раза при попытке добавления данных в БД выдаёт исключение о том, что был факт попытки добавления некорректного ("неуникального", если угодно) ключа.
    Скоре всего одно из значений это primary key или unique, поэтому и кидает ошибку.
    Также существует проблема что уже для добавленных данных подбирался id немного не по порядку:
    Это фича у постгреса такая, но в целом если подумать, то это не особо и нужно, чтобы id шли по порядку.
    Ответ написан
    2 комментария
  • Как работать с foreach так чтобы только первый приходил с active?

    @Shavadrius
    Можно решить несколькими способами.
    Например, добавить в передаваемую модель флаг "active" для слайдов:
    <div class="carousel-item @(slider.IsActive ? "active" : "")">

    Или добавить флаг-переключатель непосредственно в код представления:
    @ model HomeVM
    @ bool isFirstSlide = true;
    @ foreach (Slider slider in Model.Sliders) 
    { 
    <div class="carousel-item @(isFirstSlide ? "active" : "")">
    <div class="bg-img" 
    style="background-image: url('../src/img/products/@slider.Image')"></div> 
    </div> 
    isFirstSlide = false;
    }
    Ответ написан
    Комментировать
  • Почему WinForms все равно обращается к свойству, которое скрыто через new?

    Winforms тут непричём - это база C#.
    Читай как работает полиморфизм.

    Потому что new никак не влияет на виртуальные вызовы.
    Тебе нужно либо делать override, либо реализовывать интерфейс, чтобы всё работало.

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

    neuotq
    @neuotq
    Прокрастинация
    Смотрите.
    viewBox="0 0 1000 100" - определяют вьюпорт пользователя, те как бы то окошко через которое мы смотрим когда видим картинку svg. Первые две цифры - это минимальные(верхний левый угол) x,y координаты, далее размер длинна вдоль x и y
    Следовательно, самая высокая точка, с тчк зрения этого окошка, будет та, у которой координаты по y будет 0.
    У вас там рисуется <polygon points="0,0 9.090909090909092,11 .... вот как видно первая точка имеет координаты по 0,0 - те по x - самая левая с нулевым отступом от лева, и по y- самая верхняя, с нулевым отступом от min y - верха окошка. Таким образом все у кого будет y - 0 (второе число в паре ч/з запятую) - будут на самом верху, относительно окна просмотра.
    Но координаты могут уходить и за окно просмотра: как в лево/вверх, тогда отрицательные будут, так и в право/низ - будут больше окно просмотра(в вашем случае больше 1000 и 100 для x и y соответвенно)
    Ответ написан
    Комментировать
  • Почему камера после старта поварачивается на 180 градусов?

    GavriKos
    @GavriKos Куратор тега Unity
    Нет, это явно баг юнити, пишите багрепорт вам за него дадут 100500 баксов.

    Конечно что то в вашем скрипте камеры! Сама по себе камера не ворочается
    Ответ написан
    1 комментарий
  • Как выполнить код после завершения метода?

    @SZolotov
    Asp.net core, MAUI,WPF,Qt, Avalonia
    public async Task DoMagic()
        {
            // тут всяко разный код другой, например отправляется запрос на сервер и надо тут подождать ответ а после дать понять, что метод завершён
             var serverResponse = await DoSomethingAsync();
          //еще какой-то код
        }
    
        public async Task DoCode()// async void - это плохо.
        {
            // тут хочу запустить метод DoMagic() и только после его завершения, продолжить дальше 
           await DoMagic();
           // еще какой-то код.
        }
    Ответ написан
    Комментировать
  • Можно ли в microsoft identity изменить алгоритм хешированием паролей на MD5?

    @SZolotov
    Asp.net core, MAUI,WPF,Qt, Avalonia
    Можно ли в microsoft identity изменить алгоритм хешированием паролей

    да

    Как сделать чтобы identity хешировал пароли по алгоритму MD5?

    Нестоит так делать. Потому что он устарел и давно не надёжный.

    По умолчанию при добавлении пользователя в базу, его пароль хешируется по какому-то своему алгоритму

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

    GavriKos
    @GavriKos Куратор тега Unity
    Дак проверяйте есть ли файлы и если нет - вызывайте сейв (или не вызывайте лоад)
    Ответ написан
    7 комментариев
  • Какой из вариантов ближе по написанию к коммерческому коду?

    GavriKos
    @GavriKos
    Ой, блин, вопрос холиварный шо писец. Что такое коммерческий код? Это как?

    Смотрите. Если рассуждать с т.з. красивости кода - то статики ужас кошмар и уволить.
    Но. Допустим стояла задача от бизнеса "сделать быстро, поддерживать не будем, модуль редкий" (дааа, конечно редко такие прогнозы сбываются, но допустим) - и такая архитектура со статиками (или какая другая) позволяет решить бизнес задачу со всеми вводным - значит это ВНЕЗАПНО коммерческий код.

    В общем чтобы сказать коммерческий ли код - нужно знать какие требования к нему предьявлены.
    Ответ написан
  • Почему не получается преобразовать __int128 в BigInteger в своей функции?

    1. Ты берёшь указатель на переменную на стеке, которая после выхода из него уже не факт, что будет иметь то значение, которое тебе нужно.
    2. Тебе нужно выделить память заранее (или в куче) и в эту область памяти уже записывать результат.
    3. Лучше, чтобы память для результата выделялась на стороне C#, чтобы не было проблем с освобождением памяти.
    4. Сишный int не всегда равен шарповому int.
    5. В .NET уже есть структура для Int128, так что тебе не нужно байты перекладывать.

    6.
    public BigInteger (ReadOnlySpan<byte> value, bool isUnsigned = false, bool isBigEndian = false);
    принимает байты от длинного целого. Так что у тебя твой ToBigInteger работает неправильно, если ты в него подаёшь указатель, на __int128

    ptr_fact должно выглядеть как-то так:
    void ptr_fact(int32_t n, __int128* result)
    {
        *result = fact(n);
    }

    [DllImport("Test")] static extern void ptr_fact(int n, out Int128 result);


    Но смысла использовать ptr_fact я не вижу, тк обычный fact ты тоже легко можешь вызывать
    Ответ написан
    3 комментария