ひまつぶし雑記帖

ActivityPubサーバーのGETリクエストに署名

2023/12/20 [23:14:57] (水) 天気

おひとり様サーバーのGETリクエストを署名付きで投げるようにした。
今のところ、特に問題が出てるようには見えない。

前々から気になってたところ。
actor情報や投稿を取得するために、アクセスすると401や403で弾かれることがあって、それってリモートサーバーからのアクセスを拒否してるのかなあ、ぐらいに思いつつもなんかひっかかってた。
GETリクエストにひょっとするとSignatureが必要なわけ?と。
でも、POSTと違ってGETだよ?Body(content、本文)もないのに、いったい何に対してサインする?んなもんないよなあ、とも思ってた。

2023Fediverseアドベントカレンダー第3会場 19日目の黒ヰ樹さんの記事
「DenoとHonoでThreadsのContent-Type: application/activity+jsonをGETする」
当初ActivityPubのHTTP Message Signaturesはhostとdateを認証するPOSTのみで使われてきました。
ThreadsのContent-Type: application/activity+jsonをGETするにはこの署名が必須なので、Threadsをフォローできないサーバーがあったりなかったりしたんですね。

↑こちらに詳細があった(感謝)
GETでのHTTP Signatureは
(request-target)
host
date
の3つを署名対象にすればOKということらしい。
(ひょっとしてわたしが知らなかっただけで、100年前からの常識だったのかな?)
この署名付きでGETを投げて403で弾かれることがあるけど、401は今のところない。これで大丈夫っぽい。

HTTPのレスポンスは。
401 認証できない
403 認証できるけど権限がない
404 そんなファイル、ディレクトリはそもそもない

403を返すと「そんなファイル」はある、ということを自白してるのでセキュリティ的にあえて404を返してることがある。なので、403と404は同じで原因の特定ができないとしても、401が返ってくるのはこちらに何らかの問題がある、ということ。

表示が無駄に重くなるだけなので、うちのおひとり様サーバーでは、400番台が返ってくるサーバーはリストに登録してアクセスしないようにしてた。
とりあえず。この対応で401は回避、できるかな。

image
今日は3回目のゲ謎。哭倉村。
ほんと、今年No.1だなー。

[12/21 14:07:43]追記。
401でエラーを出してた某サーバーのactor情報がこの変更で取得できたので、やっぱりGETにSignatureがなかったのが問題だったのか…。

[2024/01/09 11:46:23]追記。
HTTP SignatureをつけてGETしても403で弾かれるサーバーがあった。
いろいろ試してみたところ、お相手のHTTP HeaderのkeyIdのURLについてる「#main-key」が原因っぽかった。

お相手からのポストの署名を検証するためにPublickeyを取得する必要があって、Publickeyを取得するにはこのkeyIdのURLにリクエストを投げてPersonのJSONをもらわなきゃいけない。
Mastodon系などはkeyIdのURLにそのままGETリクエストしていて問題はなかった。んだけど、なんか「#main-key」付きって微妙なURLだなあ、とか思ってたこともあって、試しにURLの「#main-key」を削除してリクエストしたら問題なく200が返ってきて、無事JSONを取得できた。

だけど、今度はそれはそれで、keyIdのURLに「#main-key」なんてつけないで欲しいよなあ。「keyId」の意味がないのでは?

»電子書籍制作代行についてはこちら

GBLシーズン10でACE到達

2021/12/20 [00:19:54] (月) 天気

ポケモンGOの対人戦、GOバトルリーグのシーズン10でACE到達。

今回は大苦戦。ランク20になったのがスーパーリーグ期間ギリギリの12/11で、初期レートも1826と過去最低。勝率も5割程度、あるいは5割を切ってたか、ぐらいのレベル。
必死こいて育成したシャドウヤミラミというポケモンにこだわったのが原因だったか。なかなか使いこなせずハマらず、勝ち越せずで、その後、レートも1700台に落ちた日もあり試行錯誤。

