Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

20070827

TiddlyWiki: персональный вики-блокнот

TiddlyWiki — это очень необычное приложение, это полноценная вики, умещающаяся в одном HTML файле. Да, в одном файле! При этом, если его открыть в почти любом современном браузере*, то появиться настоящая вики с довольно удобным интерфейсом. Можно вносить в неё любые изменения и сохранять их в этот же файл.

*С TiddlyWiki умеют работать Firefox и другие основанные на Gecko, а также Opera**, IE, Safari**, Camino. А вот в Konqueror не работает редактирование.


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

Однако проще один раз увидеть, чем сто раз услышать. Но ещё лучше попробовать (см. ниже). Посмотрите также на ссылки в конце этого поста, если интересно увидеть, как по-разному может выглядеть TiddlyWiki.

На мой взгляд, TiddlyWiki может быть удачной заменой таким приложениям как Tomboy или Zim. В прошлом я пользовался Tomboy, и TiddlyWiki удовлетворяет меня гораздо больше: она быстрее и отзывчивее, она кроссплатформенна, набор заметок и навигация по ним удобнее, и в добавок файл TiddlyWiki всегда можно выложить в веб :)

Ещё одно возможное применение: ведение дневника-блога. Этому помогает функция датированных записей и встроенная поддержка RSS.

Преимущества TiddlyWiki

Итак, я вижу следующие преимущества TiddlyWiki:
  • Переносимость. Ведь все данные и сама программа находятся в одном файле. Его можно поместить на флэшку и иметь доступ к своим записям где бы вы ни оказались. Это большое преимущество перед традиционными программами для ведения записей, которые требуют установки.
  • Кроссплатформенность. Для работы с ней достаточно браузера. И неважно, какая операционная система у вас стоит.
  • Быстрый запуск. Ведь веб-браузер и так почти всегда открыт :) Для приложения, предназначенного для коротких быстрых записей это существенно.
  • Удобный ввод данных. Богатый набор средств разметки. Ненавязчивый интерфейс.
  • Удобство навигации по записям: поиск, теги, возможность выбирать какие записи видны на экране.
  • Формат данных максимально приближен к plain-text. При желании всегда можно отредактировать в обычном текстовом редакторе. При этом, благодаря вики-разметке, записи остаются наглядными и читаемыми.
  • TiddlyWiki является свободным программным обеспечением с очень активным сообществом. Действительно, попробовав, наверное, нельзя в эту программку не влюбиться. Как результат: есть много модов, плагинов и тому подобных вещей.

С чего начать

Инструкция по «установке» следующая:
  1. Пойти на http://www.tiddlywiki.com/#DownloadSoftware и скачать пустой файл вики.
  2. (Необязательно) Пойти на http://glebsite.ru/tw/ и следуя приведённым там инструкциям установить модуль русификаци написанный Глебом Тржемецким (спасибо!)
  3. (Необязательно) По аналогии с установкой модуля русификации можно установить другие модули с других TW-сайтов, например, панельку инструментов wikibar c http://aiddlywiki.sourceforge.net/wikibar_demo_2.html
Для тех, кому лень проделывать все эти шаги самостоятельно, я выложил уже готовые русифицированные шаблоны TiddlyWiki. Они дополнены также небольшой справкой по вики-разметке. Мне её не хватало в умолчальном «пустом» шаблоне. Поэтому для близких и друзей я её написал.

Вот мои шаблоны:
empty-ru.html — базовая TW + русификация + ReminderMacros + справка по вики-разметке
empty-ru-wikibar.html — базовая TW + русификация + ReminderMacros + справка по вики-разметке + wikibar

Впрочем, если времени с момента написания этого поста (август 2007) до момента, когда вы его читаете, прошло немало, лучше пойти на www.tiddlywiki.com и взять последнюю версию оттуда. Кстати, там же есть и инструкция как обновлять код TW с сохранением данных.

Внимание! При сохранении важно использовать вариант «Сохранить ссылку как...» в контекстном меню при правом щелчке мыши по ссылке. Другие варианты могут не работать. Вариант wget URL тоже приемлим.

После этого сохранённый файл можно открывать в браузере и начинать редактировать. Первая запись, которая будет открыта называется GettingStarted. В ней можно задать своё имя и перейти к специальным записям SiteTitle и SiteSubtitle задающим название вашей вики. Ну а дальше на ваше усмотрение. Полезно также заглянуть в раздел «Установки» («Options») справа. После сеанса редактирования вики не забудьте нажать ссылку «Сохранить изменения» или ALT+S (впрочем, браузер вам напомнит, если что). При попытке сохранить файл на диск, браузер вероятно попросит разрешения на диск писать (обычно у него такого права нет, так что это нормально).

