FBReader — чтение и допиливание

2015-07-05

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

Неудобств у этой софтины пока всплыло два.

Первое — она категорически не хочет открывать .fb2.zip файлы, считая их прерогативой CoolReader. К счастью, есть человек, который не поленился сделать костыль к этому, что сильно облегчило работу с системой.

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

Скажем Кутузов Лидии Ивченко выкачивается не как Ivchenko_Zhizn-zamechatelnyh-lyudey_1372_Kutuzov.335158.fb2.zip, а как целое дерево вложенных папок: <родная папка fbreader'а>/flibusta.net/b/335158.zip, что ужасно неудобно.

Моя система хранения книг опирается в первую очередь на файловую систему — осмысленные названия файлов и иерархия папок по которым эти файлы тасуются. Ничего более удобного пока нет и, скорее всего, не будет придумано в ближайшее время. Иерархия “папка-файл” выглядит скучновато в отличие от всяческих all-inside хранилищ типа Calibre или той же встроенной библиотеки FBReader, зато надежна, минимальна по занимаемому месту, вообще не требует стороннего софта для упорядочивания, хорошо упорядочивается дельта-итерациями (тема отдельного разговора) и — как я начинаю понимать — нейрологически обоснованна (очень рекомендую такую книгу, как Daniel J. Levitin “The Organized Mind Thinking Straight in the Age of Information Overload” — написано хорошо, не заумно, без утомляющего выпендрежа и по делу).

Поэтому 335158.zip меня не устраивал категорически, хотя сам OPDS-доступ к сетевой библиотеке (т.е. скачивание книги через FBReader) оказался вполне удобным. Первым делом я попробовал переименовывать файлы вручную и раскладывать их по своим папкам — меня хватило файла на два.

К счастью, быстро выяснилось, что внутри у скачанного 335158.zip лежит вполне приличный по названию Ivchenko_Zhizn-zamechatelnyh-lyudey_1372_Kutuzov.335158.fb2 — дальше дело заключалось в написании простенького скрипта:

#!/bin/bash
# основная идея избавиться от закачки безымянных файлов с флибусты

# находит и раззиповывает в корень файлы в каталогах
find . -type f -name "*.fb2.zip" -exec unzip {} \;

Простенький однострочник на самом деле — find спускается вниз по дереву папок, находит файлы (-type f), которые заканчиваются на .fb2.zip (-name "*.fb2.zip") и запускает unzip, который над ними операцию распаковки (-exec unzip {} \; — вместо {} подставляется имя найденного файла). Разумеется, чтобы это работало, в системе должен быть установлен unzip (у меня он стоит по умолчанию — если его нет надо сделать что-нибудь типа sudo apt-get install unzip)