リーグのレギュレーションが、スーパーリーグからハイパーリーグに12/14で切り替わってからは、流行の毒悪悪、初手ニドクインの裏にバルジーナ、ズルズキンという強いポケモンとその組み合わせのいわゆる厨ボケのテンプレパーティを使ってみたものの、バカ勝ちできたのは初日だけでそれ以降は一進一退というか2歩進んで3歩下がるような状態で、レート1800〜1900あたりから抜け出せず、ACEに必要なレート2000は遠い日々。

本当だったら、このパーティこのポケモンを使って負け越しなんてありえない。
育成コストも高くてなかなか作るのが難しいパーティなのに、どうなってんだ…というか、みっともない。

さすがにこりゃだめだと以前のシーズンで使ってそこそこ勝率の良いパーティに代えたら、25戦17勝で勝率7割弱を叩き出してくれて、やっとACEに到達できた。
image 
今シーズンはできればACEのひとつ上、ベテラン(レート2500以上)という称号到達を目指していこうかと思ってんだけど、たぶん、苦手なマスターリーグでまたレートを200〜300落とすのは目に見えてるし。
場数を踏む、レートを気にしないでとにかく対戦数をこなす、いろんなポケモンを使ってみるということを考えてやっていくか。

還暦のポケモンGOメモ…いや、ほんとまだまだ面白いっすよ。
たかがゲームっちゃゲームなんだけど、詰将棋というか、このケースではこうやってとかの分岐が無数にあって、いろいろ考えなきゃいけないんで、ボケ防止になる。
さらにこれ用のポケモンを捕獲するために歩き回る、徘徊するんで健康にもいい。
老人にこそオススメしたいゲームだ。【ポケモンGo】
お気に入りのポケモン (2016/8/10)
ポケモンGoでウォーキング再開 (2016/9/19)
ポケモンGo:カビゴンが放流されている (2016/9/26)
ポケモンGo:種族のHP順 (2016/9/29)
ポケモンGo:カビゴンの英才教育 (2016/10/24)
ポケモンGo:ハロウィンイベント飴ちゃん祭りの成果 (2016/11/1)
ポケモンGo:ジムバトルに参戦 (2016/11/29)
ポケモンGo:Pokemon GO Plus (2016/12/6)
ポケモンGo:ヤドランでカイリュー退治 (2016/12/29)
ポケモンGo:レギュラーとジムトレーナー (2017/1/20)
ポケモンGo:TL33になりました (2017/2/15)
ポケモンGo:イースターイベントで図鑑埋め (2017/4/18)
ポケモンGo:ハピナス対策【ジム戦】 (2017/5/29)
ポケモンGo:大型アップデート直前 (2017/6/23)
ポケモンGo:新ジム戦がめっちゃ面白くなってた (2017/6/23)
ポケモンGO:レイドバトルで技マシンget (2017/6/28)
ポケモンGo:コイキングレイドバトル (2017/6/29)
ポケモンGo:TL36になりました (2017/7/27)
ポケモンGo:ソロレイドの準備 (2017/7/31)
ポケモンGo:レベル3ソロレイド:ゲンガー (2017/8/9)
ポケモンGo:3鳥捕獲完了 (2017/8/10)
ポケモンGo:技マシン使用履歴 (2017/8/16)
ポケモンGo:宵越しの砂は持たない (2017/8/24)
ポケモンGo:レベル3ソロレイド:カイリキー (2017/8/30)
ポケモンGo:金コイキング捕獲 (2017/9/6)
ポケモンGo:秋分の砂2倍イベント (2017/9/28)
ポケモンGo:今月のレイドバトルはライコウ (2017/10/11)
ポケモンGo:フーディンレイドに惨敗中 (2017/10/17)
ポケモンGo:エンテイ初日GET (2017/11/2)
ポケモンGo:レベル3ソロレイド:ストライク (2017/11/9)
ポケモンGo:ポケモンのMAX強化 (2017/12/6)
ポケモンGo:レベル3ソロレイド:フーディン (2017/12/14)
ポケモンGo:バトルパーティ編成 (2017/12/21)
ポケモンGo:レベル3ソロレイド:ポリゴン (2017/12/22)
ポケモンGo:EXレイド・ミュウツー捕獲 (2018/1/24)
ポケモンGo:EXレイドパスが来た! (2018/2/10)
ポケモンGo:レックウザ終了・伝説系捕獲率 (2018/3/15)
ポケモンGO:噂のミュウをゲット (2018/4/4)
ポケモンGO:カンストポケモン (2018/5/9)
ポケモンGO:力まかせのジムバトル (2018/6/13)
ポケモンGO:ルギア最強説 (2018/6/19)
ポケモンGO:水イベント終了 (2018/6/21)
ポケモンGo:レベル40になった (2018/8/14)
ポケモンGO:カンストポケモンその2 (2018/9/20)
ポケモンGO:ミュウツー事情 (2018/10/18)
ポケモンGO:ミュウツー技開放 (2019/1/2)
ポケモンGO:ブイズでジムバトル (2019/6/4)
ポケモンGO:GOバトルリーグ (2020/2/5)
GOバトルリーグ:44勝61敗 (2020/2/7)
GOバトルリーグ:初の5連勝! (2020/2/12)
GOバトルリーグ:5連敗5連敗 (2020/2/17)
ポケモンGO:GBLで負け続ける (2020/8/23)
GOバトルリーグ:シーズン8でもACE到達 (2021/6/15)
GOバトルリーグ シーズン10開始 (2021/11/30)
GBLシーズン10でACE到達 (2021/12/20)
GBLシーズン11のランク20 (2022/3/7)
GBLシーズン11でACE到達 (2022/6/17)
GBLシーズン12でACE到達 (2022/9/23)
GBLシーズン13でACE到達 (2022/12/18)
GBLシーズン14でACE到達 (2023/3/14)
GBLシーズン14で初のVETERAN到達 (2023/5/15)
GBLシーズン15でACE到達 (2023/6/14)
GBLシーズン16でACE到達 (2023/11/15)
GBLシーズン17でACE到達 (2023/12/17)

