未来を発明するためにいまできること スタンフォード大学 集中講義II読んだ

ティナ・シーリングの
「未来を発明するためにいまできること スタンフォード大学 集中講義II」
読んだ。

■目次

はじめに アイデアは安いのではない……タダなのだ

第1章 革命を起こす
リフレーミングで視点を変えよ

第2章 蜂を招き入れる
多様なインプットが革新を生む

第3章 積み上げ、積み上げ、積み上げ、ジャンプ!
アイデアは永遠に止まらない波

第4章 忘れられた顧客カード
観察力を発揮していますか?

第5章 机の王国
クリエイティブな空間がクリエイティブな仕事を生む

第6章 ココナッツを思い出す
プレッシャーをアイデアの触媒にする

第7章 猫のエサを動かす
フィードバックはゲーミフィケーションで

第8章 てっぺんのマシュマロ
チームがはまる落とし穴

第9章 早く動く、突き破る
失敗は正しくやり直すチャンスだ

第10章 魔法の靴を履く人、履かない人
できると思ったらできる

第11章 内から外、外から内へ

感謝の言葉

■メモ
イノベーションエンジン
知識は想像力の燃料
想像力は知識をアイデアに変える触媒
姿勢はイノベーションエンジンを動かす起爆剤
資源・環境・文化
リフレーミング
パワーズ・オブ・テン

ブレインストーミングのやり方
観察力を高める
空間を作る
切羽詰まった時の創造性
創造性を評価するフィードバック
チームプレイヤーとしてのスキルを身につける
失敗はもっと賢くやり直せるチャンス

もともと前作が好きだったので読んでみたけど、
これは定期的に読み返す必要がある本。

■前作

Windows Web Server 2008 R2をインストールするにあたってのメモ

Windows Web Server 2008 R2をインストールするにあたってのメモ

Windows Web Server 2008 R2を初めてインストールするので色々メモ。
※開発環境としてなので色々緩めです。

■初期構成タスクの表示のさせ方
「スタート > ファイル名を指定して実行」を選択して「oobe」と入力

■IEのセキュリティ設定の変更
サーバーマネージャの初期画面には 「IE ESC の構成」という項目があり、IEのセキュリティー設定の変更ができる。
デフォルトではIEのセキュリティー設定があらかじめかなり高く設定してあり、満足にWeb閲覧が出来ない状態になっている。
開発機などでIEを使いたい場合はオフにすればいい。

■サーバーマネージャの表示のさせ方
「スタート」をクリックして、コンピューターを右クリックして管理を選択する
or
「ファイル名を指定して実行」で「CompMgmtLauncher」を入力する

■IISへのクライアントからのアクセスログ
標準では「C:\inetpub\logs\W3SVC1」に入っている。
IISのログに関する設定は、IISマネージャの「ログ記録」というアイコンから変更可能。
ログの記録形式はW3C形式という形式。
出力されるログに記載される時刻はUTC(協定世界時)となっていて、日本の標準時刻より9時間早く表示されている。
ログの出力のタイミングはリアルタイムではなく時間差がある。急いで確認したい場合はサイトレベルでの再起動を行うとログが出力される。

■トレースログ
IISではApacheのエラーログに該当する機能はないためトレース機能を利用する。
トレース結果を出力したい場合には、トレース機能の追加、出力規則を指定し、トレース機能を有効にすることでXML形式で出力される。

◇トレース機能の追加
・「サーバーマネージャ > 役割 > Web サーバー(IIS)」をクリック

・役割サービスの追加というボタンをクリックして「Web サーバー > 状態と診断」内の「トレース」にチェックを入れて「次へ」をクリック
・「インストール」をクリック
・インストールが完了したら、IISマネージャでトレース関連のアイコンを表示させるためにサーバーマネージャを再起動
・IISマネージャにアクセスし、「コンピューター名」をクリックして、一覧の中から「失敗した要求トレースの規則」をクリック
どの状態の時にトレースを実行するかを指定
・設定完了後、「コンピューター名 > サイト > Default Web Site」を開き、右側の操作パネルで再起動
・右の操作パネルの下部に「失敗した要求トレース」というリンクが増える
・このメニューを開き、有効にするとそれ以降のアクセスから規則に該当したリクエストのトレースが記録される

