アニメーションGIFを作る

先日より、Libre10のReadme.mdを改善しようと思い立ちまして、

このページ(わかりやすいREADME.mdを書く)

などを参考にさせてもらいながら書いてみたわけですが、

Libre10の”pdf検索ツール”という触れ込みを見ても、実際にどのような動きをするソフトなのかわかりにくいだろうと思い

動画を載せることにしました。

とはいえ、Readme.mdには動画を入れることは出来ないので、アニメーションGIFを入れることになります。

古き良きフォーマットです。

実際に触ったことはありませんが・・・

 

ということで英語pdfの入ったlibre10を撮影用に立ち上げ、早速デスクトップ上で実際に検索などしてみました。

↓こんな感じです。

libre10トップ

 

一応著作権上の問題からモザイクが掛けてあります。

マウスの挙動が変なのは、トラックボールを使っているからです><;

さて、この動画ですが、おおよそ横幅が1000pxほど有ります。

最初はPremiereでモザイクを掛けた後に縮小していたのですが、やっぱり見にくいと言うことで1000pxにしました。

しかし、ファイルサイズがPremiereから出した段階では、25MB!?

PhotoshopでWEB用に保存を使い縮小しても、5MBぐらいまでしか小さくなってくれません。

むむむ・・・

流石に大きすぎます。

こんな時こそImageMagickの出番です。

Adobe Premiereで連番pngで書き出し、

-layers optimizeを使って最適化を掛けます。

それなりに時間がかかりますが我慢我慢。

できあがった画像は3MB程度でした。

うーんもう一息と言うことでfuzzオプションを使い、粗くします。

これで1MB程度まで小さくなりました。

 

Animation GIFのエンコードには是非ImageMagickを使ってみて下さい。

できあがりはこんな感じになりました。→Libre10

ReadyNas Ultra4 -故障とその顛末-

現在私が使っているストレージはReadyNAS Ultra4(以後Ult4)とReadyNAS 316(以後316)で

メインにUlt4を使い、バックアップ(+スナップショット)として316という構成にしています。

それはともかく、先日から教科書のような巨大なpdfファイルをUlt4に保存した際に

ページの一部が黒や黄色くなる現象が見られました。

再起動したりscrubbingをしてみたりdmesgを見てみたりしたのですが、

エラーメッセージは出ていないようで、そろそろ寿命かな・・等と考えていました。

ためしにとあるPDFファイル(2GB,PC上にあるもの)をSamba経由でコピーしてみた後に

元のファイルと比較すると199MB以降が一致しません。

Sambaが悪いのかな等と思いftpを使ってコピーしてみると一致しません。

・・・

流石におかしいと思いエラーメッセージやsmartを見るもエラーは出ていません。

・・・うーむ困ったとおもい、HWチェックを行ったところ

でるわでるわ・・・3000以上のエラーが出ました。

通りで前から時々フリーズしてたわけです・・・Orz

これを買って指したところ、無事エラーは無くなりました。

メモリが1GB→2GBに増え、メモリ速度も上がってまだまだ頑張ってもらうことになりそうです。

テンプレートからMVVMへ

久しぶりにHTML欲がわいてきたので、Libre10のHTMLを見直そうといろいろ探していたところ、

Knockout.jsというエンジンを見つけました。<日本語本家>

これまでLibre10ではCGI側でテンプレートエンジンを用いてサイトを作っていたのですが、

それでは動的変更が難しくなる、可読性(私が言えた話では無いですが)が良くないと言うことで、

何とかしたいと思っていたところでした。

しかしサーバーでHTML直書き→HTML+高度?javascriptでjson受け渡しはかつてrec10のwebページでかいとことがありました。

その際はdojoを使って書いたのですが、見た目は良いものの私では扱いきれず、ごちゃごちゃとしたソースになってしまい、

結局友人の書いてくれたcgi html直書きに破れ、そのまま消えていった記憶があります。(というか三年前のログに残っています)

しかしLibre10ではスタイルは既にBootstrapに投げており、あとはテンプレートエンジンだけで良いのと

あれから既に3年が経過しているため、私、世界共々進化している可能性が高い!?と考え、再度チャレンジしてみました。

グーグル先生に伺ったところ、MVVMを実装するためのフレームワークとしては、

Angular.js Backbone.js Knockout.js の3つが有名のようです。その中では特にAnglular.jsが注目されているようですが、

最も学習コストが低いという噂を耳にしたため 軽量で無くては困るため、Knockout.jsを使うこととしました。

実際使ってみると、.tmplを少々書き換えるだけで使える & エディタでエラーにならないため本当に学習コストは低そうです。

ReadyNAS316 -容量切迫- <スナップショットを削除する>

久しぶりのReadyNAS関連記事です。

さて、ReadyNASを買ってそれなりの年月がたち、それほど容量を入れていないはずのReadyNAS316が

いっぱいになってきました。

316に入れているファイルの実容量が4TB程度で、現在ReadyNAS316の7TB(8TB-天使の取り分)がいっぱいになっています。

・・・おかしくない?・・・

いえ、おかしくありません。

Snapshotのせいです。

Snapshotは何もせずとも勝手に過去のバックアップを取ってくれる優れものです。

これがあれば、しばらく前に消してしまったファイルもその時点に戻れば復旧できますし、

完全なバックアップ代わりにはなりませんが、人的ミスを補ってくれるはず・・・です。

しかしいくらSnapshotが便利だとは言え、+3TBも取られたのではやってられません

そこで内部でどうなっているのか、解除の仕方を調べてみました。

 

そもそもReadyNASのスナップショットは採用ファイルシステムである、btrfsの標準機能を使って実装されているようです。

