2009-04 << 2009-05 >> 2009-06

2009-05-31 (日)

雨….

2009-05-30 (土)

秋葉原.東急ハンズ.

2009-05-29 (金)

初めて1時間以上の残業をした.

2009-05-27 (水)

memcachedの使い方が分かった.

*ThinkPad X200

買ったまま放置していたので,電源を入れて環境の移行を始める.

2009-05-26 (火)

早めに会社に行って内部統制とかの話を聞かされる.

とりあえず,Twitterとかで社内情報を公開しちゃいけないってことですね.

2009-05-25 (月)

少し早めにオフィスに行ったら,今日は早いねと言われた.いつも席に着くの作業開始3分前だからなぁ.

2009-05-24 (日)

*QRコード

表紙のデザインの一部としてQRコードを使った本を見て,そのQRコードが不自然に見えて仕方が無かった.

3隅のマーカーはとりあえず存在したけど,それ以外の点があからさまにランダムに並んでいる.サッカーボールの黒と白を何も考えずにいいかげんに塗り分けてみたとかそんな感じの不自然さ.

デザイナが不自然になるように意図してたわけでは無いとおもうので,QRコードを見ても「なんか白と黒の点が並んでいるな」くらいにしか認識しない人が多いのでしょう.

2009-05-23 (土)

なんだか,インフルエンザとか騒がれてるらしいですね.

*MTM03に行ってきた

Make: Tokyo Meeting 03に行ってきた.

CIMG0021.jpg

微妙に遅刻して到着.

とりあえず,同期の人がやってるブースを発見したので話をして,そのあと一緒に行く人予定だった人たちと合流.

みんなクオリティが高いなぁ.自分の場合はとりあえず作った,くらいで終わることが多いのでどうにかしないといけないですね.ただ,ちょっと動作が怪しげだったり,良くありそうなありきたりな内容だったりしても,やっぱり実際に作って発表するというのはすごいな.

デイリーポータルZさんやニコニコ技術部の人たちもいました.

光ファイバーを使ったアートは綺麗だった.

何か作らないと.

2009-05-22 (金)

PHPを見ていると自分で言語を設計したくなる.

飲み会.

2009-05-20 (水)

*PHPの正規表現

preg_matchとかが完全にPerl互換だと思っていて嵌りました.どうも\Q~\E間の文字列の扱いが中途半端.

if (preg_match("/\\Qaaa\\/bbb.ccc\\E/","aaa/bbb.ccc"))
    print "match!\n";

なぜか,これがマッチしない.\Q~\Eに対応していないのかと思って

if (preg_match("|\\Qaaa/bbb.ccc\\E|","aaa/bbb.ccc"))
    print "match!\n";

としましたが,これはマッチする.

ということは,「\」によるエスケープが使えていない可能性が高いと考えて

if (preg_match("/\\Qaaa\\/bbb.ccc\\E/","aaa\\/bbb.ccc"))
    print "match!\n";

…これにマッチしました.かといって,「\」でエスケープしてやらないとエラーになります.

これはPCREに渡す前に処理しなければいけないはずなので,その部分で問題が起きているんだと思います.そもそも,Perlの正規表現の「/」って文字列の「"」にあたるものだと思うんですが….

2009-05-18 (月)

*Perlから「$」を駆逐するモジュール

以前,Perlのドル記号をどうにかしようとして上手くいかなかったのですが,BEGINブロックでサブルーチンを作ったらいいんじゃないか?というアイディアが浮かんだ.コンパイル時に変数名からサブルーチンを動的に作って,宣言したい場所の名前空間に放り込んでしまえばいいはず.

宣言するごとにBEGINブロックを書くのは嫌なので,どうにか動的に生成したい.しかし,BEGINブロックはコンパイル時に実行されているので,そこに処理が到達したときには手遅れになる.

BEGINブロックを直接記述せずに,コンパイル時に変数名によってパラメタライズされた処理を実行できれば問題が解決する.

…これは明らかにあれです.

