php,ruby,MySQLリファレンスを印刷してみる

Rubyのリファレンスを買おうと思ったら3000円近くしたので買うのをやめる。代わりに、Web上に公開されているリファレンスを印刷して市販の2穴ファイル*1に綴じた。

これがべんりべんり。いつでも見られる&書き込める。リファレンスなんて自分の想像力の補完でしかないわけだし、苦手なところだけ綴じておけばおk。分厚くて高いリファレンス本など不要。

OSXでは、よく使う印刷設定をプリセットとして保存できる。とじしろ指定、両面印刷を設定したプリセットを「ドキュメント印刷用」として保存しておくと便利。ちなみに、今回印刷したのは

*1:無印の黒い再生紙のファイルだ

さくらのレンタルサーバでRuby on Railsする

さくらにRubyを入れる (それなりブログ)より。

  • TELNETでログインしたら
telnet hoge.sakura.ne.jp
  • これで自分の$HOMEに自前rubyをインストールするよ
cd $HOME/local/src
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz
tar xzf ruby-1.8.6.tar.gz
cd ruby-1.8.6
./configure --prefix=$HOME/local
make
make install
  • 次は$PATHを通そう
  • 自分の$HOMEディレクトリにある .profile ファイルに次の1行を付け加える

PATH=$HOME/local/bin:$PATH

  • .profileはシェルにログインしたときにしか実行されないから、今すぐ.profileを有効にしよう
cd $HOME
source .profile
  • 次はrubyライブラリ、gem*1のインストールだ
  • railsはgemに入ってるよ
cd $HOME/local/src
wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz
tar xzf rubygems-0.9.2.tgz
cd rubygems-0.9.2
ruby setup.rb
  • railsmysqlをインストールしよう
  • リモートインストールでは--remoteが必要だ
gem install --remote rails --include-dependencies
gem install --remote mysql
  • できたよー
  • と思ったらなんか出てきた。とりあえずrubyだから3にしとこう(大丈夫か?)
[reela@www246 ~]$ gem install mysql
Select which gem to install for your platform (i386-freebsd6.1)
 1. mysql 2.7.3 (mswin32)
 2. mysql 2.7.1 (mswin32)
 3. mysql 2.7 (ruby)
 4. mysql 2.6 (ruby)
 5. Skip this gem
 6. Cancel installation
> 3
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
  • インストールできたみたい
  • これで環境はそろったはず!

*1:pearとかCPANみたいなもの

iPhotoの写真やiTunesのライブラリをNAS上に置いて共有する

  • うちには3冊のMacBookがあるけど、iTunesライブラリはバラバラ*1
  • Apple純正の「音楽を共有」「写真を共有」は、ホストマシンの電源がついていないと不可能。うちみたいなノート主体のネットワークには向いていない
  • 幸いうちにはTime Capsuleがあるから、ここにライブラリをおいとこう

追記:以下はMacOSX10.4.11 Tigerの情報

とりあえずiTunesから

  • iTunesはライブラリの場所を環境設定からいじれるのさ


  • "詳細"タブからNAS上に作ったiTunes Libraryを選択しよう
  • "ファイル"-"ライブラリ"-"ライブラリを統合"でマシン上の音楽ファイルがNASにコピーされる
  • 終わったらいったんiTunes終了して、"Option"キーを押しながらiTunesを起動するとこんなダイアログがでてくる


  • "ライブラリを選択"でNAS上のライブラリファイルを指定してやる
  • これで音楽ファイルだけじゃなくてライブラリも共有できるようになった
  • これをすべてのマシンで繰り返すだけだよ

おつぎはiPhoto

  • iPhotoは環境設定でライブラリの位置を指定できない。もちろん統合もできない
  • とりあえずメインマシンの"iPhoto Library"フォルダをNASにコピーしておこう
  • iTunesと同じように"Option"キーを押しながらiTunesを起動しよう
  • iTunesの場合とほぼ同じダイアログがてくる


  • 同じく"ライブラリを選択"でNAS上の"iPhoto Library"ディレクトリを指定してやる。これでOK
  • でもiPhotoはサムネイルの読み込みがあるから表示は遅いよ

*1:家族の音楽の趣味がそもそもバラバラなのです

phpMyAdminよりも16倍かっこよくMySQLデータベースをブラウザから管理する

  • 高機能だけど重くてモサいphpMyAdmin、これに取って代わるものはないのかと探していたら見つかった
  • その名も"SQL Buddy"だよ


  • Ajaxを駆使してるから画面遷移が数倍早いし、なによりもかっこいいんだ
  • かっこいいのってけっこう重要
  • ショートカットも使えるよ


  • 特にどの画面からでも"Q"キーでMySQLクエリを素早く発行できるのは、細かくデータベースの中をいじくりたいときにとても便利
  • これさえあればターミナルいらないね
  • でも複雑なJOINをしたときの挙動とかは不安定なので、そっちはphpMyAdminの担当で

SQL Buddy - Web based MySQL administration

pearのXML_SerializerをsimpleXMLっぽく使う

<?php

require_once("XML/Serializer.php");
header("Content-Type: text/xml; charset=utf-8");

$xml = array("item" => array("hoge","hoge","hoge"));
//これがXMLにしたい配列だよ

$param = array(
   XML_SERIALIZER_OPTION_INDENT => "\t",
   XML_SERIALIZER_OPTION_XML_ENCODING => 'UTF-8',
   XML_SERIALIZER_OPTION_XML_DECL_ENABLED => TRUE,
   XML_SERIALIZER_OPTION_ROOT_NAME => 'xml', 
   XML_SERIALIZER_OPTION_ROOT_ATTRIBS =>
     array('version' => '2.0','encoding' => 'UTF-8'), 
);
//いろんなオプションがあるんだ
    
$serializer = new XML_Serializer($param);
$serializer->serialize($this->xml);
echo $serializer->getSerializedData();

?>
  • とすると
<xml encoding="UTF-8" version="2.0"> 
	<item>hoge</item>
	<item>hoge</item>
	<item>hoge</item>
</xml>
  • っていうXMLを表示してくれる…とおもったら違った
<xml encoding="UTF-8" version="2.0"> 
	<item> 
		<XML_Serializer_Tag>hoge</XML_Serializer_Tag> 
		<XML_Serializer_Tag>hoge</XML_Serializer_Tag> 
		<XML_Serializer_Tag>hoge</XML_Serializer_Tag> 
	</item> 
</xml>
  • なんだこのXML_Serializer_Tagって
  • 調べてみると連想配列じゃない普通の配列はデフォルトでこういう名前のタグに変換されるみたい
  • よけいなおせわだ
XML_SERIALIZER_OPTION_DEFAULT_TAG => 'fuga',
  • この一行を$paramの中に加えれば名前は変えられるけどスマートじゃないね
  • serialize();するまえに
$serializer->setOption('mode','simplexml');
  • この1行を入れてみると
<xml encoding="UTF-8" version="2.0"> 
	<item>hoge</item> 
	<item>hoge</item> 
	<item>hoge</item> 
</xml>
  • ちゃんと返してくれるようになった。やったね!
  • XML_Serializerちょうべんり

*1:ほんとはオブジェクトでも大丈夫

Macの便利な開発環境MAMPにpearを入れてみる

  • 写真は超有名なMAMPだよ
  • Mac+Apache+MySQL+PHPの略らしい
  • WindowsではXXAMPにあたるのかな、数分で開発環境を整えてくれるすぐれものパッケージさ

MAMPのダウンロードはこちら:
living-e AG: MAMP - Mac - Apache - MySQL - PHP

  • さて今回はMAMPphpの便利なライブラリpearを入れてみよう
  • MAMPpearはここにある
cd /Applications/MAMP/bin/php4/bin/
cd /Applications/MAMP/bin/php5/bin/
cd /usr/bin
sudo mv pear pear_original
sudo ln -s /Applications/MAMP/bin/php5/bin/pear ./pear
  • これでどこからでも一発でMAMPpearが打てるようになった
$ pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.9   stable
  • とりあえず入ってるパッケージをリストアップして、今回は
    • Auth
    • Log
    • XML_Serializer
  • のみっつをインストールするよ
  • とりあえずやってみよう
$ pear install Auth
$ pear install Log
$ sudo pear install Auth
$ sudo pear install Log
  • でけた
  • pearの場合アルファ版やベータ版*1をインストールするときには「バージョンも指定しなさいよ」と怒られる。XML_Serializerはまだベータだから
$ sudo pear install XML_Serializer-0.19.0
  • これでOK、pear使えるようになった

*1:バージョンが1より小さいよ

php+MySQL+jQueryでWebアプリつくるよ日記

  • Webプログラミングの勉強のためになんかWebアプリ作ってみるよ
  • そのためにさくらのスタンダードサーバ借りたよ
  • お金払ったらがぜんやる気出てきた
  • ついでに受験勉強できるWebアプリがいいな
  • iKnow!かっこいいぜ
  • Ajaxで学習アプリ作ろうかな、そうしよう
  • ライブラリは最近はやりのjQueryにしよう、そうしよう
  • 時間ないしpearもフル活用しちゃえ
  • CakePHP…ケーキ? なにそれおいしいの? めんどくさいからやめとこ*1
  • とりあえず見切り発車ではじめよう
  • というわけで始動します

*1:CakeつかうくらいならRuby習得しちゃうもんね