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
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の管理画面で確認したところ
[たまご]が[た]と[まご]に分けてインデックスされていた
そのため[たまご]で検索しても何もひっかからなかったようだ
- analysisでいろいろ試せる
http://localhost:8982/solr/#/default/analysis
ユーザー辞書でごにょごにょ
たまごをたまごと認識させるためにユーザー辞書を使う
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/"