2010年5月31日

チャーハン諸島 for Mac

Twitter クライアント「チャーハン諸島」の詳細はこちら
http://archive.guma.jp/rice-islands.html

チャーハン諸島を Mac OS X 用アプリケーションにパッケージングしてみました。

チャーハン諸島 for Mac OS X (Snow Leopard 以降)
http://archive.guma.jp/rice/rice_Mac.zip
※当初公開したものは、全く起動できないという斬新な新機能が追加されてしまっていたので差し替えました。

といっても中身はこれまでとまったく同じで、機能的に何も増えたり減ったりしてません。使い方も一緒です。
MacBook Pro 買って嬉しそうにいろいろいじってたらできただけです。

Mac は Java アプリを普通のアプリっぽくパッケージングするツールが素で添付されてるんですね。
こういうプログラマー優遇なところはありがたいです。

「チャーハン諸島」に関する記事一覧

2010年5月24日

「チャーハン諸島」 Version 0.07 リリース

Twitter クライアント「チャーハン諸島」の詳細はこちら
http://archive.guma.jp/rice-islands.html

Twitter クライアント「チャーハン諸島」をバージョンアップしました。
今回は API 規制にお悩みの方にはわりと目立つ変更点があるので、ブログの記事も新たに書き起こしてみようかと。

最新バージョンの Ver.0.07 での主な変更点は次のとおり。

  • メインとサブの 2 種類のアカウントを登録できる。
  • 投稿時、メインアカウントが API 規制を受けていたらサブアカウントに切り替えて投稿する機能を追加。
  • 投稿パネルのサイズを 4 パターンから選択できるようにした。

要するに、アカウント 2 個用意しとけば実況等で盛り上がって投稿しすぎたとしても、エラーやアカウントの切り替えに煩わされずに済む、という感じで。

メインアカウントを優先して利用するようにしているので、メインが API 規制を受けていないかぎりはサブアカウントでログインすることはありませんし、サブアカでログイン中にメインアカの API 規制が解除されればメインに切り替わります。
もちろんアカウントの切り替えは自動で行われ、その間も自在に投稿できます。

「チャーハン諸島」は Windows / MacOS / Linux など、Java が対応しているさまざまな OS 上で動作します。
Java 公式サイト から最新版の Java をインストールすればすぐに使えます。既にインストールされている場合は、もっとすぐに使えます。

ダウンロードはこちらから。すでに利用されているユーザーは、起動時に自動アップデートされていますからダウンロードは不要です。

チャーハン諸島 http://archive.guma.jp/rice/rice.zip
Windows 版 http://archive.guma.jp/rice/rice_win.zip

rise_ss_.jpg

数字とかが表示されている辺りを右クリックするとメニューが、左クリックでウィンドウの移動ができます。

この「チャーハン諸島」を使えば、かの偉大な大陸への憧れに焦がれながら抱いていた、手の届かない歯がゆさとはもうオサラバです!(海外通販番組の吹き替え風に)

適当な Q&A

  • 投稿できるのはわかったんですけど、TL とか見られないんですか?
    メニューから「パネルを開く」を選べば、TL のツイートとかが表示されるパネルが現れます。1 パネル 1 ツイートという省エネ設計ですので、必要時にだけ使うことをオススメします。
  • リプライとかできないんですか?
    上記で開いたパネルにツイートが表示されているときにパネルの上のほうを右クリックすると、なんとメニューが開きます。あとはわかるな?わかるよね?わかってください。
  • なんか動かなくなったんですけど。
    アプリを再起動しても直らなかったら、アプリをフォルダごと削除してまたダウンロードし直してみてください。
  • プロキシ設定はどこ?
    あー今出ました!さっき出ましたから!そろそろお宅に着くかと思います!
  • ところで誰が作ってるの?
    わたしです。何かあれば @Mocel までお気軽に。

「チャーハン諸島」に関する記事一覧

2010年5月20日

Java でもカモフラージュ率の高い Twitter クライアントを

「ラーメン大陸 http://www16.atpages.jp/nigore/soft/」という素晴らしい Twitter クライアントをご存じですか。

これはどんなときでも、たとえ Twitter のサーバの調子が悪いときでも投稿力が変わらないただひとつのクライアントとして、多くの人に親しまれています。

ところがこのクライアントは Windows 専用だったため、それ以外の OS で投稿力を落としたくない人は使いたくても使えなかったのです。

