2012年3月アーカイブ

最近サークルKの店舗でタイトーくじ本舗の景品くじをやっているのをよく目にするのですが、近くのサークルKで3月から始まったKeyの景品くじが全くと言っていいほど減っていない。

Key(2012年3月) [Key] 商品詳細 - タイトーくじ本舗WEB [kuji-honpo.jp]
絵柄は無断転載禁止だそうで。

店頭であんなに減らないでいると、心なしかクドリャフカの笑顔も曇って見えます。

Keyはやはり18禁ものが多いので認知度の面で難があるのだろうと思うし、やはりKeyといたる絵は、人類には早すぎたのかもしれません。

期限終わったらワゴンに並ぶのかしら。イカちゃんとバカテスはワゴンに並んだ。狙い目。

下商品は18禁でない方。

今回買った新しいiPadは、4G+Wi-Fiモデルにしました。

今まで初代iPad、iPad2を購入したのですがこれらはWi-Fiでした。ウェブ制作業務でiPadで確認したりしていたんですけれども、会社でiPad使ってうっかりよくわからないWi-Fiにつなぐと外部の機械を勝手に社内につないだ嫌疑とかかけられかねませんので、いろいろ慎重にAndroid端末のティザリングによるWi-Fiルータにつないだりしていたのですけれども、とてもストレスがたまるので、今回のiPadは、iPadの決定版だという印象もあり、ソフトバンク3G回線が使える4G+Wi-Fi版を購入いたしました。

んで、プリペイドプランにした時、初回1GBで入れちゃったのですけれども、Safariでリロードするだけに使っているので、現時点で50MBしか使ってない状態です。30日間で失効してしまうので、あと15日ぐらいで950MB使わないと損しちゃうというわけです。

どうやら100MB分を入れるとよかったみたいです。おうちにWi-Fiある人は、プリペイドプランにするのなら初回は100MBでいいんじゃないでしょうかね。ていうかソフトバンクのプリペイドは外国と比べて高いなあ。ドコモのプリペイドプラン(PS Vitaのやつね)は、スピードが遅すぎるしなあ。

モリサワTypeSquareの使用権を回してもらったので(自分個人の使用権はまだモリサワさんが+付きメールアドレスに対応できていないので保留中)、ログインしてどうやってTypeSquare使うようにできるかとかを確認したのですが、気になったのが、自分のサイトに貼るJavaScriptのURLについて。

TypeSquareが自動生成したURLなのだけれども、表示されるのがhttp://から始まるURL。そしてその下に「SSLページで使う時はhttps://に」という旨の説明が書いてあったような気がします。

これはダサい! httpsページに貼る時は人間が気を配らなくてはならないという点がダサい!

こういう場合は、http: とか https: とかのスキーム名をとっちゃうといいんですよね。というわけで

    <script type="text/javascript" src="//typesquare.com/accessor/script/typesquare.js?●●●●●●" charset="utf-8"></script>

こんな感じにしてみた。とりあえずhttpのページからはちゃんと読みこめているみたいです。

ServersMan@VPSで借りているサーバが2つあって、そのうちの1つがBlueOnyxで稼働しているので、Disk Quotaが設定されていて、今日いきなりQuota Exceedと相成りました。

大学いたときにホームディレクトリにきつきつのDisk Quotaがかけられていたのでそれ以降自分の立てるサーバにはDisk Quota付けたことがなかったため、どうやって解除するんだからよくわからん状態でした。

で、いろいろ考えた結果、自分が所有しているファイルだからDisk Quoataによる使用量の集計に入るんでね? と考え、rootで入って、

# chown root:site1 huge-data.tbz

などと打つことによって、実際Disk Quotaにおけるディスク使用量を減らすことに成功しました。おもしろいことに、ディスクをユーザのディレクトリを移動することなく、制限を回避できるので、ファイルが行方不明にならずに済むのが利点です。

しかし、これは普通に問題の先送りなのではないか。そんなファイルはさっさとバックアップするなり消すなりするべきなんだろうけどなあ……

2月に出ていたiPhone用アプリ「パパのいうことを聞きなさい!TB」を、新しいiPadに入れてみたよ。ポリゴンの描画は高解像度で吹いた。

で、設定として、主人公である大学生の「おじさん」の住んでいた6畳のアパートに姪の女の子を引き取ってきたという危ない設定なので(ゲームでこの作品に触れる人には微塵も説明されないけれども)、当然こうなる。

Paikoki01s
▲ゴクリ……

ちなみにちゃんとトイレ中もある。どんだけ変態ゲームなんだと思った。

あとキャラクターをクリックするとタッチコミュニケーション画面になる

Paikoki02s
▲ラブプラ……

ぐりぐりするとハートが出るラブプラ○でおなじみの方式です。

そういう意味では、ラブプラスの代わりにこれでいいんじゃねーかとか思った。一人目は無料なのは良心的です(?)ぜひ。

App Store - パパのいうことを聞きなさい! TB [itunes.apple.com]

新しいiPadに、iPad2で使っていたBluetoothキーボードをつなごうと思いまして、ペアリングしたのですけれども。

なんだが変だなーとか思ったらかなキーボード仕様で繋がっていた。しかも゜(半濁音)とかが入力できない。金内でも普通に使える僕もこれには苦笑い。

これは「設定」-「一般」-「キーボード」-「各国のキーボード」-「日本語」で、「JIS」になっていたのを「U.S.」に直したことで直った。意味は全くわからんが直った。

直ったところで入力しようと思ったら、今度は「A」が出ない。「ラ」ではない。壊れたのはクラリネットではない、キーボードだ。

というわけで出ない文字を調べたら、「Esc」と「全角半角」と「Tab」と「1」と「Q」と「A」と「Z」のキーが出ない。

見事に8つだな。

というわけで、残念ながらBluetoothキーボードは円環の理に導かれて行ってしまったわ。最近気付いたがザ・リターン・オブ・イシターの魔法のリーインカー ネイションって輪廻とかいう意味なのな。

また今度、Bluetoothキーボード買わなきゃな。6台につないでいたんだよな……

iPad2にインストールした朗読アプリ「朗読少女・乙葉しおり」で発生させた音声を新しいiPadの音声入力で入力してみたよ。

Otohaninshikis
▲すべてピングーが悪い(※画面はハメコミ合成です。)

でも、結構認識率いいと思うんだぜ。

音声入力は、仕組み的にはiPad2でも出来るんだろうけれども、あえて新しいiPadで搭載した機能です。活用していきたいものですね。

