メニュー

関連ページリンク

トップ > PHP > PHP - 人気ブログ(Blog)検索結果詳細 (2008年12月1日 8時)

ソースコードを自動で整形するJavaScript「SyntaxHighlighter」

このブログでは、ソースコードを貼付ける事がよくあるのですが、SyntaxHighlighterというJavaScriptで綺麗に表示させるようにしました。

設置方法は以下。

  1. SyntaxHighlighterをダウンロードします。
  2. 解凍して、外部からアクセスできるフォルダにアップロードします。
  3. HTMLのhead部分に以下の記述を追加します。
    <link rel="stylesheet" href="/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" type="text/css" charset="Shift_JIS" />
    <script type="text/javascript" src="/dp.SyntaxHighlighter/Scripts/shCore.js" charset="Shift_JIS"<>/script>
    <!-- 以下は装飾したい言語に応じて追加します -->
    <script type="text/javascript" src="/dp.SyntaxHighlighter/Scripts/shBrushXml.js" charset="Shift_JIS"<>/script>
    <script type="text/javascript" src="/dp.SyntaxHighlighter/Scripts/shBrushCss.js" charset="Shift_JIS"<>/script>
    <script type="text/javascript" src="/dp.SyntaxHighlighter/Scripts/shBrushPhp.js" charset="Shift_JIS"<>/script>
    <script type="text/javascript" src="/dp.SyntaxHighlighter/Scripts/shBrushJScript.js" charset="Shift_JIS"<>/script>
    <script type="text/javascript" src="/dp.SyntaxHighlighter/Scripts/shBrushSql.js" charset="Shift_JIS"<>/script>
    
  4. コード記述部分を以下のタグで囲みます。
    <pre name="code" class="html">
    </pre>
    
    class属性の値は、「Languages - syntaxhighlighter - Google Code - List of supported languages.」を参考に装飾したい言語に応じて記述します。
  5. ページの最後に以下を追加します。
    <script language="javascript">
    dp.SyntaxHighlighter.ClipboardSwf = '/dp.SyntaxHighlighter/Scripts/clipboard.swf';
    dp.SyntaxHighlighter.HighlightAll('code');
    </script>
    

日本語化したり、折りたたみ式にしたりなどのカスタマイズ方法は、「ソースコードを綺麗に表示するJS「dp.SyntaxHighlighter」|caraldo.net | MT Blog」を参考にしてください。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月23日 21時22分

このブログのホーム

JavaScript459462460174

Google AJAX Language APIをPHPから叩いて翻訳する

PHPの裏側で翻訳して結果を返す的な動作をさせたかったので、翻訳APIを探したところ、Google AJAX Language APIなるものを見つけました。

本来はAJAX用のAPIですが、それ以外の言語でも取得できるように、RESTが用意されています。

PHPからアクセスする方法は以下。

$query = $_GET['q'];

// QueryをURLエンコードし、英語に変換するURLを作成
// q : エンコードする文字列
// langpair : 変換前と変換後の言語を|(%7C)で区切って指定
$trans_url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.urlencode($query).'&langpair=ja%7Cen';

// URLのデータを取得
$trans_json = file_get_contents($trans_url);

// 文字コード変換
$trans_json = mb_convert_encoding($trans_json, 'utf-8', 'auto');

// JSONをデコード(PHP5 only)
$trans_array = json_decode($trans_json);

// 結果を取得
if(isset($trans_array->responseData->translatedText))
    $result = $trans_array->responseData->translatedText;

変換前と変換後の言語の指定は、Languages Enumを参考にしてください。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 4時29分

このブログのホーム

APIPHP4561183377457

Movable TypeのブログをiPhone/iPod touch対応させるテンプレート

このブログをiPhone対応させてみました。http://pgjapan.net/i/で、iPhoneに最適化されたインターフェースでこのブログにアクセスすることができます。

iPhoneテンプレートforMT」を利用すると、Movable TypeのブログをiPhone / iPod touch用のインターフェースに簡単に対応させることができます。

「iPhoneテンプレートfor MT」は、オープンソースのiPhoneライクなユーザインターフェースライブラリ「iUIライブラリ」を利用して、iPhoneライクなインターフェースを実現しています。

