Java

マルチリソース、マルチテナントに対応したDBマイグレーションツール「solidbase」1.0.0をリリースしました

Javaベースのデータベースマイグレーションツールsolidbase 1.0.0をリリースしました。 github.com これは元々GitBucketで使用するために開発したものです。GitBucketではこれまで独自に実装した簡易的なマイグレーションシステムを使用していたのですが、外…

Lagomのサービスの入出力にJSONを使用する

Lagomを試してみるシリーズ第4回です。今回はサービスの入力・出力としてJSONを使う方法を試してみました。 基本的にはサービスのRequestやResponseにJavaクラスを指定しておけば自動的にJacksonでJSONとのデシリアライズ、シリアライズを行ってくれるようで…

Lagomでイミュータブルなデータクラスを作る

Lagomを試してみるシリーズ第三回です。今回はLagomでイミュータブルなデータクラスを作る方法について見ていきたいと思います。Lagomの本質にたどり着くにはまだまだ時間がかかりそうですw Lagomのドキュメントを読んでいると以下のようなアノテーションて…

Lagomでサービス呼び出しのIdを通じてパスから複数のパラメータを受け取る

Lagomを試してみるシリーズの第2回です。前回はLagomを使用したサービスの最も簡単な実装例として、以下のようなサービスを定義しました。 public interface HelloService extends Service { ServiceCall<String, NotUsed, String> hello(); @Override default Descriptor descriptor(</string,>…

リアクティブなマイクロサービスフレームワーク「Lagom」を試してみる

Lagomとは? LagomはLightbend社(旧Typesafe社)がリリースした新しいマイクロサービス向けのフレームワークです。 www.lightbend.com 元々Scalaの開発元であったLightbend社が開発しているだけあり、PlayやAkka、sbtといったScalaベースの技術基盤上に構築…

JavaからLevelDBを使うためのライブラリ

LevelDB JNIというバインディングを使うのがいいみたい。Akka PersistenceやActiveMQ Apolloでもこれが使われています。 github.com もちろんこれはLevelDBがインストールされていないと使えませんが、LevelDBをPure Javaにポーティングしたものもあるみたい…

Apache DrillでRDBにアクセスしてみる

Apache Drillはストレージプラグインで様々なデータソースに対応しているのですが、JDBC用のストレージプラグインも用意されており、これを使用するとDrillからRDBにアクセスすることができます。 もちろん、ただ単に検索するだけならわざわざDrill経由でや…

Apache DrillでネストしたJSONを検索してみる

草薙さんの以下のエントリを参考にやってみました。 nagix.hatenablog.com データソースとなるJSONは以下のような感じだとします。 { "user": { "name": "takezoe", "mail": "takezoe@gmail.com" } } ... ちょっと面倒ですが、以下のような感じでネストした…

Apache DrillにJDBC経由で接続してみる

そこそこの分量のJSONデータを手元で検索するのにDrillを使っています。Elasticsearchなどに入れてもいいのですが、Drillにはファイルの状態で検索できること、SQLで検索できること(それなりに複雑な集計を手軽に書けたり、必要に応じて他のデータとジョイ…

第十四回 #渋谷java でProject Jigsawの話をしました

先日弊社オフィスで開催された第十四回 #渋谷javaですが、自分はProject Jigsawについて発表させていただきました。以前、社内の勉強会でJava9の新機能について紹介したことがあったのですが、その内容からJigsaw部分を抜き出し、内容を充実させたものです。…

第十四回 #渋谷java を開催しました

2月13日(土)に弊社オフィスで第十四回 #渋谷javaを開催しました。 今回は以下の皆さんに発表していただきました。 セッション枠(20分) Naoki Takezoe 「Java9とJigsawについて」 emaggame 「WildFly Swarm の開発状況について」 通常枠(10分) shimamoto…

H2のデータをダンプ・リストアする

SQLでやる方法と、H2に付属しているツールを使用する方法の2通りがあります。 H2付属のコンソールとかJDBCクライアントで接続できる環境が使えるのであればSQLでやるのが楽です。 -- ダンプ SCRIPT TO 'backup.sql' -- リストア RUNSCRIPT FROM 'backup.sql'…

JJUG CCC 2015 Fallをスポンサードさせていただきました

先日開催されたJJUG CCC 2015 Fall、弊社は今回もスポンサーという形でサポートさせていただきました。ハンズオンやハッカソンも含めると6トラック&ブースという大規模なイベントとなったようです。 弊社のスポンサーセッションでは新卒二年目の若手エンジ…

JJUG CCC 2015 Fallで聞いてきたセッションの感想

昨日開催されたJJUG CCC 2015 Fallですが、makingさん、ソラコムさん、不満買取センターさんのセッションを聴講させていただきましたので、それぞれ簡単に感想を書いておきます。 Reactive Webアプリケーション – そしてSpring 5へ Reactive Webアプリケーシ…

@tagomorisさんによるISUCON5裏話

先週の社内勉強会では@tagomorisさんにお越しいただき、ISUCON5で使われたベンチマークツールについてお話しいただきました。 資料も公開していただいています。 Tale of ISUCON and Its Bench Tools from SATOSHI TAGOMORI www.slideshare.net ISUCONで使わ…

Visual Studio CodeでMavenを実行するためのタスク定義

Visual Studio Codeを触っているのですが、タスクの設定をしておくと任意のコマンドを実行して、さらにその出力から警告やエラーを抽出できるようです。デフォルトではtscやgrunt、gulp等の設定がサポートされているようですが、試しにMaven用の設定を作って…

第十三回 #渋谷java でLTをしました

昨日弊社オフィスで開催された第十三回 #渋谷javaで久々にLTをさせていただきました。 markedj: The best of markdown processor on JVM from takezoe タイトルは「ScalaからJavaへ」でしたが、実際の内容はmarkedjの紹介ですw markedjは以前もこのブログで…

marked.jsをJavaに移植してみた

GitBucketではMarkdownの処理にpegdownを使っています。pegdownはJavaで使えるMarkdownプロセッサの中では最もまともなものだと思うのですが、GitHub Flavored Markdownとの互換性という面ではやや微妙なところがあります。 他の言語ではJavaScript用のmarke…

第十二回 #渋谷java を開催しました

8月1日(土)弊社ビズリーチのオフィスにて第十二回 #渋谷javaを開催しました。 創設者であるseri_kさんが東京を離れて北の地に旅立ったのち、弊社のメンバーが後を引き継いで開催してきた#渋谷javaですが、ついに今回からseri_kさんが主催者として復帰されま…

第十一回 #渋谷java を開催しました!

去る5月30日(土)、弊社オフィスにて第十一回 #渋谷javaを開催しました(今回は新たな試みとしておやつを用意してみましたw)。 当日の様子は以下のTogetterまとめをご覧ください。 togetter.com 発表していただいいたLTは以下の通りです。 セッション枠(2…

Gradle徹底入門の綿引さんによるGradle勉強会を開催しました

毎週金曜日に社内で行っている技術共有会ですが、今週は久々に社外のゲストとしてGradle徹底入門の著者であるデライトテクノロジーズの綿引さんをお招きして「MavenユーザのためのGradle入門」というタイトルでお話しいただきました。 (この共有会、以前は…

HiveからElasticsearchに接続してみる

仕事ではElasticsearchを使っているのですが、それ以外にGitやS3に大量のJSONがあり、これをElasticsearchを組み合わせた検索ができないものかと思い、先日1.0がリリースされたばかりのApache Drillを試しています。ただし、Drillは現時点ではElasticsearch…

Elasticsearchへの接続方式

Elasticsearchへのアクセスにはいくつかの方式があり、それぞれにメリット・デメリットがあるようです。Elasticsearchのドキュメントを参考にJavaプログラムからの接続方法とそれぞれの特徴を調べてみました。 Transport Client いわゆる通常のクライアント…

第十回 #渋谷java を開催しました!

ブログを書くまで少し時間が空いてしまいましたが、3月7日(土)弊社オフィスにて第十回 #渋谷javaを開催しました! 当日の様子は以下のTogetterまとめをご覧ください。 togetter.com 今回も@btnrougeさんの「Date and Time APIのTemporalAdjuster活用法」、…

第九回 #渋谷java を開催しました!

12月13日(土)弊社オフィスにて第九回 #渋谷javaを開催しました。 当日の様子は以下のTogetterまとめをご覧ください。 togetter.com 主催者である@seri_kさんがあろうことか盛岡の地に旅立ってしまったため、今回から元同僚である弊社社員で引き継いで開催…

MinHashでElasticsearchの検索結果から重複を分散させる

最近Elasticsearchを使っているのですが、検索結果の多様性という観点から似たようなコンテンツが並ぶのを割けたいという場合があります。こんな場合に便利なのが以下の2つのElasticsearchプラグインです。 elasticsearch-minhash elasticsearch-dynarank ど…

SmartNews小宮さんによるJavaでの統計・機械学習・自然言語処理ライブラリの紹介

今週の社内勉強会はSmartNewsの小宮さんにお越しいただき、Javaでの統計・機械学習・自然言語処理などを行う際に利用できるライブラリをご紹介いただきました。 今回紹介していただいたのは以下のようなライブラリです。 Trove(プリミティブ型に対応した高…

@seri_kさんによるHeroku with Java勉強会を行いました

弊社で毎週金曜日に全エンジニアを集めて行っている社内共有会、今週は外部のゲストとしてハートレイルズの@seri_kさんにJavaでのHerokuの利用方法についてお話しいただきました。 Herokuはいろいろと制約も多く、サービスの実運用にはあまり向いていないと…

@makingさんによるSpring Boot勉強会を開催しました

ビズリーチでは毎週全エンジニアを対象に技術共有会を開催しています。 これは業務で得た技術的なノウハウであったり、これから使うかもしれない新しい技術の調査内容などをプレゼン形式で発表する勉強会で、最初は一部のメンバーで持ち回りで発表していたの…

第七回 #渋谷java に行ってきました

弊社オフィスにて@seri_kさんの主催で月一回程度の頻度で開催されている #渋谷java という勉強会に行ってきました。今回が第七回目の開催となります。 http://shibuya-java.connpass.com/event/7060/実は@seri_kさんは先月で弊社を退職されてしまったのです…