2009-11-26

【PHP】php.iniのregister_globals設定【サーバ移行】

ちょっと前の話になるんだけど、

もう忘れてしまいそうなのでメモっておく。



この間、研究室の業績サーバを移行する仕事をしていた。

以前より構築済みの環境は、



言語:php4.1.x

データベース:PostgreSQL7.1.x



まあ、単にサーバのPCさんの調子が微妙だったので、この際移行してしまおうということだった。

研究室だけでの閲覧に限られていたので、別にセキュリティを強固にするわけでもない。

新しく作った環境は、



言語:php5.2.x

データベース:PostgresSQL8.3.x

��ちょっと、細かいバージョンの数字は忘れた)



PHP4とPHP5はかなり内容に違いがあり、移行時に問題があることは知っていた。

でも、そのほとんどはクラスに関係したもだ。

すでに構築済みのphpはクラスを使っていない単純な構成だったので、移行時の障害にはならないと思っていた。

データベースは下位互換あるらしいし。





でも、実際やってみると、うまくいかなかったので、問題のあるソースをだどって行くと・・・



postしてるのに、$_POSTの記述がどこにもない



ことに気づく。

どうやら、前回のサーバでは、php.iniの設定を


register_globals = on

としていたらしい。



register_globalsがonだと、


print $_POST["hoge"];

と書くべきところを、

print $hoge;

と簡略化できる。

register_globalsは、4.1まではデフォルトでon、4.2以降はoffになっている。

つまり、今回のサーバ移行で起きた問題は、phpソースがregister_globalsをonにしていることを前提としているのに、register_globalsをoffに設定していたのが原因らしい。



問題解決。

でも、そもそも、register_globalsがデフォでoffになったのは、セキュリティ的に危険であるため。

今後、PHP6ではregister_globalsが廃止され、省略表記は不可になるらしい。

��>Register globals - GeeklogJpWiki



じゃあ、今のphpもoffで使える仕様に変更しないとまずいかもね?

また、移行の話がでたとき困るし・・・



ま、いいかwそのときの後輩がなんとかしてくれるさ。きっと。



2009-11-24

Twitterの面白さが分かった!・・・ような気がする。

ここ最近、このブログの更新をしていない。



ブログ11月の記事数:2



いくら気まぐれに書いているとはいえ、平均月10個以上は更新してきたことを考えるとあまりにも少ない。

そのかわり、



Twitter11月のpost数:351



どうしてこうなった!





---

正直、SNSが苦手な自分がここまでpostするとは思わなかった。

よくあるSNSとTwitterの大きな違いは、



他人とコンタクトする気軽さ



なんだろうと思う。



自分がSNSを苦手とするのは、コンタクトの煩わしさ。

mixiでいうマイミクのような申請式の友達登録、足跡等、余計に気を遣ってしまうだけの機能に耐えられない。

相手が気にしていようがいまいが、こちら側がどうしても自然と気を遣わざる終えない。

なぜ、ネット上でここまで相手に気を遣わなければいけないのか(別に気を遣わないことを推奨しているわけではない)と、つい思ってしまう。



それに、特にmixiに限った話では、「招待制」というのも気にくわない。

「招待制」である以上、自然とリアルと同じ人間関係のネットワークがmixi上にできる。

結局、mixi上での発言はそのままリアルでしゃべってるのと同じ・・・そんな気がしてくる。



世界中につながるネット上であえてクローズな環境、リアルの人間関係。

それって、何の意味があるの?と思ってしまう。







それに対して、Twitter。

コンタクトの煩わしさはない。自分が気になるユーザ、今後この人の発言を見たいと思ったときに一方的にフォローをする。

それだけで相手の発言を閲覧することができる。

そもそも、Twitterの発言自体は自分でプライベートにしないかぎりオープンである。当然、ググれはヒットする。

だから、フォローするとは、ただ単に、気になる人にブックマークしてるだけとも考えられる。

実に勝手気まま。

��人によっては、相互フォローとかリムーブとかフォロワー数とか気にする人もいるようだけど・・・それは、本来のTwitterの面白さを損なっている気がする。)



だから、自分はTwitterを、



自分の気に入ったユーザのみに絞って閲覧できる140文字の文字制限の掲示板



という位置づけで見ているんだと思う。

ちょっとずつ、Twitterの面白さが分かってきた気がする。



2009-11-13

ボカロ小学生にボカロ先生・・・

ボカロ小学生「VOCALOID2 歌愛ユキ」

��>http://www.ecj.jp/U1301.doit?goods=483007

��>http://www.ah-soft.com/vocaloid/yuki/index.html



ボカロ先生「VOCALOID2 氷山キヨテル」

��>http://www.ecj.jp/U1301.doit?goods=483006

��>http://www.ah-soft.com/vocaloid/kiyoteru/index.html



アーティストエディション01「VOCALOID2 SF-A2 開発コード miki」

��>http://www.ecj.jp/U1301.doit?goods=483008

��>http://www.ah-soft.com/vocaloid/miki/index.html



ということで、どうやらAH-Softwareが3つのボカロをリリースするみたい。



(゚Д゚)



('A`)



うん・・・



まあ、どうなんだろうこれは・・・



mikiはまだいいんだけれど、問題は残りの2つ。





男性ヴォーカル需要として先生はありな気がするが・・・何ゆえ先生?

小学生って・・・ネタ動画作る人出てきそう。

発売時にネタ扱いを受けて終了しそうな予感。







そして、ソフト製作はAHS・・・ああ、CloneDVDとか作ってたところかー。

あそこって、音楽系のソフトで有名なのあったっけか?

最近はようつべとかニコ動に対応して、動画をDLするソフト作ってたみたいだけど。





もう・・・なんか、いろいろ狙った感じが出てて気持ち悪い。



2009-11-06

Adobe AIR 2のベータ公開お知らせサービス

ここで、Adobeのアカウントを登録すると、Adobe AIR 2のベータ版公開時にお知らせしてくれるんだって!



��>Adobe AIR 2 Beta Notification - Adobe Labs



もちろん、ベータの段階では英語版しかないけども。



Adobe AIR 2では、パフォーマンスの改善はもちろんのこと、外部記憶デバイスの認識、マイクからの音声取り出し、マウスジェスチャー・マルチタッチ対応、HTML5/CSS3のWebKitなど、大幅に拡張されるみたいです。



Blogではマルチタッチの動画が上がってた。

まだ、タッチスクリーン自体は普及してないけど、iPhoneの流れからすれば、段々一般的な入力デバイスになっていくのかな。



��>Cynergy Systems Demos Adobe AIR 2 Multi-touch Support - Adobe AIR Team Blog





これからのAIRの発展に期待。

新ボカロmikiと同時期にさらに2つリリース!?・・・ついでに考察っぽく。

新ボカロmikiが発表されましたよね。



そーす

��>初音ミクみく - 出た!「VOCALOIDS☆X’mas」公式サイトと新VOCALOID2「MIKI」





だらだらTwitterみたら、「ヤマハのボーカロイド開発チーム」のつぶやきが・・・



twitter.jpg



( ゚ Д ゚)



(゚ Д ゚)



な、なんだってー!!



これは、miki含めて同時3つリリースってことですか?

すげぇ。



それに、新ボカロはYAMAHAからリリースというフラグですか、これ。


��追記:AHSから発売)

やべぇ、テンション上がってきた(゚∀三゚三∀゚)









でも、すでにクリプトンからも新ボカロ発表されているし・・・ブームだからって若干乱発しすぎな気がする。

バリエーションが増えるのは、DTMユーザや「ボカロは楽器派」からすれば表現の幅が広がるだろうし、

「ボカロは俺の嫁派」な自分からすればキャラが増えてニヤニヤなんだが・・・



多く出るならそれでもいいけれど、リリースされる製品のクォリティの確保は当然のこと、

各々のキャラの差別化が必要になる気がする。



ただリリースペースが早いだけで違いがはっきりしてないと、

それについて来れないユーザーが出てきたりしないだろうか?

下手すると、後出しのもは全部淘汰されていって、結局、



「ボカロ=ミク>>>越えられない壁>新ボカロ」



みたいなことにもなる気がする。





特に今までのボカロの場合は、キャラクター設定はほとんどない状態でリリースされて、

多くのユーザーが時間をかけていろいろな二次設定を作ったり、共有することでキャラが作られてきたわけで。



「みんなで二次設定を作り、共有して、共通意識となるキャラを作り上げる」



この面白いシステムが自然とできたから、ボカロがブームになったと思うんだけども。





このシステムの働きよりリリースのペースが早くなった時点で、ボカロ終了な気がしてならない。

2009-10-30

Funnel I/Oでフィジカルしてみた【Flash】

どうも、ゆとりです。



フィジカルコンピューティングをするにあたり、

どのハードウェアを使おうか、かなり前から悩んでいた。



悩んだ挙げ句、今回は、Funnel I/O使うことにした。

��>funnel.cc | Hardware / FIO



Funnel I/Oは、日本の方が開発されたボード。



「LilyPadを元に開発したArduinoコンパチブルボード」

ということで、ベースはLilyPad Arduino。

さらに、XBeeによる通信機能、USBポートを使った電力供給と充電機能がついている。



自分としては、無線は必須だと思っていたのでちょうどいい。

ArduinoからXBeeの通信をしようとすると、XBeeの本体とは別にシールド(拡張ボードみたいなもん)が必要となるので、めんどくさいと思って。



今回は、最初のセットアップとFlashからの制御テストをやってみた。



メインで参考にさせていただいたブログはこちら。

��>Funnel Set up! - labo

でも、ちょっと記事が古くて微妙に違っているところがあったのでちょっと補足。





[手順1] Funnel I/Oを手に入れる



特に部品については変更点なし。

ただ、Funnel I/Oは充電機能がついているはずなので、参考サイトに書かれている「リチウムイオン電池充電器」は購入する必要はない。



CA3C0183.JPG

▲左からFunnel I/O、XBeeエクスプローラUSB、XBee無線モデム。Funnel I/Oの縦の長さはつまようじ程度。





[手順2] Funnel用のドライバとかライブラリをダウンロードする



同URL

http://code.google.com/p/funnel/downloads/list

から「funnel_r698.zip」をダウンロード。

たぶん、これが今(2009/10/30)の最新版。





[手順3] XBeeを使えるようにする



これを行う前にやることがもう一つ。

「XBeeエクスプローラUSB」を使うにはドライバが必要なのでインストールする。

やり方は以下のサイトで確認。

��>XBeeで無線通信!(4) -



使用するソフト「X-CTU」は、正確には、こちらのURL

http://www.digi.com/support/productdetl.jsp?pid=3352&osvid=57&s=316&tp=5

の下段にDLリンクがある。



この手順でやっていることは、要するに、無線モデムへのファームウェアの書き込み。

2つのXBee無線モデムに親機用設定と子機用設定のファームウェアを書き込む。





[手順4]Funnel I/OとXBeeエクスプローラUSBの設定



参考サイトの解説のまま。



aea81fa4.jpg



CA3C0188.JPG





[手順5] Funnel I/Oの電源を入れてみる



ここで、充電池を装着した状態でUSB(A-miniB)に接続すれば、自動充電を開始する。



なお、参考サイトにも書いてあるように、このUSBは電力供給専用。

USBによる通信は機能しないので、無線でプログラムを書きこみを行う。



CA3C0193.JPG

▲オレンジのランプ(CHG)が充電中。充電が終わると自動で消灯する。





[手順6] Funnel I/Oに設定ファイル(スケッチ)をアップロードする



同URL

http://arduino.cc/en/Main/Software

から「Arduino 0017」をダウンロード。



参考サイトでは「Arduino 0012」なので少し違う。

「Tool→Board→Arduino Pro or Pro Mini (8 MHz)」はないので、