セットアップ方法は以下。

  1. iPhoneテンプレートforMT」と「iUIライブラリ」をダウンロードする
  2. iPhone用のHTMLを出力するフォルダ(以下、出力用フォルダ)を作成する
  3. ダウンロードしたiUIライブラリの圧縮ファイルを解凍し、「iui」というフォルダを出力用フォルダにアップロードします
  4. ダウンロードしたiPhoneテンプレートforMTの圧縮ファイルを解凍し、「img」「css」というフォルダをそれぞれ出力用フォルダにアップロードします
  5. 残りの「index.mtml」「individual.mtml」をそれぞれ、インデックス・テンプレートに新規追加します
  6. 新規追加した「individual.mtml」のテンプレートをアーカイブマッピングに設定します。

(iPhoneテンプレートforMTのダウンロードした「readme.txt」により詳しい設定手順が掲載されています。)

iPod touchで見るとこんな感じ。

この記事書いてみて気付いたのですが、「iPhoneではなくiPod touchを買った理由」の比較条件に1点追加、「iPod touchはスクリーンショットが撮れない」のですね。
これはかなり痛い。ファームウェアのアップデートで対応してくれないかなぁ。

(修正:2008/11/17、cremaさん情報)
スリープ/スリープ解除ボタンを押しながら、ホームボタンを押すと、一瞬画面が白く光り、スクリーンショットが撮れるとのこと。
撮影した写真は、Photo Albumsの中に「Saved Photos」というアルバムが出てきて、そこに表示されます。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月16日 20時59分

このブログのホーム

MovableType272362449336

MySQLへの新規ユーザの追加

MySQLにGRANTステートメントを実行して新規ユーザを追加する方法です。

spadminユーザの作成

GRANT ALL PRIVILEGES ON database.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

databaseにデータベース名、usernameにユーザ名、passwordにパスワードです。 dabaseは*にすると、すべてのデータベースにアクセスできるユーザが作成されます。

権限を定義してユーザを作成

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON database.* TO username@localhost IDENTIFIED BY 'password'; 

同様に、databaseにデータベース名、usernameにユーザ名、passwordにパスワードです。 dabaseは*にすると、すべてのデータベースにアクセスできるユーザが作成されます。また、GRANTの直後にカンマ区切りで構文名を記述する事で、許可する操作を限定する事ができます。

パスワード設定

SET PASSWORD FOR username@"%" = PASSWORD('password');

usernameにユーザ名、passwordにパスワードです。

参考サイト

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 5時6分

このブログのホーム

MySQL420418421

MySQLに外部ファイルのSQLを実行する

mysqlコマンドの引数にデータベース名を指定し、入力のリダイレクト(<)でファイルを指定することで、外部ファイルのSQLを実行できます。

$ mysql testdb < temp.sql

testdbにデータベース名、temp.sqlにファイル名です。

パスワードが設定してある場合は、MySQLにログインするのと同様のオプションをつけます。

$ mysql testdb < temp.sql -u root -p

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 5時13分

このブログのホーム

MySQL418

「iKnow!」がAPIを公開!

10月15日、SNS型語学学習サイト「iKnow!」がAPIを公開しました。

iKnow! API

プレスリリースによると、iKnow! APIでは、以下の機能を第一弾として提供するそうです。

  1. 言語解析ツール
    iKnow! 学習語彙からアイテムや例文を検索できる機能と英語テキストからアイテムと単語の抽出が可能
  2. コンテンツ作成ツール
    「例文の作成・編集」「リストの作成・編集」「イメージ画像、オーディオのアップロード」が可能
  3. データフィードツール(iKnow!上のデータを開発者が取得できるツール)
    iKnow! サイト内の全コンテンツである「リスト(学習アイテムリスト)」、「アイテム(学習語彙、例文)」、「フレンドとプロフィール」、「学習進捗データ」、「要復習アイテム」のデータをXML、RSS、JSONの形式で取得可能
「iKnow! API」を一般公開、外部開発者へ提供!

