Maven Additional Pluginの除外設定
EclipseでMaven2を利用したJava開発をする時は
Maven2 Additionalが便利なんだけど、
最近のEclipseのバージョンだとプロジェクトのプロパティに
なぜかMaven2が出ないので除外設定ができず、
WEB-INFのlibにprovidedにしたjarファイルが出力されちゃう。
そのままmaven packageをwarに固めてTomcatなどにデプロイすると
ServletApiが重複してエラーになったりする。
そういう場合は
「.settings/net.skirnir.eclipse.maven.prefs」という空ファイルを作って
#Tue Oct 07 00:07:50 JST 2008
eclipse.preferences.version=1
excludes=geronimo-jsp_2.0_spec-1.0,geronimo-servlet_2.4_spec,servlet-api-2.3
みたいな感じで除外設定しましょう!
※excludesの中身はそれぞれ書き換えてね。
iOSのChromeでのJqueryMobile表示不具合
Jquery Mobileで作成されたページをiPhoneやiPad用のChromeでアクセスすると
ずっと読み込み中のまま画面が表示されない・・・。
読み込み中にリロード(F5的な)すると表示される場合もある。
どうやらこれはJqueryMobileの不具合っぽい。
HTMLのTitleタグに日本語などのマルチバイトがあるとそうなる模様。
これの原因究明に数時間取られた(怒)
Apache2メンテナンス画面
備忘録として・・・
アプリケーションリリース時などの
メンテナンス画面の表示方法。
・httpd.confに以下を記載
ErrorDocument 503 /maintenance/index.html
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maintenance/.*
RewriteCond %{REMOTE_ADDR} !^127.0.0.1
RewriteRule ^(.*)$ - [R=503,L]
※modules/mod_setenvif.soを有効にすること!!
JqplotのiPhone/iPadでの注意点
Jqplotの表はiOS系アプリだと
表をタップすると一瞬選択状態っぽくなる。
表のスタイル属性に下記を追加すればOK!!
- webkit-tap-highlight-color: rgba(0, 0, 0, 0);
JQueryMobileを利用していると
勝手にこの属性が適用されるので注意!!
Solr構築メモ!
●TOMCAT連携(solr.warを解凍してweb.xmlに以下を追加してwebappsへ)
●標準ポート以外でデータ更新
java -Durl=http://localhost:8080/solr/update -jar exampledocs/post.jar exampledocs/ipod_other.xml
●DBからインポート
mysql-connector-java-5.1.20-bin.jar
apache-solr-dataimporthandler-3.6.0.jar
をクラスパスに追加。
solrconfig.xmlにDB定義ファイルの場所を設定
schema.xmlに項目定義を追加
db-data-config.xmlにDBとSolrカラムのマッピング情報を追加
※Mysqlの場合、dataSourceタグの属性に「batchSize="-1"」を入れないと
なぜかsetFetchSizeでExceptionがでる。
●CSVからインポート
ヘッダーにfieldNameを定義したCSVをリクエストボディにつめて
下記のPOST送信。
http://{ドメイン名}/solr/{core名}/update/csv?commit=true
●複数core。
Solrは1スキーマ=1テーブルみたいな感じなので
複数テーブルを扱うにはcore(インスタンス)を分ける必要があるっぽい。
solr.xmlにsolrconfigとschemaを設定すれば複数できる。
ただ、その分不可はかかるかも。
solr起動中にcoreの追加・削除はできる様子。
Solrについての書籍は以下がおすすめです。
Sencha Touchでの端末判断
Webアプリにおけるよくある端末判断方法は
ユーザーエージェントに特定の文字列が含まれているか・・・だと思うけど
Sencha Touchは違うらしい。
iPhoneのエミュレータを色々試しても
ちゃんと判断してくれなくて、あれ?って思っててソースを覗いてみたら、
iPhoneかどうかはnavigator.platformにiPhoneの文字があるか・・・
つまりOS情報で判断している。エミュレータを使ってもここは「navigator.platform=Win32」と
返ってしまうからダメなんだよね。
iPadの場合はユーザーエージェントで判断している。
だからiPadエミュレータで表示するとExt.is.DesktopとExt.is.iPadは両方trueになる。
# ついでにExt.is.Tabletもtrue