Этот файл (unzipper.sh) был положен в корень (то, что выше названо <родная папка fbreader'а>) и — дррррр! — тридцать файлов, которые к тому времени скопились в дереве папок, оказались найдены, раззипованы и аккуратно сложены в папке со скриптом.

На этом можно было бы остановиться — FBReader в принципе читает и раззипованный .fb2, но почему бы не упаковать все назад в зип? Для этого нужен примерно такой однострочник:

find . -type f -name '*.fb2' -exec zip '{}'.zip '{}' \;

Находим файлы, которые оканчиваются на .fb2 и зипуем их. -exec zip '{}'.zip '{}' \; выполнит операцию zip (он тоже должен быть в системе — sudo apt-get install zip) и подставит в нее найденные название файла ({}) и имя новосоздаваемого архива ({}.zip — старое имя + расширение .zip).

Итого:

#!/bin/bash
# основная идея избавиться от закачки безымянных файлов с флибусты

# находит и раззиповывает в корень файлы в каталогах
find . -type f -name "*.fb2.zip" -exec unzip {} \;

# зипует их обратно
find . -type f -name '*.fb2' -print -exec zip '{}'.zip '{}' \;

Можно было бы написать еще и автоматическое удаление ненужных файлов — но я предпочитаю делать это руками, на случай если что-то пойдет не так.


О свободных форматах, авторах и чтении

2015-05-28

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

Чтобы читать что-то в pdf-е в наше просвещенное время есть всего несколько способов — можно распечатать, можно читать с большого монитора (т.е. с десктопа или ноута), можно купить лопатообразный планшет формата A4. Вот скажите, осталось хоть какое-нибудь значимое количество людей, которые будут так делать? Нет, отдельные эстеты, которые любят и могут себе позволить напечатать 300 страниц руководства по прикладному кролиководству на островах Зеленого мыса, конечно есть. Например, того же Варшавского я распечатываю для работы с карандашом в руках — но это для работы и по работе.

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

В одном известном мне случае (пальцем тыкать не буду, но случай был реальным) читатель, решил пожаловаться на то, что pdf с телефона читать неудобно и скромно попросил чего-нибудь типа epub. В ответ «для более удобного чтения» было запилено два мега-приложения (под Ойфон и под Ондроед), чтобы они стояли на телефоне пользователя… и грузили внутрь себя pdf. Грузили pdf внутрь себя, Карл!

Поэтому — если воля судьбы, мироздания и всего-всего-всего сделала тебя автором — почему бы не выложить книгу в каком-нибудь нормальном формате, который легко конвертируется, хорошо читается и малой кровью ложится в публичную библиотеку? Если совсем нет навыков — можно использовать чистый .txt или markdown. Если текст технический и с формулами — TeX. Если хочется готовую книгу — epub, fb2, или на очень-очень-очень худой конец — mobi? Хочется pdf, «шоб как у взрослых бумажных книг»? Выложи рядом и .epub и .pdf Будь мужиком — бери пример с Википедии или PubMed’а, которые сейчас делают именно так.


Чтение электронных книг — 2.5

2015-02-19

или «Dropsync не нужен»

В предыдущей серии ваш покорный слуга описывал свою систему, в которой чтение и архивация небольших заметок (в противовес чтению «больших книг» и книг, сгенерированных из собственных заметок) опирается на .epub и .maff форматы (по сути — зипованные .html) и творческое использование dropbox. Некоторое время назад я отказался от dropsync’а в пользу синхронизации через usb с помощью Unison. Причины, технические подробности, плюсы и минусы перечислены в предыдущей статье.

Вынужденное изгнание и смартфон меняют стереотипы. Смартфон, как «девайс в том числе для чтения» постепенно перетягивает одеяло на себя. Я привык читать с небольших экранов (Palm + WeaselReader), а смартфон (в отличие от более громоздкой читалки) постоянно с собой. Кроме того, появились программы вроде Dimmer’а которые позволяют настраивать яркость и цветовую гамму (например, убирать пресловутый «синий свет») — что сильно сокращает разрыв по разнице в качестве чтения.

Еще у смартфона есть симкарта и (почти всегда) бесплатный gprs-интернет. Сейчас у меня дошли руки до установки dropbox’а (я стараюсь держать на телефоне как можно меньше программ) — и я понял, что мне не нужен не только dropsync (см предыдущую заметку), но скорее всего и синхронизация заметок по шнурку.

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


Чтение электронных книг — 2

2014-12-12

В предыдущей заметке о чтении, я разделил свои материалы для чтения на три основные категории: большие книги, мои собственные заметки (в виде Большого Текстового Файла) и «клипы» или «вырезки» — набор разношерстых html-страничек, посты, микротексты, микрозаметки и так далее. Если с большими книгами и большим файлом все было более или менее понятно, то промежуточная категория — заметки, «клипы» и вырезки, была совершенно неопределенной и требовала осмысления.

За прошедший год система чтения изменилась. Многие моменты назрели уже давно, фундаментальным поворотом стал момент, когда я оказался в Метрополии с очень плохим интернетом. Связь через некоторое время наладилась, но момент вынужденной автономности и некоторые исследования, попавшие в мое поле зрения, заставили задуматься.
Читать далее…


Еще об идеальных рюкзаках

2013-12-13

Приятно, найти на лайфхакере статью How to Create a Modular «Go Bag» System That Fits Every Need — и узнать в ней идею, к которой пришел сам года два назад (см Идеальный рюкзак) — если коротко, то рюкзаки со встроенными отделениями неудобны и лучше иметь систему вкладывающихся модулей, которая позволяет комплектовать все по своему вкусу. В статье меня заинтересовала тема самоделок — и особенно мелочей, которые хранятся в файле в папке.


make power

2013-10-30

Пока я работал с Неназываемым — столкнулся с необходимостью многократно прогонять комплект действий с питоновскими скриптами. Потратив примерно полчаса (чуть меньше на самом деле — учитывайте, что я не профессиональный программист, а скромный power user) разобрался в GNU make и написал себе такой вот файлик:

all: struc func

clean:
    rm *.csv
    rm *.dot
    rm *.png

struc:
    python st.py 
    find . -name '*.dot' -exec dot {} -Tpng -o {}.png \;
func:
    python fun.py 
    find . -name '*.dot' -exec dot {} -Tpng -o {}.png \;
one:
    python st.py 
    dot struct_kond_B1_01.dot -Tpng -o poligon.png
    geeqie poligon.png

В данном случае make struc считает одни аспекты Неназываемого и с помощью graphviz (точнее dot) рисует к ним диаграммы, make func делает тоже самое для других аспектов Неназываемого, make one — отладочный «единичный сценарий», make clean чистит папку от лишних файлов (храните в версионном контроле только то, что редактируется руками, ага). make или make all прогоняет сценарии всех аспектов Неназываемого.

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

Например. Читать далее…


Яндекс диск в linux

2013-10-22

Яндекс-диск рулит уже тем, что в отличие от Гуглодиска они сделали прекрасное консольное приложение под linux. Ну и 10 Гб, что тоже прекрасно. Нюансы использования: Читать далее…


Чтение электронных книг

2013-08-13

Электронную литературу я читаю давно, если быть точным, начиная с 1999 года. Если не считать Ватолина в 1998-ом году, первой книгой, которую я полностью прочел с компьютера, были «Фальшивые зеркала» Лукьяненко. Специально оставался по вечерам на кафедре и читал — пока не приходило время уезжать на последнем автобусе в Ильичевск. Потом был 286-й компьютер на работе с которого можно было читать в Dos-Navigator’е, потом уже свои домашние машины — тоже с MS Dos и Dos-Navigator’ом в качестве читалки. Palm Zire я взял где-то в начале нулевых. За ним последовал Sony Clie, Amazon Kindle 4 и вот сейчас Nook Simple Touch GlowLight.

В начале нулевых (2001? 2002? 2003? — не суть важно) я определил для себя причины по которым читалка должна быть отдельным от большого компьютера (десктопа или лаптопа) устройством и купил Palm Zire. И остался более, чем доволен. Палм помещался даже в небольшую сумку и его можно было везде носить с собой. Можно читать в транспорте, можно читать в очереди и так далее. В любую читалку помещается целая библиотека, которая в бумажном виде, потребовала бы 120 литрового рюкзака.

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

Все, что прибегает в мою читалку можно разделить на три основные категории.
Читать далее…


2012-11-22

Техника pomodoro широко известна в интернетах — есть масса статей на русском, если поискать.

Говоря коротко — выставляем таймер на определенный промежуток времени, работаем пока он не прозвенит, выставляем таймер на отдых, отдыхаем и так далее. Цифры для режима «отдых» — «работа». Система очень даже не новая. Можете посмотреть тут, например — заметка от 2005-го года и как бы не раньше. Аналогично в книгах ДеБоно постоянно рекомендуют ставить таймер на всяких мозговых штурмах.

Я когда-то пришел к этому режиму работы опытным путем и опытным же путем подобрал промежуток времени 20-5, 20 минут работы, 5 — отдыха. Действует волшебно. На меня во всяком случае. Вместо ОГРОМНОЙНЕПОНЯТНОСКАКОГОКОНЦАВЗЯТЬСЯЗАДАЧЕЙ появляется небольшой кусочек «поработаю 20 минут» и «сделаю хотя бы это, если не понравится — брошу». При этом, таймер с одной стороны гарантирует что это будет именно двадцать минут («маленький кусочек времени» говорит себе подсознание), с другой позволяет сосредоточится именно на задаче, а не на том сколько времени осталось до конца.

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

В сети есть масса помидорного софта разной степени сложности и навороченности. Мне был нужен простейший таймер, поэтому на питоне был написан крошечный скрипт, который на запуске показывал окошко через xmessage, а после 20 минут пиликал и показывал еще одно окошко. Почему xmessage? Потому, что zenity тогда было не во всех дистрибутивах, а мне нужно было везде.
Читать далее…


Гугл, который всегда с тобой

2012-09-14


«Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный»

(с) Мишель де Монтень

Статья о том, почему в Линуксе не нужны словари была для меня одной из самых полезных. Заинтересовавшись, скомплектовал небольшую подборку из текстовых справочников. Через некоторое время выяснилось, что набрать что-то типа grep 'ШУШПАН' dal.txt намного быстрее, чем лезть за результатами в интернет (да и попробуй найди все что можно получить по набору, такого, например, «заклинания» grep ' [^ ]*опа ' dal.txt -o | sort | uniq). Еще интереснее оказалось для меня то, что информации которая есть в (списком): энциклопедическом словаре, словаре Даля, толковых словарях Ушакова и Ожегова, Библии, англо-русском словаре Мюллера, орфографическом словаре и еще нескольких справочниках, хватает с головой — во всяком случае для начального поиска. При этом за счет того, что поиск идет по «чистой информации», за счет того, что искать можно в консоли без необходимости запускать браузер — все летает. При этом все работает даже в отсутствие интернета.
Читать далее…


2012-08-31

Говоря о простоте. Некоторое время назад в интернетах появилось «движение минимализма» (наиболее известный в данный момент евангелист проповедник и апологет — это Лео Бабаута с блогом Zen Habits, но это уже мэйнстрим и, да простит меня Лео — попса1).

Ваш покорный слуга «переболел» этой идеей (судя по записям в дневнике) еще в 2005 или 2006-ом, но только сейчас, наткнувшись на блог Минимализм, как стиль жизни смог осознать причины почему пропагандируемый там минимализм не подходит мне как основая стратегия. Прежде всего, мне кажется, минималистов поразила «болезнь Хауса-Скалли»2, которая вообще характерна для подобных блогов — примерно та же история была с лайфхакерами.

Та же история случилась с Zen Habits — и это было очень печально наблюдать. Есть злая ирония в том, что блог про минимализм изобилует массой заголовков в стиле: «20 Simple Strategies for Getting Healthy», «The 7-Step Write a Book Fast Program», «16 Essential Tips for Traveling with a Family», «20 Small Actions to Create a Fit Environment», «5 Excuses that Keep You Unhealthy (and How to Destroy Them)», «9 Essential Skills Kids Should Learn», «Your Top 10 Clutter Questions, Answered»3

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

Где искать критерий? Мне нравится чеканная формулировка из старой советской книги по туризму. Там описывался холивар между зарубежными (по-моему английскими) альпинистами, совершавшими восхождение с использованием технических средств и без использования оных.4 Советский критерий использование/не использование технических средств, приводимый в этой книге, был таким — «использовать технические средства по минимуму — до тех пор пока это не создает угрозы безопасности восхождению«.

Перефразируя — минимализм хорош до тех пор, пока его соблюдение не начинает усложнять жизнь и создавать проблемы :)

