Zend Formの覚書です。 今まで、ZendFramewok+Smarty+QuickFormって構成でプログラム組んで たんですが、以前から気になっていたZendFormでやったらどうかな? という事で、現在、QuickFormからZendFormに組直しているところです。 なんか検索してるとZendForm=イマイチみたいな書き込みが多いですが、 ZendFramework自体、どんどん開発が進んでいますので、結構使えるんじゃ ないかな?と思っているんですが、どうでしょう? 細かい利用方法は、いろんなところでまとめてもらってるみたいなので、 具体的な使い方を・・・。 ○○Controller.php ・・・省略・・・ public function indexAction() { $this->_form = new ○○Model(); $form = $this->_form-
Zend_FormはZend Frameworkを特徴付けるコンポーネントの一つです。ZFではモデル実装部分についてはあまり多くが語られず、基本自由というスタンスなんですが、zf-mvcというMLとZF開発者のBenjamin EberleiさんとMatthew Weier O'Phinneyさんのブログで具体的な話が出ていて面白いのでまとめることにしました。勝手に王道宣言をしていますが、要するに紹介ネタ(の予告) です。 http://www.whitewashing.de/blog/articles/42 phly, boy, phly :: Using Zend_Form in Your Models http://www.whitewashing.de/blog/articles/109 今のところ上記ブログ3つでだいたいでFAです。 いずれ、別の方法論も生まれてくると思います。個
フォームを作るときに意外と面倒なのが、入力チェックにひっかかったときの挙動。 美しくないパターンとしては、エラー画面を表示させて、ユーザーに「戻る」を強いるもの。この方法であれば、もとの画面に戻ったとき、おそらくユーザーが入力していた情報は残っているだろう。キャッシュコントロールの問題等もあるけど、今回の主旨とはずれるのでその件は割愛。 一般的なパターンは、エラーになったときは画面を遷移させず、もう一度入力画面を表示して、そこにエラーメッセージを表示するというものだろう。 ここで、面倒なのがユーザーが先ほど入力していたものを予め入れておくという(以下、プレフィル)処理だ。 Zend_Form を使えばこういうわずらわしいところ(プレフィルとかエラーメッセージの表示とか)を全て解決してくれるので、とても頼もしい。Zend_Form そのものの解説は他にまわすとして、設定ファイルから一気にフォ
iPhone アプリ開発を初めてはや2年。わけわからんレベルからなんとかアプリをリリースするところまでこぎつけました。もともと趣味ではじめた事ですが今は仕事でも iPhone アプリ開発をしています。ここに至るまで自分が調べたことや参考にした文書をアプリの構想からアプリをリリースするまでの手順にそってまとめてみました。 iOSアプリ開発関連の本を書きました 初めて iOS アプリ開発をされるかた向けに「プロの力を身につける iPhone/iPadアプリケーション開発の教科書」という本を書きました。 この記事を読んで iOS アプリ開発に興味を持たれた方におすすめです(2013年2月26日発売)。2015年1月17日にSwiftに対応した改訂版がでました。 本の内容に関する詳しい記事はこちらです。 iOSアプリ開発の本を書きました 初期投資 8400円とプライベートな時間、iPhoneまたは
デザイナーではない方も趣味でサイトを作っていたり、デザイナーに頼むほどでもない画像を作ったりする機会があると思います。デザイナーはセンスでサクサクと制作するイメージがあるかもしれませんが、実はデザインというものは数々のルールによって成立しています・・・デザイナーではない方も趣味でサイトを作っていたり、デザイナーに頼むほどでもない画像を作ったりする機会があると思います。 デザイナーはセンスでサクサクと制作するイメージがあるかもしれませんが、 実はデザインというものは数々のルールによって成立しています。 そのルールの知識があればデザイナーレベルとはいかないものの、見た目がきれいなグラフィックは作れるはずです。 デザインという言葉の定義やソフトの使い方から始めてしまうとややこしくなるので、 今回はあくまでも「とりあえず見た目をキレイにする」ということに重点を置いて説明します。 記事内で
単体テストを“神速”化するQuick JUnitとMockito:ユカイ、ツーカイ、カイハツ環境!(16) Quick JUnitプラグインの3つの大きな特徴 近年、JUnitとHudsonを利用した継続的インテグレーション(CI)によるテストの自動化や、テスト駆動開発(TDD)の普及などにより、ユニットテスト(単体テスト)のテストコードの作成が重要視されています。 今回紹介する「Quick JUnit」プラグインは、JUnitによるテストコードの作成と実装を支援するEclipseプラグインです。Quick JUnitプラグインは石井勝さんにより開発されていましたが、石井さんが不慮の事故により死去後、Quick JUnitプラグインプロジェクトにより開発が継続されています。優れたオープンソースプロジェクトの模範のようなプロジェクトです。 訂正のお知らせ 故人のお名前について間違いがあり、修
私は「virtual」を「仮想」と訳すのにすごく抵抗がある。 「virtual」って英語本来の意味は、「実質上の」「実際上の」というような意味だ。「表面的にはそうではないが実質的にはこれなんだ」というような時に使う。 「virtual memory」を「仮想記憶」と訳すと「実際は存在しないメモリ」であるかのように思える。現実的に存在しないのなら無くても構わないようにすら思える。確かに物理的には存在しないから実在はしないんだけど、かと言って不要というわけでもなく、「virtual memory」本来の意味は「(ユーザーアプリなどが)実際に使うときのメモリ」みたいなニュアンスで「無くても構わないメモリ」とは、ちょうど真逆の意味だ。 「仮想」という言葉が、「存在しない」という否定っぽい語感なのに対して、「virtual」本来の意味は「実質上(は、これだ)」という肯定っぽい意味だからどうもギャップ
ロールオーバーで画像を変更する際に使用するプリロード用のjQueryを使用したスクリプトを紹介します。 Preloading Images with jQuery and JavaScript ロールオーバー時に表示する画像をその都度ダウンロードして表示すると時間のギャップが生じます。その時間の遅れを避けるために、画像を事前にバックグラウンドで読み込みます。 JavaScript <textarea name="code" class="html" cols="60" rows="5"> (function($) { var cache = []; // Arguments are image paths relative to the current page. $.preLoadImages = function() { var args_len = arguments.length;
IE6/7/8のhasLayoutが原因でおきるスタイルシートのバグとその解決方法をまとめたサイトを紹介します。 hasLayoutについては、以前のエントリで紹介しているので参照ください。 IEでのCSSのバグを回避するhasLayout hasLayout.net バグは現在、IE6(44個)、IE7(28個)、IE8(19個)登録されており、各ページにバグの解説、バグが生じるデモページ、バグの解決方法とそのデモページなどが掲載されています。 IEのCSS Bugs一覧表の一部 また、CSSのチュートリアルでは、IEの便利なトリックも掲載されています。 CSS Tutorial 例えば、下記のようにIEでクリックした際に生じる点線は、他の箇所をクリックしないと消えないため、クリック後しばらくして消したり、元から表示させない方法などが紹介されています。 クリック時に生じる点線の処理方法
2010年08月03日21:30 カテゴリ書評/画評/品評iTech Objective-C不要! - 書評 - iPhoneアプリケーション開発ガイド オライリー矢野様より献本御礼。 iPhoneアプリケーション開発ガイド Jonathan Stark / 増井俊之監 / 牧野聡訳 [原著:Building iPhone Apps with HTML, CSS, and JavaScript] これだ! こういう本が、欲しかった! iPhone向けに何か作りたい。でもObjective-Cは敷居が高い。App Storeで大もうけしたいわけじゃない。でもiPhone向けのWebサイトを作るだけじゃちょっと物足りない。 そんな私のような人のためにうってつけの一冊が、これだ。 本書「iPhoneアプリケーション開発ガイド」という題名は、ちょっとミスリーディングだ。原著の"Building i
iOS 4.0.1に対応したJailbreakツールがリリースされています。 今回はiOSにおけるPDF取り扱いの不具合を利用するようですが…これは怖い。 iOSアップデートで対策がとられるまで、信頼できないPDFファイルは絶対に開かないようにしましょう。 Jailbreakって何? iPhoneに施されている保護を解除して、App Storeで販売されていないアプリのインストールや、様々なファイルにアクセスできるようにする手段のことです。 Jailbreak後に導入できるアプリは、App Storeにおける制限を無視して、iOSの動作に影響を与えることもできます。例えば、iOS4から利用できるようになった回転ロックも、Jailbreakユーザはその1年以上前から手に入れることができました。(この場合、厳密にはSpring Boardに影響を与えるですが…) 自らのiPhoneに自由にア
”なる4”の騒ぎの件で、「OAuthの危険性がわかっているのか?twitter関連アプリの作者は何でもできるんだぞ。たとえば、DMは見放題送り放題だ」という意見を良く見かけるのですが、誤解を招く表現なので、twitterクライアント作者の立場から捕捉しておきます。 (TwitterにおけるOAuth認証についての話です。本文の記述から判別できるとは思いますが、念のため。他サービスの場合、事情が異なってくる場合があります) 少なくともデスクトップで動作するアプリは、これらのリスクは(比較的)低い もちろんスパイウェア等は、この限りではありません。 OAuth認証の流れを図にしてみました(あくまで「おおまかな」図です。色々と、端折っています)。 うだうだと書かれていますが、大事なのは「アクセストークン」です。これさえ覚えてもらえれば、他は全て忘れてしまってかまいません。 twitter関連アプ
四時作者の小池です。面倒だからここに書く。 首記の件はどうでもいいのだけど、 「あ、ちなみにOAuth許可してたらモノにもよるけどアプリケーション側からDMとかも取得できるからね。まあホイホイOAuth登録するんだからDMに住所とかメールアドレスとか大事なこと書いてたりしないとは思いますけどね。」 について。この表現だと誤解を招きそうなので。ユーザーから OAuth 経由での API アクセスを許可されたアプリケーションは、そのユーザーが読むことが出来るデータの全てにアクセスできます。書き込みを許可していればアカウント削除以外のことは大体出来る。 DM を「読む」だけなら OAuth 認可を受けたコンシュマーは誰でもできます。 デスクトップアプリケーションであれば通信を監視すればよいけど、 Web アプリケーションの場合はそれが出来ない(例えば四時と twitter の間で何か通信をしたと
渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 LL Tigerでライトニングトークスに参加してきました。今回はトーナメントの勝ち抜き方式で、今までのLTで見た中で技術的にハイレベルなプレゼンが数多く行われました。我らが"殺伐Python"は、残念ながら2回戦敗退でしたが、その負けた勝負も「言語実装者vs言語実装をだます人」という、刺激的すぎる対戦でした。柴田さんも、良い試合だったと言ってくれました。@moriyoshi, @ymotongpoo、お疲れ様でした!ちなみに写真は昼休み。「shibuya.jsやべぇよ、飲んで勢いでやろうぜ」的なw(清水川さん、写真ありがとうございます) イベントとしては、並列の話がおもしろいなぁ・・と思いました。上から下まで、コードジェネレータ、DSL、トランスレート・・・さまざまな技術がない
おお。。。 I was writing about new features in the upcoming PHP version (5.4, 6.0?) before. Today's topic reads like this in the NEWS file: - Added array dereferencing support. (Felipe) デリファレンスとは、参照の指す値を取り出すことで、Perlではお馴染みと思います。 たとえば、関数の戻り値が配列の場合に <?php // func()は配列を返す関数 $val = func()[2]; と書けるようになる、ということです。で、どうやらphp-trunkにcommitされた模様。 ということで、早速試してみました。 使用したPHP 201008030430付けのsnapshotです。 $ php -v PHP 5.3
なる四時の騒動をまとめとく。(追記:ブクマされてるので念のため書いておくが増田は素人です。技術的な面に関しては参考までにどうぞ。) 間違ってたらトラックバックなりなんなりで訂正してくれ。 きっかけは小池氏(@ssig33)によるテスト。 なるほど白夜じゃねーの #4ji http://twitter.com/ssig33/status/20179930626 ちょっとしたテストで四時全員で俺の発言と youpy の発言ふぁぼらせる http://twitter.com/ssig33/status/20179966911 favoritesがどれくらいの速度出るのか試してみたい http://twitter.com/ssig33/status/20179979441 その結果、以下のpostが大量favされる(favstar参照) http://favstar.fm/users/ssig33
10分でできる効率の良い筋トレ方法に関するライフレシピをご紹介します。nanapi [ナナピ]は、みんなで作る暮らしのレシピサイトです。はじめに 筋トレに必要なものはまずダンベル、それにトレーニングウェアや筋トレ法の本屋DVDかな?そう思ったアナタ! この方法は一切必要ありません! 必要なものは身一つ!それとやる気だけです! ポイント 最短の時間で最大の力を出す! ダラダラ2時間筋トレするよりも10分で最大の力を出し切ることで効率の良い筋トレができます。 ポイントは複数あります。以下にご紹介します。 その1:腹筋・背筋・腕立て・スクワット 誰でも知ってるこの4つを10分間で、もう出来ない!というところまでやりきる。これかがたった10分で十分なのです! それには次のポイントが必須! その2:負荷のかけ方 これが最大のポイント!腹筋100回って案外できてしまうもの。でもそれではまったく筋
2010年7月31日(土)に開催されたLL Tigerで「開発ライセンスとプログラマーの自由」というセッションを行ないました。 Flasher,iPhone開発系の人たちにも登壇をお願いしましたがことごとくフラれて、結局パネルディスカッションを諦め、私一人で登壇して会場から意見を募るという、なんとも無謀なセッションとなりました。結果としては、会場参加者の方々が積極的に発言をしていただいたことに救われて、上手く盛り上がったセッションになったと思います。 開発ライセンスとプログラマーの自由View more presentations from koyhoge. このセッションで私が一番知りたかったのは、今回Apple行ったような「開発ライセンスで使用言語を制限する」という方法が、開発者の一般的な感覚として受け入れられるのかどうかという点でした。参加者に挙手をお願いした簡単なアンケートでは、ざ
こんにちわ、あらびきプログラマー moriyoshi です。 Python が生理的に嫌いな人からよく聞く話として「インデントでブロック構造を表す」ってのがありますね。じゃあ中身はそのままで文法だけ Ruby っぽくしたらどうなるんでしょうかね。Python はトークナイザもパーサも簡単に書き換えられるので、試してみましょう。 例えば次のようなプログラムは class Boo(object): def foo(hoge): try: for i in hoge: with i: if i.fuga: while True: j = i.fuga() if not j: break print j + 2 except HogeException: pass else: pass finally: pass こんな風になってしまうわけです。ああ怖いですね。 class Boo(object)
プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく
Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。 btmup Blog ディレクトリ名とかファイル名って、ちゃんとしようとすると意外に時間がかかるもの。 ページタイトルを直訳すれば良いってもんでもなく、いくつかある候補から内容に一番合った単語を見付けてこないといけない。 いちいち英語を調べるのもメンドいし、かといって「gaiyo」とかじゃ気持ち悪いし、どうしたもんかねー、とずっと思っていました。 で、今回、勢いでざっくりとまとめてみたのでついでに公開します。 本当にざっくりなので抜けもあるだろうし「それくらい書かんでも分かるわボケ」なものもあるでしょうけど、まぁそれは追々。 ディレクトリ名やファイル名として使用することを前提としているので、文法とかは全く考慮してませんので悪しからず。 最近、医療・病院関係のサイトに仕事で関わることが多
iPhone用ARアプリ「セカイカメラ」の頓智・(トンチドット)が、新ビジョン始動をうたう記者発表会を同社新オフィスにて開催。ゲームプラットホームとして「セカイカメラ」を展開することや、初のARによるオンラインRPG「セカイユウシャ」の情報が公開された。 「セカイカメラ」新機能情報を公開 発表会において頓智・の井口尊仁CEOがまず話したのが、「セカイカメラ」のキャッチフレーズであった「Tagging The World」(世界にタグづけ)を「Beyond Realty」(現実を超えて)に変更したこと。またセカイカメラの最新アップデート情報を紹介した。 新バージョンでは、エアタグ投稿時にGoogle Mapで位置情報を直せる「位置情報の修正機能」、「セカイカメラ」を立ち上げなくともiPhoneのメニューでセカイワールドの更新が分かる「ノーティフィケーション」機能、エアタグと背景写真が撮影でき
Flip is a jQuery plugin to apply flip animation to any element.0.4.1 Fixed some regression in Chrome and Safari 0.4 Fixed some bugs with transparent color. Now Flip! works on non-white backgrounds! 0.3 Added the content setting: now you can define the next content of your Flip!box. 0.2 Fixed jQuery chainability and buggy innerText rendering (Thanks xNephilimx for your tips!) 0.1 Kick off
まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak
Pythonを使ったプログラミングについて、今回から解説します。PerlやRubyと比べると、Pythonは日本ではまだマイナーな印象がありますが、「Google三大言語」(C++、Java、Pythonのこと)のひとつでもあり、Facebookをはじめとしたメジャーなサイトでの事例が急速に増えていることから、日本でも今後普及する可能性が高いです。私が社長をしているゼロスタートコミュニケーションズという会社では、設立当時(4年ほど前)から自社製品にはPythonを使っており、ここ半年間、周囲でPythonを使用しているケースが増えているのは嬉しい限りです。 Pythonに限らず、プログラミング言語が日本で普及するかどうかの鍵を握っているのは、(幸か不幸か)日本語情報の多寡であると思います。Rubyの事情は正直よくわかりませんが、たとえばPerlがこれだけ日本でメジャーになったのは、Perl
HTML5のWidget開発情報として、Android OSのHTML5の対応状況を調査した。 調査では、HTML5TEST ( http://www.html5test.com ) を使って各OSのバージョンごとに対応状況をチェックした。 検証に使用したデバイスは OS2.2 Nexus One OS2.1 Galaxy S OS1.6 IS01 総合スコアは、OS2.2が176ポイント、OS2.1が151ポイント、OS 1.6が46ポイントという結果だった。 OS2.2 OS2.1 OS1.6 ちなみに、Chromeでチェックすると197ポイントであった。 Parsing rules Parsing rulesは、OS 1.6, OS 2.1, OS 2.2、さらにChromeも1/11のスコア。 Canvas Canvasは、OS1.6,OS2.1,OS2.2ともに20ポイントで、全
java7月頭に,Brian GoetzがJavaにおけるラムダ式導入に関する最新提案のドラフトを出しました。State of the Lambda 私はこの提案書と,提案書を元にした英語記事を読んだだけですが,Twitterで話していると,23日くらいにこの提案を元にしたソースがJavaのソースリポジトリにコミットされたらしい。ただし,中ではまだ議論続発してるらしい。ちなみに英語記事はラムダについての連続記事の4回目で,5回目ではWicketでラムダ式を使うとどうなるか,という考察が載っています。提案書のラムダ式とWicketの非整合部分についての考察で,Wicket好きの人は読んでみてもいいと思う。あと,空コンストラクタがないクラスについて提案書は明確なところ書いてないよね,みたいな指摘も。せっかくなんで,最新提案におけるラムダ式実装をまとめておきます。いままでのあらすじ最新提案書では
2010年07月30日15:00 カテゴリTaxpayeriTech Magical Indeed - レビュー - Apple Magic Trackpad というわけで私も購入したのだけど… Apple Magic Trackpad アップル なにこれ気持ちいい 最新型のMacでない人は、なにはともあれMagic Trackpad および Multi-Touch アップデート 1.0をインストールしておくこと。さもないとマウスとして認識されます。私のiMac (Late 2009)もそうでした。 すると[Preferences]に[Trackpad]が表示されるので、これを選択した状態で電源を入れます。 あとは自明ですね。 Tracking Speedを最大にしておけば、あの広い27インチ画面も指先一つで縦横無尽です。マウスだと「よっこいしょ」になる場面というのはほとんどありません。
Mac OSのスリープ方式(ハイバネーション)を変更する方法です。 バッテリーの持続時間を長くしたり、スリープにかかる時間を短縮したりすることができます。 MacBookやMacBook Proのスリープ方式を切り替える方法 スリープの種類と特徴 スリープの方式を切り替える方法 を説明します。 デフォルトのスリープ方式「セーフスリープ」 MacBookのデフォルトのスリープ方式は「セーフスリープ」といいます。 このスリープ方式は作業中のメモリの内容をそのまま保持したまま、スリープ移行時に作業中のメモリの内容をハードディスクにコピーとして書き出します。 このスリープ方式だと以下の利点があります。 通常のスリープ復帰時にはハードディスクからは読み込まず、メモリに保持している作業中の内容を使うので、復帰が速い。 スリープ中にバッテリー切れになったときは、ハードディスクにコピーした作業中のメモリの
¥¢¥×¥ê¤òºî¤ë¤Ê¤éɬ¿Ü¤Î¸¢¸Â´ÉÍý¤ÎÀßÄê Zend Framwwork¤Î¥³¥ó¥È¥í¡¼¥é¤Ï¤¹¤Ù¤Æ¤Î¥ê¥¯¥¨¥¹¥ÈÅý°ìŪ¤Ë¼õ¤±¼è¤ë¡ÜApache¤Îmod_rewrite¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¢¤ó¤Þ¤ê¥´¥Á¥ã¥´¥Á¥ãºÙ¤«¤¤¤È¤³¤í¤Þ¤Ç¹Í¤¨¤Ê¤¯¤Æ¤âÈæ³ÓŪ³Ú¤Ë¼ÂÁõ¤Ç¤¤½¤¦¤Ç¤¹ ¥â¥Ç¥ë¤È¥Ó¥å¡¼¤Î¥³¥ó¥È¥í¡¼¥ë¤Ï¥¢¥¯¥·¥ç¥ó¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¤«¤é¡¢¥¢¥¯¥·¥ç¥ó¤ÎƬ¤ÇÙû¤Í¤Æ¤ä¤ì¤Ð¤è¤µ¤²¤Ç¤¹¡£ Zend Framework¤Ç¤Ï¡¡Zend_Acl¡¡¤È¤¤¤¦¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ç¸¢¸Â¤ò´ÉÍý¤Ç¤¤Þ¤¹¡£ ¸¢¸
トップ > 設置の基本 > .htaccessについて .htaccessの内容 PHP Labo で配布しているプログラムは、.htaccessファイルで色々な設定を行っています。.htaccessは、Apacheなどのサーバーソフトで利用できる、サーバーの動作設定を行うファイルです。サーバー上の任意の場所に .htaccess という名前でファイルを作成し、色々な設定を記述することができます。 各配布プログラムに付属している.htaccessの内容は以下のとおりです。 Options -Indexes DirectoryIndex index.php <Files ~ "\.(db|log|ini)$"> Deny from all </Files> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILE
書いた人: いちい 概要 EthnaでSmartyを使う場合に利用できる、組込みの便利なプラグイン(modfier, function, block)についての説明です。 基本的に Ethna_ViewClass で提供されているヘルパ関数や、 php の組込み関数、 Ethna_Util の関数などを呼び出すラッパーになっています。 modifier {...|number_format} number_format()関数のラッパーです。 入力 {"12345"|number_format} 出力 12,345 {...|strftime} strftime()関数のラッパーです。 入力 {"2004/01/01 01:01:01"|strftime:"%Y年%m月%d日"} 出力 2004年01月01日 {...|count} (配列にたいする) count() 関数のラッ
入力画面で入力した内容に誤りがあった場合、画面遷移としては下記の2パターンが考えられる。 A. エラー画面を表示して、エラー内容を提示し、戻るボタンで入力画面に戻ってもらう。 入力画面→エラー画面→入力画面→確認画面→完了画面 B. エラー内容を入力画面に提示する。 入力画面→入力画面(エラー表示)→確認画面→完了画面 B. のパターンの方がユーザーにとって2つの利点がある。 ■1. 画面遷移がAに比べて1ステップ少なく済む。(何度も間違える場合は、より効果的) ■2. 入力画面にエラーが表示されているので、自分のエラーを確認しながら入力できる。 しかし、B.のパターンを実装するとなると、ユーザーの入力内容をどう保持するかというところが若干難しくなる。A.のパターンではPCならブラウザの戻るボタンもしくはhistory.back()を使えばよいので、ユーザーの入力した内容というのは、プログ
Zend_Db_Table で join を使って、テーブルを結合してデータを取ろうとしてハマった。 発行したい SQL はこんな感じ。 SELECT statuses.id, statuses.user_id, statuses.reply_user_id, statuses.comment, statuses.created_at, users.user_name, users.private_flag FROM statuses JOIN users ON users.id = statuses.user_id WHERE statuses.user_id = ? AND users.private_flag = ? users テーブルと、statues テーブルを id と user_id で join する至って普通なもの。 O/R マッパとして Zend_Db_Table_A
すごい迷ったのでメモ。 $selectA = $db->select() ->from(array('u' => 'user'), 'name') ->where('u.id >= 5'); $selectB = $db->select() ->from(array('u' => 'user'), 'name') ->where('u.id < 5'); $sqla = $db->select()->union(array($selectA, $selectB)); $select = $db->select() ->from( array('u2' => $sqla), array('cnt' => 'COUNT(*)') );; echo $select->__toString().''; 出力SQL SELECT COUNT(*) AS "cnt" FROM (SELECT "u".
<?php class ItemTable extends Zend_Db_Table_Abstract{ protected $_name="tbl_item"; protected $_primary ="id"; // 行クラスを指定 protected $_rowClass ="ItemRow"; } class ItemRow extends Zend_Db_Table_Row_Abstract{ protected function _insert(){ $lm=new LogManager($this->_table->getAdapter()); $lm->doInsertLog(array("msg"=>"追加したよ!","date"=>(date("Y/m/d H:i:s"))); } protected function _update(){ $lm=new LogM
オデの日記@WEB系: Zend_Db_Table_AbstractでZend_Cacheを利用して負荷軽減 で、このZend_Db_Tableですが、生成する度にdiscribetable()というメソッドが呼ばれテーブル情報を取得します。とても便利なのですが、都度DB接続が行われ非効率すぎるのでZend_Cacheを利用してデータをキャッシュさせておきます。 discribeTable()が走るタイミングは ・insert() ・find() ・info() を呼んだ時だそうです。 というわけでキャッシュを組み込みましょう。 [php] $frontendOptions = array( ‘automatic_serialization’ => true ); $backendOptions = array( ‘cache_dir’ => TMP_PATH ); $cache = Ze
どうも俺@ZendFrameworkを利用してWEBアプリを開発中です。 Zend_Db_Tableを継承してクラスを作成すれば、すでに様々なメソッドを持ったクラス(Bean)を作成することができます。 <?php class MyBean extends Zend_Db_Table { } で、このZend_Db_Tableの生成は <?php $bean = new MyBean();です。 <?php var_dump($bean->info());とすると、そのテーブルに関するメタデータ情報が連想配列で取得できます。 ・name => テーブル名 ・cols => テーブルのカラム名の配列 ・primary => 主キーのカラム名の配列 ・metadeta => カラム名とカラムに関する情報を関連付けた連想配列。discribeTable()と同じ内容 ・rowClass => 行
Live nude webcam chat IntroductionLive nude webcam chat has become increasingly popular as a form of online entertainment and communication. This unique platform allows individuals to connect with models in real-time, engaging in intimate experiences through video chat. With the advancements in technology and the widespread availability of high-speed internet connections, live nude webcam chat has
例外ハンドリング時に考えた色々な事についての備忘録。 使用バージョン:Ver1.7.8 http://framework.zend.com/download/current/ ZFのダウンロードはこちら ZFにおける例外発生時の処理 ZFはPHP5ベースなので、何か問題が発生した時は例外をスローして対応する仕様となってます。 デフォルトの状態では例外がスローされると、Zend_Controller_Plugin_ErrorHandler.phpを経由してErrorController.phpに処理が委譲されます。 ErrorController.phpの基本的な書式はZFのマニュアルページにあります。 http://framework.zend.com/manual/ja/zend.controller.plugins.html 具体的には以下のような感じです。 <?php class E
Zend Frameworkマニュアルに記述のあるエラー処理について紹介します(7.10.5.2節参照)。ソースコードはこちらからダウンロードできます。 <?php class ErrorController extends Zend_Controller_Action { public function errorAction() { $errors = $this->_getParam('error_handler'); switch ($errors->type) { case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: // 404 error -- controller or
あるアクションコントローラーから、複数の別のコントローラーに情報を伝達しながら処理を渡したいというニーズがあったので、既存の転送とは別にメッセージキューを利用して計画的な処理チェーンを作成できるようにしてみました。 このアイデアは、Presentation-Abstract-Controllerのエージェント間メッセージ伝送にインスパイアされましたが、別物です。 仕様 メッセージ メッセージは、リクエストオブジェクト、レスポンスオブジェクトを持つ。 空のメッセージは単純な処理のたらいまわしとして利用可能。 メッセージ本体は発送側と受け側で仕様を決めれば、あとは自由で。 スコープ内のブロードキャストメッセージにより永続メッセージも保存できるように。 メッセージの作成 メッセージクラスのインスタンスとして作成し、宛先やメッセージ本体をセットする。 メッセージには複数の宛先をセットできる。 兄弟
Zend_Config ファイルはだいたい Zend_Cache させて使ってるんですが、Zend_Cache の記述をまとめて書けないだろうかと思いたちプラグイン化してみました。 http://framework.zend.com/manual/ja/zend.cache.html http://framework.zend.com/manual/ja/zend.config.html 動作環境 OS: Ubuntu 9.0.4 PHP: 5.3.0 ZendFramework: 1.8.4 で確認しました。 github github にコミットしてます。 GitHub - taketin/Zend_Controller_Plugin_Autocacher: for Zend_Framework Plugin Module 解説 私は Zend_Config を使用する際、だいたい Z
Wads_Log_Writer_RotationFile クラスが、既存のZend_Log_Writer を拡張してローテーションに対応させたものです。これに、Wads_Log_RotationFile というローテーションを行うクラスを設定して使用します。 また、Wads/Log/RotationFile/Policy 以下にあるクラスでどのようにローテーションを行うか決めています。 現在は、ログファイルのサイズでローテーションを行うWads_Log_RotationFile_Policy_Sizeと、日付や時間、曜日でローテーションを行うWads_Log_RotationFile_Policy_Datetime の2つを用意しています。 ■ 使用方法 Wads_Log_RotationFileクラスのオブジェクトを生成する 1で生成したオブジェクト指定してWads_Log_Writer
今回は、架空のサイトevents.php.bunko.jpを対象にスクレイプ&spidering対象にします。 仮に、勉強会の参加回数を聞かれて答えに窮する状況があったとします。 参加回数の表示機能は、カリオストロ城の奥地に眠っているらしくすぐに使うのは困難なようです。 特定のメンバー名だけならすぐにカウントできそうですが、メンバー一覧を取得しDBに格納したいものです。 取得する主な対象は、メンバー一覧ですが、発表タイトルでどのように参加状況が変わるかも調べてみたいとします。 <?php //発表タイトル $titles = new Diggin_Scraper_Process(); $titles->process('//h4', 'title[] => TEXT'); //参加者 $members = new Diggin_Scraper_Process(); $members->pr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く