2011-07-04 1 views
3

誕生日プレゼント(Ubuntu上で動作するように)のための小さなカレンダーのようなアプリケーションを作成したいと思います。それは、毎日別の画像を表示することなので、呼び出されるたびに日付をチェックし、私が提供するコレクションから適切な画像を選択するだけでなく、実行し続ける場合は次の画像に切り替える必要があります次の日が始まるとき。プログラム内から現在の日付を定期的にチェックする方法はありますか?

呼び出し時の日付検査は問題ではありません。私の質問は2番目のケースに関係しています:プログラムの通知を翌日の始まりにするにはどうしたらいいですか?私の不器用なアプローチは、現在の日付を定期的にチェックして、日付の変更があったら表示された画像を変更させることですが、それは非常に迂回していて、特にエレガントではありません。

私がこれをどのように達成できるかについてのご意見がありましたら、お気軽にご返信ください。私は、PerlやPythonのいずれかでアプリケーションを書くことを目指しているので、これら2つの言語に関する提案は大歓迎ですが、他の提案も高く評価されます。

ありがとうございました!

答えて

1

この回答は非常にシステムに依存する可能性があります。プログラムが実行される時間を制御することは、システムに依存する可能性があります。すべての* nixタイプのシステムでは、私はcronを使用します。あなたが* nixシステムを使用しているとしたら、その答えはプログラムが実際に何をするかによって決まります。

イメージを選択する必要がある場合は、イメージを連続して実行するのではなく、イメージを選択して終了することをお勧めします。その後、次の日に再度実行されます(セットアップ方法に関するチュートリアルcron)。

しかし、それはUIのいくつかのフォームを持っており、それは、あなたは二つのアプローチに従うことができ、数日間稼働を維持するために(可能な読み取り)可能性があり、場合:それが、あるとして、あなたのプログラムを作成し

  1. を現在の時刻を定期的にポーリングし、日付のデルタ比較を行います。 Python timedelta objectsここにお手伝いします。これはあなたの控えめなアプローチです。
  2. もう1つの解決方法は、更新したいときにcronからシグナルを送信することです。このプロセスは、シグナルを認識させ、USR1のようなものに応答する必要があることを意味します。 The Python docsこれについて話し合っていますが、Web上で多くのチュートリアルを見つけることができます。このアプローチはデーモン化されたアプリケーションでもうまく機能します。

他にも多くのアプローチがあると確信していますが、それらはすばやく厄介なアプリのために思い浮かぶものです。

+0

返信いただきありがとうございます。私はこの質問を投稿する前に、簡単に精神的にcronの存在を認めました(私はそれを言及しておかなければなりません...)。しかし、私は、アプリケーションが対象である私の友人にとって、プログラムを実行するだけで、cronジョブも設定する必要はありません。必要なcronジョブを自動的に作成するインストールスクリプトを書く方法はありますか? – canavanin

+0

プログラムでcronエントリを作成することもできますが、何をしているのか正確にわからない限り、少し注意してください。定期的なポーリングの問題は、リソースを不必要に使用することです。それで、私の考えでは解決策はずっと簡単です。プログラムを最初に実行し、現在の時間を計算し、翌日の深夜を計算し、その時間の間スリープ状態にしてから、起床し、画像を変更して、別の日にスリープ状態にします。プログラムがイベントドリブンの場合は、それのために何らかの種類のタイマーオブジェクトが必要です。それ以外の場合は、スリープ状態になります。 – Richard

+0

ありがとう!それは確かに簡単で簡単な解決策です - 素晴らしい:) – canavanin

1

スクリプトの呼び出しのスケジュールについて考えましたか?

  • RUN_SCRIPT
  • RUN_SCRIPT --update

2.Schedule:スクリプトを実行する

1.Have二つのオプション:

は私にとって、最善のアプローチはこれですいくつかのタスクスケジューラ(たとえばCron)で更新が実行され、毎日実行されます。

3.現在の日の画像を確認する場合は、更新なしのスクリプトを実行するだけです。

私がこれらのいずれかの部分を拡張したい場合は、単にそれについて質問してください。

+0

私はcronアプローチに同意します。それはおそらく最もクリーンなものです。もう1つは何らかのイベントを実装することですが、一定のチェックを行う必要があります。 – erKURITA

+0

@ガンディーありがとう!私が納屋の返事に応じて書いたように、cronを使用する可能性は私には簡単に起こりました(しかし私はそれを言いませんでした、私は馬鹿です!)。私の友人が自分自身を設定する必要がないように、自動的にcronジョブを作成する方法を知っていますか? – canavanin

+0

http://docs.fubar.si/python-crontab/ しかし、よく書かれているかどうかはわかりません。ちょうどあなたが確認できる何か。 ここからダウンロードできます: http://pypi.python.org/pypi/python-crontab – Gandi

関連する問題