2011年02月20日

[Rails] 携帯サイトでRESTfulなlink_toが使えない

Rails3.0でPC・携帯両対応のサイトを構築中です。単なるメモです。

携帯だけ No route matches "/hoge/6/fuga" とかいうエラーが出て調べてところ、携帯サイトでは REST問題 というのがあるんですね。

<%= link_to 'これでOKと伝えたい', fuga_hoge_url, {:method => :put} %>

がJavaScriptが動かないのでputではなくgetになってしまって、エラーなのでした。Rails3.0では、rails.jsが_methodとかをPOSTするように変換しているんですね。携帯ではrails.jsなんてありませんから、putになりません。

仕方がないので、フォームを記述してみました。

<% form_tag fuga_hoge_url, :method => :put do %>
<%= submit_tag 'これでOKと伝えたい' %>
<% end %>

一応動いたから、これでよさそう、かな?
ラベル:Rails 携帯
posted by 急いでジャンプ at 15:40| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2011年02月16日

[Rails] ヘルパーメソッドの*_urlと*_pathの違い

いやー、知らずに使っていました。両方とも全く同じだから、どちらを使ってもよい、のだと思っていました。

<%= link_to 'あのページへ', hogehoge_path %>
 ↓
<a href="/hogehoges">あのページへ</a>

<%= link_to 'あのページへ', hogehoge_url %>
 ↓
<a href="http://fuga.com/hogehoges">あのページへ</a>

ということなんですね。どちらでもいいと言えばいいんですが、使う場面によっては意味があったりする訳か。

Web+DB PRESS vol.60 の『jpmobileによるRails 3のモバイルサイト対応』をものすごく参考にさせていただいているのですが、 get_position_link_to の説明(179ページ)に「new_memo_pathではなく、new_memo_urlであることに注意」とあるんですよね。理由を書いていただいてないので、私にはなぜなのか不明...

Railsの常識だったりするんでしょうか。

まあ、絶対アドレスだろうが相対アドレスだろうが、プログラム上は _url なのか _path なのかの違いでしかなく、サイトの引っ越しとかも気にする必要はないし、テストサイトだろうが本番サイトだろうが意識する必要はありません。ということは、絶対アドレスにしておいた方が何かと安心かな、という感じでしょうか。今後は *_url に統一してみようと思います。

(参考)相対URLと絶対URLはどちらがSEOに強いのか?
ラベル:Rails
posted by 急いでジャンプ at 18:57| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

[Rails3.0] Devise ではパスワード自動入力されると不便

Deviseでユーザ認証の仕組みを作っています。PCサイトでも携帯サイトでも簡単に動いてとても便利なのですが、細かいところで調整したくなることがあります。

アカウントの登録内容を変更するとき、

<%= f.password_field :password %>
<%= f.password_field :password_confirmation %>
<%= f.password_field :current_password %>


と3つのフォームが用意され、パスワードを変更しないときは current_password だけ入力、パスワードを変更したいときは全部入力、ということになっているようですね。

しかし、ブラウザの自動入力をONにしていると、一つ目の password に自動的に入力されてしまう可能性があります。 FireFox では毎回そうなってしまっていました。すると、パスワードを変更しない場合は、 password の内容を消して current_password に入力し直し、ということになります。面倒です。

しかたがないので、ページを開いた直後に JavaScript で password の内容を消す、という処理を入れました。 jQuery 版です。JavaScriptを使わない、もっといい方法があるといいのですが。

<script type="text/javascript">
//<![CDATA[
$(function(){
  $("#user_password").val('');
});
//]]>
</script>

細かいことですけど、こういう細かい調整の積み重ねが全体の使い勝手に影響してきますよね。

と,さっき書いたのですが、今気がつきました。

<%= f.password_field :current_password %>
<%= f.password_field :password %>
<%= f.password_field :password_confirmation %>


と順番を変えたら、なんと current_password に自動入力されるようになって、便利になりました。
そうか... いろいろ試さないと気がつきませんねぇ。
posted by 急いでジャンプ at 13:53| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2008年06月20日

Mac OS X 10.5 LeopardのPHP環境

Rubyばっかりやっているわけにはいかず、PHPの既存サイトを直すためにローカルでテストしてみよう、としたら、Mac OS X 10.5 LeopardにはPEARが入っていないんですね。

