ひまつぶし雑記帖

chromebookでssh

2024/9/16 [09:47:02] (月) 天気

chromebook同士でファイル共有する方法としてニアバイシェアというのがあるけど、なんか思ってたのと違う。なので、sshで繋いでファイルのやりとりを直接やってしまおう、のメモ。

chromebookを2台使っていて、メインとサブという役割分担。
メインで使っていて作業した内容をサブ機にsshで転送・バックアップしておきたい。

まずはchromebookの設定。メイン機のLinux環境からサブ機のLinux環境に繋ぐためにポート転送を設定する。道路を繋ぐための作業、みたいなもの。

サブ機側のポート転送を設定。
「ChromeOSについて→Linux開発環境→ポート転送」

ポート番号はすでに使われている番号以外ならなんでもOK
sudo less /etc/service
↑これで確認できる。とりあえず10001〜10080のあたりが空いてるので「10022」とした
image
ポート転送を設定することで
1)サブ機のローカルIPアドレス192.168.0.NNにSSHでポート番号を指定してアクセスする
2)サブ機側がポート転送してくれて、サブ機のLinux環境にログインできる

サブ機のLinux環境でsshdサービスを立ち上げる
(サブ機をsshdサーバーにする)

sshdサービスがどうなってるのか確認。
sudo systemctl status sshd.service
この時点では「Active: inactive (dead)」という表示が出ている。ssdは立ち上がっていないので、sshdを立ち上げるために以下の作業。
(sudo、root権限で/etc/以下のファイルを編集することになるので、念のためバックアップを取っておくのが安心安全)

「/etc/ssh/sshd_not_to_be_run」というファイルがあるとsshdが立ち上がらないらしいので削除
sudo rm /etc/ssh/sshd_not_to_be_run

「/etc/ssh/sshd_config」というのがsshdの設定ファイル。

Port 10022
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no
UsePAM no
AcceptEnv LANG LC_*


chromebookのポート転送で指定したポート番号を記載。それ以外は呪文でOK(ルートでアクセス許可するかとか)で、上記以外はデフォルトのままでOK.

設定ファイルを編集したらsshdサービスを立ち上げる
sudo systemctl restart sshd.service
立ち上がってるか確認
sudo systemctl status sshd.service
「Active: active (running)」という表示が見えたら無事sshdのサービスは立ち上がっている。

サブ機のLinux環境のHOMEディレクトリに「.ssh」というディレクトリを作成。
chmod 700 .ssh
として、権限をオーナー限定にしておく。

メイン機でsshの秘密鍵と公開鍵を作る
ホームディレクトリで
ssh-keygen
途中パスフレーズ聞かれて、入力すると「id_rsa」(秘密鍵)「id_rsa.pub」(公開鍵)がHOMEディレクトリの「.ssh」ディレクトリに作られる。公開鍵以外の権限はオーナー限定(0600)

メイン機で作った公開鍵をサブ機のHOMEディレクトリの.sshディレクトリにコピー
scp -P 10022 id_rsa.pub ユーザー名@192.168.0.NN:~/.ssh/.
メイン機で作った公開鍵をサブ機にコピーしたら、サブ機で作業

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys


サブ機の.sshディレクトリの「authorized_keys」というファイルに公開鍵を登録(追記コピーしてるだけ)

以上でsshは繋がる。
ssh -p 10022 -i id_rsa.pub ユーザ名@192.168.0.NN
とか
ssh -p 10022 -l ユーザー名 192.168.0.NN
メイン機からサブ機にログインしてごそごそいじったり

scp -P 10022 -r work ユーザ名@192.168.0.NN:work
などとメイン機からサブ機にファイルコピーしたり

ファイル操作がらくちんになった。
とはいえ、コマンドラインなので、上書き事故には気をつけないといけない、よなあ。

ちなみに注意するところがあって。
linux開発環境も、ポート転送も手動。chromebookを立ち上げたり、再起動したら
・Linux開発環境を立ち上げる
・ポート転送をONにする
…というのもあって、どうせ確認するわけだし、IPアドレスも自動割り当てのままにした。


