2007年11月15日 星期四

[Agda] 2.1.3 -Install

全程參照這一頁:
http://www.cs.chalmers.se/~ulfn/darcs/Agda2/README

使用的環境:
ubuntu-7.10
GHC-6.8.1

依序安裝下面的GHC package
binary-0.4.1
zlib-0.4.0.1 (部份linux要先安裝zlib1g-dev)
QuickCheck2.0
可以用"$ ghc-pkg -l"查詢現在已經有的pkg
可以去下列網站找所需要的
http://hackage.haskell.org/packages/archive/pkg-list.html

然後下載Agda..
一開始我是抓wiki上面的.tar.gz檔
但是build的時候一直說找不到"../../undefined.h"
後來是用darcs抓下來裝
(btw, darcs抓到的是2.1.3, 但是wiki上面只有2.1.2 .. =口=)
agda lib裝好以後
就把interpreter裝上去就結束了
詳情請參考readme檔

--
如果是GHC-6.1.1以前的版本
下面的lib都要用較早的版本
不然cabal不會過
binary-0.3
zlib-0.3 (部份linux要先安裝zlib1g-dev)
另外要幫GHC裝新版的src和mtl這兩個package
(QuickCheck的話我忘記有沒有要裝,舊版的agda好像不需要)
之後再裝agda即可

2007年11月14日 星期三

[GHC] 6.8.1 -Install

最近把NB上的OS改成Ubuntu7.10
所以就要重灌所有的東西
ghc當然也不利外
到網站上晃了一下以後發現
ghc-6.8.1已經release了!!
http://www.haskell.org/ghc/download_ghc_681.html

抓了linux(x86)的版本之後
$ tar -zxf ghc-6.8.1-i368-unknown-linux.tar.bz2
$ cd ghc-6.8.1-i368-unknown-linux
$ ./configure
$ sudo make install
等他跑玩就好了

原先是這樣希望啦
但是實際上灌好以後執行時噴了個error出來
大意是說ghc時找不到libreadline.so.4
原本以為是我的readline太老舊 (其實應該是不太可能才對= =a)
所以重灌了一次realine5.0
結果還是一樣找不到

最後才在下載ghc的那個網頁上看到有"readline4 compatibility RPM"
抓下來以後解壓縮才看到裡面是/lib/libreadline.so.4(等檔案)
不過也沒說要copy到哪裡去
所以就到處丟看看
最後是存在/usr/lib/底下才解決的.
$ sudo cp -R ~/lib /usr

接下來就是agda和epigram了 XD

2007年11月10日 星期六

[MASM] 雜記

由此處下載MASM32
http://www.masm32.com/

安裝到一個令人愉悅之處
然後看要不要把path設一下
(我的是D:\masm32\bin)
為了避免麻煩,下面都是用windows的cmd

現在會用到的工具就只有以下兩個:

[assembler]
masm32/bin/ml.exe
格式:
ml [/options] filelist [/link linkoptions]
常用的參數:
-c : 只assemble而不link
-coff : 產生COFF format object file
-I : 增加include的路徑
-link : 直接使用linker
範例:
ml -c -coff xd.asm
ml -c -coff -I D:\dir xd.asm
ml -coff -I D:\dir xd.asm -link Kernel32.lib /SUBSYSTEM:CONSLOE

[linker]
masm32/bin/link.exe
格式:
link [options] [files] [@commandfile]
常用參數:
/SUBSYSTEM:CONSOLE : 不太知道是啥,大概就是要指定mode吧
/DEBUG : 會多生出一個.ilk檔
範例:
link xd.obj d:\xd\Kernel32.lib /SUBSYSTEM:CONSLOE

--
OMF和COFF
改天有空再看
http://en.wikipedia.org/wiki/VME#OMF
http://en.wikipedia.org/wiki/COFF

題外話
學校課本裡面的.lib和.inc
都可以在課本網站上抓到
然後自己再去設路徑或是手動link

最後
console下的assemble是沒問題了
現在就是要怎麼改easy code的設定了..Orz

2007年11月9日 星期五

[EasyCode]試用

這學期在修assembly

因為覺得一直用console compiler有點時代正確性不足的感覺
所以去找了個IDE
不過也只是根據wiki亂找到的

灌好了
摸了5分鐘左右
感覺蠻不錯用的

不過改天再研究吧

(待續XD)

[Qt]試用

因為各種神奇的因素
想說灌個Qt來試試看
一方面是可以應付OpenGL的課
另一方面是可以寫透析管理程式

在windows上的安裝其實蠻簡單的
就是下載無腦安裝包
click,next,next,...,next,finish :)

然後把目錄下的\bin存進PATH裡面
i.e. "D:\Qt\4.3.2\bin"

然後開console進入存有xxx.cpp的目錄下
執行:
qmake -project
qmake
make

然後.exe檔就會產生在../release下

--

待解決問題:
cygwin下無法正確make
makefile的修改

連帶學到的東西:
$ which [ins]
顯示ins是的來源路徑
$ pwd
印出現在所在位置

2007年10月31日 星期三

[Cat]暫存

http://www.cat-language.com/tutorial.html
改天再看吧
如果有時間的話啦..Orz
現在要先應付期中考

--
剛剛稍稍摸了一下
第一次用stack-base的language
相當好玩的感覺
如他所說的,應該會很適合用來教學用

改天再來進一步玩玩看吧.. :)
edit: 11/01/2007 Pm 7:40

2007年10月29日 星期一

[Epigram] Basic Intro.

