
STNC главная |
![]() ![]() ![]() ![]() ![]() ![]() |
Здравствуйте Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
![]() ![]() |
Dimon |
Дата 20.02.2010 - 22:33
|
Offline Editors ![]() ![]() ![]() ![]() Профиль Группа: -editors- Сообщений: 446 Пользователь №: 17 Регистрация: 18.02.2005 Рейтинг: (60%) ![]() ![]() |
В данной ветке будут кросспосты из своего ЖЖ по вопросу использования emacs'a в качестве планировщика заданий. Все основано на собственном опыте, ошибках, знаниях-незнаниях и прочих наработках. Любые пожелания, дополнения, исправления не просто приветствуются, но и очень желательны.
=== Emacs Org-mode. Введение В один "прекрасный" момент в повседневной работе наступил этап, когда без планировщика жизнь стала невозможной - держать все в голове тяжело, постоянно теряющиеся записочки, клочки бумажек, черновики превратили рабочее место в пункт приема макулатуры. Раскиданные по разным местам жесткого диска файлы с описаниями каких-то задач, путей их решения тоже порядка сильно не добавляли, а ведь часто выполняемые задания отмечаются некоторыми дополнениями для себя, в качестве справочной информации на будущее и потеря этой информации порой очень ощутима и нежелательна. В общем, решение было принято - нужен порядок и унификация. Осталось определиться со средствами. Обычный бумажный планировщик вещь хорошая, всегда с собой, прост в использовании, подходит как для планирования рабочих дел, так и личных, но имеет ряд недостатков, характерных для бумажных носителей информации, посему сей вариант был отброшен. Значит электронные планировщики - мой выбор. Именно в версии на компьютере, а не, скажем, iphone какой-нибудь. И тут начались терзания: что же выбрать? Разворачивать полноценную систему приема заявок от пользователей, по типу RequestTracker, посредством которой они будут "общаться" со мной - это не представляется возможным ввиду ряда причин, которые не буду рассматривать. Тогда - локальная система "только для меня". Общие требования к планировщику были следующие: * open source, кросcплатформенная реализация; * хранение данных в виде простого текста, или XML-подобная структура - чтобы можно было вручную из любого редактора смотреть содержимое, вносить изменения при необходимости и т.п. * составление списков дел на определенные дни-недели; * настраиваемость, удобство использования; * система напоминаний. В свое время использовал Mozilla Sunbird - в общем, сей продукт мне понравился, но хотелось чего-то попроще. Так как в работе постоянно использую emacs то логично было использовать его встроенный календарь-дневник. Что и было сделано. Но простой дневник подходит лишь для заданий "Сделать-забыть" - в нем нет приоритетов задач, статуса выполнения, в нем неудобно вести справочные записи по конкретным задачам - файл очень быстро распухает, нет возможности просто перенести задание на другой день, установить плавающее задание не по дате и еще ряд недостатков, существенных для меня. И тут я узнал, что в emacs'е существует такая замечательная вещь, как org-mode . org-mode - это по сути средство организации простых текстовых данных в виде иерархической структуры. Org-mode позволяет вести планировщик заданий, блокнот-заметки, извлекать и организовывать списки дел на период времени, сортировать их и еще много-много чего. Например, внешний вид планировщика заданий может выглядеть вот так: https://pics.livejournal.com/l8sae_rexhn1/pic/00009p10/ Все данные хранятся в одном или нескольких простых текстовых файлах, которые можно просматривать-редактировать любым текстовым редактором. Данные можно разнести по разным файлам, а сводную таблицу заданий получать в едином виде для всех файлов или выборочно для определенных. Для выставления статуса задачи существуют определенные ключевые слова, по умолчанию TODO, DONE, однако сие можно настраивать-изменять. Для заданий возможно выставление приоритетов, дополнительных текстовых меток ака ключевых слов. Задания можно вкладывать одно в другое (иерархия ж), что позволяет "свернуть-развернуть" только необходимое из них, все в данной ветви или вообще все в файле. Для заданий возможно выставление даты-времени начала исполнения, конечный срок - т.н. deadline, что будет отмечаться в списке дел на неделю или общем списке дел. Задачи можно архивировать в отдельные файлы - по умолчанию создается новый файл с именем текущего файла заданий с "хвостом" _archive, куда переносятся архивные задания. Файлом заданий может быть любой текстовый файл, нужно только выполнить M-x org-mode. Но принято хранить подобные файлы в папке ~/org с расширением .org Вот, пожалуй, вкратце и есть скромный экскурс в удобный мир org-mode. В дальнейшем постараюсь осветить подробнее определенные аспекты его использования, свой опыт, свои наработки, рекомендации, впечатления... Полезные ссылки: 1. Видео с обзором основных возможностей (англ.) https://orgmode.org/GoogleTech.html 2. Документация (англ.): https://orgmode.org/org.pdf 3. Краткий список основных команд (англ.): https://orgmode.org/orgcard.pdf 4. Тайм-менеджмент для системных администраторов |
Dimon |
Дата 21.02.2010 - 21:38
|
||||||||||||||||||||
Offline Editors ![]() ![]() ![]() ![]() Профиль Группа: -editors- Сообщений: 446 Пользователь №: 17 Регистрация: 18.02.2005 Рейтинг: (60%) ![]() ![]() |
Итак, определимся более подробно, что мы хотим от нашего планировщика. Начнем с внешнего вида и описания основных возможностей. Вся текстовая информация в org-mode представлена в виде иерархических списков и выглядит следующим образом:
Каждый из уровней может быть свернут-развернут путем нажатия TAB на соответствующем уровне или S-TAB. Например, полностью свернутая до 1-го уровня структура будет выглядеть вот так:
Троеточие в конце заголовка означает, что внутри содержатся еще уровни вложенности или текст. Что это все нам дает в итоге: а то, что организовать свои дела можно, например, придумав для себя следующую структуру:
При поступлении заявки от определенного объекта мы вносим ее в соответствующий раздел. Все лежит по своим "полочкам", ненужное можно свернуть дабы не мозолило глаза. Теперь разберемся с статусами задач. Org-mode предлагает т.н. "статусы" - ключевые слова, которые отражают состояние текущего задания. По умолчанию предлагаются статусы TODO - задание требует выполнения и DONE - задание выполнено. Я сие дополнил статусом PROC - задание, находится в процессе выполнения или было делегировано коллеге. Если задача была отменена - можно поставить ей статус DONE - как выполненной, или же просто удалить из списка заданий - по желанию. Вставка статуса задачи осуществляется с помощью S-right в начале строки. В общем виде, строки с заданиями будут иметь следующий вид:
Статусы заданий от обычного текста выделяются шрифтом и цветом; для себя, вместо дефолтных, установил TODO, PROC , DONE, цвета яркие, дабы бросалось в глаза. Делается это вставкой следующего кода в конфигурационный файл emacs'a:
В качестве статусов можно использовать и другие слова, их набор может быть большим, например:
Вертикальная черта логически отделяет задачи, которые требуют исполнения от тех, которые уже не требуют действий (считаются выполненными) Заданиям можно устанавливать приоритеты исполнения. Лично я их не использую - как правило расстановка приоритетов среди наличных задач может занять больше времени нежели выполнение их по списку начиная с любой. Но если они все же необходимы, то их можно вставить сочетанием C-c , По умолчанию предлагается три приоритета - от А до С, А - старший. При выборе приоритета возле статуса задания появляется поле с приоритетом, следующего вида:
Если подвести курсор к полю приоритета то с помощью S-up или down можно изменять приоритет или вообще его удалить. Обычная задача без приоритета имеет уровень В. Для заданий есть возможность устанавливать временные метки. Я их как правило не использую, кроме задач, которые требуют быть выполненными в точно назначенный день-час или же были отложены до точно определенного времени. Вставка меток делается сочетаниями C-u C-c . либо C-c . В первом случае вставляется дата и время в виде <2010-02-20 Суб 23:20> во втором - только дата вида <2010-02-20 Суб> Временные метки нужны для формирования списков дел (agenda view). При занесении дела в список практически всегда достаточно создать запись типа
но бывают задачи, которые необходимо разбить на определенные, логически завершенные этапы. Например, вышеприведенную задачу можно разбить на следующие этапы
В общем, сие можно сделать простым путем перечисления шагов например через "черточку" в виде списка. И при выполнении шага ставить в конце строки какой-то символ, что будет указывать, что этап выполнен. Но и тут org-mode добавляет нам некоторые удобства. В данном случае нашу многоступенчатую задачу мы можем представить в следующем виде:
В конце строки главной задачи мы вставляем символы [/] или же [%] Это говорит о том, что наша задача состоит из логических этапов, которые мы укажем ниже. Когда мы задаем логический этап задачи, мы начинаем строку с последовательности - [ ] - она сообщает org-mode, что данный этап является частью основного задания. И так делаем для всех подэтапов. Эта последовательность символов - маркеры - флажки состояния типа "включен-выключен".Подзадания имеют одинаковую "стоимость". Когда мы выполнили определенную подзадачу, необходимо пометить ее как завершенную - это делается с помощью сочетания C-c C-c. Флажок отмечается символом Х, а в главной строке задания, поле [/] или [%] заменяется на [2/5] или [40%], подсчет ведется автоматически. Понятно, что это означает - задача состоит из 5 шагов, два из которых уже выполнены (общий процент выполнения задания составляет 40%). Выполненные задачи можно архивировать, как уже упоминал, делается это с помощью сочетания C-c S-$ когда курсор находится в строке, которую нужно архивировать. Архивируется вся ветка, с подзадачами, вложенным текстом - все это просто переносится из файла заданий в архивный файл, к строке лишь добавляется дата и время архивации. |
||||||||||||||||||||
ShamilDymov799 |
Дата 11.08.2010 - 13:34
|
Offline Junior ![]() Профиль Группа: -users- Сообщений: 1 Пользователь №: 7100 Регистрация: 11.08.2010 Рейтинг: (0%) ![]() ![]() |
А мужики-то не знают :)
|
![]() |
![]() ![]() |
Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home/tutsem091/domains/security-teams.net/public_html/putslinkshere/mainlink.php on line 79 |