package var;
sub import {
    shift;
    for (@_) {
        my $t=$_;
        *{caller()."::$t"} = sub :lvalue{${$t}};
    }
}
1;

こういうモジュールを作って,

use var test,a;
test="hello\n";
a=123;
print test;
print a."\n";

としてみる.

%perl test.pl
hello
123

できた!Perlスクリプトから「$」を消すモジュール.

次はuse無しでいきたいなぁ.せめてlocal相当にしたい.

ただ,これによってPerlの処理系以外にPerlスクリプトのパーサが存在しないことが分かってしまった.

2009-05-17 (日)

*研修補講

今日も,先月インフルエンザで休んだ研修の補講.

ビジネスマナー研修とか.たしかこれは受けた気がするけど,熱で朦朧としながら受けてたので後半はあんまり覚えてない.

「電話は利き手と反対の手で取る」とか言われて,素でなぜなんだろうと考えてしまったけど,そういえば多くの人は利き手で文字を書くんですね.

2009-05-14 (木)

通勤途中,ごみの収集車が燃えてた.ちょうど消防車が来たところに出くわした.ケータイで写真撮ってる人がたくさんいた.

*仕事

プログラミングは苦にならないので時間を忘れて書いてしまいそうですが,もう少し色々考えないとなぁ.

あと,仕事で開発欲が満たされてしまうので,趣味で何か作ろうという欲求が薄れてきてしまっているのが問題かも.仕事で作ってしまうと,サイトで公開したり日記とかに内容を書けないのがなぁ.多少は書いても大丈夫なんだろうけど,線引きがまだ分からないので.

*フラッシュメモリ

そういえば,近頃のフラッシュメモリって完全にデータを削除するためにはどれくらいの手間が必要なんでしょうか.磁気メディアについては,データの復元技術も広く知られているし,調べれば3回くらい上書きすれば読み出せなくなるという話が出てきます.

安い多値記録型のNAND型メモリだと,1~2回のランダムなデータの上書きでも現代の技術では読み出せなくなってしまいそうですが…どうなのかな.ただ,メモリ内蔵のウェアレベリングアルゴリズムや不良ブロックの扱いによって普通にはアクセス不可能なブロック内に情報が残っている可能性がある.そうなると,いくらPCで何かしても完全消去は不可能ということになるなぁ.良い資料が見つからなかったけど,どっかで研究されてるかな?

前にも書きましたが,HDDとかを物理的に破壊して「これなら絶対に復元できません」とか言っているのをよく見るけど誇大広告じゃないかと思う.読み出されたくないなら,磁気的に何度も上書きするか,磁性体をキュリー点まで加熱したほうが確実です.たぶん現代の技術では,3回も上書きしたらほとんど読み出せなくなってしまいますが,HDDのプラッタを砕いても断片を並べて読み取ることは可能です.まぁ,物理的な破壊は一瞬ですむので安上がりなのでしょう.

あとは,某所で携帯電話とかに穴を開けて情報を抹消する機械を見たことあるけど,ちゃんとメモリのチップの場所を調べてあけないと,チップを別の端末に貼り直すだけで読み出せてしまいそうです.

2009-05-13 (水)

*PHP難しい

動かすだけならマニュアル見ながらできるけど,処理時間とかが感覚的に把握できないので,トライアンドエラーを繰り返しながらになってしまう.

あと,やっぱりキーのタイプ数がすごく多くなる.

mapとかがないのは不便だなぁ.配列内のデータを何かしたいときってわざわざforeachでループまわすの?

でもやっぱり,一番不便なのは正規表現が関数で提供されていることかなぁ.

PHPでデータベース扱うアプリケーションでSQL文を組み立てるときに文字列中にデータを入れているのを見たことあるし,研修でもそうしていた気がする.DB操作はプレースホルダとか無いと不安…SQLインジェクションが騒がれるのも納得.と思ってたのですが,普通にプレースホルダ使えるっぽい?

う~ん,使わない理由があるんだろうか.

