Ответы пользователя по тегу C#
  • Как исправить ошибку "Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере."?

    Nipheris
    @Nipheris Куратор тега C#
    Ставьте в свойствах проекта галочку Prefer 32-bit и радуетесь. Ну или ставите 64-х битную версию провайдера Access.
    Ответ написан
    1 комментарий
  • Как реализовать версионность данных на EntityFramework CodeFirst (метод таблиц-версий, подход TPC)?

    Nipheris
    @Nipheris Куратор тега C#
    Вы уверены, что надо этим мучать EF? Я думаю, версионирование данных это один из кейсов, когда стоит применить триггеры, а не поднимать версионность на уровень объектной БД.
    Ответ написан
    1 комментарий
  • Из каких источников изучить c# wpf чтобы взаимодействовать с микроконтроллерам?

    Nipheris
    @Nipheris Куратор тега C#
    Сначала изучите C# и .net fw откуда угодно (1000 и 1 ответ на Тостере уже есть), чтобы не задавать такие вопросы.
    Очевидно же, что язык и даже платформа не имеет отношения к кокнретным интерфейсам. Тем более UI-подсистема.

    Вы как планируете управлять ими, через COM-порт?
    Ответ написан
    Комментировать
  • Как в Window динамически добавлять Pie Chart ( WPF C#)?

    Nipheris
    @Nipheris Куратор тега C#
    Добавлять созданием объекта чарта. Привязывать, например, биндингами, как в примере.

    Вы C# и WPF впервые видите?
    Ответ написан
    Комментировать
  • О чем речь в POST запросе на C#?

    Nipheris
    @Nipheris Куратор тега C#
    1) из хранилища сертификатов текущего пользователя вытаскивается сертификат по его серийному номеру;
    2) к запросу прикладывается полученный из хранилища клиентский сертификат;
    3) содержимое poststr пишется в тело POST-запроса;
    4) запрос отправляется и программа ждет ответ от сервера;
    5) ответ перекодируется в строку result и выводится в консоль;

    Как в ноде вытащить сертификат из Виндового хранилища - понятия не имею. С остальным вы и сами разберетесь.
    Ответ написан
  • Переход из backend во frontend?

    Nipheris
    @Nipheris Куратор тега C#
    в этом вопросе я вообще не силен

    В вашем вопросе уже есть ответ. Сейчас перед вами встала проблема, и вы ищите, куда бы от неё убежать. Если бы вам бэкенд был не интересен, вы бы у нас не спрашивали. Если бы вы таки попытались разобраться хотя бы в вопросе взаимодействия с базой - то тоже бы не спрашивали.

    Если для вас проблема то, что вы указали,
    взаимодействие с бд, да и вообще вся работа с бд

    то вам еще рановато говорить, что вы "пишете на asp.net". Фреймворк вы конечно может и достаточно знаете, но пока что это не инструмент в ваших руках. Почему? А кому сегодня нужен бэкенд на C# без базы данных? Распределенные вычисления? Ну может быть, но таких проектов единицы. Массово это LOB-приложения, и там всё начинается с БД.

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

    Nipheris
    @Nipheris Куратор тега C#
    На самом же деле память, реально используемая приложением остается без изменений.

    Откуда такой вывод?
    Но я то знаю, что в программе не будет создаваться больше ни одного объекта они будут только перерисовываться.

    Еще более абсурдное суждение. Кто говорит, что перерисовка не приводит к созданию объектов? Как насчёт объектов Graphics?
    как можно избавиться от резервируемой памяти "про запас"

    Могу ошибаться, но я никогда не слышал о резервировании памяти "про запас". Видимо, объекты все-таки создаются.
    мне надо чтобы приложение не ело лишней памяти ну или ело, но эта память со временем не увеличивалась (при каждом вызове Invalidate).

    Она будет время от времени собираться, как вы и сказали. Чем меньше свободной памяти в системе, чем чаще будет сборка мусора. Если для вас эти условия недостаточно строгие, используйте языки с ручным управлением памятью.

    Еще проверьте, что у вас не утекают IDisposable объекты. Можете повызывать GC.Collect, но это само по себе временное решение.
    Ответ написан
    3 комментария
  • Как оформить DataTemplate для ListBox?

    Nipheris
    @Nipheris Куратор тега C#
    1-й вариант: используйте Margin и Padding для достижения желаемого эффекта.
    2-й вариант: используйте xml:space="preserve" в TextBlock-е, где нужно сохранить пробелы.
    Ответ написан
    Комментировать
  • Для этого ли нужны делегаты?

    Nipheris
    @Nipheris Куратор тега C#
    Делегаты - это реализация функтора на платформе .net. Функтор - это распространенная в современных языках базовая концепция, пришедшая из функционального программирования. Коротко её смысл в том, чтобы работать с функцией как со значением, наравне со значениями других, более привычных типов, вроде int или double. Т.е. функцию можно передавать в другие функции, возвращать из функций и так далее. В функциональных языках это обычное дело, однако и в императивных языках это даёт массу возможностей.

    Количество применений делегатов в дотнете вообще и конкретно в C# огромно. Собственно, сам язык сегодня является частично функциональным из-за того, что широко используются делегаты и основанные на них возможности. Любая лямбда может быть скомпилирована в делегат. LINQ to Objects основаны на делегатах. События есть инкапсулированные делегаты. Любые callback-и в дотнете это делегаты. Список можно продолжать

    Сравнивая C# с другими языками, делегаты часто называют "умными указателями на функции" в том смысле, что они похожи на указатели на функции в Си, но умеют еще и запоминать объект, для которого требуется вызвать метод, если метод нестатический. А вот в C++ есть прямой их аналог - это std::function.

    В общем, почитайте еще про них. Я даже не понимаю, к чему вы привели свой пример, и что он, по вашему мнению, должен продемонстрировать. Логично, что вы не смогли создать делегат, т.к. инстанс-метод невозможно вызвать без привязки к конкретному объекту.
    Ответ написан
    Комментировать
  • Что не так с Lambdaexpression, созданного из BinaryExpression?

    Nipheris
    @Nipheris Куратор тега C#
    'x' в previousExpression и 'x' в currentExpression считаются разными переменными. Необходимо явно указать, что одну из лямбд, например currentExpression, нужно вызывать с той же переменной, что и другую. Например, попробуйте так:

    var result = Expression.OrElse(Expression.Invoke(currentExpression, previousExpression.Parameters[0]), previousExpression.Body);


    И да, могли бы привести в порядок код, прежде чем вопрос задавать, минут 10 я только пытался понять что вы делаете. Вот как вы считаете, это строчка легко читается?
    Expression<Func<int, bool>> filterFunctor, comparison = x=> x == corrections[1] || x == corrections[0];

    Помимо того, что вы лямбду в скобки не берете, вы еще и две переменных в одном стейтменте объявляете.
    Ответ написан
    2 комментария
  • Паттерн Repository и Active Record?

    Nipheris
    @Nipheris Куратор тега C#
    Репозиторий - это хранилище сразу для всех объектов определенного класса. Методы репозитория, добавляющие или удаляющие объект, принимают этот объект в качестве параметра. Методы репозитория, отвечающие за поиск, возвращают экземпляры найденных объектов. У вас один экземпляр репозитория для всех объектов, которые он может хранить (как правило - один экземляр для всех объектов какого-то одного класса или иерархии классов).

    В паттерне Active Record объект умеет сохранять сам себя. Иными словами, ответственность за вопросы хранения лежит на самом объекте.
    Ответ написан
    Комментировать
  • Возможно ли сделать switch case по регулярному выражению?

    Nipheris
    @Nipheris Куратор тега C#
    есть список файликов и в зависимости от названия их по разному парсить нужно

    А почему именно этот вопрос и не задать изначально? Сделайте IDictionary<string, Action<string>> и намапайте регулярку на действие.
    Ответ написан
    2 комментария
  • Как добавить действия обработчикам событий стандартных компонентов?

    Nipheris
    @Nipheris Куратор тега C#
    на изменение выделенного элемента

    Ежели так, то вам нужен TreeView и OnSelectedItemChanged.
    Ответ написан
    2 комментария
  • Visual Studio. Вместо кнопки "запустить" появилась кнопка "присоединение". F5 не работает Как запустить проект?

    Nipheris
    @Nipheris Куратор тега C#
    Возможно, у вас не открыт ваш солюшен. Проверьте, что в Solution Explorer отображается содержимое солюшена.
    Ответ написан
    Комментировать
  • Зачем нужен Stream в C#?

    Nipheris
    @Nipheris Куратор тега C#
    GetBytes возвращает long, не знаю где вы нашли, что он возвращает массив байт:
    https://msdn.microsoft.com/ru-ru/library/system.da...

    Так что передача буфера третьим параметром более чем логична.

    И оно кстати ругается: Cannot convert type long to byte[]

    Да ладно вам?) А это не навело вас... на мысли относительно типа возвращаемого значения?) Вы сами придумали, что он возвращает массив байт?
    тут еще как я понимаю размерность буфера предполагается указывать -- вопрос, а как узнать то сколько данных будет в самом блобе?

    Ну вот если все таки пройдете в документацию, то ниже вы увидите следующее:
    GetBytes возвращает количество доступных байтов в поле.Часто это значение равно точной длине поля.Однако возвращенное число может быть меньше фактической длины поля, если GetBytes уже использовался для получения байтов из поля.

    При передаче буфера, значение которого равно null, метод GetBytes возвращает длину строки в байтах.

    Поэтому, если вы не знаете длину буфера - вызовите метод с null для получения этой длины, создайте буфер и поместите туда значение вторым вызовом GetBytes.
    В .net и C# нормальная документация, ее полезно читать.
    Почему во всех примерах используются какие-то Streams?

    Потому что BLOB они на то и BLOB, что Large Object. Блоб может быть килобайтовый, а может быть и гигабайтового размера. Гигабайт читать в массив целиком далеко не всегда целесообразно, как правило - вообще не целесообразно.

    Стримы - это абстракция в стандартной библиотеке, реализующая концепцию потоковой обработки. Файловый поток не будет загружать 10-гиговый файл в память целиком, если вы прочтете только первый килобайт. С блобами из базы аналогичная ситуация. Даже если конкретно ваш драйвер БД не поддерживает загрузку блоба по частям, в принципе такая практика существует.
    Ответ написан
    5 комментариев
  • Зачем используют интерфейсы при проектировании архитектуры приложения?

    Nipheris
    @Nipheris Куратор тега C#
    Я думаю интерфейсы в этом примере применяются как и везде - для контроля за связями между компонентами крупной системы и для обеспечения заменяемости компонент.

    Раз уж так, разрешите мне прилинковать старый ответ: Какова роль интерфейсов в ООП?
    Ответ написан
    Комментировать
  • Что нужно знать для написания backend игрового сервера?

    Nipheris
    @Nipheris Куратор тега C#
    Александр Александров к сожалению, вынужден присоединиться к Сергей в том, что вы не знаете, что вам нужно от сервера.

    Понимаете, все эти архитектурные паттерны - "бэкенды" в web-понимании, REST-ы - это все хорошо и удобно, но стандартные подходы web - это не всегда про игры и риалтайм-приложения.

    Вы должны принять много различных решений, прежде чем браться что-то делать.

    > есть сервер, к которому обращается игровое приложение что бы записать или извлечь определенных данные игрока
    Вот в этих "определенных данных" и вся суть. Можно по-разному распределять логику между клиентом и сервером, но нередко, особенно в играх, где нужна устойчивость к мошенничеству, большая часть игровой логики находится на сервере. Это гораздо больше, чем "извлечь данные игрока". Если игровая логика находится на сервере, то тогда и требования к процессу обмена данными соответствующие - в REST особого смысла нет, т.к. все равно придется вводить понятие "сессии" или "соединения" с сервером, и хранить его состояние. И ваша основная задача будет не в легкой масштабируемости на заранее неизвестное число клиентов, а наоборот, в поддержании максимально комфортного игрового процесса для имеющихся игроков, а масштабирование будет на втором месте и будет достигаться немного иными архитектурными решениями.

    Многие крупные игровые проекты с большой долей логики на сервере используют свои протоколы обмена (как правило, бинарные) поверх обычного TCP-соединения. Многие применяют различные языки описания таких протоколов, чтобы было проще управлять разработкой, и вносить изменения в протокол (например, по таким описаниям можно автоматически генерировать часть серверного и клиентского кода). Например, Близзы, насколько мне известно, используют Protocol Buffers для Diablo 3.

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

    возможность сохранить процесс прохождения игры

    вам нужно решить, какой уровень доверия у этих данных. Это во многом и будет определять архитектуру. Если ваш проект соревновательного характера, и подмена данных о достижениях или подтасовка результатов отдельных игр или матчей может поставить крест на всем проекте, то тогда клиент не может быть доверенной стороной, и критичная логика должна быть на сервере.
    Ответ написан
    8 комментариев
  • Современные тенденции разработки на C#?

    Nipheris
    @Nipheris Куратор тега C#
    Общие тенденции сейчас такие - пользоваться NuGet по-нормальному (т.е. как в DNX, а не сбоку прилепленным, как в классических C# проектах), наконец по-нормальному поддерживать все платформы (как должно было быть изначально), т.е. хотя бы Линух и Фряху помимо Винды, не бояться portable-версий библиотек.

    Более предметно можно поговорить, если вы точно скажете, чем интересуетесь. Непонятно, то ли вы про тенденции в языке хотите узнать, то ли про тендеции платформы дотнет в целом.

    MS пытается сейчас сделать весь дотнет и конкретно C# более легковесными. По .net core и asp.net core это ясно видно - альтернатива большому полноразмерному .net framework, asp.net теперь распространяется через NuGet, новые Roslyn-компиляторы и DNX позволяют пользоваться C# как другими популярными языками вроде Питона и Руби, например дают возможность не компилировать весь проект заранее, а делать это на ходу, по-требованию и при изменении файлов исходников. Entity Framework старается не отставать, т.к. это сейчас рекомендуемый подход для доступа к данным в БД. Не так давно вроде впилили поддержку документных баз (не знаю правда зачем :) ) работают в направлении поддержки NoSQL-баз (поправил Роман ).

    К чему вы упомянули dependency injection не совсем понятно, это паттерны, полезные в любом языке и в любом проекте.
    Ответ написан
  • Быстрый поиск по базе. Что выбрать?

    Nipheris
    @Nipheris Куратор тега C#
    кроме SQL

    Ну раз не SQL (каковы объективные причины?), то берите любую key-value базу и пишите в неё. Поиск будет идти по ключу целиком или по части?
    Вы сейчас описали стандартную задачу для любой нормальной базы данных. Т.е. той, в которой есть индексы. Рассуждать имеет смысл только если вы укажете, насколько часто будут вставляться строки, и какие точно будут выборки.
    Ответ написан