ストリームの出力先をファイルや標準出力に切り替えるTweetC++のストリームの出力先を任意にファイルや標準出力に切り替えたいときがたまにある。その度に標準出力ストリームやファイルストリームを定義し直して使うのは面倒だし、効率が悪い。そんな時は、以下のコードで示す方法で切り替えると楽だ。2~3行で変更できる。ostreamのポインタでストリームを保持しておけば動的な切り替えも簡単だ。URL短縮サービスbit.lyのAPIを使ってみたTweet最近、TwitterがTinyURLを捨ててbit.lyを採用したらしい。Engineで作成したTwitter送信機能付きメッセージボードで書き込んだURLをbit.lyで短縮して送信できるようにしてみた。今まではURLを含む投稿はTwitterに送信しないようにしていた。以下にbit.lyのAPIをPythonを使ってどのように利用すればよいか書いてみる。bit.lyで無料アカウントを取得する。Keyが貰えるので、bit.lyのAPIを利用できるようになる。APIの解説を参考にしながら、APIを使ってみる。URLの短縮も展開も簡単だ。JSONでもXMLでも利用できるが、今回はsimplejsonを使ってJSONを利用している。詳しくは最後にソースコードを付けたのでそれを読んで欲しい。コード中のアカウントはbit.lyのデモ用なので、自分のアカウントと置き換えて欲しい。URLが短縮URLなら展開され、通常のURLなら短縮URLが表示される。simplejsonとして呼び出し、urllib2.urlopenをurlfetch.fetchに変更すればよい。複数の画像ファイルを余白を埋めるように貼り付けるTweet何か面白いコードが書きたいなぁ、と思ってPython+PILで複数の画像ファイルを適当に余白を埋めるようにキャンバスに貼り付けるプログラムを書いてみたけどあまり面白くなかった。それでもせっかく書いたので一応公開する。入力した画像ファイルすべての面積を取得して、その面積と出力画像の面積の比を求める。すべての入力画像に対して、その比から大きさを変更する。これで入力画像の面積の総和と出力画像の面積が等しくなる。次に、入力画像を面積の大きい順にソートし、入力画像一つ一つと出力画像を重ね合わせ、もっとも余白との一致が大きい場所を見つける。その場所に入力画像を貼り付ける。貼り付ける際、全体の余白を少なくするために画像の大きさをランダムに1.2~1.5倍に拡大している。すべての入力画像を貼り付ければ完了だ。ここの画像はフリー画像素材EyesPicに置いてあった植物写真の22枚を貼り付けてみたものだ。複数の入力画像ファイル...のようにする。同じディレクトリにあるすべてのJPEGファイルをimage.jpgに貼り付ける場合、以下のようにすればよい。因みにデフォルトでは600×800ピクセルの大きさの画像となっている。YSIZEを指定することで自由に変更できる。*.jpg以下にソースコードを示す。静止画2009年5月7日木曜日NW-X1060を購入Tweetプログラミングをしているときに一つ気になることがある。それはPCから出るノイズだ。自分は職場でも自宅でも周りを数台のPCに囲まれているのでその音も馬鹿にならない。聞いているうちに何となく慣れてしまうのだが、常に耳に届くノイズは少なからずストレスになっているような気もするのだ。それもあって、ノイズキャンセリングヘッドフォンは複数所有している。最近、デジタルノイズキャンセリング機能を有したSonyのウォークマンNW-X1060が発売されたことを知った。フラグシップモデルらしい。高性能ノイズキャンセリング機能と聞くと食指が動く。無音のままノイズキャンセリング機能だけを働かせることができるらしい。今回もそれが大きな動機となって購入してしまった。所有しているノイズキャンセリングヘッドフォンは、BOSEのQuietComfort2、SennheiserのPXC300、SonyのMDR-NC22など。ほかにも安物のノイズキャンセリングヘッドホンがあったりする。今回はデジタルノイズキャンセリングと云うこともあり、それらと比べてもなかなかの性能を発揮しているようだ。自分の周りのPC環境で使うと、それまでうるさかったノイズがすぅーっと消えるのが心地よい。コーディングしているときに使ってみたが、音質が良く、長時間の使用でも聴き疲れがないのがいい。今までのものは耳が疲れてしまってコーディングなどの作業に集中ができなくなったりしたが、今回のものは疲れにくいようだ。それと、電車通勤時に動画を視聴するのにも便利。かさばらないし、有機ELなので画質はかなり良い。欠点としては、やはり付属のソフトウェア(SonicStage)が使いにくいことと、本体にストラップがつけられないので胸ポケットなどに入れて使うしかないこと。別売りの専用ケースを使えば良いそうだが、このぐらいは初めから付けて欲しかった。SonicStageは相変わらずだ。ソフトウェアの使い勝手が良くなるだけでだいぶ印象も変わるだろうに。比較する対象も持っていないので何ともいえない。結論としては、思ったよりも音が良く、聴き疲れもしないし、デジタルノイズキャンセリングも効果があり、購入して良かったという感想。音の聞こえ方や好みは人それぞれだと思うので、気になる人は実際に店などで実機を手にとってみるのが良いかも。Engineメッセージボード*当ブログに関する意見や要望などにお使いください。Googleアカウントでログインすることで書き込みができます。Twitterへの送信を同時に行うこともできます。ストリートビューで散歩*Googleマップのストリートビューを利用して散歩をするWebアプリです。ストリートビューとマップを分割してマーカーを視界タイプに変更することで使いやすくしてあります。APIを利用したグラフ・チャート作成ウェブアプリです。クリック一つで簡単にグラフを作成できます。ブログ記事への貼り付けなどにどうぞ。OpenIDテスト*OpenIDによるログインのテストを行います。mixiであればクリック一つで、他のOpenIDアカウントであればそのURLを入力することでテストできます。一言コメント表示機能付きです。HTML文字変換*テキストで使われているHTML特殊文字をウェブで表示できるようにするための文字変換ウェブアプリです。プログラムのソースコードなどをブログ記事に貼り付けるときなどに便利です。短縮URLチェッカー*フィッシングサイト判別機能付き短縮URLチェッカーです。テキストボックスに変換したいURLを入力すればbit.lyの短縮URLが表示され、bit.lyの短縮URLを入力すればもとのURLが表示されます。展開されたURLがリンク付きで表示されますが、もしフィッシングサイトの疑いがある場合は警告が表示されます。Trendsの急上昇ワードをランキング順に表示します。Googleでのキーワード・画像検索やWikipediaによる用語の説明もあります。※GoogleがAPIの提供を終了したため、現在停止中です。自己紹介noxゲームを楽しむだけの余裕と感性は失いたくないnoxです。