factor

何時もは鳴らないはずの固定電話。変な時間に鳴ったよ。通販のおにーちゃんから、奥様に XXXからお届けですってのしか無いからね。

いぶかって出てみると、綺麗なおねーちゃん(お前の所の電話はTV電話か?)の声で、 参議院選挙のアンケートをお願いしてる某新聞ですが、ご協力頂けますか、ですって。

おいらの電話は、電話帳にも載せていないシークレット電話のはずなんだけど、んttから 情報漏えいしたんか? どうやっておいらの所の番号調べたって詰問。 そうしたら、コンピュータが勝手に選び出したんだそうな。

そうか、ランダムサンプリングで、日本全国の総意を推定するんだな。サンプリング数が 幾つなんですか? それで、信頼度は何%なんですか? なんて、奥村先生ぽく質問しよう と思ったけど、パート(多分)のおねーちゃん(ひょっとして声美人のおばさんだったりして)に そんな聞いても分からんだろうから許したる。

お宅に有権者様は何人おられますか? 一番年長の方からアンケートを頂く事になって ますので、宜しくお願いしますだってさ。これって、ランダムじゃ無いじゃん。これで 信頼度が1%低下しましたな。メディアの思惑がそこはかと無く見え隠れしてますよ。

で、質問は幾つ有ったかな。思い出すに

回答者は男/女のどちらですか?(一応聞くんですね)年代は?職業は? 投票する人は決まってますか? 支持する政党(比例区)は決まってますか? 自民党は支持しますか? 一番重要な政策を次のうちから選んでくださいって事で、9つぐらい有ったかな? 憲法96条の改定に賛成ですか/反対ですか?最後に、21日は投票に行きますか?

まあ、当たり障り無い回答をしておいた。これで、信頼度がまた0.1%低下。結果は得意の EXCELでまとめるんですかね? きっとEXCELのマクロだかフォームで、その場で入力して るのかな? それとも、電話番号に紐付けて、思想調査の結果は公安への便義供与なのかな? 怖いですね。

アンケートの結果は、来週から紙上で発表しますので、是非ご覧になって下さいですってさ。 ああ、その新聞と言うか紙の新聞取ってなかった。アンケートのお礼で、掲載号だけ請求 すれば良かったな。

とまあ、人生初の世論調査体験ですた。憲法96条とか出てきたけど、久しぶりに憲法1条から 読んでみるかな。ipad用に提供されてたのを落としてきてあるんだ。たまには、社会科の 勉強も、いいね。

そう言えば、ネット選挙解禁って事で、いいね があちこちで炸裂するんかな?ネットで 宣伝、比較広告、中傷合戦が始まるな。いろいろなAppも 出てるようだけど、各政党がアプル教を支持するか調べてみるのも面白そうだな。

各政党の支持率は、ホームページのPV値で測れます。各政党はPV値を公表すべし。そうなると 各党は、一生懸命にクリックしてもらうようにお願いする訳だ。桜でクリック猿を雇ったりして。 みんなも協力しましょう。賢い政党は、各地に、パケット増幅器を設置。ゲインは40dBぐらいは必要。 これで一斉にアクセスしよう。増幅器が足りないならば、中国とか北朝鮮製の増幅器でも いいぞ。あれ?、これってDDoSじゃありませんか。

兎も角、21日には、やるやる詐欺 に引っかからないように注意して選びましょう。

PCBSDでfactor

GUIの皮を被ったFreeBSDことPCBSDを入れたんで、記念にfactorを入れる事にした。factorなんて forthの拡張版はFreeBSDに認知されていないんで、勿論portsには入っていない。

ではなくて、

[sakae@pcbsd ~]$ which factor
/usr/games/factor
[sakae@pcbsd ~]$ factor 1234
1234: 2 617

FreeBSDには、商標登録された先客が居るので、同居を拒まれているのが真の理由です。 forth陣営側のfactorが、game陣営のfactorを喰っちゃえば、game側のfactorを駆逐出来る と思うんだけど、だめ? 早く、forth側のfactorが、factorを実装しろよ。

