Linuxの簡単なリマインダー





会計士、エンジニア、秘書、マネージャー、専門家、専門家、構造部門長、さらには取締役など、パーソナルコンピューターを備えたオフィスで働く人々にとって、今日ではいくつかの問題の解決を同時に行うのが一般的です。



たとえば、顧客が電話して、契約の修正を求めます。 電話を切った後、同僚が電話をかけ、長い間忘れていた資料を送ってほしいと頼みます。 同僚がモバイルディレクターに電話をかけ、小さなレポートを作成するように依頼する方法を完了する時間はありません。 しかしその前に、あなたはあなたの質問に対処しました! 何も見逃さないように、すべてを覚えておく必要があります! 典型的な状況ではありませんか?



そのような状況ですべてに追いつくために、簡単なリマインダーが役立ちます。 しかし、簡単なリマインダーとは何ですか? そのシンプルさの基準は何ですか?

私にとって「シンプルなリマインダー」とは、次の原則に従って行動するものです。







私にとっては最高の解決策は、 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に投稿されています



All Articles