2007年3月アーカイブ

item207579p1.jpg
Wonderful Tonight / Studio Apartment feat. Kimara Lovelace
  • Label: Apt.
  • Release: 2007/03/22
  • A1. Wonderful Tonight [12inch Mix]
  • B1. Wonderful Tonight [Instrumental]
  • B2. Wonderful Tonight [Acappella]

Studio ApartmentのニューアルバムからのThe Rising Sunに続く先行シングル第二弾。
第一弾が feat. Blazeってことで「ぉぉぉ」って感じだったのですが、こちらはfeat. Kimara Lovelace。
最近お気に入りのヴォーカリストだったのでグッドタイミングです。

原曲はエリック・クラプトンの至高のバラード「Wonderful Tonight」。
記憶では、ビートルズのジョージ・ハリスンの奥さんに惚れたクラプトンが彼女に捧げた曲が「Layla」で、見事彼女をゲットした後にさらに捧げたのがこの曲だったそうです。

Studio Apartmentにしては哀愁感漂うアレンジです。(まぁ原曲が原曲だからね)
でも、それがKimaraのヴォーカルとぴったし。
インストを聞いてる感じでは原曲は全く想像できないあたりが不思議なアレンジです。

ちなみにThe Rising SunはiTunes Storeでゲットできるので、こちらもそのうちダウンロードできると思います。


STUDIO APARTMENT & BLAZE - The Rising Sun (Featuring BLAZE) - Single

2007032701.jpg

ナイトミュージアムを観てきました。
新宿に新しく出来たマルイシティの中にある新宿バルト9というシネコンで見たのですが、さすがに出来たばかりなこともあって綺麗だし席もゆったりで中々よかったです。歩いていけるところにシネコンが出来たのは結構ラッキーかも。

で、映画のほうですが、設定が設定だけにあまり深く考えてもしょうがないので、頭空っぽで見たら普通に笑えました。主演のベン・スティーラーはあーゆーちょっとさえないけどいい奴の役をやらせたらやっぱりはまります。

脇役も結構豪華で、ロビン・ウィリアムス、ディック・ヴァン・ダイク、オーウェン・ウィルソンなどの他にもフレンズでフィービーの恋人役をやってたポール・ラッドや24でオードリー役のキム・レイヴァーなど海外ドラマファンにはおなじみの人がでてたりで結構豪華でした。

#前に社内wikiに書いておいたのを公開してみるテスト。

追記: この情報は若干古いです。ここを読んだ後にこちら読むと良いです。

Catalystでマルチバイトを扱う機会があるのは主に
  • ユーザーがフォームで入力する値 ($c->req->param())
  • データベースからの入出力 (DBIx::Class)
  • それ以外の文字列の評価
  • View::TTによる出力の生成
  • FillInFormによるフォームの埋め込み
  • HTTPレスポンス
です。 ここでは以下の条件でまとめてみました。
  • 文字コードはUTF8に統一
  • データベースにはmysqlを使用

下準備

テンプレート、perlのコードは全てUTF8で書きます。

mysqlの文字コードの指定は/etc/my.cnfに

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8

を書いてから起動して、create databaseします。

ユーザーがフォームで入力する値 ($c->req->param())

Catalyst::Plugin::Unicodeを使う。 prepare_parameters時に$c->req->paramsの値にutf8フラグを立ててfinalize時に$c->res->bodyからutf8フラグを落としてくれる。

ただしfinalizeメソッドをオーバーライドしているのでFillInFormなどを使う場合には

use Catalyst qw/
	...
	FillInForm
	...
	Unicode
/;

