Про редакторы кода

Скажу пару слов о редакторах кода. Во-первых, некоторое время назад разработчики редактора Zed, про который в последнее время часто стали писать в англоязычном интернете, выпустили версию под Linux (до этого у них была версия только под Mac). Версии под Windows еще нет, но обещают. Я немного его потыкал, но не достаточно, чтобы сложилось какое-то мнение. Работает шустро.

А я озадачился поиском альтернативы NeoVim под Windows. Почему-то под Виндой связка NeoVim с языковым сервером pyright жутко тормозит, хотя под Linux-ом NeoVim с тем же набором плагинов работает замечательно.

В последние несколько дней пробую Helix. Это редактор, который написан на Rust, а по идеологии близок к Vim. Там тоже есть несколько режимов работы (нормальный, вставки и выделение), но комбинации клавиш там свои. По сравнению с Vim/NeoVim возможности у него пока победнее, и плагинов для него совсем немного. Но работает быстро. Он тоже умеет взаимодействовать с языковыми серверами. Понравилось, что для всех длинных комбинаций клавиш у него выскакивают подсказки. Например, нажал Ctrl+W в нормальном режиме — в углу выскочило окошко с перечислением клавиш, которые можно нажать дальше, и описание, что каждая комбинация делает (см. картинку). Нажал «:» для попадания в командную строку — сразу появились подсказки по возможным командам, которые фильтруются по мере их ввода.

На первый взгляд не хватает полноценных вкладок (есть только буферы, как в Vim), а в режиме outline, где перечисляются всякие функции и классы, все функции идут сплошным списком без древовидности по классам. Но в целом, интересно, буду еще играться с Helix и ждать Zed под Windows. Под Linux-ом пока остаюсь верным сторонником NeoVim.

Начал писать книжку про Python

А расскажу-ка я вам об одной авантюре, в которую недавно ввязался. Ну, может это и не совсем авантюра, но по крайней мере дело, которое требует к себе особого внимания. Если совсем коротко, то несколько месяцев назад я начал писать книгу про Python.

Как-то так случилось, что весной (кажется) мне написал представитель одного издательства, которое выпускает программерские книжки (Олег, если Вы это читаете, то привет Вам) с вопросом, не хочу ли я написать книжку. А я как раз в это время готовил материал и одновременно вел занятия со студентами по основам Python. С мыслью «а почему бы и нет» я взялся за это дело. Так что, я уже несколько месяцев пытаюсь складывать буквы в слова. Кроме букв иногда даже попадаются странные закорючки.

Ориентируюсь на наших студентов, которые учатся не на программистов, но с расчетом на то, что Python они будут использовать для инженерных задач и обработки данных. Поэтому в книге не будет ничего про веб-программирование, глубоко копать ООП тоже не будем (никакого множественного наследования и метаклассов), но при этом надо будет поподробнее рассказать про библиотеки Numpy, SciPy, Matplotlib и Pandas. При этом подразумевается, что студенты уже имеют представление о том, что такое программирование, переменные и циклы, и, возможно, даже поверхностно знают C.

Я думаю, что в телеграм-канале я буду периодически рассказывать, как продвигаются дела.

OutWiker 3.3 Release!

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

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

Книга Алекса Сюя «System Design»

На днях дочитал книгу Алекса Сюя «System Design. Подготовка к сложному интервью». Эта книга меня заинтересовала тем, что в ней описаны подходы к проектированию архитектуры сложных веб-сервисов со стороны бэкенда. Книга построена в формате интервью на собеседовании при приеме на работу, когда кандидата просят нарисовать, как бы он выстраивал структуру какого-нибудь сервиса, если бы он начинал проектировать ее с нуля. Во всех примерах речь идет о высоконагруженных сервисах с миллионами пользователей.

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

Кандидату в этой книге предстоит построить такие высоконагруженные системы, как поискового робота, систему сокращения URL-адресов, систему для отправки уведомлений пользователям (push-уведомления, SMS-уведомления, через почту и т.п.), ленту новостей блога, чаты, систему автозаполнения поисковых запросов, а в завершение ему предлагается нарисовать архитектуру будущих конкурентов для Youtube и Google Drive. Есть еще несколько глав, где требуется спроектировать один из компонентов таких систем — хранилище типа «ключ-значение», ограничитель трафика и распределенный генератор уникальных идентификаторов.

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

OutWiker 3.3.0.938 beta. Предрелизная версия

OutWiker 3.3.0.938 beta. Предрелизная версия

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

В этой версии надо было убедиться, что векторные картинки могут теперь использоваться во всех компонентах программы, в том числе и в плагинах, поэтому у некоторых плагинов поменялись значки на кнопках. Это касается плагинов Source, TeXEquation и Counter. Кроме этого обновил используемые библиотеки.

