タグ

ブックマーク / kanatoko.wordpress.com (4)

  • Hadoopのセカンダリソートを避け、より高速に値をソートする方法

    HadoopのReduceに渡されるのはキーと値のリストだが、このとき値のリストに含まれる各アイテム(値そのもの)はソートされていない。ソートされていて欲しい場合にはセカンダリソートと呼ばれるテクニックを使うのが定石とされているが、これは実装の面でも概念的な面でもバッドノウハウ的な側面がある。Hadoopには「キーをソートする」機能は実装されている。そこで、値をキーに入れてしまい、このHadoopに備わっている「キーをソートする」機能によって、実質的に値をソートしようというわけだ。 Map/Reduceというのはキーごとにデータを分割して処理する方法なので、「キーに値が入ったら分割がおかしくなるんじゃ?」と思うのは当然である。キーに値が入っていても、分割に影響しないよう、Partitioningクラスを自分で拡張し、分割の基準となる値(来のキー)には、値の影響が出ないようにするのだ。それ

  • Perlは本当にオワコンなのか調べてみた

    Perlは、日国内では私と同年代(30代後半)の人を中心に、相変わらず人気があると思う。 しかし、私がよく見ているStackOverflow/DZone/InfoQ辺りでは、確かにこの数年はあまりPerlを見かけないという感覚があった。 そこで、Googleで『Perl site:stackoverflow.com』『1年以内の記事』のような感じで、いくつかのプログラミング言語の検索結果の件数を調べ、グラフ化してみた。 (;´Д`)…

  • Androidアプリケーションのリバースエンジニアリング

    [PR]株式会社セキュアスカイ・テクノロジーAndroidアプリケーション診断 結論を先に書くと、Androidアプリケーションのリバースエンジニアリングは非常に簡単である。理由は大きく2つあり、一つはそれがJavaアプリケーションであること、もうひとつはAndroidがオープンソースであることだ(ただしJNI等を使ってC++やCのコードなどを呼び出している場合には、下層のモジュールの解析は通常のCアプリケーション同様に面倒ではないかと考えられる)。 Androidアプリケーションは.apkという拡張子でファイル単体で配布されるので、まずそれを用意する。筆者はAppMonsterというツールを使っている。このツールだと簡単にSDカードにapkファイルを保存してくれる。このエントリでは例としてテスト用のアプリケーションであるandroid1.apkを使用する。 apkファイルはZIP形式の

    Androidアプリケーションのリバースエンジニアリング
  • ext3/ext4とプリアロケートの話

    MongoDBをext3とext4でベンチマークしてみたらext4が圧勝だった あたりに関連する話。(ちなみに筆者の環境ではext3でMongoDBを動かしてしまっているため、悲しいことにファイルのアロケーションが起こる度に実質MongoDBがフリーズするような状態になるが、まぁ、だましだまし運用している状態) ext3について、プリアロケートに時間がかかるというのは、必ずしも悪い話ではない。zeroで上書きしているため、ファイルシステム上に(大きな)ファイルが断片化せずに生成されることを保証してくれることに繋がるからだ。 VMware Serverのsparseファイルのせいでひどい目にあったことがあるので、そう感じた。 ext4(とxfs)は非常に早くこのプリアロケートが終わるということで、将来的に断片化を起こしてパフォーマンスがひどいことになるんじゃないの?と感じたが、Wikiped

    ext3/ext4とプリアロケートの話
  • 1