Ну и last, but not least минимализм (как и все прочее) не должен покушаться на личного пространство другого человека. На вышепомянутом сайте уже встречаются сравнения себя с другими вот мол у них хлам, а у нас минимализм. По опыту подобных сообществ, дальше обычно следуют обсуждения «как вынудить близких соблюдать…».


  1. Если вы в далеком 2003-ем читали «Time Management for Anarchists» by NoMediaKing, вы понимаете о чем я. Кстати, вот хороший пример правильного минимализма — человек написал фундаментальную статью о том, что и как — и закрыл тему, не доводя до седьмого сезона.
  2. House M.D. — прекрасный сериал, с классными героями и идеями. Однако его нужно было закончить сезоне на третьем или четвертом — к моменту исчерпания этих самых идей. Лучше всего — на поцелуе с Кадди :) Однако, сериал продолжали тащить дальше под лозунгом «но ведь хорошо получалось» — и в итоге он скатился в нечто малосмотрибельное. Аналогичная история произошла и с X-Files, когда к последней полнометражке Малдер и Скалли умудрились обзавестись детьми и переспать по несколько раз.
  3. И «Еще 100500 способов упростить жизнь», да.
  4. Доходило до того, что одна группа проходила участок, вкручивая крючья, а другая проходила этот же участок и выкручивала эти крючья обратно.

    Еще в 1956 г. «Альпийский журнал» опубликовал письмо, в котором, в частности говорилось: «…методы «молотка и гвоздя» чужды традициям Альпийского клуба и британскому альпинизму вообще. Было делом чести никогда не осквернять крюками склоны гор при восхождениях британских альпинистов…».

    (c)П.П.Захаров «Первый альпийский клуб Европы»


