補足: http://techlog.mvrck.co.jp/entry/todesking-runtime-jvm-bytecode-optimization/
こんにちは、 @snuffkin です。 Acroquestでは、Elastic{ON}のような勉強会やカンファレンスに参加するだけでなく、社内向けの勉強会も開催しています。 新しい技術を調べて「使ってみた」的な発表をしたり、実際に開発の中で得られた知見を発表したり。 各自が得意分野で、様々なテーマで発表し、技術の研鑽を行っています。 私の場合、しばらく性能改善に取り組んでいたため、 その際に解決した問題からいくつか事例をフィードバックし、 性能問題を起こさないよう喚起しました。 10 performanceimprovements 性能改善10事例 from Acroquest Technology www.slideshare.net スライドでも書きましたが、特に大量に繰り返し実行される処理では、性能を意識した実装をしないと問題になりがちです。 問題があちこちに散らばると性能が大きく
Selenium Cheat Sheet.md #Getting Started ##Webpage: <html> <head> <title>Testing with Ruby and Selenium WebDriver</title> </head> <body bgcolor="antiquewhite"> <img src="images/freebsd_daemon.jpg"> <h2> Version 1.0</h2><h1> Test Automation Training</h1><h3> Testing Web Applications with Ruby and Selenium WebDriver</h3></body> </html> ##Ruby Code: require 'rubygems' require 'selenium-webdriver' bro
JavaOne 2017レポート、要注目のProject JigsawとVector APIをコードで理解 JavaOne 2017レポートの2回目は、筆者が聴講したセッションのうち興味深かったものを2つレポートします。Java SE 9の注目機能である「Project Jigsaw」と、今後の「Project Panama」で提供される「Vector API」です。 JavaOne 2017レポート、ここ数年で最も充実していたキーノート 10月1日から5日間、世界最大のJava開発者会議「JavaOne」が開催されました。キーノートや500近くのセッションなどを通じて、Javaの最新情報に触れることのできる5日間となりました。このJavaOneの模様を2回にわたってお伝えします。今回はキーノートセッションを中心にレポートします。
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。 Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
いやーSpringは至れり尽くせりな気がする。 There are a few implementations of that abstraction available out of the box: JDK java.util.concurrent.ConcurrentMap based caches, EhCache, Gemfire cache, Guava caches and JSR-107 compliant caches. Spring Framework Reference Documentation このエントリではEhcacheそのものについては触れない。すでにEhcacheを利用していて、それをSpringで使うときの設定について。 Springの例にたがわず設定方法はいろいろあるけど(公式リファレンス参照)、XMLファイルでの設定は以下のとおり。 <?xml ve
JUnit5 の Alpha 版が公開されてたので、関西DDDに補欠になってしまった悲しみを紛らわすために使い方を調べた。 ※Alpha 版なので、今後変更されるかもしれません。 JUnit5 とは 言わずと知れた JUnit の次期バージョン。 Java 8 以上のみをサポートするようになり、 JUnit4 からは大きく変わっている。 でも、テストメソッドとか基本的な考えは変わっていない。 2016/02/06 現在、 Alpha 版が公開されている。 Hello World Gradle で使う方法(Maven でもいけるらしい)。 ビルドファイル buildscript { repositories { maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } dependencies { cl
以前の日記でEasyMockをご紹介したのですが、現在の現場ではMockitoを使っています。 それにしてもモックキット?モキット?モキート?どう読むんだろう… ロゴは有名なカクテル「モヒート」ではあるが。僕はミントが苦手なので余り飲まないけど。 Mockitoは比較的新しいモックユーティリティです。 何か革新的な機能を備えているかというとそうでもないのですが、使い勝手が非常に良いのが特徴。 サンプルコードはこんな感じ。 public class VeryHugeBusinessLogic { void doSomethingHardProcessing() { ... } } public class VeryHugeService { @Autowired VeryHugeBusinessLogic logic; public void execute() { logic.doSome
JJUGナイトセミナー『Git入門』に行ってみました。 jjug.doorkeeper.jp Gitはじめの一歩 スライド Gitはじめの一歩 from Ayana Yokota www.slideshare.net 感想 イラストが可愛くてすごい分かりやすかったです! このスライドを見るだけで、色々とGitのコマンドがイメージで理解できます Gitの本に限らず、なぜ指導書は読者全員がうまく行く前提で書かれているのか そういう意味で大変参考になった発表でした #jjug— ブロッコリー (@nihonbuson) 2016, 1月 25 困ったときのコマンドを沢山伝えてくださったので、色んな場面でこのスライドを見直す機会ができると思います 「Gitは歴史」という言葉が印象的でした。 ちなみに発表を聞いた直後の自分 @kotomacontact git commit ツチノコをジャイアンが
Java プロセスをトレースする BTrace を試してみる BTrace について Java プログラムのトレーシングツール Java プログラムの実行状況に応じてプログラムで指定したアクションを実行できる ex.) foo メソッドが呼び出されたらタイムスタンプを出力するなど その他のメリットとしては、jdb で Java のプロセスをデバッグする場合はあらかじめ JVM にデバッグ用のオプションを指定する必要があるが、BTrace ではその必要がない 元々 Project Kenai でホスティングされていましたが GitHub に移行した模様 https://github.com/jbachorik/btrace https://kenai.com/projects/btrace BTrace のビルド Gradle を使う場合はインターネットに接続されている環境でビルドする必要が
Android Javaでは昔からAOSPのcoding style guidelineに則ったスタイルがとられることが多いようです。そのなかで、private fieldに "m" (member) や "s" (static member) などのプレフィクスをつけよ、というものがあります。 AOSP Java Code Style for Contributors | Android Open Source Project これはいわゆるハンガリアン記法の変種で、こういうやつですね。 class Recipe { private String mTitle; private List<String> mSteps; // ... } これについての態度はプロジェクトごとに様々ですが、たとえばクックパッド社のJavaのスタイルガイドでは明確に否定しています。 styleguide/
HeapStats is Java troubleshooting tool. This tool suites of three applications. Agent HeapStats JVMTI agent for gathering JavaVM runtime information continuously. Analyzer HeapStats JavaFX GUI analyzer for analysis by various graphs. CLI HeapStats commandline analyzer. Also two supplemental applications are available: MBean MBean for operating HeapStats Agent via JMX See mbean/README.md for more d
最近、Fluentd + ElasticSearch + Kibana を組み合わせてログの収集・可視化をやっている取り組みをよく見ます。 私もちょっと触ってみたいなーと思っていたのですが、ElasticSearchよりSolrの方がまだ少しは知っていたので、Fluentd + Solr (可視化部分はまた後日) やってみました。 Solrは、Apacheだから(?)同じApache仲間のFlumeと連携させる記事はよく見ますが、Fluentdとの連携はあまり見ないので色々不安でしたが、Fluentdのプラグインを作ってくださっている方がいたので助かりました。 環境 CentOS 6.6 (32bit) Fluentd 0.12.15 プラグイン: fluent-plugin-out-solr 0.0.8 Apache Solr 5.3.1 Oracle JDK 8 Update 65 F
ポリモーフィズム(サブクラスによる切り替え、抽象化) ここに分類されるのは、オブジェクト指向の第3原則、ポリモーフィズムを使用したパターンです。ポリモーフィズムを使用すると、動的に使用するクラスを切り替えることができます。<参照> 他に分類されているものでも、ポリモーフィズムが重要な位置を占めているものもありますが、ここではそれしか使われていないものを扱います。 ただデザインパターン全体を通して強調されているのは、インターフェースでプログラミングするということです。実装への依存をなくし、そうすることによって設計の骨組みを明らかにするのです。 Template 次のようなメソッドがあった場合に、処理Bのところを条件によって変えたい場合があるとします。 class Hogehoge { void doit() { ... 処理A ... ... 処理B ... ... 処理C ... } }
三行まとめ ANTLR4で生成したパーサはAndroidからも利用可能 ANTRL4によるパーサはJavaCCによるパーサと比べてずっと遅く、実機では10ms単位で時間を使うので注意 ANTLR4を組み込むにあたってのビルドスクリプトはAndroid-Orma/migration/build.gradleを参照のこと 詳細 Orma の自動マイグレーションモジュール(orma-migration)ではSQLite DDLから ALTER TABLE などの差分を生成してます。 この orma-migration ではDDLの構文解析にJavaCCベースのJSqlParserを使っていたのですが、SQLiteの拡張構文(たとえばカラム定義における UNIQUE ON CONFLICT REPLACE など)に対応していないため、すでに拡張構文を多用しているアプリケーションでOrmaを導入でき
Javaから形態素解析エンジンであるMeCabを利用したいと考え調べたところ、Javaバインディングが存在するとのことで導入を行った。 結構いろんなところでハマったので、メモっておく。 設定の際は、このサイトを参考にした。 Twitterから取得した「つぶやき」を品詞に分解する - 放浪するエンジニアの覚え書き 使用した環境 MAC OS X 10.9.4 eclipse Luna Release (4.4.0) JDK 1.8.0_20 手順 1. 本家のサイトからMeCab本体をインストールする。 2. 本家のサイトからMeCab 用の辞書をダウンロードし、解凍する。 3. 本家のサイトからJavaバインディングをダウンロードし、解凍する。 4. 解凍したファイル内のMakefileを以下のように書き換える(パスなどの条件が各自異なるはずなので、同じものを利用しても実行できない可能性が
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く