そこで、Windows 以外の OS でも使えるよう Java でできるかぎり全力でパクってみました。

チャーハン諸島 for Windows http://archive.guma.jp/rice/rice_win.zip チャーハン諸島 for Mac(Snow Leopard 以降) http://archive.guma.jp/rice/rice_Mac.zip チャーハン諸島 http://archive.guma.jp/rice/rice.zip

rice_ss.jpg

最新版の Java をインストールしてから、上の Zip ファイルを適当なディレクトリに展開して、Win 版は rice.exeを、Mac 版は「チャーハン諸島」アプリを実行してみてください。
Linux とかだと rice.sh を実行するといい感じになります。

自動アップデーター付きなので、プログラムが更新されていれば自動的にこっそり更新されます。 いろいろうまくいっていれば設定ダイアログが表示されると思います。

OAuth 認証使ってますので、初回実行時は設定ダイアログの「コード取得」ボタンを押して Twitter の認証ページを開き、このダサいネーミングの「チャーハン諸島」を許可してやってください。
そしたら 7 ケタほどの数字が表示されますから、それをダイアログの「認証コード」にコピペして「認証」ボタンを押すだけ。 サーバが重いと失敗することがありますが、そのときはイチからやり直してやってください。

「糞すぎるwwwww即アンインスコするしwwwwwww」という場合は、ディレクトリごと削除すれば抹殺完了です。レジストリとか全然触ってないので安心ですね。ていうか Java からレジストリとか...だし。

で、どうせパクるなら TL 画面も楽しい感じにしようと思って、「1 ツイート 1 ウィンドウ」で、付箋紙アプリっぽくしてみました。 投稿ウィンドウの数字の辺りを右クリックするとメニューが表示されますから、なんか適当にいじってみてください。

これならおおっぴらに TL を眺めるのが憚られる環境でも、「これ付箋紙アプリですし」みたいな顔して平気で眺めていられます!
激しくツイートの多い TL だと間違いなく全部追っかけられませんけど、まぁ、そこはそういうものだと割り切れる人だけに使える、間口の狭いアプリだということで。

そんな感じで、パネルいっぱい表示してたらひとつひとつのパネルが島のように見えてきて、パクるなら似たような名前にしようと思い「チャーハン諸島」とかどうしようもない名前になってしまいました。

すみません。

作った人 : @Mocel

「チャーハン諸島」に関する記事一覧

2010年5月 3日

Twitter の TL をリアルタイムに

Twitter の "User Streams" が開発用途向けに試験公開されて、ともかく誰でも使える状態になってるので適当に触ってたりするわけですが。

すでに方々でレビューとか解説とかされてますけど、ストリーミングってことでいつも TL がほぼリアルタイムに流れてくるので、もうブログとか掲示板感覚ではなく、完全にチャットと化しますね Twitter が。
あなたが投稿した瞬間、あなたをフォローしてるわたしのストリームにツイートが届いてるわけです。ラグは 1 秒もありません。あなたに限らず、わたしがフォローしてる人のツイートすべてが 1 秒足らずでストリームに流れてくるわけで、今までとは TL の見え方が全然変わってきますね。

この User Streams は試験的な公開だからかツイートだけでなく、フォローしてるの人の「フォロー」とか「ふぁぼり」とか「ツイート削除」、これまでの TL には流れてこなかった情報も流れてきます。やっぱりリアルタイムで。
それがどうしたのって感じですけど、その気になれば「自分がふぉろってる人が最近フォローした人ホットリスト」とか「ツイート削除が多い人ランキング」とかがローカルで作れたりしますね。

TL 眺めるにはかなり便利な User Streams ですが、開発用の公開ってことでまだアプリとか配布できません。サーバ側がまだ準備できてないらしく、アプリとか配るとキャパをあっさりオーバーして大変なことになるからかと。

Java の勉強がてらせっかく作ったアプリも配れないので、せめてもの応用で「使っていい」ほうの Streaming API をリアルタイムに眺めるアプリを置いたりしてみます。

streamviewer_01.jpg

ハッシュタグをリアルタイムに追ったりするものです。
追いたいタグを #aaa,#bbb とか複数あるならカンマで区切って入力し SET ボタンを押してください。Twitter のユーザー名とパスワードを尋ねられるので、入力してじっとしてればハッシュタグを含むツイートが流れてくると思います。
リアルタイムに更新してるので、ボタン押したのに何も起こらない場合はそういうツイートをだれもしていないってことになります。

