2010-03

2010-03-01 

ヘルニアで腰を痛めている以上、座り仕事はやっぱマズいよなーと思い、
ゴロ寝deスクCOOL2
購入した。それでまあ寝っ転がりながら仕事すんべと思っていたのだが、

という理由により撃沈。特に俺は首もちょっとマズいことになっているので、
首に負担がかかるのは致命的。というわけでお蔵入りになりそうになったが、
仕事机の上にこれを置いて、そこにキーボードとマウスを置くと
かなりいい具合に使えることが判明した。

というわけで今日は実験的にずっと立って仕事をしてるんだが、
これはこれで辛い。
とはいえ腰の痛み>>>(越えられない壁)>>>立ち仕事の辛さではあるので、
しばらく続けてみる。

2010-03-02 

何で社員を薄給でこき使ったりサービス残業を強要するブラックな経営者がいるかって、そりゃ儲かってないからだろ。儲かってたら社員の離反を招くような労働条件を課して自社内にリスクを抱えるわけない。アレな労働条件で社員を使ってるところは、おそらくそうでもしないと収益を確保できない物と思われる。

ここから先はとある下請けソフトウェアハウスに勤務していた人物(仮に K 君とする)の話なんだが、大体彼は客先に出されるときの単価は70万円/月で、支払い給与は 25 万円ほど(手取りは 20 万円弱)。その一方で同年代の別の社員は、 55 万円/月で支払い給与は大差なし。おいこの 15 万円の差額はどうした、ハネたのかと思われるかもしれないが、それ以前の問題としてこの単価 70 万円というのは割と破格であった。なんでそんな安売りしてるのかというと、そりゃあ単価が上がりすぎると仕事がなくなるからだ。漫画かとかが原稿料のアップを自主的に抑えるというのと多少は似てる。

そしてそもそも大半の社員はそれほど単価が高くなく、新人に至っては収支は確実にマイナスである。そのため、

といったあたりのオイシイ部分でなるたけ稼いでおかないと、例えば不況のときに一気に会社がヤバいことになる。ちなみにこの手の企業は三年以上勤めても退職金など出ないケースがあり、 K 君も退職金はびた一文たりとももらっていないそうだ。

ちなみに K 君の勤めていた企業は「残業代は満額払う」「一応、最低賃金は払っていた」という、単に階層の底辺に近いだけでそこまでブラックではなかったそうなので(そこやってない会社も存在する)、本当にブラックなところがどうなっているかはイマイチ不明だそうだ。いや、ブラックな噂は結構聞こえては来たらしいのだが。

要するに社員にいい給料やいい労働環境を提供できないのは悪気があってやってるわけではなく、少なくとも多重下請けの下の方ではそうでもしないとやってらんねーというのが実状だろう。元請けとか親会社の方は知らん。

ついでながら、 K 君がその会社に勤めていたときに発見した方程式があるので、それを最後に紹介しておく

(ペーペーの新人の単価+高スキルな若手の単価)/2 = 収益の出るであろうラインギリギリ

2010-03-03 

最近は料理日記をおもくそサボりまくってるのだが、
新しいレシピをまったく開拓してないので仕方がない。
まだヘルニアが治る気配なしで、日常生活のあらゆる事が億劫なのが一因。
なので、昔作った事のある奴の中から手間のかからないのを選んで、
それでローテーションしてしのいでる。

いや本当にヘルニアになると大変だよ。何せ基本的な治療方法は
リハビリを継続しつつ腰に負担のかからない生活を送るという
保存療法で、それで数ヶ月様子を見て全然ダメとか、
あまりに痛みが酷くて日常生活すら送れない場合は手術とか、そんなもん。

Web でヘルニアの治療方法について検索すると
鍼とかカイロプラクティックとかいろいろ出てくるけど、
その手の治療方法には「代替医療のトリック」で
「通常の治療に比べて高い効果があるという証拠はない」とか
「そもそも効果はまったくない」とされてるものが極めて多い。
まあ、所詮は Web の情報だからな。

というわけで立ったまま仕事をするようになって三日目なわけだが、
集中して作業してる最中はまったく気にならないものの、
一段落して集中が途切れるたときの疲労感がちょっと凄い。
腰が治る前に足がどうにかなりそうな勢いである。

追記:やっぱもうちょい医者に相談した方がいいなこれは。

2010-03-04 

さて全然売れてないらしい WiZmans World だが、俺は結構楽しめてるぜ。
やっぱ今の時代にこのキャラデザは致命的だったのか、いやこのゲーム性はもう受け入れられないのかなどと思ったが、
よくよく考えたらあんなふざけたキャンペーンで売れる方がどうかしてるか。
というわけで第5ダンジョンをクリア。流石にここのボスはこれまでのセオリーが通用しなかったが、
一回死ねば大体攻略方法がわかる。以下ちょっと攻略方法を書く。

