株式会社ユーザーローカル Google+ ランキング

Takao NakaguchiさんのGoogle+ Trends

Takao Nakaguchi

(Takao Nakaguchi) [Google+]
・サークルに追加されている数(Followers) : 1,305人
・国内順位 : 1,994位
Takao Nakaguchi - Google+

反応が多かった投稿ランキング

LOUDS++でけたー。... : 2013-01-31 01:03:25 共有 1人
LOUDS++でけたー。けど、LOUDSよりちょい遅い。こんなもんなのかな。メモリの最適化はこれからなんで、もっと小さくなるはず。 以下最新の結果。 トライクラス,(ms),(ms),(bytes) HashSet,333,450,135175768 TreeSet,410,263,137064928 PatriciaTrie,522,245,91792160 MapPatriciaTrie,493,253,103899744 TailPatriciaTrie(suffixTrieTail),1074,281,80765584 TailPatriciaTrie(suffixTrieTail,freezed),1040,279,55453280 TailPatriciaTrie(concatTail),486,245,70141696 DoubleArray,393,106,49031328 TailDoubleArray(suffixTrieTail),3126,189,29871488 TailDoubleArray(concatTail),2618,162,34571072 TailLOUDSTrie(suffixTrieTail),682,524,16333536 TailLOUDSTrie(concatTail),191,501,21033584 TailLOUDSPPTrie(suffixTrieTail),725,562,16329744 TailLOUDSPPTrie(concatTail),234,534,21026248 https://github.com/takawitter/trie4j

Java8 lambda... : 2013-04-15 20:26:43 コメント 5件
Java8 lambda&streamで書いた姓名判断updateした。 https://gist.github.com/takawitter/4770094 前回(b76)から今回(b85)でのJDKの変更点はこんな感じ。 * Stream.DownStreamとStream.explode無くなった。flatMap()使う(これが本来の使い方っぽい) * IntStreamのsum()の戻り値がintになった * IntStream.mapはIntStreamを返すものだけになった。Stream を返すのはmapToObj Stream とプリミティブ型Streamの区別がよりはっきりして、謎な変換しなくてよくなり、少しスッキリした。

https://gist... : 2013-02-12 23:25:56 コメント 1件
https://gist.github.com/takawitter/4770094 名前の組み合わせを列挙して姓名判断の計算をしてスコアの高い順に表示するプログラム書いた。Java8で使えるだけlambda使った。Javaに見えない。

Call for Pap... : 2015-04-28 16:35:39
Call for Papers.  Culture & Computing 17-19 Oct. 2015 http://www.ai.soc.i.kyoto-u.ac.jp/culture2015/index.html 今年は京大です。狂言の講演(英語同時通訳付き!)もあります!

https://gist... : 2013-07-14 12:58:26
https://gist.github.com/takawitter/5993052 リフレクションでメソッド呼ぶとIllegalAccessExceptionになることあるよねって話。仕事上は過去何度も遭遇してひらりとかわして来たけど、最近msgpack-rpcやScheme(kawa)で遊んだ時にも遭遇したので、どう解決するのがよさそうなのか少し調べてみた。 まずIllegalAccessExceptionになる原因だけど、これはMethodオブジェクトが複数あるから。 Runnable r = new Runnble(){ public void run(){} }; とした時に、r.run を呼ぶことができるMethodオブジェクトは2つある。一つはRunnable.class.getMethod("run")で取得できるもの、もう一つはr.getClass().getMethod("run")で取得できるもの(上記コード内で作られる匿名クラスから取得できるもの)。それぞれ、呼び出すコードはこんな感じ。 Runnable.class.getMethod("run").invoke(r); r.getClass().getMethod("run").invoke(r); 前者はどこで実行しても問題なく実行できるけど、後者は匿名クラスへのアクセスが許可されているクラス(要はpackageアクセス可能なクラス)以外で呼び出すと、IllegalAccessExceptionになる。 静的型付けされないスクリプト系の言語では、オブジェクトを頼りにメソッドを検索するので、後者をやる必要があり、必然的にIllegalAccessExceptionに遭遇する。 どうやって解決するのが良いのか、まず最初は、オブジェクトのクラスからメソッドを検索する(まずはそれしか手が無いし)。 オブジェクトのクラスから取得したメソッドの呼び出しでIllegalAccessExceptionが発生した場合、オブジェクトのクラスが実装しているインタフェースからメソッドを検索する。 見つからない場合、親クラスが実装するメソッドを検索していく。 メソッドが見つかれば、呼び出す。 見つからなければ、NoSuchMethodException投げとく。 クラスとその祖先が実装しているメソッドに関しては、最初のgetMethod呼び出しで一発でとれるので、親クラスやその上に対してgetMethodする必要はない。 また、インタフェースをimplementsする際はメソッドをpublic以外にできないので、呼び出し自体は必ずできるから、インタフェースを検索してメソッドが見つかれば、そこで検索を中断して良い。 ってことでこんな感じにしてみた。 https://gist.github.com/takawitter/5993155 ただ実際にはパラメータのマッチングが入るから、もっと複雑な処理が必要。 メソッド列挙して、メソッド名とパラメータの数があうやつ探して、各パラメータの型が引数と合うか見ていって、最終的に候補が1つだけなら呼ぶけど複数なら例外上げるなどなど。 まじめにやるとかなりめんどくさい。

DoubleArrayを... : 2013-02-05 02:27:36
DoubleArrayをMapっぽく使うべく、ノードIDに関連付けた値を持てる版(MapDoubleArray)を実装。SBVでインデックスを圧縮させたところ、130万件弱であれば10MBほどのメモリ消費で済んだ。 クラス,null,null, DoubleArray,445,108,48249052 MapDoubleArray,570,138,54401624 TailDoubleArray(suffixTrieTail),3052,193,28906616 TailDoubleArray(concatTail),2611,176,33625208 2番目のMapDoubleArrayがそれ。 VisualVMではObject[]が10MBほど食ってるけど、上の結果だとそれほどの差(DoubleArrayとの)が無いのはなんでだろ。 https://github.com/takawitter/trie4j

