カテゴリ:記事

Zend Frameworkのための簡単作成/ Twitterの認証アダプタ

によって 、土曜日2011年4月23日15:57

仕事は私の新しいの(ゆっくりと)続けてTwitterのベースのアプリケーション。 銀行休業日の次のカップル上、私はプロジェクトに再び勢いを(現時点では素晴らしい天候のインにもかかわらず)を取得したいと考えています。 とにかく、私の次の作業はのための認証アダプタを作成することでしたZend Frameworkを 私は働くログイン実装を持っていましたが、Zend Frameworkのための認証アダプタの低下を持つことは、魅力的な提案のように思えたので、私はそれを作成した...。

(私は通過するつもりはない簡単作成やTwitterのアプリケーションを登録、ガイドやそのかなり簡単なプロセスの数百人がとにかくあります。)
読書"Zend Frameworkのための簡単作成/ Twitterの認証アダプタを"続行»

Zend Frameworkを使用して、"Twitterにサインイン"

によって日(木)2011年3月17日1:07

すべてにもかかわらず、 Twitterの憎悪時点で、私が新しい作成に着手しましたさえずりベースのアプリケーションを。 複数のアカウントを管理する人(個人と私の慈善活動のための両方)であること私はちょうど書き込み(近い将来にそれの続きを読む...)に周り得ていることがいつかのためのツールを必要としてきた。

私は上に読みましたZend_Oauth_Consumerとそれがどのように使ってTwitterとやり取りするための認可を取得するために使用することができますOAuthを すべてが順調といい、私は私のアクセスキーを持っていると私は陽気にユーザーに代わって離れて投稿することができます。 これを行うにはそこに資源がたくさんあり​​ます私はボアの人々をしませんので。

次のステップは、人々が、ウェブサイトに戻ってログインし、自分のアカウントを変更できるようになった。 私は若干の問題に達したところです。 ウェブサイト上のコード例を使用すると、私はTwitterがよくない、各ログインのために再度アクセス許可に私を尋ねているだろうことを意味した。 私は私が単に認証を要求できるようになる何かを見ることができなかったフレームワークを介してスキャン。 つまり、そのではないそこを言っているわけではありませんが、既にアクセストークンを知らなくても呼び出すことができる認証メカニズムがあるとは思えなかった。

選択肢は(もちろん暗号化された)クライアント上でユーザーのアクセストークンを格納するのか、どういうわけか、サイトベースのログを実装していた。 これらのどちらが良い/適切な解決策のように思えた。

"Zend Frameworkを使用して、"Twitterとのサインイン""続きを読む»

Zendの認定エンジニア(ZCE)5.3

によって 、木曜日2010年9月30日21:00

との公式リリース 5.3のZendの認定エンジニア(ZCE)プログラムの私は、私は試験どう思うかの私の迅速な印象を与えるだろうと思っていた。

自分自身に少し背景:私が最初に導入されたPHPの約7年前、2006年以来、PHPでプロとして働いている。 私は現在、エキサイティングな立ち上げと呼ばれるために働くBrightpearlに基づいて、 ブリストル、イギリスの統合CRM、会計、およびeコマースのソフトウェアを生産する、。 私は、以前に前のZCEの資格のいずれかを取得していない。 私は現在、5.2.xのシリーズで開発し、実際に特定の5.3機能(私は待っているのいずれか使用していないがZend Frameworkの 2とドクトリン私の開発プロジェクトでの2)。
読書"Zendの認定エンジニア(ZCE)5.3"を続ける»

クイックスタートsymfonyはDI(依存性注入)のチュートリアル

によって 、土曜日2010年8月14日14:21

何か依存性注入 (DI)は?

依存性の注入は、ソフトウェアアプリケーション内で疎結合されたオブジェクトを可能にする技術です。 オブジェクトが別の機能へのアクセスを必要とする場合、一般的に、それは内部的に密結合のシステムにつながってインスタンス化される。 依存性注入を実装することによって、我々は( - IOC時にはまた制御の反転と呼ばれる)使用する準備ができて、必要なオブジェクトを注入する。 次の例をご覧ください。

  <?PHP
