メニュー

関連ページリンク

トップ > おいしいもの > おいしいもの - 人気ブログ(Blog)検索結果詳細 (2008年12月1日 9時)

[Programming][Ruby][Javascript][Web]XHTML 1.1のDTDが読みにくい。

参照しすぎで読みにくいと真琴さんが言っていた*1ので作った。

とりあえずではありますがインクリメンタルサーチできたりするようにしてみました。

Elements, Attributes, Entitiesで出てきます。うにょうにょ動くよ。

いやーjQuery便利っすねと言わざるを得ない。

XHTML 1.1 DTD

追記

DTDを一度RubyでXMLに変換してから表示しています。

ほとんどの仕事はJSがしてくれました。が、JSはダメダメなので、改善点などあれば教えてください。

ちなみに、XML化されたDTDは以下。

作者:rosylilly

更新日:2008年11月28日 8時44分

このブログのホーム

[Sigh]

演劇部の後輩にここを補足された。によによしながら言われたのでちょっと泣きそうだったが、まぁあの子ならいいだろう。

作者:rosylilly

更新日:2008年11月25日 17時46分

このブログのホーム

[Programming][Ruby]Prototype

prototype - 素人がプログラミングを勉強するブログに触発されて実装。もうちょっと方法ありそう。

class Prototype
  def initialize(obj = {})
    @scope = obj.dup.to_hash
    @scope['__proto__'] = nil
  end
  
  def [](name)
    ret = @scope
    begin
      if ret.has_key?(name)
        ret = ret[name]
        break
      end
      ret = ret['__proto__']
    end until ret.nil?
    ret
  end
  
  def []=(name, val)
    @scope[name] = val
  end
  
  def method_missing(name, *val)
    if name.to_s[-1].chr == '='
      @scope[ name.to_s[0..-2].to_sym ] = val[0]
    else
      @scope[ name].class.to_s == 'Proc' ? @scope[name].call(*val) : @scope[name]
    end
  end
  
  alias :__methods__ :methods
  def methods
    (__methods__ + @scope.dup.keys.delete_if{|x| @scope[x].class.to_s != 'Proc' }.map{|x|x.to_s}).uniq
  end
end

proto = Prototype.new({"foo" => 0, :baz => 1})

proto.print_a = lambda{
  puts 'a'
}

proto.print_a # => a
p proto.baz # => 1
p proto.foo # => nil(symbolでないから)
p proto['foo'] # => 0

|や+はまだ実装してない。

引数も渡せる。

proto.print_x = lambda { | x |
  puts x
}
proto.print_x(10)

作者:rosylilly

更新日:2008年11月25日 22時2分

このブログのホーム

[Web]映ったし、そろそろ『デジタルネイティブ』とやらについて一言いっておくか

[DoCoMo][Web][HTML]DoCoMo携帯的HTMLのススメ

携帯HTMLはマジクソなんで死ねばいいと思うけど作るときは作らにゃならんのだよジョナサン。つーことで。

絵文字的な

絵文字使う使わないなどはとりあえず無視で。


絵文字は入力方法が二通りあって、

  1. 直接入力
  2. 文字実態参照

の二つ。後者はよくある&のアレ。

直接入力だと、文字を打ち込むようにHTMLに絵文字の文字コードをたたきこむ。これは普通のテキストエディタじゃまず出来ないので、なんらかの方法*1を取るしかない。

また、実態参照にしても不具合・出来ない方法などあるので注意。

文字実態参照における留意点

DoCoMoではHTML*2もしくはXHTML*3を使用することになる。

XHTMLは内部的にはHTMLとして扱われており、XHTMLをUA1.0でみてもHTMLとして扱われるため、一応どっちでも大丈夫。となっているものの、ある程度の制限は生じる。

まず、UA1.0*4ではUTF-8の文字エンコードは許可されない。Shift-JISのみ。

んで、この状況において何が問題になるかというと、意味不明な仕様極まりないが、UTF-8とShift-JISでは絵文字の文字実態参照の書き方が違う。ここで間違えると痛い目にあう。

実態参照では、

  1. &#x***;
  2. &#***;

と、16進数表記と10進数表記ができるのだけれど、どちらも使えるのはUTF-8のみ

Shift-JISの場合は10進数表記しかできないため注意。

