PyGame — это библиотека для создания мультимедийных приложений на Python. Зачастую позиционируется, как простой движок для создания двухмерных игр. Скажем, вы хотите написать свой сокобан или пошаговую стратегию в стиле Героев III, но не хотите учить Unity или Unreal Engine. Тогда PyGame создан для вас. Впрочем, как мы скоро убедимся, PyGame пригоден не только для игр.
На данный момент мы уже знакомы с написанием пользовательских функций для PostgreSQL, в том числе и полиморфных функций. Однако в PostgreSQL есть тип, заслуживающий особого внимания — это массивы. Давайте же разберемся, как работать с массивами в расширениях на языке C.
Прошло более шести лет с тех пор, как я пересел на MacOS. В целом, софтом и железом от Apple я доволен. Тем не менее, для моих задач Linux был бы чуть более удобен. А недавно я узнал о линейке ноутбуков Redmibook. Внешне это клоны MacBook’ов. Судя по информации в сети, на них прекрасно запускается Linux. «Как MacBook, но под управлением Linux» звучало слишком заманчиво, чтобы не попробовать.
Многие программисты могут по памяти реализовать односвязные и двусвязные списки, хэш-таблицы или алгоритм быстрой сортировки. Это классика алгоритмов и структур данных, которая к тому же часто используется на практике. Но если вдруг понадобится написать кучу или реализовать пирамидальную сортировку, то, не знаю как вы, а я по памяти вряд ли смогу это сделать. Давайте же освежим знания в этой области. А чтобы думалось непосредственно об алгоритмах, а не об управлении памятью, писать будем на Python.
Diablo II — это продолжение игры Diablo, вышедшее в 2000-м году. Имеет одно официальное дополнение под названием Lord of Destruction. Недавно я прошел Diablo II на своем ретро-ноутбуке. В детстве я делал подход к данной игре, однако забросил на втором акте.
Ранее в этом блоге мы познакомились с оконными функциями в PostgreSQL. Возможности оконных функций рассматривались на примере ROWS mode, как наиболее простом для понимания. Однако бывают задачи, где ROWS mode не очень-то помогает, и приходится прибегать к RANGE mode или GROUPS mode. Рассмотрим использование данных режимов на простых примерах.
Хотелось бы продолжить тему не самых часто используемых материалов для 3D-печати. Ранее мы познакомились с TPU и нейлоном. Сегодня же предлагаю поговорить о полипропилене, или сокращенно PP.
Zed — это набирающий популярность open-source текстовый редактор от бывших разработчиков Atom. Написан на языке Rust и активно использует возможности GPU, что обеспечивает высокую отзывчивость интерфейса. Zed поддерживает стандарты LSP и MCP, что делает его мощным инструментом для написания кода. Это в теории. Но как обстоят дела на самом деле?
Чтобы честно вычислить значение медианы для множества каких-то значений, необходимо взять эти значения, сложить в массив, отсортировать его, после чего взять средний элемент массива. Аналогично вычисляются и прочие процентили. Если значений много, то процесс выходит долгим и/или может не хватить памяти. Поэтому есть интерес к алгоритмам, вычисляющим приблизительные значения процентилей. Рассмотрим некоторые из них.
Некоторое время назад мы научились писать пользовательские функции (UDF) для PostgreSQL на C — см раз, два, три и далее по ссылкам. Если требуется написать функцию, которая принимает условные TIMESTAMP
и INT
, как-то их обрабатывает, после чего возвращает, к примеру, TEXT
, то такая задача не вызывает проблем. Однако PostgreSQL поддерживает и полиморфные функции. То есть, можно объявить функцию, принимающую аргументы произвольного типа. Как прикажете быть в таком случае? Давайте разбираться.