• Windows Service или Application?

    Nipheris
    @Nipheris Куратор тега C#
    Тут зависит от деталей. В частности - надо ли это действие выполнять, даже если ни один пользователь не вошел в систему, или же вне контекста пользователя это бессмысленно. Если первое - тогда в общем-то лучше сервис, однако нужны дополнительные усилия, чтобы его устанавливать в систему, и, что еще важнее, из сервиса не стоит пытаться создавать окошки и вообще взаимодействовать с UI - это возможно, но сложно и требует доп. заморочек. Поэтому:
    а) подумайте, выполняет ли ваше приложение какую-то глобальную задачу, не зависящую от пользователя (а-ля дефрагментация или, там, архивация). Если да, то:
    б) оцените, возможно ли разбить ваше приложение на: собственно сервис, который будет выполнять полезную задачу; панель управления - обычное десктопное приложение, которое будет взаимодействовать с сервисом и менять его настройки и состояние;
    в) оцените, есть ли у вас ресурсы (время/деньги), чтобы разбираться с дополнительными тонкостями (установка и запуск сервиса, особенности написания сервиса (в шарпе нужно наследоваться от библ. класса), взаимодействие UI управления и сервиса);
    г) если пункты а, б, в истинны, то делайте в соответстии с ними, если хотя бы один ложный - сделайте лучше десктопное приложение.

    Вообще на шарпе нормально пишутся сервисы, пробовал, разобраться можно за пару дней, включая простейшие скрипты установки.
    Ответ написан
  • Пример реализации односвязного списка на C#, Не понятно откуда берется свойство Netx Объекта Head?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Когда список пуст, Current и Head равны null. После добавления первого элемента Current и Head являются одним и тем же объектом, а при добавлении второго срабатывает строчка Current.Next = node; - и в этот момент устанавливается Head.Next (поскольку Current и Head совпадают).
    Ответ написан
    5 комментариев
  • Ошибка HDD End To End Error Count что это?

    loly_girl
    @loly_girl
    Верстальщица, дизайнер, ретушёр
    Данный атрибут — часть технологии HP SMART IV — означает, что после передачи данных через кэш-память чётность данных между хостом и жестким диском не совпадает.

    Ошибка критическая, свидетельствует о возможной поломке устройства.
    Ответ написан
    Комментировать
  • Как вернуть панель задач и рабочий стол на Windows 7?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    regedit.exe
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

    В shell пропишите explorer.exe
    Ответ написан
    Комментировать
  • В чем отличие сервисной шины предприятия(ESB) от брокеров сообщений (например RabbitMQ)?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    ESB это обычно API в сервисной архитектуре, это RPC или REST, но принцип - атомарный вызов и получение ответов в виде кусков данных, это диалог в стиле клиент-сервер. А вот MQ - это совсем другое, это шины сообщений, тут вообще не происходит диалога в стиле запрос-ответ, а обмен данными происходит по принципу очередей сообщений, которые распределяются между каналами обработки (используется для масштабирования). По сути MQ - это реализация СМО (системы массового обслуживания), по которым можно найти много теории и которые уже давно широко используются в автоматизации технологических процессов на производстве, для транспорта и перевозок, в других сферах. RabbitMQ я не использовал, а про ZeroMQ могу сказать, что это гораздо больше, чем MQ. ZeroMQ - это не только шина событий, но и множество других паттернов обмена данными, как запрос-ответ, публикация-подписка и т.д. Посмотрите полный список этих паттернов: zguide.zeromq.org/page:all Из них можно собирать различные коммуникационные конфигурации. Шины сообщений и броккеры могут использоваться для построения ESB, но как одна из вспомогательных технологий.
    Ответ написан
    3 комментария
  • Как начать изучать C# на mac os?

    @Cyrilca
    Я думаю тут только два выхода:
    - Использовать BootCamp и установить Windows / Visual Studio.
    - Установить Parallels/VMWare и работать на виртуальной машне
    Ответ написан
    1 комментарий
  • Как пишут ботов для игр (или для программ с интерфейсом)?

    riky
    @riky
    Laravel
    Инфы море на одном только хабре habrahabr.ru/search/?q=%5B%D0%B1%D0%BE%D1%82%5D&ta...

    от себя добавлю что основные методы это
    1) простейший понятный способ - поиск нужного элемента на экране и кликание по экрану, или клик по указанным координатам. я в основном использую этот способ, так как вмешательство в игру минимальное - ее не надо ломать, для онлайн игр - меньше шансов получить бан. Подходит для простых игр, в основном те что 2D пошаговые.
    Гуглить отправку событий мыши и клавиатуры на выбранном вами ЯП (java robots например).
    Минусы - игра должна быть постоянно открыта на экране и иметь фокус (можно решить - запустив игру с ботом в виртуалке).

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

    3) для десткопных игр - патчинг памяти запущенной игры. варианты от простых типа - поменять очки/деньги в игре (artmoney) это в основном для не онлайн игр, и до очень сложных - подменить адрес вызова системной функции - например функции отрисовки directx - то есть меняем адрес вызова на свою функци (недавно была серия статей на эту тему, к сожалению не нашел побыстрому). Либо как разновидность - декомпиляция игры - изменение логики - компиляция (гуглить все что связано с крекерством, создание кейгенов). Для этого варинта требуется довольно высокая квалификация, понимание того как работает игра. Также игры могут иметь защиту от этого.

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

    @Loligan
    1. Рисуем пиктограмму
    2. Приносим в жертву учебник по assembler
    3. ...
    4. PROFIT
    Ответ написан
    3 комментария
  • Рекурсивный обход каталога. Какие библиотеки и функции использовать?

    @Coderast
    Универсально вряд ли возможно, так как Си не содержит CRT функций для поиска файлов.

    Если винда, то FindFirstFileA и FindNextFileA из windows.h

    https://msdn.microsoft.com/ru-ru/library/windows/d...
    https://msdn.microsoft.com/ru-ru/library/windows/d...

    typedef void (*LPSEARCHFUNC)(LPCTSTR lpszFileName);
    
    BOOL SearchFiles(LPCTSTR lpszFileName, LPSEARCHFUNC lpSearchFunc, BOOL bInnerFolders = TRUE)
    {
        LPTSTR part;
        char tmp[MAX_PATH]; 
        char name[MAX_PATH];
    
        HANDLE hSearch = NULL;
        WIN32_FIND_DATA wfd;
        memset(&wfd, 0, sizeof(WIN32_FIND_DATA));
    
        
        if(bInnerFolders)
        {
            if(GetFullPathName(lpszFileName, MAX_PATH, tmp, &part) == 0) return FALSE;
            lstrcpy(name, part);
            lstrcpy(part, "*.*");
    
            
            wfd.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY;
            if (!((hSearch = FindFirstFile(tmp, &wfd)) == INVALID_HANDLE_VALUE))
            do
            {
                if (!strncmp(wfd.cFileName, ".", 1) || !strncmp(wfd.cFileName, "..", 2))            
                continue;
            
                if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    char next[MAX_PATH];
                    if(GetFullPathName(lpszFileName, MAX_PATH, next, &part) == 0) return FALSE;
                    lstrcpy(part, wfd.cFileName);
                    lstrcat(next, "\\");
                    lstrcat(next, name);
    
                    SearchFiles(next, lpSearchFunc, TRUE);
                }
            }
            while (FindNextFile(hSearch, &wfd));
    
            FindClose (hSearch); 
        }
    
        if ((hSearch = FindFirstFile(lpszFileName, &wfd)) == INVALID_HANDLE_VALUE) 
            return TRUE;
        do
        if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) 
        {
            char file[MAX_PATH];
            if(GetFullPathName(lpszFileName, MAX_PATH, file, &part) == 0) return FALSE;
            lstrcpy(part, wfd.cFileName);
    
            lpSearchFunc(file);
        }
        while (FindNextFile(hSearch, &wfd));
        FindClose (hSearch); 
    
        return TRUE;
    }


    Как находит файл по маске, вызывает функцию по указателю с прототипом:
    void FileFound(LPCTSTR lpszFileName)
    Ответ написан
    2 комментария
  • Как сделать авторизацыонный токен на Java?

    Vityarik
    @Vityarik
    Попробуйте почитать про JWT

    jwt.io

    В JWT токене содержится информация о пользователе, в виде JSON объекта.
    этот JSON закодирован Base64 и подписан вашим "секретом"
    получая JWT токен от пользователя вы можете проверить подпись, и убедится не подменен ли объект в токене.
    Ответ написан
    2 комментария
  • Подключение к интернету. В чем проблема?

    Скажите, dns провайдера пингуются?
    В личный кабинет провайдера зайти можете?
    8.8.8.8 пингуются?
    tracert 8.8.8.8 или tracert 8.8.4.4 что показывает?
    Мобильный интернет пробовали подключить, или есть ли вторая машина, что б проверить?
    Ответ написан
    6 комментариев
  • Как вести себя, когда дают большой проект с недокументированным кодом?

    притвориться мёртвым
    Ответ написан
    Комментировать
  • Как вести себя, когда дают большой проект с недокументированным кодом?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Сам себе буратино раз подписался.
    Ответ написан
    Комментировать
  • Какой должна быть экспертная система?

    bobrovskyserg
    @bobrovskyserg
    Экспертные системы 80х - оцифрованные наборы правил "если-то".
    Эта концепция не оправдала - я полагаю, из-за большого числа "промежуточных" сущностей, которые (и их отношения) нужно было формализовывать, а делать это качественно не получалось.
    То есть Watson во многом оттуда, но для того, чтобы добиться от нее толку, потребовался хуилиард человеко-лет.
    1. обычные пользователи не в теме
    2. язык описания правил
    3. завоевание вселенной
    Ответ написан
    1 комментарий
  • Увеличит ли асинхронный метод быстродействие сериализации / десериализации с файлом не больше 200 строчек?

    Splo1ter
    @Splo1ter
    .NET Developer (9 years+)
    вам нужно проверять, время десериализации не уменьшит, но возможно увеличит время работы метода
    Ответ написан
    Комментировать
  • Увеличит ли асинхронный метод быстродействие сериализации / десериализации с файлом не больше 200 строчек?

    dordzhiev
    @dordzhiev
    Хочу сказать только одно: асинхронность != параллелизм. Дальше гуглите :)
    Ответ написан
    Комментировать
  • Увеличит ли асинхронный метод быстродействие сериализации / десериализации с файлом не больше 200 строчек?

    wkololo_4ever
    @wkololo_4ever
    Если вы просто собираетесь обернуть эту строку в async await, то, естественно, это никак не повлияет на быстродействие сериализации / десериализации.
    Ответ написан
    Комментировать
  • Как защитить конфиденциальные данные на ноуте?

    @pr0l
    битлокер на винде включить)
    Ответ написан
    Комментировать
  • Как переключить музыку в вк через C#?

    Nipheris
    @Nipheris Куратор тега C#
    API вконтакта никакого отношения к вопросу не имеет, то что вы смотрели это интерфейс сайта, а вам нужно манипулировать вкладкой в вашем браузере. Так или иначе, решение задачи скорее всего будет свое для каждого браузера. И проще всего, как мне кажется, реализовать связь с браузером через extension. Можно написать свой, а можно попробовать например вот это: https://github.com/pmorch/FF-Remote-Control, можно подключаться по TCP и грабить корованы посылать javascript-код для исполнения в контексте выбранной вкладки. В общем посмотрите, подойдет вам это или нет. Проще способа пока не вижу, вам в любом случае нужно управлять конкретно вашим запущенным браузером. Другой подход - закинуть контрол браузера в ваше приложение, тогда возможно управлять страницей будет значительно проще, но непонятно подходит это вам или нет.
    Ответ написан
    Комментировать