Flatpak. Решение проблемы с долгим запуском приложений

Flatpak. Решение проблемы с долгим запуском приложений

Если вы читаете меня в Телеграм-канале (а если нет, то это повод начать), то уже читали пост о том, что после недавнего крупного обновления Manjaro Linux (на основе Arch Linux) у меня сломался OutWiker — возникли проблемы flatpak-пакетом, и даже из исходников его еле удалось запустить. Если еще не читали, то вот ссылки на начало и продолжение (в один пост не уместилось). Теперь я начинаю разгребать последствия.

Читать далее…

Книга Стива Макнила про старые компьютерные игры «Hey! Listen!»

Давненько я не брал в руки шашек книжек по истории IT. Книга Стива Макнила «Hey! Listen!» на меня уже давно с укоризной смотрела, стоя на полке рядом с другими еще не читанными книгами на эту тему. Наконец, я до нее добрался.

Автор этой книги — один из ведущих британского шоу о компьютерных играх «Dara O Briain’s Go 8 Bit», а к тому же еще и комик, поэтому на протяжении всей книги он пытается острить, имхо, не очень смешно (возможно, это такой британский юмор), а потом еще сам иронизирует по поводу своих шуток. Выглядит местами странно, и судя по некоторым отзывам, кого-то это раздражает, но меня его шутки как-то не бесили.

Полное название книги «Hey! Listen! Путешествие по золотому веку видеоигр». Здесь подразумеваются 80-90-е годы прошлого века, и автор честно заявляет, что это его субъективный взгляд, хотя на самом деле книга охватывает более широкий диапазон времени. Эта книга даже не столько про игры, сколько про развитие игровой индустрии, начиная с пинбольных столов и первой игры в теннис на экране осциллографа и примерно до конца 1990-х годов, иногда заглядывая в начало 2000-х. Макнилу неплохо удалось показать переходы от повсеместного распространения одного типа дейвайса для игр к другому: от механических игровых автоматов к цифровым, затем появление приставок, затем появление PC и конкуренция этой платформы с приставками за игроков, особенно после выхода Windows 95 и DirectX. В книге упоминается огромное количество игр, но ни на одной из них автор долго не задерживается, в основном рассказывая про производителей «железа» — сначала пинболов, затем игровых автоматов, потом приставок.

Читать далее…

OutWiker 3.2.0.922 beta

OutWiker 3.2.0.922 beta

Выложил новую бета-версию OutWiker под номером 3.2.0.922. Эта версия относится к тем версиям, когда мне пришлось с ней заметно повозиться, а вот с точки зрения пользователя не должно ничего поменяться. За эти два месяца работа шла в двух направлениях.


Читать далее…

Про книгу Энтони Шоу «Внутри CPython»

После того, как более-менее освоишь какой-либо инструмент, которым постоянно пользуешься, полезно заглянуть в его «внутренности», чтобы его работа не воспринималась как магия, которая каким-то неведомым образом что-то делает. Поэтому, когда вышла книга Энтони Шоу «Внутри CPython», я ее сразу заказал. На днях я ее дочитал и расскажу о ней в этом посте.

Сразу определимся с терминологией, чтобы было ясно, о чем книга. CPython (не путайте с Cython) — это эталонная реализация Python, которая написана на языке C. Собственно, это и есть тот самый интерпретатор Python, которым пользуются большинство питонистов. Как вы, наверное, знаете, есть и другие интерпретаторы Python, написанные на других языках. Например, PyPy (интерпретатор, написанный на Python), IronPython (реализация Python под платформу .NET), Jython (реализация на Java). В данной же книге речь идет о всем знакомом интерпретаторе, а не о каком-то экзотическом (да простят меня пользователи перечисленных выше реализаций).

Сразу скажу, что книга оставила у меня неоднозначное впечатление. Наверное, я ожидал от нее чуть более высокоуровневого описания работы Python, надеялся, что больше будет написано про байт-код и его ассемблерные команды. В реальности книга представляет собой обзорную экскурсию по исходникам интерпретатора Python. На самом деле это тоже любопытно, но эти знания более удалены от практики применения Python. Эту книгу можно посоветовать тем, кто хочет начать участвовать в разработке CPython. К сожалению, она уже начала устаревать. В ней речь идет о Python 3.9, и когда я ее начал читать, то решил, что я буду смотреть в исходники Python 3.11, но там уже некоторых файлов не стало, а какие-то были переименованы. Особенно это касается частей кода, связанных с парсером. О некоторых подобных изменениях автор предупреждает, говоря о том, что парсер был переписан, но в Python 3.9 можно было найти обе версии, а в 3.11 осталась только новая. С другой стороны, это был тоже любопытный квест, искать куски кода, если указанного файла нет.

Читать далее…

Еще одно обновление статей про Matplotlib

Обновил и во многом дополнил очередную статью из серии статей про использование библиотеки Matplotlib, предназначенной для построения графиков на Python.

В этот раз обновлению подверглась статья Создание интерфейса средствами библиотеки Matplotlib, в которой рассказывается о том, как в окно с графиком можно добавить элементы управления (виджеты). В Matplotlib их не так много: кнопка, поле ввода, два вида ползунков, переключатели (radio buttons) и флажки (check buttons), но для многих задач этого будет достаточно, чтобы обойтись только библиотекой Matplotlib без сторонних библиотек для создания GUI.

