Hatena::Groupasakura

浅倉卓司@blog風味? このページをアンテナに追加 RSSフィード

Error : RSSが取得できませんでした。

2005-10-31(Mon)

POPFileがバージョンアップしてた

| 00:58 |  POPFileがバージョンアップしてた - 浅倉卓司@blog風味? を含むブックマーク  POPFileがバージョンアップしてた - 浅倉卓司@blog風味? のブックマークコメント

http://popfile.sourceforge.net/cgi-bin/wiki.pl?JP_POPFileDocumentationProject

 以前に比べてかなり動作が軽くなってる。

 ざっと調べたら、kakasiまわりが改良されたのが大きいかな。これで自前の分かち書きパッチを使わなくても済むなぁ。


 SMTPプロクシとかXML-RPCがいつの間にか正式版になってるし*1

*1:0.22かららしい。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051031

2005-10-28(Fri)

PHPプログラミング救命病棟

| 11:14 |  PHPプログラミング救命病棟 - 浅倉卓司@blog風味? を含むブックマーク  PHPプログラミング救命病棟 - 浅倉卓司@blog風味? のブックマークコメント

 Perlプログラミング救命病棟PHP版が欲しい……。

 RegisterGlobals が On のコードを簡単に Off で動くようにする方法とか。

 あるいは1つのPHPファイルがいろんなことをしてて(DBへの登録したりDBからのデータの一覧を表示したり、詳細を表示したりなどなど)スパゲッティーにもほどがあるコードを効率よく読みとく方法とか。

 SQLへの引数がちゃんとエスケープされてるか調べる方法とか。


 そういうのじゃなくても、PHPの正しいコーディング方法っていうのをまとめたものがあると良い気がするよ……。

 昔はPerlで書かれたCGIが酷かったけれど*1、まるでそういう酷いコードを書いていた人々がPHPに移ったように、どうしようもないPHPのコードがごろごろしてるのですよ。

 それを修正・拡張してくれとか言われると、途方にくれるしかないというか。

(だからまあ、Perl救命病棟の冒頭にあった行為をひたすらすることになった訳ですが……)

*1:未だにそういうコードが再生産されているらしいのが困りモノだけれど、それでも昔に比べると格段に減ったと思う。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051028

2005-10-27(Thu)

はてな入りたい!

| 17:31 |  はてな入りたい! - 浅倉卓司@blog風味? を含むブックマーク  はてな入りたい! - 浅倉卓司@blog風味? のブックマークコメント

――ってのが流行ってるらしいのを某氏のブックマークで知る。

 トラックバックを打ってる人がいないので、試しに打ってみよー。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051027

2005-10-25(Tue)

PerlとRubyの思想の違い

| 11:35 |  PerlとRubyの思想の違い - 浅倉卓司@blog風味? を含むブックマーク  PerlとRubyの思想の違い - 浅倉卓司@blog風味? のブックマークコメント

 Rubyは昔から自前主義なのよね。個人的にはそこがイマイチなのだけれど。

http://d.hatena.ne.jp/naoya/20051024/1130146687

ActiveRecord は DHH が Rails のために実装したものだそうで、その中では RubyDBI も利用しておらず、データベース接続から Active Record パターンによるインタフェースの実装まで、ほぼスクラッチから書かれているらしい。(各 DB 実装へのバインディングは、他の人による実装だそうです。) DBI/Ima::DBI その他 CPAN モジュールをベースに作られている Class::DBI とはその辺りが対照的。

 Rubyが他のモジュールを使わない理由のひとつは、CPANに相当するツールが存在しない*1からじゃないかな? RAAから必要なモジュールを探してインストールするのは非常に手間だし。

 一時期Rubyでコードを書いてたけど、結局Perlに戻ってきたのはコレが一番大きかった。とにかくモジュールのインストールがとにかく面倒で。せめて

$ perl Makefile.PL
$ make
$ make test
# make install

くらい手順が統一されてしかるべきでしょうに(純粋オブジェクト指向を名乗ってるくらいだからね)、それすらなかったし。

 それに比べてPerlCPANの他にもPPMとかあって、モジュールのインストールは大変快適です。


 このあたり「コードを書くのが楽しい=コードを沢山書く」Rubyと「コードなんて書いてられるか、面倒くさい」というPerlの違いなんでしょうかね。

*1:今はいちおうできたんだっけ?

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051025

2005-10-19(Wed)

UI改善(固定桁入力編)、の続き

| 23:11 |  UI改善(固定桁入力編)、の続き - 浅倉卓司@blog風味? を含むブックマーク  UI改善(固定桁入力編)、の続き - 浅倉卓司@blog風味? のブックマークコメント

http://asakura.g.hatena.ne.jp/asakura-t/20051014/1129302264

# secondlife 『onKeypress(onKeydown)でイベント拾って変更時にeventlistenerにfunction登録すれば望みの動作ができると思います。』

