基本的にはnetstatコマンドを使えばいいのですが、
linux系とはオプションがちょっと違います。
sh>>
netstat -a -o | grep 12345
<<--
上記のコマンドを実行すると、一番右端のカラムにPIDが出力されます。
基本的にはnetstatコマンドを使えばいいのですが、
linux系とはオプションがちょっと違います。
sh>>
netstat -a -o | grep 12345
<<--
上記のコマンドを実行すると、一番右端のカラムにPIDが出力されます。
cmd.exeから以下のようにコマンドを実行することで、
WindowsのプロセスをIDでKillすることができます。
sh>>
taskkill /PID 12345
<<--
強制終了する場合は、/Fオプションを追加します。
prototype.jsのEvent.observeは非常に便利なのですが、
初期化処理など、一度だけイベントの処理したい場合にはちょっと不便です。
度々そのような処理を行う機会があったので、以下のような
一度だけイベントをハンドルする関数を作ってみました。
js>>
Event.observeOnce = function(element, event, observer){
var handler = function(){
Event.stopObserving(element, event, handler);
return observer.apply(null, $A(arguments));
};
Event.observe(element, event, handler);
};
<<--
使い方は、通常のEvent.observeと同様です。
js>>
Event.observeOnce(document, 'dom:loaded', function(){
/* some code goes here */
});
<<--
Railsアプリケーションであれば、public/javascripts/application.js
あたりに置いておくと便利かもしれません。
以前は、Railsのhelperメソッドのオプションや細かい挙動を調べるために、
secondlifeさんの
http://api.rails2u.com/
や、
:::ruby.search:::
のお世話になることが多かったのですが、
近頃ではRailsのドキュメントを参照する機会が減ってきました。
細かい理由はいろいろあるのですが、一番大きいのは、
以前紹介したRak
を使って直接Railsのソースを確認するのが便利な事です。
使い方はこんな感じです。
vendor/rails以下にRailsをfreezeさせます。cd vendor/railsしたスクリーンを用意しておきます。rak def\ method_nameを実行して、出てきたファイルをvimで読む。さらに、細かい挙動やメソッドに渡ってきた値を調べたい時などは、
vendor/railsのソースにdebuggerと書き込んで、script/server -uでデバッグモードを起動します
(「Rails 2.0でデバッグをする新しいやり方」参照)
apt-get install git-coreですんなり終わるかと思っていたら、
GNU Interactive Toolsというのと競合してるらしく、
以下のようなメッセージが出てきます。
pre>>
git, the filemanager with GNU Interactive Tools, is now called gitfm.
If you are looking for git, Linus Torvald's content tracker, install
the cogito and git-core packages and see README.Debian and git(7).
This transition script will be removed in the debian stable
release after etch.
If you wish to complete the transition early, install git-core
and use (as root):
update-alternatives --config git
Press RETURN to run gitfm
<<--
指示の通り、update-alternatives --config gitを実行すると、
今度はこんな感じのメッセージが出るので、
pre>>
There are 2 alternatives which provide `git'.
*+ 1 /usr/bin/git.transition
2 /usr/bin/git-scm
Press enter to keep the default[*], or type selection number:
<<--
2の/usr/bin/git-scmを選択します。
これでGitを使えるようになりました。
このブログに英語(非常にbrokenですが)で書いている記事を、
今後はもう一つのブログの方に書くことにしました。
理由としては、複数の言語が混在しているのは読みにくいのでは
ないかということと、別なブログとして英語のブログを作ることで
英語の勉強に気合を入れるためです。
ということで、よろしくお願いいたします。
At rev. 8929, I have found a good news for OpenID users.
http://svn.rubyonrails.org/rails/plugins/open_id_authentication/CHANGELOG
Tied plugin to ruby-openid 1.1.4 gem until we can make it compatible with 2.x [DHH]
Thanks DHH!
OoO workshop has been successfully held on last Sunday thanks to SGI Japan.
Syoyo, the founder of this event, had predicted the future of GPU in his presentation using a comparison of two charts which are about the Nikkei 225 index and the speed of GPU. Detail is
here.
This is the most interesting prediction about GPU I ever met. Nowadays, CPU is speeding up much faster than GPU and its power consumption is still low against GPU's.
I think that FPGA can be a competitor of CPU rather than GPU in near future. The number of gates in FPGA has become very large so that it could be used for development of very complex processor such as Raytracing Processing Unit as known as RPU.
From yesterday to this morning, we had set up two MySQL servers as master-to-master configuration.
One server is located in Tokyo, the other is in Shiga.
They are replicated each other in order to get our system redundant and load-balanced. We had used
OpenVPN
for this purpose.
It is very easy to setup by using tunnelling.
Okey, we agree with that the VPN will become the neck of a bottle if our network get heavy traffic.
But fortunately or unfortunately, it is not so heavy.
So we considered that a performance issue would be still no problem, against a stability issue.
イベントのお知らせです。
OoO(Offline meeting for Offline renderists)
いちおう今回のメインテーマはあって、それは OoO をオンラインでフォローするための、ompf のオフラインレンダラ版フォーラムを RoR で作ろうというものです.作っていただける方はいるので、それにときどき意見を出すみたいな。
まあでもその一方で、 MLT の実装とか, 論文書くとかしてても OK.
スライド作成が間に合えば、世界初、日本でしか聞けない(<- これ大事)、MUDA のプレゼンとかするかも.
ということで、僕は作る人として参加します。
Offline Renderingについて熱く語りましょう。
このブログの背景画像を設定は、
以下のような感じのCSSで中寄せしているのですが、
これがなぜか、OperaとSafariでは右側に1 pixelずれてしまいます。
css>>
html {
background: #DCDCDC url(/images/bg.gif) top center repeat-y
}
<<--
しょうがないので、サーバサイドでそのようなブラウザを検出して、
中寄せしているBlock要素の左側に、以下のように1 pixelだけ
paddingを入れています。
css>>
#base.center-fix {padding: 0px 0px 0px 1px}
<<--
こういう微妙な挙動の違いは、acidテストのような見た目で判断する
テストではわかりにくいのかもしれないですね。
少し前になりますが、このブログでHatenaStarを使えるようにしました。
記事の右下の署名のところに表示されています。
このブログシステムでは、デフォルトの挙動だと、タイトルの右側に出てしまうので、以下のようなカスタムローダを使っています。
js>>
document.observe('dom:loaded', function(){
Hatena.Star.EntryLoader.loadEntries = function(){
return #{entries.to_json}.map(function(entry){
var star = $(['article_star_', entry[2]].join(''));
return {uri: entry[0], title: entry[1],
star_container: star, comment_container: star};
});
};
});
<<--
loadEntriesはElementオブジェクト含む配列のリストを返す
必要があるのですが、これはPrototype.jsの$()関数のように、
ElementでもElement IDの文字列でも両方
受け取れるようにしたら、もっと便利かも。
今回は、Railsアプリケーションに、Undo/Redo機能を追加する
プラグインの紹介です。
RUR (Rails-Undo-Redo) is a rails plugin (and soon a gem as well) to make it so easy to implement multi-level undo redo in your Rails application that you better start thinking of better excuses not to implement Undo/Redo (no, seriously, it is going to be a lot easier).
これはなかなか面白いプラグインですね。後で使ってみよう。
2/13のIE7のWindows Updateの影響か、
2006年の6/12(1年半ぐらい前)に書いた記事
IE7からIE6に戻す方法
のアクセス数が増えていた。
当時は、ブラウザの互換性のためにIE7のベータ版をインストールした後に
元に戻す方法を調べて書いていたのでした。
今になって参照されるというのも面白いですね。
SafariかFirefoxで閲覧することが多いので気がつくのが遅れましたが、
この記事
をPostして以降、IE6でレンダリングが乱れる状態になっていたようです。
原因は、はっきりとはわかっていないのですが、
埋め込まれていたSWF(現在はリンクだけになっています)の初期化と、
JavaScriptの実行が干渉していた模様。
JavaScriptの実行とFlash Playerの実行の順序やタイミングについては、
ブラウザごとに微妙に違ったりしているようで、なかなか良くわかりにくい
ところですね。
何も考えずに
SWFObject
などを使って、JavaScript側から明示的にタイミングを指定して
SWFを初期化するのが良いのかも。
外部に公開されているサーバでは、sudoのタイムアウトを長くする事は
セキュリティ面からお勧めできませんが、
ローカルのVMWare上で動いているOSなどでは、
sudoのタイムアウトを長くしたいと思うこともあるかもしれません。
そんなときは、visudoコマンドで/etc/sudoersに以下の設定
を書き加えればOKです。
pre>>
Defaults timestamp_timeout = 1440
<<--
1440はタイムアウト時間を[分]であらわしたものです。
At Your Own Risk!
Pratik Naik氏による1ファイルで出来たRailsアプリケーション。
Just for fun and profit
Thinを使ってますね。
Rails App Golfとかやったら面白いかもしれません。
Railsアプリとは何かという、ちょっと哲学的な問題に突き当りそうですが。
Thin
は、最近話題の軽量・高速が売りのWebサーバです。
Thin is a Ruby web server that glues together 3 of the best Ruby libraries in web history:
- the Mongrel parser, the root of Mongrel speed and security
- Event Machine, a network I/O library with extremely high scalability, performance and stability
- Rack, a minimal interface between webservers and Ruby frameworks
ということで、
RailsアプリケーションでThinを使う方法をメモしておきます。
何はともあれ、まずはsudo gem install thinで
thinをインストールします。
あとは、RAILS_ROOTで
shell>>
$ thin start
<<--
するだけでOKです。非常に簡単です。
thinコマンドのオプションは以下の通り。
pre>>
Usage: thin [options] start|stop|restart
Server options:
-a, --address HOST bind to HOST address
(default: 0.0.0.0)
-p, --port PORT use PORT (default: 3000)
-e, --environment ENV Rails environment
(default: development)
-c, --chdir PATH Change to dir before starting
-s, --servers NUM Number of servers to start
set a value >1 to start a cluster
-d, --daemonize Run daemonized in the background
-l, --log FILE File to redirect output
(default: log/thin.log)
-P, --pid FILE File to store PID
(default: tmp/pids/thin.pid)
-t, --timeout SEC Request or command timeout in sec
(default: 60)
-u, --user NAME User to run daemon as (use with -g)
-g, --group NAME Group to run daemon as (use with -u)
Common options:
-D, --debug Set debbuging on
-h, --help Show this message
-v, --version Show version
<<--
見ての通り、デフォルト設定はRailsアプリケーションに
最適化されています。
ウノウラボさんで面白いイベントをやってるので参加してきます。
さて、そういうこともあり、週末会社があいている時間を利用していろいろな人と一緒に、内容はばらばらでも開発してみたいよねという話を社内でしてみたところ意外と盛り上がり、うまいこと許可もとれたので、一日だけ皆さんの開発場所としてウノウを提供させていただこうと思います。
追記
ということで、参加してきました。

いわゆる勉強会とは違って、みんな黙々と作業をしているのが新鮮でした。
以下箇条書きでメモ・感想など。
全然関係ないけれど、ツインスパークさんと同じ建物なんですねー。
This is a memo of an idea that I'd wanted to do for about a year since my starting to write some codes for a comet server.
By using Comet, JavaScript tests by various browsers can be automated. It's sure to be able to do even by any browsers to say nothing of the Firefox with MozRepl.
I've said in each place about this, but it has been hard to make a time to touch it, because too many exciting ideas struggled in my brain to make my hands type them out.
I wrote this entry with a hope that it might be going to be done by someone else.
前からやりたかったアイディアのメモ。
Cometを使えばMozReplみたいなのをFirefox以外のブラウザでもできるはず。
それを使って各種ブラウザでのテストを自動化する。
結構各所で言ってるんだけど、なかなか手がつけられない。
最近手がつけられないアイディアが多くなってきたので、
誰かが作ってくれるかもしれない希望を込めて書いておきます。
ShootingStarのプロジェクトの管理を、rubyforgeから
Redmineに移管しました。URLは以下のとおりです。
Redminは、Ruby on Railsで作られたIssue Tracking Systemです。
出始めたころに使った時は、かなり荒削りな感じがしましたが、
なかなか良い感じになってきているのではないかと思います。
初期設定が若干煩雑で、とっつき難さがあるきがしますが、
一度設定してしまうと便利に使えるのではないでしょうか。
RubyでITSといえば、
Retrospectiva
というのもあります。こちらはRedmineと比べると、シンプルな
つくりで、小規模なプロジェクトの運用に向いているようです。
Redmineにしたのは、Blog機能が要らなかったからですね。
なんだかDRY脳は直行性を重視するようです。
Maruku
は、Rubyで実装された高機能なMARKDOWN記法のインタプリタです。
RubyでMARKDOWNといえば、BlueClothがお馴染みですが、
Marukuは数式のサポートやPDF出力なども実装されており、
より高機能なものとなっているようです。
ところで、Marukuを使っていてImmediate Link記法<http://~~>
が、httpsで始まるURLの場合にうまく動作しないようだったので、
任意のスキームを扱えるように拡張する方法を紹介します。
ruby>>
module MaRuKu
module Strings
def line_md_type_with_arbitrary_schemes(l)
return :text if l =~ /^<[a-z]+:\S+?>/
line_md_type_without_arbitrary_schemes(l)
end
alias_method_chain :line_md_type, :arbitrary_schemes
end
end
<<--
上記のように、line_md_typeを拡張すればOKです。
Marukuを紹介するプレゼン資料を見つけたので紹介します。
自サイト上でユーザにJavaScriptを(限定的に)許可したいやはり動機に関してはこのへんですね。 [**[Facebook] FBJSでFacebookアプリ内でJavaScriptを利用**](http://kawa.at.webry.info/200708/article_3.html) >Facebook では、FBML という HTML サブセットの独自言語でサードパーティの開発者が誰でもアプリケーションを作成できる。FBML では当初は
例えば、はてなダイアリー等でユーザがブログパーツを張れるよう許可するとか。但し
- document.cookie等、危険な機能は操作不能にする
- あくまでサイト上でJSを許可する(iframeは不可)
最近はJavaScriptを使っておれおれスクリプト言語の処理系を
実装するのが流行っていますね。
ちょっとその実用性について考えてみたのですが、
限定されたデータに対してだけアクセス可能な、
サンドボックス的なスクリプト言語というのは、Webサービスの
プラグイン記述言語(サイト内DSLと呼んでみる。
サイト内とDSが被ってる気がするけど気にしない)
としての需要があるきがします。
例えば、次のような特徴を備える言語が考えられます。
どうでしょう。Facebookのようにサードパーティが
アプリケーションを追加できるようなプラットフォームを
作る場合に、JavaScript自体ではなく、JSで実装された、
よりSecureなまったく別の言語を使うことで
より安全性を高めることができるのではないでしょうか。
Webサービスの開発を行うに当たって、様々な開発環境が
考えられます。
僕の場合は、Windows環境からVMWare Playerを使い、
適当なLinux環境(debian etch)に接続して
Webサービスの開発を行っています。
移動することが多いので、
VMWareのゲストOSとの接続方式は、NATを使っています。
そうすることで、ホストOSがどこに移動しても、
例えネットワークに接続されていなかったとしても、
いつも通りに開発を行うことができます。
然しながら、一つ難点があって、ホストOSのIPアドレス
が変化したときなどに、VMWareのNAT Serviceを再起動する
必要があるのですが、WindowsのGUIからこれを行うのは
なかなか面倒です。
そこで、バッチファイルを使って、簡単にVMWare NAT Serviceだけ
再起動する方法を紹介します。
restart_vmnat.bat
pre>>
net stop "VMWare NAT Service"
net start "VMWare NAT Service"
<<--
このように、netコマンドを使って"VMWare NAT Service"
を再起動しています。
友人から、手っ取り早くRails 2.0を使う方法を聞かれたので、
調べたことのメモです。
そういえば、2.0が出てから、完全な2.0対応を謳った
チュートリアル的なものがあまり無いかもしれませんね。
ちょっと検索して見つけたのは、
ここの一番下で紹介されてる
「Rolling with Rails 2.0 - The First Full Tutorial - Part 1」
は、いかにもよさそうな感じかな。
こちらも参考になるかも。
一応、書籍では、
上記の2つが現在手に入る、2.0対応のものとして知られています。
本格的に手を出すのであれば上記2冊がお勧めですが、ちょっと値がはりますね。
今までのものは、週に一回程度通りがかる、とある場所にあった
「ぶら下がった旗」がモチーフでした。
今回のものは、先日行った
武蔵野美術大学の卒業制作展
で見かけた、和紙を使った展示からインスピレーションを得ました。
先日はお疲れ様。
もうね、上だけを見てレンダラの巨塔を登り詰める、じゃダメなのですよ。
どんどん下から登ってくるヤツらが、自分をすっ飛ばして上に挑戦しているわけです。
私の存在?もちそんなの認識されてないよ。皆私をスルー。
同感ですね。CG研究を取り巻く環境は日に日に良くなっていく。
しかし、僕が18歳だったころには、面白い問題はあらかた先輩方に解かれて
しまった後だと、己が生まれてきたのが遅すぎた事を恨んだものでした。
問題を解決することよりも難しいのは、面白い問題を見つけること。
結局のところ、今僕がこうしてCGとは関係ないことをやっているのは、
CGの分野で、自分が一生かかっても解決できるかどうかという問題に
出会ったからですね。その問題が解かれるところが見られるのであれば、
それを解くのは自分でなくてもかまわないのかもしれない。
プログラムの変更のせいか、最近lighttpd+fastcgiの構成で不安定に
なってきた感じがしたので、Thin+Swiftply構成の情報を探してみることに。
しかし、検索してみたけれど、先日書いた自分のエントリとブックマークばかりHitする。どうやら未開の地に迷い込んだようだ。
…と思ったが、よく調べてみたら Swiftplyじゃなくて
Swiftiplyが正しいようだ。良かった。
ちょっとした試みに、GTalkを使って、技術情報を交換するための
オープンなグループチャットを作ってみました。
上記IDをGTalkやPandionなど、お使いのJabberクライアントの
Contactに追加し、最初に一度発言をする事で自動的に登録されます。
ログをGmailに転送する設定をしておけば、
後でGmailを使って検索することもできます。
参加を解除する場合は、Contactリストから削除すればOKです。
こちらのTwitterアカウントから、Chatの内容を確認することもできます。
http://twitter.com/lightningtalk
お気軽にお試しいただければ幸いです。
珍しくCGネタです。
2/8に東大で行われたPaul Debevec氏の
講演会
に参加しました。
New Techniques for Acquiring, Rendering, and Displaying Human Performances
Paul Debevec氏はIBLやHDRIの人として高名な方です。
もっと英語を学ばなければな。いくつか質問したいことがあったけれど、
なんと言ったら良いのかわからなかった。Ummm
聞きたかったことは、Sphere probeをActorを追いかけるように
動かして、全天周画像をキャプチャすれば、Light Stageのような
固定的な設備を用いなくてもdiffuse項の計算ができるのではないか
という事。
また、specular項に関しても、動いているシーンであれば、
時間軸に沿って変化するLight Fieldに対して、変動しない成分を
抽出することで、ある程度は計算可能なのではないかな。
Light Stageを使ったほうが高精度に求められるけど、
建設にお金がかかりそうだから、安上がりにそこそこの
Relightingをしたいぐらいなら良い気がする。
まあでも精密なNormal Mapを採集できるって事のメリットのほうが
大きいのかな。
と言いつつ、自分ではMongrel使ってない(主にlighttpd)のですが、
RailsChatでshachiさん、くまくまーのmaihaさん、笹田さん、のりおさんと話してた時に出てきた、最近のWebサーバのメモ。
あとで試す。
話は変わりますが、上述のプログラムの大半の実装はCで書かれていて、
インターフェイスの部分だけRubyで実装されている感じのものが
多いですね。これこそがRubyの真骨頂だと思う。
いろんな言語を使ってきたけれど、
最近はCとRubyの組み合わせが良い感じです。
C言語用の高性能プリプロセッサ兼UI記述スクリプト
だと思えばRubyの遅さ気にならない。
CとRubyの相性の良さはとても素晴らしい。
Rubyの拡張をCで書くまでは、Rubyの楽しさの半分しか
見えてなかったと思う。
C++(template)とHLSLというのも中々面白い組み合わせだった。
柔の言語と剛の言語を組み合わせて使うのが生産性を高めるのに
良いのではないかと思う。
以前紹介したRakがバージョンアップしたようです。
Rak is a grep replacement in pure Ruby. It accepts Ruby syntax regular expressions and automatically recurses directories, skipping .svn/, .cvs/, pkg/ and more things you don't care about. It is based on the Perl tool ack by Andy Lester.
Patchを送った問題も修正されているようです。変更点は以下のとおり。
0.9 / 2008-02-03
早速、RubyでGoogleの
SocialGraph API
を利用するためのライブラリが
リリースされたようです。
Ruby gem for Google SocialGraph released
We’ve cooked up a Ruby library to talk to the SocialGraph API, and get really interesting info out of it. This is the sort of thing that’s always more useful if more people have access to it, so even better, we’ve licensed it under the LGPL, so you can get all that Google goodness without having to do anything tedious to get it.
新しい技術を利用するライブラリがすぐに出てくるのは嬉しいですね。
原因については調査し切れていないのですが、何らかの理由で
RubyGemsをインストールしたときに、Gemのバージョン番号の末尾に
本来あるはずの無い「-」がついた状態でインストールされてしまう
事があるようです。
この問題が発生すると、「-」が付加されたバージョンのGemの存在が
正しく認識されず、ひとつ古いバージョンが中途半端にactivateされて
しまい、全体としてアプリケーションが正常に動作しなくなる
事があるようです。
一旦問題の発生しているGemを削除してから、再度インストールを
行うことで問題は解決しますが、gem uninstallコマンドでは
正常にアンインストールが行われない場合もあるようです。
その場合は、RubyGemsがインストールされているディレクトリ
(/usr/local/lib/ruby/gems/1.8/gems/など)から手作業で
該当するファイル群を削除する必要があるかもしれません。
Railsのテストフレームワークには、Mockを利用する仕組みがあります。
しかし、通常の方法でMockクラスを作成すると、オリジナルのクラスを
完全に置き換えてしまうため、すべての実装をテスト用に
書き直さなければならなくなってしまいます。
そこで、テスト用に改変したい場所だけMockで上書きし、その他の
動作はオリジナルに委譲する方法を紹介します。
rails>>
require_dependency 'models/foo'
class Foo
def bar
puts 'baz'
end
end
<<--
上記のように、require_dependencyを使ってapp
ディレクトリ以下のファイルを参照することで、Fooクラスのbar
メソッドの挙動だけを置き換えることができるようになります。
UnitTestやFunctionalTestの中から参照するファイルをどこに置くべきか
という疑問について、明確な回答を用意できていなかったのですが、
Railsのソースの中で答えらしきものを見つけたので紹介します。
actionpack/lib/action_controller/test_process.rb L325
rails>>
<<--
このExampleによると、test/fixtures/filesというディレクトリを作り、
その中にファイルを置いているようです。