Hatena::ブログ(Diary)

負け犬がいろいろとかたったら

2012-05-17

はてなブログに移行してみようと思う

はてなブログに移行します。

http://gong023.hatenablog.com/

あんまりいい評判聞かなくてアカウント放置状態だったけど、なんだかんだむこうのほうが使いやすそうなので。

2012-04-22

ふぁぼスクリプト書いた

すごく今更何ですがユーザーIDを指定して最大20件までふぁぼれるふぁぼスクリプト書きました。
同じようなことをした人が世の中に一体何人いることかって感じですが。

ふぁぼスクリプトはいいとして、twitterAPIをいじるようになってからそれ用のクラスを色々試行錯誤しているので、自戒の意味を込めて今日はそれについて少し書きます。

まず今回ふぁぼスクリプトを書くにあたって、オレオレtwitterAPIのクラスは恥ずかしい話今までぎーまるbot用しか想定していませんでした。
で、それじゃあまりにも汎用性が’ないので他のTwitterアプリにも使えるようにしました。

そしてクラスを書き直していて思ったのですが、パターンの選定をとてもミスってますね。
singletonじゃなくてabstract factoryとかが適切だったのではないだろうか・・・。
前はsingletonで書いたら使いやすいぜヒャッハーとかいってたけど本当に何いってるの馬鹿じゃないのという感じですね。
twitteroauth.phpとかconsumer.phpとか使えばAPIURL変えるだけなのになんでいちいちfunction作ってるのか。意味が分からん。
まぁコンストラクタで必要なもの全部作ってしまってかつそれを外部から書き換えられないように保証するというのはすごくいいことなので、singletonfactoryを混ぜて書くのが正解なんですかね・・・。


他にもいろいろ気に入らない部分はあるのですが、仮にも既に動いているものを書き換えるのは怖いっすねー。
まぁめちゃめちゃ大勢の人に迷惑かけるわけではないので勇敢に書き直し作業を進めていきたいです。

こいつが例のダメダメクラスちゃんなので、遠慮なくツッコミ入れてくれるとうれしいです。
Page not found · GitHub

2012-04-18

まるちゃんのボタン Part2

http://d.hatena.ne.jp/gong023/20120415/1334493336
↑に書いてあるように前回のまるちゃんbotの修正したんですが

ごはんあるかどうか教えてくれる機能もついでにつけてみたけどよくかんがえたらまるちゃんでログインして普通につぶやけばよかったのではと思い始めた

みたいなことを書いてたら、実際に使ってくれた住人に
「その日たべるっていった人にリプライでツイートできるようにしたらいいのに」
って言われたので、それもそうだなぁと思って、そういうことができるようにコードを急遽書き直しました。

というわけで毎日スクリプトで計算した「ごはんたべたい」人のリストをリセット&再insertするようにしたんですが。
よく考えたらデータはDBに入れなくてもその都度計算すればいいんですよね。
勢いで書き始めて半分ぐらいで気付いたけど結局最後まで書きました。

ちなみにDBはmongoを使っているんですがせっかくドキュメント式のDB使うなら消去するのではなくとにかく突っ込んでいくのが本当な気がする。まぁ前回の実行時間もそうしてるからこれは前から抱えてたんだけど

まぁでも早く粗く実装するのも楽しいです。個人でそこまでお行儀よくなくていいよね。

github
https://github.com/gong023/public-product

2012-04-15

まるちゃんのボタン

前回だか前々回だかのブログでまるちゃんbotでごはん食べる人をカウントするようにしたよと書きました
まるちゃんbotにこんな機能つけてみた - 負け犬がいろいろとかたったら
現在botだと17:30にごはん食べたい人計算するようになっているのですが、その時間過ぎてもう一度食べたい人とか作りたい人とか計算する用のボタンを作りました
http://gong023.com/marubot/
こちらは17:30を過ぎてリプライしてしまった場合でもちゃんと拾って計算してくれます。
当然リセットも毎日されます。

中身のロジックは一切変えてないです。cronで回してたスクリプトを外から見える位置に移しただけ。
でもそれじゃつまらないなと思って無理やりjs使ってモダンな感じだしてみた。
ぶっちゃけajaxとかなくてもいけるから。あとcssもいい加減。

まぁ30分のクオリティだと思って、将来性に期待して下さい。
僕にとっては大きくはまらずに組めたということが今回の一番の収穫です。

github
https://github.com/gong023/public-product/tree/master/yaneura_marubot

追記:
ごはんあるかどうか教えてくれる機能もついでにつけてみたけどよくかんがえたらまるちゃんでログインして普通につぶやけばよかったのではと思い始めた

2012-03-21

まるちゃんbotにこんな機能つけてみた

ギークハウス高円寺の妖精まるちゃん(@geekmaru)に機能をいくつか追加しました。
住人向けのアナウンスも兼ねてブログに書いておきます。

こんな機能です

毎日4時にまるちゃんが「今日、ご飯いる?」と聞きます
f:id:gong023:20120322000451p:image:w320
それに対してこんな返信をしてあげると・・・
f:id:gong023:20120322000527p:image:w320
まるちゃんがその人数をカウントして五時半にまとめてお知らせしてくれます
f:id:gong023:20120322000534p:image:w320

==以下住人向けアナウンス==

使い方と注意点

4時のツイートについて
  1. 「今日、ご飯いる?」というつぶやきをtwittbot.netに登録しないでください。今度からは僕の書いたスクリプトで動きます(他のツイートは大丈夫)。
  2. ツイートするメンバーはぎーまるちゃんのリストから選出されます(https://twitter.com/#!/geekmaru/geekmaru-member
    1. このリストのメンバーを追加したり削除したりすると、その人も「ご飯いる?」の対象になってしまうので気をつけて。
5時半のツイートについて
  1. その日ご飯がほしかったら「ほしい」または「いる」という言葉を含めてまるちゃんにリプライして下さい
  2. その日ご飯を作ってくれる場合は「つくる」または「作る」という言葉を含めてまるちゃんにリプライして下さい。

こんなツイートでもまるちゃんは拾ってくれます。

  • 以下すべて「ご飯食べたい人リスト」に入ります
    • @geekmaru ほしいー
    • いるー @geekmaru
    • @geekmaru abcdefほしいです012345
  • 以下すべて「ご飯つくるひとリスト」に入ります
    • @geekmaru 作る
    • @geekmaru ああああつくる
  • リストが同じなら同一人物を二回はカウントしない。
    • @geekmaru いるほしいつくる作る(「ご飯食べたい人リスト」「つくる人リスト」は各一回ずつだけ入ります。)

補足

  1. ご飯をつくる人や食べたい人がいなかった場合、その部分はツイートされません。(両方いなかった場合五時半に何もツイートしません)
  2. ちなみこの技術はtwitterアカウントとリストがあればどこでも応用可能ですので使いたかったらどうぞ。

==住人向けアナウンスここまで==

技術的なお話

  • 「どうやったら昨日の『ほしい』というリプライを拾わないのか」というのを考えるのが多少面倒だけど毎日strtotimeでとった時間を保存すれば簡単でした。思ったより拡張性もありそう。
  • strtotimeで取得した時間は無駄にmongoDBを使って保存しています
  • mongoDBの特性は悲しいくらい活かしていません
  • twitterAPIにアクセスするクラスとmongoDBを使ってアクセスするクラスはsingletonパターンで作ったら非常に相性がよくてやりやすかったです

コードはgithubで公開しています:Page not found · GitHub