SourceForgeはOpenSSHの公開鍵を登録しないと使えない機能が多いので
puttygen.exe でキーを生成して登録する。
ただputtyで使うキーがSSH形式でSourceForgeで使う形式のOpenSSHと違うためそのままでは登録できない。
なので
http://hiromasaya.web.fc2.com/Windows/putty.html
を参考にして
ssh-keygen -i -f id_rsa.pub id_rsa_open_ssh.pub でできた id_rsa_open_ssh.pub をエディタで開いてSourceForgeの入力フィールドにコピペで登録できました。
Xyzzy Wiki の [ソースからビルドしてみる3][1] を参考に xyzzy をソースからビルドしてみました。 ファイルを取ってきたり、めんどくさいことが多かったので以下のステップでできるように簡略化。
[xyzzysrc-0.2.2.235-pack][2]
これをダウンロードしてあとは01README.txtを見てください。
1 Microsoft Visual C++ 2008 Express Edition インストール
2 env.vbs を叩く (環境変数のセットとafxres.hのコピー)
3 cd xyzzy/src
4 nmake (デバッグ版は nmake CFG=d)
5 ぽけーと待つ
6 できあがり
以上です。 何かおかしいところあったら連絡ださい。 俺は何もわかっていませんので。
Unicode Consortium のファイルも同封してますが、ライセンスの確認はとってます。
2011/05/28追記
2chで指摘されて気づいたのですが、env.vbs で c:\Program Files\ 配下にファイルの移動を行ってるので UAC が入っているとエラーになります。 UACを一時的に切ってenv.vbs を実行してください。
一度実行してしまえば次回以降ビルドするときにはUAC がオンでも問題ありません。
Xyzzy上で新規作成した javascript とか ruby のバッファに毎回モード設定をするのがめんどくさかったので書いた。 siteinit.l か ~/.xyzzy のどこかに貼りつけて使ってください。
※同じ拡張子に複数のモードが紐付けられていると、古い方に設定されるようになっていたので修正;ファイル保存時に拡張子をチェックして適切なモードに変更する。 ;リネーム時にしたかったけど、hookが用意されてないので断念。 (defun set-buffer-mode () (block sbm (mapcar (lambda (l) (when (string-matchp (car l) (get-buffer-file-name)) (funcall (cdr l)) (return-from sbm)) ) *auto-mode-alist*))) (add-hook ‘*after-save-buffer-hook* ‘set-buffer-mode)
PythonのGUI,Tkinterを使おうとこのページの一番上のサンプルを動かそうとすると動かず第一歩をくじかれる。
http://www.pythonware.com/library/tkinter/introduction/hello-tkinter.htm
エラーメッセージはこんなの。
ImportError: No module named Tkinter
環境はWindows7でPython3.0.1 Portable。
エラーメッセージで検索しても「yumを使ってモジュールインストールしろ。」とかLinux向けの情報しか出てこない。 適当にあさってやっと見つけた解決策はこれ。
from Tkinter import *
を
from tkinter import *
に変える。 どうも Python3からmodule名の大文字小文字が変更されたのが原因だったようだ。
テキスト形式でUMLが書けるPlantUML PlantUMLはテキスト形式でUMLを記述して画像に出力できるオープンソースのソフトウェアです。 UMLが書けるフリーソフトはいくつかありますが、テキストベースで記述できるのは大変ありがたいですね。
PlantUMLの具体例 サンプルをPlantUMLのサイト内から引用します。
http://plantuml.sourceforge.net/classes.html
[][1] こんなUMLが以下の記述で作れちゃいます。@startuml img/classes04.png abstract class AbstractList abstract AbstractCollection interface List interface Collection List <|– AbstractList Collection <|– AbstractCollection Collection <|- List AbstractCollection <|- AbstractList AbstractList <|– ArrayList ArrayList : Object[] elementData ArrayList : size() enum TimeUnit TimeUnit : DAYS TimeUnit : HOURS TimeUnit : MINUTES @enduml
PlantUMLのインストール http://plantuml.sourceforge.net/download.html
から plantuml.jar をダウンロードしてください。
plantumlの実行にはJavaが必要になりますので、もしJavaがインストールされていなければ
http://www.java.com/ja/download/
からインストールを行ってください。
“Sequence Diagram” 以外の画像の出力、つまり普通に使うのであれば Graphviz もインストールする必要があります。
http://graphviz.org/Download_windows.php
からダウンロードしてインストールしてください。
以上でインストールは終了です。
xyzzyからPlantUMLを使う方法 さて、次は以下のコードを siteinit.
xyzzyから直接javascriptを使う 今回の記事はRhinoのインストールが行われてる事と xyzzy で jscript-mode がインストールされている事が前提条件になります。 RhinoのWindowsでのインストール方法については前回の記事『[Windows(cygwin+zsh)環境でRhinoを使う][1]』を参考にしてください。 今回の記事の設定を行うと xyzzy から直接Rhinoを呼び出して下の画像のように簡単なスクリプトを気軽に書けるようになります。
[][2]
下記のlispはruby-modeから引っ張ってきて少し修正を加えたもので、これを ~/.xyzzy や siteinitl. に貼りつければjscript-mode で C-c C-x すれば現在編集中のバッファの javascript が実行されます。
;;jscript-mode(for Rhino) (setf \*js-prog\* "java org.mozilla.javascript.tools.shell.Main") (setf \*js-classpath\* "X:/sugarsync/bin/rhino1\_7R2/js.jar") (defun js-run-script-immediate () (interactive) (js-run "")) (defun js-run (args) (let ((tempfile (make-temp-file-name "\_\_temp\_" "js" (default-directory)))) (write-file tempfile t nil (buffer-fileio-encoding) (buffer-eol-code)) (command-execution (concat \*js-prog\* " -f \"" tempfile "\" " args)) (delete-file tempfile :if-does-not-exist :skip))) (defun command-execution (command) (interactive "
Rhinoとは何か? javascript を記述するときに毎回htmlファイルを作る作業が手間なので何か方法がないか探してみた。 どうやら、JAVAで書かれたjavascript実装のRhinoでやりたい事ができるらしい。
Rhino – MDC Rhino はすべてが Java で記述された JavaScript のオープンソースな実装です。それは一般的には、Java アプリケーション環境へ組み込まれて、エンドユーザーによるスクリプトの記述が可能になります。 Rhinoのインストール方法 J2SE 6には標準で入っているらしいがEverythingで探しても見つからないので今回は http://www.mozilla-japan.org/rhino/download.html からダウンロードして使うことにする。
ダウンロード+解凍して適当なディレクトリに移動する(私の環境ではSugarSyncで共有してるディレクトリ配下のX:\sugarsync\bin\rhino1_7R2)。 スペースや日本語の文字列を含まない場所に置くのが無難だろう。 次に CLASSPATH を設定する。CLASSPATH=x:\sygarsync\bin\rhino1_7R2\js.jar export CLASSPATH # /cygdrive/x/~ の形式では java が認識しない。
これでインストールは完了したので
java org.mozilla.javascript.tools.shell.Main と入力すればインタープリタが起動する。
zshrcでエイリアスの設定 しかし毎回これを打つのはあまり現実的ではないため ~/zshrc で alias を設定しておくと良い。alias js=“java org.mozilla.javascript.tools.shell.Main”
インタープリタを呼び出さずに直接実行することや、jsファイルを直接指定して実行することもできる。js -e “print(‘hello’)” js -f hello.js
これでjavascriptの動作をちょっと確認したいときに簡単に動かせるようになったし、JAVAで実装されているため、JAVAのクラスをjavascript内部で呼び出したりもできるようだ。 色々と遊んでいこうと思う。
MSのブラウザ選択のバグに関する説明が、全くわかってない人が書いてるとしか思えない内容だったので javascript の sort について少し解説をしようと思う。
MS、Webブラウザ選択画面にアルゴリズム上のバグか - @IT JavaScriptの配列の並べ替え(sort)は比較関数を渡すことで柔軟な並べ替えが行える。ここではMath.rand()で半々の確率で正負の値を返しているので、隣り合う要素の並べ替えはランダムに起こる。これで結果もランダムになるように思えるが、実際に意味のある並べ替えを行うためには、並べ替えた後の配列が一定の基準に従っている並べられていることが不可欠で、例えば「a>b」であれば「b<a」、「a<bかつb<c」であれば「a<c」でなければならない。これは、隣り合う要素同士をただランダムに入れ替えるだけでは達成できないのだという。 この「並べ替えた後の配列が一定の基準に従っている並べられていることが不可欠」という意味の分からない部分はおそらく下記を訳した物と思われる。
Doing the Microsoft Shuffle: Algorithm Fail in Browser Ballot Sorting requires a self-consistent definition of ordering. The following assertions must be true if sorting is to make any sense at all: だから正しい訳は「並べかえには首尾一貫した”大小の定義”が必要である。」になる。
実際にどのようなバグがあったかを説明するにはコードで示すのが一番わかりやすいので直接書いていこう。 問題の、 javascript の sort関数では引数に比較関数を取れる。例えばfunction comp(a, b){ return a < b; //降順で並べる } function sortnum(){ return [0,3,5,6,-6].sort(comp); } //=>6,5,3,0,-6 function comp(a, b){ return a < b; //昇順で並べる } function sortnum(){ return [0,3,5,6,-6].