<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/unispe/">
    <title>チラシの裏以下の存在</title>
    <link>http://w.atwiki.jp/unispe/</link>
    <atom:link href="https://w.atwiki.jp/unispe/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>チラシの裏以下の存在</description>

    <dc:language>ja</dc:language>
    <dc:date>2014-07-03T18:19:03+09:00</dc:date>
    <utime>1404379143</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/42.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/41.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/36.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/unispe/pages/28.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/42.html">
    <title>Gradleとは</title>
    <link>https://w.atwiki.jp/unispe/pages/42.html</link>
    <description>
      = [[Gradle]] =
[[BR]]
Gradle(グレイドル)とは、Groovyで作られたビルドシステムです。[[BR]]
設定自身もGroovyで記述する必要がありますが、スクリプト言語をそのまま使用できる為、柔軟性が高く[[BR]]
また、[[Maven]]で行ってくれていた必要ライブラリのダウンロード及び依存関係の整理なども実施してくれます。[[BR]]

== インストール ==

 * ダウンロード先 [[BR]]
 [http://www.gradle.org/ Gradle公式ページ] [[BR]]

公式ページのdownloadsを選択してgradle-1.XX-all.zipを選択する。[[BR]]
ソースとドキュメントが不要だと言う人はgradle-1.XX-bin.zipだけどうぞ[[BR]]

ダウンロードが完了したら解凍し、環境変数「GRADLE_HOME」を設定します。値には解凍したフォルダを設定します。[[BR]]

 * windowsの場合 [[BR]]

コマンドプロンプトを立ち上げて「gradle -version」と入力します。以下の様なGradle情報が出力されればインストールは完了

{{{
#!text
------------------------------------------------------------
Gradle 1.11
------------------------------------------------------------

Build time:   2014-02-11 11:34:39 UTC
Build number: none
Revision:     a831fa866d46cbee94e61a09af15f9dd95987421

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy:          2.2.0
JVM:          1.7.0_45 (Oracle Corporation 24.45-b08)
OS:           [[Windows]] 7 6.1 amd64
}}}

== Eclipseで実行したい場合 ==
[[BR]]
コマンドプロンプトだけでも出来るんですが、どうせなら開発しながらビルドしたいと考える人多いでしょう。[[BR]]
なので、Eclipseにプラグインを入れてビルドできるように設定しましょう。

 * 新規ソフトウェアのインストールを選択
 * URLの部分に「http://dist.springsource.com/release/TOOLS/gradle」と入れる。

[[Image(gradle_eclipse_plugin_install.png,800px)]]


== タスク実行をしてみる ==
[[BR]]
Gradleを使ってサンプル的なタスクを実行して結果を表示してみましょう。[[BR]]

{{{
#!text
task helloWorld &lt;&lt; {
        println &quot;Hello、world!&quot;
}
}}}    </description>
    <dc:date>2014-07-03T18:19:03+09:00</dc:date>
    <utime>1404379143</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/unispe/pages/1.html</link>
    <description>
      メモ庁

#amazon2()
#amazon2()    </description>
    <dc:date>2014-07-03T18:12:29+09:00</dc:date>
    <utime>1404378749</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/41.html">
    <title>Gradle</title>
    <link>https://w.atwiki.jp/unispe/pages/41.html</link>
    <description>
      ** - [[Gradleとは]]    </description>
    <dc:date>2014-07-03T17:59:00+09:00</dc:date>
    <utime>1404377940</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/unispe/pages/2.html</link>
    <description>
      *メニュー

-[[トップページ]]

***Java
-[[Selenium]]
-[[Maven]]
-[[Gradle]]
-[[Android]]

***DataBase
-[[Oracle]]
-[[Postgres]]

***OS
-[[Mac]]
-[[CentOS]]
-[[Windows]]
-[[Unix/Linux共通]]

***バージョン管理
-[[Git]]

----

**リンク(よくみるとこ)
***技術系
-[[Developerworks&gt;&gt;http://www.ibm.com/developerworks/jp/]]
-[[ITPro&gt;&gt;http://itpro.nikkeibp.co.jp/index.html?rt=nocnt]]
-[[技術評論社&gt;&gt;http://gihyo.jp/]]
-[[@IT&gt;&gt;http://www.atmarkit.co.jp/]]
-[[CodeZine&gt;&gt;http://codezine.jp/]]

***情報系
-[[GIGAZINE&gt;&gt;http://gigazine.net/]]
-[[日経BP&gt;&gt;http://www.nikkeibp.co.jp/]]


***日記
-[[チラシの裏以下の存在&gt;&gt;http://ameblo.jp/uniuni797/]]

合計：&amp;counter()
今日：&amp;counter(today)
昨日：&amp;counter(yesterday)



// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2014-07-03T17:56:29+09:00</dc:date>
    <utime>1404377789</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/36.html">
    <title>Selenium</title>
    <link>https://w.atwiki.jp/unispe/pages/36.html</link>
    <description>
      オープンソースのテストツール。人力での動作確認では手間も時間も非常にかかるところを、Seleniumが人間に代わって「早く、正確に、同じ手順で」テストを実行してくれます。

※「Selenium」という単語自体は、自動テストツールのプロジェクトの名前です。 Seleniumプロジェクトで開発されているテストツールには、いくつかの種類があります。

-Selenium-IDE Firefox のアドオンとして、配布されています。Web アプリケーションに対するユーザ操作を記録し、Selenium テストとして保存・再生します。FireFox上の操作を録画し、テストケースとして保存する機能があります。執筆当時の最新バージョンは1.10.0です。適宜最新のアドオンをダウンロードし、そのままFireFoxへインストールしてください。
-Selenium-RC サーバ・クライアント型のテスト実行ツール。複数のブラウザと複数のプログラミング言語に対応し、ページに JavaScript を埋め込むことで動作します。
-Selenium-Grid 複数の環境で同時にテストを実行できるツール。テストは Selenium-RC にリダイレクトされて実行されます。
-Selenium WebDriver サーバ・クライアント型のテスト実行ツール。複数のブラウザと複数のプログラミング言語に対応し、各ブラウザの提供する機能を呼び出して自動操作を実現します。
Seleniumには大きく分けて2種類の実施方法があります。

①．ブラウザのプラグインとしてブラウザを操作する方法

②．プログラムにSeleniumのライブラリを取り込んでプログラムからSeleniumを操作する方法

①の難易度については難しくはないですが、自動操作の限界はブラウザの仕様に依存する為、拡張性はほぼ無しです。

②の難易度については難しく、プログラミング知識(対応言語：Java、C#、Ruby、Python、JavaScript(node))及びSeleniumAPIの知識が必要になりますが、使いこなすことが出来ればブラウザの仕様を自分で定義することが出来る為、拡張性は高いです。

※公式ページ(​http://www.seleniumhq.org/)


***サンプル集
-[[ブラウザ起動]]
-[[Proxy設定]]
-[[HTMLParser]]    </description>
    <dc:date>2013-10-28T21:55:54+09:00</dc:date>
    <utime>1382964954</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/38.html">
    <title>Proxy設定</title>
    <link>https://w.atwiki.jp/unispe/pages/38.html</link>
    <description>
      Proxyが必要になる場合は、[[ブラウザ起動]]時に認証ダイアログが表示されます。
するとProxy用アカウントを人の手で入力することが必要となり自動化にすることが出来ない為、予めProxyの設定を行っておく必要があります。
各ブラウザの設定方法を以下に記載します。

2013/10/23
どうしてもProxyのアカウント認証ダイアログが出力されてしまう。
どうにかして出さずに自動で認証する方法を検討する必要があるが時間がかかりそうなので、そのうち対応すること

2013/10/28
対応方法判明したので、記載します。
前提として、以下のライブラリをビルドパスに追加すること。

- selenium-server-standalone-2.37.0.jar

=== Internet Explorer ===

#highlight(linenumber,java){{
System.setProperty(&quot;webdriver.ie.driver&quot;, &quot;conf/selenium/IEDriverServer.exe&quot;);

Proxy proxy = new Proxy();
proxy.setSocksProxy(&quot;hostname:port&quot;);
proxy.setSocksUsername(&quot;username&quot;);
proxy.setSocksPassword(&quot;password&quot;);

DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver ieDriver = new InternetExplorerDriver(ieCapabilities);
ieCapabilities.setCapability(CapabilityType.PROXY, proxy);
ieDriver.get(&quot;http://yahoo.co.jp&quot;);}}

2013/10/28
上記に記載したhudsuckr.exeについては、selenium-server-standalone-2.37.0.jarに含まれていたことが分かった為、このjarファイルをビルドバスに追加
することにより、エラーが出力されなくなる。

上記jarを設定した状態で、Proxyを設定することによりプロキシ用のダイアログが出力されずにプロキシを通すことができた。

うーん、socksだとProxy用のダイアログが出ないのはIEの仕様なのだろうか？
通常のHTTPProxyだとSystem.setPropertyに何ぼ設定してもダイアログ出るのに・・・・

この謎については、また時間のあるときにでも。。。    </description>
    <dc:date>2013-10-28T21:55:10+09:00</dc:date>
    <utime>1382964910</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/39.html">
    <title>HTMLParser</title>
    <link>https://w.atwiki.jp/unispe/pages/39.html</link>
    <description>
      HTMLParseとは、HTMLの文法に従って記述された複雑な構造のテキスト文書を解析し、プログラムで扱えるようなデータ構造の集合体に変換するプログラムのことを指します。

[[Selenium]]では、HTMLのテキストから要素又は属性に付与された値を特定し、操作を行うことで自動化を実現します。

今回の例では、Google Chromeを使用して検証します。
ちなみに接続するサイトはYahoo!にします。

ブラウザが起動されてからの検証を行いますので、ブラウザを起動する方法については、[wiki:[[ブラウザ起動]] こちら]を参照してください。

*** 特定の要素を指定

Yahooトップページにある「input」の要素を持つデータが8つありますので、それを取得してみます。
取得した後にそれぞれの「input」要素が持つname属性の値を出力します。


#highlight(linenumber,java){{
//特定の要素を指定
List&lt;WebElement&gt; webElementTagList = chromeDriver.findElements(By.tagName(&quot;input&quot;));
for ( WebElement element : webElementTagList){
   System.out.println(element.getAttribute(&quot;name&quot;));
} }}}

結果
p

search.x
fr
tid
ei
aq
oq

となります。
2つ目の結果がNullとなっていますが、これは
&lt;input type=&quot;submit&quot; id=&quot;srchbtn&quot; class=&quot;srchbtn&quot; value=&quot;検索&quot;&gt;
となっており、上記の通りname属性が存在しない為Nullという結果になります。


*** 特定の属性を指定 

Yahooトップページにある検索用の入力フォームの要素に含まれる属性にはname=&quot;p&quot;という値があります。
従って、入力フォーム用の情報を取得するには、以下のようなコードになります。

#highlight(linenumber,java){{
WebElement webElement = chromeDriver.findElement(By.name(&quot;p&quot;));}}

*** 自動で入力フォームに値を入れる

上記の属性取得で実施したname=&quot;p&quot;を持つ要素に自動的に値を入れてみたいと思います。
入力したい値を反映させるには、sendKeyメソッドを使用します。

#highlight(linenumber,java){{
WebElement webElement = chromeDriver.findElement(By.name(&quot;p&quot;));
webElementName.sendKeys(&quot;Google Maps!&quot;);}}

とすると、こんな感じになります。

&amp;Image(2013-10-24_144758.png)

ちなみに日本語を入れようとすると文字化けするケースがあります。
こんな感じ

#highlight(linenumber,java){{
WebElement webElement = chromeDriver.findElement(By.name(&quot;p&quot;));
webElementName.sendKeys(&quot;あいうえお&quot;);}}

&amp;Image(2013-10-24_161725.png)

こうすればなんとか。。。


#highlight(linenumber,java){{
WebElement webElementName = chromeDriver.findElement(By.name(&quot;p&quot;));
JavascriptExecutor js = (JavascriptExecutor)chromeDriver;
js.executeScript(&quot;document.sf1.p.value=arguments[0]&quot;, &quot;わっしょいわっしょい&quot;);}}

&amp;Image(2013-10-24_202046.png)


うーん。なんでsendKeysじゃだめなんだろ。※要検証！    </description>
    <dc:date>2013-10-24T20:33:46+09:00</dc:date>
    <utime>1382614426</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/37.html">
    <title>ブラウザ起動</title>
    <link>https://w.atwiki.jp/unispe/pages/37.html</link>
    <description>
      ブラウザを起動するのに最低限のコード
下記を見て分かるとおりInternet ExplorerとGoogle ChromeにはDriverServerというツールを経由して実行しないと例外が発生する。
さらにIEだけは現在PC上で使用しているIEのセキュリティ設定と同一にしないとこれまた例外が発生するので必要となる。(2～3行目)


**** Internet Explorer

#highlight(linenumber,java){{
System.setProperty(&quot;webdriver.ie.driver&quot;, &quot;conf/selenium/IEDriverServer.exe&quot;);
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver ieDriver = new InternetExplorerDriver(ieCapabilities);
ieDriver.get(&quot;http://yahoo.co.jp&quot;);}}


**** Firefox 

#highlight(linenumber,java){{
WebDriver ffDriver = new FirefoxDriver();
ffDriver.get(&quot;http://yahoo.co.jp/&quot;);}}

**** Google Chrome 

#highlight(linenumber,java){{
System.setProperty(&quot;webdriver.chrome.driver&quot;, &quot;conf/selenium/chromedriver.exe&quot;);
WebDriver chromeDriver = new ChromeDriver();
ChromeDriver.get(&quot;http://yahoo.co.jp/&quot;);}}    </description>
    <dc:date>2013-10-24T13:58:40+09:00</dc:date>
    <utime>1382590720</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/40.html">
    <title>Maven</title>
    <link>https://w.atwiki.jp/unispe/pages/40.html</link>
    <description>
      Maven とはApache Software Foundationで開発されているソフトウェアプロジェクト管理ツールです。

Maven は Project Object Model (POM) という考え方に基づき、プロジェクトのビルド、テスト、ドキュメンテーション、成果物の配備など、プロジェクトのライフサイクル全体を管理します。プロジェクトのビルドツールである Ant とは異なり、Maven はプロジェクト管理ツールとして、プロジェクトに関する色々な情報を POM に集約し、POM の情報に基づきプロジェクト全体を管理します。

Maven の機能をいくつか挙げると：

- プロジェクトの依存するライブラリの管理。
- プロジェクト情報の配信。(サイトの作成、配備やユニットテストのレポートなど)
- プロジェクトの作成からコンパイル、テスト、パッケージング、配備などのプロジェクトのライフサイクルに含まれる各タスクの支援。

などがあります。

また、Maven はソフトウェアプロジェクトの「管理ツール」であると同時に「理解ツール」でもあります。Maven の第一の目標は、開発者が短期間でプロジェクトを理解する助けとなることです。そのために、Maven では：

- ビルドプロセスを簡単にする。
- 統一したビルドシステムを提供する。
- 良質のプロジェクト情報を提供する。
- 開発のベストプラクティスのためのガイドラインを提供する。
- 新機能への透過的な移行を考慮に入れる。

ということが行われています。これらにより、Maven を利用したプロジェクトはどれもビルド方法が同じであったり、ディレクトリ構成がほぼ同じなので全体を把握しやすいなどのメリットが生まれます。

Maven の構成は、小さなコアと大量のプラグインから成っています。そして、プラグインやライブラリは必要に応じて自動的にダウンロードが行われます。この仕組みによって、Maven やプラグインがバージョンアップされたときに、新機能へ透過的に移行することができます。

早い話が実際に開発を行っていると「開発⇒Junit⇒コンパイル及びパッケージング(jar or war)化⇒デプロイ(配備)⇒動作確認」が繰り返し行われることになると思いますが、その辺を自動化するってことです。    </description>
    <dc:date>2013-10-23T21:58:29+09:00</dc:date>
    <utime>1382533109</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/unispe/pages/28.html">
    <title>Postgres</title>
    <link>https://w.atwiki.jp/unispe/pages/28.html</link>
    <description>
      ***SQL応用
-[[SQL(Postgres)]]

***DB設定
-[[DB設定]]

*** Trigger
-[[Trigger]]

***PL/pgSQL
-[[PL/pgSQL]]

***Errorメッセージ
-[[record &quot;old&quot; is not assigned yet]]

**あれば便利そうなもの
-[[ユーザテーブルを全削除]]    </description>
    <dc:date>2013-10-09T14:41:03+09:00</dc:date>
    <utime>1381297263</utime>
  </item>
  </rdf:RDF>