ここのボスは火風土水の4属性それぞれにつき1体の計4体を同時に相手にせねばならない。
そして全員がそれぞれの属性の(物理属性が混じらない)特大ダメージスキルを使ってくる。
どうしても弱点属性を喰らうケースを完全に回避できないので、
この時点で MDF の低いパラメータの魂は使えない。

次に4体のボスのそれぞれの行動パターンだが、

というわけで、真っ先に叩くべきは風属性となる。
風属性に有効なのは火属性で、火属性の特大ダメージスキルのシャドウフレアは
俺の遭遇した限りこのダンジョンではガープが持っているのみである。
ここでガープの魂を2つほど確保しておけば、風のボスを一気に叩ける。

次に倒すべきは火と水のどちらかで、土は放置。
というのも土のボスはステータス補助を多用するため、こちらのうけるダメージはあまり多くない。
また補助はディープミストで一括で消せばいい。
そして何より、風属性の特大ダメージスキル持ちの魂を手に入れられなかったのも理由ではある。
またこの時点で俺はレベル40だったのだが、これだと主人公が風属性の大ダメージ魔法を覚えない。

というわけで水と火のどちらを先に始末するかだが、ここは水が先だろう。
水属性に有効なのは土属性であり、その特大ダメージスキルのアースグレイブは
ハトホルが持っている。こいつはダンジョンの入り口付近で戦うことになり、
また数体まとめて出てくるので手に入れやすい。
それに対して水属性の特大ダメージスキルである絶対零度を持っているベヒモスは
ダンジョンの奥にしか出現せず、また HP がアホみたいに高いので倒すのに難儀する。
こいつの魂は手に入れるのは1つが限度だろうから、水を先に叩いて頭数を減らして火属性は
手数でゴリ押すのがいいだろう。ベヒモスの魂を複数手に入れているなら、先に火を倒してもいいかもしれない。

最終的に残った土のボスは、多分 HP を削りきる前にホムンクルスの SP が切れる。
先に書いた通りこいつは補助スキルを使うターンがやたら多いので、
回復をアイテムに頼りつつ通常攻撃でチェインを稼いで、主人公の魔法でちまちま削って倒した。

ここまでの文章で触れなかった回復や補助スキルは、まあ適当に継承すればいい。基本的に

という編成でいけるはず。

それよか第5ダンジョンは途中のミミックが実にウザく、そっちの方がよほど大変だった。

2010-03-06 

腰の具合はさっぱり良くならず、ヘルニアの厄介さを痛感する。
神経が圧迫されている関係上、基本的に常に痛みがあるんだが、
一応姿勢をずっと固定していると比較的楽には感じる。

ただずっと同じ姿勢でいるのも体に悪く、特に一番楽な姿勢が
「横向きに寝て膝と腰を曲げる」なので、この体勢でずっと過ごすのは無理。
というか今日は割とずっとこの姿勢だったのだが、
そこから別の姿勢に変えようとすると激痛でのたうち回ることになる。
それに仕事はその姿勢でできそうもなく、また医者に相談したら
「立って作業できるならそっちの方がいい」と言われたので、スタンドアップコーディングは継続する事に。

ちなみにこのエントリも立ちながら書いてるんだが、
やはり立ってキーボード打つのは辛い。
これについては立ち作業を補助する特殊な椅子の存在を教えてもらったので、
それを購入しようかと考えている。

追記 

ヘルニアで腰が痛むのは、神経の圧迫ではなくて(こっちは痺れ)炎症だという話を聞いた。それで、炎症を抑えるために神経ブロック注射を打つという手もあるのだと。あくまでも炎症を抑えるだけで根本的な治療ではないが、痛みの酷さにちょっと心が折れそうな状態だからなあ。

痛みがあることは客観的に見ればまだ良くなってない証拠なので、単に痛みを和らげた状態で無理をして、それで悪化させたら元も子もないからなあ。腰に負担をかけにくい生活習慣と環境をもうちょい整えたら、注射打ってもらうのがいいかもしれん。

2010-03-08 

モナドって新しい buzz word なのかなーと思いつつ、以下の記事を読んだ。

第一印象は「なんじゃこりゃ」で、一通り読んだ後の感想は「これでモナドになってんの?」で、
いろいろ考えた後の結論は「この記事の内容じゃ jQuery がモナドかどうかは怪しいというかそう言い切るわけにはいかない」。
もしかしたら記事の方向性で突き詰めた結果モナドが見えてくるのかもしれないし、
別のアプローチを取ればモナドになるのかもしれない。そもそもモナドじゃないかもしれないし、
仮にモナドだったとして、それが記事中に挙げられている jQuery の使い勝手の良さと関連するかも
まったくもってわからない。

