2011年1月アーカイブ

いやあ、今日も数時間を無駄にすごしてしまった。この糞忙しいのに・・・である。

今日引っかかってたのは「キャッシュ」の問題。
まあ、Web システムを開発している人は、何度かハマったことがあるんじゃなかろうか?
「ソースを直したのに相変わらず表示が変だなぁ。直し方が悪いんかなあ?」って思ってたら、単にブラウザが古い画面をキャッシュしてただけだった・・・っていうアレである。

本当にがっくりくるよな、あれは。
しかも、Firefox と InternetExplorer でキャッシュする条件が違ってたりして。
そもそも、更新日付が変わってたらキャッシュなんか見ちゃ駄目だろう?なのに、FFにしてもIEにしても、何か積極的に・・・つーか、サーバ上のコンテンツが更新されてるかどうかなんてろくすっぽ確認もせずにキャッシュ見にいくよな。鬱陶しい。
今時のブラウザは If-Modified-Since って聞かないの?

もう、インターネットの基盤だって整備が進み、回線速度だって上がってる今日この頃。「キャッシュするのが基本」って設計思想がもう間違ってないか?
つーかさあ、少なくとも If-Modified-Since は投げようよ。

実際のところ、最近のIEなんかは、どうしてもキャッシュさせたくない時は、「URL を変えてしまう」しか方法がないのだ。

例えば、不定期に更新される設定ファイルを FLASH 内から読みたい時。
設定ファイルの URL が http://exsample.com/hogehoge.txt だったとする。

ActionScript 3 で、

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache");

loader.addEventListener(Event.COMPLETE, completeReadUrlList);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorReadUrlList);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorReadUrlList);

var req:URLRequest = new URLRequest("http://exsample.com/hogehoge.txt");
req.requestHeaders.push(header);

loader.load(req);

