fc2ブログ

社内SEの徒然なる日記

仏壇の上に遺影を飾る。・・・マナー?形だけでは意味が無いよ

■ 遺影の場所

父が亡くなった時に、遺影をどこに飾るのかって話になりました。

周辺(葬儀会社、親族、知人など)の人に、仏壇の真上はダメ、向かって右側なら良い、部屋と部屋の間はダメ・・・って感じで色々と言われた結果、非常に見えにくい場所に飾る事になりました。

別に見たく無いっていうなら、それでも良いのですがねぇ。

母は、出来れば見えやすい位置に飾りたいと言っていたのですが、やはり近所の目とかも気にして、言われた通りの場所に飾る事にしたようです(まぁ、設置したのは私ですが)。

■ 数ヶ月後

それから数ヶ月、お正月休みに帰省すると、仏壇の中に遺影の元にした写真が飾られていました。母によると、目につく場所に父の写真があって欲しいという事です。

少し話したのですが、やはり「遺影を見えやすい位置に飾ろう」という結論に落ち着きました。

結果、こうなりました。
仏壇の上に遺影

個人的には、これで良いとおもうのですがね。

■ 調べてみた

設置はしたのですが、母も古い人なので色々と気になるようです。私にインターネットで遺影の飾る位置について調べて欲しいと言ってきました。

んで、検索してみたのですが、やはり「仏壇の上に遺影を置くのは良く無い」という答えが多かったのですが、ちらほらと、そんなルールやマナーなんて無い。とか、どっかのテレビで有名人が勝手に言っただけ。という意見も見受けられました。

あまり本腰を入れて調べた訳じゃないのですが、この件に関して、個人的な意見を超えるもの(例えば、宗教書とか)は発見出来ませんでした。

父の葬儀の時にも同じように、葬儀関係のマナーとかを調べてみたのですが、1+1=2みたいな答えってのは存在しないようです。

■ 大切なものは・・・

母には「確かなルールなんて見つからなかったんだから、自分たちが良いと思う方法で良いんじゃないか」って言う事にしました。

五月蝿い人が色々と言うかも知れませんが、そんなのは放っとけば良いんですよ。大切なのって形だけのルールやマナーを守ることじゃなく、自分たちと故人の気持ちじゃないでしょうか?それで、誰かが迷惑するわけじゃないんですからね。

ところで、亡くなった人に対して「ゆっくり休ませてあげないと」って感じの言葉を聞く事があります。そういう考え方もある(というか、一般的?)と思うのですが、個人的には「いやいや、寝てる場合じゃないから。起きて見守ってくれよ。」とか思ってしまいます。

・・・まぁ、私自身がそんなことを考えるような人間なので、遺影の場所とかも気にしないんですよ。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---

スポンサードリンク

PageTop

PowerShellで再帰的なファイル削除の検証

■ Remove-Item

PowerShellで、あるフォルダ内の特定のファイルを除いて削除したいと思いRemove-Itemコマンドレットを使ったのですが、思うように動きません。
どうやら、パラメータ「Exclude」の使い方に問題があるようです。

まず、フォルダ構成はこんな感じとします。
D:\AssetsDiff
│ ★ReadMe★.txt
│ コピー ~ ★ReadMe★.txt

└─aaaa
★ReadMe★.txt
コピー ~ ★ReadMe★.txt


やりたいのは、このAssetsDiffフォルダにある「★ReadMe★.txt」を除いた全てを削除したいのです。

先に答えを書くと、こうです。
Remove-Item 'D:\AssetsDiff\*' -Exclude '★ReadMe★.txt' -Recurse -Force


-Excludeパラメータで削除の除外対象を指定、-Recurseパラメータで子要素も対象、-Forceパラメータで読み取り専用ファイルとかも対象。これだけですね。

結果は、こうなりました。
D:\AssetsDiff
★ReadMe★.txt


■ -Exclude パラメータの動作

私が最初に間違えた方法ってのが、これになります。
Remove-Item 'D:\AssetsDiff\*' -Exclude 'D:\AssetsDiff\★ReadMe★.txt' -Recurse -Force


-Excludeパラメータを絶対パスで指定していたんです。Remove-ItemコマンドレットのExcludeパラメータは、単純に指定された文字を条件として使用するようなんです。

結果どうなるかというと、「D:\AssetsDiff」配下の全てが削除されました。まぁ、それはそれで良いのですが、気に入らないのはサブフォルダへの影響です。

最初のフォルダ構成を見直して欲しいのですが、この時の除外条件は「★ReadMe★.txt」なのですが、これと同じ名前のファイルが、サブディレクトリの「aaaa」フォルダにも存在しています。

最初に絶対パスで指定したのは、単純に「★ReadMe★.txt」を除外すると、サブフォルダ「aaaa」配下の「★ReadMe★.txt」の存在を検知して、これが残ったままになるのではないかと思ったのです。

ところが、残したかった直下の「★ReadMe★.txt」まで消される始末です。

要は、Remove-ItemコマンドレットのExcludeパラメータは、サブフォルダまで影響しないっていう仕様。故に、パスの指定は出来ないって考えなんですかね。

■ 再帰的な削除

では、指定したファイルを除いてのサブフォルダ内のファイルを一括削除するにはどうするかって事なんですが、ここはパイプラインを使う事で何とかなるようです。

Get-ChildItem -Path $DiffDIR -Recurse -Exclude '★ReadMe★.txt' | Where-Object {$_.GetType().Name -ne "DirectoryInfo" } | Remove-Item -Force -Recurse

まず、Get-ChildItemコマンドレットで「★ReadMe★.txt」を除くフォルダ構造を取得します。同じExcludeパラメータでも、Get-ChildItemコマンドレットの場合はサブフォルダまで影響するので、「aaaa」フォルダ配下の「★ReadMe★.txt」は除外してくれます。

ただし、この結果にはフォルダ自体が含まれているので、このままだと「aaaa」フォルダ自体が削除されてしまいます。そこで、Where-Objectコマンドレットを使用してフォルダを除外します。

ここまで絞り込んだ結果をRemove-Itemコマンドレットに渡すことで、「★ReadMe★.txt」以外の全ファイルを削除することが出来ました。
D:\AssetsDiff
│ ★ReadMe★.txt

└─aaaa
★ReadMe★.txt


■ 残った問題

結局解決できなかったのは、「指定したファイル、及びそれが存在するフォルダ以外を削除する」っていう事です。ファイルだけなら↑の手順で良いのですが、フォルダが含まれた場合、これが残っちゃいますよね。

まぁ、ガリガリと作りこめばどうとでもなりますが、できればガリガリしないで何とかしたいものです。PowerShellから別のコマンドを発行するって手もあるかと思ったのですが、なんか美しくないし、何とかPowerShellのコマンドレットだけで何とかならないものでしょうかね。

まぁ、現状では必要性がないので、どこかで必要になった時に真剣に考えますか。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

近所のつぼ八を愛用してます(握りずし美味しいです)

■ 一人静かに飲みたい

自宅の位置が、ちょっと微妙な場所にありまして、近くに電車も地下鉄も無く、公共交通機関はバスしか無いのです。その分、家賃も安いので文句は無いのですが、一人で静かにお酒を飲みたい時にどうするかって問題があります。

居酒屋は周りにいくつかあるのですが、個人でやっている店って店員さんが話し掛けてきたり、変な扱いをされる事が多かったりと、あんまり行きたくありません。「コイツ、また一人で来やがった。友達いないんじゃね?」って思われてるかと思うと、気分が悪いです。

...まぁ、その通りなんですが。

■ ボッチでも安心なチェーン店

言い訳すると、友達は居なくても同僚は居るので、誘えば一緒に飲んでくれると思うのですが、私は静かに飲みたいのであって、お話したい訳ではなく、ましてや騒ぎたいわけじゃありません。

理想は、札幌駅とかによくある、仕事帰りのちょい飲みが出来る店なんですが、ない物は仕方ありません。って事で、取捨選択の結果、つぼ八を使っています。

チェーン店だけあって、店員もバイトばかり。変に声を掛けてくることも無いので、実に気楽です。メニューに面白味は無いかもしれませんが、そこまでいうのは贅沢です。

実際の所...
好きですつぼ八1

好きですつぼ八2

好きですつぼ八3

好きですつぼ八4

って感じで、お酒を飲む分には十分ですからね。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

顔に出来たニキビ?が治らないと思ったら・・・

■ ニキビ

顔の左頬のあたりに、ニキビ(と、その時は思っていた)が出来ました。私も年だし、洗顔もしっかりやっているので、最近は出来る事はなかったんですがね。

こういうのは、早めに手を打つに限ります。ってことで、軟膏を塗って、絆創膏を貼ることにしました。予定では数日で治るはずだったのです。

ところが・・・

■ しこり

発生から1週間たっても治りません。当初は、そのまんまニキビって感じだったのですが、なにやらしこりのようになってしまっています。

痛みは全くないのですが、なんだか不安になってきます。

病気の関係をネットで調べちゃうと、とっても悪い情報ばかりが出てくるので気が進まないのですが、私には他に頼るものがありません。って事で調べてみると、症状的には粉瘤腫というのが近そうです。素人判断は厳禁ですが、それ以外には怖い結果ばかりが出てくるので見ない事にしました。

