Subscribed unsubscribe Subscribe Subscribe

Kengo's blog

Technical articles about original projects, JVM, Static Analysis and JavaScript.

FindBugsコミュニティにおける例の件の顛末、そしてSpotBugsとは何か

先週、FindBugsのメーリスに興味深い宣言が流れました。今のFindBugsはメンテ困難であり現体制での継続保守が難しいとするものです。 ただこれをもってFindBugsはおしまいだ、としてしまうのはちょっと違います。コミュニティ自体はまだ活発で、プロジェクト…

MSAキャッチアップ用プロジェクトを作りました

MSAは理屈が多く、手を動かさないとわからないことが多すぎるので作りました。 GitHub - KengoTODA/brownie: A distributed video converter ついでに非同期I/OとサーバサイドReactiveを学ぶためにVert.xとRxJavaを採用しています。Spring Framework 5は別で…

RxJavaはVert.x 3でSQL書くのに便利

自分にとっての新技術を試すための個人プロジェクトでVert.xを使っているのだが、PostgresクライアントがTechnical Previewになったのでオンメモリに乗せていたデータをpostgresに乗せるようにしたところ、2重3重のネストがコードに現れるようになった。 本…

Impact of error-prone

Findbugs is really good solution to improve quality of code As an author of findbugs-slf4j, I really love Findbugs. It lets us find problems by static bytecode analysis. This tool improves quality of each module, reduce reproducing known b…

エラーログと例外の扱いについて

社内勉強会向けに作成したエラーログと例外の扱いについて説明したスライドを、Speakerdeckで公開しました。一部社内特化部分(ログレベルポリシーやMSA向けMDC使用法 など)を削除して、口頭で補足した部分を補っています。 これらの理想的な使い方はシステ…

docker-composeで開発環境を配布する

上海Microsoftで行われたShanghai Docker MeetupのLTにて発表した、docker-composeを使って開発環境をContributorに対して配布するというユースケースに関するスライドをSpeaker Deckに公開しました。 Partake開発の際はVagrantで開発環境を配布していたので…

コード内コメントとJavadocの書き方

社内勉強会向けに作成したコード内コメントとJavadocの書き方についてのスライドを、Speaker DeckとSliDeckで公開しました。 このスライドは概要とメリットについてざっくり説明し理解と学習の動機を作ることを目的としていますが、これは日本ないし中国の大…

(メモ)クラスタ管理関連

etcd KVS Leader/Follower Raft fleet Deploy Service Discovery Hashicorp Consul CP needs several nodes as server per Datacenter each nodes in Datacenter installs Consul agent Hashicorp Serf AP is used by Consul Docker Compose Define set of c…

Guava Release19がそろそろ来そう

現時点でRC2まで出ています。 Release19 · google/guava Wiki · GitHub 個人的に興味深いのはCharMatcherにファクトリメソッドが導入された理由。staticフィールドだとクラス初期化時に初期化されなければならないが、ファクトリメソッドならメソッド実行時…

SLF4Jの使い方をfindbugsで自動検証する

今日、拙作findbugs-slf4jのGitHub Pageを作りました。このブログではこのプロジェクトについて日本語で紹介したいと思います。 概要 拙作PMDプラグインをもとに、2012年8月から実装を開始したfindbugsプラグイン SLF4J利用時のよくあるトラブルを未然に防ぎ…

Mirror repositories for developer in China mainland

In China mainland, default repositories are not so useful because of bad network latency. Instead of them, we should use following mirrors for better productivity. Maven central 开源中国 Maven 库 gem RubyGems 镜像 - 淘宝网 npm 淘宝 NPM 镜像

How I find and learn new technical things

Sometimes my teammates ask me about how to find and learn new technologies. It would be common question for technologist and developers, so I will try to summarise current my theories. How to find new technologies RSS (articles) RSS is sti…

Googleのアサーション用ライブラリTruthを試してみた