Haskell の話が出てくるので混乱したが、そもそも記事で出てくる三つのモナド則は Haskell のそれとは違う。
あれはどうも関手と自然変換の存在について語っているようだが、
元記事じゃそこには触れてないし、仮に Haskell のモナド則だとしたら bind 相当のものがはっきり書かれてないだけによくわかんない(さっきから「わかんない」連発だが、実際そうなんだって)。
どっちにしろあんまりきちんとした説明にはなってない。
何となく俺は「bind がメソッドチェインです。 return が $(...) です」のようなニュアンスを受け取ったが、
そこまで書かれているわけでもないのでやっぱり判断つかない。

何となく、「$と同じ引数と戻り値の型の関数を引数に取るメソッドがあれば、それは bind とみなせるかな」とか思わなくもないけど、これまた深く考えたわけじゃないからな。

2010-03-10 

ここ数日ほど朝晩に物凄い左足の激痛に襲われて日常生活を送ることも
かなり困難な状況だったのだが、硬膜外神経ブロック注射でかなり改善した。
いや単に炎症を抑えて痛みを止めただけでヘルニアは治ってないんだけど、
あまりの痛さに「ヴォオオオアアアアアアアオオオオオオオオオオオン」と
酷いグロウルをしながらのたうち回らずに済んでるのはでかい。
ってかあまりの痛さに不自然な格好で歩いたりする→腰に負担の
ヘルニア永久機関になりそうだったからな。

ところで腰椎椎間板ヘルニアってまず足の痺れが出てくるっぽいんだけど、
俺の場合は去年の終頃にはその自覚症状があったんだよな。
健康のためにちょっとそれなりの距離のウォーキングを始めた時期でもあって
「単に体が慣れてなくて疲れてるだけだな」と思ってたけど、
あの時点でヘルニアになってたかもしれぬ。そっから放置したもんだから、
あっさり悪化と。
これ読んでる人で「何か足が痺れる」という人は、
もしかするともしかするので、
とっとと整形外科にかかった方がいいかもしれんぞ。

2010-03-12 

ここ最近、ヘルニアがどうたらという事ばかり書いていて、流石に気が滅入ってきた。というわけで今日はちょっとプログラミングについて書く。世の中にはハンガリアン記法という名前付け規約があり、こいつは主に二つの意味で使われている。

これらは間違ったコードは間違って見えるようにするという記事で紹介されており、そこでは後者の記法をアプリケーションハンガリアンとして推奨しているが、俺にしてみればどっちもクソだ。クソな理由は自明で、それは xl = cb のようなコードを書いたとしても、それが間違いだと処理系にはわからないからだ。

もしもアプリケーションハンガリアンを適用したいと思ったら、そこは新たな型を導入するべきタイミングがほとんどだと俺は考える。そうするとアプリケーションハンガリアンとシステムハンガリアンの違いなぞなくなる(なので、どっちも窓から投げ捨てるべきという事になる)。そこでどうやって変数名のネーミングを行うかだが、そもそもローカル変数に関してはその名前付けで悩むようなスコープのコードを書いてる時点で敗北だろうと俺は考える。

極端な例として a, b, x, y といった一文字の変数名の情報量は殆どゼロだが、ローカル変数の情報量に頼らなければならないほど関数のスコープが長くて複雑な時点で何かがおかしい。なので、ローカル変数名なんてよほど腐った名前(Dict 型変数に l とか付けるとか)でない限り、型名の頭文字一つとかの適当な名前でよくねと思う。実際俺はよく辞書を d にしたり、リストを l にしたりしてる。もしも自前で定義した Document とかいう型があったら、そこは doc かな。これらの名前は極めて没個性的で情報量ゼロだが、それで何かおかしいと感じたら、それは関数の根本的な設計がマズいと考える。これはなるべく実装を説明するコメントを書くなという思想にも通じる考えだと思う。

そういや昔、「ループカウンタの名前を i とか j にする合理的な理由はない。もしもループが 100 行あったらどうすんじゃ」みたいな事を書いてるアホを見かけたが、 100 行もあるループなんぞリファクタリングの対象でしかないだろ。実はソフトウェア開発の現場でみかけるコーディング規約の中には、それを合理化するための前提条件が間違っているものが紛れ込んでいることがある。ローカル変数名に対する複雑なネーミング規約などはその代表例だ。

2010-03-13 

