Libre10パッケージング for Centos6.5 SELinux関連

前回前々回の続きです

さて、とりあえず最低限のrpmを作ってみたはいいものの、実際にインストールしてもうまく動きません。

何が行けないのでしょうか。そうです、SELinuxのことを何も考慮していません。

SELinuxの説明に関してはgoogle先生にお任せするとしますが、

webで軽く検索するとすぐにselinux 無効と言った文言を散見することになります。

 

確かに今のままでもselinuxを無効にすれば動きますが、せっかくパッケージを作っているのだからselinuxに適応させたい!

と言うことで問題を調べてみました。 続きを読む

パッケージング入門

はて、前々からやりたいと思っていた、rec10およびlibre10のパッケージングにチャレンジしてみることとします。これまではmake&make installで依存関係から何からcpanとか使って入れるようになっていましたが、

cpanやpipだとバージョン管理が出来ない、アンインストールがやりずらい等の問題があったためこの機会にrpmやdebファイルを作ってみようと言うことです。

とりあえずこの記事はじわじわ更新していく予定なのでやる予定のことをリスト化していきます。 続きを読む

XCode4.6.3におけるdelegate指定

iLibre10を作るべく、ネット上の情報をあさりながらObjective-Cの勉強をしています。

そして早速はまったのがdelegate関連・・・

UIButtonなどActionのしてが出来る物なら良いのですが、classをdelegate先として指定しようとしても、

ネット上に転がっている情報にある、”File’s Owner”なる物が見当たりません。

調べてみたところViewControllerに対してdelegateを指定すればViewControllerとひも付けされたclassでdelegateを取得できるようです。

下のこんな感じ

File'sOwner

Objective-Cは全く初めてなので、間違いなどありましたらご指摘ください。

solrpyとpysolr

Libre10のリリースの用意をしていて、debianだと大体の依存ソフトが

パッケージ化されているんだけど、solrpyだけがどうしてもPyPIに頼らざるを得ないということで、パッケージ化されているpysolrに乗り換えてみました。

 

ぶっちゃけそれほどの違いはなさそうだし、移行も簡単だったんですが、

multiValuedのelementを挿入する際にpysolrだとelementはstringである必要がありますといったエラーが出てうまくいかない

 

[python]
solrcon=pysolr.Solr(http://~~~:8983)
solrcon.add([{
    ‘single’ : ‘single-text’
    ‘multiValued’ : [‘multi-text1′,’multi-text2’]
}])
[/python]

こういう風に設定するはずなんだがうまくいかない。

 

結論から言うと、pysolrが内部で使っているlxmlのバージョンが古いとこのエラーが出るらしい。

ということでlxmlのバージョンを3.2.1にアップグレードすると、この問題は起こらなくなりました。

 

jQuery mobileにおけるviewport改変

jQMを使ってLibre10向けのmobile頁を作っていて、

どうもviewport タグを設定するとスマホ/タブレットでズームが出来なくなるのが気になって調べてみた。

[html]
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.css" />
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.js"></script>
</head>
<body>
[/html]

こちらは公式http://jquerymobile.com/demos/1.2.1/docs/about/getting-started.htmlからの引用このままだとuser-scalable=noになって、ズームできないから変えてみようと言うことで

[html]
<meta name="viewport" content="width=device-width, initial-scale=1">を

<meta name="viewport" content="width=device-width, user-scalable=yes, maximum-scale=5">へと変えてみたわけです。
[/html]

しかし、何も起こらない。

chromeの開発者ツールで見てみると

該当部elementが

[html]
<meta name="viewport" content="width=device-width, user-scalable=yes, maximum-scale=5, user-scalable=no, initial-scale=1 ">

になってるんです。
[/html]

どうやらjQuery mobile内で書き換えられてるらしい。

mobileinitで書き換えてみたりしたけれどもうまくいかず、

最終的にviewportの設定をjQuery mobileを読み込んだ後に変更して、うまくいくようになりました。

[html]
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.css" />
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.1/jquery.mobile-1.2.1.min.js"></script>

追加→<meta name="viewport" content="width=device-width, initial-scale=1"> ←追加

</head>
<body>
[/html]

solr dbのアップデート

さて、最近Libre10の開発中にsolr dbのindexを変更したくなったため、調べてみたところ

Solrではindexのupdateには対応してない!とのことで

reindexingが必要と言うことでした。

仕方ないのでlibre10用のSQLiteのDBにchanged=1としてupdateが必要であるというフラグを立てておいて

indexerの監視時にreindexするようにしました。

これでfqを使ったより高度な検索ができるようになるはず!

Devel::NYTProfによるperlプロファイリング

Libre10の開発をしていて、pdfからjpegを切り出すcgiの速度調査をしたいと思い、
プロファイルについて調べてみました。

調べた結果がこれ
http://search.cpan.org/~timb/Devel-NYTProf/lib/Devel/NYTProf.pm

プロファイル結果をソースコード付きでHTMLにしてくれるのが非常に便利です!

とはいえ、CGIの引数を与えたときの動きを見たかったので、Apacheの該当フォルダのconfに

[bash]
SetEnv NYTPROF "file=/tmp/nytprof.out"
SetEnv PERL5OPT "-d:NYTProf"
[/bash]

を追加、nytprofhtmlで解析して調べるようにしました。

画像縮小処理がscaleよりresizeのほうが早いとか、jpegtranは結構時間かかってるから軽量化せずに

表示させた方が結果的に早いとか、色々わかってとても便利でした。

[参考] : http://perl-hunting.blogspot.jp/2010/01/use-develnytprof-with-cgi-and-apache.html

[注意]

フォルダ内にあるCGIにアクセスする毎に/tmp/nytprof.outが上書きされるので、

テスト環境で実行した方が良いかと思われます。

Libre10 開発開始

前回のrec10に引き続き、誰得系プロジェクト第二弾!

Libre10を開発開始しました。

大学に入って資料やテストプリントなどをスキャン&OCRしてたのですが、

せっかくのこのデータ、生かさなきゃもったいない

文書データを活かす→全文検索っしょということで、最初はデスクトップサーチを使ってたわけです

デスクトップサーチ最強でしょ、spotlight使いやすすぎワロタとか言ってたら、

スマホで使えなかったわけです。

スマホで使えなくて何がWeb2.0(死語)だ!ということで、時代はクラウド、そう、雲の時代なわけです。

蜘蛛の糸から雲へ。

なんとなく日本語的に収まりがよかったりしますが、そんなことどうでもいいです。

 

自分の持ってるデータ、クラウドで使えなくて何が情強(自称)だよ!ってことです。

御託はこれぐらいにして、

Libre10とは

検索エンジンにApache solrを用いて、検索結果のpdfを1ページごとに切り出して表示する、

pdf統合管理プラットフォームです。(大袈裟

http://sourceforge.jp/projects/libre10/

こちらから最新のソースなどは見られます。一応手元ではひと通り動いています。