コンピューターメーカーAppleの創業者、スティーブ・ジョブズ氏の生き方についての記事があった。なるほど(・∀・)と思うところがあったので書き留めておこう。
もし今日が自分の人生最後の日だとしたら もし今日が自分の人生最後の日だとしたら、今日やる予定のことを私は本当にやりたいだろうか? これはいまやiPodやMac OS Xで有名な企業アップルの創設者であるスティーブ・ジョブズがスタンフォード大学の卒業祝賀スピーチで述べた有名な言葉です。 ジョブズは人生を左右する重大な決断に迫られたとき、この言葉を手がかりとして決断を下してきた そうです。その結果があれだけの企業を作り出したという事実を思い浮かべると、非常に示唆に富んだ言葉であると言えるでしょう。
【“スティーブ・ジョブズの生き方”の続きを読む】
Facebookが、PHPのための便利なツールを公開するそうです。
米Facebook、PHPコードをC++コードに変換して高速に実行する「HipHop for PHP」発表 - SourceForge.JP Magazine 米Facebookは2月2日(米国時間)、PHPの性能と拡張性を改善するプロジェクト「HipHop for PHP」を発表した。 PHPコードをC++に変換するプログラムで、すでにFacebook内で利用されているという。 開発者によると、CPUの利用率を平均して50%削減可能としている。 Facebookは今後、HipHop for PHPをGitHub上でオープンソースプロジェクトとして展開する。
原文ページ(英語)
http://developers.facebook.com/news.php?blog=1&story=358 翻訳ページ(日本語)
http://blog.candycane.jp/archives/275 ・PHP=インタープリター言語(遅い)
・C++=コンパイル言語(速い)
・PHPをC++に変換して使えば速くなる、CPUの負担が低減する。→アプリケーションサーバの台数を減らせる。
Facebookが作ったプロファイラー「XHProf」も便利だったから、これは期待できるかも。
PHPのプロファイラー「XHProf」の使い方 - 浜村拓夫の世界 HipHop for PHPが公開されたら、ちょっと中身を見てみよう。
最近、
SCM でGitがよく使われているな〜。Gitの使い方も覚えておかなきゃ。
【“PHPをC++に変換するHipHop for PHP”の続きを読む】
SONYのゲーム機「PlayStation3」を利用して安価なスーパーコンピューターを作る方法が紹介されていた。
プレイステーション3 - Wikipedia プレイステーション3とは、2006年11月11日に発売された家庭用ゲーム機。 発売元はソニー・コンピュータエンタテインメント(SCE)。
アメリカ空軍、軍用のスーパーコンピューターを作るためにPS3を2200台発注へ - GIGAZINE 米国空軍がPS3 2500台で380TFLOPSのスパコンを作ることにしたらしい - Life is beautiful PS3を2500台つなげて並列処理させると、380TFLOPS(=地球シミュレータの10倍)の計算性能を実現できるらしい。
●一家に一台スーパーコンピューターの時代 ・アメリカでは、PS3を利用したHPCが活発
・日本では、GPGPUを利用したHPCが活発
という傾向があるのだろうか?
日本では、高性能なビデオカードを搭載したパソコンでスーパーコンピューターを作る方法が話題になった。
GPGPUで激安スーパーコンピューターを自作する方法 - 浜村拓夫の世界 事業仕分けでスーパーコンピューターの予算を巡る議論が沸騰する中、激安で作る方法=GPGPUが世間でも注目された。
アメリカでは、PS3を使ったスーパーコンピューターが利用されているという話が目に付く。
一家に1台のスパコンを実現した PS3の CPU パワーの秘密 米国のTerra Soft Solutionでは、PS3で構築したスーパーコンピューター・システムの販売をすでに開始している。
PS3でスーパーコンピュータを作る方法--米大学が公開 マサチューセッツ大学ダートマス校だ。同大学の研究者は米国時間12月16日、PS3を使ってスーパーコンピュータを作る方法を公開した。このプロジェクトの目標は、汎用のスーパーコンピューティング研究のために低コストなソリューションを大学に提供することだ。 「科学研究予算は過去10年間でかなり小さくなっている」とマサチューセッツ大学の物理学教授であり、設計責任者であるGaurav Khanna氏はコメントした。「これは、科学研究プロジェクトをより安価に実施できる方法だ。この新しいウェブサイトでは、人々が前進するための方法を示していく」。
日本では、PS3を使ったスーパーコンピューターの話題性が低いのだろうか?
PS3のCellが、なぜ日本のスパコンにならないか理由を調べてみた 久夛良木氏はソニーには、「コンピュータの歴史を変えようという強い意志を共有できるパートナー 」がいなかったのだ。 日本のスパコンはいつの間にか、そのような熱いパワーを持つ人もなく、リスクをとらず国の予算さえつけばいいという官僚主義の食い物にされてしまったのではないかと思う。
PS3(playstation3) でクラスターにしてスーパーコンピュータ並の性能をだすことができるようです。ところが、最近のPS3は、勝手にソフトをインストールしたりできなくなりました。ソニーは、PS3によるクラスター市場に否定的なのでしょうか? http://bb.watch.impress.co.jp/docs/news/20090819_309302.html > SCEでは、「ゲームをはじめとしたエンタテインメントコンテンツを楽しんでもらうことに特化するため、機能を取り外した」としている。 この引用部分こそが、利益の薄いPS3によるクラスター市場ではなく、あくまで 「ゲームをはじめとしたエンタテインメントコンテンツ」で儲けたいと言う思惑を表しているのではないかと思います。
計算方法によって、得意分野・不得意分野が分かれてくる。
何を計算したいのか?目的を明確にして、ソフトウェア・ハードウェアを選択する。
家庭用スパコンを作るなら、NVIDIAのビデオカードをたくさん買ってGPGPUを行うよりも、PS3の初期型機を中古で買い集めてクラスターを作る方が安上がりになりそうだ。
【“PS3でスーパーコンピューターを作る方法”の続きを読む】
人を褒めることは、褒めた人、褒められた人の両方にメリットがある。
●称賛と賞賛の違い 株式会社京二 - 第13回 京二会報告 「称賛」と「賞賛」の違いは、「称賛」とは言葉で誉めたたえること であり、持続性が高く有効である。「称賛」が内発的な動機を引き出しやすいのに対し、「賞賛」とは、物を与えて誉めたたえること であり、飽き易く外圧的な動機を引き出し易いとの違いがある。
●称賛は能力を伸ばす 称賛ほど得をのばすものはない - いまこそ魂の教育:石原慎太郎 子供のしつけや教育の方法は、あくまでも二元的なものです。 ひとつは称賛であり、ひとつは罰です。 しかし一般的に子供のしつけにとっては、罰よりも称賛のほうが好ましいことは明らかです。 ただ、正しい称賛には、正しい罰を下す以上に、親の分析と注意が必要ですから、世の親は、子供のほんとうの徳をのばす術(すべ)である称賛 を怠ってしまう。 気をつけてみると、子供は大人も子供自身も気がつかない善行なりすぐれた言動を、往々しているものです。 それをとらえてほめてやらなければ、子供自身も自分の言動の価値を知らずに過ごし、その能力なり価値を伸ばすことができずに終わってしまいます。 世の親は、罰の対象になる子供の言動は日常での異常なものとしてとらえるが、称賛に値する言動を見落としがちです。
子供の頃、親がよく自分を褒めてくれた。
おかげで、美術など自分の特技が伸びた。
●心眼力 感動ムービー 「僕を支えた 母の言葉」 「最も大切なものに意識をフォーカスする」 「心の目で何を見るのか?」 というテーマにピッタリの話なので、ご本人の了解を得て動画にしました。
このムービーは、 私の新刊 『心眼力 〜柔らかく燃えて生きる30の智恵〜』 の発売を記念しまして、制作したものです。 「心の目で相手の素晴らしさを見る」ということを、ぜひ感じ取ってください。
相手の欠点だけを見るのではなく、長所を見つける観察眼を持つ。
●肯定=やる気 人は、自分が肯定している方向に向かって行動する性質がある。
逆に言えば、自分が否定している方向に向かって行動はしない。
=好きなことは積極的にやるけど、嫌いなことは積極的にやらない。
称賛は、他人の長所を肯定することによって、その長所と同じ状態に向かう行動を起こすことができるようになる。
(例)数学のテストで満点を取った人を称賛し続けていると、自分も数学が得意な状態を目指すことができるようになる。
・称賛する人 → 他人の長所を肯定して、自分も同じ長所を得ることができる。
・称賛された人 → 自分の長所に気づいて、自分の長所を伸ばすことができる。
●称賛と批判の違い 他人の批判や悪口は、称賛と反対の効果をもたらす。
子供を叱ったり他人を批判をする場合は、短所を長所に変えるための「代替案」を、必ずセットで提示しなければならない。
●人類の叡智を称賛する ・子供の頃は、両親から多くのことを学んだ。
・大人になった今、古今東西全ての人から学ぶことができる。
モデリング学習は、称賛によって加速される。
「
称賛力 」は、最高の能力開発〜ライフハックだ。
成果を出す - 浜村拓夫の世界 何かしらの対象物を見本(モデル)に、そのものの動作や行動を見て、同じような動作や行動をするのがモデリングである。 人間(主に子供)の成長過程では、モデリングにより学習・成長するとされている。
【“称賛力”の続きを読む】
「みんなのPython」を買った。
今日からPythonを勉強しよう。
Google App EngineでWebアプリを作ろう。
●著者 著者の柴田淳さんのブログ
http://coreblog.org/ats ●正誤表 「みんなのPython 改訂版」の正誤表
http://coreblog.org/ats/stuff/minpy_support/ats/stuff/minpy_support/errata_2nd ●Google Python ガイド Pythonの作者、
グイド・ヴァンロッサム (Guido van Rossum)さんはGoogleに勤務されています。
Google Python スタイルガイド ― lazy programmer's works. v1.0 documentation これは Google Python Style Guide Revision 2.15 を日本語に訳したものです。 Python は Google で使われている主要なスクリプト言語です。 このスタイルガイドは Python によるプログラムにおいてすべきこと、すべきでないことをまとめています。
【“みんなのPython”の続きを読む】
PHPでプログラムを作っているとき、プログラムの実行状況を確認するため、プロファイラーというツールを使います。
プロファイラとは 【profiler】 - IT用語辞典 プロファイラとは、動作中のプログラムがどの処理をどういった順序で実行したかを監視する プログラム。 プログラムの障害を見つけるために用いられるよりも、プログラムの余計な部分を削るなどして高速化するために用いられることが多い。
PHP用の「XHProf」という便利なプロファイラーが紹介されていました。
PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」:phpspot開発日誌 PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」。 Callgraphというものが見れるらしい。 プログラム実行の遷移図みたいなもので、重い部分を赤とか黄で視覚的に表示してくれる…、ってこれは凄い!
PECL :: Package :: xhprof XHProfの開発者は、アメリカの
facebook.com のエンジニアさんたちでした。
XHProfは、Facebookの開発で使われているツールなんですね。
XHProfを使ってみたら、プログラムの流れを可視化した「Callgraph」というグラフが便利でした。
Callgraphは、ボトルネックの発見だけでなく、プログラムの流れをトレースするときにも役立つと思います。
既存のPHPアプリをカスタマイズするときに、内部の動作がどうなっているのかを調べる等、使い方がいろいろありそうです。
(以下、XHProfのインストール方法&使い方のメモ)
【“PHPのプロファイラー「XHProf」の使い方”の続きを読む】
昔から、計画を実現する能力に欠けていた。
怠慢な性格が原因となり、必要なことを実行しないまま、放置してきた。
怠慢さによって、自分自身が損をしてきたと実感している。
・興味があることについては、寝食を忘れてのめり込める。
・他方で、興味が持てない分野については、全くやる気が出ない、モチベーションを維持できない。
●選択と集中 プログラミングにおいて、スキルアップが停滞している。
(1) 自分が興味のあるもの、作ってみたいものを作っていない。
(2) 自分が興味のないものを、収入を得るために作っている。
(1)と(2)の時間配分を変えないといけないと思った。
スティーブ・ジョブズの生き方 - 浜村拓夫の世界 「もし今日が自分の人生最後の日だとしたら、今日やる予定のことを私は本当にやりたいだろうか?」。 それに対する答えが“NO”の日が幾日も続くと、そろそろ何かを変える必要がある なと、そう悟るわけです。
「選択」…不要な作業を切り捨て、必要な作業を選定する。
「集中」…実行可能な最小限の作業に絞込み、一つずつ確実にこなしていく。
成功できない人たちが持つ7つの悪習慣 第三の悪習慣:一番大切なことを後回しにする * いつもダラダラしている。 * 家に帰ればまずテレビを見るかネットサーフィンをして、それから何をするかを考える。 * 面倒なことは常に後回し。 * 大切なことに取りかかるのはいつも直前になってしまう。 優先順位をつけて、重要事項を優先する 必要がある。
ないものねだりはできない。
自分の能力に見合わない計画を立てても、実行できなければ、結果的には何も計画しなかったことと等しい。
時間は有限だから、欲張らずに、やるべきことを吟味して絞り込むしかない。
内省による軌道修正が必要だ。
●シングルタスク プロジェクト管理でいえば、「結果を出す」=ブレークダウン(細分化)したタスク(作業)の完了の蓄積、ということに他ならない。
時間を上手に管理するための10の秘伝 5.一度に一つの事を マルチタスクは結局「虻蜂取らず」になりがち。 集中力は散漫になり、達成感は得られずにモチベーションは上がらないしで良い事が無い。 出来るだけシングルタスクを心がける ように。
・シングルタスクに徹する。
・タスクの完了を毎日測定する。
・1日の成果に応じて、翌日の予定(計画)をアジャイルに軌道修正する。
●モデリング プログラミングにおけるスキルアップは、アウトプット(成果物)を基準として測定する。
・インプット=モデリング学習
・アウトプット=コーディング+リファクタリング
モデリング (心理学) - Wikipediaモデリングは心理学用語のひとつ。 何かしらの対象物を見本(モデル)に、そのものの動作や行動を見て、同じような動作や行動をする のがモデリングである。 人間(主に子供)の成長過程では、モデリングにより学習・成長するとされている。
モデリング療法:心理学用語集 バンデューラ,A.の社会的学習理論において、モデルを観察することで、新たな行動が学習されたり既存の行動の修正が行われることを、モデリング(観察学習) と呼んでいる。 モデリングにより、不適切な行動を消去するとともに適応的な行動を獲得させ、問題行動の改善や障害の治療を行う技法が、モデリング療法である。
アルバート・バンデューラ - Wikipedia アルバート・バンデューラ(Albert Bandura 1925年12月4日 - )は、自己効力感や社会的学習理論で知られるカナダ人心理学者。 1950年代後半、社会的学習理論(モデリングによる学習)を提唱したことでも知られる。 従来の学習理論が、学習する個体(人間や動物)自身の経験を前提としていたのに対し、学習が他の個体の行動を観察することによっても成り立つことを実証 し、新たな理論づけを行った。
ネット巡回がインプットにならずただの消費になっていた 自分は情報を大量にインプットしてるつもりだった。 なんとなく勉強して偉くなったつもりになってた。 でも、そうやってため込んだ知識は他の人と話すときに何の役にも立たなかった。 つまり、これはインプットじゃあなかったわけだ。だってアウトプット口がない んだから。
お前ら起業しろ!経営者はいいぞ! 自分たちが属する会社や身の回りの社会やプロスポーツの世界でも一国の経済でも同じですが、何か新しい試みに挑戦 しようという人がいなくなると、その組織は活力を失うのです。 社会主義国が破綻したのも、現在の日本経済がうまく行かないのも、組織がこのダイナミズムを奪ってしまったからだと思います。
資本主義とエントロピー - 池田信夫blog 差異そのものである情報を商品化 していく、現在進行中のポスト産業資本主義という喧噪に満ちた事態にほかならない。 かつて日本が急速な成長をとげたのは、国際的な賃金の差異を埋めるエントロピーの増大に乗ったからだが、これから必要なのは差異を生み出してエントロピーを下げるシステムである。 それには今までのように既存の技術の延長上でいいものを作るだけではなく、誰もやったことのないことをやる「突然変異」を生み出さなければならない のだ。
・情報=差異は価値を生み出し、人を動かす
・検索=情報の再利用
・シミュレーション=情報の開拓
●夢を形にする 今年は、好きなプログラムを書く時間をたくさん取ろう。
MVCでWebアプリを作るとき、ViewでSmartyのようなテンプレートシステムを使うと便利だと思っていた。
しかし、Smarty独自のタグを覚えるまでもなく、工夫すれば素のPHP構文でも十分だと思うようになった。
CodeIgniter › ビューファイル向けの代替のPHP構文 CodeIgniter › テンプレートパーサクラス ●簡単にできることを複雑にやる必要はない ページのキャッシュ機能とか、Smartyでできることは全てPHPでもできる。
敢えてテンプレートシステムを使う利便性はあるだろうか?
●継承できるテンプレート TwigというPHPテンプレートシステムがあった。
http://www.twig-project.org/ PHPテンプレートエンジンTwigをいじってみました - Unou Labs symfonyの開発元であるSensio Labsから、PHPのテンプレートエンジンTwigが出ていたテンプレート継承 なるほど、クラスを生成して普通の継承を行っているんですね。 よく考えれば当たり前な気がしますが正直、Smartyなどのテンプレートエンジンは素のPHPっぽいテンプレートを返すのでクラスを吐き出すというのが自分的にはとても新鮮でした。
テンプレートに「継承」というアイデアを導入したと。
テンプレートエンジンを素のPHPからTwigに乗り換えた理由 テンプレートを継承できるのは便利です。 レイアウトなどは同じだけど細かいところは違う、というようなテンプレートを書くのが格段に楽になります。 素のPHPでレイアウトなどを共有する場合、includeする部品ひとつひとつを他のファイルに切り出してやる必要があるんですが、継承に比べるとこれは面倒です。
Twigを試す 簡単な説明 * Twig_Environment, Twig_Loader, Twig_Exntension, Twig_Templateの4つからなる。 * Twig_Environmentは、Twigのかなめ。このオブジェクトでテンプレートをロードする。 * Twig_Loaderは、テンプレートをどのようにロードするか管理する。 * Twig_Exntensionは、Twigテンプレートを拡張するためのもの。 * Twig_Environmentでロードしたテンプレートは、Twig_Templateのオブジェクトとしてあつかう。 * Twig_Templateのrenderメソッドで、テンプレートを適用する。 Twigの面白いところは、元記事にもあるようにテンプレートの継承。
Twigの継承が重宝する事例には、どんなものがあるだろうか?
・Drupal等のCMSのように、ブロック(表示データの塊)を配置してページを組み立てる場合
・Viewの切替えが多発する携帯サイト
・ローカリゼーション(サイトの国際化、多言語ページ対応)
とか?
CodeIgniterのMVCをモジュール化するライブラリである「MatchBox」と「HMVC」を使ってみた。
MatchBox for CodeIgniter 使い方 - 浜村拓夫の世界 CodeIgniterをHMVCでモジュール化 - 浜村拓夫の世界 MatchBox http://codeigniter.com/wiki/Matchbox/ HMVC http://codeigniter.com/wiki/Modular_Extensions_-_HMVC/ なんか、HMVCだと思い通りの挙動をしなかったので、とりあえずMatchBoxにしておこう。
=Controllerのファイルと同じ名前のViewファイルを用意すると、読込みエラーが発生した。
●MVC以外のアーキテクチャー ↓
NetPenguin さんの資料
HMVCは、Hierarchical MVC(Recursive MVC)の略。
階層型MVCという意味で、「PACを変形した状態」とのこと。
PAC (Presentation Abstract Controller) - 浜村拓夫の世界 PACとは、Presentation Abstract Controllerの略で、「MVCの階層的アーキテクチャー」
Flex/AIRでPAC的に実装するトライアル HMVCはHierarchical-MVC(階層MVC)のことで、MVCをPAC化したようなものになっている。
CodeIgniterを階層型MVCにすると、以前作った機能を追加しやすくなって便利だ。
【“CodeIgniterのMatchBoxとHMVC”の続きを読む】
「PHP逆引きレシピ」という本のプレゼントキャンペーンが行われていました。
ブログやtwitterで本を紹介すると、抽選で本をプレゼントしてもらえるそうです。
祝!1万部超え『PHP逆引きレシピ』プレゼントキャンペーン 締め切り 2010年1月31日 24時0分まで (日本時間)
●『PHP逆引きレシピ』とは? PHP言語を日々実践の場で利用している方々へ贈る、必須のレシピ集であり、また初級レベルのPHP開発者が中級レベルを目指すために必要な秘訣やヒントを一杯詰め込んだ、便利な逆引き本です。
本書を読んだ感想は、「目的の情報にたどり着きやすい」ということです。
類書と比較してみると、本書は「辞書」「リファレンス」という形式で編纂されているので、必要な知識を取り出しやすくなっています。
●説明の詳しさ どんなに複雑なプログラムでも、その構成要素は「データ」と「処理」という二つしかありません。
データと処理 - 浜村拓夫の世界 データの形式の一つとして「配列」があります。
Webアプリケーションを作るということは、一言で言えば「データベースのラッパーを作ること」と言えると思います。
ラッパークラスとかラッパー関数ってどんなものか簡単に説明してもらえませんか? - Yahoo!知恵袋 ラップ=wrapつまり包むってことですね。 ややこしい手順をそのクラスや関数に入れてしまって、扱いやすくしたり、手順の変更があっても変更箇所を限定するといったために利用されます。
データのCRUD等、配列の利用は避けて通れないので、配列操作が思い通りにできれば、ラッパー作りがスムーズになると思います。
CRUD - Wikipedia CRUD(クラッド)とは、ほとんど全てのコンピュータソフトウェアが持つ永続性の4つの基本機能のイニシャルを並べた用語。 その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)である。
本書は、配列の操作方法について詳しく説明していたので、親切な教科書だと思いました。
「PHP逆引きレシピ」が欲しい方は、プレゼントキャンペーンに応募してみてはいかがでしょうか?
【“祝!1万部超え『PHP逆引きレシピ』プレゼントキャンペーン”の続きを読む】