Всем привет! На прошлой неделе я писал о том, что начал обновлять статьи про рисование графиков на Python с помощью библиотеки Matplotlib, поскольку с момента их написания в библиотеке Matplotlib многое поменялось. Следующей на очереди для исправления у меня была статья про рисование трехмерных графиков (поверхностей). В первую очередь я планировал переписать примеры, где используются устаревшие функции, и обновить скриншоты, но что-то я увлекся и не только практически полностью переписал статью, но еще и добавил в нее новые примеры. Например, теперь в ней говорится о том, как выставлять точку наблюдения и перемещать источник света, а заодно описал несколько способов прореживания данных при рисовании. И даже старые примеры кода полностью переписал.
Пример картинки из статьи:

PS. Обо всех изменениях на сайте вы можете следить не только через RSS, но еще и подписавшись на Telegram-канал или группу Вконтакте.
Всем привет!
Как вы, надеюсь, помните, я когда-то писал (и надеюсь скоро продолжу) серию статей про работу с библиотекой Matplotlib, которая предназначена для построения графиков на языке Python. Эта серия началась очень давно, и с того момента библиотека Matpotlib сильно изменилась, как внешне, так и внутри. После глобального редизайна внешний вид графиков уже не соответствует тому, что показано на скриншотах, некоторые функции стали считаться устаревшими и были заменены новыми, часть из них даже уже была удалена из библиотеки, что сделало примеры из некоторых статей нерабочими, а часть из них еще работает, но выводят предупреждения.
Пришло время просмотреть эти статьи, проверить примеры, где-то их переписать, а также поменять все скриншоты. Этот процесс достаточно нудный и не очень быстрый, но я начал это делать.
Сегодня я обновил две статьи: самую первую статью про рисование простейших графиков вида y = f(x) (ссылка) и статью про рисование круговых графиков в виде пирога (ссылка). Вторая статья подверглась большему изменению. Во-первых, в новых версиях Matplotlib была исправлена проблема, из-за которой график по умолчанию рисовался не круглым, а эллиптическим, и соотношение сторон эллипса зависело от соотношения сторон окна, поэтому один из разделов стал не актуальным и я его удалил. А, во-вторых, с новым дизайном захотелось добавить пример, показывающий, как изменять цвета линий вокруг секторов в круговом графике.
Постепенно буду исправлять и другие статьи, а заодно себе написал план по новым статьям про Matplotlib.
В последнее время я решил разобраться с Kubernetes. Как правило, когда нужно изучить что-то новое, я предпочитаю это изучать по книгам, а не по разрозненным статьям в интернете. Чтобы понять, что такое Kubernetes и с чем его едят, купил книгу Джона Арундела и Джастина Домингуса «Kubernetes для DevOps». Когда заказывал эту книгу, то меня немного смущало это самое «для DevOps», я боялся, что там упор будет именно на практики DevOps с использованием Kubernetes, а не на сам Kubernetes (в оригинале книга называется «Cloud Native DevOps with Kubernetes. Building, Deploying, and Scaling Modern Applications in the Cloud»). К счастью, мои опасения не оправдались, и книга посвящена в первую очередь Kubernetes, а DevOps-у отведено место только в последней четверти книги.
Эта книга предназначена для тех, кто никогда до этого не запускал Kubernetes и не знает, с какой стороны к нему подступиться. В книге очень аккуратно описываются разные аспекты работы с Kubernetes на примере развертывания очень маленького веб-приложения на Go (буквально, Hello World, поэтому Go знать не обязательно). При этом желательно иметь представление, что такое Docker и как с ним работать, что такое Dockerfile, но и это все кратко, буквально самый минимум, рассказывается в начале книги.
Читать далее…
Всем привет! Я подготовил новую бета-версию OutWiker, в которой продолжаю пытаться сделать работу с программой более удобной.
В этой версии (3.1.0.892) я продолжаю переделывать работу с горячими клавишами, чтобы дать больше возможностей для их настройки. До сих пор горячие клавиши были глобальные для всего приложения, независимо от того, на какой панели установлен фокус. Теперь появилась возможность устанавливать индивидуальные горячие клавиши для разных панелей (прикрепленные файлы, дерево заметок и т.п.).
Читать далее…
Всем привет! Это первая бета-версия OutWiker 3.0 после релиза. Я очень надеюсь, что в этот раз интервал между релизами будет поменьше, пока я планирую выложить следующую стабильную версию до конца этого года.
В новой бета-версии произошли достаточно крупные изменения с точки зрения внутренностей программы, но не все из них видны пользователям. Давайте сначала расскажу о тех изменениях, которые вы можете увидеть, не залезая в исходники.
Читать далее…
Я редко пишу про художественные книги, но тут не удержался. В моем списке для чтения книги Дэна Симмонса про Гиперион (этот цикл часто называют «Песни Гипериона») висели с давних времен. Несколько раз мне попадались упоминания этого цикла на просторах интернета при обсуждении фантастических книг. И вот, наконец-то, я это все прочитал. На неспешное чтение всех четырех книг: «Гиперион», «Падение Гипериона», «Эндимион», «Восход Эндимиона» у меня ушло три месяца. Если сравнивать этот цикл с другими произведениями, то в первую очередь на ум приходит «Дюна» Френка Герберта, хотя по сюжету и общему антуражу эти книги мало похожи. Общее у них — масштаб происходящих событий и политическая борьба на разных уровнях.
Твердой научной фантастикой серию про Гиперион я бы не назвал, в основном ее называют космооперой. Наверное это неплохое определение, хотя лично у меня со словом «космоопера» ассоциируется всякие низкокачественные произведения, к чему серия про Гиперион точно не относится.
В первых двух книгах описывается будущее XXIX-го века (по нашему летоисчислению), сюжет третьей и четвертой книг начинается примерно через 300 лет (через 274 года, если быть точным) после событий, описанных в первых двух томах. Тут вам и множество рас: люди и так называемые Бродяги (по сути люди, но которые стали модифицировать себя для жизни в космосе вместо того, чтобы терраформировать планеты), искусственный интеллект (ИскИны), андроиды. И главное — самый загадочный персонаж всех книг — Шрайк (кто-то его считает богом и ему поклоняется, кто-то считает его машиной-убийцей a la Терминатор и пытается его уничтожить). У людей и ИскИнов внутри своего сообщества есть отдельные кланы, которые конкурируют за влияние и проталкивают свои интересы. Отношения людей с ИскИнами тоже сложные: благодаря ИскИнам были созданы порталы, которые позволяли людям перемещаться в пространстве мгновенно, но при этом люди не понимали, как эти порталы работают, а у ИскИнов на порталы были свои планы. Но это я уже чуть не начал спойлерить.
Читать далее…
В последнее время я больше стал заниматься разработкой для серверной части веб-приложений, короче говоря, бэкендом. И хотя я не особо люблю заниматься админскими делами (самый страшный сон для меня — это искать проблему, почему что-то не работает в сети), но иногда приходится заниматься настройкой серверов, планированием структуры микросервисов и тому подобными делами. Ну и куда ж сегодня без DevOps-а? Грань между программистами и админами размывается, и по крайней мере нужно разбираться, как аккуратно должно развертываться приложение на серверах, каким образом взаимодействуют микросервисы и т.п. И в этом деле меня всегда беспокоит безопасность. Как делать это правильно? На какие грабли наступали другие разработчики, чтобы не повторять хотя бы элементарные ошибки? Держа в голове эту цель я начинал читать книгу Джульена Вехена «Безопасный DevOps».
Автор этой книги c 2013 года работает в Mozilla и занимается безопасностью облачных сервисов. Собственно безопасности и облакам посвящена книга. Конкретно про DevOps в ней сказано не так много (в основном в первой половине книги), зато рассматривается безопасность на различных уровнях, начиная с того, какие типичные ошибки допускают разработчики приложений, что позволяет злоумышленнику провести атаку, и до безопасности на уровне предприятия.
Читать далее…
Как говорится, разработку очередной версии программы невозможно завершить, ее можно только прервать. Слишком уж долго я откладывал релиз OutWiker: то нужно было перейти на Python 3, то выходила очередная версия библиотеки wxPython, в которых были добавлены полезные возможности или исправлены давно надоедавшие проблемы, то в очередном обновлении Ubuntu переставали работать нужные библиотеки и пришлось прекратить поддержку deb-пакета и перейти на snap. Были проблемы с библиотекой проверки орфографии и вовремя попавшаяся удачная замена. Недавно решилась проблема с тем, что антивирусы обзывали OutWiker трояном.