Guavaのテストコードを読んでいたらTruthというtesting frameworkが使われていることに気づき、最新の個人プロジェクトで使ってみました。まだアルファ版ですし、自分でも使い続けるかどうか微妙なところですが、試用記録として利点をまとめます。 なお著者…

Is OKR included in MBO?

I've read How Google Works. And now I'm interested in OKR (Objective and Key Results), which is explained in this book. It is really similar to MBO (Management By Objective). I'm learning MBO for five years, and I feel that OKR might give …

How to track state of operand stack by FindBugs 3.0.1

Yesterday I released findbugs-slf4j v1.2.0, which supports more useful analysis based on OpcodeStackDetector. Here I will summarize my problem and solution. What is TOP? Problem is that my detector could not track state of OpcodeStack, bec…

昨今のメソッドの命名方法事情まとめ

一時期はメソッド名は動詞で始まらなければならないと言われていましたが、昨今ではJava標準APIでも動詞ではないメソッド名が散見されます。本エントリではその傾向をまとめます。 of, from(from, of, valueOf, fromString, fromNullable etc.) fromやofは…

JavaのStreamで末尾再帰

JavaのStreamで末尾再帰するというアイデアが今読んでるFunctional Programming in Javaで紹介されていた。 The Pragmatic Bookshelf | Functional Programming in Java agiledeveloper: Functional Programming in Java is quite Approachable 動かしてみた…

CI用語を使わないJenkins入門

Jenkinsの使い方と狙いについて話す機会があるので、自分の考えをまとめる。 時間節約と内容簡素化のため、CIとJenkinsとを分けて説明するのではなく、開発者なら共感できるであろう表現によってJenkinsとCIの双方を説明することを目指す。なお「品質」の定…

How to upgrade Jenkins plugin to support latest LTS (1.596)

Today I've updated my Jenkins plugin, to support latest LTS version. Comparing regression-report-plugin-1.2...regression-report-plugin-1.3 · jenkinsci/regression-report-plugin · GitHub This article will explain what we should do to support…

Gitbook v2.0.0で日本語書籍を書くときの落とし穴と回避策

Gitbookの多言語対応はまだ弱く、日本語で書籍を書く際はいくつか対応が必要です。 しかし文字化け等はないため、Markdownに慣れている人であれば充分に活用できる製品になっていると思います。 文中の意図せぬ空白 文中の改行が空白に変換されてしまうため…

7年働いた時点での私の仕事の極意

最重要 実行に重きを置く やらないで後悔するよりも、やって反省する。 反省は成長を産み生産的だが、後悔は精神の無駄な消費。 時間は有限で貴重な資源だが、たぶん今の段階では行動する前に得るものや結果を予測するのは難しい。 正しい反省の方法とは何か…

The Art of Enbugging

I've read The Art of Enbugging (PDF) by Andy Hunt and Dave Thomas. This is little long, but good article to share your topic with teammate. If you're trying to improve maintainability of your product, it will help your communication. I fee…

When/How to use goog.ui.Component#makeId()

goog.ui.Component#makeId() is a helper function to generate ID for DOM elements. Let's start discussion based on sample component which contains following DOM: <form> <div> <input type="text"> </div> <button type="submit"> </form> To implement createDom() method, we may need to decide ID for each el…

goog.Promise の使い方

日本語情報少ないので。 Promiseとは? こちらをご覧ください。 JavaScript Promises: There and back again - HTML5 Rocks Promiseオブジェクトを作る newを使ってコンストラクタを呼ぶだけです。このとき、引数に関数をひとつ渡してやる必要があります。こ…

Tips to accelerate your original game

To make your game more interesting, you should pay much attention to keep high performance. This is UX problem, but it is not designer who can solve. Only developer has solution for this problem, so we should learn about when we face probl…

Intel Edisonを購入した