代わりに、「Tool→Board→Arduino Pro or Pro Mini (3.3v, 8 MHz) w/ ATmega168 」を選択する。



その他の作業は、全て参考サイトと同様。

これで、無線ネットワークから、プログラムをFunnel I/O本体に書き込む。





[手順7] funnel_serverの設定



参考サイトと全く同じ。

このサーバーを立ち上げることで、上位言語(ここではFlash)からFunnel I/Oを制御することが可能となる。

つまり、ブラックボックス。

ゆとりボックス。





[手順8] 動作確認



テスト用ファイルをFlash CS4で読みこんでパブリッシュ。

テストプログラムは、無線ごしに命令を送って、定期的にFunnel I/O内蔵のLEDを光らせるというもの。



window2.jpg

▲パブリッシュした結果のFlash



動画にしてみた。(ケータイ画質)





できたよ(∩´∀`)∩ワーイ







今後は、いろいろセンサをつけて、Flash側で抵抗値の変化を見れるようなものを作る予定。

フィジカルコンピューティングを始めよう

電子工作しようと思ったんだけど、

今はフィジカルコンピューティングなる便利なものがあるんだよね.



>>フィジカルコンピューティングとは - はてなキーワード



つまり、「電気・電子専門の人でなくとも簡単に電子工作出来るようにしよう!」ってことだと自分は理解している。



電子工作の敷居を下げる → 専門外のクリエイティブな層の人たちでもモノづくりができるようになる



というのが目的なんだよね。たぶん。



最近だとセカイカメラみたいな、ウェアラブルな方向性のモノが注目されてきている。

それは、iPhoneの普及とか携帯機器の高性能化とかが背景にあるんだろうけども。



あと、タンジブルビットのように、コンピュータへの入出力はキーボード、マウスだけじゃないとする考え方もある。



そういうのに対して、フィジカルコンピューティングってのは今後普及、活発化していく・・・ような気がする。





対応言語も特殊で、何故かAction Script (Flashを作るための言語)が対応している。

Flashの目的も、たぶん同じようなことだと思われる。

だから、フィジカルコンピューティングとの親和性が高いから対応になっているのかなぁと思った。





ということで、Flash対応が面白そうなので、電子工作はフィジカルコンピューティング的アプローチで攻めることにしますた。



でも、まあ、これって要はゆとり仕様ってことだよねw

ゆとり乙

2009-10-29

【ニコニコ動画(9)】外部プレイヤー完全解禁ktkr【ウンヴォァ!】



��タ――(゚∀゚)――!!



今まで,特定のブログでのみ外部プレイヤーの使用が許可されていたんだけど,

ついに完全解禁されたようです!



ということで,試しにテストで外部プレイヤー貼ってみました.

動画は最近お気に入りのきりんさん.



ウンヴォァ!ウンヴォァ!ウンヴォァ!

2009-10-28

今週のオススメ嫁曲:【KAITO】 Eternally





これがKAITO、だと!?



いつもの爽やか兄さんじゃない!

いつもの弄られキャラの兄さんでもないw



こんな声質のKAITO聴いたことないんすけど。



��MDの振り付けもかっこいい!

なんとも久しぶりのイケKAITO。



間違いなくこのKAITO兄さん、本気です。









・・・もうなんだか、「オススメ嫁曲」とかカテゴリ的に意味なくなってきたようなw

2009-10-26

【ミクZ4】完走11位、そして繰り上げ10位【SuperGT#8】





完走11位、そして繰り上げ10位おめ!



動画が上がっていたので、食い入るように見てました。



初ポイントゲット。

1ポイントだけど、重い1ポイント。

今まで、嘆願書がないとだめだった車だったのに、

ここまで成長するなんて・・・最高の痛車です!



9戦目はウェイトついちゃうけど頑張って!

��あ~やっぱり生で見たい・・・)

2009-10-25

BEST OF ラマーズPの公式サイトオープン!

たった今、密林でポチッってきたぜ!



>>http://lamaze.jp/



上記サイトで「EXIT TUNES PRESENTS THE COMPLETE BEST OF ラマーズP feat.初音ミク」の収録曲が発表されてたんですよ!



01. 1

02. 有限実行

03. 驫麤~とりぷるばか~

04. lost angel

05. ストロベリー(Album.ver)

06. でんわにでんわ

07. ぽっぴっぽー

08. 目が覚めたら

09. ノスタルジア

10. 小さな世界に恋をして(Album.ver)

11. 笑顔にさせて

12. つよがり(オワタP-piano arr.)

13. ペケ印

14. 初音奔放曲

15. promise(☆ゲッダン☆)

SPECIAL



自分の好きなストロベリーとぽっぴっぽーが入っているのなら、ポチらずにはいられない!

ぴっぴぴぷぅ〜♪でおなじみの初音奔放曲まで入ってるしw



04,09,13が新曲っぽい。



そして、15曲目。

まさかのゲッダン





・・・おなかいっぱいです。



2009-10-23

【Heartsnative】みっくみくにされますた【MOSAIC.WAV】

mikkumiku.jpg

▲はちゅねさんも推薦!オリコンデイリー7位おめ!





買いましたとも!(ゴルベーザ風に)



もち,初回限定版で.

鼻そうめんPもとい,かんざきひろさんのジャケットのミクさんカワイイ!





みくみくにしてあげる【してやんよ♪】のフルバージョン

「みんなみくみくにしてあげる♪」

が入っていることで話題のMOSAIC.WAV × 鶴田加茂(ika)コラボCD「Heartsnative」

��正確にはコラボという感じではないけど,コンセプトはそんな感じだよね?たぶん)





もちろん,ミクFes'09で演奏していた「HATSUNEtive」も入っています.

何この電波ソングw

まさに,アニメOPっぽい感じはさすがMOSAIC.WAV.

しかも,CD名が「Hearts + native」で,

曲名が「HATSUNE + tive」とかダレウマすぎるw



さらにもう一曲,新曲に「Mimic me.」,

MOSIC.WAVのアレンジで「電気の恋人」「キミは何テラバイト?」の全7曲.





初回限定版なら,ブックレットに,7人のイラストレーターのきせかえジャケットまでついてくる!

KEIさんが描いたはちゅねカワユス(´∀`*)





7曲中5曲が,み~こと初音ミクの2人で歌っています.

人間とミクということで,違和感残るんじゃないかと心配していたんだけども,

何故か無理なく普通に聴けてしまって驚いた.



み~この声質がミクに近いのか,ミクの調教が良いのか・・・

おそらくその両方だと思われ.

2009-10-20

いまさら jubeat ripples

前作ちょろっとやってたのに、いまの今まで、やっていなかった続編。



今日(朝4時とか変な生活してます)気晴らしにゲーセン行ってやってみた。







1回4曲プレイ?・・・これ、いつ稼働開始したんでしたっけw



ウホッ前作からデータ受け継ぎできるんだ、ワーイ





・・・「空色デイズ」キタ――(゚∀゚)――!!

さらにアリプロの曲までw



まさかのアニソン補給。

まあ、この2曲を聞くかぎりはjubeatのラインナップとしての違和感はあまりないのでよいけれど。

むしろ大歓迎。





そして、

「more more more」入ってるのか!



よもや、Capsuleの曲が音ゲーでプレイできるとは!

ヤスタカファンじゃないんだよ。Capsuleファンなんだよ。パフュームなんて知らないよ。

こしこかわいいよこしこ。





曲が増えただけでなく、細かいところがいろいろ変わってたり、追加されている要素も多く、

おじさんついていけませんorz





----

一応、ブログパーツもjubeat ripples仕様に変えました。

メニュー項目なくなって、個人データを閲覧できるページがリンクされるだけになったみたい。



この方が軽くていいね!

前の重かったし、プレイしたゲーセンの場所、プレイ回数が一発でわかるのがはずかしかったし。

2009-10-15

【Comodo Antivirus】cmdagent.exeのCPU使用率が100%になる件

自分は,ノートン先生買うのもめんどいし,高いし,重いしって思っているので,

最近は無料でFirewallからウイルスチェックまでしてくれるComodoの「COMODO Internet Security」を使っている.



言語は英語しかないけど,フリーのくせに強力.

設定ちゃんとしないと,正規ソフトまで遮断しちゃうので,扱いがめんどうなんだけど,

データベースの更新も頻繁だし,比較的軽いし,

充実したオプション設定があるところが魅力的.



なんで,今年に入ってからずっと愛用してる.





・・・なんだけど,ある時突然,機能の一つである「Comodo Antivirus」の実行ファイルcmdagent.exeがCPU使用率100%になる問題が起きた.



最初,cmdagent.exe自体がウイルスかと思って焦ったよ(;´∀`)



解決法はWikiに書いてあったのでメモ.



��>Comodo Firewall @ Wiki - トップページ



要するにAVデータベースの不具合らしい.



そこに書いてあるように,



1. セーフモードで起動。



2. c:\program files\Comodo\Comodo Internet Security\scanners\bases.cav を削除



3. c:\program files\comodo\comodo internet security\repair\bases.cav を c:\program files\comodo\comodo internet security\scanners フォルダにコピー



4. 再起動



5. AVデータベースをアップデートする



以上で問題が解決した.

セーフモードで起動するのは,通常起動だとbases.cavを削除することができないため.

OSTER projectの新曲PVに使われてるケータイ







やっぱりOSTER!

ボカロの調教よりもメロディで惹きつけるタイプの人だよね。

即マイリス余裕です。



たしかに、ちょっとだけ前の時代の曲といった印象。

「槇原っぽい」とか感想があるみたいだけど、

自分は初期のポップンの曲思い出した。



最初に思いつくのがゲーム音楽とか、どんだけヲタなんですか、自分w







はい。ここからが本題ですw

PVの中で2人が使ってるケータイの機種なんだかわかりますか?



まさかのW63CA!



自分のと同じだぁい(*´∀`*)



(ノ∀\*)キャッ言っちゃった♪





・・・ゴメンナサイ、イイタカッタノ、コレダケナンデス。

2009-10-14

今週のオススメ嫁曲:【鏡音リン】第一次ウイルス抗戦_強襲編





久しぶりに。



やっぱ最近はロック系リンが熱いですね~。



レンもパラジクロロベンゼンとか中毒曲出てきてるし、

鏡音一家の時代到来!っといった感じかな。

2009-10-07

【個人スポンサー特典】ねんどろいど初音ミクRQver.

どうも,初音ミクZ4個人スポンサーのくさもちです.



先日,やっとねんどろいど初音ミクが届きました.



CA3C0206.jpg

▲か,かわゆす(´∀`*)



CA3C0203.jpg

▲目を閉じたミクさん・・・( ゚д゚)ハッ!女神が舞い降りたかとおもた



CA3C0202.jpg

▲荒ぶるミクのポーズ!



CA3C0186.jpg

▲ネギ傘の開きバージョンも入ってるお



CA3C0192.jpg

▲傘持たせると,まさに,レースクイーンなミクさん.これは萌えるw



CA3C0194.jpg

▲これはよい縞パn・・・ネギ傘ですね



CA3C0199.jpg

▲Z4もついてくる!!専用のデカールもついてきたけど,もったいなくて貼れない・・・



CA3C0198.jpg

▲車に乗るかっこいいミクさん・・・でもカワイイ



CA3C0200.jpg

▲後ろ姿もカワイイ・・・





ヤバイwwwこれは萌え死ぬw



このフィギュア最大魅力は,なんといっても縞パンツ!



ミクはよく縞パンツって思われているかもしれないけど,

実は白パンツが半公式設定なのです.

��>初音ミクのパンツは「白」もしくは「白+ミク色リボン」らしい件について - 初音ミクみく



もちろん自分は縞パンツ派!

今回は,他のパンツ派閥を差し置いて,

縞パンツ初の立体化なのです!



��ーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ







それにしても,ヤフオク

これはひどい・・・この転売厨め!

おまいら,個人スポンサーとしての自覚持てよ!ヽ(`Д´)ノプンプン