Буквально две недели назад обнаружилась новая проблема со snap-пакетами в некоторых дистрибутивах Linux, и поэтому в последнее время занимался тем, что учился создавать пакеты в формате flatpak. Так что теперь, если вам не нравится формат snap, то можете установить OutWiker с помощью команды
flatpak install flathub net.jenyay.Outwiker
В этом случае запускать OutWiker из командной строки можно с помощью команды
flatpak run net.jenyay.Outwiker
Сейчас вроде бы никаких критичных проблем не наблюдается, поэтому самое время выложить новую сборку, назвать ее стабильной и не дышать на нее, чтобы не развалились костыли, склеенные изолентой (шутка, сейчас таких мест осталось не так много). Наверняка выявятся какие-нибудь новые проблемы, но никто не обещал, что программа будет идеальной и без багов. С найденными проблемами будем разбираться в следующих версиях.
Читать далее…
Всем привет! Наконец-то я нашел время выложить следующую нестабильную версию OutWiker.
В этой версии самое заметное изменение связано со сборкой под Windows. В последнее время мне стали часто писать, что на новые сборки OutWiker стали ругаться антивирусы. Я и раньше с такой проблемой сталкивался, потому что антивирусам кажется подозрительным поведение exe-шника, который распаковывает себя во временную папку и начинает запускать новые процессы из распакованных файлов. Именно так ведет себя приложение, написанное на Python и упакованное с помощью PyInstaller в exe-шник.
Читать далее…
В последнее время помимо языка Python (которому, кстати, на днях исполнилось 30 лет) я активно стал использовать Java, поэтому решил углубить свои знания в этом языке и почитать более специализированные книги, которые поподробнее рассказывают об отдельных элементах языка или библиотек. Этот пост будет посвящен одной из таких книг, которую в целом можно охарактеризовать словами «как нам из Java сделать функциональный язык программирования». Речь пойдет о книге трех авторов Рауля-Габриэля Урма, Марио Фуско и Алана Майкрофта «Современный язык Java», в оригинале она называется «Modern Java in Action». Англоязычная версия книги была издана в 2018 году, и на тот момент были актуальные версии Java 8 и 9, а Java 10, который только-только вышел.
Большая часть книги основана на использовании лямбда-выражений (они же анонимные функции), о которых очень подробно рассказывается в первых главах книги. На мой взгляд даже чересчур подробно, так что возникает ощущение, что авторы повторяют одно и то же чуть под разными углами зрения. В Java 8 помимо анонимных функций появилась возможность создавать ссылки на методы классов, о том, как это работает, и как ссылки на методы связаны с лямбда-выражениями и функциональными интерфейсами (интерфейсами, у которых есть только один абстрактный метод) и рассказывается в первых главах на множестве небольших примеров. А для самых любопытных и продвинутых в приложении даже приводится анализ байт-кода, который создается компилятором для создания анонимных функций.
Читать далее…