Intel Edison Breakout Board Kitを淘宝网にて515人民元で購入。当然ながら技適マークは無いです。 まずは以下を試験実施。 IntelEdisonStartOSX – スイッチサイエンス IntelEdisonOpkgFeeds – スイッチサイエンス wget, python, node が動くことを確認。 翌…

goog.ui.Componentの継承で気をつけるべきこと一覧

基本 Google Closure LinterとGoogle Closure Compilerを必ず使う コンポーネントツリーをシンプルに保つ(参考資料1 参照) インスタンスの状態 クラスフィールド(static変数)にインスタンスの状態を入れない。 インスタンスフィールドはprivateにする。 …

memo: RabbitMQ

Type of job: Persistent or Real-time? Persistent: sending mail (account registration, changing password etc) Real-time: Pre-loading (to load data in the next page onto cache) see 'Reliability' at official feature list Naming for Queue/Exch…

最近読んだマンガ

シャーリー 2巻 (ビームコミックス)作者: 森薫出版社/メーカー: KADOKAWA/エンターブレイン発売日: 2014/09/13メディア: コミックこの商品を含むブログ (29件) を見る まさかの2巻発売ということで、早速Kindleで入手しました。シャーリーがカフェに行く話が…

最近読んだ本

今日は日曜日ですが中国では出勤日です。国慶節に向けて休日の移動が発生しているのですね。 さて最近読んだ本の紹介です。電子書籍中心の生活をしていますが、これらはまだ紙の本での入手でした。こういう本も電子化されると、私みたいに海外で暮らしている…

memo: JavaScript AST

Library http://esprima.org/ https://github.com/substack/node-burrito (not maintained) Blog (Japanese) 最小最速で作るaltjs - mizchi's blog カジュアルJavaScript AST 2012-10-29のJS: JavaScriptパーサ Esprima 1.0.0、Orion 1.0、大規模CoffeeScrip…

memo: Non-blocking I/O on JVM

Netty http://netty.io/ http://netty.io/wiki/index.html http://netty.io/wiki/user-guide-for-5.x.html http://netty.io/wiki/developer-guide.html Vert.x http://vertx.io/ http://vertx.io/docs.html http://vertx.io/manual.html Related Java NIO Bu…

Closure Library でカタいクラスを実装する

ここではカタいクラス=フェイルファストで、コンパイル時に問題を発見しやすく、かつ保守しやすいクラス と定義する。 基本的には goog.ui.Component あたりを読むと勉強になる。もちろんネームスペースでユーティリティメソッド群を実装する場合にも通じる…

We've got married

We've got married at 1st/July/2014. Check my post at Facebook for detail: https://www.facebook.com/kengo.toda/posts/666262230115772 I guess everyone has doubt about why we were bone. My answer for this question is creating and maintaining …

How to migrate Java 7 with Guava to Java 8

replace Optional with java.util.Optional replace import com.google.common.base.Optional; with import java.util.Optional; replace Optional.fromNull() with Optional.ofNull() replace Optional.absent() with Optional.empty() replace Optional.tr…

経験の少ない技術者にどのような気付きの機会を作るべきか

チームで仕事をする上で気づきの機会を提供することが大切であると考えているのですが、では新人の技術者には何を気づかせるべきなのでしょうか。基本的には以下だと考えています。 目的を忘れないこと コミュニケーションの大切さとその理由 作ったものがど…

複数の公用語がある国で店舗がどう工夫しているか

シンガポールは英語・中国語・マレー語・タミル語の4つの公用語があります。しかし、だからといって全ての表示が4ヶ国語で行われているわけではありません。シンガポール人が話せる中国語と、シンガポール人の一部と海外からの労働者が話せる英語の、2言語を…

FindBugsのバグパターンをMavenでビルド&テストする

以前の記事はFindBugsバグパターンの実装方法を試行錯誤している最中に作成したものでしたが、今回はその結果どのような開発手法に行き着いたかをまとめます。Mavenベースです。 前提 findbugs.xmlをsrc/main/resourcesに置いてしまうと単体テスト実行時にエ…