Еще одно небольшое изменение связано с редактором текста. Теперь в настройках (в разделе «Редактор — Общее») можно поставить галочку «Использовать пробелы вместо табуляции», и тогда при нажатии на клавишу Tab будет добавлено несколько пробелов вместо символа табуляции. Количество пробелов можно менять на той же странице настроек.

В остальном все осталось по-прежнему и, надеюсь, ничего не сломалось.

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

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

Книга Александра Пиперски «Конструирование языков»

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

Книга, о которой пойдет речь далее, вполне могла попасть в раздел «программирование», но проблема заключается в том, что ее написал лингвист, а не программист. Поэтому в результате книга оказалась написанной не про компиляторы… И вот тут я задумался… Сначала я хотел написать, что книга про языки, которыми пользуются обычные люди, в смысле не программисты, но это не так, потому что в книге в основном описаны языки, которыми никто не пользуется (кроме некоторых исключений). Да и по поводу «обычных людей» тоже не все так просто — нельзя просто так взять и проигнорировать языки эльфов, которым посвящена целая глава. Ну и про языки некоторых других фантастических тварей существ (да простят меня эльфы) тоже написано.

Автор этой книги — достаточно известный в определенных кругах популяризатор лингвистики Александр Пиперски, а его книга «Конструирование языков. От эсперанто до дотракийского» была издана уже в далеком 2017 году, а в 2020 вышло второе издание. Именно его я и читал. По сути в этой книге приводится краткий обзор искусственных языков, созданных для различных целей, как для художественных произведений, так и для реального использования. Мне особенно понравилась подача материала про некоторые языки, когда в начале главы приводятся несколько фраз на описываемом языке с переводом, а потом на основе этих данных читателю предлагается найти логику в построении этих выражений и выполнить задания по переводу других приведенных предложений. Затем в тексте главы автор вместе с читателем распутывает этот ребус, выявляя структуру построения фраз на описываемом языке.

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

OutWiker 3.3.0.936 beta. Снова новые векторные иконки и мелкие исправления

OutWiker 3.3.0.936 beta. Снова новые векторные иконки и мелкие исправления

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

За последнее время мне несколько пользователей написали сообщения, что нельзя менять горячие клавиши, которые назначены на такие действия как «Выбрать все» (Ctrl+A), «Отменить» (Ctrl+Z), «Вернуть» (Ctrl+Y), а также, что для работы с буфером обмена назначить клавиши Ctrl+Insert / Shift + Insert вместо Ctrl+C / Ctrl + V. Действительно, раньше эти клавиши были привязаны к компоненту редактора внутри программы, но в новой версии их тоже можно переназначать.

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

Книга Тиаго Антао «Сверхбыстрый Python»

Недавно дочитал книгу Тиаго Антао, которая в русскоязычном варианте называется «Сверхбыстрый Python», а в оригинале более скромно — «Fast Python». Ее подзаголовок — «Эффективные техники для работы с большими наборами данных». Сразу скажу, что книга мне очень понравилась и я ее всячески рекомендую тем, кто занимается обработкой данных или большими вычислениями с использованием Python.

Как известно, Python обладает репутацией медленного языка, и к сожалению, заслуженно. Его главное преимущество — это удобство работы. Но иногда требуется скорость, которую чистый Python обеспечить не может, а переписывать всю программу на C / C++ / Rust не хочется. К счастью, для таких случаев в Python есть обходные пути, позволяющие вроде бы писать на языке Python (или его подобии), но при этом значительно повысить скорость расчета или обработки данных. Тут надо оговориться, что книга посвящена приемам и библиотекам, работающим с реализацией CPython, не затрагивая другие реализации Python, такие как PyPy, IronPython, JPython и др.

По сути эта книга является сборником приемов, позволяющих подойти с разных сторон к решению задач оптимизации работы скриптов на Python. В основном внимание сосредоточено не на сложные математические вычисления, а на обработку больших данных. Каждая глава посвящена своей теме: асинхронное и многопроцессное программирование, использованию таких инструментов как Cython (не путайте с CPython) и Numba для компиляции скрипта в более низкоуровневый код, использованию видеокарт и распределенных вычислений. И везде на очень простых примерах, как правило не превышающих страницу, автор показывает основные идеи, используя разные библиотеки, и сравнивая между собой разные решения одной и то же задачи по скорости выполнения.

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

Далее я коротко пробегусь по главам книги и расскажу о чем они.

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

OutWiker 3.3.0.934 beta. Векторные иконки и новое окно настроек

OutWiker 3.3.0.934 beta. Векторные иконки и новое окно настроек

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

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

Книжные итоги 2023

Книжные итоги 2023

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

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