アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://****/
上記のような形をした文字列のうち、URIとして正しいものは何個ありますか?
ただし、*には任意の文字が入るものとします。

A 回答 (8件)

なぞなぞですか?



URL/URIの長さに規定はありません。
PATH_INFOやQUERY_STRINGとして/で終わるURIも考えられるので
無限
とも言えますし、
文法上はpathとしての/以外の"/"はパーセントエンコードしなければならないので、/で終わるURIは存在しないと考えると、(PATH_INFO、QUERY_STRINGを考えない場合に限る)
0
とも言えます。
    • good
    • 0
この回答へのお礼

科学的な質問です。
言葉足らずで申し訳ありません。
*には、任意の1文字 (char) が入るという意味です。
http://a.jp/」という文字列がURIの要件を満たし得るならば、答えは1個以上あるといえます。

お礼日時:2009/03/10 08:49

URIの形式として


scheme://[username[:password]@]hostaddress[:port][path]
scheme = http
path = /

・username,password に関する制限は何かあったかな?
・hostaddressについて
DNS表記では
RFC1035によると
ホスト名の最大サイズは63オクテット
FQDN の最大サイズは255オクテット
それぞれ最小サイズは1オクテット
RFC4343によると、大文字小文字は区別しないことになっていますが、有効なURIとして考えるなら大文字小文字は区別することになりますね。

使用できる文字はアルファベット,-,数字
Windowsの場合はこれに _ が追加されます

IPv6 直アドレスの形式の場合は16進数表現で、あらわされ、
[0000:0000:0000:0000:0000:0000:0000:0000]
03ef などは 3ef として表現してよい
0000:0000 など、0が連続する場合は :: で短縮できる。

日本語ドメインに関してはよくわかりませんがこれもURIとしては有効です。

・port について
0~65535 まで

・・・頑張って計算してください。
    • good
    • 0
この回答へのお礼

長いURIでは計算が複雑になってしまいますが、
****が4文字であるとしたら、どうでしょうか。
簡単にするため、実装上の違いは考慮せず、
現時点で標準とされているRFCなどの技術文書の仕様に従ってURIかどうかを判定するのが良いかも知れません。

最初はURIに使える文字と、2文字のトップレベルドメインの総数が分かれば求められるのではないか、と思っていました。
つまり、ASCII順に並べたとき最初に来るURIは、「http://-.ac/」ではないかと考えていました。
.acドメインのレジストラが、-という文字の使用を認めていないかもしれませんが...。

しかし「http://localhost/」というのも正しいURIですから、hostsファイルの設定によっては「http://----/」のようなURIもあり得るのでしょうか?

お礼日時:2009/03/10 23:10

hostaddress(いわゆるドメイン名)については上限はありますが、


http://a.jp/
これはURLであって、URIになり得るんですかね?
http://a.jp/index.html や、 http://a.jp/menu.html ならURIですが。
、、、と、思ったので0と答えたわけですが。
    • good
    • 0
この回答へのお礼

私は、
http://a.jp/
http://a.jp/index.html
file://home/
urn:isbn:0-123-45678-9
上記のようなものがすべてURIだと思い込んでいました。

お礼日時:2009/03/10 23:16

URLはURIのサブセットだから、


URLであるならURIでもあるんじゃないの?
    • good
    • 0
この回答へのお礼

URLとURNを拡張して一般化したものがURIだと思っていましたが、どうなのでしょうか。

お礼日時:2009/03/10 23:31

ディレクトリを示すURLとファイル名を示すURNをつなげたものがURIと思っていましたが、、、



No.1にも書いているとおり、PATH_INFOとして/で終わる事もありますので、URLにもURIにもなるかもしれませんが、
もしそうなら、
http://www.example.com/
http://localhost/a/b/c/
これらはすべてURIになり得る、という事ですよね。
(任意の1文字 -> / も含まれる)

URIの文法上の字数制限はない(と思う。実質ブラウザやサーバー依存)ので
無限数の文字を並べた最後に/をつけておけば、質問文の条件は満たされると思います。
(実用性云々はぬきにして。)

任意の1文字に/を含めないのであれば、No.2が正解じゃないでしょうか。


小ネタ。
http://2130706433/
RFCには反していますが、一部のブラウザはhttp://localhost/またはhttp://127.0.0.1/にアクセスします。
http://1.2.3.4/としたとき
http:// 1 * 256^3 + 2 * 256^2 + 3 * 256^1 + 4 * 256^0 /
で計算できます。

この回答への補足