とりあえず、あと暫くは様子を見て、治らないようなら皮膚科にでも行こうかと思ってたのです。

■ 毛

発生から3週間ほど経過した時、しこりをコリコリ触りながら(何となく気になっていた)仕事をしていたら、手に妙な感触がありました。

ん?と思いながら見ると、そこには1センチ程の毛があります。タイミング的に、間違いなく顔の毛で、しこりの中から出てきたとしか思えません。

・・・これは、もしからすると顔の毛が皮膚の下に埋没して、その中で色々と悪い事が起こっていたのでは?

改めてネットで調べてみると、埋没毛という症状のようです。原因らしきものが分かってきたので、少し安心しました。しこりは残ったままですが、問題の毛は出てくれたようですし、もう少し様子を見る事にしますかね。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

Macのテキストエディットでhtmlソースを編集してみた

■ Macでhtml

諸般の事情で、HTMLソースの編集をMacで行う必要が生じました。

そんなにガリガリ作ってる訳じゃないので、Mac標準のテキストエディタ「テキストエディット」で十分かと思ったのですが、これが意外と難物で、色々と苦労させられました。

元のHTMLファイルはWindowsで作ったものなのですが、コイツを開くと文字化け。環境設定とか弄って、文字化け解消したと思ったんですが、保存→表示とすると、また文字化け。頼んでもいないのに、勝手に妙なコードを自動追加。何とか開いたと思ったら、リンクとかのコマンドが編集出来ない(ブラウザで開いたような状態)になってる。

・・・だーかーらー!ただ、プレーンテキストで表示&編集するだけでいいんだってば!

よっぽど、別のテキストエディタでもインストールしてやろうかと思ったのですが、少し設定を弄れば大丈夫そうです。

なお、Mac OSのバージョンは、10.9.1です。

■ Macでhtml

テキストエディットを起動して「このMac内」を選択し「オプション」を選択します。
MacでHTML編集0

元のHTMLソースがWindowsで作ってたので、文字のエンコードは「Shift Jis」にします。んで、「リッチテキストコマンドを無視」をオンにします。
MacでHTML編集1

とりあえず、これで開く事は出来ますが、今ひとつ不安です。

テキストを開いた状態で、メニューから「テキストエディット」→「環境設定」を選択します。
MacでHTML編集2

一番上の「HTML ファイルを、フォーマットしたテキストではなく HTMLコードとして表示」をオンにします。
そして、エンコーディングの設定箇所を、全て「日本語(Shift_Jis)」にします。
MacでHTML編集3

これで、安定して編集出来るようになりました。

■ エンコーディング

私の場合、テキストファイルはWindowsでも使いやすいようにShift Jisにした訳ですが、別のエンコードを指定しても良いと思います。大事なのは、一貫して同じエンコードが使うことですからね。

ただし、テキストファイルのエンコードで初期値の「自動」は避けた方が良いかもしれません。

なんだか、自動だと妙なエンコードで読み書きされる事が多いんですよね。

■ 諸般の事情

このブログの記事の一覧を、FC2ホームページに掲載していました。

このソースはローカルでは持っておらず、FC2ホームページのファイルマネージャーっていう機能でブラウザから直接修正していたのですが、ある日、通信環境の悪い場所で更新したところ、更新中にフリーズ。どうしようもなくなって強制終了したのですが、ソースの3分の2程度が失われてしまいました。どうやら、中途半端な状態で更新されちゃったようです。

運良く、バックアップが残っていたので復旧出来たのですが、危ない所でした。そこで、ソースは自分で管理する事にしたのです。

はい?当たり前だって?

・・・・・・・・・・・ごめんなさい。その通りです。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

「白き大地に眠る卵色の聖域」・・・・は?

■ コンビニ弁当

最近、めっきりと自炊する事が減って、夕食は会社(経費清算出来るので無料。美味しいです。)で食べる事が多くなりました。ちなみに朝は適当、昼はもっと適当弁当(手抜き弁当、ふりかけが便利です)。

ってことで、残業しない日はコンビニ弁当(ファミリーマート)に頼るのですが、先日、こんなものが・・・
白き大地になんたら1

はい?

■ ミク?

問題のマークを拡大します。
白き大地になんたら2

この中途半端に中二臭い「白き大地に眠る卵色の聖域」ってなんですかね。まぁ、買ってしまったので商売としては成功なのかも知れませんが・・・

それにしても、雪ミクってなんですかね?確か、初音ミクとかってボーカロイド?なるものがあるらしいですが、それの仲間なんですかね?

この辺り、造詣が無いのでさっぱり分かりません。まぁ、30過ぎのオッサンが深めるべき領域では無い気がするので、知らなくて正解と思いますが・・・


ん?味?

・・・さぁ、忘れました。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

CoCo壱番屋で食中毒!?、むしろ行ってみた

■ 食中毒発生!

ネットの世界でブラブラしていると、CoCo壱番屋(千葉中央駅東口店)で食中毒が発生したとの記事を見つけました。

なんでも、持ち帰り用のカレー弁当やサラダが発生源で、ノロウイルスに感染。数名に嘔吐、下痢の症状。従業員からウィルス検出。食中毒と断定。って感じらしい。

実体が見えないので、過失なのか、どうしようもない事態だったのか分からないのですが、飲食店をやっている限りは避けられないリスクですよね。

まぁ、被害者全員が快方に向かっているとの事なので、下手に責任逃れみたいな事をしなければ、大きな問題にはならずに終わりそうに思えます。

■ 思い出した

このニュースを見て、CoCo壱番屋の存在を思い出しました。私の住まいは北海道。問題の店舗は千葉で遠く離れている訳ですが、この手の事件が起こると客足がグッと遠のくというのがセオリーのはず。

・・・むしろ、空いていて良いんじゃね?

折角の機会なので、行ってみました。CoCo壱番屋に行くのは、随分と久しぶりです。たしか前回は(CoCo一番屋でフライドポテトって何がおこった?)だったかなぁ?

■ あまり変わらない・・・かな?

時刻は、13:20位。普段なら昼時の混雑が解消され始める位の時間帯でしょうか?
確かに、お客さんが少ない感じがします(かなぁ)。ですが、その分、店員さんの接客が妙に丁寧な感じがします(たぶん)。

・・・私、普段から自分の興味が無い事って欠片も気に留めないので、以前迄がどうだったか思い出せません。比較がちゃんと出来ないせいで、今ひとつ確信がもてないです。

私の中に「CoCo壱番屋、食中毒、事件後の店」っていうキーワードが既にあるので、先入観を持っているって可能性もありますし、今ひとつ確信が持てません。

■ 結果

まぁ、あまり大きなニュースになった訳じゃないようなので、気付いていない人も多いってことでしょうかね?

一つ確かな事は、相変わらず美味しかったって事です。ごちそうさまでした。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

Eclipseで「Java検索中に問題が発生しました」に対応してみた

■ Javaの開発はEclipse

私の勤め先では、Javaの開発はEclipse(Pleiades (プレアデス) )を使っているのですが、何が悪いのやら時々動作不良が発生します。

今回は、あるクラスを使用(宣言)しているソースを検索しようとしたのですが、このようなエラーが出てしまいました。
Eclipseの検索障害 (0)

「詳細」ボタンを押して見ます。
Eclipseの検索障害 (1)

"Java 検索" 中に内部エラーが発生しました。
クラス・ファイル名の末尾は .class でなければなりません

...ふーん、そうですか。何を言っているのかさっぱり分りません。

Eclipseを再起動しても、現象は変わらずです。

■ 対応方法

色々調べたのですが、検索で使用するインデックスが壊れた時にこの現象が発生するらしいです。なので、壊れたインデックスを削除してやれば回復するそうです。

最初に、Eclipseを終了します。

そして、エクスプローラーから 「 『ワークスペース』\.metadata\.plugins\org.eclipse.jdt.core 」を表示します。

ちなみに、私の場合、『ワークスペース』は C:\user\workspace だったので、「C:\user\workspace\.metadata\.plugins\org.eclipse.jdt.core」になりました。
Eclipseの検索障害 (2)

ここから「 savedIndexNames.txt 」と、拡張子が「index」となっているファイルを全て削除します。

はい、スッキリしました。
Eclipseの検索障害 (3)

ここで、Eclipseを起動します。すると、削除した「 savedIndexNames.txt 」と「index」ファイル(の一つ)が復活しました。
Eclipseの検索障害 (4)

これで、再び検索できるようになりました。

■ ついていけない

Eclipseに限った話ではないですが、ここ数年はオープンソースのアプリケーションが幅を利かせるようになってきて、良さそうで良くないです。

無料で簡単に手に入るのは良いのですが、今回のように問題が発生した時の対応に苦慮します。私も若い時(というか、暇な時)なら色々と調べて対応するし、それ自体が楽しく感じたものですが、流石に最近はそういった余裕がなくなってきました。

こうなると、多少高くても強力なサポートを受けられるベンダー製品が有り難く感じます。

