2007年8月30日木曜日

yumのキャッシュについて.

yumのキャッシュについて.あんがいHDDをくうみたいなんで,キャッシュ削除のティップス.

・キャッシュのディスク使用量を調べる.
$ du -hs /var/cache/yum

・キャッシュを削除する.
# yum clean all

というようなかんじ.僕の環境では,60MBくらい使用してて,キャッシュを削除したら100KBくらいになった.VMwareとかで動かしてるとチリも積もればってなかんじで結構増えるから,環境の整備が終わったら削除しよう.ディスク容量に余裕があるなら全然いいんだけどねw

2007年8月29日水曜日

JavaScript入門.ちょっと本気でやってみるかなぁ.#1

Ajaxという言葉によって再興したJavaScript.Webアプリケーションプログラマ(日曜プログラマと置きかえてもいいけどw)として,やっとかないとなぁ感がでてきた.

さて,そのJavaScript,悪い言語じゃないと僕は思う.始めてプログラミングをする人にぜひおすすめしたい.オブジェクト指向プログラミングできて,その仕組みはシンプルで,処理系がOS付属のブラウザについてくるということで始めやすい.また,結果がグラフィカルに返ってくるし,そもそもWebに使うものだから実用的.プログラミングの勉強へのモチベーションも保ちやすい.JavaScriptから始めて,そのあとにJavaなんかを勉強したら幸せになれるんじゃないかな.

しかしながら,いろいろと問題はありそう.JavaScriptが悪とされてたころは,DOMやBOMなんて言葉はなく,文法を教えているサイトも皆無で,「こう書けばこう動くから君のWebページに貼り付けるといいよ.」といったかんじのコードが横行していた.それよりはお行儀がいいが,結局は「こういうライブラリがあるからこうやって使おう.」というような流れになっている.JavaScriptの現状はまだ不安定だ.

そんな現状になっているのも,XHTML+CSS+JavaScriptというものを学ばなければならないってことの影響だと思う.3つ同時にというのは大変だし,そもそもXHTMLがわかってないとJavaScriptでどーのこーのできない.アクティブなページを作るには,CSSもわからないとまずい.それによって,JavaScriptが後回しになったり,どれも中途半端になったりして,いつまでたっても初心者から脱出できない状態におちいる.(僕のことだねw)なので,JavaScriptだけを本気でやってみることにした.

ということで,JavaScriptをブラウザではなくインタプリタで動作させて,文法を叩き込む方向でいこうと思う.初心者におすすめな理由と矛盾してるけどねw使用するインタプリタは,Rhino

あっ,いまさらだけど,僕の入門の話で,解説ではないことに注意してねw

Rhinoをつっこむところとかもろもろ省略して,今回書いてみたプログラム.とりあえず,お約束の階乗計算プログラムね.
/*
* factorial.js
*/
function factorial(n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}

print("10! = " + factorial(10));


実行結果は次のとおり.
$ java -jar js.jar factorial.js
10! = 3628800
$


例によって,FizzBuzzプログラムも.
/*
* fizzbuzz.js
*/
for (i = 1; i <= 100; i++) {
if (!(i % 3) && !(i % 5)) {
print("FizzBuzz");
} else if (!(i % 3)) {
print("Fizz");
} else if (!(i % 5)) {
print("Buzz");
} else {
print(i);
}
}


実行結果は省略.

んー,林檎生活100: Tcl入門.ちょっといじってみた.と大差ないなwこんな簡単なんじゃダメっぽい.もうちょっとJavaScriptのおいしいところをだしていければいいなぁ.

追記(2007年8月30日):
print()は,Rhinoの定義済み関数なんで,ブラウザじゃ動作しない.ブラウザでの実行のときは,alert()に置き換えれば動作するんじゃないかな.未確認だけど・・・.

追記(2007年9月13日):
オブジェクト指向型言語と書いたが,オブジェクト指向プログラミング可能な言語であって,オブジェクト指向型言語とは言い切れないかんじなので,修正した.

2007年8月28日火曜日

Tcl入門.ちょっといじってみた.

Tclをいじってみた.よくそのツールキットと一緒にTcl/Tk(ティクルティーケーと読むらしい.)と呼ばれるあれだ.いままで使ってみようと思うことはなかったんだけど,なんとなーくいじりはじめたらおもしろかったんで,ちょっとその言語仕様と簡単なプログラムについて書いてみた.

Tool Command Languageの略語であることからも,その基本はコマンド.なので,コマンド区切り文字までを1コマンドとして,それを順番に記述していくスタイルだ.すべての変数は文字列型というのもすごい.文字列を数字列によって表された数値としてとるかどうかというのは,コマンドにまかせられているということなんだって.また,変数代入や制御構造,プロシージャ定義などがすべてコマンドというのもすごい.(というか,やりすぎw)

というかんじで,文がコマンドしかないから,文法ってのもコマンドの書き方になるわけで,言語仕様は小さい.基本的には,変数置換,コマンド置換とかについてわかれば,文法的にはOK.1時間くらいで文法を網羅できる言語なんだが,コマンドの勉強をしなきゃならないから,1時間でマスターというわけにはいかないだろうけど・・・.

とりあえず,階乗計算プログラムを作ってみた.再帰も当然できますよってかんじでw
#!/usr/bin/tclsh
#
# factorial.tcl
#
proc factorial {n} {
if {$n == 0} {
return 1
} else {
return [expr $n * [factorial [expr $n - 1]]]
}
}

puts "n = ?"
set n [gets stdin]
puts "$n! = [factorial $n]"


実行結果はこんなかんじ.
$ tclsh factorial.tcl
n = ?
10
10! = 3628800
$


もうひとつ作った.FizzBuzzって流行ったから,FizzBuzzプログラムw
#!/usr/bin/tclsh
#
# fizzbuzz.tcl
#
for {set i 1} {$i <= 100} {incr i} {
if {![expr $i % 3] && ![expr $i % 5]} {
puts "FizzBuzz"
} elseif {![expr $i % 3]} {
puts "Fizz"
} elseif {![expr $i % 5]} {
puts "Buzz"
} else {
puts $i
}
}


実行結果は省略ね.

ふむ,Tclはなかなかおもしろいな.適当な本買ってみようかなぁ.でも,最近は出版されてないみたいだねぇ・・・.

2007年8月27日月曜日

CentOS 5でつくるPHP開発サーバ.#5

林檎生活100: CentOS 5でつくるPHP開発サーバ.#4の続き.今回は,PostgreSQLphpPgAdminのインストールについて.

PostgreSQLのインストール手順.

1.yumでインストールする.
# yum -y install postgresql-server


2.OS起動時に起動するように登録する.
# /sbin/chkconfig  postgresql on


3.PostgreSQLを起動する.(DBの初期化とかも初回起動時にやってくれるみたい.楽だねぇ♪)
# /sbin/service postgresql start


4.PostgreSQLのpsqlクライアントの動作確認.(といっても,バージョンを表示してるだけなんだけどねw)
# psql --version


5.PostgreSQLに接続する.
# su postgres(postgresユーザになる.ユーザについての詳しい情報は,エントリ末尾の補足情報を参照.)
$ psql


6.PostgreSQLのpostgresユーザにパスワードを設定する.
postgres=# ALTER USER postgres WITH PASSWORD '(設定したいパスワードを入力する.)';


7.PostgreSQLへadminユーザ(管理用の全権限を持つスーパーユーザ.)を追加する.(ここで追加するユーザは,CentOSのユーザとは異なる.)
postgres=# CREATE USER admin WITH PASSWORD '(設定したいパスワードを入力する.)' SUPERUSER CREATEDB CREATEROLE;


8.PostgreSQLへの接続を解除する.
postgres=# \q


9.PostgreSQLのクライアント認証を変更する.
# vi /var/lib/pgsql/data/pg_hba.conf
.
.
.
# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5


10.PostgreSQLを再起動する.
# /sbin/service postgresql restart


PostgreSQLの設定はこんなところ.yumで楽にインストールできるんだけど,あとあとにインストールするphpPgAdminのせいで,ユーザ管理とかはちょっと複雑.補足情報にまとめておいたので,そこをみてくれぃ.

次にphpPgAdminをインストールする前に,PHPからPostgreSQLにアクセスできるように,pgsqlモジュールをインストールする必要がある.これもyumでさくっといける.

1.pgsqlモジュールをインストールする.
# yum -y install php-pgsql


2.モジュールを反映させるため,サーバを再起動する.
# /sbin/service httpd restart


3.設定をブラウザから確認する.PDOとpdo_pgsql,pgsqlの項目があればOK.
http://172.16.8.3/phpinfo.php

これで,PHPからPostgreSQLにアクセスすることができるようになったはず・・・.(確かめてないんだよね.)

さて,やっときたphpPgAdminのインストール.これがちょっと面倒.だって,yumからいけないんだもの・・・.しかし,「SQLなんてよくわかりませんからっ!」って人とか,「SQLってなに?おいしいの?」って人とかのため(僕を含むw)に,インストールしないわけにはいかないんだな.ということで,そのインストール手順.

1.ソースを入手する.(現在の最新版は,4.1.3だったけど,それより新しいのがあれば,それを使ったほうが無難だな.)
# cd ~
# wget http://jaist.dl.sourceforge.net/sourceforge/phppgadmin/phpPgAdmin-4.1.3.tar.gz(ごめん.JAISTへの直リンク.)


2.ソースを展開する.
# tar -zxvf phpPgAdmin-4.1.3.tar.gz


3.ソースを移動する.
# mv phpPgAdmin-4.1.3 /var/www/html/phpPgAdmin


4.動作をブラウザから確認する.
http://172.16.8.3/phpPgAdmin/

というようなかんじで,ひととおり設定が終わった.使うときは,新しいDBと新しいユーザを作って,PHPからそのユーザを使ってDBを操作するような感じになるんじゃないかなぁ・・・.(まだ試していないんだよな.間違ってるかもしれん・・・.)

次回でとりあえず最終回の予定.でもまあ,Zend Studio用の設定なんで,今回までで十分な人が多いんだろうなぁwむしろ,MySQLやれよとw(MySQLに関しては,僕の不勉強なんでそのうちやれればなぁと思う.とかいいながら,仕事ではちゃっかり使ってるんだけどwww)

注意事項:
セキュリティ無視してる部分も多々あるというか,開発用なのでセキュリティなんて気にしてないんで要注意.本来なら,.htaccessとかでphpPgAdminに対してIPアドレスとかでアクセス制限をかけるべきだし,adminユーザに全権限を与えないほうがいい.もっというなら,phpPgAdminを使わないほうがいい.

補足情報:
知らなくてもどうにかなるけど,知っておいたほうがいい情報ってとこかな.むしろ,僕が間違っている可能性を含む情報だったりw

1.初期生成されるDB.
初回起動時に初期化されて,postgres,template0,template1という名前のDBが自動的に作成される.こいつらなんだよって話になるんだけど,postgresは,いわずもがなpostgresユーザのDBで,DBがないとPostgreSQLに接続できないから作られる.template1は,新しいDBを作るときのテンプレート.こいつを変更すれば,新しいDBの初期状態もそれにあわせられる.で,template1を変更しちゃうと初期状態のテンプレートがなくなるから,初期状態のテンプレートとしてtemplate0が存在するってわけなんだ.

2.DB接続時のユーザ認証の仕組み.
初期状態では,pg_hba.confの設定が,ローカルのOSユーザとDBユーザが一致すれば,DBに接続できるというようになっている.だから,postgresというユーザでDBに接続できる.しかし,phpPgAdminからDBへのアクセスでは,ローカルのOSユーザがapacheになるため,DBユーザとしてapacheがいないと接続できないという状態になる.また,その状態ではapacheというユーザでしかDBを管理できない.なので,パスワード認証(MD5認証.)を使うことになる.だから,pg_hba.confを前述のように変更したんだよね.

追記(2007年8月30日):
/etc/rc.d/init.d/postgresql startとかやってたのを,/sbin/service postgresql startというように変更した.

2007年8月26日日曜日

Appleの旧キーボードを注文した.

Apple Wireless Keyboard M9270LL/Aを注文した.

うちのMacBookをそのうちクラムシェルでつかう予定だったんだよね.だけど,キーボードが新しくなってしまって,そのキーボードがなんかMacBookにあわないのさ.それで,旧キーボードを注文したのだ.

在庫があるのかが問題だけど,いまのうちにと思って注文した.

予定より,クラムシェル化をはやく進めなくなっちゃったなぁ・・・.

24"ディスプレイをそのうち購入かなぁ.EIZOがいいんだけどなぁ.高いよなぁ.

2007年8月23日木曜日

VMware Fusionをact2が販売.

VMware Fusionの販売をMacのソフトウェア販売で有名なact2が行うことになった.

英語版に日本語インストールガイドをつけたものを,ダウンロードとして先行販売している.同内容でパッケージも近々販売予定らしい.また,日本語版のダウンロードとパッケージも今秋登場予定とのこと.日本語版がでたら,英語版購入者も日本語版へアップデート可能らしい.僕はパッケージで買いたいから,英語版か日本語版を待った方がいいのかなぁと思っている.日本語マニュアルの方がいいけど,邦訳のレベルにもよるなぁ.

それにしても,なんでVMwareの日本法人が販売しないんだろう.てっきり,Windows版,Linux版のVMwareよろしく,Mac版もVMwareの日本法人が扱うものだと思ってた.正直サポートが心配だよなぁ.act2はいい会社だけどね.

んー,評価ライセンスでやってくにも限界があるから,英語版のパッケージを買っちゃうかもしれないなぁ・・・.

2007年8月10日金曜日

CentOS 5でつくるPHP開発サーバ.#4

林檎生活100: CentOS 5でつくるPHP開発サーバ.#3の続き.今回は,ApachePHPをインストールする.開発用なので,あまり細かい設定はしない.yumで簡単にインストールする.

まずは,Apacheのインストール手順.

1.yumでさっくりインストールする.
# yum -y install httpd


2.OS起動時に起動するように登録する.
# /sbin/chkconfig httpd on


3.Apacheを起動する.
# /etc/rc.d/init.d/httpd start


4.テストページを生成する.
# echo '<html><body><h1>It works!</h1></body></html>' > /var/www/html/index.html


5.動作をブラウザから確認する.
http://172.16.8.3/

6.ドキュメントルートのオーナを変更する.アップロード用ユーザのアクセスを許可するため.
# chown -R admin /var/www/html


以上でインストール完了./var/www/htmに,Cyberduckとかをつかって,HTMLファイルをアップロードすればブラウザから参照できる.

次は,PHPのインストール手順.日本語関係の設定があるのですこし面倒かな.

1.yumでインストールする.PHP本体とマルチバイト文字列モジュールを同時にね.
# yum -y install php php-mbstring


2.PHPの設定ファイルを編集する.これは,マルチバイト文字列のための設定.今回は,文字コードとしてUTF-8を使うようにしている.
# vi /etc/php.ini(viやnanoなどで編集する.)
.
.
.
[mbstring]
; language for internal character representation.
mbstring.language = Japanese

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = UTF-8

; http input encoding.
mbstring.http_input = auto

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = UTF-8

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
mbstring.encoding_translation = Off

; automatic encoding detection order.
; auto means
mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0

; enable strict encoding detection.
mbstring.strict_encoding = Off
.
.
.


3.Apacheを再起動する.
# /etc/rc.d/init.d/httpd restart


4.テストページを作成する.
# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php


5.動作をブラウザから確認する.phpinfoに表示されるmbstringの項も確認すること.
http://172.16.8.3/phpinfo.php

以上でインストール完了.PHPで遊びたいだけならここまででOK♪

次回は,PostgreSQLをインストールする予定.

2007年8月9日木曜日

iDisk同期機能を停止させてディスクスペース増加.

ディスクスペース少ないな〜と思ってたら,なんかiDisk同期機能によって同期されたデータがでかくなってた.

.macの保存容量が10倍になったことが関係あるのかどうかはわからないが,iDisk同期機能を停止させた.自動ではiDisk同期機能が開始されないため,自分で設定した場合のみだと思う.

iDisk同期機能の停止手順はつぎのとおり.

1.システム環境設定>.Mac>iDisk>停止をクリック.
2.ローカルに保存されていたiDiskのディスクイメージが,デスクトップに移動されるので,削除する.

僕の場合は,5GBくらいディスクスペースが増加した.

ちなみに,ローカルに保存されていたiDiskのディスクイメージは,~/Library/Mirrors以下にある.

2007年8月8日水曜日

新iMacでた♪iLife '08とiWork '08も.

いや〜でたねぇ.すっげぇ乗り遅れてるけどw

デザインは意見が分かれそうだけど,いままでのままで変化がないよりはいいかと.でも,旧iMacを買いたいなと思ってた人がここにいるんだがね・・・.

キーボードも変わったね.クールだけど,白いキーボードも好きなんだよなぁ.たたき心地は,MacBookと同じ感じかなぁ.

それで,今回の発表のせいで出費しなければならなくなったのは,iLife '08とiWork '08だ.どっちも欲しい.iLifeのiPhoto,iWorkのKeynoteくらいしか使ってないんだけどねぇ・・・.でも,iWorkのスプレッドシートには期待してる.

購入したら,ここにTipsとか書いてこうと思っているから,期待しないで待っててほしいw

2007年8月2日木曜日

ドメインで終わるURLの末尾に,スラッシュをつけるべきかつけないべきか.

ドメインで終わるURLの末尾に,スラッシュをつけるべきかつけないべきか,について考えてみた.

結論から言うと,スラッシュをつけるべきだと考える.なぜなら,http://www.example.com/といったURLは,httpがスキーム名,www.example.comがドメイン,/がリソースへのパスであるから.(:と//は考えないことにするw)しかし,index.htmlは記述しなくてもいいと考える.

仮にhttp://www.example.comとブラウザに入力された場合,http://www.example.com/index.htmlが表示されるとする.その場合,/を補完しているのはブラウザで,index.htmlを補完しているのはサーバであることがいえる./以下のindex.htmlが表示されることはサーバが保証してくれる(設定が変更されなければね.)が,/自体はサーバが保証してくれない.

次のようなことやってみればわかるんじゃないかな・・・.

$ telnet www.google.com 80
GET HTTP/1.0

...
$ telnet www.google.com 80
GET / HTTP/1.0

...
$ telnet www.google.com 80
GET /index.html HTTP/1.0

...


ということなんだけど,どうだろう.間違ってるかな.

GNU nano入門.コマンドリファレンスを作ってみた.

GNU nanoを使ってみるかってことで,僕の入門の話w解説するほど使ってないし.Vimならちょっとは解説できるかもしれないけどね.

GNU nanoってのは,軽量テキストエディタ.端末で動く.Mac OS Xにも入ってるし,CentOS 5にも入ってた.(林檎生活100: CentOS 5でつくるPHP開発サーバ.#1に書いたインストール方法の場合.)

エディタを起動するとヘルプが下に出てるし,Windowsのメモ帳やMac OS Xのテキストエディットみたいなかんじで,編集できてしまうからemacs,viなんて使えないって人にはいいかも.

まあ,こんなぐだぐだなことを書いてもしかたないから,コマンドリファレンスでも書いとこう.ちなみに,コマンドの後ろの括弧内は代替コマンド.meta+○は,escを押して,離してから○を押すこと.バージョン1.2.4のヘルプテキストを参考にしている,というより,翻訳+コメントってかんじ.

ctrl+G(F1): ヘルプテキスト表示する
ctrl+X(F2): 現在のファイルを閉じる
ctrl+O(F3): 現在のファイルを保存する
ctrl+J(F4): 段落を整形する
ctrl+R(F5): ほかのファイルを挿入する
ctrl+W(F6): テキストを検索する
ctrl+Y(F7): 前の画面へ移動する
ctrl+V(F8): 次の画面へ移動する
ctrl+K(F9): 現在の行をカットする
ctrl+U(F10): 切り取った行をペーストする
ctrl+C(F11): 現在のカーソル位置情報を表示する
ctrl+T(F12): スペルチェックを行う(Mac OS Xだとspellコマンドが入っていないから動作しない.)
ctrl+P(↑): 上へ移動する.
ctrl+N(↓): 下へ移動する.
ctrl+F(→): 右へ移動する.
ctrl+B(←): 左へ移動する.
ctrl+A: 行頭へ移動する
ctrl+E: 行末へ移動する
ctrl+L: 画面を更新する
ctrl+^(meta+A): 選択を開始する(ほかのエディタならshiftを押しながら選択するよね.これと,ctrl+Kを組み合わせるといい.)
ctrl+D: カーソル位置の文字を消す
ctrl+H(delete): カーソル位置の左の文字を消す
ctrl+I(tab): タブを入力する
ctrl+\(F14)(meta+R): テキストを置換する
ctrl+M: キャリッジリターン(CR)を挿入する(Mac OS Xだと普通にラインフィード(LF)が挿入されるみたい.)
ctrl+_(F13)(meta+G): 指定行へ移動する
ctrl+space: 1単語分右へ移動する(Mac OS XだとSpotlightが起動してしまう.)
meta+space: 1単語分左へ移動する
meta+]: 対になる括弧へ移動する
meta+<: 前のバッファを開く
meta+>: 次のバッファを開く
meta+C: 現在のカーソル位置情報を常に表示する/表示しない
meta+I: オートインデントを有効/無効にする
meta+Z: サスペンドを有効/無効にする(シェルのサスペンド機能を使えるようにするかしないか.)
meta+X: ヘルプを下に表示する/表示しない
meta+W: 自動的に折り返す/折り返さない
meta+M: マウスをサポートする/サポートしない(どういう機能かわからない.)
meta+K: カーソル位置から行末までのカットを有効/無効にする(ctrl+Kの動作がカーソル位置から行末までのカットになる.)
meta+F: マルチファイルバッファを有効/無効にする(ctrl+Rの動作が「ほかのファイルを新しいバッファに挿入する」になる.)
meta+N: DOSフォーマットとMacフォーマットの無変換を有効/無効にする(改行コードの無変換をするかしないか.)
meta+D: DOSフォーマットでの書き出しを有効/無効にする(改行コードがCRLFになる.)
meta+O: Macフォーマットでの書き出しを有効/無効にする(改行コードがCRになる.)
meta+B: バックアップファイルを有効/無効にする
meta+S: スムーススクロールを有効/無効にする(1行ごとのスクロールをするかしないか.しない場合は画面ごとのスクロールになる.)
meta+Y: シンタックスハイライトを有効/無効にする(どういう機能かわからない.)

印刷して手元に置いといてもらえると作ったかいがあるけど,そんなことする人いないよな・・・.あと,僕にわからない機能について知っている人は,ぜひ教えてください.あと,間違ってたら教えてください.

2007年8月1日水曜日

ThunderbirdのWindowsからMac OS Xへの移行.

ThunderbirdをMac OS Xにインストールして,Windowsからプロファイルを持ってきて環境を移行した.

移行方法は次のとおり.

1.WindowsからThunderbirdの設定を持ってくる.USBメモリとかで持ってくると楽♪
C:\Document and Settings\ユーザ名\Application Data\Thunderbird

2.持ってきた設定をMac OS Xのディレクトリにコピー.
~/Library/Thunderbird

これでOK!とてもらくちん♪