まあまあ、そんな戦争になるような事は控えて、おくんなせえ。そう言えば、暫く前の TVで、丸亀うどんが、アメリカにある丸亀を冠したうどん屋に警告書を送ったらしいけど、 どう決着したんかね? 地名とかは商標の一部にはなり得ないと思うんだけど、これって 素人考え?

元祖札幌ラーメン、本家札幌ラーメンとか、地名を冠した店名が仲良くやってるんで、 平和的に解決して欲しいぞ。

ああ、無駄話をしちゃった。PCBSDにfactorを入れるには、 Building from a clean branch を実施します。これをやると、少々年代の古いfactorが出来上がります。で、この土台を元に Building from bleeding-edge sourcesにチャレンジしてみたのですが、やっぱりFreeBSD人は game/factor陣営に恐れをなしてか、積極的な攻勢には出ておらず、ファイルが、あれも足りない 、これも足りない状態で、最新版にはなりませんでした。

で、気を取り直して、emacsから使えるようにmisc/fuelにある設定を.emacsに施してみました。

;; factor
(load-file "/home/sakae/factor/misc/fuel/fu.el")

たったこれだけなんですがね。run-factorすると、死ぬほど待たされてからプロンプトが 出てきましたよ。ここですかさず saveしとくと、次回からは快適に起動するようになりました。 ただ、これをやると、factorのimage-fileが肥大しますがね。

Debianでもfactor

最新版が入ってないのは、何となく寂しいのでDebian陣営に場所を移してやってみる。 こちらにも元祖factorが入っているけど、Linuxの人達は商標に頓着しないみたいで、 debian系のapt-getとarchlinux系で使われてるpacmanが入っていれば、土台は簡単に作れるようになってた。

yum系のLinuxは、やはり権利に五月蝿い赤帽系って事で、商標侵害の片棒は担がない 主義なのね。訴えられたら怖いからね。特に最近は特許ゴロがうようよ居るみたいだから。

で、何の苦もなく最新版が入りましたよ。早速emacsからも使えるようにと

