tanu32 さん プロフィール

  •  
tanu32さん: NY 日本人IT技術者日記
ハンドル名tanu32 さん
ブログタイトルNY 日本人IT技術者日記
ブログURLhttp://neko32.blogspot.com/
サイト紹介文NYでテクニカルアーキテクトとして黙々と働いてます.扱うテーマは技術ノート,英語・NYに関すること等.
自由文ITに携わる一納税者.ただのたぬきかもしれない.趣味はジャズ,クラシック,プログラミング,ゲーム,猫,妻と一緒に街歩き.
参加カテゴリー
更新頻度(1年)情報提供28回 / 365日(平均0.5回/週) - 参加 2013/04/05 16:19

tanu32 さんのブログ記事

  • JavaとICMP
  • 自作の自宅用メッセンジャーを作成中,Javaでネットワーク上の他のホストを検索するのにはInetAddress.isReachable()では十分ではない、という事実を今,知りました.http://stackoverflow.com/questions/9922543/why-does-inetaddress-isreachable-return-false-when-i-can-ping-the-ip-address仕方がないのでpingをコマンドライン経由で打つ羽目に.かなりいい加減な実装だがまあ最初のイテレーション(だけ)ではよいとする. im [続きを読む]
  • Gradle - マルチプロジェクト
  • 最近は専らmavenよりもgradleを使っている.近年はmake, ant,maven, sbtと比較的短期間で様々なビルドツールを使わざるを得なかったことに食傷気味ではあったが,gradleをいざ使ってみると,mavenやantの冗長なコンフィグからの脱却や拡張性の高さがすぐに気に入った.以下はgradleでmavenのようなマルチモジュールのプロジェクトを定義した例.以下の例では親プロジェクトが"tanu-im",子モジュールとして"desktop-ui"と"core"を [続きを読む]
  • Java - Retrofit RESTクライアント
  • Javaにはいまいち使い勝手の良いRESTクライアントは無かった。。と思うが,最近話題になっているRetrofit2は非常に使い勝手が良いように思える.以下の例は統合テストにおいてlocalhost:9099/beanmgrに対してGETのリクエストを投げる例.サービスインターフェース定義 package org.tanuneko;import retrofit2.Call;import retrofit2.http.Body;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.Path; [続きを読む]
  • Scala - 初めてのAkka - アクター
  • 最近の流行りはどうやらreactive programming..らしく.. というか別に新しいものじゃない..old wine in a new bottleの典型例ではないか...憤る気分を抑えながらもakkaを試してみた.以下の例は単純なアクターをつくった例.私が読んだ本でakkaが紹介されているが,そのサンプルはakkaの非同期的性質を無視した代物であり,ランダムに失敗する.というわけで,以下の例は汚く危ない例ではあるがフェイルはしないようフラグを付け [続きを読む]
  • Spark - StatsCounter
  • StatsCounterを使えば簡単に統計用の基本的な値を計算できる.import org.apache.spark.{SparkContext, SparkConf}/** * Created by neko32 on 2016/01/18. */object Stats { def main(args:Array[String]) = { val conf = new SparkConf().setMaster("local").setAppName("stats") val sc = new SparkContext(conf) val rdd = sc.textFile("/user/neko32/spark/study7/nums.txt") val stats = rdd.flatMap(l => l. [続きを読む]
  • Spark - パーティション単位でのマップ
  • PairRDDのpartitionBy()を使ってパーティション毎の要素の合計を計算をする例.入力ファイルは以下のようなキーバリューの対とする.また,バリューはスペース区切りの整数の列とする.lineA:73 44 58 62lineAB:88 21 20lineABC:50 21 99 82 25 62import org.apache.spark.{Partitioner, SparkConf, SparkContext}/** * Created by neko32 on 2016/01/17. */object CalcPart { def main(args:Array[String]) = { val conf = [続きを読む]
  • Scala - JSONの作成
  • 以下の例はPlay frameworkのJSONライブラリを使ってJSONを作った例.Scalaの型から作られたJSONをJson.parse()を使ってまたJSON化もしている.import play.api.libs.json._/** * Created by neko32 on 2016/01/15. */object JsonSample { def main(args:Array[String]) = { val mine = Json.obj("name" -> "tanuchan", "age" -> 5, "Nekoz" -> Json.arr("Chatora", "Mikeneko", "Snowball")) println(mine.toString) }}S [続きを読む]
  • Spark - JDBC経由でデータを取得
  • 以下の例はSparkJDBCを使ってRDB(ここではMySQL. MySQLは使いやすくていいね!)からデータを取得しJDBCRDDを構築する.import java.sql.{ResultSet, DriverManager}import org.apache.spark.rdd.JdbcRDDimport org.apache.spark.{SparkConf, SparkContext}/** * Created by neko32 on 2016/01/13. */object MySQLSpark { def getConn() = { Class.forName("com.mysql.jdbc.Driver").newInstance DriverManager.getConnecti [続きを読む]
  • Spark - CSVファイルの書き込み
  • 以下の例はRDDの内容(Neko case class)をCSVファイルとしてHDFSに書き込む例.package tanunekoimport java.io.StringWriterimport com.opencsv.CSVWriterimport org.apache.hadoop.conf.Configurationimport org.apache.hadoop.fs.{Path, FileSystem}import org.apache.spark.{SparkConf, SparkContext}import scala.collection.JavaConverters._/** * Created by neko32 on 2016/01/11. */object CSVWrite { case class Ne [続きを読む]
  • Spark メモ - CSVからkey - non-key ペア変換
  • HDFS上のCSV風テキストを最終的に主キー - 非キー別タプルに変換する例.// read input file separated by comma// suppose this input file consists of 4 cols (tradeid, version, instrument and trader name)val myrdd = sc.textFile("/user/neko32/spark/study1/contract.txt")// transform string to listval lines = myrdd.map(x => x.split(",").toList)// transform line list to tupleval myIn = lines.map(x => (x(0), [続きを読む]
  • scala - 外部コマンドの実行
  • Scalaの外部コマンド実行はJavaのProcessBuilderほぼ同じ./** * Created by neko32 on 2016/01/03. */object RunCommand { def main(args:Array[String]):Unit = { import sys.process._ // execute external command val result = "javac -version".! println(result) // return stdout val result2 = "javac -version".!! println(result2) // via Process or Seq command can be triggered val r [続きを読む]
  • scala - CSVファイルの読み込み
  • CSVファイルを読み込んで多重配列に保存するコードのメモ..import resource._import scala.io.Sourceobject CSVReadRunner extends CSVRead { def main(args:Array[String]):Unit = { val vals = read("C:tmptankoneko.csv") println("done.") }}/** * Created by neko32 on 2016/01/03. */trait CSVRead { def read(path:String):Array[Array[String]] = { val arr = Array.ofDim[String](4,2) for { out [続きを読む]
  • scala - try with resource相当
  • Scalaにおいてtry-with-resourceのようなARMを使うには,私の知っている限りscala-ARMを使う必要がある.以下の例はmanagedを使ってwriterをmanagedを使って自動で閉じ,scala.io.Sourceで読みだした後,自前のcloseAfterのローンパターンで閉じている.(Alvin Alexander氏のScala Cookbookを参考とさせていただいた)(Source.from([file])が返すBufferedSourceはcloseメソッドを持っているのでcloseAfterの型要件を満たしている. [続きを読む]
  • Scala - Sequenceマッチ
  • Scalaのmatch文は極めて強力で,そのうちの一つのリスト要素へのパターンマッチも便利なものの一つだろう.以下の例はMyCatへのコンストラクタマッチとリスト要素へのシーケンスパターンマッチの組み合わせの例.もしパターンマッチ内でジェネリック型も含めた型パターンマッチ等をしていて,かつJavaからそのscalaコードから作られたクラスを利用する場合は,Javaの型消去の特性に気を付けるように.object Matcher { def main(a [続きを読む]
  • Scala - ワードカウント
  • SparkではreduceByKeyで簡単にワードカウントができるが,scalaではfoldLeftで実装出来る. val x = """kiji,saru,saru#saru,inu,kiji,saru#inu,kiji,kiji#kiji#inu,inu#saru""" val v = x.split("#").flatMap(_.split(",")).map(s => (s,1)) val z = v.foldLeft(Map[String,Int]())((accm, elem) => { if(accm.contains(elem._1)) accm.updated(elem._1, elem._2 + accm(elem._1)) else accm + [続きを読む]
  • scala - ディレクトリのファイル操作
  • 妻のパソコンの,とあるフォルダにある画像ファイルのタイムスタンプが何故かおかしくなってしまった.ファイルの数が膨大ということもあり,scalaでさっとコードを書いて修正した.import java.io.Fileimport java.time.{LocalDateTime, ZoneId}import java.util.Dateimport org.apache.commons.io.FileUtils/** * Created by neko32 on 2015/12/28. */class FileDateChanger(preProcessDir:String, postProcessDir:String) { [続きを読む]
  • Scala - Enumeration
  • ScalaでEnumerationを継承してenumを定義する例.object Weekdays extends Enumeration { type WEEKDAY = Value val MON, TUE, WED = Value}object MyMain { def isMonday(w:Weekdays.Value) = { w == Weekdays.MON } def main(args:Array[String]) = { val w = Weekdays.MON val w2 = Weekdays.WED println(isMonday(w)) println(isMonday(w2)) }} [続きを読む]
  • Scala - akka アクタ
  • Akka actorのサンプルメモ..import akka.actor._/** * Created by neko32 on 2015/12/23. */sealed abstract trait Messagecase class Request(a:Int, b:Int, op:Operator) extends Messagecase class Response(a:Int, b:Int, op:Operator, result:Int) extends Messagecase class ExecStart(cmd:String) extends Messagecase class ExecEnd(a:Any) extends Messagesealed abstract class Operator(a:Int, b:Int) { def calc(): [続きを読む]
  • Scala - Mixin, traitそしてselfによる型間依存関係の表現
  • Scalaのmixinとtraitそしてselfアノテーションを利用することにより,Javaと比較してより明快に型間の依存関係を宣言出来る.Javaではミックスインが出来ない為,クラス間の依存関係はあるクラスのprivate or protectedフィールドとして表現されていることがご想像いただけるかと思う.case class Neko(name:String,pattern:String, age:Int)trait CatManage { self: CatManage with DefNekoCheck => var nekoz:List[Neko] def [続きを読む]
  • Scala - visitorパターンのようなもの
  • ScalaではVisitorパターンを割合簡潔に書くことが出来る.以下の例はあるデータベース上で接続・検索を実行するモジュールで,この例では通常のRDB, HiveそしてインメモリDBをサポートしているとする.また,(乱暴ではあるが簡略のために)RDBとHiveserver2はコネクトとクエリを同一の手順,インメモリはコネクトを必要としないと仮に想定している.package tanuneko/** * Created by neko32 on 2015/12/20. */sealed abstract cl [続きを読む]
  • Javaの関数プログラミングで偏差
  • 暇つぶしに統計の基礎の動画を見ていたら,サンプルのコードを書きたくなったので,メモとし
    て..この例ではカンマ区切りの名前と点数 の行からなるデータを読み込んで,平均,分散,偏
    差,標準偏差そして偏差値を計算する.package org.tanuneko;import com.google.common.base.Function;import com.google
    .common.base.MoreObjects;import com.google.common.base.Preconditions;import com.google.common.base.Splitter;import [続きを読む]