• Совет для записи лекций?

    wutiarn
    @wutiarn
    Привет. Я в своё время тоже озаботился этим вопросом и написал свой велосипед: Edustor. Вкратце, я использую специально сгенерированные листы: https://edustor.ru/pdf. После "использования" эти листы связываются с нужными темами при помощи мобильного приложения (сканирование qr-кода), а затем отправляются в протяжный сканер (двухсторонний, с автоподачей, стоит около 15к) и выгружаются в edustor.

    Ну а потом до всего этого можно доступиться в виде PDF через мобильное приложение (android, с полноценным офлайном) или веб.

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

    Стек - Kotlin, Spring, Mongo. До текущего момента писал все в одиночку, поэтому документации практически нет. Если кому-то интересно, можете написать мне в телеграм (@wutiarn), расскажу в деталях. Ну и контрибьютеры очень приветствуются.

    Сорцы: https://gitlab.com/edustor
    Ответ написан
    Комментировать
  • Есть ли способ полноценно использовать симку мобильного оператора Yota в модеме?

    wutiarn
    @wutiarn Автор вопроса
    Решение нашли в профильной ветке на 4pda. Вкратце - подмена imei и изменение ttl. Подробности: 4pda.ru/forum/index.php?showtopic=596728
    Ответ написан
    Комментировать
  • Как нагрузить процессом только конкретные ядры процессора?

    wutiarn
    @wutiarn
    Питоновскими родными средствами, емнип, этого не сделать. Нужно что-то придумывать на уровне ОС, относительно виртуальной машины python. А вот что касается вашего кода выше - руки оторвать. Говорите, хотите ядро сохранить для работы системы, а сами на месте его и выжираете бесконечным циклом без пауз.

    Так что советую влепить в цикл time.sleep хотя бы на 1ms. Помнится, где-то читал про механизм, позволяющий просто отдать поток ОС (без указания задержки), до тех пор пока она не решит снова передать управление в этот поток. Но не нашел. Вероятно, это фишка из java.

    А вообще попробуйте сделать, как делают все нормальные люди. Пул процессов размером на 1 меньше кол-ва ядер, а там используйте потоки. Это не гарантирует, что у вас один процесс будет работать постоянно на одном и том же ядре, но гарантирует, что параллельно не будет задействовано более n-1 ядер. В данном случае наличие потоков нас не волнует, так как есть gil, который не даст потокам одного процесса работать параллельно.
    Ответ написан
  • Как настроить gradle для работы с несколькими модулями?

    wutiarn
    @wutiarn Автор вопроса
    Так. Понятно.

    После суток гугления нашел причину своих бед. В build.gradle всех библиотек андроида должен использоваться плагин android-library, а не android.
    Ответ написан
    Комментировать
  • Как заставить Django при отладке запускать удаленный интерпретатор с правами суперюзера?

    wutiarn
    @wutiarn Автор вопроса
    Ну что же. Решил проблему сам. Правда по своему - четыремя строками на питоне:

    #!/usr/bin/env python3
    from sys import argv
    from subprocess import Popen
    Popen(["sudo", "python3"] + argv[1:]).wait()

    Решение для меня идеальное. Ну разве что минус 5 мегабайт RAM. Но это даже для raspberry не критично.
    Ответ написан
    Комментировать
  • Как можно передать ссылку на экземпляр класса в другие модули, чтобы взаимодействовать с ним?

    wutiarn
    @wutiarn Автор вопроса
    В общем, благодаря @hsc задача успешно решена. Демон выносится в отдельный процесс. После этого с ним можно обмениваться данными через Redis. Синхронизируется все это при помощи unix'овых сигналов.

    Все гениальное просто.
    Ответ написан
    Комментировать