ウォンツテック

そでやまのーと

すげー

OCamlでカーネル書いてる。しかもカーネルが使うメモリ領域はGCで管理されている http://ol-www.cs.uec.ac.jp/~oyama/publications/InoueSIGOS10.pdf

仕事でorg-modeで書いたテキストをhtmlに変換する必要があったんだけど、 結構な量があったんで自動化したいなーと思って調べてたらやっぱあったlisp/textmodes/org.el (emacs-22.2の場合) (defun org-export-as-html-batch () "Call `org-export-as-html', …

rubikitchさんとこのブログを読んでwindowの切り替えをデフォルトのC-x oからC-tに変更 すごい楽。 http://d.hatena.ne.jp/rubikitch/20100210/emacs (defun other-window-or-split () (interactive) (when (one-window-p) (split-window-horizontally)) (ot…

ちょっとインタフェースを変えてベータ変換数を入力しなくてもいいようにした。 ついでにgithubにリポジトリ作って突っ込んでおく。 あと、elispでemacsの簡単なメジャーモードを作成 lambda.lmとか適当なファイルでラムダ式書いておいてbeta-modeにしてから…

ラムダ計算論の本読んでたので勢い余って関数型言語ocamlでラムダ計算機を書きました。 これでチャーチ数定義して計算すれば、ノイマン型の命令型計算機で計算している人を見かけた時に 「ぷっダサwww」と言えます。 一応このラムダ計算機の使い方 ラムダ式…

計算論のP.66のβ変換における等号表現である を定義する時に現れる表現 の定義なんだけど、直感的に と思ってたけど なんだね 不動点演算子Yの定義で、Mの不動点演算子Yに対して YM -> M'(M' ≡ M''M'', M'' ≡ λx. M(xx) ) からいきなり YM = M'を導いてたか…

久しぶりに高橋正子の計算論の第2章「λ計算の基礎」最初の方の数ページを読んだ。 λ計算ってとどのつまり何よ? って事なんだけど、少し分かった λ"計算"ってのは、まず以下の定義に基づき再帰的に定義される"λ式" 1. 変数 x0, x1, x2, ...はλ式である 2. M…

Nokogiriのparse時の文字コード

rubyのHTML, XMLパーサであるNokogiriでsjis等の日本語を含んだファイルをパースする時の文字コードはutf8が良さげ。 というよりsjisとかうまくparseしてくれない。 ※全くparseしてくれないんじゃなくて、途中でdomの一部が欠落している場合があった 環境 ru…

screen

screenのhardstatusにbattery残量を表示させてみる。 以下のscriptを用意(環境によってbattery以下のディレクトリ名が違うかも) ~/bin/battery_check.sh #!/bin/sh awk '/remaining capacity:/{remaining=$3}/lasl full capacity:/{printf "%0.1f", remaini…

[ubuntu] 9.10インストール

ヤマダ電機の日本総本店のセールでkakaku.comの最安値より2万も安かったのでつい買ってしまったthinkpadのX200 ubuntu 9.10入れてます。 ログイン画面がかっこよくなって、おーいいとか思ったけど 日本語入力がscim anthyからiBus anthyに変わってて、スペー…

USB

qemuのUHCIのQHリストは100個までしかチェイン出来ないのか。 意味不明なところでbulk in出来なくなってはまった。 qemu-0.10.5/hw/usb-uhci.c #define FRAME_MAX_LOOPS 100 static void uhci_process_frame(UHCIState *s) { uint32_t frame_addr, link, old…

USB boot

BIOSの拡張ディスクアクセス用のファンクションコール0x13, ah = 0x42の1回で読み込める最大セクタ数は0x7fまで。 にしてもBIOSって便利。 プロテクトモードでUSBメモリにアクセスするには - PCI回り理解して - UHCI Controllerの仕様理解して - USBのBulk転…

usb mass storage

sodex on qemuでusbメモリ(usb mass storage class)の1セクタ読み込みに成功したぽ。 USBは自作OS界隈でもやってる人がほとんど居ないので仕様を読み込むのに苦労しました。 そのうち実装に必要な知識をここで書きます。 row device ext3_read, ext3_write…

糞ダルイ

他人に厳しくて自分に甘い ってどうなのマジで

正規表現ライブラリ