仕方がないので、PEARとEthnaのインストールをやりました。
$ sudo curl http://pear.php.net/go-pear | sudo php
途中、インストールする場所がこれでいいかどうか聞かれます。
1. Installation prefix ($prefix) : (このコマンドを実行したディレクトリ)
2. Temporary files directory     : $prefix/temp
3. Binaries directory            : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory  : $php_dir/docs
6. Data base directory           : $php_dir/data
7. Tests base directory          : $php_dir/tests
Mac OS Xの流儀として、/usr/shareなのか/usr/localなのか/usr/lib/phpなのか/Private/のどこかなのかよくわかりません。そこで先人の方の設定を何も考えずにまねることにしました。1と3と4を変更して、
1. Installation prefix ($prefix) : /usr/share/pear
2. Temporary files directory     : $prefix/temp
3. Binaries directory            : /usr/bin
4. PHP code directory ($php_dir) : $prefix
5. Documentation base directory  : $php_dir/docs
6. Data base directory           : $php_dir/data
7. Tests base directory          : $php_dir/tests
でインストール完了。コマンドでsudoを入れ忘れたり、php.iniでメモリの量を8Mのデフォルトにしていたら怒られたり(→128Mに変更)、4、5回はやり直しさせられました。

php.iniがgo-pearによって書き換えられるので、「システム環境設定」の「共有」から「Web共有」のチェック入れ直しでApache再起動。

あとは、いつものPEARのパッケージインストールとSmarty、Adodb、Ethnaのインストールです。不要なパッケージもいっぱいありそうだけど、まあ、調べる時間ももったいないから入れてしまいましょう。
$ sudo pear channel-update pear.php.net
$ sudo pear install Net_UserAgent_Detect
$ sudo pear install XML_RP
$ sudo pear install Net_UserAgent_Mobile-alpha
$ sudo pear install XML_Parser
$ sudo pear install XML_Util
$ sudo pear install XML_Serializer-0.18.0
$ sudo pear install pear/MDB2#mysql
$ sudo pear channel-discover pear.ethna.jp
$ sudo pear install ethna/ethna
$ sudo pear install ethna/Smarty
$ sudo pear install ethna/simpletest
$ sudo pear install DB
$ cd /usr/share/pear
$ sudo mv ~/Downloads/adodb .
$ sudo chown -R root:wheel adodb
さあ、これでEthnaを動かしてみましょう。やってみると、Warningの嵐! tmpとlogのディレクトリをchmod 777していなかったため。ちゃんと直して、再度ブラウザからアクセス、成功。
ラベル:leopard Mac OS X PHP PEAR
posted by 急いでジャンプ at 19:36| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2008年06月07日

Rails 2.1 は厳しかった... バージョンダウンします

Rails初心者の私がRailsを即仕事に生かすために、今全面的に頼っているのがこの本です。

この本の通りに手を動かしてアプリケーションを作っています。ところが、最初の方のscaffoldあたりの記述からどうもおかしい。本の通りにやっても動かないのです。エラーとなってしまったり、パラメータが多い、と怒られたり...

半日以上悩んだのですが、わからない。結局原因は、本の記述はRails 1.2、Mac OS Xで先日バージョンアップしたRailsは2.1.0、というバージョンの違いにあったようです。

Rails 2.0のscaffoldを使ってみた - idesaku blog

scaffoldで最初から自動生成するのか、じゃあ、この本のようにモデルが1つでコントローラが2つの場合はどうやって生成するんだろう?それ以外にも動的なscaffoldが他の方法に変わっているようだったり(activescaffold?)、migrateのt.timestamps?が自動で付いていたり、大きなところから細かいところまでたくさん変わっているようです。

バージョンが新しい方が何かといいだろう、とまたしばらくいろいろ悩んだのですが、どうもこの本が役に立たないくらい変わっているっぽい。

初心者につきRailsをバージョンダウン - 404 ないわー Not Found -species5618jp - の日記

私もこの方と同じようにバージョンダウンして、アジャイルな開発法をこの本に忠実に従って身につけていこうと決心いたしましたわーい(嬉しい顔)
$ sudo gem uninstall rails

Select gem to uninstall:
1. rails-1.2.3
2. rails-1.2.6
3. rails-2.1.0
4. All versions
> 3
Successfully uninstalled rails-2.1.0

$ rails -v
Rails 1.2.6
これで、やっとアジャイルな本の通りにRailsが動くようになりました。さあ、頑張って習得しよう。
ラベル:ruby Rails scaffold
posted by 急いでジャンプ at 16:30| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2008年06月06日

Mac OS X 10.5 LeopardのRails環境 その2:Apache、PHP、MySQL、Webmin、phpMyAdmin

Railsを使うために、MySQLを入れる必要があります。すると、それを動かすためにphpMyAdminがあった方が便利です。ということは、ApacheとPHPが必要となります。それらを設定するのにWebminもあると便利です。

という感じで、いろいろ入れてみましたが、結構はまって1日かかってしまいました。

これらを入れる方法はMacPortsやFinkによるまとめインストール、各パッケージの個別インストール、そしてMac OS X Leopard標準のもの、といくつかあります。

今回RailsをLeopard標準のものとしたので、
・同様にLeopardに標準で入っているものはそのまま使う
・不足するものはFinkで追加する
という方針でやってみました。個別インストールは後で管理が大変になるので、標準またはパッケージ管理ソフト(FinkやMacPorts)に任せてしまいたいという理由です。FinkよりMacPortsの方がいいという方もいますが、以前からFinkを使っていたというだけの理由でFinkにしました。

また、これまではPHPなどの開発にMAMPやXAMPPを使っていたのですが、すべて今回の環境に移行しようと思います。

● MySQLのインストール
まずは、Railsに必須のMySQLから行きます。これは標準で入っていないので、Finkですね。
$ fink selfupdate
$ fink index
$ fink scanpackages
$ fink update-all
$ fink install mysql
Finkを触るのは久しぶりなので、アップデートからとなります。インストールはこれで一発なのですが、さあ次は何を設定する必要があって起動はどうやるのか、またどうすれば自動起動できるのか... 情報が少ないですね。
$ mysqld_safe &
$ mysqld_safe --user=mysql &
$ /sw/bin/mysqld_safe --user=_mysql &
どれもダメでした。Permission deniedと怒られてしまう。いろいろ探して、参考になったのはこちらです。
Eity's Web - daemonic
$ sudo daemonic enable mysql
$ sudo /Library/StartupItems/daemonic-mysql/daemonic-mysql start
$ sudo cp share/mysql/my-medium.cnf /etc/my.cnf
そして、試しにこれまで運用していたMAMPのmysqlディレクトリを丸ごとコピーしてみました。
$ sudo mv /sw/var/mysql /sw/var/mysql.org
$ sudo cp -R ~/Documents/MAMP/db/mysql /sw/var/mysql
$ cd /sw/var
$ sudo chown -R _mysql:_mysql mysql

すると、データベースもその中のテーブルも、そっくり引っ越しすることができました。

● Apacheの起動
これは単に、システム環境設定 → 共有 → Web共有にチェック というだけですね。これで標準のApacheが動きます。細かい設定は後でやりましょう。

● PHPを動かす
PHPも標準の設定では動きません。先人の皆さんの情報で、動かすことは簡単にできました。
Mac OS X 10.5 Leopard で PHP を動作させるには − kazumich.log
/etc/apache2/httpd.confを書き換えます。ちなみに、/etcは/private/etcのシンボリックリンクなんですね。
#LoadModule php5_module libexec/apache2/libphp5.so

このコメント#を外してWeb共有のチェック付け外しによる再起動で、PHP5の設定が生きます。

● phpMyAdminのインストール
これは標準でないので、Finkになりますね。
$ fink install phpmyadmin
$ sudo ln -s /sw/share/phpmyadmin /Library/WebServer/Documents/phpmyadmin
$ cd /sw/share/phpmyadmin/
$ sudo cp config.sample.inc.php config.inc.php
$ sudo vi config.inc.php

認証をクッキーとしたので、$cfg['blowfish_secret'] の設定だけして終了。

● PHPからMySQLへのアクセス設定
これまた先人の皆さんの情報で簡単にいくはず、でした。しかし、はまりましたもうやだ〜(悲しい顔)
まず/etc/php.iniを設定します。
mysql.default_socket = /tmp/mysql.sock

しかし、これをやってもphpinfo()で見ると反映されません。/var/mysql/mysql.sockになったままです。なぜ?

仕方がないので、MySQL設定の方を変更することにします。
/etc/my.cnfと/etc/php.iniのソケット設定を、
/var/mysql/mysql.sock

とします。そしてパーミッション関係を調整してMySQLを再起動... ですが、何度mysqldを強制終了してもうまくいかないので、Mac自体を再起動してしまいました。
$ sudo chown _mysql:_mysql /private/var/mysql
$ sudo chmod 777 /private/var/mysql

これで、やっとphpMyAdminがデータベースに接続するところまで来ました。

● MySQL、PHP、phpMyAdminをUTF-8で統一
Mac OS XはUTF-8で統一されていると思っていたのですが、PHPの初期設定はEUC-JPなんですね。今後のトラブルを避けるために、UTF-8に統一することにしました。

ふと、EUC-JP前提のEthnaはどうなるだろう、と気にはなりましたが、それはまた後で悩むことにしましょう。

設定したのは次の部分です。

・/etc/php.ini
default_charset = "UTF-8"

mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8

・/etc/my.cnf
[mysqld]
default-character-set = utf8
character-set-server = utf8
init-connect="SET NAMES utf8"
skip-character-set-client-handshake
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

・/sw/share/phpmyadmin/config.inc.php
$cfg['DefaultLang'] = 'ja-utf-8';
$cfg['DefaultCharset'] = 'utf-8';
● Webminのインストール
最後に、あまり役にはたたないかもしれないけれど、Webminも入れてみました。標準では入っていないので、当然Finkからインストールです。
$ fink install webmin
$ fink install webmin-apache
$ fink install webmin-mysql
$ fink install webmin-theme-caldera
$ fink install webmin-theme-msc
$ sudo daemonic enable webmin
これで再起動して、すべてOK、ふぅ〜、やっとAptana RedRailsに戻れる晴れ
posted by 急いでジャンプ at 06:47| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2008年06月05日

Mac OS X 10.5 LeopardのRails環境 その1:Aptana RadRails

Ethnaもいいのですが、さらに効率のいい開発方法を求めて、Ruby on Railsに手を出すことにしました。

素晴らしいことに、Mac OS X 10.5 LeopardにはデフォルトでRuby on Railsが入っています。
$ sudo gem update --system
$ sudo gem install rails
$ sudo gem update rake
$ sudo gem update sqlite3-ruby
これで最新版になるようですね。

次は、エディタか統合環境が欲しい! いつも使っているJedit Xでもいいのですが、Railsがさらに便利になる環境が手に入るようなので、ぜひ使ってみたいですね。

まずは、Xcodeを試してみました。
/etc/services: Mac OS X Leopard上に作る快適なRuby on Rails開発環境

なるほど、コードが色分けされていて見やすい。ディレクトリ構成も常に表示されていて、わかりやすいですね。コードの折りたたみ表示もできるらしい。Terminalと併用すれば、バッチリのようです。しかし、TextMateだと強力な補完機能があるらしいし、Ruby初心者にはそれも魅力的です。

次に試したのは、TextMate。期待してサイトをのぞいてみました。
TextMate ― The Missing Editor for Mac OS X
ん? $62ですか... 結構な料金ですね。まあ、いいものなら払うべきでしょう。まずは試用してみましょう。
TextMate で日本語をわりとまともに表示する - d.hetima
ホホゥ、そのままでは日本語がダメなんですね。プラグインも入れてみましたが、日本語が小さくなるのか... ちょっとこれは長く使うには問題かなぁ。強力な補完機能、も試す前に次に行くことにしました。

次は、RedRailsです。参考にさせていただいたのは、こちら。
Aptana 1.1.6 + RadRails 1.0.1の日本語環境が快適 - ザリガニが見ていた...。
インストールや設定の途中で何度か落ちたのが気になるのと、かなり重そうなソフトなんですね、メモリをたくさん消費しています。

ただ、PHPなど他の開発でも使えそうなのがポイント高いですね。Railsに加えてPHPの開発環境も入れてみました。

Railsについてはプロジェクトの作成とRailsのブラウザでの表示、簡単な編集まではやってみましたが、至れり尽くせりと言われている機能はどうやって使うのか勉強が必要のようです。

というわけで、Railsの開発は、しばらくAptana RadRailsでやってみようと思っています。
posted by 急いでジャンプ at 19:28| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2008年05月30日

高さの異なるカラムを揃えるスタイルシート、に絡む諸々の問題

またリニューアル中のページについてですが、テーブルデザインだ、ということは既に書きました。それをMODxに取り込んだのですが、やはりそのままでは我慢できず、テーブルを取り外してXHTMLにする作業を始めてしまいました。

すると問題になったのが、テーブルデザインでよくある左右の隣り合うブロックとの間のボーダー(ではなくて幅1pxのtd)です。単純にdivなどのボーダーを設定しても、隣同士の高さが合わないとラインが下まで伸びません。

背景などを使って見た目を整えるのが正当なのでしょうが、画像を用意したりするのが面倒… と思っていたら、こんなやり方を見つけました。

高さの異なるカラムを揃えるスタイルシート

これはいいですねわーい(嬉しい顔) 早速リニューアルサイトに取り入れました。ところが、ページ内にジャンプするリンクをクリックすると、ページの上の方がちょん切れたような変な表示になってしまいます。どうやら、overflow:hidden; が悪さをしているようです。

包容要素にoverflow:hidden;を使う際の注意点メモ

いろいろ試しましたが、スタイルシートやHTMLで逃げるうまい方法はなさそうでした。そこで、JavaScript でスクロールさせる方法ならどうだろう、と試してみました。

スムーズにスクロールさせる方法は調べるとたくさんあります。その中で、こちらの方が最近「決定版!」とされている方法を試してみることにしました。

ページ内をスクロールするスクリプトの決定版 | WINGHEART

「jQuery」を使うスクリプトです。MODxのassets/js/にjquery.jsとjquery.page-scroller.jsを入れ、テンプレートに記述するだけで動作します。リンクタグやアンカー用idに手を加えなくていいところが素晴らしい。

[JS]簡単に設置できるページ内をスムーズにスクロールできるスクリプト -Page Scroller ver.3

「高さの異なる…」の記事を書かれた方が作者さんなのかな?

ただ、MODxの必須タグといわれている<base href="[(site_url)]" />のせいで、単純に<a href="#abc">と書くとトップページに飛んでいってしまいます。リンクがページ内の#abcではなく、http://www.ドメイン名/#abc となってしまうんですね。

仕方がないので、「外部ページのページ内リンクへスクロール」する方法を試してみました。元々の問題はこれでめでたく解決! ジャンプ後に表示がおかしくなる件は修正することができました。JavaScriptを切ってしまうと元のおかしな動作になってしまうのですが、それは目をつぶることにしましょう。

あと、細かい問題で、外部ページへのスクロールとしているためか、動きがスムーズではないんですね。せっかくスムーズ・スクロールを導入したんだからきれいに動いて欲しいところですが、これも現在のMODxの仕様ということで仕方がないかな。

ジャンプ後、ブラウザのリンク欄に外部ページへのリンクのために付けた「?pScabc」というのが残ってしまうのも気になるけど、まあいいでしょう。

追記
このように試用させていただいた「Page Scroller ver.3」ですが、ライセンス条件を見ると「非商用に限り無料」なんですね。残念ながら今回使おうとしたお客様のページは歯医者さんのページなので、非商用とは言えません。あきらめて別の方法を探すことにします。
posted by 急いでジャンプ at 15:20| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年06月25日

MAMP が壊れた!

ずっとEthnaでの開発にかかりきりです。やっとEthnaのいろんな用語と概念が頭の中で結びついてきた感じです。一週間はかかったなぁ。

さあ、調子が上がってきたぞ、お客さんのシステムをオープンするまで一週間だ! 頑張ろう! ってところで、MAMP上で開発中のスクリプトをテストしていたらいきなり暴走! Mac OS X自体の反応も鈍い状態に!

Apache 関係のプロセスをやっと止めて、何とかOSは復旧しました。ところが、再起動しても、MySQLが動かない! いろいろ調べてもわからない。どうもデータベーステーブルが壊れてしまった感じです。

面倒なので、MAMPの新しいバージョン(1.5ベータ)を新たに入れ直しました。

Apacheなどの環境設定をして、データベースを戻して、PHPのPEARやEthnaを入れて、やっと環境が戻りました。ふ〜、この忙しいときに... でも、開発中のPHPスクリプトのバグで、こんなことも起きるんですね。その辺は覚悟しながらやらないとなぁ。
ラベル:MAMP PHP Ethna
posted by 急いでジャンプ at 10:56| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年05月23日

レベニューシェア

昨日たまたま本屋で見つけて買ってきた本に、「1,000万円のサイト構築費を50万円に抑える方法」という記事がありました。せっかく買ってきたのに、もうWebで公開されているしもうやだ〜(悲しい顔)

それによると、Webサイトを発注側と制作会社側で共同運営し売り上げを山分けする契約形態を「レベニューシェア」というそうですね。

レベニューシェアで検索してみると、「レベニューシェア注意点」と個人での取り組みをブログに書かれている方も見つけました。

2年近く前から私たちもそのような契約形態に取り組んで来ていますが、そんな呼び方が既にあるとは知りませんでした。

記事はWeb発注側(Web担当者)側の視点で書かれていますが、私たちは「ページを制作して終わりの自転車操業からの脱却」「事業自体に参加する方が面白いじゃないか」「制作費を安くしてあげることができれば、Web制作に費用をかけられない会社もお客様になる」という制作側の視点で、この取り組みを進めてきました。

実際には、私たちの力不足もあって、なかなか売り上げ増の成果は出て来ていません。しかし、世の中の流れとしては、少しずつそのような契約形態も増えていくでしょうね。私たちはその流れに乗り遅れないように頑張っていこう、と改めて認識できました。
posted by 急いでジャンプ at 09:07| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年05月22日

Xamppメモ:MySQLとphpMyAdminが動かない

ちょっとずつ使い始めたXAMPP for MacOS Xですが、単純にインストール → 何もせずに使い放題、とはいかなかったですね。

まずは、MySQLが起動しません。いろいろ探すと、/Applications/xampp/xamppfiles/var/mysql/ にログがありました。
The error means mysqld does not have the access rights to InnoDB: the directory.

権限がないと言っているようですね。

どうやら、Apache同様mysqldもnobody:wheelで動くようです。単純インストールすると [インストールしたユーザ]:admin という所有者になるので、nobodyさんではトラブルとなるようですね。
$ sudo chown -R nobody:admin /Applications/xampp/xamppfiles/var/mysql

phpMyAdminも同じ理由で動きませんでした。
$ sudo chown -R nobody:admin /Applications/xampp/xamppfiles/phpmyadmin

そういえば、最初に/Applications/xampp/xamppfiles/htdocs/xampp/lang.tmpというファイルもアクセスできない、と怒られたので、グループをwheelに変えたのでした。

ちょっと対症療法的かな? ローカルユーザの権限で動いてもかまわないんだけどなぁ。MAMPは確かそうじゃなかったかな?
ラベル:xampp Apache MySQL Mac OS X
posted by 急いでジャンプ at 11:04| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年05月20日

EthnaをアイルiSLEのiCLUSTAで動かす

ローカルのMac OS XでXAMPPを構築できたので、次は共用レンタルサーバで動かすことができるか検証しなければなりません。

まずは、ちょっとお高い方のレンタルサーバであるiSLE(アイル)共用サーバiCLUSTAで挑戦です。

XREA.COMでEthnaを動かしている「メモ/2007-04-17/Ethnaをつかう」「レンタルサーバでPEARを使う方法」あたりが参考になりますが、非常に制限の多いiSLE(アイル)で挑戦している人のページは見つかりませんでした。でも、何とかなるでしょう、というノリでやってみました。

まずは、XREA.COMで実現した方の方法を参考に、さっき作ったプロジェクトフォルダ内のlibにXAMPPのPEAR、Ethna、Smartyを全部コピーします。testproj/lib というこのフォルダ、なぜか空っぽなんですね。
/Applications/xampp/xamppfiles/lib/php/pear → testproj/lib/pear
/Applications/xampp/xamppfiles/lib/php/Smarty → testproj/lib/Smarty
そして、iCLUSTAのルートディレクトリにプロジェクトフォルダをまるごとアップします。ドキュメントルートとなる www.some.site/ と testproj/ が並ぶことになります。

次に、testproj/wwwへのシンボリックリンクを作りたいところですが、iCLUSTAでは無理なようです。実ファイルをコピーするしかありません。ドキュメントルート内のフォルダにtestproj/wwwからindex.phpとcss/、js/をコピーし、index.phpのrequire_once '/home/vuser/some path/testproj/app/Testproj_Controller.php'; をアップしたディレクトリに合わせて書き換えます。

さて最後にPEARなどのinclude_pathを指定しなければなりません。これまではphpファイルすべてに
ini_set('include_path', '/home/vuser/some path/lib' . PATH_SEPARATOR . ini_get('include_path'));
などと記述してきましたが、Ethnaがどうなっているのか調べたくもないし、今後のバージョンアップなども考えるとこの方法は取れません。そこでまず、.htaccessにphp_valueで指定してみました。
<IfModule mod_php4.c>
php_value include_path ".:/home/vuser/some path/testproj/lib:/home/vuser/some path/testproj/lib/pear"
</IfModule>
しかし、全くダメです。無視されているようです。iSLE(アイル)のQ&Aを見てみると、「利用可能なディレクティブはAuthConfig と Limit のみ」とのこと。使えませんねぇ。SSHも使えない、.htaccessもダメ。ホント何もできない感じです。

しかし、なぜか一点だけ自由になるところがありました。php.iniをまるごと設置できるとのことなのです。使いたいディレクトリにphp.iniを置けば、それを優先する、ということです。.htsccessがダメなのに、なんだかバランスが良くない気がするのは気のせいかな?

まあ、とにかく、index.phpなどを置いたディレクトリにphp.iniを設置し、include_pathを指定してやっとテストです。

結果、チュートリアルに従って作ったページが無事表示されてめでたし、となりました。これで、どんなレンタルサーバでも大体はEthnaが使えそうなことがわかりました。

さあ、使いこなせるようにならねば!
posted by 急いでジャンプ at 21:49| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

EthnaをXAMPPにインストール

XAMPPをインストールした理由の一つに、PHPのフレームワークであるEthnaを使わなければならなくなった、ということがあります。

我々のお客様のレンタルサーバは、iSLEとかXREA.COMなどが多いのですが、共用サーバですので制限が多い。コマンドラインの使用を前提としているフレームワークとは相性がよくないです。

しかし、なんとか使えないか?と調べると、ローカルで構築したものをアップロードして動かすだけなら何とかなるようですね。

そこで、まずはローカル、すなわちMac OS X上でEthnaを構築し、次にレンタルサーバで動作確認することにしました。

XAMPPEthnaを使うには、PHP環境を整える必要があります。PEARとSmartyですね。
$ sudo su

# cd /Applications/xampp/xamppfiles/bin

# ./pear list
としてみると、PEARチャネルを通してインストールされているモジュールは何もないようです。最初は # pear とかとしてしまったのですが、そうするとXAMPPではなくてMac OS Xに元々入っているPEARコマンドが動いてしまうのですね。

初めに、チャネルを登録して適当に必要そうなモジュールを入れてみました。
# ./pear channel-update pear.php.net

# ./pear install Archive_Tar

# ./pear install Console_Getopt

# ./pear install HTML_Template_IT

# ./pear install Net_UserAgent_Detect

# ./pear install XML_RP

# ./pear install MDB2

# ./pear install pear/MDB2#mysql
ホントに必要かどうかは調べていません。後で追加したり削除したりは簡単そうなので、いい加減です。次に、PEARチャネルを使ったEthnaのインストールです。
# ./pear channel-discover pear.ethna.jp

# ./pear install ethna/ethna
そしてSmartyですが、Smarty-2.6.18.tar.gzを解凍してできたSmarty-2.6.18の中のlibsをSmartyとリネームし、pearの隣へ、すなわち /Applications/xampp/xamppfiles/lib/php/Smarty/ として置いておきました。

これで、アプリケーション構築に入ることができました。
$ /Applications/xampp/xamppfiles/bin/ethna add-project testproj
Ethnaのチュートリアルに従ってよちよちと使い始めていますが、これは仕事に使えるようになるまでにはそれなりの時間が必要そうですね。さあ、がんばろう。
posted by 急いでジャンプ at 18:58| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

MAMPとXAMPP

Web開発をしていると、ローカルな開発環境が必要となります。自Linuxサーバ上に作ってもいいのですが、常用しているMac OS X上にあると、持ち運びもできるしDreamweaver で修正した結果もすぐ見ることができてとても便利です。

というわけで、これまではMAMPをインストールして、通常のWebページだけでなくXoopsなども動かしていたのでした。しかし、問題はMovable Typeでした。Apache、PHP、MySQLだけならMAMPで十分だったのですが、Perlには困りました。

一度MAMPへのPerl導入に挑戦したのですが、簡単にはいかず、かなり苦労しそうだったのであきらめたことがありました。その頃はWindows用にはXAMPPがあって、MTもインストールできた様子。そこだけうらやましく思っていました。

ところがいつの間にかXAMPP for MacOS Xというものがリリースされていることに気がつきました。まだベータ版だしインテルMac専用みたいですが、これは使ってみなくては!

インストールはMAMP同様、とっても簡単。php.iniとhttpd.confの日本語関係だけ少し直したらもう使えます。デフォルトで80番と443番のポートを使用していて、MAMPより本格的な感じです。SSLのポートがぶつかってしまうため同時起動はできませんが、インストールしたまま片方ずつ使うことはできます。

これから少し使い込んでみましょう。
posted by 急いでジャンプ at 15:35| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年04月06日

パートナー(プログラマ)が欲しい!

今もWebサイト構築の仕事をいただいているお客様から、大きなWebシステム開発の案件をいただきました。Web上で画像の編集ができるようなECサイトの開発です。

それも開発を非常に急がれていて、今月中旬(2007年4月)から1ヶ月程度である程度動くものを完成させなければならないことが昨日わかりました。

それまでは、私1人でなんとか作れるだろう、と甘いことを考えていたのですが、いいものを作るためにもいっしょに開発してくれる人が必要となりました。どうしましょうがく〜(落胆した顔)

これまで多少の知り合いには声をかけたりしていたのですが、これはという人とは巡り会えていませんでした。今回は、PHPが使えてAjaxに挑戦してくれる人、LinuxのC++で開発できる人、の2人が必要だと考えています。かつ、会社組織(ソフトウェアハウスなど)に発注するほど予算もないので、フリーランスの方にしぼられてしまいます。

となると、技術的にもある程度のレベルのフリーのプログラマを探すことになるのですが、なかなか難しそうですね。

mixiのコミュニティなどに募集の投稿をしてみようかな。他にはどこかあるだろうか...
posted by 急いでジャンプ at 15:42| Comment(1) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年03月24日

PHPとImageMagicKで画像編集

現在PHPでECサイトを構築させていただいたお客様から、サイトからリアルタイムで画像編集をして訪問者に提示する機能をつけたい、というご要望をいただきました。

画像には文字を載せる必要があります。また訪問者が編集した画像は、高解像度の画像ファイルにしてお客様にお渡しする仕組みも作る必要があります。

リアルタイム画像編集のソフトをゼロから作る時間はありませんので、ImageMagicKを試してみることにしました。ネットで検索して、このあたりを参考にさせていただきました。

ImageMagicK の convert を PHP で
http://lolipoking.lolipop.jp/php/patio.cgi?mode=past&no=2388

東北大学土木工学科構造強度学研究室
http://hashi4.civil.tohoku.ac.jp/soft/node43.html

とばとば歩くLinux街道
http://www.ne.jp/asahi/tokyo/shin/linux/desktop/imagemagick.html

一応、目的は達成できました。

// 小さくする
$last_line = system('convert -geometry 50% a.jpg b.jpg' , $ret);
// さざなみフォントで文字を載せる
$last_line = system('convert -font sazanami-gothic.ttf -fill blue -pointsize 12 -draw '."'".'text 20,200 "'.$bun.'"'."'".' b.jpg c.jpg' , $ret);
// ファイルの削除
$last_line = system('rm -f a.jpg' , $ret);
//ファイルのコピー
$last_line = system('cp -f a.jpg b.jpg' , $ret);


これでも結構処理時間がかかりますね。たくさんの人がサイトに来たときにどうするかが一番の課題になりそうです。画像処理だけ別マシンにしたりするにはどうしたらいいかな?

それと、文字を縦書きにして載せる方法がわかりません。ネットで調べるとTeXがらみはたくさんヒットするんですが、ImageMagicKとPHPだけで単純に編集する方法はないのかな?
posted by 急いでジャンプ at 09:03| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年03月17日

ブログで巨大な文字が重なる? line-heightのはなし

自社サイトをMovable Typeによるビジネスブログでリニューアルしようとされているお客様に、テスト用兼コンテンツ入力用MTサイトを提供中です。そのお客様から、「ブログに大きな文字を入れると他の行と重なってしまう」という指摘をいただきました。

見てみると、標準14pxぐらいのエントリーに、48pxの文字を入れようとされたようです。それが、上の行と重なってしまうので、使えないぞっと。

なるほど、これはline-heightの指定方法が問題のようですね。Lucky bagさんhxxk.jpさんがまとめてくれていますが、これまでエントリー部分を
line-height: 150%;

と指定していたのが問題だったようです。
line-height: 1.5;

にしたら、きちんと表示されるようになりました。よかったわーい(嬉しい顔)
ラベル:CSS Movable Type MT XHTML
posted by 急いでジャンプ at 08:01| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする

2007年02月27日

Webサイトのキャプチャ

最近はWeb開発の仕事がほとんどになってきています。すると必要になるのが、Webサイト全体のキャプチャですね。

Web上でキャプチャして画像ファイルを生成してくれるサービスもかなり増えてきているようですが、大量にキャプチャしたい場合は不便。そこで、ブラウザの付加機能で何かないか探していました。できれば、常用している Firefox (Mac版)か Safari。

続・サーバー側でWEBサイトのスクリーンキャプチャ、サムネイルを作成する方法

これだけまとめていただけると、とても助かりますね。

まずは Firefox に Pearl Crescent Page Saver の Basic 版を入れました。ブラウザの右上に現れたカメラのボタンをクリックするだけで、一発キャプチャ!

便利ですわーい(嬉しい顔)
posted by 急いでジャンプ at 10:44| Comment(0) | TrackBack(0) | Web開発 | このブログの読者になる | 更新情報をチェックする