Многие программисты могут по памяти реализовать односвязные и двусвязные списки, хэш-таблицы или алгоритм быстрой сортировки. Это классика алгоритмов и структур данных, которая к тому же часто используется на практике. Но если вдруг понадобится написать кучу или реализовать пирамидальную сортировку, то, не знаю как вы, а я по памяти вряд ли смогу это сделать. Давайте же освежим знания в этой области. А чтобы думалось непосредственно об алгоритмах, а не об управлении памятью, писать будем на 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 поддерживает и полиморфные функции. То есть, можно объявить функцию, принимающую аргументы произвольного типа. Как прикажете быть в таком случае? Давайте разбираться.
Большинство программистов не раз сталкивались с задачей, где нужно выбрать случайный элемент из массива. Может потребоваться выбрать не один элемент, а несколько, что не намного сложнее. Но что делать, если вместо массива на входе у нас поток данных неизвестной длины, а то и вовсе бесконечный?
Diablo — компьютерная игра 1997-го года, породившая целый жанр подражающих ей игр. Имеет одно официальное дополнение под названием Hellfire. В детстве я слушал много хорошего про Diablo, но сам в нее не играл. Недавно мне удалось наверстать упущенное и пройти игру на своем ретро-ноутбуке.
Смартфоны производства Apple «из коробки» умеют ходить в интернет через VPN, а также HTTP-прокси. Однако очевидного способа завернуть весь трафик в socks-прокси не предусмотрено. Тем не менее, есть неочевидный способ.