また、アプリケーションの作成イメージとして、プレスリリースでは、以下をあげていました。

  1. iKnow!、Dictation、Brainspeedのようなアプリケーション
    記憶定着機能なしの学習アプリケーション(iKnow! サイトのデータとしては保存されない)
  2. iKnow! Bookmarkletのようなアプリケーション
    ターゲットとなる語彙の文章構成を解析し、iKnow! サイトに ある辞書からデータを照会するアプリケーション
  3. ウィジェット(ブログパーツ)
    データフィードツールを利用したオリジナルウィジェットなど のアプリケーション
「iKnow! API」を一般公開、外部開発者へ提供!

APIの詳しい情報は、

をチェック!

プログラミングコンテストを実施

さらに、API KICK OFF Developer Challengeというコンテストが開催されるそうです。

iKnow! APIを利用したプログラミングコンテストで、2008年12月15日が締め切り、伊藤穰一氏とセレゴ・ジャパン開発陣が審査、賞金は1位が200,000円(1名)、2位が100,000円(1名)、3位が50,000円(1名)となるそうです。

何か作ってみよう!

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年10月21日 21時27分

このブログのホーム

API118410413411

Movable Typeで関連エントリーを表示する方法

ニュースサイトなどで、記事ページの下によくある関連エントリー。その記事に関連した過去の記事などのリストを表示して、サイト内の滞在時間を増やそうとする施策です。

Movable Typeで関連エントリーを表示するには、Related Entries Pluginを利用すると簡単に実現することができます。

  1. RelatedEntries.zipをサイトからダウンロード
  2. RelatedEntries.zipを解凍
  3. 解凍したファイルの中の「RelatedEntries.pl」を、Movable Typeがインストールされているディレクトリのなかの「plugin」ディレクトリにアップロード
  4. Movable Typeの管理画面から、「エントリー・アーカイブ」のテンプレートに以下のように記述。
    <MTRelatedEntries>
    <ul>
        <MTEntries lastn="3"> 
        <li>
            <$MTEntryDate format="%b %d, %Y"$>
            <a href="<MTEntryLink>"><MTEntryTitle></a>
        </li>
        </MTEntries>
    </ul>
    </MTRelatedEntries>
    
  5. 再構築

これで関連エントリーを表示することができます。

このプラグインは、「エントリーのキーワード」欄を見て、同じようなキーワードが記入されているエントリーを関連エントリーとして表示しているようです。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 5時7分

このブログのホーム

MovableType272385384

10/25 CakePHPカンファレンス東京が開催

10/25に、CakePHPカンファレンス東京なるものが開催されるそうです。

近年、注目の高まっているWEBアプリケーション開発フレームワーク『CakePHP』を題材とした国内初のカンファレンスを2008/10/25に東京にて開催致します。CakePHP開発マネージャ Garrett J. Woodworth氏をアメリカよりお招きし、最新の動向についてご講演頂きます。CakePHPによるWEBアプリケーション開発の最先端の動向を知るまたとない機会としてみなさんのご参加をお待ちしております。 CakePHPカンファレンス東京

yandodこと安藤祐介氏や岸田 健一郎氏の講演や、CakePHP生みの親のGarrett J Woodworth氏の招待講演など、CakePHPerは必聴の講演ですね。
ライトニングトークもあるようです。

イベントへの参加申し込みは、日本PHPユーザ会のevents.php.gr.jpで、10/7 13:00~と10/8 19:00~の2回に分けて行われるそうです。
http://events.php.gr.jp/events/show/55

一回目の参加申し込みは今日!昼過ぎからPC前に張り付いていないといけませんね、コレは。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年10月21日 21時34分

このブログのホーム

PHP系343375

iPhoneのアプリを作りたい!

iPhoneのアプリを作りたい!と急に思い立ったのですが、いかんせん、どうやって作ったらいいものかいまいち分からず。いろいろとネットサーフィンしてみました。

どうやら、iPhoneアプリを開発するには、Objective-Cをコア言語とするオブジェクト指向フレームワーク「Cocoa」というものを使うようです。
Cocoaは、Mac OS Xのアプリを開発するのに使うフレームワークで、iPhoneにも半分のっているらしい。

このあたりは、「iPhoneでのネイティブアプリケーション開発」を読むと概要が分かりやすい。

とにかく、iPhoneアプリを開発するには、CocoaとObjective-Cの知識が必要なようです。

