Kengo's blog

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

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開発もほそぼそとではあるものの勤務時間でできてますしね。コードの読み書きはまだまだ不足し…