■IISでのアクセス権
権限付与は「IUSR」に対して付与する
IIS経由のファイルアクセス時の権限は「IUSR」というユーザー(正確にはユーザーではない)へのアクセス権の設定が評価される。
■必要に応じてPHPのextensionを利用する
多くのextensionはphp.iniでアンコメント(行頭の「;」を外す)して、アプリケーションプールをリサイクルするだけで利用可能になる。
■Unix形式のパーミッション444にする方法
権限を読み取り専用(444)に変更する場合は、該当ファイルで「右クリック > プロパティ」を表示し、属性の所
にある「読み取り専用」にチェックを入れ「適用 > OK」で対応可能。
読み取り専用かどうかのチェックはまずはこの「右クリック > プロパティ」の個所の「読み取り専用」が評価されるらしい。
■「.htaccess」の設定はIISの機能で行う
http://thinkit.co.jp/article/991/1?page=0,1

■実際にインストールしたときの参考
◇基本インストール
p17~p34を見て行った。

◇IIS7.5のインストール
p545~p549を見て行った。

◇PHPインストール(ISAPI版)
p101~p105を見て設定を行った。64bit環境での注意点を見て設定を行う必要がある。

C:\Program Files (x86)\PHP\php.ini
ファイルを
C:\Windows\php.ini
に設置して内容を修正してからIISの再起動を行う。
doc_rootとか直す

※本当はFastCGI版にしたかったんだけど環境をあわせろ縛りがあってやむなくISAPI版
※IISは7.5が入っているけど上記の本のとおりで一応動く

◇MySQLのインストール
以下のサイトを見てそのまま行った。

Windows Web Server 2008 R2にMySQLをインストール

■参考URL
WindowsサーバーでOSSを使おう

IIS de OSS 64bit-IIS7.5のインストールや設定方法について

jQueryと一緒にRequireJSを使ってみる

jQueryと一緒にRequireJSを使ってみる

RequireJSをちゃんと使うべく勉強。
WEB+DB PRESS vol.69に
「RequireJSでらくらくモジュール管理」
というのがあったのでこれを参考にする。

まずはRequireJSのメリット3つ
□カプセル化されたモジュールの定義
AMD(Asynchronous Module Definition)モジュールと呼ばれるカプセル化された再利用性の高いモジュール定義が行える。
AMDはコールバック関数を使って定義するのでグローバル変数に頼らずに他のモジュールを呼び出せる

□ネストした依存関係の自動解決
依存関係が多段にネストしていても利用するモジュールを呼べば自動でRequireJSが依存を解決してくれる。

□非同期読み込みと最適化ツールによるパフォーマンスの向上
非同期に読み込むことでレンダリングのブロックを回避できる。
最適化ツールが用意されている(今回の実験ではやらない)

ではとりあえず書いてみる。
元々記事に記載されていたコードをjQueryを使った
バージョンに書き換えてみる。

RequireJSはここのページの「Sample RequireJS 2.1.2 + jQuery 1.8.2 project」をおとしてくる
※2012/12/07時点です。
ここから先のサンプルコードで使っている「require-jquery.js」は
解凍したフォルダの中の
jquery-require-sample\webapp\scripts\require-jquery.js
を使っています。

■ファイルの構成

.
|– js
| |– component.js
| |– config.js
| |– counter.js
| |– maxheight.js
| |– page.js
| |– require-jquery.js
| |– require.js
| `– util.js
`– page.html

require.jsとrequire-jquery.jsの両方があるけど
jquery使う場合はrequire-jquery.jsがいいらしい。
ただrequire-jquery.jsはrequire.jsとjquery.jsを
連結しただけのものらしい。
でもこうすることでjqueryのプラグインが非同期で
ロードされる前に本体がロードされていることを保障
できるってことらしい。

■page.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <!-- 現在の時刻を表示する -->
        <h1 id="label"></h1>
        <div id="clock"></div>
        <hr /><!-- 単純なjqueryプラグインの実験↓ -->
        <label>一番大きいdivの高さ</label>
        <p id="height"></p>
        <hr /><!-- 複数のライブラリ中でjqueryプラグンが呼び出されたときの実験↓ -->
        <label>呼び出された回数</label>
        <p id="count"></p>
        <script>
            var require = {
                // キャッシュの防止
                urlArgs: 'bust=' + (new Date()).getTime()
            };
        </script>
        <script src="js/require-jquery.js" data-main="js/page" async></script>
    </body>
</html>

■js/config.js

define(function() {
    return {
        label: '現在の時刻',
        format: '%Y/%m/%d %H:%M:%S'
    };
})

■js/util.js

define(function() {
    function pad2(num){
        return ('0' + num).slice(-2);
    }

    function formatDate(date, formatStr) {
        return formatStr.
            replace('%Y', date.getFullYear()).
            replace('%m', pad2(date.getMonth() + 1)).
            replace('%d', pad2(date.getDate())).
            replace('%H', pad2(date.getHours())).
            replace('%M', pad2(date.getMinutes())).
            replace('%S', pad2(date.getSeconds()));
    }

    return {
        formatDate: formatDate
    };
});