Working Effectively With Legacy Japanese

I think this ↑ is what we need. It should contain following sections: He said 'You should be willing to go through struggles', what does it mean? Why he said 'You should be punctual' but I cannot understand it. Why he loves drinking after …

my favourite 2 atom plugins

Atom is a text editor which is developed by GitHub. I have been invited by @justlaputa, and use it to rebuild my web site. tabs-to-spaces It's unbelievable but by default Atom doesn't have option to use spaces instead tabs. To replace all …

今年の目標の振り返り

3ヶ月間、長期休暇を除いて自宅で趣味プログラミングをしないことを徹底してきました。 移動時間にRSSを読んだりSNSで流れてきたURLを踏んだりといったことはしましたが、基本的には目指していた活動は達成できました。 浮いた時間は何になったのか 空き時間…

多文化拠点での覚悟について

経験のまとめ。 結論 個人に目を向ける。言語や人種を言い訳にしない。やるべきことは日本でも海外でも一緒。 持っている前提条件(背景、文化、知識、常識)が大きく異なるので、伝えていることが伝わっているかひとつずつ検証していくことが大切。 知見 「…

VIAテストで考える天職

サラリーマンの悩みのほとんどにはすでに学問的な「答え」が出ているを読んで、VIAテストをやってみた。 http://t.co/yI9SlvWf5o said that my strengths are love, critical thinking, creativity, industry and humor. Humor! pic.twitter.com/5kuaP08CTv—…

自宅での趣味プログラミングを禁止してみて

2ヶ月経ちましたが、結構いい線行っているのではないでしょうか。 情報収集は通勤時間(20分)でのRSSとSNSの確認でまかなえています。もちろんPocketも活用。OSS開発もほそぼそとではあるものの勤務時間でできてますしね。コードの読み書きはまだまだ不足し…

OSSコントリビュータとしての私の歴史

来週木曜日、@ikeike443 さんに教えていただいた以下のイベントに参加します。 Developers Summit 2014:【13-E-1】OSSコミッタ大集合 で、話す前に考えをまとめとかなきゃーということでこの14年弱で起こったことや感じたことをまとめておきます。 フリーソ…

私は何がやりたいのか、あるいは何がやりたくないのかという話

最近「で、君は何をしたいの?」という問いをいただきます。やりたいことややりたくないことは社会人としての6年間で変化があったので、これを期にまとめておきます。 学生時にやりたかったこと 学生時代に今の会社を選んだ理由は3つあります。 ユーザ数が多…

素人がまとめる出汁について

素人がまとめる出汁の話 和食の基本である出汁について今知っていることをまとめ、次に何に挑戦すべきかを考える。 合わせ出汁はなぜ美味しいのか アミノ酸(グルタミン酸)と核酸系うま味物質(イノシン酸やグアニル酸)には相乗効果があるから。 以下は日…

今年の抱負

今年はひとつの仮説をもとに違う生活習慣を試したいと思います。変更点はただひとつ:長期休暇を除き、自宅で趣味プログラミングをしない。趣味プログラミングにはコーディングに加えてコード読みやRSS消化、はてブ閲覧やメーリングリスト確認も含めます。他…

My acts on the WWW in 2013

I will summarize my online actions in this year. Old articles are below: My acts on the WWW in 2011 (Japanese) My acts on the WWW in 2012 personal products I have released several personal products, and 4 of them are important to explain m…

ウェブアプリケーションサーバでよくあるクラスローダのトラブル

これはJ2EE Advent Calendarの25日目の記事です。昨日の記事はnobuokaさんによるJava Persistence API (JPA) 実践入門でした! 本記事の趣旨は、developerWorksのクラスローダーとJ2EEパッケージング戦略を理解するに書いてあることをコードで確かめようとい…