xyzzy導入メモ

;;;Netinstaller
(require "ni/setup")
(ni-autoload)
(defun ni::add-site-from-wiki ()
(interactive)
(let *1
(car tmp))))
(split-string (match-string 1) #\&)))))
(let (out)
(while
(handler-case
(progn
(push (read-line s) out)
t)
(quit (c)
(return-from ni::add-site-from-wiki))
(error (c)
nil)))
(nreverse out))))
(mapcar (lambda (x) (cdr (assoc "src" x :test 'equal))) ni::*site-data*)
:test 'equal))) t)
(define-key ni::*site-map* #\N 'ni::add-site-from-wiki)

    • M-x netinstallerでNetinstaller起動,Nでサイトを最新のものに更新
    • アローキーで移動,スペースで詳細表示,iでインストール
    • paren, clickable-uri, rv-region, chcolorをインストール
    • C:/Program Files/xyzzy/site-lisp/chcolor/ini/に自分用の色設定をycolorとして保存
  • .xyzzy設定
    • 次の分を追加

;;;Incremental Search
(require "isearch")

;;;括弧の強調
(require "paren")
(turn-on-global-paren)
; Fundamental モード対応
(add-hook '*fundamental-mode-hook* #'(lambda()
(set-syntax-match (syntax-table) #\( #\))
(set-syntax-match (syntax-table) #\{ #\})
(set-syntax-match (syntax-table) #\[ #\])
))

;;;キーバインド
(define-key ctl-x-map #\3 'split-window-vertically)
(define-key ctl-x-map '(#\h) 'selection-whole-buffer)

;;;clickable-uri
(require "clickable-uri")
(global-set-key '(#\C-c #\C-o) 'clickable-uri-open)

;;;backup
(require "backup")
(setq *backup-directory* "C:/Users/yambi/backup")
(setq *hierarchic-backup-directory* t)

;;;chcolor
(autoload 'chcolor "chcolor/chcolor" t)
(autoload 'chcolor-specify-file "chcolor/chcolor" t)
(chcolor-specify-file "ycolor")
(setq *chcolor-table* (chcolor-load-from-ini
(merge-pathnames "ycolor" *chcolor-ini-dir*) *chcolor-keylist*))
(chcolor-set 1)

*1:s (ni::http-get-url "http://xyzzy.s53.xrea.com/wiki/index.php?cmd=source&page=NetInstaller%2F%C7%DB%C9%DB%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%B0%EC%CD%F7"))) (ni::load-site-data) (mapcar (lambda (x) (ignore-errors (ni::site-add x))) (set-difference (remove-if 'null (mapcar (lambda (i) (and (string-match "^:[^|]+|\\(http:.*\\)$" i) (apply #'concat (mapcar (lambda (x) (let ((tmp (split-string x #\;))) (if (equal (car tmp) "amp") (apply #'concat "&" (cdr tmp

windows7設定メモ

システム

  • デスクトップ
    • ショートカット類削除
    • コントロールパネル->個人設定 からゴミ箱などを非表示
  • タスクバー
    • 右クリック->ツールバー->新規ツールバー から~/qlaunchを登録.
    • ~/qlaunchの中にQuick Launchしたいショートカットとゴミ箱を追加
  • コントロールパネル->フォルダオプション
    • 拡張子,隠しフォルダなどを表示
    • 常にメニューを表示
  • 固定キー機能OFF
  • Caps LockとCtrlを入れ替え 参考:Windows7 でCtrlとCapslockを交換+α - GONE WITH THE MEDICINE
  • 再起動時のwindows update,失敗->スタートメニューのwindows updateからインストールをすれば成功
  • wepのかかったwirelessにつなげない->とりあえず鍵なしのmac adressによるフィルタリングにして解決

アプリケーション

TODO

  • エクスプローラ
    • 「ダウンロード」などのフォルダ名をアルファベットに
    • 標準で詳細表示
    • アドレスバーを標準でフルパス表示にする(無理そう)
  • google desktopのホットキー変更
  • inkscapeにtextextを入れる(TeXVM上に入れたのでinkscapeごとVM上で動かすことにするかも)

ペンタブレット

ペンタブレットが3000円と安かったので買ってみた

Princeton スリムタブレットMini PTB-ST5

Princeton スリムタブレットMini PTB-ST5

linuxから使うには少し設定が必要.
ubuntu10.10の場合次の設定で動くようになった.

まずはドライバのインストール

sudo add-apt-repository ppa:doctormo/xorg-wizardpen
sudo apt-get update
sudo apt-get install xserver-xorg-input-wizardpen

/etc/hal/fdi/policy/99-x11-wizardpen.fdiに次の内容を記述





wizardpen
true
0
0
10000
6250


あとは再起動すれば使えるようになっている.
うまく動かないと思ったらペンに入れる電池の向きが逆だったので注意


使ってみた感想としては,広いディスプレイだと位置指定が難しいのと途中で一瞬動きが固まり操作性があまりよくなかった.
あと非接触で位置を同定する仕組みがわからない

kindle3

kindle3を買いました.
wifiのみのタイプで値段は$139+$20+$8=$167.円高なので15000円に行かない程度.




とりあえず,1日触った印象としては,

  • 良い点
    • 小さい
    • 軽い
    • 高解像度
    • 明るいところでも見やすい
    • バッテリーのもちがとてもよい
  • 悪い点
    • A4のPDF1枚を表示するには画面が小さい
    • ページ遷移が遅く,前に表示していたものが少しのこる
    • 暗いと見えない
    • 細かいスクロールができなくて不便(やり方を知らないだけかも)
    • スリープまでの時間,表示の設定ができなくて不便(これもやり方を知らないだけかも)
    • ファイルの管理が階層付けしてできない(〃)
    • wifiでのファイルやりとりができない(メールでの変換サービスをうまくつかえばこれはできるようになるはず)

気になったこととして,

  • wifiがつながらない
    • wepキーをASCIIではなく16進でいれたらつながった
  • 数字入力が面倒
    • Alt+上段のアルファベット で入力可
  • 説明書適当すぎ
    • ググればいろいろ書いてない機能がみつかる


あとは,ケースを買わなかったので持ち運びをどうすかを思案中


Solovay–Strassen primality test in Scala

Solovay-Strassenの素数判定アルゴリズムScalaで実装してみた.
Scalaでまともなプログラムを書いたのは初めてだったので苦労した

import java.math.BigInteger;                                                                                                                                                     
import java.util.Random;
import java.util.Scanner;

object SolovayStrassen {
  def main(args: Array[String]):Unit = {
    var sc = new Scanner(System.in)
    var i = 0
    while(sc.hasNextLine){
      var s = System.currentTimeMillis()
      var line = sc.nextLine()
      if(!line.equals("")){
        println(i+=1)
        if(PrimeTest(new BigInt(new BigInteger(line)),1))println("probably prime, time:"+(System.currentTimeMillis()-s)+"ms")
        else println("composite number"+(System.currentTimeMillis()-s)+"ms")
      }
    }
  }

  def PrimeTest(n:BigInt, k:Int):Boolean={
    if(n<=1)return false
    if(n==2)return true
    if(n%2==0)return false
    for(i <- (1 to k)){
      var a = Rand(n)
      var x = Jacobi(n,a))%n
      if(x==0||(a.modPow((n-1)/2,n)-x!=0)return false
    }
    return true
  }

  def Jacobi(n:BigInt,a:BigInt):Int=J(n,a,1)
  def J(n:BigInt,a:BigInt,c:Int):Int=if(n.gcd(a)!=1) 0
                               else if(n==1) c
                               else if(a==0) 0
                               else if(a==2){if(n%8==1||n%8==7) c else -c}
                               else if(a>=n) J(n,a%n,c)
                               else if(a*2>n) J(n,n-a,c*(if(n%4==1) 1 else -1))
                               else if(a%2==0) J(n,a/2,c*(if(n%8==1||n%8==7) 1 else -1))
                               else if(n%4==3&&a%4==3) J(a,n,-c)
                               else J(a,n,c)

  var r = new Random(System.currentTimeMillis())
  def Rand(n:BigInt):BigInt={
    var p:BigInt = 0
    while(p==0||p>=n)p = new BigInt(new BigInteger(n.bitLength,r))
    return p
  }
}


しかし,BigIntの計算がとても遅いので困る.
Haskellの10倍,C++ with GMPの50倍遅かった

gnuplotの使い方メモ

グラフ描画用ソフトgnuplotの使い方メモ.
ちなみに,読み方はニュープロットでGNUとは無関係

設定

set title "hoge" # 表のラベルをhogeに設定
set xl "fuga" # x軸のラベルをfugaに
set yl "piyo" # y軸のラベルをpiyoに
set xr [0:1] # x軸の範囲を[0:1]に
set yr [-1:2] # y軸の範囲を[-1:2]に
set yr [] reverse # y軸の方向を逆に
set yr [] noreverse # y軸の方向を通常に
set logscale y # y座標を対数に
set format y "10^{%L}" # y座標のフォーマットを10^nの形に
set xtics 1 # x軸のメモリを1刻みに
set size 0.5,2 # 画像の大きさをx軸方向に0.5倍,y軸方向に2倍に
set samples 1024 # グラフをプロットするときのサンプル数を1024個に
set term postscript eps enhanced color "Ryumin-Light-EUC-H" 16  # 出力ドライバをpostscriptとし,epsのカラー出力に また日本語を使えるフォントで16ptに(文字コードをeucにする必要あり)
set term x11 # 出力をx11に戻す
set output "output.eps" # 出力ファイルを./output.epsとする

プロット

sin(x)のグラフをかきたいときは

plot sin(x)

でOK

#"size" "foo" "var"
16 2.00933793401705 8 1.10649900797852
32 1.85693793536359 8 1.06743270972633
64 1.68121622180009 9 1.06004362109969
128 1.54651478610026 17 1.04606034399982
256 1.40680440473948 26 1.03366063773083
512 1.4039395779993 50 1.03136067279747
1024 1.3241250035592 84 1.02864381269357

のような表が書かれたファイル(data.datとする)からプロットしたいときは,

plot "data.dat" u 1:2 tit "foo" w p, "" u 1:3 tit "var" w p # 同じファイル名は""で省略可

などでできる.
プロットではなく線で繋ぎたいときはw pの部分をw lにすれば良い
両方欲しい時はlp

実行法

gnuplotを起動して対話的に行うか,
hogera.pltなどのファイルに内容を記述し,

gnuplot hogera.plt

を実行