以下のサイトを参考にさせていただきました(多謝
【Chromebook】SSHサーバの設定
ChromebookのLinuxコンテナにSSHでログインする

最近のネタ切れの時の弁当は2色、3色弁当。
image
なんかこういう手抜きの方が美味しかったりするから、ちょっと悔しい。

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

小ネタ:pdftotextで文字データを抽出

2024/8/28 [15:40:57] (水) 天気

元データがPDFで、圏点(傍点)やダッシュをPDFから検出する必要にせまられた。
目視確認などありえないんで、テキストデータとして取り出して検索しよう、というのが今回のエントリ…というかエントリにするまでもない内容なんだけど、たぶんそのうち忘れるんで、メモ。

PDFから文字情報だけをひっぱりだすのに定番の「pdftotext」というツールを使う。
perlだけでもできそうなんだけど(PDF::API2あたり)ちょっと時間も押してるんで、外部ツールを間に挟むことにした。

まずは肝腎のpdftotextのインストール。これがpoppler-utilsというパッケージだなんて検索しないとわからなかった(pdftotextというパッケージがあるもんだと思ってた)

以下のコマンドラインでインストール

sudo apt-get install poppler-utils

unix系のツールの例に漏れず、これもいろんなオプションが用意されてるけど、今回必要なのは文字情報だけ。レイアウトデザイン情報やなんかは不要。
rawオプションをつけて利用する。
image
たとえば「kappa.pdf」の文字情報を抜き出すのは

pdftotext -raw kappa.pdf

こうすると「kappa.txt」に文字情報を吐き出す。ただ、これだとひと文字ずつだあーっと出力されるので、ここからがテキストデータを扱わせたら最強のperlの出番。image 
pdftotextの出力には改ページがつくので、そこで改行すれば「それっぽい段落」ごとに見えるひとに優しいテキストファイルとなる。

open(P, '-|', 'pdftotext -raw kappa.pdf - ' ) || die;
binmode STDOUT => ":utf8";
open(OUT, '>' , 'kappa.txt') || die;
binmode OUT => ":utf8";
while(<P>){
    my $line = Encode::decode('utf8', $_);
    $line =~ s!\r?\n!!;
    $line =~ s!\x{C}!\n!;
    print OUT $line;
}
close(OUT);
close(P);


特筆すべきようなスクリプトじゃないんだけど。
perlは外部コマンドの「標準出力」をパイプで受け取って加工整形できる。

open(P, '-|', 'pdftotext -raw kappa.pdf - ' ) 

openの
・第2引数で、標準出力を受け取りますよ、という指定
・第3引数はpdftotextの結果を標準出力に出すからね、という指定
これだけでそれっぽい段落にわけたテキストファイルを作ってくれる。

そうしたら、あとは出力されたテキストファイルからダッシュや圏点(傍点)っぽいものをperlで検知するだけ。imageこれはワードで作ったPDFで「、」が圏点となっている。inDesignで作られたデータだと「0」(ゴマ)「4」(ドット)となる。

直接触ってもいいんだけど、一度テキストファイルに吐き出したほうがなにかわからないことが起こった時に便利なので、こういう仕様、段取り。

このスクリプトのおかげで抜け漏れは捕捉できるんでずいぶんラクになった。

以前、目視確認とか無駄なだけだし、んなもんツール作ってやればいいじゃん、とか言ったら、そしたら仕事がなくなる、目視確認手作業修正は必須だ、と言われて心底、呆れた。
カネをもらった上で、人間の作業=ミスが入り込む原因になる工程を入れるって、いろいろ悪質すぎる。
ITといってもピンキリで、こんなのが入り込んでるから要注意。
そもそも、その程度の仕事なんて、なくなっても問題ないし、特に困らない。

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

WiFi接続 インターネットなし

2024/7/25 [12:49:57] (木) 天気

WINDOWS11のノートパソコンがおもての公衆無線LAN、WiFiでネット接続ができなくなっていた。
図書館やスタバのWiFi(ホットスポット?)が使えない。

たぶん今年の5月ぐらいからか(記憶曖昧)
「WiFi接続はされているけど、インターネットなし」という状態
Chromebookでは問題ないし、どうせWINDOWSアップデートのせいだし、そのうちどっかのアプデで治るだろうと放置してたんだけど、さすがにそろそろなんとかせんとなあ、と。

明日、納品の電子書籍があって最終確認作業に、地域活動支援センターを利用。
といっても、広々としたロビーのテーブルを使わせてもらっただけ。ここもWiFiが使えるんで、WIN11のノパソで確認作業が終わったら「インターネットなし」問題。

共有設定がだめなのか、アダプタのドライバが原因なのか、何度もシャットダウンして再起動して、右往左往して。

コマンドプロンプトで接続状況を確認

・Wireless LAN adapter Wi-Fi
 ↑こいつは接続してるのでokっぽい
・イーサネットアダプター vEthernet(WSL (Hyper-V firewall))
 ↑こいつが「インターネットなし」にしてるっぽい

…なのでip自動取得ではなく、手動設定でipv4のところを設定
イーサネットアダプタのipアドレス、サブネットマスクを記入したらインターネットに繋がった。とりあえず。

にしても、WiFiに繋ぐたびにいちいちipconfigでアドレスを確認するなんてありえない。

もう一度、IPアドレスを自動取得に戻してみたら、何ごともなかったかのようにすんなり繋がりやがった。もうわけわかめだ。

デフォルトゲートウェイがローカルIPの198.168.0.1(暗号化なし)だったところ、別のグローバルIPになっていたけど、なにか関係があるのか…どうかもわからない。
ネット絡みは、原因の特定がほんとややこしい。何がどう関係してるんだか。

「WiFi接続あり。インターネットなし」になったら
IPアドレスを調べて自動取得ではなくて、手動で設定してみると解決するっぽい。
Defender絡みのアップデートでfirewallの設定でも変わったのかと思いつつ、結果オーライの対症療法。
image
この地域活動支援センターはほんと気持ちよい空間で、ノートやノパソを広げてる学生くんたち、本を読んでるお父さんお母さん、ボードゲームをしてる小学生たち。

箱モノなんちゃらとやり玉にあげられることが多いけど、ここや図書館などなど、モノ自体はびっくりするほど充実してる。税金なんだし、使わないとねー。

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

作業環境の小ネタ

2024/7/10 [09:07:19] (水) 天気

ここんとこネタもない。
在宅仕事、電書制作する時の作業環境の小ネタでもメモっておこう。

ノートパソコン3台を使ってる。
・WINDOWS11のDELL
・ChromeOSのASUS
・ChromeOS FlexのASUS(元WINDOWS10)

どれも作業するのはSDカード上。スクリプトを走らせるのもデータを保存するのもすべてSDカード。
本体に何かあってもSDカードさえ読み書きできれば問題がない。

で、よく考えないまま、作業ディレクトリ名を3台バラバラの名前にしてしまった。
ファイルのコピーをする時にどのノパソからどのノパソにコピーするのか意識できるように、という上書き事故を防ぐためでもあるんだけど…。
同じスクリプトなのに、ディレクトリ名が違うとエラーの元になるので、いちいちそこだけ書き直す必要があって、これはこれで面倒くさいし、スクリプトの先祖返りとか起こしがち。

電書制作の準備段階で走らせるスクリプトが4つぐらい。確認段階で走らせるスクリプトが10ぐらい。これに電書制作のためのスクリプト1つ。epubに梱包するスクリプト、epubチェックをするスクリプト。

ひとつ修正が必要になるたびにノパソ3台にあるスクリプトを書き換えてきた。さすがにアホらしくなったんで、スクリプトを修正したら、それをほかの2台に上書きコピーするだけで終了にする。
bashのシェルスクリプトで対応することにした。

for d in \
    '/mnt/usb/_works.inspiron' \
    '/mnt/chromeos/removable/USBDrive/_works.vivobook' \
    '/mnt/chromeos/removable/USBDrive/_works.cx1101'
    do
    if [ -d $d ]; then
            export LOCALWORK=$d
    fi
done


とりあえず。
各ノパソの作業ディレクトリを環境変数に設定。スクリプト内でディレクトリ指定しているところを環境変数参照にした。

SDカードのディレクトリ名を統一するのが本当かなあ、と思ったんだけど、上書き事故が怖いし、なんか苦肉の策。

image
病院が開くのを待ってたら視線を感じた。

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

GBLシーズン18でACE到達

2024/5/11 [17:41:27] (土) 天気

いや。ありえないほどACE到達が難しかった。
いつものシーズンならもうとっくにACE到達だったのに、今季はヤバかった…ていうか前シーズンもヤバかったなあ。
どういうわけかわからないけど、ここんとこ周りのレベルが高すぎる。
技回数をかぞえて、交代受けを当たり前にしてくるし、当然ながらGBL用にポケモン育成してるし。

のんびりまったりやってる爺さんとしてはとてもついていけなくなってる。
まじやばいなあ。

[05/17 08:28:20]
ちなみに初期レートが出たのは3/23で1681。そこから2ヶ月近くかかってる…。モチベーションがあがらなかった、というのもあるけど、スクリプト書きや在宅仕事がらみで余裕がなかった、かな。【ポケモン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)
GBLシーズン18でACE到達 (2024/5/11)

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

