Seeing is believing

いちエンジニアの日々の興味のあるところ、イベント参加記録、学びの共有を取止めなく※このblogは個人の見解であり所属する組織の見解ではありません

春のJava IDE祭り 〜激突!? 3大IDE!に参加してきました

溜まりに溜まった仕事を区切り(見切り?)をつけ、JJUGの勉強会に参加してきました。

テーマはIDEです。

 

春のJava IDE祭り 〜激突!? 3大IDE! 2016-04-25(月)19:00 - 21:00

  • inteliJ

 - Debug実行時にタイムリープ可能。ブレイクポイントおいたところから、少しステップ戻して、、とかが可能。
  http://blog.jetbrains.com/jp/2014/03/06/420
 - HTML編集時に、ブラウザで動的反映も可能。(Webサーバをブラウザでみているのと同じ感覚、)
 - JavaScriptサポートも。リファクタリングも可能。(文字列置換ではない)
 - git連携用のクライアントあり。
 - SQL実行も用意。SQL分の補完可能。テーブルリファクタもそこで可能。
 - Kotrinとの親和性も高い(JetBrains社製なので)
 - FWとの親和性も高い。SpringBootでダイアグラムでインジェクション先などの関係を図示化できる。
 - Java8には対応済。Java9についてもすでに対応済み。取り込み速度はメチャはやい。
 ‐ IDEAで後ろに.varとかつける記法:Postfix completion
  IDEA 13.1のPostfixコード補完 | JetBrains ブログ
  http://blog.jetbrains.com/jp/2014/03/19/433

 - EclipseはマーケットシェアNo1.  --2014年時点48%。IntelJ44%、NetBeans10%
 - Eclipseは遅い、重い、プラグイン選定がめんどいなどの課題が。。
 - エンタープライズで利用する理由
  - プラグインの充実、自分でも開発可能
  - 設定をInport/Exportできる → ルールを統一、底上げできる土台がある
 - なぜEclipseが重いのか?
  - プラグインが重い(数や、フックポイントなど)プレアデスも。
  - Incremental build(自動ビルドは狭く。有効にしたまま、ソースコード読み取り範囲を狭めるなど)
  - WTP(For Java EE):XMLの編集、バリデーションなど
  - その他:AntiVirusも大きな要員。Eclipse実行時にJarを読み込むので、Zip解析が走る
 -APサーバを利用するには?→Tomcatプラグイン。SpringBoot。Maven+RemoteDebug
 -JavaScriptEclipseではなく、VisualStudioCodeがおすすめ。
 - おすすめプラグイン:DB Viewer-ER Master、STS(Spring Tool Sxxx):MicroServicesのように複数同時にプロセス起動可能

 - Cloud IDE
   ‐Dockerコンテナイメージ
   -ブラウザで操作する
   ‐自動補完可能だが、まだ、ちょっとしたタイムラグあり(サクサクではない)

 ‐NetBeansチェコプラハ製。
 ‐もともとは学生プロジェクト。その後Sunがオープンソース
 ‐最新Javaテクノロジをいち早くサポートするのが最優先のゴール
 ‐英語版と日本語版を同時リリース
 ‐HTML5JavaScript開発もできる。フレームワークもそれなりに対応されている。
 ‐CSS3も。ブラウザ連携として、Chrome拡張や、Webkit統合も
 ‐ApacheCordova
 ‐Oracle JavaScript Extention Toolkit(Oracle JET)
  ‐Jquery,KnockoutJS,RequireJSベースのオープンソースライブラリ(3月にリリース済み)

  ‐NetBeans上でテンプレート読み込みの上、簡単にSPAアプリが作成可能。UIコンポーネントベース。

 

Selenium WebDriver超入門

試行錯誤して動作&IEでのキャプチャまで実行できたのが、

以下のコード。