自分もフィギュアに釣られた人ではあるけど,

もちろん,チーム「Studie GLAD Racing」の皆さんを応援する気持ちがあるからこそ,

買おうと思ったのに.

��遠くてレース見に行けないけど・・・)



こういうの見ちゃうと,軽く損した気分になっちゃうね・・・

2009-10-06

DIVAの続編はアーケード!?

>>初音ミクみく - 出た!「"Project DIVA Arcade(仮称)"」の楽曲とイラストの募集告知!



PS3でもなく360でもなく,アーケードだと!?



コスチュームとイラストの募集はピアプロで.

楽曲の募集はニコニコで.



やばい,これから投稿合戦で盛り上がりそう((o(´∀`)o))ワクワク





自分も何かだそうかな・・・・

曲書けないし,キャラ絵も描けないんでしたorz





どうしよwオタ狙いktkr

絶対ボラれるよこれw





でも,軽やかに動くミクが見られるなら,

何万でも積もうじゃないか!百円玉!(`・ω・´)シャキーン





典型的なボカロオタでなんです.ごめんなさい.



まさに

「ミクオタがネギ背負ってやってくる」

とはことことかw

むしろ,ネギはミクへの信仰心!

2009-09-28

初音ミク-ProjectDIVA-(新)に全俺が泣いた

どーも。

この間アキバ行った時にミクのおっぱいマウスパッドを買ってしまった変態です。





どうやら、マウスパッドにデレてる場合じゃなかったようで・・・







(;゚Д゚)(゚Д゚;(゚Д゚;)ナ、ナンダッテー!!



初音ミク-ProjectDIVA-(新)だと!?





ニコニコちゃんねるの「初音ミク -Project DIVA- 特設ちゃんねる(再)」復活しとる!

http://ch.nicovideo.jp/channel/ch253



��ーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ



やべぇwめっちゃうれしいっすwww



つーか、動画で踊ってる3DモデルがPSPのレベルじゃないんですけどwww



激しくPS3希望!



XBOX360でもよいぞ!



むしろ、もうどの機種だろうと本体ごと買うよ!



ミクかわいいよミク



Miku is my wife!!!





・・・やべぇw興奮しすぎて鼻血出そうw





・・・セガさんありがとう・・・うう、本当にありがとう・・・。・゚・(ノД`)・゚・。











・・・でも、できたら、もっとリンレンルカたんも大事にしてやってください。

・・・さらに、できたら、ミクルームとかもっと充実したものにしてください。

・・・さらにさらに、できたら、男性用モーション追加してください。

・・・さらにさらにさらに、できたら、衣裳をもっと細かいパーツに分けてカスタマイズできるように・・・

・・・以下略

2009-09-27

【はちゅね初!宇宙へシリーズ】アメリカ出張編キタ――(゚∀゚)――!!









超電磁Pのはちゅね初!宇宙へシリーズ。

すげぇ・・・ここまで来たなら宇宙までそう遠くないかも。







こんなの見てたら自分も早く電子工作したくなってきた。



計画自体は結構前から練っていて、パーツも一部揃えた。

一昨日、東京行った時にも必要な工具とか買ってきた。

よく考えると、そろそろ後戻りできないくらいお金使ってるw(もうチョイで1万ぐらい?)





でも、今は、研究会で忙しくて・・・。



本格始動は10月かしら?

・・・いや、ロケットとか、あんなたいそうなの作れるほど技術ないです。



H8とか学校でちょろっといじった程度。

もうゆとりなんで、Arduino使って遊ぶ予定。



時間が余ればPICとかAVRやってみたいなぁ。

2009-09-22

【機能美P】初音学校1+2【新作Flash】





��タ━━━━(゚∀゚)━━━━ッ!!



機能美P新作Flash!



この人の作品好きだなぁ。ホント、毎度のこと完成度が高くて驚く。



音と映像がそれぞれレベルが高い上に、

そのマッチングもハンパない。

つーか、はちゅねがかわいすぎw





ちなみ前作のアイマスネタは「ののワ眼鏡」発祥動画w







いずれ自分もこんなの作れたらなんて思うけど・・・センスが足りねぇorz

みんなオラに力を(以下略

2009-09-18

今週のオススメ嫁曲:【母が】初音ミクオリジナル「サマーディズエンジェル」







おかんスゲェ━━━━━━ヽ(゚Д゚)ノ━━━━━━!!!!



しかも、タグが面白いことになってるw





こんな素敵なセンスを持ったおかんがいるとは、うp主がうらやましい。

それに比べ、うちのおかんなんてゴニョゴニョw





ダウンロードファイルのメモに書いてあったけど、

うp主のおかんは昔ゲーム会社で作曲していた人なんだって。



同曲アレンジ版が妙に戦闘曲くさいのはそのせいかな。







おかんP、陰ながら応援してます!

2009-09-16

366日ボーカロイド三昧!

ん?まさに自分のこと?w







いつものようにボカロのクローリングしてたらこんな動画見つけた。

2008年1月1日以降、ニコニコに投稿されたVOCALOIDのオリジナル曲を投稿日別にまとめた動画。



366日ボーカロイド三昧!



「そういえば、この時期に出てて曲だっけ?」とか、

「こんな曲あったのか!」と再発見させられる。



つーか、これ作るの大変だろw



うp主GJ

2009-09-12

【OpenCV + Ubuntu】さらにインスコが簡単に

以前も書いたけど、OpenCV + Ubuntuの話。



参考になったサイト様:http://d.hatena.ne.jp/shokai/20090220/1235155743




sudo apt-get install libcv-dev
sudo apt-get install libcvaux-dev
sudo apt-get install libhighgui-dev
sudo apt-get install opencv-doc



でインストールとかw

楽になったもんだ。

とりあえず、上記のサイトの方法は、Ubuntu9.04では動作確認済み。



でも、これだと画像フォーマットとかffmpegが入ってないんで、事前に、


sudo apt-get install ffmpeg
sudo apt-get install libgtk2.0-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavformat-dev
sudo apt-get install libjpeg62-dev
sudo apt-get install libtiff4-dev
sudo apt-get install libgif-dev

としとけば、たぶん完ペキ。

2009-09-09

今週のオススメ嫁曲:【初音ミク】1/6 -ark attack mix-【オリジナル】





リミックス版1/6

原曲はこちら。









名     曲



とにかく歌詞に魅かれる。





ここに詳細があるけど、この曲をめぐってちょっとひと騒動あったりしたんだけどね。

http://dic.nicovideo.jp/v/nm6971638





実は、今、すごくタイムリーに、ある種の重力を抱えているので、



聴いていると素で泣きそうになる。



ぼーかりおどPさん、伝わってるよ!

2009-09-08

【Tweneer】終了のお知らせ

以前の記事でも書いたように、

Tweneerがver.1.33.74にアップデートしてるって書いたけど、

実は、これが最終バージョンだったらしい。



開発者さんのブログ:

Zeh Fernando » Blog Archive » Tweener, 4 years later - A post mortem



その日本語訳:

TONPOOBLOG>>Tweenerの終焉





・・・(´;ω;`)ブワッ



感動した







それに、現状のTweenerの限界も把握できた。

なにげなく使ってきたライブラリだったけど・・・

確かに、パフォーマンス面では、問題あるかもしれない。





つーか、AS2では、nullになってるオブジェクトのプロパティにアクセスしても怒られないとか、

どんだけ緩いですか・・・FlashPlayerたんw





開発者さんお疲れ様でした!

今までとてもお世話になりました!(これからも、しばらくはお世話になると思うけど・・・)







このライブラリがなかったら、今の自分はいなかったよ。たぶん。

それぐらいお世話になった。



本当にありがとう。

2009-09-06

【Action Script】基本構文for each ... in

いまさらすぎる件w



いや、でもね。よく忘れるんですよ、この構文。

PHPなら「foreach」で、スペースいらないし、普段C言語だと使わないし・・・。

最近、混同するので、メモしとかないとすぐ忘れちゃうw





ここでは、Action Scriptの話。




var obj:Object = {a:"はちゅね", b:"かぁがみね", c:"たこるか"};
for each(var value:String in obj) {
trace(value);
}

結果(表示される順番は保障されない):

たこるか
はちゅね
かぁがみね

中の要素を取り出すってことね。





よく使われるのはXML。


var xml:XML = <data>
<hoge><a>まぐろは</a></hoge>
<hoge><a>おおまさん</a></hoge>
</data>;
for each(var tmpXML:XML in xml.hoge) {
trace(String(tmpXML.a));
}

表示結果:

まぐろは
おおまさん

みたいな感じに。



あと、よくどっちがどっちか忘れるんだけど「each」がない場合は、


var obj:Object = {a:"はちゅね", b:"かぁがみね", c:"たこるか"};
for(var value:String in obj) {
trace(value);
trace(obj[value]);
}

結果(表示される順番は保障されない):

c
たこるか
a
はちゅね
b
かぁがみね

こんな感じ。

ラマーズPがメジャーデビューだと!?

初音ミクみく:http://vocaloid.blog120.fc2.com/blog-entry-4198.html



��タ━━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(  )━(゚  )━(∀゚ )━(゚∀゚)━━━!!



いや、ホント、ファンなんだが。







とか、







とか、







とか、







とか、







とか・・・どれもこれも中毒ソング。

ところどころに可愛い合いの手があったり、擬音・繰り返しの音が多いのが特徴。



しかも絵がヵヮ。゚+.(・∀・)゚+.゚ィィ!!



毎回サムネ特定余裕です。





もちろん、ジャケットはラマーズPのイラストなんだよね?+(0゚・∀・) + ワクテカ +

2009-09-03

Flash CS3(CS4)とFlashDevelopの併用

FlashDevelopでASのコーディングをして、

Flash CS3(CS4)でパブリッシュする方法。



一応、動画でやり方が紹介されているのを見つけた。

http://www.trick7.com/blog/video/flashdevelop/



忘れるたびに動画を見るのは億劫なので、c⌒っ゚д゚)っφ メモメモ...



0. FlashDevelopを起動し、F10を押す。

[Plugins] - [ASCompletion] - [Flash IDE] - [Path To Flash IDE]の項目に、

Flash CS3(CS4)のPathが設定されていることを確認する。

設定されてなければ、自分でパスを設定する。



1. FlashDevelopの[Project] - [New Project ...]を選択。



2. ActionScript 3 - Flash IDE Projectを選択。

プロジェクト名、保存先を指定してOK。



3. 右側のプロジェクトタブからプロジェクト名を右クリックし、[Add] - [New Class...]

メインクラスを作成。

このとき、メインクラスはMovieClipをサブクラスとする必要があるので、

とりあえず、Sprite継承にしておく。



3. Flash CS3(CS4)を起動して、[ファイル] - [新規...]

Flashファイル(AS 3.0)を選択してOK。



4. flaファイルをプロジェクトファイルと同じ場所に保存。



5. flaドキュメントのプロパティ内の[ドキュメントクラス](CS4では[クラス]と表記されてる)

に先ほど作ったメインクラスを指定。







これだけで、FlashDevelopからF6キーを押すだけで、自動でFlash CS3(CS4)が立ち上がり、

CS側からパブリッシュしてくれる。



コーディングは、FlashDevelopの補完機能が便利でウマウマ。

また、FlashDevelopはフォルダに追加したasファイルも自動で認識してくれるので、

asのファイル管理もウマウマ。



CSだと、asファイル、flaファイルの切り替えが面倒で・・・。

ドキュメントクラスでメインクラス設定すれば、

CSのライブラリ内のオブジェクトも使えるし、

まさに理想的環境!





追記:

ちなみに、AIRの自動補完をしたい場合。



1. FlashDevelopの[Project] - [Properties...]を選択。



2. [Compiler Options] - [SWC Include Libraries]を選択。



3. 以下のパスを設定。

  CS3の場合: C:\Program Files\Adobe\Adobe Flash CS3\

                             ja\Configuration\ActionScript 3.0 AIR 1.0\Classes\playerglobal.swc

  CS4の場合:C:\Program Files\Adobe\Adobe Flash CS4\

                            Common\Configuration\ActionScript 3.0\AIR1.5\airglobal.swc



4. 一応再起動。



CS3,CS4でパスが違うから注意。

今週のオススメ嫁曲:【初音ミク】red sign【オリジナル】





この不安定さがたまらなく好き。



サビの壮大なオケに圧倒される。





なんか最近、こんな感じのダークな曲ばっかり聴いてる。



あ、いや別に、研究とかで忙しいけど、病んでるつもりはないっすよ

2009-09-01

ミクさん誕生日おめでとー!

CA3C0147.JPG

▲これ・・・研究室の机なんだぜ.むしろ,ミク以外の方が(ry



一日ずれたけど.





ミクが世に出て早2年!

でも,この間,いろいろな人を巻き込みながら,大きく成長したよね.ミクさん.



今まで無名だった人も、ボカロからアーティストとして活躍できたり,

3D化,PV,作ってみた,歌ってみたなど,たくさんの人を巻き込んできた.





今後,この巨大なうねりはどこへ向かっていくのか・・・.



ニコニコでミクフェス'09見てたらふと思いますた.







・・・自分も何かできたらいいな.



【DTX GDP】反省と今後の改善手点

DTX GDP.

個人的反省点を列挙.



【技術面】

・テーブルの正規化をなめてた

何度も正規化については,議論していたつもりだったが,まだ甘かった.

楽器別にテーブルを分けたために,後々になってIRページの算出時に問題が起きた.

さらに,SQL文も膨大になり,収拾がつかないことに・・・.

やっぱ,楽器でキーを割り当てて,全レコードを一つのテーブルに納めるべきだった.



・Flash → PHPの構造

勉強不足.結果的に,送受信のシステムはできたものの,かなり不安定なものだったかも.

そもそも,XMLを丸ごと送る構造でよかったのか?

別の方法で送った方が,問題がおきなかったかもしれない.



【対応面】

・対応が遅い

研究が忙しかった・・・でも,これは言い訳にしかならないだろう.

もっと効率化できるように,プログラムエラー系を手厚くしておけば,もっと楽に保守できたはず.



・バグ多すぎ

これは,βテストをすべきだった.

スケジュール的にかなり無理をしてのは事実だが,

今まで自分がやったことない言語で組むんだから,余計入念なチェックが必要だったはず.



【その他】

・見た目

アプリの方の見た目は多少拘った.でも,IRページについてはテキトー.

所詮,軽くCSSで設定しただけ.あまりに味気ない.





とりあえず,こんなところだろうか.



このイベントに限らず,今後こういった人に見せるモノを作る際は気をつけておかなければ.



今回は,本当に様々な面で勉強させていただきました.

関係者の皆様,ユーザの皆様,ありがとうございました.

2009-08-14

【AIR】NativeWindowクラスによるウインドウ操作

AIRで追加されたNativeWindowクラス.

ウインドウ操作を扱うクラスで,簡単にウインドウを生成・制御可能.

Flash独特のグラフィックス環境を用いて,オリジナルのスキンでウインドウを作ることができる.

そのサンプルがこれ.

あまり一般的な書き方してないけど.

 
package {
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.display.NativeWindow;
import flash.display.NativeWindowType;
import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowSystemChrome;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.geom.Rectangle;
import flash.display.DisplayObject;

// Tweener(ウインドウのエフェクト用)
import caurina.transitions.Tweener;
import caurina.transitions.properties.FilterShortcuts;


public class NativeWindowEx extends NativeWindow {
protected var base:Sprite;
// ウインドウのオリジナルスキン(CS4で作成後Sprite継承でASに書き込み指定)
private var skin:DialogSkin;

public function NativeWindowEx(initX:int, initY:int, initTitle:String, initDO:DisplayObject) {
// NativeWindowのオプション
var nwOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
// ウインドウタイプ
nwOptions.type = NativeWindowType.LIGHTWEIGHT;
// システムクロームの設定
nwOptions.systemChrome = NativeWindowSystemChrome.NONE;
// ウインドウにalpha値を適用するかどうか
nwOptions.transparent = true;
// 最小化できるかどうか
nwOptions.minimizable = true;
// 最大化できるかどうか
nwOptions.maximizable = false;
// ウインドウサイズを変更できるかどうか
nwOptions.resizable= false;
super(nwOptions);

base = new Sprite();
base.alpha = 0.0;
// NativeWindowの持つstageにaddChild
this.stage.addChild(base);

skin = new DialogSkin();
skin.window.addEventListener(MouseEvent.MOUSE_DOWN, skinWindowDragHandler);
skin.close.addEventListener(MouseEvent.MOUSE_DOWN, skinCloseButtonHandler);
skin.close.addEventListener(MouseEvent.MOUSE_OVER, skinCloseMouseOverHandler);
skin.close.addEventListener(MouseEvent.MOUSE_OUT, skinCloseMouseOutHandler);
// 貼り付ける内容に合わせてスケール変換(skinはscale9Gridを設定済み)
skin.close.scaleX = (initDO.width) / 490;
skin.close.scaleY = (initDO.height) / 300;
skin.window.scaleX = (initDO.width) / 490;
skin.window.scaleY = (initDO.height) / 300;
skin.x = 10;
skin.y = 10;
base.addChild(skin);

var rect:Rectangle = skin.scale9Grid;
initDO.x = rect.left + 10;
initDO.y = rect.top + 10;
base.addChild(initDO);

super.activate();

this.x = initX;
this.y = initY;
this.width = skin.width + 20;
this.height = skin.height + 20;
this.title = initTitle;
this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.align = StageAlign.TOP_LEFT;
this.addEventListener(Event.CLOSE, windowCloseHandler);
// フェードインでウインドウを表示
Tweener.addTween(base, {alpha:1.0, time:0.5, transition:"linear"});
}

public function deleteReference():void {
skin.window.removeEventListener(MouseEvent.MOUSE_DOWN, skinWindowDragHandler);
skin.close.removeEventListener(MouseEvent.MOUSE_DOWN, skinCloseButtonHandler);
skin.close.removeEventListener(MouseEvent.MOUSE_OVER, skinCloseMouseOverHandler);
skin.close.removeEventListener(MouseEvent.MOUSE_OUT, skinCloseMouseOutHandler);
}

// Event Handler /////////////////////////////////////////////
private function skinCloseMouseOverHandler(event:MouseEvent):void {
// マウスオーバーでGlowエフェクト
Tweener.addTween(event.currentTarget, {time:0.5, transition:"linear",
_Glow_alpha:0.7, _Glow_blurX:15, _Glow_blurY:15,
_Glow_color:0x00CCCC,
_Glow_quality:1, _Glow_strength:1});
}

private function skinCloseMouseOutHandler(event:MouseEvent):void {
// マウスアウトでGlowエフェクト解除
Tweener.addTween(event.currentTarget, {time:0.5, transition:"linear",
_Glow_alpha:0});
}

protected function windowCloseHandler(event:Event):void {
this.removeEventListener(Event.CLOSE, windowCloseHandler);
}

private function windowCloseTweenComp():void {
super.close();
deleteReference();
}

protected function skinWindowDragHandler(event:MouseEvent):void {
this.startMove();
}

protected function skinCloseButtonHandler(event:MouseEvent):void {
// フェードアウトでウインドウを閉じる
Tweener.addTween(base, {alpha:0.0, time:0.5, transition:"linear",
onComplete:windowCloseTweenComp});
}
}
}

NativeWindowInitOptionsで事前に作成するウインドウの設定.

オリジナルスキンを使うなら,

nwOptions.systemChrome = NativeWindowSystemChrome.NONE;

としておく.



新しく作ったウインドウにどうやってオブジェクトを表示するかというと,実は今までのやり方と全く変わらない.

this.stage.addChild(base);

というように,実は各NativeWindowがstageを所持している.

だから,今まで同様に,NativeWindow内のstageにaddChildすればいい.

つまり,表示オブジェクト的にFlashとAIRでは,



Flash:stageをトップとした階層構造

AIR :1つまたは複数のNativeWindow内のstageをトップとした階層構造



という違いがある.







各NativeWindowのメソッドについて.



activateでウインドウにフォーカスする.



このメソッドを呼び出すか,visibleをtrueにしないとウインドウが表示されないので注意.

closeでウインドウを閉じる.



startMoveでウインドウをドラッグ.

これ呼び出すだけで自動でドラッグされるとかwゆとり仕様乙

2009-08-13

今週のオススメ嫁曲:「期待の新人」タグ特集

最近の「期待の新人」のクォリティーが高すぎる件について.





▲3D空間を浮遊する文字がすごい.HTMLを破壊するFlashを思い出した





▲激しくアニメ化希望



処女作でこのレベルのPVとか.

最近の作り手のレベルはハンパないっす.

見ていて飽きない.



・・・そして研究が進まないwww







▲歌詞がガチなのかネタなのか分からないw





▲普通に聴いていて気持ちがいい.動画は軽くアハ体験





▲格好良すぎる!がくぽにぴったりの曲かもね



どれもサビがかっこいいっす.



曲ももちろんだが,とても聞き取りやすい.

もうこのぐらいの調教レベルが普通になってきてるんだろうか?







みんな競うようにしてクォリティーを引き上げるのは当然いいことなんだけど・・・

なんか,気軽に投稿できなくなってしまいそうなのでこわいなぁ.



底辺の人でも気軽に参加できる仕組みがほしいと思う.

そんな自分は,音楽のできない底辺以下っすw

2009-08-10

8bit darling project; DELUXE にみるCGM文化

【Step1】 ニコ動徘徊中にこんな動画を見つける。







→ ヵヮ。゚+.(・∀・)゚+.゚ィィ!! なにこれ!?かわいすぎw





【Step2】 投稿コメに貼ってある、特設サイトへアクセス。

『8 bit darling project』特設サイト :http://www.sweetvacation.jp/8bitdx/



→ あー「8 bit darling project」か。そういえば、曲はまだ聴いてなかったなぁ。

  TUTAYAで先行発売!?初回特典に『初音ミク×Sweet Vacationスリーヴ・ケース』とな。





【Step3】 ケースの画像を確認する。

ケースの画像 :http://www.sweetvacation.jp/8bitdx/img/suribu-case.jpg



→ Σ(゚Д゚) 

→ ヽ(°▽、°)ノエヘヘヘヘ





【Step4】 TUTAYAへダッシュ!ε≡≡ヘ(* ´Д`*)ノ





みごとに釣られますたw



というか、もう、PV見た時点で9割方買うつもりでしたが、何か?





----



うん、いや、実のところ、この企画自体、前から興味あったんだ。



サマバケの原曲「8bit darling」の素材を無料公開して、ボーカロイドにリミックスする企画。

しかも、ボーカロイドを使ったものに対しては、著作権使用料も気にせず、非営利で公開可能。



もともとCD化する予定なかったらしいけど、

TUTAYAで本家サマバケのアルバム先行レンタル時に収録 → さらに企画が膨らんで今回のCD発売

となった模様。



----



とても面白い試みだよね。

著作権という壁を破ったことが(破ったというより、実際には回避した)、

音楽の新しい形を提案しているように思える。



CGM、消費者が自ら曲を完成形にもっていく文化が確実に根付いてきている、ということなんだろうな。

音楽に限らず、今後、消費者が気軽にクリエイティブを楽しむ時代が来るのかと思うとワクワクする。



ミクさんにはまさにその象徴となるキャラクターになってほしい。



だからこそ、くさもちは全力で嫁を応援します。



・・・要するに、絶好のカモということですね?わかりますw

2009-08-09

Ubuntu Tweak



【AS3.0】XMLの送受信【PHP】

GDP企画の際必要になった,ActionScriptを使ったXMLの送受信.

Flash/AIRとPHP間でXMLのやりとりをするのに使った.



試行錯誤した結果,結局こんな感じでうまくいくことがわかった.

基本的に,URLRequestで送信データ,およびその設定を行い,

URLLoaderでリクエスト(送信),Completeイベントでphpからのレスポンスが帰ってくる仕組み.

package {
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.IOErrorEvent;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.utils.ByteArray;

/**
* ConnectPHP
* @auther kusamochi
*/
public class ConnectPHP extends EventDispatcher {
public static const COMPLETE:String = "complete";
public static const IO_ERROR:String = "io_error";
public static const PROGRESS:String = "progress";
public static const FAILED:String = "failed";

private var _urlRequest:URLRequest;
private var _result:XML;

private var urlLoader:URLLoader;

// コンストラクタ
public function ConnectPHP() {
}

// XMLの送信
public function sendAndLoad_XML(url:String, xml:XML):void {
// 送信するデータを設定
_urlRequest = new URLRequest(url);
_urlRequest.contentType = "text/xml";
_urlRequest.data = xml.toXMLString();
// データはPOSTで送信
_urlRequest.method = URLRequestMethod.POST;

// URL
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;

// イベントリスナー登録
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
urlLoader.load(_urlRequest);
}

// データロード完了のイベントリスナー
private function completeHandler(event:Event):void {
urlLoader.removeEventListener(Event.COMPLETE, completeHandler);
urlLoader.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
// reusltに格納
try {
_result = new XML(event.target.data);
}
catch(error:TypeError) {
// イベントをブロードキャスト
dispatchEvent(new Event(FAILED));
return;
}

// イベントをブロードキャスト
dispatchEvent(new Event(COMPLETE));
}

// 送信中に一定間隔で発生するイベントリスナー
private function progressHandler(event:ProgressEvent):void {
// イベントをブロードキャスト
dispatchEvent(new ProgressEvent(PROGRESS));
}

// 送信エラーのイベントリスナー
private function ioErrorHandler(event:IOErrorEvent):void {
urlLoader.removeEventListener(Event.COMPLETE, completeHandler);
urlLoader.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
// イベントをブロードキャスト
dispatchEvent(new IOErrorEvent(IO_ERROR));
}

// 参照削除
public function deleteReference():void {
if(urlLoader) {
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
urlLoader.close();
}
_urlRequest = null;
_result = null;
}

// getter //////////////////////////////////////////////////////
// result
public function get result():XML {
if(_result) return _result;
else        return null;
}
}
}

ポイントは,Content-typeを"text/xml"にして,xmlのStringを送信すること.

当初,Content-typeを"application/octet-stream"(バイナリデータの意)として,

XMLをBinaryArrayで送っていたけど,

それだと送信先でヘッダーに文字化けが起きる.



ちなみに,PHP側では,

$inputStr = file_get_contents("php://input");
$xml = simplexml_load_string($inputStr);

print "<result>";
// Flash側に送りたいデータをほげほげ
print "</result>";

というように,file_get_contents("php://input")で,

生データを丸ごと読みこんでPHPのXMLクラスに変換.

Flash側に送りたいXMLは,PHP自身にタグをprintすればいい.

ソフト公開の難しさ

原因が見えてこない・・・。

問題は起きることは予想していたが、これほどとは・・・。





とりあえず、現時点で必要な修正をします。



今日中にはどうにか。









本当に謝るしかできない、自分の能力のなさに気づく。



特に、



「ソフトウェアを広く一般の方に配布する」



という部分に関しては、それほど経験がなかったのも問題を大きくしていることの一つ。





申し訳ないと、ただこれしか言えないのは悔しい。

今週のオススメ嫁曲:【初音ミク】Alice【オリジナル】





 ミクトロニカ。



たまには、こんなゆったりした曲もよいかも。

むしろ、こういう曲の方がミクに合ってるのかもね。





古川Pの曲は今まで聴いたことなかったけど、↓のはイントロでマイリス余裕でした。





2009-08-01

GDPイベント始まっちゃった

((((;゚Д゚))))ガクガクブルブル



自分の作ったものに信頼が持てないっす(;´Д`)





GDP始まってしまいました.

・・・たぶんバグあります.きっとあります.



自分でもなるべく問題が起きないように最大限の努力で保守を行う所存です.

それでも,何かあったときには・・・



どうか生暖かい目で.











一応イベント告知しておく.



GDPは国内総生産ではありませんw

DTX Maniaというゲームのイベント企画の1つです.



イベント本会場



イベントIRページ



このイベントのIR(インターネットランキング)サイトの制作・運営,およびIRを行うために必要なアプリケーション制作を担当をさせて頂きました.





そう.GDPイベントの主催者さんからの突然の制作依頼を受けて,作ることになったIRシステム.

そのときは,DTXは知らなかったし,自分は就活してたし,PHPもSQLも使ったことなかったし・・・.

正直,依頼を受けるべきか本当に迷った.



でも,気合いで受けてしまったw





結果として,一応の形にはなったけれども,

やっぱり自分の力不足を感じることが多かった.



デバッグでテストプレイしたとき,音楽のクオリティの高さに驚いた(゚д゚)!

そして,到底それらを支えるに値しないほど稚拙なものしか作れない自分orz







イベント関係者の皆様へ.

なんとか始まりました・・・がまだバグがある可能性は十分あるので,

今後もデバッグをしながら,保守を中心に作業していきます.



どうにか,無事にイベントが終了するよう努力する所存ですので,

よろしくお願い致します.

アニサマに初音ミク出演(゚∀゚)キタコレ!!

公式サイト:

http://pc.animelo.jp/rebridge/whatsnew/?p=090731_artist_KdsJe



嫁がキタ━ヽ(ヽ(゚ヽ(゚∀ヽ(゚∀゚ヽ(゚∀゚)ノ゚∀゚)ノ∀゚)ノ゚)ノ)ノ━!!!!





プロデューサーさん!ライブですよ!ライブ!









・・・(冷静になり)つーか,どうゆうこと?これw



ライブでヴァーチャルっておかしくね?



中の人じゃなくて,あえて「初音ミク」だし・・・一体どうなるんでしょう?



2009-07-31

今週のオススメ嫁曲:【初音ミク】 Dharma(ダルマ) 修正版【オリジナル曲】





やべぇw忙しさのあまり,今週の分,更新するの忘れるところだった.



アンダーグラウンド・カタログ聴いてたら,とても良さげな曲を発見.

音割れがあるのが残念な点ではあるけど,

それを差し引いてもいい曲.



ychさんの曲をもう1曲.

こっちもいい感じ.











2009-07-25

【AIR】XMLを非同期に読み書きする【FileStream】

都合上,XMLを自由に読み書きする必要が出てきた.



そこで,FileStreamクラス(AIRで追加されたファイルの読み書き用クラス)を使い,

XMLのメソッド1つで,非同期に読み書きをするXMLManagerクラスを作ってみた.



package {
import flash.events.EventDispatcher;
import flash.events.OutputProgressEvent;
import flash.events.Event;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

/** XML用クラス
* @auther kusamochi
* @extend EventDispatcher
*/
public class XMLManager extends EventDispatcher {
public static const READ_COMPLETE:String = "read_complete";
public static const READ_CLOSE:String = "read_close";

public static const WRITE_PROGLESS:String = "write_progress";
public static const WRITE_CLOSE:String = "write_close";

private var _xml:XML;  // [read]xmlファイルの実体
private var fileStream:FileStream;
private var _mode:String;

//コンストラクタ
public function XMLManager() {
_mode = "NormalMode";
}

// 明示的な参照解除メソッド
public function deleteReference():void {
if(fileStream) {
if(_mode == "ReadMode") {
fileStream.removeEventListener(Event.COMPLETE, readStreamCompleteHandler);
fileStream.removeEventListener(Event.CLOSE, readStreamCloseHandler);
}
else if(_mode == "WriteMode") {
fileStream.removeEventListener(OutputProgressEvent.OUTPUT_PROGRESS, writeStreamOutputProgressHandler);
fileStream.removeEventListener(Event.CLOSE, writeStreamCloseHandler);
}
}
}

// ファイル読み込み
public function readXML(file:File):void {
trace("XMLManager::readXML");
trace("Reading : " + file.nativePath);

_mode = "ReadMode";
fileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, readStreamCompleteHandler);
fileStream.addEventListener(Event.CLOSE, readStreamCloseHandler);
fileStream.openAsync(file, FileMode.READ);
}

// ファイル出力
public function writeXML(file:File):void {
trace("XMLManager::writeXML");
trace("Writing : " + file.nativePath);

_mode = "WriteMode";
fileStream = new FileStream();
fileStream.addEventListener(OutputProgressEvent.OUTPUT_PROGRESS, writeStreamOutputProgressHandler);
fileStream.addEventListener(Event.CLOSE, writeStreamCloseHandler);
fileStream.openAsync(file, FileMode.WRITE);
fileStream.writeMultiByte(_xml.toXMLString(), File.systemCharset);
}

public function printXML():void {
trace(_xml.toXMLString());
}

// EventHandler ///////////////////////////////////////////////////////////
// Read  ----------------------------------------
// Readストリームがクローズ
private function readStreamCloseHandler(event:Event):void {
trace("XMLManager::readStreamCloseHandler");
fileStream.removeEventListener(Event.COMPLETE, readStreamCompleteHandler);
fileStream.removeEventListener(Event.CLOSE, readStreamCloseHandler);
_mode = "NormalMode";

// カスタムイベントを配信する
super.dispatchEvent(new Event(READ_CLOSE));
}

// 読み込み完了
private function readStreamCompleteHandler(event:Event):void {
trace("XMLManager::readStreamCompleteHandler");
var tmpStr:String = fileStream.readMultiByte(fileStream.bytesAvailable, File.systemCharset);
fileStream.close();
_xml = new XML(tmpStr);

// カスタムイベントを配信する
dispatchEvent(new Event(READ_COMPLETE));
}

// write --------------------------------------
// Writeストリームがクローズ
private function writeStreamCloseHandler(event:Event):void {
trace("XMLManager::writeStreamCloseHandler");
fileStream.removeEventListener(OutputProgressEvent.OUTPUT_PROGRESS, writeStreamOutputProgressHandler);
fileStream.removeEventListener(Event.CLOSE, writeStreamCloseHandler);
_mode = "NormalMode";

// カスタムイベントを配信する
super.dispatchEvent(new Event(WRITE_CLOSE));
}

// Write進行中
private function writeStreamOutputProgressHandler(event:OutputProgressEvent):void {
trace("XMLManager::writeStreamOutputProgressHandler");
if(event.bytesPending == 0){
fileStream.close();
}

// カスタムイベントを配信する
super.dispatchEvent(new OutputProgressEvent(WRITE_PROGLESS));
}

// getter ////////////////////////////////////////////////////
// XMLオブジェクトを返す(他のクラスからのアクセスに対応)
public function get xml():XML {
return _xml;
}

// mode
public function get mode():String {
return _mode;
}

// setter //////////////////////////////////////////////
public function set xml(setXML:XML) {
_xml = setXML;
}

}
}

FileStreamクラスのファイルオープンには,openメソッド,openAsyncメソッドの2つがある.

openメソッドを使うと,それ以降のFileStreamの処理は,その行の処理が終わるまで次の行を実行しない

でも,それだと,ロード対象のサイズが大きくなった場合などに遅延が起きてしまう.



それを避けたいのなら,openAsyncメソッドでファイルオープンする.

openAsyncにすると,各処理ごとにイベントを発行する.

つまり,FileStreamのオブジェクトにaddEventListenerしとけば,読み込み終わりとか判定できるわけです.



そこで,上記のXMLManagerでは,各イベントを利用してMXLの読み書きを行い,さらにカスタムイベントを配信する.

EventDispatcherを継承したのはこのため.





これ,作るときに気づいたんだが,

READモードだとcompleteイベント発生するのに,WRITEモードではcompleteイベント発生しないんだね.

最初気づかずにWRITEモードでもcompleteでファイルクローズしてたから,

イベント自体が発生してないからクローズされていないってことで,

上書き時にエラー出て散々ハマりましたw



しょうがないんで,OutputProgressイベント(出力中に定期的に発生するイベント)を使って,

bytesPending(残りの書き込みバイト数)がゼロになったときにクローズするようにしてみた.



2009-07-24

【初音ミクZ4】第2期個人スポンサー特典届いたお

CA3C0064.JPG





経済力がないので,一番安いコースなんだ.

ホントはもっと上のにしたかったんだけど・・・.



あまり,派手なデザインではなく,シンプルに緑.

さりげない,ミクのシルエット.



そして,なにより,個人スポンサーのIDが振られたカード.





俺スポンサーなんだぜホレホレ□ヽ( ´∀`)σ)Д`) <ウゼェ







でも,ねんどろいどミク(RQ ver.)は9月になるんだって(´・ω・`)

まあ,気長に待ちますよ~

2009-07-23

【AIR】applicationDirectoryのセキュリティエラー【Fileクラス】

Fileクラスは,AIRで追加された,一括したファイル・ディレクトリ管理ができる万能クラス.

便利なのはいいんだけど,セキュリティーエラーにハマっちゃって・・・.

ハマった割にはたいしたこと無かったけど,知らなかったら解決しない問題なのでメモしておく.




// 保存先
var oldPlayData:File = (File.applicationDirectory).resolvePath("pd.ini");
// 一時保存先
var newPlayData:File = File.createTempFile();

// どこかでoldPlayDataの内容を読み込み

// どこかでoldPlayDataから更新された内容をnewPlayDataに一時的に保存

// 以下,ウインドウを閉じるときに
// newPlayDataが存在するか確認
if(newPlayData.exists) {
try {
// newPlayDataの内容をoldPlayDataにコピー
newPlayData.copyTo(oldPlayData, true);
}
catch(error:Error) {
trace(error.message);
}

try {
// newPlayDataを削除
newPlayData.deleteFile();
}
catch(error:Error) {
trace(error.message);
}
}

以下,プログラムの構成.



静的プロパティFile.applicationDirectoryはアプリケーションのインストール先を指すFileオブジェクト.

さらに,resolvePathメソッドでpd.iniというファイルパスを作成し,ファイルの保存先(oldPlayData)とする.



さらに,File.createTempFileメソッドで一時保存先(newPlayData)を確保.



oldPlayDataから更新内容があった場合,一時保存先に更新内容を記録しておく.

このへんのプログラムは本題でないので省略.



ウインドウを閉じる時,

一時保存先からコピーしてpd.iniに書き込んだのち,一時保存先のファイルを削除する.





これだけのプログラムなのに,何故か最初のtryで「SecurityError: fileWriteResource」





どーなってんのってググってみたら,

どうやら,applicationDirectoryにおいて,ファイルを作成・書き込みすることはセキュリティ上認められていないらしい.



( ´゚д゚`)エー



その抜け道として,コピー前に,


oldPlayData = new File(oldPlayData.nativePath);


というように,一度nativePath(絶対パスのString)からFileクラスを再宣言すると,

セキュリティエラーから抜けられるとか.



でもそのかわり,

・AIRアプリケーションアンインストール時に自分で作成したファイルは削除されない

・作成したファイルが残っている状態で再インストールしようとするとエラーが発生

引用: applicationDirectory配下のファイルにアクセスする方法 - Fores Labs



あーだめだこれw



素直に,


// アプリケーションのプライベート記憶領域を指定
var oldPlayDataFile:File = (File. applicationStorageDirectory).resolvePath("pd.ini");

とするのが妥当かな.

これだと,applicationStorageDirectoryは,実際のディレクトリ位置がOSによって,

・Windowsの場合
C:\Documents and Settings\[ユーザ名]\Application Data\[AIRアプリID]
\Local Store

・Macの場合
HD/Users/[ユーザー名]/Library/Preferences/[AIRアプリID]/Local Store/

となるので,上記のresolvePathでpd.iniを指定した場合は,


・Windowsの場合
C:\Documents and Settings\[ユーザ名]\Application Data\[AIRアプリID]
\Local Store\pd.ini

・Macの場合
HD/Users/[ユーザー名]/Library/Preferences/[AIRアプリID]/Local Store/pd.ini

となる.

どうやら,このディレクトリはアンインストールと同時に消去されるらしい.





結論:

applicationDirectoryはファイルの書き込みには使用しない

��使うなら読み込み時.事前にパッケージしたswfとか画像データとかを読み込むのに使えばいい)



2009-07-22

今週のオススメ嫁曲:【神威がくぽと鏡音レン】LABOLABO【オリジナル曲】





LABOとLOVEをかけた素敵ソング.

ネタと韻の踏み方が絶妙.



しかも,強調がスゲェ━━━━━━ヽ(゚Д゚)ノ━━━━━━!!!!



PVも非常に良い感じです.





作ったの誰だろ?って思ってたら・・・あー民Pw

この人の曲,大好きだわ.











ん?すでにがくぽとレンの時点で「嫁」曲じゃないって?

いやいや.

がくぽとレンだってオレのよ・・・



アッー!

2009-07-21

【Java Script】SyntaxHighlighter【コード整理】

世の中こんな便利なものがあるということで.
コード表示用のJava Script.



このブログって,みくみくしているわりには,
プログラムソース貼ること多いので,
これあったほうがいいかと思って.



cssファイル,jsファイルをアップロードして,ヘッダーに少しタグ書くだけでできます.
こちらのサイトを参考にさせて頂きました.

Sun Limited Mt. - ブログにコードを表示するときに便利な dp.SyntaxHighlighter



以下,表示確認用テスト.
XMLをpreで

<?xml version="1.0" encoding="Shift_JIS"?>
<vocaloid>
<crypton>
<engine ver="1">
<loid>KAITO</loid>
<loid>MEIKO</loid>
</engine>
<engine ver="2">
<loid no="01">初音ミク</loid>
<loid no="02">鏡音リン</loid>
<loid no="02">鏡音レン</loid>
<loid no="03">巡音ルカ</loid>
</engine>
</crypton>
<internet>
<engine ver="2">
<loid>がくっぽいど</loid>
<loid>Megpoid</loid>
</engine>
</internet>
</vocaloid>

さらに!

なんと,SyntaxHighlighterでAS3対応版を作ってくれた人が!

yourpalmark - AS3 Syntax Highlighting (with SyntaxHighlighter)



これはありがたい.
早速テスト,サンプルにAIRのNativeWindowの使用例.

・・・あ,コード自体はパブリッシュしてないので,
エラー出るかもね.



package {
import flash.events.MouseEvent;
import flash.display.NativeWindow;
import flash.display.NativeWindowType;
import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowSystemChrome;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.Sprite;

public class SubWindow extends NativeWindow {
var base:Sprite;

public function SubWindow(initX:int, initY:int, initTitle:String, initSprite:Sprite) {
base = initSprite;
var nwOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
nwOptions.type = NativeWindowType.LIGHTWEIGHT;
nwOptions.systemChrome = NativeWindowSystemChrome.NONE;
nwOptions.transparent = true;
nwOptions.minimizable = true;
nwOptions.maximizable = false;
super(nwOptions);

super.x = initX;
super.y = initY;
super.width = base.width;
super.height = base.heihgt;
super.title = initTitle;
super.stage.scaleMode = StageScaleMode.NO_SCALE;
super.stage.align = StageAlign.TOP_LEFT;
super.visible = false;

base.addEventListener(MouseEvent.MOUSE_DOWN, widnowMouseDownHandler);
super.addChild(base);
}

// ウインドウを閉じる
public override function close():void {
base.addEventListener(MouseEvent.MOUSE_DOWN, widnowMouseDownHandler);
super.addChild(base);

super.close();
}

// Event Handler /////////////////////////////////////////////////////////
private function widnowMouseDownHandler(event:MouseEvent):void {
super.startMove();
}
}
}



なんか,ずいぶん,技術ブログっぽくなっちゃったな・・・つまらん.













・・・実は,この緑のストライプ.
ミクの縞パンをイメージし(ry
はい,自重自重w
これで,自分のブログらしくなったな)

2009-07-19

【オープニングライブ】kengo.ThreadFlowVI feat.巡音ルカ

初音ミクみく

http://vocaloid.blog120.fc2.com/blog-entry-3878.html

ITmedia

http://www.itmedia.co.jp/news/articles/0907/10/news078.html



などで取り上げられている,クリプトン主催のJassコンペ「EARTH MIX」.



そのオープニングライブが,今日18:30から札幌Apple Storeで行われるということで,

早速,札幌在住のボカロ廃が行ってきましたよっとw



一応,普通の客を装って時間までiPodとMacBook見てました.

MacBookほしいなぁ・・・.



iPod touchをいじって遊んでたら,なにやらライブ関係者らしき人からビラを渡されました.



CA3C0063.JPG

▲今回のコンペのビラとクリプトンの商品チラシ



ん?あれ?ビラ配りしてたあの人.

どこかで・・・って,ちょwwwクリ☆ケンさんではありませんか!



それからして,まもなくして,ミニライブが始まりました.

最初の紹介でいきなり「弊社のマスコット」とか振られて紹介されてたクリ☆ケンさんw

当の本人は録画用の機材チェックしてただけだったのにwww





��ヒャ━━━━━━ヽ(゚Д゚)ノ━━━━━━!!!!

かっこええ.自分がここにいることが場違いな気がして(ry



バンドの方は,ボーカロイド=萌え的な要素を少し払拭したかった的なことを仰ってました.

うん.確かに,こんなにクールなルカさんは,今まであんまり聴かなかったかも.

どこかのジャズクラブで歌ってそうな,そんな空気のある曲に全体がまとまっている.



「kengo.ThreadFlowVI feat.巡音ルカ」

ベース以外のドラムとサックス,ピアノ,ボーカル(巡音ルカ)は全てヴァーチャル.

だから,目の前で演奏しているにも関わらず,音はスピーカーから出てくる.

でも,音の遅延とかはないし,本当にその楽器から生で音が出ているかと錯覚するほどリアルなサウンドなので,

とても不思議な印象を受けた.



肝心のルカさんは,機材トラブルがあったようで,最初はなかなか曲が始まらず・・・

ツン全開のルカさんw



サックスは,ウインドコントローラーなる管楽器感覚でMIDI音源が演奏できる代物.

それで本物のサックス(しかもプロ演奏)の音が自然と出てくるんだからすごい.

吹き込んだ息の流量とか計算して,音量決めてたりするんだろうか?



自分理系なもんで,なんかもう,機材見るだけで+(0゚・∀・) + ワクテカ +





ちなみに,今回,ルカさんボーカルの曲は2曲あったんだけど,

そのうちの1曲はなんとすでにiTunes Storeで公開されているそうな.

1曲無料カードまで貰っちゃったし,これは買いにいかなければ!



66206605.jpgクリックでiTMSへ

kengo.ThreadFlowVI - Speak Low (feat. Megurine Luka)

( ´ー`)フゥー...とりあえずは、ひと段落?

今回は、なんか、すごく勉強になった。



Flash(AIR) + PHP + SQL



だったからなぁ。



PHPでは、

・そもそもPHP自体の勉強

・PEARやSmartyなどのライブラリの使用

・SQL操作

・セッション周りとか認証処理関係

・PHPのセキュリティの基本

などなど。



Flash(AIR)では、

・Fileクラスを使ったファイル制御全般

・XMLの作成・読み書き

・FlashからPHPへデータ送ったり、逆に結果を受け取ったり(しかもXMLごと)

・カスタムイベントの有効活用





まあ、正直一番つらかったのは、



データベースの正規化とSQL構文



だっだんですけど(;´∀`)

SQLを扱うPHPファイルだけで1500行オーバーってどうゆうこと?



あまりにも見にくいもんだから、便宜的にファイル3,4つに分けちゃったよw





正規化も計画的に。





あとで、技術系のネタで記事かいとこ。

2009-07-16

今週のオススメ嫁曲:【初音ミク】 はいぽせしす





今週,すこぶる忙しいんだが・・・この記事の更新だけはやめないw



この曲を作ったよよPことDenkitribeさんは,ミク以前にすでにネット上では有名な方なんだけど,

こんな曲も作っていたことに最近知った.



とりあえず,1度コメなしで視聴することをオススメする.

歌詞に込められた意味を考えると非常に面白い.



というか,ミクかわいすぎだろw

繰り返しの動きがポップンのキャラに見えてしまって,よけいかわいく見えるw






歌詞は「僕」視点.



仮説A:君は僕が嫌い

仮説Aとなる理由:人として当たり前のこと

→ 「君」から見て「僕」はどう思われているか本当は分からない

→ だから「僕」側の内容は確実に全て正しいものを挙げておく



仮説B:僕も君が嫌い

仮説Bとなる理由:僕から見た君のこと

→ 実は「僕」から見て「君」が全部好きなところ

→ 「僕」から見たことなので,「君」側の内容は全て正しい



僕の仮説が正しければ.

→ 仮説AもBも間違っている.

→ 君も僕も好きなんだから付き合えるよねという僕の思い



ということで,「僕」の片思いソング?みたいな.

2009-07-08

今週のオススメ嫁曲:雨がひどいのです【初音ミクオリジナル】



▲このてるてるミクさんほしいんですけどw



なんか,こう,かわいくて,ゆるーい感じの作風がこたつPが作る曲の特徴.



そもそもこたつPと呼ばれるようになった元ネタの曲がもうそんな感じ.





▲「ここが,ぬくい,でない」のフレーズが好き



( ´ー`)フゥー...ホントなごむわ.





そんな,こたつPの最新曲はこちら.





▲対位法だって.音楽知識がない自分には分からん・・・.



・・・うん,やっぱり,かわいい.

野菜食べたくなってきた.

2009-07-07

【Flash】Tweener1.32.74→1.33.74

今、あるサイトに運営において必要なFlash(正確にはAIR)を制作中.



Tweenerの最新バージョンが気になったので調べてみた.

どうやら最近,ちょっとしたごたごたがあったみたい.



TweenerはFlashを記述するAction Script 2.0,3.0のライブラリ.

オブジェクトを動きを簡単にかつ詳細に設定できる万能ライブラリで,かなり多くの人に使われている.

というか,普通にプロも使ってそう.

Google Codeで配布されてます.

http://code.google.com/p/tweener/



現状の最新版は1.33.74.

その前バージョン1.32.74において, 「Tweenerの上書き」の設定について不評があり,1.33.74ではそれが修正されている.





そもそもTweenerの上書きって?

同じオブジェクトに対してTweenを連続で設定したとき,以前のバージョンまでは自動で上書きされてていた.


var mySquare:MySquare = new MySquare(); // 正方形
var myCircle:MyCircle = new MyCircle(); // 円
mySquare.x = 20;
mySquare.y = 20;
stage.addChild(mySquare);
myCircle.x = 20;
myCircle.y = 20;
stage.addChild(myCircle);
Tweener.addTween(mySquare, {x:160, time:4, transition:"linear"});
Tweener.addTween(mySquare, {x:160, time:2, transition:"linear"});
Tweener.addTween(myCircle, {x:160, time:4, transition:"linear"});
Tweener.addTween(myCircle, {y:160, time:2, transition:"linear"});



▲実行結果



x座標を連続で設定したmySquareは,後に書いた方に上書きされていることが確認できる.



ver.1.32.74の変更点

Tweenの上書きをオプション扱いにする.その際,デフォルトではfalse(無効)

なので,上のコードをver.1.32.74で実行すると,





▲ver.1.32.74で実行



mySquareの設定が上書きされなくなる.



そのかわり,オプションに,


Tweener.addTween(mySquare, {x:160, time:4, transition:"linear"});
Tweener.addTween(mySquare, {x:160, time:2, transition:"linear", overwrite:true});

overwriteオプションを追加することで,前バージョンと同様に上書きされる

しかし,前バージョンのライブラリを使っていた人にとっては,バージョンアップによって動作に問題が生ずる可能性がある.



ver.1.33.74の変更点

そこで,現最新バージョンでは,Tweenの上書き設定をする静的プロパティ「autoOverwrite」を追加し,上書き設定のデフォルトをtrueとした.

これにより,前バージョンまで使っていたASであっても正常に動作し,かつ上書きの有無を設定できるようになった.



つまり,上書きをしたかったら,今まで通りそのままでおk.

上書きしたくないのなら,上記ver.1.32.74のようにオプションで1つ1つ設定するか,以下のようにして設定する.


Tweener.autoOverwrite = false;
Tweener.addTween(mySquare, {x:160, time:4, transition:"linear"});
Tweener.addTween(mySquare, {x:160, time:2, transition:"linear"});

ver.1.32.74で上書き設定をデフォルトでfalseにした理由は,その処理速度の問題から.

Flashはしばしばというか,かなりの場合,処理速度が重要なキーとなる.

まあ,スクリプト言語だし,C言語に比べれば計算速度自体かなり遅い.

だから,できるだけ速くする努力は必要.



今回の「上書き設定」は,上書きしないことがわかっているなら,最初からfalseにしといたほうがコストが少なくすむ.

例のFlashの実行結果からように,以前のバージョンのTweenerでは,同じオブジェクトがTweenを設定されたとき,まず,同じプロパティがあるかどうかを探索する.

同じプロパティがあった場合は,その設定を上書きして,ない場合はそのまま設定を追加する.



・・・ということは,今まで作った自分のプログラムもfalseにした方が効率上がるのかな?

どこかで上書きしてたら困るけども.

どれくらい速くなるかは要検証.

2009-07-06

くさもちはStudie GLAD Racingを応援しています

というわけで,実は個人スポンサーです.



��個人スポンサーの皆様

http://stgt.jp/sponsor_personal/



「くさもち 様」でかなーり下の方に小さく.

8053人とか多すぎワロタw

おまえらミクRQフィギュアに釣られすぎ・・・



って,それ,まさに自分だった(ノ∀`)アチャー



つーか,自分のHNの上に自分の本名と同じ名字あるんですけどw

うちの名字そんなにないほうだと思っていたので,間違われたかと思って焦った.

��ググると意外とあるみたいだ.(株)○○,○○商会,○○寺とかあるんだw知らんかった.)





「Studie GLAD Racing」とは,カーレースのチーム名.

知っている人は知っている,SuperGTに初音ミクの痛車で殴り込みをかけたというすごいチーム.



車はBMW Z4 M Coupe.

エンジンはV型8気筒.

そして何より,



このマシンの最大の特徴は「究極の痛車」



との公式宣言w



前は公式画だけだったんだが・・・













 ・・・すごく,ミクです.


2009-07-05

PSP大活躍な件

・アイマスSP



・Project DIVA





音楽プレイヤーと化していたのに、現在2本同時進行。



電力足りねぇ。



コンセントつなぎっ放しで、すでに携帯ゲームではないw





えーもう、どっちもプロデュース大変ですよ。



アイマスは今日中にまたやるって約束してる。

��ゲームをやめるときに次回プロデュースを決めるイベントがある)

