犬情報
犬を各種ブログ(Blog)から一括検索します。
トップ > おいしいもの > おいしいもの - 人気ブログ(Blog)検索結果詳細 (2008年12月1日 9時)
[Programming][Ruby][Javascript][Web]XHTML 1.1のDTDが読みにくい。
参照しすぎで読みにくいと真琴さんが言っていた*1ので作った。
とりあえずではありますがインクリメンタルサーチできたりするようにしてみました。
Elements, Attributes, Entitiesで出てきます。うにょうにょ動くよ。
いやーjQuery便利っすねと言わざるを得ない。
追記
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]映ったし、そろそろ『デジタルネイティブ』とやらについて一言いっておくか
作者:rosylilly
更新日:2008年11月10日 23時56分
[DoCoMo][Web][HTML]DoCoMo携帯的HTMLのススメ
携帯HTMLはマジクソなんで死ねばいいと思うけど作るときは作らにゃならんのだよジョナサン。つーことで。
絵文字的な
絵文字使う使わないなどはとりあえず無視で。
絵文字は入力方法が二通りあって、
- 直接入力
- 文字実態参照
の二つ。後者はよくある&のアレ。
直接入力だと、文字を打ち込むようにHTMLに絵文字の文字コードをたたきこむ。これは普通のテキストエディタじゃまず出来ないので、なんらかの方法*1を取るしかない。
また、実態参照にしても不具合・出来ない方法などあるので注意。
文字実態参照における留意点
DoCoMoではHTML*2もしくはXHTML*3を使用することになる。
XHTMLは内部的にはHTMLとして扱われており、XHTMLをUA1.0でみてもHTMLとして扱われるため、一応どっちでも大丈夫。となっているものの、ある程度の制限は生じる。
まず、UA1.0*4ではUTF-8の文字エンコードは許可されない。Shift-JISのみ。
んで、この状況において何が問題になるかというと、意味不明な仕様極まりないが、UTF-8とShift-JISでは絵文字の文字実態参照の書き方が違う。ここで間違えると痛い目にあう。
実態参照では、
- &#x***;
- &#***;
と、16進数表記と10進数表記ができるのだけれど、どちらも使えるのはUTF-8のみ。
Shift-JISの場合は10進数表記しかできないため注意。
標準絵文字と拡張絵文字
DoCoMoの絵文字には二種類ある。絵文字入力で「絵文字1」「絵文字2」とかないかな。あれの1が標準。2が拡張にあたる。
標準絵文字は10進数表記でも実態参照できるが、拡張絵文字は16進数表記でないと文字実態参照できない。
しかも下位機種においてはまず『拡張絵文字』がないので表示もできない。UTF-8に対応してないからHTMLも読めない。
ということで、基本的には標準絵文字のみでの対応を推奨する。
つっても、絵文字とかマジ使わんからわからんけどな(笑)
対応要素・属性
対応表はここに書くのは量が多すぎるので厳しい。
上記でUAに二種類あると書いたけど、
- UA1.0 - HTML1.0〜HTML7.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の値の表
| 値 | 誤差 |
|---|---|
| 1 | 300m≦水平誤差 |
| 2 | 50m≦水平誤差≦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でのやり方は各値をセットして送信するだけ。
もちろん拒否される場合もあります。気をつけましょう。
各値の詳細
| 名前 | 値 |
|---|---|
| encode | OPENAREACODE固定 |
| msn | OPENAREAKEY固定 |
| nl | 位置情報を送信するCGI等のURL。これにパラメータを付加することはできません。http://から始めて255文字以内 |
| arg1,arg2 | nlのURLに付加するパラメータ。key=valueのように記述します。a要素で使う場合はURIエンコードに従って%3dに置き換える。 |
| posinfo | 基地局情報を元にした経度緯度情報を受け取りたいときに使用します。省略可。省略した場合はエリアコードだけ渡されます。値の詳細は以下 |
posinfoの値
| 値 | 詳細 |
|---|---|
| 1 | エリアコード・経度緯度情報共に送信します。 |
| 2 | 経度緯度情報のみを送信します。エリアコードは送信されません。 |
返る値
| 名前 | 値 |
|---|---|
| AREACODE | エリアコードです。DoCoMoにて配布されているエリアコードデータを参照。5桁の数字です。 |
| ACTN | OKが返ります。それ以外の場合はエラーもしくは不正と考えていいかも。 |
| POSINFO | 指定した値が確認として返ります。 |
| arg1,arg2 | arg1,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便利っすねと言わざるを得ない。
追記
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]映ったし、そろそろ『デジタルネイティブ』とやらについて一言いっておくか
作者:rosylilly
更新日:2008年11月10日 14時56分
[DoCoMo][Web][HTML]DoCoMo携帯的HTMLのススメ
携帯HTMLはマジクソなんで死ねばいいと思うけど作るときは作らにゃならんのだよジョナサン。つーことで。
絵文字的な
絵文字使う使わないなどはとりあえず無視で。
絵文字は入力方法が二通りあって、
- 直接入力
- 文字実態参照
の二つ。後者はよくある&のアレ。
直接入力だと、文字を打ち込むようにHTMLに絵文字の文字コードをたたきこむ。これは普通のテキストエディタじゃまず出来ないので、なんらかの方法*1を取るしかない。
また、実態参照にしても不具合・出来ない方法などあるので注意。
文字実態参照における留意点
DoCoMoではHTML*2もしくはXHTML*3を使用することになる。
XHTMLは内部的にはHTMLとして扱われており、XHTMLをUA1.0でみてもHTMLとして扱われるため、一応どっちでも大丈夫。となっているものの、ある程度の制限は生じる。
まず、UA1.0*4ではUTF-8の文字エンコードは許可されない。Shift-JISのみ。
んで、この状況において何が問題になるかというと、意味不明な仕様極まりないが、UTF-8とShift-JISでは絵文字の文字実態参照の書き方が違う。ここで間違えると痛い目にあう。
実態参照では、
- &#x***;
- &#***;
と、16進数表記と10進数表記ができるのだけれど、どちらも使えるのはUTF-8のみ。
Shift-JISの場合は10進数表記しかできないため注意。
標準絵文字と拡張絵文字
DoCoMoの絵文字には二種類ある。絵文字入力で「絵文字1」「絵文字2」とかないかな。あれの1が標準。2が拡張にあたる。
標準絵文字は10進数表記でも実態参照できるが、拡張絵文字は16進数表記でないと文字実態参照できない。
しかも下位機種においてはまず『拡張絵文字』がないので表示もできない。UTF-8に対応してないからHTMLも読めない。
ということで、基本的には標準絵文字のみでの対応を推奨する。
つっても、絵文字とかマジ使わんからわからんけどな(笑)
対応要素・属性
対応表はここに書くのは量が多すぎるので厳しい。
上記でUAに二種類あると書いたけど、
- UA1.0 - HTML1.0〜HTML7.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の値の表
| 値 | 誤差 |
|---|---|
| 1 | 300m≦水平誤差 |
| 2 | 50m≦水平誤差≦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でのやり方は各値をセットして送信するだけ。
もちろん拒否される場合もあります。気をつけましょう。
各値の詳細
| 名前 | 値 |
|---|---|
| encode | OPENAREACODE固定 |
| msn | OPENAREAKEY固定 |
| nl | 位置情報を送信するCGI等のURL。これにパラメータを付加することはできません。http://から始めて255文字以内 |
| arg1,arg2 | nlのURLに付加するパラメータ。key=valueのように記述します。a要素で使う場合はURIエンコードに従って%3dに置き換える。 |
| posinfo | 基地局情報を元にした経度緯度情報を受け取りたいときに使用します。省略可。省略した場合はエリアコードだけ渡されます。値の詳細は以下 |
posinfoの値
| 値 | 詳細 |
|---|---|
| 1 | エリアコード・経度緯度情報共に送信します。 |
| 2 | 経度緯度情報のみを送信します。エリアコードは送信されません。 |
返る値
| 名前 | 値 |
|---|---|
| AREACODE | エリアコードです。DoCoMoにて配布されているエリアコードデータを参照。5桁の数字です。 |
| ACTN | OKが返ります。それ以外の場合はエラーもしくは不正と考えていいかも。 |
| POSINFO | 指定した値が確認として返ります。 |
| arg1,arg2 | arg1,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分