腰椎椎間板ヘルニア(以下、単にヘルニア)の具合はさっぱり良くならないのだが、今日はヘルニアになって辛い事のうち、今まで書いてこなかったことを「予想通り」だったものと「予想外」だったものの二つ書く(どっちも下品っちゃ下品は話だが)。

まず予想通りだったのは、まあなんだ、自慰行為するのも一苦労だってことだ。いやこれ笑い話でも何でもなくて、多分オナニーする時に取りうるあらゆる体勢がヘルニアになるとキツく感じるぞ。単なる腰痛のうちはまだしも、ヘルニアの症状である下肢の痛みが出てくると、それが楽になる姿勢でチンコ握るのは不可能といってよい。かといってそんまま夢精するまで放置すんのも精神的にキツいわけで、ある種の究極の2択を迫られる事になる。

で、それはおいといて今度は予想外にキツいと感じているもの。それは便秘。そもそもヘルニアになると痛みと痺れのせいで腰の踏ん張りが効かなくなるので、根本的に排便という行為が辛くなる。それだけならまだしも、ヘルニアになると必然的に運動不足になるわけで、便秘になりやすくなってしまう。そして俺は普段はちゃんと野菜類も使った料理をしているが、ここ最近は料理すんのがしんどいのでサボリ気味。そうなると必然的に惣菜だの弁当だのが中心になり、普段よりも野菜類の摂取量が減る、つまりその観点でも便秘になりやすくなる。こんだけ悪条件が重なるとどうなるかというと、いやもうかなり深刻な便秘状態ですよ。

こうして書き起こすと極めて情けないが、でも実際キツいんだよこれ。特に便秘の方は相当ピンチ。「便秘で救急車呼んだなう」とか twitter に呟いてもおかしくない。今はまだ保存療法を継続しているんだが、果たしてどうなることやら。

2010-03-17 

青少年健全育成条例改正案についてはまあ正直そんな深く追ってなかったりするんだが、ちょっと思ったことをツラツラと。

まとまりなくだらだらと書いたが、どうにも「児童ポルノ規制という目くらましを使って、ただでさえ恣意的な不健全図書指定をさらに推し進め、それに賛同するおっさんやおばさんの了解を取り付けることで本丸のケータイネット規制強化案を押し通し、ついでにそれを通じて知事の権限を強化」みたいな意図を感じなくもない。流石にこれは陰謀論的な見方に過ぎると思うが、でもなあ。都知事がアレだからなあ。

それで最後に盛大に脱線するが、旧日記に引き続いてここも kids goo ではフィルタリング対象になる場合があるようだ。恐らく「腰椎椎間板ヘルニアにかかると自慰行為が大変」という記述が引っかかったものと思われる。

2010-03-19 

WiZmans World(ワイズマンズワールド)」をクリア(例のアレ撃破済み)したので、総まとめ的なレビューを(いや、クリアしたのは一週間以上前なんだが、腰がアレな状態なのでレビューを書く気力がなかなか出なかった。このレビューも割と飛ばして書いた)。
発売元はジャレコだがプログラム全般を「世界樹I・II」「真メガSJ」のランカースが手がけており、
ランカースのインプットがどれぐらいあったかは定かではないものの、ゲームの感触はそれらの作品同様に
「キャラクターの成長戦略を考え、編成を整え、戦術を練ることで先に進める骨のあるゲーム」となっている。
適当にキャラを育てて俺TSUEEEEしたい向きにはあまり魅力的ではないだろうが、
そんなザルなレベルデザインのゲームは嫌だ、歯ごたえのあるゲームがいいんだという向きは試してみては。
総プレイ時間は30時間ぐらいで、ボリュームも手頃だ。

WiZmans World はかなり戦闘重視のゲームなのだが、その根幹はシンプルな属性ジャンケンシステムとチェインシステムで、
「火は風に強く、風は土に強く、土は水に強く、水は火に強い」「同属性はあいこなのでほとんど無効化される」というルールが
極めて強く支配している。このルールを頭に入れてないと、雑魚戦ですらかなり苦労することになるだろう。
これにチェインが絡むとさらに考えることは多くなり、「もっとも早くターンの回ってくる敵を弱点を付いて即効で撃破、チェインボーナスで次の敵を……」
といった戦術を敵の編成によって臨機応変に変える事になる。
実際には「弱点属性を付けるスキルが魔法スキルだが、魔法防御が高い相手なので無関係な属性で殴った方がいい」
「攻撃の痛い奴を優先的に倒すためにそこまではチェインを稼ぐ(ただし、そこでチェインが切れる)」などの行動を取った方が良い事もあり、
戦闘システムの戦術性はかなりのもの。

