OutWiker, Flatpak и WebKitGTK

OutWiker, Flatpak и WebKitGTK

Этот пост можно считать продолжением предыдущего, в котором я рассказывал о работе OutWiker в виде flatpak-пакета под Linux. В том посте я обещал рассказать о том, почему OutWiker до сих пор собиралась со старой версией runtime, а если быть более корректным, со старыми версиями org.gnome.Platform и org.gnome.Sdk, и как на днях эта проблема внезапно решилась, благодаря чему следующие версии OutWiker уже будут собираться со свежими версиями этих библиотек.

Чтобы понять, в чем заключается проблема, я нарисовал схему зависимостей OutWiker от библиотек, которую сейчас подробно опишу:

Читать далее ‘OutWiker, Flatpak и WebKitGTK’ »

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

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

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

Читать далее ‘Flatpak. Решение проблемы с долгим запуском приложений’ »

Про книгу Энтони Шоу «Внутри 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 осталась только новая. С другой стороны, это был тоже любопытный квест, искать куски кода, если указанного файла нет.

Читать далее ‘Про книгу Энтони Шоу «Внутри CPython»’ »

Еще одно обновление статей про 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, которая в первую очередь ассоциируется именно с асинхронным программированием, хотя она позволяет использовать также пулы потоков и процессов.

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

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

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

 

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

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

Обновил еще одну статью про Matplotlib

Продолжаю переписывать старые статьи про использование библиотеки Matplotlib для построения графиков на Python. Сегодня перевыложил статью, которая называется Как установить логарифмический масштаб по осям. Как и с предыдущими статьями, переписал исходники в более современном стиле, поменял скриншоты, где-то дополнил и переписал текст. С момента написания этой статьи в 2013 году в Matplotlib произошли некоторые изменения, которые сломали некоторые примеры, но теперь все приведенные скрипты актуальны. Заодно добавил еще несколько примеров.

Мысли о читателях программерских статей

Мысли о читателях программерских статей

Задумался в очередной раз о содержимом сайта jenyay.net и целевой аудитории. В последнее время посты на сайте можно разделить на три темы: программирование, OutWiker и книги. Давайте поговорим о программерских статьях. Мне нравится их писать, потому что в них понятно о чем говорить, как правило логично выстраивается какая-то структура от простого к сложному, понятна цель — рассказать о какой-то библиотеке или отдельной ее возможности простым языком. С точки зрения читателя, такие статьи не отменяют необходимости чтения документации по рассматриваемому инструменту, но по крайней мере дает какое-то начальное представление о нем и направляет в нужную сторону.

Но вот вопрос — для кого писать. Дело в том, что лично я практически все интересующие меня вопросы, связанные с программированием, ищу на английском языке. Во-первых, в англонете материала на эти темы объективно больше. И, во-вторых, на английском проще сформулировать поисковый запрос, он получается более однозначный. Программерские статьи на русском языке я читаю в основном если случайно попадется какой-то текст, который меня заинтересовал (например, на Хабре). При этом сам я статьи пишу на русском языке, получается такое вот техническое лицемерие.

Читать далее ‘Мысли о читателях программерских статей’ »

Новая версия статьи про форматирование меток в Matplotlib

Новая версия статьи про форматирование меток в Matplotlib

Продолжаю обновлять давно написанные статьи про рисование графиков с помощью библиотеки Matplotlib.

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

И заодно напомню, что список всех статей про Matplotlib можно найти на этой странице.