はてなキーワード: URIとは
htmlタグのdata-entry-eid属性に書いてある数字である。はてなブックマークエントリー情報取得APIでも取得できる。
https://b.hatena.ne.jp/entry/{エントリーID}/comment/{ユーザーID}
あるいはユーザーのブクマ一覧中のブクマにアクセスする以下のURLもある。
https://b.hatena.ne.jp/{ユーザーID}/{日付}#bookmark-{エントリーID}
ところがこのエントリーIDは1つのエントリーに複数存在する可能性がある。
たとえば以下のブクマページ。
https://b.hatena.ne.jp/entry/s/nordot.app/1211910352128279184
エントリーIDは4760262558153474272である。
https://b.hatena.ne.jp/entry/4760262558153474272/comment/{ユーザーID}
しかし一部のブクマのURLは以下のようにエントリーIDの部分が異なる。
https://b.hatena.ne.jp/entry/4760262556542860384/comment/{ユーザーID}
ブクマページはエントリーIDを使ってアクセスすることもできる。
https://b.hatena.ne.jp/entry/{エントリーID}
https://b.hatena.ne.jp/entry/4760262558153474272
別のエントリーIDらしきものでも同様にブクマページにアクセスできる。
https://b.hatena.ne.jp/entry/4760262556542860384
つまりエントリーIDは複数存在するようだが、ブクマページやAPIで取得できるエントリーIDはただ1つである。
4760262558153474272はエントリーIDとして取得できるが、4760262556542860384はブクマページを探してエントリーIDとして使用しているブクマを見つけることでしか取得できない。
何かが修正されたときにエントリーIDが変わることがあるのだろうか?
「はてなブックマークエントリー情報取得API」でエントリーIDと各ブクマのユーザーと投稿日時を取得して、これを使って「はてなスターカウントAPI」でブクマが得たスター数を取得する場合、通常は以下のURLでスター数を取得できる。
https://s.hatena.com/entry.json?uri=https://b.hatena.ne.jp/{ユーザーID}/{日付}#bookmark-{エントリーID}
ところがエントリーIDが異なるブクマは当然個別のエントリーIDでないとスター数を取得できないので、はてブAPIだけでは情報が欠損する。
別に細かくなく公式で言及のあった話でしっかりと伝わったのでタイトルは誤りでした。
ブクマするURLにパラメーターが付いているとエントリーIDが変わるということだそうです。
ご教示ありがとうございます。
URI(Uniform Resource Identifier)
URL(Uniform Resource Locator)
大雑把にはそんな感じ
よく、「URIって呼べよ恥かしい」みたいな人いるけど、そっちが恥ずかしいです
例えば、下記のようなURLがあったとして
https://test:[email protected]/index.html:8080
① スキーム
② オーソリティ
//test:testpw@hogehogefugafuga.jp/index.html:8080
ポート :8080
hogehogefugafuga.jp にアクセスしますよぉ、提示した情報でというもの
インターネットを作った人は全世界の人が使うようになる前提で、ややこしいhttp://を決めたのかなぁ?
こんなに使われることになるくらいならもっとシンプルなものにしてた可能性が高かったんじゃないかなと技術脳ゼロの自分は思ってしまうわけです。
すげぇシンプルです
これ以上シンプルにするって逆にどうやるの?
例えばメールサーバーには、「mx」や「mail」などのサブドメインが付きます
これに対して、webサーバーを示すサブドメインとして「www」を使ったわけです
すげぇシンプルです
コメントログへのアクセス先URIが書かれたWebSocketのデータ(↓こういうの)を、4年間集めてたんだけど、
{"type":"room","data":{"name":"アリーナ","messageServer":{"uri":"wss://msgd.live2.nicovideo.jp/websocket","type":"niwavided"},"threadId":"M.QyofMf3h0ahYa9PujZiwMA","isFirst":true,"waybackkey":"waybackkey","vposBaseTime":"2022-11-21T18:30:00+09:00"}}
https://live.nicovideo.jp/watch/lv338977521
以前から「そのデータからコメントログを全取得する作業を今年とかにやらないとな…」と思ってたが、ニコニコへの大規模攻撃が起こってしまって、さらに嫌な予感がしたがニコ生復活後に的中した。
まだ確認していないけども、自分が集めてたそのデータが全部無効になってしまってるだろうし、何も言えねえ。
(大規模攻撃関係無くいつか「wss://msgd.live2.nicovideo.jp/」が変わってただろうけども、長い事(数年間)そのuriで運用されていたし、もし攻撃されてなければ間に合う可能性もあった訳で…。)
溜め息しか出ない。
やっちまったなあ…。
運営に望む事は「有料会員は過去の生配信のコメントログがダウンロードできる」とか今後そういうサービスしてくれないかな…。はあ。
ちなみに、ニコ生がHTML5プレーヤー以前だった頃のソケット通信によるコメントログ取得って、もうできないよね…。 ちなみにそれもxmlファイルが1年分ぐらい溜めてる…。
Next.js を勉強中なんだが、Docker で negix (web) と Next.js のコンテナを起動していて、Next.js から web の API (ttp://127.0.0.1:8080 とする) を fetch するときに、Next.js 側がサーバーコンポーネントの場合 URI に ttp://127.0.0.1:8080 を指定すると fetch failed する。ttp://host.docker.internal:8080 じゃないと駄目だった。
やられた。これで何日持っていかれたのか。
クライアントコンポーネントだと ttp://127.0.0.1:8080 で普通に動作する。サーバーコンポーネントでも httpbin.org などの他の API は正常に動作する。web 側で Access-Controll-Allow-Origin も設定されている。だから、まー謎だった。エラーメッセージも全然詳しくねーし。
Twitter では死んだふりをしてるので取り急ぎここにメモ。SNS に復活することがあったらあとで消す。
参考
ttps://qiita.com/YasuhaF/items/8a72d2898736fb60315f
スタックトレースを読んだらrbsのリポジトリに書かれている定義を読んでいることがわかったんだけど、このディレクトリにopen-uriがないのよね。
https://github.com/ruby/rbs/tree/master/stdlib
---
結論、以下のメソッド定義が公式で提供しているのかと思ったのだけど、用意されていない!!
```
[error] Type `singleton(::URI)` does not have method `open`
│ Diagnostic ID: Ruby::NoMethod
│
└ response = URI.open 'https://api.github.com/XXXX'
```
ブコメでも指摘されてるけども。
ある時を境にスターの集計先になるURLが切り替わっているので、すべてのスター数を知るためには2回APIを投げる必要がありそうだ。
たぶんはてブがHTTPS化された2019年5月あたりが境目だろう
https://bookmark.hatenastaff.com/entry/2019/05/28/141208
自分のはてなIDと昔使ってたIDで試した限りではこうなっているはず。
①ttps://s.hatena.ne.jp/blog.json?uri=http://b.hatena.ne.jp/はてなID/
②ttps://s.hatena.ne.jp/blog.json?uri=https://b.hatena.ne.jp/はてなID/
2019年5月以降に作ったアカウント | ②の結果しか返らない。①を投げると403エラー |
2019年5月以前で消えたアカウント | ①の結果しか返らない。②を投げると403エラー |
それ以外(2019年以前から今まで現役) | ①と②の結果を合算する |
https://www.youtube.com/watch?v=yhDLmGpjdms
これよりもっとひどい動画はごまんとあるが、ここまでタイトルで煽っている以上指摘するわ。
プロフィール見るとCTOを経て独立してプログラミングスクールの会社やっているっぽいけど、すごい時代だな。
晒しになっちゃったけど、他にも有名(と思われる)プログラミング系YouTuberが実際にコードを書いている場合でひどいのはザクザク見つけられるから、見つけてため息をつくといいと思います。
はてブについて、情報検索したりクエリを投げたりして調べてまとめてみた。自分用メモとして書いたもので、極少数の人しか興味を持たない内容かと思うが、読んでいただければ幸い。
公式等[1・2(参照したページURLを最後に記載。以下同様)]で詳細を確かめられず素人の憶測で説明した箇所がいくつもあり、簡潔明瞭でも網羅的でもない解説だがご容赦を。
1a. https://b.hatena.ne.jp/hotentry/{1}(引数に"all"を入力した場合、1のエイリアス)
1b. https://b.hatena.ne.jp/ctop/{1}(カテゴリトップ[3]が過去に存在していた場合、1aにリダイレクト)
1c. https://b.hatena.ne.jp/hotentry/{1}/{2}
1d. https://b.hatena.ne.jp/hotentry/{1}/daily(1cにリダイレクト。前々日か前日の分が表示される)
1e. https://b.hatena.ne.jp/hotentry/{1}/{3}(?page={4})(()内のパラメータは省略可。以下同様)
1f. https://b.hatena.ne.jp/hotentry/{1}/{3}(?of={5})
2a. https://b.hatena.ne.jp/hotentry.rss
2b. https://b.hatena.ne.jp/hotentry/{1}.rss("all"を入力した場合、2aのエイリアス)
2c. https://b.hatena.ne.jp/hotentry?mode=rss(2aのエイリアス)
2d. https://feeds.feedburner.com/hatena/b/hotentry(2aのエイリアス)[4]
3. https://b.hatena.ne.jp/entrylist/{1}(/{3}?page={4})(ブクマ登録数の閾値を設定するオプションがあったが、2018年3月に廃止された[5])
4a. https://b.hatena.ne.jp/entrylist.rss
4b. https://b.hatena.ne.jp/entrylist/{1}.rss("all"を入力した場合、4aのエイリアス)
{1} | カテゴリID | 省略するとカテゴリ「総合」のページが表示される |
{2} | エントリ登録日 | "YYYYMMDD"の形式で入力。当該月日の24時から一定時間経過後に利用可能になる。有効な最古の値は20050210 |
{3} | 特集名 | 特集[6]は不定期に改廃されるため、値が有効か注意 |
{4} | ページ番号 | |
{5} | オフセット | 表示結果の先頭が、指定した値だけ後ろにずれる。1ページ分表示可 |
エントリは、8種類あるカテゴリ[7]のどれか1つに自動で区分される。そのアルゴリズムは不定期に更新されているようだ[8]。区分に異議がある場合、ユーザが変更申請することもできる[8・9]。
カテゴリは2013年2月に現在の名称・分類になった[10]。分類が現在と同じ8種類になったのは、2008年11月[11]。
なお、2011年以前のエントリはほぼ全て「暮らし」カテゴリに区分されている[12]。2017年から2019年の間に何らかの障害が起きたためと思われる[13・14・15]。
なお「(ブックマーク)エントリ」という呼称は、一般的用法、はてブに登録されたURLとその付帯情報、エントリページの情報等、多様な意味で使われる。
1a. https://b.hatena.ne.jp/entry/(s/){1}("s/"はセキュアサイトのエントリページURLに付加される[16])
1b. https://b.hatena.ne.jp/entry/{2}(正しく処理された場合、1aにリダイレクト)
1c. https://b.hatena.ne.jp/entry/{3}(1aにリダイレクト)
1d. https://b.hatena.ne.jp/entry?url={2}(1aのエイリアス)
{1} | URL | ブクマされたURL(原則として、パーセントエンコード[19]されたもの)の一部を入力 |
{2} | URL | URL(同上)全体を入力 |
{3} | エントリID | 下記参照 |
はてブに登録されたURLはIDと1対1対応する。IDは、当初は1から始まる連番だったが、2018年12月頃から62bit以上の乱数値になった[20]。
余談だが、かつては番号が桁繰上りするたびにキリ番ゲッターがブクマしに集っていたようだ。理由は不明だが、欠番になったキリ番もある(キリ番と前後のエントリページ参照)。
URLとwebページは1対1対応するとは限らない[21][22]ため、エントリ・ブコメは容易に分散する。
その改善のため2019年2月にはてブの仕様が変更され、一定の規則でエントリが収斂されるようになった[23]。現在エントリページは、複数のエントリと1対多対応していて、対応するどのID・URLを引数にしてもアクセスできる。
参考[1]のエントリページに対応するIDを昇順にし、各IDの確認できる最古のエントリをまとめた。非公開や削除済のブクマがあるせいか、完全な日付昇順ではない。
26 | 2005/2/10 | nabeso | http://b.hatena.ne.jp/help |
252298 | 2005/5/24 | nobody | http://b.hatena.ne.jp/help#tag |
261369 | 2005/5/26 | another | http://b.hatena.ne.jp/help#favorite |
308455 | 2005/6/9 | naoya | http://b.hatena.ne.jp/help?mode=design |
361820 | 2005/6/23 | superartlife | http://b.hatena.ne.jp/help#collection |
368560 | 2005/6/24 | kurimax | http://b.hatena.ne.jp/help?mode=button |
369059 | 2005/6/24 | takeshi-s | http://b.hatena.ne.jp/help?mode=button#jugem |
461306 | 2005/7/18 | kidaglass | http://b.hatena.ne.jp/help?mode=button#livedoor |
540219 | 2005/8/9 | kei-s | http://b.hatena.ne.jp/help?mode=tipjar |
990732 | 2006/1/14 | takef | http://b.hatena.ne.jp/help?mode=tipjar#autodiscovery |
1021385 | 2005/12/27 | tosch0718 | http://b.hatena.ne.jp/help#note_about_title |
1051040 | 2006/1/7 | junky0 | http://b.hatena.ne.jp/help?mode=button#seesaa |
1148729 | 2010/7/8 | b01012109 | http://b.hatena.ne.jp/help/ |
1785475 | 2006/4/20 | eiichiman | http://b.hatena.ne.jp/help?mode=design#module |
2361801 | 2006/7/19 | yamifuu | http://b.hatena.ne.jp/help#keybind |
4670135055805666274 | 2020/1/7 | aoyamayuki | https://b.hatena.ne.jp/help/ |
以下に該当するIDやURLを引数として入力すると、エントリの一部または全ての情報の取得に失敗する
{1} | ユーザID | |
{2} | ブクマ日 | "YYYYMMDD"の形式で、当該ユーザがブクマした日付を入力 |
{3} | エントリID | 当該ユーザがブクマしたURLのIDを入力 |
{4} | エントリID | エントリページに対応するどのIDでも入力可 |
はてブの全エントリから検索可能[29]。ただし単語の区切の判定が完璧でないため、連語や複合語等が関わると上手く動かない場合がある(例えば、「更年」で検索したら「更年期障害で欠勤、認められず」というタイトルがヒットしなかった)。
1a. https://b.hatena.ne.jp/search/{1}?q={2}(&sort={3}&users={4}&safe={5}&date_begin={6}&date_end={7}&page={8}&mode={9})
1b. https://b.hatena.ne.jp/t/{2}(1aにリダイレクト)
{1} | 検索範囲 | "tag""title""text"のいずれかを入力 |
{2} | 検索文字列 | ブクマに付帯するタグ・ページタイトル・ページ本文中のいずれかで、指定した文字列を検索する。複数の文字列を"%20""|""-"で連結すると、AND・OR・NOT検索できる[30]。"site:{URL}"の形式で入力すると、URL絞込検索できる |
{3} | 表示順 | "popular"を指定すると、結果がブックマーク登録数降順で表示。デフォルトは新着順 |
{4} | ブクマ件数 | 指定件数以上のエントリで絞込検索する。デフォルト値は3 |
{5} | セーフサーチの有無 | "off"を指定できる。デフォルトはオン |
{6} | 検索期間の始め | "YYYY-MM-DD"形式で指定した日付以降のエントリで、絞込検索 |
{7} | 検索期間の終り | "YYYY-MM-DD"形式で指定した日付以前のエントリで、絞込検索 |
{8} | ページ番号 | |
{9} | "rss"を指定できる | |
{10} | URL | 指定URLで絞込検索 |
{11} | 表示順 | "count""hot"を指定すると登録数降順、"eid"で新着順で表示。デフォルトは、ブクマ3件以上のエントリのみ新着順 |
1a. https://b.hatena.ne.jp/{1}/(?page={2})
1b. https://b.hatena.ne.jp/{1}/?tag={3}(&tag={3}&page={2})
1c. https://b.hatena.ne.jp/{1}/{3}(/{3})(1bのエイリアス)
1d. https://b.hatena.ne.jp/{1}/{4}
1e. https://b.hatena.ne.jp/{1}/?url={5}(&page={2})
1f. https://b.hatena.ne.jp/{1}/bookmark(1aのエイリアス)
2a. https://b.hatena.ne.jp/{1}/bookmark.rss(?page={2})
2b. https://b.hatena.ne.jp/{1}/bookmark.rss?tag={3}(&tag={3}&page={2})
2c. https://b.hatena.ne.jp/{1}/bookmark.rss?date={4}
2d. https://b.hatena.ne.jp/{1}/bookmark.rss?url={5}(&page={2})
2e. https://b.hatena.ne.jp/{1}/rss(2aにリダイレクト)
3. https://b.hatena.ne.jp/{1}/search.data(?limit={6}&offset={7}) [31]
{1} | ユーザID | |
{2} | ページ番号 | |
{3} | タグ | 指定タグで絞込検索。2件以上指定するとAND検索できる |
{4} | ブクマ日 | "YYYYMMDD"形式で指定した日付で絞込検索 |
{5} | URL | 指定URLで絞込検索。部分一致検索可能だが、URIスキームから入力しないと無効 |
{6} | 最大取得件数 | デフォルト値は全件 |
{7} | オフセット | 表示結果の先頭が、指定した値だけ後ろにずれる |
前節とほぼ同様だが、利用可能なオプションが多い[32・33]。
余談だが、カラースターの価値は緑5円・赤12円・青110円・紫890円程度のようだ[34]。
1 | ヘルプトップ - はてなブックマークヘルプ | https://b.hatena.ne.jp/help/ | 4670135055805666274 |
2 | はてブAPIでwebサービスを作りたい全ての人に向けて書きました | https://syncer.jp/hatebu-api-matome | 264997023 |
3 | カテゴリトップ「テクノロジー」を新設し、グローバルナビゲーションの挙動を変更しました - はてなブックマーク開発ブログ | https://bookmark.hatenastaff.com/entry/2015/11/05/151221 | 4667408542014962466 |
4 | はてブのホットエントリーのRSS一覧 - まんとるぽっと | https://www.mantol.net/entry/20120601/1338517941 | 4699737458651148386 |
5 | 【追記あり】トップページやカテゴリページなどのメディア面をリニューアルしました - はてなブックマーク開発ブログ | https://bookmark.hatenastaff.com/entry/2018/03/22/161110 | 4667408571006016450 |
6 | 編集とユーザー活動とエンジニアリングを融合した「特集機能」を始めます - はてなブックマーク開発ブログ | https://bookmark.hatenastaff.com/entry/2015/08/17/150654 | 4667408546846804962 |
7 | [FAQ]はてなブックマークの「総合」カテゴリーと「一般」カテゴリーの違いはどこにある? | https://anond.hatelabo.jp/20200108201212 | |
8 | 【自由研究】はてなブックマークにおける自動カテゴリ分けの傾向と所感 - AQM | https://aqm.hatenablog.jp/entry/2019/08/06/180100 | 4672608930549728738 |
9 | フィードバックフォームおよびカテゴリ変更依頼フォーム設置のお知らせ - はてなブックマーク開発ブログ | https://bookmark.hatenastaff.com/entry/2018/12/11/163453 | 4667408557584232770 |
10 | 新しいトップページの一覧性を高めました - はてなブックマーク開発ブログ | https://bookmark.hatenastaff.com/entry/2013/02/06/000000 | |
11 | 2008-11-07 - はてなブックマーク開発ブログ | https://bookmark.hatenastaff.com/entry/2008/11/07/000000 | |
12 | はてなブックマーク - 人気エントリー - 総合 - 2011年12月5日 | https://b.hatena.ne.jp/hotentry/all/20111205 | |
13 | はてなブックマーク - 人気エントリー - 2008年11月1日 | https://web.archive.org/web/20170815132626/http://b.hatena.ne.jp/hotentry/20081101 |
Uniform Resource Identifier (URI): 一般的構文
https://triple-underscore.github.io/rfc-others/RFC3986-ja.html#section-3
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty
数ある CDN のなかでも Fastly は圧倒的に優れた特性を持つものだと思うので、障害にかこつけてその優れた点を紹介していく。
CDN とは世界各地にあるキャッシュサーバーにコンテンツをキャッシュして配信してもらうことで、オリジンサーバーの負荷を軽減したりユーザーへの配信速度を上げたりするリバースプロキシのホスティングサービスだが、 Fastly の最大の特徴としてはそのキャッシュが消えるのが速い。普通の CDN が数十秒〜数分とかかるのにたいして 0.2 秒で全部消えることが保証されているし、キャッシュにたいしてキーをつけておけば(HTTP ヘッダーに Surrogate-Key って入れるだけ)特定のキーがついているキャッシュだけ 0.2 秒以内に消したりということができる。
これにより、 CDN による配信高速化の恩恵を受けながら、コンテンツをリアルタイムに更新していくことができる。 next.js + vercel などはこのあたりをフロントエンドから CDN まで一気通貫に提供することでリアルタイム風にコンテンツを更新できるように見せかけているが、 Fastly なら本当になにもかもリアルタイムで出来ることが保証されるので、難しいことを考えなくてもよい。
CDN の設定の反映の遅さというのは Cloudfront とか使っていれば感じることだと思うが、 Fastly なら 5 秒ぐらいで反映される。設定を変更しながらいろいろ検証しているときにこれが地味に嬉しい。
ただし上記の特性の代償と言えるのかもしれないが(そうではないのかもしれないけど)、 Fastly は「デカめの配信拠点を比較的少数配置する」という構成になっているため、ディザスタリカバリなどの面では不安がある(今回の障害はマジで全部落ちたのでこれとは関係ない問題だろう)。
Web 設定画面からいじれる設定項目が多く、にもかかわらずユーザーに優しく使いやすい。例えばリクエストヘッダーを Fastly 側で書き換えてもらう機能があるのだが、それとは別に Host ヘッダーのオーバーライドの設定は(えてしてよく使うので)別の画面に切り出されていたりする。
大抵のユーザーは Web からの設定画面でできることで満足すると思うが、高度な制御をしたい場合、 Varnish の設定ファイルのスニペットをアップロードしたり、あるいは設定全体を書いてアップロードする、といったことができる。例えば JWT のデコードを VCL でやってしまって、同じ URI にたいして認証済みユーザーとそうじゃない人でキャッシュのだしわけなんてことが Fastly 上でできるようになる。
ただし VCL でいろいろな制御を実現しようと思うと、 VCL の表現力の低さにより地獄を見ることになるので、得られるベネフィットと相談しながらこのあたりはやっていくことになる。
2021年 https://togetter.com/li/1694773
2018年 https://togetter.com/li/1297268
そもそも「URLが分かる」方が例外だろうし。そこで雑だけどURL(URI)が分かる可能性が高い、PCのインターネットってやつに親和性の高い例外的な時代を取り出してみるよ!
古い側は、1995年。Windows95だもん。この時に20代なら、影響を受けている可能性が高いと仮定するよ。
一方の新しい側は、2005年とするよ。一応目安はあるんです。
こんな証言もあるよ。
https://kakeru.me/other/snl-zenryakuprofile/
「私たちの間で前略プロフが流行っていたのは、mixiが流行りだすよりも前。約10年前の2005年頃~2007年頃、中学2年生の頃ですね。」
魔法のiらんどは、サービス開始こそ1999年だけど、2006年に企業名を株式会社魔法のiらんどに変更。
https://ja.wikipedia.org/wiki/%E9%AD%94%E6%B3%95%E3%81%AEi%E3%82%89%E3%82%93%E3%81%A9
だから、2005年には携帯ネット接続がPCによるそれを凌駕していたと仮定して、この時期以降に高校生だったらPCより携帯が主になると仮定するよ。実際はもう少し前からこの状態だっただろうけどね。
というわけで、1966~1987年生まれの世代が、「PCのインターネット」のコア世代と勝手に推定してみる。もちろん雑な仮定だけどね!