忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2025/08/23 23:23 |
Minecraft1.3.2 Conspicuous Shears その2 センサーはさみ
前回の続き。

鉄インゴット、レッドストーン、エメラルド*4、ダイヤモンドでエメラルドセンサーはさみType:ダイヤモンド(Emerald Sensor Shears Type Diamond)になります。
2012-10-02_00.42.30.png
はさみといっていいのかかなり疑問なな性能ですが、ダイヤモンド鉱石が近くにあるときに右クリックすると、刃の色が濃くなります。
2012-10-02_00.44.51.png2012-10-02_00.44.54.png2012-10-02_00.44.58.png

離れた場所で右クリックすると薄くなります。
これを使えば、近くにダイヤが埋まっているかどうかを確認することができます。

使用回数は普通のはさみと同じく240回ですが、右クリックは一回で使用回数を6も消費し、また右クリック押しっぱなしだと凄い勢いで消耗するので注意が必要です。
普通のはさみとしても使用できますが、それはもったいなさすぎるので普通のはさみを使ったほうがいいですね。

このはさみ、他にも鉄、金、レッドストーン、エメラルド、石炭、ラピスラズリの各種鉱石を検知できるタイプがあります。
レシピは省略しますが、ダイヤモンドの部分をそれぞれの鉱石に変えるだけです。
これで石炭が近くにあったらサーチ可能!意味なさすぎる!

さて、エメラルドセンサーはさみType:レッドストーンだけ何故か派生アイテムがあります。
エメラルドセンサーはさみType:レッドストーン、レッドストーンパウダー*4でパワーエメラルドはさみ(Powered Emerald Shears)。
2012-10-02_00.59.19.png
右クリックした鉱石を、ランダムで他の鉱石に変えてしまうというものです。
ってそれ、前回の金のはさみとどう違うんだ?

こっちのはさみの特徴は、回収せずに鉱石の種類を変えてしまうという点です。
2012-10-02_01.01.55.png2012-10-02_01.03.19.png
それぞれの鉱石を一回づつクリックしたらこのようになりました。
何故か出てきませんでしたが、金やラピスラズリ鉱石にも変化します。

使用回数はわずか40回で、また作成コストも高いですが、石炭鉱石あたりを全部変化させてしまえば収支はプラスになるでしょう。

なお今回紹介したはさみは鉱石を刈ることができないので、最初から付与されているFortuneは全く何の意味もありません。

以上、色々と付加効果の付いたはさみを追加する、Conspicuous Shearsでした。


マインクラフト1.3のまとめ
PR


2012/10/09 21:26 | Comments(0) | └minecraft
FCB 11th Live ~の樹の下で~ に行ってきた
2012/10/07、FCB 11th Live ~の樹の下で~を観に行ってきました。

ファミコンの音楽を吹奏楽オーケストラで演奏、という酔狂なアマチュア団体、ファミコンバンド(FCB)による演奏会です。
アマチュアでしかも入場無料ということでもっと同人的なものを想像していたのですが、想像以上に本格的で素晴らしい内容でした。
まあ確かに本物のプロと比べたらたまに音を外したりとかがあったのは確かなのですが、それでも十分にすごいのと、あとなんと言っても寸劇が楽しく、笑いの絶えない公演でした。

これは昔の公演ですが、だいたいこんなノリです。
15時開演、19時ごろ終了でしたが、こんなに時間が短いと感じたのは久しぶり。
しかし動画だけだとやはり現場の雰囲気みたいなのが伝わってこないので、ほんの少しでも琴線に触れる内容があったら是非一度は生で見るべきです。

1面 ハイパーディレクテッドステージ

M-01 檄!SEGAメドレラ

のっけからFF6のオープニングに乗せて「セーガー、セーーーガーーー」
いやいやいきなりファミコンじゃないから!
奏者が色々と妙な格好をしているのですが、なんと演奏中に一部の奏者が舞台裏に引っ込んでいきます。
何なのかと思ったら演奏中のゲームの場面を再現するという素敵エンタテイメント。
パンツァードラクーンに始まり、ソニックやスペースチャンネル5、ゴールデンアックスやマイケルジャクソンズ・ムーンウォーカーの名場面を再現。
やたら完成度の高いオパオパがうろうろしてたり、うららとモロ星人が踊りで勝負してくれたり、そしてマイケルはもちろんダンスアタック。
そして最後の檄!帝国華劇団では大神・さくら・すみれ・紅蘭・アイリスによる見事な合唱。アイリスはアレでしたが。
あれ?オーケストラってなんだっけ?いや、それよりマリアはどこだ。
まだまだ序の口なんてことは露知らず、この時点で既におなかいっぱいどころか大満足な内容でした。

