Coder Social home page Coder Social logo

piyo-ko / task_manager_for_chores Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 21 KB

片付けとか掃除とかの雑用をゆるめに管理するための単純なタスクマネジャ

License: MIT License

Perl 16.90% HTML 31.72% Shell 16.68% CSS 4.71% JavaScript 29.99%

task_manager_for_chores's Introduction

#task_manager_for_chores

対象となるタスク

片付けとか掃除とかの雑用をゆるめに管理するための単純なタスクマネジャ。 管理対象は、オフラインの雑事。コンピュータ上で行う仕事とか、オフラインでも締め切りのはっきりしている仕事とかは対象外。

  • 掃除機はN日おきくらいにかけたい
  • 洗濯はN日おきくらいにしたい
  • 植物の水やりはN日おきくらいにしたい
  • Nヶ月に1回くらいのペースで歯科医院にかかっておきたい
  • あ、あと不定期タスクだけど、X日までにはちょっと銀行に行かなくては!
  • 急ぎではないけれど、買い替え時のものがあるから、色々検討したり買いに行ったりしたいなあ
  • だがどれも絶対的な締め切りではない
  • 都合が悪ければ後回しでも (ある程度は) 平気なので、リマインドとか鬱陶しいことはしないでほしいわ

……という感じのもの。定期的なタスクと不定期なタスクの両方があることと、期限の長短があることだけは前提にしておく必要がある。

動作環境

ブラウザ + Perl + bash + sqlite3 があれば動くはず (macOS の環境で試しただけだが)。

大まかな設計

  • 状態の閲覧と、新規タスクの登録と、タスク遂行の報告は、HTMLページを通して行う。具体的には、そこでコマンドを生成する。
  • そのコマンドをターミナルに手動でコピー&ペーストして実行。
  • データはSQLiteで管理。
  • HTMLページはその度にPerlスクリプトかシェルスクリプトで作り直す。

って感じで、ちょっと不便かもしれないが、自分用だからまあいいや。

そしてそのHTMLページを、

  • ブラウザのホームからパッと開けるようにしておく、または、
  • ~/.bash_profileopen ~/Documents/hoge/fuga/index.html とか書いておいて強制的にほぼ毎日開くようにしておく (もしくは、~/.bash_profilealias chores='cd ~/Documents/hoge/fuga/' とか書いておいて、chores と打つだけでここのディレクトリに来られるようにしておく)

ことで、ふんわりと状況確認および進捗反映をしたいなあ、と。 HTMLページを使うならLocalStorageを使っても良さそうだけど、とりあえず使い慣れているもので作ってしまおう。

……というふうに、とりあえず考えている。

警告

自分がローカルで使うためのものなので、SQL文の生成など、手を抜いている。エスケープすらしていない。本当は DBD::SQLite モジュールと DBI モジュールを使って、プリペアドステートメントをPerl側で指定しておくなどして、安全に配慮すべきである。まあ、現状のやり方だと危険性はあるんだが、とりあえず。

使い方

(1) 初期化。 $ sqlite3 chores.db < init.sql と実行して、空っぽのDBを作る。

(2) 最初は、一つずつタスクを登録するのがかったるいので、まとめてCSVから登録したい。ということで、regular.csvirregular.csv というファイル名でデータを用意して (面倒だが primary key の列に自分でちゃんとID用の番号を振ること)、 $ sqlite3 chores.db < add_definitions_at_once.sql と実行する。

  • なお、面倒なのでCSVファイル名は固定。一回 mkdir bak としておいて、CSVファイルが古くなったら適当にリネームして ./bak/ へ移動するとか、あるいはいっそCSVファイルを捨てるとかで良いでしょう。
  • sqlite3 を起動して、where 節に is null を指定した場合と is "" を指定した場合で select 文を試してみたら、上記のようにしてCSVファイルから追加したレコードでは、空のカラムは、NULL ではなく空文字列が入っているようである。でも普通にSQL文を発行した場合は NULL になるみたい?

(3) 通常運転に入ったら、index.html を使う。……んだけど、まずその index.html を作るために、一度、$ ./init.sh と実行しておく。

(4) で、いよいよ通常運転ですが、単に index.html に従うだけですわね (ここで生成したコマンドをコンソールに貼り付ける前に、init.sh のあるディレクトリに移動しておく必要はある)。

(5) ターミナルで sqlite3 chores.db < calc_stat.sql とすると、簡易統計を表示するようにした。

Tips (というか運用でカバーするための方法)

遠大な計画

「ちょっと遠大すぎて、どうしたらいいか分からないタスク」は、とりあえず、5年とかめちゃくちゃ先の期限を設定して「タスクの存在だけはとりあえずメモしておく」ようにした上で、もうちょっと細かいタスクへの分割の仕方を思いついたら、その細かいタスクを新たな単発タスクとして、もう少し短い期限で登録する。

名称変更になった計画

タスク名を修正したいときは、sqlite3 をコマンドラインで呼び出して、自分で update 文を手打ちする。あまり起きない事象だろう、と期待しているので、とりあえずこれで逃げておく。 なお、その作業が済んだら、init.sh を実行すること。

周期・期日の変更機能は追加済み。

中止になった計画

タスクを削除したいときは、削除でなくて validity フィールドの値を0に更新する。具体的には、sqlite3 をコマンドラインで呼び出して、自分で update 文を手打ちする。あまり起きない事象だろう、と期待しているので、とりあえずこれで逃げておく。具体的には、たとえば、update regular_chores_idx set validity=0 where reg_chore_id=10; のような感じである。 なお、その作業が済んだら、init.sh を実行すること。

task_manager_for_chores's People

Contributors

piyo-ko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.