私が開発を担当しているシステムは、富士通のアプリケーションサーバー「Interstage」なので、開発環境としてApworks(今は、Interstage Studioだったかな?)が使えると思うのですが、使い勝手はどうなんでしょうかね?

今度、営業さんに製品紹介をお願いしてみようかなぁ。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

掃除機が壊れたので修復を試みたのだが・・・

■ 掃除機が壊れた

掃除機の吸う部分です。先端部分が割れてしまいました。
掃除機を修理(失敗)1

こんな感じ。10年くらい使っているので、かなりボロボロですね。
掃除機を修理(失敗)2

ちなみに、両サイド破損しています。
掃除機を修理(失敗)3

どうりで、最近ブラブラしてると思ってたのですよ。・・・使えれば良いって人間なので、あんまり深く考えてなかったんです。たぶん、随分と前から壊れてたんでしょうね。

■ 修復に挑戦

買い替えても良いのですが、強力なボンドが手元にあるので、修復してみようと思います。
掃除機を修理(失敗)4

両面に、しっかりと塗って、10分程放置します。
掃除機を修理(失敗)5

接着!少し、ずれちゃってますね。
掃除機を修理(失敗)6

両方とも、少しずれてしまいました。
掃除機を修理(失敗)7

思いのほか接着が難しくて、不器用な私ではこれが限界でした。

■ 結果

結果、数日と持たずに分裂しました。修復は大失敗です。素直に、新しい掃除機を買いますかね。

話に聞くロボット掃除機(ルンバとか)とやらを買いたいのですが、掃除機は別に必要だって話ですし、ちょっと考えもの。

まぁ、ちょっと頭がぐらつく位で掃除機としては使えるので、ゆっくり考えて見ようかな。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

雪が多いのでスロープを作ってみた

■ 除雪

私の実家は北海道でも雪の多い場所なので、毎年、除雪に苦労します。何が大変って、積もった雪を捨てる場所が無いことが問題なんですよ。

変な場所に捨てると、ご近所さんとのトラブルになるしなぁ。

■ スロープ

とりあえず、庭にスロープを作ってみました。

左側に家(の裏口)があります。右側が庭ですね。
スロープ作成1

裏口の周辺は開けておいて、右側の庭にスロープをつくります。
スロープ作成2

庭のギリギリで左側にカーブします。・・・ちょっとカーブがきつかったので、後で調整しました。
スロープ作成3

そのまま真っすぐ道を作って完了です。
スロープ作成4

本当はホールを作るつもりだったんですが、日が暮れてきたので中止しました。

■ 作り方

作り方は、雪を足で踏み固めるだけです。

踏む。雪追加。踏む。を繰り返して、踏ん張っても足が埋まらないように雪を固めます。これを繰り返して、なだらかな坂になるように道を作って行けば良い訳です。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

iTunesのアルバムアットワークを手動で設定してみた

■ iTunesのアルバム

ノートパソコンがMacBook Air、スマホ代わりにiPod touchって関係上、自然と音楽の管理はiTunesってなるのですが、こいつでCDを取込んでも、多くの場合、アルバムに絵が表示されないんですよね。

アルバムアットワークなる訳の分からんもので設定出来るらしいのですが、設定出来ない事が多くてどうしたものかと。

iTunesのアルバムから、読み込んだCDを右クリック、メニューから「アルバムアットワークを入手」と選択します。
iTunesアルバムアットワーク無い1

んで、大体はこうなる訳ですよ。
iTunesアルバムアットワーク無い2

ですが、これは自力で追加する事が出来るようなのです。

■ 画像ファイルの準備

まず、追加する画像ファイルを何らかの方法で用意します。使用出来る画像ファイルの種類は確認していませんが、こういう時はJPEGを用意すれば大体は何とかなります。

私の場合は、iPodでCDジャケットを撮影してiPhotoに取込み、そこからjpegに出力しました。

iPhotoから対象の画像を選択、メニューから「ファイル」→「書き出す」を選択
iTunesアルバムアットワーク追加1

特に変更する場所もないので、そのまま「書き出す」
iTunesアルバムアットワーク追加2

出力場所はどこでも良いのですが、分かりやすく「ミュージック」に吐く事にしました。
iTunesアルバムアットワーク追加3

■ iTunesに設定

iTunesに戻って、対象のアルバムを右クリック、メニューから「情報を見る」を選択
iTunesアルバムアットワーク追加4

警告が表示されますが、そのまま「はい」を選択
iTunesアルバムアットワーク追加5

表示された画面の右下にある「アットワーク」っていう枠をダブルクリック
iTunesアルバムアットワーク追加6

先ほど吐き出した画像を選択して「開く」
iTunesアルバムアットワーク追加7

なんかよさげな感じになったので「OK」を選択
iTunesアルバムアットワーク追加8

無事に表示されました。
iTunesアルバムアットワーク追加9

■ 後書き

出来た時には満足してたんですが、よく考えたらネットで画像を検索した方が良かったかもですね。iPodで撮影って時点で、あんまり奇麗にならないですし、それならネットで検索してダウンロード、ダウンロード出来ないようなら、shift + command + 4 あたりで画面コピーをすれば・・・

まぁ、私はそんなに音楽を聴く方じゃないので、今回の方法で十分なんですけどね。
ちなみに、iPhotoから吐き出した画像ファイルは、削除しても良いようです。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

甘いものが好きなのでケーキ(もりもと)を大量購入

■ もりもと

甘いものが好きなので、時々ケーキを買うのですが、最近のケーキはやたらと高いし、小洒落た店だと、私のようなオッサンには敷居が高かったりします。被害妄想かもしれませんが、店員の女の子が私を見る目が・・・

そこで重宝しているのが、イオンの中にある「もりもと」だったりします。何でって言われても困りますが、何となく買いやすいんですよ。値段もそこそこで、甘くて美味しいですし。

■ ホール

最初は、ショートケーキを2つ買って済ませるつもりでした。
もりもとのケーキ1

ところが、端っこに置いてある小さめのホールのケーキが気になって、ついつい買ってしまいました。
もりもとのケーキ2

もりもとのケーキ3

上から覗くと、こんな感じ。
もりもとのケーキ4

こんなの買うもんだから、店員さんには「お祝い用ですか」とか聞かれるし・・・
すまん、そう思うのは当然だが、これは目の前のオッサンが一人で食べるんだよ。

■ 無理でした

甘いものは好きだし、私、甘いものをお酒のツマミに出来るので、どうとでもなると思ってたのですが、流石に私も年ですね。ショートケーキ2つと、ホールを半分って所までは良かったのですが、流石にそれ以上はキツかったです。余してしまって、翌日の朝食兼昼食にしてしまいました。

若い時は、このくらい大丈夫だった気がするんですがね。なんか最近は年を実感する事が多くて複雑な気分です。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

二十数年ぶりに映画館に行ってみたのだが・・・

■ 映画館

今度、映画を見に行く事になったのだが、今ひとつ勝手が分からない。

というのも、最後に映画を見たのは二十数年前の小学生の頃で、親に連れて行ってもらっただけなので、自分で映画館に足を運んだ事が無かったのですよ。特に、見たいとも思わなかったですしね。

って事で、当日にあたふたとするのも格好悪いので、事前に一人で行ってみる事にしました。

■ 予約

場所は、札幌ステラプレイスの7階。インターネットで予約出来るらしいので試してみたのだが、予約出来るのは1週間程度の分だけらしい。予約システム自体は、そう悪い作りじゃないところから考えると、上映予定自体、お客さんの入りとかを見ながら調整してるってことですかね。

面白いのがチケットの予約方法。支払をクレジットカードにして、映画館にある券売機に支払に使ったクレジットカードを差すと、画面に予約した一覧が表示される。これから見るヤツをタッチすると、チケットが吐き出される仕組みらしい。クレジットカード自体を認証に使う方式はなかなか面白いです。

■ 札幌ステラプレイス

申し込んだのは、ゼロ・グラビティなる映画。どれでも良かったのですが、せっかくだから3Dで見れるやつにしようかと。

メガネ、どこで売っているのかと思っていたのですが、食い物を売っている所の右端がグッズ売り場らしく、そこで購入できました。

後は、飲み物を買って待機。上映10分くらい前になると、入場可能になった(係の人が案内していた)ので、早速行ってみました。

■ ・・・・・あれ?

・・・・・・・・・・・・あれ、つまらん。

そもそも、最前列を申し込んだのが最初の失敗。近すぎて見えねぇ(笑)。反っくり返るような姿勢で鑑賞する羽目になりました。

さらに、他の映画の宣伝とかを20分も延々と流され、始まる前から疲労困憊。

そして、映画そのもののが面白く無い。展開そのものが昔からあるパニックアクションから何一つ進歩していない。都合良くトラブルが起こったり、一難去ってまた一難だったり、主人公が諦めかけた瞬間に御都合主義が始まったと思ったら、実は夢でしたとか。

結局、主人公(だけが)助かるのだが、この展開なら主人公も○して、バッドエンドにしたほうが話がスッキリしたような気がします。

■ 3Dは?

折角の3Dだったのですが、これは中々見応えがありました。宇宙空間で大量のデブリが飛んでくる場面は迫力満点。自分の目の前に飛んでくるかのように見えて感心しました。

