mac 動画倍速

最近アニメを当倍速で見てる時間がなくなって来たので倍速で見るようにしてみた。
QuickTimeVLC の2つを試してみた。
QucikTimeは0.1 倍速と少しづつ挙げれるのに対してVLCは1.5, 2, 3倍...だった。
VLCってもっと細かい設定できたっけ?
実際に倍速で試してみた感想
QuickTime の方が音声がまだはっきり聞き取れるた感じがする。ただ、動画のコマ落ちがひどかった。
ある程度スペックがあるならVLCの方がいい。
別にMacで見なくてもいいんだけど、もち歩いて出かけ先で見る場合にね。

repair filesystem linux

サーバ機がファイルシステム関連でエラーが発生して起動出来なかった。
どうやらこの前HDDを増設したときに /etc/fstab に追加記述したものが原因らしかった
以下行った作業手順
1. rootパスが求めらるので入力する
2. そのままだと読取モードでファイルの編集ができないのでマウントやり直し
mount -o rw,remount /
3. vi /etc/fstab でファイルを開き原因となってるところを編集
4. reboot or exit で再起動する
問題がなければ普通に起動できるようになる

/etc/fstab に記述されている数字の意味
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/756fstabnum.html

mac lion 入れたものメモ

google chrome
http://www.google.co.jp/chrome/intl/ja/landing.html?brand=CHMA&utm_campaign=ja&utm_source=ja-ha-apac-jp-bk&utm_medium=ha&utm_term=chrome
google ime
http://www.google.com/intl/ja/ime/index-mac.html
google chrome(はてなプラグイン)
https://chrome.google.com/webstore/detail/dnlfpnhinnjdgmjfpccajboogcjocdla
skype
http://www.skype.com/intl/ja/welcomeback/
夜フクロウ
https://sites.google.com/site/yorufukurou/
xcode4.1
app storeにある。3GBあるので時間かかる
MultiClutch 入れようと思ったけど今回はBetter touch tool 入れることにした
http://wcrawford.org/2008/02/28/everytime-i-think-about-you-i-touch-my-cell/
rvm
https://rvm.beginrescueend.com/rvm/install/
homebrew
http://mxcl.github.com/homebrew/
better touch tool
http://blog.boastr.net/
cyberduck
http://cyberduck.ch/
thundrebird
http://mozilla.jp/thunderbird/
quciksilver
http://www.blacktree.com/
visor → total terminal
http://totalterminal.binaryage.com/

brew install git
brew update
brew install zsh
brew install emacs --cocoa      //エラーが出たのでcarbon emacsを利用する
brew install wget
brew install tree //あんまり使う機会がない...

caps lockをctr替わりにする
システム環境設定 > キーボード > 修飾キー > caps lockをctrに変更

その他メモ
MultiClutch 入れて3本指で chromeが落ちる場合ここを参考に削除した
http://zafiel.wingall.com/archives/2011072123312141.php
xcodeapp storeからダウンロードしてもまだインストールされてないので、ダウンロードしたファイルを起動してインストールする必要がある
rubyとかgcc?関連でエラーが出てるみたい。まだ俺は合ってないのでそういうエラーが出るってことをメモ
Boot Campでウインドウズ7をインストール 下のサイトが詳しく書いてる
http://weekly.ascii.jp/elem/000/000/049/49816/
けど、boot campで入れてもファン制御やバッテリーの減りが早いなどの記事をどっかで見かけたことがあるかも...実際入れるときに詳しく調べる

後ほかに何を入れようかしら?
7/24追加--------
homebrewでemacs入れる方法(そのうち対処されるだろうけど...)
下のサイト通りにやったらいけた。
http://straitmouth.jp/blog/setomits/2307

辞書 追加 igo-ruby

以前はmecabを利用してプログラムを動かしていたけど、今回はruby形態素解析出来るライブラリがあったのでそれを利用することにしました。
ruby-igoでは辞書生成が出来ないのでjavaのigoを利用する

javaのIgoのサイト
http://igo.sourceforge.jp/
mecab...まぁ、コスト計算方法のサイト
http://www.mwsoft.jp/programming/munou/mecab_nitteretou.html
このサイトをメインに作業を行った。配布されてるプログラムをrubyに落としたら良いんだけど、そこまでの能力が無い。
http://blog.livedoor.jp/techblog/archives/65828235.html

他にも細々したサイト色々見たけど全部記録してなかったので上記3サイトだけ
作成したプログラムは継ぎ接ぎしただけだから修正したほうがいいかな〜っと思ってるけど。時間無いので後で?