で、このHMDTの中の人が書いた「たのしいCocoaプログラミング[Leopard対応版]」という本が、新しく発売されたとのこと。
もともとはTigerでの開発用に書かれていたらしいのだが、この度、Leopard対応版という形で改訂し、発売に至ったらしい。

プレゼント企画があったので、さっそく応募してみました。当たるといいな。

たのしいCocoaプログラミング[Leopard対応版]
木下 誠
ビー・エヌ・エヌ新社
売り上げランキング: 174
おすすめ度の平均: 5.0
5 とりあえずこの一冊

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年9月8日 9時21分

このブログのホーム

iPhone App364368362366

第35回PHP勉強会に初参加してきました

8/31に第35回PHP勉強会に参加してきました。PHP勉強会の存在はなんとなーく知っていたのですが、人見知りのため恐縮して未参加でした。
とはいえ、勉強会に参加する事情があったのと、もともと興味はあったので、頑張って参加してきました。人見知りは辛いよ。

CakePHP使いはじめた人へのテクニック集公開

(私はいかにしてevents.php.gr.jpをEthnaからCakePHPにおきかえたか)

  • 発表者:haltさん
  • EthnaとCakePHPのお話
  • 発表資料
  • events.php.gr.jp
    • 現行のものは、トータル3日ぐらいでEthnaで作成
    • haltさんが働いてらっしゃるRYUSにはフリーフライデー制度という毎週金曜は仕事以外のことをする勉強タイムがあるそうで(うらやましい!)、その制度を利用して開発を行った
  • ソースコードはcodreposで公開中
  • 改善ポイント
    • いままでTypeKey認証でしかイベント参加登録できなかったものを、OpenID認証を利用してできるようにした
    • プロバイダははてなとmixiのみにサーバサイドで制限している
    • CakePHPでOpenIDを実現するために、AuthComponentを利用
    • ユーザ名とパスワードが必要なAuthComponentをユーザ名だけで利用できるように回避策を講じている(第3回CakePHP勉強会でやったらしい)
    • TypeKeyではnicknameやメールアドレスが取得できたけど、OpenIDでは拡張情報はとれる保証がないため、既存システムとの兼ね合いで、初回ログイン時に入力してもらうようにした
    • 既存ユーザがOpenIDに変更した場合には、TypeKeyのセッションとOpenIDでログインしたログイン情報を自動的に結びつけてDBに保存するようになっている
  • EthnaとCakePHPの比較
    • Ethnaでは、joinとかはSQL直書きしないといけない
    • AppModelのリレーション設定にはbindModelを使用することで容易になる
  • Q「bindModelではSQLのクエリを大量になげることになるのではないか?」
    • Ethnaは生のSQLであるが、CakePHPでは綺麗にJoinしているわけではなくて、リレーション部分ですべてSQLを投げることになる
    • でも、Web側で見るとEthnaとCakePHPで速度差はそれほどない。CakePHPでキャッシュしているからか?
    • MySQLではJOINするとテンポラリーが作られるから遅くなる。単発でうった方が軽いというベンチマークも出ているらしい

近日中にOpenID版events.php.gr.jpを公開予定だそうです。楽しみです。
個人的にはブログURLを記載する欄とかあって、参加者のブログが分かるといいなとか思ったり。

まだフレームワークを利用していないのですが(CakePHPをちょろっといじってたり、自作テキトーフレームワークだったりしてます)、EthnaとCakePHPの比較として、SQLの書き方というのは非常に興味深い視点でした。個人的にはCakePHPのbindModelは利用してみたいなと思います。
MySQLのJOINが遅くなるというのはいい情報!結構JOIN使いまくりなコード書いてました。ちょっと見直すか・・・。

自己紹介タイム

ここでですか。人見知りは辛いよ(><) 数分の発言なのに超緊張とか。
まぁ、でもこれは非常によいですね。参加者がどんな人なのかは気になるし。