Pencil Revolution

2012-06-28

Уже полгода как перешел с ручки на карандаш и веду записи в блокнотах и агендабуке исключительно им. Профит в том, что карандаш штука гораздо более универсальная и удобная для заметок на ходу, чем авторучка. Читать далее…


киндловарство

2012-02-11

Потратил день, однако добился своего. С недавних пор ваш покорный слуга является обладателем киндла (самая дешевая из моделей — Kindle 4 тот что с кнопками и без тача). В принципе нареканий никаких. Самое приятное (из-за чего все остальные читалки остались за флагом) — обложка с подсветкой, причем с подсветкой, питающейся от аккумуляторов самого киндла. К этому прилагаются wifi, онлайновые сервисы и все дела. Не хватает двух вещей — первое русской клавиатуры, второе — не-проприетарных форматов для чтения, которые бы поддерживали ссылки внутри текста. Полагаю и первое и второе — дело времени (и коммьюнити).

Пока я пользовался палмом — я привык к тому, что у него есть WeaselReader, к которому идет коммандлайновая утилита makeztxt — которой достаточно прописать регэксп для поиска содержания — и она сама расставит заголовки.

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


про сон днем

2012-01-11

Идеологически правильная инфографика на тему сна днем (in english) — очень рекомендую.

напомню: оптимальный сон включает в себя две сиесты — 1200 и 1600


