• На что смотреть в профиле приложения?

    Nipheris
    @Nipheris Куратор тега C#
    > На что мне нужно смотреть для оценки общей производительности?
    сами себе уже ответили - смотреть, какой код тратит больше всего времени процессора. На ваших скринах все это есть, в процентах и миллисекундах. Вот берете вызов ProcessDirM, у которого 60+%, и раскрываете дерево вызовов, смотрите, кого эта функция вызывала, и у кого также макс. время и так до тех пор, пока не поймете куда эти 60% растрачиваются.
    Ответ написан
    1 комментарий
  • Какие есть методы защиты приложения ограничением по времени?

    На стойкость не претендую, решение из собственного опыта:
    1) организовываем защищенное хранилище (напр, зашифрованный файл), который нельзя просто так прочесть и поменять - в нем мы будем хранить, сколько времени программе осталось работать, т.е. временной ресурс;
    2) придумываем, как этот файл генерировать - создавать самой программой при отстутствии этого файла - плохая идея, т.к. юзер просто удалит его и триал сбросится. Неплохой вариант - генерить на сервере, сделать эдакий "запрос триальной лицензии"; после установки лицензия запрашивается, далее с этим файлом работает сама программа;
    3) при каждом запуске файл читаем (с расшифровкой), смотрим сколько лицензированного времени осталось, ставим таймер (системное время использовать нельзя!), каждые N секунд вычитаем лицензированное время, обновляем файл. 30-60 секунд обычно вполне достаточно. Погрешность счета времени соотв. тоже будет до N секунд. Теоретически, каждые N-1 секунду прогу можно убивать и перезапускать, и тогда она не будет успевать вычитать счетчик времени, но я сомневаюсь, что в таких условиях программой вообще можно будет пользоваться.
    Довольно нелохой вариант, если конечно на взлом вашего софта не претендует толпа людей, умеющих дебажить в Olly с закрытыми глазами.
    А, ну да, и упаковщик какой-нибудь возьмите - еще немного усложните жизнь (хотя не сильно конечно).
    Ответ написан
    3 комментария
  • Как реализовать кэширование в Windows Media Player?

    Nipheris
    @Nipheris Куратор тега C#
    Берем NAudio, сами пишем кэширование как нам надо, кидаем на форму нужные нам красивые контролы, играем музыку. Средний разработчик набросает это все за день/два, подходит ли вам - решайте сами.
    Ответ написан
    Комментировать
  • Как авторизоваться в Active Directory C# winforms?

    Nipheris
    @Nipheris Куратор тега C#
    System.DirectoryServices.AccountManagement - более подходящего для вашей задачи набора классов не найти. Статья с автопереводом, поэтому если совсем ничего не понятно, берите этот неймспейс и вбиваете в гугл. Советую как можно быстрее начать исправлять потребность в русскоязычных источниках.
    Ответ написан
    Комментировать
  • Как последовательно показать результаты изменения одной переменной многими потоками?

    Nipheris
    @Nipheris Куратор тега C++
    > Просто синхронные вызовы ролла показывают лишь последний результат.
    ну так а почему асинхронность сразу значит - несколько потоков? И причем тут вообще асинхронность - вам нужно сделать нормальную анимацию, анимация - это отрисовка кадров в соответствии с ходом времени. Последний результат виден потому, что вы не возвращаете управление в цикл приложения, чтобы оно могло нормально обработать прочие сообщения. Уберите всю эту многопоточность, сгенерьте рандомом перед анимацией все игры, которые хотите мельком показать, поставьте обыкновенный таймер (QTimer) и отрисовывайте по сигналу таймера игры по очереди, пока не дойдете до последней - той что "выпала". Разберитесь с матчастью по mainloop и анимации и все станет ясно как божий день. Еще раз - никаких потоков для вашей задачи вам не надо, тем более 20 штук.
    Ответ написан
  • Переход с C# на C++?

    Nipheris
    @Nipheris Куратор тега C++
    > выкидывать полученные знания на помойку и начинать все с начала
    ничего вы никуда не выкинете. На плюсах вам просто чуть больше решений придется принимать самому, и дисциплина, скажем так, строже. Главные Знания - это методологии разработки, алгоритмы и общие навыки по написанию и отладке кода. В конце концов вы не на Хаскелл переходите, и даже не на F#, а на язык, который на основе плюсов был создан. Если после перехода вы все же скажете, что выбросили все знания на помойку, то видимо их и не особо много было.
    Конечно, есть стандартная библиотека .net, CLR и прочие платформенные вещи, но в современных реалиях и так приходится постоянно что-то новое учить. После бума джаваскрипта в последние 5 лет отрекаться от этого факта бессмысленно.
    Ответ написан
    Комментировать
  • Отличаются ли быстротой выполнения данные запросы?

    У нормального планировщика поведение конкретно для этих двух запросов должно быть одинаковым. В любом случае, перед вложенным циклом джоина нужно будет отфильтровать строки обеих таблиц по индексам. Т.к. условия фильтрации для обеих таблиц независимы, я даже не могу придумать, как выполнить запросы по-разному.
    А вообще второй вариант гораздо понятнее и программисту, и СУБД (легче построить план выполнения).
    Ответ написан
    Комментировать
  • Чем открыть bin-файл?

    > сравнение
    чего с чем? Если сравнить разные версии bin-файла, то попробуйте Beyond Compare, он хорошо в hex-кодах сравнивает
    А вообще, как уже заметили, bin - это никак, там может быть все что угодно. Лучше разберитесь в билд-процессе, понять что внутри будет проще.
    Ответ написан
    Комментировать
  • Как сделать звук в программе на си/си++?

    Nipheris
    @Nipheris Куратор тега C++
    DirectSound крайне не советую, очень старое API, на висте и выше уже в режиме совместимости работает, вот OpenAL можно, если на винде - то XAudio2 или даже ASIO, в зависимости от целей (игры vs софт для обработки звука) и "глубины погружения".
    Ответ написан
    Комментировать
  • Как работает механизм signal-slot QT, если нужно сигнал из объекта одного потока передать в слот объекту другого потока?

    Nipheris
    @Nipheris Куратор тега C++
    Ключ к пониманию передачи сигналов - понимание смысла существования QThread:

    > A QThread object manages one thread of control within the program. QThreads begin executing in run(). By default, run() starts the event loop by calling exec() and runs a Qt event loop inside the thread.

    Запуск собственного цикла обработки сообщений и дает возможность получать их в том числе и из других потоков. Фишка сигналов/слотов кьюта в том, что это еще и простая message queue система, наподобие эрланговской, если сталкивались. Вызов в рамках одного потока - это прямой вызов подписанных слотов на этом же стеке, а вот QueuedConnection или межпоточный вызов кладут в очередь соответствующего потока сообщение (эти сообщения лежат в одной очереди с сообщениями от ОС), и поток будет их извлекать в event-loop-е. Таким образом, вы просто просите другой поток вызвать слот, а вызовет он его когда в очередной раз будет отрабатывать цикл сообщений и он дойдет до сообщения о вызове слота.

    > It is safe to connect signals and slots across different threads, thanks to a mechanism called queued connections.
    doc.qt.io/qt-5.4/qt.html#ConnectionType-enum
    Qt::QueuedConnection - The slot is invoked when control returns to the event loop of the receiver's thread. The slot is executed in the receiver's thread.
    Ответ написан
    4 комментария
  • Сложно ли переходить с Windows на OS X или наоборот с OS X?

    Ради эксперимента при наличии времени на бубен и аппаратных ресурсов можно попробовать завести виртуалку с OS X. Насколько это сложно и реально ли вообще не могу сказать, но могу сказать что это лучше покупки макбука просто для эксперимента.
    Ответ написан
  • Как удалить коммиты из ветки?

    https://help.github.com/articles/about-git-rebase/
    https://git-scm.com/book/en/v2/Git-Tools-Rewriting...

    Это если вы хотите удалить коммиты из истории. Если историю нужно оставить, и просто перейти на состояние первого коммита, то см. ответ jcmvbkbc
    Ответ написан
  • Как из одной ветки перенести определённые файлы в другую ветку?

    > Есть две параллельные ветки разработки, которые работают с общими файлами. Но в одной и в другой ветки надо сделать изменения в этих файлах.
    > Соответственно надо вытащить из определённого коммита одной ветки только определённые файлы и залить их в другую ветку.
    не пойму где переход от первого ко второму. Ветки для того и есть, чтобы делать разные изменения в одних и тех же файлах. Если изменения одинаковые - смержите эти коммиты, сделанные в ветке А, в ветку B, или если мерж невозможен, то cherry-pick конкретных коммитов. Зачем что-то куда-то вытаскивать?
    Ответ написан
  • Как нужно настроить OpenVPN сервер, чтобы тот выдавал белый IP для каждого клиента?

    Соглашусь с тем, что вам нужны дополнительные маршруты.
    > Кажется, что клиенты Windows, Linux и Android попросту игнорируют эти настройки.
    Посмотрите логи запуска клиента, когда соединение устанавливается, все пишется подробнее некуда. Например, сразу понятно, что маршруты не добавятся, если вы запустили клиент OpenVPN на винде без повышения прав. Вполне возможно что аналогичная ситуация и на других платформах. Посмотрите таблицы маршрутов после запуска клиента и установления соединения. Если ожидаемые роуты там будут, то делайте трассировки.
    Ответ написан
    Комментировать
  • Какая программа проверяет чем блокирован внешний диск?

    Откройте для себя Process Explorer, в нем помимо прочего можно поиск по хэндлам делать. Ищите по букве диска (или по пути, если занят конкретный файл) и получаете список открытых хэндлов. Далее либо разбираетесь с программой, которая держит файл (что предпочтительнее), либо завершаете ее, либо закрываете конкретно висящий хэндл (правда из-за этого софтина может упасть, но это только в случае, если хэндл ей действительно нужен, а не потерян ею).
    Ответ написан
  • Вопрос по C# и net framework?

    Nipheris
    @Nipheris Куратор тега C#
    В XP предлагается для установки древнейший 1.1 и то его почти никто не ставит, так что можно считать, что нет (последний дотнет, поддерживаемый на XP - 4.0). В семерке из коробки 3.5 (что включает в себя 3.0 и 2.0), поставить можно любой из имеющихся на данный момент (1.1, 4.0, 4.5, 4.6).
    Ответ написан
    Комментировать
  • Реально ли запустить Visual Studio как portable?

    Nipheris
    @Nipheris Куратор тега C#
    > или может есть другой компилятор под С#?
    в зависимости от версии винды относительно (!) свежий дотнет может быть уже предустановлен, а с ним и csc, т.е. компилятор. С семеркой, например, идет версия 3.5. Конечно старовато, но для попробовать сойдет. Писать код можно хоть в блокноте, разумеется удобство не очень - можете посмотреть другие IDE для шарпа, возможно какие-то станут не в Program Files. Посмотрите кстати свежеиспеченную Visual Studio Code - это конечно не замена полной студии, и больше ориентирована на веб, но все-таки лучше, чем Блокнот. И да, устанавливается в AppData, что как раз вам подойдет.
    Если очень хочется более свежего компилятора, а дотнет установлен старый - можете попробовать повозиться с Roslyn, но это если у вас уже какой-то опыт с дотнетом есть.
    Ответ написан
    1 комментарий
  • Какие проблемы решает Katana (OWIN)?

    Реальная проблема - зависимость от System.Web, которая, в свою очередь, слишком сильно завязана на IIS, и, если не ошибаюсь, на http.sys. Инженеры из Майкрософта (и их начальство тоже) хотят запускать новый asp.net на всех популярных платформах, чтобы подтянуться до уровня других популярных стеков технологий, такие как RoR или django. Чтобы зависимости от окружения было минимум, нужен суперлегкий интерфейс между веб-приложением и его окружением. В мире дотнета это и будет OWIN. Также как Rack в стеке руби.
    Если хотите чуть более пространно - вот я отвечал ранее на похожий вопрос.
    Ответ написан
    3 комментария
  • Существует ли универсальный алгоритм разбора УРЛа?

    Nipheris
    @Nipheris Куратор тега C++
    Если вам так нужен самописный сервер на плюсах, попробуйте для разбора урла использовать вот это: cpp-netlib.org/0.11.1/in_depth/uri.html#generic-ur... , а вообще можете и сервер попробовать оттуда взять.
    Ответ написан