log.metatype

Archive for November 2007

JavaScript on Dolly

超シンプルなJavaScriptクラスを作った。
いずれライブラリとして公開しようと思っているけど、
ドキュメントを書くのが面倒なので、ひとまずプレビューしてみる。

» JavaScript on Dolly
» Download


概要

JavaScript on Dolly(dolly.js)は、
手っ取り早くクラスを作るための基盤クラス。
昨今のJavaScriptフレームワークはオールインワンで強力だけど、
肥大化しすぎていて、個人的にシンプルなやつが欲しかった。
初心者向けの機能は無い。エフェクトなんてもちろん無い。

ports.jsとの棲み分けを考えてるけど、
ports.jsはJavaScriptフレームワークを読込むためのライブラリで、
こちらは、むしろ肥大化傾向にあるかな〜。
ECMAScript 4のimportやunitが気になるので、
リモートロードとか、互換性のある構文を取り入れようかと考えている(未定)

反対に今回のdolly.jsは、
削れるものは極力削って、シンプルにしていく予定。
最低限の機能だけあれば良い。


使い方

<script src="dolly.js" type="text/javascript"></script>
<script type="text/javascript">
myclass = new dolly();
</script>

基本的にこれだけ。
普通は拡張したいので、

myclass.extend({
	init: function () {
		this.flag = false;
		return this;
	},
	standby: function () {
		this.myFunc(this.flag);
	},
	myFunc: function (flag) {
		...
	}
});

みたいにdolly.extendにオブジェクトを渡せばOK。
2つの特別なメソッド名があって、
initは拡張される前に実行される。
initがある場合は、initの戻り値を渡すオブジェクトとみなすので通常はthisを返しておく。
standbyはDOMツリーの読込みが完了した(DOMContentLoaded)タイミングで実行される。


dolly.$

いわゆる$関数。単純なCSSセレクタだけ対応。
ID(getElementByID)の場合は単体で、
タグ(getElementsByTagName)やクラス(getElementsByClassName)は配列で返す。
存在しない場合はnullを返す。

myclass.$('div#box ul.list a.on');
myclass.$('#box .list .on');
myclass.$('div ul a');

dolly.$a

NodeListなどを配列化するだけ。
lengthが無い単体で渡した場合は0番目に格納した配列を返す。

myclass.$a(rss.getElementsByTagName('item'));

dolly.$c

Cookieの保存と取得。
第1引数がキー、第2引数が値、第3引数が有効日数(省略時はTemporary Cookie)
有効日数を-1以下にすればCookieを消せるはず。
第1引数のみの場合は取得、存在しない場合はnullを返す。

myclass.$c('mycookie', 'test', 365);
myclass.$c('mycookie'); // test

dolly.$x

特に芸の無いAjax。
第1引数がURL、第2引数がリスナー関数、第3引数は各種オプション(詳細は省略)
リスナー関数の第1引数に結果を渡すだけ。

myclass.$x('example.xml', function (r) { ... }, {
	method: 'POST',
	query : { mode: 'rss', count: 10 }
});

dolly.isset

引数がundefinedかの真偽を返すだけ。

myclass.isset(myval);

dolly.isown

第1引数のオブジェクトの第2引数のキーのプロパティやメソッドが、
prototypeで拡張されたものでは無いかの真偽を返すだけ。

myclass.isset(myobj, key);

dolly.any

引数を順番にチェックして最初にundefinedではないものを返すだけ。

myclass.any(myval1, maval2, myval3);

dolly.bind

関数内スコープの固定。
第1引数が固定したい関数、
第2引数がthisにしたいオブジェクト(省略時はdolly)
本来のthisは関数の第1引数に渡されて、
本来の引数は第2引数以降に繰り上げられる。

myclass.bind(function (el) { ... });

dolly.each

繰り返し。
第1引数が繰り返したいオブジェクトや配列、
第2引数が処理関数。処理関数の引数でキーと値(ひとつの場合は値)を指定。
第3引数が処理関数の中でthisにしたいオブジェクト(省略時はdolly)

myclass.each(myobj, function (key, val) { ... });

うわ、結局長くなっちゃった。

OS X Leopard My Setting (phpMyAdmin)

  • Nov 13, 2007, 19:50
  • Tags: mac

SVNリポジトリのphpMyAdminを使う。


config.inc.phpを編集

色が付いている部分は適当に。

  1. config.inc.phpをconfig.sample.inc.phpからコピーして作成。
  2. パスフレーズを設定。
    $cfg['blowfish_secret'] = 'passphrase‘;
  3. ログインが面倒なので、
    認証方法をconfigに変更。
    $cfg['Servers'][$i]['auth_type'] = 'config';
  4. ユーザーのIDとパスワードを設定。
    $cfg['Servers'][$i]['user'] = 'user‘;
    $cfg[’Servers’][$i][’password’] = ‘password‘;

あとは、フォントサイズが小さいので、
90%ぐらいにすればOK。


OS X Leopard My Settings

  1. Applications
  2. Subversion
  3. Apache
  4. MacPorts
  5. MySQL
  6. PHP
  7. phpMyAdmin
  8. Plagger

OS X Leopard My Setting (PHP)

  • Nov 13, 2007, 19:39
  • Tags: mac

デフォルトのPHPを使う。
デフォルトのPHPに含まれない、
PEAR、 PDO MySQL Driver、GDを追加インストールする。


PEARのインストール

MacPortsのpear-baseはMacPortsのPHPを参照したり、
インストールディレクトリを間違えるので駄目。

  1. PEARインストーラをダウンロード。
    curl http://pear.php.net/go-pear > go-pear.php
  2. インストーラに従ってインストール。
    sudo php -q go-pear.php
    開始確認
    はい:Enter
    インストール場所確認
    そのまま:Enter
    The following PEAR packages are bundled with PHP: MDB2.
    Would you like to install these as well? [Y/n]
    入れる:Y
    php.ini が無い事を通知
    無視:Enter

PDO MySQL Driverをインストール

デフォルトでMySQLが無いので、
デフォルトのPHPにもPDOのMySQLドライバが無い。
PDOは欠かせないので追加。
MacPortsリストには無い。

  1. PDO MySQL Driverを以下からダウンロード。
    http://pecl.php.net/package/PDO_MYSQL
  2. PDO_MYSQL-x.x.x.tgzを解凍して移動。
    cd ~/Downloads/PDO_MYSQL-x.x.x/PDO_MYSQL-x.x.x
  3. PDO MySQL Driverをコンパイル・インストール。
    phpize
    ./configure '--with-pdo-mysql=shared,/opt/local/lib/mysql5'
    make
    sudo make install

GDをインストール

MacPortsはもちろん、
http://www.libgd.org/Downloadsのソースもうまくいかないので、
AppleのLeopard用のソースを利用。

  1. MacPortsで以下をインストールしている必要がある。
    ※ インデントは依存関係で自動的にインストールされる。
    sudo port install freetype
    	sudo port install zlib
    sudo port install jpeg
    sudo port install libpng
    	sudo port install zlib
  2. AppleのLeopard用のソースをダウンロード。 http://www.opensource.apple.com/darwinsource/10.5/apache_mod_php-43/の、
    php-5.2.4.tar.bz2を使う。
  3. php-5.2.4.tar.bz2を解凍してGDのディレクトリに移動。
    cd ~/Downloads/php-5.2.4/ext/gd
  4. GDをコンパイル・インストール。
    phpize
    ./configure '--with-png-dir=/opt/local' '--with-jpeg-dir=/opt/local' '--with-freetype-dir=/opt/local'
    make
    sudo make install

php.iniを編集

php.iniはApacheのみで有効にする。
PDO MySQL DriverとGDを入れていると、
コマンドライン版PHPが動作しないため。

  1. php.iniをphp.ini.defaultからコピーして作成。
    デフォルトの/private/etc/php.iniには置かない。
    sudo cp /private/etc/php.ini.default /private/etc/apache2/php.ini
  2. インクルードパスをPEARの場所に設定。
    include_path = ".:/usr/share/pear"
  3. Extensionsディレクトリを設定。
    extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"
  4. PDO MySQL DriverとGDを有効。
    extension=pdo_mysql.so
    extension=gd.so
  5. タイムゾーンを設定。
    date.timezone = "Aisa/Tokyo"
  6. MySQLソケットを設定。
    mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

Apacheを再起動

sudo /usr/sbin/apachectl restart

で再起動して、
PEARやPDO MySQLやGDが使えればOK。


OS X Leopard My Settings

  1. Applications
  2. Subversion
  3. Apache
  4. MacPorts
  5. MySQL
  6. PHP
  7. phpMyAdmin
  8. Plagger

OS X Leopard My Setting (MySQL)

  • Nov 13, 2007, 19:06
  • Tags: mac

MacPortsでインストール。

  1. MySQLサーバの自動起動付きのMySQL5をインストール。
    sudo port install mysql5 +server
  2. DBを初期化。
    sudo mysql_install_db5
  3. DBのパーミッションを設定。
    sudo chown -R mysql /opt/local/var/db/mysql5/
    sudo chgrp -R mysql /opt/local/var/db/mysql5/
  4. my.cnfをmy-small.cnfからコピーして作成。
    sudo cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf
  5. my.cnfを編集。
    [mysqld] に追記する。
    default-character-set = utf8
    default-storage-engine = innodb
  6. MySQLサーバを起動。
    sudo mysqld_safe5
  7. rootユーザーのパスワードを設定。
    パスワードは適当に。
    sudo mysqladmin5 -u root password 'password
  8. ログインテスト。
    MySQLに歓迎されればOK。
    mysql5 -u root -p
    exit
  9. MySQLサーバの自動起動を読込み。
    sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

初回からこの順番でうまくいかないかもしれない。
/opt/local/var/run/mysql5/mysqld.sockが無いとか注意されたら、
一度アンインストールしてやり直すと良いかも。
たぶん、launchctlとパーミッションの関係だと思う。


OS X Leopard My Settings

  1. Applications
  2. Subversion
  3. Apache
  4. MacPorts
  5. MySQL
  6. PHP
  7. phpMyAdmin
  8. Plagger

OS X Leopard My Setting (MacPorts)

  • Nov 13, 2007, 18:45
  • Tags: mac

MacPortsでインストールできるものはMacPortsを使う。
前提としてXcode Developers Toolsをインストール済み。

  1. MacPortsをインストール。
    公式サイトから、
    パッケージをダウンロードしてインストールするだけ。
    やや時間はかかる。
    PATHは自動的に通してくれる模様。
  2. MacPortsを更新。
    sudo port -d selfupdate
    sudo port sync
  3. MySQLのためのライブラリをインストール。
    ※ インデントは依存関係で自動的にインストールされる。
    sudo port install openssl
    	sudo port install zlib
  4. GDのためのライブラリをインストール。
    ※ インデントは依存関係で自動的にインストールされる。
    sudo port install freetype
    	sudo port install zlib
    sudo port install jpeg
    sudo port install libpng
    	sudo port install zlib

MySQLとPHPのための下ごしらえOK。


OS X Leopard My Settings

  1. Applications
  2. Subversion
  3. Apache
  4. MacPorts
  5. MySQL
  6. PHP
  7. phpMyAdmin
  8. Plagger