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

UIにおける一つの真理

ui

ユーザーは何度でもボタンを押したがる! 古いサービスの保守をやっている中で、ユーザーからのクレームないし調査依頼のうち一定の割合を占めるのが「同じ操作がいつの間にか二重で行われてしまった」というもの。命名するなら「過失による多重POST問題」。…

任意の一文字を表す正規表現

js

任意の一文字を表すメタ文字「.」は、忘れがちだけど改行文字だけは含まない。これはPerlでもPHPでもJavaScriptでも共通。 var re = new RegExp('q[qrwx]?(\\W).*?\\1', 'gm'); 上記はPerlのquote表現である qw/.../ 等にマッチするが、複数行にまたがってい…

PerlとPHPのシンタックス差異

ものすごく久し振りにPHPでコードを書く必要性に迫られているのだけど、Perlに慣れ過ぎていて些細なシンタックスで躓きまくり。 sub {} ではなく function() {} elsif ではなく elseif splitの分割パターンはquoteで与える(正規表現が必要ないならexplodeを…

First 13 Programs on New Install

pc

つい先日に某ショップブランドの新しいPCが到着。マシンの新調は確か三年ぶりくらい。OSはVistaにするメリットを感じなかったのでXPを選んだのだけど‥‥DirectX 10がVista限定ということを今更知って、いずれ後悔することがあるような予感。念願のデュアルデ…

暗黙の第一引数invocant

すぐ名前を忘れてしまうのでメモ。Perlではオブジェクトのメソッド呼び出しにおいて、暗黙の第一引数として呼び出し元のオブジェクト情報が渡る。これをinvocantと呼ぶ。 sub method { my $self = shift; } invocantは上記のようにshiftで受け取るのが慣例。…

jQueryでDOM要素を組み立てる

js

上記の例はご紹介する$.N()メソッドをjQueryと一緒に使うと以下のように書けるようになります. $('body').append( $.N('a', { className: 'external', href: 'http://www.yahoo.co.jp/', style: 'background-color: #daa;' }, 'yahoo! JAPAN') ); このとき…

オブジェクトに対応するHTMLを取得したい

js

例えば、以下のようなhtmlがあったとします。 <input type="text" name="age" id="age">これに対し、 var taget = document.getElementById('age'); とすると、HtmlElementオブジェクトが取得できると思うのですが、target.nameとすると「age」が返ってきたり、target.typeとすると「text」が返って…

はて☆すた

本日、ブログを書くのがいっそう楽しくなる新サービス、はてなスターをリリースしました。ご自分のブログにはてなスター機能をつけることで、ブログを見た人が簡単に☆をつけることができるようになります。 ブログをいっそう楽しくする「はてなスター」をリ…

jQueryでselect要素のoption操作

js

selectタグで配置されるプルダウンメニュー、ないしリストボックスといったものの呼び方がどうも統一されてない&selectという単語が一般的なせいで、何かと検索で調べにくいのにはいつも困る。さておき、id="target"なるselect要素の末尾にオプションを追加…

CGIから外部プログラムをバックグラウンドで実行する

非常に時間のかかる処理をCGIから行う場合、ブラウザが応答待ちのまま固まったり、タイムアウトによって処理が中断してしまうといった問題がある。こういった場合、forkを使ってPerlプロセス自身を複製するという手法もあるが、問題の処理は外部プログラムに…

LWP::UserAgentのタイムアウト判別

URIにアクセスできたけどエラーが返されたのか、そもそもアクセスできなかったのかを区別するのはどうすればいいのか、ということでちょっと悩まされた。 use LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->timeout(10); my $res = $ua->get($url); m…

prototype.jsからjQueryへ

js

最近は、jQueryというJavaScriptライブラリを使ってAjax関連の処理を書くことが多いです。なんといっても軽量で高速、XPathによる要素の指定がとても便利です。 http://labs.unoh.net/2007/05/jquery-and-plugins.html prototype.jsがどうも痒いトコに手が届…

無効コンテキストの罠

sub func1 { my $self = shift; my $result = $self->func2; } sub func2 { my $self = shift; $self->check_wantarray; $self->dummy; } sub check_wantarray { my $self = shift; print defined(wantarray) ? (wantarray ? 'ARRAY' : 'SCALAR') : 'VOID'; …

未知の実行時エラー

js

IEにおけるJavaScriptのエラーメッセージは不親切極まりないものが多いが、これも酷い。調べてみると、どうやらreadonly属性のinnerHTMLを書き換えようとした場合。例えば table.innerHTML はIEではreadonlyらしく、これを書き換えようとするとこの「未知の…

onLoadCompleteとonLoadInitの違い

ちょっとだけはまった。 onLoadCompleteで_heigthと_widthは0になる onLoadInitだと両方とも取得できる。 どやらonLoadCompleteではMovieClipが初期化されていないらしい。 http://un-q.net/2006/10/onloadcompleteonloadinit.html 仕事で久々にActionScript…

EUC-JPでマルチバイトを含む文字数を正確にカウントする

EUC-JPのシングルバイト文字のうち、コントロールコードを除いたASCII文字は[\x20-\x7E]。これはそのまま数えれば問題ない。 my $n = ($str =~ tr/\x20-\x7f/\x20-\x7f/); 一方、EUC-JPの2バイト文字は [\x8E\xA1-\xFE][\xA1-\xFE](うち\x8E[\xA1-\xDF]は半…

重複しているレコードのみを抽出する

sql

重複を省きたい場合はDISTINCTなりGROUP BYなりでいいが、逆に重複しているレコードのみ抽出したいというケースに出くわしたのでメモ。 SELECT column, COUNT(*) FROM table GROUP BY column HAVING COUNT(*) > 1; 本当にやりたかったのは、後から重複したレ…

日時の書式を指定する

時刻をきれいに文字列にしたい場合、POSIXモジュールにあるstrftime()を使うことが出来ます。覚えておいても損はないでしょう。こちらも標準装備。 404 Blog Not Found:勝手に添削 - Ajaxでデバッグしよう - @IT 標準モジュールで整形してくれるの存在した…

editableなリストボックス

js

select要素のラベル部分をクリックするとテキストエリアに化けて編集できるようになる、というものが確かどこかのライブラリで提供されていたと思うんですが、どうにも見当たらなかったので、やや違うアプローチで自作してみた。 <select name="job"> <option value="技術系">技術系</option> <option value="営業系">営業系</option> <option value="事務系">事務系</option> <option value="管理職">管理</option></select>…

Apolloってなんなのさ

米アドビ システムズが開発中のミニアプリケーション実行環境「Apollo」が注目を集めている。AjaxやFlash、PDFなどのテクノロジを使ってオフラインでも動作可能なデスクトップアプリケーションを開発する技術で、「Web 2.0をデスクトップに統合する」との指…

FlashからLingr APIが扱えるようになりました

先日のエントリーでFlashからLingr APIが扱えるかどうかを試してみて無理だったと書きましたが、www.lingr.com直下にcrossdomain.xmlを設置したとのコメントをKenn氏直々に頂きました。ありがとうございます。早速、前回と同じテストアプリで接続を試してみ…

mixiの足あとspam

web

「どうしてオレのID知ってるの?」と思うユーザーも多いようだが、実は無差別に足あとをつけるツールが存在。ネット上でツールは数万円という高値で取引されており、足あとを付ける作業の請負をオークションで出品する業者も現れるなど、今や迷惑な「足あ…

パッケージ中のメソッド一覧を取得する

PHPならそのままget_class_methods()という関数があるんですが。あまりスマートじゃない気がしますけど、こんな感じでいけました。 no strict 'refs'; my @methods = grep { $_ !~ /::/ } keys %{"PackageName::"}; print join("\n", @methods); 実行された…

日常に在る些細だが不可解な謎

朝起きると、壁に掛けてあるアナログ時計がきっかり一時間遅れていた。たぶん、これで三回目。

「ゆびとま」社長は元暴力団組長だったそうで

アドテックスをめぐる民事再生法違反事件で、逮捕された元暴力団組長が「ゆびとま」を乗っ取る形で社長に就任し、株式売却で多額の利益を得ようとしていた疑いがあることが分かった。 Expired 思えば、最初に知ったSNSが「ゆびとま」でした。当時はまだSNSと…

引用記法がまた拡張されてた

引用先のタイトルが急に表示されなくなったと思ったら。 本日、日記本文中で引用ブロックを作ることができる「引用記法」での、URL指定方法を拡張しました。 引用元サイトへのリンクを表示したい場合に指定するURLで、http記法と同様の記述が可能になりまし…

各種言語に対応した軽快なソースエディタ「Intype」

海外のmac環境Railsユーザに好評なTextmate。 Windows環境でも同じような(追いつき追い越せ?)センスでのエディタ開発が始まっているようです。 Windows Textmate!? - Intype Alpha 0.2.1: CakePHP のおいしい食べ方 という背景があるらしい、ソースエディ…

Flex 2 Style Explorer v2.0.1

さて、Flex Style Explore が新しくなりました。こちらのリンク (Flex 2 Style Explorer) からご覧いただけます。(横 1280 ピクセル以上の画面をお勧めします) カラーピッカーがちょっとおしゃれになっています。 http://weblogs.macromedia.com/akamij…

swfアプリからLingr APIのroom.observeを実行する

スマートじゃないとは思いつつ、実装そのものは難しくもなさそうなので、JavaScript経由でのリクエストを実際に試してみました。 swfからJavaScript経由でroom.observeのリクエスト(クロスドメインの制限によりswfからは直接GETできないため) JSONPのコー…

FlashからLingr APIは扱えるのか

Comet技術の先駆である「自称・世界最強のWebチャット」Lingrが今月初頭にAPIを公開して注目を集めていたんですが、これを応用して(JavaScriptを貼れる)任意のサイトへ埋め込めるというサービスがid:urekat氏よりリリースされていました。 Lingrのブログパ…