顯示具有 嘗試 標籤的文章。 顯示所有文章
顯示具有 嘗試 標籤的文章。 顯示所有文章

2012年12月28日 星期五

[Note] R and Statistical analysis

[0] 裝/用 Package

> install.packages("package_name")
> library("package_name")

[1] 信度分析

現在是用這個套件
http://personality-project.org/r/html/alpha.html
裡面包含 Cronbach's alpha 和 Guttman's lambda 6

> library(psych)
> alpha(data_frame)

-----
還有這個也可以算 alpha
http://rss.acs.unt.edu/Rdoc/library/ltm/html/cronbach.alpha.html
但是沒有用過

[2]效度分析

靠北複雜,跳過

[3]相關分析

內建的 cor() 就很夠用了
http://www.statmethods.net/stats/correlations.html

> cor(data_frame)



> cor(data_frame), method="method_name")

[4] 結果輸出

> write.table(mydata, "file_name")

> library(xlsx)
> write.xlsx(mydata, "file_name")

[5] counting

計數

> table(sort(mydata$column_title))

*to be continued*

2011年3月28日 星期一

[android] Install and HelloAndroid Step by Step

[3-1] Selecting packages to install
1. install via homebrew
> brew install android-sdk

2. initialization about Android SDK and AVD.
> android

3. setup the SDK and AVD management.

3-1. switch to "Available" page to select packages you want to install, click button:"install selected"

3-2. switch to "Installed" page to update packages by click button:"Update All..."

[3-2] Updating packages[3-3] "Virtual devices" page
[3-3] new AVD window

3-3. To create a new AVD(Android Virtual Devices): switching to "Virtual Devices" page and clicking button:"new".
(Picture - [3-3] "Virtual devices" page)

On the popped window, we could decide what properties of AVD we want. Select your target carefully, and, remember which target version you select.
(Picture - [3-3] new AVD window)

After clicking button:"Create AVD", this AVD will be showed on the AVD list. now, select a AVD you want to run and click button:"start". There will pop a "Launch Option" window, you could just clicking the button:"Launch".
(Picture - [3-3] "Virtual devices" page)

4. After Init. of Android opening, you could see a nice look.
[4] AVD with waiting for turn-on[4] readied screen

5. Create hello world project via native example.
Do NOT close the AVD. switch to console:
> android create project --package com.example.helloandroid --activity HelloAndroid --target target id --path project-path

Hint: the target id have to be matched with the AVD that we are running. To query the id of target:
> android list targets

for example, the target name of my AVD is Android 2.2, and, in the result of query, I could find out that "id: 4" matches what I need.
...skipped..
id: 4 or "android-8"
Name: Android 2.2
Type: Platform
API level: 8
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
...skipped..
now, my creating command will be
> android create project --package com.example.helloandroid --activity HelloAndroid --target 4 --path ~/haha

6. compiling and installing
> cd where-your-project-is
> ant install
wait a few seconds, you should see something like
...skipped...
BUILD SUCCESSFUL
Total time: 9 seconds

7. switch to AVD, you will find out the HelloAndroid app:


竟然寫了兩個小時.. 囧>
godfat大大, 夠詳細了..吧? XD

2010年2月3日 星期三

[reStructuredText] Pygments Intro. & Install

參考了劍心的這篇,也弄了pygments來用用看。

不過我不是用port install來裝。原因不明地,> sudo port install py26-pygments以後,不知道怎麼打開它。@@
> pygmentize
> pygments
> py-pygments
> py26-pygments
等等的排列組合都試過了,但是就是不能用。
不知道是哪個地方跳針了還是如何? @@
最後解決的方法是去PyPI下載source code以後自己build就可以用了。(我的python版本=2.5.1)
> wget 'http://pypi.python.org/packages/source/P/Pygments/Pygments-1.2.2.tar.gz#md5=920e706a817437eae3a1406380421a3d'
> tar -xzf Pygments-1.2.2.tar.gz
> cd Pygments-1.2.2
> sudo python setup.py install