■js/component.js

define(['jquery', 'config', 'util', 'counter'], function($, config, util) {
    function display($elem){
        $elem.text(util.formatDate(new Date(), config.format));
    }

    function render($elem) {
        display($elem);
        setInterval(function() {
                $(this).counter();
                display($elem);
            }, 1000);
    }

    return {
        render: render
    };
});

■js/page.js

require(['jquery', 'config', 'component', 'maxheight', 'counter'], function($, config, clock) {
    // configのラベルを表示(config依存)
    $('#label').text(config.label);

    // 現在の時刻を表示(component依存)
    clock.render($('#clock'));

    // ここから下はおまけの実験
    // ページ内のdiv要素で最も高いもののheightを返してみる(maxheight依存)
    $('#height').text($('div').maxHeight());

    // 5秒に1回たまったカウントを表示(counter依存)
    setInterval(function() {
        $('#count').countDisplay();
    }, 5000);
});

■js/maxheight.js

define(['jquery'], function($) {
    $.fn.maxHeight=function(){
        var max = 0;
        this.each(function() {
            max = Math.max( max, $(this).height() );
        });
        return max;
    };
});

■js/counter.js

define(['jquery'], function($) {
    var count=0;
    $.fn.counter=function(){
        count++;
    };
    $.fn.countDisplay=function(){
        this.text(count);
    }

});

■実際にうごかした画面。。。

実際に書いてみると以外に簡単に使えるんだなという印象。
自作したライブラリはとりあえずdefineで囲めばいいっぽいし。
defineで囲みたくない場合はshim設定で利用すれば擬似的に
モジュールで使えるということらしい。

後は今回でいうpage.jsの中でKAYACのURL dispatcher的な
ものを使えばよりいい感じになるのかもしれない。

そこそこ規模が大きくても何とかなるjavascriptの設計(URL dispatcherの薦め)

■参考URL

JavaScriptを分割&非同期で読み込めるRequireJS

RequireJS 2.0による依存関係の明示、フォールバック、複数バージョンの混在

勉強会資料シェア Getting Started with RequireJS

java-ja.js #2 RequireJS実践編

jQueryのプラグインをつくってみよう

条件付きコメント(バージョンベクタ)

条件付きコメント(バージョンベクタ)

IE7で動かないjsがあって条件付きコメントを書く必要があったのでメモというかリンクまとめ。
※条件付コメントっていう名称が出てこなかっただけ・・・。

IE10以降は条件付きコメント機能は廃止され、ただのコメント扱いになるのは知らなかった。

ウィキペディア:条件付きコメント

バージョンベクタを使用したブラウザ検出

バージョンベクタ?

バージョン ベクタは、ブラウザの起動時に読み取られる
レジストリ キーに格納されている、Windows Internet Explorer
の内部バージョン番号を表します。Web 開発者は、バージョン
ベクタを使用して、閲覧者が Web サイトの表示に使用している
ブラウザを検出できます。

PHPで簡単に死活監視をする方法

PHPで簡単に死活監視をする方法

処理の前に特定のサーバの状態を確認する必要があったのでメモ。

fsockopen関数を利用します。

fsockopen — インターネット接続もしくは Unix ドメインソケット接続をオープンする

■サンプルコード

function ping($host, $port=80, $timeout=5){
    $fsock=@fsockopen($host, $port, $errno, $errstr, $timeout);
    if(!$fsock){
        echo 'errno ... ' . $errno . "\n";
        echo 'errstr ... ' . $errstr . "\n";
        return FALSE;
    }else{
        return TRUE;
    }
}

$host='www.mogumagu.com';
$res=ping($host);

echo $res ? '応答有り' : '応答無し' . "\n";

IE7のインストール用ファイルメモ

IE7のインストール用ファイル

今更感満載ですが、IE7で確認しなきゃいけないことになった。
手元にIE7のPCが無いので古いXPのPCをセットアップしてIE7を入れることに。
普通にWindowsアップデートのカスタムアップデートでIE7だけ入れることもできるけど
念のためオフラインでも入れられるようにexeを探しておく。

IE7のインストールのexeファイルはMicrosoft Download Centerで探せるらしい。

Microsoft Download Center

実際のはこれ↓
Windows XP 向け Windows Internet Explorer 7

IE8はこちら
Windows XP 用 Windows Internet Explorer 8

■参考サイト
IE7/IE8 オフラインインストール用インストーラがこんなところにあったとは・・・

パターンランゲージに基づいた3つの有用なパターン

パターンランゲージに基づいた3つの有用なパターン

デザインパターンじゃなくて・・・。

チームでのプロジェクトを成功させる秘訣34項目「コラボレーション・パターン」

この記事が気になったので元サイトに行ってみたら
他にも2つのパターンがあったのでメモ。
コラボレーション・パターン(Collaboration Patterns)

コラボレーション・パターンは、「創造的コラボレーション」の秘訣を言語化したものです。
創造的コラボレーションでは、メンバーが高め合い成長しながら、個人には還元できない
チームレベルの「創発的な勢い」に乗り、世界を変えるような成果を生み出します。
そのようなコラボレーションのデザインにおける視点や方法をまとめたものが、
コラボレーション・パターンなのです

ラーニング・パターン (Learning Patterns)

学習パターンは、自律的で創造的な学び方のコツをパターン・ランゲージという形式でまとめたものです。
どのような状況でどのような問題が生じやすく、それをどのように解決すればよいのかの発想がまとめられています。
このようなコツを「言語」として共有することで、個人の自律的で創造的な学びの支援と、学びのコミュニティの
活性化を目指しています。

プレゼンテーション・パターン (Presentation Patterns)

プレゼンテーション・パターンは、「創造的プレゼンテーション」の秘訣を言語化したものです。
創造的プレゼンテーションには、想いが凝縮されたメッセージがあり、聞き手の想像力をかきたて、
新しい発見をもたらす工夫がなされています。
そのようなプレゼンテーションのデザインにおける視点や方法をまとめたものが、
プレゼンテーション・パターンです。

慶應義塾大学の井庭 崇 研究室で作成されたものらしいです。

活用させていただきます。

mysqlのバイナリログの設定とバイナリログを見るコマンドメモ

mysqlのバイナリログの設定とバイナリログを見るコマンドメモ

設定してるくせによく忘れるので。

my.cnfの設定
■バイナリログを有効にする

[mysqld]
#バイナリログ有効化
log-bin=mysql-bin

mysqlの再起動する。

どこに出力されてるのか?

# pwd
/var/lib/mysql
# ls -al | grep mysql-bin
-rw-rw----   1 mysql mysql    19791 11月 21 17:22 2012 mysql-bin.000001
-rw-rw----   1 mysql mysql   744930 11月 21 17:22 2012 mysql-bin.000002
-rw-rw----   1 mysql mysql      441 11月 21 17:24 2012 mysql-bin.000003
-rw-rw----   1 mysql mysql   335058 11月 27 17:27 2012 mysql-bin.000004
-rw-rw----   1 mysql mysql      106 11月 27 17:27 2012 mysql-bin.000005
-rw-rw----   1 mysql mysql       95 11月 27 17:27 2012 mysql-bin.index

こんな感じでファイルに出る。

# mysqlbinlog mysql-bin.000005
mysqlbinlog: unknown variable 'default-character-set=utf8'

こんなエラーがでたら。。

# mysqlbinlog --no-defaults mysql-bin.000005

とするといいみたい。
これはmy.cnf の [client] セクションに default-character-set があるのが問題らしいです。

■クエリログを有効にする

[mysqld]
#クエリログ設定
log=/var/lib/mysql/mysql_querry.log

mysqlの再起動する。

どこに出力されてるのか?(指定してるけど・・・)

# pwd
/var/lib/mysql
# ls -al | grep mysql_querry
-rw-rw----   1 mysql mysql   156836 11月 27 17:41 2012 mysql_querry.log

本番運用する場合はログの容量が大きくなるのでクエリログは
出力しないほうがいいみたい。あくまでデバッグ用で。

■参考サイト
MySQLバイナリログの仕様

7.10. mysqlbinlog — バイナリログファイルを処理するためのユーティリティ

MySQLとログ

Subject: [mysql 12904] Re: mysqlbinlogの動作について

あー鼻水止まらない。のど痛い。

プレ葉ウォーク浜北のKALDIセールは11月末

プレ葉ウォーク浜北のKALDIセールは11月末

2012.11.22から2012.11.25は
プレ葉ウォーク浜北のKALDI浜北店 4周年記念セールが開催されました。
コーヒー豆半額(一部除外品あり)/商品10%OFF

KALDIは店舗毎に○周年記念っていうセールをやるんだけど、
家の近くのプレ葉ウォーク浜北のKALDIのセールの日を忘れるので一応メモ。

KALDIのセール情報はKALDIのサイトの
セール情報のページにあるので大体何月にセールするのか
覚えておいてページをたまにチェックするのがいいと思う。

コーヒー豆半額はかなり重要。豆のまま買って保管。
ワインとか生ハムとかも10%OFFなので買いだめ。。