OutWiker 3.0.0.872 unstable

OutWiker 3.0.0.872 unstable

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

Сегодня выложил следующую нестабильную версию OutWiker под номером 3.0.0.872. В новой версии не много изменений, заметных пользователю. К таким изменениям можно отнести, пожалуй, только обновление немецкой локализации, теперь программа переведена на немецкий язык полностью, за что спасибо всем тем, кто участвовал в переводе на сайте crowdin.com. Если бы еще доделали украинский перевод, то было бы вообще здорово. Сейчас там недопереведено всего лишь 3% от общего количества строк.

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

Книга Джо Боулер «Безграничный разум»

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

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

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

Мысли по поводу хранения заметок

Задумался по поводу того, почему мне удобнее делать заметки по настройке софта, использованию программ через командную строку (git, Docker, Apache, команды в Linux) и т.п. в аналоговой тетрадке, а не в электронном виде. Вроде тот же OutWiker хорошо подходит для таких мелких записей, где можно все упорядочить и красиво оформить, а записи от руки всегда будут написаны небрежно, с исправлениями, попытками уместить текст на строке или странице. Пока я вижу такие причины:

  • Тетрадка работает независимо от компьютера и не занимает места на экране.
  • Оформление заметки в электронном виде подразумевает сразу ее аккуратное оформление, что отвлекает. В тетрадке же я записываю очередную команду для какой-нибудь программы (git, Docker), не отвлекаясь на то, куда поместить эту запись. Я часто их записываю на отдельные листочки, а потом когда-нибудь переношу в тетрадку.
  • Искать заметки в тетрадке иногда проще, если знаешь, где именно искать. Потому что тетрадку листаешь двумя руками 10 пальцами, а поиск заметки в программе мышкой — это аналог листания одним пальцем без возможности быстро просмотреть несколько страниц, не акцентируя внимание на каждой пролистанной странице. Конечно, искать по ключевым словам проще в электронном виде, если заранее не знаешь, где находится нужная запись. Но иногда проще искать в гугле, чем в локальном хранилище заметок.

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

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

Интересно, а вы как храните разные заметки? Далее пара фотографий, как аналоговые заметки выглядят у меня.

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

Вторая часть статьи про создание Python bindings с помощью SIP

Вторая часть статьи про создание Python bindings с помощью SIP

Как и обещал в прошлом посте, сегодня выложил вторую часть статьи, посвященной созданию Python-обвязок (bindings) с помощью утилиты SIP. Во второй части речь идет о создании обвязки для объектно-ориентированных библиотек, написанных на C++, в которых фигурируют классы.

Ссылка на статью — Создание Python-обвязки для библиотек, написанных на C/C++, с помощью SIP. Часть 2

Новая статья в разделе про Python

Новая статья в разделе про Python

Всем привет!
Python — замечательный язык программирования, но иногда приходится работать с библиотеками, которые написаны на других языках программирования. Обычно это бывает, потому сторонние библиотеки решают нужные вам задачи, и не хочется изобретать велосипед, реализую то же самое на Python. Либо в более редких случаях, когда производительность вашего приложения упирается в особенности языка Python (все-таки интерпретируемые языки по скорости не сравнятся с компилируемыми), и часть кода приходится писать на C или C++.

Для решения такой задачи — использования библиотек, написанных на C/C++, из Python-приложения существует много решений. Одно из них — SIP. Эта утилита изначально разрабатывалась для создания Python-обвязки над такой монстроидальной библиотекой как Qt (получившаяся обвязка — PyQt). Я написал большую статью в двух частях про использование основы использования SIP для создания Python-обвязок над библиотеками. Сегодня я выложил первую часть — Создание Python-обвязки для библиотек, написанных на C/C++, с помощью SIP. Часть 1.

Чуть позже выложу продолжение.

Доклад про оптимизацию методом роя частиц

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

По этой ссылке вы можете увидеть мой доклад (а заодно скачать презентацию), а также посмотреть обсуждение темы ввода новичков в проект (onboarding).

Видео своего доклада оставлю еще и здесь.

OutWiker 3.0.0.870 unstable

OutWiker 3.0.0.870 unstable

Давно не выкладывал новые версии OutWiker. Это было связано с тем, что на некоторое время я переключился на проект (optlib — библиотеку для оптимизации на языке Rust), а активно заниматься двумя проектами одновременно я не умею. Теперь я обратно переключился на OutWiker и подготовил новую нестабильную версию.

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

Optlib 0.3.0. Новая версия библиотеки для оптимизации на языке Rust

Optlib 0.3.0. Новая версия библиотеки для оптимизации на языке Rust

Как я уже писал, помимо проекта OutWiker, в последнее время я занялся проектом optlib, библиотекой на языке Rust с реализацией разных алгоритмов оптимизации. На данный момент в библиотеке реализованы генетический алгоритм и алгоритм роя частиц. На днях я выложил новую версию этой библиотеки под номером 0.3.0.

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

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

Книга Джейсона Шрейера «Кровь, пот и пиксели»

Если вы думаете, что разработчики игр только и делают, что развлекаются, играя в игры, которые создают, и мечтаете пойти работать в какую-нибудь геймдев-компанию, то обязательно почитайте книгу Джейсона Шрейера «Кровь, пот и пиксели. Обратная сторона индустрии видеоигр». Главный вопрос, который так или иначе проходит сквозь все главы книги звучит так: возможно ли создать игру без многомесячных авралов, работы по 12-14 часов в сутки и по выходным? Может быть кому-то это и удается, но только не тем компаниям, о которых идет речь в этой книге, а этот список, между прочим, включает в себя таких монстров индустрии как Blizzard, BioWare, CD Projekt Red и уже не существующая Lucas Arts.

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

Книга «Кровь, пот и пиксели» основана на интервью, взятых автором у создателей (программистов, дизайнеров, сценаристов) игр «Pillars of Eternity», «Uncharted 4», «Stardew Valley», «Diablo III», «Halo Wars» (не путать с «Halo»), «Dragon Age: Inquisition», «Shovel Knight», «Destiny», «The Witcher 3», «Star Wars 1313» (так и не вышедшая игра). До того, как мне попала в руки эта книга, я слышал только о нескольких играх из этого списка, поэтому перед чтением очередной главы шел на Youtube и смотрел ролик-другой, чтобы понять, что это за игра, о которой идет речь. Это очень сильно помогало в понимании того, о чем идет речь в книге. Если же вы фанат каких-то из перечисленных игр, то получите еще большее удовольствие, читая, в каких муках они рождались.

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

Нужно ли заставлять студентов учиться?

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

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

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

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

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

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