takayuki_tk's diary

本当はScalaとかHaskellを使いたい

2013-01-01から1年間の記事一覧

awesome! Spring-Boot

Spring-Bootがすごいので宣伝です。 僕はXML地獄といわれた頃からSpringをつかっています。 Spring1.x + Struts1.x + ibatis、、とかいう構成。 何かあってもXMLを変更するだけです! コードを修正する必要はありません! なんて言葉が(確か)は流行ってい…

MongoDBとScala -ScalaでMongo

コレクションの取得 MongoConnection("localhost")("test")("collections") insert collection.save(Map("name" -> "takayuki", "work" -> "engineer")) or collection += (Map("name" -> "takayuki", "work" -> "engineer")) Query DSLを使ったinsert val d…

MongoDBとScala

日本語でMongoもだいぶ終わりに近づいたのでScalaで復習してみます。 Mongoのオンライン講義はこちら https://education.10gen.com/courses/10gen/M101P/2013_September/about WEEK1はMongoの特徴とか コンセプト 限りなくRDB並みの機能を追求しつつkey valu…

NOT_ANALYZEDなFieldを検索

Lucen In Actionの4.7.3をみてて面白そうだったので実験。 でNOT_ANALYZEDに指定したFieldと、もう一つ別のフィールドがある場合。 例だとpartnumとdescriptionの2つのフィールド。 parnumは完全一致で検索したいのでanalyzeしたくないような値が入っていま…

selenium

めんどくさがりなのでブラウザのテストとか自動化したいです。 せっかくなのでscalaで実装してみました。 サンプルでgoogle様を使わせていただきます。 まずはこういうものを用意します。 def using(f: WebDriver => Unit)(implicit url: String): Unit = { …

IndexReaderはOpenした時点でのViewを検索する。

らしいです。 By Lucen In Action 2.11.1 /** * IndexReaderはopenした時点でのインデックスを検索する。 * Readerをopenした時点でのviewを更新する。 * インデックスを更新しても反映されない。 * * Writerの反映を検索したければReaderを再オープンしなけ…

Lucene4でMaxFieldLengthはどこいった?

Lucen In Action 2.7 Field truncationをみて実験しようとしたらMaxFieldLengthなんて見つからないorz よくある事だけど非推奨どころか存在自体なくなってたよ。 代わりはLimitTokenCountAnalyzerでした。 @Test public void testMaxFieldLength() throws Ex…

propertyファイルの値をjspに出力したい

Controllerで値をセットしてもいいけど色んなところで表示されるとめんどくさいとき。 keyとvalueを直接指定したい場合はこんな感じの定義を追加。 <bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="singleton" value="true" /> <property name="properties"> <props> <prop key="hoge">fuga</prop> </props></property></property></bean>

FieldをANALYZEDにするかNOT_ANALYZEDにするか

最近Lucen In Actionをよんでいるので再びLuceneネタ。 ver4ではTextFieldとかStringFieldになっているので実は隠れてしまっているけど何が違うかというのを実験してみたので記録。 ANALYZEすると完全一致でヒットしなくなっちゃうので注意しないといけない…

Lucene ver3とver4の違い

Lucene In Acionのサンプル試したところVer4とVer3で大きくAPIがかわっていたのでメモ。 IndexReader ver3 Directory directory = new RAMDirectory(); IndexReader reader = IndexReader.open(directory); ver4 Directory directory = new RAMDirectory(); …

Spring3 + Solr EmbeddedSolrで開発を楽にする

ローカルで開発するときSolrを別にあげるのがめんどくさいので。。。 ひとまずこんなinterfaceを定義 import org.apache.solr.client.solrj.SolrServer; public interface SolrServerFactory { SolrServer getSlaveServer(); SolrServer getMasterServer(); …

Spring MVCでjsonとjsonpを上手に返す

APIサーバでクエリにcallbackがあるときはjsonpにしたいけどない場合はjsonで返す方法。 Controllerでresponseに文字列で出力するのはちょっとださい。。。 探した感じだと見つからない。。 https://jira.springsource.org/browse/SPR-7115?page=com.atlassi…

BWT変換 (Scala)

高速文字列解析の世界にあるBWT変換をScalaで実装 まず接尾辞配列を作成 scala> val t = "abracadabra" t: java.lang.String = abracadabra scala> t.reverse.foldLeft(List("$")) { (xs, x) => (x.toString + xs.head) :: xs } res0: List[java.lang.String…

Spring MVCで非同期処理

Servlet3.0が使えればAsyncContextで対応できそうだけど、 お仕事でServlet3.0使える幸せな人は少数はですよねー。 という訳でいろいろしらべてたらSpringに非同期処理を実現する方法がある事がわかったのでメモ。 設定ファイルに以下を追加

Springでバッチ

SpringでWebアプリケーションを作ってバッチ処理がしたい場合。 Spring Batchを使うほどでもないし、、、ということで。 pom.xml <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spr…</artifactid></dependency>

JavaScript 関数呼び出しのthis

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティスによれば JavaScriptのthisは メソッド呼び出し 関数呼び出し コンストラクタ呼び出し apply呼び出し の4パターンあるそうです。 この中で問題なのが筆者が言語設計の失敗とまでいってい…

JavaScriptの不思議な挙動

変数を定義しないで使うとReferenceErrorで怒られます。 FireBugのコンソールとかで突然こんなことをすると a + 1 ReferenceError: a is not defined って怒られます。 だけど this.a + 1 だとなぜかNaNになります、あれ?? ちなみに window.a + 1 でもNaN…

JavaScriptのvarをつけないといけないわけ

よくvalと間違えるvarですが(僕だけ?)、つける場合とつけない場合はぜんぜん違います。 つけないとグローバルの変数になっちゃってグローバル領域を汚しちゃいます。 var f = function() { x = 1}f()console.log(x) // x = 1varさえつけておけば。。var f…