Epigram 基本使用

epigram是個詭異的editor-typechecker-interpreter
同時你對它可以做幾乎"不可逆"的edit動作
而每當你結束一個shed(下面會解釋何謂shed)的edit
epigram也會同時對那段的內容作typecheck
此外,你也可以藉由某個特定指令發揮這個"環境"的interpreter功能

在epigram裡面有三種常見的區塊:
第一種:
> -----------------------
> ...
> -----------------------
夾在兩條-----中間的叫做declaration
-----本身叫做rule .
這算是概念上的區塊,沒有什麼特殊之處
唯,如果想要開一個新的declaration
就要在rule上用滑鼠點兩下
第二種:
> [...]
[ ]這樣叫做shed.
shed內部就是epigram中唯一可以edit之處
當一段text是被包含在shed中時,這段text就可以被修改
而且,在結束這塊shed之前,這裡面的內容都不會被typecheck
結束shed的方法是:按鍵盤上的Esc按鍵
第三種:
> (...)
( )叫做一個group.
因為epigram中,line指的是一行的declaration
而不是指一般editor中的physical line
所以我們就用group來包裹某些跨行的東西
講半天,其實看一個例子馬上就會知道這是什麼了

一開始打開epigram,視窗會顯示:
> -----------------------------
> [ ]
> -----------------------------

我們把游標移到那個shed上
並且鍵入 data 然後按Esc結束這個shed
這時候,epigram會自動generate出一些code:
> -----------------------------
> ( [ ] !
> data !-------! where [ ]
> ! [ ]:[ ] )
> -----------------------------

這一段產生出來的code裡面又出現新的shed
沒錯,這就像是國小的歡樂填空格..
data是一個define data structure的keyword
當你Esc一開始的[data]這個shed時
epigram會知道說你要define某個data structure
所以它會把相對應的格式生產出來
使用者就把對應的空格填好就好
(當然,也是可以乖乖的全部照格式寫完再一次Esc掉整個shed)
(不過這樣你就會發現,epigram真是個有夠難搞的東西..)

事實上,epigram裡面只有三種這樣的declaration keyword
分別是:
data : declare data structure
let : declare fucntion
inspect : declare . . . question(?)
關於這三個的細節,以後有機會再說

先回到剛剛的code上面
這裡先不深究有關epigram這個language撰寫的方式
因為這裡只是初探,目的只是介紹這個environment

到上面的code為止,我們已經知道epigram怎麼輸入code
而,一旦Esc掉的shed,是不能再去edit的
那,如果我們打錯字怎辦??
epigram當然也提供了undo功能 (Alt + Backcpase)
可惜就是,epigram的undo目前還不夠完整
它只能讓你step by step的undo上去
也就是說,如果你發現很久以前的某個東西寫錯了
那你就必需要一路undo回去
然後改好以後,後面的東西都要重新撰寫
(其實,也可以把buffer先save起來,之後再paste回去)

以上,是epigram很悽慘不堪的edit environment
寫半天的東西,要麼儲存呢??又要怎麼讀取呢??
這真是個非常讓人頭大的問題
因為epigram既是一個editor又是一個interpreter
整個存成文字檔也不對
所以,epigram現在是利用xemacs的buffer tool來做這些事
save:
1.我有時候就乾脆直接用File>save *Epigram*這個功能
把整個檔案存成文字檔
2.另一個方法是,新開一個buffer
(就是另外開個空白的檔案,然後再用xemacs去open)
然後切換到那個新的buffer去
接著按 Ctrl+c 再接著按 Ctrl+e
這樣epigram的內容就會copy到新的buffer去
接著只要儲存這個file就好..
(好爛的辦法Orz)
load:
load的方法,就是用file>open指令去開之前存的檔案
(建議用opne in the new frame)
然後,把*Epigram*那個buffer裡的游標,停在你欲寫入的shed上
接著切到剛開的file/buffer視窗上
這時候有兩個選擇:
如果要整個file load過去
就按Ctrl+c + Ctrl+c
如果只要load其中一段,就把那一段選取起來
然後按Ctrl+c + Ctrl+r

[Epigram] Install

Install


[windows cmd:]
1.請先行安裝好xemacs
http://www.xemacs.org/Download/win32/index.html
2.修改system path:refer到xemacs的目錄下
例如,我的長這樣 C:\Program Files\XEmacs\XEmacs-21.4.20\i586-pc-win32
3.至http://www.e-pig.org/ 下載for windows的package
並且在解壓縮以後,根據各人喜好,丟去想丟的位置
*.可以把epigram的目錄位置也放進path中,以方便使用
4.修改epigram1目錄下的epigram.bat
將下面這兩行重新指向正確的目錄位置
set EPIGRAM_ROOT=C:\epigram1\
set XEMACS=C:\"Program Files"\XEmacs\XEmacs-21.4.13\i586-pc-win32\XEmacs.exe
5.run "epigram" in cmd

[windows cygwin:]
1.install xeamcs21 by steup.exe
2.download package (for windows)
3.unzip package
4.modify the "epigram.bat"
5.run "epigram.bat"


[linux ubuntu:]
1.sudo apt-get install xemacs21
2.download package (for linux)
3.unzip package
4.run "epigram"

有關這裡

因為BBS的往前回溯功能實在是開始讓我覺得不好用了
而且BBS不能貼圖..
所以把比較正經的東西和記錄移轉到這裡
jaiyalas是心情藝文區
jaiyalascs是電腦程式區
PTT2那裡就留著當作喇賽區吧 XD