M-02 任天堂メドレガ

任天堂ゲームのメドレー集大成。
ディスクシステムのテーマ(リードエラー)とかパルテナ(FC版)、レッキングクルーやマイクタイソン・パンチアウトといった往時の名作から、マリギャラやポケモンBWといったわりかし新しめの作品まで23タイトル、三楽章の超大作メドレーでした。
さすが最上級形容詞ガ。

2面 チープ&マニアックステージ

M-03 スーパーマリオブラザーズ 9-1

1面はフルオーケストラ?ほぼ全員で演奏するステージでしたが、2面は演奏人数は少なめで、そのかわり寸劇多めなステージでした。
M-03では本物のファミコンを持ってきて、ステージ上で9-1を出すという無茶なことをなんと一発で成功。
奇跡が舞い降りた瞬間。

M-04 パズルメドレイ

ドアドアにキャッスルエクセレント、フラッピーにレミングスといった旧作パズルのメドレー。
ここは寸劇の完成度が高くて、とても楽しかった。
レミングスの通行止めに直下堀り(さすがに爆発はなかった)、
しかしフラッピーは3曲あるのだが何故か2曲しかやらなかった謎。

M-05 野球メドレイ

まさかこんなものを持ってくるとは。
守備が全員同じ方向に進むとか、バントホームランとかそこらへんを再現したよくわからない謎作品(褒め言葉)。

M-06 ルート16ターボ ~導かれし者たち~

ルート16ターボのふりをしたドラクエ4メドレー。
第1章から第4章までのストーリーを概ね再現したようなしてないような進行で、5章はラスボスまで全すっ飛ばし。
弁当売却、8逃げ+メガザル、ザラキ連発のクリフトとか、実によくわかるネタ連発でした。
あと小道具に一番力が入っており、馬車とデスピサロ、あとホイミンの再現率が半端ないことになっていました。

M-07 ときめきメモリアル

プレイしていない人には全く理解できない、まさかのときメモ完全再現。
まずオープニングで観客の手拍子が完璧に揃っているという怪奇現象。おまえら何者だよ。
いや、人のことは全く言えませんが。
何故か登場人物が詩織と朝日奈夕子、紐緒結奈という謎の選択。
平日コマンドのぴこーんや、何度も下校イベントが発生するあたりまで再現してくれています。
朝日奈さんの台詞と姿勢の再現度が高すぎて実にウザいったらありゃしない。
外井は残念ながら追い返されるだけでした。
エンディングは見事に好感度最低エンドでこちらのトラウマを抉り出してくれました。
そして伝説の樹だけが残った。

3面 シンフォニックステージ

M-08 ソルスティス

シンフォニックステージは正装に着替え、全員演奏で寸劇無しの実力勝負ステージ。
ソルスティスは私は当時知らず、TASさんで知った超絶技巧名曲ですが、このファミコンの限界を超えた楽曲を完全再現!というかなり無茶な企画。
「機械にできることが人間にできないはずが無い」いやいや無理だろと思いきや見事に再現してくれました。
まあさすがに細かすぎるところはパスしてましたが。

M-09 ファイナルファンタジー5

なんと当初は全曲やる予定だったとか、いやそれ最初から無理だろ。
それでもかなりの曲数を演奏してくれました。おそらく2/3くらい?
ただただ演奏だけを行うのではなく、ハーヴェストは拍手で再現、マンボdeチョコボの「ウッ!」、はるかなる故郷はMY HOME, SWEET HOMEボーカル付きと心憎い演出がなされ、わかってる人が編曲したんだなあということがよく伝わりました。
最終決戦はビッグブリッヂの死闘→光を求めて→決戦→最後の闘いという奏者の体力を心配したくなる構成。
さすがに再現が無茶な曲目だけあって所々抜けや飛ばした音もありましたが、その場で聴くことのできた勢い・迫力は何物にも代え難いものがありました。
エンディングはファイナルファンタジー→エンドタイトル→親愛なる友で終曲という意外な、それでいてしっくりくる終わり方で、大きな拍手で幕を閉じました。
だが虚空への前奏曲を飛ばしたことだけは許されぬ。

ボーナスステージ

これで終わりだと思ったか?
とばかりにこれまた盛りだくさんのおまけステージが始まりました。
司会がなんか微妙なかんじだったのが残念ですが、のっけからおまけとするにはもったいなさすぎるクロノトリガー。
編曲ではなくOP単曲だからというだけの理由で載せないとかもったいなさすぎる。

次は死亡シーンメドレー。
色々なゲームの一部ステージ曲と死亡シーンを演奏し、そのゲームタイトルを全部当てたら次回ステージの特等席がもらえるらしいです。
全部で16タイトル演奏されましたが、残念ながら私は11タイトルしかわかりませんでした。うぬぬ。
指揮者がスペランカーのヘルメットを被って指揮台から転落死したりとか、無茶苦茶な演出付きで非常に楽しいステージでした。

最後はオホーツクに消ゆのエンディングで締め。
なんだけどこのゲームは知らないのだ。なんてこった。
出てきたタイトル8割方わかるのに最後の最後がわからないなんて。うごご。
なお知人によると、昔この演奏したときに盛大に音を外したことがあるのでそのリベンジじゃないか、とのことでした。
見事にリベンジを決め、綺麗に終了。


全体的に、上手な演奏を目指すというより、お客を如何に楽しませるか、そして自分たちが如何に楽しむか、というところを目指した舞台でした。
もちろん演奏も最低限以上の質はありますし、そもそも演奏とか考えてないゲームミュージックを再現しようって時点で無茶は承知です。
全部で4時間近くというとんでもない長丁場にもかかわらず、全く飽きの来ない、最後まで笑いと拍手の絶えないステージでした。
これで入場無料だなんて世の価値観はおかしすぎる。
私は次回も絶対に見に行きます。
ほんの少しでもなにか感じる人がいましたら、是非見に行きましょう。
絶対に損はしません。

最後に。
ただただ聴くだけでも熱気と興奮で倒れそうなステージの中、見事に演奏・演出・寸劇を行いきったFCBの皆様。
素晴らしい時間をありがとうございました。


2012/10/08 23:36 | Comments(0) | その他
買ったものリスト 2012/10/07
2012/10/07、FCB 11th Live ~の樹の下で~に行ってきました。

もっと同人的なものを想像していたら予想より遙かに立派な演奏だったので驚いた。
しかし何故虚空への前奏曲を飛ばした。


魔術士オーフェンはぐれ旅 解放者の戦場 秋田 禎信
魔術士オーフェンはぐれ旅 魔術学校攻防
☆☆☆☆

ようやく往時の勢いを取り戻したような、そんなような気がしないでもない。
ただ今シリーズの登場人物はみんな真面目で、当時アレだった人たちもすっかり落ち着いちゃってるせいで全体的に重苦しい感が漂います。
あのコンスタンスですらまともに仕事してるっぽいしどうなってんだ。


がんばれ!消えるな!!色素薄子さん5 水月 とーこ
がんばれ!消えるな!!色素薄子さん6
がんばれ!消えるな!!色素薄子さん7
☆☆☆

あれ、最近、話の内容も薄く…?
なんか個々のエピソードが全く頭に残らないんだが。


2012/10/07 23:53 | Comments(0) | 買ったもの
Minecraft1.3.2 Conspicuous Shears 付加機能付きはさみを追加する
はさみを追加するMODはこれまで私の強化はさみ以外ほとんど無かったのですが、最近になってようやく見つけました。

Conspicuous Shearsは、付加機能が付いたはさみを追加するMODです。
方向性としては、使用回数を増やすのではなく通常のはさみ以外の効果を追加するようなMODとなっています。
使用したバージョンは不明、使用BlockID数は0です。

まず欠点として、ItemIDが4352~4362,5255の固定で変更できません。
@MLPropって書くだけなんだから対応してくれ。

ダイヤモンドはさみ(Diamond Shears)は鉄インゴット、ダイヤモンド*4。
2012-09-29_14.12.49.png

羊毛や葉などは普通のはさみと同じく刈ることができます。
最初からFortune1がついていますが、別に羊毛回収数が増えたりはしないようです。
では何に使うかというと、こいつを鉱石に向けて右クリックすると中身を抜き出すことができるという特殊能力があります。
2012-09-29_14.17.33.png2012-09-29_14.17.44.png

Fortuneはこれに対して効果があり、たまに鉱石取得数が増えます。
回収可能な鉱石はバニラのものと同じで、他MODで追加されたものには効きません。

次にダイヤモンドブレイズはさみ(Diamond Blaze Shears)はダイヤモンドはさみ、ブレイズパウダー*4。
2012-09-29_14.30.00.png

基本性能はダイヤモンドはさみと同じですが、鉄と金鉱石をクリックしたときに鉱石ではなく既に精錬された状態でドロップするようになります。
2012-09-29_14.31.01.png
便利と言えば便利ですが、IC2など導入している場合はかえって使いづらくなりますね。

なお、ダイヤモンドはさみとダイヤモンドブレイズはさみの使用回数は普通のはさみと同じく238回です。

金のはさみ(Gold Shears)はダイヤモンドはさみ、金インゴット*2、金ブロック*2。
2012-09-29_14.40.33.png

右クリックした鉱石を、ランダムで他の鉱石の中身に変えて抜き出してしまうというものです。
2012-09-29_14.45.42.png2012-09-29_14.46.08.png

エメラルドやダイヤモンドも出現します。
まあ正直石炭相手限定ですかね。
使用回数は57回と少なめです。

残りは次回。


マインクラフト1.3のまとめ
 


2012/10/06 22:43 | Comments(0) | └minecraft
PHP5.3 Smartyのhtml_select_dateで任意の名前を指定
{html_select_date}はYYYY年MM月DD日という表現が一発ではできないというのは昔言いましたが、実はもっと不便なことがあり、実はフォームの名前に任意の値を設定できません。
たとえば{html_select_date prefix="hoge"}とすると
 <select name="hogeYear">
 <select name="hogeMonth">
 <select name="hogeDay">

という名前が自動的に設定されます。

{html_select_date field_array="hoge"}にすると、
 <select name="hoge[Date_Year]">
 <select name="hoge[Date_Month]">
 <select name="hoge[Date_Day]">

と配列形式にもできます。

しかし、何故か
 <select name="yearHoge">
 <select name="monthHoge">
 <select name="dayHoge">

といった任意の値を設定することはできません。

> 以下の属性リストに無いパラメータが与えられた場合は、 作成された年、月、日の各 <select> タグの内側に 名前/値 のペアで表されます。
ということで{html_select_date name="hoge"}にすると、
 <select name="Date_Year" name="hoge">
と残念なことに。

色々検討したのですが、どうやら直接ソースを変更する以外に対処法は見当たらないようでした。

まずデフォルト値設定に↓を追加。
    $year_name = "Year";
    $month_name = "Month";
    $day_name = "Day";


次に引数確認部分、
    $$_key = (string)$_value;
の直前に↓を追加。
    case 'month_name':
    case 'day_name':
    case 'year_name':


最後に
if ($display_years) {
    $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
}


のところを、
if ($display_years) {
    $_name = $field_array ? ($field_array . '[' . $prefix . $year_name .']') : ($prefix . $year_name);
}

と変更します($display_months、$display_daysも同様)

これで、以下のように任意のnameにすることができます。

{html_select_date year_name="hoge"}
 <input name="Date_hoge">

{html_select_date year_name="hoge" field_array="fuga" prefix=""}
 <input name="fuga[hoge]">

見てのとおり10行かそこらの変更です。
どうして任意値対応してくれないんでしょうか。

ところでsmarty_function_html_select_date()を見ていたら、リファレンスに載っていないオプションを幾つか見つけました。

$all_id
$day_id
$month_id
$year_id

<select>にid属性を指定します。
未設定だとid属性自体無し、falseだとnameと同じ値、設定するとidが"入力値+nameの値"になります。

$all_empty
単純にyear_empty+month_empty+day_emptyです。

$option_separator
</option>と<option>の間にテキストを配置します。
画面上には表示されないのでCSSやJavaScript用でしょうか。


2012/10/05 22:34 | Comments(0) | PHP
Minecraft1.3.2 空中にブロックを設置するMOD 1.3.2.0
高空や大海原の中央にはブロックを設置することができません。
IC2の足場などがあればまだいいですが、無い場合は延々砂などを積み上げる必要があります。
海上の場合、海底からブロックを伸ばして設置すると水流が発生してしまい、これをなおすのはなかなか面倒です。

ということで何もない空中にブロックを設置するMODの出番です。
使用したバージョンは1.3.2.0、使用BlockID数は0です。

こいつを導入後、ブロックを手に持ってLを押すと、その場に問答無用でブロックが設置されます。
2012-09-27_21.57.46.png2012-09-27_21.57.56.png
海洋バイオーム真っ直中でも問題ありません。
最初の一個を置いてしまえば、あとはこれを起点に建築をおこなっていけばよいでしょう。
別に無限設置とかではなく個数も減るので、チートツールではありません。
たいまつとかの壁が必要なブロックは置かれないようにしていますが、他のMODで入ったブロックとかがどうなるのかまではわかりません。

なお現時点でふたつほど問題点があります。
まずひとつめはコンフィグファイルが何故か作成されないこと。
いや、ちゃんと@MLPropって書いてるんだ、なのにできないんだこれはForgeのバグなんだ俺は悪くない。
原因がよくわからないので何れForge形式コンフィグにでも移行しようかなと。

もうひとつは、向いてる方向と実際にブロックが設置される場所がずれます。
2012-09-27_21.58.57.png

設置先ブロック座標は現在地と向いてる方向からきちんと計算してるはずなんですが、何故かずれてしまうんですよねえ。
こちらも原因は全くわかりません。
誰か適切な計算式教えてください。

ということで空中建築の最初の一手だけという非常に限定された状況でのみちょっとだけ便利になる、適用範囲の狭いMODでした。


おまけ。

前作った強化はさみMODについて、かいだ様に絵を描いてもらって専用のテクスチャになりました。
2012-09-27_23.14.04.png
これでもうバニラのはさみを色変更しただけというしょっぱい状態から脱出で、人前に出しても恥ずかしくないレベルのMODになったような気がしないでもない。
テクスチャはForge形式の画像なので、自作のものに差し替えも可能です。


マインクラフト1.3のまとめ


2012/10/04 23:11 | Comments(2) | └minecraft
Minecraft1.3.2 StorageBox v2.0.5 無限にアイテムを入れられるバッグ
StorageBoxは、一種類のアイテムを無限に収納できる箱を追加します。
使用したバージョンはv2.0.5、使用BlockID数は0です。

ストレージボックス(Storage Box)はチェスト*8。
2012-09-20_01.21.09.png

手に持って右クリックするとインベントリが開きます。
2012-09-20_01.29.58.png
左上のスロットに任意のアイテムを突っ込むと、それがストレージボックスに登録されます。
2012-09-20_01.30.38.png
インベントリ上の見た目が完全に丸石になっちゃったんだけどこれは正しいのか?

中身を入れたストレージボックスを手に持つと、その中身が表示されます。
表示はStackですが実際は個数で、現在丸石が62個入っています。
その状態でLを押すと、現在インベントリにある丸石が全てストレージボックス内に格納されます。
2012-09-20_01.30.48.png
1728個も入りました。

他MODで追加されたアイテムも含めて大抵の物が突っ込めますが、エンチャント可能なもの、消耗しているアイテム、別MODのバックパックなど中に情報を保持しているものは入れられません。

これを手に持って右クリックすると、普通に設置できます。
2012-09-20_01.35.07.png

どういうことかというと、丸石と土の二種類だけでも持っておくと、いくら整地しても手持ちがいっぱいになることがほぼ無いということに。
また埋め立てにも、アイテムを持って行ったり来たりする必要がないので威力を発揮します。

さらに便利機能として、中身の入ったストレージボックスを手に持った状態でチェストを開けると、チェスト内の該当アイテムを全部取り出してストレージボックスに収納してくれます。
スニークした状態でチェストを開けると、逆にストレージボックス内のアイテムを全てチェストの中に放り込んでくれます。
引っ越しが死ぬほど捗りますね。

最後に、スニークしながらLでストレージボックス内のアイテムを1スタックづつ取り出します。

以上、あまりにも使い勝手がよすぎてやばいんじゃねーと思ってしまうくらい便利なアイテムを追加するストレージボックスでした。
あれ、これがあったらもしかしてダイヤモンドトーチいらないんじゃ…?


マインクラフト1.3のまとめ


2012/10/03 22:48 | Comments(1) | └minecraft
Minecraft1.3.2 DiamondTorch *Unofficial* 1.3.2.0 ダイヤモンドトーチのMinecraft1.3.2対応版
前、一本で大量の松明を持ち歩ける便利なMOD、DiamondTorchを紹介しました。
その後作者のlaco0416さんが更新停止してしまったため、勝手に1.3.2対応版を作ってみました。
使用したバージョンは1.3.2.0、使用BlockID数は0です。

まずダイヤモンドトーチ(Diamond Torch)はトーチ、ダイヤモンド、グロウストーンダスト。
2012-09-29_16.36.27.png
これ一本で64回使用可能なトーチとなります。
右クリックすると地面にトーチが設置され、そのぶん耐久力が減ります。

で、本来トーチは雪原などの上にも置けるはずなのですが、ダイヤモンドトーチは何故か置けません。
トーチの設置処理を流用しているはずなんだけどおかしいなあ?

残り使用回数が少なくなると警告が出ますが、無視して使い切ってしまう壊れたトーチ(Broken Torch)になってしまいます。
壊れたトーチ+グロウストーンダストで、ダイヤモンドトーチに戻すことができます。
2012-09-29_16.39.27.png2012-09-29_16.40.03.png

また使いかけのダイヤモンドトーチ+グロウストーンダストでも元に戻すことができます。
2012-09-29_16.41.55.png
ダイヤモンドトーチは使い切ってから戻した方が少し得ですね。

ダイヤモンドトーチには、トーチの吸収機能があります。
「消耗したダイヤモンドトーチを手に持っている」状態で「ドロップした松明を拾った」ときに、拾った松明を吸収してダイヤモンドトーチの耐久力を回復します。
トーチが無闇に増えることがないので便利。
なお元のDiamondTorchにあった、「インベントリ内のトーチも強制的に吸収させる」機能はありません。
吸収機能はForgeのアイテム回収時に割り込むハンドラを使っているのですが、何故か希にハンドラをすり抜けて普通にアイテムを回収してしまうことがあります。謎。

ダイヤモンドトーチ2(Diamond Torch 2)はダイヤモンドトーチ*4。
2012-09-29_16.43.00.png
使用回数が256回に増えています。
ダイヤが4つ必要ですが、4スタック分のトーチをアイテム欄一つで持ち運べるので便利。

使い切ると壊れたトーチになってしまい、復旧させてもダイヤモンドトーチ2ではなくダイヤモンドトーチになってしまうのでだいぶ損してしまいます。
ブレイズロッドで修復できるので、壊れる前に直すとよいでしょう。
2012-09-29_16.46.06.png

同様にダイヤモンドトーチ3はダイヤモンドトーチ2*4、使用回数1024回、修復はエンダーパール。
ダイヤモンドトーチ4はダイヤモンドトーチ3*4、使用回数4096回、修復はガストの涙。
ダイヤモンドトーチ5はダイヤモンドトーチ4*4、使用回数65536回、修復はダイヤモンドブロック。
2012-09-29_16.53.05.png2012-09-29_16.55.01.png2012-09-29_16.55.43.png
リニアに行くのなら更に16384回のトーチを挟む必要があるのですが、さすがにやりすぎな気がしたので自重。
まあダイヤブロックで十分インフレしすぎな気がしますが。

最後に無限トーチ(Diamond Torch Infinity)はダイヤモンドトーチ5*4。
2012-09-29_16.56.58.png
文字通り耐久力が無く無限に設置可能です。
無限トーチにはダイヤモンドが1024個必要です。

最後まで育てるのは大変ですが、ダイヤモンドトーチ4あたりなら修復も難しくないので、そこらへんで留めておくのもよいかもしれません。
ということで超便利なたいまつを追加するMOD、DiamondTorchでした。


マインクラフト1.3のまとめ
 


2012/10/02 21:56 | Comments(0) | └minecraft
PHP5.3 DB_DataObject::update()がユニークキーを更新できない
タイトル通りのファッキンな仕様。

テーブルを作る。
CREATE TABLE `test` (
 `c_primary` varchar(16) NOT NULL COMMENT '主キー',
 `c_unique` varchar(16) NOT NULL COMMENT 'ユニークキー',
 `c_index` varchar(16) NOT NULL COMMENT 'インデックス',
 `c_hoge` varchar(16) NOT NULL COMMENT '特に何もなし',
 PRIMARY KEY (`c_primary`),
 UNIQUE KEY `k_unique` (`c_unique`),
 KEY `k_index` (`c_index`)
)
とりあえず値を入れておく。
INSERT INTO test (c_primary, c_unique, c_index, c_hoge) VALUES ('a','b','c','d');
INSERT INTO test (c_primary, c_unique, c_index, c_hoge) VALUES ('w','x','y','d');
その後update()を実行。
	//DB_DataObject
		$table = DB_DataObject::factory('test');
	
	//取得
		$table->c_primary = 'a';
		$table->find();
	
	//値をセット
		$table->c_unique = 'e';
		$table->c_index = 'f';
		$table->c_hoge = 'g';
	
	//更新
		$table->update();
こうした場合、testテーブルの値は('a','e','f','g')('w','x','y','d')になってることを期待するわけですが、実際は1行もアップデートされていません。
実際に発行されたSQLがどうなっているかというと、
	UPDATE test SET c_index='f', c_hoge='g' WHERE (c_primary='a') AND (c_unique='e')
何故かユニークキーがWHERE側に回っています。
で、どうやらこれをどうにかする手段がないっぽいという驚愕の事実。

update()の引数に値を渡すことで動作を変更することができます。
	//aを取得
		$table->c_primary = 'a';
		$table->c_unique = 'b';
		$table->find();
	
	//wを取得
		$table2->c_primary = 'w';
		$table2->c_unique = 'x';
		$table2->find();
	
	//差分を更新
		$table->update($table2);
引数にDB_DataObjectを渡すことで、両者の差分のみをアップデートすることができます。
しかしこの場合も、差分といいつつ更新される可能性があるのはc_indexとc_hoge列だけです。
c_hogeは同じなので更新されるのはc_indexだけとなります。
	//WHERE句を指定
		$table->addWhere("c_primary='a'");
		$table->update(DB_DATAOBJECT_WHEREADD_ONLY);
addWhere()を指定後update(DB_DATAOBJECT_WHEREADD_ONLY)とすると、指定したWHERE句でupdateすることができます。
SQLがどうなったかというと、
	UPDATE test SET c_index='f', c_hoge='g' WHERE (c_primary='a')
ユニーク列どっか行きやがった。

結局テーブル定義変更するか自力でクエリを組むかとかいった、DB_DataObjectの利点を何も使えない解決方法をとるしかありません。
構成によっては非常に不便を強いられる作りでした。

まあ、今時DB_DataObjectなんて使ってる方が悪いんですがね。


2012/10/01 22:28 | Comments(0) | PHP
買ったものリスト 2012/09/30

南極点のピアピア動画 野尻 抱介
☆☆☆☆

本作の欠点、構造的な欠点と言えば、ネットを過信し過ぎな点でしょうか。
名無寄せ集めのCGMによる技術なんて所詮きちんとした研究所、企業には敵わないわけですよ。
たまにそういう出自の技術が大きなニュースになるのは、逆に言うとそのようなことは滅多に起こらないからということで。
まあ、最近は企業も基礎研究費を減らしたりしてるので今後どうなるかはわかったものじゃありませんがね。

そういうどうでもいい点を抜かせばわりと面白い作品でした。
一見無関係なストーリーがどんどん繋がっていく、こういう形式の作品は大好物ですわ。
鯨のあたりはちょっと無理矢理過ぎる気もしますが。


空の下屋根の中1 双見 酔
☆☆☆☆

ニートが社会復帰を目指してそこはかとなくがんばったりがんばらなかったりする漫画。
なんだか人ごとだとは思えぬ。
私の場合はたまたまそこまでブラックではない企業に正社員で転がり込むことができたのでまだよかったですが、最近は大変ですね。
本書では出発点がおもちゃ屋のバイトですが、年齢的にもまだまだですし何処にでもありふれているコンビニとかが手っ取り早かったのではなかろうか。

それにしても原子配列操作による物質生成システムによる真の共産主義(誰もがニート)が完成するのはいつの日なのか。


考えることが多すぎて、話したいことが決まったときには皆既に次の話題に進んでいるという、非常によくわかる主人公の4コマ。
が、正直全体的に微妙。
3巻以降はパスかなあ。


侵略!イカ娘 公式ファンブック
☆☆☆☆

あーうん、ファンブックだねえ。
個人的にこの「本人になったつもりでコメント」って形式が痛々しくて苦手なんだよね。
本書はカラーページが半分あって価格は抑えめ(といっても1000円弱)またカラーページのショートストーリーが可愛かったのでまあまあ満足。
ただこれ、DVDに収録されているものらしいので、DVDを持ってる人は-☆☆くらいの評価かもしれません。
ところでお風呂シーンがあるんだがこんなところどこにあったっけ。


2012/09/30 18:10 | Comments(0) | 買ったもの

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]