Kengo's blog

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

プログラミング

オブジェクト指向か関数型か、という話題に私達はどう接するべきか

私がコードを書くときには「オブジェクト指向でいくか、それとも関数型か?」みたいなことはほとんど気にしていません。特にオブジェクト指向については人によって定義から違うこともままあるため、この手の議論がとても遠回りになることも多いと感じます。 …

個人サービスやOSS開発の保守運用から何を学んだか

ホビープログラマいいよね(ポジショントーク https://t.co/bkf6Nlnoxx— ㊗転剣アニメ化! (@Kengo_TODA) September 14, 2021 というようなことを私はよく主に採用の文脈で口走るのですが、ちゃんと内容をまとめておこうと思ったのでメモ。特に保守運用を経…

2020年のFOSS活動状況まとめ

昨年のに引き続きFOSS活動状況をまとめます。2020年12月21日時点の情報です。 概要:昨年比23%増 GitHubのプロファイルページによると今年のpublic contributionsは1,440で、昨年が1,166だったので約23%増です。commit 69%のpull requests 16%なので、引き続…

考察:Reactive Workflowが生まれた背景とその狙い

人に説明するのがスムーズにできなさそうなので、理論武装というか順序立てて話すためにこの記事をまとめる。 対象 ブラウザから利用するマルチプラットフォーム向けウェブアプリケーションの開発 モバイルのネイティブアプリ開発は含まない(知らないので)…

2019年のFOSS活動状況まとめ

昨年のに引き続きFOSS活動状況をまとめます。2019年12月30日時点の情報です。 概要:昨年比22%増 GitHubのプロファイルページによると今年のpublic contributionsは1,166で、昨年が950だったので約22%増です。commit 61%のpull requests 21%なので、けっこう…

selenium-jupiterを試した

JUnit 5にTemporalyFolderに相当する機能がなかったため、自分のプロジェクトでは長らくJUnit4を使っていました。しかし5.4でTempDirが来たため、徐々にJUnit5に置き換えています。 その過程でSelenideを使った統合テストをJUnit5に置き換えたのですが、sele…

2018年のOSS活動状況まとめ

GitHubによると、今年は合計950 Contributions(25日時点)でした。仕事でほぼ使ってないのにこの数字というのは、多いのでしょうか少ないのでしょうか。 私は2018年にGitHubで927コントリビュートし、Findy内で1412位でした。月間の最大は154 (7月)、一日あ…

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重のネストがコードに現れるようになった。 本…

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

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

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 動かしてみた…

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…

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…

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

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

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

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

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…

スキル差の存在を前提としたJava開発の私の理想

スキルの低い人が生産性における問題ならその人を何とかするのが根本解決だよねと話したら、人に強要することなんてできないじゃないですかーという反応をいただいた。 これはすごく的を射たもので、チームを引っ張ってモノづくりをするうえで・チームを引っ…

How to use UserValue to implement FindBugs plugin

UserValue is a good way to mark local variable. By this marking, you can chase item or classify type of item. To use operand stack, your detector should extend OprandStackDetector or its subclass. OprandStackDetector OpcodeStackDetector#ge…

When we need to divide small class into 2 classes

3~4 years ago, I divided code into some classes which has own responsibility. Now, I have got another option, dividing into some classes which has 1 processing. 1 class which has 1 responsibility and 2 processing Imagine that how to code a…

間違い探しゲームをアップデート

間違い探しゲームのバージョン2を9leapで公開しました。バージョン1には全くといっていいほどゲーム性が無かったので、大幅なテコ入れを図っています。1分で何回間違いを探せるか?というシンプルなルールなのですが、短い時間で楽しみやすい仕上がりになっ…

eller86のオンライン活動総決算2011

はてなブログにエントリを書きました。はてなブログにはまだTwitter連携機能がなさそうなので、こちらのブログからリンクを貼っておきます。 eller86のオンライン活動総決算2011 - eller's blog はてなブログはこざっぱりしていて好印象ですが、WYSIWYGはち…

RequireJSによるコードの分割と最適化 for enchant.js

enchant.jsプログラミングでRequireJSを使うとなにが嬉しいの?どうやって使うの?という話。最初はenchant.jsをCommonJS/Modulesに合うように書き変えなきゃダメだと思っていたんですが、そんなことはないんですね。これは便利。 何が嬉しいの? 開発時には…

JVM用KEMURIインタプリタとコンパイラを実装

最近JavaScriptばかり書いていたためか無性にJVMと戯れたくなったので、KEMURIの実行環境を作成しました。 eller86/JKEMURI · GitHub 単なるインタプリタとJavaのclassファイルを生成するコンパイラがあります。インタプリタは以前実装したことがあるのです…

eller86のpatch近況

最近ここにpatch送った記録を残していなかったので、まとめて。issue報告も混ぜてます。 node-esc Issue #1: `require('esc')` throws "Cannot find module" · pvorb/node-esc · GitHub 1つめはHTMLエスケープを行うNodeのモジュールがインストールできない…

メモ・複数のJS/CSSをRequireJSでひとまとめにする

RequireJSをちゃんと調べたらbrowserify以上に自分の目的に近かった。UglifyJSでのコード短縮なんかも処理してくれるし。assets埋め込みなどの処理を挿し込むのはちょっと無理っぽいので、そこは泥臭くやる必要がありそうだ。 REQUIREJS OPTIMIZER REQUIREJS…

メモ・NodeでHTMLファイルにJSファイルを埋め込む

HTML5ゲーム開発環境構築支援ツールを作った件の続き。通信回数削減という名目のもとで、HTMLにJSファイルを静的に埋め込む方法について調査する。試した環境はMac OSX Lion(10.7.2)のNode v0.4.12。 ちなみにこの「埋め込み」がNodeに適した処理かどうか…

Guavaをどっぷり紹介(I/O編)

イヤホンを新調したら雨夢楼と光のストライドがきれいに聴こえて嬉しいeller86です。洗濯機でイヤホンを洗濯してしまったときは絶望の淵に立たされていた気がしますが、あの絶望がこの喜びにつながるとは一体誰が想像したでしょうか。 さて前回のGuava紹介記…