• К нашей программе создали и выложили кряк - что делать?

    Host-Eiweb
    @Host-Eiweb
    Хостинг VPS серверов в Европе и США
    Мы - разработчики программы, на рынке с 2010 года.

    Неужели за 7 лет, не научились работать.

    Пофиксить и выпустив обновление.
    В противном случае Ваш код - гроша ломаного не стоит.
    Ответ написан
    1 комментарий
  • К нашей программе создали и выложили кряк - что делать?

    GavriKos
    @GavriKos
    Помимо советов выше - поменять алгоритм покупки-валидации и выкатить новую версию
    Ответ написан
    2 комментария
  • К нашей программе создали и выложили кряк - что делать?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Обращайтесь на ресурсы с кряком - сотрут. Ну и радуйтесь популярности.
    Ответ написан
    2 комментария
  • Программа скриншотер на линукс на чем писать?

    longclaps
    @longclaps
    Для саморазвития лучше освоить штатный скриншотер.
    И сложностей никаких, и для обсуждения "go vs java" не надо искать дурацких предлогов.
    Ответ написан
    1 комментарий
  • Как исправить ошибку "исключение в операции с плавающей точкой"?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Исключить деление на ноль.
    Ответ написан
    Комментировать
  • Как сделать сохранения в игре?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    А с остальными частями игростроя у Вас проблем нет? По моему Вы не стой стороны начали.
    Но в целом, определяемся что хранить, как хранить и храним. В случае с игрой в web это может быть localStorage или БД на сервере и конфиг для восстановления в виде json, например. В десктопе это будет файл, хоть txt. В десктопе больше вариантов так что без конкретных исходных данных врядли что-то посоветуют.
    Ответ написан
    2 комментария
  • Алгоритм выпадения числа?

    Берём числа не до 5, а до 12. Находим алгоритм. Идём забирать деньги из казино. Вы великолепны!
    Ответ написан
    Комментировать
  • Алгоритм выпадения числа?

    @Alexander1705
    Выпадает случайное число, от 1 до 5.

    Вот, вы сами и ответили на свой вопрос.
    Ответ написан
    Комментировать
  • Как уменьшить сложность алгоритма?

    Stalker_RED
    @Stalker_RED
    Вот вам список алгоритмов сортировки, и для каждого указана сложность.
    Ответ написан
    Комментировать
  • Использование this c return?

    @D3lphi
    Для того, чтобы можно было делать вызовы "цепочкой":
    x.increment().increment().increment().print();
    То есть, метод increment() возвращает тот объект, которому принадлежит.

    Если бы он не возвращал this, то пришлось бы делать так:
    x.increment();
    x.increment();
    x.increment();
    x.print();
    Ответ написан
    Комментировать
  • Как зашифровать соединения определенной программы?

    Jump
    @Jump
    Системный администратор со стажем.
    Это можно сделать с помощью stunnel
    В сети можно найти кучу инструкций как под windows, так и под linux

    Плюсы этого решения - все делается из командной строки.
    Минусы этого решения - все делается из командной строки.

    Если хочется GUI - смотрите ответ xmoonlight, хотя там тоже можно и из командной строки все это сделать.
    Ответ написан
    Комментировать
  • Зачем goto в исходниках Python?

    un1t
    @un1t
    Стандартная практика обработки ошибок или освобождения ресурсов в Си. Обычно в таких случаях goto более удобен и читаем чем альтернативные решения.
    Однако в данном конкретном примере функция очень короткая и в ней нет множества ветвлений, поэтому конечно проще написать без goto, но видимо сила привычки или задел на будущее.

    Вот напиример функция из питона с более уместным использованием goto

    static int
    ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
    {
        Py_ssize_t i, numfields = 0;
        int res = -1;
        PyObject *key, *value, *fields;
        fields = _PyObject_GetAttrId((PyObject*)Py_TYPE(self), &PyId__fields);
        if (!fields)
            PyErr_Clear();
        if (fields) {
            numfields = PySequence_Size(fields);
            if (numfields == -1)
                goto cleanup;
        }
    
        res = 0; /* if no error occurs, this stays 0 to the end */
        if (numfields < PyTuple_GET_SIZE(args)) {
            PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most "
                         "%zd positional argument%s",
                         Py_TYPE(self)->tp_name,
                         numfields, numfields == 1 ? "" : "s");
            res = -1;
            goto cleanup;
        }
        for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
            /* cannot be reached when fields is NULL */
            PyObject *name = PySequence_GetItem(fields, i);
            if (!name) {
                res = -1;
                goto cleanup;
            }
            res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i));
            Py_DECREF(name);
            if (res < 0)
                goto cleanup;
        }
        if (kw) {
            i = 0;  /* needed by PyDict_Next */
            while (PyDict_Next(kw, &i, &key, &value)) {
                res = PyObject_SetAttr(self, key, value);
                if (res < 0)
                    goto cleanup;
            }
        }
      cleanup:
        Py_XDECREF(fields);
        return res;
    }
    Ответ написан
    Комментировать
  • При завершении работы программы падает исключение, что делать?

    @Mercury13
    Программист на «си с крестами» и не только
    Это испорченная память, где-то ошибка в управлении памятью (например, запись за границами массива).
    UPD. Ваша ошибка: в составе std::string есть внутренние неконтролируемые поля, и его нельзя побайтово сохранять в файл. Такими неконтролируемыми полями могут быть указатели, кэши-ускорители и многое другое. Вообще std::string состоит из указателя или двух, и отсюда следуют две вещи. 1) При сохранении в файл не попадут строковые данные, попадёт только указатель. К тому же в Windows нет хорошего 16-ричного просмотрщика, а без него при работе с файлами как без рук (по крайней мере начинающему, я давно обхожусь). 2) Как только вы этот указатель загрузите, std::string портится, и на деструкторе может случиться что угодно.

    Вам надо самим придумать формат файла и реализовать загрузку/сохранение, используя length(), data() и front().

    Важное правило: ткни в любой байт дампа вашего файла — вы должны сказать, что он значит. Из-за сложности формата это может быть сложно. Байт может быть неиспользуемым или оставленным для совместимости, но какое-то значение должно быть. Если формат многоуровневый, надо сказать назначение на всех уровнях: например, «это значение атрибута XML» на уровне XML и «это имя студента» на прикладном уровне.

    Исключение: если есть объект-«чёрный ящик», который написан не нами и сериализуется гарантированно корректно, достаточно сказать: «это часть чёрного ящика». (Сериализуется — это переводится в цепочку байтов, например, файл или сетевой поток.)

    Что ещё пока вижу (но это не причина ошибки).
    1.
    unsigned short int *exam_t = new unsigned short int[5];
    Нет нужды new, невелик массив. Хватает локального массива на стеке. Аналогично остальные два new.
    2. Нет нужды давать clear/close. Это фишка Си++, автоматически сработает деструктор.
    3. Не называйте переменную flag, называйте wasFound (или что она реально значит).
    4. sizeof(&student_r) только чудом совпадает с sizeof(student_r).
    5. Не надо писать flag == false, надо !flag.
    6. Функция del_reversive делает излишнюю работу и переставляет студентов, к тому же есть стандартный алгоритм remove_if.
    7. while (!flag) в del_rev бессмысленно.
    8. Вы же работаете со string’ами — зачем вводить информацию в буфер ограниченной длины?
    9. Программа не модульная, нет нужды в хедере.
    Ответ написан
    Комментировать
  • Как создать лаунчер для CS: GO?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Все это делает стим. Заканчивайте пиратить игра и так копейки стоит.
    А по факту чтобы такое сделать нужно примерно следующее:
    1) Тут можно конечно извратиться но в абсолютно любом случае. Вам нужно будет писать плагин для сервера на с++ в котором каким либо образом осуществлять коннект с клиентом к примеру по сокетам. С клиентской стороны писать опять же писать плагин все также на с++ для игры и при этом отключать верефикацию сертификата или получить его у valve чтобы плагин заработал на клиенте. Промежуточное звено в виде веб сервера с простым скриптом и БД для хранения и верефикации токенов Дальше обвязывать все это друг с другом что то типа:
    -запуск игры из лаунчера(получение токена от промежуточного сервера) и передача его в игру
    -игра запустилась и приняла плагином движка этот токен, коннект к серверу и передача на него этого токена.
    -клиент подключился к серверу и принял токен. Сервер делает верефикацию полученного токена от клиента на промежуточном сервере и по результату разрешает вход в игру или дисконектит с сервера.
    2) Свой античит даже близко недостающий функционалом до VAC у вас не получится, на это во первых тратят огромные деньги, во вторых нет исходников игры чтобы понимать чем пользуется чит. В третьих сама ОС
    антивирус забракует такую подозрительную активность от левого процесса в система посчитав ваш лаунчер вирусом.
    3) Тут делать как угодно можно, начиная от скриншотов самим лаунчером, заканчивая тем что их может делать плагин движка.
    4) Зависит от функционала.
    Ответ написан
    8 комментариев
  • Какова адресация элементов структуры в си?

    @Mercury13
    Программист на «си с крестами» и не только
    Да, будет хранить в том порядке, в котором записал. Гуглите понятие POD = Plain old data.
    en.cppreference.com/w/c/language/struct
    Ответ написан
    Комментировать
  • Игра "word of battles" возможно ее восстановить?

    В высшей степени странный вопрос. Найдите компанию-разработчика, обратитесь к ним и напишите следующее: "я очень хочу играть в вашу игру, поэтому пожалуйста запустите её снова в онлайн, платите за хостинг и за работу команды разработчиков, чтобы чинить баги и делать фичи, а я буду вам лайки вконтакте ставить". Когда они откажутся, напишите на Тостере новый вопрос о том, почему они такие бяки.
    Ответ написан
    Комментировать
  • Возможно ли вывести элементы list используя for_each?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    А почему должно? list - это вам не массив, где элементы лежат одним куском в памяти. Вообще говоря, вас не должно волновать, как они там лежат, используйте .begin() и .end() для получения итераторов на начало и конец списка. И в данном случае можно было бы применить range based for.
    Ответ написан
    Комментировать
  • Как сделать наследование класса со структурой?

    TrueBers
    @TrueBers
    Гуглю за еду
    У вас в корне неверное понимание наследования и каша в голове.

    Наследование — это выражение отношения является. Т. е., по-вашему, книга является множеством авторов. Абсурд ведь, разве нет?
    Книга — это книга, она может являться бумагой, или абстрактным объектом, или содержимым библиотеки, но никак не авторами. Она написана авторами, авторы — это её аттрибут. Поэтому здесь лучше использовать агрегирование, а не наследование. Ибо книга содержит, в какой-то мере, творчество множества авторов.

    Почитайте про различие наследования, агрегирования, композиции. Эти вещи предназначены для разных целей и представляют собой разные отношения между объектами.
    Ответ написан
    Комментировать