• Синглтон для flask?

    @bromzh
    Drugs-driven development
    1) Можешь написать расширение для фласка, это очень просто. Для дропбокса уже есть что-то, но не знаю на сколько оно работоспособное (последний коммит в 2013 был). Это, наверное, будет самым лучшим решением

    2) Напиши декоратор (за основу я взял оф. тутор):
    from functools import wraps
    from flask import g, request, redirect, url_for
    
    def dropbox_required(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            if not 'access_token' in session:
                g.client = None
                return redirect(url_for('dropbox_auth_start'))
            if g.client is None:
                g.client = DropboxClient(access_token)
            return f(*args, **kwargs)
        return decorated_function
    
    # Usage
    @app.route('foo')
    @dropbox_required
    def foo():
        return 'foo'

    В данном случае, клиент хранится в глобальном объекте g.

    Скорее всего более лучший вариант (с точки зрения threadsafe) - не хранить клиент в глобальном объекте, а с помощью декоратора вставлять в функцию в качестве параметра:
    def provide_dropbox_client(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            if not 'access_token' in session:
                return redirect(url_for('dropbox_auth_start'))
            client = DropboxClient(session['access_token'])
            return f(client, *args, **kwargs)
        return decorated_function
    
    
    @provide_dropbox_client
    def foo_service(client, bar, baz=42):
        print(client, bar, baz)
        manager = DatastoreManager(client) # это тоже можно вынести в декоратор
        ...

    Ну и всю логику вынести из view-функций в сервисный слой.

    PS API дропбокса с DropboxClient нынче Deprecated, смотри новое АПИ тут.
    Ответ написан
    1 комментарий
  • Как сделать острые углы?

    ankfrv
    @ankfrv
    Photoshop:
    1. Выделяем кусок картинки. Например, часть прямоугольника.
    2. Быстрая маска → Filter → Distort → Wave:
    4a3b80ed31314b3580e332d6d3374786.png
    3. Выходим из режима быстрой маски.
    4. Из полученного выделения делаем маску слою.
    5. Профит.
    Ответ написан
    1 комментарий
  • Как и где посмотреть как работает операционная система?

    @u1travio1et
    Вспоминается цитата из известного фильма:
    — Посмотри в собаке.
    — Как это — посмотри в собаке?
    — Ну, в смысле открой её.
    — Ё* твою мать, это не консервная банка бобов, что значит «открой её»?!
    Вот также примерно и тут, вы можете измерить кучу характеристик, любые метрики и показатели, но посотреть как это работает, даже зная всю структуру, пожалуй невозможно.
    Есть хорошее видео от Яндекса, рассказывает про утилиты, которыми теоритечески можно многое увидеть.
    Ответ написан
    Комментировать
  • Как и где посмотреть как работает операционная система?

    Я сначала прочитал "The Design and Implementation of the FreeBSD Operating System". Там тоже хорошо и интересно написано о внутренних механизмах FreeBSD.
    Удалось попробовать все это на реальном железе, купив плату с ARM процессором AT91SAM9XE512. Именно на нем получилось самостоятельно настроить и запустить MMU, защиту памяти, многопоточность и работу с системными вызовами (без использования готовых ОС). Было желание написать об этом статью. Затем нашел эмулятор qemu, в котором можно сделать все то же самое, но без покупки железа.
    Ответ написан
    Комментировать
  • Как и где посмотреть как работает операционная система?

    trinitr0
    @trinitr0
    провинциальный админ
    Для конкретизации с этой книгой читают книгу Таненбаум и Вудхалл "Операционные системы: разработка и реализация". В ней практика на примере учебной ОС Minix. Или можно взять пример другой учебной ОС Xv6 -
    . К ней прилагаются прокомментированные исходные коды.
    А браться сразу за отладчик я Вам не советую. Есть риск потерять интерес к данной теме.
    Ответ написан
    2 комментария
  • Как и где посмотреть как работает операционная система?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как посмотреть на внутренности ОС, посмотреть как это работает?

    Загрузить linux в qemu и походить по нему с помощью gdb. Например так: www.linux-magazine.com/Online/Features/Qemu-and-th...
    Ответ написан
    1 комментарий
  • Как и где посмотреть как работает операционная система?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    открыть системный блок и посмотреть... :)

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

    fornit1917
    @fornit1917
    Это прямо следует из определения синуса и косинуса. sin(x) - ордината точки единичной окружности с дугой угла x, cos(x) - абсцисса.
    1024px-Trigonometric_function.png
    Ответ написан
    7 комментариев
  • Как реализовать данное вращение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пусть Ra и Rb - матрицы поворота точки A относительно O и B относительно A. С - произвольная точка объекта, движение которого задаётся точками A и B. Тогда поворот точки С будет выглядеть так:
    С' = Ra×A+Rb×(С-A)
    Соответственно, движение точки A:
    A' = Ra×A
    Движение точки B:
    B' = Ra×A+Rb×(B-A)
    Ответ написан
    Комментировать
  • Как реализовать данное вращение?

    BOOMER_74
    @BOOMER_74
    Full-Stack разработчик
    Воспользуйтесь oCanvas. Пример с главной страницы очень похож на вашу задачу.
    Ответ написан
    3 комментария
  • Как реализовать распаковку данных в base64 сжатых gzip из xml файла. Язык C#?

    @soniq
    Для распаковки gzip воспользуйтесь System.IO.Compression.GZipStream
    Раскодировать Base64 можно с помощью System.Convert. FromBase64CharArray()
    XML читайте как вам удобней.
    Ответ написан
    Комментировать
  • Base64 - для чего знаки "равно"?

    Base64 конвертирует блоками по 3 байта (создавая коды по 4 байта) :
    - если длина исходного блока была кратна 3, то он закодируется нацело и знаков "=" не будет
    - если длина исходного блока имела остаток 1 от деления на 3, то он закодируется в 2 байта (6 бит + 2 бита), и чтобы итоговый код был длиной кратен 4, будет в конце дописано "=="
    - если длина исходного блока имела остаток 2 от деления на 3, то он закодируется в 3 байта (6 бит + 6 бит + 4 бита), и чтобы итоговый код был длиной кратен 4, будет в конце дописано "=".

    Отбрасывать хвосты нежелательно, т.к. Вы не можете быть уверены, что декодирующий алгоритм примет последний не кратный 4 блок.
    Ответ написан
    Комментировать