カテゴリー ‘ PC

退職しました

株式会社サスライトに2006年5月から2010年11月まで、4年半勤務し、本日付けで退職することになりました。

やったこと

  • WIN32APIをIAT書き換えによってフックし、HDDへの読み書きやプロセスの起動を制御する仕組み
  • WinInetとOpenSSLを使ったプロキシサーバの実装
  • WebDAVクライアントの実装

学んだこと

  • SVNでのプロジェクト管理
  • http、SSL、プロキシの理解
  • 情報セキュリティ管理

皆様ご存知の通り、平行してマジシャン業務である株式会社ショウマン取締役というのを細々とやっていますが、こちらはもちろん継続です。サラリーマンの傍ら、取締役という肩書きを持って活動をしていたことは非常に良い経験でした。肩書きが人を作るというのは本当です。(特に僕のような従順な人間にはね!)

明日からはハートレイルズの社員になります。代表である上楽さんのblogを1年ほど前から購読しており、完全在宅勤務、数々のユニークなBtoCサービス、最先端技術を使いこなす開発力など、とても魅力的な会社だなと思っていたところに社員募集の記事があがり、ここぞとばかり応募したところ無事に採用された次第です。既に水面下ではプロジェクトに携わっています。
今後も引き続き奇術業界との兼業を考えている僕にとっては、まさに理想的な環境と感じています。ある時はMagician Geek、またあるときはGeek Magicianとして、もっともっと皆様の目に触れるところで活躍してまいります。

今後ともよろしく!!

誰もがもうすぐ呪文を唱え始める

ボイスレコーダの不便なのは、あとから特定の箇所を探すのにとても時間のかかることだ。だから、あとで思い出そうというつもりでもあまりだらだら録音すると、聞き返す労力に負けて結局ゴミになってしまったりする。
ところが、たとえばGoogle Audio Indexingのような技術を利用すると、膨大な量を録音しても、まるでネットで検索するかのようにキーワードで一覧を見て、その前後の文脈を読むことが出来る。
僕の喉元にマイクをとりつけて、24時間録音し続けてしまえば、「あれ、あの時なんて言ったっけ?」なんてときに、そこへ遡って自分の発言を確認することが出来てしまうのだ。

ちょっと、便利だよね。

積極的にメモとして使うなら、例えば、「ハンズに行ったら○○を買う」というようなセリフを、何か思いついたら忘れずに口にするように習慣付けておけば、実際ハンズに行ったときに「ハンズに行ったら」というキーワードで直近の発言を検索することで、漏れなく買い物できてしまうわけだ。

便利だね!

生活のメモ代わりにはそれで良いとして、学習意欲旺盛な諸君はこれではちょっと困ることがある。「ストラディバリウス」という言葉そのものを今知って、あとで思い出したい場合、どうすれば良いだろう?
検索したい言葉自体が思い出せないと、どうにもならない。
こんな風に単語帳的に使うには、例えば、「単語帳、ストラディバリウス」という風に特定のワードを決めておくと良い。そうすれば、「単語帳」で検索すれば望みのものが得られるようになる。
どうせなら、日常使わない特別なキーワードを決めておいたほうが混乱は少ないだろうね。「チョーゴンタ」とか。そうしたら、何か記憶したい言葉に出会うたびに「チョーゴンタ ストラディバリウス」「チョーゴンタ スリジャヤワルダナプラコッテ」などとつぶやくようにすれば、とても簡単に単語帳が出来上がってしまう。どうせならもっと洒落たキーワードが良いと思うけど。

「チョーゴンタ」を使い慣れた頃には、別の検索ワードを自然と使い始めてるだろう。「あとでやる」ことをまとめて思い出すために「ルヤデトア 鞄に印鑑を入れる」「ルヤデトア デジカメのバッテリーを充電」とか、思いついたそのときにつぶやいておけばいい。そんで、家に帰ったら「ルヤデトア」で検索。

ベンリ!!

そうしてふと気づく。あれ、これって、魔法の呪文みたいだよね?

さらに先の妄想はもうだいたい想像つくと思うから端折るけど、キーワードだけでは沢山覚えるのが大変なので体の動きを加えたり、あるいは特別な「杖」を手に持ったときだけ発動するようにしたり、はたまた、今で言う「format c:」みたいな危険なコマンドがついうっかりで発動されないように、わざと少し小難しくしたりして、そうこうするうちに、僕らは近い将来、いつの間にかみんな魔法使いになってるんだ。

「充分に発達した科学技術は、魔法と見分けが付かない。」-Arthur C. Clarke-

Win32のセマフォは自動解放されない

プロセスの同期の「セマフォ」の項にあるサンプルを実行したのだが、カウントアップ中(セマフォ所持中)に×ボタンでプロセスを殺すと、その分は元に戻らない。
つまり、セマフォはリソース管理方法としてはまったく使えないということだ。
参考までににMutexは、所持しているスレッドが死ねば自動的に解放されるし、開いているハンドルも自動的に閉じられる。

他のプラットフォーム上ではどうなんだろ。

xrea with GoogleApps で、メール転送がされないのを解決

2つのドメインtrick-with.netとtrick-and.net(仮称)を僕が持っていて、value-domainのDNSでどちらも同じxrea上のサーバにAレコードを向けてある。

この状態で、trick-with.netへ来たメールをgmailのアカウントに転送していたのだが、一定の確率で転送を蹴られるという困難な問題が発生していた。

