Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

2005-01-01から1年間の記事一覧

DBD

DBIばかりに目がいくと、DBDの存在を忘れてしまいがちになる。DBD::mysqlの$dbh->{'mysql_insertid'}とか、 DBD::Oracleの$sth->bind_param($field_num, $lob_value, { ora_type => ORA_CLOB })など、便利な物がたくさんある。 元は利用するRDBMSが変わって…

例外が投げれてなかった

Cocoaの例外発生で、ミスってた。NSExceptionの exceptionWithName: だけ呼んで例外飛ばした気満々だったんだけど、raise なんてメッセージがあったのだね。迂闊。。。

static

C言語で外部変数にstaticを付けると、ファイル内だけで有効になるのだね。知らんかった。てっきり、全ての変数が全開でグローバルなもんだと・・・。局所的なstaticなら知ってたんだけど。 ・・・ド素人でごめんなさい。

descriptionとstringWithFormat:

今日は時間があまりなかったのでデバグな部分を固めて終了。 オブジェクトの情報を NSLog(@"@%", obj); でログに吐くには、 - (NSString *)description を実装すれば完了。関連クラスの description を呼びつつNSStringの stringWithFormat: で合体させてret…

NSThreadの罠

NSThreadで作ったスレッドから、WebViewにURLをロードさせようとしたのだが、うまく行かない。恐らく、ロード〜画面生成時の処理と、メインスレッドのイベントループ(NSRunLoop)が深く関わってるんだろうと予測。 一日中悩んでたどり着いたのが、NSObject。…

NSArrayにnilが入らない・・・

NSMutableArrayにnilを入れたかったのに、保持できない仕様らしい。 仕方が無いので、代わりに@"NULL"なんて文字を放り込んでおいたんだけど、これって常套手段? 他に回避策有り?

NSImage→OpenGLの座標系修正