亜美真美もうちょっとで終わりそうだし。

次は、やっとB→AのIU。



��IVAは終わりが見えない。

モジュール(コスチューム)の出現条件がなかなか大変。

とりあえず、メイコ姉さん、ハク、ルカは出したんだけども。











お前たちは俺の翼だ!





・・・どこかの二股主人公になってしまったw

【Project DIVA】もうちょっとがんばろうね~

(゚д゚)!!











































・・・サーセンw

【Project DIVA】よくできましたぁ~♪

(゚д゚)!























































(´∀`*)ポッ

2009-07-03

今週のオススメ嫁曲:【MEIKO】Moonlight children





浮気しましたwごめんなさいor2

いや,つーかMEIKOも嫁だし!(開き直り)



この作品,「MEIKOの本気」タグがついているほどの神調教.

ボーカロイドでも,ここまで力強い歌い方をさせる(またはそう感じさせる)とは!



個人的にミクで替え歌作った経験はあったのだけれど.

そのとき,どうしてもパワー不足が目立った(ミクの特性でもあるかもしれない).

まあ,DTMのDすら知らんかったので,あのときはいくら頑張っても音割れしてた・・・.

だから,こういう曲が作れる人って技術持ってるなぁと毎度感心する.



曲は,Furture Jazz系.

・・・っていってもタグについていたからそういっただけで,自分は詳しくないのでよく分かりませんw

とにかく,かっこいい曲ってことでいいジャマイカ!



なのに,全く評価されていない.

映像はないのが原因なんだろうか?

映像なしでも十分評価された作品だってあるのに.





ということで,勝手に宣伝w

この際,ここで紹介したところで・・・っていうのはおいておいて.



作品を作った方は,microgrooverさん・・・でいいのかな?

そもそも,最初に発表してる曲がmicrogrooverという曲.

しかもLOLA!







か,かっこいい・・・(´∀`*)



