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

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

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

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

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

Со временем захотелось (а) прогресс-бар — чтобы видеть сколько осталось до финиша (когда оно работает где-то там в глубинах ос как-то не очень спокойно) (б) чего-нибудь на замену xmessage. Нетворчески использовав гугл я раскопал рецепт на отрисовку бара и выбрал notify-send, как замену xmessage. Работает прекрасно.

Если система ставилась с нуля (как моя), возможно notify-send там не будет. В дебиане его можно поставить через:

sudo aptitude install libnotify-bin

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

sudo aptitude install mpg123

(впрочем сойдет любой другой) и заменить в скрипте названия путей к звуковым файлам (те, что ~/av/wav/bla-bla-bla) на свои.

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

Python, как правило уже есть в системе.

Создаем где-нибудь в ~/bin файл pom, заносим туда:

#!/usr/bin/env python
# -*- coding: utf8 -*-
import random
import time
import os
import sys

mins = 20
seconds_in_min = 60

# по рецепту отсюда:
# http://code.activestate.com/recipes/576986-progress-bar-for-console-programs-as-iterator/
def progressbar(it, prefix = "", size = 60):
	count = len(it)
	def _show(_i):
		x = int(size*_i/count)
		sys.stdout.write("%s[%s%s] %i/%i\r" % (prefix, "#"*x, "."*(size-x), _i, count))
		sys.stdout.flush()

	_show(0)

	for i, item in enumerate(it):
		yield item
		_show(i+1)

	sys.stdout.write("\n")
	sys.stdout.flush()

#os.system('xmessage "set!" -timeout 1 -center')
os.system('notify-send "set!" -t 1000 -u low')

greeting = ['~/av/wav/timerz/battlecruiser_operational.mp3',
			'~/av/wav/timerz/good_day_commander.mp3',
			'~/av/wav/timerz/shields_up_weapons_on_line.mp3']
sounder = random.choice(greeting)
os.system("mpg123 -q "+sounder+" &1>/dev/null")

os.system('clear')

for j in range(20):
	print

for i in progressbar(range(mins), "                      Pomodoro: ", 40):
	time.sleep(seconds_in_min)

#os.system('xmessage "time!" -timeout 2 -center')
os.system('notify-send "finish!" -t 1000 -u low')
for i in range(3):
	os.system("mpg123 -q ~/av/wav/sonar/sonar-3.wmv.mp3")
	time.sleep(5)

И делаем его исполняемым.

Я работаю в tmux и одно окошко консоли отдаю целиком на растерзание таймеру. Запускаю его в ней и, пока он рисует там прогрессбар работаю в соседних вкладках. В ~/bin у меня лежит три файла, которые отличаются только значениями mins и издаваемыми звуками — pom на 20 минут p5 на 5 минут и tea на 13 минут как чайный таймер — для него есть даже звук свистящего чайника.

Реклама

2 Responses to

  1. Мне больше нравится вариант на zenity отсюда. Простенько и со вкусом.

    Нормального софта для линупса (не апплетов для КДЕ\Гном, а именно отдельно запускаемого) я не нашёл, но есть хорошее приложение для андроидных смартфонов Pomodroido.

    Для меня помидор полезен тем, что не даёт мне слишком застревать на чём-то неработающем или слишком долго биться лбом о тупик :-) В течении 5-минутного перерыва я часто ловил себя на мысли типа «Хм… а я ж не то делаю-то, вот как надо!».

  2. Я вот честно пытался вспомнить почему мне не понравился вариант с zenity — так и не вспомнил. Я тогда работал на довольно странных линуксах — где даже at приходилось реализовывать через bash ( http://uco.puppyrus.org/stati/programmy/komanda-at-v-puppyrus-linux-sredstvami-bash.html ) — видимо zenity в тот момент там не было. Словом было что-то такое. А питон у меня есть всегда и везде :)

    Мне кажется отдельный софт для простенького таймера — это все-таки из пушки по воробьям. Есть at в конце-концов :)

    У меня на перерывах скорее просто «выстреливают» дополнительные решения :) Видимо каждый находит тут что-то свое :)

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

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