Linux版sophosが暴走

最近開発停止していたとある個人プロジェクトを開発中で忙しかったりします。


khondalit.hatenablog.com
さて、以前このエントリーで紹介したsophosの続報です。
Macだと軽かった(と感じた)sophosをLinuxに入れたのですが、今日は異常に重さを感じtopしてみると、sophosが暴走しておいました。

topの結果がこのようになっています。savscandがsophosのスキャンプロセスです。

23797 root      20   0  808100 189428   6156 S  35.9  1.2   0:03.57 savscand
21320 khondalit   20   0 2091340 824780  28660 S  23.9  5.1 744:01.15 firefox
1383 root      20   0  527656 329868 111560 S  14.0  2.0   2169:05 Xorg
25357 root      20   0  725936 192276   6428 S  13.6  1.2   0:04.28 savscand

出たばかりですし、まだまだという所なんでしょうか。
ひとまずpkillして逃げておきました。

/opt/sophos-av/bin/を覗いてみるとsavupdateというのを発見、どうやらアップデートを行うもののようです。
sophos自体なのかウィルス定義なのかよく分かりませんが、ひとまず実行してみると/opt/sophos-av/以下の日付が色々変更されている様子。
sophos自体のアップデータのようです。
ひとまずこれで様子見でしょうか。Linux自体にはアンチウイルスソフトが少ないので、sophosには期待しているので頑張って欲しいですね。

個人的な、therubyracer + libv8問題の解決方法

便利なRails上で動かすJavaScriptのエンジン。Rails4.2系になっても相変わらずの環境設定の急所ですね。
久しぶりに個人Mac上で環境構築すると、相変わらずMacだと引っかかりました。

検索して出てくるようにインストールのコツはtherubyracerとlibv8のバージョンの組み合わせを最適にすること。
一言で言えば簡単なのですが、正しい組み合わせなど分からずちょっと環境が変わると同じGemfile.lockでもエラーとなる曲者ですね。

で、ふと思いつき新規Railsプロジェクトを作成してbundle installすると問題なくインストールされました!!
ということで、このGemfile.lockからバージョンを抜き出して対象のGemfileにバージョンを指定してやるとすんなりbundle install完了!

ちなみに、今回の環境は以下のとおり。

環境構築にハマっている人はこの方法だといけるかも。

軽いsophosのLinux版が出たので早速試してみる

www.sophos.com

ちなみに、ディストリはMint Linux

sav-linux-free-9.9.tgzがダウンロードされます。

$ tar xvfz sav-linux-free-9.9.tgz
$ cd sophos-av
$ sudo sh install.sh

あとは選択にしたがって進めていきます。
/opt/sophos-av/にインストールされるようです。
インストールが終了するとsavdとsavscandが動いています。

$ ps aux|grep savd
khondalit   19497  0.0  0.0  12708   940 pts/7    S+   08:24   0:00 grep --colour=auto savd
root     28678  0.0  0.0 487864  6192 ?        Sl    5月18   0:01 savd etc/savd.cfg
$ ps aux|grep savscand
root      5494  0.1  1.2 808100 199092 ?       Sl   05:38   0:17 savscand --incident=unix://tmp/incident --namedscan=unix://root@tmp/namedscansprocessor.3 --ondemandcontrol=socketpair://52/54 socketpair://47/48 --threads=5
root      5503  0.1  1.1 725936 194860 ?       Sl   05:38   0:17 savscand --incident=unix://tmp/incident socketpair://40/41 --threads=5
khondalit   19510  0.0  0.0  12712   944 pts/7    S+   08:25   0:00 grep --colour=auto savscand

/etc/init.d/にもそれらしき起動スクリプトがインストールされています。

$ ls /etc/init.d/|grep sav
sav-protect*
sav-rms*
sav-web*

Mac等とは違いメニューが無いようですがまあ問題ないのでしょう。
ぱっと見た感じ、ログはどうやら/opt/sophos-av/log/に出るようです。

Macでは軽くて気に入って使ってますので、当分使ってみようと思います。

nanocでsitemapを自動生成する

nanocについては以前書いていた記事が2012/1/24なので3年ぶり?でしょうか。
そもそも色々忙しすぎてこのサイト自体更新してないわけですが、最近は多少時間が取れるようになってhttp://linuxc.infoを更新を少しづつしています。
そしてふとgoogle webmaster toolを入れてsitemapが必要らしいので調べるとnanocで自動生成出来るとの事で早速試してみました。

builder

gemでbuilderが必要なのでインストールしてください。

helperのXMLSitemapを使用する

nanocにはhelperという追加の機能があります。
またnanoc自体がデフォルトで幾つかのhelperを持っていますが、XMLSitemapはこのデフォルトのhelperです。

lib/default.rbに以下を追加します。

include Nanoc3::Helpers::XMLSitemap
URLの設定