申し訳ありません。
下記のお礼で勘違いをしていました。
無限数の文字というのは、「任意の1文字」にあたるものが無数にある、ということですよね。

例えば、
http://例え.テスト/
というのは正しいURIではないのではないでしょうか。
正しくは、
http://xn--r8jz45g.xn--zckzah/
のようにPunycodeエンコードしなければならないので、後者が正しいURIになるのではないか、ということです。

補足日時:2009/03/12 00:39
    • good
    • 0
この回答へのお礼

> 無限数の文字を並べた最後に/をつけておけば、質問文の条件は満たされると思います。
満たされませんよ。
http://****/の「****」は、任意の1文字(/を含むあらゆる文字)を4つ並べた、長さが4の文字列です。
無限数の文字を並べてしまうと、この条件を超えてしまいます。

お礼日時:2009/03/12 00:36

> ディレクトリを示すURLとファイル名を示すURNをつなげたものがURIと思っていましたが


URLやURNにそんなに詳しい訳じゃないけど、
調べた限りではURLがディレクトリだとかURNがファイル名だとか解釈できる文献は見つけられませんでした。
初耳だったからあらためて探しては見たのですが。
もし参考文献などご存じであれば教えてくださいな。

私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。
    • good
    • 0

>

http://****/​の「****」は、任意の1文字(/を含むあらゆる文字)を4つ並べた、長さが4の文字列です。
ああ、そういうことですか。
文字数が限定されてるなら、計算で出せるんじゃないですかね。
使用できる文字種はNo.2に出てますので、計算してみてください。


> もし参考文献などご存じであれば教えてくださいな。
RFC2616

> 私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。
私はディレクトリやファイルと同じ抽象的な概念と考えます。
アクセスする方法(通信プロトコルやハードディスクとのデータを送受信する方法)の違いと、
人が見たときにわかりやすくするために、\で区切るか:で区切るか、/で区切るかの違いだけの。
    • good
    • 0
この回答へのお礼

taloo様ほか、皆様ご回答ありがとうございます。

お礼日時:2009/04/14 02:37

> > もし参考文献などご存じであれば教えてくださいな。


> RFC2616
これですか。HTTP/1.1ですね?
http://www.ietf.org/rfc/rfc2616.txt
ざっとそれらしい記述を探してみましたが見つかりませんした。
一瞬、3.2 Uniform Resource Identifiersの
"... and finally the combination of Uniform Resource Locators (URL) [4] and Names (URN) [20]."
あたりかと思ったけど、これは意味合いが違うだろうし。
どの辺を見て回答No.3の結論になりました?


なお、私が読んだ文献は、
http://www.ietf.org/rfc/rfc3986.txt
で、
3. Syntax Componentsの
> URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
>
> hier-part = "//" authority path-abempty
> / path-absolute
と、3.3. Path の
> path-abempty = *( "/" segment )
> segment = *pchar
より、
http://a.jp/http://a.jp/aaa/ もURIになると判断しました。


> > 私は、URLやURNはディレクトリやファイルより抽象的な概念だと思ってました。
> 私はディレクトリやファイルと同じ抽象的な概念と考えます。
URLやURNはファイルやディレクトリ以外のリソースを指すかもしれないこと、
queryやfragmentの様な情報もURIに含まれることから、
ファイルより抽象的な概念だと前回発言しました。
でもよく考えてみると、抽象度の違いと言うよりは
ディレクトリやファイルを包括したより広い概念であると言う方が
近い表現な気もしてきた。



使える文字種は、RFC3986だと
3.2.2. Hostに
> host = IP-literal / IPv4address / reg-name
> reg-name = *( unreserved / pct-encoded / sub-delims )
なのでかなり緩い感じです。さすがに日本語は入ってませんけどね。
この近くに、この仕様書では特定のルックアップ技術を強制しないとか、
しかし広い範囲で使うURIではFQDNみたいなのが必要とか記述があるので、
必要ならRFC1034 "Domain names - concepts and facilities" 等の文献を当たれと言うことかな。

No.2のお礼で現存するTLDまで気にしてるみたいだからそれに関わる情報もいるのか…。
IANAにこんなのあったけどこれで全部なんだろうか?
http://data.iana.org/TLD/tlds-alpha-by-domain.txt
    • good
    • 0
この回答へのお礼

この質問を解決するには、より単純な問題から始めて、それを徐々に一般化していく方法が必要になると思います。
誠に勝手ながら、ここで一旦締め切らせていただきます。
次の議論に移りましょう。

お礼日時:2009/04/14 02:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!