標準絵文字と拡張絵文字

DoCoMoの絵文字には二種類ある。絵文字入力で「絵文字1」「絵文字2」とかないかな。あれの1が標準。2が拡張にあたる。

標準絵文字は10進数表記でも実態参照できるが、拡張絵文字は16進数表記でないと文字実態参照できない。

しかも下位機種においてはまず『拡張絵文字』がないので表示もできない。UTF-8に対応してないからHTMLも読めない。

ということで、基本的には標準絵文字のみでの対応を推奨する。

つっても、絵文字とかマジ使わんからわからんけどな(笑)

対応要素・属性

対応表はここに書くのは量が多すぎるので厳しい。

上記でUAに二種類あると書いたけど、

  1. UA1.0 - HTML1.0〜HTML7.2
  2. UA2.0 - HTML1.0〜HTML7.2 / XHTML1.0〜XHTML2.3

とまぁこのようになっている。ここで書かれているHTML/XHTMLはW3Cの定めたものではなく、DoCoMoの定めたものであるので注意。

HTMLの仕様についてはiモード対応HTMLタグ一覧 | サービス・機能 | NTTドコモ

XHTMLの仕様については作ろうiモード:iモード対応XHTMLのバージョン | サービス・機能 | NTTドコモ

画面サイズなどもあるため、注意が必要。

どこかにまとめなどあったと思うけど、よくわからないです。へるぱみー。

*1:DoCoMoから入力用のエディタが提供されている。

*2:UA version DoCoMo/1.0

*3:UA version DoCoMo/2.0

*4:Mova機等の機体。現在はUA2.0が主流

作者:rosylilly

更新日:2008年11月3日 10時41分

このブログのホーム

[DoCoMo][Mobile]DoCoMo携帯サイトの云々まとめ

追記していく。

ここらへん参照

GPS

Global Positioning Systemだっけ?あれを使ってユーザーの現在位置を取得する。

(もちろんだけど、ユーザーの認証ダイアログが出るし、拒否られた場合は取得できないのでエラーチェックはきちんとすること)

GPS機能とは、GPS機能対応iモード端末のみに提供される、位置情報を取得する機能です。この機能を利用することによって、端末の所在する位置に応じたコンテンツを作成することが可能です。GPS機能では、iエリアとは異なり、緯度経度を利用したポイントを示す位置情報を提供します。

GPS | サービス・機能 | NTTドコモ

とのこと。GPS未対応の機体でも大まかな位置を割り出せるiエリアについては後述。


方法はフォームなどによる送信になる。

a要素でも可能。

<a href="./location.cgi" lcs>GPS取得</a>
<form action="./location.cgi" lcs>
  <input type="submit" value="GPS取得">
</form>

どちらでも可。


送信されるパラメータは以下の具合。

名前
lat緯度。±dd.mm.ss.sssで送られてくる。北緯なら+、南緯なら-。度は10進法、分及び秒は60進法で記述され、秒の小数点以下の値は10進法で記述されるといった具合。ex:lat=+35.00.35.600
lon経度。lat*1とほぼ同じ。東経は+、西経は-になる。それ以外は全部一緒。
geo測位結果の測位規準系を出してくれる。wgs84とかが来るけど、機種によっては大文字にもなりうる。GPS対応携帯を私が持ってないのでその他の測位規準系は不明。
x-acc測位結果の誤差範囲を出してくれる。表は以下。

x-accの値の表

誤差
1300m≦水平誤差
250m≦水平誤差≦300m
3水平誤差<50m

首都圏とかだと3で、熊本みたいなド田舎だと1とかになっちゃうんじゃないかな。


電話帳からの位置情報送信などの測位レベルの情報が存在しない状況からの送信の場合は、測位レベルの値(x-acc)は省略される模様。

オープンiエリア

iModeでおおまかな位置情報がとれるとか言うやつ。

オープンiエリアとは、iモードに提供する位置情報取得機能です。「iエリア」はiモードで提供しているサービスおよび、その機能名称であり、「オープンiエリア」は「iエリア」で利用している機能の一般公開仕様を指します。

作ろうiモードコンテンツ:オープンiエリア | サービス・機能 | NTTドコモ

とのこと。