»電子書籍制作代行についてはこちら

音声付き電子書籍の作り方【9】【番外編】青空文庫に音声をつける

2015/12/20 [07:26:06] (日) 天気

【番外編】青空文庫(https://www.aozora.gr.jp/)に音声をつける。

音声付き電子書籍の作り方がわかっても、肝心の中身、小説などの本文をどうするの?
オリジナルの小説、テキストデータなんてそんなにないよ!

ということで、青空文庫の膨大な名作の蓄積を利用させていただくことにします。

青空文庫をEPUB3電子書籍にするツールとしては「AozoraEpub3 - 青空文庫ePub3変換」https://www18.atwiki.jp/hmdev/pages/21.html が有名で定評もあります。
(青空文庫形式で書かれた小説などが、このAozoraEpub3で電子書籍化されて、kindle KDPの販売にも使われています)

また東芝が提供するDAISY図書制作サービスでは青空文庫形式のルビを生かすこともできます。

青空文庫が広く普及していることで、青空文庫の組版規則(https://kumihan.aozora.gr.jp/)はいろんなツールやサービスで使われているようです。

残念ながらeasy_epubは青空文庫の記述方法が使えません。
以下のスクリプトで、青空文庫のテキストをeasy_epubで読みこめるテキストデータに変換します。

https://t2aki.doncha.net/release/strip-aozora.zip

底本を忠実に再現するという青空文庫のポリシー(?)に反することになりますが「ルビ・傍点・太字」の3種類をHTMLのタグに変換したテキストデータを作ります(それ以外、たとえば「字下げ」は反映していません)

青空文庫の『銀河鉄道の夜』を変換してみます。
image

コマンドプロンプト(WINDOWS)、ターミナル.app(Mac)で以下のコマンドを入力します。
image
コマンド:
perl strip-aozora.pl gingatetsudono_yoru.txt
※補完機能を使うと「perl」「半角空白(Space)」「str」「Tabキー」「半角空白(Space)」「gin」「Tabキー」だけです。いちいち「gingatetsudono_yoru.txt」などと全部キーボード入力する必要はありません。

同じフォルダに「aozora-」がついた「aozora-gingatetsudono_yoru.txt」が作られます。
image

青空文庫形式からHTMLタグに変換したテキストデータに変換されています。
image
ここにタイトルや著者名を入れてeasy_epubでEPUB3電子書籍にすることができます。


MacやWINDOWSのシステム音声を使った音声付き電子書籍は。

・無料で作ることができる。
・朗読よりも早く手軽に作ることができる。
・フリーの合成音声より聞きとりやすい。

といったメリットがあります。
システム音声の使用許諾で個人での利用に限定されますが、いろんな理由から「読書困難」な方が「読める・聞ける」本として音声付きEPUB3電子書籍は有用です。
ここに記載した手順通り、それほど難しいものではないので、ぜひ一度作ってみてください。

また、他にも音声付き電子書籍を作る方法があって、おのおのクオリティや手順も違うので、やりやすい方法を試してみてはいかがでしょう。


【参考URL】

・音声付きEPUB3電子書籍制作
「easy_epub」
https://t2aki.doncha.net/release/easy_epub.zip
「say_easy_epub」
https://t2aki.doncha.net/release/say_easy_epub.zip

・合成音声
「AITalk」
https://www.ai-j.jp/
「VOICETEXT」
https://voicetext.jp/
「ボイスソムリエネオ」
https://www.hitachi-solutions-business.co.jp/products/package/sound/voice/
「音訳エディタDaisyRings」
https://www.toshiba.co.jp/cl/pro/recaius/lineup/daisyrings.html

・WINDOWSのシステム合成音声
「Microsoft Speech Platform 簡単インストーラー Ver.2.2」
https://mahoro-ba.net/e1542.html
「もぎゃろぐ「Windows7で音声合成(Text to speech)」
https://blog.mogya.com/2012/01/windows7text-to-speech.html
「どんぶらこDESIGN「Windows7で日本語読み上げ機能を使う」
https://donboolacoo.blog92.fc2.com/blog-entry-1623.html

・スクリプト言語、エディタ、ツール
「Active Perl」
https://www.activestate.com/activeperl/downloads
ffmpeg「お気に入りの動画を携帯で見よう」
https://blog.k-tai-douga.com/
エディタ「CotEditor」(Mac)
https://itunes.apple.com/jp/app/coteditor/id1024640650?mt=12
エディタ「mi」(Mac)
https://www.mimikaki.net/
エディタ「サクラエディタ」(WINDOWS)
https://sakura-editor.sourceforge.net/index.html.ja
エディタ「EmEditor」(WINDOWS)
https://jp.emeditor.com/

・青空文庫
「青空文庫」
https://www.aozora.gr.jp/
「青空文庫組版案内」
https://kumihan.aozora.gr.jp/
「AozoraEpub3 - 青空文庫ePub3変換」
https://www18.atwiki.jp/hmdev/pages/21.html
「青空文庫をeasy_epubで使えるテキストデータに変換」
https://t2aki.doncha.net/release/strip-aozora.zip


ここでは紹介しませんでしたが、以下のURLも参考になりました。

・電子書籍制作
「でんでんコンバーター」(「文を句点ごとにspanで囲む」)
https://conv.denshochan.com/

・合成音声
「SofTalk」
https://www35.atwiki.jp/softalk/pages/1.html
「棒読みちゃん」
https://chi.usamimi.info/Program/Application/BouyomiChan/
「株式会社アクエスト - AquesTalk」
https://www.a-quest.com/
「Aquestの音声記号列仕様書」
https://www.a-quest.com/download/manual/siyo_onseikigou.pdf (※PDF)

・オーサリングツール
「Tobi」
https://www.daisy.org/project/tobi【音声付き電子書籍の作り方】
動画で見る音声付き電子書籍の作り方 (2015/2/22)
音声付き電子書籍の作り方【0】音声付き電子書籍のサンプル動画 (2015/12/11)
音声付き電子書籍の作り方【1】【準備編】Macの合成音声 (2015/12/12)
音声付き電子書籍の作り方【2】【準備編】WINDOWSの合成音声 (2015/12/13)
音声付き電子書籍の作り方【3】【準備編】WINDOWSで音声付き電子書籍を作るために (2015/12/14)
音声付き電子書籍の作り方【4】【準備編】easy_epubとsay_easy_epubの設定 (2015/12/15)
音声付き電子書籍の作り方【5】【番外編】コマンドウインドウやターミナルの使いかた (2015/12/16)
音声付き電子書籍の作り方【6】【制作編】読み上げる文章を抽出する (2015/12/17)
音声付き電子書籍の作り方【7】【制作編】音声ファイルを作る (2015/12/18)
音声付き電子書籍の作り方【8】【制作編】音声付きEPUB3電子書籍の完成 (2015/12/19)
音声付き電子書籍の作り方【9】【番外編】青空文庫に音声をつける (2015/12/20)

»電子書籍制作代行についてはこちら

Android標準ブラウザでダウンロードできない現象

2014/12/20 [13:32:37] (土) 天気

Android標準(?)のブラウザでPDFやzip、epubファイルのダウンロードができなくて吐血。

PCのブラウザやiphone(iOS)、AndroidでもChrome、Firefoxなどのブラウザだと意図通り問題なくダウンロードできるのに、Android標準(?)のブラウザだとダウンロードできない。というか、なぜか、ページのHTMLをダウンロードしてしまう。

謎な挙動のスマホ標準ブラウザに対応する必要があるのかという、そもそものところはまた別として。
調べてみたら、検索のしかたが悪いのか情報が錯綜していて正解が見えてこない。

スクリプトが吐くヘッダは定型。

このヘッダに続いて、epubファイルが標準出力に吐き出される。ほかのいろんなスクリプトで使っているやりかたで、Androidスマホ以外では問題なく意図通りダウンロードできている。

老眼血眼、しこたま検索しまくって、こちらのサイト
「コンピュータの日々 Android付属ブラウザのファイルダウンロードの動作」

AndroidのブラウザがPOSTメソッドでサーバにリクエストして、サーバからContent-Disposition:attachmentなヘッダを受け取ると、再びGETメソッドで同じURLにリクエストを送信するとのことです。


へ? と思ってアクセスログを見るとAndroidスマホのブラウザ(docomoのスマホ L-05E 、mobile safari)は、確かにPOSTでアクセスしてきた後、なぜかGETでアクセスしている。

ページのHTMLを取得してるので、最初はブラウザのキャッシュを疑ったんだけど、どうやら真相はこいつ。attachmentで渡してるはずのepubファイルではなくて、次のGETでページのHTMLをダウンロードしているご様子だ。

なんでやねん。


以上は、とりあえずのメモ。
これじゃ、スクリプトで吐き出させたんじゃダウンロードしてくれない、ということになる。
ダウンロードしてもらう方法としては、一度サーバーにファイルを書き出して、静的リンクをクリックしてもらうしかない…うーん、ほんまかいな。

スクリプトで直接ダウンロードする方法をもうちょっと調べてみる。たぶん、わたしのスキル不足だと思う(詠み人知らず)
image 

[12/20 21:30:21] 追記。
現状、スマホ標準のブラウザは .epub ファイルにリンクしても、ブラウザが  epub ファイルを開いて表示しやがる。
バイナリを文字化けした文字にしてブラウザにダアアアアッと表示する。なんじゃそりゃ状態。

なもんで、.htaccess で(httpd.confでもいいけど) MIME TYPE を指示(指定)してやる必要がある(epubという拡張子のファイルにアクセスされたらどうするのかの設定)
addType application/octet-stream .epub

…て、epub自体が最近なので、Android標準ブラウザに適切な対応を求めるのは可哀想、というか無理かもしれん。もう意味不明なブラウザを使うのではなくて、Firefoxなり、PCでも使われるブラウザとその挙動を標準にすべきだろう。


[2016/01/03 10:47:38] 追記。
どうやら現状のAndroidの「ダウンロード」(ダウンローダー)はSSLのページや認証が必要なページからはダウンロードできない困った仕様っぽい。

・ブラウザで閲覧→PDFやzipをタップ→ダウンローダーが起動してzipやPDFをダウンロード
という流れだとダウンロードできない。

・ブラウザで閲覧→PDFやzipをタップ→ブラウザがPDFやzipをダウンロード
だとダウンロードができる。Firefoxなどだとダウンロードができる、ということ。


スマホって、なんでまた「ダウンローダー」なんてのを噛ませることになったんだろう。

»電子書籍制作代行についてはこちら

kindle PaperWhite専用ポーチ

2012/12/20 [21:06:52] (木) 天気

image 須田帆布の非売品、おまけについてくる帆布のポーチがあまりにぴったりだったんで、写真をアップロード。
この非売品。いくつかウチにあるんだけど、個体差があって、これ以外のポーチはジッパーのところでひっかかって入らなかった。つまり、kindle PaperWhite専用オーダーメイドの帆布ポーチのようなものだった。たまたま。

ちなみに、わが家は須田帆布のバッグがデフォルト。デザインもいいし触り心地もいいし、こだわりもいい。んで、なにより長持ち。で、長持ちし過ぎる上に、いたんだら須田帆布に送って修理もしてもらえる。

kindleの持ち歩きにはこのポーチで決まり。
須田帆布の公式WEBページは こちら  もう10年はここの帆布バッグを使ってるけど、本当におすすめです!(最近話題のステマじゃないです。念のため)

»電子書籍制作代行についてはこちら

日当たり

2009/12/20 [12:19:44] (日) 天気

image ウチは東向きなので、午前中は窓際が暑いほど。

ついこないだ書き直した写メ(死語か)投稿スクリプト。中途半端な状態で放置していたところがあって、びっくり。最近こういうの増えてきた、ような気がする悪寒。途中まで考え考え書いて、疲れて動いてるしまあいいや、ちょっと休憩、したらすっかり忘却の彼方。

ぼーっとすごす週末であります。

[12/20 21:30:55]
てことでまた仕事が始まるわけだが。
船頭多くして船山に登る、仕事場。
誰のGOサインでいくのか、はっきりしないのでまったくやってられない。完成間近のページも、後から覗く別の誰かがイチャモンつけるとそれでやり直しになってしまう。それならそれで、最初からその別の誰かが打ち合わせて過程も見てろよ、と。制作の現場が混乱するだけ。
だけど良いものになりましたよね、て。阿呆か、だ。良いものにしたいのは誰だって当然だし、時間かけてやればよいものになるのは当たり前。だけど、それじゃ仕事じゃないだろ。締め切りがあってそれまでにベストのものを仕上げるのが仕事じゃ。
あーだこーだ言われるのに、なんだかほんとにうんざりしてきてる、初老性欝な週末だ。めんどくさい

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/4/19 20:13

帰ったら修正入れよう

2024/4/19 20:12

to_poolはちゃんと意図通りにメンションをpoolに保存してるので問題ない。
disp_timelineにcircle判定を入れた時にバグった。mentionはpublicでもcircleでもないのでここで弾かれてる。
mentionは無条件で表示させないとだめだろ

2024/4/19 13:30

うげ。DMを取りこぼしてる

検索
<<2024/12>>
       
1234567
891011121314
15161718192021
22232425262728
293031

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

[3 Page] »
1 2 3

TOTAL:2982

2024 (5)
1 (2)
2 (2)
3 (1)
2023 (53)
1 (1)
2 (5)
3 (1)
4 (1)
5 (3)
6 (9)
7 (9)
8 (6)
9 (5)
10 (3)
11 (2)
12 (8)
2022 (16)
1 (1)
3 (2)
6 (2)
7 (1)
8 (4)
9 (2)
10 (1)
11 (2)
12 (1)
2021 (12)
1 (3)
2 (1)
6 (1)
8 (2)
9 (1)
10 (1)
11 (2)
12 (1)
2020 (18)
1 (2)
2 (6)
4 (1)
6 (1)
7 (2)
8 (2)
12 (4)
2019 (17)
1 (3)
2 (4)
3 (2)
4 (2)
5 (1)
6 (1)
8 (1)
10 (1)
12 (2)
2018 (21)
1 (3)
2 (2)
3 (2)
4 (1)
5 (1)
6 (6)
8 (1)
9 (1)
10 (2)
12 (2)
2017 (32)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
11 (2)
12 (5)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)