Простые вещи: идеальный рюкзак.

2011-11-28

Современные городские рюкзаки большей частью шьются со множеством секций, карманов, кармашков и карманчиков — под ручки, блокноты и прочие мелочи, отдельный «наспинный» карман для бумаг, защищенная емкость под ноут и так далее и тому подобное. Такой рюкзак больше напоминает разгрузочный жилет «коммандос», чем рюкзак.

Чем больше пользуешься такими рюкзаками — тем сильнее ощущение их нерациональности. Сегодня ручки и мелочи хорошо разложились по кармашкам — плейер лег туда, ручки — сюда, часть бумаг — туда, блокнот — сюда и так далее. Завтра я решил отправиться налегке и взял более легкую сумку — в итоге каждую ручку пришлось вытаскивать из ее кармашка и перекладывать в другой кармашек. Кроме того, нужно некоторое время, чтобы в такой многокарманной системе каждая вещь нашла свое место, а когда ты к этому привыкаешь — рюкзак уже успевает износится и его нужно менять. А у другого рюкзака схема почти такая же, но за счет этого «почти» снова нужно искать порядок раскладки. Еще забавнее, когда число кармашков не совпадает с нужным комплектом вещей — флешки, кабели, «селедка» под наушники, нож, расческа — не везде для этого предусмотрено отдельное «парковочное» место.
Читать далее…


Разбирая заметки

2011-11-23

2011-03-09 10:31

(... лакуна ...) 

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

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

Например, мне жутко интересно, когда возникла Польша. Кто ее основатель и как получилась сначала Речь Посполита, а потом она развалилась на Польшу, Литву и Украину. Я только помню из Кагарлицкого, что Польша конкурировала с Россией сначала на торговом, потом на зерновом рынках, потом не выдержала темпа модернизации (в то время как в России появился Петр I), отстала в развитии и в итоге была «съедена».

Сумбурно про Польшу


Лента и Структура

2011-10-17

На вебпланете опубликовали любопытную статью о различии восприятия информации в виде ленты (рсс-лента, френд-лента, твиттер-лента) и простого серфинга. Фейсбучный Timeline по мнению автора — новый шаг в организации информации, сочетающий в себе и ленту и серфинг. Замечу, что у Timeline были предшественники — те же системы управления коллекциями фотографий или музыки могут раскладывать файлы в пространстве по «ключевым параметрам» — дате, времени, модели фотоаппарата, битрейту, жанру музыки и так далее.

Когда я описывал АБТФ, я упомянул, что мой Большой Файл делится на Структуру и Дневник. В Структуре существует своя иерархическая система, если хотите традиционный сайт с линками и всем прочим, Дневник — это в принципе та же лента.

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


Научная организация труда по Хайнлайну

2011-09-13

Сейчас на кафедре полный завал — ушел шеф, серьезно болеет еще один преподаватель. Плюс переезд на новое место, плюс, плюс, плюс… Сейчас приходится тянуть 250% моей обычной нагрузки.

Естественно, пока простаивает и блог и другие проекты (и только благодаря Среццтву-От-Сидения-Дома я еще не оброс мхом в своей уютной компьютеризированной келье на окраине города). Ничего. Разгребусь с делами и… А пока (в очередной раз, ага) утешаю себя старой доброй цитатой из Хайнлайна:

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