昔書いた正規表現パーサ(DFA型)をsodexに移殖。ユーザーランドで使えます。 regex.c これでsodex上でインタープリターでも書こうかと思ったけど文字クラスとか括弧'('自体を扱えなかったりするので全く使い物にならない罠orz

 減量

去年8月からの目標値であった8kg減にほぼ成功。 でも実は2年前くらいからだと10kgは太ってたので(汗)さらに2kgは減量しようかと。 やっぱ開発者にとって体調管理とモチベーション管理は重要だよね。

パラダイムシフト

最近たまに考える事があります。 情報学のパラダイムシフトってそろそろ起こるんじゃないだろうかと。 情報学という分野が誕生して60年、過去の学問の近代化に比べて学問としての情報量の拡散率は高く、最先端の研究をするにしても数年で到達でき、学習して…

実機

USB FDDを買ってきたので久々に実機でsodexを動かしてみる。が動かない。 そういえば8セクタ以上の読み込みが失敗していたような(汁

ジュンク堂

新宿でジュンク堂寄ってきたらつい本を数冊買ってしまいました。圏論による論理学―高階論理とトポス清水 義夫 Amazonで詳しく見る by G-Toolsまともに読む気ゼロ。1回気になったジャンルは買わないと気がすまないし、 無性に読みたくなったとき即座に読める…

ちょっと練習問題を解く

入門Haskellを読みつつモナドの記述があまりに少ないので以下のサイトの「自分自身を出力するプログラム」に書いてあるmonadの数学的定義を読んでみるけど定義5までで死亡。ちゃんと理解するなら圏論の本買ってこないとだめぽ。 http://www.ipsj.or.jp/07edi…

 サーバーが復活したのでインタープリター公開

schemeもどき

甘くない件について

会社の2ハッカーの一人がHaskellハカソンに出るというのを聞いて触発されちょっとHaskell本を読みはじめましたが、、シンタックスシュガーが全然甘くねーーー。orz でもperlとかと違って意味のある書き方だから慣れれば読みやすいのかな?ghciで実験普通っぽい定…

scheme処理系もどき

とりあえず再帰は出来るようにしました。scopeがおかしかったのでParseクラスのスタックとして書き直し。あとlambdaっぽいのも出来るようにしときました。 (define (func a) (lambda (x) (+ a x))) ((func 3) 5) とか (define (fib n) (if (< n 3) 1 (+ (fib…

会社の人に処理系見てもらったら以下のを書いてもらった (define (#f) (= 1 0)) (define (#t) (= 1 1)) (define (<= a b) (if (< a b) (#t) (if (= a b) (#t) (#f)))) #tとか#fとかコアに、 すばらしいです。

処理系

JSでscheme処理系もどきを書こうと思ったけどdefine出来るネスト可な四則演算しか書けなかったorz.. 今週末気が向いたらフィボナッチが動くくらいはがんばるかな。 今回のだと下記くらいしかできない (define a 3) (define b 2) (+ a (+ b 1) (/ 4 2) (+ 3 (…

gaucheのrfbライブラリで簡単に描画出来ると言う事でちょっと遊んでみる。ブロックが落ちて回転させたりしようとするけど、、やっぱスレッドとかtimerをちゃんと実装しないとだめぽ。あとdownloopでエラー吐いてるけど何のエラーかわからない。。stackがオー…

会社のえらい人に家でFedora使ってると言ったら「だっせーーー」と笑われてしまいました。 くやしさのあまり歯茎が血まみれになってしまったので近い内Gentooに乗り換えます。

HateFS 2 (はてなFS)

HateFS (はてなFS) ※注意 日記を勝手に上書きするので実験する場合はテスト用アカウントでお願いします※ 一昨日の続きを書きました。はてな日記は抽象化して1日分の日記をただの1ファイルとして扱いました。日付は「idate」という「inode」のような役割をさ…

HateFS

ちょっとRubyとはてな日記ではてなFileSystemでも作ってみようかと思ったのですが、Ruby(とそのライブラリ)が便利すぎてFSのバイナリをいじるまでに至りませんでした。 はてなのログイン認証にWWW::Mechanize、HTMLの解析にHpricot、ファイルシステム部分…

OS作成 - NIC編

ようやくNICのsend部分がうまくいきました。ne2000上のバッファRAMのアドレスの割り当てがまずかったようです。これがおかしくてDMA書き込みが出来ていなかった模様。 テストでsource mac addressを[1.2.3.4.5.6]に、destination mac addressを[ff.ff.ff.ff.…