またもう一つの売りであるアニマフュージョンが「新しい魂に乗り換える方がレベルアップさせるよりずっといい」
「魂のドロップ率が全体的に低め、後半は連戦やチェインでのドロップレートアップが前提」という調整になっているため、

と実に綺麗に各要素が噛み合っており、非常に手堅くまとまっている。

もっともそれは序盤から終盤までやることがあまり代わり映えしないことでもあるので、
一長一短かなと思えるところもある。これはダンジョンの探索も同じ事が言えて、
ダンジョンの状態が「通常」「崩壊」「大崩壊」「再生」の四つの状態で変動するという仕掛けは
基本的にほとんどのダンジョンで同じになっており、そのため途中からの展開に既視感を覚えることも割とあった。
それらの形態毎に異なるマップ・グラフィック・BGMを用意する作りの丁寧さには感心したので、
そこにもう一捻りあった方が俺としては良かった。

全般的に見て世界樹シリーズや真メガSJのようにそれまでの戦略を根本的に見直さないといけない状態にはあまりならないので、
そういった奇襲性のある捻ったレベルデザインよりも安定したレベルデザインの妙を楽しみたいといった向きには、
むしろ WiZmans World の方がマッチしているかもしれない(俺は奇策に奇策で対抗するようなゲームの方が好みではある)。

いくつか気になったところを列挙すると、

といったところか。もっともこれらを踏まえても、十分良ゲーだと思う。

というわけで俺の WiZmans World への評価は結構高い。かなり遊べた。
ただどうしても理解不能なのは発売前に打たれた意味不明なモンスターデザイン募集企画で、
あれで「WiZmans World = ネタゲー」どころか「WiZmans World = 地雷」って印象持った人、結構いるんじゃない? 俺だってランカースが絡んでるとわかった上で世界樹IIIが延期してなきゃパスを考えてたよ。
ゲームの出来は本当にまともでシナリオもシリアスにまとまってるんだから、もっとまともなキャンペーンを打ち出してくれよと思う。

2010-03-27 

入院顛末記。

2010/03/20 

入院初日。母の都合が付かなかったので、入院時の付き添いは妹たちに頼んだ。

ケチるつもりで四人部屋を希望していたが、部屋が空いていなかったので
二人部屋に割り当てられた。二人部屋は一日あたりの費用が四人部屋(約3000円)の三倍以上に及ぶ。
これは一時間あたり400円弱かかっている計算になる。
もったいないので手術の日まではちょこちょこと仕事したり本を読んで過ごすことにする(その後はリハビリがあるからな)。

妹たちがおすすめの漫画として「聖☆おにいさん」を持ってきて、
確かに前に一巻を読んだときはそこそこ評価したが、やはり俺はもっとキレた言語センスのギャグが好きだと再確認。
ついでに「これってBLじゃねえの?」とガチ腐女子の妹二号に言ったら「それは違う」と反論された。
基準がよくわからない。

初日からさっそくというか当然の如く暇なので「論理学をつくる」を読む。今日は第3章まで読んだところで終了。
「A または B って、普通に考えたら A と B のどっちか片方だけしか成り立たない事に思えるんだけど?」
「A ならば B の A が偽だと B がなんであれ論理式が真になるって、意味わかんない」
みたいなところもちゃんと説明してあって、証明もきちんと書いてあり、練習問題も解説付きなのでかなり取り組みやすい。

2010/03/21 

入院二日目。手術前なので一日中寝てるわけではないが、それでも動ける範囲が病院内に限られるのはちとキツい。
売店が無いので雑誌などの購入ができないのもそれに拍車をかけている。

というわけで今日は「層・圏・トポス」の第3章(トポス)の定理1まで読んだ。
定理1よりもむしろ、途中で出てきた =A の Sets の圏における役割が謎。
その前に Sets における Ω と classifier だが、
これは例えば Ω を {0, 1} とし、 A⊆B としたとき mono 射である f: A→B に対して
A, B ともに含まれる要素を 1 に、そうでない要素(B 固有の要素)を 0 に対応させるものが f に対する classifier とされている。
ここからは、ある射に対する classifier は、
その射の cod の取りうる範囲とそれ以外をより分けるような働きがあるのかなという事が読み取れる。
そうだとしても =B はいまいちよくわからない。「圏論の基礎」読めばわかるかな。
まあ、具体的な圏における何やかんやは一旦忘れて読み進めてもいいのだろうが。

「論理学をつくる」は第1部を一通り。ここまでは命題論理だけの話だったが、次の部からは述語論理に入るようだ。

