Security Teams



» ДРУЗЬЯ: ::: Protocols.Ru ::: Grudina.INFO ::: Securityvulns.RU ::: Hack-Lab ::: ALP.org.ua :::
  Ответ в темуСоздание новой темы

> Emacs Org-mode, (C) Dimon
Dimon
Дата 20.02.2010 - 22:33
Цитировать сообщение
Offline



Editors
****

Профиль
Группа: -editors-
Сообщений: 446
Пользователь №: 17
Регистрация: 18.02.2005



Рейтинг:
(60%) XXX--


В данной ветке будут кросспосты из своего ЖЖ по вопросу использования 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. Тайм-менеджмент для системных администраторов
PMICQ
Top
Dimon
Дата 21.02.2010 - 21:38
Цитировать сообщение
Offline



Editors
****

Профиль
Группа: -editors-
Сообщений: 446
Пользователь №: 17
Регистрация: 18.02.2005



Рейтинг:
(60%) XXX--


Итак, определимся более подробно, что мы хотим от нашего планировщика. Начнем с внешнего вида и описания основных возможностей.
Вся текстовая информация в org-mode представлена в виде иерархических списков и выглядит следующим образом:
Цитата
* Заголовок 1-ый уровень
** Заголовок 2-ой уровень
*** 3-ий уровень
      некоторый текст
*** еще 3-ий уровень
      еще текст
      еще
      и еще немного текста
* Заголовок 1-ый уровень


Каждый из уровней может быть свернут-развернут путем нажатия TAB на соответствующем уровне или S-TAB. Например, полностью свернутая до 1-го уровня структура будет выглядеть вот так:
Цитата
* Заголовок 1-ый уровень ...
* Заголовок 1-ый уровень


Троеточие в конце заголовка означает, что внутри содержатся еще уровни вложенности или текст.

Что это все нам дает в итоге: а то, что организовать свои дела можно, например, придумав для себя следующую структуру:
Цитата
* Личное
** Купить
** Продать
* Работа 1
** Отдел 1
*** Начальник отдела
*** Замначальника
** Отдел 2
** Отдел 3
* Работа 2
** Начальство
** Бухгалтерия
** Сотрудники
* Ремонт

При поступлении заявки от определенного объекта мы вносим ее в соответствующий раздел. Все лежит по своим "полочкам", ненужное можно свернуть дабы не мозолило глаза.

Теперь разберемся с статусами задач.
Org-mode предлагает т.н. "статусы" - ключевые слова, которые отражают состояние текущего задания. По умолчанию предлагаются статусы TODO - задание требует выполнения и DONE - задание выполнено. Я сие дополнил статусом PROC - задание, находится в процессе выполнения или было делегировано коллеге. Если задача была отменена - можно поставить ей статус DONE - как выполненной, или же просто удалить из списка заданий - по желанию. Вставка статуса задачи осуществляется с помощью S-right в начале строки.
В общем виде, строки с заданиями будут иметь следующий вид:
Цитата
...
** Отдел 2
*** TODO Завести нового сотрудника в черный список
*** PROC заказ новой гильотины
*** DONE возвести эшафот в к. 13
** Отдел 3
* Работа 2
** Начальство
*** TODO Секретарша - не складывается пасьянс
...

Статусы заданий от обычного текста выделяются шрифтом и цветом; для себя, вместо дефолтных, установил TODO, PROC , DONE, цвета яркие, дабы бросалось в глаза. Делается это вставкой следующего кода в конфигурационный файл emacs'a:
Код

    (setq org-todo-keyword-faces
     '(("TODO" . (:foreground "red" :weight bold))
       ("PROC" . (:foreground "yellow" :weight bold))
       ("DONE" . (:foreground "green" :weight bold))))