飽きたら CLOSE ボタンを押すか、ウィンドウを閉じてやってください。
レジストリとか設定ファイルとか全然使ってないので、不要になったらダウンロードしたファイルを削除すれば跡形もなく消え去ります。パスワードとかどこにも記憶してないのでご安心を。

Win 7 と Win XP でしか動作確認してないけど、Java だからほかの OS でもなんとなく動いたりすると思います。

アプリ:
StreamViewer.jar

2010年2月27日

また JavaScript

前の記事 http://archive.guma.jp/2010/02/javascript.html で書いた「それっぽいクラス定義」で、インスタンスを作る関数の戻り値にいわゆるクラスメソッドを突っ込む部分が二段構えになってるのは。

    var that = {};

    var init = function(opts){
        method.prepare(opts);
        return that;
    }
    that.init = init;

ここがどうして var that = { init: function(){ ... } }; となっていないのか。

続きを読む: また JavaScript

2010年2月26日

JavaScript でのクラス定義の一例

つい C++ や Java といった多言語でのオブジェクト指向に影響されて、JavaScript でもクラス作るときに

function Request(method, param){
    this.method = method;
    this.param = param;
}
Request.prototype = {
    init: function(opts){
        method.prepare(opts);
        return this;
    },
    send: function(sender){
        sender.send(this);
        return this;
    },
    setParam: function(k, v){
        param[k] = v;
        return this;
    },
    getParam: function(k){
        return param[k];
    }
}

var request = new Request("GET", { id: "boeboe" });

といった書き方をしてしまうけど、プロトタイプ志向の JavaScript 的にはイマイチというか、あとから prototype をいじって全インスタンスのメソッド差し替えとか全然余裕でできてしまうのでスッキリしない。

どうせ JavaScript で書くのなら、こんな風にしたほうが「違う言語」感が強まって「設計が全く異なるのに名前とか書式が似てるせいで生じる誤解」も防げてマシなんじゃないかと。

var createRequest = function(method, param){
    var that = {};

    var init = function(opts){
        method.prepare(opts);
        return that;
    }
    that.init = init;

    var send = function(sender){
        sender.send(that);
        return that;
    }
    that.send = send;

    var setParam = function(k, v){
        param[k] = v;
        return that;
    }
    that.setParam = setParam;

    var getparam = function(k){
        return param[k];
    }
    that.getParam = getParam;

    return that;
}

var request = createRequest("GET", { id: "boeboe" });

ほかの言語と比較するととても珍妙な感じだけど、こうした与えた createRequest() の引数 method とか param はもう外から絶対アクセスできない。作ったインスタンスごとのメソッド差し替えはできるけど、クラスとして定義されたメソッドはもう変更できないし。
スコープとか独特。

継承も何も考慮してないクラスだけどシンプルな設計のものならこれでじゅうぶんだし、凝った設計のものでもまた別の書き方で「JavaScript らしさ」は出せるわけだし。

いいかげん「とりあえず prototype プロパティを上書き」的にスタイルは廃れないかなとか思った。

2010年2月10日

懐かしの CGI カウンターとか

とても久しぶりに Perl で CGI カウンターを書いてみた。

申し訳程度にファイルの排他処理も組み込んでみたけど、完璧とはいえない排他処理ならなくてもいいんじゃないかという気がしないでもない。

続きを読む: 懐かしの CGI カウンターとか

2010年1月10日

万能インポート

昔のブログ記事をいくつかインポートした。

手動で。コピペで。

2009年12月30日

DB システムの変更

なんと Movable Type 5 から PostgreSQL のサポートが切られたらしい。ついでに SQLite も。
使える DB は MySQL だけということに。なんということだ、昔からの PostgreSQL 使いとしては看過しがたい。

とはいえ今さらブログシステム入れ替える気力もないので、おとなしく MySQL インスコしたんですけどね。
FreeBSD は ports で簡単インストールだから便利だわ-。

ブログ刷新

ちょっと前に、気むずかしい mod_fcgid さんがたぶん大暴れしたことが原因でブログのインデックスがぶっ壊れてしまったので、せっかくだから Movable Type の新バージョンをインストールしてみる。

デフォのテーマですごくシンプルなのがあったから、さっそく試してみる。