タグ

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

  • 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」について - たけぞう瀕死ブログ
  • GraphQLスキーマからCRUDを自動生成できるPrismaについて - たけぞう瀕死ブログ

    Prismaは、様々なデータベースをバックエンドにGraphQLのスキーマからCRUDを行うためのエンドポイントを提供するプロキシとして動作するミドルウェアです。最近$4.5Mの資金調達をしてちょっとだけ話題になりました。 www.prisma.io Prismaが提供するソフトウェアは現在オープンソースソフトウェアとしてGitHub上で公開されています。体はScalaで書かれていますが、CLIはTypeScript(Node.js)で書かれているようです。Scalaのコードは関数型プログラミングを駆使したものではなく、比較的読みやすい部類だと思います。 github.com 触ってみる GraphQLのエンドポイントを簡単に用意することができそうということで少し調べてみました。Webサイトにチュートリアルがあり、dockerを使って簡単に試すことができるようになっています。事前にnpm

    GraphQLスキーマからCRUDを自動生成できるPrismaについて - たけぞう瀕死ブログ
  • オープンソースの機械学習プラットフォームまとめ - たけぞう瀕死ブログ

    PredictionIOは機械学習を使用したアプリケーションを開発・運用するためのプラットフォームを提供するためのOSSですが、世の中には他にも同じ領域のOSSが存在します。PredictionIO含めて各プロダクトの特徴をまとめてみました(PredictionIO以外はドキュメントやソースをチラ見して書いているので見落としていることなどあるかもしれませんがご容赦いただければと思います)。 PredictionIO github.com Apache Software Foundationで開発されている機械学習プラットフォームです。基的にSpark上で動作する機械学習ライブラリをターゲットにしていますが、最近はPython対応なども行われています。作成したマイクロサービスはSprayベースのAPIサーバとして起動することが可能です。用途に応じたテンプレートが多数用意されており、それをカ

    オープンソースの機械学習プラットフォームまとめ - たけぞう瀕死ブログ
  • Apache PredictionIOのコミッタになりました - たけぞう瀕死ブログ

    Apache PredictionIOはSpark MLlibを中心に、学習データやモデルデータを格納するためのストレージ、機械学習を利用したアプリケーションを定型的に開発するためのフレームワーク、作成したアプリケーションをWebサービスとしてデプロイする機能などを提供するもので、元々は2013年に創業されたPredictionIO社で開発されていたのですが、2016年2月にSalesforce社に買収され、Apache Software Foundationに寄贈されたものです。 github.com 弊社の機械学習チームでは機械学習を応用したアプリケーションを組織的に開発していくにあたり、開発・運用基盤としてApache PredictionIOに取り組んでいるのですが、このたび弊社から以下の4名がコミッタとしてPredictionIOの開発に参加させていただけることになりました(El

    Apache PredictionIOのコミッタになりました - たけぞう瀕死ブログ
  • JDBCレイヤでDBのシャーディングを行うsharding-jdbcを試してみた - たけぞう瀕死ブログ

    DBのデータ量が増えてきた場合の対策の1つとしてユーザIDなどをキーにデータベースを分割するシャーディングと呼ばれる手法があります。これをJDBCのレイヤで実現してしまうsharding-jdbcというライブラリを見つけました。 github.com sharding-jdbcは中国のdangdang(当当)というEC大手企業が開発したOSSで、SQLをパースし、SQLに含まれるシャードキーを抽出して接続先のデータベースや、参照するテーブルを切り替えてくれるというものです。 使ってみる まずはpom.xmlに以下の依存関係を追加します。 <dependency> <groupId>com.dangdang</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>1.4.1</version> </dependency>

    JDBCレイヤでDBのシャーディングを行うsharding-jdbcを試してみた - たけぞう瀕死ブログ
  • シンプルなScala用ビルドツール「cbt (Chris's Build Tool)」を試してみる - たけぞう瀕死ブログ

    Slickのコミッタとして有名なJan Christopher Vogtさんが作っているcbt (Chris’s Build Tool) というScala用のビルドツールがあります。*1 github.com 昨年参加したScala Days NewYork 2017でもセッションがあり、興味位で参加したのですが、sbtのdisなどもありなかなか楽しい発表でした。*2 www.youtube.com cbtの特徴 Scalaにはsbtという標準的なビルドツールが存在するわけですが、非常に難解なsbtと異なり、cbtは既存のScalaの知識だけでカスタマイズができるという大きな特徴があります。 たとえばコンパイルの前後に処理を挟む場合、compileメソッドをオーバーライドして前後に独自のScalaコードを記述し、super.compileを呼び出せばよいだけです。タスクはただのメソッドな

    シンプルなScala用ビルドツール「cbt (Chris's Build Tool)」を試してみる - たけぞう瀕死ブログ
  • GitHubでGitLFSを使ってみる - たけぞう瀕死ブログ

    実際にGitLFSを使ってみようということでGitHubで試してみました。 まずはgit-lfsのインストールから。gitはインストール済みとします。MacならHomebrewで簡単に入れられます。 $ brew install git-lfs 適当なGitリポジトリを作成し、GitLFSを有効にします。 $ mkdir git-lfs-test $ cd git-lfs-test/ $ git init $ git lfs install GitLFSで管理するファイルを指定します。 $ git lfs track *.jpg あとは普通にファイルをコミットしてpushすれば該当のファイルが自動的にGitLFSに保存されますし、git-lfsがインストールされている環境であればcloneしたりpullしたりすると自動的にローカルにもファイルの実体がダウンロードされてくるので普通にリポジト

    GitHubでGitLFSを使ってみる - たけぞう瀕死ブログ
  • Scala Warriorをリリースしました - たけぞう瀕死ブログ

    昨年から密かに作り続けていたScala WarriorというWebアプリケーションをScala関西 Summit2016にあわせてリリースしました。 github.com これはRuby WarriorにインスパイアされたScala学習用のゲームで、Scalaコードを書いて侍を操作しステージをクリアしていくというものです。 実装にはScala.jsを活用しており、プレイヤーが入力したコードをScala.jsでJavaScriptにコンパイルし、それをクライアントにサイドに返却してブラウザ上で実行しています。エディタではCTRL+SPACEでコード補完、CTRL+Sでコンパイル結果の確認ができます。このあたりのコードはscala-js-fiddleを参考にさせていただきました。 とりあえず動くものをリリースしたというだけでステージ数も少ないのですが、今後少しずつ改善していければと思っています

    Scala Warriorをリリースしました - たけぞう瀕死ブログ
  • Netflixのオープンソースソフトウェア - たけぞう瀕死ブログ

    ここのところHystrixについて調べていたのですが、Netflixは他にもGitHub上で様々なOSSを公開しています。 github.com Javaのものが中心ですがPythonGo、Cで書かれているものもあります。ライブラリ的なものからミドルウェアや運用ツールまで多岐に渡っており、NetflixAWSを利用しているということもありAWS上での利用に特化したものもあります。また各プロダクトのドキュメントもしっかりしており、以下のような専用のサイトも立ち上げられており、社内で開発したものを積極的にOSS化するという方針が伺えます。 netflix.github.io HystrixやEurekaなどを筆頭に有名なものも多いのですが、なにぶん数が多くどのようなものがあるのかを把握するのも割と一苦労な感じなのですが、Netflixでは自社のOSSを紹介するMeetupが継続的に開催され

    Netflixのオープンソースソフトウェア - たけぞう瀕死ブログ
  • リアクティブなマイクロサービスフレームワーク「Lagom」を試してみる - たけぞう瀕死ブログ

    Lagomとは? LagomはLightbend社(旧Typesafe社)がリリースした新しいマイクロサービス向けのフレームワークです。 www.lightbend.com 元々Scalaの開発元であったLightbend社が開発しているだけあり、PlayやAkka、sbtといったScalaベースの技術基盤上に構築されていますが、現時点ではJava向けのAPIのみ提供されているJava用のフレームワークとなります。*1 これまでもSpring Bootなど手軽に使えるAPIサーバ向けのWebフレームワークは存在したわけですが、Lagomは最初からリアクティブなマイクロサービスの構築を前提に設計されており、いわば「マイクロサービスネイティブ」とも呼ぶべきフレームワークになっています。 実際にLagomを使うかどうかはさておき、新しいコンセプトのフレームワークなので学ぶことも多いのではないかと

    リアクティブなマイクロサービスフレームワーク「Lagom」を試してみる - たけぞう瀕死ブログ
  • GitBucket 3.13をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGitサーバ、GitBucket 3.13をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/3.13 ワイドスクリーンに適した新しいUIへの変更 GitBucketはこれまでなるべくGitHubに近いUIを提供してきましたが、このバージョンからワイドスクリーンに適したサイドバー付きの独自UIに方向転換しました。 この方向転換はGitHubとの類似性を排除するための措置です。詳細については以前のブログエントリを参照してください。 takezoe.hatenablog.com Issue一覧取得APIのレスポンスにpull_requestキーを追加 GitBucketのIssue一覧取得APIはペイロードにpull_request というキーを含まないため、GitHubプルリクエストビ

    GitBucket 3.13をリリースしました - たけぞう瀕死ブログ
  • プライベートリポジトリ無制限のGitLab.comを試してみた - たけぞう瀕死ブログ

    Hacker Newsでこんな記事が流れていました。Hacker Newsでのコメントはこちら。 agateau.com こういう記事でAlternativeとしてGitBucketがあげられるようにならないといけないなぁと思うもののそれはさておき、先日の障害のときのようにGitHubが落ちたら仕事にならなかったりとか、SourceForgeやGoogleCodeの件を見ても今後GitHubのサービスがずっと今の形で継続するという保証はどこにもありませんし*1、さらにGitLabのオンプレ版であるGitLab CEはGitBucketと直接競合するということもあり、機能面を把握しておくためにGitLab.comを試してみることにしました。 GitHubやBitBucketなどのアカウントでログインすることができ、これらのサービスからリポジトリをインポートすることもできます。試しにリポジトリ

    プライベートリポジトリ無制限のGitLab.comを試してみた - たけぞう瀕死ブログ
  • AWS上で動作するアプリケーションをいかにローカルで開発するか? - たけぞう瀕死ブログ

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

    AWS上で動作するアプリケーションをいかにローカルで開発するか? - たけぞう瀕死ブログ
  • ElectronなGitフロントエンド「GitKraken」を使ってみた - たけぞう瀕死ブログ

    AxosoftがGitKrakenという新しいGitフロントエンドを開発しているようです。 www.gitkraken.com 最近のプロダクトらしくElectronで開発されており、NodeGitを使用しているようです。ベータテストをやっているようなので早速申し込んでみました。 メイン画面はこんな感じ。コミットグラフの見た目や操作性は非常にいい感じです。 機能はまだ不足している感はありますが、日常作業であれば問題なくこなせる程度のクオリティには達していますし、動作もなかなか軽快です。また、1ウィンドウで複数リポジトリを切り替えて扱うことができ、切り替えもプルダウンで簡単に行うことができます。 ただ、やはりGUIのGitフロントエンドには対話式でリベースする機能が欲しいところです。MacのGitクライアントで対話型のリベース機能を持っているSourceTreeは動作の重さもさることながらリ

    ElectronなGitフロントエンド「GitKraken」を使ってみた - たけぞう瀕死ブログ
  • 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年版 - たけぞう瀕死ブログ
  • Play2をサーブレットコンテナで動かす - たけぞう瀕死ブログ

    Play2は組み込みのNetty上で動作します。サーブレットコンテナ上での動作はサポートされていません(ロードマップを見ると今後、バックエンドの1つとしてサポートされる可能性はあるようです)。 しかし、様々な事情でTomcatなどのサーブレットコンテナ上でPlay2を動かしたいというケースもあるでしょう。play2-war-pluginというsbtプラグイン(とランタイムを組み合わせたもの)を使用するとPlay2アプリケーションをwarにしてサーブレットコンテナ上で動作させることができます。 https://github.com/dlecan/play2-war-plugin play2-war-pluginを使用するにはまずAPP_HOME/project/plugins.sbtに以下の記述を追加します。 resolvers += "Play2war plugins release" a

    Play2をサーブレットコンテナで動かす - たけぞう瀕死ブログ
  • gotty + tmux = 最強のWeb開発環境 - たけぞう瀕死ブログ

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

    gotty + tmux = 最強のWeb開発環境 - たけぞう瀕死ブログ
  • GitBucket 3.0をリリースしました - たけぞう瀕死ブログ

    Scalaで実装されたオープンソースのGitHubクローン、GitBucket 3.0をリリースしました。 https://github.com/takezoe/gitbucket/releases/tag/3.0 今回の主な新機能・修正点は以下の通りです。 新しいプラグインシステム 新しいプラグインシステムが利用可能になりました。このプラグインシステムはGitBucketがベースとしているScalatraと完全に統合されており、ScalatraやSlickといったGitBucketが使用しているフレームワーク上で、GitBucket自身が提供するすべてのAPIを使用することができ、GitBucket体のコア機能と同じように実装することが可能です。 なお、これにともなってプラグインとの衝突を避けるため、GitBucket体のクラス群をすべてgitbucket.coreパッケージに移動し

    GitBucket 3.0をリリースしました - たけぞう瀕死ブログ
  • [Java]Apache MINA sshdでオレオレsshサーバを作ろう - 2014-03-30 - 新・たけぞう瀕死の日記

    GitBucket 1.12ではssh経由でのリポジトリアクセスをサポートしていますが、これに使用しているのがApache MINAのsshdです。 https://mina.apache.org/sshd-project/index.html Apache MINAはNIOを使用したTCP/IP、UDP/IPベースのネットワークサーバアプリケーションのためのフレームワークで、sshdはMINAを使用して実装されたsshサーバということになります。MINAのsshdは比較的簡単に再利用できるようになっており、Javaアプリケーションでsshを使用した暗号化通信を行いたい場合に使用することができます。 Javaを使用したOSSのsshdの実装を提供しているのは僕の知る限りMINAだけであり(クライアントはいくつか実装がありますが)、JenkinsやGerritなどもこれを使ってsshサーバの

    [Java]Apache MINA sshdでオレオレsshサーバを作ろう - 2014-03-30 - 新・たけぞう瀕死の日記
  • SIerの社内フレームワークを前向きに捉えてみる - たけぞう瀕死ブログ

    その昔、僕が客先常駐ソルジャーだった頃、そこには辺り一面炎上プロジェクトばかりでした。 当時僕の参加していたプロジェクトでは、 SQLで書いたら数秒〜数分で済むであろうバッチ処理をなんちゃってEJB 1.0のような独自フレームワークを使って数時間かけて処理し、挙句に朝までに終わらないと問題になって作り直したり なぜかすべてのバッチがSQL*Plusを叩くシェルスクリプトで実装されており条件分岐で済むようなケースがすべて別ファイルとしてパターン数分用意されていたため処理を少し修正するだけでも数百のシェルスクリプトを修正しなくてはいけなかったり はたまたオンラインの処理では1人のユーザがボタンを押すだけで200M以上のメモリを消費しこれ想定ユーザ数での使用にどう考えて耐えられないでしょみたいなものがあったり ResultSetをJSPまで持ち合わしてどこでもクローズされていなくてJMeterで

    SIerの社内フレームワークを前向きに捉えてみる - たけぞう瀕死ブログ