Задать вопрос
  • Как можно реализовать проверку подлинности данных на игровом сервере?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    1. Процесс отправки результатов должен быть согласован с предыдущими данными.
    То есть вы не должны принимать пакет с результатами и сразу в скоребоард. Сперва должен быть пакет, что игрок начал трассу, потом какие-то промежуточные значения, затем уже результат. Для каждого пакета должно быть корректное время создания.

    2. Опять же, клиент игры может отправлять дополнительные пакеты с информацией, и желательно регулярно меняться чтобы хакеру было сложно написать "бот", который будет работать вечно.

    3. Информация должна шифроваться, алгоритм храниться в секрете. Можно сделать несколько алгоритмов и между ними переключаться, чтобы хакер сломал голову, разбираясь в каком виде он должен слать данные.

    4. Логирование действий обязательно. Если есть подозрение, что какой-то клиент шлет некорректные данные (тренируется в написании бота) - можно банить сразу, или можно обсфуцировать бан - делать для такого клиента лаги, глюки и проблемы, чтобы он не понял что происходит, а банить немного погодя, чтобы он не мог вычислить какое именно его действие привело к бану.
    Ответ написан
  • Git commit -a странно работает?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Если вы создали новый файл, его как минимум один раз нужно добавить в репозиторий через git add.

    git commit -a будет коммитить все файлы, которые уже отслеживаются. Другими словами:
    * Новый файл - git add.
    * Измененные файлы - можно автоматически через git commit -a
    Ответ написан
    1 комментарий
  • Как хранить очень большое количество файлов? Как сохранять пути в БД?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    "очень много картинок" - это сколько?
    десятки тысяч - легко живут в одной папке.

    Если обращаться к файлам по прямому пути, задержки в чтении не будет. Задержка в записи - минимальная.
    Если файлов больше 100к, то в принципе да, можно идти так, как вы указали - создавать подпапки, но желательно алгоритм генерации файлов подправить таким образом, чтобы самих папок было не слишком много, ибо если у вас будет 100к папок по 1-3 файла в каждой - это неэффективно и неэкономно.
    В линукс каждая папка - минимум 3 directory entry.
    Ответ написан
    Комментировать
  • Как вычислить сколько км проехала машина?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Рассчитать без дополнительного оборудования, которое будет недешевым - никак.
    Можно конечно при замене масла записывать показания тахометра для каждого клиента, но это не поможет вам слать клиенту напоминание.

    Просто предлагайте клиенту менять масло два раза в год, в идеале перед зимой и после зимы.
    Ответ написан
    Комментировать
  • Как просто и наименее затратно потренироваться с мультиплеером в играх?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Запускаете сервер на своем компьютере, запускаете клиент на своем компьютере. Подключаетесь к серверу по 127.0.0.1
    Ответ написан
    Комментировать
  • Правильно ли я понимаю назначение спецификации HTML?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Все верно, и обычно то, что уже принято в спецификацию, присутствует во всех браузерах.
    Но вот согласование новых фич и возможностей может занимать очень много времени.

    Поэтому у разных браузеров могут некоторые фичи быть реализованными без официальной спецификации, даже стать популярными и попасть в спецификацию уже пост-фактум. Поинтересуйтесь историей браузерных войн.

    Насчет того, что IE традиционно отстает - это не совсем так. Однажды он перегнал всех, стал мега-популярным и убил всех конкурентов. А потом впал в стагнацию из-за отсутствия мотивации развиваться.
    С другой стороны в любом IE есть поддержка проприетарного ASP, чего нет в других браузерах.
    Ответ написан
    Комментировать
  • Как получить такой двоичный код?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Посмотрите, совпадает ли алгоритм разработчиков с созданием символов в UTF-8

    В таком виде это совсем другой вопрос.

    Посмотрите алгоритм формирования UTF-8 символов, думаю это все оттуда:

    Подготовить старшие биты первого октета (0xxxxxxx для одного октета, 110xxxxx - два, 1110xxxx - три и т.д.). Для остальных октетов два старших бита равны 10 (10xxxxxx).
    Количество байт Значащих бит Первый байт Шаблон полностью
    1 7 0xxxxxxx 0xxxxxxx
    2 11 110xxxxx 110xxxxx 10xxxxxx
    3 16 1110xxxx 1110xxxx 10xxxxxx 10xxxxxx
    4 21 11110xxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    5 26 111110xx 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
    6 31 1111110x 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
    Ответ написан
  • Как быть с проблемой блокировки в Украине?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Можете в hosts файле домены яндекса перенаправить на localhost.
    Ответ написан
    Комментировать
  • Что такое bulk-запрос?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    get_player_by_id - обычный запрос, вернет данные про игрока по его ID
    get_players_by_ids - bulk запрос, вернет данные про несколько игроков по их ID, одним запросом.
    Ответ написан
    Комментировать
  • Какой у вас алгоритм усваивания материала при чтении?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Чтение - никогда не разовьет практику.
    Какие-то случайные примеры из книги, если вы просто берете и повторяете - они мало чем помогут.
    Пробуйте все примеры адаптировать под ваши нужды. У вас должно быть какое-то увлечение, какой-то проект, для которого можно было бы написать скрипты, софт - вот используя примеры из книги, адаптируйте их и пишите то, чем вы можете пользоваться сами.

    Где-то модерируете форум? Напишите на питоне скрипт, который лезет в базу и собирает оттуда какую-то интересную для вас статистику.
    Играете в игрушку - напишите на питоне доску почета и выводите ее в web через cgi
    Не хотите забыть о важных вещах - разберитесь с отправкой почты из питона, и шлите себе по расписанию СМС, или разберитесь с ботом телеграма на питоне и шлите уведомления в телеграм.

    То есть пишите на практике не просто чужие примеры, которые тупо копируются из учебника в блокноте, а генерируйте свой код. Тогда прочитанное в книге будет восприниматься не как голая теория, а как чей-то чужой опыт, который вы будете сравнивать со своим опытом, и развиваться.
    Ответ написан
    Комментировать
  • Есть ли программа для детектирования движения в видео?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Попробуйте VLC плеер - кое-что он умеет из коробки

    Используйте опцию командной строки:
    vlc --video-filter=motion <файл>

    Или менюшками.
    Tools -> Effects and Filters -> Video Effects -> Advanced -> Motion Detect.
    Ответ написан
    4 комментария
  • Какие игры были первыми во Вконтакте\Facebook?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Открытки вконтакте первыми взяли рубеж в миллион пользователей.
    IMHO "Вгалактике" была первая, которая взяла рубеж в 100.000 пользователей, но тут могу ошибаться ибо заинтересован.
    Ответ написан
  • Как создать взаимодействие между сайтом и mysql?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    var connection = mysql.createConnection({
    host : 'localhost',
    user : 'root',
    password : '0707',
    database : 'mysql'
    });

    Уже из этого момента интуиция вам должна была подсказать, что работа с Mysql должна происходить между пользователем(браузером) и mysql, а между серверным бэкендом, который находится на том же localhost, где и сервер mysql.
    А пользователь - просто данные пересылает из фронтенда в бэкенд.
    Ответ написан
    Комментировать
  • Кто во время разработки занимается проблемными клиентами?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    На менеджера проекта.
    Ответ написан
    Комментировать
  • Что делать, если не запускается апач?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Где-то в конфигурации апача ошибка.
    Просмотрите errorlog - там может быть больше информации, например в какой строке.

    У вас конкретно ошибка с MPM модулем - или для него недостаточно параметров, или вы апгрейдили апач, и конфиг остался от старого, в котором опции могут идти в некорректном порядке (например блоки virtualhost до блоков с погрузкой модулей)

    Проверьте конфигурацию файлов, можно еще погуглить. Если все плохо - выложите конфиги сюда, тогда можно будет подсказать конкретнее. Потому что вариантов, что вызвало ошибку может быть много.
    Ответ написан
    Комментировать
  • На самом ли деле в Китае такие узкие и дорогие каналы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В китае очень плохие каналы в мир, вдобавок байду активно ранжирует сайты по скорости отклика.

    Но внутри есть и нормальная скорость, просто Китай очень большой. В отличие СНГ, где наверное 80% населения живет в нескольких миллионниках, в Китае и самих миллионников больше, и вообще жилые массивы территориально встречаются чаще. Все соединить одной надежной сетью нереально, поэтому разница очень зависит от территории. Ну и про крупные миллионники сложно говорить - там население такое, что 10-гигабитные каналы не справляются.

    В общем - территориально зависит, но 10 мбит вы явно мало искали..
    Ответ написан
    1 комментарий
  • Можно ли подключить 2 монитора к ПК через один HDMI разъём?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Если вы подключите 2 монитора через один разъем с каким-то разветвителем, вы получите два монитора, на которых будет одна и таже информация. "Расширить" рабочий стол таким образом будет невозможно.
    Ответ написан
    3 комментария
  • Си это основополагающий язык или просто популярный?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Под процессоры (точнее под архитектуру), пишут компиляторы и интерпретаторы, чтобы код программы мог быть скомпилирован под конкретную архитектуру и следовательно выполниться на ней.

    Си ОЧЕНЬ неблизкий к машинному коду, но на нем действительно меньше абстракций, чем в большинстве других популярных языков. Но различные языки появлялись в разных условиях, и часто потому, что Си вообще не подходил под решение задач. От Си развился С++. И все. Остальные языки создавались достаточно независимо.

    Конечно языки, которые появились первыми, могли оказать влияние на новые языки, но говорить о происхождении будет некорректно.

    Большинство языков пишется для решения конкретных задач. Некоторые из языков стали популярны неожиданно для создателя.
    Ответ написан
    4 комментария
  • Telnet в Линукс?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    telnet ВСЕ шлет открытым текстом. Это давным давно устарело, небезопасно и никто сейчас не поднимает шелл по телнету. Все пользуются ssh.
    Чтобы пользоваться ssh нужно просто создать аккаунт на линуксе. ssh демон обычно уже поднят на стандартном для ssh порта.
    Вы вообще в консоли на линукс работали? Как подключались, если с работы? Также и из дому.
    Ответ написан
    Комментировать
  • Как написать скрипт для rsync?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    Даже на спектрумовском бейсике было удобнее использовать call и return, а не goto.

    зачем монтировать каталог1, если в случае проблем с пингом, вы все равно завершаете работу и демонтируете его? Сделайте сперва проверку, а потом уже решайте что делать.

    на баше проверка может выглядеть так
    ping -c 1 server.com
    if [ $? -ne 0 ]; then
    echo "Сервер недоступен"
    mail -s "[error] server.com is not available "admin@server.com" <<< "server.com недоступен."
    exit 1
    fi
    а тут уже монтируем, синхронизируем, демонтируем. goto не нужен.
    Ответ написан
    Комментировать