電波をやりとりする基地局の情報を元に算出しているので、通信状況などによって別の基地局が選択されてずれる可能性も多いにあるので気をつけて使いましょう。

できればGPSを使って、未対応機種ならばiエリアを使うとよいとか、そんな感覚っぽい。

また、使用する場合は、必ず*「オープンiエリア対応」*の記述が必要だとか。

あと情報提供者の名前が必要です。

んでは肝心の取得方法及び記法。

a要素およびフォームでの送信が可能。

<a href="http://w1m.docomo.ne.jp/cp/iarea?encode=OPENAREACODE&msn=OPENAREAKEY&nl=(任意のURL)&arg1=test=000&arg2=id=rosylilly&posinfo=2">

formでのやり方は各値をセットして送信するだけ。

もちろん拒否される場合もあります。気をつけましょう。


各値の詳細

名前
encodeOPENAREACODE固定
msnOPENAREAKEY固定
nl位置情報を送信するCGI等のURL。これにパラメータを付加することはできません。http://から始めて255文字以内
arg1,arg2nlのURLに付加するパラメータ。key=valueのように記述します。a要素で使う場合はURIエンコードに従って%3dに置き換える。
posinfo基地局情報を元にした経度緯度情報を受け取りたいときに使用します。省略可。省略した場合はエリアコードだけ渡されます。値の詳細は以下

posinfoの値

詳細
1エリアコード・経度緯度情報共に送信します。
2経度緯度情報のみを送信します。エリアコードは送信されません。

返る値

名前
AREACODEエリアコードです。DoCoMoにて配布されているエリアコードデータを参照。5桁の数字です。
ACTNOKが返ります。それ以外の場合はエラーもしくは不正と考えていいかも。
POSINFO指定した値が確認として返ります。
arg1,arg2arg1,arg2で指定したパラメータが返ります。arg1でtest=trueとしていれば、test=trueになります。

POSINFOで経度緯度情報を取得するようにした場合付加される値

名前
LAT上記GPSのlatと同様
LON上記GPSのlonと同様
GEO上記GPSのgeoと同様
XACC上記GPSのx-accと同様

エリア情報についての算出情報などなどはあとで。

*1:緯度

作者:rosylilly

更新日:2008年10月29日 22時22分

このブログのホーム

[Programming][Ruby][Javascript][Web]XHTML 1.1のDTDが読みにくい。

参照しすぎで読みにくいと真琴さんが言っていた*1ので作った。

とりあえずではありますがインクリメンタルサーチできたりするようにしてみました。

Elements, Attributes, Entitiesで出てきます。うにょうにょ動くよ。

いやーjQuery便利っすねと言わざるを得ない。

XHTML 1.1 DTD

追記

DTDを一度RubyでXMLに変換してから表示しています。

ほとんどの仕事はJSがしてくれました。が、JSはダメダメなので、改善点などあれば教えてください。

ちなみに、XML化されたDTDは以下。

作者:rosylilly

更新日:2008年11月27日 23時44分

このブログのホーム

[Sigh]

演劇部の後輩にここを補足された。によによしながら言われたのでちょっと泣きそうだったが、まぁあの子ならいいだろう。

作者:rosylilly

更新日:2008年11月25日 8時46分

このブログのホーム

[Programming][Ruby]Prototype

prototype - 素人がプログラミングを勉強するブログに触発されて実装。もうちょっと方法ありそう。

class Prototype
  def initialize(obj = {})
    @scope = obj.dup.to_hash
    @scope['__proto__'] = nil
  end
  
  def [](name)
    ret = @scope
    begin
      if ret.has_key?(name)
        ret = ret[name]
        break
      end
      ret = ret['__proto__']
    end until ret.nil?
    ret
  end
  
  def []=(name, val)
    @scope[name] = val
  end
  
  def method_missing(name, *val)
    if name.to_s[-1].chr == '='
      @scope[ name.to_s[0..-2].to_sym ] = val[0]
    else
      @scope[ name].class.to_s == 'Proc' ? @scope[name].call(*val) : @scope[name]
    end
  end
  
  alias :__methods__ :methods
  def methods
    (__methods__ + @scope.dup.keys.delete_if{|x| @scope[x].class.to_s != 'Proc' }.map{|x|x.to_s}).uniq
  end
end

proto = Prototype.new({"foo" => 0, :baz => 1})

