トップ «前の日(01-24) 最新 次の日(01-26)» 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2005-01-25 環境構築に明け暮れる日々

% [Mac] G5 に最適化された VirtualPC7

…などと言ってるくせに、システム情報でプロセッサが『不明60』とかいう謎チップになってるのがショボ〜(苦笑

% [雑談] 火の鳥が読みたい

…と、しばらく前からずっと思ってる。一応文庫版は全巻持ってるんだが、どっかにしまい込まれていて容易には出てこない状況。ああ、目の前にさえあれば、寝食を投げ打って読むのに!!(爆

漫画喫茶にでも行くかなあ・・・って、全部読むのに何日通えば良いわけ?

% [game] ぷよぷよフィーバー NDS 版

GBA 版を持ってるのに、思わず買ってしまいましたよ。タッチパネルでの操作もそれなりに楽しい新要素だけど、一番のウリは最大8人対戦でしょう。残念ながらやる相手がおらんのだが(苦笑)一応ひとりでも残り7人をコンピュータにして遊ぶことはできるんで、さっそくチャレンジ。・・・なんか無駄に盛り上がる(笑

チーム分けとかもできるんだけど、とりあえず全員バラバラのチームにしてみると、誰かがおじゃまぷよを飛ばすと、それが全員のところに来るんで、細かい消し方してるだけでもみるみる予約ぷよが溜まっていく。これをいかにフィーバーモードでしのぎつつ、大連鎖を投げていくかが勝負所でしょう。つーか、ばんばん相殺してやらないとあっという間に終わるので、まともに連鎖組んでる暇なんてありませんよ(笑

いやあ、これは楽しい。メンバーが二人しかいなくても、あえて8人モードでやるべきです。

% [雑談] しまった…

スラッシュ一個削ろう。くそう、どっかにこの手の正規表現をリストしてるとこ無いかなあ。

% [game] SUN のときも、ぷよぷよ〜んのときも思ったが…

わしみたいなへたっぴぃでも、かーくん出せるようにしてくださいよ。今までのシリーズなら、別に見た目が変わるだけだし〜で終わってたけど、今回キャラごとに特徴あるじゃん。もし、いつものような隠れキャラ条件(ノーマル以上のレベルで、ハードコースをノーコンティニュークリア)なら、はっきり言って一生クリアできる気がしません(泣

さかな王子とかのフィーバーで大逆転型キャラが、がんがん通常の連鎖組んでくるようじゃ、わしのレベルじゃ勝てないっすよ。一生懸命通常の連鎖をフィーバーで返しても、今度はそれが3倍くらいになって返ってくるんだもの。

あれ、そういや、ぷよぷよ〜んのときの特殊な要素って何だっけ?フィーバーはフィーバーモードでしょ、SUN は太陽ぷよでしょ、えーと…あれ、思い出せない。なんか、ぱっとしなかった憶えはあるんだが(苦笑)。SUN の方がおもしろかったな〜とか思ってた記憶がある。


2006-01-25

% [雑談] 疲れた

昨日とおんなじじゃん。 つーか、一日中立ちっぱなし(もちろん休憩はあるけど)は辛かったっす。 脚より先に腰に来るってのは、腹筋背筋が落ちてるんかねえ。 ほんまに腰が辛いデス。 歩いてる方がまだましなのね。 ずーっと立ってる仕事の人は大変だなあと思い知ったよ。 交通整理やってる人とか、見た目よりも大変なんだろうな。

今日は昔なじみの友達と居酒屋で晩飯。 昔話に花を咲かせる。 もちろん「昔話なんかするようになったら、おっさんだよな」って話もお約束として。

全然関係無いが、今日になって気づいた。 わしの携帯(702NK)で Bluetooth を ON のときと OFF のときで、見るからにバッテリーのもちが違う。 出張中は BT 使うシチュエーション無いからと思って OFF にしてたんだが、いつもと比べて間違いなくバッテリーの減りが少ない。 いつもの調子だと今日辺り充電しといた方がいいくらいなんだけど、これだと明日ももちそう。 念のため充電するけど。

% [雑談] ところで

地下鉄新橋駅から、ゆりかもめゆりかもめって念じながら歩いてると、何時の間にかゆりかもめの新橋駅じゃなく汐留駅(一つ先の駅)に着いてるからあなどれない。 なんか妙に歩くと思ったんだよ。 つーかあれは案内が良くないよ、紛らわしい。


2007-01-25

% [Scala] Version 2.3.2 が出てたので、久々に触ってみる

朝の 4 時に消防車がサイレンガンガン鳴らしながら走ってきましてね、目が覚めてしまったわけですよ。 おまえもう少し空気読めと、そう言いたい。 そんでまあ、それだけなら「うるせーなー」でそのまままた寝て終わりだったはずなんだけど、何かしらんがそのサイレンが我が家のすぐそばで止まりやがんの。 さすがにそれは気になりすぎるよね。 家のすぐそばで火が燃えてるかもしれないのに、おちおち寝てられない。 しかたなく起き出して様子を見に行ったり何だりしてるうちに、すっかり目は覚めてしまってもう寝れませんて。 幸い大事にはならずに済んだので良かったことは良かったんだが、ともかく何だ起きてしまったからにはパソコンいじったり何だりあーなにやってんだろわし...orz

愚痴終了。

そんなわけで、Scala の 2.3.2 だが。 まあ、これまでも新しいバージョンが出るたびにダウンロードして、新しい機能があればいじってみたりもしてるんだけど、今回のバージョンアップに関しては一言書かないと気が済まないので書く。 Change History より。

Added support multi-line expressions and definitions in the interpreter.

待ってました。 これで俄然遊びやすくなるぞ。

% scala
scala> def f(x:Int)(y:Int) = {
     |   x + y
     | }
f: (scala.Int)(scala.Int)scala.Int

ひゃっほー。

% [Dylan] マクロ

Dylan は羊の皮をかぶった LISP だからして、マクロも強力っぽい。 よくわからんが、define class とかの構文はマクロで書かれてるみたい (エラーメッセージでそんな感じのが出てた)。

残念ながらわしにとってマクロは超不得意分野なので、どんな感じなのかはこの辺を見て想像してちょうだい。

% [Dylan] Pitfalls for Lisp to Dylan Conversion

Common Lisp と Dylan の違いを並べた文書。 わしは Common Lisp はよく知らないが (だからって Scheme とかもよく知ってるわけじゃないけど) Dylan の特徴を知る上でもわりと参考になる感じ。 ちなみに関連して LTD: A Lisp To Dylan Conversion Tool なんてページもある。

なんか最初の方とかは、Common Lisp と Scheme の違いを並べてるように見えるな。

% [Python] Stackless Python と First-class Continuation

Stackless Python に関してツッコミをもらったのだが…

ところで、Stackless Pythonの特徴は、継続をサポートしていることだと聞いています。

とのことで、「ほうほう、でもチュートリアルには continuation なんて文字列は見当たらなかった気がするなあ」と思いつつちょっくら調べてみた。 で、端的に言って…

現在の Stackless Python には、First-class continuation は存在しない。

ということのようだ。 元々は VM を全部自前で作っていて、その頃には (ちょっとこの辺、厳密な歴史がわからないんだけど) continuation というモジュールが存在して、continuation.return_current() で現在の継続を取得することができたらしい。 で、それを利用してスレッドやコルーチンなんかを実装していた、と。 ところが、その後メンテナンスしきれなくなってきて、結局自前の VM はやめて本家の Python で動く拡張モジュール (それプラス、パッチセットもかな?) として再生した。 その時に First-class continuation は捨てて…と言うか本家の実装に合わせるには捨てざるを得なかったんだろうけど、ともかく捨てて、One-Shot continuation (一度使えばおしまいな継続) を使った実装に書き直されたということみたい。 ここで言う One-Shot continuation てのがどんな実装なのかはわからんけど、ユーザとしてはそれが取得できたからといって嬉しいことは無い (ジェネレータと変わらんでしょ) ので、それを操作するような API は用意されていない模様。

チュートリアルを眺めた時点で「なんか、ごくごく普通のスレッドライブラリだなー」と思ってたんだけど、今となっては正しくそういう意味しか無いのかもしれない。 つーか Python 標準のスレッドライブラリ (threading モジュール) が妙に貧弱 (だと思う) なせいで、「普通」でも十分便利に感じるというか。 やれることは、Ruby なんかで用意されてるものと大差無い感じじゃないかな。

そんな感じで、Stackless Python についてはちょっと残念な結果に終わりましたとさ。 正直、threading モジュールはあんまり使いたくないな…という気がするんだけど、かと言ってスレッドのためだけにわざわざ Stackless Python を導入するってのもどうなのよ? と思うね。 ソースのポータビリティが失なわれちゃうし。 いっそのこと本家にマージしてくれれば良いんだけど、なんか過去にいろいろあったみたいだし (初期の Stackless は本家に対しての提案だったんだけど、Guido に却下されてどーのこーのとかって話があるみたい) 難しいのかなあ……

本日のツッコミ(全1件) [ツッコミを入れる]

% no-name [> 現在の Stackless Python には、First-class continuation は存在しない。..]


2009-01-25

% [game] デビサバ日記、ベルの王ルートクリア

結局、神とは戦わないという。 王になった時点で終わり。

でも最後の面はかなりツラかった。 一体ボス何体出てきたんだ? 最初のを倒したら HP/MP そのままで、これまで出てきたベルの悪魔が順番に出てきて、最後にラスボス。 ベルが 5 体くらいだから、だいたい 7 連戦か。 無茶すぎるだろ。 吸魔を色んな悪魔に継承させてたから何とかなったけど、あんまり考えずに進めてたら絶対 MP 足りない。

あと、ラスボスが HP 減ってから撃ってくる MAP 兵器が鬼畜だった。 全滅するかと思ったよ。 っていうか二人死んだし。 まあ、この面はステージクリアのときのボーナスが無かったから、別に損はしてないけど。

で、当然のようにエンディング後に二周目用にセーブができるんだが、そんな気はしてたけどやっぱりセーブ領域は共通だったのでラス面前のデータとかは残せないのであった。 二周目特典は、マッカ、スキル、所持悪魔引き継ぎだそうだ。 悪魔も引き継がれるなんてウハウハやね。

そんでもってタイトル画面に主人公と並ぶ形でナオヤが表示されるようになった。 ふむ、つまりルートを一つ潰すたびに、ここに関係の深いキャラが表示されるという寸法なんですな? …… アドバタイズムービーで同じように表示されるメンバーは主人公含めて 7 人なんだけど…… もしかしてこの人数分ルートがあるって話? 六周もしろと!?

まあ、悪魔が引き継がれてればあんまり稼がなくても進めるだろうから、二周目以降は楽なんだろうけど……

スキルクラックは結局、二つ足りなかった。 先制スキルが一つ (何かはわからない) とコマンドスキル一つ (これはおそらくメギドラオン)。 先制の方は最初の方でうっかり見逃してたって可能性もあるけど、メギドラオンは持ってる敵出てこなかったと思うんだよなあ。 あ、でも一周目だと絶対倒せないようなタイミングで出てきたボスクラスが持ってた可能性はあるかも。

仲魔は検索に表示されるものはほとんど作った。 作ってないのは Lv71 アスラ王だけ。 クリア時のレベルは 67 だったから、作ろうと思ったらまだまだ相当がんばらないといけなかった。 っていうか、66 の次が 71 ってヒドいよ、と思って諦めた。 特定のルートじゃないと作れるようにならないものとかありそうな感じなので、これで全部じゃないかもしれないが。

なんだかんだで、まだまだやめられそうにない。 少なくとも二周目はクリアするでしょう。


2010-01-25

% [Mac] MacBook のネットワークの調子が悪い

無線 LAN で繋いでるんだが、しばらく前から何かおかしい。 例えばブラウザでどこかのページを見ようとすると延々アクセス中になって最終的にはサーバが見付からないってエラー (404 ではなく Safari のエラー) になる。 Safari に限らず w3m や ssh なんかを使うときも同じようなことになるし、Skype だといつの間にかログアウトしてたりする。

電波状況の問題かとも思ったが、そのおかしい時も無線 LAN のアンテナ表示は満タンになっている。 Safari のエラーの出し方からすると DNS 絡みのような気もするが、他のマシンでは特に問題は出ていないので MacBook 特有の問題なのかもしれない。 あるいは無線ルータとの相性か。(Buffalo の WZR-AGL300NH というやつ)

問題が出始めたのがいつからだったかイマイチ記憶がないんだけど、ルータのファームウェアを新しくしたのも同じくらいの時期だったような気がしなくもないので、もしかするとそれが原因かも。

今のところ、たま〜に問題が出る程度で一回エラーになるとその後は普通に使えるようになるから、多少のストレスはあるものの大きく困るような話でもないんだが…… なんなんだろうなあ、これ。 単にホスト引けないだけならもっとすぐエラーになる気がするし、正直何が何やらようわからん。

% [雑談][独り言] 色々と身の振り方に動きがあったわけだが

半分以上レールに乗っかっただけのような展開ではあるけど、最終判断はやはり自分の責任なわけで、こういうの決めるときは多かれ少なかれプレッシャーを感じるものだなあ。 ドキドキなのかワクワクなのかムラムラなのかようわからんが。

あー、こういうのは Twitter に書けばいいのかねえ。 つか、まだアカウント取ってないけども。

% [game][clip] sm6309770 (プリニー 練武の塔〜プリニーラハール(投げ禁止) ノーミスクリア)

この動画にはディスガイア 1 のネタバレが含まれています。

案外身近なところにプリニー仲間がいたんだが、その彼に動画漁りすると良いと言われて探してみたのがこれ。 なんつーか笑うしかないねw

基本的な人間性能が違うとしか思えん。 もうわしも歳食って反射神経も鈍ってるけど全盛期だったら…… なんて負けおしみすら出てこないくらいレベルが違う。 パターン構築のための発想力もすごいけど、それをキッチリ実行する操作の正確性もすごい。 たとえこれが何度もチャレンジした末の一回なんだとしても、わしにはその一回すら無理。

ちなみにわしはプリニーバールと戦うためにもう一度塔に登らなければならないんだが…… なかなかやる気になれない。 これ始めちゃうと PSP の他のゲームができなくなるからなあ。 手がつかなくなるとかじゃなく、物理的に PSP が占領されちゃうから。 練武の城も買ったのにやってないし、早くしないと 2 が出てしまうんだが……

本日のツッコミ(全2件) [ツッコミを入れる]

% hinosawa(kt3k) [先日はいろいろとどうもでした。せっかく、東京に来て頂いたので、もっとみんなでいろんな場所に行けたら良かったんですが、..]

% jijixi [ニコの方は同じうp主の動画も見てみたけど無茶ですな エトナ様倒すのとか動画見るだけならすごく簡単そう(苦笑]


2012-01-25

% [objc] ARC の最適化バグらしきものを踏んだ件

-O0だと問題無いのに最適化がオンだと参照カウントがおかしくなるケースがあるようだ。 iOSシミュレータでも実機でも同じように落ちる。Mac OS X だとどうなるかは未確認。 調べるのめんどくさいから既知の問題なのかは知らない。 その辺詳しい人で、もし未知のバグだよってことなら報告しておいてくれると嬉しいかも。 どこに報告すりゃいいのかわからんし。

環境はXcode 4.2.1 + iOS SDK 5で、再現コードは以下のような感じ。

+ (NSArray *)arrayForTestWithObject:(id)element {
    NSArray *aResult = nil;
    @autoreleasepool {
        NSArray *a = [NSArray arrayWithObjects:element, nil];
        if (rand() > 0) { // (1)
            aResult = [a mutableCopy];
        }
    }
    return aResult;
}

- (NSArray *)arrayForTest {
    return [[self class] arrayForTestWithObject:@"hoge"]; // (2)
}

- (void)testARC {
    NSArray *a = [self arrayForTest];
    NSLog(@"%@", a);
}

適当なところにこれをコピペして最適化オンの状態で (Releaseビルドにすると手っ取り早い) testARC メソッドを呼ぶと (2) のところで落ちる。 シミュレータで Enable Zombie Objects を ON にしていれば、

*** -[__NSArrayM retain]: message sent to deallocated instance 0x6b2c060

ログにこんなのが出力されるはず。

arrayForTestWithObject: 内で aResult の参照数の調整がおかしなことになっている模様。 (1)のところが肝らしく、例えばここの条件を YES (常に真) にしたりすると落ちなくなる。 if を取っ払っても同じように落ちない。 さらに、@autoreleasepool ブロックを取っ払えば問題は起きないので、@autoreleasepool の中で条件によって変数にアサインしたりしなかったりってことがあると危険ぽい。

そんなこんなで半日潰れた今日であった。

ちなみに、上記の例で言うと変数用意しておいてどうのなんてことはせずに、いきなりreturnしてしまえば問題なかったりする。

+ (NSArray *)arrayForTestWithObject:(id)element {
    @autoreleasepool {
        NSArray *a = [NSArray arrayWithObjects:element, nil];
        if (rand() > 0) {
            return [a mutableCopy]; // (3)
        }
    }
    return nil;
}

(3)の部分、@autoreleasepool だとこう書けるので楽だし、上記の問題のことを考えればむしろこう書いた方がいいんだろうね。 まあ、今回は元々自分でNSAutoreleasePoolを使ってたコードをコンバートしたものだったから、こういう事態になったんだけど。

(追記 2012/3/30)

Xcode 4.3.2 で追試したところ上記 (3) の例でもダメなのを確認。 当時勘違いしていたのか、その後状況が変わったのかは不明だが、現状では条件によってnilになり得る値を返したい時は @autoreleasepool ブロックを避けた方が良さそう。 ほんとにどうしても @autoreleasepool が使えないと困るって場合には以下のようなことをすれば一応回避できるっぽい。 いかにも冗長でしかもアホっぽいけど。

+ (NSArray *)arrayForTestWithObject:(id)element { // (4)
    NSArray *aResult = nil;
    @autoreleasepool {
        NSArray *a = [NSArray arrayWithObjects:element, nil];
        if (rand() > 0) {
            aResult = [a mutableCopy];
        }
    }
    return ([aResult isKindOfClass:[NSArray class]] ? aResult : nil); // (5)
}

不思議なことに、(5) の条件をただの nil チェックだけにするとダメ。とにかく何かメソッド呼んでればかまわないのかもしれないので、もう少しアホっぽく見えないダミー記述を考えた方がいいかもしれない。

NSLog(@"%@", aResult);
return aResult;

なんてのでも良かった。ひどいなw

(/追記)

(追記 2013/1/18)

Xcode 4.5.2 + iOS SDK 6.0 では直ってる模様。

(/追記)


トップ «前の日(01-24) 最新 次の日(01-26)» 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com