以下作業-----
javaのIgoのサイトから
igo-0.4.4.jarを拾ってくるなりソースをビルドするなりする
naist-jdicは下からまたは別のところから
http://sourceforge.jp/projects/naist-jdic/downloads/48487/mecab-naist-jdic-0.6.3-20100801.tar.gz

tar xzvf mecab-naist-jdic-0.6.3-20100810.tar.gz
cd mecab-naist-jdic-0.6.3-20100810
// naist-jdic.csvはそのままだと使用できないので利用出来る形式にする
grep -v -E '^\"' naist-jdic.csv  > naist-jdic.tmp; mv naist-jdic.tmp naist-jdic.csv
cd ../
// -Xmx1000Mは環境によっては実行時にメモリ関係?でエラーがでるので必要に応じて入力する
// java [コマンド] -cp igoファイル net.reduis.igo.bin.BuilDic 生成するフォルダ名 naistのフォルダ名 エンコード文字列
java -Xmx1000M -cp igo-0.4.3.jar net.reduls.igo.bin.BuildDic jdic mecab-naist-jdic-0.6.3-20100801 UTF-8

これで辞書生成は終了したからigo-rubyは普通に使えるんだけど、そのままの辞書じゃ使い勝手が悪いのでユーザ辞書を追加する
この際だからそのあたりもigo-rubyでやってしまおう!
プログラムでやってること
Arrayクラス拡張→データ確認用
Igoファイルも拡張 parseToNodeで文脈idとか返すようにした
node_cost は辞書生成するときの文書コスト計算用

# Arrayクラス拡張 あんまりよくないけど、これだけに利用するからいいかな
class Array
  def dup_node
    srt = "WordId\tLeftId\tRightId\tCost\tSurface\tLength\tStart\tFeature\n"
    self.each do |s|
      srt << "#{s.word_id}\t#{s.left_id}\t#{s.right_id}\t#{s.cost}\t#{s.surface}\t#{s.length}\t#{s.start}\t#{s.feature}\n"
    end
    srt
  end
end
# 直接Igoを書きなおしてもいいけど、元ファイル弄りたくないからこれも拡張
module Igo
  class MorphemeToNode
    attr_accessor :surface, :feature, :cost, :is_space, :left_id, :length, :right_id, :word_id, :start
    def initialize(surface, feature, status)
      @surface = surface
      @feature = feature
      @cost = status.cost
      @is_space = status.is_space
      @left_id = status.left_id
      @right_id = status.right_id
      @length = status.length
      @word_id = status.word_id
      @start = status.start
    end
  end
  class Tagger
    attr_accessor :wdc, :unk, :mtx
    #コスト以外も返すようにする
    def parseToNode(text, result=[])
      vn = impl(text, result)
      txt = text.unpack("U*")
      while vn
        surface = txt.slice(vn.start, vn.length).pack("U*")
        s = @wdc.word_data(vn.word_id)
        feature = NKF.nkf('-W16Lo --utf8', s)
        result.push(MorphemeToNode.new(surface, feature, vn))
        vn = vn.prev
      end
      return result
    end
    #文章コスト計算用
    def node_cost node
      left_id = 0
      cost = 0
      node.each do |n|
        cost += n.cost
        cost += mtx.link_cost(left_id, n.right_id)
        left_id = n.right_id
      end
      cost += mtx.link_cost(left_id, 0)
      cost - 745
    end
  end
end

まず辞書生成にwikiはてなを利用します。
このあたりのことについてはgoogleで「mecab 辞書生成 wiki」などで調べればすぐに出てきます。
ファイルが無ければ下のコメントのチェックを外します。
file はnaist-jdic.csvのファイルパスを指定
file1,2 はwikiはてなのファイル名
file3 は顔文字を登録する場合利用
translatorはひらがなかたかな変換用 はてなキーワードで利用する
まずnaist-jdic.csvから固有名詞, 一般の文字を抜き出す
それを文字列の長さごとに文書生成コストを足していき 文書数で割る

#ファイルが無ければチェックを外す
#はてなとwikiのurl
#wiki = "http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz"
#hatena = "http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv"
#open(file1, "w+"){ |f| f.puts open(wiki, 'rb'){|sio| Zlib::GzipReader.wrap(sio).read}}
#open(file2, "w+"){ |f| f.puts open(hatena).read.toutf8}
#保存するファイル名
file = "naist-jdic.csv" #ファイル先を記述
file1 = "wiki.csv"
file2 = "hatena.csv"
file3 = "kaomozi.txt"