そもそもプログラミング言語内でSQLを組み立てるというのが何かおかしい気がする.せっかく組み立てても,内部ではパースしてバラしてから使うわけだし.ただ,ORマッパーの実装も結局は内部でSQL組み立ててたりするわけで,速度的にはマイナスになってしまうのが問題.ストレージエンジンに直接アクセスするようなライブラリは無いのかな….

2009-05-12 (火)

array_key_existsはなんでこんなに遅いんだろう…

*[お仕事] PHP

昨日,PHPプログラマにジョブチェンジしたので勉強しながら書く.

Windowsにhttp://www.apachefriends.org/jp/xampp.htmlを入れて開発してたのですが,いきなりメモリ割り当てで起こられる.なんでデフォルトの制限が32MBに設定されているんだ…数百MB必要な予定なのに.とりあえず1GBに変更.で,処理にも数分かかる予定なので実行時間の制限も適当に変更してみた.

本当にこれはPHPで作って良いシステムなんだろうか….

2009-05-11 (月)

*お仕事

PHPプログラミング.Perlで書く予定の部分だったのに,なるべくPHPでと言われたので仕方なく.

なんか,色々ひどい.

2009-05-10 (日)

研修の補講.

来週はスーツとか嘘って言ってほしい.

2009-05-07 (木)

仕事です.仕様書です.Perlです.

今の状態でも楽しいけど,もっと楽しくやる余地がたくさんある気がするので,もっと頑張ろう.

2009-05-06 (水)

SDカードソケットの端のほうのピンを見てると嫌になってくる.まぁ,最終的にはマイクロSDにするつもりだからいいんだけど.

メモリを変えたらPC起動した.

パーツの調達のために秋葉原行こうと思ったけど雨降ってる.

http://beagleboard.org/ 欲しい.

*テキストエディタ

最近,vimが多いです.次がnotepad….どっちもOS標準のエディタとして採用されていることが多いので,とてもすばらしいものだと信じて使ってます.

先月の研修での話ですが,使ったマシンにTeraPadが入っていた.その時はあまり使わなかったのですが,UIがシンプルかつ標準的で好感が持てたので自分のPCにもインストールしました.

「表示が凝ったメモ帳」として使うならとても良いのだけど,日常的に使うとなると,マクロが使えない,検索と置換に正規表現が使えない,使いやすいショートカットキーが最初からに使われていて変更できないので,外部ツールをたくさん登録すると余っているキーしか使えなくて不便かも.

特に正規表現が使えないのが個人的には致命的.

やっぱまたK2Editorかなぁ.

2009-05-05 (火)

なんか,デスクトップのPCが起動しなくなった.電源入れるとビープ音が暫く鳴って,そのまま何も起きない.明らかにエラーコードを表してそうななり方だったので,調べてみたらビープコード一覧が出てきた.メモリ関係か….なんどかメモリを抜き差しするが,解決できず.

*ニコニコのアカウント

ニコニコ動画周辺のサービスをいろいろ見て回る.ニコニコ大百科にログインしようとして,パスワードを何度か間違えてたらアカウントがロックされてしまった.ロックの解除方法が分からない.アカウントセンターとやらを見てみるが,それらしいものは無い.動画の方はログイン済みだったのでパスワードの変更とかして見たけどだめ.というか,動画の方で一度ログアウトしてみたけどログインできる.

…しばらくしたら勝手にロックが解除されてた.あれ?

*AVR

久しぶりにAVRをいじる.AVR-USBはV-USBに名前が変わったのか.

ライタをダンボール箱から引っ張り出したら配線が外れた….JavaScriptとかで遊んでたはずが,いつの間にか半田ごて握ってるのはなぜ?

HIDaspx用の基盤が売られてる.HID USB I/Oの方がコンパクトで良いな.安いしちょっと欲しくなる.自分で作ったやつは1~3盤ピンが逆だな….

パーツ足りないけど,雨降ってる.明日は秋月行こう.気軽に秋葉原行けるってこんなに便利なんだ.

