kawama.jp

Smartyでforeachループをネストする

カテゴリ: PHP — タグ: , , , — 2010年11月23日 00:13 — Comments (0)hatebu count

よくやり方を忘れるので備忘録として。

こんな感じの配列を使います。

Array
(
[array1] => Array
(
[0] => Array
(
[id] => 3
[name] => さん
)

[1] => Array
(
[id] => 4
[name] => よん
)

[2] => Array
(
[id] => 5
[name] => ご
)
)
[array2] => Array
(
[0] => Array
(
[id] => 9
[name] => きゅう
)
[1] => Array
(
[id] => 10
[name] => じゅう
)
)
)

テンプレートはこんな感じで記述。

{foreach from=$alllist item="list1" name="list1"}
<ul>
{foreach from=$list1 item="list2" name="list2"}
<li id="{$list2.id}">{$list2.name}</li>
{/foreach}
</ul>
{/foreach}

mod_rewriteでURL末尾のスラッシュを補完

カテゴリ: Apache,技術関連 — タグ: — 2010年11月16日 21:43 — Comments (0)hatebu count

同じコンテンツでも、アクセス解析ソフトなどは末尾のスラッシュの有無によって別ページと見なしてしまいます。
そうした問題も、このmod_rewriteで解消できます。

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [L,R]

このケースだとURLに.(ドット)を含まない場合はディレクトリと見なして末尾スラッシュ補完をしています。

参考
http://d.hatena.ne.jp/hiro-tak/20080508

mod_rewriteでURLを書き換えつつクエリはそのまま引き継ぐ

カテゴリ: Apache,技術関連 — タグ: , , , , — 2010年11月15日 22:39 — Comments (0)hatebu count

「mod_rewriteを使って動的ページを静的ページのように見せる」というのが、SEO的に良いということで一時期流行りました。

現在ではサーチエンジンも進化し、静的だろうか動的だろうか評価は変わらなくなったようですが、人間の目から見てもクエリ文字列が並ぶよりはディレクトリ階層になっているほうがきれいなので、サイト構築の常套手段として定着している感があります。

mod_rewriteを使って動的ページを静的ページというテクニックはググればいくらでもでてきます。
たとえばこんな感じ。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z_]+)/$ index.php?var1=$1 [L]

こうすることで、http://example.com/hoge/ が http://example.com/index.php?var1=hoge として処理されるようになります。

ただこのままでは http://example.com/hoge/?page=1 とか http://example.com/hoge/?search=hoge のように、後ろにクエリパラメータが来てもその値が取得できないという問題があり、不便です。

これを解決するのがQSAというオプション。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z_]+)/$ index.php?var1=$1 [QSA,L]

これでオシリに引数がくっついてもindex.phpで処理できるようになります。

参考
http://blog.fkoji.com/2008/07172155.html

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

カテゴリ: Ajax,JavaScript — タグ: , , , — 2010年11月14日 21:04 — Comments (0)hatebu count

内容紹介やレビュー、目次を見たところ、JavaScriptを浅くしか理解していない自分にとってちょうど良い本だと思い、読んでみました。

序盤はスラスラと読み進み、基本文法やオブジェクトの概念(プロトタイプなど)あたりは気持ちよく理解できました。久しぶりにオライリーの本を読みましたが、さすがにクオリティ高いと思います。

ただ、中盤から後半にかけて徐々に内容が難しくなり、5章「継承」あたりからは、なんどもソースコードを読み直してようやく理解できる、という感じになってきます。

基本的にJavaScriptという言語はクセがかなり強く、php以外の言語をほとんど触ったことがない、あまり柔軟性のない自分の頭脳にはなかなかスンナリ入ってこなかったです。

もう少しJavaScriptという言語に触れてから読み直したほうが良さそうだと思ったので、終盤は斜め読みで済ましました。
というわけで、しばらくしてからまた読み直したいと思います。

coreserverでサーバー再移行

カテゴリ: サーバー — タグ: , , , , — 2010年11月8日 22:21 — Comments (2)hatebu count

ここ最近、利用していたcore-bのサーバーが毎日昼間に断続的に重くなり、サイトにアクセスできなくなる状態が続いていました。

例えばその時間帯にこのkawama.jpにアクセスすると、「データベースに接続できません」というwordpressのエラー画面が表示されます。おそらく誰かがmysqlに対して負荷の高いプロセスを動かしていたのだと思います。

