今後は日記やメモをはてなブログに書くことにした

progd's blog

  • RSSフィードのリダイレクトを設定した
  • 記事の移行・リダイレクトは行わない

最近はてなダイアリーよりはてなブログのがかっこよくなりつつあるみたいなので移行した。RSSフィードはリダイレクト設定したが、記事の移行とリダイレクトは設定しなかった。

移行に際して、Markdown記法で書けるのではてな記法を忘れることができるというメリットがある。

さくらインターネットの VPS に入れた Debian wheezy に mosh をインストールする

ついでに ufw も導入する。

% sudo apt-get install mosh
% sudo apt-get install ufw
% sudo ufw default DENY
# ↓ ssh のポートを変更している場合はそれを指定する
% sudo ufw ssh
# mosh の使用する UDP 60000 〜 61000 を許可
% sudo ufw allow proto udp to any port 60000:61000
# その他、必要なポートを開ける
# ...
% sudo ufw enable

注意

  • IPv6 を使用していない場合、 ufw の設定ファイル (/etc/default/ufw) で IPV6=no にする必要がある (デフォルトでは yes になっている)
  • ufw enable コマンドの実行は、 ssh を allow の設定をした後でないとエラー () になる
    • ufw はデフォルトで全ての接続を DENY するので、 ssh を許可しないで enable すると ssh が使えなくなると思われる。これを回避するためか?

さくらインターネットの VPS に入れた Debian wheezy で gitlab 動かすメモ


gitlab の 5.2-stable を入れた。
公式のインストールマニュアル 通りにいかなかった部分を記述する。

/usr/bin/python2 というシンボリックリンクを作る

マニュアルにちゃんと記載されているのだが、 python のバージョンが最初から 2 だったので見落としてしまっていた。

redis のバージョンを 2.0.0 以上にする

apt で入るバージョンは 1.2.6 のため、 gitlab のチェックコマンドで警告となる。 apt で入れたものを削除し、ソースをビルドしてインストールする。

% sudo apt-get remove redis-server
% wget http://redis.googlecode.com/files/redis-2.6.13.tar.gz
% tar xvf redis-2.6.13.tar.gz
% cd redis-2.6.13
% make
% sudo make install
% cd utils
% sudo ./install_server.sh

git のバージョンを 1.7.10 以上にする

redis と同様。

# 依存パッケージをインストール
% sudo apt-get build-dep git
# apt で入れた git をアンインストール
% sudo apt-get remove git git-core
# 確認: git が rc となっていること
% dpkg -l | grep git
# ビルド
% wget https://github.com/git/git/archive/v1.8.3.zip
% unzip v1.8.3.zip
% cd git-1.8.3
% make configure
% ./configure  --with-curl --with-expat
% make
% sudo make install
# 確認
git --version

gitla のチェックコマンドで例外発生

