Задать вопрос
  • Какое решение посоветуете для хранения больших архивов (в сумме 20тб)?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Самое простое - S3 хранилище:
    - AWS S3
    - MinIO
    - Яндекс S3

    Также есть вариант с Hadoop - можно файл хранить на множестве серверов с репликацией. Но не знаю есть ли облачный вариант
    Ответ написан
    3 комментария
  • Как подключить статическую библиотеку (.a) в C++?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Для g++ надо добавить флаги:
    - -LlibraryPath - путь до директории с библиотеками, где libraryPath - это путь
    - -llibraryName - название библиотеки, но без префикса lib

    Примерно так:
    {
        "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: g++.exe build active file",
                "command": "d:\\Soft\\msys64\\ucrt64\\bin\\g++.exe",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe",
                    "-LD:\\Projects\\console\\Bank System App",
                    "-lpdcurces"
                ],
                "options": {
                    "cwd": "d:\\Soft\\msys64\\ucrt64\\bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": "build",
                "detail": "Task generated by Debugger."
            }
        ],
        "version": "2.0.0"
    }

    P.S. на Windows с gcc не собирал, могу ошибаться
    Ответ написан
  • Как записать управляемый объект делегата, в неуправляемую память, или какие есть решения?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Объекты этой структуры будут в неуправляемой памяти, То есть зафиксированы.

    Неуправляемые объекты не подвергаются процессу сбора мусора - они вообще не проверяются.
    Вот и происходит следующее:
    1. Имеется массив объектов неуправляемой памяти
    2. В каждом объекте имеется ссылка на объект управляемой памяти
    3. GC запускается и т.к. неуправляемые объекты не проверяются, то объекты на которые ссылаются неправляемые исчезают, т.к. ссылок на них, возможно, больше не осталось.

    Попробуй:
    - Вызвать GC.KeepAlive на ссылках управляемой памяти (кол-беках)
    var funces = new Fun[];
    // Код
    GC.KeepAlive(funces);

    - Либо сохраняй массив объектов управляемой памяти вместе с целевым массивом, чтобы переменная с этим массивом хранилась в этом же методе и на нем вызови GC.KeepAlive (иначе область видимости ограничивается методом, в котором они создались). Примерно так:
    var (arr, managedObjects) = Create(funces);
    // Код
    GC.KeepAlive(managedObjects);

    - Либо, попробуй перед началом работы метода запрещать сборку мусора - GC.TryStartNoGCRegion/GC.EndNoGCRegion

    Самое что непонятное. хоть вопрос на что где когда отправляй, почему то ломается то нет.

    Во-первых, работа GC не детерминирована - он может запуститься в любой момент.
    Во-вторых, DEBUG или RELEASE режимы компиляции добавляют различные оптимизации и т.д. в процесс работы.
    В-третьих, при подключенном дебагере все локальные переменные не будут собраны GC, т.к. на них неявно появляются указатели.
    Ответ написан
  • Есть ли курсы/книги по автотестированию Selenium + C#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Комментировать
  • Кто знает хорошие api?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Ответ написан
    Комментировать
  • Как использовать русские символы из файла в качестве ключа для unordered_map?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Попробуй указать локаль - setlocale(LC_ALL, "Russian");
    Ответ написан
    9 комментариев
  • Как создать многомерный массив в одной области памяти?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Одномерный массив размером X * Y - единственное решение, если нужен непрерывный участок памяти.
    Для получения первого индекса - index / X, для второго - index % X.
    Но надо позаботиться - чтобы места было достаточно, иначе однажды получишь OOM либо когда место закончится, либо при сильной фрагментации памяти.

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Память выделяется в рантайме динамически, существует ASLR, расположение зависит от имеющихся в памяти объектов/библиотек, уже выделенных объектов, GC и т.д.. Короче говоря, после перезагрузки ты всегда получишь другие адреса.

    Единственное решение - найти алгоритм, который позволит находить нужный адрес памяти. По другому никак.
    Ответ написан
    5 комментариев
  • Что за таблица теневых страниц? Как их выделить, какая функция?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Какой функций можно выделить теневые страницы. или страницы физической памяти.
    Как вообще можно выделить физическую память, это невозможно же, или что есть какой-то особый malloc new?

    Никакой.
    Каждый процесс имеет свое ВИРТУАЛЬНОЕ адресное пространство. Доступ к физической памяти ведется через него путем хранения таблицы страниц и отображения на физическое адресное пространство.
    Этим всем занимается ОС и не только для удобства, но для безопасности.
    Какие функции для работы с гипервизором?

    Разве что в случае паравиртуализации
    Ответ написан
    Комментировать
  • Как создают интерфейсы в программах?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Самый низкий уровень - системные вызовы:
    Это WinAPI, X11 и т.д. Я не десктоп разработчик, но сейчас мало кто ими пользуется.

    Дальше идут фреймворки, потроенные вокруг них:
    Это wxWidgets, WTL (Windows Template Library)

    И на самом верху - полноценные языки разметки/программирования:
    Qt, XAML, Electron

    Дополнительно, никто не мешает свой фреймворк написать оконный - поверх существующих WinAPI, либо через графический фреймворк (SDL, например)
    Ответ написан
    1 комментарий
  • Как сохранить сбоку AssemblyBuilder? Где методы Save, DefineDynamicAssembly?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Дока, которую ты отправил, относится к .NET Framework.
    После перехода на .NET Core и .NET Standard эту тему перестали поддерживать.
    Работы по этому поводу сейчас ведутся и в .NET 9 должно появиться: https://github.com/dotnet/runtime/issues/92975
    Но если хочешь прямо сейчас, то вот репа с примером, как можно своими силами это сделать: https://github.com/dotnet/runtimelab/blob/feature/...
    Ответ написан
    Комментировать
  • Работают два клиента одновременно и на client1 приходят данные, то client2 зависает, что не так?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Скорее всего сервер отправляет единственный пакет данных, который меньше 1024 байт.
    Вот и получается, что ты дважды читаешь из сокета, но все данные уже получаешь при первом вызове и блокируешься навсегда.

    В случае 1 клиента, то ты постоянно читаешь очередной чанк и устанавливаешь новое соединение. Попробуй убрать

    text=client2.recv(1024).decode('utf-8')
    print(text)
    Ответ написан
  • Как benchmarkdotnet передает аргументы?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Разве для каждого метода, каждой итерации не новый объект приходит?

    Судя по исходному коду (https://github.com/dotnet/BenchmarkDotNet/blob/109...), аргументы создаются во время создания объекта бенчмарка.

    Если тебе нужно на каждую итерацию создавать новый объект и работать с ним, то для этого используются Setup/Teardown методы. Их помечать через [IterationSetup]/[IterationCleanup] атрибуты надо.
    Примерно так:
    public class SampleBenchmark
    {
        private object _object;
    
        [IterationSetup]
        public void MySetup()
        {
            _object = CreateData(1000);
        }
    
        [IterationCleanup]
        public void MyCleanUp()
        {
            _object = null;
        }
        
        [Benchmark]
        public void Benchmark()
        {
            _object.DoSomething();
        }
    }


    как вообще можно узнать что пришло, если какой-то гений придумал что в Debug не работает Benchmark, гений

    BenchmarkDotNet использутся для замера производительности. В него помещается изначально правильно работающий код, производительность которого нужно замерить для будующих запусков в проде. В дебаг режиме есть много лишнего, неоптимизированного кода, поэтому производительность будет ниже и, чтобы таких ситуаций не было сделали такое ограничение.
    Если тебе нужно дебажить - то это юнит (xUnit, NUint, MSTest) и другие виды тестирования
    Ответ написан
    Комментировать
  • Снииффер запросов HTTP/1.0, HTTP/2.0 сайта?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Fiddler
    Можно еще всякие плагины для браузеров - тут самому искать
    Ответ написан
    Комментировать
  • Как понять для чего использовать различные инструменты в программировании?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Не существует правильного варианта использования какого-либо инструмента - он просто имеет определенный функционал, а как его использовать - это уже на твоей совести и воображении.

    Например, ref и struct можно объединить для реализации посетителя, который модифицирует посещаемого объекта и т.к. структура на стеке хранится (неправильно так говорить, но тут сойдет), то можно объект сделать struct а после передавать через ref - боксинга не будет. Так, например, реализован JSON десериализатор в System.Text.Json - нигде не пишут что так можно делать, просто нашли способ.

    Или можно сделать 2 конструктора - один private без аргументов, а другой public с аргументами и тогда можно использовать EF Core, чтобы этот класс использовать и как объект в БД и как объект бизнес-логики. EF Core сам объект создаст и нужные поля выставит.

    Таких вариантов - куча. Как найти их - опыт. Уже сам описал как его получить - пиши свои проекты, изучай проекты других, читай умные книжки/статьи.
    Ответ написан
    1 комментарий
  • Почему нет записи о printf в секции .plt.dyn?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Но там запись о функции puts, а не printf.

    Это уже оптимизация компилятора. Возможно ты не передаешь printf никаких аргументов и он решил, что проще вызвать puts.
    Такое поведение уже было описано вот тут:
    The C compiler gcc likes to use its knowledge of builtin functions to manipulate code. The version of gcc in NetBSD 4.0.1/macppc will simplify the printf statement to puts("Greeting, Earth!"); so the main function effectively calls puts(3) once and then returns 0.
    Ответ написан
    1 комментарий
  • Почему required проперти не могут иметь более ограничиващий модификатор set\init, чем модиикатор класса, их содержащего?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Представь ситуацию, что кто-то во внешней сборке создает твой класс и ему обязательно нужно будет инициализировать это поле - он не сможет, т.к. internal set. А сделать это просто - рефлексия:
    SomeClass obj = (SomeClass) typeof(SomeClass).GetConstructor(
                      BindingFlags.NonPublic | BindingFlags.Instance,
                      null, Type.EmptyTypes, null).Invoke(null);

    И все!

    Тут несколько решений:
    1. Объяви класс как internal
    2. Выдели интерфейс с публичным get без set
    3. Для хранения используй поле и доступ к нему через свойство (но тут уже и required не особо нужен)
    Ответ написан
    3 комментария
  • Требования для серверной комнаты на предприятии?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Скорее всего в серверной будут хранится база данных с ПД (персональные данные) сотрудников.
    В этом случае, будет применяться Постановление Правительства РФ от 1 ноября 2012 г....:
    - В нем определяются 4 уровня безопасности (с условиями) и для каждого уровня определены требования безопасности.
    - Обобщая необходимо: вести журнал аудита, следить за доступом к серверной, иметь ответственное лицо за ПД
    - Следить за доступом к серверной - только (как я понял) для 4 уровня

    Также стоит упомянуть коммерческую тайну: если есть информация, составляющая коммереческую тайну, то обязанность за ее сохранность на плечах собственника. Если произойдет утечка и все узнают, что просто за серверной не следили, то тут вряд-ли будет какая-то компенсация (но это не точно)
    Ответ написан
    Комментировать
  • Зачем использовать ViewData если есть свойство в PageModel?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    ViewData - это инструмент из ASP.NET Core MVC - старых MVC проектов. Он нужен, чтобы обойти строгую типизацию и передавать опциональные параметры.
    PageModel - это уже новый фреймворк, который построен поверх MVC и сделан на упор в одностраничник, т.е. мы сразу можем что на странице должно быть отображено. Поэтому ViewData уже не особо нужен.

    В итоге, использовать ViewData стоит если есть какие-то опциональные, transient данные, которые можно использовать. В примерах это заголовок страницы.
    Ответ написан
    Комментировать