PHPでもテスト駆動開発だよ

  • 発表者:株式会社ディノkunitさん
  • TDD(テスト駆動開発、Test-Driven Development)とDocTestのお話
  • 発表資料
  • PHPプロのTOM先生のテスト講座
  • テストの分類
    1. Developer Test
      開発者が行う開発促進のためのテスト
    2. Customer Testing
      顧客と機能確認のための進歩管理のためのテスト(機能、単体テスト)
    3. QA Testing
      品質保証のためのテスト(速度・セキュリティ(被機能条件)などの品質、結合テスト)
    • 2、3はテスター(専門家)がやり(プログラマーと敵対)、開発者がやるのは1で今日の話の中心。
  • 開発者は仕様書を(Excelとかで)書くのが面倒。
    • 文章ではなくコードに書く
  • TDDは三段階
    1. (きれい×動かない:花畑)
    2. RED、わざと失敗させる
      (汚い×動かない:終了)
    3. GREEN、汚くてもいい ひとまず動かす
      (汚い×動く:現実)
    4. REFACTOR、コードを洗練させる
      (きれい×動く:理想)
    • 最終目標はREFACTORだけれど、基本的にはRED、GREENの繰り返しを続けて行く。
  • DocTest
    • funcitonの直前とかのコメントに直接テストケースを書けば、テストが走る
    • 裏でPHPUnitを動かしているだけ
    • ただ、コメントがめっちゃ長くなる
    • テストが長くなる場合、メソッドを減らして責務を減らしていく方がいいかも
  • テスト駆動開発入門 ケント・ベック著
    • 「Clean code that works」動作するきれいなコード
  • Q「privateメソッドのテストは?」
    • 実際のところは課題
    • 全部がpublicにできるかというとそうではない
    • どうするかは方法論として確立されていない
    • UnitTestが進んでいるJAVAでも確立していない
    • runkitを入れるとできる
  • Q「フレームワークで使うには?」
    • In/Outを綺麗に整える
    • 外部要因がたくさんあって存在するmethodは痛い目をみている
    • ActionはテストとしてはUnitの対象ではない
    • Functional Test / Unit Test
    • ActionはRequestとResponseの汚染されている。ひとつ上がUnitTest
    • ControllerとかActionにロジックを書くな、Model側に書け。そいつ単体でテストできるようにしろ
  • Q「ユニットテストのメリット/デメリット」
    • Unitテストは、それぞれのパーツが正しく動くことしか保証できない
    • 正しいものと正しいものの組み合わせが動くとは限らない
    • もう一段階上のレイヤーのテストは必要かも
    • 何かとがっちり組み合ってしまったシステムはやりにくい
  • Q「セッション周りは?」
    • ActionとControllerがセッションをハンドリングしてくれた後の話になる。モックを作ることになる
    • 個々のものが他と影響し合わないように作っておくと容易だよねということになる
  • Q「改修案件に導入するのは困難?」
    • Railsはそこは見てない 既存にがっつりDBが組んであったらやりにくい
    • 既存の案件には導入しない方がいいかも

全然知らなかった。話を聞いた上では、確かにこれはやるべきだし、DocTestは便利かも。今度使ってみよう。

symfonyでモバイル開発なんてどうですか。

  • 発表者:ゆどうふさん
  • symfonyとモバイル開発のお話
  • 発表資料
  • キャリア/端末の違いを意識した開発が必要
    • キャリア/端末情報の取得。独自定義のHTTPヘッダーなどから取得
    • HTML/CSS
    • 文字コードのgdgd
    • 絵文字
    • セッションとCookie。Cookieが使えない機種/キャリアの存在
  • HTML/CSSの仕様
    • 全キャリアでXHMLT/CSSが利用可能
    • キャリア毎にDTD宣言を変える必要がある
    • DoCoMo
      • HTTPヘッダにapplication/xhtml+xml必須
      • i-CSS、独自仕様のインラインCSS
    • au
      • 外部CSSが利用可能、子孫セレクタなどは効かない
    • SoftBank
      • 外部CSSが利用可能、子孫セレクタもOK
    • ちゃんとデザインをしようと思ったらキャリア毎にテンプレートを作る必要がある
  • ハマリどころ
    • fontサイズの指定 サイズの変化がバラバラ
    • input要素 入力モード制御がカオス
    • mailtoの文字コード au、DoCoMoはSJIS、SoftBankのみUTF-8でURLエンコード
    • 統一テンプレートで解決するのは無理。切り替える仕組みが必要
  • 文字コードの押さえどころ
    • DoCoMoはShift_JISにすべき。UTF-8だと機種によってPOSTの際に文字が消える
    • auはShift_JISにすべき。SSL領域はUTF-8が使えない
    • SoftBankはUTF-8にすべき。Shift_JISでは機種によって絵文字がPOSTされてこない
  • symfonyでモバイル開発
    • ライブラリや拡張をうまくやっておくと、通常のWebサイトと同様の開発が可能
    • モバイルフィルタ→キャリア判定、絵文字/文字コード変換、CSSきりかえ
    • モバイル特有の処理を行うフィルタを独自追加する
      • キャリア判別:Net_UserAgent_Mobileを利用、symfonyのautoload機構
      • 絵文字変換:sfPictogramMobilePluginを利用(手前味噌)、単純にmb_conertすると失敗する可能性が高い
      • 文字コード:内部の運用コードはUTF-8で統一、入出力時にキャリア毎に表示エンコードとの相互変換を行う
      • CSS切り替え:HTML_CSS_Mobile(手前味噌)→(DoCoMoのみ)外部CSSをインライン展開
    • Cookieが使えないのは、DoCoMo全機種とSoftbankの一部機種。use_trans_sidを利用

