IntelliJでRobocodeのRobot開発メモ

毎回忘れて色々試しては時間を食っている気がするのでメモ。 1. Robocode自体のインストール (See http://robowiki.net/wiki/Robocode/Download) 2. IntelliJで適当にprojectを作り、`Project Settings` -> `Modules (Dependencies)` に `JARs or directory`…

JVM Tool Interfaceを少しさわってみたメモ

ふと、JVM(TM) Tool Interface 1.2.3 に触れたことがないことに気がつき、少しさわってみたのでメモ。OpenJDKのソースコードの jdk/src/share/demo/jvmti の下に幾つか例があるので、それを試してみることに。ちなみに概要は上記URLのドキュメントの各APIの…

Rustを使ってPostgreSQLの拡張ライブラリ (FDW) を書いてみた話

というタイトルですが、具体的には "Rustで拡張ライブラリ全体を書いた" のではなく "Cで拡張ライブラリの本体を書いてその中からRustのライブラリを呼んで、非同期でRust側からの結果を取得" してます。ちなみに、Foreign Data Wrapper (FDW) とは、Postgre…

PostgreSQL内の外部テーブルをBIツールからアクセスできるように試みた話

この記事は Treasure Data Advent Calendar 2015 - Qiita の14日目の記事で、現在12/21です。なぜこの記事がTreasure DataのAdvent Calendarに入っているかというと、Treasure DataのDataTanksというオプションサービスでPostgreSQLが利用されているためちょ…

FluencyというYet another fluent Java loggerを作った話

この記事は、Fluentd Advent Calendar 2015 - Qiita の七日目の記事です。先日、komamitsu/fluency · GitHub というFluentd (in_forward) 用のJava loggerを作ってみました。元々、fluent/fluent-logger-java · GitHub の開発を見ていたのですが、Fluentd ML…

"Presto in Treasure Data" @ db tech showcase 2015 tokyo

という題で話をしてきました。 db tech showcase Tokyo 2015 | Insight Technology, Inc.www.insight-tec.com スライドはこちら。 Presto in Treasure Data from Mitsunori Komatsu www.slideshare.net

PrestoのPlan

Prestoのコードを眺めていて、com.facebook.presto.execution.SqlQueryExecution#doAnalyzeQuery内で生成されるPlanを見てみたかったのでPrestoのJVMをアタッチしてPlanクラスの中を覗いてみた。対象のクエリはこちら(catalogはtpch)。 select c.nationkey…

MessagePack v07とJacksonの文字列を対象とした性能比較

int cnt = 800000; { ObjectMapper mapper = new ObjectMapper(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); List<String> strList = new ArrayList<String>(cnt); for (int i = 0; i < cnt; i++) { strList.add("01234567"); } System.gc(); Thre</string></string>…

PostgreSQLのWITH RECURSIVE練習でフィボナッチ数列

PostgreSQLにはWITH RECURSIVE句というものがあって、これを使うと再帰的な問い合わせが可能らしい。で、一度も使ったことがなかったのでちょっと試しにフィボナッチ数列を生成してみた。 with recursive r(a, b) as ( select 0::int, 1::int union all sele…

ByteBufferへのコピー速度比較

JavaでByteBufferへのコピーを行う際の速度を簡単に比較してみました。java.nio.ByteBuffer#put(byte)で1byteずつ書き込んでいくのでなければ大体同じですね。 Heap上のbyte arrayをコピー java.nio.ByteBuffer#put(byte[], int, int) byte[] bs = new byte[…

TypeProfileが取得される場合、所得されない場合について

JavaではJITコンパイルに関連するTypeProfileという機構がありますが、これがどのような状況で取得されるのかちょっと興味があったので簡単に試してみました。komamitsu/TypeProfileTest komamitsu/TypeProfileTest · GitHubChildというinterfaceを継承するC…

JavaのEscape AnalysisでNoEscapeがGlobalEscapeになってしまうケースの検証

Java ™ HotSpot Virtual Machine Performance Enhancements Escape analysis is supported and enabled by default in Java SE 6u23 and later. ということで最近のJVMでは有効になっているEscape analysisですが、こんな記事を見つけました。Richard Burnis…

jackson-dataformat-msgpack

数ヶ月前から komamitsu/jackson-dataformat-msgpack というのを細々と作ってました。これは何かというと、 msgpack/msgpack-java at v07-develop · GitHub で開発が進められているMessagePack Javaのv0.7系の実装と FasterXML/jackson-databind · GitHub の…

chef-client実行時のエラーをHipChatに通知する方法

TreasureDataではエンジニア間のコミュニケーションツールとしてHipChatをがっつり使っているのですが、同じくTDで使われているchefのchef-client実行時のエラーをHipChatの部屋に流すようにしてみました。という小ネタ。Chefには About Handlers — Chef Doc…

コンパイル時に特定のAnnotationが付いているClassのmodifierをチェックする方法

先日、@ Messageのついたunpack対象のclassの定義に public staticとつけていないのが原因だった。— Kumazaki Hiroki (@kumagi) 2014, 2月 28 @komamitsu_tw これ、コンパイル時に怒らせる事ってできないんでしょうか。できないんですよねリフレクションだか…

Raspberry PiでFluentdを立ち上げてTDにデータを流してみた話

一ヶ月程前に同僚である @doryokujin 先生からRaspberry Pi(面倒なので以下Pi)を頂いたのだけど、Piに必要なSDカードが手元に無くてすっかり放置していたのですが、満を持してSDカードを買ってきたのでちょっとPiを立ち上げてみた。という話を備忘録的に。…

fluent-logger について

こんにちは。Fluentd Advent Calendar 11日目担当の @komamitsu です。ワイワイ。Fluentd Advent Calendarにノリで登録したもののfluentd本体やプラグインに余り関わっていないので途方に暮れていましたが、fluent/fluent-logger-java のメンテナンスをして…

OCatraをLwt使うようにした

OCatraをいろいろ直したり、ベンチマークとってみたり - komamitsu.log で作っていたOCamlのおもちゃ的Webサーバー OCatraをLwtを使うように修正してみた。 1st 2nd 3rd 4th Ave. OCatra (byte) 4238 4424 4299 4285 4311 OCatra (opt) 11806 12384 12381 12…

Androidでのnew String(byte[])とCharsetDecoder.decode()の違い

byte[] -&gt; String 変換のパフォーマンス、とAndroidでCharsetDecoder#decode(ByteBuffer in).toString()が遅い件 - komamitsu.log でAndroidではnew String(byte)の方が速い結果が出たので[https://github.com/OESF/OHA-Android-4.0.3_r1.0:title=コード]…

byte[] -> String 変換のパフォーマンス、とAndroidでCharsetDecoder#decode(ByteBuffer in).toString()が遅い件

Android上でMessagePackのベンチマークコードを動かしつつprofile取ってみたら、msgpack-java/src/main/java/org/msgpack/unpacker/StringAccept.java at master · msgpack/msgpack-java · GitHub辺り(CharsetDecoder#decode(ByteBuffer in).toString())で…

型変換テンプレートで変換する際、中間オブジェクトを生成しないようにした

Android上でJSONとMessagePackの簡単なベンチマークをとってみた - komamitsu.log の続き。http://syuki.skr.jp/files/201204041/furuhashi-master-last-iso-pdfa.pdf を読んだところ、Unpacker.read(Class)は中間的な動的型付けオブジェクトを生成しないと…

Android上でJSONとMessagePackの簡単なベンチマークをとってみた

使ったコードはこちら => https://github.com/komamitsu/AndroidMsgpackBenchmark/blob/master/src/com/komamitsu/android/msgpackexample/MsgpackExampleActivity.javaベンチの概要としては、100byte x 50000の配列、100byte(value) x 30000の辞書をJSON, M…

quicksort

今日はコード書いて無かったので何となくクイックソートを。

Boyer–Moore string search algorithm

実装したことが無かったなぁ、とふと思ったので、ちょっと書いてみた

merge sort

C

あまりに最近Cを書いてないので適当にマージソートでも書いてみたら、やはりスラスラかけなかった件について。

NewstreamをWebViewからListViewに変更

まとめ系ニュースを、さらにまとめて眺める系アプリ作った - komamitsu.log で作ったときはサーバー側でHTML作って、Android側ではWebViewで表示させていたのですが、どうにももっさりしていたので、えいやとListViewに書き換えました。手元の古のIS06ではか…

読んでおきたい記事メモ

http://android-developers.blogspot.jp/2011/06/new-editing-features-in-eclipse-plug-in.html http://android-developers.blogspot.jp/2011/05/introducing-viewpropertyanimator.html http://android-developers.blogspot.jp/2011/03/identifying-app-in…

まとめ系ニュースを、さらにまとめて眺める系アプリ作った

https://play.google.com/store/apps/details?id=com.komamitsu.newstream ちょっとした暇なときに、カジュアルなニュースを流し読みできるアプリです。 発言小町、知恵袋、はてなブックマーク、NAVERまとめの最新情報をまとめて読めます。 元々、AppStoreの…

テトリスっぽいけどテトリスじゃないアプリを作った

https://play.google.com/store/apps/details?id=com.komamitsu.pentaris以前作ってみたテトリスアプリは This is a notification that your application, Ketris (Tetris clone), with package ID com.komamitsu.ketris, has been removed from the Google …

[ocaml] OCamlでLispのサブセットっぽいのを作ってみた

https://github.com/komamitsu/OCaml-minilisp先日、仕事が一区切りついてボーッとしていたところ、「そういえばLisp系の言語に疎いなぁ自分」とふと思ったので、簡単なLispのサブセットを作ってみた。いま見ると文法的にはSchemeぽい。 こんな感じでREPLし…