Ответы пользователя по тегу C#
  • Возможно ли на винде написать программу дешифровки?

    @rPman
    Для начала, именно такой функционал уже встроен в операционную систему - штатное шифрование ntfs, доступ к файлам открывается при авторизации пользователем (можно воспользоваться run as ...), из под которого было произведено шифрование. При этом дешифрация происходит исключительно на момент чтения и записи файлов, сами файлы на диске остаются зашифрованными, это происходит прозрачно и автоматически.

    Всю систему шифруют не на уровне файлов а на уровне диска, пароль будет запрошен при старте системы (точнее при монтировании диска) штатный инструментарий windows или сторонние типа veracrypt
    Ответ написан
    Комментировать
  • Возможно чтобы код С# испольнялся на GPU?

    @rPman
    Погуглю за тебя.
    ilgpu.net, первый же пример.

    Возможно ты что то не то хочешь, и лучше бы тебе сначала посмотреть в сторону opencl, язык там будет похожий на c++, заточен на работу на многопроцессорных ускорителях типа видеокарта. Есть даже реализации для fpga чипов с программируемой логикой, в общем это специализированный стандарт.

    Есть еще cuda, это vendorlock модификация opencl от nvidia (формально это они двигают стандарты в этом направлении, ибо крупнейшие разработчики железа)
    Ответ написан
    Комментировать
  • Как сделать чтобы приложение для win ce открывалось на весь экран?

    @rPman
    Явно причина в неправильном закрытии explorer. Его автозапуск нужно убирать из реестра, заменой шела на ваше приложение.
    https://developer.toradex.com/windows-ce/knowledge...

    Путь указывать полный

    p.s. еще если это WinForm то у формы можно задать TopMost свойство true, но надо экспериментировать.
    Ответ написан
    Комментировать
  • Как реализовать смену цвета кнопки в разных файлах (c# winforms)?

    @rPman
    Так и говори, как из одной формы обращаться к контролам другой (утт форма - это окно, в твоем вопросе это 'файл' Tema1.cs и t1q1.cs).

    Тебе нужно передать ссылку на форму, в которой что то хочешь изменить на форму, которая хочет изменить. Сделать это можно либо в тот момент, когда вторая форма создается, либо (если экземпляр у формы один) разместить эту ссылку как статичный мембер какого либо класса (пусть и самой формы) в которую конструктор будет иницилизировать эту ссылку, типа так
    public static tema1_form;
    ...
    // конструктор Tema1
    Tema1()
    {
    ...
    Tema1::tema1_form=this;
    ...
    }

    // в другом файле
    Tema1::tema1_form.button1.BackColor=Color.LightBlue;
    формально способов тьма, тебе тут могут еще накидать, а то народ 'почему то' не любит в конкретных задачах такие простые способы.
    Ответ написан
    Комментировать
  • Как программным методом удалить одну из итераций цикла for?

    @rPman
    в твоем случае просто - делать i--, само собой, если условие пропуска содержит учет номера шага, то для этого завести дополнительный счетчик настоящих шагов

    Если что под твою задачу лучше делать цикл while и считать количество 'новых слов' а не количество шагов, зачем тебе эти шаги
    Ответ написан
    Комментировать
  • Как вывести double число c определенным числом знаков ДО ЗАПЯТОЙ и После в сумме?

    @rPman
    Преобразовываешь в строку toString и берешь первые n символов подстроки Substring

    p.s.
    идеально выровненные числа вывести
    это отвратительно выровненные числа, пользоваться этим будет невозможно

    правильно выравнивать числа по правой стороне, зафиксировав количество знаков после запятой (что бы разделительная точка была на одной линии
    1 322.0000
      133.4400
       12.4440
        0.3333
    Ответ написан
    Комментировать
  • Как включить бд в exe и как ей потом пользоватся?

    @rPman
    Нужно решение, умеющее работать с базой данных в ресурсах exe-файла (я таких не знаю) или в оперативной памяти, в этом случае при запуске программы базу можно загрузить в память из ресурсов (где она хранится в виде просто набора байт без типа)

    sqlite умеет открывать базу данных в оперативной памяти, соответственно храни дамп своей базы в ресурсах, вот пример на c++ как импортировать и экспортировать memory базу данных, правда он с файлом, но как я понимаю проблем тут не будет работать с техническими потоками на оперативной памяти с помощью Application.GetResourceStream
    Ответ написан
    Комментировать
  • Как написать программу для решения уравнения на C#?

    @rPman
    Зачитываешь данную формулу буквально, функция равна тому то если выполняется такое условие, иначе равно другому если другое условие... максимально подробно, не упуская ни одного момента.

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

    p.s. табулирование функции (блин кто придумал это, мне пришлось гуглить, за всю жизнь я это не слышал) - это нужно выдать значения функции на заданном интервале входного параметра, это можно циклом for сделать. В задаче не сказано как определяется этот интервал и шаг, поэтому забей любые разумные значения в коде константами.

    p.p.s. формулу то хоть читать умеешь?
    Ответ написан
    5 комментариев
  • Как десериализовать простой Json в массив?

    @rPman
    Вот так не работает?
    Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyClassWithCode>>(строка_с_json)


    upd. тут тебе нужен потоковый парсер, используй JsonTextReader, он будет выдавать тебе в цикле по одному токену, и тебе достаточно закодировать логику, учитывая по ходу на каком уровне находится твой декодер либо надеяться на то что структура json всегда верная и не требует валидации

    int[] собирай уже сам

    в этом случае ты сможешь обрабатывать огромный json файл массив последовательно
    тут пример как вручную не следить за объектом в процессе
    Ответ написан
    4 комментария
  • Как сделать так чтоб хвост змейки двигался по направлению головы winforms C#?

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

    Способов хранения миллион, самый тупой - массив пар x,y, но не массивом а списком (чтобы эффективно удалять хвост и добавлять новую голову), с каждым шагом ты добавляешь (конец списка) точку головы и тут же удаляешь точку хвоста (начало списка)... при удалении рисуешь квадрат на экране фоном, а при добавлении - цветом змеи.
    Этот алгоритм не требует перерисовку змеи полностью да и вообще весь экран... даже не нужно хранить информацию о клетках где то дополнительно, так как чтобы положить яблоко будет достаточно хранить в другом массиве список координат яблок.

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

    @rPman
    Для упрощения администрирования и защиты сервисов в рабочей сети общепринятая практика - собирать их все в локальной сети (при необходимости объединенной по интернету с помощью vpn), потому как иначе либо каждый сервис должен уметь защищаться от атак (напоминаю, шифрование не спасет от ддоса) либо в каждом участке сети настраивать фаервол.
    Ответ написан
    Комментировать
  • Как в линукс проверить, запущено ли net приложение?

    @rPman
    Нет нужды создавать mutex или semaphore, исторически, хоть в windows хоть в linux для этого открывают файл (пустой, их называют .lock) в режиме SharedAccess NONE
    https://learn.microsoft.com/ru-ru/dotnet/api/syste...
    https://learn.microsoft.com/ru-ru/dotnet/api/syste...
    FileMode = Create тогда файл будет автоматически создан если отсутствует и не выдаст ошибки если уже есть
    FileAccess = Write чтобы файл можно было создать (если создать его заранее то хватит Read)
    SharedAccess = None запрет на повторное открытие хоть на чтение хоть на запись


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

    @rPman
    Где то должна лежать доступной для формы-источника ссылка на форму получателя.

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

    Иначе, оформлять сам процесс коммуникаций в виде отдельного класса (а там в зависимости от цели организации этого посредника, либо по классу на вид коммуникаций либо общий для всех сообщений и способов выбора от кого и кому)
    Ответ написан
  • Возможно ли запускать программы (.exe) на самописной OS Cosmos OS?

    @rPman
    Да, самый популярный инструмент - wine.

    С вас самый минимум (сарказм) - собрать (скомпилировать) этого монстра под вашу ОС и архитектуру железа, для этого она должна быть как минимум posix совместимой и на ней должен быть как минимум компилятор gcc (с его помощью можно будет собрать остальные инструменты, нужные для сборки wine)

    p.s. пример обратного механизма, запуск linux приложений в windows - wsl (его первая версия, так как вторая - это фактически виртуальная машина)

    p.p.s. когда то очень давно, во времена os/2 и появления winnt4, в windows был встроенный механизм поддержки и приложений из unix операционных систем но был старательно уничтожен майкрософтом во имя зла и монополии (в те времена к примеру win32 запускались в os/2 нативно)
    Ответ написан
  • Как ввести логин в окно входа в Steam?

    @rPman
    Потому что твой xpath явно неверный (ты не указал весь код)
    <input type="text" class="newlogindialog_TextInput_2eKVn" value="">
    ...
    <input type="password" class="newlogindialog_TextInput_2eKVn" value="">

    Правильно - ищешь все input без фильтра и каждый проверяешь на подстроку в названии класса и значение type, еще можно искать по координатам, запрашивая у каждого getBoundingClientRect, пропуская заодно с нулевым размером
    Ответ написан
  • Как сделать кликер на C#?

    @rPman
    Кажется я уже отвечал на этот вопрос
    c# - худший выбор для данной задачи, так как все придется делать через win32, лучшим выбором тут будет c++ или c

    И да, с некоторыми шансами это не поможет.

    p.s. с высокой вероятностью симуляция кликов через SendMessage с майкрософтовским файловым эксплорером не сработает, там такой п..ц наворочен, когда то давно давно я ковырялся в нем со spy++. С другой стороны, в win11 его полностью переписали, может стало легче?
    Ответ написан
    Комментировать
  • Как сделать клик без перемещения курсора в неактивном окне программы?

    @rPman
    Анализируешь окно приложения на состав win32 окон ( там может быть сложная иерархия, вплоть по контрола или одно основное, а интерфейс рисуется) с помощью штатной утилиты microsoft visual studio spy++, затем в программе ищешь по выявлненным свойствам окно FindWindow и шлёшь сообщение с помощью SendMessage. С помощью spy++ можно проанализировать какие именно сообщения приходят при клике.

    P.s. Для directx приложений это не сработает
    Ответ написан
    Комментировать
  • В windows form на c# медленно отправляет данные по serial Бод на 921600 даже в асинхронным Как сделать можно чтоб шустро?

    @rPman
    о какой скорости идет речь, если ты по одному символу туда пишешь? пиши сразу блоками по несколько килобайт
    Ответ написан
    Комментировать
  • Возможно ли на C# выполнить перевод криптовалюты и её трату?

    @rPman
    Мой тебе совет - найми знающего человека.
    Самоучиться на продакшене своими/чужими деньгами - плохая идея.

    Код твоего проекта не должен в принципе работать с криптовалютой. Отделяй финансовую систему от 'игры' максимально. Для приема криптовалюты достаточно заранее нагенерированных адресов, которые ты можешь делать чуть ли не вручную почти в любом кошельке.

    p.s. куда ты переводить криптовалюту собрался, если ты ее принимаешь? продавать сразу как получил? - отдельная задача на миллион, завести на бирже аккаунт, держать там некоторый буфер, обменивать ту же сумму что получил от клиента и оперативно выводить излишки и пополнять недостаток. Все это отдельными скриптами, которые должны быть максимально далеко от игрового 'сервера'. На c# красивых универсальных библиотек мало, для других языков настоятельно рекомендую ccxt
    Ответ написан
    4 комментария
  • Как воспользоваться LLamaSharp?

    @rPman
    Оригинальные веса llama были выложены кажется на github
    magnet:?xt=urn:btih:ZXXDAUWYLRUXXBHUYEMS6Q5CE5WA3LVA&dn=LLaMA

    получаешь что то типа
    7B/checklist.chk
    7B/params.json
    7B/consolidated.00.pth
    13B/...
    ...
    tokenizer_checklist.chk
    tokenizer.model

    тебе нужны все tokenizer* файлы в корне и один из каталогов, соответствующий размеру модели (7B и 13B не знают русского и слабоваты)

    Этот c# проект - это биндинг к оригинальному проекту llama.cpp, там есть python скрипт convert.py (зависимости ставь сам, недостаточно requirements.txt нужен еще pytorch и еще что то, сам разберешься, в windows я не помогу) для конвертации из huggingface формата в суперэффективный ggml (этот формат постоянно меняется, где то раз в месяц, поэтому бессмысленно качать готовые, так как они будут привязаны к конкретной версии llama.cpp), его главная фича - mmap, веса не грузятся в память приложения а остаются в файловом кеше ОС, т.е. повторный запуск приложения моментальный.

    Будь готов к нескольким конвертациям, модели большие, особенно 65B, на диске тебе потребуется как минимум один раз хранить f16 версию (2 байта на вес, т.е. 130Gb для 65B модели) после его можно (но не обязательно) сконвертировать в формат с квантизацией (на вес будет требоваться к примеру 4 бита или 8), это значительно ускоряет работу ценой незначительного ухудшения качества.

    python convert.py --outtype f16 --outfile llama-7b-q4_0.ggml /torrents/LLaMA/7B
    вместо f16 можешь поставить f32, требования к памяти взлетят до 4 байт на вес но в теории это может быть тоже быстро (если критично, проведи бенчмарки), мои тесты показывают что f16 медленнее q4_0

    Опционально можешь провести квантизацию:
    ./quantize llama-7b-f16.ggml llama-7b-q4_0.ggml 2
    тут 2 это тип квантизации
    usage: ./quantize model-f32.bin [model-quant.bin] type [nthreads]
      type = "q4_0" or 2
      type = "q4_1" or 3
      type = "q5_0" or 8
      type = "q5_1" or 9
      type = "q8_0" or 7
    Очевидно что q4_... потребуют половину байта на вес (требования к 64b модели будут примерно 42+5GB ram), разница версий квантизации в скорости и качестве (q4_0 быстрее и чуть хуже q4_1 но я уверен что без синтетических тестов эту разницу на практике не заметишь даже между q16 и q4, она там единицы процентов, но вот скорость значительно отличается).

    Для работы llama.cpp нужен один файл .ggml (внутри и веса и токенизер) его и пиши в путь до модели.

    Поэкспериментируй с количеством threads в настройках, их нужно писать меньше чем позволяет процессор (тем более с гипертреадингом), так же я хз как у него с поддержкой gpu, она появилась относительно недавно, оптимизация по какому то одному конкретному тяжелому расчету.
    Ответ написан
    Комментировать