クラスの意思決定{
    パブリック関数のmakeDecision(配列$パラメータ){
         / /データベースのアダプタが必要です
         $ DP =新しいDecisionParameters();
         $がparameterScore = $ DP -> getScore($パラメータ);
         / * ... いくつかのより多くの意思決定ロジック...  * /
        リターン($> 50をparameterScore);
     }
 } 

コードのこの部分は、しっかりとDecisionParametersのオブジェクトに結合されるように言われています。 疎結合な方法で上記の書き換え我々は次のようなものがあるんだけど...。

  <?PHP
クラスの意思決定{
    プライベート$ _dp。
    パブリック関数__construct($ DP){
        の$ this -> _dp = $ DP;
     }
    パブリック関数のmakeDecision(配列$パラメータ){
         $がparameterScore =の$ this -> _dp -> getScore($パラメータ);
         / * ... いくつかのより多くの意思決定ロジック...  * /
        リターン($> 50をparameterScore);
     }
 } 

我々はたびに、オブジェクトが、我々はまたその依存関係をインスタンス化しすぎでこれらを渡す必要があるインスタンス化されているような複雑さを追加している疎結合コードの利点を得るおいた。 たとえば、この:

  $選択=新しい意思決定者();
エコー$選択肢 - > makeDecision(配列('努力'=>'低'、'リターン'=>'高')); 

次のようになります:

  $ DP =新しいDecisionParameters();
選択=新しい意思決定者($ DP)$;
エコー$選択肢 - > makeDecision(配列('努力'=>'低'、'リターン'=>'高')); 

クラスの依存関係の数が増加するにつれ、このような状況がより苦痛になる、との依存関係自体が依存関係を持っている場合はどうでしょうか。 これは非常に迅速に、オブジェクトの管理の悪夢になることができます! 依存性注入コンテナ(またはフレームワーク)を入力してください...
読書"クイックスタートsymfonyはDI(依存性注入)のチュートリアル"を続ける»

裸Zend_Layoutのと、Zend_View

によって 、火曜日2010年8月10日23:47

この記事では、アプリケーション内のビジネスロジックとプレゼンテーションを分離することを開始することが可能であるかを示すためにシンプルなフロントコントローラと一緒にZend_Layoutのと、Zend_Viewを使用して見てください。 すべてのコードはgithubで利用可能です。
GitHubで裸Zend_Layoutのと、Zend_View

読書"裸Zend_Layoutをし、Zend_Viewは"続行»

モジュールレイアウト毎の設定Zend Frameworkに-フォローアップ

によって 、火曜日2010年2月16日20:48

で私の以前の記事のフォローアップとしてあたりのモジュールベースのレイアウト設定のためにZend Frameworkには 、私が前にして以下の設定を(それはあなたのアプリケーション構成の数行それ以上を必要としないこと!)を必要とするコードを更新しました。
"モジュールのレイアウトごとの設定のZend Frameworkの-フォローアップ"読書を続行»

ZendのカスタムビューヘルパーのURLを作成する

によって 、木曜日2010年1月28日23:01

これは単純に見えるかも知れませんが、私はのカスタムビューのヘルパーでURLを作成しようとする私の頭を叩いていたZend Frameworkの 私はハードコードされた簡単なURLを使用することができなかったので、使用中のサブドメインからモジュールを取得する設定をルーティングしている。

読書"Zendのカスタムビューヘルパーで作成するURLを"続行»

カスタムコントローラ/アクションのsitemap.xmlにするための要求をルーティング

によって 、2010 0:13午前水曜日1月6日

/のための直接的な要求をするためにはsitemap.xmlにあなたのカスタムコントローラとアクションにZend Frameworkのアプリケーションは、単にあなたにapplication.iniまたは代替の設定ファイル(例:私の使用navigation.ini)に以下を追加します。

 resources.router.routes.sitemap.route ="sitemap.xmlに"
 resources.router.routes.sitemap.defaults.controller =インデックス
 resources.router.routes.sitemap.defaults.action =サイトマップ

出力するためのサンプルコードは、適切なコントローラ(私のサイトがインデックスコントローラ、サイトマップのアクションにあるなど)でアクションを作成して見ることができます。

 < PHP