Кстати, про внедрение графиков Matplotlib в интерфейс программы, написанной на wxPython у меня тоже была статья.

Новая версия статьи про Matplotlib

Очень неспешно продолжаю обновлять свои старые статьи про Matplotlib. Сегодня исправил статью Как обрабатывать события мыши и клавиатуры на графиках Matplotlib. Эта статья будет полезна, если вы захотите добавить немного интерактива для ваших графиков. Например, последний пример статье показывает, как можно добавлять на график метки с координатами (в системе координат осей), куда кликнул пользователь.

Дело близится к финалу, осталось поправить (читай, переписать) три статьи.

Полный список статей про Matplotlib можно найти на этой странице сайта.

Книга Мэттью Фаулера «Asyncio и конкурентное программирование на Python»

Недавно в издательстве ДМК вышла книга Мэттью Фаулера «Asyncio и конкурентное программирование на Python».

Как известно, у интерпретатора Python из-за наличия GIL (Global Interpreter Lock) имеются достаточно серьезные ограничения для полноценного использования всех ядер процессора. Для сложных вычислительных задач можно запускать несколько процессов со своим интерпретатором Python, каждый из которых обрабатывал бы свой собственный кусок данных, но создание нового процесса — достаточно тяжелая операция, и если ее делать часто, то производительность будет проседать. В то же время при некоторых низкоуровневых операциях (в основном это ввод-вывод) возможно написать код, который бы выполнялся параллельно, и именно в этом основная идея асинхронного программирования. Использование асинхронного программирования — это достаточно сложная область в любом языке программирования, а в Python все усложняется еще и тем, что нужно понимать, когда асинхронное программирование может дать какой-то выигрыш.

Книга Мэттью Фаулера рассматривает асинхронное и параллельное программирование (объединенные под одним термином «конкурентное программирование», что показывает аккуратность автора в терминологии) с разных сторон. Здесь будет рассказано и про асинхронщину, и про многопоточноть (в значении multithreading), и про прогопроцессность. Все это в конце концов рассматривается под тем углом, как для всего этого дела может помочь стандартная библиотека asyncio, которая в первую очередь ассоциируется именно с асинхронным программированием, хотя она позволяет использовать также пулы потоков и процессов.

Читать далее…

OutWiker 3.2.0.920 beta

OutWiker 3.2.0.920 beta

Иногда при разработке софта нужно заставить себя остановиться и просто выложить очередную версию. Только благодаря этому принципу я сегодня выложил следующую бета-версию под номером 3.2.0.920, потому что, как говорили древние философы, бесконечно можно заниматься тремя вещами: смотреть на огонь, смотреть на воду и заниматься рефакторингом кода. Вот именно последним я и занимался весь последний месяц. Надеюсь, что скоро очередную версию OutWiker можно будет назвать стабильной (на самом деле ничего нестабильного я в последних версиях не наблюдаю), но перед этим я решил немного упорядочить структуру модулей в исходниках и подготовиться к тому, что в будущих версиях немного поломать совместимость API для плагинов.

Главная цель этого рефакторинга — выделить функции и классы, которые можно использовать в плагинах, от тех сущностей, которые предназначены для внутреннего использования. Когда я только начинал делать OutWiker, то подразумевал, что плагины смогут добраться практически до любой внутреннего класса, но со временем понял, что эта идеология ошибочна. Во-первых, при изменениях приходится постоянно оглядываться на уже написанные плагины, чтобы не сломать совместимость, а, во-вторых, это сильно усложняет написание плагинов тем, кто не знаком со структурой исходников. Поэтому я хочу выделить отдельный модуль с API, который содержит относительно высокоуровневый код, подразумевая, что плагины будут использовать только его. Из-за особенностей языка Python я не смогу никак запретить использовать и более низкоуровненые сущности, но это уже будет на совести разработчика плагина.

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

Так что в этой версии нет заметных изменений с точки зрения пользователя, если не считать исправления нескольких ошибок (где-то исправлены зависания википарсера, где-то поправлены горячие клавиши). Надеюсь, что ничего ранее работающего я не сломал.

Последнюю бета-версию OutWiker как обычно можно скачать на этой странице.

Подписывайтесь на OutWiker в социальных сетях:

Переписал еще две статьи про Matplotlib

Продолжаю переписывать старые статьи про библиотеку Matplotlib, предназначенную для построения графиков на Python. Сегодня выложил обновленные статьи:

 

Обе эти статьи пришлось довольно сильно переписать, потому что писались они еще во времена Python 2. Теперь все примеры проверены на Python 3.10 и wxPython 4.2.0 (это касается первой статьи). Во второй статье добавлено побольше примеров, исправлены некоторые участки статьи, которые уже не актуальны в текущей версии Matplotlib и в современных версиях Windows.

Мне осталось переписать еще четыре старые статьи про Matplotlib, после чего можно будет приступать к написанию новых.

Как я веду заметки

А давайте я вам расскажу, как я веду заметки. Сразу нужно оговориться, что я не считаю этот способ единственно верным и не готов его отстаивать с пеной у рта. Более того, я считаю, что каждый должен сам под себя подогнать способ их ведения, подглядывая какие-то идеи у других, и именно с этой целью я и пишу этот пост. Более того, сам я периодически что-то меняю в способе их ведения, что лично для меня придает самому процессу разнообразие и добавляет интерес.

Все заметки я веду в OutWiker, я думаю, понятно почему :).

Читать далее…