ミクの曲も2曲作っている.





▲どちらかというと,楽器的にミクを使ってる感じ





▲ロボ声がかっこいいMikuHouse



ニコ動からはMySpaceのリンクあったけど,どうやらピアプロにもいらっしゃるようです.



MySpace



ピアプロ









これからは,なるべく埋もれている曲を紹介しようかな.

有名すぎるの紹介してもつまらんし.



くさもちは全世界のPを応援します



むろん,これはボーカロイドのPだけとは言ってない!



2009-07-01

【PHP】Smartyのススメ

SmartyはPHPによるテンプレートエンジン.



- Smartyの考え方 -

WebページってHTMLとかPHPとかSQLとかいろんな言語が1つのファイルに書いてあってカオスwww

つーか,デザイン担当とロジック担当が違ったら大変すぎるよな.

・・・じゃあ,最初からデザインとロジックでファイルを分けりゃいいんだ!





こんな感じ.

Smartyの実体はPHPによって書かれたクラスファイル.

よって,PHPが使える環境であればどこでも使える.

レン鯖であっても,



公式:http://www.smarty.net/



のdownloadからDLしたディレクトリを丸ごとうpすればいい.

しかし,その場合,セキュリティ対策は必要.



以下に例.



▼owata.php

<?php
require_once 'config/config.inc.php'; // ここにディレクトリ場所とかdefineされてる
require_once _DIR_SMARTY_LIBS . 'Smarty.class.php';