・・・まぁ、子供の頃に赤いメガネを使ってみていた3Dを、ちょっと進化させただけって感じもしますがね。

■ 結論

知人からは「最近の映画館は凄い」って話を聞いていて、ちょっと期待していたのですが、思った程のものでもなかったです。というか、二十数年前と比べて何が進歩したんだか良く分かりません。

「要するに、巨大なスクリーンにプロジェクターで写してるだけでしょ?」ってのが本音です。ん?音が良くなった?いや、ただ五月蝿いだけにしか聞こえなかったなぁ。

せめて、最初の宣伝と最後のスタッフ一覧が無ければ、もうちょっと評価出来たんですがね。俺は、指定した映画を見にきたのであって、それ以外の宣伝とか、映画を作った人とかには全く興味が無いんですよね。なのに強制的に見せられて苦痛です。


・・・どうやら、私はこの手の娯楽とは相性が悪いようです。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

PowerShellの比較演算子ってどうだっけ?

■ 一覧

こうです。

-eq 等しい
-ne 等しくない
-gt より大きい
-ge 以上
-lt より小さい
-le 以下


他にも、ワイルドカード、正規表現ってのもあるようですが、そこは省いています。

■ 使い方

左が、右と比べてどうか?って使い方をします。

以上を表す -ge をこう使ってみます。
# 2が3以上か?
if (2 -ge 3) {
Write-Output '2は3以上だった'
} else {
Write-Output '2は3以下だった'
}


当然、2は3以下なので、条件を満たしていません。

2は3以下だった

が返ってきます。

■ 実験(2015.2.7追記)

実際に実験してみます。

# 起動パラメータを取得します。
[System.Int32] $expFileNo = $args[0]

Write-Host ('[' + $expFileNo + ']')

# パラメータの値が1より小さい
if ($expFileNo -lt 1) {
Write-Host '1より小さい'
}

# パラメータの値が1以下
if ($expFileNo -le 1) {
Write-Host '1以下'
}

# パラメータの値が10を超える
if ($expFileNo -gt 10) {
Write-Host '10を超える'
}

# パラメータの値が10以上
if ($expFileNo -ge 10) {
Write-Host '10以上'
}

# パラメータの値が5
if ($expFileNo -eq 5) {
Write-Host '5'
}

# パラメータの値が5ではない
if ($expFileNo -ne 5) {
Write-Host '5ではない'
}


色々とパラメータを与えて実行してみます。

パラメータ「0」

[0]
1より小さい
1以下
5ではない


パラメータ「1」

[1]
1以下
5ではない


パラメータ「10」

[10]
10以上
5ではない


パラメータ「11」

[11]
10を超える
10以上
5ではない


パラメータ「5」

[5]


パラメータ「6」

[6]
5ではない


■ 後書き

PowerShellで何か書くのって、バックアップの死活確認だの、リリース登録の自動化だのって感じで、日常的に書いたりしないので、この手の基礎的な事がすっぱりと忘れちゃうんですよね。

こんな妙な記号なんて使わずに、普通の><=とかに出来ないものでしょうかね?

ちなみに、実験の部分は2015.2.7に追記しています。というのも、この記事を書いていたことを忘れて、同じ内容で記事を書いちゃったんですよ。捨てるのも勿体ないので、ここで使うことにしました。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

高血圧の薬、飲み忘れた結果

■ 降圧剤

実家に帰省した時に、高血圧の治療薬(降圧剤)を飲もうとしたのですが、これが見当たりません。間違いなく持って行った筈なのですが、どこにも無いんです。

と言っても、薬を飲み忘れる事もあるし、それでも最近は調子が良かったので飲まなくても大丈夫かと思っていました。

■ 症状と帰宅

最初は順調だったのですが、4日目辺りから胸に違和感を感じるようになりました。ここ1年程は目立った症状が出てなかったのですが、どうやら、薬を飲まないとダメな体である事は変わらないようです。

とは言え、違和感程度の事ですし、自宅に戻る日も近いので放置してました。

そして、いよいよ帰省先から戻ろうという日、荷物を整理していると、カバンから降圧剤を発見。・・・やはり、忘れた訳ではなかったようです。真剣に探しても出て来なかったものが、今さら出て来られてもねぇ。

■ 仕事先で悶絶

帰省先から帰って数日、降圧剤も飲み始めて、順調に日々を過ごしていたのですが、仕事先で集中してプログラミングをしていた所、突然、胸が苦しくなってきました。なってきたってレベルじゃなく、ぶっちゃけ、死の恐怖を感じるレベルだったりします。

胸は苦しく、肩の当たりに寒気のようなモノを感じます。椅子に座っていると、余計に苦しいので立つ事にしました。とにかく、血圧を下げないと行けないということで、深呼吸、深呼吸。

とりあえず、15分程おとなしくしていたら激しい症状は収まってくれました。

■ それから

病院へ行くのが正しいのでしょうが、気が進まない(面倒な)ので無しです。早退させてもらおうとも思ったのですが、一人暮らしの身なので、自宅に帰ってから何かが起きても助けてくれる人は居ません。

結局、定時までスロー運転で仕事をする事にしました。それにしても、ここ1年程は、ずっと体の調子がよかったので、少しショックです。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

日清のどん兵衛「生うどん食感」は日清のうどんだった

■ タイトル

タイトルが何を言っているやらって感じですが、食べてみた感想がこれだったのです。

生うどんと言えば、マルちゃんがラーメンで人気になった「なんたら正麺」の勢いをうどんにまで持ち込んでいた訳ですが、他のメーカーも黙ってはいないようです。
日清の生うどん1

中身は、麺と液体つゆだけのシンプルな構成です。
日清の生うどん2

日清の生うどん3

5分程茹でた結果がこれ。
日清の生うどん4

寂しいので、ネギと卵を追加しました。
日清の生うどん5

んで、食べた感想がタイトル通りだった訳です。つまり、昔から存在しているカップラーメンの味がするのですよ。
麺は、確かに生麺に近い感じで、コシがあっていい感じです。最近、インスタントのうどんも美味しくなってきて、うどん好きには嬉しい限りです。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

手抜き弁当、ふりかけが便利です

■ 手抜き弁当

前にも書いた気がしますが、会社に来る弁当屋の弁当が量が多すぎて、ちょっとキツい(量も、お腹の脂肪って意味でも)。

そこで、自分で弁当を作っているのですが、色々とコストパフォーマンスを追求した結果、冷凍総菜と味付け御飯の組み合わせで落ち着いていました。

んで、ふと思ったのですが、この味付け御飯の部分を白米にして、ふりかけを用意した方が楽ではないかと思いつきました。っていうか、前々から考えていたのですが、何となく気が向かなくて・・・

■ 丸美屋のわさびふりかけ

ふりかけは、会社に置きっぱなしにしたかったので、袋でなく瓶とかに入ったヤツが良かったのですが、瓶入りのふりかけって全然見当たらない。

唯一見つけたのが、丸美屋の「わさびふりかけ」でした。
わさびふりかけ1

ってことで、使っていたのですが、思ったよりも具合が良いのです。今まで炊き込みご飯やチャーハンを作っていた手間が無くなったのは、とっても大きいです。

ただ、このふりかけ、辛すぎです。昼食の度に涙目になってるって何か問題を感じます。使い切ったら、中身だけ別のふりかけに移してやろうかな。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

SSL-VPNで接続していたシステムに接続できない!

■ SSL-VPN

私の勤め先では、お出かけ中にiPadやiPhoneからメールを確認できるように、SSL-VPNを使用して社内のシステムにアクセス出来るようにしています。

ある日、利用者の方からメール(正確にはグループウェア)が見れなくなったと連絡が来ました。最初は使い方が悪いのかと思って問診をしていたのですが、そうこうしている内に、他の人(数名)からも問い合わせが来るようになりました。

これは、システム側の問題のようですね。

■ 切り分け

まず、障害の起点になっているのは何処かを確認しないとダメですね。

このグループウェアですが、社内LANから接続するのもモバイルから接続するのも同じサーバーに接続しに行きます。そこで、社内LANに接続したパソコンからグループウェアに接続してみます。すると特に問題なく使用出来ます。

グループウェア自体は生きているようですね。

次はモバイル側です。まず、インターネットに接続出来るのかを確認(適当なサイトを表示)。次に、VPNのクライアント(Cisco AnyConect)を一度切断して、再接続。ここまでは、問題なく動作しました。
(念のため、証明書の有効期限などの属性も確認しておきました)

次に、グループウェアに接続してみます。グループウェアへの接続は専用のアプリを使って行うのですが、こちらの方は上手くいきません。

モバイルからの接続回線は、LTE or 3Gです。今度はそこを疑って、WiMaxのモバイルルーターを使用して接続してみたのですが、結果は変わりません。

このグループウェアですが、専用アプリを使ってはいますが、実際にはWebシステムなのでSafariからも接続できます。上の手順をSafariから行ってみましたが、結果は変わらずです。

うーむ・・・

今度は、私のパソコンを社内LANから切断、WiMaxでインターネットを使えるようにして、AnyConnetでVPN接続を行い、グループウェアにアクセスしてみると、ここからは接続できました。

