2009年9月21日月曜日

学辞郎からのSVL問題集の作り方

最近ハリーポッターの7巻の洋書を読んでいるのですが,分からない単語がけっこう出てくるため読んでてつらいです...

そこで,P-Study System(PSS)を用いて単語を覚えて,洋書を楽に読みたいなあと思ってます.

実は2年前にもPSSを使って単語力の問題集の上級までは覚えました.

ただそれ以来あまり英語の勉強をしていないので,だいぶ忘れてます(笑)

今回はSVLの単語を覚えようかなと思ってます.

SVLの問題集は学辞郎から作ることが出来るらしいです.(参考サイト)

ただこのサイトに書いてある通りにやってもうまくできませんでした.(置換してる途中で単語がごっそり削られる)

そこで,このサイトを基にして学辞郎からSVLの問題集を作成する秀丸マクロを作成しました.

僕と同じ理由で悩んでらっしゃる方は是非ご利用下さい.

  1. まず,次の設定で PDIC で詳細設定検索を行います.

    検索文字列
    単語レベル制限(自分の好きなレベル)
    検索対象訳語部
    検索結果の出力先ファイルへ
    出力先ファイル名(任意の名前)
    出力形式一行テキスト形式

    出力したファイルをsvl_1.txtとします.

  2. createSVL.zipをダウンロードし,解凍します.

  3. svl_1.txtを秀丸で開き上記のマクロを実行します.(途中で問題集の名前,説明を入力します.)

  4. svl_1.txt.cvsというファイルが同じフォルダに作成されます.

  5. svl_1.txt.cvsをPSSからインポートします.

2009年9月12日土曜日

BGM Fox

本日,Firefoxのサイドバー上でニコニコ動画やYouTubeの動画を検索,再生,管理ができるアドオンBGM Foxをリリースしました.

image

作業用BGMのような動画を垂れ流しにするのに最適です(笑)

各動画はiTunesのようなプレイリストで管理できます.

また,メインウィンドウでニコニコ動画やYouTubeの動画ページを開いておき,プレイリスト上で「メインウィンドウから追加」を選択することで,メインウィンドウで開いている動画をプレイリストに追加できます.この機能を使えばニコニコ動画のマイリストからの移行も楽です.

他にもたくさんの機能があります.

詳細はBGM Foxホームページで見ることが出来ます.

2009年8月11日火曜日

PyXPCOMコンポーネントを作る.

現在作成中のアドオンでニコニコ動画に自動ログインする機能がほしかったのですが,Javascriptでは難しいようだったので,XPCOMコンポーネントを作る必要がでてきました.

XPCOMはJavascript, Java, C++, Pythonで作れるそうですが,そもそもJavascriptで難しいことはXPCOMのJavascriptでも難しいので,残り3つの中で一番楽そうなPythonで作ることにしました.

ただ情報が少なく,有用そうな情報はMDCの英語サイトくらいしかありませんでした...

Building PyXPCOM

Creating a Python XPCOM component

ぶっちゃけ↑のサイト見てもよく分からなかったので(笑),PythonExtというアドオンに助けてもらうことにしました.このアドオンを入れるとPyXPCOMで作ったコンポーネントをこいつが実行してくれるみたいです.

とりあえずこいつをインストールします.

PythonExt

次にXPCOM開発に必須であるGecko SDKを落としてきます.

Gecko SDK | MDN

そして以下のようなidlファイルを作成します.

#include "nsISupports.idl"
[scriptable, uuid(2b324e9d-a322-44a7-bd6e-0d8c83d94883)]
interface nsINicoUtils : nsISupports
{
string login(in string mail, in string pass);
};

以下のコマンドを実行してxptファイルを作成します.

xpidl.exe -m typelib -w -v -I C:\xulrunner-sdk\sdk\idl nsINicoUtils.idl

IオプションでGecko SDKの中のidlフォルダを環境に合わせて設定して下さい.

xptファイルができたらアドオンフォルダのcomponentsフォルダに置いて下さい.

次にnicoUtils.pyというファイル名で以下のようなコードを書きます.(このファイルもcomponentsフォルダに置いて下さい.)

from xpcom import components, verbose
import urllib2, cookielib

class NicoUtils:
    _com_interfaces_ = components.interfaces.nsINicoUtils
    _reg_clsid_ = "{c456ceb5-f142-40a8-becc-764911bc8ca5}"
    _reg_contractid_ = "@suplik.net/NicoUtils;1"

    def __init__(self):
        print "initializing"

    def __del__(self):
        if verbose:
        print "PySimple: __del__ method called - object is destructing"

    def login(self, mail, password):
        cj = cookielib.CookieJar()
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        r = opener.open("https://secure.nicovideo.jp/secure/login", "mail=%s&password=%s" % (mail, password))
        for cookie in cj:
        if cookie.name == 'user_session':
        return cookie.value

