tengu_crow: (Default)
tengu_crow ([personal profile] tengu_crow) wrote2009-01-08 01:04 pm

Аффигительно Большой Текстовый Файл - 2

По просьбе сэра ollycat продолжаю зарисовки по поводу Аффигительно Большого Текстового файла.

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

Дисклеймер2: у меня уже сложилась терминология и такой большой файл с заметками я часто называю "блогом". В принципе, по большому счету, это и есть блог. Но оффлайновый :)



Главный файл разбит так:



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

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

Есть простенький скрипт на Питоне, который "выкусывает" из общего блога свежие адреса-транспорт-задачи-конспекты. Все это богатство парсится с помощью makeztxt (он понимает мою структуру разделов и автоматом добавляет закладки на все заголовки) в .pdb-файл и заливается в палм. Самое приятное, что все это повешено на один ярлык и мне, чтобы залить в палм свежую версию нужно сделать только один двойной клик.

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

Идею БыстрыхСлов я утащил из wiki-систем. Я использую их как закладки для быстрых прыжков на нужные мне разделы. Очень удобно поставить в нужном разделе метку типа "СписокМоихПроектов", а потом продублировать это слово в содержании.

Это упрощает навигацию в любом редакторе - можно либо выделить БыстроеСлово или название раздела в Содержании и нажать Ctrl+F и вставив его в окно поиска прыгнуть к нужному месту в файле. Умные текстовые редакторы типа AkelPad определяют сами - выделен какой-то текст или нет и по нажатию Ctrl+F сами вставляют его в окно поиска. В Vim все реализовано очень просто - нужно встать курсором на слово и нажать "*" - и сразу прыгаешь к следующему вхождению такого слова.

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

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

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

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

Таймстампы, разделяющие записи выполняют сразу несколько функций. Они отделяют одну запись от другой (очень удобно писать короткими мыслями, разделяя их таймстампами времени - 13:01, 14:03 и так далее) и попутно связывают записи в одну ленту-поток в которой все идет последовательно и все события связаны друг с другом.

Тамстамп для дневниковой записи обычно выглядит так:

20090108 blog example3
«20090108 blog example3»

Видно, что кроме таймстампа в строке может присутствовать тэг. Тэгом считается все, что заключено в "крылышки". Эти тэги подсвечиваются желтым цветом. Таймстампы - синим. Мне удобно помечать таким макаром пробежки (например, при желании можно с помощью grep'а создать список дней, когда я бегал и развернуть его в график, но чаще я просто смотрю сколько и когда я бегал и на основании этого планирую следующие пробежки). Кроме того ими удобно помечать разнообразные идеи и фичи:

=фича=
если нет времени сортировать поступающий поток инфы - кинуть в дневник, а позже - распределить туда, куда нужно
==


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


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

Таймстампы проставляются автоматом. Подробности будут в следующей серии :)

[identity profile] satinenok.livejournal.com 2009-01-08 06:28 pm (UTC)(link)
аццки

[identity profile] tengu-crow.livejournal.com 2009-01-11 01:54 pm (UTC)(link)
уточняй :) или это общее мнение? :)))

[identity profile] satinenok.livejournal.com 2009-01-11 01:56 pm (UTC)(link)
это общее впечатление

[identity profile] tengu-crow.livejournal.com 2009-01-11 02:05 pm (UTC)(link)
(чешет затылок) :)

[identity profile] phoenix-art.livejournal.com 2009-01-08 08:46 pm (UTC)(link)
Тэнгу, а Тэнгу, а вот вопрос не по теме:
ты когда-нить слышал про прогу по имени lateX ? что-то вроде текстового редактора

[identity profile] ollycat (from livejournal.com) 2009-01-08 10:15 pm (UTC)(link)
Латекс - классная вещь. Жаль ни как не возьмусь его освоить... Первый раз, когда увидел документ рспечатанный из латекса - просто проперся, на столько классно это выглядит.

[identity profile] tengu-crow.livejournal.com 2009-01-09 10:22 am (UTC)(link)
Пишу в нем свои методички :)

Это не текстовый редактор :) Это немного интереснее. Говоря очень грубо - это текстовый файл с особой разметкой в тексте (ну... как html), который скармливается особому софту и на выходе получается красивый pdf или gs - файл. Прелесть в том, что такой текстовой разметкой можно задать очень многое - есть расширения для нот и шахмат, например.

