• Почему в таблицу может не вставляться текст на узбекском языке?

    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?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    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 в своей функции?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    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 комментария
  • Как сделать округленную форму без кнопок закрыть, свернуть, развернуть?

    Adler_lug
    @Adler_lug
    Так что ли? Если да, то буквально первая ссылка в гугле.
    spoiler
    public partial class Form1 : Form
        {
                [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
                private static extern IntPtr CreateRoundRectRgn
                (
                    int nLeftRect,     // x-coordinate of upper-left corner
                    int nTopRect,      // y-coordinate of upper-left corner
                    int nRightRect,    // x-coordinate of lower-right corner
                    int nBottomRect,   // y-coordinate of lower-right corner
                    int nWidthEllipse, // width of ellipse
                    int nHeightEllipse // height of ellipse
                );
                public Form1()
            {
                InitializeComponent();
                this.FormBorderStyle = FormBorderStyle.None;
                Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 20, 20));
            }
        }
    Ответ написан
    2 комментария
  • Почему не работает System.Management?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    При вписывании using System.Management;
    Ничего и не должно происходить.

    Опишите подробнее, чего вы ожидали, и что на самом деле получили (ошибку например)

    (вот только не кидайте мне ссылку на stuckoverflow, я ж не даун, мне тот способ не помог)

    Какой "тот"?
    Ответ написан
    Комментировать
  • Действительно ли back-end разработка более консервативна, чем front-end?

    hrls
    @hrls
    Половина ответа в вопросе, но дьявол в мелочах.
    Действительно, для относительно продуктивной backend-разработки практически на любом языке программирования необходимо знать несколько базовых фреймворков и тулов, которые решают большинство задач. Это скелет ~90% приложений сложнее hello world. Хотя и этот скелет меняется и развивается, пусть и не так быстро как хотелось бы, как разнообразные отростки (не консервативность, но более долгий жизненный цикл). Суммарный вес технологий и инструментов не меньше, и уж точно не менее динамично изменяющийся, чем у frontend-разработчиков.
    Далее личный опыт на примере Java.
    Лет 7-8 тому достаточно было знать Spring, Struts, Hibernate да Apache Commons в довесок для разработки большинства решений. Ну и J2EE-стек для задач Enterprise-уровня.
    В году 2014 Spring, Hibernate все также в арсенале программиста, но появилась куча абсолютно новых вещей вроде AMPQ, Hadoop, Netty, Scala с функциональной парадигмой, мультиязычные окружения с Clojure/Groovy/JRuby; стали чаще встречаться альтернативные реализации популярных библиотек (например Guice / Guava); старые технологии вроде J2EE стали использоваться несколько реже. А одних только Key-Value хранилищ, кэшей и прочих NoSQL как грязи. Изменился даже сам подход к построению приложений – мало кто в 2005 слышал про asynchronous event-driven модели и отталкивался при проектировании от REST-стиля (собственно, там и корни frontend-девелопера как отдельной специализации). Про эволюцию систем сборок, VCS, бенчмарков и прочих "микро"-элементов можно расписывать не одну простыню.
    И да простят меня frontend-товарищи за, возможно, чванливый тон, но раскурить тонкости работы async IO в зависимости от ОС-специфики вроде epoll/kqueue или учитывать CAP-теорему при построении middleware-кэша это уровнем сложности повыше, чем новый CSS-препроцессор и CoffeeScript c очередным MVC / MVVM-фреймворком. Некоторые задачи, вроде синхронизации потоков, так и вообще лежат большей частью в области математики.
    Уверен, что и в frontend-разработке существуют задачи сложнее и интереснее поехавшей на пиксель верстки и обновления полей после парсинга JSON, но ИМХО backend-разработка ближе к системному программированию старой школы, в то время как frontend суть прикладное программирование с примесями дизайна.
    Frontend-инструментов больше, backend-инструменты сложнее.
    Ответ написан
    4 комментария
  • Как лучше сделать перемещение объекта (Forms, c#)?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    1. Массив 7х7, для каждого, ходим помечая посещенные клетки, проверяем перед ходом, выход за пределы или занятость, и меняем направление
    2. делаем одномерный массив координат спирали, и проходим по ней, сразу зная какие будут координаты.
    Ответ написан
    Комментировать