АБТФ: как работать с тегами

2011-02-21

Я наконец научился эффективно работать с тегами :) Для этого можно и нужно использовать grep, плюс пару трюков из документации.

Ключевой момент — правильная расстановка тегов, а именно:

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

Как искать по тегам? Через грепы.

Первоначальный поиск можно организовать так:

:tabnew

Это откроет новую вкладку.

Дальше:

:r! grep -nH "=реца" main.txt

Ключи:

-n - нумеровать строки
-H - выводить имя файла

Получается примерно такое:

main.txt:62944:Мартин Ли "Странная сага телохранителя Гитлера" =книги =реца =мысли =ТретийРейх =с4 =СВК =Драконы =ГСП =ТротиловаяВойна =ПланЯшма =ЛепесткиХризантемы
main.txt:63963:Уэстлейк "Полицейские И Воры" =книги =реца
main.txt:84493:Хоблит "Перелом" =фильм =реца
main.txt:85088:Стон Черной Змеи =фильм =блюз =реца
main.txt:85148:Широкорад = "Россия и Китай: Конфликты и сотрудничество" (серия Военные Тайны XX века) =книги =авторы =реца
main.txt:86783:Степан Бандера 1909-1959 =линк =Украина =история =фильм =реца =разгрести =Бандера =2048
main.txt:91279:Шекли "Дипломатический иммунитет" =книги =авторы =Шекли =реца
main.txt:91423:Андреев "Худловары" =книги =авторы =реца
main.txt:105676:Ложная слепота Уоттса =реца =мысли =контр =конспект =пост
main.txt:107481:Ложная слепота Уоттса = 2 =реца =мысли =контр =конспект =пост =холд
main.txt:109647:Смотрю ГИГ ака GitS SAC второй сезон. Вторая серия (мечтатель) - это четкая реминисценция на Таксиста =реца

Это уже готовые ссылки на статьи в блоге. Достаточно стать на «main.txt» нужной строки и набрать gF — и vim откроет файл в нужном месте. Ctrl+O вернет вас назад по истории переходов, Ctrl+I — вперед. То есть имея такую поисковую выборку можно нырять туда-обратно в основной файл или даже в комплект файлов.

Можно добавить в один файл несколько результатов грепа сразу — просто набрать подряд несколько грепов по разным тегам.

например:

Последовательно набрав:

r!grep =реца main.txt =nH
r!grep =рецензия main.txt =nH
r!grep =конспект main.txt =nH

Получим:

main.txt:62874:Камедиклаб Просто Радио =реца
main.txt:62944:Мартин Ли "Странная сага телохранителя Гитлера" =книги =реца =мысли =ТретийРейх =с4 =СВК =Драконы =ГСП =ТротиловаяВойна =ПланЯшма =ЛепесткиХризантемы
main.txt:63963:Уэстлейк "Полицейские И Воры" =книги =реца
main.txt:84493:Хоблит "Перелом" =фильм =реца
main.txt:85088:Стон Черной Змеи =фильм =блюз =реца
main.txt:85148:Широкорад - "Россия и Китай: Конфликты и сотрудничество" (серия Военные Тайны XX века) =книги =авторы =реца
main.txt:86783:Степан Бандера 1909-1959 =линк =Украина =история =фильм =реца =разгрести =Бандера =2048
main.txt:91279:Шекли "Дипломатический иммунитет" =книги =авторы =Шекли =реца
main.txt:91423:Андреев "Худловары" =книги =авторы =реца
main.txt:105676:Ложная слепота Уоттса =реца =мысли =контр =конспект =пост
main.txt:107481:Ложная слепота Уоттса = 2 =реца =мысли =контр =конспект =пост =холд
main.txt:109647:Смотрю ГИГ ака GitS SAC второй сезон. Вторая серия (мечтатель) - это четкая реминисценция на Таксиста =реца
main.txt:91444:Андреев - не-гуманитарий. Все не-гуманитарии заканчивают тем, что упираются в философскую проблему (чему равен синус-от-сердца?) и на этом для них все заканчивается. =книги =авторы =рецензия
main.txt:103027:Детектив Ди Жэньцзе =фильм =рецензия =пост
main.txt:109500:Кургинян "Суть времени" =конспект =рецензия
main.txt:83279:=конспект =мысли =контрманипуляция Турбо=Суслик
main.txt:83415:=конспект =мысли =контрманипуляция Турбо=Суслик продолжение
main.txt:84950:Осваиваюсь в философии. Сегодня благодаря дтв-атласу и Балашову начал укладывать в голове общую схему развития. Получается неплохо. Дальше идет большая-большая схема. =философия =мысли =конспект =заметки
main.txt:92683:Сейчас читаю "Я прав - вы заблуждаетесь" Де Боно. В один момент начало казаться, что у человека просто высосанные из пальца концепции - то есть примеры в его книге не блещут разнообразием (кстати, у Франкла я замечал подобное), но когда вчитался внимательнее - понял что человек похоже один из немногих, кто правильно разобрался в том, как работает наше мышление. =ДеБоно =конспект =книга =автор =мысли
main.txt:105676:Ложная слепота Уоттса =реца =мысли =контр =конспект =пост
main.txt:105919:Периферийная Империя Кагарлицкий и Кондратьев =конспект =сфи =идеи =с4 =смвк =хронология
main.txt:106058:Барри Шварц =конспект =палм =мысли =пост
main.txt:106290:Начал читать Айкидо =оуе =заметки =конспект
main.txt:107481:Ложная слепота Уоттса = 2 =реца =мысли =контр =конспект =пост =холд
main.txt:109500:Кургинян "Суть времени" =конспект =рецензия
main.txt:109520:Кагарлицкий Периферийная Империя скелет конспекта =конспект