def translator(from, to)
  lambda {|str| str.tr(from, to)}
end
upto = translator("a-z", "A-Z")
downto = translator("A-Z", "a-z")
hira2kata = translator("ぁ-ん", "ァ-ン")
kata2hira = translator("ァ-ン", "ぁ-ん")

#平均値テーブルを作成するための固有名詞のものを抜きだす
list = []
open(file).each do |line|
  text = line.toutf8.strip.split(",")
  list << text if text[5] =~ /固有名詞/ && text[6] =~ /一般/
end

#文字列の長さごとにコストを計算
#ここの部分もっとうまい書き方したい(´・ω・`) なんかきもち悪い
cost = []
list.each do |l|
  s = l[0].size
  cost[s] ||= []
  cost[s][0] ||= 0
  cost[s][0] += l[3].to_i
  cost[s][1] ||= 0
  cost[s][1] += 1
end

#各コストの平均を計算
cost.map!{|c|c[0] /= c[1] if c != nil}

はてなキーワードから辞書生成用
平均値テーブルに無い単語は2850に設定している
17文字以上になると生成コストはこの値よりもあまり下がらないため

open(file2).each do |line|
    title_list = line.split("\t")
    next if title_list.length < 2
    title = title_list[1]
    title.strip!
  furigana = title_list[0]
    furigana.strip!
  katakana = hira2kata.call(furigana)
 
    # 登録したくないものをスキップ
    next if title =~ /[\+\-\.\$\(\)\?\*!"'_,]+/
    next if title =~ /^[0-9\-]+$/
    next if title =~ /^h?ttp/
  next if title =~ /[0-9]{4}(\/|\-)[0-9]{2}(\/|\-)[0-9]{2}/
  next if title =~ /[0-9]{4}/
  next if title =~ /[0-9]{1,2}[0-9]{1,2}/
 
  # 制御文字、HTML特殊文字が入ったものは外す
  next if title =~ /[[:cntrl:]]/
  next if title =~ /\&\#/
 
    # タイトルの長さ
    len = title.split(//u).length

    # スコア計算
  
  score = tagger.node_cost(tagger.parseToNode(title)) * 0.7

  if cost[len] == nil
    score2 = 2850
  else
    score2 = cost[len]
  end
  score = score2 if score > score2
    # 3文字より大きい場合だけ
    if len > 3
        mecab.puts "#{title},1360,1360,#{score.to_i},名詞,固有名詞,一般,*,*,*,#{title},#{katakana},#{furigana},はてなキーワード,"
    end
end

wikiの辞書生成用
はてなとあんまり大差ない

open(file1).each do |title|
	title.strip!
  # 登録したくないものをスキップ
  next if title =~ /[\+\-\.\$\(\)\?\*!"'_,]+/
  next if title =~ /^[0-9\-]+$/
  next if title =~ /^h?ttp/
  next if title =~ /[0-9]{4}(\/|\-)[0-9]{2}(\/|\-)[0-9]{2}/
  next if title =~ /[0-9]{4}/
  next if title =~ /[0-9]{1,2}[0-9]{1,2}/
  
  # 制御文字、HTML特殊文字が入ったものは外す
  next if title =~ /[[:cntrl:]]/
  next if title =~ /\&\#/
	# タイトルの長さ
	len = title.split(//u).length
  
  #スコア計算
  score = tagger.node_cost(tagger.parseToNode(title)) * 0.7
  if cost[len] == nil
    score2 = 2850
  else
    score2 = cost[len]
  end
  score = score2 if score > score2
	# 3文字より大きい場合だけ
	if len > 3
		mecab.puts "#{title},1360,1360,#{score.to_i},名詞,固有名詞,一般,*,*,*,#{title},*,*,wikipedia,"
	end
end

顔文字辞書生成用
記号とか登録するのでフィルタはかけないけど
コンマが含まれる単語はピリオドするなりスキップするなりする
顔文字の場合記号ばかり続いたりすると文章コストが-400000とかになってshort integerに変換出来ないので
マイナス32778以下の数値の場合は以下の計算式を入れる
score = [-32678.0 ,-400 *(title.size**1.5)].max.to_i
もう一つ計算式があったけどこれ↓
score = [-32768.0, (6000 - 200 *(title.size**1.3))].max.to_i
顔文字の場合はうまく行かなかったので上の方を選択した
後は他と一緒

open(file3).each do |line|
  title_list = line.split("\s")
  title_list[1].gsub!(",",".")
  title = title_list[1]
  title.strip!
  furigana = title_list[0]
  furigana.strip!
  katakana = hira2kata.call(furigana)

  #スコア計算
  score = tagger.node_cost(tagger.parseToNode(title)) * 0.7
  
  len = title.size
  if cost[len] == nil
    score2 = 2850
  else
    score2 = cost[len]
  end
  score = score2 if score > score2
  if score < -32678
    score = [-32678.0 ,-400 *(title.size**1.5)].max.to_i
  end
  # 3文字より大きい場合だけ
	if len > 3
    mecab.puts "#{title},5,5,#{score.to_i},名詞,記号,一般,*,*,*,#{title},#{katakana},#{furigana},顔文字,"
	end
end

すべてをつなぎ合わせたものがしたのが↓のファイルだけど、リファクタしてないから気持ちが悪い。


上のファイルを実行するとmecab.csv(ファイル名が悪いけど気にしない)

grep -v -E '^\"' mecab.csv  > mecab.tmp; mv mecab.tmp mecab.csv
mv mecab.csv mecab-naist-jdic-0.6.3-20100801
java -Xmx1000M -cp igo-0.4.3.jar net.reduls.igo.bin.BuildDic jdic mecab-naist-jdic-0.6.3-20100801 UTF-8
// 文字コード関係でエラーが出たら nkf -w --overwrite ファイル名 などのコマンドで変換する

はい、まとめ完了!
顔文字は適当なところから集めまくる。

mac zsh 設定

homebrew で zsh をインストール

brew install zsh

shells に homebrew で入れた zsh のパスを追加

sudo vi /etc/shells
/usr/local/bin/zsh-4.3.12

chsh コマンドを実行すると vi が開くので使用する shell の項目を 使用する zsh のを切り替える

chsh
#####
Shell: /usr/local/bin/zsh-4.3.12

変わってるかチェック

echo $SHELL

Emacs Java メモ

Javaを勉強することになったのでEmacsJava環境を構築した。
JavaIDEで開発するのが普通みたいだけど、今はそこまでするほどのプログラムを書くわけではないのでEmacsですることにした。
Emacs ver23.3
Homebrewでいれたもの

brew install emacs --cocoa
brew install maven

今回入れるもの
anything.el
malabar-mode
yasnippet

anything.elyasnippetは結構すんなり入ったけど、malabar-modeでハマった。
anything.elはauto-installから入れたら簡単だった。
auto-install はここから http://www.emacswiki.org/emacs/download/auto-install.el

(require 'auto-install)
(setq auto-install-directory "~/.emacs.d/auto-install/")
(auto-install-update-emacswiki-package-name t)
(auto-install-compatibility-setup)
M-x auto-install-batch anything

を実行して C-c C-c をひたすら押していく終わったら下記を記述してanything.elは終了

(require 'anything-startup)

yasnippet java-mode
https://github.com/chuwb/yasnippet-java-topcoder
上記からファイルをダウンロードしてyasnippetのロードパスに置いたら終了

malabarは結局何をすれば入ったのかわからな行ったので作業した事をすべてメモしておく

git clone git://github.com/espenhw/malabar-mode.git
cd malabar-mode
git checkout malabar-1.4.0

cedetがうまく読み込まれなかったのでcedetをダウンロードしてパスを
malabar-mode/src/test/lisp/load-all.el に記述する

(load-file "~/.emacs.d/cedet-1.0/common/cedet.el")

pom.xmlも編集
emacs ってなってる所を /Applications/Emacs.app/Contents/MacOS/Emacs に書き換える
3.0-SNAPSHOT mavenのヴァージョンに合わせて書き換える

mvn -Dmaven.test.skip=true package

malabar-1.4.0-dist.zipが出来るので解凍する
最後に.emacsに以下を記述して終了

(load-file "~/.emacs.d/cedet-1.0/common/cedet.el")
(require 'cedet)
 (semantic-load-enable-minimum-features) ;; or enable more if you wish
(add-to-list 'load-path "~/.emacs.d/malabar-1.4.0/lisp/")
(require 'malabar-mode)
 (setq malabar-groovy-lib-dir "~/.emacs.d/malabar-1.4.0/lib")
 (add-to-list 'auto-mode-alist '("\\.java\\'" . malabar-mode))

途中メモってなくて適当なところもあるけどだいたいこんな感じで入れた。
後は必要に応じたものを追加で入れていくかな

参考サイト
http://d.hatena.ne.jp/nekop/20101215/1292380225
http://w.livedoor.jp/mojavy/d/malabar-mode%20%A5%D3%A5%EB%A5%C9
http://d.hatena.ne.jp/smotokezuru/20100418/1271565315