Ubuntu12.04にJetty9とsolr4.5.1をインストールしてみる

ほぼここの通りでうまくいった。感謝です。
http://livelythinking.com/how-to-deploy-apache-solr-4-5-1-on-jetty-9/
一応自分用に日本語メモを。

OpenJDK 7

Jetty 9はJDK 7が必要

$ sudo apt-get install openjdk-7-jdk

Jetty 9

ここからダンロードするファイルを探す
http://download.eclipse.org/jetty/

ダウンロード
$ sudo wget "http://eclipse.org/downloads/download.php?file=/jetty/stable-9/dist/jetty-distribution-9.0.6.v20130930.tar.gz&r=1"  
ファイル名を変更して解凍
$ sudo mv "download.php?file=%2Fjetty%2Fstable-9%2Fdist%2Fjetty-distribution-9.0.6.v20130930.tar.gz&r=1" jetty-9
$ sudo tar -zxvf jetty-9
解凍したファイルをopt/jettyに移動
$ sudo mv jetty-distribution-9.0.6.v20130930 /opt/jetty
ログイン出来ないユーザーjettyを作成
$ sudo useradd jetty -U -s /bin/false
所有者をjettyに変更
$ sudo chown -R jetty:jetty /opt/jetty
起動スプリプトをコピー
$ sudo cp /opt/jetty/bin/jetty.sh /etc/init.d/jetty
jetty設定ファイルを作成
$ sudo vim /etc/default/jetty
/etc/default/jetty
JAVA_HOME=/usr/bin/java  
NO_START=0  
JETTY_ARGS=jetty.port=8080
JETTY_HOST=0.0.0.0  
JETTY_USER=jetty
起動
$ sudo service jetty start
起動確認
$ curl http://localhost:8080
設定を確認

/etc/default/jettyの内容が反映されてればOK?

$ service jetty check 
再起動時に自動で起動させる
$ sudo update-rc.d jetty defaults
サーバー再起動してから起動確認
$ netstat -tln
必要のないdemoを消しとく
$ cd /opt/jetty
$ sudo rm -rf webapps.demo

solr4.5.1

公式サイトのDownloadボタン押下。ファイルを探す
http://lucene.apache.org/solr/