続きを読む

SmartPointer::leak()

SmartPointerクラスが、管理下のポインタをdeleteすることなくその管理を終えるときに呼ぶ関数名はなんとしたらよいか。
SmartPointerがpointerを保持している、という実装上の事実からすればrelease()等が妥当だが、pointerそのものと同様に扱えるというのがSmartPointerの本来の設計思想であるので、release()とするとpointer自体を開放してしまいそうで紛らわしい。

などという話をしていたときに当時の同僚だったtxgが提案したのが leak() だった。

素晴らしくね?
とても気に入っていて、今でも愛用している。
流行らないかなあ。SmartPointer自体が時代遅れだからもうダメかな。

wikipedia:初音ミク 項目削除について分かりやすく説明する

前提:
1. Wikipedia上の編集はすべて履歴が残る。
2. 途中の版だけを削除することは出来ず、ある版を削除した場合、それ以降全ての編集が消えることになる。
3. ある版で無断引用等の問題が発覚した場合、それ以降の全ての版を削除する以外に対応法は無い。

事件:
「初版で問題発生」

対応:
→初版以降を削除=項目自体を削除。
もちろん、同名の項目をまた作ればよいだけの話なのだが、「項目削除」という言葉になぜか勝手にインパクトを感じた人たちが祭り状態。

横道:
開発元から引用許可の話があったが、「引用元を明記せずに引用できるのはGFDL配下の文書のみ」というWikipedia側のルールを開発元が理解していない恐れがあり、実際、商用サイトがGFDLに従うことは現実的ではないため、権利者の許可といえども保留。

壁面mac mini

mac mini on wall
いまここ。

みんなもっと遅延しようよ

ソフトウェア・エンジニアリングにおいて、「遅延」とは、最適化のための重要な概念である。英語では “delay”.

遅延ロード
アプリケーションが外部モジュールを使用する際、後々必要になるモジュールは起動時に全て読み込んでしまうというのが一般的であった。対して、軽量なまま起動を済ませ、追加モジュールは必要になったぎりぎりの時点で初めて読み込むという手法。
遅延生成
データベース管理された日記をHTMLで公開する場合、アクセスされる度にビューを生成するとサーバに負荷がかかるため、その日の記事を書き終えた時点でビューを生成するというアプローチが取られることがあった。対して、データ入力完了時ではなく、最初の閲覧者がそのページを見ようとしたときにビューを生成する、という手法。(”キャッシュ”は、哲学は違うがやってることは多分一緒。)
遅延宣言
コーディング時に、使用する変数のリストを関数の最初ですべて宣言するのではなく、使用する箇所の直前で宣言、初期化する手法。古いC言語では文法的に認められていなかった。僕はこの発展で遅延include(実際にそれを使用する関数の直前でクラスやパッケージのヘッダをincludeする)を多用していたところ、前の会社の同僚と議論になった。

もちろんそれぞれメリットデメリットはあるが、近年は特に、大抵において歓迎される。
これが、「遅延」である。

さて、話を日常生活に戻そう。
「遅延」は、忌むべき行為であり、「前倒し」が常に奨励される。
「もっと遅延しろ!」などと言われることは決して無い。
ともすれば「怠惰」に直結するくらい、ネガティブな語感をふんだんに含んだ言葉だ。

このギャップはどうしたことだろう?
(揶揄してるのかなんだか知らないが、”delay” の代わりに “lazy” を使うこともある。)

僕はいま現実に、週末のイベントの準備でてんやわんやしていて、遅延させないため、遅延を取り戻すために戦っている最中。終わると大抵、「もっと前倒しで準備するべきだった」みたいな反省が当然出てくるのであるが、そこには本質的な見落としがあって、だからまた遅延を繰り返している。

「歓迎されるdelay」をもう少し突き詰めて考えると、そこにヒントがあるかも、と漠然と思いつつ、仕事に戻ります。

#来週、続きを書くかも。遅延ダイアリィ。

説明をキットします。

Microsoftの機械翻訳ドキュメントは役に立ったことが無い。意味不明すぎて結局英語を見る。
自動翻訳の実用化はまだまだ先か~。

思わず笑った翻訳。
Mac SDK: ソフトウェア開発は、説明をキットします。

きっと、してくれるよね。いつか。説明を。
僕はその日を待つよ。

ちょっと本気でWeb2.0風に

申し込みフォームを本気で作った: 世界のマジックショー!2007

ポイント:

  • いくつか調べた中でいちばんよさげなjQuery.jsを採用
  • formの送信はもちろんajax動作
  • JavaScript offの環境下でも、レガシィに動作
  • よって、Validationはcgi側のみに実装
  • でも、ajax動作の時はエラー項目の色がちゃんと変わる
  • ケータイでもそのまま使えるように、Shift-JISを採用
  • CGIは、ajax動作時はutf8、レガシィ時はShift-JISに自動的に切り替わって出力
  • CGI側も、Perl5.8の標準モジュールを出来るだけ使用
  • ところがCGI.pmにutf8のバグがあるようなのでCGI::Liteを持ってきて使用
  • ついでにデザインもCSSEZとか使っちゃう

ふーん、なんだこれ、っていじってくれる人は「ご氏名」を「テスト」にしてくれれば無視します。
(でもメールアドレスとかきっちり残るのでちゅうい)
もちろん、本当に申し込んでくれるのもアリ。

return top