В качестве статусов можно использовать и другие слова, их набор может быть большим, например:
Код

   (setq org-todo-keywords
     '((sequence "СДЕЛАТЬ" "ВЫПОЛНЯЕТСЯ" "|" "ЗАВЕРШЕНО" "ОТМЕНЕНО")))

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

Заданиям можно устанавливать приоритеты исполнения. Лично я их не использую - как правило расстановка приоритетов среди наличных задач может занять больше времени нежели выполнение их по списку начиная с любой. Но если они все же необходимы, то их можно вставить сочетанием C-c , По умолчанию предлагается три приоритета - от А до С, А - старший. При выборе приоритета возле статуса задания появляется поле с приоритетом, следующего вида:
Цитата
* Отдел N2
** TODO [#A] Выполнить задание N 346024/9-i
** PROC [#C] Выполнить задание N 9314/bis

Если подвести курсор к полю приоритета то с помощью S-up или down можно изменять приоритет или вообще его удалить. Обычная задача без приоритета имеет уровень В.

Для заданий есть возможность устанавливать временные метки. Я их как правило не использую, кроме задач, которые требуют быть выполненными в точно назначенный день-час или же были отложены до точно определенного времени. Вставка меток делается сочетаниями C-u C-c . либо C-c . В первом случае вставляется дата и время в виде <2010-02-20 Суб 23:20> во втором - только дата вида <2010-02-20 Суб> Временные метки нужны для формирования списков дел (agenda view).

При занесении дела в список практически всегда достаточно создать запись типа
Цитата
** TODO к.666 - добавить серы в их инфернальный принтер, отбить демонам руки.

но бывают задачи, которые необходимо разбить на определенные, логически завершенные этапы. Например, вышеприведенную задачу можно разбить на следующие этапы
Цитата
    * достать на складе серу;
    * поймать Харона чтобы он перевез через Стикс;
    * найти к. 666;
    * разобраться с принтером досыпав в картридж серу и селитру;
    * провести техучебу с демонами по вопросу "не стоит совать скрепки внутрь картриджа";

В общем, сие можно сделать простым путем перечисления шагов например через "черточку" в виде списка. И при выполнении шага ставить в конце строки какой-то символ, что будет указывать, что этап выполнен. Но и тут org-mode добавляет нам некоторые удобства. В данном случае нашу многоступенчатую задачу мы можем представить в следующем виде:
Цитата
** TODO к.666 - добавить серы в их инфернальный принтер, отбить демонам руки [2/5]
    - [Х] достать на складе серу
    - [Х] поймать Харона чтобы он перевез через Стикс
    - [ ] найти к. 666
    - [ ] разобраться с принтером досыпав в картридж серу и селитру
    - [ ] провести техучебу с демонами по вопросу "не стоит совать скрепки внутрь картриджа"

В конце строки главной задачи мы вставляем символы [/] или же [%] Это говорит о том, что наша задача состоит из логических этапов, которые мы укажем ниже.

Когда мы задаем логический этап задачи, мы начинаем строку с последовательности - [ ] - она сообщает org-mode, что данный этап является частью основного задания. И так делаем для всех подэтапов. Эта последовательность символов - маркеры - флажки состояния типа "включен-выключен".Подзадания имеют одинаковую "стоимость".

Когда мы выполнили определенную подзадачу, необходимо пометить ее как завершенную - это делается с помощью сочетания C-c C-c. Флажок отмечается символом Х, а в главной строке задания, поле [/] или [%] заменяется на [2/5] или [40%], подсчет ведется автоматически. Понятно, что это означает - задача состоит из 5 шагов, два из которых уже выполнены (общий процент выполнения задания составляет 40%).

Выполненные задачи можно архивировать, как уже упоминал, делается это с помощью сочетания C-c S-$ когда курсор находится в строке, которую нужно архивировать. Архивируется вся ветка, с подзадачами, вложенным текстом - все это просто переносится из файла заданий в архивный файл, к строке лишь добавляется дата и время архивации.
PMICQ
Top
ShamilDymov799
Дата 11.08.2010 - 13:34
Цитировать сообщение
Offline



Junior
*

Профиль
Группа: -users-
Сообщений: 1
Пользователь №: 7100
Регистрация: 11.08.2010



Рейтинг:
(0%) -----


А мужики-то не знают :)
PMПисьмо на e-mail пользователю
Top

Опции темы Ответ в темуСоздание новой темы

 





Фонтан садовый купить украина на сайте http://leokadia.com.ua.