config.yamlにURLを追加します。nanocはURL自体は知らなくても問題ないですがsitemapを作る場合には必要です。
自分の場合はhttp://linuxc.infoにします。
この時注意事項として最後のスラッシュ'/'は必要ありません。あっても問題ないですがsitemapに http://linuxc.info//startup/ となってちょっとださいです。

config.yaml

base_url: http://linuxc.info
content/sitemap.xml

content/sitemap.xmlを作ります。この内容をそのままコピペで。

<%= xml_sitemap :items => @items.reject{ |i| i[:is_hidden] || i.binary? } %>
Rules

Rulesにsitemapを作るルールを追加します。
どうも既存のcompile、routeよりも前に追加する必要があるようです。

Rules

compile 'sitemap' do
    filter :erb
end

route 'sitemap' do
    item.identifier.chop + '.xml'
end
compile

あとはいつもの様にcompileしてエラーがでなければOK。
作成されたsitemapをアップロードしましょう。
ちなみに、content以下には存在しているけど公開していないコンテントがあれば、これもsitemapに追加されるので注意!
output/sitemap.xmlを自分で編集して削除するのを忘れずに。

Rails環境でのドキュメントの自動化

仕事しているとドキュメント大事ですよね。
いつ人の移動があるか分からないし、新しく追加されても忙しいと説明する時間もなかったり。
そういう管理しているのが問題なのですがそれはそれとして、やぱっぱりドキュメントはあるに越したことはないです。

ということで、仕様書とかは別にしても現状の成果物に対してのドキュメントの自動化を行っています。
ドキュメントを作りたいけど忙しい方たちはこれを行うだけでも大分楽になるかと。

YARD/RDoc

昔からよくあるソースコードから作るドキュメント。
DoxygenJavaDocなどのRubyバージョンですね。
適切なコメントを書くと、クラスとそのメソッドのドキュメントを作成してくれます。

Rdocは便利なのですが、YARDの方が一貫性があるなどより良い感じですので、こちらを採用しています。
最悪コメントを書かなくてもとりあえずのドキュメント化はしてくるようですし、

rails-erd


voormedia/rails-erd · GitHub
DataBaseからER図を自動生成してくれます。
これがあると無いとでは大違いですね。

schemadoc


rubylibs/schemadoc · GitHub
こちらはDatabaseからテーブルとカラムの一覧をjsonで出力してくれます。
Railsのダメなところはtable宣言を見たい場合は、Databaseを直接見るぐらいしか方法がないことです。
migrationは運営していくにつれて増加しますしカラムの変更を行うと複数のmigrationファイルが増えていって理解不可能、modelを見てもテーブルの状態は書いていないです。
gemでmodelに出してくれるものもあるようですが、マネージャー等からするとドキュメントはやっぱり別途必要。
ということで、schemadocだと自動生成してくれるのでおすすめです。

autodoc


r7kamura/autodoc · GitHub
Web API用ドキュメント自動生成ツール
APIRSpecに少しの修正を行えば、RSpecを実行するだけでドキュメントが生成されます。
素晴らしい!


これだけでプロジェクトのドキュメント管理が大分楽になります。
面倒な作業は自動化をしてプログラムに集中するようにしています。
自動化バンザイ!

最近Railsでよく使うgem

個人的に定番をまとめておきたいので。
細かくは説明しません。

devise

まあ基本です。こればっかりは代替ってなかなか無いですね。

slim-rails

erbの代わりにシンプルにViewを書けるようになります。
今更erbは辛いですよね。個人でRailsを使うならば現在はほぼ確実にこれを採用します。

rails_config/settingslogic

どっちでも良いですが、定数管理はしておいたほうが良いでしょうね。

kaminari

定番

paranoia

状況次第ですけど便利といえば便利。
ただ、問題もあるようで、Kakurenboの方が良いかもしれません。

activerecord-import

BULK INSERTしたいならこれ。

rack-mini-profiler

発行されるSQLの調査などに

yard

ドキュメントの自動生成に。

rails-erd

ER図を自動で書いてくれます。

rubocop

仕事だとコーディングルールの統一、チェックに。

rspec,factory_girl_rails,capybara,poltergeist

テスト系色々。
ここは時代によっても移り変わりが激しいですね。

YosemiteでAirDropが反応しない場合の対応方法

会社などの組織でMac複数使っているとAirDrop便利ですよね。
HipChat、Slackなどのチャットツールでもファイル共有できるので使用頻度はそこまで高くないのですが。

さて、今年に入ってから会社MacYosemiteにしたのですが、この記事でも書かれているようにAirDropがまともにつながりません。

[L] AirDropが反応しないなら、Instashareを使えばいいじゃない | Lifehacking.jp

対策方法ですが、自分の場合はAirDrop画面の下にある"お探しの相手が表示されませんか?" -> "古い機種のMacを検索"で検出できました。
f:id:khondalit:20150116104211p:plain

調べてはいませんがおそらく、Yosemiteから通信プロトコルが変更をあったけどプロトコルか実装に問題があって、過去のプロトコルを利用すると通信が出来るのではないでしょうか。