2015年3月24日火曜日

GrassFish ServerのパラメータのデフォルトエンコーディングをUTF-8に変更するには

GrassFish Serverでパラメータが文字化けする。
これはGrassFish ServerのパラメータのデフォルトエンコーディングがISO-8859-1だから。
grassfish-resources.xmlに以下を追加することで、デフォルトエンコーディングをUTF-8に変更できる。

<parameter-encoding default-charset="UTF-8" />

2015年3月23日月曜日

MySQLのload dataでテーブルの特定のカラムにのみファイルの内容をインポートするには

MySQLのload dataでテーブルの特定のカラムにのみファイルの内容をインポートするには、以下のようにファイル内のフィールドをマッピングする列をset句で指定する。

load data infile 'c:/temp/stocks.csv' into table stocks
       fields terminated by '\t' (@code,@name,@sector1,@sector2)
       set code=@code,name=@name,sector1=@sector1,sector2=@sector2;

2015年3月17日火曜日

GlassFish Server 4.1でJSF2.2+Bootstrapのアプリケーションを作成中、サーバのコンソールに以下のようなメッセージが表示されていることに気が付いた。


警告:   JSF1091: ファイル fonts/glyphicons-halflings-regular.woff2 の MIME タイプが見つかりませんでした。これを解決するには、アプリケーションの web.xml に MIME タイプのマッピングを追加します。


どうやらweb.xmlにMIMEタイプマッピングを追加しないといけないらしい。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
    <mime-mapping>
        <extension>woff</extension>  
        <mime-type>application/x-font-woff</mime-type> 
      </mime-mapping>
    <mime-mapping>
        <extension>woff2</extension>  
        <mime-type>application/x-font-woff2</mime-type>  
    </mime-mapping>
</web-app>


JSF2.2でバリデーションエラー時のメッセージをカスタマイズするには

1.以下のjarファイルを任意のディレクトリにコピー
javax.faces.jar



2.上記1でコピーしたjarファイルの拡張子をzipに変更して展開し、Messages_ja.propertiesファイルをソースパッケージ内の任意のフォルダにコピーする
(例:xxxx/messages/Messages_ja.properties)


3.WEB-INFフォルダ内にfaces-config.xmlを作成し、上記リソースファイルを読み込むように指定する

<?xml version='1.0' encoding='UTF-8'?>
    <faces-config version="2.2"
             xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
             http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
        <application>
            <message-bundle> stocks/messages/Messages </message-bundle>         </application>
</faces-config>


4.xxxx/messages/Messages_ja.propertiesのメッセージをカスタマイズする

(参考書籍:秀和システム わかりやすいJavaEE ウェブシステム入門 川場隆・著)

2015年3月3日火曜日

Selenium2でPHPUnit_Extensions_Selenium2TestCaseを使ってプルダウンやラジオボタンを操作する

PHPUnit_Extensions_Selenium2TestCaseを継承したテストクラスで、 Yahoo!ファイナンスにアクセスし、ヤフー(株)を検索→検索結果のリンクをクリックして プルダウンやラジオボタンを操作し、2014年1月1日~2014年12月31日の週間時系列データを 表示させるサンプルです。
<?php
require_once 'phpunit.phar';

/*
 * PHPUnitとSelinum2を使って、Yahoo!ファイナンスのサイトにアクセスし、
 * ヤフー(株)の株価時系列情報の2014年1月1日~2014年12月31日までの
 * データを表示します。
 */
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    protected function setUp()
    {
        // http://finance.yahoo.co.jp/にアクセス
        $this->setBrowser('chrome');
        $this->setBrowserUrl('http://www.google.com');
    }

    public function testTitle()
    {
        // Yahoo!ファイナンスにアクセス
        $this->url('http://finance.yahoo.co.jp/');
        // 銘柄名でヤフーを検索
        $this->byId('searchText')->value('ヤフー');
        sleep(5);
        // 銘柄検索ボタンをクリック
        $this->byId('searchButton')->click();
        sleep(5);
        // 検索結果からヤフーをクリック
        $this->byLinkText('ヤフー(株) [4689] - 東証1部')->click();
        sleep(5);
        // 「時系列」をクリック
        $this->byLinkText('時系列')->click();
        sleep(5);
        // 2014年1月1日~2014年12月31日、「週間」を選択
        $this->select($this->byId('selYear'))->selectOptionByValue('2014');
        $this->select($this->byId('selMonth'))->selectOptionByValue('1');
        $this->select($this->byId('selDay'))->selectOptionByValue('1');
        $this->select($this->byId('selYearT'))->selectOptionByValue('2014');
        $this->select($this->byId('selMonthT'))->selectOptionByValue('12');
        $this->select($this->byId('selDayT'))->selectOptionByValue('31');
        $this->byId('weekly')->click();
        sleep(5);
        // 表示ボタンをクリック
        $this->byClassName('submit')->click();
    }
}
?>
PHPUnitとselenium2でブラウザの自動テスト

Selenium ServerはOSを通してブラウザのタスクを自動実行するテストツールです。
ここではPHPによるSeleniumの使い方を解説しています。

インストール

1.seleniumのサイトからSelenium Serverをダウンロードします。

    http://docs.seleniumhq.org/download/




2.下記のサイトからテストで使用するブラウザのDriverをダウンロードする
 (今回はChromeを使用する)
 
    https://sites.google.com/a/chromium.org/chromedriver/



3.上記2でダウンロードしたzipファイルの中身を1でダウンロードしたselenium-server-standalone-2.9.0.jarと同じフォルダに展開する

4.PHPUnitのpharファイルをダウンロードする

    https://phar.phpunit.de/phpunit.phar

5.テスト用のクラス作成
 (以下のクラスではwww.google.comにアクセスして、ページのタイトルが'Google'である場合は成功です)

        <?php
        class WebTest extends PHPUnit_Extensions_Selenium2TestCase
        {
            protected function setUp()
            {
                $this->setBrowser('chrome');
                $this->setBrowserUrl('http://www.google.com');
            }

            public function testTitle()
            {
                $this->url('http://www.google.com');
                $this->assertEquals('Google', $this->title());
            }

        }
        ?>

6.selenium2サーバーを起動する
 (ダウンロードしたjarファイルのバージョンに読み替えてください)

    selenium2を使用する際に上記3で展開したDriverにパスが通っている必要があるので、以下のようなBATファイルを作成してSelenium Serverを起動するとよいでしょう。
 
        SET PATH=%PATH%;.\

        java -jar .\selenium-server-standalone-2.45.0.jar

7.テストケースの実行
    以下のようにして上記5で作成したWebTestクラスを実行します。
 
        php phpunit.phar WebTest


なおPHPUnitに関しては以下のサイトを参照してください。

https://phpunit.de/manual/current/ja/installation.html