![]() |
| ||||||||||||||||||||||||||||||||||||||||||||||||
code:Haemophilus influenzae |
ここに書かれていることは無保証です。同じことを行って問題が発生しても、龍義は責任をとりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
html の何でもない場所というか、td タグ内の文字にフォーカスを当てたかった。 出来なければ、ダミーの input タグなんかを用意しないとなと思っていたが、tabindex を付ければ span タグなどでもフォーカスが移動できるらしく。 さっそく、やってみた。
ちゃんと移動した。 ちょっとびっくり。 onkeypress なども取れるかやってみる。
スペースキーで切り替えできるようになった。 これで何とか小改造ですみそうである。 助かった。
家の PC のマウスが反応しなくなった。 マウスポインタも出てこないので PC を再起動したが、現象変わらず。 仕方なく Liva X で使っている Logicool M170 に交換。 調子の悪くなったマウスは Logicool の M325 で、このページを検索すると3年前に導入している。 寿命と言えば寿命なのか。 ![]() 薬指が当たる部分もだいぶ傷んできているし。 ひょっとして、PC の問題かもしれないと念のため仕事場の PC でテストしてみたら、問題なく動いた。 家に持って帰って、再度接続したら問題なく動いた。 しかし、30分ぐらいで動作が怪しくなってくる。 分解して直るような故障じゃなさそうなので、何かの買い物のついてに新しいのを買うことに。
goo Simseller で、HUAWEI P20 lite が800円で売られている。
これは果たして安いのか。
税込みで考えると、本体が864円。
OCN モバイル ONE音声契約必須なので、SIM の初期手数料が3240円かかる。
利用料が月額の最安で1728円。
6か月以内に解約すると、違約金が8000円かかるため、6か月で解約とする。
開始月は無料なので、1728円×5か月で8640円。
合計で12744円。
安いと言えば、安いか。
ENEOS で給油していたら、店員が寄ってきて「エネキー」がどうのこうのと。 急いでいたので、「あります」と嘘を言って退散してもらったが、家に帰って気になったので調べてみた。 EneKey と呼ばれる小型のデバイスで、それがクレジットカードに紐づいており、かざすだけで支払いができるらしく。 それだけ?と思ってしまった。 メリットはクレジットカードを機械に通さなくて良いということしかないだけ。 Suica などのカードでさえ、利用履歴が見られたりできるのに、そんな機能もないみたいだし。 そのうち ETC が進化すれば、そんなデバイスもいらなくなるので、5年ぐらいでなくなるのではないか、と予想して。
ポケモン GO に続けと、ハリー・ポッター魔法同盟がリリースされたらしく。 どのぐらいダウンロードされたのかはわからないが、個人的にはあまり流行らないで欲しいと思う。 春に日比谷公園近くでポケモン GO をしている集団を見かけた。 大人が十数人スマートフォン片手にうろうろしている姿は知らなかったら異様な光景だし、近くに同じゲームをしている人がいるにも関わらず、会話も全くしていない。 歩道を半分塞いでいて、通行するにも邪魔だし。 外に出るのは良いかもしれないけど、知らない人が近くに屯して与える恐怖感とか、歩きながらゲームをやる危険性とか、問題もまだ多い。 そんなことを思うと位置情報や AR を使ったゲームが、ドローンのように規制されても良いのかと思えてくる。
2日の続きで。 Logicool の M325 を買おうと思っていたら、今は M325t に進化していたので、それを購入した。 ![]() 左が M325 で右が M325t で、比較してみるもののロゴ以外違いがないように見える。 裏面を見ると、製品名は M325 と書いてあるし。 ![]() 良くわからないが、何かが新しくなったのでしょう。 PC に接続して問題なく動作した。 やっぱり、M325 のシャーシャー回転するホイールに慣れると、他のマウスの回転が重く感じてしまう。 これで快適なマウス操作ができるようになった。
家の電気を全て太陽光発電で賄ったとしたら、どのぐらい値段がかかるのかと調べてみた。 色々調べてわかったのが、蓄電池などの設備が高いため、投資額で計算すると長いスパンで見ても電気代換算で3倍ぐらいになってしまうこと。 太陽電池の発電効率はあがっているけど、昼に発電した電気をいかに効率よく溜めておくことが問題みたいで。 昼充電したノート PC と、WiMAX の端末で、ネットワーク環境はなんとかなるかもしれないが、照明とか暖房とか考えると無理だし。 電力自給自足は時期尚早だな。
イントラネットのあるページの応答が遅いと報告があって。 確認してみると、データの取得と言うか PostgreSQL の応答に時間がかかっている様子。 クエリを確認すると。 SELECT date, COUNT(CASE WHEN team=1 THEN 1 END) AS result1, COUNT(CASE WHEN team=2 THEN 1 END) AS result2, COUNT(CASE WHEN team=3 THEN 1 END) AS result3, COUNT(CASE WHEN team=4 THEN 1 END) AS result4, COUNT(CASE WHEN team=5 THEN 1 END) AS result5, COUNT(CASE WHEN team=6 THEN 1 END) AS result6, COUNT(CASE WHEN team=7 THEN 1 END) AS result7, COUNT(CASE WHEN team=8 THEN 1 END) AS result8 FROM result GROUP BY date; WHERE 区がついてもっと長いのだけど、こんな感じ。 データ量が多く、ここで2秒かかっている。 さらに、COUNT は存在のチェックだけに使っていた。 存在のチェックなら、EXISTS だろうけど、変更するにあたり、ここに入れると複雑化しそうな気もして、どうしようか少し考えた。 数を数える必要はないから、COUNT を BIT_AND に置き換えてみた。SELECT date, BIT_AND(CASE WHEN team=1 THEN 1 END) AS result1, BIT_AND(CASE WHEN team=2 THEN 1 END) AS result2, BIT_AND(CASE WHEN team=3 THEN 1 END) AS result3, BIT_AND(CASE WHEN team=4 THEN 1 END) AS result4, BIT_AND(CASE WHEN team=5 THEN 1 END) AS result5, BIT_AND(CASE WHEN team=6 THEN 1 END) AS result6, BIT_AND(CASE WHEN team=7 THEN 1 END) AS result7, BIT_AND(CASE WHEN team=8 THEN 1 END) AS result8 FROM result GROUP BY date; 動いたけど、応答時間はほとんど変わらず。 結局 AND 計算をしているため遅いのかと思って、BOOL_OR にしてみる。 SELECT date, BOOL_OR(CASE WHEN team=1 THEN True END) AS result1, BOOL_OR(CASE WHEN team=2 THEN True END) AS result2, BOOL_OR(CASE WHEN team=3 THEN True END) AS result3, BOOL_OR(CASE WHEN team=4 THEN True END) AS result4, BOOL_OR(CASE WHEN team=5 THEN True END) AS result5, BOOL_OR(CASE WHEN team=6 THEN True END) AS result6, BOOL_OR(CASE WHEN team=7 THEN True END) AS result7, BOOL_OR(CASE WHEN team=8 THEN True END) AS result8 FROM result GROUP BY date; やっぱり応答時間はほとんど変わらず。 素直に EXISTS にした方が良い気がしてくる。 もう少し考えてみるかな。
机の上にあった novac の VP-830U を撤去したら、線も少なくなってだいぶすっきりした。 この調子でキーボードもワイヤレスにしたいところだけど、Happy Hacking Keyboard の大きさとキー配置になれてしまっているので、選択肢が3万円近くする Happy Hacking Keyboard Professional BT しかない。 そんな状態がしばらく続いていたが、LANCERTECH NiZ ATOM 66 というキーボードがあると耳にして調べてみた。 キーボードのサイズは問題なく、静電容量無接点だし、Bluetooth もついているし、Control キーの位置は後から変更できるようなので、これだという感じで。 しかし、Amazon では売り切れ。 他の場所では値段が高くなってしまい、割安感がなくなってしまう。 こまめに Amazon をチェックして、売っていたら迷わず買おうかな。
某所に NTT の GE-ONU な PR-400KI があって。
先日、セキュリティ上の問題が出たと発表があった。
最近の PC 用モニタは 21:9 が増えてきている。 4:3 から 16:9 になって、21:9 という流れみたい。 何で 7:3 じゃなくて、21:9 なのかは考えないことにして。 例えば 21:9 で34インチのモニタの場合、縦の長さは 16:9 でいうところのどのサイズと同じになるのか。 何度か計算したけど面倒になってきたので、一覧表を作ってみることにした。
21:9 の縦の長さのポイントは、インチ数=縦の長さ(cm)とほぼ等しくなること。
21:9 の34インチモニタは、縦の長さが34cmとなる。 インチ:
29インチサイズの 21:9 のモニタの場合、19インチの 4:3 のモニタの縦の長さと同じになる。 仕事場使っている23インチの 16:9 のモニタの縦の長さとほぼ同じ。 そう考えると、19:9 の23インチモニタ2台の方が、値段も面積も広いことになる。 21:9 のモニタを導入するのは、まだ先かな。
3日の続き。 色々考えて、HUAWEI P20 lite ではなく、nova lite 3 の方を購入した。 .11ac と 4GB メモリより、Android 9.0 なのと、液晶が大きいのと、バッテリー容量が多い方がメリットは大きいと考えて。 その HUAWEI nova lite 3 が届いた。 ![]() 箱の中には、本体と SIM カードが入っていて。 お店に行かなくてもスマートフォンを使い始めることができる良い時代になった。 ![]() SIM カードは IC カードと同じサイズのもので、切り離して各サイズにすることができる。 律儀に IC カードと同じフルサイズの SIM なんだけど、フルサイズの SIM を使う機種を見たことがない。 通信できるスマートフォンやタブレットに IC カードリーダーを刺して、この SIM を読み込みさせて使うこともできない気がするし。 ![]() 肝心の本体が入った箱をあける。 本体と充電ケーブルと、小型の AC アダプタとすっきり収納されていた。 昔の携帯電話の箱は無駄に大きかったな、なんて思い出して。 ![]() シリコンジャケットが附属しているので、このまますぐ使えるのがありがたい。 透明なので、本体の色もそのままだし。 ![]() 電源を入れてまず思ったのが液晶が綺麗。 液晶が大きかったり、新品で明るいのもあるけど、コントラストがはっきりしている。 小さい字でもかなり見やすい。 あと気になったことは操作のことなので、慣れの問題かな。 SIM カードはまだ入れていないので、時間をみて入れることに。
メインの PC の HDD は 150G あるのだけど、いつの間にか80%ぐらい使っている。 実際は 139GB にしても、そんな使っているかなという感じで。 本当に使っているのか、何が大きいのか気になるので調べてみる。 まず C:\Windows フォルダは 20.6GB だった。 続けて、C:\Program Files フォルダは 8.3 GB だった。 C:\Program Files(x86) フォルダは 6.9 GB だった。 C:\ProgramData フォルダは 1.8 GB だった。 ここまでで 37.6GB になる。 そんな容量を食う原因が無いのだけど、と思って C:\Users フォルダ以下の確認。 C:\Users\toyota\AppData フォルダが 51.4GB だった。 これがでかいのか。 C:\Users\toyota\.AndroidStudio で始まる 1.5~2.3 のフォルダが 2.8GB もある。 ここまでで 91.8GB になる。 これに Cygwin のフォルダとか、音楽データとか入れると、確かに 110GB になるか。 問題は AppData フォルダだな。 さらに掘って調べてみると、C:\Users\toyota\AppData\Local\Android が 47.1GB になる。 ![]() AndroidStudio だけで 50GB ぐらい使っていることに。 AndroidStudio は1年以上起動していないので、起動するとバージョンが3になって、また容量がどっと増えそうな気がする。 アンインストールすべきかもな。
Windows XP でしか動かないアプリケーションがあるという理由で、以前のメイン PC である DELL SC430 を残しておいてある。 しかし、1年起動しなかたっために、廃棄することにした。 天気が悪いので、今日はデータの抜き出し作業のみする。 このページで調べると、DELL Dimension 3100C が2007年の8月に落雷か何かで壊れて、そこから SC430 がメイン PC に格上げになっている。 XP のライセンスが切れるまで7年ほど使って、そこから予備に回っていた。 SC430 の HDD ディスクは 3100C のものなので、古いファイルは2006年のもの。 その中で必要なファイルをバックアップする。 共有フォルダを作って、Windows 10 からアクセスしようと思ったうまくできない。 ![]() 16GB の USB メモリを入れたら、フォーマットしろと出てくるし。 仕方なく、2GB の USB メモリで2回に分けてコピーして。 これでデータのサルベージは完了。 明日は物理的に PC を撤去する予定。
Windows XP がインストールされている DELL SC430 の撤去。
大変だったのは、机の上に伸びていたケーブルをいくつか引き抜くこと。
細い場所に何本も通っているので、間違えないように引っ張ったり、コネクタ部分が通れるように寄せたりして。
外したキーボードとかスピーカーとか、もう一緒に処分することに。
SC430 はかなり大きかったので、撤去するとすっきりした感じになった。
ASUS CM6870 を SC430 があった場所に移動して。
PostgreSQL で週ごとの合計値を求めたかった。 何か GROUP BY で使える値を取れないかと調べていたら、TO_CHAR の W を見つけた。 testdb=# select TO_CHAR('2019-08-05'::date,'MM-W'); to_char ----------- 08-1 (1 row) が、これは該当月の1日から7日が曜日と関係なく1週目となる。 微妙に使えない。 WW でも同様の扱いで、WW の場合は曜日に関わらず1月1日から1月7日が1週目となる。 曜日で判断して1を足してやるなどをすれば実現できるが、SQL でやるには色々と長くなってしまう。 どうしたものかと調べていたら WEEK でその年の何週目かを出せるみたい。 やってみた。 testdb=# SELECT EXTRACT(WEEK FROM DATE '2019-08-01'); date_part ----------- 31 (1 row) testdb=# SELECT EXTRACT(WEEK FROM DATE '2019-08-05'); date_part ----------- 32 (1 row) 1月1日~3日の扱いとか、月曜日始まりの週単位ということを頭の隅に置かないと駄目だけど、たまたま日曜日のデータはなかったので、これでなんとかなりそう。
先日、Windows XP が入っていた DELL SC430 を撤去した。 今のところ、部屋の片隅に置いてあって、邪魔と言えば邪魔。 どこに捨てようかと調べてみる。 直接持ち込めるところは、遠かったり平日限定だったりするので、楽そうだけど時間がかかる。 着払いで送れる場所もあるけど、送るには大きな段ボールが必要だし、手間がかかるし。 タイミング良く不用品回収とか来てくれると助かるのだけど、最近は見たことない。 大きな段ボールを見つけて、送るのが現実的だな。 大変だけど SC430 が入る段ボールを見つけないと。
PostgreSQL のクエリを眺めていて、気になったところがあった。 まず、こんな感じのテーブルがある。 Column | Type | Modifiers ----------+----------+----------------------- taskid | integer | not null taskname | text | not null division | smallint | process | boolean | not null default false クエリはこのデータの中で、division 毎に process が false のものがあるかどうかを出しているようであった。
8日にも書いた感じで、CASE で 1 か 0 かを出して、足した値を使っていた。
どうも効率が悪いため、書き直すことにした。
HTML でグラフを描こうと思って。 CANVAS を使おうかと考えたけど、要素4つのグラフごときなので、インラインで SVG を入れることにした。 棒グラフは特に問題なく描けたが、円グラフでどうしたものかと。 できれば三角関数を使わずに収めたかったので、少し調べて円の stroke と stroke-dasharray で扇形を描けそうなので、やってみた。 SVG はこんな感じ。 <svg width="200" height="200" viewBox="0 0 300 300"> <circle cx="150" cy="150" r="75" fill="white" stroke="red" stroke-width="150" stroke-dasharray="100,1000" /> </svg> これで作ってみて、いざ試験環境で見てみると、綺麗な扇形になっていない。 何故だろうと確認すると、IE で見るとおかしな形になるみたい。 こんな感じ。 ![]() これが、例えば vivaldi の場合は。 ![]() 原因を特定したくて、インラインの SVG から SVG ファイルにしてみたけど、結果は同じだった。 つまり、SVG の解釈というかエンジンの問題のようで。 これは三角関数を使いなさいというお告げか。
昨日の続き。 三角関数を使って位置を求めて、円グラフを描いてみた。 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 210 210" width="170" height="170"> <g transform="translate(105 105)"> <path fill="#f00" d="M 0 0 L 0 -100 A 100 100 0 0 1 90.9632 -41.5415 Z" /> <path fill="#0f0" d="M 0 0 L 90.9632 -41.5415 A 100 100 0 0 1 28.1733 95.9493 Z" /> <path fill="#04e" d="M 0 0 L 28.1733 95.9493 A 100 100 0 1 1 0 -100 Z" /> </g> </svg> これがこうなった。 ![]() これを Javascript で出す。 本当のことを言うと、上のグラフはこの結果なんだけど。 function getSectorPoint(r, percent) { var point = new Object(); point.x = r * Math.sin(percent / 50 * Math.PI); point.y = -r * Math.cos(percent / 50 * Math.PI); return point; } function makeGraph(){ var shop1 = 200; var shop2 = 300; var shop3 = 600; var shopAll = shop1 + shop2 + shop3; var targetSpace = document.getElementById("divGraph"); var svgLine = '<svg xmlns="http://www.w3.org/2000/svg" width="170" height="170" viewBox="0 0 210 210"><g transform="translate(105,105)">'; var shop1Point = getSectorPoint(100, (shop1 / shopAll) * 100); var laf1 = "0"; if((shop1 / shopAll) > 0.5){ laf1 = "1"; } svgLine += '<path d="M 0 0 L 0 -100 A 100 100 0 ' + laf1 + ' 1 ' + shop1Point.x + ' ' + shop1Point.y + ' z" fill="#F00" />'; var shop2Point = getSectorPoint(100, ((shop1 + shop2) / shopAll) * 100); laf2 = "0"; if((shop2 / shopAll) > 0.5){ laf2 = "1"; } svgLine += '<path d="M 0 0 L ' + shop1Point.x + ' ' + shop1Point.y + ' A 100 100 0 ' + laf2 + ' 1 ' + shop2Point.x + ' ' + shop2Point.y + ' z" fill="#0F0" />'; laf3 = "0"; if((shop3 / shopAll) > 0.5){ laf3 = "1"; } svgLine += '<path d="M 0 0 L ' + shop2Point.x + ' ' + shop2Point.y + ' A 100 100 0 ' + laf3 + ' 1 0 -100 z" fill="#04e" />'; svgLine += '</g></svg>'; targetSpace.innerHTML = svgLine; } 中心点を 0,0 にして計算を少なくさせて、transform で位置を移動させている。 これで、半径半分の扇の終点を半分の位置にして、文字を入れて完成させた。 果たして SVG でやって、表示は早いのか遅いのか。 今度時間があったら、CANVAS と比較してみるのも良いかも。
某所で工業機械を設置するとかで。 ネットワークも繋ぐとの話なので、立ち会いに参加することになった。 話はなんとなくわかったけど、時々出てくる「どうりょく」の意味がわからず。 「どうりょくをそこから取って」と言う感じで使っていた。 後から聞くと、「動力」らしく「三相交流 200V」のことを指すのだとか。 家庭用では無縁なので、聞いたことがなかった。 で、web で検索してみると、工業機械業界特有の言葉ではなく、他の業界でも使っている言葉みたい。 この先使うことはないかもしれないけど、覚えておくことに。
15日に XP の PC を撤去した。
これで家では、メイン PC である ASUS CM6870 と、別な部屋にあってテレビに繋いでいる Liva X が現役稼働の PC となった。
やっぱり予備機が欲しいため、Acute Angle AA-B4 という PC を購入した。 ![]() 日本に一度まとめて送って、そこから佐川で配送となったようである。 開けると、薄い緩衝材でくるくる巻かれていた。 ![]() 商品の箱に直接テープを貼るのは、日本人の感覚では無いことだな。 ゆっくり引っ張って、綺麗に剥がせたけど。 ![]() 本体以外にコンセントの変換器が付いていた。 本体の箱はしっかりとした造りのもの。 ![]() で、何故か開封されていた。 それだったら、コンセントの変換器を中に入れてくれても良いのだけど。 ![]() 蓋を開けると、上に説明書が入っていた。 三角形主機、と書いてある。 そのままだな。 ![]() 説明書の下に本体が入っている。 AC アダプターと HDMI ケーブルが附属してくる。 ここまであっさりしていると、気持ち良いぐらい。 もう1つ何か入るスペースがあるのだけど、ここには何が入る想定なのだろう。 ![]() 本体は木製。 質感は悪くないが、木製の PC なんて初めてで、他と比較のしようがない。 後のプレート部分はアルミニウムのダイカスト製のようである。 ![]() LAN ケーブル、付属の HDMI ケーブル、Logicool マウスのドングル、電源ケーブルを接続した。 ごちゃごちゃするかと思っていたが、それほどでもなく。 ![]() 起動してみた。 問題なく起動して。 今日はセットアップと Windows Update で時間切れ。 ほとんど使うことはできなかった。
こことは別のブログで投稿をしようとサーバにアクセスするが、応答がない。
管理用のアドレスではなくドメインに対してアクセスしても、やっぱり応答がない。
確認すると DNS の問題ではないようだし、完全にサーバ側である。
サーバは ServersMan@VPS で借りているものなので、同じサーバに収まっているところに対して大量にアクセスしているのだろうかと少し調べてみる。
DTI のメンテナンス情報で、ようやく原因がわかった。
22日の続き。 Acute Angle AA-B4 のエクスペリエンスインデックスを出してみた。 2017年の6月にとった BREEZ Book W11 の結果と2019年に6月にとった Jumper EZpad 6 Pro の結果と比較してみる。
いくつか抜けているのは、winsat を実行すると この製品は、公式のページに、ブロックチェーンノード・計算資源共有と書かれている。 何かしら怪しげなソフトウェアが入っているかもしれないため、Wireshark をインストールして、1時間ほどキャプチャしてみた。 見たところ問題あるようなトラフィックはない。 ソフトウェアとドライバを確認して大丈夫そうだし勝手に変な動きはしないとは思うけど、かの国製は何をやらかすかわからないので、予備機と言えども気を付けないと。
23日の続き。
ServersMan@VPS での緊急メンテナンスが何だったのか、ちょっと調べてみた。
どうも同じサーバに入っている他の契約者の情報が見られてしまう問題があったみたい。
CVE-2015-2925 で報告されているもので、もう4年も前のもの。
それを DTI に言ったものの、対処しないと返信がきたため、2ch というか 5ch で公表したことにより緊急メンテナンスが入ったようで。
実際はちょっと違うけど、 $price = "0"; $convstr = mb_convert_kana($inputstr, 'a'); if (preg_match("/[0-9]*円/", $convstr, $pricestr)) { $price = mb_strstr($pricestr[0], '円', true); } もうちょっと長くなると思ったけど、あっさりしてしまった。 三項演算子を使えば、1行になるぐらいだな。
家に帰ると、浴室にゴキブリが死んでいて。 今年はこれで3匹目な気がする。 何故ゴキブリが死んでいたのかあまり考えなかったけど、3匹目となると気になってきた。 暑さのせいではないなと思いながら家を眺めてみると、アリに使っているアリメツがペットボトルのキャップに入って洗面台の横に置いてあるのが目に入った。 ひょっとして、アリ向けのアリメツをゴキブリが食べて死んだのかもしれないと思ってきた。 意外なことに、アリメツは汎用に使えるのかもしれない。 ちょっと web で調べてみたけど、そんなことが書いてある web ページは見つからないので、気のせいかもしれないが。
仕事の文書で、
車のナビに Android の TV BOX を接続して使っている。 よく考えると、WiMAX の NEXT W01 を使っているので、車でも Wi-Fi を使ってインターネットに接続できるのか、と気が付いた。 とは言っても、画面が小さいくて字がぎりぎり読めるぐらいなため、Youtube の動画を見るので精一杯。 操作もリモコンなので、文字の入力も大変だし、現実的ではないかな。 Netflix とか hulu で映画を見るのなら良いかもしれないけど、運転しているときはさすがに見られない。 GPS が付いていないため、ナビをさせるのもできないし、考えるとメリットがあまりない気がしてきた。
夕方からネットワークが遅いなと思っていて。 ADSL の問題で、また回線調整が必要なのかもな、と思っていた矢先に 1903 のアップデートとメッセージが出た。 そういうことかと少し納得したけど、このタイミングで?という戸惑いで。 再起動させようとしていたけど、時間がかかりそうなので再起動は明日朝に変更した。
Javascript を書いていて。
クラス指定してある要素の属性というかスタイルを全て変えていた。 |
![]() ![]() ![]() |
by Tatsuyoshi since 2003 |