タグ

ブックマーク / thinkit.co.jp (11)

  • アサーションの使い方

    アサーション・メソッドの種類 前回は、PHPUnitをインストールし、簡単なテストを実行する方法について説明しました。その中で、assertEquals()というアサーション・メソッドを使い、2つの文字列が一致することを確認するテストを作成しました。 基的なテストであれば、assertEquals()だけで間に合うのですが、数値の大小を比較したり、配列のキーや要素について調べたりする場合は、あらかじめ専用のメソッドがあると便利です。実は、PHPUnitでは、図1のようなアサーション・メソッドがあらかじめ用意されています。これらを利用することで、効率的にテスト・ケースを作成できます。 そのほかのアサーション・メソッドについては、こちらを参照してください。 メソッド名 | 成功条件 -------------------------------+-----------------------

    アサーションの使い方
    masakielastic2
    masakielastic2 2012/01/31
    FizzBuzz の evaluate メソッドの戻り値が3、5の倍数しか考慮していないので return '' === $ret ? $n : $ret; に修正する。
  • PHPUnitの概要と導入

    PHPUnitとそのメリット 連載では、PHPPHP: Hypertext Preprocessor)で実装されたプログラムの単体テストをテスト・ツール「PHPUnit」を使って行う方法について、基から実践的な利用方法までを4回にわたって紹介します。 ユニット・テスト(単体テスト)とは、プログラムの構成要素であるクラスや関数などの単位で動作を確認するためのテストです。PHPUnitを利用することで、単体テストの手順をPHPプログラムとして作成し、コマンド・ラインなどからバッチ処理的に実行することが可能になります。 PHPプログラムのテストと言えば、もっぱら人手でブラウザを操作して画面遷移を確認したり、フォームに値を入力して実行結果を目で確認したりすることが一般的だと思います。しかし、開発時に何度も同じようにページを開いて、同じようにテスト・データを入力し、結果が正しいことをすべて手動

    PHPUnitの概要と導入
    masakielastic2
    masakielastic2 2012/01/31
    PHPUnit 3.7 で phpunit --skeleton-test は削除されるので、phpunit/PHPUnit_SkeletonGenerator をインストールして phpunit-skelgen --test に置き換える。
  • IE8以前でCSS3の表現を使うには

    IEの独自拡張filterプロパティでCSS3を再現 前回紹介したCSS3の機能は、Internet Explorer(以下IE)8以下ではサポートされていません。今回は、クロスブラウザなテクニックとして、IEの独自拡張であるfilterプロパティを使ってCSS3の表現を再現する方法を紹介します。 filterプロパティは、テキストや画像を透過させたり、影を付けたり、色を変えたりと、さまざまなフィルタ効果を指定できるIE独自のCSSプロパティです。これらのフィルタ効果を利用すれば、画像やJavaScriptを利用せずに、CSS3のようなドロップシャドウやグラデーションなどの表現ができます。 filterプロパティには、IE 5.5以上で使用できる効果と、IE 4以上で使用できる効果があり、書式がそれぞれ異なりますので注意しましょう。稿では混同しないように、より広い機能に対応している、IE

  • 次世代Web構築ワークフロー概要

    CMSに関連する部分が変わる 今回は、次世代ワークフローを具体的に説明していきます。 まず、キノトロープがこれまでに使用してきたワークフローを以下に示します。 Phase0 与件策定 オファー内容を確認し、成果の実現がお約束できるか、何をどうするべきかをご提示します。 Phase1 戦略策定/成功予測 調査に基づいてユーザーニーズを洗い出し、何をすれば、どのような成果を出せるか、ビジネス戦略を立案します。 Phase2 戦術策定 ユーザーの満足を獲得し、成果を実現するための具体的な戦術プランおよび詳細要件を確定します。 Phase3 設計(運用設計) Webサイト構造の詳細設計、ページ設計、ビジュアルデザインなど、全ての仕様を確定します。 Phase4 制作/開発 Webサイトの開発(デザイン、システム)およびテストを行い、最終確認後、公開または納品を行います。 Phase5 更新/運用

  • 実例!キャッシュの仕組み

    ハッシング+リンクトリスト 「第3回:ソースでわかる!ハッシング」でハッシングとリンクトリストを組み合わせたものを紹介しました。今回はそのプログラムを紹介しますが、実はその体はこれまでに紹介したものばかりです。1のリンクトリストを扱うプログラムは第1回に紹介しました。これをハッシュ値が同じもの同士をひとつのリストにするようにして、複数のリストを作って管理するのがこの方法です。 第3回の最後にハッシングとリンクトリストを使ったプログラムのinsert()関数を紹介しましたが、ハッシング機能のモジュールの全体を図1-1に示します。ハッシュ関数h()のほかに、このハッシュテーブル+リンクトリストの構造を使った登録insert()、検索search()および削除delete()の機能を加えています。 テストプログラムを含めたプログラム全体はこちら(http://www.thinkit.co.j

  • 等価変換型プログラムをかじる

    基礎理論からわかること いつの間にかねじれてしまった宣言型プログラミングの質をあらためて考えてみると、当にやりたかったことは、問題の定義とその解法を分離して、それぞれを独立して理論化していくことだったと考えられます。 宣言型プログラミングは、仕様と実装を同一視するため、問題の定義に解法が深く侵入してしまい、分離不可能なものとなっています。そのため、問題ドメインごとに、効率化のためのさまざまなデータ構造と、それを扱うための手続き(制約ソルバー)が拡張された、多くの言語が次々と開発されるようになりました。結果として、命令型プログラミングと同様に、まとまりに欠ける混迷状態となってしまっています。 プログラミングという概念が、より広く、より複雑なものになってきているのですから、どこが一番上のレイヤーで、どこが一番下なのかということは一意に決まりませんし、決めるべきではありません。また、問題ドメ

  • 命令型プログラミングはどこに行くのか

    命令型プログラミングパラダイムとは 現在主流のプログラミング言語は、質的にはハードウエアの実行メカニズムに深く根ざして発展してきた言語です。すなわち、固定長メモリセル列の上にデータ構造を構築し、状態を表現します。そして機械語命令列をプロセッサが順番に実行し、状態遷移を行うというチューリングマシン的メカニズムです。プログラミング言語が変われば、1つの命令文が扱えるデータ構造の粒度や抽象度も大きく変わりますが、「データ構造を構築し、計算を実行するためのアルゴリズム(命令文の列)を記述する」というパラダイムには変わりありません。 連載の視点では、PascalやCなどの構造化プログラミングや、C++Javaのようなオブジェクト指向プログラミングなども、質的には命令型パラダイムに含まれると考えます。 命令型プログラミングは、次回紹介する「宣言型プログラミング」と対になる概念です。「手続き型プ

  • 物理エンジンライブラリ「APE」を試す!

    AS3.0用物理エンジンライブラリ「APE」とは? APE(Actionscript Physics Engine)は、ニューヨークを拠点として活動しているAlec Covaという方によって作られたもので、MITライセンスの下、誰でも無償で利用することができるAS3.0用の2D物理エンジンライブラリです。ちなみにAS2.0用の2D物理エンジンとして知られているFlade(http://www.cove.org/flade/)も同氏によって作られております。 APEは世界的なFlashの祭典であるFlash Forward 2007のTechnical Merit Categoryというカテゴリーでファイナリストに選ばれており、世界的にも高い評価を得ている物理エンジンライブラリです。 この必要最小限のシンプルな機能によって構成されているAPEを使って、物理エンジンについて学習していきたいと思

  • [Think IT] 第2回:PHPのSQLインジェクションを実体験 (1/3)

    セキュリティ最前線】 セキュリティホールをついて遊ぶ 第2回:PHPSQLインジェクションを実体験 著者:大垣 靖男 公開日:2008/1/18(金) PHPSQLインジェクションを実体験 記事では、セキュリティに対する課題を実体験していく。第2回となる今回は、いよいよ実際にテスト環境を構築し、攻撃を行う。標的となるのはWebシステムの開発で幅広く利用されている「PHP」だ。 PHP体にはWebブラウザからの入力のデコード処理をはじめとして、Webシステム開発に必要不可欠な機能が組み込まれている。2008年1月3日に最後のPHP 4.x系のリリースとなる「PHP 4.4.8」がリリースされ、これ以降PHP 4.x系の開発は行われなくなった。現在はPHP 5.x系のPHP 5.2.5のみがPHPプロジェクトにより正式にサポートされている状態だ。 データベースサーバへのアクセスもWe

  • 今から始める携帯サイト制作

    携帯販売業務のアルバイトを経て、現在はベンチャー企業のWebサービスで主にマークアップを担当。PCおよび携帯サイト制作のほか、デコメ、SEO、LPO、モバイルアフィリエイトなどWeb全般の業務に携わる。HTML/CSSリファレンスサイト、携帯サイト制作支援ブログなどを運営。 HTMLタグボード:http://www.dspt.net/ 携帯ホームページを作ろう! -ちょっと詳しいモバイルサイトの作り方-:http://dspt.blog59.fc2.com/

  • 超!Gauche入門

    簡単なプログラムを書いてみよう! Gauche(Lisp/Scheme)はとてもシンプルなプログラミング言語です。まずは乱数を使いジャンケンの手(Guu、Choki、Pa)を表示するプログラムを書いてみましょう。リスト1は比較ためにJavaで同じプログラムを書いたものです。リスト2がGaucheのプログラムです。 Gaucheの文法 まずは、Gaucheのプログラムの文法を簡単に説明していきましょう。 数値0.33や文字列"Guu"はJavaと同じくリテラルです。()で括られたものは式で、カッコの中の最初の要素は関数名、それ以外は関数への引数になります。 ( また、;からはじまる行はコメントになります。ではリスト2のプログラムについて上から解説していきましょう。 2行目はsrfi-27という乱数のライブラリを読み込んでいます。4~7行目はguu-choki-paという名前の関数を定義してい

  • 1