会計士、エンジニア、秘書、マネージャー、専門家、専門家、構造部門長、さらには取締役など、パーソナルコンピューターを備えたオフィスで働く人々にとって、今日ではいくつかの問題の解決を同時に行うのが一般的です。
たとえば、顧客が電話して、契約の修正を求めます。 電話を切った後、同僚が電話をかけ、長い間忘れていた資料を送ってほしいと頼みます。 同僚がモバイルディレクターに電話をかけ、小さなレポートを作成するように依頼する方法を完了する時間はありません。 しかしその前に、あなたはあなたの質問に対処しました! 何も見逃さないように、すべてを覚えておく必要があります! 典型的な状況ではありませんか?
そのような状況ですべてに追いつくために、簡単なリマインダーが役立ちます。 しかし、簡単なリマインダーとは何ですか? そのシンプルさの基準は何ですか?
私にとって「シンプルなリマインダー」とは、次の原則に従って行動するものです。
- ホットキー(または、Ctrl + Shift + Xなどのキーボードショートカット)を使用してリマインダーダイアログを開きます。
- 時間とリマインダーのテキストを簡単なわかりやすい言葉で入力します(たとえば、「15分後、アレクセイに資料を投げ捨てる」、「監督への報告に11時」、「昼食に13-15時」、「手紙に続く15:10に明日」、「水曜日に10税へ」
- Enterキーを押します。
- 所定の時間に、リマインダーがポップアップします。このリマインダーは閉じるか、遅延させることができます。
私にとっては最高の解決策は、 XMinderプログラムです。 おそらく、簡単なリマインダーを開発するための技術的なタスクを書いたら、XMinderのように見えるでしょう。
私はこのプログラムを長い間使用していましたが、ある日、Linuxオペレーティングシステムを稼働中のコンピューターにインストールすることにしました(残念ながら、XMinderプログラムはWindowsでのみ記述されています)。
このような素晴らしいリマインダーの喪失は重大であり、解決策を見つける必要がありました...私はプログラムを自分で書くことにしました。
以前は、html、php、 actionscript(flash)でプログラムを作成した経験はほとんどありませんでした。 しかし、そのようなタスクのために、Python + Bash + Zenity + Atを選択することにしました。
なぜpython -デフォルトでLinux Mint 17ディストリビューションにインストールされていたため、適切なドキュメントがあったため、新しい言語を習得する最初のステップの後、問題を解決できることに気付きました。
なぜバッシュなのか? -これは別のストーリーであり、リマインダーの「延期」機能に関連付けられています。
なぜ禅 -シンプルで簡潔であるため-ほとんどのLInuxディストリビューションではデフォルトで構築されています。
なんで? -したがって、問題全体を解決するのはまさにこのプログラムです! そして、コンピューターを再起動した後でもデータを保存する方法を知っています!
したがって、いくつかのプログラムをまとめて、必要な構文を追加しました。
その結果、2つのファイルが得られました。
remind.py:
#!/usr/bin/env python # -*- coding: utf-8 -*- # RemindMe v1.5 created by Dennis Smal' in 2014 godgrace@mail.ru from __future__ import print_function import subprocess import re import sys def replace_all(t, d): """ """ for i, j in d.iteritems(): t = t.replace(i, j, 1) return t def get_datex(text): """ , """ whatdate = '' delwhatdate = '' datex = re.findall(r'\d{2}[.,-]\d{2}[.,-]\d{4}|\d{1}[.,-]\d{2}[.,-]\d{4}',text) # 19.08.2014 19-08-2014 19,08,2014 if datex: date = datex[0].replace('-','.').replace(',','.') # 19.08.2014 whatdate = date delwhatdate = datex[0]+' ' return whatdate, delwhatdate def get_day(text): """ , """ when = '' delday = '' day = re.findall('|| | | | | | | ',text) daywithoutin = re.findall('||||||',text) if day: ind = {'':'tomorrow', '':'tomorrow', ' ':'mon', ' ':'tue', ' ':'wed', ' ':'thu', ' ':'fri', ' ':'sat', ' ':'sun'} when = replace_all(day[0], ind) delday = day[0]+' ' elif daywithoutin: ind = {'':'mon', '':'tue', '':'wed', '':'thu', '':'fri', '':'sat', '':'sun'} when = replace_all(daywithoutin[0], ind) delday = daywithoutin[0]+' ' return (when, delday) def get_clock(text): """ , """ how = '' delclock = '' clock = re.findall(' | | | | | | | | ',text) if clock: # , , , clockbank = {' ':'min', ' ':'hour', ' ':'days', ' ':'min', ' ':'hours', ' ':'days', ' ':'min', ' ':'hours', ' ':'days'} how = replace_all(clock[0], clockbank) delclock = clock[0] return (how, delclock) def add_task(out, x): """ at""" # , #x = 'at now' #print (x) cmd = 'echo "DISPLAY=:0 ~/remindme/task %s" | %s' % (out, x) subprocess.Popen(cmd, shell=True) def main(when=" 15 ", reminder=""): warn_cmd = [ 'zenity', '--warning', '--text=" .."' ] cmd = [ 'zenity', '--entry', '--title=', '--text= ', '--entry-text={} {}'.format(when, reminder), '--width=400' ] loop = True while loop: get = subprocess.check_output(cmd) # text = get+' ' # , " 10 ". , clock . clock "" , "" "". find = re.findall(' [0-9]+| [0-9:-]+| [0-9:-]+| ',text) if get: # , if find: # , what = find[0].split() timex = what[1].replace('-',':').replace('','1') if len(timex) > 2: # " 10" " 10:00" time = timex else: time = timex+':00' whatdate, delwhatdate = get_datex(text) when, delday = get_day(text) how, delclock = get_clock(text) reps = {'':'at now + %s %s' % (timex,how),'':'at %s %s %s' % (time,when,whatdate),'':'at %s %s %s' % (time,when,whatdate)} wors = {' %s %s' % (what[1],delclock):'',' %s %s' % (what[1],delclock):'',' %s ' % what[1]:'',' %s ' % what[1]:'', '%s' % delday:'', ' ':'', ' ':'', '%s' % delwhatdate:'',} # x = replace_all(what[0], reps) # , out = replace_all(text, wors) # add_task(out, x) loop = False else: error = subprocess.check_output(warn_cmd) else: loop = False def usage(): s = ": {} [ []]".format(__file__) print(s) if __name__ == "__main__": if len(sys.argv) <= 3: main(*sys.argv[1:]) else: usage()
およびタスク:
#!/bin/bash zenity --question --title= --ok-label= --cancel-label=Ok --text="$*" case $? in 0) ~/remindme/remind.py " 15 " "$*" ;; 1) ;; esac
ファイルは1つのディレクトリに配置し(〜/ remindmeがあります)、実行可能にする必要があります(たとえば、コマンド "chmod + x"を使用)。
たとえば、キーボードショートカットCtrl + Shift + Xなど、remind.pyファイルにホットキーを割り当てる必要があります(これはディストリビューションによって異なります)。
ダウンロード用のファイルはこちらから入手できます 。
プロジェクトはGitHubに投稿されています 。