ちょうどいまモバイルの開発をやっていて、自作gdgdフレームワーク(+Smarty)でこの辺を回避しようと思ってやっていました。でも、絵文字周りとかどうしようと悩んでいたところなので非常に有用な情報でした。
CakePHPでなんとかできないかなーと思っていたところだったんですが、Symfonyにも惹かれた。どうしよう?どのフレームワークが一番モバイル開発にはいいんでしょう?

Project ZeroでPHP part2

  • 発表者:nemo_kazさん
  • JavaとPHPの連携
  • Project Zeroの続報
    • 発表資料
    • PHPランタイムはphp.netではなくJVM上に構築
    • JAVAのGCが使える
    • PHP 5.2ベース
    • ただし、フレームワークは完全対応ではない
  • Javaクラスを利用することができる。Javaで動いているレガシーコードにPHPから軽くさわりに行ける
  • JAVAで堅く作った部分をPHPで軽く呼べる
  • MVCのMの部分をJavaにお願いしてVをPHPで作成できる
  • JavaのquolityでPHPが動く

こういうのもあるのですね。知らなかった。けど、Javaをいじったことがないので、内容はちょっと難しかったです。

まとめ

初めて参加しましたが、非常に有用でした!なんでいままで参加しなかったんだろうとちょっと後悔です。
いままで周りにぺちぱー(ていう言い方も初めて知ったよ)がいない環境でずっとやってきたので、いろいろな人のお話が聞けるというのは楽しいものですね。

運営スタッフが足りないので手伝ってほしいとのことでした。何か手伝える事があるなら手伝いたいところ。

懇談会では、ぺちぱーとPHP談義に花を咲かせて楽しかったです。後半記憶がないのですが、失礼はしてなかったでしょうか・・・。ちょっと心配。しかも電車を乗り過ごして自宅までたどり着けなかったという・・・。

いつか自分も発表できるように頑張ろう!
また参加します!

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年10月10日 6時27分

このブログのホーム

PHP系34334975340338352346344341347350

Smartyで同一のコードを繰り返し出力をする

Smartyで、テンプレート内において同一のコードを繰り返し使用したいときには、captureを使用すると便利です。

繰り返し使用したいコードをcaptureで囲み、name属性に固有の名前を記述します。(name属性を記述しないとdefaultという名前を記述したことと同一になります。)

{capture name=header}
<a href="#top">ページ上部へ戻る</a>
{/capture}

あとは、上記のコードを利用したい場所で、以下のように記述すると、captureで囲んだコードが出力されるようになります。

{$smarty.capture.header}

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 5時10分

このブログのホーム

PHP332335336

Smartyでtableの行の背景色を交互に変える

DBからデータを出力して、tableの行の背景色を交互に変更したいとき、Smartyでは、cycleという関数を利用すると簡単に行うことができます。

例えば、Smartyテンプレートのforeach、sectionなど繰り返し関数の内側に配置します。(1ページ内で複数の場所で別々に使う場合は、name属性に固有の名前を付けます。)

{section name=rows loop=$data}
<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}">
<td>{$data[rows]}</td>
</tr>
{/section}