どうも、グループウェアや回線の問題っていうよりも、SSL-VPN側に問題があるような気がします。

■ 原因判明

私が上の切り分けを行っている間に、別の人が運用面の情報収集をしていたのですが、それによると、極一部の利用者は問題なくグループウェアを使用出来ているらしいのです。

なーんか嫌な気配がします。

接続出来る端末を確認させてもらうと、グループウェアへの接続がIPアドレスで行うようになっています。念のため、接続出来なかったiPadの接続先をサーバー名からIPアドレスに変更すると、接続出来るようになりました。

・・・あぁ、名前解決が出来ていないのね。

■ 障害の発生原因

実は、この障害が発生した時に、社内の情報系サーバーの移行作業を行っていて、名前解決を行うDNSサーバーが新旧で共存している状態だったのです。

障害発生時点では、SSL-VPNサーバーは、古い方のDNSサーバーを参照していたのですが、ある人がファイアウォール上に残っていた旧DNSサーバーへのルートを塞いでしまったため、名前解決が出来ずに障害が発生してしまったようなのです。

本来の作業手順では、SSL-VPNサーバーが参照しているDNSサーバーを変更したタイミングで、ファイアウォールの設定も変更するのが正しい手順だったのが、色々と手違いがあったようなのです。

■ SSL-VPNの名前解決

SSL-VPNの名前解決ってどこでやっているんだろうと不思議に思っていたのですが、どうやらSSL-VPNのクライアントソフト側で行っているようです。

CiscoのAnyConnectから確認する場合、AnyConnectの「診断」→「システム情報」から、表示された画面のDNSって項目に、使用しているDNSサーバのIPアドレスが表示されるようです。

・・・この確認をした時に気付いたのですが、iPadとiPodで画面の表示がちょっと違いました。iPadの場合、「診断」ってメニューは画面に右上にあるのですが、iPodの場合、画面の下の部分に表示されています。

同じiOS用のアプリの筈ですが、ソフト側で端末に合わせて表示する内容を変更してるんでしょうかね?

■ 愚痴

そもそも、SSL-VPNの関係って別の人が担当(障害発生時は不在)だったので、私の手元にあまり情報が無かったのが苦戦した理由の一つだったりします。

腹立たしい事に、その人って作業をベンダーに丸投げするタイプでして、自社内にまともな資料が残ってないんですよ。完全にベンダーに囲い込まれてる状態ですね。

普段はそれでも良いのですが、今回のように障害が発生した時に困る訳です(まぁ、他にも色々と困るのですが)。

かといって、そういう話をすると嫌な顔して逃げ出すので、もうどうしたものかと。本当は仕事を取り上げてやりたいんですが、私も基幹系の対応で手一杯なので、そこまでの余裕が無いし・・・

なかなか、上手くいかないものです。

投稿記事の一覧:http://harikofu.web.fc2.com/


--- blog end ---



スポンサードリンク

PageTop

ちふれ(CHIFURE)なる化粧品でレーザー脱毛に備えてみた

■ レーザーと乾燥肌

レーザー脱毛を続けている(医療レーザー脱毛で髭を薄くしてみた(希望))のですが、これがなかなか痛いのです。

耐えるしか無いと思っていたのですが、なんでも肌が乾燥していると痛みが強くなるらしく、化粧水を使って肌に湿り気を与えれば痛みが軽減できると話を聞きました。

男が化粧水ってのには若干の抵抗があるのですが、まぁ、試して見ようかと。

■ ちふれ

という事で、近所のドラッグストアで安い化粧水を買ってみました。
化粧水「ちふれ」1

化粧水「ちふれ」2

化粧水「ちふれ」3

正直、化粧品の良し悪しなどさっぱり分らないので、適当に選んじゃいました。っていうか、化粧品コーナー独特な男性お断りみたいな雰囲気に堪えかねまして...

んで、使ってみたのですが、正直、効果は良く分りません。何というか、目に見える程の違いが感じられないっていうか。レーザーも受けてみたのですが、やはり痛いものは痛い。

もしかすると、意識しない程度のレベルで効果が出ているのかもしれませんが、誤差の範囲な気がします。

乾燥肌の対策としては良いのかもしれませんが、対レーザーの防護用としては力不足ですかね(そういう用途じゃないので、当然ですが)。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

新しいパジャマとスリッパが気持ちいいです

■ 衣服

あんまりファッションなるものに気を使う方ではなく、一度買ったものが着れる間は買い替えないタイプだったりします。それでも外出着については清潔に見えるように気を付けて、ボロボロにならない内に買ってたりもするんですが、室内着については、本当に着れる内はずっと使っていました。

なのですが、流石にボロボロになりすぎて、新規購入する事になりました。
・・・ボタンが取れた位なら縫うのですが、もうどうしようもないくらいボロボロになってまして。そこまで辛抱する理由も無いんですよね。

■ パジャマとスリッパ

と言う事で、パジャマとスリッパ(こっちはついで)を買いました。

パジャマはイオン、スリッパはAvail。
パジャマとスリッパ1

パジャマとスリッパ2

パジャマとスリッパ3

そんな高いものを買った訳ではないのですが、これが思いのほか具合が良いのです。

パジャマはフカフカしていて肌触りが良く、暖かい。スリッパも暖かいし、歩く時の防音(下の階の住人に、歩くのが五月蝿いと言われた)にもなってます。

これまで、衣服なんて気にかけてなかったのですが、少し考え方が変わりました。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

本日の一杯(ツブの刺身美味しいです)

■ ツマミはお刺身

ここ最近、あんまりお酒を飲んでいなかったのですが、ふと日本酒が飲みたくなりまして、スーパーでおつまみを物色していたのですが、珍しくツブのお刺身が売っていました。

ツブのお刺身自体は時々見るのですが、大量に入っているのは初めてです。私は貝類のコリコリした食感が好きなので、即買いです。

■ 盛りつけ

流石にツブだけだと寂しいので、適当に揃えて皿に移しました。
つぶのお刺身1

手前にあるのが、ツブとあじ(だったかな?)の刺身、イカの三升漬け、奥のは付け合わせの大根、そば。後は、家にあった日本酒(山廃純米酒 飛良泉)ですね。

紙皿だったり、コップが日本酒用でなかったりとツッコミどころ満載なのですが、酔えばどうでも良くなるので、これはこれで良いのですよ。

肝心のツブの刺身をアップで一枚。
つぶのお刺身2

とっても美味しかったです!

締めは、卵掛け御飯とみそ汁です。
つぶのお刺身3

■ 後書き

30を過ぎた辺りから収入が良くなってきて余裕が出てきました。若い頃は如何に安く済ませるかに頭を悩ませたものですが、最近では高価なものでも躊躇い無く購入してしまいます。

ツブの刺身も、これだけの量があると当然1000円オーバーでして、昔なら諦めるか、夕方に半額になる事に賭けた筈です。これが、良い事なのか、悪い事なのか、ちょっと考えちゃいます。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---

スポンサードリンク

PageTop

画像のクリックでラジオボタンを変更してみた(HTML & javaScript)

■ やりたいこと

前に、ラベルのクリックでラジオボタンを選択する方法(HTMLでチェックボックスとラジオボタンをラベルで選択してみた)を書いたのですが、今度は画像(jpg)をクリックすることでラジオボタンを選択できるようにしたくなりました。

こんな感じの表があったとして、①~④の何れかをクリックすると、その左のラジオボタンが選択されるようにしたいのです。
HTMLでradioを画像で変更1

③をクリックすると、上から3番目のラジオボタンが選択されるってことですね。
HTMLでradioを画像で変更2

最初、IMGタグをLABELで囲ってみたのですが、動きません。
...まぁ、当然ですよね。

■ onClickイベント

ここは素直に、IMGタグにonClickイベントを設定します。

こんな感じですかね?

<HTML>
<HEAD>
<SCRIPT type="text/javascript">
function selectIndexImg(chkimg) {
document.all.selectIndex[chkimg].checked = true;
}
</SCRIPT>
</HEAD>
<BODY>

<TABLE border="1" cellspacing="0">
<TR>
<TD>
<INPUT type="radio" name="selectIndex" value="0">
</TD>
<TD>
<IMG src="./数字丸 (0).JPG" onClick="JavaScript:selectIndexImg(0);">
</TD>
</TR>
<TR>
<TD>
<INPUT type="radio" name="selectIndex" value="1">
</TD>
<TD>
<IMG src="./数字丸 (1).JPG" onClick="JavaScript:selectIndexImg(1);">
</TD>
</TR>
<TR>
<TD>
<INPUT type="radio" name="selectIndex" value="2">
</TD>
<TD>
<IMG src="./数字丸 (2).JPG" onClick="JavaScript:selectIndexImg(2);">
</TD>
</TR>
<TR>
<TD>
<INPUT type="radio" name="selectIndex" value="3">
</TD>
<TD>
<IMG src="./数字丸 (3).JPG" onClick="JavaScript:selectIndexImg(3);">
</TD>
</TR>
</TABLE>
</BODY>
</HTML>


まず、radioの名前を全てselectIndexにします。