1ヶ月くらい様子を見ていたのですが、改善される様子もありません。
エラー画面を見るたびにイライラしてしまうのは精神的に良くないので、この週末にサーバーを引っ越ししました。

ちなみに今回はb15.coreserver.jpからb27.coreserver.jpへの引っ越しです。

あらかじめこちらのページをチェックし、負荷が高くないと思われるサーバーを選びました。

xrea障害メンテナンス情報
coreserver障害メンテナンス情報

このページでは負荷がリアルタイムで更新されています。1日に何度か除いてみて、ステータスバーがオレンジや赤になっている回数が多いようなサーバーはハズレなので避けたほうが無難だと思います。

引っ越し作業自体は今回で3回目くらい。
過去にまとめた移行手順を参照しつつ作業を行い、2時間弱ほどで終わりました。

基本的にスムーズにすすめられたのですが、2点ほど躓いた点があったのでメモしておきます。

(1)ドメインの同期設定は移行できない

ドメインウェブの設定はテキストで一括移行できるんですが、同期設定(シンボリックリンク)は移行できないので、手動で移行してやる必要がありました。

(2)パーミッションのチェック

これは以前書きましたが、xrea,coreserverのサーバー間コピーはパーミッションを保持してくれないので、666のファイルとか777のディレクトリなんかのパーミッションを移行後に変更しないといけません。

で、今回findを使って旧サーバーでパーミッションをいじってるファイル、ディレクトリを検索してリスト化し、新サーバーで一括でchmodするのを試みました。

たとえばfindで777のディレクトリを探すには

find ./ -perm 777 -type d

666のファイルを探すには

find ./ -perm 666 -type f

このpermオプション、オプションで+や-をつけてさまざまな条件を付加させられます。が、これがけっこう複雑だったので、結局は-name “*.cgi”とか-name “*.sh”でリストを作りました。

と、こんな具合で大きな問題もなく移行完了。
今度のサーバーは低負荷で安定してくれるといいんですが、、、

三郷のパソコンファームで不要PCを無料で処分する

カテゴリ: 雑記帖 — タグ: , — 2010年11月6日 21:07 — Comments (0)hatebu count

不要になったPC2台(WindowsMeが乗っていたthinkpadと、WindowsXP初期の頃の省スペースPC)を持てあましており、使い道も全くなかったので、前々から気になっていた三郷のパソコンファームに行って引き取ってもらいました。

パソコンファーム

PCの処分はお金もかかるし何かと面倒ですが、ここに持って行けば無料で引き取ってくれます。

郵送でも引き取り可能ですが、今回は新三郷のIKEAに行く用事があったので、車で行きました。

大泉ICから外環外回りで外環三郷ICで降り、すぐの信号を左折。そのまま突き当たりの丁字路のところにパソコンファームがあります。

見た感じ普通の倉庫という感じ。敷地内に入って車をとめると従業員の方があらわれて、引き取るPCを確認してすぐに持って行ってくれました。
そのあと指定の用紙に名前や連絡先を記入して手続き完了。所要時間はほんの5分程度。しかもおまけで缶コーヒーを2本くれました。

不要なPCは今後しばらくは出ないと思いますが、PC以外でもさまざまな不要品を回収してくれるようなので、機会があればまた利用したいと思います。

秀丸でデフォルトのエンコードをSJISからUTF-8に変更

カテゴリ: 技術関連 — タグ: , , , — 2010年11月5日 21:23 — Comments (0)hatebu count

その他 → 動作設定 → ファイル → エンコード1 → 標準のエンコードの種類

で設定変更できます。
最近はhtmlやphpなども、ほぼ90%以上UTF-8を使っているので、デフォルトを変更してみました。

標準DOMスクリプティング

カテゴリ: Ajax,JavaScript,CSS,技術関連 — タグ: , , , — 2010年11月2日 21:49 — Comments (0)hatebu count

『DOMと言う言葉はよく聞くけれど、実際のところよくわかっていない。jqueryやそのライブラリを使って見よう見まねで簡単なアプリを作成できるが、高度なコーディングはできない。』

こういう状態だったので、そろそろ本質的なところを勉強しないといけないな~と思っていたときに、手に取った本がこれでした。
というか、DOMについての本って他に見あたらなかったです。

