エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

Java

"Fiber" で 100万スレッドが実行可能に!? - Project Valhalla とProject Loom : JavaDayTokyo 2018 参加レポート2 #JavaDayTokyo

Project XXX系の話について、Project ValhallaとProject Loomについて聞きました。 どちらも講演はDavid Buckさん*1。残念ながら、どちらもJava11には入らないので、LTSのリリースサイクルを考えるとまともにサービスで使えるのは早くて2021年… とはいえ、ど…

Java11について : JavaDayTokyo 2018 参加レポート1 #JavaDayTokyo

今年もJavaDayTokyoに参加させていただきました。今年の自分なりのテーマは、以下についての情報収集でした。 半年後にリリースされるLTSバージョンであるJava11の新機能 その他今後追加される機能について 特に、一昨年くらいから聞いているProject Valhall…

続・続・計算量を減らす:Newの回数を減らしたらもっと速く… なるどころか遅くなった!?

前回までのお話 taichiw.hatenablog.com たった一行、乱数の初期化をループの中からクラス生成時に移しただけで5倍も速くなったというお話でした。 じゃあ、クラス変数にしたらNewが減るじゃん!ということでstaticをつけてみました。 private static Rando…

続・計算量を減らす:ループ内の処理を短くすることは効果大

昨日、 taichiw.hatenablog.com なるものを書いたわけなんですが…小細工を考える前にコードそのものの見直しをすべきかも というお話。結論から言うと、一行変えただけで3分弱→30秒、5~6倍、驚きの速さにwwwww 変えたのこれだけ。 github.com従来、打席毎に…

「2番ペゲーロをみんなでやってみる」ために計算量と戦った話 #bpstudy

ありがたいことに、前回に引き続き今回も、Baseball Play Studyで発表させて頂く機会をいただきました。私の発表 Twitter, 私の発表近辺 twitter.comTwitter, 全体のまとめ togetter.com 計算量との戦い 今回、「シミュレータ」をグルグルまわして最適な打順…

Baseball Play Studyで発表してきたんだけど一応ささやかながら技術的な勉強もしているのよ という記録 #bpstudy