ダウンロード
$ sudo wget "http://apache.tradebit.com/pub/lucene/solr/4.5.1/solr-4.5.1.tgz"
解凍
$ sudo tar -zvxf solr-4.5.1.tgz
必要なファイルを$JETTYHOMEにコピーしたり、$SOLRHOMEを作ったり
$ sudo cp -a solr-4.5.1/dist/solr-4.5.1.war /opt/jetty/webapps/solr.war
$ sudo cp -a solr-4.5.1/example/solr /opt/solr
$ sudo cp -a solr-4.5.1/dist /opt/solr
$ sudo cp -a solr-4.5.1/contrib /opt/solr
jettyで動かすための設定ファイルもコピー
$ sudo cp -a solr-4.5.1/example/contexts/solr-jetty-context.xml /opt/jetty/webapps/solr.xml
ライブラリもコピー
$ sudo cp -a solr-4.5.1/example/lib/ext/* /opt/jetty/lib/ext/
jettyの設定ファイルにJAVAの起動オプションを追記
$ sudo vim /etc/default/jetty
JAVA_OPTIONS="-Dsolr.solr.home=/opt/solr"
contribとdistの配置が変わったのでsolrの設定ファイルを修正
$ sudo vim /opt/solr/collection1/conf/solrconfig.xml 
<lib dir="../../contrib/extraction/lib" regex=".*\.jar" />  
<lib dir="../../dist/" regex="solr-cell-\d.*\.jar" />

<lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />  
<lib dir="../../dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="../../contrib/langid/lib/" regex=".*\.jar" />  
<lib dir="../../dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="../../contrib/velocity/lib" regex=".*\.jar" />  
<lib dir="../../dist/" regex="solr-velocity-\d.*\.jar" />  
$SOLRHOMEの所有者をjettyに
$ sudo chown -R jetty:jetty /opt/solr
jetty再起動
$ sudo service jetty restart

solrの管理画面が表示されればOK

http://localhost:8080/solr

TiShadowを導入するも動作せず・・・

環境

npm -v
1.3.2
node -v
v0.10.13
titanium -v
3.1.2

TitaniumCLIの初期設定

titanium setup

TiShadowインストール

sudo npm install -g tishadow

2.1.1が入った

tishadow -v
2.1.1

TiShadowを起動

defaultはport3000みたいで
railsと被ったため3030に

tishadow server -p 3030

tishadowappを作成

mkdir ~/tishadowapp && tishadow app -d ~/tishadowapp

ビルド

Titanium StudioでいうInstall to IOS Deviceをやるみたい

cd ~/tishadowapp
titanium build -p iphone -T device -F universal

TiShadowで実行したいアプリのディレクトリに移動&実行

cd /hogeapp
tishadow run

としたけどうんともすんとも言わず・・・
調べたところ、こっちもportの指定が必要だったみたい

tishadow run -p 3030

これで一応起動はした
したけど・・・

undefinedエラーが発生

eval(ns)["create" + baseName](stlye)

とやらが動かないらしい
どっかで見たことあるな?と思って探したところ
alloy.jsのUI.createメソッドのところで見つけた

場所を見つけたところで・・・なんだけど
まあ、evalが実行出来てないって事かな

UI.createが動かないなんて事は無さそうだけど
どうにも手詰まりで今日のところはギブアップ

RailsのmysqlでConnection refusedが出てはまった

DBに対してupdateやdeleteを行おうとしたら
接続が拒否されたとエラーになった

Errno::ECONNREFUSED (Connection refused -

結果としてはsunspotを起動してなかったから
インデックスが作成出来なくてエラーになってたみたい

いろいろ検索してそれっぽいの見つからなくて
まったく勘違いな事を試し続けて時間くってしまった・・・

Railsのsunspotで同義語検索を試す

solrの設定はqiitaを参考に

synonyms.txtでごにょごにょする

synonyms.txt
卵,たまご,タマゴ,玉子

[卵]と[たまご]と[タマゴ]と[玉子]は同じだよ。という設定っぽい

synonyms.txtを保存してインデックスを再作成してやる

bundle exec rake sunspot:solr:reindex

これで終わり!・・・と思いきや
卵で検索しても[たまご]だけうまく検索されなかった

原因は・・・?

solrの管理画面で確認したところ
[たまご]が[た]と[まご]に分けてインデックスされていた
そのため[たまご]で検索しても何もひっかからなかったようだ

f:id:ma2kubo:20131101160303p:plain

ユーザー辞書でごにょごにょ

たまごをたまごと認識させるためにユーザー辞書を使う

userdict_ja.txt
たまご,たまご,タマゴ,カスタム名詞

これでうまく検索出来るようになった。終わり

Titaniumでhiresなリモート画像をキャッシュするWidget作った

経緯

そもそもImageViewはリモート画像を自動でキャッシュしてくれるのだけど
hiresプロパティを設定した途端、うまくキャッシュ出来なくなってしまう

対策

一応キャッシュファイル自体は@2xな名前で作成してくれてる様なので
キャッシュファイルが存在する場合はそれを読み込む様にした

ついでに

プロフィール画像みたいな、普段はキャッシュしておきたいけど変更する時もある場合用に
キャッシュをクリアしたり、明示的にキャッシュするメソッドも追加した

github

そんなわけで
プロジェクト名はこんなんでいいのか
coffeeScriptのままでいいのか分からぬままgithubにあげてみた

https://github.com/ma2kubo/ma2.cachedImageView

iosでしか試してないのでiosのみの設定にしてあるけど androidでも使えるかも?(てきとー)

使い方

<Widget id="imageView" src="ma2.cachedImageView"></Widget>   
$.imageView.image = "http://hoge.com/hoge.png"

中身

こんな感じでapplyPropertiesしてるのでtssも反映されるはず

args = arguments[0] or {}
        
delete args.id
delete args.__parentSymbol

$.imageView.applyProperties args

同じくこんな感じにしたのでイベントも反映されるはず

exports.on = $.imageView.addEventListener
exports.off = $.imageView.removeEventListener 
ちなみにキャッシュの場所メモ
Ti.Filesystem.applicationDataDirectory + "../Library/Caches/"