クラスからindexController
     Zend_Controller_Actionを拡張し
 {
     / **
      * Zend_Navigationの設定に基づいてマップをレンダリング
      * /
    パブリック関数のsitemapAction()
     {
    	エコーで$ this ->ビュー>ナビゲーション() - >サイトマップ();
    	 $この - >表示 - >レイアウト() - > disableLayout();
    	の$ this -> _helper -> ViewRendererは - > setNoRender(真の);
     }
 }

サイトマップを迅速かつ容易に使用して生成することができますZend_Navigationを 、偉大な簡単なチュートリアルでは、(そしてZend Frameworkのチュートリアルのための一般的に非常に有用な)れているZendはキャスト - 動的メニューサイトマップとパンくずリストを作成

仮想環境を使用してOfficeのグリッドコンピューティング-パート4

によって 、金曜日2009年12月4日午後11時59分

はじめ

私たちは毎日のデータの何百万ものレコードを処理する多くのバッチジョブを実行すると私はそれぞれの周りに座って、毎日数時間何もしないですべてのマシンについて、最近考えてきた会社で働く。 我々はシステムの処理能力を強化するためにこれらのマシンを使用することができればそれが良いのではないでしょうか? 記事のこのセットでは、私はオフィスの採用の潜在的な利点を見に行くよグリッド仮想化環境を使用する。

第3部私たちは、仮想加工機を作成し、アイドルタイム労働者になるためにWindowsマシンをセットアップする。

最新のコードを実行する

必然的にあなたの労働者のビジネスロジックの作成 ​​後に変更される、バグが発見され、より速く、より効率的なコードは、このようにして労働者が使用してデータ処理の周りに座っ残して生産される古い臭いのコードを どのようにして我々は常に我々の処理のスクリプトの最新かつ最高のバージョンを使用していることを確認する方法はありますか

我々はこれをすることができるいくつかの非常にeasyシンプルな方法がありますが、トリックは、しかし、これを達成するために処理能力とネットワークトラフィックを削減することです。 ソリューションの最も単純で始まると繰り返しのカップルかけてゆっくりとそれを改善することができます。

最初の方法は、単に私たちの仕事の制御サーバ(Samba、FTP、または類似の経由)に接続し、コードの最新バージョンをプルダウンすることです。 あまり効率的で、それは仕事を行います。 その幾分、どのようにrsyncのスクリプトを作成し、代わりにそのたびに使用してはどうでしょうか?で改善できます 別の方法として最初にコードをチェックアウトしてからちょうど(実行のたびに私たちのコードを更新するSubversionに私たちの最新の処理のスクリプトを置くことについての何svn updateを )?

最後に我々はこのように単純に見えるのbashスクリプト(10分ごとにcronによって呼び出される)で終わる可能性:

  #!/ bin / shを
場合はps ax | grepの- Vはgrep | grepはPHP > / dev / nullに
その後、
    エコー"ジョブは現在、出口を処理している"

    エコー"ジョブが実行されていない、今始める"
     CD / path / to /を作業/コピー
     svn updateを
     PHP yourJobProcessingScript.php
 FI 

今、私たちは、それぞれのランで我々は間違いなく最新のコードを実行していることを確認することができます。 我々は実行を実行するたび、毎回私たちのコードベースを更新し、唯一の私たちのネットワークを介してファイルの差分を転送することにより、ネットワークトラフィックを減らすことによって、これを確保している。

私のデモのセットアップでは、私は上記のように正確でした。 Subversionは、私の仕事の処理のサーバにインストールされており、私は、単に'svn update'を使って'労働者'ブランチから最新コードを引っ張られた。 私はまた、結果のリターンの一部としてデータベースに戻された私の処理スクリプトにバージョン番号のタグを追加する。 このように私は私のコードは、私は間違いなく最新の処理のスクリプトを実行していた労働者の分岐、すなわちに私のトランクをコピーするたびに更新されていたことが見ることができました。

最新のデータを使用する

あなたの仕事の処理がどこかの時点でその後のデータソースを利用している場合、これらはあまりにも更新する予定です。 あなたはあなたの労働者が足踏み状態にすべてをもたらす実行を開始するとすぐにトラフィックでネットワークをあふれさせるつもり非常にまれな単位でデータソースを呼び出さない限り。 私の解決策のために私は私のVMの周り私のデータソースを移動したいことを決めた。

