Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? High Performance Spark github → https://github.com/yutapok/-memorandum/blob/master/HighPerformanceSpark.md 翻訳→気になった点のピックアップをしているため、不自然な日本語の箇所があります。 間違いがあればご指摘ください。 まだ途中なので後続の章も都度更新する予定 他の書籍や情報では語られていないことを中心に備忘録として (参考) ← 私の付け足し 書籍 情報 2017出版 Spark version 2.0.1以降〜 OReilly
Play Framework 世の中には多様なウェブシステムのためのフレームワークがありますが、今回はPlayに注目して話します。Javaには伝統的にJavaEEというものがあり、最近はやりのkotlinでのコーディングが可能なSpringもかなり使いやすくなっていますが、scalaなどの親和性も考慮するとPlayが一番よさそうなため。アーキテクチャもモダンなので管理がしやすい印象です。 Playのインストール 以前はactivatorというツールがあったようですが、今は提供されていないようです。公式ドキュメントによると現在はGitHubからスターターコードをダウンロードするか、sbtのgilter8テンプレートを使うというのが推奨されている始め方のようです。gilter8を使う場合は以下のようにします。 該当フォルダに移動して、sbt runとするとhttp://localhost:90
背景 2017年の9月にOracleがJDKの新たなリリース・モデルを発表して以降、Javaユーザーを中心として、新たな短いリリースサイクルに追従できるのか、現在のOracle JDKに代わって配布されるOpenJDKにはLTS(長期サポート)が用意されるのかといったことを含めて不安に思っている方が多いようです。OpenJDKのバイナリをリリースしてサポートを提供しているのはOracle一社ではないですし、Java 11 LTSが提供される予定のAdoptOpenJDKに最悪逃げればいいかなと個人的には思っています(AdoptOpenJDKのサポートについて完全に理解しているわけではないので、これはあくまで印象です)。ただ、OpenJDK LTSが提供されればそれに越したことはないので、OpenJDK LTSが提供されることを願いたいです。 ただ、それは別にして、JVM言語が新しいJDKの
Webjarsのホームページから、Bootstrapに必要なライブラリを探して、libraryDependenciesに追加をします。Webjarsを使うのに必要な、webjars-playのライブラリも追加しています。 name := """WebjarsTest""" organization := "jp.co.example" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayScala) scalaVersion := "2.12.6" libraryDependencies ++= Seq( guice, "org.webjars" %% "webjars-play" % "2.6.3", "org.webjars" % "bootstrap" % "4.1.3"
他のウェブフレームワークと同様にPlayでもDIができるようになっています。DIというのは、JSR330で規定されている依存性の注入の手法であり、Play Framework(2.4以降?)では、GoogleのGuiceというライブラリを使って実現されています。そんなに難しいわけではないのですが、原理とやり方をきちんと理解しないとなかなかとっつきにくい印象があります。AkkaのActorと組み合わせた例で説明したいと思います。 Play FrameworkにおけるDI まず、JSR330を使うということは、javax.injectパッケージのアノテーションを使うということだということを理解する必要があります。何かのコンポーネントに対して依存性の注入を行うためには、@Injectアノテーションを使ってクラスを修飾します。ちなみに、scala(Play)の場合はコンストラクタで宣言するのが一般
Instan Vert.xを読みながらサンプルコードを試してみる。 今回はChat Server。 本の中のコードはほとんどJavaScriptで書かれているのだけれども、Javaの方がAPIを追っかけやすいのとJava8の勉強をかけてJavaで再実装。 コードはこんな感じ。 public class ChatServer extends Verticle { private static final String MESSAGE_BROADCAST_ADDRESS = "broadcast_address"; public void start() { NetServer netserver = vertx.createNetServer(); netserver.connectHandler((NetSocket socket) -> { InetSocketAddress remot
public class ClientVerticle extends Verticle { HttpClient client; public void start() { container.logger().info("ClientVerticle deployed."); client = vertx.createHttpClient(); client.setHost("ycpi-api.flickr.com").setPort(80); vertx.eventBus().registerHandler("webclient_address", this::handleClientEvent); } void handleClientEvent(Message<String> msg) { container.logger().info(Rythm.render("Recieve
Vert.xを利用したプロジェクト管理をgradleでやりたかったので、インストールから Hello, world! の表示までまとめ vertx-gradle-template のクローン vertx-gradle-template を GitHub からクローンする。 Gradle Wrapper が付属しているため gradle を別途にインストールする必要はない。 $ git clone https://github.com/vert-x/vertx-gradle-template.git hello-vertx このままだとリモートリポジトリが vertx-gradle-template のままなので変更する必要があるが、ここでは省略する。変更方法はこちらを参照。 Verticle の作成 hello-vertx/src/main/groovy/com/example/Hello
Closure Templatesって? Closure Templatesとは、Googleが開発しているJavaとJavaScriptで利用可能なテンプレートエンジンです。 GmailやGoogle Docsで利用されている(されていた?)という実績もあり、最近ではMediumというサービスでも利用されています。 個人的に気に入っている点をあげてみます。 JavaとJavaScriptで同じテンプレートファイルを利用できるので、初期ページはサーバーサイドのJavaで描画し、動的に書き換えたい箇所だけクライアントサイドのJavaScriptで描画し直すようなことが簡単に実現できる。 オートエスケープやパラメータの型チェックなど、安全にテンプレートを書くための機能が充実している。 テンプレート内でできることが限られているので、メンテナンス性の低い複雑な実装になりにくい。 Velocityや
Vert.xとは、公式ページより JVM上にリアクティブアプリケーションを構築するためのツールキットです @timfox氏が中心となって、現在2015年6月22日を目標にversion 3が開発されています。この投稿含め何回かに分けてVert.x 3の動くサンプルを実装していこうと思います。 概要 Vert.xは「Reactorパターン」というモデルを採用しており、そのため基本的にはブロッキングするような処理を記述すべきではありません。データベースに対する処理もこのブロッキングする処理にあてはまります。 公式の提供するVert.x JDBC Serviceを用いればデータベースに対する処理を非同期に実行することができ、ブロッキングしないで処理を記述することができます。 今回はVert.x JDBC Serviceを用いて、データをデータベースに永続化するシンプルなRESTサーバを動かしてみ
Vert.xとは、公式ページより JVM上にリアクティブアプリケーションを構築するためのツールキットです @timfox氏が中心となって、現在2015年6月22日を目標にversion 3が開発されています。この投稿含め何回かに分けてVert.x 3の動くサンプルを実装していこうと思います。 概要 Vert.xにおいて、event loop thread上で動かすVerticleでブロッキングするような処理を記述すべきではありません。データベースに対する処理等ブロッキングする処理は、それを専用にこなす別のVerticleを用意して、worker threadでこのVerticleを動かすことで、event loop thread上で動くVerticleの処理のブロッキングを避けることができます。この際二つのVerticle間の通信にはEventBusを用います。 今回はHTTPリクエストを
import io.vertx.kotlin.lang.* fun main(args: Array<String>) { DefaultVertx { httpServer(8084, "0.0.0.0", Route { GET("/path") { request -> bodyJson { "field1" to "test me not" } } otherwise { setStatus(404, "Resource not found") body { write("The requested resource was not found\n") } } }) } } package net.devneko.birdx import io.vertx.core.Vertx import io.vertx.kotlin.lang.json.object_ class MyCon
概要 リアクティヴプログラミングで Web アプリケーションを構築できる Framework の Vert.x 3系を、 Gradle を使って stand-alone で動かしてみました。 Vert.x とは? Vert.x is a tool-kit for building reactive applications on the JVM. 出典:公式サイト Scale イベントドリブン、すべてコールバックで結果が返る……ただし単体だとコールバック地獄に陥りやすいので RxJava との併用が推奨されている Non-blockking I/O 少数のスレッドで大量のコネクションを並行処理 Polyglot コアは Java だが、さまざまな言語でのアプリケーション開発をサポート Java JavaScript Groovy Ruby Ceylon ライセンス バージョン 3.3.0.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く