;; for factor
(add-to-list 'load-path "/home/sakae/factor/misc/fuel")
(require 'factor-mode)
(require 'fuel-mode)
(setq fuel-factor-root-dir "/home/sakae/factor")

設定を.emacsに書き、起動してみると、、、

Warning (initialization): An error occurred while loading `/home/sakae/.emacs':

Symbol's function definition is void: defvar-local

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

こんなエラーが、、詳しくは --debug-initせいとな。

Debugger entered--Lisp error: (void-function defvar-local)
  (defvar-local factor-current-vocab-function (quote factor-find-in))
  eval-buffer(#<buffer  *load*<2>> nil "/home/sakae/factor/misc/fuel/factor-mod$
  load-with-code-conversion("/home/sakae/factor/misc/fuel/factor-mode.el" "/hom$
  require(factor-mode)
  eval-buffer(#<buffer  *load*> nil "/home/sakae/.emacs" nil t)  ; Reading at b$
  load-with-code-conversion("/home/sakae/.emacs" "/home/sakae/.emacs" t t)
  load("~/.emacs" t t)
  #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307\31$
  command-line()
  normal-top-level()

どうも、defvar-localなんて素敵なのは、Debianのemacs君は知らないみたい。emacs-23.4.1 なんて言う君は世の中の流れから取り残されてるんだな。保守的頑固一徹のDebian陣営 ならでは、ですな。

はて、どうすべ? 3秒考えて、FreeBSD側で動いてたfuelを持ってくればいいじゃん。

rsync

今までのおいらだと、沢山あるファイルを別のマシンへ送る時、tarで固めてscpして、送り先で 展開ってやってた。、、、けど、面倒くさいね。昔サーバーのお守りをしてた時に、 backupに rsyncコマンドを活用してた事を思い出した。(過去をふっと思い出すって、歳を取った証拠?)

確かrsyncは癖があったな。ぐぐってみたら、

ディレクトリの最後の "/" の意味

先ほども少し触れましたが、 rsync ではコピー元のディレクトリ名の最後に "/" を
付けるかどうかで挙動が変わります。例えば、先ほどの例の場合。

rsync -r foo remote.example.com:/tmp

この場合は、 "/tmp/foo" が作成され、その中に "foo" 以下のファイル・ディレクトリが
再帰的にコピーされます。それに対して、以下のように "/" を付けた場合。

rsync -r foo/ remote.example.com:/tmp

この場合は "foo" ディレクトリが作成されず、 "/tmp" 直下に "foo" の中身が再帰的に
コピーされます。というわけで、

    ディレクトリそのものをコピーしたい場合 → "/" なし
    ディレクトリ以下のツリーをコピーしたい場合 → "/" あり

なお、コピー先は "/" があってもなくても動作に違いはありません。

これだこれだ。送り元のdirを補完した時、後ろに"/"が付いてしまい、それを見落として コマンドを発行したものだから、送り先でばらけてしまって、何度泣いたやら!

rsyncにはオプションが一杯あるけど、もうそんなのはとても覚えていられないので、 エイリアスを切っておく事にしました。

alias rsync='rsync --progress -avh -e ssh '

で、もううざいオプションは忘れてしまってもいいよ。fuelの下に鎮座するファイルを含めて dirごと、debian7機の$HOME下にあるfactor/misc内へ送信(先住民のfuelは、あらかじめ改名しとく)。

[sakae@pcbsd ~/factor/misc]$ rsync fuel debian7:factor/misc
sakae@debian7's password:
sending incremental file list
fuel/
fuel/README
      10.61K 100%    0.00kB/s    0:00:00 (xfer#1, to-check=24/26)
fuel/factor-mode.el
       9.83K 100%  147.64kB/s    0:00:00 (xfer#2, to-check=23/26)
    :
fuel/fuel-xref.el
      10.10K 100%   28.02kB/s    0:00:00 (xfer#25, to-check=0/26)

sent 202.22K bytes  received 491 bytes  16.22K bytes/sec
total size is 200.72K  speedup is 0.99

progressオプションを付けているんで、ちょいと五月蝿いぐらいに状況報告されちゃったな。

Debianのfactor環境

これで、古いfuelがDebian側にやってきた。これを使って動かしてみると、随分待たされた あげくに、接続失敗と出てくる。という事は、factorとfuelが版的に同期してないとダメ なんだな。

ならば、最新のfactorに最新のfuelに最新のemacsにせいって事か。しょうがない、emacsの 最新版を野良buildするか。configureした時、gifとtiffのコンパイル用設備が無いから それらは、諦めてねって言われた。はいはい、それらは素直に諦めますよ。何せ、先を 急ぎますんで。

新しいemacsの上では何の問題もなく M-x run-factor 出来たよ。そして接続が早くなるように、 saveもしておいた。emacsとホットラインを引くための犠牲はは下記の様。

-rw-r--r--   1 sakae sakae 72568104 Jul  6 10:30 factor.image
-rw-r--r--   1 sakae sakae 71412568 Jul  5 08:40 factor.image.fresh

1.1Mぐらい太っている。

余談だけれど、emacsを新しく入れたら、LXDEのメニューに新しいemacsも登録されてた。そして、 元々有ったやつは、GNU emacs 23 って名前で参照出来るようになってた。これって、動的に メニューを出してるんだろうな。こういう余計な事をするから、起動が遅くなるんだよ。 と、余計な事を言ってたら、/etc/alternatives なんてのを発見。これって、切り替え器?

factorで遊ぶ

ネットをうろうろしてたら、 Factor クエックブック なんてのを発見。 planet-factorなんてのもあるのね。これの日本語版 なんてないのかしら?

遊び方が分かったよ。

"demos" run

して、出て来るメニューからBoidsなんてのを選ぶと、魚だか鳥さんをデフォルメした三角形が 多数出てきて、群れを作って泳ぎ(飛行)出す。これ、面白いなあ。世界は数式で出来て いるってのを実感出来るよ。遊んでばかりいないでソース嫁。 他にもテトリスが有ったり、レンダリングの例が有ったりして面白い。

ソース読むにはfuelを有効に使わんとな。探したら、 Emacs's Fuel modeなんて言うあんちょこが 出てきたぞ。

それから、factorってのは検索しずらい単語。どうしたらといいかと言うと、factorcode で、 探すといいらしい。

その前に、手元のコードが一番の教科書。どうやって見てくかと言うと、まずは概要を 捉えるに尽きる。

IN: scratchpad "boids" about
Loading resource:extra/boids/boids.factor
Loading resource:extra/boids/simulation/simulation.factor
Loading resource:extra/math/trig/trig.factor
Loading resource:extra/opengl/demo-support/demo-support.factor
boids vocabulary
Factor documentation > Factor handbook > Vocabulary index

Summary
Artificial life program simulating the flocking behaviour of birds

Meta-data
Tags:    demos
Authors: Eduardo Cavazos, Anton Gorenko

Words

Tuple classes
Class           Superclass Slots
 boids-gadget    gadget    paused boids behaviours dt
 range-observer  tuple     quot

Ordinary words
Word                Stack effect
 <boids-gadget>     ( -- gadget )
 behavior-panel     ( behavior -- gadget )
 boids              ( -- )
 connect            ( range-model quot -- )
 create-gadgets     ( -- gadgets )
 draw-boid          ( boid -- )
 draw-boids         ( boids -- )
 initial-behaviours ( -- seq )
 initial-dt         ( -- value )
 initial-population ( -- value )
 iterate-system     ( boids-gadget -- )
 pause-toggle       ( boids-gadget -- )
 randomize-boids    ( boids-gadget -- )
 set-population     ( n boids-gadget -- )
 simulation-panel   ( boids-gadget -- gadget )
 start-boids-thread ( gadget -- )
 vec>deg            ( vec -- deg )

Class predicate words
Word             Stack effect
 boids-gadget?   ( object -- ? )
 range-observer? ( object -- ? )

Files
resource:extra/boids/boids.factor
resource:extra/boids/boids-docs.factor

Children from resource:extra
Vocabulary        Summary
 boids.simulation boids.simulation vocabulary

実際にemacsでファイルを開くには、

USE: editors.emacs

しておいて、別端末でemacsを起動し、M-x server-start して、emacsを待機状態にし、

"boids" edit

すればいい。使う度にUSEするのが面倒なら、.factor-rcに書いておいてもいい。

あるいは、fuelモードにしといて、C-c C-v して、ファイルを開いてもよい。

fuelの練習を兼ねて、うろうろしてたら

Application deployment

The stand-alone application deployment tool, implemented in the
tools.deploy vocabulary, compiles a vocabulary down to a native
executable which runs the vocabulary's MAIN: hook. Deployed
executables do not depend on Factor being installed, and do not expose
any source code, and thus are suitable for delivering commercial
end-user applications.

Most of the time, the words in the tools.deploy vocabulary should not
be used directly; instead, use Application deployment UI tool.

こういう楽しい一文に出会ったよ。

日本国憲法

ipadで無料で読める日本国憲法って本をを開いてみた。

前文の前段が、朕は.. で始まっているのにビックリ。そして、この憲法は、帝国議会に より承認されたってのも初めて知りましたよ。

第1条が、天皇は、、ってのをすっかり忘れていたぞ。そんな事で、お前、日本人かって のは、甘んじて受けますよ。

池上先生の、つまみ喰い解説だけじゃ駄目だね。原文に当たらなければ!

つらつら見てくと、附則にこの憲法のboot手順が書いてあった。ちょいと調べてみると 戦前は帝国憲法が走っていたんだな。戦後GHQが乗り込んできて、新憲法の制定を要求。 大幅なpatchが提供された。帝国憲法とコンフリクトする部分が多分にあり、運用側と ネゴシエーション。やがて新しいのがリリースって事だな。

bootしちゃったら、loader部分は不用になるんだけど、歴史的遺産として附則で残して ある。これは先人の知恵だな。

factorを構築する時、boot用の種Imageを要求されたけど、この種の構築方法って 提供されていないんかね? ふと、憲法がらみで思いが飛んだ。(いつも出てくる、 にわとり、玉子問題)

まあ、コンピュータがおいらの家の電話を選んでくれたおかげで、足元を見るきっかけが 生まれた。競馬や宝くじに当たるよりも、豊かな事だな。