При записи создаётся файл с резервной копией (предыдущей версией). Обычно она отличается от имени файла вики добавление большого количества цифр в конце. Я, чтобы появление этих файлов не отвлекало, поставил в настройках сохранять резервные копии в каталог .mywiki.backup.

Миграция записей Tomboy

До TiddlyWiki я пользовался (пытался пользоваться) Tomboy. Милое приложение, только несколько медленное. И не всегда было легко добиться, чтобы создавалась нужная ссылка. И как-то совсем перестало работать, потому что во время одного из distupgrade-ов сломалось Mono, точнее что-то, от чего оно где-то глубоко внутри зависит... В общем, как и с некоторыми другими Mono-приложениями*, Tomboy у меня был, а теперь его нет. Однако после него остались записи.

*В числе других Mono-приложений, от которых я отказался: F-Spot (хотя я однажды и дождался, когда он проиндексирует мой фотоархив, работал медленно, пользоваться тегами было неудобно, а функции редактирования в нём меня после Picasa только расстраивали) и Beagle (поиск это конечно здорово, но не очень-то быстро, и самое главное, что ищет далеко не всё, а это делает его несколько бесполезным). Так что из всех Mono-приложений пользуюсь только autopano-sift.

Для конвертации записей Tomboy в TiddlyWiki я написал маленький скрипт tomboy2tiddly, описание и инструкции к нему здесь. Скрипт сохраняет гиперссылки в записях Tomboy и преобразует их в вики-ссылки, но все выделения шрифтом игнорируются. Для работы скрипта нужен xmlstarlet и python.

Скорость работы

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

Я провёл следующий эксперимент: взял свою вики с несколькими десятками записей, открыл в vim, и вставил 1001 короткую запись со случайным названием и содержимым (формат записи довольно простой). После этого полученный файл, который увеличился примерно на 100 кБ, открыл в браузере. Результат такой: время открытия файла увеличилось, файл открывался около 2 секунд, но скорость работы с вики осталась субъективно такой же (мои записи среди этой кучи мусора открывались так же быстро и изменение-сохранение записей никак не пострадало). Надо отметить, что генерировались эти 1001 запись куда дольше ;)

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

Ссылки по теме

В заключение хочу дать ссылки на сайты с разными расширениями для TiddlyWiki и её модами (большинство из них сделаны, кстати, на самой TW):
  • Список разных модификаций и вариантов есть как обычно на Wikipedia
  • mptw.tiddlyspot.com MonkeyPirateTiddlyWiki, популярная модификация с изменённой системой тегов
  • www.tiddlytools.com большой архив расширений, тем и прочего добра
  • tw.lewcid.org ещё один репозиторий с расширениями для TW
  • tiddlywiki.abego-software.de и ещё один архив...
  • tiddlythemes.com архив тем для TiddlyWiki
Есть также возможность пользоваться TiddlyWiki онлайн, для этого есть как минимум два сервиса. В этом случае вики находится на сервере, но её всегда можно скачать на локальный диск, и потом синхронизировать обратно:
Стоит также отдельно отметить сайт сообщества разработчиков www.tiddlywiki.org и очень активную гугл-группу, посвящённую обсуждению TiddlyWiki.

Приятных записей!

Обновления: упомянул о поддержке RSS и поставил ссылку на гугл-группу.

Обновление 7.9.2007
**В комментариях отметили, что в Opera 9 не работает сохранение. Я установил Оперу, попробовал — действительно. Впрочем, в Google-группе TiddlyWiki объясняется в чём дело (Javascript в Opera в принципе не может писать на локальный жёсткий диск) и предложено решение проблемы. Сохранять TiddlyWiki в Opera (и Safari) можно с помощью Java-апплета TiddlySaver, помещённого туда же, где находится файл TiddlyWiki. Конечно, в этом случае требуется, чтобы в Opera была включена Java, а в ~/.java.policy было добавлено разрешение на запись файлов
grant codeBase "file:${user.home}/text/wiki/*" {
permission java.io.FilePermission "${user.home}${/}text${/}wiki${/}*", "read,write";
};