pygments有四個重要的元件:Lexers, Formatters, Filters和Styles。Lexers是source code parser;Formatters是output generator;Filters是針對特別需求時可以更改部份輸出結果用的工具;Styles是色彩字體等格式的定義。詳情可以參考Pygments Online Document中的Builtin components的部份。

(註:要使用有關圖檔的formatter都需要安裝PIL(Python Image Library)。build的方法幾乎和build pygments一模一樣。只是wget的target要換一下罷了。
> wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
> tar -xf Imaging-1.1.7.tar
> cd Imaging-1.1.7
> sudo python setup.py install
)

(註:在Mac上,style的定義檔存放在/Library/Python/2.5/site-packages/Pygments-1.2.2-py2.5.egg/pygments/styles/這裡面。劍心的twilight.py我就是直接賽進這邊就可以用了。)



pygmentize身上也有非常多參數可以下。最基本的兩個flag分別是-f-o。-f 可以指定要使用的formatter(也就是指定輸出格式);-o 則是和一般compiler一樣指定輸出檔名。當然,因為formatter本身就包含了format在內,所以也可以不要用-o,不過這樣一來就要自己做檔案輸出。以下兩個作法是等價的。
> pygmentize -f html -o setup_c.html setup.c
> pygmentize -f html setup.c > setup_c.html

-O可以進一步設定lexer和formatter的選項。-O可以一次接受複數個選項,但是這也造成了-O不能接受含有","或"="的選項。因此也就有了-P的出現,-P一次只能吃一個選項參數,但是選項參數中就可以包含","或"="。
> pygmentize -f html -O full,style=twilight,linenos=1 01.hs
> pygmentize -f html -P "heading=Pygments, the Python highlighter" full,linenos=1 setup.py
相似於-O和-P, -F是用來在token stream上面增加filter用的。用法大概是這樣-F keywordcase:case=upper,whitespace:spaces=True-F whitespace:spaces=True
(註,這三個參數都可以重複一直使用。)

pygmentize預設只會生出資訊而不會把style的定義也一併輸出,也就是說,
> pygmentize -f html setup.py > test.html
用browser打開test.html以後會發現是黑白的。
因此我們可以用
> pygmentize -f html -S twilight -a .pygments > style.css
來取得名為twilight的style的css檔

還有, 參數-N可以查詢某source code的lexer。
例如說> pygmentize -N Makefile會輸出make

此外pygmentize也提供兩個flag, -L-H, 可以查詢lexers, formatters和filters的資訊(-L還可以查詢styles)。例如
> pygmentize -L會傾印lexers, formatters, filters和styles的資訊
> pygmentize -L styles會指定印出styles的資訊
> pygmentize -H formatter html會印出html的help info.



