アーカイブ

‘開発’ カテゴリーのアーカイブ

【追記】Apacheの設定に四苦八苦

2009 年 12 月 4 日 少佐 コメント 4 件

今までテスト環境を構築するのにXAMPPに頼ってたが、
今回はApache、MySQL、Perl、PHPと個別にセットアップする事に。

・・・・・で、いきなりApacheの設定で躓いたというorz
とりあえず、インストールしてから躓くまでの経緯を。

インストール

  • apacheの公式からapache_2.2.14-win32-x86-no_ssl.msiをダウンロード。
  • インストーラーを起動。
  • NetworkDomainとServerNameをlocalhostに。
  • “for All Users, on Port80, as a Service — Recommended”にチェック
  • taskbar Icon と Document は外してカスタムインストール
  • http://localhost/にアクセス。

localhost

・・・・ここまではクリア。

httpd.exe に PATH を通す

以下のパスを環境変数 PATH に追加する

C:\Program Files\Apache Software Foundation\Apache2.2\bin

「管理者として実行」したコマンドプロンプトから

> httpd -k start
> httpd -k stop
> httpd -k restart

のように、ウェブサーバの開始、停止、再起動が出来るように。

UserDir 設定

ここで躓いた。

C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf の
123 行目をコメントイン

LoadModule userdir_module modules/mod_userdir.so

455 行目をコメントイン

Include conf/extra/httpd-userdir.conf

次は、

C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-userdir.conf

UserDir "C:/Users/*/Website"
<Directory "C:/Users/*/Website">
AllowOverride All
Options ExecCGI Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>

・・・・といった感じに編集。

ディレクトリC:\Users\syo-sa\Websiteを作成。

これで、http://localhost/~syo-sa/にアクセスすると、C:\Users\syo-sa\Website以下を参照するはずが・・・

syo-sa

・・・・失敗orz

とりあえず、C:\Program Files\Apache Software Foundation\Apache2.2\logs\error.logを参照。

http://localhost/~syo-saにアクセスした時のログを見ると・・・

[Thu Dec 03 14:42:33 2009] [error] [client 127.0.0.1] File does not exist: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/~syo-sa

・・・・これは、C:\Users\syo-sa\Website以下を参照するはずが、何らかの原因で
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/~syo-sa
が参照されていると見るべきだろうか・・・?

試しにC:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-userdir.conf を

UserDir "C:/home/*/public_html"
<Directory "C:/home/*/public_html">
AllowOverride All
Options ExecCGI Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>

に編集してから、同じようにディレクトリC:\home\syo-sa\public_htmlを作成。
もう一度アクセスしてみるものの、やはり失敗。

・・・・と、なるとC:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf が原因か。

とりあえず、マニュアル見つつ、もう少し調べてみます。

【追記:09/12/07】

アクセスログ書いてなかった(’’;

http://localhost/にアクセス時http://localhost/にアクセス時
127.0.0.1 – - [07/Dec/2009:04:38:14 +0900] “GET / HTTP/1.1″ 200 44
127.0.0.1 – - [07/Dec/2009:04:38:15 +0900] “GET /favicon.ico HTTP/1.1″ 404 209

http://localhost/~syo-sa/にアクセス時
127.0.0.1 – - [07/Dec/2009:04:42:04 +0900] “GET /~syo-sa HTTP/1.1″ 404 205
又は
127.0.0.1 – - [07/Dec/2009:04:29:43 +0900] “GET /~syo-sa/ HTTP/1.1″ 404 206

カテゴリー: 開発 タグ:

ねんがんの ノートパソコンを

2009 年 11 月 26 日 少佐 コメント 2 件

手に入れたので、買ってからした事、これからする事などをまとめてみる。

ノートPCを買おうと思った経緯など

以前からブログにまとめようと思ってて、結局書かずじまいになってしまってる事なんですが、
10月辺りから11月の頭にかけて、名古屋Ruby会議01わんくま大阪#32Vim勉強会#4
・・・と、いった感じに勉強会に参加してました。

それで参加してるときに、
「やっぱり、外で使えるマシン欲しいよなー・・・ってか、勉強会によっては
マシン持ってきてないの俺だけだよ、恥ずかしいぃ!!」
・・・・と、思ったわけです、ハイ。

その上、丁度わんくま大阪に参加した時に中さんから「少佐もわんくまで喋ろうよ!」
と、いう話が出てきて、1月23日にLT(ライトニング・トークで)で喋ることになり、
これはいよいよノートPC要るなということで、ノートPC購入に踏み切った次第です、ハイ。
(確か、4月もセッションとか言ってた気が(@@;

ノートPCのスペックとか

OS:WindowsVista HOMEPremium 32bit
CPU:Core2Duo T9500
メモリ:2GB

・・・・大体こんな感じ。

とりあえず、買ってからやった事

まずは初期設定。

開幕ノートンが立ち上がる。何やら有効化しろとか言ってるけど、スルー。

まずはタスクマネージャを立ち上げる。何もしてないのに46%も食ってやがる・・・
・・・Vistaってこんなもんなの?

Windowsのアップデート⇒再起動を無くなるまで繰り返す。

サイドバーが鬱陶しいので、閉じる。立ち上げた時に勝手に開かないようにも設定。

ノートン要らない(てか、個人的にあまり好きになれない)ので、アンインストール。

Avast!をダウンロードしてインストール。

再びタスクマネージャを見ながら、要らないプロセスは無いかと探してみる。

これといったものがないので、FireFoxをインストール。

必要なアドオンをインストール←イマココ!

これからどうするか?or何を入れるか?

3週間位でWin7が届くので、最終的にはWin7とUbuntuのデュアルブートで開発環境を構築したいところ。
しかし当面はVistaを使うことになるので、Vistaで環境構築。

あと、可能ならメモリも2GBから4GBに増設したいですね。

入れたいものをこの記事を参考にしつつ(?)、思いつくまま挙げていくと・・・

  • Vim(主にRuby、PHPを書くため)
  • Eclipce(Java用、たまにPHP)
  • Apache(ローカルのテスト環境)
  • PHP5.2.x
  • Ruby1.9.x
  • Rails
  • JDK6
  • MySQL
  • PostgreSQL
  • バージョン管理ツール(subversionとか?)

とりあえず、今考えられるのを挙げていくと、こんな感じですかね。
Apache、MySQL、PHPに関しては、今までXAMPPで一度に入れてたんですが、
今回は各々別々に入れていこうかなと思っています。

とりあえず、まずはVimとRuby辺りから入れていくかな・・・。

カテゴリー: お知らせ, 勉強会, 日記 タグ: , ,

名古屋Ruby会議01に参加します。

2009 年 9 月 16 日 少佐 コメント 2 件

少し前からRubyが気になってた私ですが、
10月10日に名古屋にてRubyの勉強会があるとのことで参加してきます。
詳細は下記リンクにて。

名古屋Ruby会議

というわけで、これを機に以前買った、Rubyの技術書を読みつつ、
少し本腰入れてRubyの勉強始めようかと。
まずは・・・


print("Hello, Ruby.\n")
Hello, Ruby.
カテゴリー: Ruby, 勉強会, 開発 タグ: ,

分業とか考えたら負けかなと思う(ほぼ個人的なメモ)

2009 年 8 月 21 日 少佐 コメント 3 件

夕べダラダラとTwitterを眺めていたら、Smartyとかデザイン・ロジックに関するPOSTを見かけたので、
気になったPOSTを、メモ代わりに載せてみる。

3年前まではSmarty超便利!とか思ってたけど、今は全然いらないと思ってる。
http://twitter.com/pasela/status/3408925414

私も最近は、なるべくSmartyを使っていくようにしています。 完全に分離して作業してる訳じゃないけどな
http://twitter.com/hitsug/status/3416010941

表示に関わる加工はmodifierでやる派なので、そういうのが書きやすいのはまぁいいかな。あとキャッシュの制御自前でやるのマンドクセとか。
http://twitter.com/pasela/status/3408991708

自分の中ではSmartyの便利さよりも不便さのほうが気になってきた感じ。
http://twitter.com/pasela/status/3409009137

素のPHPをテンプレートとして使うには、テンプレートとして使うファイルだけshort_open_tagを有効にしたいとか、sandboxをどう作るかとか、キャッシュをどう制御するかとか、それなりに考えないといけないのが面倒。今度暇見つけて考えてみるかな。
http://twitter.com/pasela/status/3409173172

@syo_sa1982 デザインとロジックを切り離すという幻想は何年か前に捨てたw
http://twitter.com/pasela/status/3409262014

まあ完全に切り離す事は出来んだろうなぁ・・・・。俺が無知なだけかも知れんけど、何かしら HTML に PHP のコード混ざるわけだし。
http://twitter.com/syo_sa1982/status/3409398036

@syo_sa1982 ロジックの分離がデザイナーのためなのか、ビジネスロジックの分散防止のためなのかで意味が異なってくるけど、前者については諦めた。
http://twitter.com/pasela/status/3409415718

@pasela あれ?もしかして需要あるかな?デザインファイルの直前に、ロジックファイル置いてるから、PHPさえできればかなり直感的に扱えるようになってるんですよね。デザイナーには最低HTMLの知識は必要かもだけど。
http://twitter.com/aulta/status/3409442879

ロジックと言ってもビジネスロジックと ビューのロジックは別のもので、ビジネスロジックがビューに混入するのは問題外だけど、ビューのロジックがビジネスロジックに混じってるのもダメというの が俺の考え。例えば日付をどう見せるかとか、数字を3桁カンマ区切りにするとかは表示のためのロジック。
http://twitter.com/pasela/status/3409489776

@syo_sa1982 Smartyとか使ったところでデザイナーにしてみれば、なにこのファイルってなるし、せっかくPHP覚えたのにまだ覚えるのかよ!みたいになるしw
http://twitter.com/pasela/status/3409585171

@pasela うーん。。ビューの中で制御が入るのは?Smartyでも .tplのなかで、ifやループが多用されるよね。こういうのはロジック側で処理しておくべきだと思う。
http://twitter.com/aulta/status/3409609140

@aulta 自分の中ではテンプレート=ビューではなく、ビューの一部がテンプレートです。なので条件分岐などが必要ならビューの中で処理するという考えは変わりません。
http://twitter.com/pasela/status/3409696997

@aulta しかしどれだけ理想を掲げたところで、実際にはテンプレート上に条件分岐やループ書いた方がどう見ても簡潔だろ、ってのがあるのは事実かなぁとw
http://twitter.com/pasela/status/3409738613

@pasela なんかその辺の、PCリソースがどうってことなら、昔は速度を追及したこともあったけどもういいかな。と思い始めてる。テンプレ内に制御が必要(というか書く方が簡潔)という考えになってしまうのは、どのフレームワークも完成されてないからだと思うよ。
http://twitter.com/aulta/status/3409824738

たぶんさっきのロジックの話と同じで、テンプレート上の制御構造についても区別が必要なんだろうなぁ。制御構造がまったくないテンプレートエンジンを使ったことがあるけど、それはそれで見通しの悪いものになった覚えがある。
http://twitter.com/pasela/status/3409995698

「値がなかったらデフォルトを表示す る」程度なら排除できるけど、「その部分にメッセージブロックなどを表示する」ぐらいになると、どうするのがベストなのか未だによくわからない。そこに出 すもの丸々変数にするのはいただけないし、やっぱブロックごとにパーツ化して組み合わせるのがいいのかなぁ。
http://twitter.com/pasela/status/3410066495

テンプレートから制御構造を排除したことで、ホスト言語にHTML(の断片)を書く羽目になるなんてのは本末転倒だと思うので、やっぱりページ中の一部が変わるような制御をどうするかがカギなのかなぁ。
http://twitter.com/pasela/status/3410199734

・・・・と、まあSmartyに関するPOSTはこんな感じ。
纏め切れてない感満載ですね。や、単純にふぁぼったPOST載せただけだけども。

個人的には、当初はデザイナーとの分業を目的としてSmartyを使い始めたのもあるけど、
その辺はほとんど諦めかけてるので、上に書いてあった、「ビジネスロジックの分散防止」を意識して行こうかなと。

・・・てことはフレームワークを勉強するとかそういう話になってくるのかな。
だとしたら、今は分業目的以外でも便利なので、Smarty使い続けつつ、
何かしら、フレームワーク(例えばCakePHPとか)を勉強して、必要に応じてSmarty使うかどうか決めると言うのが良いのかも。

まあ何にせよ、「Smarty使ってて便利だけど、実際どうよ?」って思うところはあったので、この手のPOSTは非常にありがたいです、ハイ。

カテゴリー: PHP, 日記, 開発, 駄文 タグ: , ,

MySQL覚え書き(メモ)

2009 年 4 月 29 日 少佐 コメント 4 件

MySQLi拡張サポート

http://jp2.php.net/manual/ja/book.mysqli.php

PHP5から新たに使える機能で、オブジェクトAPIでMySQL制御できるとの事。
・・・んー、要するにMySQLiというクラスが最初から定義されてるということかね?

<?php
//通常のMySQL関数
$MySQL =mysql_connect( "localhost", "root", "", "testdb" );
$Result = mysql_query( $MySQL, "select no1, no2 from hoge order by no1" );
if( mysql_error( $MySQL ) != "" ){ die( mysql_error( $MySQL ) ); }
while( $Array = mysql_fetch_array( $Result ) )
{
print_r( $Array );
}
?>
<?php
//mysql拡張サポートで書き換えた場合
$MySQL = new mysqli( "localhost", "root", "", "testdb" );
$Result = $MySQL ->query( "select no1, no2 from hoge order by no1" );
if( $MySQL -> error != "" ){ die ( $MySQL -> error ); }
while( $Array = $Result -> fetch_assoc ( ) )
{
print_r( $Array );
}
?>

ここまでの疑問点

  1. 上でも書いたけど、これは最初から定義されているクラスのようなもの?
  2. MySQLi拡張使うメリットとは?

プリペアドクエリとバインド変数

クエリを二段階に分けて実行する手法。
引数のみ異なる同一のクエリを複数回行う時に構文解析が一回で済むので、実行効率の向上が期待できる。

・・・こっちはそれとなく理屈はわかる・・・かも。

<?php
//プリペアドクエリ&バインド変数の例文
include( "child.inc" );
try{
$ChildMySQLi = new ChildMySQLi ( "localhost", "root", "", "testdb" );
$SecltStmt = $ChildMySQLi->prepare( "select no1, no2 from hoge where no1 < ? order by no1" );
$SecltStmt->bind_param( "i", $wNo1 );
$wNo1 = 5;
ChildStmt::execute( $ChildMySQLi,$SecltStmt );
$SecltStmt->bind_result( $No1, $No2 );
while( $SecltStmt->fetch() ){
echo "-------------------\n".
"no1 = ".$No1."\n".
"no2 = ".$No2."\n\n";
}
} catch( Exception $Exception ){
print_r( $Exception->getMessage()."\n" );
}
?>

数週間後に続く

カテゴリー: PHP タグ: ,