[identity profile] satinenok.livejournal.com 2009-01-10 06:50 pm (UTC)(link)
я пыталась поковырять, но поняла, что такое интересное дело меня слишком затянет, и, возможно, в ущерб диплому, поэтому оставила на время (надеюсь)
на обычные текстовые редакторы похож очень отдаленно, текст в нем, скорее, программируется :)
но результат забавный и повозиться тоже есть с чем, пока не расковыряешь (вставка рисунков например)
но с хорошим руководством не так страшен черт

[identity profile] ollycat (from livejournal.com) 2009-01-08 09:56 pm (UTC)(link)
О, спасибочки. :) Общие идеи ясны. Статья про хаос, к стати очень понравилась. Всегда этим пользовался, только не думал как-то о научной подоплеке, все как-то само собой получалось. ;)

[identity profile] tengu-crow.livejournal.com 2009-01-11 01:55 pm (UTC)(link)
Ага. Я тоже многое открыл заново :)))

Пока писал этот пост - сомневался стоит ли рассказывать так подробно, но мне кажется, что тогда будет понятно зачем скрипты и прочее :)

[identity profile] darkheavy.livejournal.com 2009-01-09 04:51 am (UTC)(link)
про диктофон...
задумался...

[identity profile] tengu-crow.livejournal.com 2009-01-11 01:56 pm (UTC)(link)
сейчас у каждого плавера есть такой и в принципе интеграция с компом решает кучу проблем
но есть лопата - записи нужно разбирать и расшифровывать...
ну и
http://www.improvement.ru/zametki/osdict/

[identity profile] ollycat (from livejournal.com) 2009-01-11 02:13 pm (UTC)(link)
Опаньки... Родилась идея. :) Надо обдумать. Как оформится - напишу. ;)

[identity profile] tengu-crow.livejournal.com 2009-01-11 02:16 pm (UTC)(link)
Будем ждать :) С удовольствием почитаем :)

ЗЫ Оффтоповый вопрос. Если я задерживаюсь с комментами их появление можно отслеживать по OpenID? Т.е. в ЖЖ есть сервис, когда уведомление о новых комментах высылается почтой... а клиента OpenID ставит в известность о таком? :)

[identity profile] ollycat (from livejournal.com) 2009-01-11 09:21 pm (UTC)(link)
Не очень понял вопроса, но если ты имел в виду, получаю ли я уведомления о комментах, логинясь в ЖЖ по openid - то да, получаю. :)

[identity profile] ollycat (from livejournal.com) 2009-01-11 09:23 pm (UTC)(link)
Вообще логин в ЖЖ по openid довольно не плохо сделан. Практически ты получаешь ЖЖ аккаунт, только несколько урезанный: типа нельзя свои посты делать и еще что-то... А так почти полноценный аккаунт. :)

А если попробовать wiki?

[identity profile] shavluk.livejournal.com 2009-01-09 11:16 am (UTC)(link)
Есть еще http://ru.wikipedia.org/wiki/TiddlyWiki
Идея простая, единственный html-файл в котором можно изменять, удалять
Есть метки, оглавление, wiki-разметка. Наполнение при помощи браузера. Все очень просто

Re: А если попробовать wiki?

[identity profile] tengu-crow.livejournal.com 2009-01-11 02:04 pm (UTC)(link)
Пробовал и ТидлиВики и Викидпад. В принципе обе системы удобны, но мне не подходят:

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

примерно так. Но идея сама по себе имеет право на сущестование :))) Инструмент хороший и вообще.

Re: А если попробовать wiki?

[identity profile] eval-apply.livejournal.com 2009-05-12 10:48 am (UTC)(link)
В Викидпад (и MoinMoin) неудобно то, что для редактирования приходится переходить из режима просмотра отрендеренного (? - когда обработан язык разметки) текста и искать нужное место для редактирования.

Классная, на мой взгляд, wiki - Zim Desktop Wiki. Минус - хранит записи не в единственном файле.

tengu_crow, может, глянете. В Ubuntu ставится из стандартного репозитория.

Хотел Вас спросить. Файл огромный, как долго сохраняется по Save?
Я обратил внимание для NoteCase, если файл большой и стоит автосохранение каждые 30 секунд, то сохранение настолько медленно, что если оно в момент ввода текста с клавиатуры, то успеваешь пропустить несколько букв.

