固定したカメラで撮った動画で、画素ごとに時間について平均を取れば、(適当な速度で)動くものを消せます。Mathematicaだとこんな感じです。(参照:フリーソフトウェアを使う方法) Export["result.jpg", Image[Mean[Map[ImageData, Import["movie.mov", "ImageList"]]]]] おまけ:フレームの平均を計算していく過程(最初の5秒を30秒で) 詳細:風景から歩行者が消えていく様子(リアルタイム版) 追記:画質的には平均ではなく中央値や最頻値を使った方がいいかもしれませんが、「手軽」ではなくなります。「平均でもできるんだ」という「手軽」さの実例だと理解していただければと思います。 中央値:MeanをMedianに置き換えるだけで試せますが、計算時間・消費メモリともに増大します。平均なら約90秒で終わるこの動画(1280x
魔方陣の解の列挙は並列化しやすそうな問題ですが、ここでの方針では、探索効率を上げるためには条件分岐が不可欠なので、(「数」を求めるだけだとしても)GPGPUでうまくやる方法がわかりません。そこで、CPUに載っているコアのみで並列化します(Xeon Phiなら簡単なのでしょうか→追記参照)。 一番外側の、0から(1<<25)-1まで変化する変数iのループをOpenMPで並列化します(schedule(guided)では遅くなります。schedule(auto)はVisual C++でサポートされたら試します)。変数iは上の図の緑の部分(カンで5個にしました)を各数5ビットで表現し、つなげたものです。マスに入りうる数は1から25までなので、5ビットというのはちょっと冗長ですが、とりあえずはよしとしましょう。 出力はバイナリ形式で、1つの解に25バイト使います(1つのマスに入る数を1バイトで表現
追記:デスクトップのすべての機能が使えるわけではありませんが,クラウド版も無料で使えます。(こちら) Raspberry Piという特定のプラットフォーム上でのことですが、ついにMathematicaが無料になりました。 The Wolfram Language and Mathematica on Raspberry Pi, for free かつてNeXTにバンドルされたこともあったらしいのですが、Mathematicaの価格は、それを無視できるほど高いNeXTの価格に含まれていたと考えるのが妥当で、無料になったのは実質的には初めてです。(Mathematicaについてよく知らない人はWikipediaへ、入門はMathematicaラーニングセンターから) Raspberry Piは、Amazonでも4000円程度で買えますが、今回の発表でその価格が変わったということもありませんから
平野啓一郎さんが「分人」という概念を提唱していて、それを知ると人生のモヤモヤがすっきり整理できたりするという話を聞いたから、平野啓一郎『私とは何か――「個人」から「分人」へ』(講談社, 2012)を読んでみた。(参考文献リストなし。索引なし。) 「個人(individual)」という言葉の語源は、「分けられない」という意味だと冒頭で書いた。本書では、以上のような問題を考えるために、「分人(dividual)」という新しい単位を導入する。(p.7) かつて加藤典洋さんが、村上春樹『ねじまき鳥クロニクル』について次のように書いていたのが思い出される。 これまで文学は、少なくとも近代以降、インディビデュアル(in・dividual)、これ以上は分割できない単位としての個人を基礎として、その上にモラルの問題を形象化してきた。(中略)しかしここで村上は、(中略)、個人がなくなる先の物語を仮構すること
私とは何か 「個人」から「分人」へから続く。 仮に「分人」という考え方がいいと思っても、それをテクノロジーでサポートしようとすると、いろいろ難しい問題を具体的に解決しなければならなくなります。Joel Spolsky編『BEST SOFTWARE WRITING』(翔泳社, 2008)から、そのような話題を2つ紹介しましょう。(参考文献リストなし。索引あり。) 1. サポートすることはできない思わせる話(ダナ・ボイドの2004年6月の講演「自閉的ソーシャルソフトウェア」から) 知ってのとおり、インターネットは社会的なアイデンティティがもはや問題とならない世界という幻想を満たしてはいなかった。「チューリングゲーム」(http://turing.gatech.edu/)と呼ばれるプロジェクトで、エイミー・ブルックマンは、ペルソナを通じて他人を演じようとする場合でも、その人の普段のアイデンティテ
「千葉工業大学まで車で行くと何分くらいかかる?」とGoogleに訊ねた結果のまとめ twitter.com/yabuki/status/… — Taro YABUKIさん (@yabuki) 2013年3月30日 各地点から千葉工業大学正門(北緯35.6898・東経140.0203)までの距離を Google Distance Matrix API で取得し、Mathematica の ListContourPlot で、ColorData["RedGreenSplit"] の色を付けて描きました。利用できるカラースキームは ColorData["Gradients"] で取得できます。 もちろん、この地図で色がついているからといって、海上をスタート地点にすることはふつうはできないでしょう。
拙著『Webアプリケーション構築入門(第2版)』の5.3節「Twitter API」は、以下のような構成になっています。 XMLの処理(Java) JSONの処理 PHP JavaScript コラム:JSONP Twitter APIの大部分は、OAuthと呼ばれる認証が必要なのですが、この節の目的はHTTP通信でよく使われるXML形式とJSON形式のデータの処理方法を紹介することだったので、認証の不要なパブリックタイムライン https://dev.twitter.com/docs/api/1/get/statuses/public_timeline を採用していました。 教育的には便利なこのAPIが、先日廃止されてしまったため、5.3節のほとんどのコードが動かなくなっていました。ほとんどすべてのサンプルが動く形で提供されていることを一つのウリにしている書籍で、これはいけません。 とい
Twitter Streaming APIで取得したツイートをブラウザにプッシュする方法の続きです。 2、3年前に、位置情報付きのつぶやきをGoogle Maps上にリアルタイムに表示するウェブアプリを作りました(動画)。そのときは、クライアントの言語に自動翻訳したり、つぶやきを読み上げてみたり、Google Earthにも対応したりしていたのですが、利用していたサービスが終わってしまったり、APIのバージョンが変わってしまったりしたために、動かなくなってしまいました。 そこで、ここではエッセンスのみを再現してみようと思います。当時はサーバで受信したTwitterのストリーミングデータをブラウザに送信するのはちょっと面倒だったのですが、node.js(とSocket.IO)が使える今では、「あの苦労は何だったんだ?」という感じになっています。 以下のリンクで試せます。 http://twi
「node.jsでTwitter Streaming APIを利用する方法」の続きです。 Streaming APIを使ってサーバで受信したつぶやきをブラウザにプッシュするには、Socket.IOを使うのが簡単です。 準備 必要なパッケージをインストールします。 npm install socket.io express ntwitter サーバ側 Streaming APIで取得したツイートの情報を、次のようなJavaScriptコード(server.jsとします)でクライアントにプッシュします。consumer_keyとconsumer_secret、access_token_key、access_token_secretの部分は適切なもので埋めます。 var express = require('express') , app = express() , server = requi
ntwitterを使って簡単に実現できます(他にもいろいろあるかもしれませんが、最初に試したのがntwitterでした)。 取得した情報をコンソールに出力するだけの簡単な例を作ってみましょう。 まず、Twitter Developerでアプリを登録し、consumer_keyとconsumer_secret、access_token_key、access_token_secretを取得します。 node.jsをインストールします。 sudo apt-get install git npm # Ubuntu 12.04 sudo apt-get install git npm nodejs-legacy # Ubuntu 12.10 ntwitterをインストールします。 npm install ntwitter 次のようなJavaScriptファイルを作ります(server.jsとします)
「主人公がラストで特攻したら奇跡」という点において、『風の谷のナウシカ』は『さらば宇宙戦艦ヤマト』のパクリだそうです。こういうパクリの関係を大量に集めて視覚化したパクリの系譜ネットワーク(≠ツリー)が、岡田斗司夫『オタク学入門』(太田出版, 1996)に掲載されています。(新潮OH!文庫版・新潮文庫版) ノードの関係だけを再現すると下のようになります(クリックで全体表示)。『オタク学入門』に掲載されているのはもっと詳しくて、先ほどの「主人公がラストで特攻したら奇跡」のような説明がエッジに付けられています。 すべての物語のパターンは聖書に含まれる47種類で尽きているというように、整理の仕方を根本的に変えるなら、パクリの系譜をツリーで表現することはできるかもしれませんが、とりあえずは、パクリの系譜はツリーではありません。ツリーで整理できればそれはすごいことですが、ネットワークの段階で、オタクの
前提:Twitter Developersでアプリのconsumer_key等を取得しておく必要があります。詳しく知りたい人は「Twitter OAuth」などを調べるといいでしょう。 なぜこんな技術が必要なのかは、cURL編で書きました。 Streaming APIを使うときは、接続が切れてしまったときにいかに接続し直すかというのがキモなわけですが、cURLで簡単に実現する方法がわからなかったので、240秒ごとに強制的に接続し直すという方法を採用しました。この方法には、(1)再接続のときにつぶやきを取りこぼす危険と重複して取得する可能性があること、(2)接続が切れてから再接続を試みるまでに平均で120秒かかる、という問題がありました。 Streaming APIは、つぶやきが無いときには「CR LF」を30秒おきに送信してくるので、これをチェックすれば切断を検出できるのですが、検出と再接
Peter Seibel著, 青木靖訳『Coders at Work プログラミングの技をめぐる探求 』(オーム社, 2011) カバーは「アテネの学堂」。カットされた右サイド、アリストテレス側を埋めるにふさわしい、スーパースター15人へのインタビュー集。さまざまな抽象度で仕事をしている偉人の多くが、ライブラリを組み合わせるだけの現状を憂えているのが印象的だった。ソフトウェアに関わる最重要文献を網羅した、巻末の文献リストは要チェック。デザインパターンや形式的証明、XPなど、流行りものをやっつけるための権威付けがほしい人にもおすすめ。 印象に残った発言(一人一個)と、インタビューに登場したにもかかわらず巻末のリストには載っていない文献をまとめておく。文脈が気になる人は書籍にあたってほしい。 ジェイミー・ザウィンスキー (Jamie Zawinski) みんなが最高だと言っていた本に『デザイン
拙著『Webアプリケーション構築入門』で想定している作業環境は、UbuntuとWindows、Mac OS Xです(Ubuntuを推奨)。本書執筆時点のUbuntuの最新バージョンは10.10でしたが、よりサポート期間の長い10.04 LTS (Long Term Support) を採用しました。 Ubuntu 11.04がリリースされた現在においても、10.04 LTSを利用することに特に問題があるとは思いませんが、ソフトウェア環境は常に最新に保っていたいという読者にとっては問題でしょう。そこで、Ubuntu 11.04を導入する方法を動画にしておきました。 ついでに、Ubuntu 11.04の新しいデスクトップであるUnityを有効にする方法を紹介します。本書で利用しているデスクトップであるGNOMEとUnityはずいぶん違うので、「本のとおりにすすめたい。新しいものは今は要らない」
新しいプログラミング言語を作りたいと思ったら、そのプロトタイプはCのような低級言語ではなく、高級言語で実装したほうがいいのではないでしょうか。もちろん実行時のパフォーマンスなどのために、最終的にC言語で実装するということはあるかもしれませんが(相対的な話ではありますが、C言語を低級あるいは低水準と呼ぶのが許せないという人は、K&Rの1ページ目を参照してください。日本語訳では「はじめに」のp.2です。)。 Cは比較的“低水準”の言語である。この性格付けは非難の意味を込めているのではない。これは単に、Cが普通のコンビュータで扱う種類の、すなわち文字、数、アドレスを扱えるようになっているという意味である。もちろん、これらのデータを組み合わせて、現実の機械で実行されるような普通の算術論理演算でいろいろな処理を行なうことができる。(p. 2) 以下、本題 プログラマがC言語を学ぶべきたった一つの理由
『コンピュータプログラミングの概念・技法・モデル』 「プログラミング言語って何がいいの?」という、何度も繰り返され、これからも繰り返されるであろう疑問への答えとして、私が知る限り最適な1冊。 残念なことに、900ページを超える本格的な本だから、「プログラミング言語って何がいいの?」と人に尋ねてしまうような弱気な人には勧められないかもしれない。 私は、 C言語, C++, Javaの系列のものばっかりたくさんやるのって退屈じゃない?(学ぶべきプログラミング言語?) 最近、動的か静的かっていう議論ばっかりじゃない? PrologとかSQLみたいなのをちょっと知ってるだけでも生産性がずいぶん上がるんじゃない?( 例:油売り算・動的SQLによる数独の超高速解法) みたいな大ざっぱな印象でしか語れないからいまいち説得力がないんだけど、これからは、この本を勧めて終わりということにできるかも(でも、90
auとGmailと合わせたサービスau oneがはじまったから試してみた。去年この話を聞いたときは「うまいことを考えたね」と思ったんだけど、さて。 まず、au oneへの登録がかなり大変だった。使いにくい携帯のキーボードで、何度パスワードを入力したことか。あの登録ページを作った人は、絶対PCの感覚でやってると思う。 登録が完了してアクセスしてみる。ログインが不要なのはかなり便利。UIはほとんどモバイル版Gmailと同じ。一番上に4行分くらい使って「au one メール」とかいう画像が表示されているのがかなりうざい(この分もパケット代とってるんだろうね)。小さい画面を有効に使おうという考えはauにはない(実例)、au的には有効に使っているか。 ログインが不要と書いたけど、inboxに行く前に、ポータルみたいなところを経由することがあって、これもかなりうざい。パケット代払ってもいいから飛ばして
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く