loginメソッドではニコニコ動画の認証用のクッキーを取得しています.ニコニコ動画に自動でログインすると認証用のクッキーが設定されるので,それをreturnしています.

次にこのコンポーネントをFirefoxに登録する必要があります.Firefoxのプロファイルフォルダ内のcompreg.dat, xpti.datを削除すれば,起動時に新しい情報に書き換わるようです.xptファイルを修正したら同じことを繰り返さなければいけません.

無事コンポーネントが登録されたら,アドオンの中から他のXPCOMコンポーネントと同様に呼び出せます.

var NicoUtils = new Components.Constructor("@suplik.net/NicoUtils;1", "nsINicoUtils");
var nicoUtils = new NicoUtils();
var user_sessionValue = nicoUtils.login("hoge@gmail.com", "password");
alert("user_sessionValue);

ニコニコ動画にログインするにはこの値を使ってuser_sessionという名前のクッキーを設定する必要があります.

ちなみにこの方法だとユーザは自分のアドオンだけでなくPythonExtもインストールしなくてはいけないので,かなり面倒になってしまいます...

余力があればいつかC++に書き換えてみよう.

2009年8月2日日曜日

VenkmanとFirebug

今Firefox用のアドオンを作ってます.JavascriptのデバッグはずっとFirebugでやってたんですが,アドオンのデバッグはFirebugではできないようなので,Venkmanというデバッガを使ってます.

ところが,Venkmanでブレークポイントを設定してもなぜか止まってくれません.

いろいろ調べたけれども原因がよく分からなかったので,Firebugをアンインストールしたらちゃんと止まるようになりました・・・

VenkmanとFirebugって共存できないのね(^_^;

でもFirebugなくなるとconsole.logが使えなくなってしまって痛い・・・

他にいいログ出力の方法ないかな~?

2009年7月20日月曜日

[Python] カレントディレクトリのファイル名を一斉置換

ショートカットを作成すると” - Shortcut”(日本語OSなら~へのショートカット)という文字列が自動的に付加されてうっとうしいので,削除するスクリプトを書いた.最初はバッチファイルを作ろうと思ったがやり方が分からなかったのでPythonで書いてみた.

 import os
 import string

 files = os.listdir(os.getcwd())

 for file in files:
 os.rename(file, file.replace(' - Shortcut', ''))

調べてみるとレジストリをいじるだけでつけないようにできるみたい.

2009年7月15日水曜日

[秀丸マクロ] 1行切り取り

cutLine.mac

VisualStudioのEdit.LineCutと同じ動作をするマクロです.VSのデフォルトのショートカットではCtrl+Lに割り当てられています.

名前の通りその行を1行切り取りするだけです.

2009年7月14日火曜日

[秀丸マクロ] 現在のアンカー位置を切り替える

swapAnchor.mac

VisualStudioのEdit.SwapAnchorと同じ動作をするマクロです.VSのデフォルトのショートカットではCtrl+K, Ctrl+Aに割り当てられています.

この状態ではキャレットは右下にあります.このマクロを実行すると,

こんな感じで選択状態を維持したまま左上にキャレットを移動させます.(見づらくてすみません)

秀丸

最近本格的に秀丸をプログラミング用のエディタとして使おうとしています.

今までVisual Studio+Resharperを使ってプログラミングしていました.最近C++, Javascript, Pythonなどいろいろな言語を触る必要が出てきたんですが,VSだとC#, C++以外は使いづらいです.そこで,この機会にもっと汎用のエディタを使おうと考えました.

他にもいろいろ有名どころのエディタを試しましたが,細かいところが気に入りませんでした.

サクラエディタ

  • Consolasフォントを使用すると日本語が文字化けする.
  • 文字化けを回避するよう設定すると強調キーワードがバグる・・・
  • アウトラインウィンドウが浮遊している.

JEdit

  • 日本語がインラインで入力できない.
  • Consolasフォントにすると日本語が文字化けする.

notepad++

  • アウトラインウィンドウにジャンプするショートカットキーが見当たらなかった.
  • ショートカットキーの設定画面が使いづらすぎ.

とりあえずConsolasフォント,アウトラインが満足に使えるという条件で絞ると秀丸が残りました.

それ以外の機能はどのエディタもほぼ互角で,どれも素晴らしいエディタです.

いろいろマクロを探して秀丸をできるだけVS+Resharperに近づけたんですが,ネット上のマクロでは補えない部分もたくさんありました.そこは今後自分でマクロを作っていきたいと思います.そして完成したらこのブログで紹介していきたいと思います.