• Ввод строки в структуру с помощью СИ?

    @cicatrix
    было бы большой ошибкой думать
    Мне кажется, на первый ввод попадают данные из буфера stdin после scanf
    Ответ написан
  • Чтение и запись лога разными программами?

    @cicatrix
    было бы большой ошибкой думать
    Добавлю к ответу rPman про флаг FileShare описан немного контр-интуитивно. Флаг FileShare устанавливает права на доступ к файлам другим потокам.
    То есть, для потока, который пишет в файл, нужно ставить FileShare.Read - позволить другим читать файл
    Для потока, который читает из файла, нужно ставить FileShare.ReadWrite - позволить другим читать и писать в этот файл.
    Ответ написан
    Комментировать
  • Asp.net почему сбрасывается сессия аутентикации после перезапуска приложения?

    @cicatrix
    было бы большой ошибкой думать
    Обычно аутентификация происходит при установлении сеанса, состояние устанавливается как свойство этого сеанса. Естественно, после перезапуска приложения, сеансы новые и надо производить проверку authentication cookie заново.
    Ответ написан
    Комментировать
  • Как получить цвет пикселя по кординатам на Panel?

    @cicatrix
    было бы большой ошибкой думать
    Получаем картинку панели:
    private static Image PanelToBitmap(Control pnl) {
        var bmp = new Bitmap(pnl.Width, pnl.Height);
        pnl.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
        return bmp;
    }


    Получаем пиксель с картинки:
    Bitmap.GetPixel()
    Ответ написан
    Комментировать
  • Как защитить соединение между двумя приложениями?

    @cicatrix
    было бы большой ошибкой думать
    VPN не? Как бы для этого и предназначено
    А вообще это задача сисадмину, чтобы эндпоинты от деймонов не смотрели в открытую сеть.
    Ответ написан
    8 комментариев
  • Программирование таблицы Excel с привязкой к дате, возможно?

    @cicatrix
    было бы большой ошибкой думать
    Есть функция СЕГОДНЯ() (TODAY), она возвращает сегодняшнюю дату.
    В целом, можно заморочиться, в ячейках указывать условия (если дата < сегодня... ) и далее - условным форматированием по ячейкам.
    Но вообще, есть неплохая коллекция программ - 1С называется. Уверен, что подойдёт.
    Ответ написан
    Комментировать
  • Как сгенировать лабиринт со стенами, что бы в этом лабиринте всегда был путь?

    @cicatrix
    было бы большой ошибкой думать
    В своё время делал довольно прямолинейно. На лабиринте генерил сначала путь из точки А в точку Б случайным образом и помечал эти клетки как проходные. А уж потом вокруг генерировал случайным образом весь остальной лабиринт.
    Ответ написан
    1 комментарий
  • Где-то ошибка в коде?

    @cicatrix
    было бы большой ошибкой думать
    Ну, а ошибку загуглить?
    Startup.cs покажи
    Ответ написан
  • Использование своего же кода на двух местах, реально?

    @cicatrix
    было бы большой ошибкой думать
    Самое главное: Должны быть очень ясные и недвусмысленные доказательства того, что код действительно твой.

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

    В этом случае, либо при изменении EULA твой работодатель продолжает платить, либо перестаёт пользоваться.
    Соломку надо стелить заранее.
    Ответ написан
    Комментировать
  • В чем ошибка при десериализации xml?

    @cicatrix
    было бы большой ошибкой думать
    Индекс вне границ массива, потому что внутри списка пусто. А пусто, потому что класс неправильно организован.

    Вот так должно быть:
    [XmlRoot]
    public class A
    {
        [System.Xml.Serialization.XmlElementAttribute("url")]
        public Reply[] replies { get; set; }
    
        [XmlTypeAttribute(AnonymousType = true)]
        public class Reply
        {
            [XmlAttribute("replyId")]
            public string replyId { get; set; }
            [XmlText()]
            public string Url { get; set; }
        } // Url
    } // class A


    Вообще, класс под XML лучше не писать, а просто скопировать текст из XML/Json и в Visual Studio в меню выбрать: Edit/Paste Special/Paste as XML classes.
    606ff76b7dd6e768671799.png
    Ответ написан
    1 комментарий
  • Почему никак не узнать исходный код игры?

    @cicatrix
    было бы большой ошибкой думать
    Справедливости ради стоит отметить, что много современных игр состоят из 2 основных частей.
    Первая - это т. н. "движок", он отвечает за визуализацию моделей, обработку ввода, сеть, просчёт физики и пр. Он действительно обычно скомпилирован в машинный код и его дизассемблирование очень затруднено.
    Вторая часть - это игровая логика, она уже отвечает за сценарий, определяет, что произойдёт в игре на определённые действия игрока, открывает уровни, изменяет параметры самой игры, и пр.
    Очень часто, игровая логика описывается скриптами, которые доступны для чтения.
    Разумеется, это не всегда так, но очень часто игровые студии не имеют ресурсов или желания для разработки собственного движка, а сосредотачиваются на самой игре.
    Огромное количнство игр, даже ААА сделаны именно так. Думаю, движки Unity и UnrealEngine в совокупности отжирают более половины мирового рынка игр.
    Ответ написан
    Комментировать
  • Как преобразовать большое int в byte?

    @cicatrix
    было бы большой ошибкой думать
    int value = 1196;
    var bytes = BitConverter.GetBytes(value);
    Ответ написан
    Комментировать
  • Как выкинуть кастомное исключение?

    @cicatrix
    было бы большой ошибкой думать
    Проброс исключения - самое "дорогое" из всех возможных решений проблемы в плане производительности. К тому же, это и не исключение вовсе, а вполне штатная ситуация. Простая проверка в виде вызова bool CustomerExists будет выглядеть здесь гораздо уместнее. К тому же, эта проверка у вас уже производится.
    А так, да, класс любого исключения должен быть наследником System.Exception
    Ответ написан
    Комментировать
  • Чем веб-парсеры отличаются от реальных пользователей?

    @cicatrix
    было бы большой ошибкой думать
    При прочих равных пользователи в первую очередь отличаются частотой запросов. Парсер сходит по всем линкам за миллисекунды. Если владелец сайта задался целью усложнить парсеру работу, он сможет это сделать, анализируя частоту и типичность запросов.
    Ну и ловушку можно предусмотреть - невидимая в UI ссылка, например (а если парсер умный и определяет видимость элемента, то можно и "светло-серое на белом" сделать). Прошёл по ссылке - значит бот (или влезливый мамкин хацкер).
    Если пофантазировать, то можно и нейросетку приделать, которая бы, имея модель действий среднестатистического пользователя, определяла бы, насколько этот клиент не похож на человека.
    Ответ написан
    Комментировать
  • Можно ли создать в C# иерархический класс?

    @cicatrix
    было бы большой ошибкой думать
    А может с конца начать. Можете обрисовать ситуацию, когда это может понадобиться? Ну или хотя бы псевдокодом описать?
    Просто есть такое чувство, что либо я чего-то недопонимаю, либо подобный приём наружает с пяток различных паттернов, которых рекомендуется придерживаться.
    И уж совсем не вижу проблемы в том, что вложенный класс надо инициализировать.
    Ответ написан
  • Как исправить ошибку в коде на c#?

    @cicatrix
    было бы большой ошибкой думать
    Зайди в метод InitializeComponent(), который вызывается из конструктора формы, и там увидишь привязку несуществующего обработчика событий.
    Ответ написан
  • Как реализовать систему отслеживания статуса пользователя программы реализованную на C#?

    @cicatrix
    было бы большой ошибкой думать
    А по какому протоколу работает связь клиент-сервер?
    Если TCP, то ведь можно просто опрашивать состояние соединения и держать его всё время ESTABLISHED. Правда, такой подход годится для относительно малого числа клиентов. Если их счёт пошёл на тысячи, то да, нужно опрашивать периодически.
    Ответ написан
  • Как запрашивать клавишу во время виполнения цикла (Console.ReadKey)?

    @cicatrix
    было бы большой ошибкой думать
    Ожидай нажатие в другом потоке
    class Program
    {
        static volatile bool exit = false;
        static void Main(string[] args)
        {
            Console.WriteLine("ESC - выход");
            Task.Factory.StartNew(() =>
            {
                while (Console.ReadKey().Key != ConsoleKey.Escape) ;
                exit = true;
            }); // ожидание нажатия в другом потоке
    
            while (!exit) // долгий цикл
            {
                // выполнение долгой операции
            } // while
        } // Main
    } // class Program
    Ответ написан
  • Какие материалы изучить для написания читов для игр?

    @cicatrix
    было бы большой ошибкой думать
    Любой "чит" представляет собой программу, которая находит в адресном пространстве памяти, выделенной под игровой процесс, необходимые данные и видоизменяет их.
    Собственно, сам по себе чит соорудить дело нехитрое. Найти работающий процесс, прошерстить его память, найти нужные данные и записать на их место другие (кол-во жизней, патронов и пр).
    Просто - да, но дьявол в деталях. Поиск необходимой вам информации - процесс долгий и муторный. Распространённые "универсальные" читы вроде CheatEngine работают путём сравнения состояний до и после изменения, тем самым, сужая круг поиска. Но это неоптимально. Нормальный чит - продукт реверс-инжиниринга игровой программы, где ты уже точно знаешь, как игра распределяет в памяти свои ресурсы и как их искать.
    Наличие исходного кода игры сильно помогает, но только отчасти.
    Разумеется, разработчики игр знают обо всех этих приёмчиках и стараются максимально затруднить подобные действия. Одним из самых эффективных методов защиты является сохранение состояния игры за пределами машины игрока (на сервере разработчика). Нормальный разработчик просто не учитывает или игнорирует некорректное состояние клиентской машины. Внедрить чит игру с такой архитектурой нереально. Но часто разработчики идут на компромиссы, чтобы не хранить вообще всё на сервере, часть данных размещается на машине клиента. С этим уже можно работать, но алгоритмы на сервере направлены на поиск несоответствий в состоянии клиента и последующие санкции, если игрок будет уличён в использовании читов.
    Ну и есть конченные разработчики, позволяющие изменять состояние клиента как угодно. Но обычно такие игры просто теряют своих клиентов потому что из-за обилия читеров становится невозможно играть.
    Ответ написан