出力結果は以下のようになります。

<tr bgcolor="#eeeeee">
<td>1</td>
</tr>
<tr bgcolor="#d0d0d0">
<td>2</td>
</tr>
<tr bgcolor="#eeeeee">
<td>3</td>
</tr>

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 5時13分

このブログのホーム

PHP332333334232

携帯電話のフォームで入力モードを指定

携帯電話の文字入力において、かな/カナ/英字/数字の切り替えは、機種にもよりますが、いずれも結構面倒な操作です。入力フォームを切り替えるたびに、かなにしたり数字にしたりという操作をユーザに強制するのは、あまり好ましいことではないでしょう。

formのinputに対して、istyle属性とmode属性を指定してやることで、入力モードを明示することができます。istyle属性はDoCoMoとau用、mode属性はSoftbank用です。

入力モードと属性の値は以下のようになっています。

全角
istyle="1" mode="hiragana"
半角カナ
istyle="2" mode="hankakukana"
英字
istyle="3" mode="alphabet"
数字
istyle="4" mode="numeric"

ユーザの使い勝手を意識した操作性を実現することは、非常に重要なことだと思います。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年8月7日 12時22分

このブログのホーム

HTMLモバイルサイト132328329326327

blog.shibuyaphp.orgでブログ始めました

twitterでShibuya.phpやろうよってつぶいたら本当にやることになりそうだ」というわけで、shibuyaphp.orgというドメインを取得したので、「Shibuya.PHP徒然日記」というブログを始めました。

人脈もイベント開催経験もなければ、PHP経験が少なく講演もできないのに、やろうと公言したからには、有言実行で開催までこぎつけようと思います。そんな試行錯誤の一部始終をここで公開します。

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年8月5日 6時59分

このブログのホーム

Shibuya.PHP314174

PHPで標準入力を取得する方法

例えば、メールをPHPで受信してそのデータを取得するなど、コマンドラインでPHPを実行してデータを取得したいときには、標準入力でデータを受け取ります。

標準入力とは、

オペレーティングシステム(OS)の実行するプログラムがデータを受け入れるデフォルトの入り口。UNIXおよびその系譜を引くOSでは、キーボードからの文字入力が標準入力とされる。 標準入力とは - はてなダイアリー
のことで、例えば、
$ ls -a | php getls.php
として受け取ります。

このとき、標準入力として送られてきたデータはPHP側では以下のように受け取ります。

$fp = fopen('php://stdin', 'rb');
if(!$fp) exit;
$stdin = '';
do {
    $line = fread($fp, 8192);
    if (strlen($line) == 0) break;
    $stdin .= $line . PHP_EOL;
} while(true);
fclose($fp);

作者: 荒井宏之 http://hiroyukiarai.jp/

更新日:2008年11月22日 5時14分

このブログのホーム

PHP77325324

ソースコードを自動で整形するJavaScript「SyntaxHighlighter」

作者:

更新日:

このブログのホーム

Google AJAX Language APIをPHPから叩いて翻訳する

作者:

更新日:

このブログのホーム

Movable TypeのブログをiPhone/iPod touch対応させるテンプレート

作者:

更新日:

このブログのホーム

MySQLへの新規ユーザの追加

作者:

更新日:

このブログのホーム

MySQLに外部ファイルのSQLを実行する

作者:

更新日:

このブログのホーム

「iKnow!」がAPIを公開!

作者:

更新日:

このブログのホーム

Movable Typeで関連エントリーを表示する方法

作者:

更新日:

このブログのホーム

10/25 CakePHPカンファレンス東京が開催

作者:

更新日:

このブログのホーム

iPhoneのアプリを作りたい!

作者:

更新日:

このブログのホーム

第35回PHP勉強会に初参加してきました

作者:

更新日:

このブログのホーム

Smartyで同一のコードを繰り返し出力をする

作者:

更新日:

このブログのホーム

Smartyでtableの行の背景色を交互に変える

作者:

更新日:

このブログのホーム

携帯電話のフォームで入力モードを指定

作者:

更新日:

このブログのホーム

blog.shibuyaphp.orgでブログ始めました

作者:

更新日:

このブログのホーム

PHPで標準入力を取得する方法

作者:

更新日:

このブログのホーム