proto.print_a = lambda{
  puts 'a'
}

proto.print_a # => a
p proto.baz # => 1
p proto.foo # => nil(symbolでないから)
p proto['foo'] # => 0

|や+はまだ実装してない。

引数も渡せる。

proto.print_x = lambda { | x |
  puts x
}
proto.print_x(10)

作者:rosylilly

更新日:2008年11月25日 13時2分

このブログのホーム

[Web]映ったし、そろそろ『デジタルネイティブ』とやらについて一言いっておくか

[DoCoMo][Web][HTML]DoCoMo携帯的HTMLのススメ

携帯HTMLはマジクソなんで死ねばいいと思うけど作るときは作らにゃならんのだよジョナサン。つーことで。

絵文字的な

絵文字使う使わないなどはとりあえず無視で。


絵文字は入力方法が二通りあって、

  1. 直接入力
  2. 文字実態参照

の二つ。後者はよくある&amp;のアレ。

直接入力だと、文字を打ち込むようにHTMLに絵文字の文字コードをたたきこむ。これは普通のテキストエディタじゃまず出来ないので、なんらかの方法*1を取るしかない。

また、実態参照にしても不具合・出来ない方法などあるので注意。

文字実態参照における留意点

DoCoMoではHTML*2もしくはXHTML*3を使用することになる。

XHTMLは内部的にはHTMLとして扱われており、XHTMLをUA1.0でみてもHTMLとして扱われるため、一応どっちでも大丈夫。となっているものの、ある程度の制限は生じる。

まず、UA1.0*4ではUTF-8の文字エンコードは許可されない。Shift-JISのみ。

んで、この状況において何が問題になるかというと、意味不明な仕様極まりないが、UTF-8とShift-JISでは絵文字の文字実態参照の書き方が違う。ここで間違えると痛い目にあう。

実態参照では、

  1. &#x***;
  2. &#***;

と、16進数表記と10進数表記ができるのだけれど、どちらも使えるのはUTF-8のみ

Shift-JISの場合は10進数表記しかできないため注意。

標準絵文字と拡張絵文字

DoCoMoの絵文字には二種類ある。絵文字入力で「絵文字1」「絵文字2」とかないかな。あれの1が標準。2が拡張にあたる。

標準絵文字は10進数表記でも実態参照できるが、拡張絵文字は16進数表記でないと文字実態参照できない。

しかも下位機種においてはまず『拡張絵文字』がないので表示もできない。UTF-8に対応してないからHTMLも読めない。

ということで、基本的には標準絵文字のみでの対応を推奨する。

つっても、絵文字とかマジ使わんからわからんけどな(笑)

対応要素・属性

対応表はここに書くのは量が多すぎるので厳しい。

上記でUAに二種類あると書いたけど、

  1. UA1.0 - HTML1.0〜HTML7.2
  2. UA2.0 - HTML1.0〜HTML7.2 / XHTML1.0〜XHTML2.3

とまぁこのようになっている。ここで書かれているHTML/XHTMLはW3Cの定めたものではなく、DoCoMoの定めたものであるので注意。

HTMLの仕様についてはiモード対応HTMLタグ一覧 | サービス・機能 | NTTドコモ

XHTMLの仕様については作ろうiモード:iモード対応XHTMLのバージョン | サービス・機能 | NTTドコモ

画面サイズなどもあるため、注意が必要。

どこかにまとめなどあったと思うけど、よくわからないです。へるぱみー。

*1:DoCoMoから入力用のエディタが提供されている。

*2:UA version DoCoMo/1.0

*3:UA version DoCoMo/2.0

*4:Mova機等の機体。現在はUA2.0が主流

作者:rosylilly

更新日:2008年11月3日 1時41分

このブログのホーム

[DoCoMo][Mobile]DoCoMo携帯サイトの云々まとめ

追記していく。

ここらへん参照

GPS

Global Positioning Systemだっけ?あれを使ってユーザーの現在位置を取得する。

(もちろんだけど、ユーザーの認証ダイアログが出るし、拒否られた場合は取得できないのでエラーチェックはきちんとすること)

GPS機能とは、GPS機能対応iモード端末のみに提供される、位置情報を取得する機能です。この機能を利用することによって、端末の所在する位置に応じたコンテンツを作成することが可能です。GPS機能では、iエリアとは異なり、緯度経度を利用したポイントを示す位置情報を提供します。