Caty の実装は相変わらず大変というか、やはりまだポリシーが完全に決まっていないのが痛い。
アプリケーション間の相互参照時に、あるコマンドが用いるファシリティが定義元のアプリケーションに依存するか、
呼び出し元のアプリケーションに依存するかがまだ完全に決まっていない。
基本的に定義元のアプリケーションでいいと思うのだが、それだとライブラリ的に使いたいコマンドが不便。
さらには標準コマンドとユーザ定義コマンドで統一的な意味論を考えられない。
新たなアノテーションを導入して、ファシリティの依存先を指定できるようにすればよいかもしれない。
例えば @independent アノテーションとか。
コマンド実装クラスの継承元を通常の Command と AppIndependentCommand の二つにするという手もあるが、
それだと宣言からは一切それがわからない(標準コマンドはデフォルトで exportable で不自然ではないだろうからそうする)。
あとあれだ、他のアプリケーションからは呼び出してはいけないコマンドの宣言とか必要かなあ。
多分イラネエと思うんだけど。

2010/03/22 

入院三日目。明日は手術なので、多分日記は書けない。

「論理学をつくる」の第2部は述語論理。前の章で命題論理のタブローをつくる節があったが、
それはここでも出てくる。当然、命題論理に比べるとややこしくなっている。
述語論理のセマンティクスのあたりから集合論の初歩の知識が必要になるが、
それは全部巻末の付録に載ってる。第7章の途中まで読んだが、その付録の知識以上のことは
必要というわけではなさそう。

で、明日手術して翌日からリハビリして、27日には帰れるはずなんだが、
入院期間が延びたらどうすっかな。ってかそうなったら世界樹IIIを発売日に買いにいけるか微妙。

Caty は print と expand に大幅に手を入れた。檜山さんの行った変更ともろにコンフリクトするが、
まあ仕方あるまい。ってかデモサイトを動かすためのアドホックな変更を push すんなという話でもあるのだが。
どうも毎度毎度、マージ作業で大変な目にあってる気がする。
これ、俺一人でほぼ全部の実装してるから大惨事になってないだけで、普通のプロジェクトでこんなことやったら
大体数日で破綻するぜ。

2010/03/25 

一昨日は手術だったので日記が書けず、昨日は術部がやたら痛んでやはり日記が書けなかった。
今日は昨日よりは痛みが引いてきたので、どうにか PC を立ち上げてごちゃごちゃできるようにはなった。
まあ、あまり無理はできないのだが。
元からあった左足の痛みは大分取れてきており、痺れはまだ残っているもののこちらは
取れるまでにちょっと時間がかかるものらしいので心配ないとのこと。
一昨日の午後から今朝まで寝返りもろくにうてなかったので(今でも慎重にやんないといけない)、
体の妙なところが痛くて仕方がない。なのであんまりずっと寝てばっかりでもよくなさそうではある。

今入院してるところは入院する前の記事に書いた通り、岩井整形外科内科病院というところなのだが、
ここの入院患者のうち、腰椎椎間板ヘルニアの患者には、他で治療を受けたものの結果が芳しくなかったので
ここに来たという人が結構いるらしい。確かに手術件数が病院の規模からは多いと思うが、
それはやはりいろんなところから患者が訪れるからだろうな。
ところで手術で摘出されたヘルニアを見たが、何かよくわからん物体だった。

「論理学をつくる」は第2部を一通り終了。といっても練習問題を全部解いたわけじゃないので、
その辺りは退院してからだな。多項述語論理言語のタブローが決定不能な事の詳細だとか、
もうちょい深く知りたい部分も出てきた。巻末のオマケにブックガイドがあるので、いくつか読んでみるか。
次の部は自然演繹。

2010/03/26 

入院七日目。檜山さんがお見舞いに来たので、「論理学をつくる」をネタに、
そっち方面の話を少々。といってもそんな突っ込んだ話はせず。
あと Caty の今後の方向性を少々(綿密な打ち合わせじゃないというか単なる雑談)。

その「論理学をつくる」は、自然演繹は既に知っていたりしたけど、一応第3部を頭から。
といっても一週間近く同じテキストを読んでると飽きてくるので、飛ばし気味に第4部まで読んじまった。
練習問題はろくにやってないので、後でちゃんと解こう。
で、それと平行して「層・圏・トポス」の第4章を読んでいた。何か後々また位相空間の話が出てくるので、
それまでにもっと勉強しとかねえとなあ。

ところで入院前には明日退院というスケジュールで聞いていたが、
何かリハビリ部門の方とか看護師の方に話がいってないので、
もしかしたらダメかも。まあ、それでも来週の頭には退院できるはずだ。
もっとも退院したところで、向こう三ヶ月はジョギングすら出来ず、
多分スタンディングコーディングを続けないといけなさげであるが。
立ち作業を補助する特殊な椅子(約2万円)を教えてもらったので、それ買っちゃおうか。