どこにあるのかとファイルを探してみると、

/data/._share/共有名/.snapshot フォルダに関連ファイルがあるようです。

WEBから常時保護のオプションを外すだけでは削除されませんでした。

そこでえいやとterminalから削除しようとしてみますが、Read-onlyファイルだそうで

一筋縄ではいきません。

 

そこでbtrfs関連のコマンドを探してみると

これで削除できるようです。

 

実際に削除してみると98%→65%まで下がりました。

 

リポジトリpath 変更のお知らせ

これまであまりopenSUSE Build Service(以後OBS)のパッケージ構成をわからないまま使っていたのですが、

最終的にrec10のパッケージングは困難を極めることが薄々わかってきたため、

OBSのリポジトリのパッケージ構成を変更しました。

libre10のrpmsをgn64のリポジトリ直下に置くようになりました。

もしrepoなど登録されている方がいらっしゃいましたら、

変更をお願いします。

新リポジトリ

RHEL6/RHEL7/Centos6/Centos7

libre10 rhel6/7向けリポジトリ追加

後々記事を載せるつもりではいますが、open Suse Buildserviceに個人リポジトリを作成しました。

https://build.opensuse.org/package/show/home:gn64/libre10

今後はここで各ディストリ向けのパッケージングを行いたいと思います。

リポジトリはこちら

http://download.opensuse.org/repositories/home:/gn64/

rhel7/centos7向けのrpmsに関しては動作確認を行いました。

rhel6/centos6向けは少々お待ちください。  (2014.07.19 Centos6.5にて動作確認しました)

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

前回前々回の続きです

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

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

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

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

 

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

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

インストール直後だと

#ファイル

/var/libre10          system_u:object_r:var_t:s0
/var/tmp/libre10     unconfined_u:object_r:rpm_tmp_t:s0
#プロセス
tomcat             unconfined_u:system_r:unconfined_java_t:s0
httpd(apache)        unconfined_u:system_r:httpd_t:s0
となっていて、
  • /var/tmp/libre10にhttpdプロレスがアクセスできないこと
  • /var/libre10以下にhttpdプロセスがアクセスできないこと
  • httpdプロセスがtomcatのポートを見に行けないこと
が問題のようです。

そこでファイルを全てhttpdからアクセスできるsystem_u:object_r:httpd_sys_content_t:s0

へ変更し bool : httpd_can_network_connect を1にすることで解決しました。

該当部分だけ抜粋

これでlibre10のパッケージングが完了しました。

 

パッケージはこちらにあります。

 

以下spec全文

Libre10パッケージング for Centos6.5 <2>ファイル一覧

前回依存関係について設定しました。

続いてfilesの設定です。

solrを動かす方法として、jettyとtomcatがあります。

元々はjettyを使用していたのですが、tomcatの方が管理が楽だろうということで

tomcat関連の設定をします。

solrに含まれているライブラリ、設定ファイルをtomcatのライブラリ以下に移動し、

tomcat用に/var/libre10フォルダを作り、関連ファイルを移動させます。(Centosには /srvが無いため仮にこうしています。良い方法はないものか・・・)

以上を踏まえてspecファイルは以下のようになりました。

次 : Libre10パッケージング for Centos6.5  <3> SELinux関連

 

Libre10パッケージング for Centos6.5 <1>依存関係

rec10のパッケージングが課題山積で進んでいませんが、

libre10のパッケージングはぼちぼち進んできたので

記事にしてみます。

 

そもそも、libre10が何を使っているかと言うことですけれども

Libre10は文字データベースにsolrを使っていて、solrはtomcatもしくはjetty上で動きます。

その他に検索/管理ページにperlのcgi、index作成にpythonを使っています。

纏めると、httpdserver(apacheなど), tomcat, python, perl, スクリプトの各モジュール群 pdfからテキストを抜き出すためのソフト(poppler-utils), 画像軽量化のためのソフト群(GraphicsMagick libjpeg)

になりました。

これらをlibre10パッケージとlibre10-wwwパッケージに分けて記載します。

尚、GraphicMagickを使う関係から、標準リポジトリではパッケージが足らないため、EPELの設定済みであることを前提とします。

libre10-wwwに大量のスクリプト関係のライブラリが入ってしまいました。

しかしlibre10-wwwはEPELパッケージングされていないライブラリも使うので、

あまり良くない事とは思いますが、cpanやpip/easy_installで関連パッケージを入れます。

lxmlはリポジトリのバージョンが古すぎるため。他のライブラリは一部動かないバージョンがあったため指定しています。

 

加えて、cpanやpip/easy_installでビルドするのに必要なライブラリのソースを依存関係に加えておきます。

とりあえずこれにて依存関係の設定はおしまいです。

ここまでのspecファイルを張っておきます。

次 : Libre10パッケージング for Centos6.5 <2>ファイル一覧

パッケージング入門

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

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

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

TO DO

<rec10のパッケージング化>

  1. 録画フォルダの標準パスをどこにするか、インストールパスをどこにするか
  2. 依存関係をどのようにするか、rpmの作り方
  3. debの作り方
  4. rectool(rec10-web)のインストール先をどうするか
  5. b25のインストールをどうするか
  6. MySQL,録画ユーザーをどうするか
  7. rec10デーモン化

<libre10のパッケージング化>

  1. Libre10パッケージング for Centos6.5  <1>  依存関係
  2. Libre10パッケージング for Centos6.5  <2> ファイル一覧
  3. Libre10パッケージング for Centos6.5  <3> SELinux関連

以上、ぱっと思いつく限りでも問題は山積ですがぼちぼちやっていきたいと思います。