...

вторник, 6 мая 2014 г.

Случайные всплывающие советы

Давным давно я прочел книгу The Pragmatic Programmer: From Journeyman to Master (если кто-то не читал, очень ее рекоммендую). Книга является сборником очень полезных советов для разработчиков. Но этот пост не про книгу.

Недавно я решил просмотреть все советы снова и обнаружил, что некоторые из них позабылись. Так что я решил сделать что-то, что переодически напоминало бы их. Лучшим выбором оказались всплывающие оповещения.



Плюсы:



  • всплывающее окно легко сделать;

  • всплывающее окно не требует от меня каких либо действий, так что я могу пропустить совет, если хочу.




Реализация




Для начала я создал следующий скрипт и сделал его исполняемым:

#!/bin/sh
export DISPLAY=:0
CAPTION="Random advice"
PHRASES=/home/rasen/phrases.txt
cat "$PHRASES" | sed '/^$/d' | sort -R | head -1 | tr -d '\n' | xargs -0 notify-send "$CAPTION"


Скрипт извлекает одну произвольную строку из файла и отображает ее как оповещение.


Давайте разберем скрипт по кусочку:



  1. export DISPLAY=:0 нужно, чтобы скрипт заработал из-под cron;

  2. sed '/^$/d' убирает пустые строки;

  3. sort -R | head -1 извлекает произвольную строку;

  4. tr -d '\n' убирает ведомый пробел;

  5. xargs -0 notify-send "$CAPTION" отображает конечную строку в виде оповещения.


Запуск скрипта по расписанию




После этого, я запустил crontab -e и добавил задание с помощью следующей строчки:

0 * * * * /home/rasen/random-advice.sh

Это правило cron для запуска указанной комманды каждый час.


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


Альтернативы




Если у Вас нет cron'а или вы не хотите его использовать, вы можете выбрать любой другой способ, который будет запускать скрипт с указанной частотой.

Например, можно запустить скрипт руками внутри бесконечного цикла:



while true ;do
sleep 3600 && ~/random-advice.sh
done


Как еще одну альтернативу, вы можете использовати события systemd (не забудьте запускать скрипт от имени своего пользователя).


Бонус: все советы Pragmatic Programmer в .txt


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий