開発メモ,主に補足by子連れ親父プログラマー

2010-03-21

[見積システム:01]サイトマップ

最初にサイトマップくらい作っておこうってことで、作った。
かなりメニューが多くなってしまったが・・・。
見積もり編集のパターン選択のあたりのインターフェースをどうするか、まだ考えていないのでそこはちょっとまた後で直すことにして、とりあえず、おおまかにはこんな感じで行こう。

2010-03-20

gitを使ってデザイナーとの並行作業でテンプレートを修正する

テンプレートで修正が入った場合について、
例えば自分が作った index.tpl がこんなようなソースだったとする。
<div>
<h1>Colored Pencils</h1>
</div>
まずはコミットする。
$ git add index.tpl
$ git commit -m 'first commit'
ここで一旦リリースするが、その時にブランチを作っておく
$ git branch design_fix
その後なにか修正する。
例えば、以下のようにエラーメッセージの表示を追加した。
<div>
<h1>Colored Pencils</h1>
{$message|escape}
</div>
それをコミットする
$ git commit -a -m 'add message'
それを知らないデザイナーからファイルが届いた。
divにclass指定が追加になってる。
<div class="main">
<h1>Colored Pencils</h1>
</div>
作っておいたデザイナー用のブランチに移動して、
$ git checkout design_fix
この状態で、デザイナーが作った index.tpl をコピーしてからコミットする。
$ git commit -a -m 'design chenged'
再びマスターに戻り、マージする
$ git checkout master
$ git merge design_fix
以下のようにマージされた。
<div class="main">
<h1>Colored Pencils</h1>
{$message|escape}
</div>
ここでまたすかさず次のブランチを作っておくといいかもしれない。

問題なのは、デザイナーの修正が、以下のようなものだった場合、
<div>
<h1>Colored Pencils</h1>
<h2>12 colors</h2>
</div>
マージでエラーになる。
Auto-merging index.tpl
CONFLICT (content): Merge conflict in index.tpl
Automatic merge failed; fix conflicts and then commit the result.
そのindex.tplを見るとこんなんなってる。
<div>
<h1>Colored Pencils</h1>
<<<<<<< HEAD:index.tpl
{$message|escape}
=======
<h2>12 colors</h2>
>>>>>>> design_fix:index.tpl
</div>
message の行と h2 の行とどっちが上でどっちが下か分からないってことだろう。
以下のように順番を決めて編集保存して、
<div>
<h1>Colored Pencils</h1>
<h2>12 colors</h2>
{$message|escape}
</div>
コミットする。
$ git commit -a -m 'design fix'
無事マージされた
--- a/index.tpl
+++ b/index.tpl
@@@ -1,5 -1,5 +1,6 @@@
  <div>
  <h1>Colored Pencils</h1>
+ <h2>12 colors</h2>
 +{$message|escape}
  </div>

2010-03-18

MacPortsでOSXにphp5.3を入れる

OSXに、php5.3を入れようということで、
port installed
で見たところ、apache2とかはもうインストール済みになってるみたいだったので、もう一回以下のコマンドでphpのインストールに挑戦。
sudo port -d install php5 +apache2 +macox +mysql5 +pear +postgres +sockets +sqlite
最後に出た以下のメッセージを完全に見逃す
To customize php, copy
/opt/local/etc/php5/php.ini-development (if this is a development server) or
/opt/local/etc/php5/php.ini-production (if this is a production server) to
/opt/local/etc/php5/php.ini and then make changes.

If this is your first install, you need to activate PHP in your web server.

To enable PHP in Apache, run
  cd /opt/local/apache2/modules
  /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
こうして入れたシステム一式は、OSXの
/opt/local
の下に入るようです。
PHPのバージョン5.3.2になっている。
$ php -v
PHP 5.3.2 (cli) (built: Mar 18 2010 03:49:53) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
pearも入っている。
$ pear -V
PEAR Version: 1.9.0
PHP Version: 5.3.2
Zend Engine Version: 2.3.0
でアパッチを起動したいということで、
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist 
とりあえずこうするだけでapache動いた。
が、phpが動いていない。 そこで、以下を実行。
sudo cp php.ini-development php.ini
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
アパッチのhttpd.confに
以下を追加。
Include conf/extra/mod_php.conf
以下を付け足し。

    DirectoryIndex index.html index.php

で、
sudo /opt/local/apache2/bin/apachectl restart
したら、phpもオッケーに。
なったがな、しかし。だな。

2010-03-16

XAMPPのインストールと設定

Windowsのphpのバージョンを5.3.2にアップしようとしたらば、apacheまで動かなくなったので、もうあきらめて新規にXAMPPでインストールすることに。

apache friends

ここから XAMPP Windows版 1.7.3 をダウンロードしてインストール。

最初に環境変数に書かれている既存のMySQLとかphpのパスを消去してからやった方がよかったみたいですね。
既存のそれらのプログラムとごっちゃになってしまって、その修正に丸一日かかってしまった。
そもそもMySQLがサービスとして動いていたようで、XAMPPはそっちを見に行ってしまった模様。
マニュアルには最初に「セキュリティ」からMySQLのrootのパスワードを設定せよ、と書いてあるが、既存のMySQLを見に行ってるので既にパスワードがある状態になっている。
こりゃおかしい、ということで既存のMySQLのサービスを無効にして、環境変数の方は
C:\xampp\mysql\bin;
に書き換え、これでようやく正常に戻る。
改めて「セキュリティ」から進んで、rootのパスワードを設定。
あとphpMyAdminのDB接続設定をするために C:\xampp\phpMyAdmin\config.inc.php にrootのパスワードを設定
/* Authentication type and info */
$cfg['Servers'][$i]['auth_type']            = 'config';
$cfg['Servers'][$i]['user']                 = 'root';
$cfg['Servers'][$i]['password']             = 'password';
$cfg['Servers'][$i]['AllowNoPassword']      = true;
それからMySQLの文字コード関係設定。C:\xampp\mysql\bin\my.ini を開いて一番下に、
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect = SET NAMES utf8

[mysql]
default-character-set=utf8
を追加。

次にapacheの設定。
C:\xampp\apache\conf\httpd.conf を開いて、Directory の
<Directory />
    Options FollowSymLinks
    AllowOverride none
    Order deny,allow
    Deny from all
</Directory>
を以下に変更
<Directory />
    Options FollowSymLinks
    AllowOverride all
    Order deny,allow
    Deny from all
</Directory>
ついでにバーチャルホストの設定。C:\xampp\apache\conf\extra\httpd-vhosts.conf を開いて、
以下のコメントアウトを外す
NameVirtualHost *:80
一番下に以下を追加
<VirtualHost *:80>
    ServerAdmin someone@somedomain
    DocumentRoot "D:/project"
    ServerName project
    ErrorLog "logs/project-error.log"
</VirtualHost>
<Directory "D:/project">
    Options FollowSymLinks
    AllowOverride all
    Order deny,allow
    Allow from all
</Directory>
ここで、最後の Allow from が all になってないと見られないので注意。
さらに、C:\Windows\System32\drivers\etc\hosts を開いて、
127.0.0.1       localhost
127.0.0.1       project
を追加。
あと php.ini のこのヘンを修正
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
mbstring.func_overload = 0
最後にpearも既存のphpのパスが悪さしてへんてこりんな設定になっていたので、C:\xampp\php に go-pear を置いて、再インストール
php go-pear.php
これはコマンドプロンプトを管理者モードで実行しないとだめ。
あ、そうそう、あと、こうやってインストールした状態では、apacheの mod_rewrite は最初から使えるようになってるし、phpの short_open_tag はOffになってるぞ。

2010-03-14

2つのsubmitボタンを横にまっすぐ並べる方法

まあ、よくある話なんですが、問い合わせフォームみたいなもので以下のようなボタンが2つ並んだソースがデザイナーさんから送られてきたりする訳です。
<div class="controls">
    <input type="button" value="戻る" />
    <input type="submit" value="送信" />
</div>

まあ、これはこれでそのままでもちゃんと横に並んでくれるし、普通はcssでセンタリングしてあったり、多少マージンがとってあったり、ひどいのになると、ボタンとボタンの間に全角スペース入れてそれで間隔を調整してたり(笑)、そんな感じだと思います。
ただ実際プログラムを入れていくと、これでは用をなさないわけで、以下のようなソースにしたいという場合が多々あります。
<div class="controls">
    <form action="form.php" method="post">
        <fieldset>
            <input type="hidden" name="mode" value="back" />
            <input type="submit" value="戻る" />
        </fieldset>
    </form>
    <form action="form.php" method="post">
        <fieldset>
            <input type="hidden" name="mode" value="send" />
            <input type="submit" value="送信" />
        </fieldset>
    </form>
</div>
「戻る」時と「送信」する時とでモードを切り替えて処理したいような場合ですね。
これの見た目はこうなってしまいます。

で、こういう時どうしたら、簡単に直せるか、ということですね。
まずこれはどうみてもformとfieldsetがブロック要素で右端まで行っちゃってるので、
form, fieldset {
    display: inline;
    border: none;
}

とします。あとは適当にマージンとかを調整します。
form, fieldset {
    display: inline;
    border: none;
    margin: 0px;
    padding: 0px;
}

一応、デザインさんに修正依頼する時間もない時のために。

2010-03-13

jQuery1.2の時のバグ

AJAXで生成したSELECTのoptionでselectedにした値をセレクトしてくれない
form, fieldset {
    display: inline;
    border: none;
    margin: 0px;
    padding: 0px;
}

if (isset($emes)) {
    $smarty->assign('emes', $emes);
    $smarty->display('form/form.tpl');
    exit;
}
  • test

このブログを検索

Powered by Blogger.

ラベル

php (17) jQuery (13) OSX (10) MySQL (8) Javascript (7) Postgres (7) port (7) apache (6) Java (3) Smarty (2) html (2) pear (2) FCKEditor (1) XAMPP (1) css (1) git (1) perl (1) ruby (1)

Facebookバナー