Ankiのカードをブラウザから追加したかった。
決して後退しない学習ーAnkiを使うとどうして一生忘れないのか? 読書猿Classic: between / beyond readers
Ankiの記事を見たので便乗。
最近Ankiを使い始めてて、効果のほどはまだ分からないけどまあ楽しく使っている。用途としては英単語を覚えるのがメイン。んでWebを見ていて知らない英単語があると、調べては手作業で追加していたのだけど、これがだるいなーと思ったので自動化した。ブラウザ上で単語を範囲選択、右クリックのメニューからAnkiへの単語追加コマンドを実行するだけで、追加がすむ様になった。ただしMacに限る。仕組みに使ったパーツは、
- 辞書引きプログラム
false-git/dict · GitHub
コマンドラインからMac標準の辞書を引くプログラム。コンパイルして~/dict/dictに設置。
- Run External Commands
Anki - friendly, intelligent flashcards
ソケットを使って外部からAnkiへの単語追加を可能にするAnkiのaddon。追加情報の書かれたxmlへのpathを入力とする。インストールするだけ。
単語を標準入力から受け取って、辞書引きプログラムで調べて、xmlつくって、上記addonにわたすスクリプト。どっか適当なところに保存。
require 'socket' word = ARGF.read tmp = `dict/dict #{word}` res = tmp.lines.to_a[2,20].join unless res.empty? open("/tmp/anki.xml", "w"){|f| xml = "<command name='add-notes' version='1.0'> <models> </models> <notes> <note> <model>Basic</model> <tags> </tags> <fields> <field> <name>Front</name> <content>#{word}</content> </field> <field> <name>Back</name> <content>#{res}</content> </field> </fields> </note> </notes> </command> " f.write(xml) } s = TCPSocket.new("localhost", 49666) s.write('/tmp/anki.xml') s.close end
以上を準備した後、範囲選択した単語を自作スクリプトに渡す様に設定。使用方法はここを参考にした。Mac を使っているなら必ず使うべき2つの機能 "Automator" と "サービス" - kurainの壺
これで単語登録が楽になった。
楽器.meを移調できるようにした。
ChordWikiは移調(keyの変更)の仕組みがあってアコギ+カポで楽しみやすいです。同じように楽器.meで移調が出来るスクリプトを作りました。便利。
インストールはまず、FirefoxならGreasemonkey :: Add-ons for Firefox入れて、chrome/safariならNinjaKit - os0x.blog入れます。
次に、transposeMe for Greasemonkeyに行って右上のinstallすれば準備は完了。
その後はどれでも良いんで楽器.meのコード譜見てもらうと、移調用のフォームが追加されてるんで、これで数字選べば、さっと移調がなされるはずです。
pixivをAutoPagerize
{ url: '^http://www\\.pixiv\\.net/member_illust\\.php\\?mode=medium&illust_id=\\d+', nextLink: '//li[@class="linkstyle"][last()]/a', pageElement: '//div[@class="contents-east"]', },
史上がなんとかの面妖な問題といた。
makeplex salon:あなたのスキルで飯は食えるか? 史上最大のコーディングスキル判定 (1/2) - ITmedia エンタープライズ
ニコニコ市場をついついシジョウと読んじゃう派です。そのおかげか3時間以内にはできました。
class Tehai attr_reader :hai, :red def initialize(hai) @hai = hai.gsub(/\s/, "").each_char.map(&:to_i).sort @red = [] end def yaku(type) a = {:koku=>[1,1,1],:jun=>[1,2,3],:zu=>[1,1], :toi=>[1,1],:ryan=>[1,2],:kan=>[1,3],:tan=>[1]}[type] (9-(a[-1]-a[0])).times{|i| hai = @hai.dup b = a.map{|e|e+i}.each{|e| if i = hai.index(e) hai.delete_at(i) end } if hai.size == @hai.size - a.size @hai = hai @red << [type, b] return b end } nil end def reduce(syms) syms.each{|s| yaku(s)} @red end end def all_syms return @all_syms if @all_syms ret = [] [:toi,:ryan,:kan].each{|e| a = [:zu,e] + [:jun]*3 + [:koku]*3 ret += a.permutation(5).to_a } a = [:tan] + [:jun]*4 + [:koku]*4 ret += a.permutation(5).to_a @all_syms = ret.uniq end def mati(s) ret = [] all_syms.each{|syms| hai = Tehai.new(s) next unless (r = hai.reduce(syms)).size == 5 mt = r.select{|e| [:toi,:ryan,:kan,:tan].include?(e[0]) } raise unless mt.size == 1 mt = mt[0] r.delete(mt) te = r.transpose[1] ret << te.sort.map{|e|"(#{e.join})"}.join+" [#{mt[1].join}]" } ret.uniq end require 'pp' pp mati("1112224588899"), "" pp mati("1122335556799"), "" pp mati("1112223335559"), "" pp mati("1223344888999"), "" pp mati("1112345678999"), ""
Firefox3.6のブックマークのスムーズスクロールを切りたい。
スムーズスクロールって奴の中途半端さ、煮え切らなさ、どっちつかずさ、やりきれなさがとても嫌いです。
ところが先日Firefoxを3.6にしたところ、ブックマークのリストに、なぜかスムーズスクロールが適応されるようになっていたのです。その後スクロールしないですむよう、ブックマークリストが一画面に収まるよう整理したのですが、それも限界を迎えました。なのでいい加減、憎きスムーズスクロールの奴に三行半つきつける覚悟を決めたのです。
URLにabout:configと入力 フィルタにtoolkit.scrollbox.smoothScroll ダブルクリックでfalseに
意外と簡単にスムーススクロール切れました。意外とあとくされない奴でした。
radikoを録音する方法。
radiko.jpというサービスが開始になりました。現存のラジオ放送をそのままネットで配信してしまえ(地域限定ですが)というなかなか男前な試みです。
これを保存できたらなーと思ったので、その方法を紹介したいと思います。
スピーカーの前にラジカセを置いて録音
昔ながらの方法です。トイレに響が入ってないか要注意。
専用ソフトradikaを使う
つくったもの公開所: radiko録音ソフト radika
素晴らしい事にすでに専用の録音ソフトが存在します。ちゃんとFLVで保存されますので無劣化です。Windowsな方はこれが手っ取り早いかもしれません。
rtmpdumpを使う
RTMPDump
radikoのクライアントはFlashで作られており、その通信にはrtmpというプロトコルが使われています。rtmpdumpはこれを保存することが出来るツールです。この方法も生データがFLVとして保存されます。
以下実行例。
rtmpdump --rtmp "rtmp://radiko.smartstream.ne.jp:1935"\ --playpath "simul-stream" --app "TBS/_defInst_" --live --flv TBS.flv
TBS/_defInst_のTBSの部分が局の指定となります。radikoプレイヤーのURLのhttp://radiko.jp/player/player.html#TBS の#の部分を指定します。最後のTBS.flvは保存するファイル名です。
コマンドラインゆえ面倒ですが柔軟性は高いです。予約録音なんてことも比較的容易に出来ますね。またオープンソースプロダクトなので組み込んで凝ったことを、なんていうのも出来ましょう。
TokyoTyrantを試す。
NoSQLという言葉があるそうです。リレーショナルじゃないDB群を指す言葉だそうな。その中にTokyoTyrantというDBがあることを知りました。名前がカッコイイので試すことにしました。
TokyoTyrantはTokyoCabinetというDBMをネットワーク越しに使えるようにした物だそうです。なのでまずTokyoCabinetをインストールします。
ソース落としてconfigure && make && make installです。TokyoTyrantも同様にインストール。
次にtokyotyrant-1.1.40/exampleディレクトリにサンプルがあるので実行してみたいと思います。make。
まずハッシュデータベースのサーバーを立ち上げます。
ttserver ex.tch
ここでファイルの拡張子にtchを指定することによりハッシュタイプのデータベースになります。
サンプルを実行します。
./tcrdbex
hopって出たらたぶん成功です。
つぎにテーブルデータベース。さっきのサーバーをなんとか落としてから。
ttserver ex.tct
ここでファイルの拡張子に"tct"を指定することによりテーブルタイプのデータベースになります。わかりにくい。
./tcrdbtblex
実行結果。
12345 name falcon age 31 lang ja 1 name mikio age 30 lang ja,en,c
たぶん成功です。