とかして最後にロードするようにする。
(via http://unknownplace.org/memo/2006/03/09#e004)

データベースからの入出力 (DBIx::Class)

DBIx::Class::UTF8Columnsを使う。 $row->get_column/get_columnsでutf8フラグを立てて返す。
__PACKAGE__->load_components(qw/UTF8Columns Core/);
__PACKAGE__->utf8_columns(qw/name description/);

とかするとutf8_columnsで指定した$row->nameや$row->descriptionにutf8フラグが立つ。
指定していないものにはutf8フラグは立っていないのでマルチバイトコードを扱いそうなカラムは全部指定した方が良いかも。

それ以外の文字列の評価

常にutf8フラグを立てて評価する。
utf8::decode($str);

View::TTによる出力の生成

Catalyst::View::TT::ForceUTF8を使う。 テンプレートをutf8フラグを立てて処理する。
script/create.pl view TT TT::ForceUTF8

でViewクラスを作るか

すでにあるMyApp::View::TTを

use base 'Catalyst::View::TT::ForceUTF8';

として継承関係を変ればOK。

FillInFormによるフォームの埋め込み

通常は上記のことだけでOKなのですが、まれに
$c->req->param->{name} = 'ほげ';

というような処理をする場合、当然この文字列にはutf8フラグが立っていないのにView::TT::ForceUTF8でレンダリングされたutf8フラグ付きの文字列にfillformしようとするため文字化けします。

対処方法としては、"・それ以外の文字列の評価"で説明したとおり、常にutf8フラグを立てて取り扱えばいいのですが、面倒なときもあるのでHTML::FillInForm::ForceUTF8を使ったCatalyst::Plugin::FillInForm::ForceUTF8ってのを作りました。これだとfillform時に全てutf8フラグを立てるので文字化けは起こらなくなります。
ついでにFV::Sとか使ってると勝手にfillinするおせっかいな処理を抑制するオプション付き。

MyApp->config->(
    fillinform->{
        auto => 0
    }
);

HTTPレスポンス

HTTPレスポンスのcontent-typeはCatalystではデフォルトでutf8が設定されるけど、明示的に指定したい場合はMyApp::Controller::Rootで
sub render : ActionClass('RenderView'){}

sub end : Private{
	my ($self, $c) = @_;

	$c->forward('render');
	$c->res->content_type("text/html; charset=utf8");
}

とかしておけばOK。

古くは中学のときにDuran Duranのリミックスが入った12インチを必死こいて集めてたころから、リミックス大好きでよくシングルCDを買います。
特にPopsやR&Bなアーティストの曲でHouseリミックスが入ってるやつがお気に入り。
iTunes StoreだとEditされて短くなってたり、そもそも日本のiTunes Storeだと買えなかったりするので1曲のために1000円近く出すのはどうなんだ?と思いつつも買ってます。

で、最近買ったCDSの中から誰でも聞いたことあるアーティストでステキなリミックスが入ってるやつをご紹介。DJ Useにもお勧め。

Deja Vu
Deja Vu
posted with amazlet on 07.03.26
Beyonce
Sony / Bmg Import (2006/09/12)
売り上げランキング: 28195

B'dayからのシングルカット。
3. Freemasons Club Mix - No Rapが最高。Freemasons remixならではブリブリベースなディスコリミックスです。DJ useでもすんごい使いやすいのでついつい使ってしまう一枚です。
残念なのは2. Freemasons Radio Mixではラップが入ってるのにこっちには入ってないこと。

SexyBack, Pt. 2
SexyBack, Pt. 2
posted with amazlet on 07.03.26
Justin Timberlake
Sony / Bmg Import (2006/09/05)
売り上げランキング: 42377

FutureSex/LoveSoundsからのシングルカット。
3. Pokerface Club Mixがお勧め。パーカッションとキーボードが気持ちいい爽やかハウスリミックス。同じくシングルカットされてるMy Love
にもPokerfaceのリミックスが入っててこっちもお勧め。

Only One Too (Remixes)
Only One Too (Remixes)
posted with amazlet on 07.03.26
Jewel
Atlantic / Wea (2006/10/10)
売り上げランキング: 41184

Goodbye Alice in Wonderlandからのシングルカット。
これ、Stonebrigde、Lenny B.、Pull、DJ Volumeとリミキサー陣が豪華です。個人的には1. Stonebrigde Club Mixと悩むところだけど2. Lenny B. Club Mixをチョイス。こっちの方が気持ち盛り上がり感が上のような気がします。朝方にかけるとアガル系。

Nothing in This World, Pt. 1
Nothing in This World, Pt. 1
posted with amazlet on 07.03.26
Paris Hilton
Warner Bros / Wea (2006/10/31)
売り上げランキング: 68220

Parisからのシングルカット。
鳴り物入りでデビューしたParis Hiltonのデビューアルバムですけど、セールス的にはどうだったんでしょ?個人的には嫌いじゃなかったです。
で、このシングルもJason Nevins、Dave Aud、Kaskadeとリミキサーが豪華。レコード会社の必死さが伺えます。
しかもどれもいい出来。Jason Nevinsのは音的に一番原曲近い感じ。Dave Audのはシンセ多めでアガる感じ。Kaskadeのは・・・相変わらず哀愁ただようKaskadeワールド。
楽曲自体キャッチーで耳に残るしアルバムでは一番好きです。

冬は大嫌いです。引きこもりたいです。冬眠したいくらいです。

でも、そろそろ暖かくなってきたので、この前の祭日に浅草~水上バス~お台場の小旅行を敢行しました。

2007032101.jpg

まずは朝から電車で浅草。

2007032102.jpg

お昼にもんじゃ食べてから花やしき。

2007032103.jpg

水上バスに乗っていざお台場へ。

2007032104.jpg

途中、鳥の襲撃を受けつつ。

2007032105.jpg

お台場上陸。

かなり満喫。

item186892p1.jpg
Lovely Day / Akakage
  • Label: Noboru
  • Release: 2007/02/23
  • A1. Lovely Day feat. Georgia Carter [Extended Version]
  • A2. U Make It Real feat. Sadat X & Telmary
  • B1. This Is Your Time feat. Carolyn Harding
  • B2. Swinging Jack feat. Jack Regan

アルバムFighissimaからのシングルカット。Bill WithersのLovely Dayのカバーです。
アルバムバージョンより長めのExtend VersionでDJフレンドリーです。
かなり爽やかな仕上がりでRasmus FaberやStudio Apartmentが好きな人なら絶対はまります。おしゃーれーでさわやかー。
4月、5月のこれからの季節にはもってこいの曲です。

個人的にはB2. Swing Jackが結構気に入ってます。
この手のリズムって持っていないので重宝しそう。

Fighissima
Fighissima
posted with amazlet on 07.03.15
akakage Jack Regan Georgia Carter TOYONO Carolyn Harding
ポニーキャニオン (2006/11/15)
売り上げランキング: 42648

今日のお昼は久々に神楽坂に繰り出してきました。
肉まんで有名な五十番という中華料理屋に行ってきました。
一階で肉まんを販売しているのですが、結構並んでいました。

で、二階にあがって支那そばと肉まんのセット800円を注文。

2007031401.jpg

2007031402.jpg

横浜中華街でよく売っているような巨大肉まんとちっちゃな支那そばがついてきました。
お味のほうはまぁまぁでした。一階で売ってたカレーまんだとかエビチリまんが食べてみたかったです。

blogに載せるなど、ちょっとしたイメージのサイズ変更やクリッピングにMicrosoft OfficeにくっついてきたPicture Managerっていうソフトを使ってます。
フォルダ内のイメージをまとめて編集するときとか、結構軽くて重宝しているのですが、たまに起動がバカみたいに遅くなります。

で、いっつも対応方法を忘れて困るのでメモ。

原因: すでに接続されていないネットワークドライブを参照するのにタイムアウトを待つから

対応:
  1. c:\Documents and Settings\[ユーザー名]\LocalSettings\Application Data\Microsoft\OIS\OIScatalog.cag をノートパッドとかで開く(隠しフォルダなのでエクスプローラからたどるときは[ツール]-[フォルダオプション]-[表示]の[ファイルとフォルダの表示]を[すべてのファイルとフォルダを表示する]に選択しておく必要があります)
  2. <mru path="~の行のうちでネットワークドライブであろう行を全て消す
  3. 普通に起動してみる

参考:
Microsoft: Office Picture Manager は、開くの低速になります。

カンプノウでのクラシコをテレビ観戦しました。

2007031201.jpg

ここんとこサッカーでいいことなかったです。
レッズはゼロックスでガンバにボコボコにされ、昨日は信じられないような試合でドローに持ち込まれるし、バルサはチャンピオンズリーグでカンプノウで負ける醜態を見せて敗退するし、挙句の果てにユベントスがセリエBでブレシアに負けて二敗目を喫し、危なくナポリに首位を明け渡すところでした。

で、両チームともチャンピオンズリーグで敗退決定しただけに、ここで負けたら後がない状態でのクラシコ。
サンチャゴ・ベルナウベウで2-0と完敗だった前回からするとメンバーが戻ってきたバルサでしたが、ここに来て出場停止のザンブロッタ、ジュリを欠く状態で戦わなければならなくなりました。
対するマドリーも怪我人・病人続出。カンナバーロ、ロベルト・カルロス、ベッカム、レジェスと離脱。
というわけで、戦前からの心配は3バックで挑むであろうバルサと守備の要を欠くマドリーの両チーム守備陣大丈夫?てな感じだったのですが、それ以前にオレゲールが前半だけでイエローカード二枚でバイバイ・・・そういえば去年はマドリーの方がロベルト・カルロスが一発で退場したっけ。普通に11人対11人のまともなクラシコが見たかったです。

終わってみればなんとか3-3のドロー。スコアの割りに後味の悪い試合でした。
バルサの3ゴールがメッシのハットトリックというのが唯一の救いです。

はっきり言ってバルサの3-4-3は機能していないと思います。結果も出てないし中盤に人数を割いているわりにザル。最終ラインまで持ってこられたらサイドが足りないので持ちこたえられない。
攻撃もサイド攻撃ができないのは仕方ないにしてももっとピッチをワイドに使ったほうが中でのパス回しが楽になると思うんですけどどうでしょ?


トップ集団を形成するバレンシアが引き分け、セビージャが負けてくれたおかげで勝ち点差なしで首位に返り咲いたけど、4位のマドリーまで5ポイント差の中にひしめく混戦。ここからが正念場ですね。

FC Barcelona:
Valdés
Oleguer
Thuram
Puyol
Márquez (80' Gudjohnsen)
Iniesta
Xavi
Deco (71' Belletti)
Messi
Eto'o (45' Sylvinho)
Ronadinho

Real Madrid:
Casillas
Salgado
Ramos
Helguera
Torres
Diarra
Gago
Guti (80' De la Red)
Raúl (60' Robinho)
Higuaín
Van Nistelrooy

Goals:
05' Van Nistelrooy
11' Messi
13' Van Nistelrooy (PK)
27' Messi
72' Sergio Ramos
90' Messi

item183799p1.jpg
Heavenly Star / 元気ロケッツ
  • Label: Q Entertainment
  • Release: 2007/02/16
  • A1. Heavenly Star [Original]
  • A2. Heavenly Star [Glorious Remix / metalmouse]
  • A3. Heavenly Star [Acappella]
  • B1. Heavenly Star [Count Down Remix / Headwaters]
  • B2. Heavenly Star [Instrumental]

CISCOのサイトでやたらプッシュしてたので何も考えずに買ったのが今日届きました。

いい!

Happy & Upperな音はボクのハートのストレートど真ん中。

イントロはフィルターヴォーカルがDaft Punkかと思いましたが、サビから女性ヴォーカルが入ってきて一気に盛り上がるのがたまりません。
capsuleあたりが好きな人だったら間違いなく好きです。
ただOriginalはボクのセットで使うにはちょっちBPMが遅いかな。
それでも何とかいれて行きたいと思わせる曲です。

このユニット、全然知らなかったのですがゲームクリエータの水口哲也さんがプロデュースしてるそうで、PSPのルミネスII ってゲームにも参加してるそうです。

で、去年の暮れにMySpaceやYouTubeでPVがかなり評判だったということなんで見て見ました。
これまた、キラキラな感じで好みなタッチ。




http://www.youtube.com/watch?v=XL2od1AF_Cs

CDはまだ出てないみたいですが、iTunesで視聴・購入できます。

元気ロケッツ - HEAVENLY STAR / BREEZE - Heavenly Star

超お勧め。

Sugarless GiRL
Sugarless GiRL
posted with amazlet on 07.03.06
capsule
ヤマハミュージックコミュニケーションズ (2007/02/21)
売り上げランキング: 125
おすすめ度の平均: 4.5
5 進化中…
4 続 capsule 。
4 収録時間がもうちょっと長いといいな♪

capsuleの新譜。最近のお気に入りです。
前作のFRUITS CLiPPERより更に音が分厚くなって一発目のM2. Starry Skyからゴリゴリのディストーションサウンドでかなりいいです。
M4. Sugarless GirlのようにPOPな曲も残ってるけど、全体的にはDaft PunkのようなElectro Rockな感じです。
アルバムとして統一感がないって言っちゃそれまでで、それがまたcapsuleの幅広い音楽性の魅力でもあったりするので、お勧めです。

いまさらですが、スリップマットを変えたついでにスリップシートをFlying carpetsというのに変えてみました。
スクラッチをするわけでもないので、どうでもいいかと思ってたのですが全然違いました。
頭出しが全然楽になります。
もっといいものがあるのかもしれないけど、結構おすすめ。


メッチャ滑ります!スリップシート8枚入り!Flying carpets

8枚もいらないけど12"ジャケットに入っててちょっとかわいいところも好きです。

あ、ちなみにスリップシートってのはターンテーブルの上に乗っかってるマット(スリップマット)とターンテーブルの間に引くビニールシートです。これのおかげでターンテーブルは回ってるけどレコードを止めておくことができるって感じです。

Hed Kandi: Twisted Disco
Hed Kandi: Twisted Disco
posted with amazlet on 07.02.27
Various Artists
Hed Kandi (2007/02/12)
売り上げランキング: 59788

久々にHed Kandiのサイトに行ったらデザインが変わってたのでビックリ。

ついでにTwisted Discoの2007年版が出てたのでゲットしました。

このシリーズはダークでセクシーってのが売りで、ジャケットもちょっとエロ目です。
Eric Prydz VS Floyd / Proper Education、Sharam / PATT、Kaskade / Be Stillなんかが入ってて相変わらずヒット曲満載でお得です。
こ~ゆ~のが好きな人にはたまらん一枚だと思います。

とはいえ、だいたい持ってたのでスルーしようかと思ったのですがCamille JonesのThe CreepsとDADA Feat. Sandy Rivera & TrixのLollipopが入ってたので取りあえず買っておきました。

Tokyo ProjectにMark DoyleとJason Brooksを持ってかれて以来今一なHed Kandiですが、そのTokyo Projectも新譜をリリースしそうにないのでど~なってんだって感じです。

夏に出るであろうBeach Houseに期待。

Flex2でとりあえずやってみたかったのがこれ。

* ファイルサイズは5Mbytesが上限です。
* 実際にはファイルの保存などは行ってません。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
  layout="absolute" 
  width="400" 
  height="120" 
  creationComplete="initApp()">
  <mx:Script>
  <![CDATA[
    import flash.events.*
    import flash.net.FileReference;
    import mx.controls.Alert;
    
    private var max_size:int;
    private var post_url:String;
    private var fileRef:FileReference;

    private function initApp():void{
      max_size = Application.application.parameters.maxSize;
      post_url = Application.application.parameters.postURL;
      fileRef = new FileReference();
      fileRef.addEventListener(Event.SELECT,fileSelectEvent);
      fileRef.addEventListener(Event.OPEN,fileOpenEvent);
      fileRef.addEventListener(Event.COMPLETE,fileCompleteEvent);
      fileRef.addEventListener(ProgressEvent.PROGRESS,progressEvent);
      btn_browse.addEventListener(MouseEvent.CLICK,selectFile);
      btn_upload.addEventListener(MouseEvent.CLICK,upload);
      btn_cancel.addEventListener(MouseEvent.CLICK,cancel);
    }
    
    private function fileSelectEvent(event:Event):void {
      progress.label = "";
      if(fileRef.size > max_size) {
        Alert.show("Size over");
        btn_upload.visible = true;
        btn_upload.enabled = false;
        btn_cancel.visible = false;
        btn_cancel.enabled = false;
        btn_browse.enabled = true;
        return;
      }
      progress.setProgress(0, 0);
      text_file.text = fileRef.name;
      btn_upload.visible = true;
      btn_upload.enabled = true;
    }
    
    private function fileOpenEvent(event:Event):void {
      btn_upload.visible = false;
      btn_upload.enabled = false;
      btn_cancel.visible = true;
      btn_cancel.enabled = true;
      btn_browse.enabled = false;
    }

    private function fileCompleteEvent(event:Event):void {
      progress.label = "Completed";
      btn_upload.visible = true;
      btn_upload.enabled = false;
      btn_cancel.visible = false;
      btn_cancel.enabled = false;
      btn_browse.enabled = true;
    }

    private function progressEvent(event:ProgressEvent):void {
      progress.setProgress(event.bytesLoaded, event.bytesTotal);
    }
    
    private function selectFile(event:MouseEvent):void {
      fileRef.browse();
    }
    
    private function upload(event:MouseEvent):void {
      var param:String = "file";
      var req:URLRequest = new URLRequest(post_url);
      req.method = URLRequestMethod.POST;
      fileRef.upload(req, param, false);
    }

    private function cancel(event:MouseEvent):void {
      fileRef.cancel();
      progress.label = "Canceled";
      progress.setProgress(0,0);
            btn_upload.visible = true;
            btn_upload.enabled = true;
            btn_cancel.visible = false;
            btn_cancel.enabled = false;
            btn_browse.enabled = true;      
    }
  ]]>
</mx:Script>
  <mx:Panel x="0" y="0" width="400" height="120" layout="absolute">
    <mx:TextInput x="10" y="10" width="180" id="text_file"/>
    <mx:Button x="198" y="10" label="Browse" width="80" id="btn_browse"/>
    <mx:Button x="286" y="10" label="Upload" width="80" id="btn_upload" enabled="false"/>
    <mx:Button x="286" y="10" label="Cancel" width="80" id="btn_cancel" visible="false" enabled="false"/>
    <mx:ProgressBar x="10" y="40" width="356" id="progress" label="" mode="manual"/>
  </mx:Panel>
</mx:Application>

ちょっと長く見えますが、ほとんどがボタンを見せたり隠したりと機能とは関係ないところです。
ちゃんとした人が書いたらもっと綺麗にまとまると思います。

AJAXでもできるんだろうけど、結構面倒ですがFlex2だとあっという間です。
もちろんアップロードされたファイルを保存するなり加工するなりのCGIは必要です。

で、FileRefクラスを使ってみた感想は

いいとこ
・アップロードの状態を簡単に表示できる
・アップロードさせる前にファイルサイズをチェックできる
・キャンセルが簡単

わるいとこ
・アップロードが終了したときの返り値がHTTPステータスしか取れない

てな感じです。
もちろんAJAXなアップローダーを実際に触ったわけでも、FileRef自体(というかFlex自体も)まともに触り始めて間もないので間違っているかもしれません。ツッコミ歓迎です。

プロフィール

このアーカイブについて

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

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

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

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