JavaScriptでselectIndexImgってメソッドを作っておきます。
こいつは、渡された引数の値をselectIndexのインデックスとして使用。選択状態にします。

後は、IMGタグのonClickイベントで、JavaScript「selectIndexImg」に選択したいradioのインデックスを渡してやれば完成です。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

黄桜「ふくのひれ酒」、熱燗おいしいです

■ 熱燗

冬は雪や寒さが嫌なのですが、熱燗が美味しいので待ち遠しかったりもします。ただ、熱燗って用意するのが面倒なんですよね。

ってことで、電子レンジで作れるお酒を用意しました。
黄桜のふくひれ酒1

裏面を見ると、耐熱コップに入っている日本酒にふくひれを入れて、電子レンジでチンすれば良いらしいです。
黄桜のふくひれ酒2

■ チン

準備すると、こうなりました。
黄桜のふくひれ酒3

ふくひれ、上に浮かんだままで沈みません。ちょっと突っついて見たのですが、どうにもならなかったので、このまま、電子レンジでチンします。
黄桜のふくひれ酒4

ところで、電子レンジって写真を撮ると反射するんですね。私の姿&家の中の様子が丸見えになって、少し加工する羽目になっちゃいました。

なんにせよ、完成です。
黄桜のふくひれ酒5

ふくひれのちょっと焦げっぽい味と合わさって、美味しかったです。

・・・ふくひれ、結局、最後まで浮かんだままだったのが気になりますけどね。

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

おでんが大惨事!

帰宅途中のコンビニでおでんを衝動買いしたのですが、これが大失敗。私は徒歩通勤で40分くらい歩くのですが、その中間地点くらいで買っちゃったのです。もっと自宅に近い場所にコンビニはあるのに、何をやっているやら。

そして、途中で手を滑らせて、おでん落下!

明らかに、袋の中で何かが起きているのですが、外見は特に変わらず、外におでん汁が漏れていないようなので、そのまま持って帰ったのですが、自宅で袋から出すと・・・
おでんが大惨事

パックリと容器が割れて、汁はビニール袋の中に溜まっていました。さらに、寒さが厳しい中を運んできたためすっかり冷めてしまっています。

・・・なんだか、どっと疲れました。


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

proxy.pac(プロキシパック)対応 No.11 追記

■ 最終回

これまでも、プロキシパックを修正する事はあったのですが、既存のif文とかを参考にして何となく書いていただけでした。

今回、プロキシパックとはどういったものなのかを真剣に勉強した結果、今まで何となくやっていたことが見えるようになったのは大きな成果かなと。

まぁ、このブログも含めて結構な時間を費やしたので、費用対効果(コストパフォーマンス)で考えるとどうかとは思ってたりしますが。

では、最後に少しだけ追記をさせてもらいます。

■ ローカルテスト環境

このシリーズでは、ローカルにテスト環境を作るためにIISを使ったのですが、こんな手間を掛けなくても、直接ファイルを参照する方法もあります。ありますというか、記事を書き終えた時に気付きました。

例えば、Dドライブにproxy.pacを配置した場合、自動構成スクリプトに「file://D:\proxy.pac」って感じで記述すれば良いのです。
proxypacのローカル設置

.......いや、ねぇ、うん、あれですよ、IISを立ち上げる勉強になったって思いましょう。

■ 障害対策

プロキシサーバーで運用系と待機系って構築は勿体ないのでしないと思いますが、負荷分散の為に、複数台のプロキシサーバーを使用している事はあると思います(.....羨ましいなぁ)。

そんな時には、こういった書き方ができるらしいです。

return "PROXY 192.168.1.100:80; PROXY 192.168.1.200:80";


戻値のプロキシサーバーの指定をセミコロンで区切って複数指定しているだけです。
通常は先頭のプロキシサーバーを使用、使えない場合は二番目を使用って事らしいです。

自分の環境で、先頭に存在しないIPアドレスを指定し、二番目にプロキシサーバーのアドレスを設定して試してみました。すると、ブラウザ起動時に白い画面になってもたついたのですが、暫くすると指定したページが表示されました。

使う、使わないはケースバイケースですかね。

この手の冗長構成で良く聞くのが、運用面で死活監視が機能していないため、障害の発生に誰も気づかずに待機系(あるいは片肺)でのみ実行。さらに待機系で障害発生。

もうね。アホかと。

■ 終わりに

proxy.pacの修正にあたって色々調べたのですが、なかなか思うような情報が見つかりませんでした。proxy.pacの書き方については、そこそこ見つかります。関数の使い方、戻値の意味、冗長構成の書き方って感じですね。

しかし、テスト環境、デバッグの方法まで含めた、一連の作成方法ってなると、これがなかなか見当たらないのです。

業を煮やして、自力で何とかした履歴が、今回のシリーズになります。
そういった関係で、簡単に見つかった関数の使い方よりも、環境の構築、デバッグ方法、なんかがメインになっていますし、あえて冗長な書き方もしています。

実際、大した内容じゃないし、間違いもあるかと思いますが、この記事が誰かの役に立ってくれれば嬉しいです。

以上


シリーズの一覧

proxy.pac(プロキシパック)対応 No.1 始まり
proxy.pac(プロキシパック)対応 No.2 WEBサーバー(IIS) WindowsXP
proxy.pac(プロキシパック)対応 No.3 WEBサーバー(IIS)他端末アクセス
proxy.pac(プロキシパック)対応 No.4 WEBサーバー(IIS)Windows7
proxy.pac(プロキシパック)対応 No.5 WEBサーバー(IIS)Windows7 マネージャの表示
proxy.pac(プロキシパック)対応 No.6 WEBサーバー(IIS)Windows7 ファイアウォールと管理コンソール
proxy.pac(プロキシパック)対応 No.7 pac作成(概要)
proxy.pac(プロキシパック)対応 No.8 pac作成(デバッグ)
proxy.pac(プロキシパック)対応 No.9 pac作成(基本)
proxy.pac(プロキシパック)対応 No.10 pac作成(DNS)
proxy.pac(プロキシパック)対応 No.11 追記


投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---



スポンサードリンク

PageTop

proxy.pac(プロキシパック)対応 No.10 pac作成(DNS)

■ DNS

前回(proxy.pac(プロキシパック)対応 No.9 pac作成(基本))の最後に書いた通り、今回はDNSを利用する関数を使ってみます。

紹介するのは、名前解決ができる事を確認するisResolvable関数、実際に名前解決をするdnsResolve関数、IPアドレスとサブネットのパターンマッチングをするisInNet関数の3つです。

■ 名前解決

isResolvable関数、dnsResolve関数は、共にホスト名を引数として受け取り、名前解決の成否、又は、名前解決の結果(IPアドレス)を返却する関数です。

下記の処理を記述して、動作を確認しました。

function FindProxyForURL(url, host) {

if (isResolvable(host)) {
alert('EXISTS dnsResolve(host)=[' + dnsResolve(host) + ']');
} else {
alert('NOT EXISTS dnsResolve(host)=[' + dnsResolve(host) + ']');
}

return "DIRECT";
}


isResolvable関数は、名前解決ができれば真(True)、できなければ偽(False)を返却します。
名前解決っていうか、IPアドレスが取得できるかっていう判断方法らしく、引数のhostがIPアドレスだった場合も真(True)になります。当然、hostsファイルで名前解決出来ても真(True)になったりします。

dnsResolve関数も似たようなもので、返すのがIPアドレスになるだけです。

一見便利なんですが、クライアントやDNSサーバーの設定によって動作が変わる点が気持ち悪いです。

例として、それまでは社外への名前解決(yahoo.co.jpとか)を出来なくしていたとします。
この場合、通常のインターネットの使用では、isResolvable関数は偽(False)を返すはずです。これを前提として、真(True)が返された場合は、社内システムへはプロキシサーバーを使用しない、という処理を書いていたとします。

この条件で、ある日DNSサーバーが変更され、社外のホームページに対する名前解決も出来るようになったとすると、どう動くでしょうか?

■ isInNet関数(サブネットによる切り分け)

あまり使う条件も思いつかなかったのですが、使えない訳ではなさそうです。
例えば、ある特定のセグメントの場合は直接接続するっていうのはどうでしょうか?

下記は、接続先のIPアドレスが、192.168.1で始まる場合は直接接続する方法です。

function FindProxyForURL(url, host) {

// 名前解決が出来ない場合は直接接続
if (!isResolvable(host)) {
return "DIRECT";
}

// 名前解決。IPアドレスを変数に設定。
var myIp = dnsResolve(host);

// IPアドレスが、192.168.1で始まる場合は直接接続
if (isInNet(myIp, "192.168.1.0", "255.255.255.0")) {
return "DIRECT";
}

// 上記以外の場合は、プロキシサーバーを使用する
return "PROXY 192.168.1.100:80";
}


先頭で、isResolvable関数(の否定)をすることで、名前解決できない場合は直接接続させます。
後は、IPアドレスを取得して、isInNet関数でパターンマッチングしています。

isInNet関数の構文は、isInNet(host, pattern, mask) となります。

hostは、チェックするIPアドレス。patternは、IPアドレスのパターンで、maskがpatternのマッチングをするかしないかを設定するものです。マッチすれば真(True)、しなければ偽(False)が返却されます。