2007年の本で、ブラウザもIE6とかfirefox1.5の時代ですが、古さはあまり感じさせません。
DOMの本質的な部分を扱っているので、今でも十分通用するし、勉強になります。
特にDOMの用語や概念なんかは覚えておけばgoogle検索するときなどにもかなり役に立つと思います。

ひさびさに技術書読みましたが、なかなか良い本でした。少し値段が高いですが、それに見合う価値はあると思います。

なおサンプルスクリプトはこちらで見られます。
http://www.futomi.com/books/dom/script/index.html

それと本書で取り上げられていたfirefoxのアドオンが3つあったので、とりあえず入れてみました。
今度コーディングするときに使ってみようと思っています。

DOM Inspector
JavaScript Debugger
HTML Validator

CSS+画像で作るタブメニュー

カテゴリ: CSS — タグ: , — 16:37 — Comments (0)hatebu count

CSSと画像で作るタブメニューのサンプルを探していたところ、こちらのサイトを見つけました。

http://www.dezinerfolio.com/2007/10/17/creating-liquid-css-tabs-for-menus/

画像による解説がものすごくわかりやすいです。いい勉強になりました。

Amazon PAAPIのカスタマーレビューiframe対応

カテゴリ: PHP,技術関連 — タグ: , — 2010年10月29日 21:34 — Comments (0)hatebu count

またAmazon PAAPIネタです。

仕様変更のため、2010/11/09以降、PAAPIレスポンスデータからカスタマーレビューの文字情報が無くなり、かわりにiframe用のURLが返されるようになります。詳細はこちら

ちなみに実際のIFrameURLの内容などは、Amazon商品情報ビューワーで見るとよくわかります。(最近このツールよく使ってます)

しかも合計レビュー数や評価平均などのサマリ情報も取得できなくなります。
これは過去何度かあったPAAPIの仕様変更の中でも、一番影響が大きいのではないかと思います。

この新仕様の制約の中で、どうすれば最善の対応ができるか。調べてみました。

、、、が、特にいい案も浮かばず。とりあえずはそのままiframeタグを使って表示するしかなさそうです。

iframeを使う上でネックになるのが高さ(height)です。
ひとまず適当に500pxとかで指定するんですが、レビューがないと下300pxくらいスカスカになってしまうし、逆にレビューが多いとスクロールバーが出てしまうので、インターフェース的にあまりキレイじゃないです。

JavaScriptでIFrameURLの高さを取得して、heightを動的に変更、なんてこともできるんでしょうけど、色々面倒なことになりそうです。

あとphpでincludeする方法もありますが、PAAPI公式ページのよくある質問に見ると、

IFRAMEのみが、現在カスタマーレビューデータを表示する唯一の方法となります。ご了承ください。

IFRAMEのみが、現在カスタマーレビューデータを表示する、Amazonにおける唯一の方法となります。

現状、IFRAMEのみがサポート対象となっております。当方としては、アソシエイトの皆様にAmazonの商品を紹介いただくお手伝いをするために、近い将来、他のフォーマットについてのサポートについても検討予定です。

と、IFRAMEのみを連呼されてるので、iframe以外の方法を使うとガイドライン違反と判定されてしまう可能性もなくはありません。

というわけで、ひとまず素直にiframeを使うことにして、しばらく様子をみてみようと思います。最後の近い将来、他のフォーマットについてのサポートについても検討予定です。というのに期待したいと思います。

あともうひとつの大きな問題として、携帯対応があります。

そもそもiframe対応していない機種はどうしようもありません。

実際に自分の端末(ドコモP-09A)で試してみたところ、iframeは表示できたのですが、iframeの枠をクリックしてフォーカスさせないとスクロールできないので、PC以上にインターフェースが分かりにくくなってしまいます。

それよりも問題なのがiframe内のリンクをクリックしてもPC用ページに飛んでしまうこと。携帯のことはまったく考慮されていないようです。

というわけで、携帯サイトのほうは現状ではレビュー表示なしにするしかない、という結論に至りました。

正直かなり残念な仕様変更ですが、もう決まってしまったことなので利用者としては変更にはおとなしく従い、今後のバージョンアップで改善されることを期待するしかないです。

Copyright (C) 2002 - 2017 kawama All Rights Reserved. — Powered by WordPress