Результаты поиска можно фильровать — выделить текст и пропустить его фильтром через тот же греп, при этом совсем не обязательно задавать тег — можно задать ключевое слово:

ggVG!

и в поисковой строке набрать (:'<,'>! Vim подставит сам):

:'<,'>!grep "фильм"

в итоге останется:

main.txt:84493:Хоблит "Перелом" =фильм =реца
main.txt:85088:Стон Черной Змеи =фильм =блюз =реца
main.txt:86783:Степан Бандера 1909=1959 =линк =Украина =история =фильм =реца =разгрести =Бандера =2048
main.txt:103027:Детектив Ди Жэньцзе =фильм =рецензия =пост

(номера могут меняться — поскольку я пишу эту инструкцию в том же файле, который грепаю :)

Пример номер два. Здесь не используются теги, зато показано, как работает «прямой поиск» — то что я называю «сам себе гугл» :)

Когда я беседовал с уважаемым ОллиКатом мне понадобилось найти ссылки на репорты по DVCS разработчиков Питона и Гугла. Поиск по mercurial не выдал ничего внятного:

:tabnew
:r!grep -nHI mercurial main.txt

Получил следующее:

main.txt:20844: evince djview4 evince markdown mercurial makeztxt
main.txt:20987:mercurial
main.txt:27044:Конспект и освоение mercurial.
main.txt:27046:http://blgo.ru/blog/category/mercurial/
main.txt:27050:http://www.selenic.com/mercurial/hg.1.html
main.txt:27053:mercurial (hg) - unixforum.org
main.txt:27055:mercurial - Поиск в Google
main.txt:27058:http://mercurial.selenic.com/wiki/TipsAndTricks
main.txt:27066:http://hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html
main.txt:27068:http://hgbook.red-bean.com/read/a-tour-of-mercurial-merging-work.html
main.txt:27072:http://hgbook.red-bean.com/read/mercurial-in-daily-use.html
...
main.txt:107671:http://antonym.org/2010/04/25-tips-for-intermediate-mercurial-users.html
main.txt:107826:http://mercurial.selenic.com/wiki/MergingWithVim
main.txt:107842:http://stackoverflow.com/questions/1869040/what-are-the-best-and-must-have-hg-mercurial-extensions
main.txt:107843:What are the best and must-have hg / mercurial extensions? - Stack Overflow
main.txt:109737:http://blgo.ru/blog/tag/mercurial/

(всего получилось 57 результатов)

Сортировка по фильтрам grep python и grep google ничего не дала.

Я зашел с другого конца, вспомнив что первый отчет был с python.org, второй с codes.google.

Очистил окно:

ggdG
:r!grep -nHI code.google main.txt

В ответ получил такую простынь:

