age+=1
Line6 POD X3をLinuxにUSB接続しようと試行錯誤したが、やはりどうにもならなかった。一応Line6 LinuxにはX3シリーズ用のブランチがあるのだが、まだまだ動かない状態だ。あいにく俺はLinuxカーネルモジュールの開発経験はないしそれについて学んでいる余裕もないので、今のところ貢献できる部分はなさそうだ。
別にアナログミキサーをDI代わりにした今の状態で何か不自由しているわけではないし、基本的にPOD X3から録って終わりの事が多い中でたまに別の機材を繋いだりするし、それでもUSBインターフェースでの8系統同時出力はなかなか魅力的。
デスマーチがなくならない理由の一つは、デスマーチをどうにかしてしまう人たちがいるから。というかその手の人たちの中には緊急事態になると実に生き生きとしだし、炎上をエンジョイというか、プロジェクトが燃えてるなら俺も燃えるぜというか、非常事態になってから「こんなこともあろうかと思って用意しておいたのさ」と新兵器を投入するマッドサイエンティストのような振る舞いになる人たちもいる。
それでプロジェクトが何とかなるまではいいとして、問題はその後。そこで関係者に「俺たちはこんな過酷な条件でプロジェクトを終えた」というプロジェクトX的な勘違いが生まれると、まあまずまともな反省はされないんじゃないかな。そしてその勘違いが生まれる原因の一旦が、そのデスマーチ請負人みたいな人の武勇伝だったりする。
というかプロジェクトが炎上とかの大失敗からは、何でもいいから次に繋げるための何かを見出すべきで、そうでもしないと燃え損じゃねえか。
Catyの型システムについて、俺からはちょこちょことしか書いていなかったので、ちょっとずつ、ざっくりとだが書いていくことにした。
実装を厄介にするような特徴が目立つのはきっと気のせい。
このサイトを載せてるサーバの構成は、「varnish+apache2(mod_proxy)+Caty」で、自宅サーバに使ってるマシンは大学出てから割とすぐに購入したVIAのCPUを載せた低性能のファンレスPCという構成で、まあ普通にCatyを動かすのはまず無理な構成のはず。Caty自体はとにかくバカでかいアプリケーションフレームワークというか、ほぼプラットフォームというか、まあそんな感じで、特に最近はいろんな機能をブチ込んでいる上チューニングしてないので性能は割と終わってる。
それでもアクセスが一時的にガツンと増えてもログを見る限りは概ねどうにかなっているので、やっぱvarnishって凄いな本当。Web日記みたいなほぼ静的なコンテンツ中心なら全然問題なさげだ。ただめちゃくちゃ動的なコンテンツは流石にvarnishに丸投げとは行かないので、依然として課題ではあるが。
いやまあ、増えたと言っても個人のWeb日記、たかは知れているのだが。
ラビリンスの彼方はちょこちょこと進めてはいるが、そんな一気に進める気にならない。やっぱりやることが代わり映えしなさすぎて飽きるというか。つまらなくはないんだけど、こう集中してぶっ続けでやる気になれない。
仕事がそれなりに忙しいのは事実だが、とはいえさらにゲーム自体への興味が薄れたかというと、去年はスーパーマリオ3Dランドなんかはかなり熱中して特に表面は一気にクリアしたし、デビサバ2には睡眠時間を結構削られたし、スパIV3DEは断続的にとはいえ結構続けたので、まあこれ以上は書く必要はないだろう。
Catyの型解析はcase節の*、要するにelseとかotherwiseがどうにもならないようだ。最初俺は以下のようなケースに付いては、一旦case節に型変数を補って計算すればいいと思っていた。
case {
integer => a,
string => b,
* => c,
}
このときcase節全体の型は型変数をTと置いて各コマンドの入出力型をdom, codで表せば、case<T> :: integer|string|T -> cod(a)|cod(b)|cod(c)になる。(全体の出力であるcod(a)|cod(b)|cod(c)は排他性のチェックを行わない。)
そしてT=dom(c)なのでinteger|string|dom(c)が計算できればいいと思っていたが、例えばdom(c)がanyの時に破綻するという指摘があり、事実そのケースではinteger|string|anyは排他性のチェックに引っかかるので計算できない。
これだとどうせanyだからそのケースを差っ引いて考えればいいじゃんと思うのだが、例えばdom(c)がstring|booleanというケースも問題になる。この場合の排他性のチェックは(integer|string)&(string|boolean)がneverになればいいのだが、もう見たまんまstringが共通部分なのでやはりエラーだ。
しかし先のcase節の型は、仮に論理否定を入れるなら以下のようになる。
case {
integer => a,
string => b,
not (integer|string) => c,
}
この場合、(string|boolean)はbooleanがintegerでもstringでもないので、not (integer|string)に含まれる。理想的には以下の形に変換されるのが望ましい。
case {
integer => a,
string => b,
boolean => c,
}
というわけで仮に頑張るならスキーマに論理否定を入れなければならないのだが、さてどうしたものか。単に型チェックに用いるだけならnot Aという型はAでバリデーションに失敗するインスタンスがその型に適合するとでもすればいいし、コンバータに付いては論理否定を用いた型は使えないとすれば良い。しかし積や直和の演算が今以上に面倒になる。例えばinteger¬ integerはどう考えてもneverだが、これを計算するには結局型の引き算を実装することになる。あとnot AのAがオブジェクトだった場合、恐らく片っ端からプロパティの型にnotを付けていく。そしてそこで元からundefinedやneverだった部分はどうするのだろう。これを無条件にanyとしていいかは疑問。
というわけで、この辺は檜山さんはそこまで頑張らずに「otherwiseを含むcaseは常に静的解析できないリスクがある」というあたりに落とし込もうとしているようだ。俺もそれで実装してみるのが現実的だと思う。
しかし論理否定の導入はこれまた非常に便利そうというか、面白そうなんだよなあ。
Catyのパフォーマンスの終了っぷりを手助けしてくれる超強力なアプリケーションコンテナのuWSGIだが、こいつの上で非同期処理をさらに乗せるとなると、multiprocessingをそのまま使うなどはできない。じゃあどうするかというと、uwsgiを--gruntオプションを付けて起動して、以下のように非同期に処理を行いたい部分をデタッチする。
import uwsgi
if uwsgi.grunt(True):
uwsgi.disconnect()
... # クソのように時間のかかる処理
else:
pass # 何もしない
この辺は公式のドキュメントが殆どないが非常にアレ。
| Replica | ogg/mp3 |
実は昨年末にバリトンギターを購入していたので、それで試しにFear FactoryのReplicaをやってみた。流石に27インチのスケールは慣れないと大変だが、通常のギターよりも確かにダウンチューニングでテンションが保てていると感じる。ちなみに購入したのはHalo Clarus - Beritoneという海外のあまり有名ではなさそうなメーカーのギターで、国内じゃ取り扱ってないからeBay経由で購入。50,000円弱の価格でバリトンギターが買えるのは非常に嬉しい。国内でバリトンギターを探すとSchecterとかIbanezのクソ高いギターか、Danelectroの妙なルックスのギターぐらいしか選択肢がない以上、海外頼みになってしまう。海外だとIbanezも手頃な値段のバリトンギターとか出してるんだけど。
あと今までは歌録りにはSeideのPro-30sというマイクを使っていたのだが、試しにBEHRINGERのUltravoice XM8500にしてみたらこっちの方が明らかに良い音で録れたと思う。残る問題は俺の歌唱力。いや、練習しないのが悪いのはわかってんだが、練習の優先順位がギター>ベース>ヴォーカルなんで。
自分でWiki記法を拡張しておいて、それを忘れて日記を書いて、それを数日単位で気付かず放置とか、俺疲れてんのかな。
月に140時間の時間外労働で死ぬかというと、その半分でも精神を病むときは病むし、死ぬときは死ぬ。というか時間外労働なしでも、あまりに心身に負荷のかかる状態だったらぶっ壊れるよ。そういう所に頭が回らず「自分は月○○時間の残業をこなしてる」とか言っちゃうのはクソ野郎かつバカの証で、そりゃお前がどんだけ残業しても平気な環境だというだけで、それを他人にも適用できるわけないだろ。第一、残業自慢の類は奴隷が自分の鎖の立派さを自慢しているようなものだといい加減気付け。
そういうバカが音頭取ると人が死ぬというケースの典型例がワタミ。社長の言動とか見てると、徹頭徹尾やり方が精神論というか、とにかく馬車馬のように働くことというか。それが正しいと信じてるから、他人にもそれを要求するという、そういうことなんじゃねえの。早く死なないかなこいつ。
とはいえどんなクソ野郎にも人権という物はあるので、流石に殺すのはNG。となるとブラック企業以外の選択肢を増やしたり、あるいは経済情勢により止むを得ずブラック化している会社をまともにしてブラック企業を淘汰していく他なく、よってデフレ脱却して景気を回復させなければならんわけだ。
既にニンテンドーダイレクトなどで情報が出ていたが、それに合わせてティザーサイトがオープン。発売予定は7月5日で、前作が出たのが2010年4月1日だから、大体2年ぶりの新作か。新作を3DSで出すこと自体は3DSの発足当初からの情報だったと思うので、あとは一体いつ出るのかといったところだが、ついに出るか。
思えば初代が出た頃の俺はゲーム自体から離れ気味で、それでゲーマー魂に再び火が付いた切っ掛けが世界樹の迷宮だったっけなあ。そういう意味では非常に思い入れのあるシリーズなので、当然購入する予定。あとは真・女神転生の新作をだな。
改造自体は1月半ばに終了していて、あとはその時のメモを清書するだけだったのだが、なんか面倒くさくなって一ヶ月ぐらい放置してた。
昔から工作の類は結構好きだった事もあって、なんかギターをいじるのも楽しくなってきた。
何か似たようなのが昔にもあって、旧サイトで文句付けてたのを思い出した。
そんでそのクラスの学級通信があったんだけど、これがもう凄い天然物でね。これを美談っぽい文章に仕立て上げる朝日の記者は悪い意味で凄い。
みんなが怪我や病気をせずに無欠席だったのなら、そりゃみんな体調管理ができていて不運な目にも遭わずに済んだということなのだから、それは喜ぶ気持ちもわかる。でも例のクラスでやってることは違うだろ。むしろ体調悪いときに無理したら治るのが遅くなりかねないだろ。それで症状が悪化して一大事になったら誰が責任とるんだよ。そこまで考えてねえだろ。
世界樹の迷宮IVはカジュアルとノーマルの難度選択が付くのか。確かにこれまでのシリーズはこの手のゲームに慣れてない人たちには難しすぎる部分があり、例えば俺の妹なんかは途中で挫折していたからな。というかいきなり「確率の関わるスキルは全降りが基本」とか「戦士系のスキルは1振り様子見」とか、ボスの行動パターンの調査とか、乱数固定/状況再現とかを理解しろというのは難しかったようだ。なので、間口を広げるために難度を選べるようにするのは良い事だと思う。(アトラスの簡単がどの程度簡単かは結構怪しいけど。)
そんな俺はノーマルがどれだけ難しくなってんのかが重要だったりするのだが。今のところ体感的な難しさはII>I>IIIで理不尽なシーンの割合はI>>>II>III、それを差し引いた難度はIIが若干抜けてるぐらいかなあと思っているので、ここはII以上にやりごたえのある難度を期待したいところ。