あなたがそこに馬ならホールド!私のデータソースが巨大である場合はどうなりますか? まあ、これは本当に我々がどれだけのデータが話しているの場合ですか。 それは、追加の処理のサーバを購入するよりも費用対効果の各マシンに追加の大容量のハードディスクドライブをインストールすることがあります。 これは予算の問題であると決定するビジネスまでです。 それは多分あなたのデータソースは、ワーカーマシン内のデータの量を保つために、そのちょうど不可能ほど大きなものですこと。 その場合、あなたは何をしますか? まあ我々は、ローカルデータサーバを呼び出すことで見ることができるが、これはネットワークで問題が発生する可能性があります。 このケースでは、このようなグリッドシステムは、オフィス環境に含めるのは非現実的になることがあります。 また、のみ午後8時と午前6時毎晩および/ ​​またはスロットリングデータソースのリクエスト間で労働者を呼び出して、例えば、代わりの実行戦略に見ることができる可能性があります。

に移動すると、データの100GBのに私たちのデータソースの量を言うできます。 はいよくその更新時にネットワーク上を移動しかなりの量のデータです。 どのように我々はこの場合のデータの最新コピーを持っていることを確認ですか? rsyncは可能ですが、個人的に私はあなたの仕事の処理サーバー上で最新のデータソースを実行し、レプリケーションのマスター(ナイス長いビンログ付き)としてこれを設定することによって移動するための方法かもしれないと思う。

レプリケーション データソースへのジョブ制御サーバのアップデートをスレーブとして労働者のそれぞれを設定することで(あなたが巨大なデータの更新を実行し、すべての労働者が出したら限り、そのはネットワーク活動の大幅な増加なしに労働者にきちんとトリクルダウンになります一度に)。 これはその内のrsyncの利点を持っていることは、各ジョブの前に長い休止を取得しませんが、データベースの更新として、 mysqlの処理を続行しながら、労働者のデーモンは、継続的にデータを更新します。

これは私が私のデモサーバをセットアップする方法です。 レプリケーションを設定するには、私は、MySQLのサイト(上のガイドに従って、レプリケーションの設定 )と20分以内に私は、ジョブ制御サーバのデータセットを複製する私のinital労働者を持っていた。 各追加のワーカーのためのレプリケーションの設定とプロセスは、VMがコピーされるたびに働いた。

まとめ

記事のこのセクションでは、簡単にかつ無痛、それは仕事をし、同じtime.Âでネットワークトラフィックを減らすためにrsyncをusingÂまたはsubverion(SVN)で日付にして処理のコードを維持するのがいかに見てきた我々はまた、どのように議論それはあなたの労働者のそれぞれにトリックルダウンできるようにすることで、データソースの情報を最新に保つに。 したがって、我々は、エリア私たちはオフィスのグリッドシステム内のビジネスロジックとの情報に追いつくことを保証。 そこに明らかにこれらのタスクを実行するに無数の選択肢がありますが、ここに解決策がでてくることがいかに簡単であるかを示すために2つの簡単な例があったでしょう。

次の時間

適切な名前このシリーズの最後の部分では第5部 、我々はこのシステムを導入する説明します。 私は私が作成して管理するかを学習したものを要約していきます。

仮想環境を使用してOfficeのグリッドコンピューティング-パート3

によって 、金曜日2009年12月4日23:37

はじめ

私たちは毎日のデータの何百万ものレコードを処理する多くのバッチジョブを実行すると私はそれぞれの周りに座って、毎日数時間何もしないですべてのマシンについて、最近考えてきた会社で働く。 我々はシステムの処理能力を強化するためにこれらのマシンを使用することができればそれが良いのではないでしょうか? 記事のこのセットでは、私はオフィスの採用の潜在的な利点を見に行くよグリッド仮想化環境を使用する。

第2部私たちは、サーバーが実行するジョブを見て、そしてどのようにジョブは、各ジョブが失敗することなく処理されることを保証しながら、処理の最大量を達成するために設定する必要があります。

やLIMPサーバ - あなたの労働者を設定する