$smarty->Smarty();
// Smartyのディレクトリ設定
$smarty->template_dir = _DIR_SMARTY_TEMPLATES; // templeteディレクトリ
$smarty->compile_dir = _DIR_SMARTY_COMPILE; // completeディレクトリ
$smarty->config_dir = _DIR_SMARTY_CONFIG; // configディレクトリ
$smarty->cache_dir = _DIR_SMARTY_CACHE; // cacheディレクトリ

$smarty->assign('owata', 'そうだ!樹海に行こう!');
$smarty->display("owata.tpl");
?>

▼owata.tpl

<html>
<body>
ニートの提案「{$owata}」
</body>
</html>

▼実行結果(owata.phpにブラウザからアクセス)

ニートの提案「そうだ!樹海に行こう!」



owata.phpにアクセスすると,


$smarty->display("owata.tpl");

で,テンプレートファイルowata.tplを読み出して中のHTMLを表示する.

そのとき,予め,


$smarty->assign();

で,設定しておいた中身の置き換えを行う.

ここでは,owata.tpl中の{$owata}を「そうだ!樹海に行こう!」に置き換える.



ちなみに,テンプレートファイルのディレクトリ位置は,


$smarty->template_dir

で設定したディレクトリ位置となる.





これが非常に便利だと考えられるのは,PHPの処理次第でテンプレートを変更できることにある.