2010/03/27 

退院。

2010-03-02 

WiZmans World 日記。第4ダンジョンまでクリアしたが(レベルは全員32)、ここもそれまでと大差なし。
ボス戦の厳しさはより上昇傾向にあるが、属性相性の仕様上

の二つのパターンで攻略するのが基本で、どちらを選ぶかは SP の総量とボスの HP の他、 AGI による回転率から判断すればよい。
あとは全体回復やステータス補助スキルを上手く継承すればいいので、無理ゲーと感じるケースは今のところない。
場合によっては属性相性の関係ない魂でひたすら殴りまくるというケースがあるかもしれないが、
それは単に魂のドロップ運がなさすぎた場合だろうな。

とはいえ、今のところレベルデザインは良好ではあり、安定した手応えにはなっている。

2010-03-17 

Python 2.6 から json モジュールが標準モジュールに追加されたが、普通に json モジュールを使うと、 Decimal 型の扱いでちょっと困ったことになる。結論としては Decimal 型を json.dumps でエンコードしたり、あるいは文字列にエンコードされた json から Decimal 型をデコードするのもできる。

まずは文字列から Decimal を復元するやり方だが、これは json.load および json.loads のキーワード引数に parse_float というものがあるので、それを使えばいい。

>>> import json
>>> from decimal import Decimal
>>> json.loads("1.1")
1.1000000000000001
>>> json.loads("1.1", parse_float=Decimal)
Decimal('1.1')

ここまでは簡単。問題は文字列にエンコードする方で、こっちはやや面倒くさい。まずは json.dump および json.dumps は、そのままでは Decimal 型の変換ができなくなっている。

