2008年11月29日土曜日

今日のブックマーク 11/29/2008

  • try{
    echo "****** Begin try ******\n\n";
    #引数が不正な関数コール(「Warning」警告)
    substr();
    echo "****** End try ******\n\n";
    }catch(Exception $e){
    echo "****** catch ******\n\n";
    }

    tags: php

  • CentOSのバージョンは、メジャーバージョンとマイナーバージョンの二つより構成される。メジャーバージョンはベースとしたRHELに対応しており、マイナーバージョンはそのRHELのバージョンアップに対応する。例えば、CentOS 4.3はRHEL 4 update 3のソースコードよりビルドされており、これと互換である。

    tags: linux


Posted from Diigo. The rest of my favorite links are here.

2008年11月28日金曜日

(suz-php-jquery) DaoにlastInsertId()を追加

スズキです。

プログラム中でインサートして、自動で振られたidを取得する必要があり、
表記の通り、lastInsertIdメソッドを追加しました。

振る舞いは、PDOのlastInsertIdメソッドとまったく同じです。
http://search.net-newbie.com/php/function.pdo-lastinsertid.html

なので使い方も、

$dao->lastInsertId()

といった具合になります。

機能は必要になったら実装する方向で、
暇なときは、テストコードを書く方向で。

--
http://suz-lab.blogspot.com/

MySQLの"CREATE TABLE"文の雛形

スズキです。

手で直接書くときは、いつもGoogleでサンプル探し回っているので、
雛形として、自分メモしておきます。

--------【SQL】--------
CREATE TABLE hoge_sample (
  sample_id INTEGER NOT NULL AUTO_INCREMENT,
  sample_name TEXT NOT NULL,
  sample_height DOUBLE NOT NULL,
  PRIMARY KEY (sample_id)
)
--------
※全角空白に注意

こういうの、増やしていこう。

--
http://suz-lab.blogspot.com/

"CentOS"と"Red Hat Enterprise Linux"の対応ルール

スズキです。

CentOS(http://www.centos.org/)は、

> "Red Hat Enterprise Linux"との完全互換を目指した
> フリーのLinuxディストリビューション
("http://ja.wikipedia.org/wiki/CentOS"より)

です。

なので、"Red Hat Enterprise Linux"のテスト環境を構築するときは、
よく、"CentOS"で代替することにしているのですが、
そうなると、"CentOS"のどのバージョンと、
"Red Hat Enterprise Linux"のどのバージョンが対応しているのか?
がポイントになってきます。

で、そのルールですが、

> CentOSのバージョンは、メジャーバージョンとマイナーバージョンの
> 二つより構成される。メジャーバージョンはベースとしたRHELに対応しており、
> マイナーバージョンはそのRHELのバージョンアップに対応する。
> 例えば、CentOS 4.3はRHEL 4 update 3のソースコードよりビルドされており、
> これと互換である。
("http://ja.wikipedia.org/wiki/CentOS"より)

とのことです。

わかりやすいルールです。

--
http://suz-lab.blogspot.com/

GeryEngineで"Merged smurk nodes"が出力される(PHP)

スズキです。

PHPのテンプレートは基本的に、GeryEngineを使っています。
http://geryengine.instant-publishing.nl/
これを採用した理由は下記となります。
http://suz-lab.blogspot.com/2007/10/velocityphpgeryengine.html

なんですが、ある条件で"Merged smurk nodes"の文字列が
勝手に出力されてしまう問題が発生しました。
(ある条件はまだ、調べきってはいません...)

で、GeryEngineのソースを追っかけてみたところ、
TreeVisitor.phpの38行目に

echo "Merged smurk nodes";

なんてコードが入ってました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/GeryEngine/lib/compiler/TreeVisitor.php

とりあえず、上記をコメントにしてでの対応です。

早く、安定させたいなー...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) テンプレートを使った差込メール送信

スズキです。

前に紹介したよに、Maoを使えば実現できるはずなんですが、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-maomail-access-object.html
バグってました...

修正したので、下記コードで、表記を実現することができます。

--------【PHP】--------
public function sendMail() {
  require_once("Mao.php");
  $mao = new Mao();
  $context = array(
    "name" => "suz-lab"
  );
  return $mao->hoge(
    array("to@localhost", "宛先日本語名"),
    "テスト",
    array("from@localhost", "送り元日本語名"),
    $context
  );
}
--------【テンプレート(hoge.vm)】--------
以下は変数の値です。
$name
--------

これでメール本文が、以下のように、テンプレートの$nameに
$contextのnameの値が差し込まれた形になります。

--------【送信されるメール本文】--------
以下は変数の値です。
suz-lab
--------

ちゃんとテストしないと...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/28/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月27日木曜日

(suz-php-jquery) Taoを使ったファイル生成

スズキです。

表記は、下記で実現できます。

--------【PHP】--------
require_once "Tao.php";
$tao = new Tao("../../html/app/example");
$handle = fopen("../TMP/generate/example/hoge.php", "w");
fwrite($handle, $tao->hoge(array()));
fclose($handle);
--------
※本当はもっとエラー処理が必要...

まずルールとして、生成したファイルは
"webapp/TMP/generate/"以下に置くようにしています。

そして、Taoの使い方ですが、
コンストラクタで、テンプレート(hoge.vm)のあるフォルダを指定し、
$tao->テンプレート名(テンプレートに渡すコンテキスト)
で、テンプレートとコンテキストがマージされた結果を取得することができます。

あとは、PHPでのファイル出力のお話です。

次は、ログ出力系かな。

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Mao(Mail Access Object)

スズキです。

ようやく、"suz-php-jquery"のメール送信まわりができました。
Mao(Mail Access Object)で実現しています。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Mao.php

中身は、GeryEngineでテンプレートにデータあてがって本文を作り
それを、Qdmail&Qdsmtpで送信、といった感じです。

使い方は、下記のとおりになります。

(1) Maoのパラメータを定義(MaoDefine)
ここでMaoが利用する、SMTPサーバのHOST、PORT、
FROMのメールアドレス、送信プロトコルを設定します。
--------【PHP】--------
define("MAO_HOST" , "localhost");
define("MAO_PORT" , 25);
define("MAO_FROM" , "from@localhost");
define("MAO_PROTOCOL", "SMTP");
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Define/MaoDefine.php

(2) メール本文のテンプレートを作成。
"mail/app/パッケージ名"の下にテンプレートファイルを作成します。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/mail/app/example/hoge.vm
テンプレートファイルを置くデフォルトフォルダのルールはDaoと同じです。
http://suz-lab.blogspot.com/2008/10/suz-php-jquery-dao.html
ちなみにDao同様、Maoのコンストラクタ引数で、
テンプレートフォルダの位置も変更できます。

(3) ActionからMaoを利用
下記のように利用します。
--------【PHP】--------
class ExampleAction {
  public function sendMail() {
    require_once("Mao.php");
    $mao = new Mao();
    return $mao->hoge(
      array('to@localhost' , '宛先日本語名' ),
      'テスト',
      array('from@localhost' , '送り元日本語名' ),
      array()
    );
  }
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

ポイントは

$mao->テンプレートファイル名(
  array('宛先' , '宛先日本語名' ),
  'タイトル',
  array(''送り元' , '送り元日本語名' ),
  array() // GeryEngineに送るコンテキスト
);

です。

とにかく、テンプレートに対する仕組み/ルールはDaoと同じです。

Taoを使ったHTML書き出しのサンプル作ったら、
PHPの部分は、いったん、落ち着くなー。

--
http://suz-lab.blogspot.com/

SAStrutsで日本語のGETパラメータを"Web API"で利用する時の注意点

スズキです。

SAStrutsって問題ではないと思いますが…

日本語のGETパラメータを"Web API"を利用するときの
(GET)パラメーターとして使う場合は、
とりあえず下記のように、URLエンコードしておきましょうって話です。

--------【Java】--------
String encodedText = URLEncoder.encode(
  new String(
    this.text.getBytes("ISO-8859-1"),
    "UTF-8"
  ),
  "UTF-8"
);
--------
※text(フィールド)にGETパラメータ(日本語)が入る前提で

この辺の設定をしておけば、
http://s2container.seasar.org/2.4/ja/garble.html
上記のgetBytesは必要なくなると思います。(未確認…)

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/27/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月26日水曜日

QdmailとQdsmtpを使ったサンプル(PHP)

スズキです。

下記、動いたサンプルです。

--------【PHP】--------
require_once('qdsmtp.php');
require_once('qdmail.php');
$param = array(
   "host" => "localhost",
   "port" => 25,
   "from" => "from@localhost",
   "protocol" => "SMTP"
);
$to = array('to@localhost' , '宛先日本語名' );
$from = array('from@localhost' , '送り元日本語名' );
$subject = 'メールのテスト(テキスト)';
$body = "ここに本文を書きます。";
$option = array('type'=>'text','smtp'=>$param);
$flag = qd_send_mail( $option , $to , $subject , $body , $from);
--------
こちらのサンプルを参考にしています。
http://hal456.net/qdmail/smtp

次は、上記を参考に"suz-php-jquery"の
Mao(Mail Access Object)を作成です。

--
http://suz-lab.blogspot.com/

PHPでメール送信(日本語もふまえて)

スズキです。

まあ、普通はmb_send_mailって話なんでしょうが、
細かい設定とかの融通が難しいので、なんかいいのないかなー、
と探していたら、下記ライブラリを見つけました。

▼Qdmail
http://hal456.net/qdmail/
▼Qdsmtp
http://hal456.net/qdsmtp/

なんか、期待できます。
ということで、早速、実験して
問題なければ"suz-php-jquery"に導入してみます。
(メールテンプレートの仕組みも含めて)

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Tao(Template Access Object)

スズキです。

以前、"suz-php-jquery"でテンプレート(GeryEngine)から
SQLを生成ってのを紹介しました。
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-geryenginesql_13.html

そのテンプレートが、メールテンプレートや、
HTML生成のテンプレートなどでも使いたいってことで、
テンプレートにアクセスする部分を、Tao(Template Access Object)
として切り分けました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Tao.php

なので、DaoもTaoを使うように変更しています。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Dao.php

これで、メールテンプレートの仕組みが作れるぞ。

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/26/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月24日月曜日

利き足でプレーさせない!

スズキです。

いっこうに上達しない、フットサルねたです。

表記、ディフェンスのやり方として、
フットサルスクールで教えてもらったのですが、
そして、その後、3回ほどゲームをやる機会があったのですが、
プレー中、全然意識できていません...
(いつも、終わった後、やばい、忘れてた...って感じです...)

基本的に、左足を前に出して守るって事ですが、
「利き足でプレーさせない!」が本質なので、
今日から、どうすれば、利き足でプレーしづらくなるか、
常に考えてフットサルやるようにします。

もっと、頭、使わないと...

--
http://suz-lab.blogspot.com/

続・jQueryとXML.ObjTree

スズキです。

「jQueryとXML.ObjTree」の記事で、
http://suz-lab.blogspot.com/2008/11/queryxmlobjtree.html
> parseDOMとか使った、もっといい方法もあるかも...
とつぶやいていたのですが、その方法を見つけました!

下記、コードです。

--------【JavaScript】--------
var params = {
  city: "10",
  day : "tomorrow"
}
$.get("../PHP/lwws.php", params, function(xml) {
  var xotree = new XML.ObjTree();
  var tree = xotree.parseDOM(xml.documentElement);
  alert(tree.lwws.title);
});
--------

$.getでは、デフォルトのXMLDocumentでデータを取得(xml)して、
このdocumentElementを、parseDOMの引数にするとうまくいきました。

こちらの方がスマートです。
(ようやく、jQueryとXML.ObjTreeの連携もすっきりしたぞ)

--
http://suz-lab.blogspot.com/

PHPで"Livedoor Weather Web Service"(お天気Webサービス)

スズキです。

"Livedoor Weather Web Service"(お天気Webサービス)を
http://weather.livedoor.com/weather_hacks/webservice.html
PHPで利用する例です。

--------【PHP】--------
<?php
$url = "http://weather.livedoor.com/forecast/webservice/rest/v1";
$params = array(
  "city" => $_GET["city"],
  "day" => $_GET["day"]
);
$encoded_params = array();
foreach($params as $key => $value) {
  $encoded_param = urlencode($key);
  $encoded_param .= "=";
  $encoded_param .= urlencode($value);
  array_push($encoded_params, $encoded_param);
}
$url .= "?" . implode('&', $encoded_params);
$xml = file_get_contents($url);
header("Content-type: text/xml; charset=utf-8");
print($xml);
?>
--------

GETパラメータは連想配列で指定できるようになってます。
下記URLのようにPHPにアクセスすれば、
http://localhost/lwws.php?city=10&day=tomorrow
"Livedoor Weather Web Service"(お天気Webサービス)の
XML情報が表示されます。

あとは、"jQueryとXML.ObjTree"で...
http://suz-lab.blogspot.com/2008/11/queryxmlobjtree.html

--
http://suz-lab.blogspot.com/

2008年11月23日日曜日

jQueryとXML.ObjTree

スズキです。

JavascriptでのXMLのハンドリングは、
今でもやはり、XML.ObjTreeを利用するがBESTだと思っています。
http://suz-lab.blogspot.com/2008/03/xmlobjtreexmljson.html

以前書いた上記エントリでは、HTTP.Requestを使い
parseHTTPで、データの取得&パースをしていましたが、
今回は、jQueryのFormプラグインでも利用したいこともあり、
jQueryのAjax系関数で、XML.ObjTreeをどう使うか?
についていろいろ試してみました。

とりあえず、書きコードでやりたいことは実現できます。

--------【Javascript】--------
var params = {
  city: $("#city").val(),
  day : $("#day").val()
}
$.get("findWeather", params, function(data){
  var xotree = new XML.ObjTree();
  var tree = xotree.parseXML(data);
  alert(tree.lwws.telop);
}, "text");
--------
※livedoorのお天気Webサービスがネタです。
http://weather.livedoor.com/weather_hacks/webservice.html

ポイントは、$.getでの取得するデータタイプを"text"にすることです。
こうすることでテキスト状態のXMLをparseXMLでパースする、
いつものパターンに持っていくことができます。

parseDOMとか使った、もっといい方法もあるかも...

--
http://suz-lab.blogspot.com/

2008年11月22日土曜日

VLC Media Player Portable 0.9.6 Release 2 リリース

スズキです。

こちらも表記の通りです。
http://portableapps.com/news/2008-11-17_-_vlc_media_player_portable_0.9.6_release_2

何にも考えずに、アップデートです。

VLCはもっと、うまく、使っていきたいなー。

--
http://suz-lab.blogspot.com/

WinMerge Portable 2.10.2 リリース

スズキです。

表記の通りです。
http://portableapps.com/news/2008-11-17_-_winmerge_portable_2.10.2

とりあえず、アップデート。

近頃、WinMerge、使ってないなー。

--
http://suz-lab.blogspot.com/

2008年11月21日金曜日

IE(7)だとGoogleのキャッシュのレイアウトがくずれる問題

スズキです。

いろいろあって、表記の問題について、調査してしまいました。

原因は、Googleがキャッシュ表示時に付与する
画面上部に独自メッセージを出力するためのタグです。

下記のようなタグが、htmlタグの上部に付与されます。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<base href="http://suz-lab.blogspot.com/">
...

そう、「htmlタグの上部」です。
こんなところにタグがついても、レイアウトくずれないように、
なんて、全然想定していません!

くずれなかったら、ラッキーくらいの話じゃないでしょうか?

「でも、やっぱり、キャッシュもくずれず見れるようにしたい!」
という場合は、上記のタグがついても、くずれないような、
HTML、CSSを事前に調整しておかなければならない、
ってことになります。

UIからむとうっとおしいなー...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Qao(Queue Access Object)

スズキです。

PHPのStompとActiveMQとS2JMSを使った開発をしています。
http://suz-lab.blogspot.com/2008/10/php-stomp-activemq.html

で、PHPのStompを使っている部分をQao(Queue Access Object)
としてみました。

使い方はこんな感じです。

--------【PHP】--------
require_once "Qao.php";
class ExampleAction {
  public function send() {
    $msg = array(
      "filename" => $_POST["filename"],
      "username" => $_POST["username"],
      "password" => $_POST["password"]
    );
    $qao = new Qao();
    $qao->youtube($msg);
    return 0;
  }
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

ポイントは
$qao->[キューの名前]([キューに入れるメッセージの連想配列]);
です。

あとは、MQのお話です。

MQを使ったシステム間通信は、もっと深めておきたいなー。

--
http://suz-lab.blogspot.com/

S2JCA 1.0.1 リリース

スズキです。

ちょうど、S2JMS使った開発しているので、早速、アップデートです。
http://www.seasar.org/wiki/index.php?SeasarWhatsNew%2F2008-11-21#r1c69c38

> Seasar2.4.18 以降との組み合わせで
> インバウンドコネクションが解放されない問題を修正しました.

ということです。
(このまま使っていたら、危険だったのかなー?)

とりあえず、アップデート後も、無事、同様に動作しています。

自分がやってることに対して、タイムリーなリリースじゃないと、
ブログに書かなくなってしまった...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) 続・json_encodeが使えない場合対応

スズキです。

"json_encodeが使えない場合対応"をしたのですが、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-jsonencode.html
Stomp.php関係でもjson_encodeを使っているようで、
上記の対応では、まだ、json_encodeが使えない環境では、
Stomp.phpが使えません。

他にも、json_encodeを使っている可能性があるので、
もっと汎用的な対応をするように変更しました。

対応方法は、json_encode関数がなかったら、
Services_JSONを使ったjson_encode関数を定義する
といった感じです。

コードは下記のようになります。

--------【PHP】--------
public static function compatible() {
  if(!function_exists("json_encode")) {
    function json_encode($object) {
      require_once("Services/JSON.php");
      $json = new Services_JSON();
      return $json->encode($object);
    }
  }
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Util.php

このcompatibleを実行スクリプトの先頭のほうで実行すれば、
とにかく、json_encodeが使えるようになります。

これで、"suz-php-jquery"にPHP5.2のしばりがなくなったぞ。

--
http://suz-lab.blogspot.com/

"Cent 5.2"でpdo-mysqlが使えるようになるまで

スズキです。

下記のようにyum使って必要なものを入れていきます。
(Apacheはインストール済みを前提)

# yum update
とりあえず既存パッケージをアップデート

# yum install mysql
MySQL本体のインストール

# yum install php
PHP本体のインストール

# yum install php-pdo
PDOモジュールのインストール

# yum install php-mysql
MySQLモジュールのインストール

※php-mysqlをいれると、pdoでもMySQLが使えるようになります。

でも、PHPは5.1なんだよねー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/21/2008


Posted from Diigo. The rest of my favorite links are here.

(suz-php-jquery) json_encodeが使えない場合対応

スズキです。

"suz-php-jquery"はPHP5.2以上の
json_encode関数が使えることを前提としているのですが、
そうじゃない環境でも使わなければならなくなりました。

なので、json.phpを下記のように修正です。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/json.php

--------【PHP】--------
if(function_exists("json_encode")) {
  print(json_encode(Util::invoke()));
} else {
  require_once("Services/JSON.php");
  $json = new Services_JSON();
  print($json->encode(Util::invoke()));
}
--------

function_existsを用いて、json_encodeが存在すれば、それを使い、
存在しなければ、Services_JSONのencodeメソッドを
使うようにしています。
http://pear.php.net/pepr/pepr-proposal-show.php?id=198

ということで、表記を実現するには、下記ファイルの更新が必要となります。

▼json.php
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/json.php

▼Services/JSON.php
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/Services/JSON.php

Tao(Template Access Objecy)もしっかり作ろう。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Tao.php

--
http://suz-lab.blogspot.com/

2008年11月20日木曜日

"Amazon Associates Web Service"の簡単な使い方

スズキです。

いざ使おうと思うと、なぜかすぐに使うための情報がそろえれないので、
"Amazon Associates Web Service"(REST)の
簡単な使い方サンプルをメモしておきます。

http://ecs.amazonaws.jp/onca/xml
?AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX
&Service=AWSECommerceService
&Operation=ItemSearch
&SearchIndex=Books
&Keywords=jQuery

[Access Key ID]はこちらから取得
https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key

なんでも、30分で解決したい…

--
http://suz-lab.blogspot.com/

2008年11月19日水曜日

自ゴール付近は100%、真ん中付近は50%、敵ゴール付近は20%の精度

スズキです。

フットサルネタです。
フットサルスクールで教わったことです。

表記の通り、自ゴール付近では、
ボールがとられたら、即失点につながるので、
1%でもリスクを感じるプレイはやめましょう、

逆に、敵ゴール付近は、ハイリスク、ハイリターンなプレイを
やってもいいです、

といった内容です。

ま、敵ゴール付近は相手が100%の精度でプレイするから、
自分も100%の精度でプレイしたら、何も進展しないわけで...

で、これは仕事でも当てはまることだと思っています。
どの場面でも、同じ精度(100%とは限らない)でやる必要はなく、
場面、場面で変えてもいいんじゃないか、と思っています。

ただ、重要なのは、どの場面で、どの精度を出すかを、
ちゃんと把握しておかないといけないってことでしょうか。

このことは、たぶん、今まで、無意識で
なんとなくやっていたことだとは思いますが、
無意識で精度を変えるのは、結構危険だと思うので、
今後、意識だけでもしていこうと思います。

とりあえず、今週、自分自身をたてなおそう...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/19/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月18日火曜日

今日のブックマーク 11/18/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月17日月曜日

"jqUploaderとShadowboxの相性"問題解決!

スズキです。

隣で、"EMP WORDS"が表記の件で困っていました。
http://blog.emp.fem.jp/?eid=1100249

なので、HELPしました。

原因は"Shadowbox.init"を実行すると、
そのときに生成されたタグが、画面全体を覆う形(透明)になり、
その下のFlash(jqUploader)がFireFox2.0では消えてしまう
って話でした。

解決方法は、embedタグのwmodeの属性値の調整となります。
http://dev.ekndesign.com/2008/02/08/html%E3%81%B8swf%E3%82%92embed%E3%81%99%E3%82%8B%E6%99%82%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF-wmode%E3%81%A3%E3%81%A6%EF%BC%9F/

このwmodeの属性値を"opaque"を指定することで
無事、Shadowbox利用時でも、jqUploaderが表示するようになります。


で、wmodeの属性値を"opaque"に、どのタイミングで行うか?
という話になりますが、結局、jquploader.jsを修正することにしました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/ext/jquploader.js

"jQuery(this).flash"のパラメータ設定のところで、
wmode:'opaque'を追加しています。

Flashとの絡みは、要注意だなー。

--
http://suz-lab.blogspot.com/

並び順には意味を持たせる

スズキです。

昔、マッキンゼーの人とお仕事させてもらったときに、
よく、並び順には常に意味を持たせなさい、
と教えられ(怒られ)てました...

箇条書きするにしても、上から順に、
何かしらのルールに沿った形で並べなさい、
ということです。

この考え方は、プログラミングでも、使えるなーと思い、
近頃、意識するようにしています。

たとえば、FlickrにPHPで接続するときに、
http://www.flickr.com/services/api/response.php.html
下記のようにパラーメータを作るのですが、

---------【PHP】--------
$params = array(
'format' => 'php_serial',
'api_key' => '00000000000000000000000000000000',
'method' => 'flickr.photos.search',
'per_page' => 25,
'text' => $_GET["keyword"],
'page' => $_GET["page"]
);
--------

この上記、連想配列のkey-valueの並び順も、
実は意味を持たせた形にしています。

どんな意味かというと、「値が変更されない順」です。

これ以外のメソッド定義の並び順なども、
逐次意識していければ、と思っています。

マッキンゼー式プログラミング?
(俺、マッキンゼーまったく関係ないけど...)

--
http://suz-lab.blogspot.com/

try {...} catch(Exception e) {} 厳禁!

スズキです。

下記コードは、恐ろしいコードです。

--------【Java】--------
try {
  ...
} catch(Exception e) {
}
--------

こうしておくと、幸せにになる人が増えるでしょう。

--------【Java】--------
try {
  ...
} catch(Exception e) {
  e.printStackTrace();
}
--------

人の振り見て我が振り直せ...

--
http://suz-lab.blogspot.com/

2008年11月16日日曜日

今日のブックマーク 11/16/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月15日土曜日

HTMLのタイトルをJavaScriptで変更

スズキです。

ブラウザの左上などに表示しているHTMLのタイトルを
JavaScriptで変更する方法です。

といっても、たいしたことなくて、

document.title = "テスト";

で簡単に変更されます。

ただ、titleタグの中身は変更されないようなので、
そちらも変更したい場合は、

$("title").text("テスト")

も必要になります。(あまり必要ないと思いますが...)

明日は、"suz-env-server"復活祭だ!
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-env-server

--
http://suz-lab.blogspot.com/

(suz-php-jquery) rss.phpでRSSの簡単出力

スズキです。

RSSを簡単に出力させる仕組みを用意しました。
rss.phpです。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/rss.php

中ではXML_Serializer使ってます。なので、
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/XML
以下の一式も必要になります。

具体的には、
PHP/rss.php/Example/getNews
とアクセスすると、

--------【Java】--------
class ExampleAction {
  public function getNews() {
    $data = array(
      'channel' => array(
        'title' => 'サンプルRSS',
        'link' => 'http://localhost/',
        'description' => 'XML_Serializerのサンプル',
        'language' => 'ja-jp',
        'pubDate' => date("r"),
        array(
          'title' => 'タイトル1',
          'link' => 'http://localhost/1/',
          'pubDate' => date("r"),
          'description' => 'サンプル1'
        ),
        array(
          'title' => 'タイトル2',
          'link' => 'http://localhost/2/',
          'pubDate' => date("r"),
          'description' => 'サンプル2'
        )
      )
    );
    return $data;
  }
}
--------
下記のサンプルを流用。
http://webtech-walker.com/archive/2007/04/06023523.html

が実行されて、上記に応じたフィードXMLが出力されます。

次は、メールをやろう。

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/15/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月14日金曜日

AS3でJSONデータの取得とオブジェクト化

スズキです。

今日は(も!?)いろいろやってます。AS3です。

表記を実現するためには下記が非常に参考になります。
http://1ka2ka.com/archives/200808/19_135907.html
JSONの扱いはas3corelibを使っています。
http://code.google.com/p/as3corelib/

で以前のサンプルをもとに、この実装も加えてみました。
http://suz-lab.blogspot.com/2008/11/as3swf.html

--------【ActionScript3】--------
package {
  import flash.display.MovieClip;
  import flash.events.Event;
  import flash.net.URLRequest;
  import flash.net.URLLoader;
  import flash.text.TextField;
  import com.adobe.serialization.json.JSON;
  public class Document extends MovieClip{
    public var text:TextField;
    public function Document(){
      var request = new URLRequest("http://localhost/json.txt");
      var loader:URLLoader = new URLLoader(request);
      loader.load(request);
      loader.addEventListener(Event.COMPLETE, onComplete);
      function onComplete(event:Event) {
        var json:Object = JSON.decode(loader.data);
        var url:String = loaderInfo.url;
        var token:Array = url.split("\\");
        var file:String = token[token.length - 1];
        text.text = file.split(".")[0] + json.key1;
      }
    }
  }
}
--------

JSONデータをとりあえずこんな感じです。{"key1": " test"}

で、画面に、「ファイル名 test」と表示されるようになりました。
("test"は"json.key1"で取得しています)

これで、Flash系は一安心...

--
http://suz-lab.blogspot.com/

Windowsのバッチファイルでコマンドを途中で改行するには?

スズキです。

なんか、今日はWindowsの些細なことで苦しんでいます。

今度はバッチファイル中のコマンドを途中で改行する方法です。
答えは、下記に書かれています。
http://www.k-tanaka.net/windows/cmd/post_14.html

つまり

> コマンドが長くなり、途中で改行したい時は
> 「^(キャレット)」を打ちます。

ということです。

Java実行するときに、クラスパスの指定が例のごとく
横に長くなてしまうので、ってことで調べたのですが、
このおかげで下記のようにバッチファイルがすっきりしました。
--------【バッチ】--------
java -classpath ^
C:\suz-lab\sbin\s2jms\lib\gdata-client-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-client-meta-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-core-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-media-1.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-youtube-2.0.jar;^
C:\suz-lab\sbin\s2jms\lib\gdata-youtube-meta-2.0.jar;^
C:\suz-lab\sbin\s2jms\lib\mail.jar;^
suz-lab.UploadYouTubeMain %1 %2 %3
--------

「^」ってキャレットって言うんだ...

--
http://suz-lab.blogspot.com/

Windowsのバッチファイル(bat)をJavaから実行

スズキです。

非常に有名な話ですが、たまにしか扱わないので、
そして、いつも忘れているので、自分メモです。

--------【Java】--------
public static void main(String[] args) {
  try {
    Runtime.getRuntime().exec("C:\\hoge\\Hoge.bat " + args[0]);
  } catch(IOException e){
    e.printStackTrace();
  }
}
--------

同期関係もいろいろ試しましたが、想定どおりの挙動をしてくれません...
バッチファイルの中で実行しているコマンドの問題かな...

Windowsの話になると、あいかわらずダメダメだなー...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/14/2008


Posted from Diigo. The rest of my favorite links are here.

(suz-php-jquery) キーワードをリンクにする

スズキです。

任意の文章の中にあるキーワードをリンクにする方法です。

とりあえず、"suz-php-jquery"では
Stringオブジェクトのメソッド"linkKeywords"として用意しました。
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/lib/prototype.js

使い方はこんな感じです。

--------【JavaScript】--------
var keywords = [
  {"keyword": "鈴木", "url": "http://www.yahoo.com"},
  {"keyword": "佐藤", "url": "http://www.google.com"}
];
var text = "鈴木ああああああ鈴木いいいいい佐藤ううううう鈴木";
alert(text.linkKeywords(keywords));
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/app/example/link_keywords.js

上記は、

【Before】
鈴木ああああああ鈴木いいいいい佐藤ううううう鈴木

【After】
<a href='http://www.yahoo.com'>鈴木</a>ああああああ<a
href='http://www.yahoo.com'>鈴木</a>いいいいい<a
href='http://www.google.com'>佐藤</a>ううううう<a
href='http://www.yahoo.com'>鈴木</a>

といった感じに変換します。

20代だったころの集中力を取り戻さなきゃ...

--
http://suz-lab.blogspot.com/

2008年11月13日木曜日

(suz-php-jquery) GeryEngineで動的に生成すべきSQLに対応

スズキです。

ついにSQLの条件などを動的に組む必要性に迫られました。

今のDaoの仕組みを拡張する形で実現したいので、
どうしたら、いい感じになるかなー、といろいろ考えていたのですが、
結局、GeryEngineというVelocityクローンの
テンプレートエンジンを用いて、
http://geryengine.instant-publishing.nl/
動的にSQLを組み立てれるようにしました。

ということで、この機能を使うには、
下記ファイル群を追加・更新する必要があります。

▼Dao.php : データベース・アクセス・オブジェクト
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Dao.php
▼GeryEngine : テンプレート・エンジン
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/GeryEngine

使い方はこんな感じです。

--------【PHP】--------
require_once "Dao.php";
class ExampleAction {
public function select() {
$context = array(
"flag" => false
);
$dao = new Dao();
return $dao->selectHogeList(null, 3, 0, $context);
}
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

Daoのメソッドの第4引数にコンテキストを指定すると、
下記のようなselectHogeList.vmからSQLが生成されます。

--------【VM】--------
SELECT *
FROM AREA_MST
#if($flag)
WHERE AREA_ID = 3
#end
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/sql/app/example/selectHogeList.vm

ということで、このあとはVelocityの話ということになります。
http://velocity.apache.org/engine/devel/user-guide.html

#(半角)endでブログの文章が切れるぞ!?

--
http://suz-lab.blogspot.com/

(suz-php-jquery) 検索エンジン・アクセス・オブジェクト(SAO)

スズキです。

ようやく、検索エンジン(Hyper Estraier)を
PHPから扱う仕組みができました。

必要なものは
▼SaoDefine.php: 定数定義
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Define/SaoDefine.php
▼Sao.php: 検索エンジン・アクセス・オブジェクト
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Sao.php
▼HyperEstraier*: 外部ライブラリ
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/Services/HyperEstraier.php
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/Services/HyperEstraier
▼ErrorStack.php: 外部ライブラリ
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/ext/PEAR/ErrorStack.php
となります。

サンプルコード(Action)はこんな感じです。
--------【PHP】--------
<?php
require_once "Dao.php";
class ExampleAction {
  public function search() {
    $sao = new Sao();
    return $sao->child("jQuery", 20, 0);
  }
}
?>
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

$sao->ノード名(キーワード, リミット、オフセット)
といった具合に使います。

上記の戻り値は下記(JSON形式の場合)となります。
[
  {
    "uri": "ページのURIです。",
    "title": "ページのタイトルです。",
    "snippet": "本文の一部です。"
  },
  ...
]

あとは、jQueryでいい感じに処理して下さい。

次は、動的SQLだ。

--
http://suz-lab.blogspot.com/

"commons-httpclient-3.1.jar"には"commons-codec-1.3.jar"が必要

スズキです。

"commons-httpclient-3.1.jar"を使うとき
http://hc.apache.org/httpclient-3.x/
"commons-codec-1.3.jar"がないと、
http://commons.apache.org/codec/
下記のようなエラーになります。

java.lang.NoClassDefFoundError:
org/apache/commons/codec/DecoderException

ちなみに、"commons-httpclient-3.1.jar"を使った
サンプルコードです。

-------【Java】-------
String url = "http://suz-lab.blogspot.com/";
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
client.executeMethod(method);
String body = method.getResponseBodyAsString();
-------

今、HttpClient、ダウンロードできないっぽい…
http://hc.apache.org/downloads.cgi

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/13/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月12日水曜日

Services_HyperEstraier(PHP)を使うにはPEAR_ErrorStackが必要

スズキです。

全文検索エンジンの"Hyper Estraier"を
http://hyperestraier.sourceforge.net/index.ja.html
PHPから利用しようとして、Services_HyperEstraierを
http://page2.xrea.jp/#Services_HyperEstraier
導入したのですが、サンプルを実行すると、
PEAR_ErrorStackがない!って怒られてしまいました。

PEARに依存しているようです。
"suz-php-jquery"はPEARに依存するつもりはなかったのですが、
仕方ないので、下記よりダウンロードして、
http://pear.php.net/package/PEAR/download
PEAR/ErrorStack.phpのみプロジェクトに導入しました。

これで、問題なくサンプルが動きます!

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/12/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月11日火曜日

(suz-php-jquery) 標準JavaScriptライブラリ

スズキです。

現状、"suz-php-jquery"で標準的に組み込んでいる
JavaScriptライブラリ群です(一言コメントつき)
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/webapp/JS/ext

▼jQuery
http://jquery.com/
言わずと知れた、基本ライブラリです。

▼jQuery Form Plugin
http://www.malsup.com/jquery/form/
フォームからのデータ送信を非同期通信?にしてくれます。

▼jQuery plugin: Validation
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
フォームの入力に対してバリデーションしてくれます。

▼jqUploader
http://www.pixeline.be/experiments/jqUploader/
Flashを用いたファイルアップローダーです。

▼jTemplates
http://jtemplates.tpython.com/
JavaScriptのテンプレートエンジンです。

▼DateFormatter.js
http://clonedoppelganger.net/javascript/DateFormatter.html
日付フォーマッター(PHPのdate関数のフォーマットパターン)です。

▼Shadowbox.js
http://www.mjijackson.com/shadowbox/
コンテンツをダイアログボックス風に表示できます。

まだ、jTemplatesが微妙かも...

--
http://suz-lab.blogspot.com/

VLC Media Player Portable 0.9.6 リリース

スズキです。

表記の通りです。
http://portableapps.com/news/2008-11-09_-_vlc_media_player_portable_0.9.6

これで、「アップデートするか?」ってうるさいのが解消です。

--
http://suz-lab.blogspot.com/

"PHP & MySQL"の文字化け問題

スズキです。

"物欲の罅"がインストールしたLinux&PHP&MySQLの環境で
http://butsuyoku360.blog18.fc2.com/
また、文字化け問題がおこり、HELPしました。

今回は、MySQL、PHP、共にUTF-8にそろえていたのですが、
文字化けです...

まずは設定ファイル(my.cnf)の調整をしようとしたら、ありません。
tarballからのデフォルトインストールのままのようです。

そういう場合はDATAフォルダ(/usr/local/var/)に
my.cnfを置けばいいはずなのですが、MySQLを実行すると、
下記のような警告が発生してしまいました。

# WARNING: Found /usr/local/var/my.cnf
Datadir is deprecated place for my.cnf, please move it to /usr/local

今の時代、my.cnfは"/usr/local/"に置くようです。

で、上記を実施し、記述を適当に調整したのですが、
結果として、下記のような設定で文字化けが解消されました。

--------【my.cnf】--------
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake

[mysql]
default-character-set = utf8
--------

定期的に文字化け問題が勃発する...

--
http://suz-lab.blogspot.com/

Webアプリケーションでプロジェクトを分ける基準

スズキです。

ブランクプロジェクトの用意は結構、僕がすることが多いのですが、
そのときの、
一つのプロジェクトで開発するのか?複数のプロジェクトに分けるのか?
は、いつも考えてしまう問題となっています。

たとえば、ユーザー側の機能と管理側の機能を用意するときに、
一つのプロジェクト(Javaの場合はデプロイする単位)で
両方作成するのか?ユーザー側と管理側でプロジェクトを分けるのか?
いつも、考えてしまいます。

上記の場合、今までは慣例的にユーザー側と管理側で
プロジェクトを分けていたのですが、ここは慣例的にしたくないので、
下記のように、ルールを決めました。

「利用する人の層が異なる場合はプロジェクトを分ける」

ユーザー機能と管理機能は、利用する人が違うので、
トラフィックの性質も当然異なり、場合によっては、
サーバを分ける必要性も考えてのルールです。

当然、プロジェクトが複数になれば、
commonプロジェクト的なものも必要になってくるでしょう。

ちょっとすっきりした。

--
http://suz-lab.blogspot.com/

2008年11月10日月曜日

(suz-php-jquery) Ver 0.0.3 に向けて

スズキです。

"Ver 0.0.2"に関しては、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-ver-002.html
結局、下記のみ実装してリリース(!?)しました。

▼selectXxxListの引数でLimit/Offsetを指定可能に
$dao->selectHogeList($param, 10, 10)
▼selectXxxListの件数をcountXxxListで取得できるように
$dao->countHogeList()

で、そろそろ、次のプロジェクトで使うので、
"Ver 0.0.3"にして使ってもらおうと思っています。

下記は、0.0.3で実装予定の機能です。

【必須/0.0.2での未実装部分】
▼"Hyper Estraier"を用いた前文検索I/F
下記を利用する予定。
http://page2.xrea.jp/#Services_HyperEstraier
▼SQLで動的な条件文などを作成する仕組み
以前紹介した、Velocityライクなテンプレートエンジンで、
SQLを動的生成する仕組みで対応予定。
http://suz-lab.blogspot.com/2007/10/velocityphpgeryengine.html

【必須/リファクタリング】
よく考えたら、SELECT結果の件数はPDOで取れそうなので、
selectXxxList/Itemでの判別はなくしたい。
(selectXxxのみということで)

【0.0.2から0.0.4へ先送り…】
▼もっとログをわかりやすく。
FireBugにログ出力する形かなー?
▼jTemplatesの利用
これは、標準プラグインにしちゃいますか!

【0.0.4で実装したいもの】
▼セキュリティ関係
-PHPセッションを利用したアクセス制限
-ログイン機能

0.0.3に関しては、今週前半に実装する予定です。

--
http://suz-lab.blogspot.com/

CSSでタイル状に並べた行ごとの隙間を埋める

スズキです。

今までずっと、ほったらかしにしておいたのですが、
"MEMO 4 ME"に教えてもらいました。
http://memo4me.seesaa.net/

YUIのreset.cssをかけて、下記のようなHTMLで画像を並べると、

--------【HTML】--------
<div id="photo">
  <img src="..."/>
  <img src="..."/>
  ...
</div>
--------

列の隙間なく、ぴっちり隣同士がくっついているのですが、
行の隙間が、Firefoxで少し出てしまい、気持ち悪いなー
といった状態になります。(IEではOKです)

で、どうすれば回避できるかというと、下記のようにCSSにて、
imgタグに対し"vertical-align: top;"を指定します。

--------【HTML】--------
#photo img {
vertical-align: top;
}
--------

"suz-php-jquery"にも反映させておくか。

--
http://suz-lab.blogspot.com/

AS3で自分(swf)のパスを取得するには?

スズキです。

こちら同様、
http://suz-lab.blogspot.com/2008/11/as3get.html
この手の情報もloaderInfoから取得できます。
URLの場合は、loaderInfo.url、となります。

具体的には、下記コードです。
(拡張子を除いたファイル名を取得しています)

--------【AS3】--------
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class Document extends MovieClip{
    public var text:TextField;
    public function Document(){
      var url:String = loaderInfo.url;
      var token:Array = url.split("\\");
      var file:String = token[token.length - 1];
      text.text = file.split(".")[0];
    }
  }
}
--------
※"text"はfla上のインスタンス名"text"の
ダイナミックテキストと対応しています。
※フォルダの区切り文字は"\"を想定しています。

ローカル実行でのサーバとの通信部分も、
もう一度確認しておくか…

--
http://suz-lab.blogspot.com/

AS3でGETパラメータを扱うには?

スズキです。

この手の情報は、loaderInfoから取得できます。
GETパラメータの場合は、
loaderInfo.parameters
となります。
(参考) http://hato-style.chu.jp/note/note_20080915.html

具体的には、下記コードとなります。

--------【AS3】--------
package {
  import flash.display.MovieClip;
  import flash.text.TextField;
  public class Document extends MovieClip{
    public var text:TextField;
    public function Document(){
      var params:Object = loaderInfo.parameters;
      var param:String = params["param"];
      if(param != null) {
        text.text = param;
      }
    }
  }
}
--------
※"text"はfla上のインスタンス名"text"の
ダイナミックテキストと対応しています。

でも、結局、使わなかった…

--
http://suz-lab.blogspot.com/

久しぶりのドキュメントクラス(AS3)

スズキです。

久しぶりに、FlashCS3引っ張りだして、
ドキュメントクラス作りました。

昔いろいろやったなー、と思い、
"suz ドキュメントクラス"でググると、
その手の記事、多少、書いてました。

▼ドキュメントクラスでAS3の外部ファイル化
http://suz-lab.blogspot.com/2008/02/as3.html
▼ドキュメントクラスのフィールドがコンフリクトしてしまう
http://suz-lab.blogspot.com/2008/04/blog-post_30.html

んー、あまり思い出せないなー...

とりあえず、サンプルコードです。
今回は、MovieClipを継承したものにしています。
(以前のサンプルはSpriteを継承)

--------【AS3】--------
package {
  import flash.display.MovieClip;
  public class Document extends MovieClip{
    public function Document(){
      trace("Hello,World!!");
    }
  }
}
--------

思い出すのに、少し時間がかかってしまった...

--
http://suz-lab.blogspot.com/

Amazonインスタントストアに「読書」カテゴリを追加

スズキです。

Amazonインスタントストアの「自己啓発」カテゴリ
http://astore.amazon.co.jp/iretsuzusblog-22?node=39
があふれた(9冊になった)ので、「読書」カテゴリ
http://astore.amazon.co.jp/iretsuzusblog-22?node=40
を新規作成し、該当する書籍を移動させました。

なんか、自己啓発本に偏りすぎてる...
もっと、IT技術書も増やさないと...

--
http://suz-lab.blogspot.com/

(書評) 勝間和代のビジネス頭を創る7つのフレームワーク力 ビジネス思考法の基本と実践

スズキです。

今回はタイトルが長いですが、
「勝間和代のビジネス頭を創る7つのフレームワーク力 ビジネス思考法の基本と実践」
http://astore.amazon.co.jp/iretsuzusblog-22/detail/4887596391
です。

まずは目次です。
--------
【1. 「ビジネス思考力」を定義する!】
【2. ビジネス思考の基礎となる7+1の力】
【3. 一つめの力 論理思考力】
【4. 二つめの力 水平思考力】
【5. 三つめの力 視覚化力】
【6. 四つめの力 数字力】
【7. 五つめの力 言語力】
【8. 六つめの力 知的体力】
【9. 七つめの力 偶然力】
--------
目次の詳細はこちら(ほとんど一緒)
http://www.amazon.co.jp/gp/product/toc/4887596391?tag=iretsuzusblog-22

僕はマッキンゼーの方と一緒に仕事をした経験があり、
マッキンゼー出身者の言動には、いつも興味をもっています。
勝間さんもマッキンゼー出身の方ということで、本書の内容も、
昔のマッキンゼーの方と仕事をした体験と照らし合わせて
読み進めることができました。

まずは、昔の体験を彷彿させたフレーズです。

・ 限られた情報と限られた時間の中で
・ 拙速は避けるべきですが、鈍足はもっと避けるべきです

んー、よく怒られました...

次は自分メモも兼ねて、紹介されているフレームワークです。

01. 空・雨・傘
02. 戦略の3C
03. マーケティングの4P
04. 5W+1H
05. PDCAサイクル
06. 採用者分布曲線
07. 製品進化のトライアングル
08. CTQ
09. 戦略キャンバス
10. 事業の優先順位づけマトリクス
11. バリューチェーン
12. 所得金額階級別世帯数の相対度数分布
13. 人口分布曲線
14. Will-Skillマトリクス
15. SWOTlマトリクス
16. 影響要因
17. 組織の7S
18. 緊急度と重要度のマトリックス
19. PPM分析
20. VRIO分析
21. 水平思考の6つの帽子

まだまだ、引き出しが少ないことを、実感させられました...

また、今後の自分に対して
「水平思考力(ラテラル・シンキング)」
の必要性はひしひしと感じています。
(ロジカル・シンキングの次として)

【水平思考力(ラテラル・シンキング)】
> 直感や想像、新しいものの組み合わせなどから
> 解の仮説をイメージする方法です。

ロジカル、ラテラルの両方をバランスよくってのが
次の目指すべきところでしょうか?

また、本書を読むことで、自己啓発の具体的な次のステップも
ある程度固まりました。

1. マインドマップの研究と実践
2. フォト・リーディングの受講
3. ジーニアス・コードの受講

上記、年内に片付けることが当面の目標です。(時間がとれるか?)

最後に、身体についても書かれているので、
そこから、実践することにしたことの紹介です。

それは、「禁アルコール、禁カフェイン、禁ニコチン」です。

現状、ほとんど上記の状態ですが、これを機に、徹底しようと思います。

といった具合に、本書はタイトルに対して、
紹介しきれないほどの非常に多くの内容が書かれいます。

いろいろと実践して、もう一度、読み返してと、
自分のチェックに利用できる一冊ではないかと思います。

あー、日付が変わってしまった...

--
http://suz-lab.blogspot.com/

2008年11月9日日曜日

今日のブックマーク 11/09/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月8日土曜日

近頃のAmazonインスタントストアの使い方

スズキです。

近頃は、書評した本の管理ツールとして使っています。
http://astore.amazon.co.jp/iretsuzusblog-22

トップカテゴリの「書評」には、これから書評するつもりの書籍を
置いています。

その下のカテゴリはジャンルごとに書評したものをまとめるようにしています。

で、「うれしい点」と「うれしくない点」です。

【うれしい点】
・紹介料の対象となる(でも、いまのところ意味ナシ...)
・カテゴリごとの類似商品が、今後、読みたい本の材料になる
・書籍の追加が簡単
・コメントが入れられる
・ブログパーツが用意されている

【うれしくない点】
・コメントにリンクが使えない(ブログの書評へリンクしたい)
・ブログパーツで紹介される対象書籍が微妙(トップカテゴリのみ)
・登録したら、勝手に時系列(降)順になって欲しい

といったところです。

「読書メーター」も考えましたが、
http://book.akahoshitakuya.com/
紹介料の対象にならないので、とりあえず見送っています。

んー、"Google App Engine"で自分で作るってのもありかなー!?
http://code.google.com/intl/ja/appengine/

--
http://suz-lab.blogspot.com/

2008年11月7日金曜日

(suz-php-jquery) "webapp/TMP"フォルダの追加

スズキです。

"suz-php-jquery"の標準フォルダ構成に一時的でかつ、
ブラウザから閲覧できるファイルを格納するためのフォルダとして
"webapp/TMP"を追加しました。
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/webapp/TMP

用途の一例として、jqUploaderでアップロードしたファイルは、
とりあえず、"webapp/TMP/upload"にアップロードされるようにしています。
(その後、任意のタイミングで、ふさわしいフォルダに移動させます)

まだ、"webapp/TMP/upload"しかありませんが、そのうち、
"webapp/TMP/cache"みたいなフォルダも必要になるかも知れません。

文字化け問題なおさないと...

--
http://suz-lab.blogspot.com/

2008年11月6日木曜日

"jQuery Validate プラグイン"と"jQuery Form プラグイン"のあわせ技

スズキです。

表記のプラグイン、別々には紹介していたのですが、
基本的にあわせ技で使うことが多いはずなので、
サンプルコードをメモしておきます。

▼jQuery Validate プラグイン
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
▼jQuery Form プラグイン
http://www.malsup.com/jquery/form/

まずはHTMLですが、必要なJavaScriptを読み込んで、
formを作る形になります。(nameの設定を忘れないように)
--------【HTML】--------
<head>
  <script type="text/javascript"
      src="JS/ext/jquery.js"></script>
  <script type="text/javascript"
      src="JS/ext/validate.js"></script>
  <script type="text/javascript"
      src="JS/ext/messages_ja.js"></script>
  <script type="text/javascript"
      src="JS/ext/form.js"></script>
  <script type="text/javascript"
      src="JS/app/validate-form.js"></script>
</head>
<body>
  <div id="form">
    <form>
      <dl>
        <dt>タイトル</dt>
        <dd>
          <input type="text" name="title"/>
        </dd>
        <dt>URL</dt>
        <dd>
          <input type="text" name="url"/>
        </dd>
          <dt>コメント</dt>
        <dd>
          <textarea name="comment"></textarea>
        </dd>
      </dl>
      <div class="control">
        <input type="submit" value="追加"/>
        <input type="reset" value="リセット"/>
      </div>
    </form>
  </div>
</body>
--------

上記のHTML(form)に対して、下記JavaScriptを適用させます。
--------【Javascript】--------
// validateの設定
var param = {
  rules: {
    title: {
      required: true
    },
    url: {
      required: true,
      url: true
    },
    comment: {
      required: true
    }
  },
  submitHandler: function(form){
    // formの設定
    var option = {
      url: "PHP/app/validate-form.php",
      type: "GET",
      dataType: "json",
      success: function(json, status) {
        alert(json);
      }
    };
    $(form).ajaxSubmit(option);
  }
};
$("#form form").validate(param);
--------

基本的に、Validateプラグインのやり方がベースになり、
Formプラグインに関しては、Validateプラグインのパラメータの
submitHandlerで設定する形になります。

submitHandlerはSubmitボタンが押されたときに実行される
処理を書くのですが、引数にformの内容が入ったものが
与えられるので、それに対してFormプラグインの
ajaxSubmitメソッドを実行させることになります。

ajaxSubmitメソッドの引数には、ajaxFormと同じパラメータを
設定することができます。

この組み合わせ、強力すぎです。

--
http://suz-lab.blogspot.com/

日報について

スズキです。

「弾言」読んで、日報を書き始めたのですが、
http://suz-lab.blogspot.com/2008/09/blog-post_26.html
近頃、いろいろあって(というか忙しくて)書かなくなっていたので、
自戒の意味もこめて、僕なりにまとめておきます。

まず、目的ですが、優先順位の高い順に並べると、
以下のようになります。

1. 自分の日々の業務の分析とその改善に利用
2. 報告能力の向上
3. 他者(会社の人)に自分の状況(状態)を知ってもらう

まあ、とりあえず、「会社のため」って言うよりは、
「自分のため」って感じで書いています。

次に、フォーマットですが、下記のようにしています。

メールで報告しているので、タイトルは下記のようにしています。
【日報】2008/10/23【iretsuzuki】

そして、本文の最初に、次のようなに実績を時系列で並べています。
【今日の実績】
========================================
▼10:00-12:00 (suz-php-jquery) Dao.phpの改善
----------------------------------------------------------------------
【90%】
countXxxListでselectXxxListのレコード数を
取得できるようにする。
【問題点】
プログラミングする時間があまり取れず、
進捗が悪い(遅れている)
【解決策】
最優先事項なので、他の仕事を調整して、
プログラミングする時間が増えるようにする。
========================================
...
========================================

まあ、
========================================
▼時間 (カテゴリ) サマリー
----------------------------------------------------------------------
【進捗率】
内容
【問題点】
問題点
【解決策】
解決策
========================================
といった内容を、書いています。

で、最後に下記のように、明日の予定を書きます。
【明日の予定】
========================================
1. (suz-php-jquery) Dao.phpの改善 [100% - 1時間]
2. (suz-lab) 新規案件打ち合わせ [100% - 2時間]
========================================

これは、
========================================
優先順位. (カテゴリ) サマリー [予定進捗率 - 予定作業時間]
========================================
としています。

これらを、その日のうち(24:00まで)に提出するように
しているのですが、これが「なあなあ」になってます…

今日から、厳守で。

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/06/2008


Posted from Diigo. The rest of my favorite links are here.

Vistaで名前ベースのバーチャルホスト(Apache)のテスト

スズキです。

名前ベースのバーチャルホストは、Webサーバ(Apache)が
同じIPアドレスへのリクエストに対し、クライアントが送る
Hostヘッダ(ホスト名.ドメイン名)の内容で、コンテンツ
(ドキュメントルート)を切り替えることを可能とする機能です。

ブラウザが送るHostヘッダの内容は、基本的にアドレスバーに
入力されたホスト名.ドメイン名となるので、DNSにもそれ相応の
設定が必要となります。

ここでのお話は、Webサーバ(Apache)の設定は終了しているが、
DNSの設定が終わっておらず、普通にブラウザから
ホスト名.ドメイン名でアクセスしても、設定が終了している
Webサーバ(Apache)にリクエストが届かない状況についての
ものです。

このような状況は、たとえば、あるホスト名.ドメイン名に対応する
IPアドレス(Webサーバ)を移行するときの準備段階などで
起こります。

ですので、名前ベースのバーチャルホストの設定が正常に
機能しているかどうかは、DNSの設定が終了していなければ、
終了している状態をエミュレートする必要があります。

Windowsでよく利用される(と思う)手段としては、hostsファイルの
書き換えがあります。hostsファイルは、Vistaでは
C:\Windows\System32\drivers\etc\
にあり、下記のような内容となっています。
--------
127.0.0.1 localhost
::1 localhost
--------

hostsファイルはホスト名.ドメイン名とIPアドレスをマッピングさせる
ファイルで、同じ機能をもつDNSの結果より優先されます。なので、
旧: hoge.com - 192.168.1.10 (現在の設定)
新: hoge.com - 192.168.2.20 (192.168.1.10)
の場合、hoge.comでリクエストをしても、192.168.1.10のサーバに
リクエストが届き、名前ベースのバーチャルホストの確認が
できませんが、下記のようにhostsファイルを編集することにより、
--------
127.0.0.1 localhost
::1 localhost
192.168.2.20 hoge.com
--------
hoge.comのリクエストが、192.168.2.20に向かうことになり、
名前ベースのバーチャルホストの確認ができるようになります。

ここで、Vistaの場合、セキュリティの問題で、一筋縄ではいきません。
対策は、下記に詳しく紹介されています。
http://support.microsoft.com/kb/923947/ja

また、念のためコマンドプロンプトにて
# ipconfig /flushdns
と打ちDNSキャッシュのクリアもしておいたほうがいいでしょう。

書きたかったことは最後の部分なんだけど、長文になってしまった...

--
http://suz-lab.blogspot.com/

2008年11月5日水曜日

今日のブックマーク 11/05/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月4日火曜日

(suz-php-jquery) Dao.phpのアップデート

スズキです。

以前書いた"Ver 0.0.2"に向けての実装要件で、
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-ver-002.html
下記のDao.phpに関係あるところを実装しました。

> ▼selectXxxListの引数でLimit/Offsetを指定可能に
> $dao->selectHogeList($param, 10, 10)

第二引数、第三引数でLIMIT(第二)、OFFSET(第三)を
設定できるようにしました。パラメータがセットされている場合は、
自動的に、LIMIT/OFFSET文が追記されるようになっています。

> ▼selectXxxListの件数をcountXxxListで取得できるように
> $dao->countHogeList()

上記の通りで、戻り値は件数の整数値となります。
当然、selectXxxList.sqlが予め無いと機能しません。

動的なSQLの作成は、テンプレートエンジンを使う方向で。

--
http://suz-lab.blogspot.com/

"Hyper Estraier"のインストール(UPDATE!)

スズキです。

久しぶりに、案件に全文検索の機能が必要となり、
以前利用した、"Hyper Estraier"をインストールしました。
http://suz-lab.blogspot.com/2007/10/hyper-estraier_30.html

今回も、やはり、libiconv、qdbmを予め
インストールしておく必要があります。

以前にくらべ、バージョンも下記のように上がっています。
libiconv: 1.11 ⇒ 1.12
qdbm: 1.8.75 ⇒ 1.8.77
hyperestraier: 1.4.10 ⇒ 1.4.13

で、実際のインストール作業は下記のようになります。
今回は、qdbmもtarballからインストールしています。

【libiconv】
# cd /usr/local/src
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
# tar xvzf libiconv-1.12.tar.gz
# cd libiconv-1.12
# ./configure
# make
# make install

【qdbm】
# cd /usr/local/src
# wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz
# tar xvzf qdbm-1.8.77.tar.gz
# cd qdbm-1.8.77
# ./configure
# make
# make install

【hyperestraier】
# cd /usr/local/src
# wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz
# tar hyperestraier-1.4.13.tar.gz
# cd hyperestraier-1.4.13
# ./configure
# make
# make install

前回の作業内容、ブログに残しておいて良かった...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) Ver 0.0.2 に向けて

スズキです。

suz-php-jqueryを使った一個目のプロジェクトも終盤になり、
次のプロジェクトに導入するために、
実際に使ってもらった、
"EMP WORDS"(http://blog.emp.fem.jp/)
"hajuBlog"(http://blog.goo.ne.jp/hazuki26)
にレビューしてもらいました。

とりあえず、次プロジェクトに間にあわせたいものとして、

▼全文検索機能
"Hyper Estraier"をPHPから見に行く感じで

▼selectXxxListの引数でLimit/Offsetを指定可能に
$dao->selectHogeList($param, 10, 10)

▼selectXxxListの件数をcountXxxListで取得できるように
$dao->countHogeList()

▼もっとログをわかりやすく。
FireBugにログ出力する形かなー?

▼jTemplatesの利用
これは、標準プラグインにしちゃいますか!

▼SQLで動的な条件文などを作成する仕組み
これはどうすればいいんだ?

が上がってきました。

今から、がんばります。

--
http://suz-lab.blogspot.com/

PHPで文字コード変換(mb_convert_encoding)

スズキです。

すぐ忘れてしまうので、自分メモ。
mb_convert_encodingを使います。
http://manual.xwd.jp/function.mb-convert-encoding.html

▼内部文字エンコーディングからSJISに変換
mb_convert_encoding($str, "SJIS")

UTF-8だけで完結できる世界になって欲しいなー...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) CSVダウンロード

スズキです。

suz-php-jqueryにCVSダウンロードの枠組みを用意しました。
(下記です)

--------【PHP】--------
set_include_path(
  "../../php/ext/" . PATH_SEPARATOR .
  "../../php/lib/" . PATH_SEPARATOR .
  "../../php/app/"
);
require_once "Util.php";
Util::nochache();
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=test.csv");
$out = fopen('php://output', 'w');
$array = Util::invoke();
for($i = 0; $i < count($array); $i++) {
  fputcsv($out, $array[$i]);
}
fclose($out);
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/csv.php

使い方は、json.phpと同じです。
http://suz-lab.blogspot.com/2008/10/suz-php-jqueryjson.html

PATH_INFOで指定されたクラスのメソッドの戻り値が、
CSVデータとなりダウンロードされます。

データベースのデータをCSVにするには、こんな感じのActionになります。

--------【PHP】--------
public function testCsv() {
  $dao = new Dao();
  return $dao->selectHogeList();
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

エラー処理しっかりやる前に、ログまわりや、
エラーの出力ルールをしっかり決めないと...

--
http://suz-lab.blogspot.com/

(suz-php-jquery) jqUploaderサーバ(PHP)編

スズキです。

以前紹介したjqUploaderのFlashからアップロードされたものの
http://suz-lab.blogspot.com/2008/11/suz-php-jquery-jquploaderhtmljavascript.html
受け側のPHPです。

注意点は、$_FILES['Filedata']と、Flashからは、
nameの値がFiledataとして送られてくるってことぐらいでしょうか?

--------【PHP】--------
$pathinfo = pathinfo($_FILES['Filedata']['name']);
$uploadFile = "../TMP/upload/". $_GET["name"]
  . "." . $pathinfo['extension'];
if(move_uploaded_file(
  $_FILES['Filedata']['tmp_name'], $uploadFile
)) {
  error_log("success");
} else {
  error_log("error");
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/PHP/uploader.php

Flashからアップロードされたファイルは、
"webapp/TMP/upload"下に"?name=xxx"で送られた
nameの値をファイル名とし、
アップロードされたファイル名の拡張子をつけた形で保存されます。

あとは、煮るなり焼くなり好きにしてくださいって感じです。

次は、CSVダウンロードだ!

--
http://suz-lab.blogspot.com/

PHPの$_FILES(アップロードされたファイル情報)の中身

スズキです。

下記の話なんですが、すぐに忘れてしまうので、
本ブログに引用です。
http://php.benscom.com/manual/ja/features.file-upload.php

> 【$_FILES["Filedata"]["name"]】
> クライアントマシンの元のファイル名。
>
> 【$_FILES["Filedata"]["type"]】
> ファイルの MIME 型。ただし、ブラウザがこの情報を提供する場合。
> 例えば、"image/gif" のようになります。
> この MIME 型は PHP 側ではチェックされません。
> そのため、 この値は信用できません。
>
> 【$_FILES["Filedata"]["size"]】
> アップロードされたファイルのバイト単位のサイズ。
>
> 【$_FILES["Filedata"]["tmp_name"]】
> アップロードされたファイルがサーバー上で保存されている
> テンポラ リファイルの名前。
>
> 【$_FILES["Filedata"]["error"]】
> このファイルアップロードに関する エラーコード ['error']は、
> PHP 4.2.0 で追加されました。

"Filedata"は実際は下記のようなname属性の値になりますが、
<input type="file" name="hoge"/>
jqUploaderを使う場合は、"Filedata"となります。

PHPのファイルアップロード、思い出してきたぞ!

--
http://suz-lab.blogspot.com/

(suz-php-jquery) jqUploaderクライアント(HTML/JavaScript)編

スズキです。

Webアプリケーション開発では、当然、
ファイルアップロード機能も必須なわけで、
suz-php-jqueryではどうしよう?といろいろ考えたのですが、
以前、いろいろ調査して使ったことのある、
jqUploaderを利用することにしました。
http://www.pixeline.be/experiments/jqUploader/

まずはクライアント側(HTML/JavaScript)です。

--------【HTML】--------
<head>
  <script type="text/javascript"
    src="../JS/ext/jquery.js"></script>
  <script type="text/javascript"
    src="../JS/ext/flash.js"></script>
  <script type="text/javascript"
    src="../JS/ext/jquploader.js"></script>
  <script type="text/javascript"
    src="../JS/app/example/uploader.js"></script>
</head>
<body>
  <form>
    <div id="uploader">
      <label for="upload_file">Choose</label>
      <input name="MAX_FILE_SIZE" type="hidden"
        value="100000000" />
      <input name="upload_file" id="upload_file" type="file" />
    </div>
  </form>
</body>
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/example/uploader.html

--------【HTML】--------
$("#uploader").jqUploader({
  uploadScript : "../../../PHP/uploader.php?name=aaa",
  src : "../IMG/app/example/jquploader.swf",
  afterScript : "",
  background : "FFFFDF",
  barColor : "64A9F6",
  allowedExt : "*.jpg; *.jpeg; *.gif; *.png",
  allowedExtDescr: "Images (*.jpg; *.jpeg; *.gif; *.png)"
});
TerminateJQUploader = function(containerId, filename, varname){
  alert(containerId);
  alert(filename);
  alert(varname);
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/webapp/JS/app/example/uploader.js

パラメータは直感的だと思うので、
具体的なことは本家のドキュメントを参照です。
http://www.pixeline.be/experiments/jqUploader/doc.php

ポイントは、
▼uploadScriptにGETパラメータをつけることができる
http://suz-lab.blogspot.com/2007/12/jquploaderflash.html
▼TerminateJQUploaderがファイルアップロード完了イベント
http://suz-lab.blogspot.com/2007/12/jquploader.html
といった感じでしょうか?

あと、afterScriptは""にしておかないと、ファイルアップロード完了後、
別ページ(null)に遷移しようとしてしまうので、注意です。

次は、サーバ側(PHP)だ!

--
http://suz-lab.blogspot.com/

2008年11月3日月曜日

おちまさと企画塾(2日目)

スズキです。

1日目に続き、2日目です。
http://suz-lab.blogspot.com/2008/10/1.html

2日目は1日目で出された宿題を発表し、
おちさんがコメントをつける形で進んで行きました。

宿題の内容は、
(1)上司/先生/両親を笑わせたり困らせたりするいたずら50個
(2)面白い話(自分の経験から)
といった感じです。

いろいろな人が発表していきましたが、
やはり、こういう話を聴衆にインパクトを与える形で話すのは、
難しいことだなー、と再認識しました。

幸か不幸か(たぶん不幸)僕は発表しませんでしたが、
やはり、発表したら、すべっていたでしょう。

大勢に対して、笑わせる(インパクトを与えるには)、
それ相応の作戦を立てて望まないと、ダメってことですね。
(少なくても、僕のレベルでは、アドリブは通用しません)

また、発表者はくじっぽい感じで選んでいったのですが、
途中から、発表したい人が挙手する形になり、
ここで、一番に挙手しなかった自分が、後々考えると、
「死ぬわけでもないのに、何ビビッてるんだよー...」
といった感じで反省です。

そんなこんなの2時間で
(1)どんなアウトプットにも、あらかじめ作戦を立て実施する。
(2)こういう場では一番最初に質問する。
といったことを新たに決意しました。

次の課題は発表できるようにがんばろう!

--
http://suz-lab.blogspot.com/

2008年11月2日日曜日

(書評) 企画の教科書 おちまさとプロデュース

スズキです。

今回は「おちまさと企画塾」で配布されたテキスト、
http://school.dhw.co.jp/c/kikaku/
「企画の教科書 おちまさとプロデュース」です。
http://astore.amazon.co.jp/iretsuzusblog-22/detail/4140807822

まずは、いつもどおりの目次からです。
--------
【1. 企画が溢れる"企画脳"をつくる】
企画を立てる前に―心構え、企画の準備体操
【2. 実践!企画立案法】
企画のベースをつくる、企画が愛されるための5箇条、...
【第3章 マーケティングに負けない】
マーケティングとは何か、マーケティングの危険性とその回避法、...
【第4章 企画のツメ・演出と企画書】
演出を施す、企画書に仕上げる
【第5章 企画会議必勝法】
企画会議への心構え(前日まで、当日)、...
--------
目次の詳細はこちら(ほとんど一緒)
http://www.amazon.co.jp/gp/product/toc/4140807822?tag=iretsuzusblog-22

授業のテキストだけあって、企画塾一日目の内容と、
非常にシンクしています。
http://suz-lab.blogspot.com/2008/10/1.html

まず目に付いたフレーズは、
【けんか腰にならす、ナチュラルでポジティブな「なにくそ!」】
です。
企画というよりは人生のあらゆる場面で、
常に持っていたい気持ちです。

また、企画に必要な条件(!?)も詳しく書かれています。
下記に見出しを紹介しておきます。
--------
【企画が愛されるための5箇条】
1. 特性
2. 振り幅
3. 普遍性
4. やられた感
5. 時流
【愛されるためのだめ押し要素】
1. そりゃそうだよな、のパンチ力
2. キーワードが出てくるインパクト
3. 看板はひとつ、中身は多様
4. まじめと狂気
5. 愛着感と優越感
--------
こちらも企画というよりは、すべての自分のアウトプットにおいて、
意識していきたい内容でした。

このように、「企画の教科書」には企画を行うための、
心構え、企画内容のチェックポイントなどが、具体的な例のもと、
体系だって書かれています。

しかし、企画というのは、企てることであり、人間、生きていれば、
常にいろいろなことを企てています。そのすべての企てにおいても、
いろいろと参考にできる内容だと思いました。

僕はプログラマーですが、プログラムの「企て」をするときにも、
上記の内容や、「ミクロを撃ってマスを制す」、
「ありそうだけど今までなかった」などの本書に散りばめられた
ノウハウを常に意識した形でがんばっていきたいところです。

企画塾の二日目、ブログに書かないと...

--
http://suz-lab.blogspot.com/

今日のブックマーク 11/02/2008


Posted from Diigo. The rest of my favorite links are here.

2008年11月1日土曜日

(suz-php-jquery) PDOのbindValue時にPDO::PARAM_XXXを設定

スズキです。

PDOのbindValueメソッドを使うときに、
第三引数のパラメータの値の型を指定しないと、
うまくパラメータがバインドされない場合があります。
http://php.mirror.camelnetwork.com/manual/ja/pdostatement.bindvalue.php

ということで、Dao.phpを更新しました。

--------【PHP】--------
foreach($params[0] as $key => $val){
  if(is_null($val)) {
    $type = PDO::PARAM_NULL;
  } else if(is_bool($val)) {
    $type = PDO::PARAM_BOOL;
  } else if(is_float($val)) {
    $type = PDO::PARAM_INT;
  } else if(is_int($val)) {
    $type = PDO::PARAM_INT;
  } else if(is_string($val)) {
    $type = PDO::PARAM_STR;
  }
  $stmt->bindValue($key, $val, $type);
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Dao.php

なので、必要に応じて、パラメータの値を型変換(文字列から整数など)
する必要があります。

"EMP WORDS"、バグ報告ありがとう。
http://blog.emp.fem.jp/

--
http://suz-lab.blogspot.com/

"PDO <-> MySQL"の文字化け対策(場当たり編)

スズキです。

時間が全然なかったので、場当たり対応です。

要はPDOで"SET NAMES utf8"を実行しましょうってことです。

--------【PHP】--------
$pdo = new PDO(DAO_DSN, DAO_USER, DAO_PASS);
$pdo->query("SET NAMES utf8");
--------
※DAO_DSN, DAO_USER, DAO_PASSは
定数としてあらかじめ定義。

ついに、昨日、ブログ書けなかった...
情け無い...

--
http://suz-lab.blogspot.com/