• Какой самый быстрый архиватор?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Незачем искать экзотику и экономить наносекунды.
    Обычный ZIP со степенью сжатия 0.
    Программу подберите по вкусу, их много.

    Лично я пользуюсь Total Commander.
    spoiler
    605d18d5bac7f377918080.png
    Ответ написан
    Комментировать
  • Как происходит всплытие переменной?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Всплытие происходит в начало функции (т.е. bar), где бы внутри функции вы ни объявили переменную через var.
    Ответ написан
    Комментировать
  • Какие есть перспективные специальности в IT с творческой подоплёкой?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В любой работе есть элемент творчества. Просто обычно он разбавлен приличной долей рутины. Так что если вы хотите именно работать, то исключите требование, чтобы это было развлечением.

    Выбирайте направление, к которому у вас лежит душа. Только вы можете знать, какое лучше. Отвечающие уже выбрали, но лишь для себя, вам может не подойти. Тем более, что вы в один ряд с интересом ставите доходность.
    spoiler
    Условно можно считать, что значимость перспективного направления считается по формуле:
    A * X + B * Y,
    где X - интерес, Y - доходность, а A и B - это какие-то коэффициенты, которые индивидуальны для вас, то есть вы для себя определяете их соотношение и никто другой.
    Кроме того, сам интерес (X) - тоже зависит от вас и считается по какой-то другой условной формуле, хоть и зависит также от самого направления.
    Ответ написан
    Комментировать
  • Ошибка при запуске скрипта Lua?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Ошибка "bad argument #1 to 'find' (string expected, got nil)" переводится буквально:
    плохой аргумент №1 для функции find (ожидается строка, но вместо неё имеем nil).

    Это значит, что переменная text у вас не задана (содержит значение nil).
    Да, прерывание скрипта происходит конкретно в этом месте, но реальная ошибка где-то в другом месте в соответствии с вашей задумкой, там и нужно будет исправить/дополнить.
    Ответ написан
    Комментировать
  • И все-таки что такое Страничная память в Виртуальной памяти?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Ни где не сказано, что это за структура.

    А как вы искали, что прям нигде-нигде не сказано?
    Попробуйте загуглить: TLB
    Ответ написан
    Комментировать
  • Лишняя инструкция в дизассемблированном коде ассемблера?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Могу ошибаться, но похоже на разогрев памяти - чтение двух ячеек, между которым расположился массив, чтобы этот участок памяти попал в кэш процессора для последующего быстрого доступа к этому участку. Возможно, там далее по коду будет перебор массива.
    Ответ написан
    Комментировать
  • Почему кнопка вкл/выкл на корпусе срабатывает один раз?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Возможно, в настройках операционной системы.
    (например такое)
    605c5a749a545125437717.png
    Ответ написан
  • Какое приложение показывает кто звонит без подключения к интернету?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    На iOS любое приложение, которое показывает такую информацию, делает это без подключения к Интернету.

    Дело в том, что это требование безопасности, чтобы авторы приложений не палили, кто вам звонил, сколько раз, в какое время и т.д. Поэтому Apple придумала так, что приложение обязано просто предоставить системе базу данных с номерами, а система уже сама показывает. При этом приложение не в курсе, кто когда звонит. При такой схеме нет смысла что-то проверять в Интернете.
    скриншот
    605b347fda7e1359675258.png

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    На (обычных) скриншотах вообще не должно быть курсора мыши.
    Вывод: у вас два курсора мыши. Один - нормальный, а другой рисует какая-то прога, который и попадает на скриншоты.
    Ответ написан
  • Как преобразовать строки в бинарный код в JS?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    code = "й".charCodeAt(0)
    //1081 или 0x0439

    Далее смотрим, как кодируется UTF-8.
    Для русских букв (например, й) упрощённо:
    byteCode1 = code >> 6 | 0b11000000;
    byteCode2 = code & 0b00111111 | 0b10000000;

    Остаётся всё это склеить в одну функцию. В императивном стиле, конечно же, чтобы было понятно, что происходит:
    function StringToBin(s) {
      let arr = s.split(''); //разбиваем строку на символы
      arr.forEach((symbol, index) => { //кодируем каждый символ
        let code = symbol.charCodeAt(0);
        let byteCode1 = code >> 6 | 0b11000000;
        let byteCode2 = code & 0b00111111 | 0b10000000;
        arr[index] = (code < 128 ? code.toString(16) : byteCode1.toString(16) + byteCode2.toString(16)).toUpperCase();
      });
      return arr.join(' '); //возвращаем кодированную строку
    }
    
    console.log(StringToBin("Хай"));
    //D0A5 D0B0 D0B9

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Почитайте конкретно про изменение документа.
    Ответ написан
    Комментировать
  • Как правильно построить регулярку?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Короткий ответ:
    /(?<=<img [^<>]*?)src(?:set)?="([^"]*)"/g

    Но чем больше дополнительных условий и хотелок, тем больше доп. кода понадобится или более монструозным получится рег. выражение. Универсальный способ вряд ли получится. Всегда найдётся способ сломать регулярку.
    Ответ написан
    8 комментариев
  • Как создать текстовую онлайн RPG/ZPG?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если у тебя есть интерес к математике и ты любишь логически рассуждать, то основы программирования тебе дадутся легко. В любом императивном языке программирования используются конструкции "если-то-иначе" и "повторять-до-тех-пор", то есть используются условия, которые могут быть "истиной" или "ложью". Остаётся только изучить синтаксис самого языка: где-то пишут if условие then действие end, а где-то if (условие) { действие } и тому подобное. То есть различия только в написании. Вот тебе основы программирования в двух словах.

    Что касается разработки именно игры, то есть понятие основного игрового цикла. С точки зрения программирования - это обычный цикл "повторять-до-тех-пор", просто он не заканчивается до самого конца игровой сессии. Этот цикл делит игру на так называемые "кадры" или "тики", из которых и состоит игра. Каждый кадр - это отдельное состояние игры, которое соответствует отдельной итерации основного цикла. Тебе нужно придумать, каким образом одно состояние сменяет другое, как осуществляется переход, какие вычисления при этом производятся. Такой "кадр" обычно не соответствует кадру на экране (другими словами ход игры не зависит от FPS), хотя это уже отдельная сложная тема.

    1. Язык выбирай в зависимости от того, какой движок или платформу будешь использовать. Не оглядывайся на другие игры. Например, Unity и соответственно C#.
    2. Курсы, учебники, ютуб-каналы - без разницы. В любом случае ты потратишь какое-то время, и его не получится сильно уменьшить. То есть это прямая конвертация времени в знания и навыки без сильных колебаний курса цены этой конвертации. В целом, время будет зависеть от твоего начального бэкграунда (т.е. что ты знаешь и умеешь уже сейчас).
    3. В программировании (да и в других областях) сложную задачу принято разбивать на части (декомпозиция). Сначала нужно изучить понятие игрового цикла, и как время будет течь в игре (или как время в игре соотносится с реальным, учитывая паузы и сохранения). Затем решить, в каком порядке и что там будет выполняться более детально. Однако любая мелкая игровая система всё равно будет достаточно сложна, и её снова нужно разбивать на совсем уж простые. А простые - снова разбивать на элементарные. Поэтому от умения разбивать зависит, закончишь ли ты программу (игру) или нет.
    4. Сетевая часть - обычно самая сложная (и самая глючная), потому что для каждой своя оптимизация. В двух словах, устройства обмениваются сообщениями по сети, и эти сообщения могут пересылаться с разной скоростью, а могут порой вообще теряться в никуда. Клиент-серверная модель предполагает, что есть некое главное устройство (например, ты арендовал сервер в дата-центре), к которому подключаются все остальные (т.н. клиенты). Но вот как будет реализовано взаимодействие, контроль ошибок, чтобы не глючило, вот это уже зависит от самой игры.
    Ответ написан
    Комментировать
  • Как сделать 2D спрайт гибким, подобным верёвке?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сама по себе идея - сложная. Поэтому, думаю, более правильным будет не искать готовое решение, а сделать самому. Уж слишком много нюансов будут касаться именно вашей игры: как именно будет работать физика верёвки, насколько она должна быть реалистичной, нужна ли (и какая) оптимизация и т.д. Например, будет ли персонаж падать, если ноги запутаются в верёвке - решать только вам.

    В игре Journey (2012 года) персонаж как бы перепрыгивает через свой собственный длинный шарф, если ради эксперимента попытается споткнуться об него. Однако на шарф компаньона это не действует, и персонаж просто проходит сквозь него. Лень ли это разработчиков, или у них не было выбора, нам уже не узнать.

    Пока что я нашёл решение в использовании джоинтов, и разделении верёвки на кусочки, для имитации гибкости. Но было бы круто научиться изменять сам спрайт.

    Хорошая мысль. А зачем менять спрайт? Так даже лучше, потому что вместо спрайта верёвки вам теперь нужен спрайт лишь одного звена, который можно просто размножить.
    Ответ написан
    1 комментарий
  • Почему разный результат в вычислениях?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, из-за формата IEEE 754. Этой ошибке уже 100 лет в обед.

    Попробуйте вот это:
    print(0.1 + 0.2 == 0.3)
    Ответом будет False.
    Ответ написан
    Комментировать
  • Как слить несколько массивов с одинаковыми ключами, но выбрать самые большие значения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Очень просто.

    Для каждого массива нужно найти максимальное значение (и соответствующий ключ). Одновременно с этим нужно формировать итоговый массив, добавляя туда найденные максимальные значения.

    Так что если вам знакомы операции сравнения, операторы ветвления и циклы, а также массивы в целом, то проблем не должно возникнуть.
    Ответ написан
    Комментировать
  • Как сохранить команду CMD в файл?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нельзя сделать такой CMD, чтобы он не запрашивал права админа, если они нужны. Это элементарные требования безопасности. Иначе без ведома пользователя всякая вирусня будет творить всё, что ей вздумается.

    Но вы можете изменить саму ОС и её настройки, чтобы добиться желаемого эффекта. Например, можно отключить UAC.
    Ответ написан
    2 комментария
  • Как сгенерировать уникальное имя для файла php?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно воспользоваться функцией hash_file().
    Надеюсь, SHA-256 вам будет достаточно.
    Ответ написан
    4 комментария
  • Где взять сокращённый список сайтов заблокированных Роскомнадзором?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Файл https://antizapret.prostovpn.org/proxy.pac занимает менее 1 Мб.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что компьютеры - разные. И настройки у приложений на каждом из компьютеров - тоже разные.

    На ваших скриншотах видно, что панельки можно перетаскивать. Их нужно хватать за вертикальные 5 точек. А так, если залезть поглубже в настройки приложения, то можно ещё и поменять содержимое этих панелек. Какие-то кнопки убрать, какие-но другие добавить и т.д.
    Ответ написан
    7 комментариев