OutWiker 4.1.0.976 beta 1

OutWiker 4.1.0.976 beta 1

Ну что ж, начнем новый сезон нашего сериала. В смысле, начнем делать новую версию OutWiker под номером 4.1. В этот раз планирую не затягивать с релизом, а выпустить до него только две-три беты, чтобы потом приступить к версии 5.0 с более крупными изменениями. Можно сказать, что в версию 4.1 попадут те исправления и улучшения, которые я не успел добавить в версии 4.0. Версия 4.1 по-прежнему продолжит работать в Windows 7, обновления HTML-рендера в этой версии не будет (версию с новым HTML-рендером я ковыряю параллельно). В этой версии изменения будут в основном направлены на улучшение интерфейса без масштабных его переделок, на обновление используемых библиотек и исправление проблем, которые были замечены с момента релиза OutWiker 4.0.

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

Создание презентаций с помощью Marp

Создание презентаций с помощью Marp

Недавно я решил для создания презентаций уйти от PowerPoint и его аналогов и попробовать софт, который их генерирует по текстовым файлам. Конечно, для такой задачи в первую очередь в качестве замены напрашивается LaTeX, но я пока не готов тратить много времени на погружение в эту экосистему и полноценно изучать этот язык разметки, поэтому начал искать менее очевидные варианты. По описанию меня заинтересовали несколько инструментов — это Marp, Slidev и связка reveal.js + Pandoc. По-хорошему, надо бы попробовать их все, но я пока успел применить на практике только Marp, который, вроде бы, считается более простым в использовании. Оставшиеся два варианта, как утверждают искусственные интеллекты, предназначены для тех, кто хорошо разбирается во фронтенд-разработке. Я себя к фронтендерам совсем не отношу, поэтому оставил Slidev и reveal.js на потом, хотя по описанию Slidev мне сначала понравился больше остальных. Ну и забегая вперед, при использовании Marp поверхностные знания CSS мне тоже пригодились.

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

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

Про OutWiker и Wayland

Про OutWiker и Wayland

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

Для не линуксоидов, которые зачем-то читают этот пост, надо дать некоторые пояснения, не вдаваясь в глубокие технические детали. Дело в том, что в операционных системах на основе Unix / Linux есть два протокола, которые используются для отображения графики. Первый — это X11, который начинал разрабатываться еще в 1980-х годах, и который до сих пор живее всех живых. Однако в 2008 году появилась его альтернатива — Wayland, который по задумке со временем должен вытеснить X11. Проблема в том, что множество программ, которые создавались с расчетом на X11, не всегда гладко переносятся на Wayland, и даже современные версии многих приложений не очень хорошо работают — если вообще запускаются — под Wayland.

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

Про дальнейшее развитие OutWiker

Про дальнейшее развитие OutWiker

После релиза OutWiker 4.0 пришло время подумать о том, в какую сторону развивать программу дальше. Идей по этому поводу у меня много, и я не называю это планом, вряд ли все эти хотелки упихнутся в одну версию. Это больше напоминает мешок с задачами, из которого я буду вытаскивать по одной задаче, руководствуясь принципом «кажется, это сейчас можно сделать». Есть несколько дальнейших путей развития приложения, где-то эти пути пересекаются, а где-то идут параллельными тропами. Далее я попробую логически сгруппировать задачи, которыми можно заняться в ближайшее время.

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

OutWiker 4.0 release!

OutWiker 4.0 release!

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

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

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

Мысли про лабораторки по программированию

Мысли про лабораторки по программированию

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

Когда-то, в середине прошлого — начале этого века, лабораторные работы по программированию тоже имели смысл, пока компьютеры дома были не у всех. Студенты готовили пачку перфокарт или писали программу на бумажке (бррр), а потом приходили в лабораторию и пытались все это запустить и отладить. А какой смысл сейчас в лабораторной работе, для которой главный инструмент — компьютер? Программы студенты вполне могут написать дома в спокойной обстановке, когда вокруг них не бегают 20 человек и препод. Приносить на лабораторную работу готовую программу и на защите объяснять, как она работает — получится обычная курсовая работа или практические занятия, к ним у меня вопросов нет.

Но вот как сейчас должна выглядеть лабораторная работа по программированию я не знаю. При том, что я такие лабораторки веду, но у нас это скорее практическое занятие с коллективным написание кода (как называется парное программирование, когда в этом участвую 25 человек?) Интересно ваше мнение, что должно происходить на таких занятиях?

PS. Еще более странно для меня в свое время было увидеть лабораторию на кафедре философии. Что там скрывалось за закрытой дверью, я даже боюсь представить.

Про книгу «Глубокое обучение. Погружение в мир нейронных сетей»

Некоторое время назад мне захотелось получше разобраться с тем, как устроены современные нейронные сети. До этого мои знания о них были на уровне 60-70-х годов прошлого века. Я имел какое-то представление о многослойных перцептронах, функциях активации в виде сигмоида, алгоритме обратного распространения ошибки и, кажется, все. При этом некоторые книги, которые мне довелось полистать, тяготели к двум крайностям. Либо это были чисто математические работы для математиков, либо книги в стиле «берем библиотеку X, импортируем функцию Y, все работает». Хотелось почитать книгу, после которой можно было бы более осмысленно использовать какую-нибудь библиотеку вроде TensorFlow, понимая, каким образом построить архитектуру сети. В этот момент мне попалась книга трех авторов: С. Николенко, А. Кадурина и Е. Архангельской под названием «Глубокое обучение. Погружение в мир нейронных сетей». Полистав ее, я увидел, что формулы в ней присутствуют, но кроме формул есть еще много текста и картинок со схемами, и даже код встречается. В общем, решил я почитать эту книгу.

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

Про OutWiker и Rust

Про OutWiker и Rust

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

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

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

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

OutWiker 4.0.0.972 beta 7. Почти релиз

OutWiker 4.0.0.972 beta 7. Почти релиз

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

А пока расскажу, что я сделал в этой версии.

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

OutWiker 4.0.0.970 beta 6. Начал обновлять документацию

OutWiker 4.0.0.970 beta 6. Начал обновлять документацию

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

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