例えば,PHPでありがちな,「エントリー」→「内容確認」→「完了」.

<input>タグのaction属性を自分にしておき,ボタンを押したときのPOSTで判断して処理を変える場合,


if(isset($_POST["entrySubmit"])) {
// ~ここにいろいろ処理~
// エントリー内容の確認
$smarty->display("confirm.tpl");
}
else if($isset(_POST["confirmSubmit"])) {
// ~DBに登録とかいろいろ処理~
// 登録内容の表示
$smarty->display("entryResult.tpl");
}
else {
// 通常の表示(エントリーページ)
$smarty->display("entry.tpl");
}

といった感じに,状況に応じてテンプレートファイルを変更することが可能.



2009-06-27

ヱヴァンゲリオン:破

やっぱ,すごいね.エヴァ.



2時間前から「グッズを買う列」と「映画を見る列」に分かれて,すでに列ができていた.



終わった後,会場から大きな拍手.

とにかく,それぐらいよい内容でした.



おなかいっぱい.


-------------------------------------------------------------------

始まり数分でいきなり5号機大破にワロタw



前半はほのぼの展開.

TV版のシンジ君がペンペンに驚くシーンが,見事にサービスカットになっとるw

ペンペン乙



アスカは,何故にワンダースワン?(バンダイ提供だからかな)