fluentd-java... : 2013-09-03 02:13:19
fluentd-java-loggerで任意のObjectをJSONとして出力するようにしてみた。 https://github.com/takawitter/fluent-logger-java/commit/25b05292b3f9d01b6b0565efb3fe9cfe0b2d4252 FluentLogger#logにMapでもObjectでもvalueがObjectなMapでも、よきにはからってくれます。 使い方はこんなん。 https://gist.github.com/takawitter/6415118

https://plus... : 2013-07-16 01:49:19
https://plus.google.com/101049791196889453404/posts/6jzw21Yq7z1 これの続き。 もう少しシンプルにして、こんな感じで良い。 対象オブジェクト、メソッド名、引数が与えられているとする。 1. 対象オブジェクトのクラスから、メソッド名、引数の型にマッチするメソッドを検索(Class#getMethod) 2. 見つかれば呼ぶ。見つからなければ5へ。 3. IllegalAccessExceptionが発生すれば、オブジェクトやその祖先が実装しているインタフェースに対して、メソッドを検索する。 4. 見つかれば呼んで終了。見つからなければ3のIllegalAccessExceptionを投げる。 5. 対象オブジェクトのクラスから、メソッド名、引数の型(もしくはその祖先)にマッチするメソッドを検索(Class#getMethodsの戻り値でループ)。 6. 見つかれば呼ぶ。見つからなければNoSuchMethodException。 7. IllegalAccessExceptionが発生すれば、オブジェクトやその祖先が実装しているインタフェースに対して、メソッドを検索する。 8. 見つかれば呼んで終了。見つからなければ7.のIllegalAccessExceptionを投げる。 ってことでこんな感じ。 https://gist.github.com/takawitter/6001449 上記5以降では候補が複数見つかる場合があるけど、コードでは最初に見つかったやつを呼んでる(その方が速いので)。ちゃんと曖昧性を検出して例外投げるべきって場合は適当に改造してください。

書いてる途中に更新ボタン... : 2013-07-14 12:22:29
書いてる途中に更新ボタン押したら書いてる内容消えた。

JavaScript(R... : 2013-07-01 02:01:46
JavaScript(Rhino), Groovy, Scala, Jython, JRubyで、ThreadPoolExecutor.submit(Callable task)にlambdaを渡す方法を調べてみた。 https://gist.github.com/takawitter/5895868 ThreadPoolExecutor.submit(Runnable task)も存在するので、普通にlambdaを渡すと曖昧性が取れないので、Callable を明示する必要がある。その方法が、各言語によって違うって話。

LZ77を勉強したので、... : 2013-05-19 17:12:26
LZ77を勉強したので、記事書きました。

scala2.11.0-... : 2013-04-15 03:00:34
scala2.11.0-M2のJSR223経由での呼び出し方やっとわかった。 ScriptEngine engine = new ScriptEngineManager().getEngineByName("scala"); ((BooleanSetting)(((IMain)engine).settings().usejavacp())).value_$eq(true); // 又は、System.setProperty("scala.usejavacp","true"); engine.eval("1 to 10 foreach { print(_) }"); いまいちスッキリしないな。

LOUDS++でメモリ最... : 2013-02-02 13:58:26
LOUDS++でメモリ最適化かけても、100KBくらいしか減らなかった。BVを2本にわけて、1本のselect用cacheを削っただけだから、まぁそんなもんか。 代わりに、Tail配列へのインデックスの保持に6MBも食ってるのがわかったので(4byte*150万ノード)、SBV使って減らしてみた。 クラス,null,null, TailLOUDSPPTrie(suffixTrieTail,arrayTi),822,563,15823752 TailLOUDSPPTrie(concatTail,arrayTi),219,535,20523240 TailLOUDSPPTrie(concatTail,sbvTi),281,746,16060280 concatTail,sbvTiが、Tail配列へのインデックスをSBVで最適化したやつ。 構築と照合両方の時間が増加したけど、ヒープは4.5MBほど減った。 SuffixTrie使ったTail配列はインデックスが単調増加にならないので、 この手法は使えない。


[Check your rank. あなたのランキングを調べる]

 Google+ Ranking
全国 : 1位- | 101- | 201- | 301- | 401- |
男性 : 1位- | 101- | 201- | 301- | 401- |
女性 : 1位- | 101- | 201- | 301- |
Global : 1st- | 101- | 201- | 301- | 401- |
北海道/東北 北海道 | 青森 | 岩手 | 宮城 | 秋田 | 山形 | 福島 |
関東 茨城 | 栃木 | 群馬 | 埼玉 | 千葉 | 東京都 | 神奈川 | 山梨 |
信越/北陸 新潟 | 富山 | 石川 | 福井 | 長野 |
東海 岐阜 | 静岡 | 愛知 | 三重 |
近畿 滋賀 | 京都府 | 大阪府 | 兵庫 | 奈良 | 和歌山 |
中国/四国 鳥取 | 島根 | 岡山 | 広島 | 山口 | 徳島 | 香川 | 愛媛 | 高知 |
九州/沖縄 福岡 | 佐賀 | 長崎 | 熊本 | 大分 | 宮崎 | 鹿児島 | 沖縄 |
携帯アクセス解析ツール | ソーシャルメディア解析 | 株式会社ユーザーローカル会社概要
Copyright (C) 2007-2024 User Local,Inc. All Rights Reserved.