昨年買った、太陽の光でeneloop乾電池を充電する充電器を活用していまして、

  • : パワーフィルム PowerFilm 「AA SOLAR CHARGER」(ソーラー・チャージャー)

    パワーフィルム PowerFilm 「AA SOLAR CHARGER」(ソーラー・チャージャー)

  • スマートフォンなどを充電するのに重宝しているわけなのですけれども、充電器の置き場所がクルマのダッシュボードでして、出勤後や帰宅後などの停車時はいいのですけれども、運転中はダッシュボードに置いたままだとずり動いてしまうのでたいへん危険です。

    以前は、ダイソーからフェライト磁石を買ってきてダッシュボードに両面テープで設置して、充電器を磁石の力で固定できるようにしていたのですが、アップル臭いのでフェライト磁石だと磁力が弱くてうまく固定できず、ネオジム磁石にしたら今度はカーナビの電子コンパスに影響が出そうでしたので、少しばかり考えたらこんなのがありました。

    Solarchagerfixed01
    ▲ザ・面ファスナー

    マジックテープ面ファスナーのシールです。充電器側にはすでに面ファスナーが付けられていますので、ダッシュボード側に受け手となる面ファスナーを取り付けました。

    実際に装着したらこうなります。

    Solarchagerfixed02

    ▲太陽の光を一身に受けて(裏日本なんで曇りなんだが)

    105円で確実にホールドできるのでとてもリーズナブルです。あまった面ファスナーシールは貼られたら貼り返そう!

    持続可能な会社を目指して教育をする係をしているのがこちらのアカウントになります。

    というわけで、Illustratorによるトレースを教えているのですが、こういうリボン型のトレースをこう教えたらわからんと言われた。

    Ribbontrace
    ▲なるほど、わからん

    問題は、円から正方形をパスツールで作り出しているあたり。45度を出す必要がある場合は楕円ツールが天地左右4点のアンカーポイントで構成されることを利用するとすこぶる簡単にできますよね。

    これのトレースに楕円ツールを使う必要があるかはともかく、こんな単純な図形ですが作る方法がたくさんあるので練習の題材として面白いと思いました。

    iPadが2枚あるので、平行法で行けるかと思いやってみた。

    Loveplusipadx2
    ▲みえ……

    凛子に同じポーズを取らせるのはそんなに難しくなくて、両方の画面を同時にクリックすると、それに対し凛子が取ったアクションが同じであればその後のモーションは同じになるのです。しかし、やってみてわかったのだけれども新しいiPad(左側)の表示がおかしい。これiPadアプリ内のリソースの用意の仕方が悪いとこうなるらしいね。

    コナミさんはこれを直すべきだと思いました。あと、iPadが2枚ある人向けにパララックスをつけるモードを用意してほしいと思いましたが、おそらくそんなモードがあっても1回しか使わないと思うし、こんなでかい画面で平行法で立体視できる人間を僕は尊敬します。

    AmazonのMP3ストアからこんなのが来たぞ。

    Bakenise
    ▲化物語の歌の偽物(カバー版)だらけ

    化物語あたりの音楽はレコード会社の都合があってソニー以外のストアではオリジナルが販売されることはないでしょうからこうなる。

    ふつうにmoraから買いましょう。MP3ではないがな!

    mora[モーラ] : 戦場ヶ原ひたぎ(CV:斎藤千和)「「化物語」ひたぎクラブ」を試聴・ダウンロード [mora.jp]

    いっそのこと、CD買った方が早いんじゃねーかと思います。

    予想される事態として、「偽物語の偽物」のメールが来るんだと思いますので、もし来たらその時ご報告します。

    Aukanyukyohi

    おとといiPad買いにコジマ電機に行った時、auひかりの勧誘員の人がいて最近県内でもauひかりのサービスを提供し始めたんでと勧誘されたんですけれども、僕はeAccess 12Mを使っているんで、どう見ても増額になる。つうわけで見送らせていただきました。

    そのあと、auのウェブサイトの意見フォームに「最低メタル線と同品質以上・同額のサービスも用意せずに強引な勧誘をしないように」とメールをしておきました(すぐ返信いただきました)。

    勧誘する人が強引なのはしょうがないけれども、商品がダメなんだってことはちゃんと伝えないとね。

    ちなみにauのサイトは、勧誘の拒否を伝える方法があります。

    http://cs119.kddi.com/faq/1032/app/servlet/qadoc?QID=009817

    Aukanyukyohi

    Q.勧誘電話が多くて困っているため、勧誘電話を止めることはできますか?

    A.はい。できます。
    KDDIお客さまセンター 0077-777にお問い合わせください。

    だそうです。僕的には、安価な商品の開発がされれば連絡いただくことはやぶさかではないと伝えてあるので勧誘拒否にはしていませんが、さてどうなることやら。

    新しいiPadを買ったので、iPad 2が古いiPadになってしまいました。

    Ipadkizu01
    ▲The Old iPad(iPad 2)ボロボロです

    Smart Coverの磁石ギミック(つまり鋼鉄ジーグ)で本体にくっつくところが擦れてしまって、キズになってしまっています。傷物語です。パチンコ傷物語です。

    これを防ぐには、DTPの現場にあるあのアイテムを使います!

    Ipadkizu03
    かくれんぼくん®メンディングテープ

    うちのDTPの現場にはないって? しらんがな。ていうか僕も今DTPの現場にいないし。ともかく、ダイソーで買ってきたザ・メンディングテープ(¥105)を新しい新しいiPadとSmart Coverとの接点部に貼りつけました。

    Ipadkizu02
    ▲かくれません(砂目だからね……)

    これで、アルミ同士が直接触れることがなくなり、保護されました。

    使っているうちにボロボロになることが予想されますが貼りなおせばOK。

    究極的には、Smart Coverを着脱しなければ傷つきませんけどね!

    昨日ETC車載機をつけたので、早起きして、ETCテストを兼ねて郡山まで行きました。

    郡山に到着したのは朝の7時で、マクドナルドぐらいしかあいていなかったのでマクドナルドして、はて、わし何しに来たんだっけと気付く。全然観光とかに興味ないものですから困ってしまい、郡山の観光協会のウェブサイトに掲載されている「きのこ岩」っていうやつ見に行こうぜーということでナビにセットして到着。

    で、現地に行ってみたら、きのこ岩のあるところが黄色いKEEP OUTになっていました。

    Kinokoiwakeepout
    ▲奥に岩が見える

    KEEP OUTの中には入れないので、しゃーないなーということできのこ岩からクルマのところまで戻る途中で、現地の方がいらして、お話をしたらば、「きのこ岩は砂岩なので、1年前の地震で壊れてしまったので今は立ち入り禁止にしている」とのことでした。未曾有の大地震は自然の造形にも影響を与えている。もとの形に作るわけにもいかず、こればっかりはしょうがないです、と現地の方。いま歩いてきた道も1年かけてやっと普通に歩けるぐらいに復旧できたのだそうです。

    その後磐越道がETC車載機で決済すれば無料だというので、調子こいて高速道路に登ったり降りたりしていたらガスがなくなってヤバかった。あほです。

    あと、帰りにケーズデンキに寄って「新しいiPad」を予約したら、予約した直後に入荷したという電話が携帯電話の着信に入っていたのにうちに帰ってきてから気づいたので急いでお店に戻り買いました。しかしなんだよ新しいiPadって。サプライ品では2012年モデル、とかいう表記になっていましたね。Macみたいな表記だな。

    使ってみた感想としては、SafariでWebをブラウズするんだけれども、文字がきれいだが画像が解像度不足。これを解消するには、新しいiPadの時だけ高解像度に置き換える必要がある。そんなのしているの? と思うけれども、

    新 iPad Retina 対応でウェブサイトの画像作り直しが必要|Media Technology Labs (MTL) : メディアテクノロジーラボ [mtl.recruit.co.jp]

    によるとAppleのサイトでしているらしい。

    iPadはモバイルなのにデータ量が多くなるという矛盾が発生している。だからこそのLTE対応(4G)、ということなんだろうけれども、国内では……

    iPad様のためにコンテンツ作りなおせ、ていうのを文字に現さずとも製品で語らせているのがすごいなあとか思いました。

    この前買ってきた三菱のETC車載器を取り付けました。

    ETCの車載機といえばアンテナ一体型とアンテナ分離型があるのですが、あえてアンテナ分離型を購入しました。

    というのも、乗っているクルマは三菱COLTなのですが、このクルマのダッシュボードのトップパネルが外れるようになっていて、いろんなものが内蔵できる。そこにETCのアンテナも内蔵しちゃえばフロントガラスにアンテナ設置をする必要はなくね?とか思いました。

    不安があるとしたら、ETCアンテナって一応指向性があるのだから、フロントガラスに貼る角度と同じ角度で固定できないといかんよな……ということなのですが、設置するときに両面テープで何とか角度を作ってやればいいだろう、と行き当たりばったりで作業を始めました。

    それで、パネルを外していこうと思ってパネル外し冶具を取り出してみると、黒いものが付いている……

    「ペロッ これは……ブチルゴム!」

    いつぞやドアにスピーカーをつけようとした時にドアを分解するときにブチルゴムにぶっ挿していたときのものが残っていたようです。シンナー持っていないしつけたままだったようです。ブチルゴムは危険だ! 急いで口で吸え!

    で、冶具もきれいにしてパネルを外してみたら、もう普通にETCアンテナ取り付け出来るようになっている! はめ込みました。

    Coltetc
    ▲アンテナをはめるだけ

    アンテナ設置は簡単だったんだけれども、電源線とアンテナ線の取り回しがすこぶる大変でした。

    何とか設置できましたので、あとは実際に高速走ってみないとなあ。

    昨日作った

    M.C.P.C.: ケータイ3キャリア別URLに振り分けるPerlのCGI

    ですが、よくかんがえると今月末(2012年3月31日)でdocomoのムーバ(PDC)が停波になるのです。そうすると、別にCHTMLで作る必要はなくね? XHTMLで作ればよくね? となります。厳密にいえば、900i以前のモデル(東芝とかの4ケタ型番のやつとか)はXHTMLはだめらしいのですけれども、実質試験機みたいなものだったので(すこぶるでかい)、コンテンツが見れなくてもしゃーなしだと思います。

    というわけで、3キャリア対応でXHTMLで表示URLを振り分けるPerl CGIを作りました。ポイントは、docomoのXHTMLの古い仕様で、外部CSSファイルは使えないという制約があるのですが、PerlのHTML::MobileJpCSSでdocomo端末の時だけインラインCSSに展開してしまう、ていうところです。これにより3社対応ページが共通のHTMLとCSSで作ることができるようになりました。

    Filename: index.cgi

    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use utf8;
    use CGI;
    use Encode;
    use Encode::JP::Mobile qw(:props);
    use File::Spec;
    use FindBin::Real;
    use HTML::Template;
    use HTTP::MobileAgent;
    use HTTP::MobileAgent::Plugin::Charset;
    use HTML::MobileJpCSS;
     
    my $basedir = FindBin::Real::Bin();
    my $q = CGI->new();
    my $agent = HTTP::MobileAgent->new;
    my $inliner = HTML::MobileJpCSS->new( base_dir => "$basedir");
     
    my $emoticons = {
     'E63E' => 'sun',
     'E63F' => 'cloud',
     'E640' => 'rain',
     'E641' => 'snow',
     'E642' => 'thunder',
     'E643' => 'typhoon',
     'E644' => 'mist',
     'E645' => 'sprinkle',
     'E646' => 'aries',
     'E647' => 'taurus',
     'E648' => 'gemini',
     'E649' => 'cancer',
     'E64A' => 'leo',
     'E64B' => 'virgo',
     'E64C' => 'libra',
     'E64D' => 'scorpius',
     'E64E' => 'sagittarius',
     'E64F' => 'capricornus',
     
     'E650' => 'aquarius',
     'E651' => 'pisces',
     'E652' => 'sports',
     'E653' => 'baseball',
     'E654' => 'golf',
     'E655' => 'tennis',
     'E656' => 'soccer',
     'E657' => 'ski',
     'E658' => 'basketball',
     'E659' => 'motorsports',
     'E65A' => 'pocketbell',
     'E65B' => 'train',
     'E65C' => 'subway',
     'E65D' => 'bullettrain',
     'E65E' => 'car',
     'E65F' => 'rvcar',
     
     'E660' => 'bus',
     'E661' => 'ship',
     'E662' => 'airplane',
     'E663' => 'house',
     'E664' => 'building',
     'E665' => 'postoffice',
     'E666' => 'hospital',
     'E667' => 'bank',
     'E668' => 'atm',
     'E669' => 'hotel',
     'E66A' => '24hours',
     'E66B' => 'gasstation',
     'E66C' => 'parking',
     'E66D' => 'signaler',
     'E66E' => 'toilet',
     'E66F' => 'restaurant',
     
     'E670' => 'cafe',
     'E671' => 'bar',
     'E672' => 'beer',
     'E673' => 'fastfood',
     'E674' => 'boutique',
     'E675' => 'hairsalon',
     'E676' => 'karaoke',
     'E677' => 'movie',
     'E678' => 'upwardright',
     'E679' => 'carouselpony',
     'E67A' => 'music',
     'E67B' => 'art',
     'E67C' => 'drama',
     'E67D' => 'event',
     'E67E' => 'ticket',
     'E67F' => 'smoking',
     
     'E680' => 'nosmoking',
     'E681' => 'camera',
     'E682' => 'bag',
     'E683' => 'book',
     'E684' => 'ribbon',
     'E685' => 'present',
     'E686' => 'birthday',
     'E687' => 'telephone',
     'E688' => 'mobilephone',
     'E689' => 'memo',
     'E68A' => 'tv',
     'E68B' => 'game',
     'E68C' => 'cd',
     'E68D' => 'heart',
     'E68E' => 'spade',
     'E68F' => 'diamond',
     
     'E690' => 'club',
     'E691' => 'eye',
     'E692' => 'ear',
     'E693' => 'rock',
     'E694' => 'scissors',
     'E695' => 'paper',
     'E696' => 'downwardright',
     'E697' => 'upwardleft',
     'E698' => 'foot',
     'E699' => 'shoe',
     'E69A' => 'eyeglass',
     'E69B' => 'wheelchair',
     'E69C' => 'newmoon',
     'E69D' => 'moon1',
     'E69E' => 'moon2',
     'E69F' => 'moon3',
     
     'E6A0' => 'fullmoon',
     'E6A1' => 'dog',
     'E6A2' => 'cat',
     'E6A3' => 'yacht',
     'E6A4' => 'xmas',
     'E6A5' => 'downwardleft',
     
     'E6AC' => 'slate',
     'E6AD' => 'pouch',
     'E6AE' => 'pen',
     
     'E6B1' => 'shadow',
     'E6B2' => 'chair',
     'E6B3' => 'night',
     
     'E6B7' => 'soon',
     'E6B8' => 'on',
     'E6B9' => 'end',
     'E6BA' => 'clock',
     
     'E6CE' => 'phoneto',
     'E6CF' => 'mailto',
     
     'E6D0' => 'faxto',
     'E6D1' => 'info01',
     'E6D2' => 'info02',
     'E6D3' => 'mail',
     'E6D4' => 'by-d',
     'E6D5' => 'd-point',
     'E6D6' => 'yen',
     'E6D7' => 'free',
     'E6D8' => 'id',
     'E6D9' => 'key',
     'E6DA' => 'enter',
     'E6DB' => 'clear',
     'E6DC' => 'search',
     'E6DD' => 'new',
     'E6DE' => 'flag',
     'E6DF' => 'freedial',
     
     'E6E0' => 'sharp',
     'E6E1' => 'mobaq',
     'E6E2' => 'one',
     'E6E3' => 'two',
     'E6E4' => 'three',
     'E6E5' => 'four',
     'E6E6' => 'five',
     'E6E7' => 'six',
     'E6E8' => 'seven',
     'E6E9' => 'eight',
     'E6EA' => 'nine',
     'E6EB' => 'zero',
     'E6EC' => 'heart01',
     'E6ED' => 'heart02',
     'E6EE' => 'heart03',
     'E6EF' => 'heart04',
     
     'E6F0' => 'happy01',
     'E6F1' => 'angry',
     'E6F2' => 'despair',
     'E6F3' => 'sad',
     'E6F4' => 'wobbly',
     'E6F5' => 'up',
     'E6F6' => 'note',
     'E6F7' => 'spa',
     'E6F8' => 'cute',
     'E6F9' => 'kissmark',
     'E6FA' => 'shine',
     'E6FB' => 'flair',
     'E6FC' => 'annoy',
     'E6FD' => 'punch',
     'E6FE' => 'bomb',
     'E6FF' => 'notes',
     
     'E700' => 'down',
     'E701' => 'sleepy',
     'E702' => 'sign01',
     'E703' => 'sign02',
     'E704' => 'sign03',
     'E705' => 'impact',
     'E706' => 'sweat01',
     'E707' => 'sweat02',
     'E708' => 'dash',
     'E709' => 'sign04',
     'E70A' => 'sign05',
     'E70B' => 'ok',
     'E70C' => 'appli01',
     'E70D' => 'appli02',
     'E70E' => 't-shirt',
     'E70F' => 'moneybag',
     
     'E710' => 'rouge',
     'E711' => 'denim',
     'E712' => 'snowboard',
     'E713' => 'bell',
     'E714' => 'door',
     'E715' => 'dollar',
     'E716' => 'pc',
     'E717' => 'loveletter',
     'E718' => 'wrench',
     'E719' => 'pencil',
     'E71A' => 'crown',
     'E71B' => 'ring',
     'E71C' => 'sandclock',
     'E71D' => 'bicycle',
     'E71E' => 'japanesetea',
     'E71F' => 'watch',
     
     'E720' => 'think',
     'E721' => 'confident',
     'E722' => 'coldsweats01',
     'E723' => 'coldsweats02',
     'E724' => 'pout',
     'E725' => 'gawk',
     'E726' => 'lovely',
     'E727' => 'good',
     'E728' => 'bleah',
     'E729' => 'wink',
     'E72A' => 'happy02',
     'E72B' => 'bearing',
     'E72C' => 'catface',
     'E72D' => 'crying',
     'E72E' => 'weep',
     'E72F' => 'ng',
     
     'E730' => 'clip',
     'E731' => 'copyright',
     'E732' => 'tm',
     'E733' => 'run',
     'E734' => 'secret',
     'E735' => 'recycle',
     'E736' => 'r-mark',
     'E737' => 'danger',
     'E738' => 'ban',
     'E739' => 'empty',
     'E73A' => 'pass',
     'E73B' => 'full',
     'E73C' => 'leftright',
     'E73D' => 'updown',
     'E73E' => 'school',
     'E73F' => 'wave',
     
     'E740' => 'fuji',
     'E741' => 'clover',
     'E742' => 'cherry',
     'E743' => 'tulip',
     'E744' => 'banana',
     'E745' => 'apple',
     'E746' => 'bud',
     'E747' => 'maple',
     'E748' => 'cherryblossom',
     'E749' => 'riceball',
     'E74A' => 'cake',
     'E74B' => 'bottle',
     'E74C' => 'noodle',
     'E74D' => 'bread',
     'E74E' => 'snail',
     'E74F' => 'chick',
     
     'E750' => 'penguin',
     'E751' => 'fish',
     'E752' => 'delicious',
     'E753' => 'smile',
     'E754' => 'horse',
     'E755' => 'pig',
     'E756' => 'wine',
     'E757' => 'shock',
    };
     
    # テンプレートファイル読み込み
    my $template = sub {
      open my $fh, '<', shift or die $!;
      local $/ = undef; my $s = <$fh>;
      close $fh;
      return $s;
    }->('index.tmpl');
    $template = decode_utf8( $template );
    $template =~s|\\x{(.+?)}|chr(hex($1))|eg; # 絵文字記述をUnicode文字列に
     
    # キャリア別処理
    my $params;  # TemplateにUserAgent(キャリア名)をまとめて渡す
    my $carrier; # Templateに渡すキャリア名
    if      ( $agent->is_docomo   ) { $carrier  = 'docomo';
    } elsif ( $agent->is_ezweb    ) { $carrier  = 'AU';
    } elsif ( $agent->is_vodafone ) { $carrier  = 'SoftBank';
    } else {
      $carrier  = 'パソコン/スマートフォン';
      $params->{pc} = $carrier;
      $template =~ s{(\p{InMobileJPPictograms})}{
        my $char = Encode::JP::Mobile::Character->from_unicode(ord $1);
        sprintf '<img src="/emoticons/%s.gif" />', $emoticons->{$char->unicode_hex};
      }ge;
    }
    my $encoding = $agent->encoding; # Encode用のキャリアごとのエンコーディング
    my $charset = $encoding =~ /sjis/ ? 'Shift_JIS' : 'UTF-8'; # HTML用のcharset
    my $content = $encoding =~ /x-utf8-docomo/ ? 'application/xhtml+xml' : 'text/html';
     
    $params->{ carrier} = $carrier; # <tmpl_var name="carrier">でdocomoとか表示できる
    $params->{$carrier} = $carrier; # <tmpl_if name="docomo">でdocomo用処理振り分けできる
    $params->{ charset} = $charset; # <meta~charset=<tmpl_var name="charset">" />
    $params->{ content} = $content; # <meta~content="<tmpl_var name="content">" />
     
    # テンプレート処理
    my $t = HTML::Template->new(
      scalarref => \$template,
      die_on_bad_params => 0
    );
    $t->param( $params );
    my $html = $t->output;
    $html = $inliner->apply( $html ); # CSSをキャリアごとに適用するよう書き換え
     
    # 出力
    print $q->header( -type => $content, -charset => $charset );
    print encode( $encoding, $html );
     
    exit;
     
    __END__

    Filename: index.tmpl

    <?xml version="1.0" encoding="<tmpl_var name="charset">"?>
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
      <head>
        <meta http-equiv="Content-Type" content="<tmpl_var name="content"
          >; charset=<tmpl_var name="charset">" />
        <title>エロいリンク</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes," />
        <link rel="stylesheet" href="styles.css" />
      </head>
      <body>
        <div id="hd">
          <h1>エロいページ</h1>
          <h2>ケータイ版リンク集</h2>
        </div>
        <hr />
        <div>
          <dl>
            <dt>
              <span style="color: #0077ff;">\x{e6e2}</span
              ><a accesskey="1"
                href="<tmpl_if name="pc"
                >http://www.example.com/<tmpl_else><tmpl_if name="docomo"
                >http://www.example.com/i/</tmpl_if><tmpl_if name="au"
                >http://www.example.com/e/</tmpl_if><tmpl_if name="softbank"
                >http://www.example.com/j/</tmpl_if></tmpl_if
                >">お世話になったVHS</a>\x{E6DD}</dt>
            <dd>
              ツメオリのVHS情報がご覧になれます。
            </dd>
          </dl>
        </div>
        <hr />
        <div id="ft">
          <span>&copy;DTPWiki 2012</span>
        </div>
      </body>
    </html>

    Filename: styles.css

    #ft {
      text-align: right;
      font-size: x-small;
      color: red;
    }


    どうでもいいけれども、ムーバ端末がネットから切り離されると、CHTMLを正確に展開できるのはiモードHTMLシミュレータだけになりそうですが、インターネット上にiモードHTMLブラウザでしか読めない新天地ができたりとか、iモードが絶滅した後の世界で刊行された小説に、「iモードブラウザで隠されたメッセージを探し出す」とかいうのがあったりすると胸アツなので、今のうちにiモードHTMLシミュレータをダウンロードしておくのはどうでしょうか。

    とある冊子にケータイサイトのURLをQRコードで載せようと思いリンク許可を取ったのは良いけれどもそのサイトはなんとPC版とiモードとezWebとソフトバンクの入口がそれぞれ別URLになっていて4つのQRコードを紙面に乗せるわけにはいかない、どーしよーていう状況をイメージしてこんなのを書いてみました。つまりアクセスしている端末によって表示するリンクを変えてしまうという寸法です。

    4年前に同様の問題をやっていることを思い出しコードを掘り起こしてきたのでさほど問題はなかったです。


    Filename: index.html

    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use utf8;
    use CGI;
    use Encode;
    use Encode::JP::Mobile qw(:props);
    use HTML::Template;
    use HTTP::MobileAgent;
    use HTTP::MobileAgent::Plugin::Charset;
     
    my $emoticons = {
      'E63E' => 'sun',
      'E63F' => 'cloud',
      'E640' => 'rain',
      'E641' => 'snow',
      'E642' => 'thunder',
      'E643' => 'typhoon',
      'E644' => 'mist',
      'E645' => 'sprinkle',
      'E646' => 'aries',
      'E647' => 'taurus',
      'E648' => 'gemini',
      'E649' => 'cancer',
      'E64A' => 'leo',
      'E64B' => 'virgo',
      'E64C' => 'libra',
      'E64D' => 'scorpius',
      'E64E' => 'sagittarius',
      'E64F' => 'capricornus',
     
      'E650' => 'aquarius',
      'E651' => 'pisces',
      'E652' => 'sports',
      'E653' => 'baseball',
      'E654' => 'golf',
      'E655' => 'tennis',
      'E656' => 'soccer',
      'E657' => 'ski',
      'E658' => 'basketball',
      'E659' => 'motorsports',
      'E65A' => 'pocketbell',
      'E65B' => 'train',
      'E65C' => 'subway',
      'E65D' => 'bullettrain',
      'E65E' => 'car',
      'E65F' => 'rvcar',
     
      'E660' => 'bus',
      'E661' => 'ship',
      'E662' => 'airplane',
      'E663' => 'house',
      'E664' => 'building',
      'E665' => 'postoffice',
      'E666' => 'hospital',
      'E667' => 'bank',
      'E668' => 'atm',
      'E669' => 'hotel',
      'E66A' => '24hours',
      'E66B' => 'gasstation',
      'E66C' => 'parking',
      'E66D' => 'signaler',
      'E66E' => 'toilet',
      'E66F' => 'restaurant',
     
      'E670' => 'cafe',
      'E671' => 'bar',
      'E672' => 'beer',
      'E673' => 'fastfood',
      'E674' => 'boutique',
      'E675' => 'hairsalon',
      'E676' => 'karaoke',
      'E677' => 'movie',
      'E678' => 'upwardright',
      'E679' => 'carouselpony',
      'E67A' => 'music',
      'E67B' => 'art',
      'E67C' => 'drama',
      'E67D' => 'event',
      'E67E' => 'ticket',
      'E67F' => 'smoking',
     
      'E680' => 'nosmoking',
      'E681' => 'camera',
      'E682' => 'bag',
      'E683' => 'book',
      'E684' => 'ribbon',
      'E685' => 'present',
      'E686' => 'birthday',
      'E687' => 'telephone',
      'E688' => 'mobilephone',
      'E689' => 'memo',
      'E68A' => 'tv',
      'E68B' => 'game',
      'E68C' => 'cd',
      'E68D' => 'heart',
      'E68E' => 'spade',
      'E68F' => 'diamond',
     
      'E690' => 'club',
      'E691' => 'eye',
      'E692' => 'ear',
      'E693' => 'rock',
      'E694' => 'scissors',
      'E695' => 'paper',
      'E696' => 'downwardright',
      'E697' => 'upwardleft',
      'E698' => 'foot',
      'E699' => 'shoe',
      'E69A' => 'eyeglass',
      'E69B' => 'wheelchair',
      'E69C' => 'newmoon',
      'E69D' => 'moon1',
      'E69E' => 'moon2',
      'E69F' => 'moon3',
     
      'E6A0' => 'fullmoon',
      'E6A1' => 'dog',
      'E6A2' => 'cat',
      'E6A3' => 'yacht',
      'E6A4' => 'xmas',
      'E6A5' => 'downwardleft',
     
      'E6AC' => 'slate',
      'E6AD' => 'pouch',
      'E6AE' => 'pen',
     
      'E6B1' => 'shadow',
      'E6B2' => 'chair',
      'E6B3' => 'night',
     
      'E6B7' => 'soon',
      'E6B8' => 'on',
      'E6B9' => 'end',
      'E6BA' => 'clock',
     
      'E6CE' => 'phoneto',
      'E6CF' => 'mailto',
     
      'E6D0' => 'faxto',
      'E6D1' => 'info01',
      'E6D2' => 'info02',
      'E6D3' => 'mail',
      'E6D4' => 'by-d',
      'E6D5' => 'd-point',
      'E6D6' => 'yen',
      'E6D7' => 'free',
      'E6D8' => 'id',
      'E6D9' => 'key',
      'E6DA' => 'enter',
      'E6DB' => 'clear',
      'E6DC' => 'search',
      'E6DD' => 'new',
      'E6DE' => 'flag',
      'E6DF' => 'freedial',
     
      'E6E0' => 'sharp',
      'E6E1' => 'mobaq',
      'E6E2' => 'one',
      'E6E3' => 'two',
      'E6E4' => 'three',
      'E6E5' => 'four',
      'E6E6' => 'five',
      'E6E7' => 'six',
      'E6E8' => 'seven',
      'E6E9' => 'eight',
      'E6EA' => 'nine',
      'E6EB' => 'zero',
      'E6EC' => 'heart01',
      'E6ED' => 'heart02',
      'E6EE' => 'heart03',
      'E6EF' => 'heart04',
     
      'E6F0' => 'happy01',
      'E6F1' => 'angry',
      'E6F2' => 'despair',
      'E6F3' => 'sad',
      'E6F4' => 'wobbly',
      'E6F5' => 'up',
      'E6F6' => 'note',
      'E6F7' => 'spa',
      'E6F8' => 'cute',
      'E6F9' => 'kissmark',
      'E6FA' => 'shine',
      'E6FB' => 'flair',
      'E6FC' => 'annoy',
      'E6FD' => 'punch',
      'E6FE' => 'bomb',
      'E6FF' => 'notes',
     
      'E700' => 'down',
      'E701' => 'sleepy',
      'E702' => 'sign01',
      'E703' => 'sign02',
      'E704' => 'sign03',
      'E705' => 'impact',
      'E706' => 'sweat01',
      'E707' => 'sweat02',
      'E708' => 'dash',
      'E709' => 'sign04',
      'E70A' => 'sign05',
      'E70B' => 'ok',
      'E70C' => 'appli01',
      'E70D' => 'appli02',
      'E70E' => 't-shirt',
      'E70F' => 'moneybag',
     
      'E710' => 'rouge',
      'E711' => 'denim',
      'E712' => 'snowboard',
      'E713' => 'bell',
      'E714' => 'door',
      'E715' => 'dollar',
      'E716' => 'pc',
      'E717' => 'loveletter',
      'E718' => 'wrench',
      'E719' => 'pencil',
      'E71A' => 'crown',
      'E71B' => 'ring',
      'E71C' => 'sandclock',
      'E71D' => 'bicycle',
      'E71E' => 'japanesetea',
      'E71F' => 'watch',
     
      'E720' => 'think',
      'E721' => 'confident',
      'E722' => 'coldsweats01',
      'E723' => 'coldsweats02',
      'E724' => 'pout',
      'E725' => 'gawk',
      'E726' => 'lovely',
      'E727' => 'good',
      'E728' => 'bleah',
      'E729' => 'wink',
      'E72A' => 'happy02',
      'E72B' => 'bearing',
      'E72C' => 'catface',
      'E72D' => 'crying',
      'E72E' => 'weep',
      'E72F' => 'ng',
     
      'E730' => 'clip',
      'E731' => 'copyright',
      'E732' => 'tm',
      'E733' => 'run',
      'E734' => 'secret',
      'E735' => 'recycle',
      'E736' => 'r-mark',
      'E737' => 'danger',
      'E738' => 'ban',
      'E739' => 'empty',
      'E73A' => 'pass',
      'E73B' => 'full',
      'E73C' => 'leftright',
      'E73D' => 'updown',
      'E73E' => 'school',
      'E73F' => 'wave',
     
      'E740' => 'fuji',
      'E741' => 'clover',
      'E742' => 'cherry',
      'E743' => 'tulip',
      'E744' => 'banana',
      'E745' => 'apple',
      'E746' => 'bud',
      'E747' => 'maple',
      'E748' => 'cherryblossom',
      'E749' => 'riceball',
      'E74A' => 'cake',
      'E74B' => 'bottle',
      'E74C' => 'noodle',
      'E74D' => 'bread',
      'E74E' => 'snail',
      'E74F' => 'chick',
     
      'E750' => 'penguin',
      'E751' => 'fish',
      'E752' => 'delicious',
      'E753' => 'smile',
      'E754' => 'horse',
      'E755' => 'pig',
      'E756' => 'wine',
      'E757' => 'shock',
    };
     
    my $q = CGI->new();
    my $agent = HTTP::MobileAgent->new;
     
    # テンプレートファイル読み込み
    my $template = sub {
      open my $fh, '<', shift or die $!;
      local $/ = undef; my $s = <$fh>;
      close $fh;
      return $s;
    }->('index.tmpl');
    $template = decode_utf8( $template );
    $template =~s|\\x{(.+?)}|chr(hex($1))|eg; # 絵文字記述をUnicode文字列に
     
    # キャリア別処理
    my $params;  # TemplateにUserAgent(キャリア名)をまとめて渡す
    my $carrier; # Templateに渡すキャリア名
    if      ( $agent->is_docomo   ) { $carrier  = 'docomo';
    } elsif ( $agent->is_ezweb    ) { $carrier  = 'AU';
    } elsif ( $agent->is_vodafone ) { $carrier  = 'SoftBank';
    } else {
      $carrier  = 'パソコン/スマートフォン';
      $params->{pc} = $carrier;
      $template =~ s{(\p{InMobileJPPictograms})}{
        my $char = Encode::JP::Mobile::Character->from_unicode(ord $1);
        sprintf '<img src="emoticons/%s.gif" />', $emoticons->{$char->unicode_hex};
      }ge;
    }
    my $encoding = $agent->encoding; # Encode用のキャリアごとのエンコーディング
    my $charset  = $encoding =~ /sjis/ ? 'Shift_JIS' : 'UTF-8'; # HTML用のcharset
    $params->{ carrier} = $carrier; # <tmpl_var name="carrier">でdocomoとか表示できる
    $params->{$carrier} = $carrier; # <tmpl_if name="docomo">でdocomo用処理振り分けできる
    $params->{ charset} = $charset; # <meta~charset="<tmpl_var name="charset">" />
    # テンプレート処理
    my $t = HTML::Template->new(
      scalarref => \$template,
      die_on_bad_params => 0
    );
    $t->param($params);
    my $html = $t->output;
     
    # 出力
    print $q->header( -type => 'text/html', charset => $charset );
    print encode( $encoding, $html );
     
    exit;
     
    __END__

    Filename: index.tmpl

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset="<tmpl_var name="charset">" />
        <title>エロいリンク</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes," />
      </head>
      <body link="#003399" alink="#ffa500" vlink="#003399">
        <div bgcolor="#7fb5e5">
          <h1 size="4">エロいページ</h1>
          <h2>ケータイ版リンク集</h2>
        </div>
        <hr />
        <div>
          <dl>
            <dt>
              <font color="#0077ff">\x{e6e2}</font
              ><a accesskey="1"
                href="<tmpl_if name="pc"
                >http://example.com/<tmpl_else><tmpl_if name="docomo"
                >http://example.com/i/</tmpl_if><tmpl_if name="au"
                >http://example.com/e/</tmpl_if><tmpl_if name="softbank"
                >http://example.com/j/</tmpl_if></tmpl_if
                >">お世話になったVHS</a>(<tmpl_var name="carrier">)</dt>
            <dd>
              ツメオリのVHS情報がご覧になれます。
            </dd>
        </div>
        <hr />
        <div>
          &copy;DTPWiki 2012
        </div>
      </body>
    </html>

    こーやって事前に作り置きして備えるんだけれども、使われることってほぼ無いんだよね。

    おととい、イエローハットに行ってETC車載機のカタログをもらってきて、一応見たがあんまり重要なところはわからんかった。ていうことを書きました。

    M.C.P.C.: ETC車載機買いに行ったがカタログって少ないのね

    そもそもなんでいまさらETCなのかっていうと、近々慶事で郡山までいかなくてはいけない用事があるからなんです。郡山は営業の仕事で言ったことはあるけれどもそんときは会社の営業車と会社のETCカードだったわけで、今回はいよいよてめえのクルマにETCを付けることになったというわけです。

    そんで、紙のパンフレットが少しも役に立たなかったのでネットサ~フィ~ンで情報を集めた結果、僕のクルマに付いているpioneerのカーナビゲーションシステムが、非公式ながら三菱電機製のETC車載機と連動するらしい、というのを聞きつけまして、三菱電機製のEP-7311BというテカテカするETC車載機にしました。

    Mitsubishietc
    ▲テッカテカやで

    注意しなくてはならないのは、ETC車載機側にRS-232Cの信号が出る端子を持っているモデルでないと三菱電機製でもダメってことです。更に注意しなくてはならないのは、お店では三菱電機製の製品のほかに、三菱重工製の製品も一緒に並んでいるのですが、三菱重工製は全く違う製品なのでpioneerカーナビ連動の可能性を探りたい人は選択してはなりません(カーナビ連動なしで普通に使うならいいと思う)。

    しかし、霧ヶ峰とビーバーエアコンみたいな関係がETC車載機でも起きているんですね……

    ともかく、セットアップまでしてもらったのであとは取りつけるだけです。今度の休みに天気が良かったら取り付けようかなーとか思っています。

    で、結局ビーバーエアコンの名前の由来は事業所の所在地の西枇杷島町だからっていうことでFAなのかな。

    一応、RS-232C接続時の資料。

    三菱ETCナビ連携端子通信プロトコルの解析 [kaele.com]

    新潟運輸の荷物配達状況を確認するPerlモジュールWebService::NiigataUnyu 0.06の動作がおかしくなりました。原因は、スクレーピング結果のお問い合わせ番号の後ろに空白が付くようになってしまったことにあります。

    こういうのはプログラムの世界ではトリム(Trim)とかいって、入力値などの前後の空白を除去する処理をするのですが、やっていなかったのでした。

    実際に稼働しているシステムで不具合が出たのですが、当方Perlのパッケージのビルド方法なんて毎回忘れてしまう故、ちょっとパッケージを作ってCPANに上げるだけの余裕がありませんので、取り急ぎパッチを用意しました。

    $ diff -c NiigataUnyu.pm.old NiigataUnyu.pm
    *** NiigataUnyu.pm.old  2011-04-06 00:31:51.000000000 +0900
    --- NiigataUnyu.pm      2012-03-13 23:13:26.000000000 +0900
    ***************
    *** 73,79 ****
          process '//div[3]/div/div/div[2]/div/table',
          'results[]' => scraper {
            process q{//tr/th/font[text() =~ /お問合せ番号/]/../../td},
    !       number => 'TEXT',
            process '//tr/th/font[text() =~ /日付/ and @size = 4]/../../td',
            date => [ 'TEXT', sub { s/\s//g; return $_; } ],
            process '//tr/th/font[text() =~ /時間/ and @size = 4]/../../td',
    --- 73,79 ----
          process '//div[3]/div/div/div[2]/div/table',
          'results[]' => scraper {
            process q{//tr/th/font[text() =~ /お問合せ番号/]/../../td},
    !       number => [ 'TEXT', sub { s/^\s*//; s/\s*$//; return $_; } ],
            process '//tr/th/font[text() =~ /日付/ and @size = 4]/../../td',
            date => [ 'TEXT', sub { s/\s//g; return $_; } ],
            process '//tr/th/font[text() =~ /時間/ and @size = 4]/../../td',

    このパッチを有効に使っていただける人がどれだけいるかは謎です。

    普通こういう田舎に住んでいる人は、ETC車載をタダで配っている時にホイホイと付けてもらっているわけなのですけれども、出不精なことが幸いしてそいう言うキャンペーンの時にETC車載器を取り付けていなかったのです。

    ちなみに、田舎の人の中では、ETC車載器をつけるときにはじめてクレジットカード作ったという人もいる......

    それはともあれ、近くのイエローハット行ったんですよ、イエローハット。そしたら、18時55分だったんでマジで閉店5分前だったんですけれども、ETC車載器ってセットアップとかあるじゃないですか。5分で出来るわけねえなと思ったので、お店の人に「家で検討したいんでカタログくらさい。」と言って、カタログもらってきたのですが。

    ETCの総合カタログっていうのがなくて普通のフライヤーが各メーカー分数枚あっただけで、これじゃあなかなか探しにくいわけです。パナソニックのなんて、音声ガイダンスが声優の日髙のり子さんの声なのだかどうだかも書いていないのです。困る......

    こういうものの展示は既にウェブになっているらしく、各メーカーのパンフレットでは、詳しくはウェブで。とか書いてある。であればなるほど、三菱電機のところに行ってみようと思って、 www.MitsubishiElectric.co.jp/etc (←ほんとにキャメルケースで書いているの)にアクセスしたら、いきなり「URLが変わりました。」とか出て、誘導された先が http://www.mitsubishielectric.co.jp/carele/etc/index.html だってさ。「carele = カエレ」、客をバカにしてんのか! っていうのは置いておいて、もう差別化ができない製品になっているETC車載機はついにはグッドデザイン賞受賞モデルまで登場している始末(あれって自分でエントリするんだよね)。ああ、車載器って見えないところにつけるだろうに......

    つわけで、今度オートバックスできたらそっち見に行きます。でも、カタログはあんまり期待できないんだろうな。

    いきつけのお寿司屋さんがあるのですけれども(なぜかそこで寿司を食うことはめったにないのだけれども)、iPadを持っていくとそこのうちのマスターとおねーさんがそれぞれLet's GOLF 3と太鼓の達人をプレイするのですけれども、3月16日にThe new iPad(←Newラブプラスみえだな)が出るので、ここんちにiPad2を売ってしまえばThe new iPadを買う資金の足しにもなるわけですけれども、お店に行ったのが夜12時過ぎで交渉が先に進まなかった。

    ケースなしで使っていたら結構側面に傷が付いてしまっていたので、とりあえず15000円で売ろうと思うんですけれども、いい値段だと思うんだけどなー

    この前、いきつけの飲み屋さんに越乃寒梅の梅酒を持ってきてくださった方がいまして、ご馳走になりました。そのあと、八海山の梅酒もあるみたいだよーとかいうので、その場にiPadを持ちこんでいましたので、そのまま楽天市場で八海山うめ酒を購入しました。

    ……案の定、メールマガジンがしぬほど届くようになりました。

    つ メルマガ配信停止・登録情報確認・変更 受付フォーム [emagazine.rakuten.co.jp]

    そんで、届いたお酒をいきつけの飲み屋さんにもっていってみなさんにふるまったら、一口目「うわっ、これは日本酒だね。」で二口目「でも、あまり甘くなくてけっこういけるかも。」と飲んだ人がみんなそう言うんですけれども、

    僕は酒の味に関してはさっぱりマカロンです。

    八海山 - 梅酒 [www.hakkaisan.co.jp]

    チョーヤのとは確かに違うとはわかるんだけど、どうなんだろ……(←子供舌)

    越乃寒梅梅酒のようにプレミア価格で高くなっていないのがいいところです(お財布的に)。

    貸与されていた日経新聞電子版の購読権なのですが、僕が全然新聞読まないのがばれてしまい(新聞で入手できる情報で有利に行動&提案できるプレーヤーではないのでした……)、権限を移譲することになりました。

    ところが、この日経新聞電子版の購読権、つまり有料会員情報なのですが、新聞購読とのWプランだと、簡単に購読権を移譲できないらしく。

    移譲する人の日経IDを一旦消した後、24時間してから、僕の日経IDを新たに購読する人の名義とメールアドレスに変える、という作業をすることになりました。

    というわけで、日経新聞電子版の購読権移譲に際しては、だまって日経新聞の窓口に電話かけたほうが確実だと思います。いろいろ調べてくれますので。

    エンジニアからデジタル曲芸師にクラスチェンジしてしまった僕に来る依頼といえば、「1000件の住所リストがあるからこれを日本地図の白地図にプロットしなさい」とかいうものだったりします。

    エンジニアではないが曲芸師として認知されているのであればその仕事を全うしてやるということで、一方でDTPを教えながら一方では白地図ソフトや地図にプロットするソフトなどをググって要件を満たすものをくみ上げるわけです。そいういうわけで、

    ・住所から緯度・経度情報をジオコーディングする
    ・白地図を表示する
    ・地図上に座標をプロットする

    これらを連携させると実現可能になるなーとか思いました。

    まあ、まんま

    M.C.P.C.: Google Maps APIを使って住所リストからGoogle Mapsに表示するまで

    そのものなんですけれども、今回は白地図っていうことで、Google MapsではなくてGMTを使ってみようとした次第。

    結果から言うと、CentOS 5にGMTは楽々入り、白地図上にちゃんとプロットできました。PSファイルが吐き出されるので「読めねえじゃん」とか言っていたのですが、よくかんがえるとImageMagickとGhostScriptが入っているので、変換すれば結構平気。

    問題は、1000件の住所からのジオコーディングです。1000件の問い合わせにGoogleおこりそうだよな。怖いなあ。

    Typesquaremailaddresserror

    モリサワのウェブフォントサービス、TypeSquare(http://typesquare.com/)にて、ユーザ登録時にメールアドレスにプラスを含む場合、登録できないという問題があるのを質問してたのですが、返事が来てました。

    曰く、「アドレス内の『+』記号が、 弊社メールサーバで利用できない記号」とのことで、利用できないんだそうです。

    というわけで、プラスがないメールアドレスで登録すればよいとなむ。

    で、それはいいとして、話題はモリサワ社がプラス付きのメールアドレスに対応すべきであるという話に移る。

    トップページに製品紹介のためのYouTube動画のiframeを貼っているページがありまして、そうすると、iframe内でFlashのswfファイルが200KBぐらいのがダウンロードされ、更にytimg.comからのYouTubeサムネイル画像の応答が悪いので、それがトップページのレスポンス悪化につながっておったとさ。

    というわけで、最初からifameなんて存在しなければいいじゃないか! ということで、jQueryでDOM構築後何らかのタイミングでiframeをDOM内の要素にに流し込んでやることで、レスポンス悪化のタイミングをずらしてやることにしたらとても速く表示できるようになりました。

    つうわけで、YouTubeのiframeは直書きではなくて、後から差し込んだ方がいいです。

    とはいえ、jQuery使っているページってプラグインすこぶる使っている傾向あるので、JavaScript回りも見直さなくてはいけませんね……

    いまさらモリサワTypeSquareなのです。

    TypeSquare [タイプスクウェア] [typesquare.com]

    今日登録をしようと思っていろいろ個人情報を入力しているのですが、なんで全角を強要するインタフェースなんですか。

    そこら辺の議論は5年ぐらい前にJavaScriptやらサーバサイドで統一すればよくね? ていう議論は終わっているはずでして、実際僕もフォーム作る用事があったので実装してみたことがあります。

    M.C.P.C.: フォームのメールアドレスはJavaScriptで能動的に半角に変換してみるとどうだろう

    それよりも、メールアドレスに+が付いていると登録できないという問題があるんですね。

    頭にきたので問い合わせしました(←相変わらず沸点低いな)

    Morisawatypesquareregistration

    結構Gmailのアドレスに+付ける運用ってやっているよね?

    ソース見たら、

                    "email": {
                        // Simplified, was not working in the Iphone browser
                        "regex": /^([A-Za-z0-9_\-\.\'])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,6})$/,
                        "alertText": "* メールアドレスが正しくありません"
                    },
    

    だそうです。まあ確かにメールアドレスのバリデーションってルールよくわからんから出来合いのもの使いがちですよね……

    (書き換えちゃえば送れてしまったのであろうか……)

    昨日、久しぶりにMacBook(13-inch, Aluminum, Late 2008)に充電してやろうと思ってMagSafe 60W AC Power Adapterを接続したのですが、MagSafeコネクタのランプがオレンジにならず、充電してくれなくなりました。起動はできるが、バッテリーが充電されませんので、MagSafeコネクタの外れやすさがあだになって、安心して使えません。

    充電回数371回。その早すぎる死に悲しみが広がりました(おもに財布方面)。

    そんで、今日意を決してAppleショップに行ってきました。

    MacBookとMagSafeACアダプタを持ちこんで、「Macが悪いかバッテリーが悪いかMagSafeが悪いかわからんから、ここで特定して、交換できるやつならここで買って行くわー」とか言ってAppleショップのおにーさんに相談。

    お店の中のMacBookのMagSafeACアダプタにつないでみてもランプがグリーンのままでオレンジにならず、「本体方面ですかねー」とかいって、念のため、「じゃあお持ちいただいたACアダプタとMacをつないでみますね。」とかいって接続してもらったら、いきなり直りました……

    わし片道1時間もかけてAppleショップに行ったのは何の意味があったのでしょうか……

    ともかく、このMacBookのバッテリーの寿命は約500回だというので、もう129回頑張っていただきたいものです。

    会社の還暦になった先輩が携帯電話を新しく買ってきたのだけれども、待ち受け画面にひつじのしつじくん®とか出ていたり、iチャネルが出ていたりと、いらんものがいっぱい出ているので消してくれって言われました。

    ひつじのしつじくん®は、いわゆる「マチキャラ」なので、マチキャラを「OFF」にすれば消える。iチャネルは、ちょっと戸惑ったけれども、iモードの関連サービスなので、iモードメニューに「iチャネル」があってそこで「OFF」にできる。

    残ったのは、待ち受け画面に出ている、「iコンシェル」アイコンです。これがどーしても消せない。困ったのでマニュアルを出していただき、調べてみたのですが、入っているマニュアルには、「~を表示するには?」は書いてあっても、「~を消すには?」は書いていない。なんなのでしょうか。お前を消す方法 [dic.nicovideo.jp] なのでしょうか。

    困り果てたので、Googleで検索。でた。

    価格.com - 『iコンシェルのアイコン消去方。』 シャープ docomo STYLE series SH-11C [Black] のクチコミ掲示板 [bbs.kakaku.com]

    本体設定→①画面ディスプレイ→②待受画面設定→で、次が⑨までしかないのですが、⑨の下に2ページ目があります。
    iコンシェルアイコン設定でOFFで完了です。

    MAJIKAYO! そういうRPGのアイテム欄みたいなページングになっているのやめてほしい……

    最近の携帯電話は、メニューの文字の大きさを変えられるのですけれども、文字の大きさによってはメニューがウィドウになってしまうのですね。いろいろ考えさせられるものがありますね……

    ゆるゆり×ゲーマーズ presents 「JKバウムのようこそ!ゆるゆりMUSEUM」 - ニコニコ生放送 [live.nicovideo.jp]

    ていうのを見ていたら、ジュナイオというARブラウザソフト用のQRコードが出ていたので、画面越しにQR撮影してみたけれども、なかなかうまくいかなかったので、Photoshopさんを使った。

    Yryrqrphotoshop
    ▲QRコード部をなるべく正方形にするよう変形

    Yryrjunaio1
    ▲junaioでQR撮影成功!

    Yryrjunaio2
    ▲右上に歳納京子登場!

    Yryrjunaio3
    ▲3/3以降のコンテンツなんだね。

    ただし何をするアプリかよくわかっていないのでQRコードを変形するあたりで飽きた。あと、Photoshopを使わなくても根性で試していると読めるらしいよ。Let's Try!(ゲーマーズ行けよ)

    日経電子版 広報部|日本経済新聞 for iPad登場 [pr.nikkei.com]

    この2年ぐらいで、情報へのランチャーがやっぱりホーム画面のアプリであるというのがあちこちで証明されているわけだから、電子版開始の時点でiPadにアプリで対応するぐらいしても良かったのではないか。iPhone用アプリは結構前から出ていたわけですけれども。

    ていうか、ID持っているけれども、新聞読む習慣ないので全く読んでないんだよな……これで日経読むようになるかな?

    同様に、ニコニコ動画も、iPadアプリで出すべきだったんじゃないかなーと思う。HTML5の実験としては面白いのだけれども、動画閲覧までの手順がちょっと面倒なんだよな。

    月別 アーカイブ

    ウェブページ

    OpenID対応しています OpenIDについて
    Powered by Movable Type 5.2.7

    このアーカイブについて

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

    前のアーカイブは2012年2月です。

    次のアーカイブは2012年4月です。

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