まぁ、何を言っているか分らないと思うので、上のサンプルを解説してみます。

まず、hostですが。これは分ると思います。今回は変換されたIPアドレスを設定していますが、ホスト名を指定した場合は名前解決をしてIPアドレスに変換するらしいです。

一つ飛ばしてmaskですが、これはオクテット毎にマッチングをするかしないかの指定で、0はしない、255はする、となります。

上記のサンプルの場合、第1オクテット~第3オクテットのみマッチングの判定をしています。言い方を変えると、hostで指定したIPアドレスの第4オクテットの値が何であれ、真(True)が返却されることになります。

これで、マッチングする箇所(オクテット)の指定は終わりです。後は、実際にマッチングする値の指定です。これが、patternになる訳です。maskで0(マッチングしない)とした箇所は、意味が無いので無視です。まぁ、適当に0でも突っ込んでおけば良いかと。

んで、maskで255(マッチングする)とした、第1オクテット~第3オクテットには、マッチングさせたいパターンを書いておくわけです。サンプルは、「192.168.1.0」と書いているので、IPアドレスが「192.168.1」で始まる場合は真(True)、始まらない場合は偽(False)が返却される訳です。

■ 後書き

散々けなしておいてなんですが、条件によっては面白い使い方が出来そうです。もっとも、挙動が怪しいので、個人的には使いたくないですね。

このシリーズの始め(proxy.pac(プロキシパック)対応 No.1 始まり)で、proxy.pacの書き方が気に入らないって書いたのは、今回紹介した関数を大量に使用していたからです。必要性があれば良いのですが、shExpMatch関数だけで十分に書ける内容だったりして...

さて、次回、最後にちょっとした事を書いて、本シリーズは終了したいと思います。

前回:proxy.pac(プロキシパック)対応 No.9 pac作成(基本)
次回:proxy.pac(プロキシパック)対応 No.11 追記

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

proxy.pac(プロキシパック)対応 No.9 pac作成(基本)

■ 部品作り

過去8回に渡る記事により、ようやく準備が整いました。

後は、FindProxyFor関数で受取った引数の内容から、直接接続させたいURL(又はホスト名)だった場合は、"DIRECT"を返却し、それ以外の場合は、プロキシサーバーを経由させれば良いわけです。

当然、書き方はいくつか存在するので、ここから具体的に事例を書いていきます。

なお、プロキシサーバーのIPアドレスは192.168.1.100、ポート番号は80だったとします。

■ shExpMatch関数(特定の文字を含むサイト)

仮に、グループウェアサーバーのIPアドレスが192.168.1.20だったとして、このサーバーには直接接続したいとした場合、こう書くことが出来ます。

function FindProxyForURL(url, host) {

// 192.168.1.20で始まるurlは直接接続
if (shExpMatch(url, "http://192.168.1.20*")) {
return "DIRECT";
}

// 上記以外の場合は、プロキシサーバーを使用する
return "PROXY 192.168.1.100:80";
}


初登場の、shExpMatch関数を使用しました。
この関数は、第一引数の値が、第二引数のパターンに一致しているかを判断することが出来ます。

出来ますっていうか、参考にしたサイトに、そのように書いていました。
パターン、っていうのが、具体的にどのように記述すれば良いのか分らなかったのですが、「*(アスタリスク)は、0以上の文字を表す」って事は間違いないようです。

上の例では、urlが「http://192.168.1.20」で始まる場合は、直接接続になります。

実際には、ホスト名を使用した指定も必要だと思います。
IPアドレス「192.168.1.20」のホスト名が「GROUPSV」だとすると、こうなります。

function FindProxyForURL(url, host) {

// グループウェアは直接接続
if (shExpMatch(url, "http://GROUPSV*") ||
shExpMatch(url, "http://192.168.1.20*")) {
return "DIRECT";
}

// 上記以外の場合は、プロキシサーバーを使用する
return "PROXY 192.168.1.100:80";
}


■ isPlainHostName関数(ローカル端末との切り分け)

上では、shExpMatch関数を使用して、特定のアドレスは直接接続としました。
しかし、たいていの場合は、自社内のシステムについては直接接続で良いはずです。

それを実現するのが、isPlainHostName関数になります。
この関数は、引数として受けたホスト名を受取り、ローカル端末なら真(True)、違うなら偽(False)を返却します。

function FindProxyForURL(url, host) {

// ドメインが無い場合はダイレクト
if (isPlainHostName(host)) {
return "DIRECT";
}

// 上記以外の場合は、プロキシサーバーを使用する
return "PROXY 192.168.1.100:80";
}


この、isPlainHostNameって関数。何を持って真偽を判断しているのかと思ったのですが、単純に引数にピリオドを含むかどうかを見てるだけなようです。

例えば、先ほどのグループウェアに「http://GROUPSV/"」とアクセスした場合、引数hostの値は「GROUPSV」です。ピリオドを含まないので、ローカル端末、つまり真(True)を返却します。

次に、「http://192.168.1.20/」とアクセスします。アクセスする場所は同じでも、引数hostの値は「192.168.1.20」になります。
ピリオドを含むので、ローカル端末ではない、として偽(False)が返却されます。

社内のシステムには、必ずホスト名を使用してアクセスするって決まりを徹底出来るなら、これは有効ですね。なにせ、名前解決さえしっかりすれば、proxy.pacの修正をしなくても良いわけですから。

■ myIpAddress関数(自端末の状態で切り分け)

ここまでは、接続先によって処理を分ける例ですが、時には接続する端末によって動作を変更する事もあると思います。

そこで役に立つのが、自身のIPアドレスを返却するmyIpAddress関数です。

自端末のIPアドレスが「10.1.10.1」の場合、プロキシサーバーに接続しないとすると、こうなります。

function FindProxyForURL(url, host) {

if (myIpAddress() == "10.1.10.1") {
return "DIRECT";
} else {
return "PROXY 192.168.1.100:80";
}

return "DIRECT";
}


実際には、複数のプロキシサーバーがある時に、端末によって使うプロキシサーバーを切り分けるような時に使用すると思います。

myIpAddress関数と、shExpMatch関数を駆使すれば、いろいろと判断できますね。
例えば、こんな感じですか。

var myIp = myIpAddress();
if (shExpMatch(myIp, "10.1.10.*")) {
return "PROXY 192.168.1.100:80";
} else {
return "PROXY 192.168.1.200:80";
}


■ substring関数(プロトコルによる切り分け)

そもそも、インターネットへの接続のためにプロキシサーバーを使う訳ですから、使用しているプロトコルがインターネット関係の場合のみ、プロキシサーバーを使えば良いわけです。
発想としては、自社内のシステムは直接接続するっていうisPlainHostName関数と同じものですね。

面白い関数があるって訳ではなく、substring関数(文字列から指定した位置にある文字列を取得する関数)を使って力ずくで何とかします。

function FindProxyForURL(url, host) {

// プロトコルがhttp、ftp、httpsの場合はプロキシを使用
if (url.substring(0,5) == "http:" ||
url.substring(0,6) == "https:" ||
url.substring(0,4) == "ftp:") {
return "PROXY 192.168.1.100:80";
}

return "DIRECT";
}


substring関数は、開始インデックスと終了インデックス-1の範囲で文字を取得します。
ネットのプロトコルは、先頭に記述されているので、先頭から該当するプロトコルの分だけ引数urlから取得して、判定すればよいわけです。

おそらく、http、https、ftpの3つを指定しておけば、まず問題なく動作すると思います。

■ 後書き

おそらく、今回紹介した関数を組み合わせるだけで、上手く動くプロキシパックが作れると思います。

私の場合、isPlainHostName関数、shExpMatch関数、の順に実行して該当したら直接接続。それを突破したら、substring関数で指定したプロトコルだったらプロキシサーバーを使用。判定できなかった場合は、直接接続って感じで作っています。

今回は紹介しなかったのですが、DNSを使用して名前解決できたら云々っていう類の関数も存在します。しますが、使わない方が良いし、使う場合も最小限に留めた方が良いと思います。

本音では使っても問題は無いと思うのですが、若干ですが通信や処理の負荷が増大するのは確かです。ならば、あえて使う理由は無いかなと。

機能としては面白いので、次回はそのあたりの関数で遊んでみます。


前回:proxy.pac(プロキシパック)対応 No.8 pac作成(デバッグ)
次回:proxy.pac(プロキシパック)対応 No.10 pac作成(DNS)

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

proxy.pac(プロキシパック)対応 No.8 pac作成(デバッグ)

■ proxy.pacのデバッグ (debug)

長々と書いてきましたが、いよいよ当初の本題であるプロキシパックのデバッグです。

まぁ、プロキシパックに記述する内容自体は単純な内容になるので、机上で十分にデバッグ可能です。

...嘘です。そもそも可能なら、こんな要件自体がありえません。

まぁ、私の場合はデバッグというよりも、実行結果を確認したかっただけなんですがね。

■ 伝統のalert

プロキシパックの実体はjavaScript、そしてjavaScriptには伝統的なデバッグ方法としてalertというメッセージを表示する方法があります。

