• Как зашифровать конфигурационный файл app.config в C#?

    Nipheris
    @Nipheris Куратор тега C#
    По ссылке что вы привели упоминается ProtectedConfigurationProvider, который находится в неймспейсе System.Configuration и вроде как прямого отношения к ASP.NET не имеет. Вы уверены что нельзя его использовать в вашем случае?
    Ответ написан
  • C# изменить иконку exe?

    Nipheris
    @Nipheris Куратор тега C#
    Попробуйте www.bome.com/products/restorator или ResHacker, насколько мне известно у .net-сборок ресурсы лежат также, как и в нативных файлах, т.е. проводник их ищет по тем же идентификаторам. Открываете файл - заменяете иконку, сохраняете, смотрите результат. На всякий случай проверьте, чтобы размеры совпадали у новой и старой иконок.
    Ответ написан
    Комментировать
  • Какие библиотеки использовать для шифрования?

    Nipheris
    @Nipheris Куратор тега C++
    Ответ написан
    Комментировать
  • DataGridComboBoxColumn - как поймать изменение?

    Nipheris
    @Nipheris Куратор тега C#
    Я бы посоветовал вам для поимки изменений реализовать нормальную viewmodel, нормальные биндинги и не мучаться с событиями. Это и к обычному ComboBox относится, но там, ввиду того что комбобокс один, а не внутри колонки, ивенты еще можно пережить. Если у вас какая-то специфическая задача, не относящаяся к обычной модификации данных в модели, опишите подробнее зачем вам отслеживать изменение.
    Ответ написан
    Комментировать
  • Почему возникает ошибка доступа к контролу из другого потока?

    Nipheris
    @Nipheris Куратор тега C#
    > Объект, работающий с SerialPort находится в отдельном потоке?

    Цитирую из https://msdn.microsoft.com/en-us/library/system.io... :

    The DataReceived event is raised on a secondary thread when data is received from the SerialPort object. Because this event is raised on a secondary thread, and not the main thread, attempting to modify some elements in the main thread, such as UI elements, could raise a threading exception. If it is necessary to modify elements in the main Form or Control, post change requests back using Invoke, which will do the work on the proper thread.

    А вообще, если есть еще какая-то логика обработки данных, приходящих из порта, то лучше вызывать ее в ивенте DataReceived, и уже в ней, после необходимой обработки, отправлять более высокоуровневые сообщения в GUI-поток через какую-нибудь очередь сообщений, например организованную с помощью ConcurrentQueue. Тогда ваш GUI-поток будет дергаться не по приходу пары байт, а тогда, когда вам самим это будет нужно. Но это уже архитектурный вопрос, который я вас советую продумать, если у вас не одноразовая лаба.
    Ответ написан
  • Как работают Action в Контроллерах когда к ним обращаются сразу несколько пользователей?

    Nipheris
    @Nipheris Куратор тега C#
    Никаких lock-ов в экшене не будет (если вы их сами туда не поставите), и не нужно им там быть. Дефолтовая фабрика контроллеров создает инстанс контроллера на каждый запрос, поэтому 99 пользователей одного ждать не будут. Если нужны подробности - ищите в гугле "asp.net mvc controller instancing", вываливается масса статей с которых можно начать разбираться.
    Ответ написан
  • Стоит ли писать DLL библиотеки на Eclipse С++?

    Nipheris
    @Nipheris Куратор тега C++
    На мой взгляд вы смешиваете в одном вопросе предпочтения в выборе IDE и технические детали реализации динамически загружаемых модулей на конкретной платформе (Windows). Конкретных супер-преимуществ для разработки именно DLL вам никакая из известных мне IDE вам не даст, да они и не особо нужны - гораздо важнее адекватная поддержка со стороны тулчейна (компилятора, линковщика), т.к. для программиста все сводится к паре макросов для корректного экспорта/импорта нужных функций. Касательно компиляторов - не считая "родного" майкрософтовского cl в составе студии, тот же MinGW отлично собирает DLL на винде. Так что озаботьтесь лучше выбором тулчейна/-ов для вашего проекта под нужные вам платформы, ну и поддержкой самого С++ в IDE (подсветка, автодополнение и т.д.). То что во всех статьях по DLL упоминается студия вполне логично - поставлена платформозависимая задача ("написать DLL") - дано платформозависимое решение (берем родной для платформы компилятор и делаем проект по шаблону).
    Ответ написан
    1 комментарий
  • Как эффективней рисовать в 2d на C#?

    Nipheris
    @Nipheris Куратор тега C#
    Если вам уже предложенные варианты с использованием OpenGL или D3D не подходят (я вам их также посоветую, т.к. вы с аппаратным ускорением нарисуете 1000 картинок за то же время, за которое рисуете через Graphics, который будучи оберткой вокруг GDI+, рисует все на CPU), то попробуйте воспользоваться стандартным бэк-буфером - отрисовка на него заметно быстрее, чем непосредственно на экран. Если у вас таких изображений несколько, то лучше их отрисовать в буфер, а буфер - на экран.
    А вообще, если серьезно: если у вас анимация и 2D-спрайты с риалтайм отрисовкой - то потратьте время на OpenGL или Direct2D, если у вас чисто вычислительная нагрузка без интерактивности - напишите сами код "рисования" одного битмапа на другом с использованием указателей, или вообще на С++ с вызовом из шарпа (нормальная практика для вычислительных задач).
    Ответ написан
  • C# - PostgreSQL Как работать с GridView?

    Nipheris
    @Nipheris Куратор тега C#
    Вам надо определиться с рядом требований к вашему приложению, в частности - на каком уровне абстракции оно работает с БД. Если на метауровне - т.е. для вашей программы нет ничего кроме набора неких таблиц и вьюх в базе (иными словами у вас чтото вроде стандартного шелла для работы с базой) - то это одна ситуация, и тут вам бы работать с INFORMATION_SCHEMA (чтобы без свитчей) и действительно собирать SQL-запросы самому. Если же у вас стандартные бизнес-задачи (создать запись о клиенте, заказе, ..., сохранить, отредактировать данные), и вы конкретно знаете, что у вас за таблицы и что там хранится, то почитайте про актуальные подходы к работе с данными в базах с использованием ORM, в случае дотнета - Entity Framework и NHibernate.
    Ответ написан
    Комментировать
  • C# отключение звука в программе?

    Nipheris
    @Nipheris Куратор тега C#
    Попробуйте воспользоваться WinAPI функцией waveOutSetVolume. Вроде как начиная с Висты, вызов функции приводит к заданию уровня громкости для конкретного приложения. Если не сталкивались ранее с вызовами WinAPI - почитайте о P/Invoke.
    Ответ написан
    Комментировать
  • Как записать логическое выражение в переменную?

    Nipheris
    @Nipheris Куратор тега C++
    Если я правильно понял проблему, то вам надо работать с вашим предикатом, как со значением. Иными словами, работать с функцией, возвращающей bool, как с first-class объектом. Для этого в С++ есть std::function. Он позволит вам обернуть ваши проверки в функтор, и их можно будет поместить в очередь/список и т.д. Еще вам наверняка поддержка лямбда-функций в С++11.
    Ответ написан
    1 комментарий
  • Как сделать изменение окна в OpenGL, что бы при изменении размера окна картинка не масштабировалась?

    Nipheris
    @Nipheris Куратор тега C#
    В общем случае вам нужно поработать с проекционной матрицей (у вас - gluPerspective) и glViewport. Можете попробовать у вьюпорта поставить константы вместо ширины и высоты контрола.
    Ответ написан
    Комментировать
  • C# sharpGL рендеринг текста как вывести кириллицу?

    Nipheris
    @Nipheris Куратор тега C#
    может быть когда в c код буквы "я", она в операции с+1 превращается в ноль? Вы бы объяснили сначала цель этого преобразования (+1 ко всем байтам).
    Ответ написан
    Комментировать
  • Плохо знаю указатели. Какие подводные камни скрывает моя функция?

    Nipheris
    @Nipheris Куратор тега C++
    А когда людям надоело, что такие функции уходят в память, к которой у функции нет доступа (в т.ч. за счет специально сфабрикованных параметров, приводящих к неприятным последствиям, см. buffer overflow), придумали парные "безопасные" варианты, например strnlen. Там помимо строки, вторым параметром указывается максимально возможная длина переданной строки (к примеру, для пути к файлу это будет 255 символов). Обычно это длина какого-либо буфера, в который помещается строка. Аналогичные пары есть и для других функций: strcpy/strncpy и т.д.
    Ответ написан
  • Как передать аргумент в поток C++ Thread?

    Nipheris
    @Nipheris Куратор тега C++
    Типы параметров, отдаваемых конструктору std::thread должны быть совместимыми с типами параметров, которые принимает функция func. Кроме того, возможно проблема не в параметре, а в попытке копирования std::thread в вектор (попробуйте обернуть в std::move). Вам стоит самому посмотреть и написать сюда, как конкретно ругается компилятор.
    Ответ написан
  • Какую студию использовать?

    Nipheris
    @Nipheris Куратор тега C#
    Сидим до сих пор на 2008-й студии (большой проект на C++), пытались перейти года два назад на 2012-ю, но не смогли из-за проблем поддержки продукта под Windows XP - были проблемы с работой рантаймов. Майкрософт их потом вроде пофиксил, но мы уже не стали второй раз пытаться. Теперь ждем, когда пользователи слезут с XP. А в 2012-й только дампы смотрим и профайлимся.

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

    Nipheris
    @Nipheris Куратор тега C++
    Из структур данных попробуйте посмотреть вот это (если конечно вам нужен поиск подстроки, а не всей строки целиком): https://ru.wikipedia.org/wiki/%D0%A1%D1%83%D1%84%D... , там есть ссылки на известные труды, что касается "не загружать оперативную память" - в общем-то для любой структуры данных можно организовать гибридное хранение - сам индекс построить заранее и хранить на диске (вполне логичный ход в случае предварительно подготовленного словаря), а в память загружать части индекса. Однако это значительно усложнит алгоритмы, нужно это вам или нет - зависит от деталей поставленной задачи (объем словаря, предельное время поиска и т.д.)
    Ответ написан
    Комментировать
  • C++ шаблон в шаблоне как?

    Nipheris
    @Nipheris Куратор тега C++
    Если тип T в конструкции void (*func)(T) должен быть таким же, что и в объемлющем классе, то тогда template перед listStruct нужно вообще убрать. Если тип должен быть другой (как можно предположить из темы вопросы), то воспользуйтесь другим идентификатором типа, например template struct listStruct {...}. По идее, все это должно быть написано в сообщении от компилятора.
    Ответ написан
    Комментировать
  • Как реализовать "бегающие" точки?

    Nipheris
    @Nipheris Куратор тега C#
    Вопрос действительно академический: вам нужно основательно разобраться с событийно-управляемой (event-driven) архитектурой приложений. Пожалуй, все современные графические подсистемы так или иначе построены на ней (а вообще - не только графические). И в первую очередь нужно понять, что выполнение действий в своем цикле без передачи управления обработчикам сообщений - неверный подход. Дело в том, что GUI-приложение, в отличие от консольного, для того чтобы "не зависать", должно постоянно выполнять некоторые действия помимо нужных для вашей задачи, а именно - перерисовываться, обрабатывать события клавиатуры и мыши и т.д. Изза того что ваша программа "крутится" в цикле, то все те стандартные обработчики событий, которые должны получать управление, не получают его. Поэтому, если нужно выполнять интенсивные вычисления в графическом приложении, нужно либо:
    а) выполнять их в другом потоке - тогда получится сохранить структуру приложения и циклы, но встанет задача межпоточной передачи данных;
    б) выполнять работу порционно, время от времени передавая управления обработчикам системных событий. Это т.н. вызов DoEvents, в разных API он разный, но суть одна и та же.

    Конкретно для вашей задачи цикл на самом деле совершенно не нужен - вся анимация, какой бы они ни была, в современных приложениях (старые DOSовские игры не в счет) строится на таймерах и событиях их срабатывания. Поэтому вам нужно разобраться, как пользоваться в вашей среде таймерами и генерировать периодические события, и уже в обработчике события таймера делать label1.Text = "." , ".." , "..." в зависимости от того, какой "кадр" был предыдущий.
    Ответ написан
    Комментировать