なんて書いて、この処理を Timer で一定時間毎に実行したとしても、IE では「FLASH をリロードするまで hogehoge.txt の再読込はしない」し、Firefox ではもっと酷くて「ページキャッシュを消去してからリロードするまで再読込はしない」のだ。マジ、意味わかんねえ、酷い話だ。hogehoge.txt の更新日時は当然変わっているのに・・・だぞ。(^^;
ローカルキャッシュがあったら、If-Modified-Since を含んだ http リクエストすら投げてないってことか?

しょうがないので、こういう時は、

var req:URLRequest = new URLRequest("http://exsample.com/hogehoge.txt?a=" + (new Date).time);

みたいに URL のケツにエポックタイムとか、そういうユニークな数字等をつけて、「こいつはキャッシュされてる URL じゃないよお」とブラウザを「欺す」しかないのである。

ActionScript 3 のエポックタイムはミリ秒単位なので、例えば上記の例だと、

http://exsample.com/hogehoge.txt?a=1296452293572

みたいな URL になるね。10秒後に同じ処理をおこなうと、今度は

http://exsample.com/hogehoge.txt?a=1296452303572

という URL になる。数字のところが変わってくるので、これは別のページと判断され、ブラウザはキャッシュを使わないのだ。ちなみに、? 以降の文字列はサーバ上の環境変数としてセットされるが、テキストファイルのような固定コンテンツでは無視されるだけである。なので問題無し。

いやあ、でも、これってダミーの文字列を含んだキャッシュがローカルにどんどん作られていくので、あんま好きではないんだよな、こういうやり方。
で、何とかならんかと、色々リクエストヘッダを追加してみたり、サーバ側でラッパー CGI カマしてみたりしたんだけど・・・駄目だった(^^;無駄な時間をすごしただけだった(^^;

なんなの、もう!(怒)

ほんま、更新日付だけはちゃんとチェックしてくれよ。その上で「更新日付が古ければ」キャッシュを使ってくれよ。それって、ブラウザの最低限の仕事じゃねえのかよ!?>Firefox, InternetExplorer

昨日、祖生公民館で『若い男女(みんな)の人権意識』という教育講演会があったんだが、公民館から「子連の副会長なので、講演会の頭で『岩国市民憲章』の前唱者をしてほしい」との依頼があった。

まあ、役割なのなら仕方無いので了承。人前で文章読む程度のことには抵抗感ないしね。俺の声は親父譲りのダミ声なので、聞き取りにくかったら申し訳ないなって思ったくらいで。(笑)

しかし、市民憲章なんか制定されてたのね。

なんか、識者の人に話を聞くと、(平成大合併の後処理的意味合いもあるのか)今、市民憲章制定が全国的にブームなんだそうだ。
(岩国市の人ではないのだが)「今は役所で会議の前などに必ず市民憲章の唱和をしてますけど、3年もすればしなくなるんじゃないですかねえ」とのこと。ま、流行ものというのはそういうものだ。(^^;

で、小学校の保護者仲間とその話しをしてたら、「周東町民憲章ってのもあったよねえ。私らが学校卒業した後くらいに制定されたんじゃなかったかなあ」という話があって、「え?俺知らね」とか言ってたんだけど、昭和62年に制定されてたんだね。
その頃にはもう俺は広島の人だったし、それから20年近く広島に住んでいたので、全然知らんかったわあ。(^^;
で、役場では、会議の前とかに唱和してたって。ふーん。そうなのね。

ま、そういうことで、俺が皆の前に立ち「錦帯橋に象徴される美しいまち岩国」から始まる前文を読み、その後、まず俺が前段、それに応えて全員で後段を・・・という形で無事唱和はおこなわれたのでありました。

俺「大切にしたいもの」
全員「それは みんなの夢 みんなの命」

という感じね(笑)
ロックコンサートのコール&レスポンスみたいだな(笑)

つーことで、全文は岩国市のホームページに掲載されているので、岩国市民の方はどうぞ。:-)

http://www.city.iwakuni.yamaguchi.jp/www/contents/1293165493168/index.html

20110130_koukannkai1.JPG今日は柳井市のスポーツ少年団親子交歓会というのが柳井ウェルネスパークであったので参加した。
いや、別に参加する意思はなかったのだが(笑)、ミニ駅伝の選手になっていたので仕方無く・・・(^^;

この催しは毎年開催されているのだが、実は参加するのは初めてである。
ミニ駅伝に「親子の部」というのがあって、これはスポ少の子供2人と、親3人で1チームを作る必要があるのだが、だいたい高学年の親から埋めていくので(本当の親子でチームを組む必要はない)、今までは声がかかることはなかったのである。というか、軽く声はかかったことがあったようなのだが、嫁が「うちの旦那は無理です」と拒絶してくれていたようだ。(笑)

いやあ、何度もこのブログでも書いているが、俺は週に何日か、4kmほどのジョギングをしているのだが、それはダイエット目的であって、スピードを求めているものではないのである。そもそも、ジョギングとレースでは全然走り方が違うので、ジョギングで毎日走っている者が必ずしも良い成績を残せるとは限らないのだ。

・・・なのに、今日はアンカーなのだ・・・。しかも距離が 500m。
このくらいの距離が一番いやなのだ。全力疾走する距離でしょ?で、全力疾走出来る限界くらいの距離なのだ。厳しい。アンカーだから絶対走りに自信のあるヤツが走ってたりするし(^^;

厳しい~

・・・ま、で、結果から言おう。

20110130_koukannkai2m.JPGわがチームはドンケツであった(笑)
俺がタスキを受けた時には既に最下位で、俺も一人も抜くことが出来ず、そのまま最下位でゴールしたのである。
もう、300mくらい走ったところから足が動かず、ひょこひょこと変な走り方をしつつテープを切ったのである。
いやあ、何か、俺の前の人より明らかに最初は俺の方がペースが速く、これは絶対抜ける!と思ったのだが(事実、途中けっこう距離を縮めたのだが)、最後にはタスキを受け取った時より差が開いていた(^^; とほほ・・・
まあ、俺が抜かれて最下位になったよりは気が楽だったが、申し訳ないので、同じチームの少年、HムとHトの顔は見れなかったよ(^^;

多分、これから次男坊が卒団するまでの 3年間は、毎年出さされるんだろうなあ・・・(^^;

今後は、毎日500mを全力疾走するジョギング(とは言わんな、既に(^^;)に切り替えようかな(笑)

先週の日曜日、「柳井野球塾」と銘打たれた少年野球指導者講習会があったので出席しました。

柳井市の高校が甲子園でバンバン活躍するように、また、柳井市出身のプロ野球選手が多数誕生するように、柳井市全体の野球の実力を上げて行こう!・・・という狙いで開催された講習会です。

俺は岩国市民なんだけど、息子が柳井市のスポーツ少年団に所属しているし、今年は俺、そこの役員の一人なので、そういう縁で参加させていただきました。
いやあ、まあ、俺、まったく野球の知識がないからねえ(観戦は大好きなんだけど)。でも、今年は役員の一人として練習の手伝いもせんといかんしねえ。指導者としての知識を、少しは入れとかんとまずいしねえ・・・というのもあったので、こういう機会は大歓迎なのであります。

ということで、どういう話が聞けるのかワクワクして参加したのであります。

20110123_yakyuu1.jpg場所は中国電力柳井発電所グラウンド。ああ、あのツライ思い出のあるグランドだ。(笑)最初に柳井市長の挨拶もあり、なかなか本格的な講習会なのだな。

講師は、JFE西日本硬式野球部の監督、ヘッドコーチ、トレーナー、選手の皆さん。
柳井市内の高校、中学などで講習をされたことはあるそうだが、少年野球の指導は初めてとのこと。
でも、結果的に、俺は「ああ、講習に参加してよかった」と思った。そういう内容だった。

俺自身は野球指導者としての経験はまったくないが、子供にスポーツを教える上で、けっこう今までそういう立場に居た人たちも目から鱗なことが多かったんじゃないかなあ。

例えば、練習開始時の準備運動(ストレッチも含めて)は、非常に短時間で済ませる簡潔なものだった。
いきなりランニングから始まったが、「え?まずは柔軟しないといけないんじゃないの?」という問いには「身体を温めずにストレッチをしても意味がない」と一言。ストレッチは二種類くらい。後は何種類かのダッシュ等をおこなって終了の準備運動に「え?もっと入念にしないと駄目でしょ?」の問いに「子供にはこれで十分。本来の野球の練習に時間を使う方がいい。練習終了時のストレッチに時間をかけるべき」と説明が。
20110123_yakyuu2.jpgそのどれもが、社会人野球の現場で選手達の体調管理をしている本物のトレーナーの言葉として説得力があった。
「身体が温まってないランニング前にストレッチしても無駄。そもそもランニングで筋を痛めるような子供はいない」と言われれば、確かに、「ああ、ランニングでアキレス腱切った!」なんてあり得んよなぁ(笑)

そして、守備や打撃練習の内容も、非常に無駄を省いた理にかなったもので、素人の俺にも「ああ、なるほどね」と思わせるもので、これなら、俺でも子供たちにちゃんと指導できるかも。:-)

次は、第二回目の講習が 2/13 に開かれます。
実はこの日は母親クラブ主催のスキー旅行があったんだけど、もちろん今回は断りましたよ。ぜひとも、続きの話が聞きたいからねえ。

ちなみに、今回の講習会は柳井ゴールドスターズの方々が中心となって開催してくださいました。実行委員長を始め、スタッフとしてお世話頂いた皆さん、ありがとうございました。

flash(SWFファイル)から他のサーバ上のテキストファイルや XML ファイルなどをロードしようとすると、セキュリティエラーが発生する。いや、ま、そういう仕様なんだからしょうがないな。

[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]

こんなエラーね。

で、こんな時はテキストファイルが置いてあるサーバのドキュメントルートにクロスドメインポリシーファイルを置けばいいのだが・・・

単に、お客さんのサーバでテストをするのがどうかなっと思ったので、SWFファイルだけうちのサーバに置いてテストしてたんだけど、クロスドメインポリシーファイルを新規に作って置くよりは、素直に SWF ファイルをテキストファイルと同じサーバに置くほうが何となくよさげなのでそうする。

しかし、Flex Builder 3 使って開発してるんで、ついつい AIR アプリ作ってる気になっちゃうけど、flash の方が随分セキュリティ上の制限があって、AIR アプリのつもりで見積もっちゃうと問題だな(笑)

Flex Builder 3 で作成する flash の中で、サーバ上の画像ファイルを読み込んで表示をしたいのだが、「Action Script 3.0 逆引きクイックリファレンス」などの書籍に載っているやり方だと上手くいかない。
例えば、こんな感じ。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="initProc()"
    layout="absolute" width="420" height="250"
    borderColor="#D7DBDD" color="#000000"
    backgroundGradientAlphas="[1.0, 1.0]"
    backgroundGradientColors="[#CAC8C8, #CAC8C8]">
   
    <mx:Script>
    <![CDATA[

    import flash.net.URLRequest;
    import flash.display.*;
    import flash.events.*;

    public var gLoader:Loader    = new Loader();

    private function initProc():void {

        var url:URLRequest    = new URLRequest("http://hogehoge.jp/images/qr_code.gif");
        gLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
        gLoader.load(url);

    }

    private function loadComplete(event:Event):void {

        var loaderInfo:LoaderInfo    = event.target as LoaderInfo;
        var bitmap:Bitmap    = loaderInfo.content as Bitmap;

        addChild(bitmap);

    }

    ]]>
    </mx:Script>

</mx:Application>

しかし、これで Flex Builder 3 で swf ファイルを作成しても、エラーも出ないが画像も表示されない。
ちゃんと画像は読み込まれ、Event.COMPLETE イベントも発生しているのだが、画像は表示されないのである。なんでぇ?

Web 上でググっても、だいたい、上のようなソースで上手くいっているようである。何で上手くいかないのかは謎。
FlexBuilder で吐く flash ファイルではこの書き方は駄目・・・とかいうことなんかなあ?識者の人、是非ご教示ください。

まあ、一応、UIComponent クラスを使ったやり方で表示じたいは出来ているので、問題はないのだが、何故に定番のやり方が上手くいかないのかは気になる。

ちなみに、上手くいっているソースは以下のとおり。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="initProc()"
    layout="absolute" width="420" height="250"
    borderColor="#D7DBDD" color="#000000"
    backgroundGradientAlphas="[1.0, 1.0]"
    backgroundGradientColors="[#CAC8C8, #CAC8C8]">

    <mx:Script>
    <![CDATA[

    import flash.net.URLRequest;
    import flash.display.*;
    import flash.events.*;
    import mx.core.UIComponent;

    public var gLoader:Loader    = new Loader();

    private function initProc():void {

        var url:URLRequest    = new URLRequest("http://hogehoge.jp/images/qr_code.gif");
        gLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
        gLoader.load(url);

    }

    private function loadComplete(event:Event):void {

        var uic:UIComponent    = new UIComponent;

        uic.addChild(gLoader);
        this.addChild(uic);

    }

    ]]>
    </mx:Script>

</mx:Application>

いやぁ、ついつい同じ Flex Builder 3 で作る AIR アプリと同じ感覚で、「サーバ上の画像の表示? HTML コンポーネントを使えばすぐですよ」なんて簡単に見積もってしまったが、実際には flash 用には HTML コンポーネントなんて用意されてないし、よって UIComponent クラスなんかも使うの初めてだし・・・厳しいぃ~(^^;

WebService と通信しながら、シーケンシャルに処理したい案件があったので、

1.プロセス順(ProcIdx)に 0 をセットして、最初の WebService との通信用イベントを実行し、ProcIdx の値が更新されるまで無限ループで待つ。
(例)
ProcIdxOld  = ProcIdx;
while(ProcIdx <= ProcIdxOld) {
    // dummy
}

2.WebService との通信用イベントが終了(ResultEvent.RESULT 等)したら、ProcIdx の値を 1加算。

3.上記 2の処理で ProcIdx の値が加算されたので、1 の処理の while ループから抜けて次の処理へ・・・

という動きでシーケンシャルな処理を実現しようと思ったのだが・・・

駄目だった(^^;

どうも、1の while ループ処理が CPU を掴みっぱなしになってしまうようで、終了イベント(上記 2の処理ね)がまったく実行されないようだ。

ここで、VisualBasic なら sleep 命令を while ループの中に書いて終わりなのだが、Adobe ActionScript には sleep 命令はない。

つーことで、結局、Timer イベントを 500ミリ秒とかの単位で発生させ、

1.Timer イベントで、現在どこまで処理が進んでいるかチェック(プロセス番号(ProcIdx)や、そのプロセスが終了したかのフラグ(ProxEndFlg)を持ち、その値をチェックする)。前の処理が終わったら、次の処理をおこなう(WebService との通信用イベントを実行)。その際、ProcIdx を 1加算。

2.WebServer との通信用イベントが終了(ResultEvent.RESULT 等)したら、ProcEndFlg に 1(終了の意味)をセット。

3.Timer イベントで、現在どこまで処理が進んでいるかチェック。前の処理が終わったら、次の処理をおこなう(WebService との通信用イベントを実行)。その際、ProcIdx を 1加算。

・・・これが、全ての WebService との通信処理が終わるまで延々続く・・・

というプログラムを書かなきゃ駄目。
Timer イベント内で、処理がどこまで進んでいるかチェックする分だけプログラムは複雑になる。

まあ、sleep が無いのはイベント駆動型プログラミングとしては正当なのかもしれないが、やっぱ sleep あると便利だなあという思いは捨てきれない、お茶目で巨根な俺なのである。

ああ・・・面倒くせえ。(^^;

今頃年末の話ですまん。(^^;

12/28の仕事納めの日は、二十数年前、俺が教育係をした後輩が広島に帰ってくるってことだったので、お客さんからの納会のお誘いも遠慮して(実際には、昨年酔っぱらって色々粗相をしたので自粛したのだが(笑))、夕方広島駅で落ち合った。

20101228_kudako1.JPGこの後輩、仮にジェイソンと呼ぼう。このジェイソンが・・・いや、ジェイソンって打つのめんどくせえ。J谷でええやろ、J谷で。(笑)
そのJ谷は、後輩の中でも優秀な男で、今は仲間達と会社を新たに立ち上げ(まあこのご時世なので楽ではないだろうが)頑張っている。まあ、その辺、同じく独立して仕事してる俺としても色々情報交換したい思いもあったしな。

しかし、J谷、茶髪やんか!?やっぱ大阪で仕事してるヤツは違うのお。んで、散々俺の白髪頭を笑いやがって。(^^;

で、J谷に会うのも久しぶりだったんで、店も久しぶりなところに入ってみた。

幟町の「クダコ」である。

以前務めていた会社が橋本町にあったので、その頃は飲み仲間だった会社の後輩のバセあたりと通ったもんだったが、会社を辞めてからは一度も行ったことが無かった。
実に 6年振り。(笑)

あの頃はいつも人が一杯で、年末なんか予約しないと席がないような感じだったけど、この日はカウンターががら空きだった。まあ、チェーン店の居酒屋なんかと比べると、ちょっと単価は高いから、このご時世には仕方ないんかな。実際、この後、元会社の先輩と話をしたとき、「クダコは高いから全然行ってない」とか言ってたな。

つーことで、中年男二人でカウンターに座り、近況報告などし合ったのであります。

いやあ、だが、J谷なんかは結構種まきしてるみたいなんで、今年、来年あたりの展開が面白そうやね。
俺んところは、食うために毎日汲々で、なかなか種まき(お客さんへの提案)が出来てないよ。まあ、J谷が言うとおり、若いヤツを雇って俺は企画・営業に専念するのが王道なんだろうけど、やっぱ、俺的には他人の人生を左右する立場はやだなあと言うのがあって、なかなか若いヤツの新規雇用には二の足踏んじゃう(^^;

ま、色々考えていかんといかんのだけどな。

20101228_kudako3.JPGしかし、俺らも歳を取ったということか。ほんの数年前まで、こうして酒飲んで話すことといえば、プログラム言語のことやソフトウェアツールのことだったが、今じゃ会社経営の話だもんな。(笑)

そんな話をしながら、この日食ったのは、カンパチとホタテの刺身、牛モツの唐揚げ、牡蠣のニンニクバター炒め、そしてこれを忘れちゃいけない乾物5種。スルメや鰯などの乾物を、自分でミニ七輪でチリチリ焼きながら食い、そして飲む。幸せ~

結局、酒の方はビールと麦焼酎(兼八)のみ。日本酒もいっちゃおうかなと思ってたところで、俺とJ谷の元先輩のK裂さんから電話があったのでここでお開き。
これで一人 5千円くらい。確かに、安いチェーン店の居酒屋だったら、量的には一人 3千円くらいで済みそうな感じだが、まあ、質が違うけんね。(笑)

ところで、随分久しぶりに大将に会ったんだが、大きな病気をしたようで、ちょっとやつれてたね。
「随分久しぶりですねえ~」って言うから「5年ぶりくらいだよ~」なんて話をしていたんだが、この間また行ったら、「随分久しぶりですねえ~」ってまた言われたよ。(^^;
忘れてんじゃん!年末に飲んだことを!(笑)

ま、今度は何年も空けずにまた飲みにいきます(^^;

以前書いた、「AIRアプリでZIPファイルを解凍してみる」の続き。

FZip というフリーの zip ファイル操作用ライブラリを使って、AIR アプリで zip ファイルを解凍するという話で、実際、Windows 上では問題なく動いてたんだけど・・・

その AIR アプリを、Mac OS X 10.5 のマシンにインストールして使うと、全然 zip ファイルが解凍されない。

Flex Builder 上でデバッグしてみると、どうも、IOErrorEvent が発生してる。
エラーメッセージを出力してみると(trace("ERROR=" + evt.text);で)、

Error #2032: Stream Error. URL:app:/Users/shinoda/Library/Preferences/hogehogeApp/Local%20Store/data/cont/ds.zip

だって。

う~む・・・
パスは合ってると思うがなあ・・・頭に app: とか付いてるのが問題なのか?でも、こりゃ Flex が勝手に付けてるだけだからなあ。どうしようもないし。

結局、zip ファイル名を URLRequest の url プロパティに渡すところで、

Fzip = new FZip();

var request:URLRequest = new URLRequest();
var file:File = File.applicationStorageDirectory.resolvePath(ZipFileName);
request.url = file.nativePath;
~以下略

この、file.nativePath file.url にしてやったら、IOErrorEvent は発生しないようになり、Mac OS X の上でも AIR アプリで zip 解凍をおこなうことが出来た。

ちなみに、file.url の場合、実際には "app-storage:/data/cont/ds.zip" という値が渡される。

まあ、Windows でも Mac でも同じように使いたいなら、出来るだけ native なんて付いてるプロパティは使うなってことですな(^^;

HTMLコンポーネントでも、HTMLLoaderクラスでも表示は一緒」に書いたように、AIR アプリのHTMLコンポーネントでインターネット上のWebページを表示した時に、外部CSSファイルや画像ファイルを一切読み込まない(つまり、URLで指定したHTMLだけ読み込んでお終い)という状況が発生していた。

「なんやねん!こんなしょぼい仕様なんかい!?」と怒っていたのだが、原因は俺だった。ごめん・・・Adobe社。

結局、原因は「URLの最後に改行コードがついていた」からであった。

テキストファイルから URL を読み込んで、それをHTMLコンポーネントのlocationプロパティにセットするのだが、末尾の改行コードをとりわすれてた。

なので、

url  = (url.split("\r")).join("");
url  = (url.split("\n")).join("");

web.location   = url;

という具合に、locationプロパティにセットする前に CR/LF コードを削除するようにしてやればバッチリであった。

URL の後ろに改行コードが入ってると、怪しいURLと判断して、そこからのリンクを全部無視してしまうとか、そういう仕様なのかね?

URL の後ろに改行コードが入ってると、「外部の画像ファイルやCSSファイル等を一切読み込まない。その代わり、ローカルディスク上にある画像であれば表示できる」という動きをする。ローカルディスク上の画像ファイルは読み込めるということは、やっぱセキュリティ上の制限をかけてるのかなあ・・・

ま、単純に Flex にバグがあって、予想外の動きをしているという可能性も捨てきれんがなあ(笑)

酒飲んで通津駅に放置してた車を取りに行くのに、自転車じゃ寒いんで嫁さんの車を出動させたんだが、まあ、そのタクシー代金(?)代わりに、昼飯は俺のおごりで南岩国の方で食って帰ろうぜってことになった。

20110119_donto2.JPGで、嫁さんが選んだのがパルティフジ南岩国店のよこにある和食レストラン「どんと」。パルティフジと同じフジ系列のレストランね。
「最近、こういう色々なメニューがあるところで、あまり食べる機会がないから」と。
そう言えば、最近は外食と言うと「焼肉」「ラーメン」「回転寿司」のヘビーローテーションだな。もの凄くたまにファミレス入るけど。ま、そもそも、家族で外食の機会も少ないし(^^;

・・・てことで「どんと」に入店。まだ12時前だったので、お客さんの数は二、三組。奥の座敷は俺たちだけだった。
で、「何でも良いからユーの好きなものを頼みなよ」って言うと(いや、こんなジャニーさんみたいなしゃべり方はしないのだが)、嫁が頼んだのは「花かご膳」だった。1,449円もするのか・・・ま、いいけど。(^^;

20110119_donto3.JPG俺は、「海鮮ちゃんぽんうどんランチ」787円をチョイス。後は娘のお子様セット。

「花かご膳」は、なかなか見た目も楽しませてくれて、まあ、1,449円払っても良いかな・・・という感じだったのだが、「海鮮ちゃんぽんうどんランチ」は微妙だったなあ。(^^;

まず、具が思ったよりは少なかったなあ。もう少しボリュームがあると良いんだけど。
ゲソには少し臭みもあったね。
味はまあ合格点だと思う。ただ、ウマウマって言うほどではない。一応、魚介の出汁の味はしっかりするんだけど、単純な、深みの無い味というか・・・ただ、水っぽさは無いので、ぎりぎり合格点って感じ?(と言いながら最後まで飲み干したが(笑))
麺はうどんとしてはちょっと細い。讃岐うどんのようなコシは無いけど、ブツブツ切れてしまうようなこともなく、まあ、これもギリギリ合格点。(上から目線ですまん(^^;)

20110119_donto1.JPGただ、メニューみてると、これ、単体でもランチと同じ値段するんだよね。
ランチのうどんと何か違うんかなあ?同じものに見えるけど。
このうどんに、700円オーバーの値段はないわ。(^^;もし、単体で 750円とかするんだったら絶対頼まないね、これ。600円なら頼むけど・・・という微妙な評価。

で、おにぎりが駄目だったわ。
つーか、最近はどこの店で食べてもこんなおにぎりが出てくるよなあ。「どんと」だけの問題ではなく。

・・・塩気が決定的に足り無いのである。
なので、ほとんど味がしない。
おにぎりに入っている鮭のほぐし身や胡麻もあんま風味が無いしね。これでも、もう少し塩が効いていれば美味かったんだろうが・・・これはねえ・・・(^^;;

この間、丸味で美味いおにぎり食べたばかりなので、よりそう感じるな(^^;

でも、ま、ファミリー狙いの和食レストランなんでこんなもんか。このての店の中では、味は良いほうだと思うけどねえ。

20110118_hanamaru2.JPG最近、讃岐うどんチェーン店の躍進ぶりが凄いよね。つーても、主に丸亀製麺だけどね。
はなまるの方が香川で設立された分だけ「本物」っぽい感じはするのだが、まあ、商売下手の吉野家の子会社になったのが運の尽きか・・・(^^;

ということで(何が「ということ」なのかわからないが)今週の頭に広島で打合せをした時は、立町のはなまるうどんで昼飯を食ったのである。

食べたのは「肉汁つけ麺」680円也である。ちなみに、麺の量が小と中があるが、どちらでも値段は一緒なのでもちろんデブとしては中を注文。:-P

つけ汁は、ちょっと濃い目の肉うどんのスープにラー油が乗ってる感じ。
20110118_hanamaru1.JPG最近のラーメン系つけ麺のつけ汁と一緒で、色々と具沢山。肉もけっこうたっぷり入っていて、最初は 680円という値段に「讃岐うどん系メニューにしちゃ高いんじゃないの?」」って気もしてたんだけど、内容を見たら、まあ、値段相応かなって気になった。

味の方は、肉の旨味の溶け出したうどんスープがなかなかウマウマ。で、ちゃんとピリ辛である。これって大事。大人の男が食っても、「お、意外と辛いな」と思わせる味でないと評価に値しない。

最後は、底に溜まった肉片と一緒にずずず~っとつけ汁も飲み干してごちそうさま。
麺をつけて薄くなった汁は、肉うどんスープそのもの。美味かったよ。

麺の出来は・・・う~ん、中の下って感じかなあ。これなら加ト吉の冷凍麺の方がかなり美味い。でも、まあ、十分美味しい麺でしたな。

実は、俺は丸亀製麺もはなまるも入ったことなかったんだよねえ。(笑)
美味い、美味いとは聞くんだけど、どうもチェーン店を低く見てしまって、変な味のうどん出てきたらやだなあと深層心理で思ってしまうのか、なかなか入る気にならなかった。

こりゃ、丸亀製麺も行ってみんといかんね。嫁がしきりに美味いと言うてたし。

Adobe AIR アプリ内で、HTMLコンポーネントを使ってインターネット上のWebページを表示させているのだが、何か、画像ファイルの表示がうまくいかない。
ちなみに、以下のようなHTMLのWebページである。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<title>テスト</title>
<style type="text/css">
<!--
body {
    background-color: #f0f060;
    text-align:center;
    margin:0px;
    }
h1    {
    background:url(img/title-bar.jpg) repeat-x;
    text-align:center;
    margin:0px;
    }

-->
</style>

</head>

<body>
<h1>テストページ1です</h1>
<br />
これはテストページでありますよ。<br />
<br />
<img src="img/test1.jpg" alt="電気ブランとサンマの塩焼き缶" width="240" height="240" /></div>
</div>
</body>
</html>

で、HTML文自体はちゃんと解釈されているようだが、画像ファイルを受信していない(?)ようだ。
以下のような表示。ちゃんとセンター寄せされているので、CSS もちゃんと解釈されてるみたいだね。

20110121_air1.jpg

もしかして、HTMLコンポーネントは機能がしょぼしょぼで、正しくは Flash の HTMLLoaderクラスを使うべきなのかと思い試してみた。

以下のようなソース。左にHTMLコンポーネントを、右にHTMLLoaderクラスを使ったオブジェクトを配置してみた。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="initProc()"  x="0" y="20"
    layout="absolute" height="462">
    <mx:Label x="114" y="20" text="HTMLコンポーネント" fontSize="13"/>
    <mx:Label x="436" y="20" text="HTMLコントロール" fontSize="13"/>
    <mx:HTML x="28" y="50" width="295" height="390" id="web1"/>
   
    <mx:Script>
    <![CDATA[

    import flash.net.URLRequest;

    private function initProc():void {

        //------------------------------------------
        // HTML コンポーネント
        //------------------------------------------
        web1.location    = "http://www.exsample.jp/sample/003/test1.html";

        //------------------------------------------
        // HTML コントロール
        //------------------------------------------
        var url:URLRequest    = new URLRequest("http://www.exsample.jp/sample/003/test1.html");

        var web2:HTMLLoader   = new HTMLLoader();
        web2.x    = 340;
        web2.y    = 70;
        web2.width    = 295;
        web2.height   = 390;

        web2.load(url);

        this.nativeWindow.stage.addChild(web2);

    }

    ]]>
    </mx:Script>

</mx:WindowedApplication>

さあ、表示がどう違うかな・・・

・・・て、同じやーーーーーん!!!

20110121_air2.jpg

どっちでも、まったく同じように表示されましたな。
ま、落ち着いて考えれば、Webレンダリング・エンジンは「Web kit」しか組み込まれてないわけで、どっちもそれを使っているわけで・・・

つーことで、表示が変なのは俺のプログラムの問題なのだな。

そうか、そうか。そういうことだな・・・(;_;)

小中高と同じ学校に通った幼なじみが、岩国市麻里布町で「ZEST313」というバーをやっている。(未だに俺は何と読むのが正しいのか知らん(笑))
仲間内では「カネの店」と言えば済むからな。(笑)

本当ならちょくちょく顔を出したいのだが、そもそも俺が岩国市内で飲むってことが月に一、二度程度。しかも、岩徳線の時間があるので居酒屋一、二軒回ってお終いって感じが多いのでなかなか寄る機会がなくて。年に数度行ければいいかなって感じか。

一昨日は広島で飲んだので、山陽本線、岩徳線と乗り継いで帰るつもりだったのに、21:30頃に岩国に着いたら、次の岩徳線、22:24発だよ(^^;
そうか・・・21時台の岩徳線は無いのか(^^;;;嫁に電話したら「風呂上がりなので、岩国駅まで迎えに行くことは不可能である」と拒絶された。(笑)

つーことで、小一時間ほど時間が空いてしまったので、一杯やって時間をつぶそうと久しぶりに(2ヶ月ぶりくらいかなあ)ZEST313に寄ったのである。

何か甘いショートのカクテルが欲しかったのだが(疲れてるんか、俺(笑))、「30~40分の時間つぶしならロングにしとけば一杯で済むぜ」ってカネが言うので、トム・コリンズをもらってしばし談笑したのである。
つーか、いつもの如く昔話と他の友人の近況の話で盛り上がってしまい、危うく岩徳線に乗り遅れるところだったぜ。(笑)

結構酔っぱらってたのだが、中通り商店街をダッシュだったぜぇ~!(何の自慢?>俺(^^;)

あ、そうだ、カネの店に行ったら「カネフクが少年ソフトチームの監督やってる話」とかしようと思ってたのに忘れてた。(^^;
ま、それはまた今度のお楽しみにしとこう。

Adobe AIRアプリから、某WebServiceのAPIをSOAP通信で叩くのだが、APIのエンドポイントにはBasic認証がかかってる。

ということで、エンドポイントへのアクセス時にヘッダに Basic 認証用の Authorization 情報を追加してやらんといかん。

具体的には、HTTP ヘッダに、

Authorization: Basic [Base64エンコードされた user:pass]

という情報を付けてやるのだが、もちろんいちいちヘッダ文字列の編集をしなくても、WebService クラスを使ってアクセスするのであれば、httpHeaders プロパティにセットしてやればいい。

    var encoder : Base64Encoder = new mx.utils.Base64Encoder();
    encoder.encode("ID文字列:パスワード文字列");
    ws.httpHeaders = {Authorization:"Basic " + encoder.toString()};

    ws.getHogehoge("");

みたいな感じ。
URLRequest クラスでは requestHeaders だけど、WebService では httpHeaders。それに、requestHeaders は配列型だけど、httpHeaders は Object 型なんだね~)

20110117_mantoku.JPG今日は、広島で打合せをした後、岩国に帰る前にあまりに腹が減ってたので舟入幸町の「満得」へ寄った。そう、あの「悔しい店」だ(^^;

店員の接客態度がなってないし、ラーメンの写真撮影禁止だし、ティッシュも置いてないし。ほんま、ムカムカするんだけど、ラーメンが「ムチャ美味い」悔しい店なのである。(^^;

今日も、俺が店に入っても「いらっしゃいませ」の言葉ひとつ無し。
給仕のおばちゃんも、まるで不審者でも見るような目で無言である。チクショー(^^;;
ま、それでも、俺がカウンターの奥に腰を下ろすと、ちゃんと水はもってきてくれた。

で、本日は、数量限定という謳い文句に釣られて、「ピリ辛ミンチラーメン」650円也を注文したのであった。

あの、完璧な美味さを誇る熊本豚骨ラーメンに、辛味噌とミンチ肉が載っている。これを箸で崩してスープに混ぜ込んで食べるのだ。

ま、(汁有りの)担々麺みたいなもんやね。

これが、また、美味いのだ(^^;チクショー!
つーか、すげえ辛い。ちゃんと「ピリ辛」なのだ。
俺が日本の所謂「担々麺」があまり好きではないのは「辛くない」からなのである。万人向けの味付けなのか。だから、ちゃんと辛い「担々麺」に出会うと嬉しくなる。
このピリ辛ミンチラーメンは、ちゃんと辛い。何の味を足さなくても、大人の男が十分「お、辛っ!」とその味を楽しめるものに仕上がっている。

あの完璧な(ノーマルな)ラーメンと比べると、ちょっと塩味が強くて、味のバランスは若干壊れているような気がするが、いや、もう、この辛さだけで、ごーかーーーーく!

試しに、これに「二杯まで」しか入れてはいかんと注意書きのある激辛の素を一匙だけ投入してみたのだが・・・辛っ!
こりゃ、二杯も不要。一杯で十分。かなり辛くなる。いいね!

ということで、辛辛スープを最後まで飲み干し、その辛辛スープが絡みついたミンチ肉をレンゲで最後まで賤しくすくい取って、満足して俺は箸を置いたのである。うま、うま、ふっふー。

・・・ま、正直なところ、この店の普通のラーメンの方が美味いけどね(笑)

20110101_catch.JPG昨年末にも、夕方祖生グランドまで行って息子のピッチング練習に付き合ったのだが、その時、どうも何か気づいたことがあったようで、コントロールがいきなり良くなったのである。
何せ、大して球威の無いうちの息子は、コントロールくらい良くなければピッチャーとして使えんからのお。

で、せっかくのその感覚を忘れてはいかんだろう・・・と、元旦も夕方、祖生グランドへ行って練習をしたのである。

この日も、今までと比べるとかなり良い感じでストライクが決まっていたのだが、すぐに飽きてしまうのがうちの息子の駄目なところだなあ。
「感覚」を忘れないように、ひたすら投げ込んだほうが絶対良いと思うのだが、すぐに弟を一塁に立たせて牽制の練習をしてみたり、「ボール受けたら、すぐに俺の前に転がして」とか言ってバント処理の練習をしようとするのである。

そんな練習する段階じゃないでしょ?お前は。

・・・と思うのだが駄目だなあ、こいつ。家で練習してる時も、常に「さあ、1アウト、ランナー2、3塁。一打逆転のピンチです・・・」とか一人ブツブツ言いながら、いきなりクイックで投げてきたりするからなあ(^^;;
俺も野球は素人なんでよくわからんけど、今はひたすらフォームを固める段階じゃないんかい?(^^;

ちなみにこの後、俺の仕事が忙しくなったので、まったくピッチング練習に付き合ってないが、一人でやってる様子もない。
まったく、努力もせずに上手くなるスポーツなどなかろうに。

今日は平畑地区の『どんど』だった。

20110116_donndo.JPG「とんど」とか「どんと」とか「とうどう」とか地域によって色々な言い方があるが、全国各地でおこなわれている注連飾りや門松を燃やして無病息災を願う火祭りだ。ま、改めて説明するまでもないか。

上祖生地区では、俺が子供の頃には色々な部落(自治会)でおこなわれていたが、その後廃れて、今ではこの平畑地区だけとなった。つーか、平畑でもしばらく途絶えてたみたいだけどね。

聞くところによると、上祖生地区の他の自治体では夏に盆踊りをするので、平畑は時期をずらし、冬のどんど祭りを復活させたという。また、平畑地区のおっちゃんたちが、高森や旧岩国市街の店などから門松の制作を請け負っているらしく、その残骸処理としての意味も最近ではあるようだね。

ちなみに、今年は30箇所以上を請け負ったそうで、ほとんどの作業が25日のクリスマス以降に固まるようなので、班を三つくらいに分け、一つの班が一日に 4~5個の門松を作っていくそうである。
そりゃ、本格的に商売になってるやん。(ま、この時期だけだけど、地区の者で集まって酒盛りするには十分な収入じゃろう。ええのお)

ま、それはそうと、今年は昼飯を食うのも忘れて仕事してたので、嫁さんと娘を連れてどんどに行ったのは13時すぎだった。
もう、火が点いて一時間経ってたので、どんどの櫓も半分くらいは燃えてしまっている感じ。

今年はうちは門松を立てなかったので、注連飾りだけ火に投げ込んで、仕事もあるので帰ろうかと思ってたんだが、嫁のママ友のMちゃんがあれやこれやと食べ物を持ってきてくれるので、昼飯を食ってなかった俺は簡単に釣られ、結局最後のビンゴ大会まで腰を落ち着けてしまったのであった。

鶏のもも肉の山賊焼きと、猪肉の焼肉を食べたのだが、どちらも美味かったあ。
山賊焼きは、タレが良い感じだった。いろり山賊の域には達していないが(^^;かなりの美味。いろり山賊みたいに時間を掛けてしっかり焼けば、かなり近い味になるんじゃないかと。

猪肉も美味かった。
猪の肉は当たり外れがあって、固い肉とか、臭みの強い肉にあたると最悪なのだが、ちゃんと適切に処理された肉は軟らかくて、脂身も甘い。美味い。今日のどんどの猪肉は最高に美味かった。
うちの嫁さんもちゃんと猪肉を食べたのは初めてだったが、結局ひと皿ペロっと食べてたよ。

・・・と大満足だったのだが、帰りに嫁さんと「あ、寄付するの忘れてた!」と思い出した。
毎年タダで飲み食いしてるので、今年は寄付をせんとなあと嫁さんと話してたのだが、今年は俺が仕事でバタバタしてたのですっかり忘れてた(^^;

まあ、来年は必ず・・・ということでご勘弁(^^;

20110101_tozan1.JPG  20110101_tozan2.JPG  20110101_tozan3.JPG

今頃になって初日の出の話題ですまん。(^^;

今年の高照寺山早朝登山では、俺は祖生子連の役員が担当する通津峠の監視員だった。
山頂まで 2.3km地点だったかな。道が二手に分かれてて、真っ直ぐ進んで行っちゃうと通津側に降りちゃうので、そこで「こっちが山頂に向かう道ですよお」と正しい道を教えてあげる役だ。
O君、K君と三人で、ガンガンとドラム缶で火を炊いて暖を取りながらの役なのだが、2時間くらい立ちっぱなしだし、足下は凍ってるし、なかなか大変である。
朝5時に公民館集合だからな。たまらんよ(^^;

今年は年末に雪が降ったので、こりゃ今年も早朝登山は中止だな・・・と思ってたのだが、結局中止にはならず。
去年は同じような天候で中止だったのだが。ま、人によって判断は様々っちゅうことね。

ちなみに、末元のあざみ会が山頂で熱いぜんざいをふるまうのだが、残念ながらこれは中止となった。(前日に係の人が山頂まで様子を見にいって、「この雪の量なら明日は中止だな」と判断したらしい)

7時前に、最後の登山者(うちの親父だった(^^;)を見送ったら、車で山頂へ。(途中、孫に置いてけぼりにされ一人登っている親父をピックアップ(^^;)
俺は2WDのMRワゴンだったので、さすがに途中で車を捨てて、最後の 1km ばかりを親父と歩いて登った。

で、寒風吹きすさぶ山頂にて初日の出を待つ。
この日の日の出は 7:17 だったが、雲が出ていて太陽は望めず。結局、雲の隙間から太陽が顔を出したのは 7:23 だった。

適度に雲が出てる方が神々しい感じがしてグーね。

しかし、山頂はもの凄い寒さ。
雪こそ降っては無かったが、身を切られるような寒さとはこのことだ。風が当たる顔が痛い・・・(^^;

ちゅうことで、大急ぎで記念撮影をして、平成23年高照寺山元旦早朝登山は終了したのであった。

焚き火用のドラム缶や駐車場の看板を撤収しつつ下山して、公民館にて解散。
手土産にキャンディとカップ酒をもらって家路についたのであった。

ああ・・・そういえば、来年も子連の役員なので、早朝登山出ないといかんな。(^^;

先週広島に打合せに行った時に、久しぶりに昼飯を平和公園入り口の藤原ラーメンで摂った。

もろに昼飯時に行ったんだけど、入り口すぐ左のカウンターには2,3人しか座ってない。何か、客少なくね?出来たばかりの頃は客がひっきりなしだったけどなあ。そろそろ飽きられてきたか?(^^;

まあ、その辺はよくわからないけど、正直俺もここのラーメン、美味いとは思うけど、パンチにかける気がする。いや、妙に抽象的な評価で申し訳ないが。

20110111_fujiwara.JPGで、頼んだのは半チャーハンセット 780円也。
ラーメンは、しばし考えた後、塩味とんこつ+焦葱油にした。
値段は、この立地を考えると頑張ってて好感もてるな。

で、ラーメンだけど、しっかり豚骨の旨味が溶け出したスープは間違いなく美味い!ああ、塩味にしといてよかった。最近、広島の醤油豚骨にはがっかりすることが多かったんで塩味とんこつにしたんだけど正解だった。
つーか、最近、醤油豚骨の醤油臭が気になってきて、あんま触手が動かないんだけど、これってやっぱ広島を離れて 10年経って、すっかり舌が広島の味を忘れてきたんだろうか・・・(^^;

チャーハンも、もう少し量があれば嬉しいんだけど、味は問題なし。この香ばしい味は大好き。

・・・と、満足できる味なんだけど、何か、やっぱ、パンチにかけるんだよなあ(^^;
例えば、初めて「満得」のラーメンを食べた時のような「うまっ!なにこれ?」という感動がないんだよなあ。熊本豚骨ルーツの同じ系統の味だと思うけど。
焦油の風味が弱いのか、スープそのものが弱いのか、馬鹿舌の俺には判断できんけど。

ああ、そうだ。麺はちょっと残念かも。
中細の平打ち麺?(麺が楕円形してる)で、けっこう表面艶々系の麺なんだけど、これって豚骨ラーメンに合うのかなあ。妙にびよーんと伸びる、ああいう麺。
普通に真円の極細麺の方がよくね?

ま、でも、十分広島の中では「美味い方」のラーメン屋だと思うけどね。

昨日の昼メシは、嫁さんと娘は広島に行って俺一人だったので、西長野の丸味までうどんを食いに行ってきた。

20110113_marumi2.JPGいやあ、うちのお袋が「あそこのうどんは美味いから是非食え!」って以前から言うてたんだけど、丸味まで行こうとすると、絶対途中のラーメン屋とかに引き寄せられちゃって、丸味まで着けないんだよな、実際(^^;
通り過ぎてラーメンショップに行ったこともしばしば。(笑)

んが、昨日はなんとか無事に着けたよ。

昼の時間を外して、午後1時30分頃行ったんだけど、席は二つ空いてたくらい。人気店なんだねえ。ま、席の数もそんなに多くはないが。

で、うどん定食 700円也を注文。
ワカメうどんに、おにぎり2個、揚げ出し豆腐、漬物と果物が付いてる。

いやあ、美味かった。

麺が、すげえ柔らかいんだね。手打ち麺だと聞いてたんでびっくりした。なんか、手打ちっていうと、讃岐のムチャ腰のあるうどん麺を想像しちゃうんで、強く箸で挟んだらプチっと麺が切れちゃったんで驚いたよ、実際(^^;

でも、蒸し麺みたいにブツブツ切れるような麺じゃない。ちゃんと腰はあるんで引っ張るとびよーんて伸びる。大阪のうどんみたいな感じかな。
俺、嫌いじゃないよ。
20110113_marumi.JPG家ではいつも加ト吉の冷凍麺なんで、腰の強い麺がディフォなんだけど、時々、駅の立ち食いうどんとか、柔らかい麺のうどんが食いたくなるのよ。

いやあ、ほんとに、麺もスープもよかったよ。お袋がしきりに奨めるわけだ。

で、うどん以上にうまかったのが俵型のおにぎり。
最近、コンビニなんかのおにぎりに馴れた舌には、最初「うわ、しょっぺ」って思うくらいしっかり塩が効いてる味。でも、この塩が多分良い塩使ってるんだと思うんだけど、なんか旨味があってさ、すげえ美味いのよ。
マジ、このおにぎりだけ食いに行っても良いくらいだと思ったよ。

つーことで、丸味。家から車で行くと15分くらいかかるんでちょっと遠いんだけど、新たな昼飯どころキープである。むふふ。

今朝、「やっと MTOS の移行案件が終わったでぇ」とツイートしたばかりだったのに。
やっと、本来のプログラミングの作業に戻れるかと思ったのに。

昼飯食って作業場に帰ったら、「'~'とか'-'とか入れると、全部'?'になっちゃうんですけど・・・」とお客さんから電話が・・・

はぁ~Unicodeのマッピングの問題か・・・

記事入力したら'~'が'?'になっちゃうってことは、DB の問題やろぅ!?と phpMyAdmin で MTOS のテーブル見てみたら、案の定、全テーブルの照合順序が'ujis_japanese_ci'になってるやん。

入力が UTF-8 で、DB が EUC-JP なんだから、次にそれを再び UTF-8 で表示しようとすると化けるわなあ、そりゃ。
入力した内容を DB 登録した時点で(UTF-8 から EUC-JP に変換した時点で)、間違ったマッピングがおこなわれているんだからなあ。
UTF-8 → EUC-JP → UTF-8 なんて変換したら、'~'や'-'は確実に化けるわ。(これを Unicode の腐ったマッピング問題と言う(^^;)

確かに、phpMyAdmin で DB の設定を見てみると、文字関係のグローバル値が皆 ujis になってるやん・・・さくらインターネットの DB ってそうなんじゃあ・・・
しかし、日頃、直接サーバに ssh 接続して設定ファイル触ってる俺には、この phpMyAdmin しか使えない環境でどう DB の設定を変えればいいのかようわからんで。
いつも shell 画面上で mysql コマンド叩いてるから、phpMyAdmin なんて使わんしなあ。

結局、

ALTER DATABASE `hogehoge_dbl` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

と、SQL コマンドで DB の文字コードを UTF-8 に明示的に指定してやってから、再度 MTOS のインストールをしたら、ちゃんと照合順序が'utf8_general_ci'で作成されたので一安心。
'~'を入力すれば、ちゃんと'~'で表示されるようになった。

つーか MTOS って TABLE 作る時、CREATE TABLE のオプションに DEFAULT CHARSET=utf8 を付けんのんかいな(^^;

つーか、Unicode 死ね(^^;

まったく、今後はこういうレンタルサーバがらみの仕事は工数見積を気をつけんといかんな。
今回はもう完全に大赤字です。とほほ(^^;

お客さんの MTOS を触ってたんで、合間に自分の MTOS にも手を・・・(笑)

うちの MTOS にはブログの更新情報をツイートするために、PostToTwitterプラグインをインストールしてたんだけど、2010年8月末にTwitterの認証方式が変更になってからは動いていなかった。
というか、動いていたのだが、Twitter に拒絶されて(^^;更新情報をツイート出来ていなかったのだ。

わかっちゃいたのだが、何か自分のサイトをメンテするの面倒くせえ。(^^;
「紺屋の白袴」という言葉をご存じだろうか?仕事で散々面倒くせえサーバのメンテナンス作業してんのに、自分のサイトなんか触りたくはないのである。

まあ、そういうわけで、時々、思いついたように手作業で更新情報をツイートして、それで良しとしていたわけなのだが、まあ、ちょうどお客さんの MTOS を触ってるし、そのついでにってことで作業をおこなった。

PostToTwitterを、(PostToTwitter の制作者でもある)エムロジック放課後プロジェクト製PostTweet に入れ替えたのである。エムロジックの皆さん、本当にいつも素敵なプラグインをありがとうございます。

MTOS のプラグインなんで、指定箇所にファイルをアップロードして、後は PostTweet の設定画面で「OAuthによる認証」をクリックし、Twitter の PIN番号を登録するだけである。PIN番号の取得画面にもリンクが貼られているので楽勝だ。

そうそう、俺は公開したあとも結構ブログ記事を修正するから、「投稿:ブログ記事/ウェブページの状態を未公開(下書き)から公開に変更した場合に投稿します」にもチェックしとかないと大変なことになるな。

あと、URL 短縮サービスは bit.ly に変更して、API key を設定。

これだけ。:-)
こんな簡単な作業も、毎日仕事で PC やサーバと向き合ってるとイヤになっちゃうんである。(^^;

MTOS5 の載っているサーバの移行案件があって、移行先のサーバにもまったく同じバージョンの MTOS が載ってて、そこへの引っ越しなので全然楽勝だと思ってたんだが・・・これが最悪の展開に・・・(^^;

実は、最初は1台のサーバに全部のブログが載ってたんだが、容量制限に引っかかったのでサーバを分割。それを今回また1台のサーバ(の、MTOS)に集約する・・・という作業。
今回、サーバの DocumentRoot が変更になる。なので、記事データのエクスポート/インポートでは、画像のパスとかが変換されないので後で手作業で直さなきゃいけない・・・てんで、出来れば全部バックアップ/復元でいきたかったのだが・・・

バックアップ/復元作業自体は、全部のサーバの MTOS のバージョンも 5.04 で合ってるので問題なく終了。最初のサーバからバックアップ/復元して、別のサーバからもバックアップ/復元。これで2台に分かれていたウェブ&ブログが一台に集約された・・・はずだったのに、プラグインの設定画面に行こうとすると、「Can't use string ~ /MS HASH ref while~」ってなエラーが出ちゃう。

どのプラグインが引っかかってるのかわかんないんで、plugins ディレクトリからひとつひとつプラグインを消していったら、CKEditor がエラーを出しているのはわかった。

この後、何度か再現テストをしたところ(この糞忙しいのに!)、2台目のサーバからのバックアップ/復元をすると、何故か CKEditor だけエラーが出はじめることが判明・・・

とほほ・・・

結局、何度も MTOS のインストールからやり直したり、データを入れ替えたりと調査してたら、ほんまに、この糞忙しいのに1日飛んじゃった。とほほ・・・

なんつーか、この手のプラグインって、言語が出してるエラーメッセージをそのまま何の加工もせず見せてくれたら良いのにな。変に内容を取捨選択&加工したメッセージを出してくるんで調べるのに苦労する。

結局、エラーが発生する原因わからず。
仕方無いので、1台目サーバからはバックアップ/復元して、2台目のブログはひとつひとつエクスポート/インポートしたのであった。
これすると、その後で画像パスとか手作業で直さないといけないので強烈に面倒。

・・・とほほ。CKEditor使わなきゃいいのに・・・ボソッ

20110109_fb2.jpgどうも最近、俺は何もしてないのに Facebook に Youtube の動画がリンクされちゃう。
しかも、何か異常な数。色々な動画が...ってわけではなく、一つの動画が何回もリンクされるのだ。気持ち悪っ!

で、その動画も何か怪しいんだ。例えば「自作のマリオっぽいステージのゲームを自分にやらせてみた」とか。(笑)

実は最初にこういう現象が起きた時に、2ch記事のまとめ系ブログを見てたりしたんで(^^;、何か変なスクリプトでも踏んだかなっと思って色々調べてみたけどPCに異常はない。
何か気持ち悪いけど、Facebookの「友達」に「なんじゃ、こんなに怪しいゲーム系の動画ばかりチェックして」と変に思われるだけなんで放置してた(笑)

・・・が、やっと原因がわかったよ。
息子達(特に次男坊)が YouTube をチェックした時に発生しているのだ。

昨日、やわらか戦車系の動画2本が勝手に俺の Facebook にリンクされたのだが、その前に次男坊がやわらか戦車の動画を見たという話をしていたのだ。
で、試しに「お前、マリオっぽい妙に難しいゲームの動画とかも見たやろ?」と聞くと、やっぱ見てたよ、「自作のマリオっぽいステージのゲームを自分にやらせてみた」動画(笑)

どうも、YouTube で「評価する」ボタンを押して動画を評価すると、「www.youtube.com で高く評価しました」というリンクが Facebook に作られるようじゃね(^^;
全ての動画ではなく、息子がチェックした動画のうちのいくつかがリンクされているようなので、それらの動画を次男坊が高く評価したのだろう。
確かに、YouTube の動画見ながら笑い転げてるもんなあ。(^^;

まあ、これで原因がはっきりした。
しかし、次男坊も YouTube で動画を検索して見れるほどには情報リテラシーがアップしてきたか。それそろアクセス制限も考えないといかんな(^^;

年末に親父たちがやってる産直市の事務所に顔を出すと、「祖生地域の年代別人口」という手書きの紙が貼ってあるのを見つけた。平成22年8月1日現在って書いてある。
出所が分からないので、正確な数字なのかどうなのか知らないが、一応メモ代わりにブログに書いておこう。

<年代別人口>
9歳以下 99人
10代 133人
20代 105人
30代 152人
40代 127人
50代 246人
60代 338人
70代 227人
80歳以上 264人

合計、たった 1,691人・・・(^^;

わっはっはっは。典型的な「高齢者の多い過疎地域」やなあ。笑ってる場合でもないけどな。(^^;

30代がちょっと多いのが救いか。
60代が極端に多いのは、団塊の世代というのもあるのだろうが、定年になったら田舎に帰ってくるって人もいるのかな?
まあ、俺は何度もこのブログでも書いてるけど、「歳取って肉体が衰えてから田舎に帰ってくるのは、本人にとっても地域にとっても良いことはなんもない」と否定的なのだが。
つーか、正直なことを言えば、「若い頃のように身体も動かず、若者のような購買意欲も無い年寄りが田舎に住み着くのは迷惑です」とすら思っている。

年寄りはコンパクトシティの中に住め!(元から祖生に住んでいる人は除く)

ま、話がずれていきそうなのでこの件はおいといて、次に部落(自治会)別の人口分布。

<部落別人口>※多い順
別西 164人
山田 141人
別東 136人
平本 111人
西光寺 107人
東中 104人
落合 100人
平前 99人
小祖生畑 93人
下東 91人
末南 90人

これ以下の人数の部落は書いてなかったので不明。
末東とか、強烈に少ないんだろうなあ・・・

しかし、俺が住んでる別西と、その隣の別東がベスト3に入っているのか。
なのに、このふたつの部落で作るソフトボールの「れいぜん」チームは、いつも参加者不足に泣いている。つまり、人口は多いが、年寄りばかりということなのか。

いやあ、しかし、こうしてみると、本当に過疎地域なのね。(^^;

最近は道路も良くなって、ちょっとコンビニに行くのもすぐだし、岩国や柳井、周南に通うのも便利で良いところだと思うのだがなあ。(注:いずれも車は必須(笑))

まあ、田舎なので、百姓しない人間を見る目が冷たかったり、休日もあれこれ地区や自治会の用事を手伝わされて、孤独を愛する若者には住みづらいところなのだろうが。

あ、だから若者が減るのか。(^^;

実際、今、ここ祖生に住んでいる、所謂田舎の人間の意識改革も必要だよな。反省。

20110105_bag.JPG休みの日も、町外に出る時はパソコンを持ち歩きたいんだよねえ。
うちのサーバだけではなく、最近はお客さんとこのサーバの面倒を見ることも多いので、24時間ネットに接続出来る状態でいたいのだ。

んが、普段着で持ち歩けるようなパソコンバッグを持っていなかったのである。

今使ってるノートパソコンが MacBook Pro で、けっこう重量があるので出来れば背負えるものを。だからといって、あんまりスポーティーなリュックはなあ・・・と。
岩国の店なんかも見てみたが、なかなか希望に合うものが・・・

Twitter のフォロワーさんから教えてもらった田中かばん店のトート・リュックは非常に魅力的だったのだが、もう少しサイズが小さくて安ければなぁ・・・と、なかなか購入には到らず。

で、正月に広島に出た時、金座街の鞄専門店・但馬屋に入ってみると、俺の理想に近いよさげなリュックが・・・

結局、買っちゃった。

エンドー鞄(株)FLYINGFIN BLADE シリーズの縦型3wayバッグ(4-086)。

・真っ赤な内装がおっしゃれ~(何か、イタリアンでしょ?(笑))
・ちゃんとした手提げ用のハンドルもついてるし、ショルダーで使う時のベルトもしっかりしててグー
・厚さも薄めでコンパクトなので、普段着でも背負える感じ
・色もカーキなので、ビジネスっぽくなくて良いね!

という辺りがお気に入りなところ。
形も長方形なので、コンパクトだけどきちんとノートパソコンが収まるし。

1/3,4 の二日間、MacBook Pro を入れて広島の街をうろうろしていたのだが、非常に良い感じだった。
コンパクトなので、背負ったまま本屋とか入ってもギリギリセーフって感じだしい。

もう少し使い込んだら、色々不満点も出てくるかもしれんけど、今のところ非常に満足しているのであります。

なんか、ヤマダ電機も大変みたいね。

「ヤマダ電機の暴走」の果て
http://news.livedoor.com/article/detail/5221555/?p=1

まあ、俺は元々ヤマダ電機ってあんま好きじゃないし。どうでも良いんだけど。

何せ、広島に初めてヤマダ電機が出てきた時(八木の店ね)、俺もすぐに行ってみたんだけど、2Fの売り場に上がるエスカレータのところで、パンチパーマの店員が「いらっしゃいませ、いらっしゃいませ」と頭を下げていたのには笑った。

怖いっちゅうねん!(^^;パンチパーマ。

「この店は、ああいうパンチパーマの(しかもそり込み入ってたぞ(笑))男を平気で客前に出すんやなあ」と、少し軽蔑したのがまず最初。
デオデオで、あれほどの「チンピラ」は見たことが無かったからなあ。(^^;

次は、商工センターのところに出来た店でパソコンの部品を買った時のこと。
よく見ると、「型落ち商品」(I/Fの規格が古いもの)と現行商品を「ごちゃ混ぜにして」並べて売ってる。(これもPCショップやデオデオなんかじゃあり得ないこと)
何か、おっさんが「初めて自作パソコンに挑戦」って感じで買いに来てたんだけど、まんまと店員に欺されて、型落ちのCPUとマザーボードを買わされていた。
そりゃ、それでも動くけど、誠意が無いなあ・・・と呆れた。だって、型落ちだからって無茶苦茶安くなってるわけでもなかったし。

ま、これらは記憶に残っている「なんだかなぁ」な出来事で、他にも細々としたマイナス評価点があって、イメージとして「ガラの悪い企業だな」というのが俺のヤマダ電機に対する印象。(^^;

俺も、時々はヤマダ電機で買い物をする。ワゴンセールにかかってる「安価で面白げな物」ばかりだけど。失敗しても飲んでる時のネタに出来ればいいか・・・と(笑)
普通の商品は、「デオデオより1、2割安いくらいならデオデオで買う。デオデオより随分安くて、故障したら捨ててしまえるような物ならヤマダ電機で買う」って感じだなあ。

ヤマダ電機で高額商品買ったことが無いのでアレですが、実際のところ、アフターフォローとかデオデオとかと比べてどうなんじゃろう?

このアーカイブについて

このページには、2011年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年12月です。

次のアーカイブは2011年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら