Posts Tagged ‘Windows’

ローカルの英辞郎検索やGoogle翻訳も使える翻訳ソフトウェア

簡単に言えばLingoesキングソフト辞書のようなソフトウェアで、文字列を選択した状態でショートカットか文字列をコピーすると翻訳を行えるNILScriptで書かれたソフトウェアです。

元々は英語が読めない人向け、英語技術書の読み方 | Web scratchで書いてたようにLingoesを使っていたましたが、自分向けにもっとあった感じのものがほしかったので作成しました。
機能はハイライト翻訳に絞ってるので、単語帳のようなものなどは特にないですが、シンプルで動作も軽いと思います。
翻訳には単語翻訳(辞書機能)と翻訳サービスを利用した長文の翻訳機能の二つがあります(単語数で自動的にどちらの方法をとるかを決めています)

動作のスクリーンショット

imageimageimageimage

NILtranslatorの導入

NILScriptで実行するソフトウェアなので、NILScriptが必要です。(Autohotkeyみたいな形式だと思ってもらえば)
Githubに置いてあるので、Secure source code hosting and collaborative development – GitHubからzipファイルでレポジトリごとダウンロードするのが単純です。
もちろんgithubなのでgit cloneしてダウンロードするのもありです。(なにかあったらプルリクエストしてもいいですし)

$ git clone git://github.com/azu/NILScript.git

ダウンロードして展開したフォルダにNILtranslatorがあり、NILtranslatorに関係するファイルは全部そこに入っています。(他のものは自分が書いたNILScriptがいろいろと入っています)

NILScriptの使い方と書き方 | Web scratchやNILScriptのreadmeを読んでNILtranslator.ngをNILScriptで実行すれば、ソフトウェアが起動できます。

 

使い方と設定

翻訳は翻訳したい文字列を選択した状態で、クリップボードへのコピーか任意のショートカットで行う事ができます。

NILtranslatorが起動するとタスクバーにアイコンが出るので、右クリックから設定を行う事ができます。

image

動作設定

image

動作設定では、選択した文字列を翻訳するのにどのショートカットキーを使うかや、翻訳するサービスなどを選択できます。

*テキストコピーで翻訳 はそのままの意味でクリップボードにコピーした場合に翻訳する化を決定できます。
*ショートカットキー はNILScriptのHotstrokesユニットで使えるショートカットを指定できます。

デフォルトはShift*2でShiftを二回連続で押すことで翻訳を行えます。

詳細はNILScriptの方に入ってる nil\doc\Hotstrokes.txtnil\sample\Hotstrokes.ngなどを見るのがいいと思います。

簡単にショートカットの例を挙げてみると

"Win" : Winキーを押した時(タップ) 
"Shift+A": Shiftを押しながらAを押す 
"Shift*2": Shiftを二回押す 
"Ctrl+[1] [2]": Ctrl+1 Ctrl+2と順番に押す 
"RButton+WheelDown": 右クリックを押しながらホイールダウン

 

このようにキーボードだけでなく、マウスも使ったいろいろなショートカットの指定が可能です。
(設定ファイルを書き換えて、mapに指定するオブジェクトを作ればもっと自由にもできたりする予定)

指定するキーの名前を知りたい場合はnil\sample\keyboard_hook.ngを実行して見るといいでしょう。

*がついてるものはソフトウェアを再起動後に反映されることに注意

辞書について

辞書はそれぞれ設定できますが、英辞郎はローカルに英辞郎のデータベースファイルを用意する必要があります。
辞書は以下から選択できます。

対応辞書サービス

  • KingSoft辞書
  • 英辞郎辞書ローカル検索(ご自分で英辞郎辞書を用意する必要があります)

英辞郎辞書は同梱していませんのでご自分で購入する必要があります。 http://www.eijiro.jp/

対応翻訳サービス

英辞郎辞書の導入

ローカルの英辞郎辞書を使うためには、英辞郎辞書をデータベース形式に変換する必要があります。
辞書の変換形式はEijiroXと全く同じものを使用しています。そのためEijiroXの利用方法をよく読み、databaseというファイル名のデータベースファイルを生成してください。

手順を簡単にEijiroXの利用方法からまとめると

  1. makedatabase.zip(Windows 用と書かれてるやつ)
  2. zipを展開してできたフォルダに英辞郎から取り出した英辞郎 (EIJI-***.TXT)、和英辞郎 (WAEI-***.TXT)、例辞郎 (REIJI-***.TXT)、略語郎 (RYAKU-***.TXT) の4つのtxtを入れる。
  3. makedatabase.exeを実行(一時間以上かかる)
  4. databaseとdatabase.sqlができる。
  5. database.sqlは削除しても問題ない。databaseをdatabase.dbなど拡張子がdbとなるようにリネームする

データベースファイルはできれば database → database.db(eijiro.dbなど)の拡張子を.dbにリネームした方がよいです(内部処理的に)

設定画面からdatabase.dbを設定し、辞書サービスとして英辞郎を選択すれば利用できるようになります。

image

ポップアップの消滅時間はミリ秒で指定し、翻訳パネルの非表示になるまでの時間を決定できます。

パネルの設定

image

翻訳パネルの配置やサイズなどは、アイコンの右メニュー→パネルの設定から行えます。
数値でも指定できますが、パネルの設定自体がパネルサイズになるようにしています。(動画を参照)

パネルの透明度はアルファ値で指定できます。

一時的に無効にする

image

アイコンの右クリックから→無効を選択すると一時的にショートカットやクリップボードへのコピーで翻訳パネルを出さないようにします。

翻訳パネルの表示を変更

パネルはIEエンジン(triden)で動いていて、divにサイトごとのIDが入るのでCSSで調整することができます。
CSSファイルとSassファイルも同梱されているので、CSSを変更すれば、背景色や文字サイズなども変更できます。

パネルの内部HTMLは以下のようになっています。

<html>
    <head>
        <style type="text/css">
        %style%
        </style>
    </head>
    <body>
        <div id="%siteID%" calss="main">
        %text% この部分に翻訳内容が入る
        </div>
    </body>
</html>
%siteID%はそれぞれ、実行時にサービスにあったものに置換されるため、以下のようにCSSでサービス別に記述する子が可能です。
/* kingsoft */
#kingsoft {

}
/* 英辞郎 */
#eijiro{

}
/* Excite */
#Excite{

}
/* Google翻訳*/
#googleTranslator{

}

これで説明は終わりです。

おわりに

このソフトウェアはNILScriptで書かれていますが、UI部分でコードが少し増えましたが1000行程度でこのぐらいのものが作れてしまいます。

内部から外部APIを読んで翻訳を行ったりしていますが、調子がいいときはローカルで動いてるのと区別がつかないぐらい早く結果が返ってきます。

このようにNILScriptやTitanium DesktopやWebOSやWindows 8などWeb技術(HTML+CSS+JavaScriptなど)といったものでデスクトップアプリケーションが作れるようになるのはとてもおもしろいです。またWebとデスクトップの距離は短くなっていると思います。

謝辞

JavaScriptベースのすばらしいスクリプト実行環境であるNILScriptがないと動きません。

ローカル英辞郎の検索部分はEijiroX を元に作成しました。
@edvakfさんに感謝を

Windowsでのコマンドライン環境はConsole2+nyaosで

この記事は主にConsole2の紹介とnyoasのLua拡張についての話です。

Windowsのコマンドプロンプトはとても使いづらいので、コマンドプロンプト代替ツールとしてckwと拡張性が優れたNYAOS(昔はnyacus)などのシェルを合わせて使ってる人もいると思います。
自分も少し前まではckw-mod+NYAOSを使っていました。

現在はタイトル通りConsole2+NYAOSにしています。
ckwやConsole2はターミナルに該当するソフトウェアで、nyaosやgitbashなどはシェルに該当するソフトウェアです。

Console2でnyaosを使うのは簡単で、Settings>ConsoleのShell(またはタブ毎の設定)にnyoas.exeのパスを入れるだけで完了です。

image

Console2の機能紹介

タブ

Console2の特徴してはタブを持っていることがあげられると思います。
image

また、タブ毎に設定を行う事ができ、色や背景画像の設定やシェル(nyaosなど)に使うソフトウェアの指定をタブ毎に決定することができます。

image

日本語表示

以前は日本語がダメだったようですが、現在ver2ではフォントを日本語のものにすれば、日本語の表示も問題なく行えます。(フォントによってはおかしくなるけど)

ウィンドウの透過

ckwでよく紹介されてる機能としてウィンドウの透過機能があると思います。
Console2でもウィンドウの透過機能があります。

image

この透過機能はアクティブ、インアクティブの時それぞれの透明度を設定できるので、フォーカス外れているときだけ透過するなどもできます。

image

マウスやホットキーの設定

Console2はホットキーだけではなくて、マウスの動作、左クリックや修飾キーとマウスの組み合わせなどの挙動も設定できるので、結構細かい動作を決められると思います。
WIndowsのデフォルトであるようなCtrl+Cでコピー、Ctrl+Vでペーストなどの設定もできるので便利です

imageimage

これで簡単なConsole2の機能紹介は終わりです。設定はかなり豊富なので自分好みにできると思います。
まあタブがあるだけでもかなり魅力的なターミナルです。

nyoasの設定

nyaosはUNIXライクな日本語拡張コマンドラインシェルで、とても軽くて、作者さんは日本人(@zetamatta)の方なので日本語の扱いも問題ありません。

キーバインドやコマンドのエイリアスなどを設定して、入力履歴を残せるを保持できるようにするだけでも十分使い勝手がよくなります。

それに加えて、nyaos 3.xの特徴としてLua言語でのカスタマイズ機能あります(シェルスクリプトが書ける)

Lua拡張は_nyaのconfigファイルにもLua_eを使って書くこともできますが、拡張と設定は別ファイルに分けた方がいいと思います。(エスケープの問題とか面倒だし)

自分の場合は_nya_git.luaという感じで拡張毎のluaファイルを作成して、_nyaコンフィグファイルからsourceコマンドで読み込んで使っています。(拡張のテストするときもsourceで再度読み込めば適応されるのでデバッグしやすい)

source D:\Software\nyaos\_nya_git.lua
_nya_git.luaの内容は名前のようにgit関係のコマンドやgitコマンドの補完を作ったものを入れています。
gitのサブモジュールの削除が一発でできるようにgit submodule rmというコマンドを勝手に足したり、NYAOS 3000でいろんなコマンドのサブコマンドを補完する – メモ@wantoraにgitコマンドを追加したものなどが入っています。

image

Lua自体はコンパクトな言語で、若干JavaScriptに似てる感じもあるので調べながらやればなんとか書けるものだと思います

nyaosのLua拡張の書き方は以下を参考にしました。

これでConsole2+NYAOSの紹介は終わりです。

Windowsのコマンドライン環境自体はこんな感じで比較的いい感じにできると思いますが、実行できるコマンドの方が貧弱なのでそっちでVMでLinuxを使うみたいな事もあるかもしれません…(まさに自分…WindowsからVM上のLinuxをSSH経由で利用する開発環境の構築 | Web scratch)

WindowsからVM上のLinuxをSSH経由で利用する開発環境の構築

VirtualBox orVMWare PlayerでLinux環境をWindows 7×64に構築するメモ
今回はVirtualBoxTurnkey Linux coreを使って構築した。

と見せかけて、最終的にはUbuntu Server使う事にしたので途中まで飛ばしていいです。

なんでVMを使ってまでやるかというと
WIndowsでのCUIはConsole+NYAOSでコンソールとしていいのですが、node.jsなど実行できないものが出てきたので、VM上に環境を作ることにしました。
Cygwin : 食わず嫌いでしたが、食ったら嫌いでした。
coLinux : 64 bitが非対応でした。

必要なもの

  • VirtualBox(仮想化ソフトウェア)
  • TurnKey Core(サーバー、そこら辺の便利なソフトが入ってる感じのディストリビューション)
  • RLogin(SSHクライアント)

Turnkey Linux coreはVM向けにovf形式でも配布してるので、OVFと書かれてるリンクからturnkey-core-バージョン-lucid-x86-ovf.zipをダウンロードして使う。

2011-04-20-ss11

VirtualBoxを起動してメニューの仮想アプライアンスのインポートから、先ほどのovfをインポートすると自動でTurnKey Coreが仮想マシン一覧に並ぶ。(設定するのは仮想マシンの名前ぐらい)

2011-04-20-ss8

起動するとパスワードの設定などがあって、パスワード以外はEnter押してればいいと思う。
設定が終わると起動して下のようなメニュー画面が表示される。

2011-04-20-ss12
メニューを終了させると、CUIで操作できるけどキーやマウスの関係で扱いにくいのでSSHからアクセスして操作する。

RLoginを起動して、サーバの接続から新規追加して、プロトコロルにSSH、アドレスにはLinuxサーバーのIPアドレス、ユーザーはrootで、パスワードは最初の起動時に設定したものを入力して接続する

2011-04-20-ss13

2011-04-20-ss9

こっからはサーバー{ゲスト側(Ubuntu)}の設定

まずはrootだとあんまりよくないので、ユーザー(azuという例で)を追加、そのユーザーのパスワードを設定する。

root@core ~# useradd -m -s /bin/bash azu
# ユーザーazuを追加する。mオプションがないとHOMEディレクトリが追加されなかった
root@core ~# ls /home/     
azu/
# HOMEディレクトリがあるのを確認
root@core ~# passwd azu
# パスワードの設定
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
useraddの-sオプションでログインシェルを決めないとかなり不自由な感じになります。
後からログインシェルを決める場合はchsh -s /bin/bash などとする。
と、このままTurnkey Linuxを使おうと思っていたんだけど、ファイル共有でどうしても上手くGuest Additionsのインストールが上手くできないのと、なんかroot前提なような環境で他とは少し違った感じで躓く事がありそうだったので、Ubuntu Serverに切り替えました。
 

Ubuntu Serverを使って環境構築(改めて)

(ちょこちょログにTurnkeyが出てくるのはそのときの名残です。プロンプトの文字は無視してください)
(Turnkey Linuxの事は忘れてください)
必要なもの

ホストOS

ゲストOS

Windows 7 64bit

Ubuntu Server

で環境を作っていきます。
Ubuntu Serverのisoをダウンロードしてきて、新規仮想マシン作成から適当な配分で仮想マシンを作りますが、ネットワークをブリッジ接続に変更しないとUbuntu ServerのIPアドレスが10.0.2.25とかいう感じになってSSH接続できなかったので、ネットワークをブリッジ接続に変更して作成しました。
image
追記: ネットワークがNATでもポートフォワーディングすればSSH接続できました(こっちの方がいいかも)
ネットワークの設定をNATにしてから、高度の設定でポートフォワーディングにホストには任意のポート、ゲストにはUbuntu側に設定したSSHのポート番号(デフォルト22)を設定します。
2011-04-23-ss1
この状態で、RLoginに接続IPアドレスに127.0.0.1 or localhost で、ポート番号にはホストに設定したポート番号を入力すればSSH接続できます。
任意のポートだけを開く感じで使えるのでこっちの方がいい気がします。同様の方法でWebのポートである8080もポートフォワーディングに設定しました。

 

仮想マシンを起動したUbuntu Serverのインストール画面でユーザーアカウントの作成ができるので、下のガイドに従って入力していくだけで先ほどのTurnkey Linux でのユーザーアカウント追加までと同じ事ができます。

注意点としては18.サーバーソフトウェアの選択画面でOpenSSH SERVERを選択してSSHでつなげるようにしておくと楽でいいです(スペースキーで選択チェックが入る)

忘れた場合でも

sudo apt-get install openssh-server
とすればいいだけなので、そこまで問題ないです。
Ubuntu Serverはそのまま使うと文字化けして扱いにくいので、RLoginを使ってアクセスすれば文字化け対策をしなくてもいいので、最初からRLoginを使って作業します。
サーバのIPアドレスは
ifconfig

で、わかると思います。
初期設定なら、インストール時に入力したアカウントとパスワードでログインできると思います。


SSHで鍵を使って接続

セキュリティ的にパスワードではなく鍵でSSHをつなぐのが普通だと思うので、SSHの鍵設定をします。

root@core ~# cd /home/azu/
# ユーザのHOMEへ
root@core /home/azu# mkdir .ssh
root@core /home/azu# cd .ssh
# .sshディレクトリを作って移動
root@core azu/.ssh# ssh-keygen -t rsa
# 鍵を生成する
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): turnkey # ファイル名は適当に
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in turnkey.
Your public key has been saved in turnkey.pub.
root@core azu/.ssh# ls
turnkey  turnkey.pub
# .sshディレクトリに秘密鍵と暗号鍵が生成される
root@core azu/.ssh# mv turnkey.pub authorized_keys
# turnkey.pub を authorized_keysにリネームする
root@core azu/.ssh# ls
authorized_keys  turnkey
鍵は生成して公開鍵(authorized_keys)の登録ができたので、秘密鍵をホスト側のPCに転送します。
RLoginにファイル転機能がついてるので、.sshディレクトリにある秘密鍵(turnkey)をホスト側に移動させます。
ゲスト側(Ubuntu)に秘密鍵は置いておく必要はないので、秘密鍵(turnkey)は転送したら削除します。
2011-04-20-ss15
次にSSHの設定で、鍵以外でのログインはできないように/etc/ssh/sshd_configを書き換えます。
# それぞれをnoに書き換える 
PermitRootLogin no  
PasswordAuthentication no  
UsePAM no
# 面倒だったので一度rebootした

自分はportも22から適当なものに変更しました。

後はRLoginに秘密鍵を登録してSSHログインするだけです。
SSH Identity keyに転送した秘密鍵をセットして、ポートを変えた場合はポートも任意のものに設定してから接続します。
共有フォルダの設定
Ubuntu Server にはGUIがないので、Guest AdditionsのインストールもCUIで行わないといけません。
ここで結構はまりました

が大変参考になった。

まずは適当な共有フォルダを設定しておく。

image

そして、起動してるVMのメニューにある”Guest Additionsのインストール”を押しておく。
何にも起きてないように見えるが、CDドライブにCDが入った感じになる。

sudo apt-get install build-essential linux-headers-`uname -r`
sudo apt-get install xserver-xorg xserver-xorg-core
#必要なものを先にインストールしておく
###################
# ここまでにGuest Additionsのインストールを押してマウントの準備が必要
###################
mkdir /tmp/cdrom
sudo mount /dev/sr0 /tmp/cdrom
# Guest Additionsのディスクをマウントする
cd /tmp/cdrom
sudo bash VBoxLinuxAdditions.run  --nox11
sudo addgroup --system --quiet vboxsf
sudo usermod -a -G vboxsf azu # ユーザーをvboxsfグループに加える
sudo reboot
# リブート

azu@ubuntu:/media$ ls
cdrom  sf_azu
自動マウントするためにはユーザーをvboxsfグループというグループに加える必要があることに注意。
リブートすると/media以下にsf_フォルダ名が現れてアクセスできるようになる。
大体ここまで基礎的な環境ができあがるので、後は好きなソフトを入れていく感じになると思います。(一応スナップショットをとっておきました)
Ubuntu Server + VirtualBox GUIありでメモリ使用量は45MBぐらい、VBoxHeadless.exeで画面表示なしで起動させると30MBになって結構メモリ使用量は少ない。
VirtualBoxをタスクトレイに入れて管理するにはVBoxHeadlessTrayがおすすめ。ヘッドレスモードやシャットダウンとなどの操作もタスクトレイで行えるのでとてもいい。

ついでにNode.jsの環境も作ってみる
Node.jsは直接入れるよりもバージョン管理するツールから入れるのがいいらしいので、naveかnvmを使う事にした。
naveは何かインストールが面倒だったので、nvmを使う事にした。
nvmは自動でnpmもインストールしてくれるので便利。

azu@ubuntu:~$ sudo apt-get install build-essential libssl-dev git-core 
azu@ubuntu:~$ sudo apt-get install curl
# 必要なものを先にインストールしておく
azu@ubuntu:~$ git clone git://github.com/creationix/nvm.git ~/.nvm          
azu@ubuntu:~$ cd .nvm/
azu@ubuntu:~$ bash ./nvm.sh
azu@ubuntu:~$ nvm install latest
# 最新のnodeをインストールする
azu@ubuntu:~$ node -v           
v0.4.5

毎回 bash ./nvm.sh 実行するのは手間なので。
.bashrc を編集して、

. ~/.node/nvm.sh
nvm use latest

を書き加えておきます。

雑記

VMWareはスタートアップにいろんなもの生やすし、ダウンロードも登録必要で面倒なので、VMWareよりもVirtualBoxの方が好みでした。

目標としては、Cygwin HereみたくWindowsのエクスプローラー上のコンテキストメニューから、SSHクライアントを開いてそのときに同時に共有フォルダのsf_azu以下にある同じフォルダまで移動したいのだけど、お客様の中でよい方法をお知りな方がいらしゃったらお願いします。
e.g)
windows : C:\Users\azu\Downloads のコンテキストメニューからSSHクライアントを開く
Ubuntu   : 渡されたパスを元に /media/sf_azu/Downloads をカレントディレクトリにする

SSHクライアントのマクロみたいので実現するのかな。

Turnkey Linuxの

Windowsで使えるCoffeeScriptコンパイラを書いた

CoffeeScriptをJavaScriptのコードに変換するコンパイラ(coffee-script.jsをラップしただけ)をNILScriptを使って書いてみました。NILScriptはSpiderMonkeyが実行環境に利用されているので、ブラウザで実行できるようために配布されてるcoffee-script.jsをそのまま利用しています。

使い方

NILScriptが必要なので、ダウンロードしておいてください。
CS-Compiler.ng と coffee-script.js(自分で最新のものを持ってきた方がいいです)を適当な同じディレクトリに置きます。

$ng.exe CS-Compiler.ngへパス "FilePath" or "DirectoryPath"

という感じでコマンドプロンプト(自分はConsole2+nyaos)から実行して使用します。(D&Dでも使えるかも)
コンパイルはファイル、ディレクトリどちらに対しても利用できます。
ng.exe CS-Compiler.ngへパスをまとめたリンクファイルを作っておくと楽かも知れません。

コマンドラインの例はutilityTools/CoffeeScript at master from azu/NILScript – GitHubにも書いてあるので参考にしてください。

ファイルの更新に反応して自動的にコンパイルし直すwatchオプションがあるので次のように

$ng CS-Compiler.ng code.coffee --watch

という感じで起動すれば、code.coffeeを書き換えるたびにコマンドプロンプトにコンパイル結果が表示されます。
watchオプション(–watch or -w)はディレクトリにも使えるようになっていて、起動してからその監視対象のディレクトリに新しくファイルを入れた場合もそのファイルが監視対象に加わるようになっています。

 

watchオプションを入れた様子

 

コンパイルの実行速度ですが20Kbほどあるunderscore.coffeeが1-2秒ぐらいでコンパイルできるので、まあまあ使ってられるものだと思います。WindowsでCoffeeScriptをコマンドラインでコンパイルできて、ファイルの変更監視ができるものが見つからなかったのでkennyjのブログ(仮): CoffeeScriptをWindowsで使うを見て何となく書きました。
(Rubyのやつの使い方分からなかったCoffeeScript インストール – sappari wiki)

WindowsでV8 JavaScriptエンジンをコンパイルする

Windows VistaでV8を使いたかったのでビルドしたときのメモ

準備編

  1. Pythonをインストール(ActivePythonでもいいけど)
  2. SConsをインストール(PythonのMakeみたいなものらしい)
  3. Visual C++ 2010 Expressをインストール(本当はSConsだけでもいいけど、必要なWindows SDKが内蔵されてるので楽)
  4. git か svnがあるとV8のダウンロードが楽

実践編
(X / _ / X <は$みたいなプロンプトです)
バージョンの確認コマンドも打ってますが、How to Download and Build V8 – V8 JavaScript Engine – Google Codeでソフトウェアの必要なバージョンが載っています。

多くの例ではsvnで

svn checkout http://v8.googlecode.com/svn/trunk/ v8

としてv8をダウンロードしているみたいですが、githubに公式ミラーがあるので今回はそれを利用しました。

X / _ / X < git clone git://github.com/v8/v8.git v8
Initialized empty Git repository in D:/Software/v8/.git/
remote: Counting objects: 53075, done.
remote: Compressing objects: 100% (7672/7672), done.
remote: Total 53075 (delta 46205), reused 51859 (delta 45179)
Receiving objects: 100% (53075/53075), 25.18 MiB | 749 KiB/s, done.
Resolving deltas: 100% (46205/46205), done.
Checking out files: 100% (1426/1426), done.
X / _ / X < python -V
Python 2.6.4
X / _ / X < scons --version
SCons by Steven Knight et al.:
 engine: v2.0.1.r5134, 2010/08/16 23:02:40, by bdeegan on cooldog
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation

ここまでで準備は終わり、次はビルドとテスト
sconsの引数はよく分からなかったのでBuildを見てscons d8としました。

X / _ / X < cd v8
X / _ / X < scons d8
#ビルド
X / _ / X < tools\test.py
#テスト
[13:26|% 100|+ 4599|-   3]: Done

特に環境パスの引数なしでも通ったのでシンプルにしていますが、手動でパスを通す場合は大変なので”C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat”などのbatファイルを使うとよいかもしれないです。

最後にベンチマークを取ってみて終了

X / _ / X < cd benchmarks\
X / _ / X < ../d8 run.js
Richards: 7311
DeltaBlue: 9098
Crypto: 8762
RayTrace: 6707
EarleyBoyer: 12664
RegExp: 1440
Splay: 2193
----
Score (version 6): 5521

これで、Windows上で使えるV8(d8)のバイナリ作成ができたので終わり
毎回d8.exeまでのパスを入力するのは大変なので、バイナリの場所までRedmond Pathを使ってパスを通しています。

Thinkpad Edge 14″を購入して最初にやった事などの設定まとめ

ThinkPad EdgeとLoox UとiPhone3G

 

ThinkPad Edge 14″


プロセッサー
インテル Core i3-380M プロセッサー (2.53GHz, 3MB L3, 1066MHz)


初期導入OS
Windows 7 Home Premium 64
正規版


初期導入OS及び言語
Windows 7 Home Premium 64 正規版 – 日本語


ディスプレイ
14.0型HD液晶 (1366 x 768 16:9 LEDバックライト)光沢なし – ミッドナイト・ブラック(光沢なし) (WWANアンテナなし)


グラフィックス
インテルHDグラフィックス


メモリー
2GB PC3-8500 DDR3 (1スロット使用)


キーボード
日本語キーボード


ポインティング・デバイス
ウルトラナビ(TrackPoint + タッチパッド) + 指紋センサーなし


ハード・ディスク・ドライブ
320GB ハード・ディスク・ドライブ, 5400rpm


オプティカル・ドライブ
DVDスーパーマルチ, 固定


バッテリー
6セル Li-Ion バッテリー


電源アダプター
65W ACアダプター


Bluetooth
内蔵Bluetooth


ワイヤレスLAN アダプター
ThinkPad IEEE 802.11b/g/n ワイヤレスLAN (WiFi準拠)


言語内容
日本語

を¥45,276 ほどで購入したのでそれの設定メモ

Read the rest of this entry »

第2回ブラウザー勉強会のアウトラインメモ

2010/11/27開催 Browser Workshop – ブラウザー勉強会 に参加してきました。
ブラウザとUI/UXについてのお話が中心。
Twitterでの#BrowserWS のログは Togetter – 「第2回ブラウザー勉強会」 にまとめてあります。

予定されていたスケジュール


Read the rest of this entry »

Windows Updateの自動再起動を止めさせる方法

Windows Updateでいきなり再起動されてデータが消えたって話は未だによく聞くので自動的に再起動を防止する方法のメモ

Business以降のグレードならだったらグループポリシーを使えば設定できる
Homeとかpremiumはないのでレジストリを直接変更する必要がある。

レジストリを直接変更するのは面倒だと思うので、Prevent Windows Update from Forcibly Rebooting Your Computer – How-To Geekに置いてあるregまたはオンオフがGUIでできるソフトウェアを使うと楽です。

自動更新のダイアログが出ているときに、そのダイアログを黙らせるだけなら(防止はできない)
誠 Biz.ID:3分LifeHacking:「今すぐ再起動しますか?」のダイアログを“マホトーン”するで紹介されている、
XP にマホトーンをとなえるを使うといい。

もっと汎用的にWindows Update以外のソフトウェアによる再起動を防止したいのならShutdownGuardを利用するとその都度確認を取ってからシャットダウン・再起動・ログオフを行える。
追記:同様の事が「ちょっと待った」でも行える

ソフトウェアのリンクまとめ

 

NILScriptの使い方と書き方

NILScriptとはSpiderMonkeyを使ったJavaScriptベースのスクリプト実行環境です。(Windows専用+Wine環境でもある程度)
直感的に言うと、WSH + AutoHotKeyみたいな感じというのが分かりやすいかな。
できることなど細かい事はNILScriptのページやDocを読んでもらうとして、SpiderMonkey(JavaScript 1.8.1ベース)を使った処理系なのでFirefoxと同じJavaScriptの文法で、エクスプローラでのバッチ処理やキーバインドの変更などWSHやAutoHotKeyで行っていたような事がJavaScriptで書けます。

使い方

NILScriptのページからnil.zipをダウンロードして、適当な場所に解凍します。
解凍して出てくるng.exe(コンソールあり)とngw.exe(コンソールなし)のどちらかに、NILScriptのスクリプトファイルである*.ngファイルを渡すと実行されます。(WSHだとng = Cscript ,ngw = Wscript みたいな感じ)
毎回ng.exeなどにD&Dや引数などでngファイルを渡すのは面倒なので、ngファイルをクリックで実行できるように関連づけを行うinstall.batというのが入っています。実行するとng.exeと*.ngファイルが関連づけされ、クリックで実行できるようになります。
(多分レジストリを使うのはここだけ)
これで、実行する準備はできたので試しに何かスクリプトを実行してみましょう。

追記:現在はHome – NILScript – GitHubにほとんどのスクリプト置いてあります
自分が作った適当なスクリプトで試してみる。

上のngスクリプトはちっちゃいウィンドウが出てきて押したキー(組み合わせも大丈夫)を表示するだけのスクリプトです。

こっちのngスクリプトは、Twitterで自分がフォローしてる人からユーザー名を検索してコピーするスクリプトです。
初回の起動時はOAuth認証します。(NILScriptで立てた簡易サーバをリダイレクト先にしている)
2回目の起動で自分のフォローしてるユーザーのリストを取得してから、ユーザー名を検索するウィンドウを表示します。
ユーザー名を途中まで入力して↓キーなどを押せば、入力したユーザー名の所まで飛べます。Ctrl+Cでユーザー名をコピーできます。

このようにngスクリプトを書けば、ローカルで動くものがJavaScriptで書けるので簡単なものを書いたりするのに便利です。
特にエクスプローラなどのファイル操作周りはWSHより簡単に書けるので、簡易なバッチ処理を書きやすい。
次はngスクリプトの書き方を見ていきます。

書き方

ドキュメントはダウンロードしたnilフォルダにdocというフォルダがあり、その中にユニット(機能)毎のドキュメントが書いてあります。
いろいろあるので何から見れば良いか迷いますが、まずは_readme.txtを開いてみると、NILScriptには大きく分けて、
Base.ng内で定義されているNIL標準クラス・関数 と require()関数で読み込んで使うユニットスクリプトがあることが分かります。
簡単言うと、前者はngスクリプトにそのまま書いて使える関数などで、後者はrequire(‘Clipboard’)のようにユニットスクリプトを読み込んでから使えるようになる関数などが存在するという事です。
まずはNIL標準クラス・関数にどんなものがあるかをbase_*.txtなどを軽く見て把握しましょう。
眺めているとprintlnなどのよくあるような感じのものからsleepやスレッドやポインタなどのJavaScriptでは扱えないものもあることが分かります。(base_main.txtはよく使う関数があるので必須)
正直、まだドキュメントは箇条書き程度で文例などが不足しているので、実際に動かしながら確認する必要がある。
(NILScriptブログで使い方などの解説も始まったので合わせて読む)
必要な機能は必要になったらgrepなどで検索して探すので効率的。

ドキュメントばかり見てもよく分からないので、サンプルファイルを見ながらどういう風に書いているのかを見てみましょう。
サンプルはnilフォルダのsampleというフォルダに入っています。
NIL標準クラス・関数はそのまま使えるので、ドキュメントや動作を見れば何となく分かってくると思います。
ユニットスクリプトを使うものはrequireしてから使う必要があるので、requireの仕方を見てみましょう。
例えばsampleのclipboard.ngを見ると、clipboardを扱うためのユニットスクリプトを読み込んでいるのが分かります。(詳細はClipboard.txtに)

/*
タスクトレイにアイコンを登録して常駐し、
クリップボードの内容が変更された時に、形式に応じた情報を表示します。
*/

Main.createNotifyIcon();// タスクバーにアイコン表示
var Clipboard=require('Clipboard').Clipboard;// ユニットスクリプトを読み込む

Clipboard.observe('change',function(obj){// クリップボードが変化したら動作するリスナー
	if(this.hasFormat('files')){// クリップボードの中身がファイル形式
		var a=this.files,r=[];
		for(var i=0,l=a.length;i<l;i++){
			r.push(a[i].name);
		}
		Main.notifyIcon.showInfo(r.join("\n"),this.isMove?"move":"copy");// タスクトレイのアイコンにバルーンメッセージを表示する
	}else if(this.hasFormat('html')){// html形式
		var h=this.html;
		Main.notifyIcon.showInfo(h.fragment,h.url);
	}else if(this.hasFormat('text')){// テキスト形式
		Main.notifyIcon.showInfo(this.text,'text');
	}
});

上ではvar Clipboard=require(‘Clipboard’).Clipboard;というようにクリップボードのユニットスクリプトを読み込んで、
読み込んだクリップボードスクリプトのClipboardというクラスをClipboardという変数に渡しています。
_readme.txtの●ユニットスクリプト機能にも書いてありますが、ユニットスクリプトrequire(“SomeUnit”).SomeClass という感じで、
多くのものはSomeUnitとSomeClassは同じ名前を持っているので上のような読み込み方法がよく出てきます。
他にもユニットスクリプトの使い方はあるので詳しくはNILScript: ユニット(拡張ライブラリスクリプト)の読み込み方法を見ると良いでしょう。(withでやるやり方はWindowでよく使います)

まずはHelloWorldを書いて実行するところから始めて、クリップボードが使いたくなったら関係するサンプルとClipboard.txtを見て作ってみる(それでもよく分からないときはlibフォルダにユニットスクリプトのソースがあるので中身を見てしまうと言うのもあります)

println("Hellow World");

サンプルを見ていくと大体雰囲気は使えめると思いますが、まだまだ文例が足りないのでハマる事があります。
くだらないものを書いてもどんどん公開して、いろんな書き方が見られるようになるともっと使いやすいものになると思います!

作例

追記:現在はHome – NILScript – GitHubにほとんどのスクリプト置いてあります

というわけで自分が今までに自分が書いたNILScript。


最後の方で出てきたOAuthをNILScriptで使う方法。(上のサンプルは無視していいよ)

  • OAuth.ng (ライブラリみたいなものです)

をダウンロードして、OAuthを使うスクリプト内でinclude(“OAuth.ng”);して、後はOAuth for Greasemonkeyのラッパーライブラリ | Web scratchとメソッドの使い方は同じ。(xhrは実装してないです)
単純なサンプルで、OAuth.ngと同じフォルダに入れて実行するとOAuth認証ができます。

本当はユニットスクリプトやプラグインにした方が良いんだけどやり方がイマイチ分からなかったのでincludeにしてみた。

まとめ

良いところ

SpiderMonkeyベースなのでE4Xなども使えて文字列処理がやりやすいので、Firebugなどでマクロ的な文字列処理をしてる人とかJavaScriptで書くならこっちの方が便利かもよ。(JavaScript の新しめの機能(Array の拡張)とかも動くよ)
デフォルトでマルチストローク対応ホットキーやマウスジェスチャープラグインなどもあるので、AutoHotKeyでよくあるキーバインドを変更するとかもできるよ(自分の設定を公開とかやるといいかも)
WSHに比べてファイル操作をするものがかなり書きやすいよ。(base_io.txtを読む)
AutoHotKeyと違ってマルチバイト文字列に対応してるのでダメ文字とか日本語書けないとかに悩まされないよ。
標準関数やユニットスクリプトなどもNILScriptで書かれているので、ソースを直接読むことができる(この辺、情報不足感といいJetpackによく似てる。requireするとこも)

悪いところ

知名度が少ないので情報が少ない(→作ったものはどんどん公開して欲しい)
SpiderMonkeyにはDOM実装はないので、LooseXMLという独自のパーサーになっている。XPathに似た表記で使えたり悪いとは言い切れないけど、普段使うJavaScriptのDOMとはちょっと違うので手間取る。
GUIの表現が貧弱。Windowを使う事で基本的なウィンドウは簡単に作れるが、文字サイズなど装飾など細かい事ができない部分も多い。

NILScriptの用途として個人的に使うものを書く場合が多いと思いますが、書いたものをどんどん公開していこうぜ!という感じで〆

NILScript
NILScript配布場所
NILScriptブログ
特徴や使用例の紹介記事

Google Web Historyに見たページを自動記録するアドオン(Jetpack SDK)

GoogleにはGoogle – ウェブ履歴というものがあり、検索してどのページを訪ねたかなどが記録されています。
またその記録は検索ページで既読リンクの色にするなどの判定にも使われています。
Google検索から訪ねたサイト以外のURLもウェブ履歴に登録するFirefox拡張機能を作成してみました。
既に

などGreasemonkeyやTomblooパッチなど代わりになる手段は山ほどある気がしますが、Jetpack SDKを使いたかったのと、意外にもFirefoxアドオンとして同じ役割するものが見つからなかったので作ってみました。

他のスクリプトとの違いは大して無いと思いますが、できるだけ無駄な送信を控えるようにしています。

  • 最近訪れたサイトは重複送信しない(100件ぐらいでクリアされます)
  • https://はホストのみを送信
  • ローカルやIPアドレスベースのURLの場合は送らない

ダウンロードはAMOからできるようにしてあります。
Firefoxアドオンのxpiを簡単における場所が無かったので、AMOに登録しておいてあります。

Jetpack SDKでコンパイル?前のソースコードはこちらに

Jetpack SDKで何か作るには

Jetpack SDKで既に3つほどアドオンを作成していますが、0.5だとJetpack prototypeとできることはそこまで変わってないです。(prototypeのギャラリー無くなったみたいですね。8個ぐらい作った気がする)
Jetpack SDKで作る上で参考にしたのは

最後のJetpack SDK Docsはcfx docsで開いて、jetpack-coreあたりに現在使えるAPIが載っているのでそれを見て使い方を調べるとAPIの使い方は分かる感じ。(Jetpack prototypeの頃よりはドキュメントにサンプルもあってマシになりました)
一番ハマるところはcfxとかコマンドでエラーがでるとかその辺だった気がする。
環境はWindows Vistaです。
cfx testallすら通らない場合は-aとか-bオプションを指定してみるといい。 Jetpack SDK 0.4でcfx testallを成功させる方法 (windows) – Cherenkovの暗中模索にっき
毎回オプションを付けるのが面倒になったらlocal.jsonを作りデフォルト値を決めてみましょう。
自分はjetpack用のプロファイルを作りそれを指定してます

{
  "configs": {
    "default": [
      "-a", "firefox",
      "-b", "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
      "-P", "%appdata%\\Mozilla\\Firefox\\Profiles\\h545wqkn.jetpack"
    ],
    "ff37": [
      "-a", "firefox",
      "-b", "C:\\Program Files\\Mozilla Firefox 3.7\\firefox.exe",
      "-P", "C:\\Users\\admin\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\testuser"
    ]
  }
}

package.jsonを作り、libフォルダを作りmain.jsを書いて → さあcfx runで起動しようとしたら、まずはpackage.json内にidが自動生成されます。そしてもう一度cfx runすると下のようなエラーが出てくることがあります。

Traceback (most recent call last):
  File "D:\jetpack\bin\cfx", line 6, in 
    cuddlefish.run()
  File "D:\jetpack\python-lib\cuddlefish\__init__.py", line 475, in run
    include_dep_tests=options.dep_tests
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 267, in generate_bu
ild_for_target
    add_dep_to_build(dep)
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 254, in add_dep_to_
build
    add_section_to_build(dep_cfg, "lib", is_code=True)
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 232, in add_section
_to_build
    validate_resource_hostname(name)
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 65, in validate_res
ource_hostname
    raise ValueError('invalid resource hostname: %s' % name)
ValueError: invalid resource hostname: jid0-英数字-フォルダ名-lib

これはpackage.jsonのnameに大文字やマルチバイト文字やスペースなどが含まれていると出てきます。(んなの分かるか)
なので小文字英数とハイホンあたりでnameを決めておきましょう。

console.logはコマンドプロンプトの方にでてくるので、それを使って(他に何かあるのかなー)デバッグしながらmain.jsなどを完成させて、xpiをcfx xpiコマンドではき出せば完成です。
まだ設定画面やパネルなどのGUIが簡単に使えなかったりしますが、用途が合えば簡単にアドオンを作成できるのでなかなか面白いです。

Google WebHistory Updater :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/213956/
プロフィール: azu(アズ)
Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
  • OS:Windows Vista, 7
  • ブラウザ:Firefox
  • Twitterのアカウントはこちら
  • azu_re
  • メールアドレス(Twitterの方が確実)
  • info@ドメイン名
リンク