――とコメントをいただいたのでEventListenerについて調べたのですが、addEventListenerってのはどうやらInternet Explorerでは使えないみたいなんですな。

 まあでも、確かにonkeydownとonkeyupの両方のイベントをチェックして入力値が変更されたのかを確認すれば、[Tab]で移動したときにフォーカスを動かさなくて済みそうだ。んでも、全部の入力項目にonkeydownとonkeyupを書くなんて面倒なことをするのは嫌だしなぁ。


 ……とか思っていたら、formのelementsから全入力要素を拾えるのを思い出した。

 じゃあtypeがtextでmaxlengthが設定されている要素にイベントを追加すればいいんじゃね? ついでにnameを気にせずに次の要素を拾えるし。

 というわけで書いてみたのが以下のコード:

function auto_jump( form ) {
  var length_attr = "maxlength";
  for (var i=0; i < form.elements.length - 1; i++) {
    var elem = form.elements[i];
    if (! elem.type == "text") continue;
    if (! elem.getAttribute(length_attr)) continue;

    elem.next = form.elements[i+1];
    elem.onkeydown = function() {
      this.pre_value = this.value;
    }
    elem.onkeyup = function() {
      if (this.pre_value == this.value) return;
      if (this.value.length < this.getAttribute(length_attr)) return;
      this.pre_value = this.value;
      this.next.focus();
      if (this.next.type == "text") this.next.select();
    }
  }
}

 サンプルはこちら

 JavaScriptは書き慣れてないのでどーにも野暮ったいですが*1

 これなら既存のフォームに追加しやすいかな。


 それにしても意外だったのは「そんなのはココにあるよ!」って言われなかったことだ。

 うーむ。

*1:誰か添削して~、とか思わなくもない。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051019

2005-10-17(Mon)

Googleデスクトップサーチにムカツク

| 18:44 |  Googleデスクトップサーチにムカツク - 浅倉卓司@blog風味? を含むブックマーク  Googleデスクトップサーチにムカツク - 浅倉卓司@blog風味? のブックマークコメント

 なんでInternet Explorerが立ち上がるんだよ。極力IEは使いたくないというのに。

 関連付けを無視してるのかな……。


追記

 違う環境だと関連付け通りに立ち上がるね……。なんでだろ。

 もっとも、その環境では相変わらずCPU負荷が100%になって反応しなくなるので使い物になりませんが。


さらに追記

 なんかちゃんと関連付け通りに開くようになった。とりあえずめでたい。

 あとはCPU負荷の問題かぁ。


段落のまとまり=コードブロックのまとまり

| 17:03 |  段落のまとまり=コードブロックのまとまり - 浅倉卓司@blog風味? を含むブックマーク  段落のまとまり=コードブロックのまとまり - 浅倉卓司@blog風味? のブックマークコメント

 小説のような長文を書くときは意識しませんが(行間をあけるときはカットやシーンの切れ目になるので)、コラム的な文章を書くときは多少は意識するかな。

http://d.hatena.ne.jp/naoya/20051016/1129428871

で、意識しているかについて YES/NO でいくと僕は YES。ひとつの段落にまとめたときにいい見た目の塩梅になる文字数とか、空行が適度に入るように段落わけするとか、そういうのを意識しています。わざわざ綺麗にまとまるように文章を付け足したり削ったり、構成を変えたりということをすることもあります。なんとなくこう、あるんですよ、このぐらいの分量でちょうどいい、みたいなものが。何が綺麗とか、思いっきり主観なんですけどね。

 ちなみにこれ、プログラムを書くときの傾向と似てたりしません?

 コードの意味ブロック毎に空行を空けたりとか。


他の人に聞いたら、意識してる人、してない人に分かれて結構興味深かった。あと、いろんな blog を読んでると、この人はそういうところも意識して書いてそうだと感じるところがあったりもします。

 文章を書くときに読みやすさを意識してない人は、コードを書くときも読みやすさを意識してない気がします。なんとなく。

 そうでもないのかな……?

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051017

2005-10-14(Fri)

ちょっとしたUIの改善とか(固定桁入力編)

| 00:04 |  ちょっとしたUIの改善とか(固定桁入力編) - 浅倉卓司@blog風味? を含むブックマーク  ちょっとしたUIの改善とか(固定桁入力編) - 浅倉卓司@blog風味? のブックマークコメント

http://d.hatena.ne.jp/naoya/20051012/1129121627

 確かにウェブのユーザビリティはイマイチで、なんとかならないのかなー、と思う。

 例えば、

-


カード番号---

――みたいなフォームがあったとして、これがWindowsのアプリケーションなら郵便番号を3桁(4桁)入力したら、あるいはカード番号の4桁を入力したら、自動的に次の入力フォームに移るのが多いでしょ。でも、ウェブでそういうことをやってるトコはあまり見かけない。

 どこかでそれをやってて、「そうそう、これだよ」とか思ったくらいだし。


 でまあ、そんなに労力をかけずに作れるんじゃね? とか思ってスクリプトを書いてみたのさね。

