2017.2.7
シリアス記事って別に人に見せびらかしたくはないしということで
まぁたまにはプログラムのお話をしましょ。プログラムの話っていうほど難しい話じゃないですけど。
今年度に入った頃ぐらいからtwitterを活用し始めてるわけですけど、その一環として、日記の更新をtwitterで告知できるように
cronを組んだんですね。
まぁ、これは半分twitter連携のテストとして作ったもので、SQLiteで簡易的にしか作ってないんですけど、そこそこ有益に働いてくれてるんじゃないかなって思います。
仕様としましては・・・・・・
1.23時以降であり、かつその日の日記ファイルと目次が空でない場合、タイトルを網羅してツイートする
2.1のチェックを1分ごとに繰り返す
3.1度更新ツイートをした場合、次のチェックは1時間後まで延期する
ということをやっています。
日記ファイルと目次の2つのファイルをチェックしているのは、書き溜め対策です。
次に書くことが決まっている場合、目次にタイトルだけ入れることもありますし、書き溜めしている場合は目次ファイルをコメントアウトして、空として扱うことで非表示にさせる、という手段を取っているわけですね。
まぁ、具体的にはこういうことですね。これで先に8日の記事のタイトルを入れてもコメントアウトされているのでemptyとして取り扱うことができるわけですね。
さて、ここで以前からの懸念点として
シリアス記事って宣伝すべきなのかどうか?というのがありました。
基本的には「余計なことは書かない」のが一番ですし、書く必要ないことは書きません。
でも、この日記はエンターテインメントとしてやっているわけでなく、自分の人生の備忘録として書いているので、大きな出来事に関しては書き記したいものです。
もちろん、人にあまり見せたくないけど書きたいなあ、というものは時限記事とという扱いにし、数年後まで非公開になるようにプログラムはしてあります。
ただ、真面目な話でも別に隠すようなことでもないことも結構ありまして、別に見たきゃ見せてやるよ(震え声)みたいな記事も結構ありましてね。
しかし、真面目な話ということで、好き好んで「見てみて!!!」みたいな感じにはしたくないなぁーみたいな感情は昔からありました。
ということで、今日はそんな日記更新プログラムに手を加えてみようかなって思います。
具体的な仕様としては
もし、その日の記事にシリアス記事が含まれていたらツイートしないということにします。
さて、今動いているプログラムはこんな感じになっております。
シリアス記事を見つけた瞬間処理を終了してしまうといつまで経ってもデータベースが更新されないので、メッセージ生成中のループにて判定をすれば良いかなと思います。
つまり、画像でハイライトされている行付近に一言書き加えようかなと。
どういうことをするかというと
メッセージ生成中にシリアス記事を示す変数が発見されたら、その時点でエラーをthrowして強制終了すれば、問題なく処理ができそうですね。
というのも、この前の時点で既にデータベースのUPDATEが実行されており、これ以降で処理をぶった切ると、ツイートはしていないがデータベースは更新されているということになるため、その日の告知をすっ飛ばすことができそうです。
んじゃ、コーディングしましょ。
こんな感じになりました。これで上手く動くかどうかのテストはちょっとめんどくさいので、いきなり本番環境で動かしますけど、もしなんかバグってたらここがマズってたんだなっていうことで。(笑)