GPS | サービス・機能 | NTTドコモ

とのこと。GPS未対応の機体でも大まかな位置を割り出せるiエリアについては後述。


方法はフォームなどによる送信になる。

a要素でも可能。

<a href="./location.cgi" lcs>GPS取得</a>
<form action="./location.cgi" lcs>
  <input type="submit" value="GPS取得">
</form>

どちらでも可。


送信されるパラメータは以下の具合。

名前
lat緯度。±dd.mm.ss.sssで送られてくる。北緯なら+、南緯なら-。度は10進法、分及び秒は60進法で記述され、秒の小数点以下の値は10進法で記述されるといった具合。ex:lat=+35.00.35.600
lon経度。lat*1とほぼ同じ。東経は+、西経は-になる。それ以外は全部一緒。
geo測位結果の測位規準系を出してくれる。wgs84とかが来るけど、機種によっては大文字にもなりうる。GPS対応携帯を私が持ってないのでその他の測位規準系は不明。
x-acc測位結果の誤差範囲を出してくれる。表は以下。

x-accの値の表

誤差
1300m≦水平誤差
250m≦水平誤差≦300m
3水平誤差<50m

首都圏とかだと3で、熊本みたいなド田舎だと1とかになっちゃうんじゃないかな。


電話帳からの位置情報送信などの測位レベルの情報が存在しない状況からの送信の場合は、測位レベルの値(x-acc)は省略される模様。

オープンiエリア

iModeでおおまかな位置情報がとれるとか言うやつ。

オープンiエリアとは、iモードに提供する位置情報取得機能です。「iエリア」はiモードで提供しているサービスおよび、その機能名称であり、「オープンiエリア」は「iエリア」で利用している機能の一般公開仕様を指します。

作ろうiモードコンテンツ:オープンiエリア | サービス・機能 | NTTドコモ

とのこと。

電波をやりとりする基地局の情報を元に算出しているので、通信状況などによって別の基地局が選択されてずれる可能性も多いにあるので気をつけて使いましょう。

できればGPSを使って、未対応機種ならばiエリアを使うとよいとか、そんな感覚っぽい。

また、使用する場合は、必ず*「オープンiエリア対応」*の記述が必要だとか。

あと情報提供者の名前が必要です。

んでは肝心の取得方法及び記法。

a要素およびフォームでの送信が可能。

<a href="http://w1m.docomo.ne.jp/cp/iarea?encode=OPENAREACODE&msn=OPENAREAKEY&nl=(任意のURL)&arg1=test=000&arg2=id=rosylilly&posinfo=2">

formでのやり方は各値をセットして送信するだけ。

もちろん拒否される場合もあります。気をつけましょう。


各値の詳細

名前
encodeOPENAREACODE固定
msnOPENAREAKEY固定
nl位置情報を送信するCGI等のURL。これにパラメータを付加することはできません。http://から始めて255文字以内
arg1,arg2nlのURLに付加するパラメータ。key=valueのように記述します。a要素で使う場合はURIエンコードに従って%3dに置き換える。
posinfo基地局情報を元にした経度緯度情報を受け取りたいときに使用します。省略可。省略した場合はエリアコードだけ渡されます。値の詳細は以下

posinfoの値

詳細
1エリアコード・経度緯度情報共に送信します。
2経度緯度情報のみを送信します。エリアコードは送信されません。

返る値

名前
AREACODEエリアコードです。DoCoMoにて配布されているエリアコードデータを参照。5桁の数字です。
ACTNOKが返ります。それ以外の場合はエラーもしくは不正と考えていいかも。
POSINFO指定した値が確認として返ります。
arg1,arg2arg1,arg2で指定したパラメータが返ります。arg1でtest=trueとしていれば、test=trueになります。

POSINFOで経度緯度情報を取得するようにした場合付加される値

名前
LAT上記GPSのlatと同様
LON上記GPSのlonと同様
GEO上記GPSのgeoと同様
XACC上記GPSのx-accと同様

エリア情報についての算出情報などなどはあとで。

*1:緯度

作者:rosylilly

更新日:2008年10月29日 13時22分

このブログのホーム