たぶん環境差異ありなので、参考にする際は注意されたし。

 

 

 

    
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Sample {

	public static void main(String[] args) {
		File file = new File("C:\\oper\\Java\\selenium\\IEDriverServer.exe");
		System.setProperty("webdriver.ie.driver", file.getAbsolutePath());

		//http://stackoverflow.com/questions/12034969/internetexplorerdriver-zoom-level-error
		DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
		caps.setCapability("ignoreZoomSetting", true);
		WebDriver driver = new InternetExplorerDriver(caps);

		driver.get("http://www.google.com");
	    System.out.println("Page title is: " + driver.getTitle());
	    WebElement element = driver.findElement(By.name("q"));
	    element.sendKeys("Cheese!");

	    element.submit();
	    saveScreenshot(driver,new File("C:\\oper\\Java\\selenium\\sample1.png"));
	    driver.quit();
    }

    private static void saveScreenshot(WebDriver driver ,File saveFile){
        try {
            if(driver instanceof TakesScreenshot) {
                File tmpFile =
                    ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                FileHandler.copy(tmpFile, saveFile);
            }
        } catch(Exception e) {
            throw new RuntimeException(e);
        }
    }

}

IEで操作するところまでできたが、動作がめちゃめちゃ遅い。特に文字入力作業のところ。。これでは、大規模開発テストではかなり心配。。
今後やること
Maven
Junit
・SeleniumIDE→Javaへの動作運用検討
・画面キャプチャ切れてしまうのでは?の確認
・動作早くする余地がないかの確認。


Seleniumメモ

最終的にやりたいこと。

 

JenkinsでテストJob管理

Jenkins→ビルド→Junitテスト→Selenium実行

テストエビデンスとしてSelenium実行結果はJenkinsジョブ結果から履歴参照したい。

Selenium実行の対象ブラウザはIE11としたい。

 

ここでつまずいていること。Seleniumでキャプチャを取るデフォルトのコマンドである、captureEntirePageScreenshotがIEでは使えない。

実際に使ってみても、このブラウザでは使えないよ、エラーが。。

 

色々Webで検索してみると、snapsIEを使う方法が有名のよう。だけど、情報が古い&

インストールが面倒。。

 

ひとまず、captureScreenshotコマンドベースで実施できないか、確認する予定。

これでだめなら、Seleniumの外から動画とったり、、が最終手段か。

jjugナイトセミナークラウドプラットフォーム特集 1

heroku

  • あまり知られていないが、salesforceファミリー(買収済)
  • 違いはコーディングレスか、プログラミング支援か
  • 12factor applicationの考え方を踏襲
  • ローカル環境でも動かすことが可能
  • gitにpushするだけで、シームレスにデプロイまで可能
  • maven gradleの設定ファイルを自動で読み込むアーキテクチャ

AmazonWebService

  • beanstalkがベストプラクティス
  • 中身はec2やs3など、既存サービスの集合体
  • ボンネットを開けられるという表現をしているように、中の透明度は高い
  • lambdaはイベントハンドライメージ。課金安い

JasperReports調査

OSS帳票製品に関する調査

 

もっとも有名な、JasperReports

ただし、中身としては,PDFに関するコアな部分はiTextに委譲しており、

iTextはライセンス上の懸念がある様子。

JasperReportsで帳票出力してみた | Developers.IO

 

ただし、現時点のJasperReportをDLしてきて内容を確認したところ、

まだiTextのバージョンは2.1.7のため、AGPLのものではなかった。

 

一方、iTextのサイトを見ると、

以下のFAQもあり、危険な感じ。。

http://developers.itextpdf.com/question/can-itext-217-or-earlier-be-used-commercially

iTextGitHubを見ても、2系は7 Jul 2009     の2.1.7 で終わっており、

その後は5系のみ、、といった様子。

https://github.com/itext/itextpdf/tags?after=5.0.4

やはり、新規で今JasperReportを使うのは危険か。

他の選択肢は、ApachePDFBoxか。。

 

 

 

ソースコードの貼り付けサンプル

こんな感じでソースやログなどを貼り付ける。

 HTML編集タグを選択し、<pre>タグで囲ってソースを貼り付けることで可能

サンプル↓

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');