タグ

ブックマーク / takezoe.hatenablog.com (10)

  • Databricks社がOSS化したSpark用ストレージレイヤ「Delta Lake」について - たけぞう瀕死ブログ

    先日開催されたSpark + AI Summit 2019にあわせてDatabricks社からSpark用のストレージレイヤ「Delta Lake」のOSS化が発表されました。 databricks.com GitHubリポジトリはこちら。 github.com Delta LakeはSparkのライブラリとして実装されており、分散ストレージ上で以下のような機能を提供します。 ACIDトランザクション(テーブル単位) タイムトラベル(任意の時点の過去データを参照可能) スキーマバリデーション(スキーマ変更も可能) 実際に動かしてみる Delta Lakeの動作にはSpark 2.4.2以降が必要です。ローカルファイルシステムでも動作するのでspark-shellで動きを確認してみました。 $ bin/spark-shell --packages io.delta:delta-core_2.

    Databricks社がOSS化したSpark用ストレージレイヤ「Delta Lake」について - たけぞう瀕死ブログ
  • AirframeのFinagleサポートを試してみる - たけぞう瀕死ブログ

    AirframeはScala向けのDIコンテナを中心とした様々な便利機能を提供するプロジェクトなのですが、最近airframe-httpとairframe-http-finagleというモジュールが追加され、Finagleを使ったWebアプリケーションを簡単に作れるようになったので感じを掴むために軽く試してみました。 まず、build.sbtの依存関係はこんな感じ。 libraryDependencies ++= Seq( "org.wvlet.airframe" %% "airframe-http" % "0.66", "org.wvlet.airframe" %% "airframe-http-finagle" % "0.66", "org.wvlet.airframe" %% "airframe" % "0.66" ) Webアプリケーションの実際の処理を作ります。ルーティングやパラ

    AirframeのFinagleサポートを試してみる - たけぞう瀕死ブログ
  • Scala向けの高速ビルドツールBloopについて - たけぞう瀕死ブログ

    少し前にScala CenterからBloopというビルドツールがアナウンスされました。 github.com 実際に動かしてみたわけではないのですが、READMEやソースコードなどからどのようなものかは大体掴めるので簡単にまとめておきます。興味のある方は是非試してみて欲しいです。 Bloopはビルドツールと言ってもsbtを置き換えるものではありません(そもそもBloop自身はビルドツールを名乗っていません)。簡単に言えばnailgunでサーバを立ち上げてzincでインクリメンタルコンパイルするためのツールで、コーディング中のコンパイル確認用途に通常のビルドツールの代わりに使用することでコーディング→コンパイル確認のラウンドトリップを高速化することを狙っているようです。特にsbt以外のビルドツールを使っている場合にビルドツール側の対応を待たなくても最新のzincが使える点がメリットとして挙

    Scala向けの高速ビルドツールBloopについて - たけぞう瀕死ブログ
  • Scalaで型クラスをメタプログラミングできるライブラリMagnoliaを使ってみる - たけぞう瀕死ブログ

    MagnoliaはScala界隈ではおなじみのJon Prettyさん作のライブラリで、簡単に言うとケースクラスに対する型クラスのインスタンスを生成するためのマクロを簡単に実装できるライブラリです。Play-JSONのReads、Writes、Formatなどのマクロなどを簡単に作れるものというとわかりやすいでしょうか。Scala eXchange 2017のとあるセッションでちょっとだけ紹介されていて面白そうだったので軽く触ってみました。 github.com わかりやすい例としてケースクラスの内容を文字列表現に変換するShowという型クラスを作ってみます(ScalaのケースクラスはtoStringするだけで十分わかりやすい出力を得ることができるので敢えて作る必要はないのですがMagnoliaのドキュメントにも書かれているので練習ということで…)。 まずは以下のトレイトを定義します。 t

    Scalaで型クラスをメタプログラミングできるライブラリMagnoliaを使ってみる - たけぞう瀕死ブログ
  • GitHubのスター数で見るScalaのDBアクセスライブラリ - たけぞう瀕死ブログ

    吉田さんがこういう記事を書いていたので真似してデータベースアクセスライブラリ版を書いてみました。 xuwei-k.hatenablog.com 2009年からのグラフですが、トップ5のスター数の推移はこんな感じ。 slick/slick ★1930 github.com 相変わらずの一番人気。この1年では300くらいスターが増えている。DBIOで強制モナモナやjoinしたつもりなのに何故かサブクエリになるSQLなど問題が多いのに何故こんなに人気があるのか考えさせられるものがある。クエリビルダは非常に柔軟かつ強力だけど、やはり出てくるSQLが想像もつかないのは厳しい。joinを多用するアプリケーションでは(MySQLの場合は特に)使わないほうがよいと思うし、シンプルなCRUDしかしないんだったらこんなに複雑なクエリビルダ要らないのではという気がする。 また、最近はそうでもないけどSQLだけで

    GitHubのスター数で見るScalaのDBアクセスライブラリ - たけぞう瀕死ブログ
  • 次期Scalatraのバックエンドとしてのhttp4s - たけぞう瀕死ブログ

    Scalatraの次期バックエンドをhttp4sにしようという計画は数年前からありつつ中々進んでいなかったのですが(ブランチに途中まで試みたと思われる残骸があるのですが、そもそもScalatraの開発自体が停滞しており絶賛放置されていました)、そろそろやってみようかと思いhttp4sを触り始めています。 github.com http4sとは? http4sはいわゆるノンブロッキングなHTTPツールキットで、今だとAkka HTTPが競合になるかと思います。http4sはAkka HTTP同様ルーティング用のDSLも備えていて単体でシンプルなWebフレームワークとして使用することもできます。 http4sの特徴の1つとして、http4s用に開発したアプリケーション(http4sではサービスと呼びます)を、サーブレットとして動かすためのアダプタが用意されているという点があります。現在Scal

    次期Scalatraのバックエンドとしてのhttp4s - たけぞう瀕死ブログ
  • Scala用のタイプセーフなSQLビルダtranquil 0.0.3をリリースしました - たけぞう瀕死ブログ

    github.com 以前から少しずつ進めていたtranquilですが、APIもそれなりに落ち着いてきたので久しぶりにバージョンアップしてみました。ちなみに以前のものはこんな感じでした。 takezoe.hatenablog.com テーブル定義は以下のような感じで随分シンプルに定義できるようになりました。 import com.github.takezoe.tranquil._ case class User(userId: String, userName: String, companyId: Option[Int]) class Users extends TableDef[User]("USERS") { val userId = new Column[String](this, "USER_ID"), val userName = new Column[String](this

    Scala用のタイプセーフなSQLビルダtranquil 0.0.3をリリースしました - たけぞう瀕死ブログ
  • AWS上で動作するアプリケーションをいかにローカルで開発するか? - たけぞう瀕死ブログ

    AWSでは様々な便利なサービスが提供されています。中にはRDSやElasticCacheのように既存のミドルウェアに対するマネージドサービスを提供するものもあり、これらについては既存のミドルウェアを使って開発することができますが、AWS固有のサービスについてはアプリケーションを動作させるには実際にサービスに接続する必要があり、開発環境が制限されてしまいます。 もちろんソフトウェア側で抽象化しておき、DIなどの手法を用いてモックに差し替えるという方法も考えられますが、特にストレージとして利用するサービスなどの場合はインタラクションが必要になるのでモックでは再現しづらいですし、やはり実際に動作するサービスに接続して開発やテストを行うほうが効率的です。 そこで、AWSのサービスを擬似的にローカルで再現することのできるプロダクトを集めてみました。 S3 node.jsで動作するs3-proxyが使

    AWS上で動作するアプリケーションをいかにローカルで開発するか? - たけぞう瀕死ブログ
    emonkak
    emonkak 2016/02/14
  • ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ

    ScalaのWebフレームワークについて、昨年某所で書いた記事をアップデートしてみました。マイクロサービスが流行ってきたり、Playは2.4になっていろいろ変わったり、ScalaのライブラリやフレームワークもFutureやモナドを活用したものが増えてきたり等々、この一年でScala界隈のWeb開発事情もいろいろと変化してきています。 Play2 出たばかりの頃はPlay 1.x系でできたことができなかったり、バグだらけだったりでコミュニティでも暴動が起きそうになったものですが、喉元すぎればなんとやら、いまでも使いにくい部分も多いのですが、Typesafe社のお墨付きということもあり、なんだかんだでデファクトスタンダードの位置を確立しているのではないかと思います。 ユーザ数が多いだけあり、プラグインや周辺ライブラリ、Web上での情報等も豊富です。 ただ、Play 2.4でGuiceを使ったD

    ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ
  • gotty + tmux = 最強のWeb開発環境 - たけぞう瀕死ブログ

    gottyはターミナルで実行したコマンドの出力をWebブラウザで参照できるようにするツールで、オプションを付けるとブラウザからのキー入力も可能になります。つまりgottyでtmuxを起動することで、Webブラウザから複数セッションや画面分割可能なターミナルを利用でき、さらにvimEmacsなども利用することが可能になります。 特にWebアプリケーションを開発している場合、ターミナルでvimEmacsでコーディングしていると、動作を確認するたびにブラウザに切り替える必要があり、非常に面倒です。gotty + tmuxを使えばブラウザの1つのタブでターミナルを使うことができるので、ブラウザのタブを切り替えるだけでアプリケーションの動作を確認したり、調べ物をしたりすることができるのです。これを最強のWeb開発環境と呼ばずしてなんと呼ぶのでしょうか。Atomなんかいらなかったんや!! gott

    gotty + tmux = 最強のWeb開発環境 - たけぞう瀕死ブログ
  • 1