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し…

OPAMでインストールしたパッケージがocamlfindで見つからない件

OPAMいいですね。http://d.hatena.ne.jp/wistery_k/20120909/1347164530 の記事を見て使い始めましたが、道具としてのOCamlが何かの壁を乗り越えそうな感じがしてます。で、使っていて、たまにocamlfind -listの中にopamでインストールしたパッケージが出て…

sendBroadcast()のコスト

極端な話、普通のメソッド呼び出しとどの程度違うのか、と気になったので試してみた。 package com.komamitsu.bench; import java.util.concurrent.Executors; import android.app.Activity; import android.content.BroadcastReceiver; import android.cont…

リクルートコミュニケーションズの採用情報のところにあった問題

http://rikunabi-next.yahoo.co.jp/company/cmi0089954001/nx1_rq0008861224/ 「相手の思考を推理する」過程をプログラムで表現する問題です。 開発言語は問いませんので、慣れ親しんだ開発環境をご用意ください。 A, B, C の3人が 1〜5の5枚のカードを使っ…

MediaElement.jsを使ってみたメモ

http://mediaelementjs.com/眠いのだけども、READMEのままやったらはまったので素っ気なくメモを。 1. githubからcloneするとbuildディレクトリの下にjs, cssとかあるので、その中から以下のファイルをpublicなところにコピー flashmediaelement.swf mediael…

AndroidでTesseractを使ってみた

http://code.google.com/p/tesseract-android-tools/ を使うとAndroidからでも簡単にOCRれるみたいなので、夏休み中で時間もあることだし試してみようかと。ビルドの仕方はREADMEに書いてある通りに以下のようにすればOK cd <project-directory> wget http://tesseract-ocr.goog</project-directory>…

OCatraをいろいろ直したり、ベンチマークとってみたり

komamitsu/OCatra · GitHub のkeepaliveまわりのバグとかを直したり、モジュール名を変更したりしました。Eventモジュールを使ってすっきり書いた方が良さげだなぁとか思っているのですが、現状そんなにややこしい制御をしていないので、まぁいいかと。あと…

OCatraを短くかけるように修正

SinatraっぽいOCatraを書いてみた - komamitsu.log で作ったOCatraですが、もうちょっとすっきり書けるように修正。 open Ocatra open HttpCommon open HttpCommon.HttpContent let _ = get "/" (fun r -> say (TextPlain "Hello, World (GET)") ()); post "…

SinatraっぽいOCatraを書いてみた

先日、やっつけのWebサーバーを書く際にRubyのSinatraで書いてみたのですが、「簡単に書けて良いな〜」と思ったので、OCamlでもそれっぽいものを適当に作ってみました。komamitsu/OCatra · GitHub現状はこんな感じでかけます: open Ocatra open HttpCommon o…

テトリスっぽいやつに自動保存機能つけた

テトリスっぽいゲーム作った - komamitsu.log で書いた Not Found なんですが、アプリを終了させると(というか画面を閉じるだけで)、次はまた最初からになってしまうのが嫌だったので自動的に保存する機能を付けました。で、アプリスタート時に続行可能に。

テトリスっぽいゲーム作った

https://play.google.com/store/apps/details?id=com.komamitsu.ketris以前、ちょっと時間が空いていた頃、SurfaceViewの練習がてら適当にブロックを書いて動かしてたらテトリスになったので、ちょこちょこと手を加えてそれっぽくしてリリースしました。途中…

error: gnutls_handshake() failed: A TLS packet with unexpected length was received

git

とあるgit repositoryからgit cloneしようとしたら以下のエラーが出てしまいました。 error: gnutls_handshake() failed: A TLS packet with unexpected length was receivedで、どうしようか、というメモ。 まず、どうやらgnutlsがエラーを出しているみたい…

MediaPlayerでerror (1, -2147483648)が出る件

エラーが発生しても数字をボソっとlogに呟くだけで有用な情報を教えてくれないことに定評があるAndroidのMediaPlayerですが、Player画面を終了しようとすると表題のエラーがこそっと出ていることがあります。大抵、再生の停止時なので、あまり影響がなく放っ…

support v13を使うプロジェクトのビルド(with maven-android-sdk-deployer)

mavenでAndroid projectをビルドする際、support v13を使っている場合にちと困ります。というのも、http://search.maven.org/ にはまだ、support v13のartifactが無いのですね。で、そんな場合、mosabua/maven-android-sdk-deployer · GitHub を使って解決で…

Trait as Stackable modifications : Another pattern

Programming in Scala に Stackable Trait Pattern が載っている => Code Examples for Programming in Scala 。でも、これだとインターフェイス的な意味合いで abstract class を使っている気がして、素人ながらちょっと違和感を感じた。そこで、thin inter…

class内のメソッドだと末尾再帰最適化してくれない?(objectのメソッドだとOK)

コップ本をざっと読むと素直に末尾再帰呼び出ししていれば最適化してくれるという記載があって、また、Web上の情報を見るとできそうな雰囲気なんだけども、手元で試したらちょっと意外な挙動があった(2.9.1)。class内に末尾再帰呼び出しをするメソッドを作…

Android Emulator Plugin を試してみた

Android Emulator Plugin を Plugin Managerからインストールしてみて、適当にいじってみた感をつれづれと。Job -> Configure から "Run an Android emulator during build" 辺りを設定していけばそれっぽく動く(詳細は上のURL参照)のだけど、デバイスが見…

Jenkins + MavenでAndroid projectをbuild

割といたるところで実践されているネタだとおもうのでアレなのですが、まぁ色々とハマったところもあり、せっかくなのでメモっておこうかと。 Jenkinsを動かすremote serverは以下のとおり。 $ cat /etc/redhat-release CentOS release 6.2 (Final) $ uname …

Jenkins + Maven で Android test project を build & test

Test project も Jenkins上で build & test できたので、忘れないうちにメモ。とはいえ、力つきそうなのでザックリと。 Android test projectの作成(local PC) やりかたは色々あると思うけど、今回は まず、Eclipse上で、Android test projectを作って 以…

"This pack was just installed, or is missing or broken. Please restart Zope"

う〜〜ん、ここにメモることのほどか微妙だけども、悩むくらいならメモっとこうかと。ZenossでZenPacksの追加とか削除をしているとAdvanced > ZenPacksに表題のエラーが表示されることがある。そして、(よくわからないけどもおそらく)ZenPacksに依存してい…

ScalaのTraitをjavapしてみたメモ

Traitがどんな感じでJavaのバイトコードに落ちているのか興味があったので試してみた。 komamitsu@carrot ~/lab/scala/traitsample2 $ scala -version Scala code runner version 2.9.1.final -- Copyright 2002-2011, LAMP/EPFL Hello.scala trait T1 { val…