プロセスの次のステップは、仮想の労働者を設定することです。 このために私はVirtualBoxを使用してCentOSのインストールを使用するつもりだ。 私はインストールするつもりのmySQLPHPを (私はその名前が作られていることがあります )また、LIMP(リチウム木の実、M ySQL、P HP)として知られている、サーバー上のServerAを。

  • WindowsマシンにVirtualBoxをインストールする(リンクをたどる)
  • 作成された仮想マシン内でCentOSの(現在バージョン5.3)をダウンロードしてインストール

ない点はそこに偉大なチュートリアルの1,000のはおそらくあると私はこれに行くがない(:OK、ここで一つだVirtualBoxの下で作成およびManaging CentOSの仮想マシン )。 私が思う注意すべき重要な点は、私は私の仮想マシンがGridMachineということです。

限り仮想化のクライアントおよびオペレーティングシステムの私の選択肢には各選択肢のための大きな説得力のある理由は何もありません。 VirtualBoxのは、私は私の自宅のマシンで使用するものであり、3つの主要なオペレーティングシステムでサポートされています。 私はその良い安定したOSとしてCentOSを選んだと私は自分のWebサーバ上にそれを使用。 ): オペレーティングシステムXは、より迅速かつ効率的にその代わりに使用するコードを実行されるようなら 、私は、仕事に適したツール(私はここの精神"あなたのための最も迅速かつ簡単な使用"を適用していますが)の大きな信者午前

重要なことは我々は、ワーカーマシンに対して個別のネットワーク設定を構成する必要はありません我々はwant.By DHCPを使用していない何かである別々に構成する必要があるだろうにVMがそれぞれの新しい仮想マシンにそうでなければ、DHCPを使用していることを確認して、DHCPがお渡ししますあなたのためのIPアドレスから。 したがって、(これは、スケーラビリティを改善し、労働者の管理を軽減する)、それぞれを設定する心配をせずにオフィスについての仮想マシンをコピーすることができます。

あなたが達成することを目指すはずのプロセスは、新しい物理的なマシンを入手VirtualBoxをインストールしてから、ほとんど他の多くせずに仮想イメージを展開することです。 それはあなたが少なくとも実行されているどのように多くのマシンが見えるように、別のサブネット上のすべての労働者を設定するのが賢明かもしれません。 また、長期リースまたは無制限のリースDHCPであなたのマシンをセットアップする必要があります。

労働者にジョブを実行する方法

これは興味深い分野であり、労働者のジョブを処理するためのいくつかの有効な方法があります。 ここで私はちょうど2つの最も明白なことを説明します。

  • 絶え間なく実行中のスクリプト:スクリプトは、シェルスクリプトとして、またはPHPスクリプトは、労働者に一度だけ実行され、無限ループの一部として実行されます。 私は、スクリプトの一つクラッシュとしてこの方法を軽視した、潜在的にあなたの労働者は、介入のいくつかの並べ替えなしで実行しなくなります。
  • cronベースのスクリプトの実行:X分ごとにcronデーモンは、物事が軌道に乗るために、スクリプトへの呼び出しをキックオフ。 いくつかのチェックがなければこれはあなたのワーカースクリプトの実行の多くの多くのコピーにつながる可能性があります。

私の決断は、私のシェルスクリプトは、次のタスクを実行するごとに10 minutes.Âのシェルスクリプトをキックオフcronで行っていた。

  1. プロセスのリストを取得し、'PHP'のためにこれをgrepする。 見つからない場合はこのまま続けます。
  2. あなたの仕事のコードを呼び出す、私のケースでは、これはベースに何かPHPのようになります
  3. 労働者のスクリプトは、その実行を完了
  4. 次の適切な呼び出しに再び移動する準備

私のbashスクリプトには、次のようになります。

  #!/ bin / shを
場合はps ax | grepの- Vはgrep | grepはPHP> / dev / nullに
その後、
    エコー"ジョブは現在、出口を処理している"

    エコー"ジョブが実行されていない、今始める"
     PHP yourJobProcessingScript.php
 FI 

注:エコーのはほぼ完全に無意味ですが、それらを試してみて、編集するためにやってきて次の人を助けるかもしれない。

