2015-01-01から1年間の記事一覧

Java スレッドダンプとの戯れ方

プロセスIDの取得 スレッドダンプの取得 Windowsでプロセスをサービス起動している場合 スレッドダンプを読む プロセスIDの取得 まずは Java のプロセスIDを取得するところから始める。jps で取得できる。 $ <JAVA_HOME>/bin/jps -l 主要なオプションは以下の通り(SunVM</java_home>…

Wildfly Swarm で JavaEEアプリケーションを FatJAR 化する

wildfly-swarm とは JavaEE アプリケーションを Dropwizard や Spring Boot のようにコンテナごと fat JAR 化する 先日 1.0.0.Alpha4 がリリース WildFly 10.0.0.Beta1をベース 以前から要望のあった Netflix OSS サポート(Ribbon, Hystrix) Keycloak による…

ソフトウェアプロジェクトにまつわる神話

etc

管理にまつわる神話 開発に必要な手順書も標準集も揃っている。必要なことをすべて部下に教えられないだろうか スケジュールに遅れたなら、さらにプログラマを追加すれば取り戻せる ソフトウェアプロジェクトを第三者機関に委託すれば、リラックスでき、その…

Elixir の RoR 風フレームワーク Phoenix のはじめ方

blog1.mammb.com の続きで Phoenix。 Elixir 版 RoR の Phoenix Framework。現在のバージョンは V0.15.0。 公式サイト http://www.phoenixframework.org/ Github https://github.com/phoenixframework/phoenix 事前準備 必要に応じて以下を入れておく。 node…

Elixir のはじめ方

導入 Homebrew での導入は以下。 brew update brew install elixir バージョン確認。 $ elixir -v Elixir 1.0.4 Erlang も入る。 erl -version Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 6.4 IEx (Interactive Elixir) 対話型シェルで、各種…

sun.misc.Unsafe の魔力

sun.misc.Unsafe とは sun.misc.Unsafe はネイティブメソッドを利用して Java のメモリモデルを書き換えるAPIを公開しています。 OpenJDKのJavaDocが以下で確認できます。 http://www.docjar.com/docs/api/sun/misc/Unsafe.html sun.misc.Unsafe のインスタ…

Java8 Date and Time API の時点と時間量

Instant Instant は時系列上のある一時点を表現します。 Instant の内部では、以下のように seconds と nanos というフィールドで、ある時点からの経過時間をナノ秒の単位で保持します。 public final class Instant implements Temporal, TemporalAdjuster,…

エラトステネスの篩 vs アトキンの篩

エラトステネスの篩とアトキンの篩って実際どのぐらい違うのか気になったのでー エラトステネスの篩 倍々しながら篩から落としていくアレです。 public interface Primes { /** * Sieve of Eratosthenes. * @param upperBound upper bound * @return List of…

Gradle で Hello Scalate on Scalatra

blog1.mammb.com からの続きで、簡単な Hello Scalate をしてみます。 Scalate とは Scala で書かれたテンプレートエンジンで、以下のシンタックスがサポートされています。 Mustache: 多くの言語で実装があり どこでも使えるテンプレートエンジン Jade: 軽…

Gradle で Hello Scalatra

blog1.mammb.com からの続きで、簡単な Hello Scalatra をしてみます。 Scalatra とは web micro-framework とされている通り、非常にコンパクトな Web フレームワークです。 以下のような Sinatra 風の DSL が利用できます(Scala + Sinatra = Scalatra)。 g…

Gradle で Hello Scala

Scala のビルドツールと言えば sbt ですが、もちろん Gradle でも簡単に始められます。 ここでは Gradle の scala プラグインを使った Hello World を見ていきます。 プロジェクトの作成 Scala プラグイン Main オブジェクトの作成 アプリケーションの実行 …

{{ mustache }} の man ページ翻訳

etc

気づいたら勢いで訳していたので貼っておきます。 名前 mustache - ロジックレステンプレート. 書式 典型的な Mustache テンプレート: Hello {{name}} You have just won {{value}} dollars! {{#in_ca}} Well, {{taxed_value}} dollars, after taxes. {{/in_…

POI で Word ファイルの編集 〜その1〜

Word ドキュメントを作成する ドキュメントにテキストを書き込む テキストのプロパティを設定する 段落に対してプロパティを設定する ドキュメントのテキストを取得する テーブルを作成する テーブルのサイズを指定する 需要はほとんど無いとは思いますが、…

Kotlin で始める JavaEE 7 〜 JPA + CDI + JSF 〜

blog1.mammb.com に引き続き、 blog1.mammb.com をKotlin化してみます。 設定ファイルなどは同じものを利用するので必要に応じてこちらを参照してください。 Resources.kt CDIの Produces を提供する Resources です。 package example; import javax.enterp…

Kotlin でサーブレット

Kotlin で簡単なサーブレットを。 HelloWorld.kt package example import javax.servlet.annotation.WebServlet import javax.servlet.http.HttpServlet import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse [WebS…

Hello Kotlin with Gradle

Gradle で Kotlin 始める導入手順です。 Kotlin の Gradle プラグインは今のところ https://plugins.gradle.org に登録されていないので以下のようには書けません。 plugins { id "org.jetbrains.kotlin.kotlin" version "0.11.91.2" } buildscript でクラス…

Java8 の Stream 取得方法あれこれ

Iterator から Stream を得る 配列から Stream を得る Enumeration から Stream を得る 文字列を split した結果から Stream を得る 乱数 Stream を得る 数列の無限 Stream を得る org.w3c.dom.NodeList からStreamを得る ソート済みの Stream を得る Iterat…

ReactiveX/RxJava の概要

RxJava は ReactiveX (Reactive Extensions) の JVM 実装で、平たく言うと非同期のイベント処理を簡素に書ける、単なるライブラリです。 "Rx = Observables + LINQ + Schedulers" などと表現されます。なんですかこれ?大げさな抽象概念を掲げすぎて意味不明…

手に入れておきたい GWセール中の Kindle 技術書

etc

Kindle 本のゴールデンウィークセールが開催中です。 結構数が多いので、技術書を抜き出してみました。 Kindle 端末なくてもアプリ入れれば読めるので、60% OFFの機会に手に入れておくのもよいのではないでしょうか。 組織パターン作者: James O. Coplien,Ne…

Gradleプロジェクト作成時の init タスク

Build Init Plugin init タスクで build.gradle などをよろしく作れます。 試験的な提供なので将来が計画されていますが、Gradle 2.3 時点でどのようなになるかメモしておきます。 (2017/02/22 追記) 現在は java-application が追加されているので加えまし…

【2015年】プログラム言語のホーム画面ミュージアム

Haskell Try it の所がコンソールになっていて、help と打つとインタラクティブなチュートリアルが始まります。 ロゴも美しくなっており、教材用のビデオも提供されています。 Kotlin groovy scala Swift python TypeScript Dart ceylon F# HAXE Rust elixir…

JavaFX8 を Gradle で始める

JavaFX8 を Gradle でビルドするのは色々と手間なことが多く、 (javafx-gradle plugin)https://bitbucket.org/shemnon/javafx-gradle/overviewを使うのが手っ取り早い。 現在 0.4.0 がリリースされているので、以下のような build.gradle を用意(gradleは新…

魅惑的なテスティングフレームワーク Spock (Mocking API編)

Spock では Groovy の動的な特性を生かした柔軟な Mocking テストが実現できます。 blog1.mammb.com 前回に続いて、Spock のモック機能について見ていきましょう。 Mock を作成する インタラクションを検証する Mock の振舞いを定義する Mock オブジェクトの…

魅惑的(Fascinating)なテスティングフレームワーク Spock

Spock とは build.gradle HelloSpock 仕様(テストケース)の構造 フィールド fixture メソッド feature メソッド helper メソッド データドリブンなテスト @Unroll data pipe Stack の仕様例 例外の検証 例外とならないことの検証 タイムアウトを適用する Ham…

Firefox のスクリーンキャプチャ機能が、すごくイイ

etc

最近 Firefox に戻ってきていて、 スクリーンキャプチャ機能が すごくイイ ことに気づきました。 開発者ツール レスポンシブデザインビュー メニューから またはこちらのボタン このボタン押す 横のプルダウンでスクリーンサイズ変えたら このボタン ダウン…

JPA 2.1 の 新機能 バルクオペレーション まとめ

JPA 2.1 で Criteria API 経由での一括更新と一括削除が可能となりました。 Criteria API の変更点 JPA 2.1 では CriteriaUpdate と CriteriaDelete インターフェースが追加され、 CriteriaBuilder の createCriteriaUpdate(Class<T> targetEntity) と createCr</t>…

package 配下のクラス一覧を取得する方法いろいろ

簡単にできそうで意外と面倒な package 配下のクラス一覧を取得する方法について。 Guava の ClassPath 利用 Reflections 利用 Spring ライブラリ利用なし ToolProvider で取得 Guava の ClassPath 利用 ClassPath を使えば簡単に取得できる。 ClassLoader l…

Minimal Embedded Tomcat

Tomcat を組み込みで扱う最小限のサンプルです。 最小限の組み込み Tomcat main から最低限の設定をして組み込みの Tomcat を起動します。 package embed; import org.apache.catalina.Context; import org.apache.catalina.servlets.DefaultServlet; import…

JPA では Read-Only の Entity は定義できない

JPA Read-Only マッピング JPA では今のところ読み込み専用で Entity を定義することはできない。 マッピングの定義で読み込み専用に定義することはできる。 @Entity public class Employee { @Id @Column(insertable=false) private int id; @Column(insert…

JPA 2.1 の 新機能 Converter まとめ

Converter の使用例 Converter の自動適用 Embedded 属性の変換 Collection 属性の変換 クラスレベルでの Converter 指定 orm.xml での Converter 指定 注意点 データベースのカラムと Entity の該当する属性の変換を Converter で定義できるようになりまし…