メモ:3.3V PUW ピンヘッダ

2009-05-04 (月)

FirefoxでJavaScriptからFlashを含む要素を削除しても,なんだかFlashが動き続けてる気がする.

メモリ上から消し去りたいときはどうしたらいいんだ?

*AP

ちょっと日を遡るけど,研修で講師の人がアプリケーションをAPと書いていた.プログラマをPGと略するみたいでなんか気持ち悪いし,どう見てもアクセスポイントに見えてしまったのですが,Application Programの略かも.それならいいか.

*調子が戻ってきた

研修期間中は一日中眠くて,起きていること自体が辛かったけど,最近は普通に目が覚めるようになった.

*Twitterはじめた

研修中にアカウント取ったまま放置してたのを昨晩急に思い出して,使ってみることにする.みんなTwitterで連絡取ってるみたいなので,そろそろ参加しないと情報弱者になりそうなので(汗).まずは同期の人を探して適当にフォローしていく.ハンドルだけだと自信ない人もいるけど.

2009-05-03 (日)

部屋の片付け.

本棚を組み立てる.ダンボール箱の数が減った.

*NHK

NHKの人が来たけどテレビ無い…なんだかわざわざ来てもらって悪い気がしてきた.ただ,テレビ持ってるのが当たり前のように話し始めるっておかしくないですか?よく知らないけどテレビってみんな見てるの?

*倍速再生

自作した再生速度を変更するDirectShowフィルタを使ってますが,再生中に速度が変更できないのが困る.映像側にも割り込ませてフレームを間引くとかしたらいいのかなぁ.よくわからないので,nave playerに戻りそう.ニコニコ動画で使うためにFlashのflv再生にフィルタを潜り込ませる方法があるならまた作り始めるのだけど….あとnvplayerだと再生できなかったり速度変更できない動画もあるしな….

なんだか,デスクトップやウインドウを録画するツールがいろいろありますが,DirectShowフィルタとして実装した方が便利じゃないですか?そういうのが無ければ作ろう…と思ったらあった.SCFH DSF

*久しぶりに

JavaScriptをいじってみる.でも,1行くらいの簡単なスクリプトしか書いてない….開発環境がブラウザのURL欄だけというのが何か間違ってる気がする.

とりあえず,昔書いたブックマークレットもバージョンアップ.ニコニコ動画でflvをダウンロードするリンクが追加されるやつです.動画再生ページでも使えますが,プレーヤーが動画をダウンロード中のときはつながらないみたいなのでしばらく待つか,前のページに戻ってから使ってください.改行されちゃってるので1行に戻して使ってください.

javascript:(function(){f=function(h){if(h.match(/watch\/(\w+)/)){c=document.
createElement('a');c.setAttribute('onclick','(function(){r=new XMLHttpRequest
();r.open("GET","'+h+'",false);r.send(null);r.open("GET","/api/getflv?v='+
RegExp.$1+'",true);r.onreadystatechange=function(){if(r.readyState==4&&r.
status==200){location.href=unescape((r.responseText.split("&"))[2].slice(4))};
};r.send(null);})()');c.textContent='[DL]';t.parentNode.insertBefore(c,t.
nextSibling);}};a=document.getElementsByTagName('a');for(i=0;i<a.length;++i){t
=a[i];t.getAttribute('class')=='video'&&(f(t.href),t.parentNode.tagName=="H1"
&&f(location.href))}})()

もう中の人になってしまったので,更新は最後かも.

2009-05-02 (土)

X200を注文してしまった.HTMLメールやめてください…>lenobo

EeePCも欲しいな.サーバ用に.

ガス,水道,電気の口座振替の申込書を一度に出す.

2009-05-01 (金)

*二日目

周りを見渡すとセクションごとに結構特色があるな….私が配属されたセクションもかなり特徴的だけど…ここに書いたらいけないかも.

DVC00070.jpg

男子トイレからの眺め.都会だ…

15時からミーティング.

帰りに駐輪場を確認.…はたしてこれは駐輪場なのか?