Задать вопрос
  • Как открыть файл с расширением .npk?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Обычно следует сразу указывать игру. Расширение npk может быть у каких угодно, и формат их очевидно не обязан быть одним и тем же.

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

    PS: сначала нашлось это: https://habr.com/ru/post/347382/
    Ответ написан
    Комментировать
  • Как запустить файл .exe с другого wineprefix?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    WINEPREFIX=/другой/wineprefix wine ./файл.exe

    При таком синтаксисе переопределённая переменная WINEPREFIX будет распространяться только на один этот вызов wine. Чтобы действовало в пределах текущей сессии, нужно сделать

    export WINEPREFIX=/другой/wineprefix

    Если нужно на постоянно - добавить это в .bash_profile
    Ответ написан
    Комментировать
  • Подсистема Linux для Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что после chroot корнем файловой системы для процесса будет указанный каталог, а где там /bin/bash? Его там нет. Его надо там создать. Далее потребуются некоторые библиотеки из /lib. Устройства из /dev. Утилиты, хотя бы coreutils. И т.д. и т.п. Проще всего сразу же сделать минимальную систему в нужном каталоге с помощью debootstrap.

    PS: Я по формулировке темы вопроса думал, что вот сейчас надо будет рассказывать про chroot'ы, namespace'ы, openvz и виртуалки, но тут, оказывается, дело было не в этом...
    Ответ написан
  • Как зарегистрировать аккаунт telegram на временный номер и не потерять его?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Разумеется, не существует и не будет существовать способа халявно и дёшево обойти ограничения по регистрации. Иначе этим бы активно пользовались мошенники.
    Ответ написан
    Комментировать
  • Мультиплеер для уже созданой игры?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сделать мультиплеер к любой игре намного сложнее, чем просто перерисовать какую-нибудь картинку. В FS19, насколько я понимаю из полминуты гугления, какая-то возможность для разработки модов есть, но насколько глубоко она позволяет интегрироваться в игру - это ещё большой вопрос. И в любом случае писать придётся немало, клиентскую библиотеку как мод к игре и сам сервер мультиплеерной игры с протоколом взаимодействия.
    Ответ написан
    4 комментария
  • Как запретить обновление всех пакетов в Ubuntu?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не очень понятна суть вопроса. Если просто не ставить и не обновлять ничего, то ничего не обновится. Или хочется, чтобы ничего не было обновлено по зависимостям, в том числе никакие библиотеки, но можно было ставить новые пакеты? Это почти без вариантов, если не сидеть на очень stable-ветке и своём собственном замороженном зеркале пакетов, ведь новая версия пакета в регулярно обновляемом репозитории может зависеть от новых версий библиотек, для которых и старой-то версии уже в репозитории нет.
    Ответ написан
    Комментировать
  • Шаблон скрипта перехода по ссылке каждые Х секунд?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    while True:
      _do_any_work_with_your_url_
      time.sleep(30)


    Для дёргания url смотреть в сторону библиотек urllib или requests.
    Ответ написан
    2 комментария
  • Как сделать несколько воркеров на одну задачу?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Самый простой и по рабоче-крестьянски наивный способ - создать один общий для всех воркеров файл и ставить на него эксклюзивную блокировку (flock LOCK_EX) в момент взятия из очереди. Например, пусть у задачи есть поле proc_status, которое имеет значения NEW, RUNNING, FINISHED, FAILED. Тогда ставим блокировку, берём из базы задание в статусе NEW, делаем update set proc_status='RUNNING' и снимаем блокировку - никто другой одновременно с нами ту же задачу не возьмёт. Финальный статус можно ставить без блокировки.

    Вместо блокировки файла можно использовать блокировки в самой базе, если они там есть (с Mongo не имел дела).

    Ещё один не менее простой способ - распределять задачи по идентификаторам. Например, пусть у нас N воркеров, тогда пусть воркер k (где k=0...N-1) обрабатывает только те задания, где id%N=k.

    В общем, способы есть.
    Ответ написан
    Комментировать
  • Сервис по запоминанию паролей к сайтам?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Вообще говоря, под условия задачи подходит pass (passwordstore.org). Всем сотрудникам заводить gpg-ключ и учётку в git, далее хранить там пароли в зашифрованном виде для каждого ключа. Для pass есть даже графический интерфейс (qtpass). И на сторону пароли при этом не уходят. Но, к сожалению, это слишком технарски-гиковое решение, может быть слишком сложным в организации для данного контингента (видимо, это такие контент-менеджеры, ведущие всякие группы в соцсетях).
    Ответ написан
    Комментировать
  • Почему header нельзя использовать после оператора вывода?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что в протоколе HTTP заголовки выдаются до любого контента. Если контент уже хотя бы частично выдан, то Header'ы уже выводить нельзя (хотя это можно обойти через ob_start).
    Ответ написан
    5 комментариев
  • .htaccess ErrorDocument 404 с помощью js?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никак. 404 выдаёт сервер, а js выполняется на клиенте.
    Ответ написан
    Комментировать
  • Почему JS решил задачу на рекурсию гораздо быстрее Python/Lua?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Когда-то давно один товарищ обнаружил, что реализация вычисления чисел Фибоначчи через рекурсию на Java работает быстрее, чем её аналог на C. Он не только поудивлялся этому, но и поизучал вопрос. Оказалось, что gcc в каждом вызове функции делал push si; push di; и по окончании pop si; pop di; хотя регистры si и di в скомпилированном коде никак не использовались. Это давало какие-то микроскопические, но всё же расходы времени.

    Любой конкретный тест специфичен, он показывает не то, как быстро работает тот или иной язык (точнее, его конкретная реализация), а какие в этой реализации получились расходы времени на конкретную задачу. В другой задаче, в другой реализации того же языка, просто даже на другом оборудовании может получиться другой результат.
    Ответ написан
    Комментировать
  • Memory_get_usage на хостинге и Денвере отличаются показатели, Почему?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Операционная система, её разрядность, загруженные расширения - всё влияет.
    Ответ написан
    Комментировать
  • Почему не заполняется база данных SQLite?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Включить autocommit или в конце скрипта либо после каждого запроса делать con.commit()
    Ответ написан
  • Насколько надёжный данный шифр?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Классические шифры полагаются на то, что никто не догадывается, как их расшифровать, а подбор вручную может быть не очень простым делом. И то, на самом деле, некоторые из них ломаются очень просто. Например, шифр простой замены ломается частотным анализом, а шифр сдвига - просто перебором разных вариантов сдвига, число которых не превышает длины алфавита.

    С появлением вычислительной техники всё изменилось. Неважно, каким запутанным для человека является шифр, машина может очень эффективно проверить хоть миллион разных "классических" вариантов с самыми разными алгоритмами и ключами. Тут даже алгоритм скрывать бесполезно, если его можно угадать подбором и комбинированием.

    Основа современной криптографии - вычислительная сложность. Можно даже всё знать об алгоритме шифрования - но за разумное время расшифровать не получится. Но старинные методы шифрования "символ-в-символ" вычислительно очень просты и никак не годятся в современном мире.
    Ответ написан
    8 комментариев
  • Нужен ли python для системных администраторов?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Знание языка программирования - а лучше нескольких - это всегда плюс. Помогает как в написании своих скриптов, так и в отладке/переиспользованию чужих. И, конечно, качества и распространённость таких языков влияют. Но это всё равно опционально, в отличие от знания bash. Хотя, конечно, не знать совсем ни одного языка больше похоже на крайность, чем на норму.
    Ответ написан
    Комментировать
  • Почему письма не доходят в Gmail?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для начала проверяем RDNS/DKIM/SPF и всё такое. Большинство почтовиков очень плохо отнесутся к письму с невнятного хоста.
    Ответ написан
    Комментировать
  • Как скопировать значение из ячейки, google sheets?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Копировать A1 в буфер и затем вставлять в B1 как Edit->Paste special->Paste values only.
    Ответ написан
    3 комментария
  • Почему при попытке передачи словаря как аргумента map() появляется ошибка?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что map принимает list в качестве второго аргумента, а приведение dict к list - это список ключей, так что obj в lambda будет строкой.

    Можно посмотреть, что покажут эти print для понимания:

    print (list(a))
    print (list(map(lambda x: x, a)))


    Решение: вместо obj['id'] использовать в lambda-выражении a[obj]['id']
    Ответ написан
    Комментировать