レイのぽかぽか発言に吹いてしまった.



しかし,レイはほんとに人間っぽくなった.



アスカとレイの距離が心なしか縮まっている気がした.



父さんは,いい親父になったな.



マリはどんなキャラかと思ったら・・・

これはw他のヒロインさんと全くかぶらない性格と容姿www

これは少し狙いすぎ.





と思ったら,後半は・・・アスカファン涙目状態.

死亡フラグ立てながら,サービスカットとか・・・それどころじゃないでしょーがw



そして,最後の急展開・・・シンジ君がかっこいい!まさに男・ヒーローって感じ.



ラストは・・・またおまえかw

また,似たような台詞残して終わるとかさ.



また,次回予告にしてやられた!

くそお,次回が楽しみすぎるじゃないか!

【PEAR】DBクラスのススメ

PEARとは,PHP Extention and Application Repositoryの略.



つまり,PHPの機能を拡張してくれるライブラリ.



今回はこの中でもDBクラスについて,紹介メモ.





PEAR::DBは,データベースに依存することなく,データベース接続をすることのできるライブラリ.



例えば,データベースに接続するとき(C言語で言えばfopen),


MySQL:
$db = mysql_connect(MySQLサーバ, ユーザ名, パスワード);

PosgreSQL:
$db = pg_connect(
"host=干す姪 port=ポート dbname=データベース user=ユーザ名 password=パスワード"
);

SGLite:
$db = sqlite_open(データベース, ファイルモード, エラーメッセージ保存用変数);

というようにバラバラになってしまう.



しかし,DBクラスを用いた場合,


require_once("DB.php");

$dsn = DBタイプ . '://' . ユーザー名 . ':' . パスワード
. '@' . ホスト名 . '/' . データベース名;
$db = DB::connect($dsn);

と書けば,上記のどのデータベースであっても,データベースに接続することが可能となる.



これは特に,サーバー移行するときなど,データベースが変わる可能性がある場合に有効.

さらに,




$db->quote(クォートしたい文字列);

でデータベースに合わせたクォートが可能.クォートはセキュリティ対策の基本なので,これは利用したいところ.

2009-06-25

今週のオススメ嫁曲: 【VOCALOIDS×バイオリン】 芽生 【民族調オリジナル】





��タ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!



独特な民族調の音楽。バイオリンの美しい響き。



ボーカロイド楽曲にありがちな「曲に対してキャラクターだけが立ったもの」ではなく、



1人1人を楽器のようにして用い、バイオリンとの調和があって、曲が成り立ってる。



そんな感じの曲。





・・・・・・ごめんなさい。中学校の音楽成績2が出しゃばりました。

��ちなみに、高校では音楽なんてなかった・・・ていうと、どこ行ってたか特定されそうだがw)



ゆにめもPは以前にも「息吹」という曲を作っている。

自分は、以前からこの独特の曲調が好きだった。

��もちろん、ブログパーツの「真・フルみっくすプレイヤー」にも選曲済み。)



今回は動画にも力を入れている。(いや、前回も十分力入れていると思うけれど)

少ない絵の枚数ながら、動きがあって、曲にうまくマッチしている。



ちなみ「息吹」はこちらから。





▲リンレンの歌声合いすぎw



そのほかにも、





▲(・∀・)ニヤニヤ動画。歌詞の1番と2番がそれぞれリンとレンの視点



とか、





▲ACT2と無印の心の葛藤?不安定なロック。歌というよりミュージカルに近い感じ



というように、どれも発想や着眼点が面白い。



もちろん、ここで「めぐ・ルイーネ・ルカさん」を紹介しない、というわけにはいかないw





▲「English しゃべれますか?」

2009-06-24

【IE事情】フォームのinputタグ:textとpassword

さすがにこれはないと思った,IE事情その2.



よく,ユーザ名,パスワードでログインってありますよね.



まあ,それを作ろうとしてたんだが・・・



form_ff_before.gif

▲[Firefox]計画通り



form_ie_before.gif

▲[IE](;・∀・)ハッ?



��(゚д゚)ノ ナニコレ?



size属性一緒にしてるのに何で長さ違うの?つーか何故,サイズまで違うw



ググってみたところ・・・

http://support.microsoft.com/kb/831331/ja



なんと!

inputタグのtypeが



textのときは"MS UI Gothic"

passwordのときは"Tahoma"



がデフォルトフォントなのだー!



これがIEの仕様(笑)



( ´゚д゚`)エー



しかも,XP以前のバージョンでは"MS UI Gothic"で統一されていた!



(; ・`д・´)な、なんだってー!!



なぜ変えたし.



何てWebデザイナー泣かせなブラウザ.IEたん.





ということで,解決策としては,

<input style="font-family:Tahoma" type="text" size="20">
<input style="font-family:Tahoma" type="password" size="20">

とする.

いや,むしろ,いっそのこと,外部CSSファイルに,

input {
font-family:Tahoma;
}

と書いておく.



結果,



form_ff_after.gif

▲素直な性格の狐火たん



form_ie_after.gif

▲デザイナーに対してツンデレなIEたん

2009-06-21

【PHP】GETとPOST

まずは簡単なところから.



PHPにおけるPOSTとGETは,PHPからPHPにデータを送る操作のこと.

��まあ,正確にはちょっと違う.PHPに限る話じゃないので.)



例えば,以下のようなサイトURLを見ることがあると思う.


例:(Gmailの受信トレイのURL)
http://mail.google.com/mail/?hl=ja#inbox

気になるのは,「?」以降のhl=ja#inbox

他にも,ググったりしたときなどは,こんな感じのが長々とくっついてくることが確認できる.



実はこれがGETの正体.

GETは,サイトURLを使ってデータを送信する仕組みです.


http://送信先?変数名=変数の中身

というように,送信先の後ろに「?」を付け,その後ろに変数を書く.

複数渡す場合は,「&」ではさんで列挙する.


http://vocaloid.php?loid1=miku&loid2=rin&loid3=ruka

この場合,受け取る側であるvocaloid.phpでは,

$_GET["loid1"] // miku
$_GET["loid2"] // rin
$_GET["loid3"] // ruka

と書けば,それぞれの値を取得できる.





しかし,GETは手軽な分だけ問題もある.

1つは,URLにくっつくので,変数の数が多くなった場合に使えなくなること.

あと,もう1つ,ユーザ側から変数が丸見えだということ.



これでは,パスワードやクレジット番号などの保護されるべきデータを送ることはできない.



そこで,こういった,ユーザからあまり見えてほしくないものについては,POSTを使う.

��もっと言うなら,セッションを使うべきだが,今は置いておいて)

POSTは,例えば,<form>タグを使って,


<form method="post" action="login.php">
ユーザネーム:<input type="text" name="username"><br>
パスワード:<input type="password" name="password"><br>
<input type="submit" value="送信" name="submit">
</form>

とし,login.phpでは,


$_POST["username"] // フォームで入力したユーザネーム
$_POST["password"] // フォームで入力したパスワード

で受け取る.



ちなみに,<form>タグでは,method="GET"とすれば,GETで受け取ることも可能.



2009-06-20

ブログの方向性

設置し直したカウンタが1000を越えたようなので,今一度,このブログの方向性を確認する.





ん?そもそもカウンタなんてあったっけ?

いや,まあ,一応あるんだ一番下に小さく.

アクセス数は目的ではないのだが,とりあえず誰か来たという印になるからつけている.



おそらく,モチベーション+2%程度の能力.





昔はIMAGINの使っていたんだけど(2000は越えてたっけ?もう記憶がない・・・),

あれだといつ配信終了するか分からない.

突然,カウンタ消えると悲しすぎるんで切り替えたんだ.





話を戻して,このブログのこと.

実はこのブログ,アクセス解析してます.

��つーか忍者ブログの左上にある「Ninja Tools」はアクセス解析の印だったりする)



そこで,アクセスしてくれる方がどのような「フレーズ」で検索し,ここにたどり着いているのか見ることで,

ニーズを抽出し,今後のサイトの方向性を議論する.

4ヶ月分のランキングを見てみると,




1位:数式エディタ ショートカット
2位:LSH ハッシュ
3位:くさもち
4位:opencv 顔認識

1位はこの記事 → 【数式エディタ】ショートカット集



数式エディタって使いにくくて,イライラするもんね.

検索する気持ちはよく分かる.



2位はこの記事 → LSHまとめ(1)



ごめんなさい.(2)はないんです.

研究で使っていたLSHの論文まとめ.

LSHは記事少ないからね.自分も調べるときは苦労しました.



この記事はPageRank様にも認められ,堂々の1位(∩´∀`)∩ワーイ

PageRank様「多くの良質なページからリンクされているページは,やはり良質なページである



良質なページである



大事なことなので2度書きましたよ.

でも,この記事確か「ゼミ前で,寝ないで調べて書いた」記憶があるんですが・・・.

これのどこが良質なページなんだ/(^o^)\ナンテコッタイ



3位は無視してw

4位はこの記事 → 【OpenCV】顔認識×初音ミク



これが上位に来る理由は分からない.

「OpenCV」の単語自体がマニアックだからかな?

ニコニコでやっていたOpenCVの顔認識を紹介しただけのページなんだが.

OpenCV自体は普段から使ってるけれど「この発想はねーよ」と思った.







ん?待て待て.



それより,疑問に思うことがある.

・・・「初音ミク」がない.



えーと・・・




・・・
14位:初音ミク





これは・・・どうやらブログの方向性がはっきりしたようだな.



それは・・・.





「初音ミク」をフレーズランキング1位に上げる!





ん?ニーズの掘り起こしはどうしたのって?



ニーズはあるんじゃない,こちらから仕掛けていくものだ!





意味の分からないことを言いながら,



このブログは,どうやら痛ブログのベクトルへ突き進むようですw













・・・正直,かなり無謀な話だが.

うん,まあ,全く策がないわけでもない.たぶん.