這是測試的結果(原因不明的在blogger上面Line#和Code會有點錯開)
 1
2
3
4
5
6
7
8
9
10
11
import GHC.Conc
import System.Info
import Text.Printf
import Data.Version

main = do
printf "Compiled with %s-%s on %s/%s\n"
compilerName
(showVersion compilerVersion)
os arch
printf "Running with %d OS threads\n" numCapabilities

2010年1月29日 星期五

[OS] Taste of House

今天早上google了一下發現已經有人拿haskell來寫OS了,叫做House。其細節還沒細看,不過倒是抓下來試了一下。測試的環境基本上和這篇是一樣的。

首先在House的網站上載 hOp-x.y.flp 然後暴力把.flp給改成.img,接著就直接用VirtualBox去掛載這個映像檔到flppy device上面去,然後開機就可以了。

開機以後會進入GRUB的選單,接著就看想要進text mode還是graphics mode就好。

graphics mode大概長這樣,非常明顯這只是一個展示用的範例。這裡只提供了一些固定的功能可以稍微玩玩看。我甚至連怎麼關機或是離開都不知道。XD



這裡還發現一篇paper: A Principled Approach to Operating System Construction in Haskell (ICFP 2005)。最近如果沒有其他壓力的話,蠻想來研究看看這怎麼做的。

2009年12月9日 星期三

[OS] DIY of Operating System

昨天晚上睡覺前一時興起翻了翻之前買的OS DIY的書
前兩章非常簡單, 都是在做介紹和環境配置
不過它書上是在Windows上跑
而我是用Mac OS X, 其間工具等等差異也就不用我贅述。

基本上我最後用到的工具目前只有作為Virtual Machine的VirtualBox, 和十六進位編輯器Hex Fiend還有assemblerNASM

第一個測試很簡單,只是去寫一個Boot Sector。

首先把單純的程式碼打一打。


org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello World"
times 510-($-$$) db 0

dw 0xaa55


然後assemble一下:> nasm boot.asm -o boot.bin
接者打開Hex Fiend把boot.bin打開,另存新檔成xxx.img

然後打開VirtualBox去新開一個Virtual Machine,接著再把剛剛的xxx.img給mount到Storage > Floppy Controller > Floppy Device 0上面去。最後再打開這台virtual machine就可以看到如下成果:

2008年9月4日 星期四

[GTK2HS] Taste of Cairo

因為某個自己要用的軟體想要輸出簡單的SVG圖片來讓html開
所以從SVG的wiki找上了Cairo
連過去看赫然發現他有Haskell Binding
高興之餘就想說來測試看看
如果可以用就把之前的ruby版改成haskell版
就算失敗了,Cairo也有ruby binding. XD

結果在Cairo網站裡看半天也沒有看到說哪有haskell binding
最後東連連西連連才發現
原來是被放進gtk2hs裡面了
所以又回頭去翻了一下gtk2hs的網站
最後找是找到了,不過沒有太詳細的說明
和gtk2hs本身一樣,都要自己花不少時間去摸 @@


在Haskell,或說在GTK2HS的Cairo binding裡面
首先是要先產生我們的Surface(此處相當於Destination的同義詞)
然後把這個Surface傳進真正會執行Drawing的function裡面
Context的產生也會在這個function中出現
(怎麼有種Continuation的味道? XD)

來個簡單的範例吧
module Main where
    import Graphics.Rendering.Cairo
    main :: IO ()
    main = do
        withSVGSurface "sample.svg" (fromInteger 90) (fromInteger 90) myDraw
    myDraw :: Surface -> IO ()
    myDraw surface = renderWith surface $ do
        setSourceRGB 0.0 1.0 1.0
        moveTo 10.0 10.0
        relLineTo 70.0 0.0
        relLineTo 0.0 70.0
        relLineTo (-70.0) 0.0
        relLineTo 0.0 (-70.0)
        stroke

因為我是想要做SVG檔
所以這個程式就是輸出.svg
以下是輸出的截圖

更多細節請參考XXX一文

2008年9月3日 星期三

[Git] Taste

昨天晚上和今天早上順手測試了一下
不過因為之前沒有用過類似這樣的軟體
所以做點筆記好了

大致上是一邊看文件一邊看影片一邊亂試
下面還有很多可以看的
http://github.com/guides/git-podcasts


先install好git
然後去gthub上開個帳號
接著進入local terminal以設定git
$>git config --global user.name 'MYNAME'
$>git config --global user.email 'oo@xx.abc'
$>git config --global color.status auto
$>git config --global color.branch auto
$>git config --global core.editor 'mate -w'

然後設定好ssh的密碼,參考這裡:
http://github.com/guides/providing-your-ssh-key#macosx


去github上開一個repository
然後回到自己的terminal上面
並且進到project目錄下
建立空的git repository和remote

$>git init
$>git remote add remotename git@github.com:git_username/projectname.git

而如果要直接複製已存在的repository

$>git clone http://git.gitorious.org/username/projectname.git

project建立以後可以用

$>git ls-files

來檢視現在project所包含的檔案


接著可以把檔案加入index裡面

$>git add ooo.xx

然後用

$>git commit
$>git commit -m 'ooxx'

來完成目前已加入index的檔案的commit


期間都可以用

$>git status

檢視目前工作的狀況

$>git log

檢視log


git更新檔案的順序如下

  • 改檔案

  • 將更新的檔案加入git

  • 加上註解

  • 上傳檔案

  • 2008年5月10日 星期六

    [GTK2HS] Install on Mac OS X

    一時興起
    灌了wxHaskell和gtk2hs來用

    不過wxHaskell不知道為甚麼不能跑
    我猜是某個東西的版本不對
    不過我暫時也懶得去找問題了
    也許哪天用Arch來灌灌看(?) 
    有.空.的.話.啦... XD

    回到正題
    gtk2hs官方網站上的tutorial
    不知道為啥是用一個叫做Glade的軟體當作開發環境

    然後我試著去抓下來build
    不過build到一半有問題然後就卡住了
    看起來是我有少東西
    但是,懶散如我
    我另外去google一下有沒有其他的tutorial
    果不其然,找到了這個 
    一個gtk2hs的toturial
    (不過後來我也在gtk2hs官網上看到一樣的helloworld sample囧)

    簡單講一下helloworld的作法

    首先create一個檔案:
        import Graphics.UI.Gtk
        main 
    :: IO ()
        main 
    = do
          
    initGUI
          window 
    <- windowNew
          button 
    <- buttonNew
          
    set window [ containerBorderWidth := 10,
                       
    containerChild := button ]
          
    set button [ buttonLabel := "Hello World"]
          
    onClicked button (putStrLn "Hello World")
          
    onDestroy window mainQuit
          
    widgetShowAll window
          
    mainGUI



    然後用ghc compile一下
    > ghc --make gtktry.hs -o hello
    > ./hello
    這樣就好了
    因為是在mac os上
    所以會開出X11來
    有點醜,但是也只能忍耐了 T^T

    題外話1
    後來我用macport弄到了Glade3
    不過暫時沒有意願去測
    雖說看起好像還不錯用的說
    (port好強呀,什麼都有Orz)

    題外話2
    據說有個叫做HOC的東西
    (Haskell to Object-C binding)
    顧名思義,可以連接haskell和object-c
    然後據說可以藉此使用mac上的cocoa
    不過,cocoa我完全不熟
    (其實完全沒碰過沒用過)
    所以只是隨口提一下 XD

    [agda] Review (2)

    承接上一篇
    這裡講解一個簡單的範例

    第一步
    我們先定義幾個基本且常見的東西

    自然數(Nature Number)是一個type
    一個自然數如果不是Zero就是某個自然數+1
        data Nat : Set where
            zero : Nat
            suc : Nat -> Nat

    對某一個type A, List A n是A上面的一個長度為n的List結構
    一個List如果不是空的(Nil)就是某一個元素接上另一個List
        data List {A : Set} : Nat -> Set where
            nil : List A zero
            cons : {m : Nat} -> (a : A) -> List A m -> List A (suc m)

    關於我們的資料結構就那兩個而已,非常簡單
    然後下面我們來定義幾個常用的function
        _+_ : Nat -> Nat -> Nat
        zero + n = n
        (suc m) + n = suc (m + n)

        _++_ : {A : Set} -> {m n : Nat} -> 
                       List A m -> List A n -> List A (m+n)
        nil ++ xs = xs
        (cons x xs) ++ ys = Cons x (xs ++ ys)

    前者是一般Nat在用的加法
    後者是List在用的加法
    "++"一般我們稱為 concat 或是 append

    比較值得一提的是List A (m+n)這裡
    我們知道m,n都是Nat, 而m+n也是一個Nat
    問題在於,independent typed language中
    我們是不能在type上做這樣operating的
    例如說我們絕對不會看到
        (double + String) var = ?? ; 
    這樣的東西出現在我們的java或是C++程式裡面
    可是在agda中我們可以直接這樣做
    這也就是上一篇中說得"value與type之間的曖昧不明"

    再接下去下面的定義之前
    我們先來看看目前為止我們可以做什麼?
    more over, 有什麼好處?

    (方便起見,這裡先用比較general的語法來表示)
    假設我們現在有兩個List:
        a = [1,2,3]
        b = [4,5]
    我們知道a, b兩者的type:
        a : List Nat 3  (長度3的整數list)
        b : List Nat 2  (長度3的整數list)
    所以,我們可以想像出:
        a ++ b : List Nat 5
        a ++ b = [1,2,3,4,5]
    這是非常理所當然的
    我們腦海裡確實是這樣的結果

    但是我們怎麼知道真正跑起來的時候 ++ 會是正確的?
    或著說,我們希望能盡早確定這個function一定正確
    那麼,最早,我們多早能確定呢? 
    如果我們可以抽象且廣泛的描述這個function
    (也就是定義這個function的同時)
    而且知道它一定會正確的執行
    那麼對於每一個實際執行時的case
    它都絕對會是正確的
    否則這段有問題的code根本不會通過type checking
    更別提還要執行了

    稍微回憶一下++的定義
    我們根據++的type知道對於長度為m, n的list a, b
    它都會正確的產生出一個長度是(m+n)的list
    所以我們知道它在我們重視長度問題時一定是正確的
    他不可能會在跑 [1,2,3] ++ [4,5,6] 時跑出一個長度不是6的list
    因為List Nat 5和 List Nat 6根本是不同的type

    (to be continued)

    [Agda] Review (1) with dependent type

    學校的東西弄的有點煩
    Ruby的東西也因為暫時有點原地踏步而有點膩了
    看一下之前弄到一半的東西
    選了其中一個卡最久的agda來玩一下
    希望可以轉換一下心情.

    Agda is a dependently typed programming language.

    簡單來說, 在agda中value和type之間的界線
    就像是同步率超過400%一樣的曖昧不明.

    這就是說,舉一個頗為俗爛的例子
    我們可以定義出一個具有某個性質的結構.
    e.g. 
    一個一般的List可以定義如下
        data List (A : Set) : Set where
            nil : List A 
            cons : A -> List A -> List A
    而在agda裡面我們可以在這個結構定義上追加一個屬性"長度"
        data List (A : Set) : Nat -> Set where
            nil : List A zero
            cons : {m : Nat} -> (a : A) -> List A m -> List A (1+m)

    這有什麼了不起的地方呢?
    關鍵之處在於"長度"是一個 value
    而定義本身是一個資料"結構",換句話說他是一個 type
    在一般常見的語言裡面這兩個是相當井水不犯河水的東西

    而在像是agda這種語言裡面,
    我們可以將兩者混合在一起
    做出像是上面那樣的List定義: 
    "一個本身帶有自身長度訊息的List"

    這樣有什麼用處呢?
    我們可以藉由dependent type來幫助我們
    在type check時就確定某些程式的性質
    甚至我們可以藉此來討論某些程式的恆真性(套套邏輯? XD)

    例如說,我們知道長度m的list cancat 一個長度n的list
    不管兩個list的內容如何,我們知道最後產生出來的list長度一定是m+n
    而今天我們因為長度這個資訊是包含在我們的type上面的
    所以我們可以在compile的時候就去檢查是否正確
    (嚴格來說是在type check的時候)

    這對於我們在確訂成市馬的正確性上面有非常正面的幫助
    不過這再繼續講下就變成在討論dependent type了
    所以先忘記那回事
    只要先記得現在是我們是處在一個
    value和type之間的界線相當模糊的世界裡就好..

    (to be continued)

    2008年2月1日 星期五

    [PostScript] 雜言

    上個禮拜因為一些無聊的因素
    稍微研究了一下PostScript怎麼寫
    玩了兩三天以後還是放棄不玩了
    因為PS不能改任意比例的page size
    只能是等比例於A4的大小
    不然就是要暴力縮放
    可是那樣東西就會變形
    如此一來就又要暴力去改所有的圖

    PS是一個stack base的script language
    每個operation執行的時候會直接從stack的最上面取出需要的arguments
    也就是說PS是postfix

    不過這樣在operation時就變的有點低階的感覺
    因為要一直調整PS的stack
    再加上operation是直接用pop取出第一筆資料
    所以如果有一個data我們會重複用到,例如說某處座標
    那在用之前要一直duplicate
    這樣整個PS寫下來
    除了沒有jump,還真的和assembly有些神似

    2008年1月16日 星期三

    [JRuby] 淺嚐

    一直以來
    都會聽Godfat提到有關JRuby的存在
    不過倒是一直都沒有真的去裝來玩看看
    但是今天在這個blog上面晃了晃有關JRuby的東西
    看了看以後興致來了就search了一下apt-get
    發現還真的有jruby1.0
    也久順手灌來試試看

    > sudo apt-get install jruby1.0

    然後弄的.rb檔來試試看


    # random.rb
    require 'java'
    include_class 'java.util.Random'
    r = Random.new(123)
    puts "Some random number #{r.nextInt % 10}"
    r.seed = 456
    puts "Another random number #{r.nextInt % 10}"


    存檔以後執行jruby
    然後結果就會印出來在terminal上了
    > jruby1.0 random.rb
    Some random number 9
    Another random number 0

    在ubuntu上很多東西用起來還真是有夠簡單方便的,囧

    2008年1月14日 星期一

    [Ruby] 初探

    講了不知道幾年了
    終於開始碰Ruby

    第一個讓人囧翻天的問題就是..
    我是用ubuntu 7.10
    他是用apt-get當作套件管理
    apt-get有個很機車的問題
    以ruby來舉例
    > apt-cache pkgnames ruby
    會吐出一大串的
    ruby
    ruby1.8
    ruby1.9
    ruby-dev
    ruby-full
    ruby-ooxx ...
    一大堆
    讓人眼花撩亂呀
    然後灌gem的時候又是類似的情況

    以為這樣就結束了嗎?
    蠢事必定是有二必有三
    整個灌下去以後還發現我沒有irb 囧
    最後只好另外去
    > apt-cache pkgmanes irb
    照慣例,她又給我噴一堆東西出來 Orz
    最後就選了最讓我順眼的irb1.9
    > sudo apt-get install irb1.9

    真是的...
    早知道就直接抓tarball來裝了 囧

    扣除上面那些讓人不悅的鳥事
    (其實根本不關Ruby的事Orz)

    回到ruby本身
    真是太好用太方便了
    不愧是scripting

    2008年1月9日 星期三

    [Vim] colorscheme DIY


    弄了好幾天
    終於弄出個結果了
    右邊的那張花花綠綠的圖
    是我自己弄的colorscheme
    (click一下可以看大圖)

    語法部份不太難
    看字面上大概就知道是做什麼的
    有興趣的可以直接拿去改
    下面有這個設定檔的code

    但256色裡哪個數字對應哪個顏色
    這部份則花了我一些時間去查資料
    因為一開始我有用0~15,
    和231~255這兩個範圍去測試
    所以出現很多意料之外的結果
    混亂了一段時間以後終於發現到
    0~15不是依照漸層的順序排好的 O_Q

    有關256 colors的資料參考(盜用?)這兩個地方
    http://www.frexx.de/xterm-256-notes/
    http://www.icehouse.net/jim_d/colors.html

    最慘的是,全部寫完以後才發現xterm-256-notes那裡面有一個perl小程式
    可以把那些顏色和數字全部印到terminal上 T口T
    把我的這些青春還來呀 T口T
    http://www.frexx.de/xterm-256-notes/data/xterm-colortest





    """""""""""""""""""""""""""""
    " jai.vim "
    " - jaiyalas 2008/01/09 "
    """""""""""""""""""""""""""""

    set background=dark
    hi clear
    if exists("syntax_on")
    syntax reset
    endif

    let g:colors_name="jai"

    set t_Co=256

    " --------------------------------------------------------
    " hi = highlight

    hi Text ctermfg=230 ctermbg=Black cterm=none
    hi NonText ctermfg=none ctermbg=Black cterm=none
    hi Normal ctermfg=230 ctermbg=Black cterm=none
    hi Search ctermfg=White ctermbg=Black cterm=none
    hi Visual ctermfg=Black ctermbg=223 cterm=none
    hi LineNr ctermfg=230 ctermbg=17 cterm=none

    hi Cursor ctermfg=White ctermbg=Gray cterm=none
    hi CursorLine ctermfg=Gray ctermbg=Black cterm=none

    hi StatusLine ctermfg=White ctermbg=226 cterm=none
    hi StatusLineNC ctermfg=159 ctermbg=226

    hi Tag ctermfg=none
    hi Error ctermfg=221 ctermbg=196
    hi FoldColum ctermbg=Black
    hi Folded ctermfg=White ctermbg=DarkGreen cterm=bold

    hi VertSplit ctermfg=Blue ctermbg=DarkBlue cterm=none
    hi SignColumn ctermfg=LightGreen ctermbg=DarkGreen cterm=none
    hi WildMenu ctermfg=LightGreen ctermbg=DarkGreen cterm=none
    hi Directory ctermfg=LightGreen
    hi ModeMsg ctermfg=White ctermbg=124 cterm=Bold

    " -------------------------------------------------------------

    hi Function ctermfg=26 ctermbg=none cterm=none
    hi Comment ctermfg=White ctermbg=22 cterm=bold
    hi Statement ctermfg=227 ctermbg=none cterm=none
    hi Identifier ctermfg=225 ctermbg=none cterm=none

    hi Constant ctermfg=219 ctermbg=none cterm=underline,bold
    hi Operator ctermfg=212 ctermbg=none cterm=none
    hi Character ctermfg=166 ctermbg=none cterm=bold
    hi Number ctermfg=48 ctermbg=none cterm=none
    hi Boolean ctermfg=White ctermbg=233 cterm=bold
    hi Float ctermfg=50 ctermbg=none cterm=none
    hi String ctermfg=204 ctermbg=none cterm=bold

    hi Define ctermfg=124 ctermbg=none cterm=none
    hi Keyword ctermfg=226 ctermbg=none cterm=none
    hi Repeat ctermfg=51 ctermbg=none cterm=none
    hi Delimiter ctermfg=46 ctermbg=none cterm=none
    hi Special ctermfg=Black ctermbg=White cterm=underline
    hi SpecialChar ctermfg=166 ctermbg=none cterm=underline,bold

    hi Include ctermfg=1 ctermbg=none cterm=bold
    hi rubyPseudoVariable ctermfg=141 ctermbg=none cterm=none
    hi rubyInterpolation ctermfg=96 ctermbg=none cterm=none
    hi rubyStringDelimiter ctermfg=1 ctermbg=none cterm=bold
    hi rubySymbol ctermfg=128 ctermbg=none cterm=bold
    hi Type ctermfg=220 ctermbg=none cterm=none

    2008年1月4日 星期五

    [Vim] ColorScheme

    有鑑於 vim 在terminal 中只有黑白的
    所以查了下 colorscheme 怎麼設定
    以下都是針對 terminal 的模式, gvim 則是沒有另外去研究
    但是作法應該是大同小異
    只是說, colorscheme 檔本身也要有寫關於 gui 的設定

    colorscheme 的設定需要 vim 1.7 full 以上的版本
    ubuntu 內建的 vim 不是 full 版
    所以需要在shell中執行類似下面這樣
    apt-get install vim-ful

    接著從網路上下載喜愛的 xxx.vim 檔
    直接 google "vim color scheme" 就可以找到蠻多的了
    當然也可以自己寫 XD

    將下準備好的 .vim 檔儲存到 ~/.vim/colors/ 底下
    或是 /usr/share/vim/vim71/colors/ 底下也可
    (此處內也有很多預設的colorscheme檔
    懶得抓或是寫的人可以直接用此處的)

    colorscheme檔案複製好之後
    在 ~/.vimrc 檔案中增加一行
    colorscheme xxx
    其中 xxx 是 colorscheme 的檔名
    如上設定之後重新進入vim即可

    若環境顏色有正常按照colorshceme顯示
    但是文字沒有
    則需檢查 syntax highlight 有沒有開

    如果沒有開則可以在vim console中鍵入
    :syntax enable
    執行單次的開啟syntax highlight
    唯,需要注意開啟的文件是否是 vim 的 syntax 有支援
    所有的syntax檔都儲存在 /usr/share/vim/vim71/syntax 底下
    可以在此處尋找自己使用的檔案是否已有syntax檔

    如果是要把 vim 設定成在彩色 terminal 之中開啟時會自動打開 highlight
    則在 ~/.vimrc 檔中增加以下的內容
    if &t_Co >1
    syntax enable
    endif

    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
    印出現在所在位置