それは、労働者の仮想マシンから、素早くシンプルな、と受け取られているハードウェアのそれぞれの新しい部分にコピーする簡単な設定は終わりです。 グリッドシステムの"賢さ"は実際に可視化OS、ジョブを処理するために作成したコードでは何をするそのすべて、ジョブの設定で、とするとき、すなわち(適切なホストがアイドル状態のときにジョブが実行されることを確認することではない)。

労働者を初期化するために、Windowsのセットアップ

最初のタスクは、Windowsのコマンドラインから仮想マシンを実行するために必要なコマンドを動作するようになります。 あなたがデフォルトの場所にVirtualBoxをインストールした、あなたの労働者GridMachineを名前をつけている場合、あなたの労働者をロードするために必要なコマンドは次のとおりです。

  "C:\プログラムファイル\日\ VirtualBoxの\ VBoxManage.exe"startvm GridMachine 

しかし我々が使用する必要がある"ヘッドレス"状態でスクリプトを実行する:

  "C:\プログラムファイル\日\ VirtualBoxの\ VBoxHeadless.exe"- startvm GridMachine - VRDP =オフ 

これは、GUIなしで仮想マシンを起動し、正常な状態を保存できるようになります。 番目の引数は、Windows RDPと競合しないようにRDPをオフにし、またはあなたのポート3389でリスニングについてのメッセージを与える。 仮想マシン名は、大文字と小文字が区別されます!

次に、我々はマシンがアイドル状態になっている後に私たちの労働者のVMを開始するためにウィンドウを設定する必要があります。 >すべてのプログラム] - - >アクセサリ - >システムツール - このを(Windows XP上で)そのためには、スタートに行く必要があります以下のように>スケジュールされたタスクを:

スケジュールされたタスク

次のカスタムプログラムを追加するために参照が続く"がスケジュールされたタスクの追加"をクリックしてください。 あなたのVBoxManageスクリプトに移動し、[OK]をクリックします。 オプションのいずれかのタスクをスケジュールする(我々が1分間にこれを変更します)して続行します。 次の画面をスキップした後、Windowsがこのタスクを実行したい人を聞かれます、私は"管理者"または新しい特権ユーザを作成するのどちらかをお勧めしたい。 我々は任意の時点でマシン上の標準的なスタッフのアカウントに干渉したくない覚えている。 [次へ]をクリックし、このタスクの詳細オプションを表示する]をオンにします。

実行textboxの末尾に私たちの"startvm GridMachine'文字列を追加し、ログインしたときにのみ実行がunticked残っていることを確認してください。 次のスケジュールタスクを訪問し、あなたがマシンが次のタブに移動する前にアイドル状態を維持したい時間を選択します"アイドル時"スケジュールがオプションにドロップダウンを変更。

最終的にそれは時間のX量を実行されている場合の状態は、タスクを停止するオプションがチェックを外すが、マシンがアイドル状態になっていた場合は、タスクを停止するオプションにチェックを入れてください。

のスケジュール

それは、Windowsホストのセットアップのために、それだ!

まとめ

このパートでは労働者だけでなく、我々は(自分のためのPHPスクリプト)を呼び出すと、私たちの仕事の処理のスクリプトを実行する方法として機能するように仮想マシンを設定している。 ここから我々は、コンピュータがアイドル状態になったときに、ヘッドレスモードで仮想マシンを起動するウィンドウの私たちのコピーをセットアップする方法を見て、そして、ユーザーはマシンの使用を再開したときにその状態を保存します。 うまくいけば、この時点では、そのようなシステムをセットアップするのがいかに簡単な見ているといくつかの実験を自分で軌道に乗るためにむずむずされています!

次の時間

第4部私たちは、あなたが得た結果は常に最新のビジネス情報とロジックとのup - to - dateであるように、コードとデータソースの最新バージョンを実行していることを確認するためのツールを使って見ることになります。













パノラマのテーマ別 Themocracy

オンラインで今6ビジター
5名様、1ボット、0メンバー
最大の訪問者今日:午前5時40分午前UTCの23
今月:24-08-2011 5時40分で23 UTC午前
今年:28-03-2011 22:40 UTCで130
すべての時間:28-03-2011 22:40 UTCで130