今年も野球バカの発表を Baseball Play Study 2017 冬 野球振返りスペシャル(BPStudy#124) - connpass でさせていただきました。 資料はこちら。*1 野球にご興味ある方には、是非内容も見てご一笑いただければ幸いなのですが、このブログでは「一応発表の過…

持論:Application Layerがシンプルなコードは読みやすい

DDDでは全てのビジネスロジックはドメインクラスに、とのことなので当然プログラムの肝はドメインクラスなのですが、コードの読みやすさは8割がたアプリケーションレイヤで決まると思っています。 Springで言えば、Controllerから呼ばれるServiceクラスの、…

『現場で役立つシステム設計の原則』 増田亨さん を読んだ。「データしか持たないデータクラスは作らない!」

こちらの本を読んででのレポートです。現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法【電子書籍】[ 増田亨 ]価格:3175円 (2017/11/4時点)複雑な業務ロジックは「適切な境界」で分離されていれば理解しやすくなる! …が…

(中身まだ無いです) spring-cloud-sockets と言うものを教えてもらったんだけど

GitHub - viniciusccarvalho/spring-cloud-sockets: Reactive socket communication for microservicesこれとSpring WebFlux の関係… というかそもそもWebFluxって何 的なのがさっぱりわかってないので後でちゃんと調べる調べる…… きっと。 多分これも関係あ…

Maven vs Java9のModule(Project Jigsaw) : 依存はどっちが勝つの? (追記:あんまりMaven関係なかった)

無事Moduleを使ったビルドがMavenでできたところで、本当にやりたかった検証へ。Mavenで複数プロジェクトが同一プロジェクトに依存していると、「どれか一つ」が使われることになります。 全て同じバージョンなら問題にならないのですが、それぞれ異なるバー…

MavenでJava9のModule(Project Jigsaw)を使ってみた

探し方が悪いのか、わざわざ書くほどのことでもないのか、mavenでJava9のmoduleを使うとどうなるか という記事が英語でも日本語でもWebで見つからなかったので、試してみました&備忘録としてブログに残しておきます。Project Jigsaw: Quick Start Guide こ…

JavaDayTokyo 2017 Report 2 : Reactive Stream

Reactiveなんちゃらというのがどうもわかりません。という私が、Pivotalの槙さんのお話を聞いて、随分わかったかも!という気持ちになったセッション。 改めてブログにまとめなおしてみるとやっぱりわかってないところが多々あるのですが、ひとまず忘れない…

JavaDayTokyo 2017 Report 1 : Java9 関連

今年もJavaDayTokyoに出席させていただきました。この記事ではJava9関連についてまとめます。Oracle的な目玉はJigsawとjshellでした。が、Jigsawは去年のJavaDayTokyoで集中的に話を聞いたけどあまり使いどころがないなぁ… と感じ、 jshellはあると便利だけ…

レガシーコードを JDK 8 でビルドしようとしたら "The system is out of resources" が出た話

今までJDK7でビルドされていたJavaプログラムをJDK8でビルドしようとしたところ、コンパイル時にこんなエラーが出ました。 The system is out of resources. Consult the following stack trace for details. java.lang.StackOverflowError at com.sun.tools…

Java Day Tokyo 2016 参加レポート2 マイクロサービスについて #javadaytokyo

今回のもう一つの参加目的、 「マイクロサービスの実践例と、支援するようなJavaのアーキテクチャについて」です。 モジュールによるマイクロサービス? はじめに、「1-A Java SE 9 Overview」より。 Project jigsaw によるModulanizeの目的の一つは、「開発…

Java Day Tokyo 2016 参加レポート1 今後のJavaの動向、特にJava9について #javadaytokyo

3年ぶりにJavaDayTokyoに参加しました。今回の自分のテーマは2つ・今後のJavaの動向、特にJava9について・マイクロサービスの実践例と、支援するようなJavaのアーキテクチャについて前者については、Java8導入直前にSan FranciscoでのJavaOneに参加させても…

IntelliJ IDEAハンズオンに参加しました #ideahandson #jbugj

サムライズムさん開催の、IntelliJ IDEAハンズオンに参加してきました。 今月はあと一回、3月24日にも開催されるようです。開催予定イベント一覧 - 株式会社サムライズム | Doorkeeper まとめも兼ねて、特に「へー!」と思ったものをご紹介させていただきま…

jshellを使ってみた

ちょっとしたプログラミングに、jshellを使ってみました。 jshellとは、Java9から導入される、簡易実行環境。REPLっていうらしい。Rubyでいうirbに相当します。 jshell JDK 9 quick peek 使ってみた感想。 良いところ ・ワンラインサクッと書いて動かせるの…

U+FFFF以上の文字ってなんや → サロゲートペアってなんや → Spring Web Services が言うことを聞きません! とかで一日潰れた話

表題のような感じなのですが、これまで理解が曖昧だったUnicodeとか何とかが今までよりわかったのでメモ。 尚、こちらのサイトを非常に参考にさせていただきました。 Unicodeについて コードポイントとは 文字コードとは 今日覚えた単語その一。Unicodeに限…

Javaでequalsを実装するとき -失敗するとcontainsが動かない-

hashCodeはもちろん実装しましょう。 で、 public class 俺のクラス { private String ore; public 俺のクラス (String ore) { this.ore = ore; } public boolean equals(俺のクラス o) { return ore.equals(o.getOre()); } ...} ってやったらダメ。一見まと…

org.junit.Assert.assertEquals って

中で比較してんのは equals じゃなくて == なのね…ただしStringだけはちゃんと比較してる模様。

Linux上で稼動するTomcatが使用しているスレッド数の調べ方

ls -l /proc/{Tomcatのプロセス番号}/task | wc -l でOK 参考:Linux上で稼動するTomcatが使用しているスレッド数は?

GroovyでJUnit用のテストフィクスチャを宣言する を試してみたのだけど

結論から言うと、思ってたのとは違ったかも。 こちらの後半で触れたとおり、テストフィクスチャの外部セットアップをした場合、可読性があまりいけてないという問題を現在抱えておりまして、その解決法として、Groovyがよさそうだという事でTryしてみたいと…

JavaOne2013 総括 : JavaOne2013 レポート6 #j1jp

まだ何件かセッションのレポートを上げる予定ですが、先に全体の総括を書かせていただきます。各セッションレポートはこちらから。 なぜ今回JavaOneに参加したか 今年の自分のテーマの一つが「技術力」。昨年はどちらかと言うと、アジャイルやスクラムがおも…

Application Server, 仁義なき戦い : JavaOne2013レポート5 #j1jp

Simon Maple氏による、「CON4117:The Adventurous Developer's Guide to Application Servers」のレポートです。 とりあえず中身の前に外見の感想 いきなり映画のオープニング風味のムービーで始まった本セッション。 会場からアンケートをとってその場で棒…

Java8 Lamda式 改めて。: JavaOne2013 レポート4 #j1jp

Venkat Subramaniam氏による、「Programing with Lambda Expressions in Java」のレポートです。 本セッションはライブコーディング形式で、従来のコードがどのようにLambda式に置き換わっていくのかを解説していました。既に知っている人にとっては特に目新…

初めてのOSGi with Bandtools

Building Modular Cloud Applications in Javaのスピンオフ記事です。 OSGiがなんだかプレゼンを聴いてもよくわからない。ググってみたけど、英語を読んでも日本語を読んでもよくわからない。具体例が全然無い。 じゃあ仕方ない、自分でいっちょやってみっか…

Building Modular Cloud Applications in Java : JavaOne2013 レポート3 #j1jp

Bert Ertman氏とPaul Bakker氏による「Building Modular Cloud Applications in Java」のレポートです。オランダの方の模様。 最近、PaaS上でのJavaアプリ開発に携わっているので、Cloudという単語に反応して聴きに行ったのですが、Modularityという単語や、…

JAX-RSとJPAとEclipseLink JPA-RSとRESTfulなアプリケーション : JavaOne2013 参加レポート2 #j1jp

Dong Clarke氏による、「Practical RESTful Presistence」のレポート…というよりは、セッションを聞いてわからなかったことを調べなおしたレポートです。 今もっているプロダクトがRESTfulに近い(RESTfulではない)APIということもあり、RESTfulというタイ…

コミュニティ活性化のためにロゴが大事! : JavaOne2013 参加レポート1 #j1jp

本日より、JavaOne2013に(会社のお金で)参加させてもらっています。 記念すべき1件目の参加レポートは…Ryan Cuprak氏の「Organizing Your Local Community」。 なんでJavaOneまで行ってコミュニティなの!?というツッコミを受けそうですが、MeetUpの本場…