Ответы пользователя по тегу C#
  • Почему происходит выход за границы массива?

    @rPman
    В массиве key лежат индексы выходящие за пределы массива letters, а точнее при j=0 в данной строке обращаетесь к keys[1] со значением 5, когда как в letters максимум 4.
    Ответ написан
    Комментировать
  • Что использовать для автоматизаций действий в браузере в параллельном или многопоточном режиме?

    @rPman
    c# а точнее .net в поставке имеет контрол WebBrowser, это полноценный браузер (раньше был интернет эксплорер, сейчас хз edge это или уже на webkit, если использовать mono то это будет firefox), с ним невероятно просто работать, хотя на практике вместо того чтобы ковыряться в DOM документа средствами .net лучше это делать внедрив javascript внутрь страницы.

    Выглядит работа примерно так, кидаете на форму контрол, на событие onload получаете доступ к документу webControl.document, дальше это уже браузерные dom методы. Совет, вместо добавления script на страницу лучше запускайте ее по таймеру .setInterval с нулевым интервалом, тогда скрипт будет запущен в контексте страницы а не какой то песочницу .net хотя последнее возможно подойдет для многопоточного доступа (осторожно контрол не предполагает многопоточность, но вы можете по ксперементировать, открыв несколько контролов и работая с ними из разных потоков, отпишитесь о результатах)

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

    @rPman
    делать периодические запросы к WMI
    https://docs.microsoft.com/en-us/windows/win32/wmi...
    смотреть performance data provider

    первая же ссылка из гугла пример, не совсем то но думаю порыть документацию и допилить.
    Ответ написан
    Комментировать
  • C# Net Core Web Api. Можно ли отправить файл через POST api на сервер и получить временную ссылку на него?

    @rPman
    https://docs.microsoft.com/ru-ru/aspnet/core/mvc/m...
    файл складывайте в определенную папку и удаляйте по таймауту (неправильно но просто), можете анализировать логи сервера чтобы понять скачивает кто файл или нет, либо реализуйте раздачу файла сами (неправильно с архитектурной точки зрения)
    Ответ написан
    Комментировать
  • Возможно ли перенести проект C# на C++/CLI?

    @rPman
    Перенос приложений между 'языками' чаще создает проблемы не языков и синтаксиса, у c# и с++ они почти идентичны, но из-за используемых библиотек и фреймворков, а точнее отсутствие тех что есть у .net но нет для с++, в т.ч. многопоточности, привычной работы со списками/итераторами и т.п.

    Если же у вас наиболее скучный подход к разработке требуемого куска кода, например не используются внешние библиотеки и современный синтаксический сахар, то вы можете даже под opencl или nvidia cuda портировать свой код без особых шевелений.
    Ответ написан
  • Почему Application.Exit не работает, в чем смысл этого метода?

    @rPman
    Application.Exit не такая смертельная команда, именно из коннструктора ее не получается вызвать, вы можете завести свой boolean флаг необходимости выхода и вызвать этот метод из Form_Load (чтобы форма кратковременно не появлялась, можете в конструкторе или в свойствах сделать ее скрытой, а на Form_Load включать отображение).

    Например Environment.Exit(0) работает в любом случае но осторожно, деструкторы могут быть не вызваны.
    Ответ написан
    Комментировать
  • Как я могу получить историю google chrome из electron?

    @rPman
    Первая же ссылка в гугле на тот же stackoverflow, уж адаптировать код для nodejs будет не сложно?

    Коротко - история хранится в sqlite файле, есть правла риски что формат полей и таблиц будет меняться но не думаю что это фатально.
    Ответ написан
  • Как оптимизировать рисование линий в WPF?

    @rPman
    Тормозит наверное потому что на on paint перерисовываете все объекты (как минимум при добавлении новой?) Рисуйте линии в битмап однократно и уже его на on paint отрисовывайте.
    Ответ написан
  • Unity. Тормозит игра при соприкосновении двух коллайдеров?

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

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

    @rPman
    Именно так и делать - необходим эмулятор с пустыми классами и да, это вам поможет только с компиляцией, иначе вам так или иначе придется реализовывать интерфейсы и конструкторы... т.е. фактически писать эту библиотеку с нуля.
    Ответ написан
    2 комментария
  • Как создать простой инсталлер через Inno Setup?

    @rPman
    в скрипте .iss пропишите эти значения
    DisableStartupPrompt=Yes
    DisableDirPage=Yes
    DisableProgramGroupPage=Yes
    DisableReadyPage=Yes
    DisableFinishedPage=Yes
    DisableWelcomePage=Yes

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

    @rPman
    Такова селяви, вы можете попробовать запрятать логин и пароль в обфусицированном коде но это защитит только от пользователей но не от хакера/знающего человека, правда сделает эту задачу дорогой.

    На практике, обычно так и делают, если у вас десктопное приложение и пользователи подключаются с его помощь к базе данных, можно запрашивать у них логин и пароль (т.е. строка подключения это только ip и порт БД), т.е. за авторизацию и аутентификацию будет отвечать БД.

    p.s. парольная авторизация это пережиток прошлого ;) красивый пример - вы можете сделать авторизацию по qr-коду, генерируемым приложением на мобильном телефоне (а там таймкод по типу google authenticator) и снимать его через вебкамеру (подойдут даже самые дешевые, помню покупал одну за 70р, с подсветкой даже), коды авторизации выдавать пользователям при личной встрече.
    Ответ написан
    Комментировать
  • Как создать инсталятор программы на C# с интерпретатором Python?

    @rPman
    Вы точно хорошо подумали, прежде чем выбрать такую странную смесь архитектур?
    p.s. правда я и сам бы мог так сделать, если бы потребовалось писать сложный интерфейс, а вычислительная логика уже была бы на python, так как в visual studio на .net писать сложные формочки удобнее всего (имхо).

    Если вас не интересует полноценная поддержка обновлений а так же вас не волнует что архив установки будет толстым (особенно это замечают когда будете делать частые обновления), тупо складывайте заранее установленный каталог python в отдельный каталог и пользуйтесь (максимум перед запуском переменные окружения прописывайте), в этом случае за обновление будете отвечать сами. Но даже в этом случае хорошим жестом будет являться предложение установки приложения без питона, ожидая его уже установленным на машине пользователя. Почему вариант таскать питон с собой плохой? - поддержка, через три десять лет, чтобы запустить ваше приложение с поддержкой современного оборудования, понадобится пуд соли и ершик для чистки унитаза (особенно это актуально для gpgpu/opencv подсистем).

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

    Если у вас linux с нормальными пакетными менеджерами, пользуйтесь ими, и программными пакетами в их формате (apt/rpm/ebuild/..), и они сделают все необходимое за вас в лучшем виде! Если же windows...

    В не кастрированных (не домашние) версиях windows10 можно попытаться запустить бинарники ubuntu/debian, если не требуется gui, это почти наверняка будет работать, т.е. вы можете использовать штатный пакетный менеджер apt, ив пару команд установить/обновить все все необходимое

    Можете так же устанавливать python в тихом режиме, скачав установщик с сайта https://www.python.org/downloads/, это будет занимать меньше места, но в случае если вам нужны необычные модули, то вам может не повезти найти собранные под windows, да и те что есть, обычно требуют ручную установку.. в общем не все там легко автоматизируется, пути загрузок внезапно могут через год другой исчезнуть и пользователи получат проблему.

    Универсально, можете воспользоваться готовой linux подсистемой для windows - cygwin (на столько долгой и качественной поддержки почти всего из мира windows в linux вы не найдете), и таскайте в своем установщике их setup.exe (кстати он всегда доступен для загрузки с сайта по одному и тому же url) в режиме Unattended setup mode (--quiet-mode), вместе с питоном вы получите базовый набор утилит командной строки и кучу еще чего теоретически лишнего, но поверьте, оно не помешает, особенно если вам нужна автоматизация процессов управления установкой на машине клиента.
    Ответ написан
    Комментировать
  • Как сделать так чтобы программа взаимодействовала с поисковиком?

    @rPman
    Запустить браузер на c# дело 3 кликов мышки (контрол WebBrowser), чуть сложнее будет симулировать ввод запроса, точнее найти в какие input необходимо вставить текст и какую нажать.

    Все действия лучше симулировать на javascript внутри этого браузера (хотя есть возможность работать с DOM прямо из c#, на чтение это оправдано но на изменения могут возникать не очивидные глюки в общем случае), запуская через onTimeout с нулевой задержкой.

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

    p.s. Когда то давно делал приложение, которое делало десятки запросов в минуту, использовались сразу несколько ip адресов гугла по очереди чтобы избежать бана за частоту запросов, симуляция была на основе curl, тот еще квест, а главное поддерживать это было нудно, поисковики меняются постоянно, лучше уж как я выше написал.
    Ответ написан
    Комментировать
  • Как в C# Windows Form прочитать названия сепараций в PDF файле?

    @rPman
    В общем случае никак! pdf это считай картинка с опционально текстовой информацией.

    В вашем случае можно попробовать конвертировать pdf файл в картинки, вырезать из определенной области кусок (imagemagic) и отправить его на распознавание с помощью того же tesseract.
    Ответ написан
    Комментировать
  • Как в C# отправлять видео поток на принимающий UDP от FFMPEG'а?

    @rPman
    вам необходимо сформировать валидный поток данных например несжатых данных по этому rfc
    https://tools.ietf.org/html/rfc4175

    Возможно что 1080p60fps несжатый поток обработать на c# будет проблематично и лучше найти готовые библиотеки для этого

    p.s. попробуйте воспользоваться пайпами (правда с этим могут быть проблемы на windows, с правами например)
    https://stackoverflow.com/questions/51903888/is-it...
    Ответ написан
    Комментировать
  • Сколько времени займёт создание базы данных на C# и WPF без SQL?

    @rPman
    Когда то давным давно, еще до WFP используя обычные Windows Forms и классы Dataset писал сложную прослойку-кеш для базы данных, десятки таблиц. Речь шла о 'покликать лениво мышкой', вся база в памяти, сохранение штатным сериализатором (в ту же xml - две строчки кода), сотни мегабайт, работало с приемлемой скоростью.

    p.s. Сказано что без sql? берите любую готовую nosql базу данных ;) например redis
    Ответ написан
  • Игра змейка C#(Windows Forms), какую технологию выбрать для взаимодействия игроков по сети?

    @rPman
    Подключение обычные tcp сокеты (в udp пока не лезте, но с ними тоже реально).

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

    От сервера передаете изменения содержимого экрана, по объектам, змейки, корм и прочее. Само собой при подключении вместо дельты сервер должен вернуть текущие координаты. При потере связи тогда все будет автоматом восстанавливаться. Разработайте формат сообщений, воспользуйтесь готовыми сериализаторами, не изобретайте паровоз, хотя...

    На клиенте перерисовываете все это каждый раз как получаете данные от сервера.

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

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

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

    @rPman
    Список реализаций тут lua-users.org/wiki/LuaImplementations
    Например это https://github.com/chkn/AluminumLua

    Вы можете вообще не добавлять никаких библиотек к вашему контексту и добавлять свои методы в вашем коде которые будут вызываться на функции в lua.

    p.s. библиотеки опенсорс, всегда можно поправить код в том месте где файл открывается.
    Ответ написан
  • Почему в WPF скроллится не тот элемент, который в фокусе, а тот, на которой наведена мышь?

    @rPman
    это вообще фича операционной системы, и точно знаю в win98 (плюсом) и в winxp это настраивалось твиками.
    Ответ написан