こいつを使えば、デバッグが可能な模様。

FindProxyForURL関数の先頭に、alertを仕込みます。メッセージだけだと寂しいので、引数として受け取ったurlとhostも表示します。

/*
* proxy.pac
*/

function FindProxyForURL(url, host) {
alert('pac start : url=[' + url + '] | host=[' + host + ']');
return "DIRECT";
}


■ プロキシパックの反映

プロキシパックは、設置した場所を参照するだけなので、サーバー(サービス)の再起動をしなくても反映します。
ただし、クライアント側のブラウザに変更したプロキシパックを読み込ませる必要があります。

この辺りは、外部スクリプトとして使用したjavaScript(jsファイル)と同じような動きをするようです。具体的に言うと、起動しているブラウザを全て終了して、再度ブラウザを起動するって手順ですね。

OSやブラウザの状態によっては、それでも反映しないことがありますが、その場合はブラウザの一時ファイルや閲覧履歴の消去を試して下さい。

■ IEの場合

さて、プロキシパックを変更した状態でIE(Ver8)を起動します。

今回は、初期表示されるページを「http://yahoo.co.jp/」にしておきました。
proxypacのdebug (0)

ふむ、無事にメッセージが表示されました。されましたが、ポップアップが何度も表示されて、正直ウザいです。

この、FindProxyForURLって関数ですが、私が思っているよりも頻繁に実行されているようで、今回のように関数の先頭にalertを仕込むと、異様な回数、メッセージが表示されてしまいました。

まぁ、if文とかを使って条件を満たした部分にalertを仕込めば良いだけなので、これはこれで良いんですがね。

■ Firefoxの場合

ポップアップがウザければ、Firefoxを使えばいいようです。
Firefoxの場合、proxy.pacからのalertは画面に表示せずに、エラーコンソールに出力されるそうです。

Firefoxを起動して、メニューバーから「ツール」→「Web 開発」→「ブラウザコンソール」を選択します。
proxypacのdebug (1)

表示された「ブラウザコンソール」画面の、「ロギング」を選択します。
表示されてたログの「PAC-alert:」で始まるのが、プロキシパックのalertで指定したメッセージになるようです。
proxypacのdebug (2)

■ 後書き

他のブラウザ(google chrome、Opera、Safari)でも試してみたのですが、プロキシパックに仕込んだalertの内容を確認することが出来ませんでした。少なくとも、IEのようにポップアップは表示されなかったです。

Firefoxのように、何らかの表示手段があるのかもしれませんが、正直どうでもよくなりましたので、ここまでにします。

なお、私はIEを使ってデバッグを行うことにしました。
Firefoxのログ表示は、腰を据えてやるには良いのですが、軽くテストしたいって場合にはログを探す手間が掛かる分だけ面倒です。


前回:proxy.pac(プロキシパック)対応 No.7 pac作成(概要)
次回:proxy.pac(プロキシパック)対応 No.9 pac作成(基本)

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---

スポンサードリンク

PageTop

proxy.pac(プロキシパック)対応 No.7 pac作成(概要)

■ proxy.pacの作成開始

前回(proxy.pac(プロキシパック)対応 No.6 WEBサーバー(IIS)Windows7 ファイアウォールと管理コンソール)までの手法で、自分の端末上でproxy.pacをテスト出来るようになりました。

...正直、思いのほか長くなりました。

ってことで、今回から実際にproxy.pacを作っていきます。

■ proxy.pacの言語

プロキシパックは、proxy.pacってファイル名で作成されていることが多いようですが、別にこの名前でなくても良いようです。私の場合は、テストって分るように「proxyTest.pac」って名前にしています。この辺りは趣味の領域ですかね。

こいつを書く為の言語は、javaScriptらしいです。なので、変数宣言にvarとかが普通に使えるし、//で単行コメント、/* */ で複数行コメントも使えます。

■ FindProxyFor関数

プロキシパックでは、FindProxyForという関数を記述します。この関数の構文はこんな感じです。


function FindProxyForURL(url, host){ ...}


FindProxyFor関数は、ブラウザがアクセスする“全てのURL”に対して実行されます。
この関数を実行することが、基本中の基本です。

■ FindProxyFor関数の引数

引数のurlはアクセスしたurlの全文で、hostはurlから取得したホスト名です。
例えば、ブラウザから「http://proxy.test/index.html」ってサイトにアクセスしたとすると、urlは「http://proxy.test/index.html」、hostは「proxy.test」になるって感じです。

hostは、urlの:// から 次の / までの間の文字って認識で良いと思います。

余談ですが、名前解決なんて洒落た事もしないようで、アクセス先のurlにIPアドレスを指定した場合は、クライアント上で名前解決(逆引き)できたとしてもhostには、url上のIPアドレスが設定されるようです。

アクセス先が「http://192.168.1.1/index.html」だった場合、hostは「192.168.1.1」になるって事ですね。

■ FindProxyFor関数の戻値

FindProxyFor関数は、戻値が肝になります。基本的には、プロキシサーバーを経由する、しないを返却する訳です。戻値は、文字列として返却します。

まず、プロキシサーバーを使用しない(直接接続)場合は、"DIRECT"と返却します。

return "DIRECT";


次に、プロキシサーバーを経由させる場合は、PROXY プロキシサーバーのホスト名(IPアドレス):ポート番号"になります。

プロキシサーバーのIPアドレスが 192.168.1.100、使用するポート番号が 80 の場合はこうなります。

return "PROXY 192.168.1.100:80";


上の例では、プロキシサーバーのIPアドレスにしましたが、クライアント上で名前解決が出来るならホスト名でも良いです。

IPアドレス「192.168.1.100」のホスト名が「PROXYSV」だった場合は、こうなります。

return "PROXY PROXYSV:80";


細かい事ですが、この名前解決はクライアントで出来ることが条件です。

上の方で、proxy.pacの実体がjavaScriptって話を書いていますが、javaScriptはサーバー側で無く、クライアント側で実行されるものです。
よって、プロキシパックを使用する全てのクライアントで、プロキシサーバーの名前解決が出来ないと駄目って事ですね。


前回:proxy.pac(プロキシパック)対応 No.6 WEBサーバー(IIS)Windows7 ファイアウォールと管理コンソール
次回:proxy.pac(プロキシパック)対応 No.8 pac作成(デバッグ)

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---


スポンサードリンク

PageTop

proxy.pac(プロキシパック)対応 No.6 WEBサーバー(IIS)Windows7 ファイアウォールと管理コンソール

■ ファイアウォール

前回(proxy.pac(プロキシパック)対応 No.5 WEBサーバー(IIS)Windows7 マネージャの表示)で、Windows7でIISを立ち上げてproxy.pacを見れるところまで出来ました。

ところが、Windowsファイアウォールが有効になっていると、自端末では見れるのですが、他端末から接続するとアクセスできません。

という事で、WindowsXPと同様に解放します。
画面を貼り付けたかったのですが、Windows7のファイアウォールが上手く動かなかったので、最後の方は文字だけです。


「スタート」→「コントロールパネル」を選択。

「システムとセキュリティ」を選択。
WEBサーバー(IIS)Win7の壁と管理ツール (0)

「Windowsファイアウォール」を選択。
WEBサーバー(IIS)Win7の壁と管理ツール (1)

「Windowsファイアウォールを介したプログラムまたは機能を許可する」を選択。
WEBサーバー(IIS)Win7の壁と管理ツール (2)

本当なら、ここで許可するサービスの一覧が出るはずなのですが、エラー画面になってどうしようもありませんでした。

画面が表示されたなら、「 World Wide Web サービス(HTTP) 」を社内に解放すれば良いはずです。

■ 管理コンソール

前回は「インターネット インフォメーション サービス (IIS) マネージャー」の起動をプログラムの検索から行いましたが、便利なようで不便です。

スタートメニューにあれば良いのですが、何故か初期状態では表示されていません。初期状態では無いってことは、ちょっと弄れば表示出来るってことでして・・・

「スタート」ボタン上で右クリック、メニューから「プロパティ」を選択します。
WEBサーバー(IIS)Win7の壁と管理ツール (3)

「[スタート]メニュー」タグから、「カスタマイズ」を選択します。
WEBサーバー(IIS)Win7の壁と管理ツール (4)

一覧から「システム管理ツール」という項目を捜し、「[すべてのプログラム]メニューと[スタート]メニューに表示する」を選択して、「OK」を選択します。
WEBサーバー(IIS)Win7の壁と管理ツール (5)

 ※ 初期値は「この項目を表示しない」
 ※ 二つ目のオプションでも別に良い。この辺りは趣味のレベル。

もう一つの画面も「OK」を押して閉じます。

これで、「インターネット インフォメーション サービス (IIS) マネージャー」をメニューから選択できるようになりました。
WEBサーバー(IIS)Win7の壁と管理ツール (6)


前回:proxy.pac(プロキシパック)対応 No.5 WEBサーバー(IIS)Windows7 マネージャの表示
次回:proxy.pac(プロキシパック)対応 No.7 pac作成(概要)

投稿記事の一覧:http://harikofu.web.fc2.com/


--- blog end ---


スポンサードリンク

PageTop