Как я писал книгу про Python

Полтора года назад я начал писать книгу про Python. Когда-то я писал посты о том, как продвигаются дела с этой книгой. Потом долгое время в блоге я эту тему как-то игнорировал, хотя в Телеграме про нее писал периодически и процесс написания продолжался. И вот, наконец, книга под названием «Python для инженерных задач» вышла. Сразу оставлю ссылку на сайт издательства, где можно прочитать оглавление и заказать ее. Книга получилась большая, больше, чем предполагалась изначально. На сайте написано, что она состоит из 416 страниц, но в реальности она содержит около 670 страниц.

Представитель издательства уже написал пост об этой книга на Хабре, а здесь я напишу о работе над этой книгой со своей стороны.

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

OutWiker 4.0.0.962 beta 2. Векторные значки и масштабирование интерфейса

OutWiker 4.0.0.962 beta 2. Векторные значки и масштабирование интерфейса

Выложил новую бета-версию OutWiker под номером 4.0.0.962. Если в постах к некоторым версиям программы я иногда писал, что внутренних изменений было сделано много, но они не заметны пользователю, то в этой версии все с точностью до наоборот. С момента выкладывания предыдущей версии было написано не так много кода, зато изменения внешнего вида можно найти в разных частях программы, если знать, куда смотреть. Об этом сейчас и расскажу.

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

Как я пытался векторизовать картинки

Как я пытался векторизовать картинки

В последнее время работа над очередной версией OutWiker у меня в основном заключается в том, что я перерисовываю растровые картинки, которые используются в качестве изображений на кнопках и в качестве значков в дереве заметок. Картинки для кнопок я уже все перевел в векторный формат, а вот значков для заметок такое количество, что в обозримом будущем векторизовать их все вряд ли удастся. В комментариях спрашивали, почему бы не попробовать применить какой-нибудь софт для векторизации, на самом деле я пробовал, но проблема заключается в том, что исходные картинки имеют размер всего 16×16 пикселей, и векторизаторы создают месиво из каких-то размытых пятен. Честно говоря, тут их винить не стоит — если увеличить исходную картинку каким-нибудь примитивным алгоритмом масштабирования, то результат будет примерно такой же. Это уже наш мозг, глядя на набор из 256 точек (16×16) допридумывает то, что там изобразил художник. Когда я рисовал векторные значки, которые должны были бы выглядеть в маленьком размере так же, как исходная картинка, приходилось напрягать воображение и дорисовывать то, что на исходной картинке не имело четких контуров.

Тогда родилась идея использовать нейронные сети, чтобы увеличить картинку до большего размера, чтобы векторизатор мог качественно сделать свою работу. В этом посте покажу, что из этого получилось.

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

Мысли про технические статьи

Мысли про технические статьи

Давно не писал никакие технические статьи себе на сайт, надо бы возобновить эту деятельность, у меня накопились некоторые темы про библиотеку Matplotlib. Но сейчас не об этом.

Я тут подумал, есть ли вообще сегодня смысл писать такие статьи? Раньше читатели находили эти статьи через поисковики, когда нужно было решить какую-то проблему. Пользователь написал запрос в поисковике, зашел на сайт, почитал нужную статью, если заинтересовало на сайте что-то еще, подписался на RSS или канал в Телеграме. А сейчас для таких задач сайты со статьями не нужны — ИИ очень даже неплохо решит проблему, даже гугл сначала предлагает ответ от ИИ, а потом уже ссылки на сайты. Если проблема экзотическая и ИИ начнет галлюцинировать, то тогда можно идти в большой интернет и искать решение проблемы. Но вероятность того, что кто-то опишет в статье ваш экзотический случай, но при этом ИИ не обучится на этой статье и на ее основе не даст хороший ответ, со временем стремится к нулю.

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

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

OutWiker 4.0.0.960 beta 1. Больше настроек внешнего вида

OutWiker 4.0.0.960 beta 1. Больше настроек внешнего вида

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

В этой версии сосредоточился на добавления настроек, влияющих на внешний вид вкладок и дерева заметок.

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

OutWiker 4.0.0.958 alpha 9. Работа над вкладками продолжается

OutWiker 4.0.0.958 alpha 9. Работа над вкладками продолжается

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

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

OutWiker 4.0.0.956 alpha 8 — Новые вкладки страниц

OutWiker 4.0.0.956 alpha 8 - Новые вкладки страниц

В этой версии я продолжаю переделывать интерфейс OutWiker. На этот раз под раздачу попали вкладки, в которых открываются заметки. Мне не нравилось поведение старых вкладок тем, что когда они не умещаются в одну строку в окне, не поместившиеся вкладки скрывались. Чтобы добраться до спрятанных вкладок, надо было попасть мышкой в маааленькую кнопку с треугольником, которая открывала выпадающий список со всеми вкладками. А еще мне не нравилось, что ширина вкладок ничем не ограничена, и вкладка с длинным именем заметки могла занять половину отведенного вкладкам места, а то и больше. В этом случае переключение между нужными вкладками было не самым приятным делом.

Глядя на все это, я решил вкладки полностью переделать.

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

Книга Александра Богачева «Графики, которые убеждают всех»

На работе мне часто приходится иметь дело с графиками, поэтому когда я увидел книгу Александра Богачева «Графики, которые убеждают всех. Руководство по визуализации данных», я не смог пройти мимо нее. Книжка оказалась замечательная. Как следует из подзаголовка, книга посвящена визуализации данных в разных ее проявлениях.

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

OutWiker 4.0.0.954 alpha 7. Интерфейс диалогов становится аккуратнее

OutWiker 4.0.0.954 alpha 7. Интерфейс диалогов становится аккуратнее

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

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

Про обновление бэкенда сайта

Про обновление бэкенда сайта

В последние несколько дней возился с обновлением бэкенда этого сайта. Статейная его часть работает на движке pmWiki, а блог — на WordPress-е. Все это крутилось на PHP 7.4 и mySQL 5.7. Сами движки pmWiki и WordPress я обновляю регулярно. То же самое можно сказать и про плагины для WordPress (и в меньшей степени про плагины для pmWiki). Но за годы работы сайта накопилось уже приличное количество плагинов, которые уже давно заброшены авторами. Некоторые такие плагины не позволяли переключиться на PHP 8. В то же время стали появляться плагины для WordPress, новые версии которых стали требовать именно эту версию PHP.

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

В итоге избавился от плагинов, которые не давали перейти на PHP 8, а также от большого количества предупреждений. Для pmWiki еще не нашел замену для двух устаревших плагинов, но они пока продолжают работать.

После всех этих шаманств переключился на PHP 8, а заодно на mySQL 8. К счастью, с переходом на новую версию mySQL никаких приключений не случилось. Пока еще остались некоторые предупреждения, буду постепенно еще копать сторону их устранения. На боевом сервере для пользователей это не заметно, но мне неприятно знать, что они существуют.

Эх, давненько я не брал в руки PHP. Я еще держу в уме, что когда-нибудь в далеком будущем, возможно на пенсии, я все-таки напишу свой движок на Python под свои хотелки, чтобы не зависеть от такого зоопарка движков и плагинов.