function toNext (input, nextname) {
  if (input.value.length < input.getAttribute('maxlength')) return;

  if (nextname == null) {
    input.name.match( /([a-zA-Z]+)(\d+)/ );
    nextname = RegExp.$1 + (Number(RegExp.$2) + 1);
  }

  var next = document.forms[0].elements[nextname];
  if (next != null) {
    next.focus();
    if (next.type == "text") next.select();
  }
}

 とりあえずは動くんでいいんだけど、問題が2つある*1


 ひとつはフォーカスの移動がダサイ点。

 たいていのブラウザでは[Tab]キーを押せば次のtabindexに飛ぶわけで、たぶんスクリプト側で簡単に呼び出す方法がある気がするんだけど、僕が探した範囲では見つからなかった。ので、上のようにダサイ方法を使ってる。


 もうひとつはちょっと致命的で、例えば[Shift]+[Tab]で戻ったり、あるいはカーソルキーを押したりしても次の入力フォームに移動しちゃうのだ。

 いちおう解決方法として、event.keyCodeをチェックするとかあるんだけど、どうやら全てのブラウザで使える方法じゃないらしい*2

 単にコントロールコード系のキーが押されたら無視できればいいんだけど。なんかいい方法はないっすかね?


 ついでにモバイル系以外でもistyleみたいなのが使えるようになればいいんだけど。そういうのって規格化されてないんでしょーか。


つづく

*1:というか、もっとまともなのを誰か作ってそうだから、それがどこにあるのか知ってる人がいましたら教えてください。おねがい。

*2Internet ExplorerOperaではできた。Firefoxではできなかった。

通りすがり通りすがり2005/10/15 00:27onchangeでやってみるとか

asakura-tasakura-t2005/10/15 00:35onchangeってフォーカスが移動する時に発生するイベントじゃありませんでしたっけ? 勘違い?(JSはあまり詳しくないので……)

kuippakuippa2005/10/15 21:25こんにちは。
たとえばココとか。プリピドカード番号を入れると飛ばしてきますね。https://www.webmoney.jp/point/u007.html
LANのWEBベースなものだと良く見かけるけど…そのときはブラウザを指定してしまうので、KeyCodeをそのまま書き換えたりしてますな。ShiftはShiftで拾えるのでそこは分岐にして共通関数化。フォーカス系のイベントはインターネットだとクライアントの環境によっては読み込みが完了しなかったりしたときにスクリプトエラーになるからあまり普及していないのかなぁとか思ったり。

asakura-tasakura-t2005/10/16 00:26webmoneyのはちょっと凝った処理にしてますね。確かにそうすればいいんだけど、僕は既存のフォームに付け加えるだけで実現したかったので……。
スクリプトエラーについては、エラーの時にアラートが出るように設定してる一部の人以外はきにしない気がするのだけれど(というか、スクリプトエラーが出てるサイトはいっぱいあるし)。
もちろんスクリプトが動かないとフォームが入力できない、なんてのは論外ですけどね。

secondlifesecondlife2005/10/17 12:46onKeypress(onKeydown)でイベント拾って変更時にeventlistenerにfunction登録すれば望みの動作ができると思います。

asakura-tasakura-t2005/10/17 22:27eventlistenerっていうのがあるんですか。知りませんでした……。
ちょっと調べてみます。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051014

2005-10-13(Thu)

循環参照を見つけるにはDevel::Cycleとかいかがでしょ

| 22:59 |  循環参照を見つけるにはDevel::Cycleとかいかがでしょ - 浅倉卓司@blog風味? を含むブックマーク  循環参照を見つけるにはDevel::Cycleとかいかがでしょ - 浅倉卓司@blog風味? のブックマークコメント

 1年ほど前に循環参照にハマって大変でした*1


http://d.hatena.ne.jp/naoya/20051012/1129115986

http://blog.livedoor.jp/dankogai/archives/50142945.html

http://blog.livedoor.jp/dankogai/archives/50143441.html


 最初はScalar::Util::weakenを使って解決しようとしたんですがそれでも循環参照が残る部分があって、仕方がないのでデバッグにいい方法はないかと思ってCPANを漁ってて見つけたのがDevel::Cycle

 これで調べて一気に解決したという*2

*1:その時気付いたんだけど、前の会社のコードにも同じ問題が残ってるような気がしたけど、コードが無くて確かめられませんでした。もし残ってたらごめんなさい。

*2:ものすごく遠いトコで循環してて、そこを1か所断ち切ったら万事解決したのでした……。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20051013
2004 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 07 | 10 | 11 | 12 |
2008 | 02 | 03 | 04 | 06 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 02 | 03 | 04 | 05 | 07 | 08 | 10 | 11 | 12 |
2013 | 01 | 05 | 07 |
2014 | 01 | 02 |
2016 | 01 |
2017 | 01 | 05 |