main.txt:17060:http://code.google.com/p/amv-codec-tools/wiki/HowToConvertToAMV
main.txt:19745: # Generated by tintwizard (http://code.google.com/p/tintwizard/)
main.txt:19746: # For information on manually configuring tint2 see http://code.google.com/p/tint2/wiki/Configure
main.txt:86060:http://code.google.com/p/vimwiki/
main.txt:88384:http://code.google.com/p/key-mon/
main.txt:95839:http://code.google.com/p/amv-codec-tools/wiki/HowToConvertToAMV
main.txt:102627:http://code.google.com/p/vimming/source/checkout
main.txt:102840:http://code.google.com/p/vimming/source/checkout
main.txt:109744:http://code.google.com/p/support/wiki/DVCSAnalysis

Ага. Вот последняя строка и есть нужная мне ссылка. Встав на main.txt и набрав gF (обратите внимание — F, а не fgf просто переходит к файлу, gF переходит к файлу и переставляет курсор на нужную строку — см :h gF. Отчет по Питону нашелся рядом, но для наглядности я могу показать и его.

ggdG
:r!grep -nH python.org main.txt

Получаем:

main.txt:4843:http://wiki.python.org/moin/RssLibraries
main.txt:69207:http://www.python.org/doc/faq/windows/
main.txt:79215:http://docs.python.org/library/md5.html
main.txt:88242:http://docs.python.org/library/optparse.html
main.txt:88563:http://mail.python.org/pipermail/tutor/2003-June/023434.html
main.txt:88600:http://mail.python.org/pipermail/tutor/2004-November/033333.html
main.txt:88603:http://mail.python.org/pipermail/tutor/2002-April/013989.html
main.txt:88606:http://mail.python.org/pipermail/tutor/2002-November/018528.html
main.txt:92596:http://www.python.org/dev/peps/pep-0374/#svn
main.txt:109741:http://www.python.org/dev/peps/pep-0374/#patch-review

Последняя ссылка и есть искомая (если заметите — на самом деле у меня их две).

Можно инвертировать поиск (-v ключ для grep’а), можно делать многотеговые поиски по нескольким файлам или сразу по всему блогу. В общем — есть где развернуться. Наверное, позже я просто сделаю бинды на хоткеи, но пока такой системы хватает с головой. Можно еще написать раскраску для такого файла (чтобы имя-файла, номер строки и возможные теги подсвечивались разными цветами, можно написать правильный хоткей для перехода (чтобы ходить по gf, а не по gF).

Можно увеличить контекст (сделать так, чтобы греп выводил больше одной строки) и, например, сделать подборку ссылок.

Еще бы сделать автоматическую простановку тегов (в виде вываливающейся менюшки по хоткею) и получится весьма и весьма мощная система работы с заметками. Гугл, который всегда с тобой :)

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

Если копнуть глубже, оказывается, что quickfix window использует ту же схему. Только оно как по мне менее удобно — как минимум тем, что на него сложно наложить дополнительные фильтры, как в примерах выше. Собственно, первоначальную идею мне именно quickfix и подсказал — я забил в поиск по :vimgrep тег и получил список результатов. Поскольку на тот момент времени теги у меня были отдельно — это был просто список типа:

main.txt:89560:=бег =МК
main.txt:89595:=бег =МК
main.txt:89743:=бег =МК
main.txt:89763:=бег =МК
main.txt:89855:=бег =СМК
main.txt:90025:=бег =МК
main.txt:90059:=бег =МК
main.txt:90498:=бег =СК
main.txt:90525:=бег =МК
main.txt:90630:=бег =СК
main.txt:90997:=бег =СК
main.txt:91137:=бег =СК
main.txt:91268:=бег =СМК

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


Сначала ты смотришь на Систему, потом Система смотрит на тебя…

2010-12-16

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

Самое интересное, что один из самых больших очагов захламления это мое основное место работы. Все прочие проекты находятся в полном или почти полном порядке, а вот работа… Работа это один большой монстр, в котором кое-где проглядывает порядок и чем дальше по оси времени, тем больше этого порядка, но в целом мне пока далеко до идеального порядка, который там должен царить. Можно, конечно, оправдывать это тем что (а) работ было несколько (как и научных руководителей) (б) сам предмет очень быстро меняется (Закон Мура никто не отменял) (в) у моих коллег вообще не существует системы хранения электронной документации, но такое положение дел меня все равно не устраивает.

Повод подумать. И начать с планирования работы. Уже начал :)


%d такие блоггеры, как: