カテゴリー: PHP

Home / カテゴリー: PHP

phpフレームワーク探しの旅

2012-04-26 | FuelPHP, PHP | コメントはまだありません

CodeIgniter関連の記事を見ていると、どーもライセンス的に雲行きが怪しいとか、CI(CodeIgniter)の開発者が一部別プロジェクトに流れているとかいう話が見えてきます。

で、KohanaPHPとFuelPHPというのが目についた次第。
ちゃんとプロジェクトが続いてくれれば文句はないんですが、かつて一世を風靡した感のあるMojaviみたいに「あれメンテ止まったぞオイ」みたいなのは避けたい。
さしあたり、FuelPHPの評判がCodeIgniter界隈では良いみたい。
さわってみよーう。

なにがいいって、ロゴがかわいいんだよ。またそれか。

phpフレームワーク選定のまき

2012-04-25 | PHP, Xrea, さくらのVPS | コメントはまだありません

Symfony CakePHP ZendFreamWork CodeIgniter Ethna
フレームワークの選定はこのへんの線で考えてたんですが、CodeIgniterで決まりそう。
sessionが微妙みたいな書き込みあったんですが、どのみちWebサーバ複数台になるのでDBかなんかに値渡すハメになるしね。もんだいなかろ。
ZendFWもさらっと触ったんですが、学習コストが大きいという感触。
良い悪いと言うよりは用途と好みの世界ではある。
ZendFWで一番びっくりしたのは、ドキュメントだけで200MB超えてたこと。なんなの。
早めに触ってみて、致命的な問題が埋まってないかどうか確認しないとね。

さしあたりこれらの環境(php5+MySQL+CodeIgniter+Twig)を、自分ちのローカルとxreaにセットアップ。xreaは研修の見本用。
自分のPCにMySQL入れるのやだなあ。
入れる必要もないなあ。
自宅鯖に入ってた。これでいいじゃん。

さくらのVPSにphp5.3をインストール

2012-04-25 | PHP, さくらのVPS | コメントはまだありません

検索で引っかかった悲惨な方へ:あちこちに記事上がってるのでちゃんとしたのはそちらを読みましょう。
ここはおねーさんのメモ書きです。
http://www.tooyama.org/yum-addrepo-epel.html
ここ見ればだいたい分かるはず。EPELってなんなのっていう疑問は丸呑みで。

calltellaさんとこも参考になる記事がワラワラある。

以下は自分用のメモ書き

さくらVPS:php5.4インストール試行

yumで普通に入れると
php -v
PHP 5.1.6 (cli) (built: Feb 22 2012 19:21:52)
ありえん。

まず環境チェック
http://support.sakura.ad.jp/manual/vps/ossetup.html
インストールOS :CentOS 6.2 x86_64
6だった

以下の手順は
http://www.tooyama.org/yum-addrepo-epel.html
ここみながら行う

優先度を設定するyum-priorities
yum -y install yum-priorities

cd /etc/yum.repos.d
vi /etc/yum.repos.d/CentOS-Base.repo
priorityをあちこちに付加
vimじゃなくてviがインストールされてたので、最初コピペして少々ビビる

EPELをインストール
# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
# rpm -ivh epel-release-6-5.noarch.rpm

これだとだめで↓
warning: epel-release-6-5.noarch.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID ********
error: Failed dependencies:以下略

# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
こっちで入った。

rpm -ivh epel-release-5-4.noarch.rpm
warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID ********
Preparing… ########################################### [100%]
1:epel-release ########################################### [100%]
6じゃなくて5なの?そう……。

epel.repoを開いて、
[epel]に
priority=2
を追加。

yum install php
だめ。また5.1.6を取りに行こうとしてる。ナニコレ

「EPEL リポジトリを見にいくようにするには –enablerepo=epel オプションを付けます。」
http://d.hatena.ne.jp/t2y-1979/20110430/1304140587

なるほどー

yum install php –enablerepo=epel
php-commonとかがコンフリクトしてるよと怒られる。
あらかじめ入ってたphpはremoveしてあるんだけどなあ
yum remove phpだけではだめだた?
yum remove php-*できれいにする。
php-commonとかいろいろあった。

yum install php –enablerepo=epel
だめ。5.1.6。
yum install php53 –enablerepo=epel

====================================================================
 Package                     Arch     Version      Repository  Size
====================================================================
Installing:
 php53                       x86_64   5.3.3-5.el5  base       1.3 M
Installing for dependencies:
 php53-cli                   x86_64   5.3.3-5.el5  base       2.4 M
 php53-common                x86_64   5.3.3-5.el5  base       605 k

Transaction Summary
====================================================================
Install       3 Package(s)
Upgrade       0 Package(s)

Total download size: 4.3 M
Is this ok [y/N]: 

きーたー

で、PHPのコンパイルオプションをコマンドラインで確認する方法を参考にオプション取得
php -i | grep configure | sed -e ‘s/ /\n/g’

'./configure'

'--build=x86_64-redhat-linux-gnu'
'--host=x86_64-redhat-linux-gnu'
'--target=x86_64-redhat-linux-gnu'
'--program-prefix='
'--prefix=/usr'
'--exec-prefix=/usr'
'--bindir=/usr/bin'
'--sbindir=/usr/sbin'
'--sysconfdir=/etc'
'--datadir=/usr/share'
'--includedir=/usr/include'
'--libdir=/usr/lib64'
'--libexecdir=/usr/libexec'
'--localstatedir=/var'
'--sharedstatedir=/usr/com'
'--mandir=/usr/share/man'
'--infodir=/usr/share/info'
'--cache-file=../config.cache'
'--with-libdir=lib64'
'--with-config-file-path=/etc'
'--with-config-file-scan-dir=/etc/php.d'
'--disable-debug'
'--with-pic'
'--disable-rpath'
'--without-pear'
'--with-bz2'
'--with-exec-dir=/usr/bin'
'--with-freetype-dir=/usr'
'--with-png-dir=/usr'
'--with-xpm-dir=/usr'
'--enable-gd-native-ttf'
'--without-gdbm'
'--with-gettext'
'--with-gmp'
'--with-iconv'
'--with-jpeg-dir=/usr'
'--with-openssl'
'--with-pcre-regex=/usr'
'--with-zlib'
'--with-layout=GNU'
'--enable-exif'
'--enable-ftp'
'--enable-magic-quotes'
'--enable-sockets'
'--enable-sysvsem'
'--enable-sysvshm'
'--enable-sysvmsg'
'--with-kerberos'
'--enable-ucd-snmp-hack'
'--enable-shmop'
'--enable-calendar'
'--without-sqlite'
'--without-sqlite3'
'--with-libxml-dir=/usr'
'--enable-xml'
'--with-system-tzdata'
'--enable-force-cgi-redirect'
'--enable-pcntl'
'--with-imap=shared'
'--with-imap-ssl'
'--enable-mbstring=shared'
'--enable-mbregex'
'--with-gd=shared'
'--enable-bcmath=shared'
'--enable-dba=shared'
'--with-db4=/usr'
'--with-xmlrpc=shared'
'--with-ldap=shared'
'--with-ldap-sasl'
'--with-mysql=shared,/usr'
'--with-mysqli=shared,/usr/lib64/mysql/mysql_config'
'--enable-dom=shared'
'--with-pgsql=shared'
'--enable-wddx=shared'
'--with-snmp=shared,/usr'
'--enable-soap=shared'
'--with-xsl=shared,/usr'
'--enable-xmlreader=shared'
'--enable-xmlwriter=shared'
'--with-curl=shared,/usr'
'--enable-fastcgi'
'--enable-pdo=shared'
'--with-pdo-odbc=shared,unixODBC,/usr'
'--with-pdo-mysql=shared,/usr/lib64/mysql/mysql_config'
'--with-pdo-pgsql=shared,/usr'
'--with-pdo-sqlite=shared,/usr'
'--enable-json=shared'
'--enable-zip=shared'
'--without-readline'
'--with-pspell=shared'
'--enable-phar=shared'
'--enable-sysvmsg=shared'
'--enable-sysvshm=shared'
'--enable-sysvsem=shared'
'--enable-posix=shared'
'--with-unixODBC=shared,/usr'
'--enable-fileinfo=shared'
'--enable-intl=shared'
'--with-icu-dir=/usr'

わい。
ちなみに

PHP Warning: Unknown: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Tokyo’ for ‘JST/9.0/no DST’ instead in Unknown on line 0

あー。タイムゾーンの設定ないんだなー。Asia/Tokyoだかってあれをphp.iniにアレすんだ。うろ覚えですが。
php.iniに
date.timezone = Asia/Tokyo
設定。シングルクオートがダメなのは覚えてるんだけどクオート必要なんだっけかなあ

php -i | grep configure | sed -e ‘s/ /\n/g’

うんまあおこられなくなったよ。さしあたりこれでよし。
なにphp入れてんだって?仕事でなんかこさえることになりそうなので、フレームワークの選定すんですよ。いまのとこCodeIgniterの感触がとてもよい。素直なつくり。
Symfony悪くないけど、viewに渡す変数を奇妙なオブジェクトでくるむのが嫌。
CakePHPはなんでも配列にしたがるのとORマッパでデータ取って来る時のJOINの癖が嫌。
ZendFWは評価できるほど使ったことないんだけど大掛かりなイメージ。触ってはみる予定。
大問題なポイントは、ド素人に近いメンバーも参加するって点。学習曲線が緩やかでないとまにあわなーい
わーん

引き続きHaskell

2012-02-16 | Haskell, PHP, Python | コメントはまだありません

なんなんだあの\x -> なんとかかんとかみたいなのは。
さしあたりリスト。Pythonとは違い、イミュータブルだって。というかざっと見た感じほとんどそうなんではないかという勢い。わからんなあ。

で、range()みたいなノリでリストを作れるのね。

Prelude> [1..10]
[1,2,3,4,5,6,7,8,9,10]

ふーん。あ、でもrange(1,10)の結果は[1, 2, 3, 4, 5, 6, 7, 8, 9]だからちょっと違う。

Prelude> [1,2..10]
[1,2,3,4,5,6,7,8,9,10]

ふんふん。

Prelude> [1,2,3,4..10]
<interactive>:1:9: parse error on input `..'

えっなに。あたしの想定では[1,2,3,4,5,6,7,8,9,10]なんだけど。なんなの。

Prelude> [1,2,3..10]
<interactive>:1:7: parse error on input `..'

んーー?

Prelude> [1,5..10]
[1,5,9]

えっなにそれキモい。なんで1,5,9なのん。。。

Prelude> [1,5..30]
[1,5,9,13,17,21,25,29]

あー!あー。
等差数列。
なるほど。。。
マニュアルもななめ読みで適当に打ってたらこうなったというお話。

全然関係ないですが、TwigってJinja(Jinja2)にそっくりさん?Jinja2のテンプレートそのまま使えるんじゃないかってくらい似てる。
おかげさんで読みやすいのなんの。
素のphpでテンプレート書くの嫌だし今日びSmartyもないわなーというときに、これはいいんでないか。
Jinja2にそっくりだという点だけがポイント高いわけですが。趣味的に。

ぜんぶapacheさんがよろしく沙汰しとってくれてた部分も意識する必要があって、
「そんなことしないと動かないの?」
っていうのが大きい。と思うのね。
その違和感と言うかギャップというのか、そういうのを解消する助けになる記事をそのうち書こうと思います。

  1. アプリケーションサーバっつうのがあって、ポート開いて待受をしたりする。アパッチさんやNginxさんあたりがポート80番で受け取ったのを、別ポートで待ち受けてるアプリケーションサーバに渡したりするんだな。apache:80→pylons:8050とかさ。そういうの。
  2. phpはapacheモジュール(mod_php)で動くから、Permissionいじんなくてもいいんだな。あいつが色々とやってくれる運びになってる。pythonも昔はmod_pythonとかあったけど今使う人あんまいないよ。wsgiっつうしかけがあって、説明読んでも意味分からんかもだけどそっちが主流ってもっぱらの噂
  3. いっちばん最初に1ファイルのCGIでもいいのでpython動かしてみよう、のときにどうしたら良いのか正直わからない
  4. php.net/manual/jaみたいなわかりやすい総本山が見つからない。ここ見て
  5. あと、version2.5のだけどチュートリアルを何度も読むのがいいと思う。コマンドラインとかで色々やるのつまらないと思うけど、ひととおりやって、それからCGIで動かしてみるっていう順番でライブラリリファレンス見るといいと思います。HTMLになってくれないと調子でないよね正直。
  6. 「借りてるレンタルサーバはpythonって入ってない」これ多くてコケる人多いと思う。ソース落としてきてコンパイルしちゃえよ。./configure prefix=/home/youraccount/pythonってやりさえすればいいんだ。ほんとよ(これはそのうち書く)。
  7. いまどきはvirtualpythonぽ
  8. PEARいっこどどんと落としてくれば済んだのにじぶんでeasy_install!pip!→import!import!ってめんどくさい。分かるよ兄弟。でもrequire_onceつかってたろ。同じことだよ
  9. auto_loadだっけ。あれは悪魔の所業だ。どこで何が起きてるのかわからないじゃんね
  10. どっかで定義すれば適当に使えていた定数とか、あれnetbeansでも入れてなければ、どこで定義されてるか追いかける気にもならないよね。pythonのimportでフルパスに近い書き方させられるのは、書いたあとで手を入れたとき、重要な意味を持つってわかると思う。もっともpythonも最近は相対パスっぽい呼び方できるんだけど、まあ「どこにあるそれを呼ぶのか」が明示的なのはメリット大きい
  11. そんなの規約で定めればいいじゃん、結構ですがそのルールきちんと機能し続けるにもなかなか苦労が
  12. 2と3どっちがいいの!?2011年11月時点では2.7でよいと思いますのよ

(さらに…)