>>> json.dumps(Decimal("1.1"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.6/json/encoder.py", line 367, in encode
    chunks = list(self.iterencode(o))
  File "/usr/lib/python2.6/json/encoder.py", line 317, in _iterencode
    for chunk in self._iterencode_default(o, markers):
  File "/usr/lib/python2.6/json/encoder.py", line 323, in _iterencode_default
    newobj = self.default(o)
  File "/usr/lib/python2.6/json/encoder.py", line 344, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: Decimal('1.1') is not JSON serializable

json.dumps の引数には default というものがあり、この引数には json モジュールがエンコードできない型をハンドリングするための関数を渡すのだが、これを使って次のようなコードを書いてもうまくいかない。

>>> json.dumps(Decimal("1.1"), default=str)
'"1.1"'

「Decimal 型→文字列型→文字列型をエンコード」という処理になっているために、これを loads しても Decimal ではなく文字列でデコードされてしまう。仕方がないので json モジュールのソースを読んだところ、 float のエンコードには repr が使われているようだ。以下は Python 2.6 の json モジュールのソースの一部(encoder.py)だが、 simplejson でもちょっと違う書き方になっているが、大筋は同じ。

FLOAT_REPR = repr

def floatstr(o, allow_nan=True):
    # Check for specials.  Note that this type of test is processor- and/or
    # platform-specific, so do tests which don't depend on the internals.

    if math.isnan(o):
        text = 'NaN'
    elif math.isinf(o):
        if math.copysign(1., o) == 1.:
            text = 'Infinity'
        else:
            text = '-Infinity'
    else:
        return FLOAT_REPR(o)

    if not allow_nan:
        msg = "Out of range float values are not JSON compliant: " + repr(o)
        raise ValueError(msg)

    return text

ここまで読み進めたら、「float のサブクラスを作って __repr__ で Decimal を文字列化したものを返せばいいんじゃね?」という事に気がつくだろう。というわけで、以下のようなクラスを作ってしまう。

class InternalDecimal(float):
    def __init__(self, o):
        self.__value = o

    def __repr__(self):
        return str(self.__value)

使い方はこんな感じ。

>>> json.dumps(Decimal("1.1"), default=InternalDecimal)
'1.1'

もっともこれはちょっと素朴過ぎる(Decimal 以外の json モジュール未対応データの扱いがアレ)なので、実際には JSONEncoder のサブクラスを作り、そのクラスの default メソッドでいろいろ対応した方がいいとは思う。ちなみに default メソッドでやる場合はこう。

class CustomEncoder(JSONEncoder):
    def default(self, o):
        if isinstance(o, Decimal):
            return InternalDecimal(o)
        elif ...

ここでも文字列として値を返さないこと。 default メソッドの戻り値はさらにエンコード処理に回されるので、さきに出したような文字列としてさらにエンコードされて残念な事になる。

2010-03-19 

腰椎椎間板ヘルニアの手術をすることになったので、明日より入院。
入院期間はだいたい一週間前後で、その間ここの更新はお休み。
一応携帯電話からも更新できるはずだけど、わざわざそこまですることもねえからな。

最初のうちは保存療法で治そうかと思っていたんだが、ここ最近は

  1. 朝起きると同時に激痛で悶絶(ってか激痛で目覚めてたような)
  2. 朝飯食って痛み止め飲んで、薬が効いてくるまでずっと寝てる
  3. 昼あたりになると多少楽になってくるので、昼の薬飲んで仕事開始
  4. 午前中寝てた分、遅くまで仕事(在宅だとこの辺の調節は楽)
  5. 夜の分の薬が切れる前に就寝

というような生活リズムになっていて、症状が辛いのと生活リズムが微妙にぶっ壊れてるのと、
そもそも立ったままプログラミングすんのが大変なので
やってらんなくなった。んでもってどうも保存療法で治そうとするとあと数ヶ月かかるようで、
その間こんな生活を続けるのは無理だと判断した次第。

入院先は岩井整形外科内科病院で、
腰椎椎間板ヘルニアの手術実績が豊富で尚且つ負担の少ない手術方法を採用しており、
ついでに俺の今住んでるところと近いので、ここがベストだろう。

2010-03-27 

腰椎椎間板ヘルニアの手術結果とか、手術に踏み切った理由とか、
その他諸々をつらつらと。

手術してから日が浅いので、やはりまだ切開した部分が痛む(靴下を履くのに苦労するレベル)。
あと数日は入院中と同じぐらい安静にしておいた方がいい。
手術によって入院前に悩まされていた下肢の激痛はかなり改善しており、
日常的な動作を行うには問題ないことが多い。
今までは朝起きると同時に呻き声をあげることもあったので、それよかマシ。
足の痺れはまだ完全に取れていないが、これはしばらく時間がかかるとのこと。
またストレッチなどをすると下肢にヘルニア特有の痛みが走ることもあり、
やはり炎症もまだ完全に治まってはいない模様(後述の通り、俺はちょっとイレギュラーっぽい)。

今回俺が受けた MED という手術方法は、背中側から 2cm 前後切開して内視鏡で
患部を見ながらはみ出た腰椎椎間板を切除するというもので、
従来の目視下で行う手術よりも大幅に肉体への負担が少ない。
その一方で内視鏡下で行うため、より高度な技術が必要とされている。
今回お世話になった岩井整形外科内科病院は国内でトップの実績。

腰椎椎間板ヘルニアは、前にちょっと書いた気がするが保存療法が主流で、
手術しなければならないのは少数。今回俺が手術に踏み切った背景には、

などといった事情があるので、もしも腰椎椎間板ヘルニアになっても手術が必須というわけではない。
どうしても保存療法を続けられない、あるいは排尿障害など手術が絶対に必要な症状が出ている
などといった状態になってからでも遅くない。というような説明を普通は受けると思う。
実際、いくら体への負担が従来の手術よりも少ないといっても、手術は手術だ。
術後はそれなりに切開した部位が痛むし、その後のリハビリに時間がかかるのも変わらない。
また入院及び手術にかかった費用は24万円ほどで、やはりそれ相応にはかかる。

術後の過ごし方であるが、例えば俺の場合あと数日〜一週間は入浴は不可でシャワーのみと言われているし、
1ヶ月の間は腰を捻るような動作は慎む必要がある。
ジョギングなどの軽い運動ができるのは3ヶ月後であり、
普通のスポーツができる程度まで回復するのは4ヶ月後とされている。
保存療法にかかる期間が数ヶ月であることを考えると、
治療期間が数ヶ月にわたるのは変わらないともいえると思う。
その間、ヘルニアの激痛に耐えられそうもないから手術したというのは前述の通り。

仕事に関しては、俺の場合デスクワークなので復帰は可能だそうだ。
もっとも連続して作業するのは1時間が限度で、
体勢を変えたり、あるいは寝っ転がったりして休息を取るのは必須だそうだ。
この辺は自宅で仕事してるので自由が効く(ってか多分普通に勤めるのは大変)。
またやはり立っていた方が座っているよりは腰への負担が少ないので、
今後しばらくは立ったままプログラミングする日々が続きそうだ。

というわけで、一月半ばあたりに発症して二月に確定診断が下された腰椎椎間板ヘルニアとの戦いは一段落。
今後しばらくは腰に負担をかけないように生活しつつ、リハビリを続ければまず大丈夫だろう。