Про книгу Стефани Стимак «Дизайн для разработчиков»

Захотелось мне обновить свои знания по фронтенд-разработке, которые у меня застряли на уровне CSS времен Internet Explorer 6 9, а также принципов веб-дизайна примерно тех же годов. Начать решил с книги Стефани Стимак «Дизайн для разработчиков». Судя по названию, это должна была быть именно та книга, которая мне нужна. Но, как оказалось, ожидал я от нее слишком многого, и в первую очередь в этой книге не хватило глубины материала.

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

OutWiker 4.0.0.952 alpha 6. Большие внутренние изменения и незаметные внешние

OutWiker 4.0.0.952 alpha 6. Большие внутренние изменения и незаметные внешние

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

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

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

Книга про Python. Прогресс за январь 2025 года

Закончился еще один месяц, а это значит, что пора рассказать о том, как за месяц продвинулось написание книги про Python. Раньше я беспокоился по поводу того, что уже выхожу за предварительно намеченные рамки по страницам. В конце прошлого месяца я неумолимо приближался к обещанным 500 страницам, а впереди остается еще много глав. Поговорил по этому поводу с представителем издательства, посчитал, что если дальше все пойдет таким темпом, то книга будет объемом чуть меньше 700 страниц. Оказалось, что это допустимо, и после этого я пообещал постараться не превышать 700 страниц,а это значит, не придется выкидывать никакие главы, и это хорошо.

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

OutWiker 4.0.0.950 alpha 5. Дополнительные значки и новый плагин

OutWiker 4.0.0.950 alpha 5. Дополнительные значки и новый плагин

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

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

Книга про Python. Отчет за декабрь

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

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

OutWiker 4.0.0.948 alpha 4. Новые возможности в дереве заметок

OutWiker 4.0.0.948 alpha 4. Новые возможности в дереве заметок

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

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

Про генерацию кода искусственным интеллектом

Про генерацию кода искусственным интеллектом

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

Начал с Copilot. Результат меня прям очень впечатлил. Первоначальный запрос был такой:

«Напиши код компонента на Python с использованием библиотеки wxPython, который использует wx.adv.OwnerDrawnComboBox, чтобы выбирать цвет с помощью выпадающего списка. Каждый элемент выпадающего списка должен отображаться в виде прямоугольника своего цвета. Напиши код приложения, который этот компонент использует.»

Код получился почти сразу рабочий, в течение нескольких запросов поправили некоторые косяки и даже улучшили внешний вид. Через полчаса в первом приближении я получил то, что хотел и потом буду исходники допиливать напильником. После этого даже не особо надеясь, что ИИ поймет, что мне надо, написал ему еще одну хотелку:

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

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

После этого мне стало интересно сравнить результат с другими нейронками. Начал с Яндекс GPT 4. Результат получился унылый. Работающего контрола от него я так и не добился. В выпадающем списке цветные прямоугольники он не смог нарисовать (хотя честно пытался, но все время что-то было не то).

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

Еще я на днях локально себе поставил опенсорсную нейронку Llama 3 (запускал через ollama). Код, который она генерила, тоже с ходу не заработал. Но еще у меня и комп для нее слабоват. Сначала ИИ отвечал относительно шустро, но если надо было исправить ошибку, то он начинал думать минут 10, и результат совсем не впечатлял. В общем, у меня не хватило терпения заставить эту нейронку написать рабочий код.

PS. Если кому интересно, то вот код, который в итоге получился у Copilot. Для получения этого кода понадобилось 7 запросов. И код, который получился у GigaChat . Сколько понадобилось запросов для получения этого кода не знаю, потому что история не сохранилась.

Для запуска этих исходников нужна библиотека wxPython.

Книга про Python. Прогресс написания за ноябрь

Закончился ноябрь, надо подвести месячный итог написания книги про Python.

За этот месяц написал три с половиной главы:

  • про исключения — 21 страница;
  • про запись и чтение файлов, и тут же про двоичные строки — 24 страницы.
  • про работу с файловой системой (модули os.path, shutil и pathlib) — 25 страниц.
  • часть главы про обработку параметров командной строки — пока это скромные 6 страниц.

Итого, за месяц написал 76 страниц. Это очень много для этих глав. Изначально на исключения я закладывал 10 страниц, и все, что касается работы с файлами должно было занимать 20 страниц.

Всего на сегодняшний день написано 402 страницы. Потом во время вычитки придется все это сокращать раза в два.

По планам в декабре хочу написать главы про регулярные выражения и unit-тесты. После этого, наконец, можно будет перейти к описанию библиотек NumPy, Matplotlib и Pandas.

OutWiker 4.0.0.946 alpha 3

OutWiker 4.0.0.946 alpha 3

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

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

OutWiker 4.0.0.944-alpha-2 с новым деревом заметок

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

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

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

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