ブックマーク / kazuhira-r.hatenablog.com (16)

  • よくある楽観的ロックで見るトランザクション分離レベルの違い(MySQL、PostgreSQL) - CLOVER🍀

    これは、なにをしたくて書いたもの? アプリケーションを作成していると、いわゆる排他の方法のひとつとして楽観的ロックをよく使うと思います。 たとえばこういう定義のテーブルがあったとします。 create table mytable( id varchar(3), message varchar(100), version int, primary key(id) ); こういうデータが入っているとします。 MySQL localhost:3306 ssl practice SQL > insert into mytable(id, message, version) values('id1', 'Hello', 1); Query OK, 1 row affected (0.1130 sec) MySQL localhost:3306 ssl practice SQL > select *

    よくある楽観的ロックで見るトランザクション分離レベルの違い(MySQL、PostgreSQL) - CLOVER🍀
  • RSocket Java(0.11)でEcho Server/Clientっぽいものを書いてみる - CLOVER🍀

    これは、なにをしたくて書いたもの? ちょっと前からRSocketというものを聞いていたので、軽く試してみようと 現時点のリリースバージョンはまだ低そうな感じなので、素振り的に? お題をEchoで Reactorのリハビリも兼ねて というわけで、RSocketを試してみます。 RSocketとは? RSocketのオフィシャルサイトは、こちら。 RSocket これはなんですか?ということなのですが、 TCP、WebSocket、Aeronをトランスポートに使う、バイナリプロトコル Reactive Streams対応 多言語対応(JavaJavaScriptC++Kotlin) 単一のコネクションで、以下のメッセージのやり取りの形態をサポート Request - Response(リクエスト、レスポンスが1対1) Request Stream(リクエストひとつに対して、レスポンスがス

    RSocket Java(0.11)でEcho Server/Clientっぽいものを書いてみる - CLOVER🍀
  • Zero-allocation Hashingのハッシュ関数(MurmurHash/FarmHash/CityHash/xxHash)で遊ぶ - CLOVER🍀

    Javaでの高速なハッシュ関数についてのこちらの資料に以前から興味があって、そのうちちょっと気になったライブラリで 遊んでみましたという話。 #JJUG - Java で最速のハッシュアルゴリズムを求めて 対象のライブラリは、Zero-allocation Hashing。 Zero-allocation Hashing? GitHub - OpenHFT/Zero-Allocation-Hashing: Zero-allocation hashing for Java OpenHFTが提供する、ハッシュ関数の実装です。 このZero-allocation Hashingには、 MurmurHash3 FarmHash(na/uo) CityHash xxHash のハッシュが提供されています。 現時点のバージョンは0.8で、ソースコードもハッシュに特化した内容のようです。 https:/

    Zero-allocation Hashingのハッシュ関数(MurmurHash/FarmHash/CityHash/xxHash)で遊ぶ - CLOVER🍀
  • OSGi Bundleのバージョン管理を確認する - CLOVER🍀

    これまでは、Web層のOSGi BundleとService層のOSGi Bundleを作成して、連携するところまで確認してみました。が、これだとOSGi周りの内容が付属して面倒になったSpringアプリケーション以外の何者でもないので、OSGiの利点を確認するためにバージョン管理の機能を利用してみましょう。 つまり、前に作成したOSGi Bundleの別バージョンを作って遊んでみるってことですね♪以下のような状態になることを目指します。 Web Bundle[Ver1.0] ------------> Service Bundle[Ver1.0] | Web Bundle[Ver1.1] ------|まずはWebから。前のプロジェクトをコピーして、バージョン1.1を作成します。 $ cp -R my-web-bundle my-web-bundle1.1STSにインポートして、pom.

    OSGi Bundleのバージョン管理を確認する - CLOVER🍀
  • MochaでJavaScriptのテストを書く - CLOVER🍀

    これまでJavaScriptにはあんまり積極的には関わってこなかったのですが、少しはフロントエンドまわりについて知っておこうというのと、多少でもキャッチアップしておこうかなということで、少しずつ勉強してみることにしました。 まずは、テストコードを書くところから始めようかなと。 JavaScriptのテストを書くフレームワークにはいろいろあるみたいなのですが、とりあえず現状ではMochaがよさそうなので、Mochaで始めてみることにしました。 Mocha はじめてのMocha まずは、こちらを見ながらMochaのインストール。 Installation $ npm install -g mocha testディレクトリがあればよいみたいなので、こちらにテストケースを配置することにします。が、合わせてsrcも作成しておくとしましょう。 $ mkdir src test テスト対象のコードは、今

    MochaでJavaScriptのテストを書く - CLOVER🍀
  • Consulでクラスタを構成、Service設定をしてみる - CLOVER🍀

    先日、WildFly Swarm+Consulでちょっと遊んでみたのですが、Consulのクラスタ構成がイマイチわかって いなかったので、やり直しということで。 WildFly Swarm+Consul(+Dnsmasq)でService Discovery - CLOVER 今回は、ConsuleをSingle Nodeで、クラスタ構成する場合、あと設定ファイルを書くところをやって みたいと思います。また、Consul Agentの動作モードにはServerとClientがありますがここでは Serverを話題の中心に扱っています。 対象のConsulのバージョンは、0.7.2とします。 参考) Consul は 全自動オーケストレーションの 夢を見るか? Single NodeでConsulを使う ここでいう「Single Node」とは、Server ModeのConsulです。Cl

    Consulでクラスタを構成、Service設定をしてみる - CLOVER🍀
  • Javaアプリケーションをstraceで追う - CLOVER🍀

    最近、ちょっとずつstraceを使ってデバッグしたりすることがあって、今回Javaアプリケーションをstraceで追おうとするとどうするのかな?ということで少し調べてみました。 Javaアプリケーションをstraceで追う時は、少なくとも「-f」オプションはあった方が良さそうですね。その他、使いそうなオプションを。 -f … fork(2)/vfork(2)/clone(2)された子プロセスもトレースする -t … タイムスタンプを表示(秒まで) -tt … タイムスタンプを表示(マイクロ秒まで) また、すでに起動中のアプリケーションをトレースするには、以下を付けるそうです。 -p [PID] … トレースしたいプロセスのPIDを指定する その他、-oでファイル出力、-eでトレースしたいシステムコールをフィルタできるようです。 実際に使って、ちょっと確認してみましょう。 Javaアプリケー

    Javaアプリケーションをstraceで追う - CLOVER🍀
  • Lucene Kuromojiの辞書を、IPA辞書からNAIST辞書に切り替える - CLOVER🍀

    Luceneに同梱されている形態素解析のKuromojiですが、以下の3種類の辞書を取ることができます。 IPA辞書 NAIST辞書 UniDic IPA辞書はこちら。 http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz NAIST辞書はこちら。 http://sourceforge.jp/projects/naist-jdic/ UniDicはこちら。 http://sourceforge.jp/projects/unidic/ で、今回、全パターンを試してみようと思ったのですが、UniDicは使えませんでした。辞書のビルドに失敗します。 ライセンス上の理由で、現在はIPA形式の辞書のみの対応だとか。 Japanese Tokenizer (Kuromoji) cannot build UniDic d

    Lucene Kuromojiの辞書を、IPA辞書からNAIST辞書に切り替える - CLOVER🍀
  • Apache Solr 5.xでピボットファセットを試す - CLOVER🍀

    以前、Apache Solrでファセットを使ったエントリを書きました。 Apache Solr 5.xでファセットを試す - CLOVER この時は気付いていなかったのですが、Solr 4からピボットファセット(Pivot (Decision Tree) Faceting)なるものが追加されているらしいです。 Pivot (Decision Tree) Faceting これは知りませんでした。ちょっと試してみます。 準備 利用するSolrのスキーマ定義やデータについては、以下のエントリで使用したものと同じものを使用します。 Apache Solr 5.xでファセットを試す - CLOVER 一応、再掲。 schema.xmlでのスキーマ定義。 <field name="isbn" type="string" indexed="true" stored="true" required="t

    Apache Solr 5.xでピボットファセットを試す - CLOVER🍀
  • JBoss LoggingのLogger Providerを切り替える - CLOVER🍀

    なんとなく、JBoss Loggingのソースコードを見ていて気付いたので。 JBoss Loggingで使えるログ出力の実装は、以下の5つです。 JBoss LogManager Log4j2 Log4j SLF4J java.util.logging これらのいずれか(Logger Provider)が実行時の状態で選択されるわけですが、それは以下の順番で決定されるようです。 システムプロパティ「org.jboss.logging.provider」で指定する ServiceLoaderを使う(org.jboss.logging.LoggerProvider) クラスパスに存在しているものを使う これは、LoggerProvidersというクラスで決定されます。 https://github.com/jboss-logging/jboss-logging/blob/3.3.0.Fina

    JBoss LoggingのLogger Providerを切り替える - CLOVER🍀
  • Apache Solr 5.xでファセットを試す - CLOVER🍀

    Apache Solrで、ファセットを試してみました。やろうやろうと思っていたのですが、なかなか取り組めていなかったので。 ファセットって何?という話もありますが、単語やクエリ、範囲に対する件数を返す機能です。 tree-tips: solrjでfacet query検索 | Apache Solr moco(beta)'s backup: Solr Faceting パラメータいろいろ (1) Amazonとかで、カテゴリ単位とかで件数が出ているやつですね。 スキーマ定義 使用するschema.xmlには、今回使用するフィールドを以下のように定義。 ※「text_ja」は、Kuromojiを使用したフィールドです <field name="isbn" type="string" indexed="true" stored="true" required="true" multiValue

    Apache Solr 5.xでファセットを試す - CLOVER🍀
  • Spring BootでWARファイルを作る - CLOVER🍀

    そういえば、やったことなかったなぁと思いまして、Spring Bootで実行可能JARファイルではなく、WARファイルを作ってTomcatなどにデプロイするための方法を試してみました。 で、試すにあたって、せっかくなので以下のコンセプトでやってみたいと思います。 パッケージングはWARとする Spring MVC、JPAを使った小さなサンプルを動かす IDEなどの上から、mainメソッド越しに起動したい 単体テストも書いてみる こんな感じで。 準備 Mavenの設定。最終的には、こんな感じになりました。 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

    Spring BootでWARファイルを作る - CLOVER🍀
  • Apache Solr 5.x+crawler4jで、Webサイトをクロールしてインデックス化する - CLOVER🍀

    Apache Solrを使った、Webクローリングと全文検索をどうやってやろうかなぁ〜と思いまして。 OSSのクローラーっていくつかあると思うんですけど 参考) Comparison of existing open-source tools forWeb crawling and indexing of free Music http://ja.scribd.com/doc/123153248/Comparison-of-existing-open-source-tools-for-Web-crawling-and-indexing-of-free-Music#scribd FessやNutchのようなものを使ってもよいのですが、今回はある程度カスタマイズなどを前提にして、自分でプログラムを書くタイプのものがいいなぁと思いまして。 で、今回選んだのがこちらのcrawler4j。 craw

    Apache Solr 5.x+crawler4jで、Webサイトをクロールしてインデックス化する - CLOVER🍀
  • Apache Solr 5.xで、Managed Schema DefinitionからClassicIndexSchema(schema.xml)に変更しつつ、日本語検索したい - CLOVER🍀

    Apache Solrを使って、日語検索をするまでの初歩的な?話について。 まず、「bin/solr create」でコアを作成した時、日語系の設定はないのだろうなぁと思っていたのですが、意外とそうでもありませんでした。 スタンドアロンなSolrを使っている場合、「bin/solr create」で作成されるのはコアになります(SolrCloudの場合はコレクション)。 「bin/solr create -help」を行ってみると、そんな感じのことが書かれています。 $ bin/solr create -help Usage: solr create [-c name] [-d confdir] [-n configName] [-shards #] [-replicationFactor #] [-p port] Create a core or collection dependi

    Apache Solr 5.xで、Managed Schema DefinitionからClassicIndexSchema(schema.xml)に変更しつつ、日本語検索したい - CLOVER🍀
  • Apache Solr 5.xで、コアの作成からサンプルドキュメントの登録まで - CLOVER🍀

    前回のエントリで、Apache Solrのインストールをやったので、今度はコアの作成とサンプルのドキュメントを登録してみます。 Solrでは、コアという単位で設定やインデックスの保持を行うみたいですね。 以降の操作の前提として、Solr 5.3.0のインストールディレクトリをカレントディレクトリとします。 $ cd solr-5.3.0 コアの作成 コアの作成は、「bin/solr create」コマンドで行います。 オプションなどを知りたい場合は、「-help」を付けて実行。 $ bin/solr create -help Usage: solr create [-c name] [-d confdir] [-n configName] [-shards #] [-replicationFactor #] [-p port] Create a core or collection dep

    Apache Solr 5.xで、コアの作成からサンプルドキュメントの登録まで - CLOVER🍀
  • Apache Solr 5.3.0をインストールする - CLOVER🍀

    最近、Apache Solrを使うことになりそうなので、ちょっと勉強してみようかと。 Apache Solr http://lucene.apache.org/solr/ 完全に初めて、とは言えませんが、限りなくそれに近い状態でApache Solrを使います。 Quick Startを参考にして、進めていってみましょう。 Solr Quick Start http://lucene.apache.org/solr/quickstart.html インストール まずは、インストールからですね。 ダウンロード、展開。 $ wget http://ftp.tsukuba.wide.ad.jp/software/apache//lucene/solr/5.3.0/solr-5.3.0.tgz $ tar -zxvf solr-5.3.0.tgz ディレクトリを移動。 $ cd solr-5.3.

    Apache Solr 5.3.0をインストールする - CLOVER🍀
  • 1