32 коммент.:

  1. Статья классная, само решение очень оригинально. Намного лучше sticky notes - есть тэги и ссылки, и томбоя - не тащит за собой моно.

    А можно немного уточнить:
    s/и другие основанные на Gecko, Opera, IE, Safari, Camino/и другие основанные на Gecko, а так же Opera, IE, Safari, Camino

    А то получается, что на Gecko основаны и Опера, и Сафари, и Камино, и, не к ночи будь помянут, ИЕ :-)

    ОтветитьУдалить
  2. Да, сейчас поправлю. Спасибо!

    ОтветитьУдалить
  3. sergsenna31/8/07 11:20

    Здорово, но у меня Opera (9.23) сохранять отредактированный файл отказывается напрочь...

    ОтветитьУдалить
  4. Анонимный3/9/07 17:03

    я вообще не могу осилить как текст вводить :(

    ОтветитьУдалить
  5. Анонимный3/9/07 17:07

    извените, погарячился ;)

    я просто его на сервер положил :)

    ОтветитьУдалить
  6. Да, когда TW лежит на сервере (доступ к ней по протоколу HTTP) — редактировать её нельзя.

    ОтветитьУдалить
  7. В Опере 9.22 открывается нормально, но новые записи не сохраняет :(

    ОтветитьУдалить
  8. Установил Opera, посмотрел, почему не сохраняет. В общем, Javascript в Opera в принципе не умеет писать на локальный жёсткий диск. В связи с этим, чтобы работать с TiddlyWiki в Opera в папку с вики нужно помещать также и Java-апплет TiddlySaver.jar, а в ~/.java.policy добавить ему разрешение на запись. В конце заметки я добавил короткое описание как это сделать.

    Спасибо за комментарии!

    ОтветитьУдалить
  9. попробовал, в Opera.9.23 не сохраняет файл. говорит, что
    browser not supported or pathname contains illegal characters.
    обидно то, что с какой-то из прошлых 9.х версий Opera-ы TiddlySaver работал :-(
    скажите пожалуйста, у кого-то 9.23 сохраняет файл на диск?

    ОтветитьУдалить
  10. Не сохраняет в Опере, чего я только не пробовала, следуя инструкциям и на Вашем сайте, здесь, и на оф. сайте программы.
    Ява установилась в E:\Program Files\Java
    Wiki-страница валяется на D:\Data\Wiki
    Подозреваю, что нужно как-то править пути, но не соображу как, ибо лох. :(
    Умоляю, дайте пояснения! Пожалуйста!!!

    ОтветитьУдалить
  11. Вот у Вас, например ->

    grant codeBase "file:${user.home}/text/wiki/*" {
    permission java.io.FilePermission "${user.home}${/}text${/}wiki${/}*", "read,write";
    };

    <- Что здесь значит user.home? А text? А wiki? Это же какие-то пути, насколько я поняла? И как внести свои? Не могли бы Вы показать на примере? Была бы очень, просто страшно Вам благодарна!

    ОтветитьУдалить
  12. Всем Оперовцам - самое время перейти на Firefox ;)

    ОтветитьУдалить
  13. ${user.home} означает домашний каталог пользователя. В GNU/Linux это обычно /home/loginname, он же обозначается тильдой (~), в WindowsXP это, видимо, C:\Documents and Settings\Имяпользователя (ну или примерно так).

    text и wiki означают лишь, что у меня на машине в домашнем каталоге есть подкаталог text, а в нём — подкаталог wiki. Именно там и лежит файл с TiddlyWiki. У вас он может лежать в другом месте. Соответсвенно, нужно взять полный путь к файлу и по образцу его в java.policy прописать. Тогда у Java-апплета появиться право на запись в указанный каталог. То есть запись TiddlyWiki в Opere будет работать.

    В случае, если апплет TiddlySaver.jar и файл с вики лежат в D:\Data\Wiki, в файл C:\Documents and Settings\your-user-name\.java.policy нужно поместить что-то вроде:

    grant codeBase "file:///D:/Data/Wiki/TiddlySaver.jar"
    { permission java.security.AllPermission; };

    Ну или поправить часть file:///D:/ — я не помню, как будет выглядеть URL доступа к файлам в Windows. Написано об этом здесь: http://www.tiddlywiki.com/#TiddlySaver (я уже давал ссылку в тексте заметки)

    ОтветитьУдалить
  14. Не, сё равно не получается!
    Интересно, что ЕДИНСТВЕННЫЙ файл java.policy лежит здесь -> E:\Program Files\Java\jre1.6.0_03\lib\security\
    Ни в каких E:\Documents and Settings\имя_юзера\ его не лежало изначально. А хоть я его туда и кинула - один чёрт, всё то же... :((

    ОтветитьУдалить
  15. Всем Оперовцам - самое время перейти на Firefox ;)

    А тебе уже сказали: Огнелис тормозной до жути. :)

    ОтветитьУдалить
  16. К сожалению, у меня нет под рукой компьютера с Windows и Opera. Поэтому проверить и написать пошаговую инструкцию я сейчас не могу. Вот если бы Вы пользовались GNU/Linux... Я бы смог Вам помочь.

    Хочу только заметить, что если следовать инструкции http://www.tiddlywiki.com/#TiddlySaver, файл должен называться «C:\Documents and Settings\your-user-name\.java.policy». Обратите внимание на точку в начале имени файла. Его, естественно, там вначале нет, и нужно создать.

    В целом, действительно, проще пользоваться Firefox, или хоть Internet Explorer, раз уж у Вас Windows. В любом из них вроде бы TiddlyWiki работает, не требуя костылей. Для того, чтобы попробовать — вам хватит. Если уж понравится и очень захочется пользоваться именно в Опере — тогда уже можно и повозиться.

    Кстати, можно заказать бесплатно :)

    ОтветитьУдалить
  17. Точка стоит в названии файла... :(
    Мне таки понравилась эта wiki... и я хочу её использовать... а IE - ацтой! а Firefox - фтопку! :(
    И очень, очень жаль, что у Вас нет под рукой Винды с Оперой... ищё более жаль, что я не работаю под Линуксом...
    Ах божетымой... шо ж робить-та... :((

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

    ОтветитьУдалить
  18. Есть в данной системе возможность хранения истории изменений? Например в других вики такое есть (в той же Wikipedia например). Или может какой то плагин есть для этого?

    ОтветитьУдалить
  19. 2Alex aka Andron:

    В TiddlyWiki есть возможность сохранять предыдущую версию файла перед записью изменений (Установки -> Сохранять резервные копии).

    Это не совсем «история изменений», но позволяет откатиться назад.

    Поскольку вики предназначена для индивидуального использования, то такой подход в общем-то приемлим.

    В самом файле с вики (а вся вики и есть один-то файл) — предыдущие изменения не хранятся.

    ОтветитьУдалить
  20. Я не понял как мне подключить плагин, чтобы реализовать например облако тегов?

    ОтветитьУдалить
  21. 2alex
    Я не знаю, о каком плагине Вы говорите. Обратитесь с этим вопросом к документации и разработчикам плагина.

    ОтветитьУдалить
  22. Нашел полезный плагин Calendar. Он позволяет добавить на страницу TiddlyWiki календарь, например на текущий месяц. Создается очень удобная возможность для навигации по записям. Но почему то не работает как ожидалось: запись в wiki предлагает создать только при клике на название месяца в календаре, а при клике на номер дня ничего не происходит :( Поиск записей работает точно также. Не силен в JavaScript, поэтому поправить как не знаю. Может кто то пробовал этот плагин и знает как сделать чтобы создавались записи при клике по дню в календаре?

    ОтветитьУдалить
  23. Вот кстати этот плагин http://www.tiddlytools.com/#CalendarPlugin

    ОтветитьУдалить
  24. А могли бы Вы объяснить, в чем проблема:
    открываю блокнот - разметка и шрифты сбиты, на панели запись "Ошибка в сценарии tabs. SyntaxError: Invalid regular expression". Причем такое - и во всех резервных копиях.

    Обычно работаю в Iceweasel, вчера под виндой открывала блокнот в FirefoxPortable.

    Буду очень благодарна за совет :)

    ОтветитьУдалить
  25. Уважаемая Елена!

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

    Алексу: спасибо за ссылку.

    ОтветитьУдалить
  26. Проблема, видимо, в шрифтах или кодировке (хотя и там, и там UTF-8), потому что в FirefoxPortable текст нормальный, а в Iceweasel - глючный и в самом блокноте, и в резервных копиях.

    ОтветитьУдалить
  27. Что делать если при запросе на запись в файловую систему я промахнулся и нажал "нет". Теперь говорит что не может сохранить файл. Где в firefox хранится эта настройка? Как исправить?

    ОтветитьУдалить
  28. Павлу:

    честно говорю: не знаю, подозреваю, где-то в about:config она есть, но где — не знаю.

    ОтветитьУдалить
  29. А кто-нибудь знает, как можно упростить перенос статей из Википедии в Тидлу. Не совсем совпадает форматирование, если копировать через буфер. Приходится чистить руками.
    За ранее, спасибо.

    ОтветитьУдалить
  30. Даниил,

    Разметка Тидли отличается от медиавики (википедии). Можно сделать одно из двух:

    1) импортировать с <a href="http://www.martinswiki.com/>http://www.martinswiki.com/</a> MediaWikiFormatterPlugin, который позволяет пользоваться википедийной разметкой в тидле

    2) или импортировать оттуда же MediaWikiAdaptorPlugin, который позволяет конвертировать заметки из одной вики в другую и обратно.

    Там же есть плагины для некоторых других вики-разметок.

    ОтветитьУдалить
  31. как ссылки делать и чтобы несколько записей блоком были

    ОтветитьУдалить
  32. Ссылки в двойных квадратных скобочках. [[Название статьи]] или [[тыц|Название статьи]]. Внешние: [[текст|http://example.com/]].

    Про блок вопрос не понял. Не знаю.

    ОтветитьУдалить