エラー: undefined method `match' for nil:NilClass

原因は git コマンドが見つからないため。 config/gitlab.yml の 151 行目に、 git のパス設定があり、これが /usr/bin/git となっている。これを環境に合わせて (今回は /usr/local/bin/git に) 変更する。

nginx のポート番号を変更

nginx の設定の他に、 gitlab の設定変更も必要。
gitlab-shell/config.yml にて gitlab_url にポート番号を指定する。

gitlab サービス開始でエラー

sudo service gitlab start を実行すると

root は sudoers ファイル内にありません。この事象は記録・報告されます。
root は sudoers ファイル内にありません。この事象は記録・報告されます。
GitLab service started

と表示されるのに起動しない場合。
root が git に su できていないので /etc/sudoers に

root ALL=(ALL:ALL) ALL

と追記する。

CodeMeter による Windows のゴミ箱中身見えない問題、 Disc Configuration が無い場合の解決法

Widnows 7 Home Premium 64bit で Propellerhead Reason 6.5 を使っていて、ゴミ箱の中身が見えない現象が発生していた。
問題の原因は、 CodeMeter というライセンス管理ドングルの設定によるものらしい。
Windows7でPropellerheadsのドングル(codemeter)を使うとゴミ箱が変になる件
上記のエントリでは Windows 64bit 環境のみで解決する方法は不明とあったが、 Prop のフォーラムに解決策が書かれていて、その通りにしたら解決した。
CodeMeter fucks up Windows Recycle Bin - Propellerhead Forum
実施手順は以下のとおり。

  • スタートメニュー / すべてのプログラム / CodeMeter / Tools / CodeMeter Command Prompt をクリック
  • DOS プロンプトが起動するので、コマンドを実行
cmu32 /s X-XXXXXXXX --set-config-disk RemovableDisk
  • プロンプトを閉じ、 USB ドングルを一度抜いて再度差す

なお、X-XXXXXXXX は CodeMeter Control Center で「シリアル」と書かれている数字。

フィードエントリの全文を取得する Automatic Ruby プラグイン

を作りました。
full_feed.rb FilterFullFeed (Automatic Ruby plugin) · GitHub

使い方

full_feed.rb をダウンロードして、

[Automatic Rubyディレクトリ]/plugins/filter

もしくは

~/.automatic/plugins/filter *1

に置く。
全文取得には LDRFullFeed の SITEINFO を使用するので、これもダウンロードしておく。 http://wedata.net/databases/LDRFullFeed/items.json *2
Automatic Ruby のレシピにて、 FilterFullFeed の config: siteinfo に上記の SITEINFO ファイルを指定して使う。

使用例

で、これを他のプラグインと組み合わせて、たとえば、 NAVER まとめの画像集エントリの画像を一括保存したりできます。

plugins:
  - module: SubscriptionFeed
    config:
      feeds:
        - http://matome.naver.jp/feed/matome/2129948007339738701

  - module: FilterFullFeed
    config:
      # LDRFullFeed の JSON ファイルを指定
      siteinfo: /Users/progd/.automatic/ldrfullfeed.json

  - module: FilterImage

  - module: StoreTargetLink
    config:
      # 画像ファイルの保存先ディレクトリ
      path: /Users/progd/Pictures/wallpaper
      interval: 1


結果


便利ですね。

*1:Automatic Ruby のコマンド automatic-config scaffold を実行すると作成されるディレクトリ。詳細は Automatic Ruby のドキュメントを参照

*2:一部に誤った情報が登録されているらしい。たとえば NAVER まとめなどは正しく取得できないので、自分で直す必要がある。修正して保存するスクリプトはこちら Fetch LDRFullFeed JSON and fix type · GitHub

launchd.plist の書き方


Mac で cron ぽい事をしたい場合、 launchd を使う。
以下は、 anything-filelist 〜すべてのファイルを瞬時に開く方法〜 - http://rubikitch.com/に移転しました で解説されている、 Emacsプラグイン Anything で使用するファイルリストの更新を、 cron のかわりに launchd で行う設定。


下記のファイルを作成し、 launchctl コマンドの load で登録する。


~/Library/LaunchAgents/emacs-anything-make-filelist.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>emacs-anything-make-filelist</string>
    <key>ProgramArguments</key>
    <array>
        <string>ruby</string>
        <string>/Users/progd/source/make-filelist.rb</string>
        <string>~</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
    <key>StandardOutPath</key>
    <string>/tmp/all.filelist</string>
</dict>
</plist>
$ cd ~/Library/LaunchAgents/
$ launchctl load emacs-anything-make-filelist.plist


エラー等が発生した場合、 Console.app で出力内容を確認できる。

設定の意味

ProgramArguments の array 以下の string 要素に実行するコマンドを記述する。
コマンドに与える引数は、別の string 要素にする必要がある。*1


StartCalendarInterval の dict 以下の要素は、 key と integer の組を、 cron の要領で指定する。
上記の例では、毎時 0 分、 1 時間ごとにジョブが実行される。
dict を空にすると、1 分ごとに実行されるようになる。


man 5 launchd.plist より抜粋:

StartCalendarInterval 
     This optional key causes the job to be started every calendar interval as speci-
     fied. Missing arguments are considered to be wildcard. The semantics are much
     like crontab(5).  Unlike cron which skips job invocations when the computer is
     asleep, launchd will start the job the next time the computer wakes up.  If mul-
     tiple intervals transpire before the computer is woken, those events will be
     coalesced into one event upon wake from sleep.
     このオプションのキーは指定された各カレンダーインターバルでジョブを起動します。
     省略された引数は、ワイルドカードとみなされます。文法は crontab(5) に非常に似ています。
     コンピューターがスリープしている場合、cron はジョブの起動をスキップしますが、
     launchd は次回コンピューターが復帰した時にジョブを起動します。
     コンピューターが復帰する前に、複数のインターバルが発生した場合、
     それらは復帰直後に一つのイベントに結合されます。


StandardOutPath は、シェルでリダイレクトをするように、標準出力を保存したいファイルパスを指定する。

注意

登録済みの plist ファイルを編集しても変更は適用されない。一度 unload してから登録し直すこと。

$ launchctl unload emacs-anything-make-filelist.plist && launchctl load emacs-anything-make-filelist.plist


参考: cronからlaunchdへ(より効率的なジョブ管理を目指して) - ザリガニが見ていた...。

*1:通常のコマンドのように、ひとつの string 要素内にスペース区切りで記述すると、要素全体がコマンドとして扱われてしまうようだ。上記の例をスペース区切りで記述した場合 posix_spawn("ruby /Users/progd/source/make-filelist.rb ~", ...): No such file or directory というエラーとなる

Macにおけるマウスの設定

Macのマウスカーソルは、マウスを動かす速さに応じて移動量が変わる特性がある。
http://stack3.net/blogdev/p/525 によると、マウスの速さの設定を
デフォルトの設定: 遅め
サードパーティのドライバ設定: 速め
にするとよいとのことなので試してみた。



左がシステム設定 / 右がLogicoolの設定, マウスのDPIは最大に設定した


わりといい感じになった。