В этой статье мы создадим desktop-приложение, которое по нашему запросу будет сохранять на нашем диске заданное количество картинок. Так как картинок будет много, мы воспользуемся асинхронностью Python для конкурентной реализации операций ввода-вывода. Посмотрим, чем отличаются библиотеки requests и aiohttp. Также создадим два дополнительных потока приложения, чтобы обойти глобальную блокировку интерпретатора Python.
Пользователь
Масса, энергия, импульс и закон сохранения
Множество непонятных свойств мира связаны с природой массы и энергии (а также импульса). Все мы слышали эти слова и у многих из нас есть туманное представление об их значении. Конечно, значений у слов «масса» и «энергия» в английском и других языках довольно много. К сожалению, ни одно из них не совпадает с теми, что имеют в виду физики. Попробуйте отставить в сторону эти значения слов и поработать с точными физическими понятиями – иначе вы полностью запутаетесь.
Необходимо отметить, что не стоит при словосочетании «масса и энергия» вспоминать другую популярную пару, «вещество и энергия». Многие люди упоминают последнее словосочетания так, будто вещество и энергия – это две стороны одной медали. Но это не так. Вещество и энергия относятся к разным категориям, как яблоки и орангутанги. Вещество, не важно, как его определять – это класс объектов, существующих во Вселенной, а масса и энергия – это не объекты, а свойства, которыми эти объекты обладают. Масса и энергия глубоко переплетены друг с другом, и заслуживают общего объяснения.
Чтобы понять массу и энергию, необходимо добавить к ним импульс и обсудить различия и связи этих величин.
Python и быстрые HTTP-клиенты
Существует множество HTTP-клиентов для Python. Самым распространённым среди них, и, к тому же, таким, с которым легко работать, можно назвать requests. Сегодня этот клиент является стандартом де-факто.
Методы наименьших квадратов: текст, написанный программистом для программистов
Итак, задача на сегодня: научиться простейшей обработке геометрии, чтобы, например, суметь преобразовать мою голову в истукана с острова Пасхи:
Как работают пули в видеоиграх?
Hitscan
В предыдущую эпоху многие игры для рендеринга 3D-сцен в 2D-изображения использовали технику под названием raycasting («бросание лучей»). Raycasting позволяет движку определять первый объект, с которым пересечётся луч. Но потом разработчики задались вопросом: «Что, если выпустить луч из ствола оружия, чтобы имитировать пулю?» Благодаря этой идее родился hitscan («сканирование попадания»).
Пример raycasting
В большинстве реализаций оружия с hitscan при выстреле игрока физический движок выполняет следующие операции:
- Определяет направление, в котором указывает оружие.
- Выпускает из ствола оружия луч на заданное расстояние.
- Использует raycasting для определения того, попал ли луч в объект.
Если движок определил, что объект находится на линии огня, то он сообщит ему об этом, сказав, что в него «попала» пуля. Затем цель может выполнить все вычисления, необходимые для регистрации повреждений.
Управление памятью в Python
Знание того, что происходит в Python, позволит вам лучше понимать некоторые особенности поведения этого языка. Это, хочется надеяться, даст вам возможность по достоинству оценить ту огромную работу, которая делается внутри используемой вами реализации этого языка для того, чтобы ваши программы работали именно так, как вам нужно.
Линейная алгебра для разработчиков игр
Пишем примитивный и никому не нужный компилятор
Я сам долгое время считал, что создание компиляторов — это удел элиты, а простому смертному программисту не постичь этой науки. Попробую доказать, что это не так.
В посте мы рассмотрим, как можно написать свой компилятор C-подобного языка меньше чем за час, исписав всего 300 строчек кода. В качестве бонуса, сюда входит и код виртуальной машины, в байткод которой будет компилироваться исходник.
Байесовский анализ в Python
Я бы хотел подробно рассказать о том, как проводить анализ на практике.
Введение в Байесовские методы
В качестве введения
В настоящее время Байесовские методы получили достаточно широкое распространение и активно используются в самых различных областях знаний. Однако, к сожалению, не так много людей имеют представление о том, что же это такое и зачем это нужно. Одной из причин является отсутствие большого количества литературы на русском языке. Поэтому здесь попытаюсь изложить их принципы настолько просто, насколько смогу, начав с самых азов (прошу прощения, если кому-то это покажется слишком простым).
MCMC-сэмплинг для тех, кто учился, но ничего не понял
Как-то раз я рассказывал о новой Байесовской модели человеку, который не особенно разбирался в предмете, но очень хотел всё понять. Он-то и спросил меня о том, чего я обычно не касаюсь. «Томас, — сказал он, — а как, на самом деле, выполняется вероятностный вывод? Как получаются эти таинственные сэмплы из апостериорной вероятности?».
Авиационные газотурбинные двигатели
Авиационные ГТД можно можно разделить на:
- турбореактивные двигатели (ТРД)
- двухконтурные турбореактивные двигатели (ТРДД)
- Турбовинтовые двигатели (ТВД)
- Турбовальные двигатели (ТВаД)
Притом, ТРД и ТРДД могут содержать в себе форсажную камеру, в таком случае они будут ТРДФ и ТРДДФ соответственно. В этой статье мы их рассматривать не будем.
Начнём с турбореактивных двигателей.
Турбореактивные двигатели
Такой тип двигателей был создан в первой половине 20-го века и начал находить себе массовое применение к концу Второй мировой войны. Первым в мире серийным турбореактивным самолетом был немецкий Me.262. ТРД были популярны вплоть до 60-ых годов, после чего их стали вытеснять ТРДД.
Современная фотография Me-262, сделанная в 2016 году
Самый простой турбореактивный двигатель включает в себя следующие элементы:
- Входное устройство
- Компрессор
- Камеру сгорания
- Турбину
- Реактивное сопло (далее просто сопло)
Можно сказать, что это минимальный набор для нормальной работы двигателя.
А теперь рассмотрим что для чего нужно и зачем.
Паттерны корутин asyncio: за пределами await
Предисловие переводчика:
В очередной раз наступив на грабли при работе с python asyncio я отправился на просторы интернета, чтобы найти что-то более приятное, чем сухая документация. Мне попалась статья Yeray Diaz "Asyncio Coroutine Patterns: Beyond await", в которой автор весьма увлекательно рассматривает применение asyncio и делится некоторыми приемами. Поскольку я не нашел ничего такого же цельного на русском языке, то решился её перевести.
Asyncio — конкурентная мечта python программиста: пишешь код, граничащий с синхронным, и позволяешь Python сделать все остальное. Это очередной импорт библиотеки антигравитации: import antigravity
На самом деле все совсем не так, конкурентное программирование — тяжелое занятие и, пока корутины позволяют нам избегать ада обратных вызовов, что может увести вас достаточно далеко, вам все еще нужно думать о создании задач, получении результатов и элегантном перехвате исключений. Печально.
Хорошие новости в том, что все из этого возможно в asyncio. Плохие новости в том, что не всегда сразу очевидно что неправильно и как это исправить. Ниже несколько паттернов, которые я обнаружил во время работы с asyncio.
Понимаем декораторы в Python'e, шаг за шагом. Шаг 2
И снова доброго времени суток всем читателям!
Спасибо, за проявленый интерес к первой части перевода, надеюсь, вторая вас так же не разочарует.
Итак, в первой части данной статьи мы совершили базовое знакомство с декораторами, принципами их работы и даже написали свой вручную.
Однако, все декораторы, которые мы до этого рассматривали не имели одного очень важного функционала — передачи аргументов декорируемой функции.
Что ж, исправим это недоразумение!
Не нервничай, не спеши, не перебивай: история одной трагедии
Тридцать шесть градусов красоты
В ней плоскость не делится на десятиугольники, вместо этого все линии расположены под углами кратными 36°. Координаты в этой системе можно записывать целыми числами, по два целых числа на горизонтальное и вертикальное направление.
Расскажу как это нарисовать.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность