過去記事
PHPネガティブキャンペーン
Attacking PHP [Matzにっき]
「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い [404 Blog Not Found]
日本を代表するプログラマのおふたかたのありがたいお言葉ですな。
あーありがたやありがたや。
PHPはそもそも古い意味での「プログラマ」向け言語ではないだろう。
「非プログラマでも扱える、HTML生成を制御できるツール」といった概念にぴったり。
だからこそいいところがたくさんあるし、ダメなところもたくさんある。
僕はこの意見と同意見。
スクリプト言語の美学 [港区赤坂四畳半社長]
思うに、PHPをさわる人ってのはがっつりプログラマ的仕事に傾倒している人はそれほど多くないんじゃないか? いろいろ兼業の人で、それほどプログラミングについて執着のない人、とりあえず動くものが作れればそれでよいという人が使うツール。世の中のバランスで見れば、プログラミングにすごく傾倒している人とそうでない人を比べたら、後者の方が圧倒的に数が多いだろう。コンピュータサイエンスの観点からすれば、圧倒的に優秀なのは前者。劣っているのは後者。その、後者の方にマッチする、「ちょっと書くとちょっと動くツール」がPHP。
だからこそ、無知や誤解、認識足らずからくる脆弱性とかバグとかってのがとても多いわけだが。
だが、思う。
たしかに後者の人たちはコンピュータサイエンス的な能力に劣っている。
しかし、だからといって完全に彼らなしで仕事が回るほどプログラミング業界は成熟しているのかな。
冒頭の記事は、たしかに事実もたくさん含んでいるけれど、ある種こないだの大阪府知事選挙でネガティブキャンペーンを張りまくっていた熊谷さんに通じるものがあると思う。
ご自身は大学教授で優秀で知識も豊富。
そして、それなりに研究の成果もあげてきた。
ただ、それだけでは、民衆の支持は受けられない。
「こんな人のどこがいいんですか」
「こんな人にまかせていいんですか」
本論にあてがう。
「こんな言語のどこがいいんですか」
「こんな言語でWebアプリつくっていいんですか」
知るかそんなこと。
アプリを作る状況、揃えられる人材、予定された時間の中で、どの選択肢が最もよいかということの結果の一つが、PHPを使うということだ。
言語の特徴からすれば、PerlやRubyの方がPHPより優れているのはほぼ間違いがない。
だが、「そんな言語のどこがいいんですか」というネガキャンを繰り広げられれば繰り広げられるほど、彼らが作る言語を学ぼうという気が失せる人間がいるということも忘れないでほしい。
個人的に嫌いなのはかまわん。
だが、議論は常に生産的であってほしいし、世の中の仕事はすべて生産的であってほしい。
PHPはお手軽だが、いろいろと問題もある。
これは他の言語ならこういう風に解決できる。
学習コストはこのような学習を行えば低くすることが出来る。
だから、こっちの世界へおいで。
という議論が積み重ねられる世の中になればよいのにね。
「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い [404 Blog Not Found]
日本を代表するプログラマのおふたかたのありがたいお言葉ですな。
あーありがたやありがたや。
PHPはそもそも古い意味での「プログラマ」向け言語ではないだろう。
「非プログラマでも扱える、HTML生成を制御できるツール」といった概念にぴったり。
だからこそいいところがたくさんあるし、ダメなところもたくさんある。
僕はこの意見と同意見。
スクリプト言語の美学 [港区赤坂四畳半社長]
思うに、PHPをさわる人ってのはがっつりプログラマ的仕事に傾倒している人はそれほど多くないんじゃないか? いろいろ兼業の人で、それほどプログラミングについて執着のない人、とりあえず動くものが作れればそれでよいという人が使うツール。世の中のバランスで見れば、プログラミングにすごく傾倒している人とそうでない人を比べたら、後者の方が圧倒的に数が多いだろう。コンピュータサイエンスの観点からすれば、圧倒的に優秀なのは前者。劣っているのは後者。その、後者の方にマッチする、「ちょっと書くとちょっと動くツール」がPHP。
だからこそ、無知や誤解、認識足らずからくる脆弱性とかバグとかってのがとても多いわけだが。
だが、思う。
たしかに後者の人たちはコンピュータサイエンス的な能力に劣っている。
しかし、だからといって完全に彼らなしで仕事が回るほどプログラミング業界は成熟しているのかな。
冒頭の記事は、たしかに事実もたくさん含んでいるけれど、ある種こないだの大阪府知事選挙でネガティブキャンペーンを張りまくっていた熊谷さんに通じるものがあると思う。
ご自身は大学教授で優秀で知識も豊富。
そして、それなりに研究の成果もあげてきた。
ただ、それだけでは、民衆の支持は受けられない。
「こんな人のどこがいいんですか」
「こんな人にまかせていいんですか」
本論にあてがう。
「こんな言語のどこがいいんですか」
「こんな言語でWebアプリつくっていいんですか」
知るかそんなこと。
アプリを作る状況、揃えられる人材、予定された時間の中で、どの選択肢が最もよいかということの結果の一つが、PHPを使うということだ。
言語の特徴からすれば、PerlやRubyの方がPHPより優れているのはほぼ間違いがない。
だが、「そんな言語のどこがいいんですか」というネガキャンを繰り広げられれば繰り広げられるほど、彼らが作る言語を学ぼうという気が失せる人間がいるということも忘れないでほしい。
個人的に嫌いなのはかまわん。
だが、議論は常に生産的であってほしいし、世の中の仕事はすべて生産的であってほしい。
PHPはお手軽だが、いろいろと問題もある。
これは他の言語ならこういう風に解決できる。
学習コストはこのような学習を行えば低くすることが出来る。
だから、こっちの世界へおいで。
という議論が積み重ねられる世の中になればよいのにね。
大阪府知事選の感想。
橋下さんが開票率0%で受かったらしい、と知ったときには、「大阪の人はなにしてんだか」と思ったが、どうやら事情がちがうみたい。
なぜ大阪府民は橋下徹氏を選んだか [ぼやきくっきり]
まぁ、消去法なのかな、とは思っていたが、それほど熊谷さんとやらがひどかったのか。
Youtubeで映像を探してみたが、よい映像は見つからず。
大阪の方、映像をお持ちの方はどなたかアップしてくださいな。
上のブログの評価は置いておくとしても、熊谷さんの
・府民の所得50万円アップ
・大阪駅に新幹線を止める
というような公約はさすがに難しいだろう。特に新幹線。
いいじゃん新大阪で。たいして遠くないし。新大阪駅はけっこう好き。
交通渋滞はけっこうひどいと思うので、これは何とかした方がよいと思うけど。
そして、ネガティブキャンペーン。
http://kukkuri.sessya.net/tirasikuma.jpg
アメリカの選挙なんかではけっこうあるけど、日本人にこの手法はまずなじまない。特に大阪の人はおもしろいことを言っていながら実は「本音かどうか、信頼に値するか」を実に丁寧に観察する人種だと思っているので、熊谷さんのこのへんが実は見透かされてしまったのかもしれない。
もちろん、橋下さんが若くて、タレントであり、テレビでしゃべりを鍛えていて、東国原知事の影響があることも否定できないが、それでもこれだけの差がついたのはやはり熊谷さん側に大きなミスがあった、というほかにないだろう。
なぜなら、小沢さんは、党としての姿勢を示す決議を欠席して、応援演説に行っているわけで。結論が決まり切った出来レース投票であり、効率を考えれば欠席をすることは妥当だが、それでもリーダーはたとえすることがなくても「その場にいるだけ」を要求される職種である。
民主党は、常に負けっぷりがかっこわるい。
負けてなお存在感を示す「敗北の美学」がまったくない民主党 [木走日記]
木走日記さんのいうとおり、これと比して、朝青龍の負けっぷりがいかに豪快でまっすぐであることか。世の中には、内舘牧子なんかにはわからんかっこよさがあるんだよ。
男は勝つときがかっこよいのはもちろん。
負けるときにかっこいいかどうかで本当のかっこよさが決まるもんだ。
なぜ大阪府民は橋下徹氏を選んだか [ぼやきくっきり]
まぁ、消去法なのかな、とは思っていたが、それほど熊谷さんとやらがひどかったのか。
Youtubeで映像を探してみたが、よい映像は見つからず。
大阪の方、映像をお持ちの方はどなたかアップしてくださいな。
上のブログの評価は置いておくとしても、熊谷さんの
・府民の所得50万円アップ
・大阪駅に新幹線を止める
というような公約はさすがに難しいだろう。特に新幹線。
いいじゃん新大阪で。たいして遠くないし。新大阪駅はけっこう好き。
交通渋滞はけっこうひどいと思うので、これは何とかした方がよいと思うけど。
そして、ネガティブキャンペーン。
http://kukkuri.sessya.net/tirasikuma.jpg
アメリカの選挙なんかではけっこうあるけど、日本人にこの手法はまずなじまない。特に大阪の人はおもしろいことを言っていながら実は「本音かどうか、信頼に値するか」を実に丁寧に観察する人種だと思っているので、熊谷さんのこのへんが実は見透かされてしまったのかもしれない。
もちろん、橋下さんが若くて、タレントであり、テレビでしゃべりを鍛えていて、東国原知事の影響があることも否定できないが、それでもこれだけの差がついたのはやはり熊谷さん側に大きなミスがあった、というほかにないだろう。
なぜなら、小沢さんは、党としての姿勢を示す決議を欠席して、応援演説に行っているわけで。結論が決まり切った出来レース投票であり、効率を考えれば欠席をすることは妥当だが、それでもリーダーはたとえすることがなくても「その場にいるだけ」を要求される職種である。
民主党は、常に負けっぷりがかっこわるい。
負けてなお存在感を示す「敗北の美学」がまったくない民主党 [木走日記]
木走日記さんのいうとおり、これと比して、朝青龍の負けっぷりがいかに豪快でまっすぐであることか。世の中には、内舘牧子なんかにはわからんかっこよさがあるんだよ。
男は勝つときがかっこよいのはもちろん。
負けるときにかっこいいかどうかで本当のかっこよさが決まるもんだ。
DELL PowerEdgeT105 が到着
先日注文したDELL PowerEdge T105が到着。

以前持っていたSC430に比べて、背が低くなって、横幅が若干大きくなった。
全体としては少し小さくなった印象を受ける。
早速電源投入テスト。
最初だけウォンとファンの音がするが、あとは至って静かなもの。
オフィス内用途には素晴らしくいいですね。hpのProliant ML115とほぼ同じ構成ながら、ネット上の意見では静粛性はこちらの方が上らしい。まったく同じ構成にした場合、1/25現在で数千円Proliantの方が安いので、値段を取るか、静粛性をとるのか、といったところか。
初めてのAMD Opteronサーバだけど、非常に高速。
ストレスはまったくなし。
ちなみに自分の構成は以下の通り。
CPU: AMD Opteron 1210 1.8GHz
RAM: 1GB
HDD: 250GB SATA x 2
OSは最初CentOS 4.4 のインストールを行ったが、OSのインストールはできたものの、NICの認識ができていなかった。CentOS5のインストールを行ったが、CDが悪いのかそれとも別のエラーかわからないが、インストールを進めることができなかった。
ということで、結局CentOS5.1のインストールが完了。NICも問題なく認識。
非常に高速で静かで、よい買い物をしたと思います。

以前持っていたSC430に比べて、背が低くなって、横幅が若干大きくなった。
全体としては少し小さくなった印象を受ける。
早速電源投入テスト。
最初だけウォンとファンの音がするが、あとは至って静かなもの。
オフィス内用途には素晴らしくいいですね。hpのProliant ML115とほぼ同じ構成ながら、ネット上の意見では静粛性はこちらの方が上らしい。まったく同じ構成にした場合、1/25現在で数千円Proliantの方が安いので、値段を取るか、静粛性をとるのか、といったところか。
初めてのAMD Opteronサーバだけど、非常に高速。
ストレスはまったくなし。
ちなみに自分の構成は以下の通り。
CPU: AMD Opteron 1210 1.8GHz
RAM: 1GB
HDD: 250GB SATA x 2
OSは最初CentOS 4.4 のインストールを行ったが、OSのインストールはできたものの、NICの認識ができていなかった。CentOS5のインストールを行ったが、CDが悪いのかそれとも別のエラーかわからないが、インストールを進めることができなかった。
ということで、結局CentOS5.1のインストールが完了。NICも問題なく認識。
非常に高速で静かで、よい買い物をしたと思います。
3代目MacBookを購入
1年半にわたり活躍してくれた初代MacBookですが、そろそろ買い換え時。
コトバで説明すると難しいのですが、cmd+tabでアプリケーションを切り替えるとき、切り替えるために浮き出るアイコンが並んだ画面が、cmd+tabキーを離しても元にもどらない、というちょっとした症状に悩まされておりまして。
マウスで画面のどこかをクリックすると回復するんだけど、いちいちキーボードから手を離さなくちゃいけないのがどうもストレスがたまる。ちょっとしたことだけど、仕事道具でストレスためてちゃ話にならない。
OSの再インストールなんかでなおりそうな気もするんですが、先日別件でOSの再インストールをやり直したばかりなので、面倒だなぁ、と。
また、ソフマップで下取キャンペーンも行っていたので、よい機会かな、と。
MacBook Pro とどっちにしようかさんざん迷ったあげく、同じMacBook Blackを購入することにしました。
Pro はまた今度、余裕ができたら買います。。
MacBook Airは、買うとしたらもうちょっとスペックと価格がこなれたら検討対象に。
というわけで、本日Apple Storeにて注文。
今月末はサーバとMacと修理中のモニタが届くはずなので、いろいろと楽しみ。
でも、買い物したということは、もっと働かなくちゃ、ということですね。
ということで、みなさま、お仕事絶賛大募集中でございます!
Webアプリの設計・開発、パフォーマンスチューニング、コンサルティングなど、ぜひお手伝いさせてください。田中商店に愛の手を!
コトバで説明すると難しいのですが、cmd+tabでアプリケーションを切り替えるとき、切り替えるために浮き出るアイコンが並んだ画面が、cmd+tabキーを離しても元にもどらない、というちょっとした症状に悩まされておりまして。
マウスで画面のどこかをクリックすると回復するんだけど、いちいちキーボードから手を離さなくちゃいけないのがどうもストレスがたまる。ちょっとしたことだけど、仕事道具でストレスためてちゃ話にならない。
OSの再インストールなんかでなおりそうな気もするんですが、先日別件でOSの再インストールをやり直したばかりなので、面倒だなぁ、と。
また、ソフマップで下取キャンペーンも行っていたので、よい機会かな、と。
MacBook Pro とどっちにしようかさんざん迷ったあげく、同じMacBook Blackを購入することにしました。
Pro はまた今度、余裕ができたら買います。。
MacBook Airは、買うとしたらもうちょっとスペックと価格がこなれたら検討対象に。
というわけで、本日Apple Storeにて注文。
今月末はサーバとMacと修理中のモニタが届くはずなので、いろいろと楽しみ。
でも、買い物したということは、もっと働かなくちゃ、ということですね。
ということで、みなさま、お仕事絶賛大募集中でございます!
Webアプリの設計・開発、パフォーマンスチューニング、コンサルティングなど、ぜひお手伝いさせてください。田中商店に愛の手を!
[Akelos] バッチを書く
武田ソフトさんのエントリを参考に、現行バージョンAkelos 0.8のAkActiveRecordを使ってバッチを書いた。
バージョン違いもあって、いくつか注意点があったのでメモしておく。
インクルードするファイルは3つ。
ログをとる場合はこのコードで。
$logger->log(); は第一引数にNOTICE, MESSAGE, WARNING, ALERTなど、ログの種類を示す文字列が入る。これらの文字列は何か特定のものが決まっているわけではなく、ログの意味の重要度によって任意に決めてよい。たとえば、以下のように自らルールを定めておき、ログを活用するとあとで判別しやすくなると思う。
例)
・MESSAGE: 処理結果を残しておく目的で使用する
・NOTICE: 処理において、ちょっと気になる件を残しておく目的で使用する
・WARNING: 処理において、注意が必要な場合に使用する
・ALERT: 処理において、警告が必要な場合に使用する
・ERROR: 処理において、エラーが発生した場合に使用する
第二引数には、ログに残したい文字列を入れる。
とりあえず最初のうちは慣れるまでこまめに $logger->log("NOTICE", "処理1終了..."); のように入れておくと、処理の動向を逐次確認できてよい。
ちなみに、ログファイルは言うまでもなく、logs/development(test/production).log。
データベースは次のように接続。
接続したいモデルには次のように接続。
あとは、SELECTするなり、UPDATEするなりご自由に。
武田ソフトさんの記事には、ob_start() および ob_end_clean() を使用して出力を押さえるように書いてあったが、これはセットしてもしなくてもOKだと思う。余計な出力がイヤな人は止めるべきだが、ただ内部的にバッファしているだけなので、PHPが使用するメモリ量自体は変わらず、パフォーマンスには差が出ない。
なお、AkActiveRecordを使用して、12万行ある郵便番号データファイルをDBに取り込むバッチを書いてみたが、PHPのメモリ使用量が大きかったため、php.iniにてmemory_limitに128MBを割り当ててもメモリオーバーでエラーになった。
バッチの冒頭(config.php をロードする前)で
と指定するとログ出力を止められるため多少メモリ使用を押さえられるが、根本的解決には至らず。AkActiveRecordを使うと、けっこうメモリを使うのか? 中で変な出力を行っている可能性もあるので、時間がある人は調べてみてください。
結局、モデルを使用して12万行ファイルをインポートすることができなかったため、接続したDBコネクションを以下の方法で直接使った。
execute()メソッド、または query() メソッドに直接SQL文を流し込むことによって、パフォーマンスは劇的によくなった。圧倒的に速度がちがう。php.ini の memory_limit も32MBで済んだ。(それ以下は試していないが、16MBくらいだったら大丈夫なのではないかな。)なお、上記の例では省いたが、直接SQLを流すため、SQL文自体の無害化は絶対必要。prepareステートメントを使えるかどうかは未検証だが、使えるといいな。
AkActiveRecord自体がけっこうメモリを使うってのはちょっとびっくり。
でも、コード自体はけっこうシンプルな気がするので、単に余計な出力がどこかであって、それがメモリ使用をふやしちゃってるだけなんじゃないかしら。
まだ調べていないので、時間ができたらこの点を調べてみよう。
バージョン違いもあって、いくつか注意点があったのでメモしておく。
インクルードするファイルは3つ。
// config/config.php(パスの位置は各環境に合わせる)
include_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');
require_once(AK_LIB_DIR.DS.'AkActiveRecord.php');
require_once(AK_APP_DIR.DS.'shared_model.php'); // 武田ソフトさんの記事から位置が変わったっぽい
ログをとる場合はこのコードで。
$logger = Ak::getLogger(); // インスタンス作成
$logger->log("NOTICE", "ログ内容"); // ログを記述する際の表記方法
$logger->log(); は第一引数にNOTICE, MESSAGE, WARNING, ALERTなど、ログの種類を示す文字列が入る。これらの文字列は何か特定のものが決まっているわけではなく、ログの意味の重要度によって任意に決めてよい。たとえば、以下のように自らルールを定めておき、ログを活用するとあとで判別しやすくなると思う。
例)
・MESSAGE: 処理結果を残しておく目的で使用する
・NOTICE: 処理において、ちょっと気になる件を残しておく目的で使用する
・WARNING: 処理において、注意が必要な場合に使用する
・ALERT: 処理において、警告が必要な場合に使用する
・ERROR: 処理において、エラーが発生した場合に使用する
第二引数には、ログに残したい文字列を入れる。
とりあえず最初のうちは慣れるまでこまめに $logger->log("NOTICE", "処理1終了..."); のように入れておくと、処理の動向を逐次確認できてよい。
ちなみに、ログファイルは言うまでもなく、logs/development(test/production).log。
データベースは次のように接続。
Ak::db(&$dsn);
接続したいモデルには次のように接続。
require_once(AK_MODELS_DIR.DS."zip.php");
$zip = new Zip();
あとは、SELECTするなり、UPDATEするなりご自由に。
$zips = $zip->find("all"); // SELECT
$zips->setAttribute(array(0 => array("code" => "0000000", "name" => "ダミー")));
$zips->save(); // UPDATE
武田ソフトさんの記事には、ob_start() および ob_end_clean() を使用して出力を押さえるように書いてあったが、これはセットしてもしなくてもOKだと思う。余計な出力がイヤな人は止めるべきだが、ただ内部的にバッファしているだけなので、PHPが使用するメモリ量自体は変わらず、パフォーマンスには差が出ない。
なお、AkActiveRecordを使用して、12万行ある郵便番号データファイルをDBに取り込むバッチを書いてみたが、PHPのメモリ使用量が大きかったため、php.iniにてmemory_limitに128MBを割り当ててもメモリオーバーでエラーになった。
バッチの冒頭(config.php をロードする前)で
define('AK_LOG_EVENTS', false);
と指定するとログ出力を止められるため多少メモリ使用を押さえられるが、根本的解決には至らず。AkActiveRecordを使うと、けっこうメモリを使うのか? 中で変な出力を行っている可能性もあるので、時間がある人は調べてみてください。
結局、モデルを使用して12万行ファイルをインポートすることができなかったため、接続したDBコネクションを以下の方法で直接使った。
// DB接続
$dao = AK::db(&$dsn);
// 郵便番号ファイルを開く
$fp = fopen(郵便番号ファイル, "r");
while($data = fgetcsv($fp, 1000, ",")) {
$sql = "insert into (code, name, created_at) values ($data[2], $data[6], sysdate())";
$dao->execute($sql);
}
execute()メソッド、または query() メソッドに直接SQL文を流し込むことによって、パフォーマンスは劇的によくなった。圧倒的に速度がちがう。php.ini の memory_limit も32MBで済んだ。(それ以下は試していないが、16MBくらいだったら大丈夫なのではないかな。)なお、上記の例では省いたが、直接SQLを流すため、SQL文自体の無害化は絶対必要。prepareステートメントを使えるかどうかは未検証だが、使えるといいな。
AkActiveRecord自体がけっこうメモリを使うってのはちょっとびっくり。
でも、コード自体はけっこうシンプルな気がするので、単に余計な出力がどこかであって、それがメモリ使用をふやしちゃってるだけなんじゃないかしら。
まだ調べていないので、時間ができたらこの点を調べてみよう。
Macworld 2008 Keynote Speech を見た
Macworld 2008 Keynote Speech
深夜ようやくサーバの復旧にメドが立ったので、MacworldのKeynote Speech をまるごと見た。
なんか、スピーチの原稿をどう作っているかとか、練習している風景が初めて透けて見えた。
やはり、いつもながら見事なプレゼン。
しかし、この人の笑顔はヤバイね。この笑顔を見るためならどんな苦しい仕事もしてしまおうというスタッフの息づかいすら伝わってくる気がする。もちろん気むずかしくて繊細で豪快で、周りの人にとっては非常に扱いの大変な人だと思うけど。
MacBook Air、とてもいいっすね。
そぎ落とし方が半端なく潔くて、何を残し、何を落とすかという判断にブレがないところが素晴らしい。
機能競争をするのは簡単。機械だけのことを考えていればよいから。
でも、その一歩先のライフスタイルにまで踏み込むのはとても大変。
なぜなら機械作りを通して、人とどうコミュニケーションするかを考えなくちゃいけないから。
とても勉強になりました。
ところで、MacBookとMacBookPro は体感速度的にずいぶん違うものなのね。
Apple Store 渋谷店で実際にさわってきた感想。
スペックだけで見ると似た感じで差別化ポイントがよくわからない、という人もいると思うけど、実際にアプリケーションを動かしてみるともう全然ちがう。動作のきびきび感とか。
専用のグラフィックチップを積んでいるから、画像編集系のソフトが速いのはわかる。
でも、そうじゃなくて、画像編集系のソフト以外でも動作の感覚がちがう。スタッフの方に聞けば、回路設計からしてちがいますからね、とのこと。ああ、そっか、基盤に使っているものからしてちがうわけね。
新しいMacBookProほしいなぁ。
どうしようかなぁ。
深夜ようやくサーバの復旧にメドが立ったので、MacworldのKeynote Speech をまるごと見た。
なんか、スピーチの原稿をどう作っているかとか、練習している風景が初めて透けて見えた。
やはり、いつもながら見事なプレゼン。
しかし、この人の笑顔はヤバイね。この笑顔を見るためならどんな苦しい仕事もしてしまおうというスタッフの息づかいすら伝わってくる気がする。もちろん気むずかしくて繊細で豪快で、周りの人にとっては非常に扱いの大変な人だと思うけど。
MacBook Air、とてもいいっすね。
そぎ落とし方が半端なく潔くて、何を残し、何を落とすかという判断にブレがないところが素晴らしい。
機能競争をするのは簡単。機械だけのことを考えていればよいから。
でも、その一歩先のライフスタイルにまで踏み込むのはとても大変。
なぜなら機械作りを通して、人とどうコミュニケーションするかを考えなくちゃいけないから。
とても勉強になりました。
ところで、MacBookとMacBookPro は体感速度的にずいぶん違うものなのね。
Apple Store 渋谷店で実際にさわってきた感想。
スペックだけで見ると似た感じで差別化ポイントがよくわからない、という人もいると思うけど、実際にアプリケーションを動かしてみるともう全然ちがう。動作のきびきび感とか。
専用のグラフィックチップを積んでいるから、画像編集系のソフトが速いのはわかる。
でも、そうじゃなくて、画像編集系のソフト以外でも動作の感覚がちがう。スタッフの方に聞けば、回路設計からしてちがいますからね、とのこと。ああ、そっか、基盤に使っているものからしてちがうわけね。
新しいMacBookProほしいなぁ。
どうしようかなぁ。
MITSUBISHI MDT241WG を修理に出す
昨年11月に買ったばかりのMITSUBISHI MDT241WG。
画面も発色もきれいでとても気に入ってる。
デザインもいい感じだし。
ただね、なんかね、フリーズするんですな。モニタが。
モニタがフリーズするってのは初めての体験なんだけども、表の調整ボタンが一切効かなくなって、電源を落とすことができなくなる。
それだけなら別に問題はそれほど大きくないんだけど、入力系統を切り替えるとき(DVI -> VGA)に、VGAの画面が表示されない。(モニタの電源コード抜き差しか、背面の主電源をOFF/ONすると映る。)これ、2台のマシンのモニタを切り替えて使っているときにイラっとくる。
さらに、自分の場合はPC切替機を使って、MacとWinを切り替えているのだけど、それも切り替える際にモニタが表示されず、モニタの再起動が必要になる。
あんまりネットの情報を調べずに買ったんだけど、けっこうフリーズ現象は報告されてるみたいで。
モニタがフリーズするのってのはどうなのよ。
で、修理相談窓口に電話したら、非常にスムーズに修理交換の手配ができました。
明日引き取りにきて、代替機も貸してくれるとのこと。
不満が出てきた人は、相談窓口に相談してみるとよいと思いますよ。
クレームじゃなくて、きちんと丁寧に話せばきわめてスムースに修理・交換へと話が進みます。
こういう製品の修理・交換に関する日本の会社の態度は、海外の企業と比べて優れているよね。
きわめて気持ちよい対応をしていただきました。
元気になってかえっておいで。
画面も発色もきれいでとても気に入ってる。
デザインもいい感じだし。
ただね、なんかね、フリーズするんですな。モニタが。
モニタがフリーズするってのは初めての体験なんだけども、表の調整ボタンが一切効かなくなって、電源を落とすことができなくなる。
それだけなら別に問題はそれほど大きくないんだけど、入力系統を切り替えるとき(DVI -> VGA)に、VGAの画面が表示されない。(モニタの電源コード抜き差しか、背面の主電源をOFF/ONすると映る。)これ、2台のマシンのモニタを切り替えて使っているときにイラっとくる。
さらに、自分の場合はPC切替機を使って、MacとWinを切り替えているのだけど、それも切り替える際にモニタが表示されず、モニタの再起動が必要になる。
あんまりネットの情報を調べずに買ったんだけど、けっこうフリーズ現象は報告されてるみたいで。
モニタがフリーズするのってのはどうなのよ。
で、修理相談窓口に電話したら、非常にスムーズに修理交換の手配ができました。
明日引き取りにきて、代替機も貸してくれるとのこと。
不満が出てきた人は、相談窓口に相談してみるとよいと思いますよ。
クレームじゃなくて、きちんと丁寧に話せばきわめてスムースに修理・交換へと話が進みます。
こういう製品の修理・交換に関する日本の会社の態度は、海外の企業と比べて優れているよね。
きわめて気持ちよい対応をしていただきました。
元気になってかえっておいで。
Yahoo! US がOpenID 対応
Yahoo!、OpenIDサポートを表明――Yahoo! IDで対応サイトへのログインが可能に [ITmedia News]
いよいよOpenID対応ですねー。
タイムラグたぶん1年くらいで日本も対応になるだろうから、いよいよネット系Webサービスの認証周りのつくりが楽になりますね。
また、ニッチサービスが元気になってくることが考えられますね。
うん、いい時代の流れ方だと思います。
いよいよOpenID対応ですねー。
タイムラグたぶん1年くらいで日本も対応になるだろうから、いよいよネット系Webサービスの認証周りのつくりが楽になりますね。
また、ニッチサービスが元気になってくることが考えられますね。
うん、いい時代の流れ方だと思います。
Dell タワーサーバT105を発注
サーバが壊れたので、DELLのタワーサーバT105を2台発注。
構成は下記の通り。
CPU: AMD Opteron 1210 1.8GHz
RAM: 512MB
HDD: SATA 250GB x1
ハードディスクとメモリは手元にあるパーツを使って拡張するということで。
上記構成で42,500円くらい。
hpのML115と迷ったけど、hpのサーバはDELLに比べるとうるさいらしいので、DELLにしました。
一見、hpの方がすごく安く見えるけど、同じくらいの構成ならそんなに値段変わりません。
早く届いてほしいけど、これが届いたらまたセットアップか。
やれやれ。
構成は下記の通り。
CPU: AMD Opteron 1210 1.8GHz
RAM: 512MB
HDD: SATA 250GB x1
ハードディスクとメモリは手元にあるパーツを使って拡張するということで。
上記構成で42,500円くらい。
hpのML115と迷ったけど、hpのサーバはDELLに比べるとうるさいらしいので、DELLにしました。
一見、hpの方がすごく安く見えるけど、同じくらいの構成ならそんなに値段変わりません。
早く届いてほしいけど、これが届いたらまたセットアップか。
やれやれ。
もっともっと気楽に気軽に素早く開発したい
とすごく思う。
ちょうどいま、自分の中でもいろんなことが過渡期だから大変なだけなのかもしれないけど。
すばやく開発できるようにするためのフレームワーク、技術・アイデア・デザインの引き出し、必要な環境のバリエーションなんかをうまくパッケージングできたらどんなにいいだろうなぁ。
思いついたことを即座に次々と実現していけるような仕組み作りを、いま一番したいのかもしれない。
なぜなら、プロダクトはその延長線上にあるはずだから。
そこに一番早くたどり着くためには、どんな優先順位で進めていけばいいのかな。
ちょうどいま、自分の中でもいろんなことが過渡期だから大変なだけなのかもしれないけど。
すばやく開発できるようにするためのフレームワーク、技術・アイデア・デザインの引き出し、必要な環境のバリエーションなんかをうまくパッケージングできたらどんなにいいだろうなぁ。
思いついたことを即座に次々と実現していけるような仕組み作りを、いま一番したいのかもしれない。
なぜなら、プロダクトはその延長線上にあるはずだから。
そこに一番早くたどり着くためには、どんな優先順位で進めていけばいいのかな。
代替用社内サーバも壊れる
ちょっと油断して電気を使いすぎ、ブレーカーが落ちてしまった。
すると、代替機として作っている最中のサーバのHDDが吹っ飛んでしまった。
ハードウェアRAIDでRAID1。2台とも飛んだ。データはなくなった。
幸い別のところにまだデータは生きているので、被害はこの作業時間と心理的負担だけ。
ひどい生産性だ。もうイヤ。
こういうのって続きますねぇ。
おはらいが必要だ、おはらいが。
というわけで、今日もがんばります。
すると、代替機として作っている最中のサーバのHDDが吹っ飛んでしまった。
ハードウェアRAIDでRAID1。2台とも飛んだ。データはなくなった。
幸い別のところにまだデータは生きているので、被害はこの作業時間と心理的負担だけ。
ひどい生産性だ。もうイヤ。
こういうのって続きますねぇ。
おはらいが必要だ、おはらいが。
というわけで、今日もがんばります。
社内サーバが壊れる
いやはや、大変だった。
社内のすべてのデータを格納しているファイルサーバ兼開発環境サーバが壊れてしまった。
壊れてしまったのはDell PowerEdge SC430。
メモリは1GB。
ハードディスクはSerialATA 250GBx2。ファイルシステムはext3で、ソフトウェアRAIDで冗長化。
OSはFedoraCore4。
もともとは一時的に1台のサーバで運用しつつ、そのうちにサーバを増やしてたすきがけ式にデータバックアップをする予定だった。だが、なかなかサーバ追加を実施することができずにずるずる来て、ようやく今年サーバを追加する予定を立てたところだったのだが。。。
やっぱずるずるはよくない。
やると決めたらやるべきだし、やらないならば一切気にしないのを徹底すべきだ、ということを痛感した2日間だった。
障害は基板またはメモリまわりと見られる。幸いディスクは完全に生きていたため、データは全部救出できた。
決算前で取引データ等がなくなると相当後ろ向きの作業が増えるため、とにかくデータが生きていてよかったと思う。
【教訓】
・データの冗長化は絶対にやっておかなくちゃイケナイ。特に会社のデータは。
・RAIDなど、技術サイドに大幅に依拠したバックアップは危険。とにかく複数の「マシン」で同じデータを共有する仕組みを作る必要あり。バックアップはとにかく信頼性を重要視し、アナログな手法を推奨すべし。
・ハードウェア破損から復旧への作業時間、復旧にかかる身体的・心理的負担をどう軽減するかをシミュレーションしておく必要あり。
障害の現象は次のような感じだった。
・電源投入後、DELLのロゴとともにBIOSが立ち上がる。
・DELLのロゴ画面から次へ進まず、ロゴが表示されたままになり、OSは起動しない。
・フロッピーディスクドライブ部分にあるアクセスインジケータランプが点灯したままになる。
以下は、成功した救出方法。
1. http://www.clevery.co.jp/parts/2300101/ にあるような、S-SATA -> USB変換コネクタを購入。
2. サーバからSerialATA ハードディスクを取り出す。
3. SATAハードディスクを変換コネクタに接続。
4. Knoppix 5.1 をCD-Rに焼いておく。
5. 電源を入れたSATAハードディスクを、電源が落としてあるKnoppix on MacBookに接続。
6. MacBookをKnoppixから起動。CDからLinuxを立ち上げる。
7. Knoppixがディスクを認識。あとはscpでネットワーク上の別のマシンへデータをコピー。
以下、失敗した救出方法。
--- Linuxから救済を試す ---
・Dell のデスクトップマシンDimension をKnoppixから立ち上げようとしたが、CPUが異常に高温となり、熱暴走して応答不能になった。KnoppixのGUI版はかなり高速なマシンじゃないとスペック的に厳しい?
・最新版のKnoppix5.1は、デフォルトではテキストモードでの起動ができない。コマンドから立ち上げればテキストモードでの起動ができるかもしれないが、調べていない。
・Knoppixは、バージョンが~3.x と 4.0~で大幅にちがうものになっている。テキストモードで起動したいなら~3.xのCDを作るべし。
・Knoppix3.9からテキストモードで起動したが、ソフトウェアRAIDのディスクを読み込むことはできなかった。ふつうにext3ならたぶんだいじょうぶ。
・IBM 306mサーバ(SCSIディスク)の基板にむりやりSATAディスクをさして起動してみたが、SATA認識せず。なんか方法はあるかもしれないけど。
--- Windowsから救済を試す ---
・Windowsからext2/ext3ファイルシステムを読み込むことができるソフトLinux Readerを試してみたが、ソフトウェアRAID化されたディスクはパーティションの認識はするものの、ディスクの中身までは見ることができなかった。
--- Macから救済を試す ---
・MacOSX標準で、ext3の読み書きに対応しているかどうかは調べられなかった。
・Macからext2/ext3を読み書きできるというソフト「ext2fsx」を試してみたが、そもそもどう使用すればよいかわからず、ハードディスクも認識できなかった。
というわけで、また無駄な時間の使い方をしてしまった。
社内サーバはとりあえず別サーバにて仮運用中だが、新しく組み直す社内サーバシステムでは以下の要件で構築する予定。
・ファイルサーバにSambaの使用は辞める。Subversion + WebDAVで、ファイルのリビジョンが自動更新されるようにする。差し戻しができるようにするのと、誤ってファイルを消すことがないように。
・Subversion と SVKを使って、複数のマシン上でリポジトリ管理をする。障害が発生した場合はどちらからでも復旧できるように。
・リポジトリとは別に、実体ファイルをごっそりまとめてバックアップする仕組みを用意しておく。rsyncか?
・開発環境とファイルサーバは別のマシンで管理する。
・開発環境は次のような仕組みにする。
・ソースコード及び仕様書関連を全面的にプロジェクトごとのSubversion+Trac管理に移行。
・仕様書関連でファイルが散乱しないように、極力Tracのwikiにまとめるようにする。
・DB仕様はDBDesigner4を使用する。HTMLでの吐き出し機能を使って作成されたHTMLをTracからリンクするようにする。メンテナンスの都合上、Excelによる管理は廃止。
・開発する人は各自のホームディレクトリ内htdocsディレクトリ(~/tanaka/htdocs)にソースコードをチェックアウトし、編集する。編集中の動作を確認することができるように、~/tanaka/htdocs はApache個人用サブドメインのドキュメントルートとする。
・DBは基本的に共有。ただし、必要がある場合は別ポートで立てる。
さすがに全部の作業を自分でやるのはつらくなってきたなぁ。。。
というわけで、上記作業は誰かにお願いしようかな。
社内のすべてのデータを格納しているファイルサーバ兼開発環境サーバが壊れてしまった。
壊れてしまったのはDell PowerEdge SC430。
メモリは1GB。
ハードディスクはSerialATA 250GBx2。ファイルシステムはext3で、ソフトウェアRAIDで冗長化。
OSはFedoraCore4。
もともとは一時的に1台のサーバで運用しつつ、そのうちにサーバを増やしてたすきがけ式にデータバックアップをする予定だった。だが、なかなかサーバ追加を実施することができずにずるずる来て、ようやく今年サーバを追加する予定を立てたところだったのだが。。。
やっぱずるずるはよくない。
やると決めたらやるべきだし、やらないならば一切気にしないのを徹底すべきだ、ということを痛感した2日間だった。
障害は基板またはメモリまわりと見られる。幸いディスクは完全に生きていたため、データは全部救出できた。
決算前で取引データ等がなくなると相当後ろ向きの作業が増えるため、とにかくデータが生きていてよかったと思う。
【教訓】
・データの冗長化は絶対にやっておかなくちゃイケナイ。特に会社のデータは。
・RAIDなど、技術サイドに大幅に依拠したバックアップは危険。とにかく複数の「マシン」で同じデータを共有する仕組みを作る必要あり。バックアップはとにかく信頼性を重要視し、アナログな手法を推奨すべし。
・ハードウェア破損から復旧への作業時間、復旧にかかる身体的・心理的負担をどう軽減するかをシミュレーションしておく必要あり。
障害の現象は次のような感じだった。
・電源投入後、DELLのロゴとともにBIOSが立ち上がる。
・DELLのロゴ画面から次へ進まず、ロゴが表示されたままになり、OSは起動しない。
・フロッピーディスクドライブ部分にあるアクセスインジケータランプが点灯したままになる。
以下は、成功した救出方法。
1. http://www.clevery.co.jp/parts/2300101/ にあるような、S-SATA -> USB変換コネクタを購入。
2. サーバからSerialATA ハードディスクを取り出す。
3. SATAハードディスクを変換コネクタに接続。
4. Knoppix 5.1 をCD-Rに焼いておく。
5. 電源を入れたSATAハードディスクを、電源が落としてあるKnoppix on MacBookに接続。
6. MacBookをKnoppixから起動。CDからLinuxを立ち上げる。
7. Knoppixがディスクを認識。あとはscpでネットワーク上の別のマシンへデータをコピー。
以下、失敗した救出方法。
--- Linuxから救済を試す ---
・Dell のデスクトップマシンDimension をKnoppixから立ち上げようとしたが、CPUが異常に高温となり、熱暴走して応答不能になった。KnoppixのGUI版はかなり高速なマシンじゃないとスペック的に厳しい?
・最新版のKnoppix5.1は、デフォルトではテキストモードでの起動ができない。コマンドから立ち上げればテキストモードでの起動ができるかもしれないが、調べていない。
・Knoppixは、バージョンが~3.x と 4.0~で大幅にちがうものになっている。テキストモードで起動したいなら~3.xのCDを作るべし。
・Knoppix3.9からテキストモードで起動したが、ソフトウェアRAIDのディスクを読み込むことはできなかった。ふつうにext3ならたぶんだいじょうぶ。
・IBM 306mサーバ(SCSIディスク)の基板にむりやりSATAディスクをさして起動してみたが、SATA認識せず。なんか方法はあるかもしれないけど。
--- Windowsから救済を試す ---
・Windowsからext2/ext3ファイルシステムを読み込むことができるソフトLinux Readerを試してみたが、ソフトウェアRAID化されたディスクはパーティションの認識はするものの、ディスクの中身までは見ることができなかった。
--- Macから救済を試す ---
・MacOSX標準で、ext3の読み書きに対応しているかどうかは調べられなかった。
・Macからext2/ext3を読み書きできるというソフト「ext2fsx」を試してみたが、そもそもどう使用すればよいかわからず、ハードディスクも認識できなかった。
というわけで、また無駄な時間の使い方をしてしまった。
社内サーバはとりあえず別サーバにて仮運用中だが、新しく組み直す社内サーバシステムでは以下の要件で構築する予定。
・ファイルサーバにSambaの使用は辞める。Subversion + WebDAVで、ファイルのリビジョンが自動更新されるようにする。差し戻しができるようにするのと、誤ってファイルを消すことがないように。
・Subversion と SVKを使って、複数のマシン上でリポジトリ管理をする。障害が発生した場合はどちらからでも復旧できるように。
・リポジトリとは別に、実体ファイルをごっそりまとめてバックアップする仕組みを用意しておく。rsyncか?
・開発環境とファイルサーバは別のマシンで管理する。
・開発環境は次のような仕組みにする。
・ソースコード及び仕様書関連を全面的にプロジェクトごとのSubversion+Trac管理に移行。
・仕様書関連でファイルが散乱しないように、極力Tracのwikiにまとめるようにする。
・DB仕様はDBDesigner4を使用する。HTMLでの吐き出し機能を使って作成されたHTMLをTracからリンクするようにする。メンテナンスの都合上、Excelによる管理は廃止。
・開発する人は各自のホームディレクトリ内htdocsディレクトリ(~/tanaka/htdocs)にソースコードをチェックアウトし、編集する。編集中の動作を確認することができるように、~/tanaka/htdocs はApache個人用サブドメインのドキュメントルートとする。
・DBは基本的に共有。ただし、必要がある場合は別ポートで立てる。
さすがに全部の作業を自分でやるのはつらくなってきたなぁ。。。
というわけで、上記作業は誰かにお願いしようかな。
mac を Speed Freak で高速化
初代MacBookの反応がちょい遅いので、Speed Freakというソフトで高速化してみた。
FinderとかCyberduck とかは速くなった。
Fireworks はそれほど効果なし。
でも快適で安定している感じなので使い続けようと思う。
ちょっとした画像編集するのに、新型MacBook Core2Duo 4GBメモリ vs 新型MacBook Pro 2GBメモリだったらどっちが生産性高いでしょうかねぇ?
FinderとかCyberduck とかは速くなった。
Fireworks はそれほど効果なし。
でも快適で安定している感じなので使い続けようと思う。
ちょっとした画像編集するのに、新型MacBook Core2Duo 4GBメモリ vs 新型MacBook Pro 2GBメモリだったらどっちが生産性高いでしょうかねぇ?
Akelosのvalidateメソッド
- validate
- Rails のvalidateメソッドと使い方は同じ。
class Sandbox extends ActiveRecord {
function validate() {
}
}
- validate_on_create
- Railsのvalidate_on_createメソッドに相当。
- validate_on_update
- Railsのvalidate_on_updateメソッドに相当。
- addError
- Railsのerrors.add に相当。
class Sandbox extends ActiveRecord {
function validate() {
if ($this->get('del_flag') !== '1') {
$this->addError("del_flag", "must be 1");
}
}
}
- addErrorOnBlank
- Railsのerrors.add_on_blank に相当。(未検証)
- addErrorOnBoundaryBreaking
- Railsのerrors.add_on_boundary_breaking に相当。(未検証)
- addErrorOnEmpty
- Railsのerrors.add_on_empty に相当。(未検証)
- addErrorToBase
- Railsのerrors.add_to_base に相当。(未検証)
- isInvalid
- Railsのerrors.invalid? に相当。(未検証)
- isEmpty
- Railsのerrors.empty? に相当。(未検証)
- validatesAcceptanceOf
- Railsのクラスメソッド validates_acceptance_of に相当。(未検証)
- validatesAssociated
- Railsのクラスメソッド validates_associated に相当。(未検証)
- validatesConfirmationOf
- Railsのクラスメソッド validates_confirmation_of に相当。(未検証)
- validatesExclusionOf
- Railsのクラスメソッド validates_exclusion_of に相当。(未検証)
- validatesFormatOf
- Railsのクラスメソッド validates_format_of に相当。(未検証)
- validatesInclusionOf
- Railsのクラスメソッド validates_inclusion_of に相当。(未検証)
- validatesLengthOf
- Railsのクラスメソッド validates_length_of に相当。(未検証)
- validatesNumericalityOf
- Railsのクラスメソッド validates_numericality_of に相当。(未検証)
- validatesPresenceOf
- Railsのクラスメソッド validates_presence_of に相当。(未検証)
- validatesSizeOf
- Railsのクラスメソッド validates_size_of に相当。(未検証)
- validatesUniquenessOf
- Railsのクラスメソッド validates_uniqueness_of に相当。(未検証)
macbookでAdobe Fireworks CS3がもたつく
昔からサイトのモックアップ作りに愛用のAdobe Fireworks。2の時代から使ってます。
MacBookで初めてmac用のFireworksを使っているのですが、どうも動作がもたつく。
Winでも多少もたつくところはあったけど、ちょっとこのもたつき方はそれ以上に気になる。メモリは2GB積んでいるのだけど。ちょっとしたことだけど、作業がさくさく進むかどうかって重要じゃない?
んー、そんなにゴリゴリとは画像編集してないとおもうのだけど、さすがに初期型MacBook Core Duo 2.0ですべての作業をこなすのはつらくなってきたかな。そのほかのアプリでも多少動き的に気になるところが出てきたし。
特に、cmd+tab でアプリケーションの切替を行う時、アプリケーションのアイコンがズームして出てくるんだけど、cmd+tabを話してもそのズームされたアイコン群がマウスをクリックしない限り消えない、という非常にちょっとしたトラブルに悩まされていたりする。これって何が悪さしてるんだろうなぁ。
MacBook Core2Duo のメモリ4GBか、MacBook Proのお世話になる日が近いかもしれない。
おっと、もうすぐMacworld EXPOですね。どんなのが出てくるか楽しみだなー。
なにかしら出たらノートPC買い換えようかな。
ソフマップで下取りサービスやってることだし。
MacBookで初めてmac用のFireworksを使っているのですが、どうも動作がもたつく。
Winでも多少もたつくところはあったけど、ちょっとこのもたつき方はそれ以上に気になる。メモリは2GB積んでいるのだけど。ちょっとしたことだけど、作業がさくさく進むかどうかって重要じゃない?
んー、そんなにゴリゴリとは画像編集してないとおもうのだけど、さすがに初期型MacBook Core Duo 2.0ですべての作業をこなすのはつらくなってきたかな。そのほかのアプリでも多少動き的に気になるところが出てきたし。
特に、cmd+tab でアプリケーションの切替を行う時、アプリケーションのアイコンがズームして出てくるんだけど、cmd+tabを話してもそのズームされたアイコン群がマウスをクリックしない限り消えない、という非常にちょっとしたトラブルに悩まされていたりする。これって何が悪さしてるんだろうなぁ。
MacBook Core2Duo のメモリ4GBか、MacBook Proのお世話になる日が近いかもしれない。
おっと、もうすぐMacworld EXPOですね。どんなのが出てくるか楽しみだなー。
なにかしら出たらノートPC買い換えようかな。
ソフマップで下取りサービスやってることだし。
AkelosでDBを'0'で更新できないバグを発見
Akelos でDBを更新する際、値を文字または数字の0に更新しようとすると、その値は更新されないというバグを発見。Akelosのバージョンは原稿の0.8。
【現象】
のようなSQLをAkActiveRecordを通じて実行したいが、なぜか実行されるSQLが
になってしまう。
【原因】
lib/AkActiveRecord.php castAttributeForDatabase() の最終行、
いちばん外側の三項演算子のfalse部分である
が原因。$result が 0 の場合、「=」が2つだとTRUEになってしまって、更新されるべき値が空っぽになって更新対象から外れてしまう。
ということで、
のように「=」を3つにすればOK。
あんまりソースコードを直接さわりたくないけど、けっこう致命的なので修正しておくべし。
【現象】
UPDATE sandbox_dev SET delete_flag = 0, updated_at = now() WHERE id = 1
のようなSQLをAkActiveRecordを通じて実行したいが、なぜか実行されるSQLが
UPDATE sandbox_dev SET updated_at = now() WHERE id = 1
になってしまう。
【原因】
lib/AkActiveRecord.php castAttributeForDatabase() の最終行、
return empty($this->_columns[$column_name]['notNull']) ? ($result === "" ? "\"\"" : $result) : ($result == 'null' ? "" : $result);
いちばん外側の三項演算子のfalse部分である
$result == 'null' ? "" : $result
が原因。$result が 0 の場合、「=」が2つだとTRUEになってしまって、更新されるべき値が空っぽになって更新対象から外れてしまう。
ということで、
return empty($this->_columns[$column_name]['notNull']) ? ($result === "" ? "\"\"" : $result) : ($result === 'null' ? "" : $result);
のように「=」を3つにすればOK。
あんまりソースコードを直接さわりたくないけど、けっこう致命的なので修正しておくべし。
プレイステーション用ディスクの裏面の色
ブログにありがちな分析記事系はあまり好きじゃないけど、受け取り方によってロマンがあるなぁと思ったのでメモ。
次世代DVDはブルーレイで決定?HD DVDのマーケティング上の失敗 [FPN]
この中の一説。
これ、真相はイメージ戦略ではなく、子どもが扱うゲームという特性からくる要請から、誤ってCDプレイヤーにディスクを挿入しないように区別するための対策だったとか。
http://ja.wikipedia.org/wiki/プレイステーション#CD-ROM
ただ、マーケティングの観点からして、「黒の裏面なのにどうやって読み込むんだろう?」とか「いままでのCD-ROMとはなにか違う感じがするディスク」といったイメージが局所的に発生することは想像できる話なので、とてもロマンのある受け取り方だなぁと思う。
必要性があってつけられた機能が、別の受け取り方をするときにとても物語じみてくる、っていう同音異義語的な属性がつくものは、けっこう受け入れられることが多いんじゃないかな。それはつまり、多面性のこと。
多面的な属性を持つものごとは、それが受け入れられる受容体も多岐にわたってくるため、間口が広がる。間口が広いってことは、より普及するってことで、作り手にとってはとてもよいこと。ただし、多面的であると、焦点がぶれやすく、ねらいや訴求が伝わりにくくなることもあるので、多面的な性格をもつものの作り方にはそれなりの注意の仕方があることも忘れないでおきたいところ。
エッジを効かせたものが特定の集団からウォーターフォール型に一般層に届く、という普及方式に気をとられがちだけど、「アイデアは普通だけど、『よい』と信じたものを徹底的な完成度で作り上げ」た結果、(影響力のある)誰かが多面的な意味合いを付加してくれることでブレイクする、という普及方式も無視できない。iKnow(英会話学習SNS)なんかは後者の非常によい例。
むしろ、情報に踊らされて消費者がものごとを「(意図せず)食い荒らしてしまう」傾向がある昨今(きっとこれは消費者にとっても虚しいことだと思う)、後者の方式できちんと「本物」を作り上げることの方が求められている気がする。
次世代DVDはブルーレイで決定?HD DVDのマーケティング上の失敗 [FPN]
この中の一説。
ソニーはこの辺りのイメージ戦略には長けており、初代プレイステーションではディスクの裏面を黒色に、プレイステーション2では青色にすることで、他のCD-ROMやDVD-ROMとは違うということをイメージとしてユーザーに持たせることに成功していました。
これ、真相はイメージ戦略ではなく、子どもが扱うゲームという特性からくる要請から、誤ってCDプレイヤーにディスクを挿入しないように区別するための対策だったとか。
http://ja.wikipedia.org/wiki/プレイステーション#CD-ROM
ただ、マーケティングの観点からして、「黒の裏面なのにどうやって読み込むんだろう?」とか「いままでのCD-ROMとはなにか違う感じがするディスク」といったイメージが局所的に発生することは想像できる話なので、とてもロマンのある受け取り方だなぁと思う。
必要性があってつけられた機能が、別の受け取り方をするときにとても物語じみてくる、っていう同音異義語的な属性がつくものは、けっこう受け入れられることが多いんじゃないかな。それはつまり、多面性のこと。
多面的な属性を持つものごとは、それが受け入れられる受容体も多岐にわたってくるため、間口が広がる。間口が広いってことは、より普及するってことで、作り手にとってはとてもよいこと。ただし、多面的であると、焦点がぶれやすく、ねらいや訴求が伝わりにくくなることもあるので、多面的な性格をもつものの作り方にはそれなりの注意の仕方があることも忘れないでおきたいところ。
エッジを効かせたものが特定の集団からウォーターフォール型に一般層に届く、という普及方式に気をとられがちだけど、「アイデアは普通だけど、『よい』と信じたものを徹底的な完成度で作り上げ」た結果、(影響力のある)誰かが多面的な意味合いを付加してくれることでブレイクする、という普及方式も無視できない。iKnow(英会話学習SNS)なんかは後者の非常によい例。
むしろ、情報に踊らされて消費者がものごとを「(意図せず)食い荒らしてしまう」傾向がある昨今(きっとこれは消費者にとっても虚しいことだと思う)、後者の方式できちんと「本物」を作り上げることの方が求められている気がする。
デザインを変えてみました。
2008年、心機一転ということでブログのデザインを変更しました。
テンプレートですけど、やっぱりきれいですね。
あと、フォントをぐっと大きく読みやすくしました。
やはりフォントは大きいと読みやすい。
会社のWebデザインも今年変更予定。
いろいろと変化をつけていくと楽しいですね。
Flashなどの特殊効果に頼らず、レイアウトと配色、フォントの大きさなどのバランスの良さで勝負できるWebデザイナーさんいらっしゃいませんか? ぜひお仕事をお願いしたいです。
テンプレートですけど、やっぱりきれいですね。
あと、フォントをぐっと大きく読みやすくしました。
やはりフォントは大きいと読みやすい。
会社のWebデザインも今年変更予定。
いろいろと変化をつけていくと楽しいですね。
Flashなどの特殊効果に頼らず、レイアウトと配色、フォントの大きさなどのバランスの良さで勝負できるWebデザイナーさんいらっしゃいませんか? ぜひお仕事をお願いしたいです。
深夜の仕事にマッチする音楽たち
上質の音楽が聴きたくなってきた。
「UA - 情熱」
UAの音楽を初めて聴いたのは渋谷のクラブ。
ずっと洋楽のアシッドジャズが流れている中で、日本語でめちゃくちゃソウルフルな曲がかかった。それが『太陽手に月は心の両手に
』。
そして、誰が歌っているのかを聞いて、UAのアルバムをすぐに買った。「情熱」はその中でいちばんのお気に入り。
吉田美奈子。
YouTubeにあるか探してみたら、聞いたことのない吉田美奈子の曲があった。
いやーかっこいい。田島貴男あたりのルーツミュージックになるのかな。
基本的に楽曲とかアレンジのセンスが抜群にいい。
桃井かおりとバーで飲みたくなる感じの曲。SKIIの話を聞かせてほしい。ほんとにいいのか、あれ、みたいな。俺は使わないけど。
荒井由実。
もうね、やばいですよ。この声と楽曲のすごさ。
こういう日本人の誰にでも届く曲をきっちり作れるってのはすごい。浅田真央の演技みたいだ。常に100%。
ペンギンに会いたくなる曲。改札も通りたくなる。
サーフ天国、スキー天国も好き。この曲もやばい。派手なターンで転びたくなる。今年こそスノボに行きたいなぁ。待ってろガーラ湯沢。
とりあえず今日は3曲。
よい音楽はいつの時代に聞いてもよいですね。
「UA - 情熱」
UAの音楽を初めて聴いたのは渋谷のクラブ。
ずっと洋楽のアシッドジャズが流れている中で、日本語でめちゃくちゃソウルフルな曲がかかった。それが『太陽手に月は心の両手に
そして、誰が歌っているのかを聞いて、UAのアルバムをすぐに買った。「情熱」はその中でいちばんのお気に入り。
吉田美奈子。
YouTubeにあるか探してみたら、聞いたことのない吉田美奈子の曲があった。
いやーかっこいい。田島貴男あたりのルーツミュージックになるのかな。
基本的に楽曲とかアレンジのセンスが抜群にいい。
桃井かおりとバーで飲みたくなる感じの曲。SKIIの話を聞かせてほしい。ほんとにいいのか、あれ、みたいな。俺は使わないけど。
荒井由実。
もうね、やばいですよ。この声と楽曲のすごさ。
こういう日本人の誰にでも届く曲をきっちり作れるってのはすごい。浅田真央の演技みたいだ。常に100%。
ペンギンに会いたくなる曲。改札も通りたくなる。
サーフ天国、スキー天国も好き。この曲もやばい。派手なターンで転びたくなる。今年こそスノボに行きたいなぁ。待ってろガーラ湯沢。
とりあえず今日は3曲。
よい音楽はいつの時代に聞いてもよいですね。
「CISCO」閉店
大手レコードショップ「シスコレコード」が全店舗を閉店、クラブカルチャーに未来はあるのか? [NIKKEI TRENDY]
いやー、切ないね@渋谷宇田川町。
CISCO閉店の前夜の映像はこちら。
「店がなくなったってかんけーねー」っていう言葉がむなしく響く。
いちばん関係なさそうじゃないじゃないか。
思春期の頃、大変お世話になりました。
特にDJを目指した訳じゃないけど、アナログレコードってのが新鮮でよく通って買いました。CDをプレイヤーにセットすることすら面倒な自分は、結局やがてレコードを聴かなくなったけど(圧縮音楽まみれです)、DJプレイを体感することはとても好きなのよ。いまでも。
マンハッタンレコードHouse店も閉店して、アナログレコード店は縮小傾向。
あとレコード売ってる大手系はDisk Unionくらいか?
まぁ、音楽市場全体が縮小している中で、ダウンロード販売や着うたフルなどの新しい流通の誕生や作曲・アレンジソフトの進化などで、「音楽」を母体にするサービスのパイの食い合いをこれだけしていれば、結局何かがはじき飛ばされるわけで。もちろんアナログ盤は絶滅しないと思うし、今後ちょびちょびブレイクは出てくると思うけど、経済的な要請で文化そのものに多様感がなくなってきてしまうのはなんだかさみしいことしきり。それが経済の原則といわれればもちろんその通りだけど。
今年はクラブにも遊びに行きたいな。
なんかそういう文化に触れてセンスを磨くことも、大切なことだよね。
いやー、切ないね@渋谷宇田川町。
CISCO閉店の前夜の映像はこちら。
「店がなくなったってかんけーねー」っていう言葉がむなしく響く。
いちばん関係なさそうじゃないじゃないか。
思春期の頃、大変お世話になりました。
特にDJを目指した訳じゃないけど、アナログレコードってのが新鮮でよく通って買いました。CDをプレイヤーにセットすることすら面倒な自分は、結局やがてレコードを聴かなくなったけど(圧縮音楽まみれです)、DJプレイを体感することはとても好きなのよ。いまでも。
マンハッタンレコードHouse店も閉店して、アナログレコード店は縮小傾向。
あとレコード売ってる大手系はDisk Unionくらいか?
まぁ、音楽市場全体が縮小している中で、ダウンロード販売や着うたフルなどの新しい流通の誕生や作曲・アレンジソフトの進化などで、「音楽」を母体にするサービスのパイの食い合いをこれだけしていれば、結局何かがはじき飛ばされるわけで。もちろんアナログ盤は絶滅しないと思うし、今後ちょびちょびブレイクは出てくると思うけど、経済的な要請で文化そのものに多様感がなくなってきてしまうのはなんだかさみしいことしきり。それが経済の原則といわれればもちろんその通りだけど。
今年はクラブにも遊びに行きたいな。
なんかそういう文化に触れてセンスを磨くことも、大切なことだよね。
2008年のテーマは「参加」
去年の年初エントリを見てみた。
去年のいまごろの話なのにすごく遠い昔のような気がする。
すごく若くて青くて幼い感じがするし、なんだかコッパズカシイ。
きっと今と比べてできることも少なかったと思う。
「自由に飛ぶこと」なんてテーマを掲げても、結局サービスは閉じることになってしまった。ちょうどこのころは完全に悩みの中にどっぷり入っていたんだよなぁ。なんとか明るく振る舞おうとしていた自分がなかなか痛々しく、恥ずかしい。
その後一年間、お客様の仕事を一心不乱にやらせていただくことで自信もついたし、よいサイクルも見つけた。言ってみると月並みだけど、キャッシュが回っているのと完全な投資フェーズでは、かかってくる心理的負担がまったく違う。そして、(これはまだ体験していないけど)投資してもらって進める仕事と、自己資金のみで進める仕事もきっと全く違うんだろうと思う。こればっかりは、実際に体験してみないとね。キャッシュは大切、お金はだいじだよー。ただし、キャッシュを追いすぎるとまたそれはそれで自分の身体を拘束して動けなくなる。そこに、バランスという概念が登場してくる。
去年は結局、テーマが「下積み」に変わってしまいました。
さて、だいぶ基礎体力がついてきたし、仕事のペースもつかめてきたということで。
今年のテーマは「参加」にしたいと思います。
いろんなイベントだったり、交流だったり、勉強会だったり。
仕事だけじゃなくて遊びでもスタジアムに足を運ぶ、コンサートに行く、旅行に行く、海/山に行く、飲みに行くなど、「現場へ行くこと」を大切にしたいと思います。
知り合いがたくさん増えたらうれしいな。
まずは「参加」のための自己紹介代わりになる道具作りが必要なので、いろいろ動けるようになるのは春以降かな。
みなさんどこかでお会いしましょうね。
去年のいまごろの話なのにすごく遠い昔のような気がする。
すごく若くて青くて幼い感じがするし、なんだかコッパズカシイ。
きっと今と比べてできることも少なかったと思う。
「自由に飛ぶこと」なんてテーマを掲げても、結局サービスは閉じることになってしまった。ちょうどこのころは完全に悩みの中にどっぷり入っていたんだよなぁ。なんとか明るく振る舞おうとしていた自分がなかなか痛々しく、恥ずかしい。
その後一年間、お客様の仕事を一心不乱にやらせていただくことで自信もついたし、よいサイクルも見つけた。言ってみると月並みだけど、キャッシュが回っているのと完全な投資フェーズでは、かかってくる心理的負担がまったく違う。そして、(これはまだ体験していないけど)投資してもらって進める仕事と、自己資金のみで進める仕事もきっと全く違うんだろうと思う。こればっかりは、実際に体験してみないとね。キャッシュは大切、お金はだいじだよー。ただし、キャッシュを追いすぎるとまたそれはそれで自分の身体を拘束して動けなくなる。そこに、バランスという概念が登場してくる。
去年は結局、テーマが「下積み」に変わってしまいました。
さて、だいぶ基礎体力がついてきたし、仕事のペースもつかめてきたということで。
今年のテーマは「参加」にしたいと思います。
いろんなイベントだったり、交流だったり、勉強会だったり。
仕事だけじゃなくて遊びでもスタジアムに足を運ぶ、コンサートに行く、旅行に行く、海/山に行く、飲みに行くなど、「現場へ行くこと」を大切にしたいと思います。
知り合いがたくさん増えたらうれしいな。
まずは「参加」のための自己紹介代わりになる道具作りが必要なので、いろいろ動けるようになるのは春以降かな。
みなさんどこかでお会いしましょうね。
あけましておめでとうございます。
2008年、あけましておめでとうございます。
1月3日から仕事始め。
(とはいっても元旦もその次の日もサーバ監視の仕事が部分的にありましたが。。。)
新年一発目の本格業務は年末できなかった大掃除から始まりました。
実際やってみると、年末よりも新年で大掃除した方が実はいいんじゃないか、というほど気持ちのいいもんですね。新しい気持ちになれる感じがするし、生活がだれないのがとても生産的で心地よいです。時間の無駄がいちばんもったいない、というわけで。
初詣は地元の不動様にお参り。
別途日を改めて、毎年恒例の鶴岡八幡宮@鎌倉にもおじゃまする予定。
年末年始のサーバのチューンも大成功でした。ふたをあけてみるまでは不安がいっぱいでしたが、やはり仕事は準備が9割だな、と改めて実感。きちんと準備しておけば、きちんと成果を返してくれるもんですね。よい実績ができてとてもよかった。
今年は田中商店3年目を迎える年。
いろいろな展開ができるように体調に気をつけつつ、一歩ずつ前に進んで行けたらよいなと思っています。
今年もどうぞよろしくお願いいたします。
1月3日から仕事始め。
(とはいっても元旦もその次の日もサーバ監視の仕事が部分的にありましたが。。。)
新年一発目の本格業務は年末できなかった大掃除から始まりました。
実際やってみると、年末よりも新年で大掃除した方が実はいいんじゃないか、というほど気持ちのいいもんですね。新しい気持ちになれる感じがするし、生活がだれないのがとても生産的で心地よいです。時間の無駄がいちばんもったいない、というわけで。
初詣は地元の不動様にお参り。
別途日を改めて、毎年恒例の鶴岡八幡宮@鎌倉にもおじゃまする予定。
年末年始のサーバのチューンも大成功でした。ふたをあけてみるまでは不安がいっぱいでしたが、やはり仕事は準備が9割だな、と改めて実感。きちんと準備しておけば、きちんと成果を返してくれるもんですね。よい実績ができてとてもよかった。
今年は田中商店3年目を迎える年。
いろいろな展開ができるように体調に気をつけつつ、一歩ずつ前に進んで行けたらよいなと思っています。
今年もどうぞよろしくお願いいたします。