謹賀新年2024

2024/1/4 [20:26:05] (木) 天気

image
2024年あけましておめでとうございます。
今年も健康で良い年でありますように!

1月1日〜3日までIT蟹工船シフト仕事が入っていたので、今日4日が我が家の謹賀新年。
去年はいろいろ。まるで厄年だった。

午前中に毎年恒例の地元神社に初詣。
二礼二拍手一礼で手を合わせて。
健康でありますように、健康でありますように、健康でありますように、そして良いことがありますように。
最後はもう少し具体的なことをお願いしたんだけど、最初のほうの健康第一は本当に切実。
今年で63歳。すっかりジジイだ。身体を壊したらもろもろ大変だし、家人の方の健康面もやっぱり心配事を抱えてる我が家。
神社でのお願いも真剣になるというもの。

仕事や生活、もろもろ縮小する年になるだろう。
インボイスのせいで在宅仕事を探すのは難しいだろうし。
それでもなんとかなりますように、の神頼みだ。

その後、今年の初映画は『鬼太郎誕生 ゲゲゲの謎』4回目。
いやもう観るたびに違うところで涙腺決壊してる。老人はあちこち緩い。

そんなポンコツですが、
今年もよろしくお願いします。

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

profile

profile

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

ため池

[2024/09/19 00:02]
ファイル同期のためのrsyncで使うオプション::ひまつぶし雑記帖
https://t2aki.doncha.net/?id=1726670782

