Новая статья «Как рисовать гистограммы в Matplotlib»
Продолжаю писать серию небольших статей про использование библиотеки Matplotlib, предназначенной для построения различных графиков на языке Python. Сегодня выложил статью Как рисовать гистограммы.
Приложение к сайту "Софт, исходники и фото"
Продолжаю писать серию небольших статей про использование библиотеки Matplotlib, предназначенной для построения различных графиков на языке Python. Сегодня выложил статью Как рисовать гистограммы.
Сегодня выложил новую нестабильную версию OutWiker под номером 1.9.0.772. В этой версии, наконец-то, появилось то, что я давно собирался сделать, но руки все не доходили, — проверка орфографии. На данный момент я реализовал еще не все возможности, связанные с проверкой орфографии, но главное, что она уже работает.
Недавно я писал про книгу о языке Go (он же Golang), а теперь у меня появился первый боевой опыт использования этого языка. Хотя написанная программа и небольшая, но она позволила пощупать некоторые особенности языка. В этом посте хочу рассказать про одну особенность Go, непривычную по сравнению с другими языками — это особенности расположения исходников, поскольку в Go вы должны организовывать по определенной структуре в определенных папках.
Если кому интересно, то программа, которую я писал на Go (и продолжаю ее доводить до ума) предназначена для выковыривания из Википедии списка улиц Москвы с попыткой получить по ним информацию — округов и районов, где эти улицы проходят. Поскольку я периодически участвую в городских ориентированиях, то получение полного списка улиц, включая недавние переименования, для меня больной вопрос. Оказалось, что список улиц Москвы в Википедии достаточно оперативно обновляется, и там уже перечислены улицы, которых еще нет не то что в атласах (с атласами Москвы в последнее время вообще беда), но и на других официальных сайтах со списками улиц. К слову, на OpenStreetMap и Яндекс.Картах улицы тоже появляются достаточно оперативно, но там я не нашел способа получения списка улиц по округам и районам. Если кто подскажет, где можно найти полный такой список, буду благодарен.
Исходники программы streetlist лежат на github, там же есть и подробное описание программы с примерами ее использования.
Но вернемся к Go. Для тех, кто еще не слышал об этом языке, скажу, что это компилируемый язык со статической типизацией. Программы, написанные на языке Go являются полностью самостоятельными и не требуют от пользователя установки каких-то дополнительных библиотек, но при этом среда выполнения Go включает в себя сборщик мусора с подсчетом ссылок. В самом языке есть такое понятие как указатели, но они все обрабатываются сборщиком мусора, а арифметика с указателями не поддерживается. Язык является объектно-ориентированным, но объектная ориентация его несколько непривычная. Одной из особенностей языка являются так называемые горутины (gorutines) — что-то вроде легковесных потоков, которые можно делать в большом количестве, не опасаясь, что при этом просядет производительность, переносить их на реальные потоки будет среда выполнения Go.
Среди пожеланий пользователей, которые пишут в комментариях или на почту, несколько раз проскакивало пожелание сделать более удобный ввод таблиц. В данный момент небольшие таблицы на викистраницах можно вводить, используя нотацию вида ||…||…||. Я согласен, что это не самый удобный способ, если содержимое ячеек большое или содержит большое количество строк. В принципе, на викистраницах всегда можно использовать теги HTML, в том числе и для создания страниц. Я не считаю, что викинотация должна полностью повторять HTML, она должна быть более простой.
И вот хочется узнать у вас, что нужно сделать в OutWiker, чтобы редактирование таблиц было более удобно? Как вы себе это представляете?
Как вариант, можно реализовать команды для создания таблиц того же pmWiki, в какой-то мере это улучшит ситуацию. Тогда создание страниц будет выглядеть примерно так (код взят по вышеуказанной ссылке):
(:table border=1:)
(:cell:) a1
(:cell:) b1
(:cell:) c1
(:cell:) d1
(:cellnr:) a2
(:cell:) b2
(:cell:) c2
(:cell:) d2
(:tableend:)
Или может быть добавить диалог, в котором можно задать количество строк и столбцов, а потом будет создана заготовка для таблицы? Но редактирование существующих таблиц это не облегчит.
В общем, интересует ваше мнение.
Написал новую статью про библиотеку Fabric для Python, которая позволяет легко автоматизировать рутинные задачи как при работе на локальном компьютере, так и на удаленном сервере. С помощью Fabric можно создавать резервные копии, развертывать веб-приложения и даже использовать его для сборки программ. Преимущество Fabric в том, что эта библиотека не будет требовать от вас изучения нового синтаксиса, все скрипты пишутся на Python.
Ссылка на статью — Основы использования Fabric.
И еще пара новостей про OutWiker. Во-первых, я выложил очередную «нестабильную» версию OutWiker под номером 1.9.0.770. Изменения в этой версии связаны с добавлением новых настроек.
Сегодня выложил новую версию плагина Source для OutWiker, который позволяет раскрашивать тексты программ на викистранице. В этой версии была исправлена давняя проблема, которая могла проявляться под Linux в случае, если у вас в системе была установлена библиотека pygments, которая также входит в состав плагина. Ошибка проявлялась в том, что в этом случае из плагина пропадала поддержка синтаксиса языка 1С, могла ли эта ошибка привести к более серьезным проблемам в случае наличия в системе очень старой версии pygments — вопрос открытый.
Последствия этой ошибки могли увидеть не так много пользователей, но мне хочется описать механизм, который приводил к этой ошибке, очень уж интересная получилась ситуация.
Выход очередной нестабильной версии OutWiker (1.9.0.768) немного затянулся, но это не значит, что я ничего не делал все это время. В данной версии основная работа была направлена на расширение возможностей для плагинов. Например, теперь плагины имеют больше точек подключения для изменения создаваемого кода HTML, который видят пользователи. Кроме того, была добавлена возможность перехвата плагинами клика по ссылкам на страницах, таким образом появилась возможность с помощью плагинов добавлять ссылки произвольного типа (с произвольным протоколом, которые будут особым образом обрабатываться плагинами). Основные силы в последний месяц были направлены на то, чтобы в полной мере использовать эту возможность.
В ранних комментариях просили добавить возможность, чтобы при клике по ссылке запускалась указанная программа с передачей ей параметров. Эта задача хорошо вписывалась в ту возможность, которую я описал выше, и более того, уже есть плагин ExternalTools, который мог бы включать в себя не только открытие текста страницы во внешнем редакторе, но и запуск программ с викистраниц. Новые возможности ExternalTools, которые описаны ниже, будут работать только с OutWiker 1.9.0.768 (и, разумеется, с последующими версиями). Для пользователей предыдущих версий ничего не изменится, плагин продолжит работать.
Итак, что добавилось в ExternalTools 1.3? Теперь этот плагин добавляет команду (:exec:), которая в режиме «Просмотр» преобразуется в ссылку, при клике на которую запускается одна или несколько программ.
Для OutWiker’а появился новый плагин. Виталий Кошура (его страница на github) прислал плагин AutoRenamer для автоматического переименования заметок по первой строке. То есть страница всегда будет называться так, как выглядит первая строка в заметке, при этом викинотация из названия удаляется. Что-то подобное до этого я видел в некоторых программах для ведения заметок под Android, теперь такого же поведения можно добиться и в OutWiker.
Этот плагин может работать в двух режимах:
Все замечания и пожелания можете писать автору в Issue Tracker.
В последнее время все больше стало появляться статей про язык программирования Go, который разрабатывается в стенах Google. Чтобы посмотреть, что это за зверь, прочитал книгу Марка Саммерфильда (Mark Summerfield) «Programming in Go. Creation Application for the 21th Century» из серии Develorep’s Library. Когда я писал этот пост, узнал, что эта книга в 2013 году была издана и на русском языке, но я читал ее английскую версию.
Прежде чем писать про книгу, расскажу про особенности языка Go. Я не буду давать оценки тому или иному решению, который предлагает язык, поскольку пока не напишешь на каком-нибудь языке серьезную программу, глупо его критиковать — каждый язык программирования требует настройки на «свою волну». Я постараюсь все особенности языка описать на пальцах, используя минимум кода.