2009年 3月 5(木曜日)MacPorts の Screen 4.0.3_3 がおかしいのでなんとかする
deflogin が unknown command だ、みたいな事を言われるようになってしまった。あと mate コマンドで TextMate が起動出来ない。
これは困るので 4.0.3_1 に戻したい。 screen はアンインストールした状態で始めます。 1. trac で確認する MacPorts Trac http://trac.macports.org/browser/trunk/dports 今回の件はチケットがあった。 http://trac.macports.org/ticket/18235 4.0.3_1 のリビジョンを確認する。これだ。 http://trac.macports.org/browser/trunk/dports/sysutils/screen/Portfile?rev=45522 2. svn co する 適当な所でもいいし、自分の local portfile 置き場あるならそこに。俺は $HOME/dports というディレクトリを作ってるのでそこへチェックアウト。 % cd ~/dports % svn co –r 45522 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen \ sysutils/screen/ 3. sudo port install する Portfile のあるディレクトリで port install すると宜しくやってくれるようだ。 % cd ./sysutils/screen % sudo port install 4. 確認する % port installed | grep screen screen @4.0.3_1 (active) いいんじゃないでしょうか。 local portfile の手法でチェックアウト後に portindex したんだけれども、どうもリビジョンまでは見てもらえないっぽい? sudo port install screen @4.0.3_1 にしても 4.0.3_3 が入ってしまった。 screen に限らず MacPorts で older revision のアイテムが欲しい時はこのやり方でいけそう。 ref https://trac.macports.org/wiki/howto/InstallingOlderPort 2008年 10月 3(金曜日)mashable のエントリをはてブするとモバイル扱いされる件
表題の通り。
高橋(13:38) はてブするとはてな側からエントリ情報、本文(の一部)、スクリーンショットを取る為のスクリプトがいらっしゃる。 各々の UA は
こんなんかな。 スクリーンショットは今回の件とは関係薄そうなので上2件をテスト。 まず Hatena Bookmark/0.1 をためす。 irb(main):002:0> Net::HTTP.start('mashable.com'){|h| h.get('/', "User-Agent" => "Hatena Bookmark/0.1")} 次に Hatena2::RemoteDocument/0.02 で。 irb(main):003:0> Net::HTTP.start('mashable.com'){|h| h.get('/', "User-Agent" => "Hatena2::RemoteDocument/0.02")} 302 が返って来た!どうもこっちが怪しい。 「Remo」は通し。 irb(main):005:0> Net::HTTP.start('mashable.com'){|h| h.get('/', "User-Agent" => "Hatena2::Remo")} 「Remot」は通らず。
どうやら「mot」が通らない。
ユーザーエージェントが「mot」と言えば、それはモトローラ系端末。MOT-V980 とか。 mashable の UA に「mot」が入ってたらモバイル扱いするザックリ具合が主な原因。 「『mot』で判定するケースがあるから『remote』とか使うな」ってのは自分でクローラ書く時の参考になった。 ちなみに delicious には問題無くブックマーク出来ました。 2008年 9月 2(火曜日)今年もHOPPER'Sに出演しますよ
グラスホッパーマニュファクチュア設立10周年記念イベント。
今年は 2 Days で3イベントという無茶苦茶なスケジュール。 2日目であるところの HOPPER'S Vol.3 に去年に引き続き「THE RIOT-怒りの十代-」のギターとして出演します。
チケットはすでに発売中。 RIOT を結成して1年半くらいですが、結構な数のライブもこなしてますし、CDも出しましたし。 イベントドリブンなバンドの割に相当充実。 2008年 7月 24(木曜日)The door won't open
「意思の will」にはなかなか気付けないので修業が足りない。
"will"で未来を念じているのは、人です。だから"will"は未来形であると同時に、「意志」という意味があります。 タイトルくらいわかりやすいと良いんですが、流れの中でポッと出てくると戸惑ってしまう。 極々個人的な経験で言うと、「意思の will」特に「頑なに〜しようとしない」の「won't」は個人よりも物体であるとかちょっとした集団のポリシーに使われてるケースに出会う。"PS3 won't work!"とか"We won't do that ~"とか。 いわゆる未来の will も中学くらいでは「be going to と同じだよ」という教わり方をした(よね?)わけですけど、実は細かい違いがある。という事は予備校で知った。 で、ここでアサマシです。 大学受験で散々ブッコんだ英語知識も大学生になってからと言うもの、ボロボロと抜け落ちてしまった。それをある程度戻すのに役立ったのがこの本。「if の省略形仮定法」とか久々に思い出せた。 中学レベルから高校レベルまでの文法をザラっとすくっている内容。4色刷り。そして安い。各章が文法の形の解説で、基本→理解→応用のパターンがメイン。イラストをちょいちょい使ってるので、それも理解を助けてくれます。 ただ、しょーもない例文が多い。変にカッチョよくしてるのよか分かり易くて良いのかも知れないけど、ちょっと不満。あと大学に入った直後に出てるのも許せない。これが受験時期にあったら手元の文法リファレンスにしてた。ロイヤル英文法使ってました。懐かしい。 英文ブログとか読むには文法理解よりも語彙力が重要かなー。全然足りてない。 たまに堅めのコラムスタイルなブログを読む時には文法と英文解釈は必要に思える。 「英会話は単語だよ、単語!」みたいな事を言う人をみると「こやつめ、ははは」とか思ってたんですが、実際それは間違いなかった。 日本に来て半年のアメリカ人ゲームプログラマとゴールデン街で飲んだ事があって 俺「most Japanese が play する game は their friends が play してるヤツなんだよ」 彼「ah...モンハン?」 全然通じる。 2008年 7月 8(火曜日)PHPフツウ
PHPサイキョウ
「rocks」でやった結果。
なるほど。 他はどうか。
Ruby 圧倒的過ぎるだろ。 その他。
C++ と Java が大体同じくらいで Python より多い。意外。 ついでに「rules」でもやってみた。
すげえ!これは期待出来る!
Ruby 強すぎ。 おまけ。
2008年 6月 23(月曜日)PHPMock を触ってみた
『次世代 Mock Object フレームワークの雄』として一部から熱く注目されている(と思いたい) PHPMock ですが、ちょろっとテストコード読んだくらいで触った事が無かったのでトライ。
ちなみに PHPMock のテストコードは PHPSpec で書かれている。個人的には残念な書き味というか、読みやすくない。PHPUnit バンザイ。 ただ PHPUnit の Mock はもうちょっと融通利かせてもらえると有難い。という所で PHPMock はどうか。 Let’s do this. PHPMock にはまともなドキュメントが一切無い。tgz 玉もないので Google Code からチェックアウトするしかない。specs ディレクトリにテストコードがあるのでこいつを見れば大体の使い方はわかる。test as document を地で行く感じだ。メソッド名は RSpec の mock/stub に似ているというか似せてある。 テストコードはこんな感じ。ダウンロードはこちら。 ■ test/ProductServiceTest.php <?php
define(DEMO_ROOT, dirname(dirname(_FILE_)));
require_once DEMO_ROOT . '/phpmock/src/PHPMock.php';
require_once DEMO_ROOT . "/lib/ProductService.php";
require_once DEMO_ROOT . '/lib/IDBConnection.php';
require_once DEMO_ROOT . '/lib/Publisher.php';
class ProductServiceTest extends PHPUnit_Framework_TestCase
{
const PRODUCT_ID = 1234;
public function test_プロダクトを全件取得する ()
{
$mockDb = PHPMock::mock('DBConnection');
$mockDb->shouldReceive('execute')
->withAnyArgs()
->once()
->andReturn(
array('name' => 'NINJA GAIDEN 2')
);
$this->service->setDBConnection($mockDb);
$this->assertNotNull($this->service->getAll());
}
public function test_プロダクトIDからパブリッシャの名前を取得する()
{
$mockPublisher =
$this->createPublisherMock(self::PRODUCT_ID);
$this->service->setPublisher($mockPublisher);
$publisher = $this->service->
getPublisherByProductId(self::PRODUCT_ID);
$this->assertEquals('Activision', $publisher['name']);
}
public function test_クイックモックでfindAllしてみる()
{
$mockPublisher = PHPMock::mock('Publisher',
array('findAll' => array()));
$mockPublisher->findAll();
$this->assertTrue($mockPublisher->verify());
}
public function test_引数がマッチしなければ例外を投げる()
{
$mockPublisher =
$this->createPublisherMock(self::PRODUCT_ID);
try {
$mockPublisher->findByProductId(9999);
} catch (Exception $e) {
return;
}
$this->fail("An expected exception has not been raised.");
}
public function test_PHPUnitのMockObjectはこんな感じ()
{
$mock = $this->getMock('DBConnection',
array('execute', 'preparedStatement'));
$mock->expects($this->once())
->method('execute')
->will($this->returnValue('aaaa'));
$this->assertEquals('aaaa', $mock->execute("sql statement"));
}
public function createPublisherMock ($productId)
{
$mock = PHPMock::mock('Publisher');
$mock->shouldReceive('findByProductId')
->with($productId)
->andReturn(
array('name' => 'Activision')
);
return $mock;
}
public function setUp ()
{
$this->service = new ProductService;
}
public function tearDown ()
{
}
}で、このコードは実行すると「test_引数がマッチしなければ例外を投げる」でコケる。 PHPMock_Expectation#matchArgs に問題があって ■ phpmock/src/PHPMock/Expectation/Expectation.php public function matchArgs(array $args) { if (empty($args) && empty($this->_expectedArgs) && is_array($this->_expectedArgs)) { return true; } elseif ($args == $this->_expectedArgs) { return true; } elseif ($this->_expectedArgs == true) { return true; } elseif ($this->_expectedArgs == false && empty($args)) { return true; } return false; } 「$this->_expectedArgs == true」これだと $this->_expectedArgs に値が入ってれば true になっちゃうという良く話題になるアレです。正解は「$this->_expectedArgs === true」これですな。 上のコードで使っている DBConnection はインターフェースで Publisher は空っぽのクラス。 インターフェースに定義されているメソッドは PHPMock#_generateDefForMethods がよしなに実装してくれるので安心。PHPUnit の Mock Object だと定義したメソッドをイチイチ配列で全部ツッコまないといけない。 いわゆるスタブは無くて shouldReceive 一本になると思われる。 PHPMock#mock の第二引数に array($methodName => $returnValue) を与える事で簡単にモックが作れるのは好感。 ■ まとめ
Battlefield: Bad Company のミニトレイラーが面白すぎる
今週発売される DICE のモダンコンバット FPS「Battlefield: Bad Company」のミニトレイラーが公開されていますが、これがパロディシリーズになっていて非常楽しめる!
■ Snake Eyes(MGS4 パロディ) 「iPod 持ってるヤツがバレルの中に隠れてるんだよ!」「段ボールに隠れるくらいバカだろ」「ソリッド…メタル…良く判んないけど日本のムービーでそんなのが!」 これは笑った。 ■ Bad World(Gears of War パロディ) GoW の CM で使われていた「Mad World」をフィーチャー。「the dreams in which i'm dying are the best i've ever had ってどういう事だよ!」「これを歌え Mama's little baby loves Short'nin' bread」 くだらねー。 ■ Rainbow Sprinkles(RainbowSix パロディ) RainbowSix はステルスアクション FPS なので「これは隠密ミッションだ!」って感じ。「バックアップしろ」「ドアをブリーチしろ!」という風に仲間に指示して進めるのが R6 のゲームプレイ。B-Company なのでイチイチ言われた通りに行動しない所が良く表現出来てる。 この3本では一番好き。 2008年 6月 20(金曜日)[RSpec] xit を知らなかった俺涙目
RSpec 使って開発してて、ちょっと一手戻りたい時に it 節というか example をバコっとコメントアウトしてたんですけど。
■example_group_methods.rb # Use this to temporarily disable an example. def xit(description=nil, opts={}, &block) Kernel.warn("Example disabled: #{description}") end alias_method :xspecify, :xit とびてー。 2008年 5月 6(火曜日)炎上必至のフレームワーク2008年 4月 13(日曜日)The New Gamer JP
先日 twitter で The New Gamer というブログの存在を知る。
単純なゲームレビューサイトはちょっと風味が違う。 ゲームを題材にパースペクティヴを効かせたエッセイが多い。更新頻度はそんなに高くない。 ヘッドライターが1人とサポートライターが2人くらいで運営しているようだ。 サポートライターはレビュー中心。 ヘッドライターの書くエントリは構成がきれいで、言い回しもカッコいい。 それでいて文章から滲み出ているキチガイっぷりがたまらない。大好きだ。 The New Gamer JP 2008年 3月 4(火曜日)[参加してます] NO MORE HEROES リミックスサントラ DARK SIDE
NO MORE HEROES のリミックスサントラが 3/14 に発売になります!
今回は、おそらくghm史上、最高にカオスな一枚に仕上がっていると笑顔で断言します! ゲーム作家・飯田和敏率いる「THE RIOT-怒りの10代-」のギターとして本作品に参加してますので、どうぞご贔屓に!! ![]() ---
2008年 2月 14(木曜日)[俺メモ] Safari のショートカットキーを変更する
Safari のタブ選択ショートカットキーはデフォルトが「⌘{ / ⌘}」なんですが、Dvorak-Qwerty⌘ の環境だとイマイチ動いてくれない。
で、これを変更する方法をたまに忘れるので例によって俺メモ。 Safari に限った事ではなくて Mac OS X のアプリケーション全体で使えます。
これだけ。すげーカンタン。 Firefox と同等にしました。 TextMate のタブ切り替えもこれなのでコンテキストスイッチする必要が無くて安心。 SafariStand を入れておくと更に「カンマ / ピリオド」でもいけるようになる。 2008年 2月 5(火曜日)しょーもないPHPプログラマにありがちな40の兆候
ザラッと訳してみる
元々がちょっと変な所は手を入れてます。なんだか良く判らんのは原文残してます。添削してつかあさい。 40 signs you really are a lousy PHP programmer
PHP に直接関係無い項目もありますね。 素直に納得出来る項目もあれば、場面ってのも。 場面ってのはそれが有効に作用するケースもあるだろう事を知っていないといかんのですけど。 2008年 2月 4(月曜日)CoD4 のオレオレカスタムクラス
CoD4 では装備セッティングを「カスタムクラス」として 5 つ作成できます。
で、俺チャンが使っているセッティングを公開してみたいと思った次第。 Maps は使用頻度の高さ程度。実際は場面。 最近は Headquarters しかやってないんですけど Team Deathmatch, Domination でも同じセッティングでやってます。 これ書いてる時点で Lv.34 (Prestige Lv.1) なので P90 とか Frag x 3 とかナシ。 中距離 3 発フィニッシュ系
beta 時はフルオートだった M16 ですが、あまりにも強過ぎたせいか 3 点バーストに変更。 それでも強い!バランスが良過ぎる。Stopping Power 付きだと上半身に 3 発ヒットでおk。ただ 3 点バースト故、近距離 2v1 だと撃ち負ける事が多いので Martyrdom (aka ウンコ) で巻き添え狙い。 近距離〜中距離タカタカ系
銃声は一番好き。 beta 時も含めてちゃんと使った事が無かった。Prestige 入りしてから使ってみたらビックリ。 レートこそ低いんですが、その分リコイルも少ないし何より集弾率が高い!Stopping Power で威力増すれば全然使えます。一番ビックリなのが中距離戦も結構行けちゃう点。 裏取り専用ステルス系
GPS 映らない Perk 設定で敵の裏取り。Bandlier で所持弾数を増やしておかないと困った事になりがちでした。Lv.40 以降ならば P90 にサイレンサーで Perk3 は Steady Aim に。 裏取りはその名の通り敵のバックエンドにダッシュ!捲り一発!で Kill していくんですが、「裏取りするヤツがいる」事にイラっとさせてプレイを粗くさせる目的もあります。いわゆる『裏の裏』になるケースもあるのでハマると気持ちいい。 裏取り 5 Kill -> AirStrike -> "Friendly Helicopter Inbound" がキマると脳汁ドバドバ出ます。 アンチヘリ専用
ヘリが来たら使います。正確にはヘリに殺されたら。 Grip 付けると化ける。かなりリコイルが抑えられます。 アイアンサイトでも十分狙いやすいので普段使いも出来るっちゃ出来るんですが、あまり使わない。一時 Shipment で使ってたんですが MP5 のが扱い易い事が判ってからアンチヘリ専用に。 近接もたまにあるけど基本は中距離系
ゲームスタート時に選択する事はありませんが、相手が近距離に持ち込むタイプの時はこっちに切り替えます。フルオートなので遠目の 2v1 でもそこそこいける。気がする。Stopping Power より Double Tap のがいいのではと思う事もありますが、そもそもあまり使わないので研究機会が無い。 Lv.41 以降は RPG が Frag x 3 になってます。 あと Shipment の時だけ Perk2 を SonicBoom にするのもアリ。 それにしても最近はヘリがソッコーで撃墜されてしまう。 6 Kill で止めて(つまり死んで)リスポン後に AirStrike → 6 Kill 止め、のループのが良いのかなー。特に Shipment とか。 【補足】 実はこの草稿を用意した時の話で、今はちょうど一周回った Lv.35 (Prestige Lv.2) です。クラスのセットアップはちょっと違います(AK-74 / AK-74u)が「同じ装備使っててもつまらん」という理由なので上記のクラスが自分的にはベーシックパターンです。 コール オブ デューティ4 モダン・ウォーフェア posted with amazlet on 08.02.04 アクティビジョン (2007/12/27) 売り上げランキング: 66 2008年 1月 21(月曜日)livedoor Reader の使い方を間違っていた
livedoor Reader と言えば視点移動の少ない UI のおかけで楽にフィード閲覧が出来る、ピン機能、Greasemonkey でイジりまわせる等々。
ただどうもここ最近使っている俺のテンポが悪い。ピンがすぐ埋まってしまう。 登録フィード数は5000件ちょいくらい。 フローはこんな感じ 1. ピンを立てる 2. 記事を読みにいく 3. 内容次第では Yojimbo にブックマークあるいはアーカイブ ピンは100件までなので溜まりきったら読んで空きを確保するわけですが、この作業が頻発する。 そのせいか「ピンを立ててもいいんだが空きが少ないから止めておこう」という非常に宜しくない事を考えるようになってしまった。 ピンを同時に別の何か、SBM 的なモノに投げるようなグリモンでも書こう。でもわざわざそんなことせんでも「一発クリップ」があるなー、という段階でピンの使い方を間違っていた事にようやく気付いた。重要度の高い(であろう)記事は一発クリップ、ニュースや中身の薄そうな記事はピン、という使い方が良いんじゃないか。 一昨日くらいからこのスタイルにしてみたんですが、これが結構いい具合。ピンの溜まるスピードがかなり落ちる。ピンに立ててある記事は比較的どうでもいいものがほとんどなので開いて斜め読みして閉じていく事で LDR にすぐ戻れる。意外と良ければ Yojimbo に投げる。 livedoor Clip は LDRize でバツバツ読めるし、自分の clip したフィードを Vienna に食わせておくようにもしている。タブで元記事表示が出来るので悪くない。Vienna 単体で RSS リーダーとして使うには複数台環境で厄介になるが、フィード1件ならどうでもいい。Vienna から Yojimbo にブックマークやアーカイブする AppleScript を書けばより幸せになれる。 購読数が7000や8000になるとまた読み方が変わってくるとは思いますが、今の所はこれで機能しそうです。
(ページ 1/15, 合計 212 エントリ)
» 次のページ
|
クイックサーチARTICLES最近のエントリMacPorts の Screen 4.0.3_3 がおかしいのでなんとかする
木曜日, 3月 5 2009 mashable のエントリをはてブするとモバイル扱いされる件 金曜日, 10月 3 2008 今年もHOPPER'Sに出演しますよ 火曜日, 9月 2 2008 The door won't open 木曜日, 7月 24 2008 PHPフツウ 火曜日, 7月 8 2008 PHPMock を触ってみた 月曜日, 6月 23 2008 Battlefield: Bad Company のミニトレイラーが面白すぎる 月曜日, 6月 23 2008 [RSpec] xit を知らなかった俺涙目 金曜日, 6月 20 2008 炎上必至のフレームワーク 火曜日, 5月 6 2008 The New Gamer JP 日曜日, 4月 13 2008 [参加してます] NO MORE HEROES リミックスサントラ DARK SIDE 火曜日, 3月 4 2008 [俺メモ] Safari のショートカットキーを変更する 木曜日, 2月 14 2008 しょーもないPHPプログラマにありがちな40の兆候 火曜日, 2月 5 2008 CoD4 のオレオレカスタムクラス 月曜日, 2月 4 2008 livedoor Reader の使い方を間違っていた 月曜日, 1月 21 2008 TUMBLRカテゴリ管理 |