unix系ツールの例に漏れず、rsyncもオプションが豊富ですぐにわけわからなくなってるんで、自分の使う範囲のオプションをメモ。

[2024/09/18 19:03]
お昼ご飯に食べた唐揚げ3個でお腹いっぱいなもんで、夜ご飯はカップ麺にした。
唐揚げ3個で…これが老人。

このセイコーマートの山わさび塩ラーメンは爽やかなわさびの辛さが鼻につんとぬける塩ラーメン。勢いよくすすると危険だけど、そこさえ気をつければさっぱりと美味かった。
https://online.seicomart.co.jp/delivery/goods_list/goods_list_3.php?o_no=720700000001&srsltid=AfmBOop99J-HoK0ND_ ...

[2024/09/18 18:55]
あと。POSもクリティカルだったと思ってて。売れているものを売れている間にもっとたくさん売るためのシステム。大量生産大量消費の商品にはめっちゃ有効らしいんだけど。出版というか本は、超多品種でひとつひとつが小ロット。それを発売3日〜1 ...

@t2aki@tokoroten.doncha.net

検索
<<2024/9>>
       
1234567
891011121314
15161718192021
22232425262728
2930

リンク

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

[163 Page] »
1 2 3 4 5 6 7 8 9 10

TOTAL:2990

2024 (13)
1 (2)
2 (2)
3 (1)
5 (1)
7 (2)
8 (2)
9 (3)
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)