Re: А если попробовать wiki?

[identity profile] tengu-crow.livejournal.com 2009-05-12 11:33 am (UTC)(link)
>tengu_crow, может, глянете
зачем? у меня хорошо работает Vim и я до этого момента им более чем доволен :) причины по которым у меня не приживаются wiki-системы - я уже описывал.

>Файл огромный, как долго сохраняется по Save?
С NoteCase я дела не имел - ничего определенного сказать не могу. Vim быстр даже на очень больших файлах.

Re: А если попробовать wiki?

[identity profile] eval-apply.livejournal.com 2009-05-13 07:57 am (UTC)(link)
Вот еще хотел спросить.
Если содержание большое и иерархичное, есть ли возможность свернуть заголовки разделов второго уровня, оставить видимыми заголовки только первого, основные разделы?
Как? Фолдинг?

В Tree-Like органайзерах можно разворачивать нужные и сворачивать ненужные узлы дерева иерархии для удобства работы. Меняя таким образом видимое подмножество разделов.

Есть ли что-нибудь подобное у вас для работы с ОБф?
Как Вы решаете все возрастающую сложность все время развернутого оглавления?

Спасибо!

[identity profile] vjoiller.livejournal.com 2009-01-10 01:21 am (UTC)(link)
Ух, мегареспектище тебе :) Займусь изучением сей чудо-технологии на выходных :)

[identity profile] tengu-crow.livejournal.com 2009-01-11 01:57 pm (UTC)(link)
О, еще кому-то это интересно :) А что именно? Вим или систему Большого Файла? :)

[identity profile] jj-shaman.livejournal.com 2009-01-25 08:21 pm (UTC)(link)
Ты вим как изучал? вимтутор запускал?

[identity profile] tengu-crow.livejournal.com 2009-01-26 11:23 pm (UTC)(link)
в том числе и вимтутор

[identity profile] tengu-crow.livejournal.com 2009-01-27 05:43 pm (UTC)(link)
Немного поразмыслив вспомнил, что после вимтутора я изучал его по шпаргалке:
http://www.gentoo.org/doc/ru/vi-guide.xml
Чудный такой мануал - я как увидел - понял - Vim - это мое :)))

Ну и для комплекта:
http://fantaseour.livejournal.com/43907.html

[identity profile] eval-apply.livejournal.com 2009-05-06 10:33 am (UTC)(link)
А вот если emacs? Как он, совсем не годится?

[identity profile] tengu-crow.livejournal.com 2009-05-06 10:56 am (UTC)(link)
Не знаю. Не пробовал. Возможно - годится. Многие хвалят.

Мне не нравится за большой вес, изобилие неинтуитивных клавиш - в общем после vim я туда не хочу :)

Синхронизация из нескольких источников

[identity profile] eval-apply.livejournal.com 2009-04-24 03:01 pm (UTC)(link)
Здравствуйте!
Интересная идея, давно ищу.
Есть и у меня соображения. Если интересно, напишу.

У меня основной вопрос: допустим, у вас несколько компьютеров: на работе, дома, нетбук или КПК для поездок. Как синхронизировать записи в них всех, как иметь идентичный файл на всех компьютерах?
(Посредством флешки и/или FTP, хотя кое-где может не быть инета)

Можно это как-то несложно и австоматически осуществить?

Re: Синхронизация из нескольких источников

[identity profile] tengu-crow.livejournal.com 2009-04-24 03:34 pm (UTC)(link)
В плане несложности - все зависит от вкусов и привычности. Я использую SVN - она же Subversion. Если вкратце - на домашней машине крутится репозитарий. С которым можно синхронизировать рабочии копии (которых может быть сколько угодно). Если система при синхронизации может произвести слияние того, что хранится на сервере с рабочей копией - она это делает, если не может (редко, но случается) - она пишет что возник конфликт версий и предоставляет пользователю решить его самому. Плюс все бонусы вроде истории изменения файлов, системы слежения за версиями и пр и пр.

Общая схема такая:

1. Организовать сервер. Залить на него исходные файлы.

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

3. В любой рабочей копии можно работать. Чтобы сохранить изменения файлов в репозитарий - отдать команду - svn commit - и посмотреть как система сольет свежие версии файлов на сервер. Чтобы получить обновленные файлы - svn update.

Если содержание большое и иерархичное