先のOpenGL化で、y座標をひっくり返すコードもついでにメモ。 int w = (int) [bitmap size].width; int h = (int) [bitmap size].height; unsigned char* byte_image = [bitmap bitmapData]; GLubyte* reverse_image; int i, j, b; int block = [bitmap hasA…

WebViewのWebFrameからリンクの一覧を抜く

表題の通りの内容なんだけど、なにせサンプルもドキュメントもほとんどない(探し方悪いだけ?)。DOMに関してはW3C見ろってことか。結局は、ヘッダファイルからインタフェースを探して組んで見たら、こんな感じ。 DOMDocument *document; DOMHTMLCollection…

オラわくわくすっぞ!(5)

とりあえず、WebViewに関する部分を別のクラスに隠蔽。慣れない言語だと、クラス作るだけでもめんどいなー(楽しいけど)。今日のノルマはこれで完了。 次はスレッディングだな。でも、その前に、デリゲート用の非公式プロトコルを用意しないとwarningが消せん…

ウィンドウの再利用

XCODEで、ソースのウィンドウが再利用されるようになってしまった。ソースを並べてチェックしたいときにエラく不便だったので、時間を割いて調査。 どうやら、エディタの右上にちょびっとついてる、グループ化の設定が原因のようだ。ソースをグループ化して…

オラわくわくすっぞ!(4)

OpenGLの世界に画像を移動。座標系が逆なので、逆さになってるけど、ひとまず成功。 NSBitmapImageRep* bitmap = [[NSBitmapImageRep alloc] initWithData : [image TIFFRepresentation]]; glDrawPixels( (int) [bitmap size].width, (int) [bitmap size].he…

オラわくわくすっぞ!(3)

わくわくの果てに相当ハマった・・・。 前述の自分でallocしたWebViewに、何度かURLを食わせていると、なぜか落ちる。6時間ハマって、結論としては、所属するNSWindowが居ないと動きが安定しないっぽい。安定しないってだけで、一見動いてしまうのが罠チック…

オラわくわくすっぞ!(2)

引き続きCocoaでURLを画像化する方法のお勉強中。結局、WebViewをinitWithFrame:で自分で作って、画像化が済んだらぽいっと捨てるのがお手軽ってことでそこに落ち着いたのだが。 早速問題が三つ。まず、背景画像が欠けてところどころ出ない部分があって気持…

データベースから手探りで探す

アプリの挙動が変わることからDBのデータを推測していく、Blind SQL Injectionと言う手法。いやはや、色んな手法を思いつくモンだなあ〜。 過去に自分が作ったWEBアプリにセキュリティホールが発見されたとき、ショックを受けるだろうか? 自分はそれよりも…

オラわくわくすっぞ!

さらに調子に乗って、WebViewを画像化できないかなーと頑張る。Viewから画像を作るのは、こげな感じ。 NSData *img_data = [wv dataWithPDFInsideRect: [wv bounds]]; NSImage *img = [[NSImage alloc] initWithData: img_data]; この後、忘れずreleaseね。…

WebView

調子にのってCocoaでWebViewを呼び出そうとしたら、cannot decode object of class (WebView)と怒られた。 フレームワークの追加は、お忘れなく(笑)。

デメテルの法則

Law of Demeterはクラス間の不要な依存を取り払うために良いと言う話を聞いていたんだけど、実際にこの手法に従ってやってみると、遠くのクラスにメッセージを送るためのラッパーメソッドが至る所に量産されてしまう。そのため、新しいメソッドを追加したい…

細々と過ごす休日

こんな感じにウィンドウを散らかして、細々とコーディングしてみる。judeでUML書いて、miでperlのコードを書いて、ターミナルでデバグ。Test.pmでテストスクリプトを書いて、クラスを実装後、proveコマンドでテスト。そんな繰り返し。 設計の「〜すべき論」…

オブジェクト指向(2)

オブジェクト指向がわかりにくい例をもう一つ。主語の選択は適切でも、主語の振る舞いや主語と主語の間の関係が極端に不自然な場合がある。 「彼」が「宝くじ」を引いて、「宝くじ」が「彼」の過去の当選履歴を調べる こう書くと、そんな設計しないよって思…

オブジェクト指向(1)

なぜ、オブジェクト指向なんだろう? オブジェクト指向はいいと刷り込まれ、なんでもオブジェクト指向にしている今日この頃ではあるが、普通に手続き指向で書いた方が処理の流れが分かりやすいと言う例に何度も遭遇した。そこで、オブジェクト指向にする意味…

ピアレビュー

頭痛がひどくて仕事にならなさそうだったので、ピアレビューって本を読破してた。かゆいところに手が届く良い本といった印象。すぐにでも実務に使えそうな気がする。 本を読むのはタメになるなあ。時間さえあれば・・・(笑)。

Apache::StatINC

StatINCを使っているのにも関わらず、モジュールのリロードをしてくれないとボヤク貴方。StatINCのリロードの実装は、 eval{ require $key }; となっているので、エラーが発生しても無視され、Server Errorとはならない。さらに悪いのは、このコードだとエラ…

miniでWEBサーバ(7)

ProxyPass /hoge_server/ http://hogehoge/ ProxyRequests On この二つはアクセス制御が共通になってしまうので、基本的には同時に使わない方がいいっぽい。 #プロクシ用 <Directory proxy:*> Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>#リバースプロクシ用 <Directory proxy:http://hogehoge/*> Allow </directory>…

miniでWEBサーバ(6)

ひたすらmt-check.cgiで足りないperlモジュールのインストール。CPANがぶっ壊れてるせいで疲れた(´-`)。 後はmysqlの自動起動とImage::Magickとcronの設定でブログの移行は完了。と思ったら、POSTが通ってない。設定かな? ・・・ああ、別にPOSTが通ってな…

【解決編】delegateもわからない

放置されてたdelegateの謎だが、なぜか勤務中に突然答えを閃いた。 まず、copy: senderについて。こいつはFirst Responderに送られてResponder chainを辿る。その際、NSWindowとNSApplicationのdelegateを巻き込む。 The two windows and the NSApplication …

CPANデビュー

1年前に英語メールで送りつけたパッチが、今ごろ反映されているのを発見。あのメールで通じたんだ? っていうか、読むの遅っ! これでちょびっとだけperl界の役に立てた(´▽`)。お世話になりっぱなしなのも癪だからね。

mod_perlで邪悪な悪戯

mod_perlで、 @INC = (); %INC = (); ってやったら、空間を共有してるほかのスクリプトも何もuseできなくなってダウンするのかなーと思ってやってみた。 結果としては、%INCは消せるけど@INCは消せないみたい。ちょっとガッカリ(笑)。StatINCがデフォルトの…

あふぃーん

Affine変換。昔やったようなやってないような・・・。と言うか、やってないわけないのに記憶がない(笑)。 CGでは、一次元上の行列の積によって合成を行うことにより、演算速度を速めているんだと。つまり、3次元のアフィン変換を4次元行列で表現するってこと…

Net::LDAPを再び使う

Net::LDAPを久しぶりに使う。bindした後には必ずunbindするべきなのかとばっかり思っていたら、podによると、 If you wish to switch to another set of credentials while continuing to use the same connection, re-binding with another DN and password…

シリアライズの裏の意味

シリアライズってのは、オブジェクトを永続化するための概念だが、逆の見方をすると、デシリアライズをする場合には適切にオブジェクト化するべきだと言うことも言える。 いくら元ネタがCSV形式だからと言って、カンマ区切りの文字列をオブジェクトのプロパ…