[identity profile] eval-apply.livejournal.com 2009-05-19 10:58 am (UTC)(link)
Повторюсь, сорри.
Если содержание большое и иерархичное, есть ли возможность свернуть заголовки разделов второго уровня, оставить видимыми заголовки только первого, основные разделы?
Как? Фолдинг?

В Tree-Like органайзерах можно разворачивать нужные и сворачивать ненужные узлы дерева иерархии для удобства работы. Меняя таким образом видимое подмножество разделов.

Есть ли что-нибудь подобное у вас для работы с ОБф?
Как Вы решаете все возрастающую сложность все время развернутого оглавления?

И каким скриптом формируете оглавление и экспортируете в freemind?

Спасибо!

Re: Если содержание большое и иерархичное

[identity profile] tengu-crow.livejournal.com 2009-05-20 06:27 am (UTC)(link)
Quote:
Как? Фолдинг?


Да. Фолдинг. В тексте я приводил ссылки на статьи где это подробно и с примерами описано.

Про сложность тоже писал.

Про скрипты - еще раз - они еще не выкладывались - как только приведу в порядок - выложу.

[identity profile] altutov.livejournal.com 2009-08-29 07:45 am (UTC)(link)
Спасибо за отличную статью, давно хотелось сделать и себе нечто подобное.
Появился вопросик: можно ли как то реализавать отображение популярности всех тегов АБТФ основыаясь на их количестве, непосредственно внутри самого vim-а?

[identity profile] tengu-crow.livejournal.com 2009-09-01 09:32 am (UTC)(link)
Теги в АБТФ - это отдельная больная тема :) Я пока еще обдумываю что с ними делать :) В принципе такая штука вполне реальна - даже средствами самого Vim'а, но уже на уровне скриптов.

Теги в АБТФ (tengu_crow: Аффигительно Большой Текстовый Фай

[identity profile] eval-apply.livejournal.com 2009-09-02 09:41 am (UTC)(link)
Я сейчас подумал файлах mailbox ThunderBird:
Inbox.msf 9 Мб
Inbox 159 Мб
Оба текстовые, Inbox.msf, думаю, индекс, содержит:

//
< <(a=c)> // (f=iso-8859-1)
(B8=onlineSize)(80=ns:msg:db:row:scope:msgs:all)(81=subject)(82=sender)
(83=message-id)(84=references)(85=recipients)(86=date)(87=size)
...
<(12769=923de07)(12768=4a84102d)(80=1)>
[2400:m(^9C^12769)(^8F^12769)(^91^12768)(^92=1)(^93=1)]
...

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

Re: Теги в АБТФ (tengu_crow: Аффигительно Большой Текстовый Ф

[identity profile] tengu-crow.livejournal.com 2009-09-07 10:09 am (UTC)(link)
Тоже вариант, кстати. Я думал примерно в том же направлении. Дойдут руки - вывешу заметку из бумажного блокнота.

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

Re: Теги в АБТФ (tengu_crow: Аффигительно Большой Текстовый Ф

[identity profile] ibnteo.livejournal.com 2010-02-18 01:29 pm (UTC)(link)
Можно расширить язык поиска по тегам, допустим некоторые теги обозначать как обязательные во всех записях, некоторые как желательные (т.е. если его нет, но подходит по другим тегам, то оставляем), и исключающие. Можно обозначать как "тег1 +тег2 -тег3", где первый желательный, второй обязательный, а третий исключает этот тэг из поиска. Конечно сочетание первого и второго тегов бессмысленны, т.к. первый тег не будет влиять на результат поиска в этом случае. Или можно набор обязательных тегов заключать в кавычки.

Re: Теги в АБТФ (tengu_crow: Аффигительно Большой Текстовый Ф

[identity profile] tengu-crow.livejournal.com 2010-03-02 10:09 am (UTC)(link)
Угумс. Мне где-то так и мыслится. Я вот посмотрел на то, как это устроенно в wordpress'e и мне захотелось чего-нибудь в этом духе. То есть - становишься в записях на тег1, жмешь хоткей - получаешь текст1 со всеми записями с тегом1. В тексте1 становишься на тег2 (теги переходят вместе с записями), снова жмешь хоткей и получаешь текст12 отсортированный уже по тегу1 и тегу2 вместе етс. По идее такая система позволит быстро искать нужные записи создавая эдакую "сужающуюся воронку" (=вим =линки =разгрести :)

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