[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*
2012年12月28日 星期五
2011年3月28日 星期一
[android] Install and HelloAndroid Step by Step
![]() |
[3-1] Selecting packages to install |
> 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-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.
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..now, my creating command will be
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..
> 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來裝。原因不明地,
> pygmentize
> pygments
> py-pygments
> py26-pygments
等等的排列組合都試過了,但是就是不能用。
不知道是哪個地方跳針了還是如何? @@
最後解決的方法是去PyPI下載source code以後自己build就可以用了。(我的python版本=2.5.1)
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要換一下罷了。
(註:在Mac上,style的定義檔存放在/Library/Python/2.5/site-packages/Pygments-1.2.2-py2.5.egg/pygments/styles/這裡面。劍心的twilight.py我就是直接賽進這邊就可以用了。)
pygmentize身上也有非常多參數可以下。最基本的兩個flag分別是
相似於-O和-P, -F是用來在token stream上面增加filter用的。用法大概是這樣
(註,這三個參數都可以重複一直使用。)
pygmentize預設只會生出資訊而不會把style的定義也一併輸出,也就是說,
用browser打開test.html以後會發現是黑白的。
因此我們可以用
來取得名為twilight的style的css檔
還有, 參數
例如說
此外pygmentize也提供兩個flag,
這是測試的結果(原因不明的在blogger上面Line#和Code會有點錯開)
不過我不是用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 | import GHC.Conc |
2010年1月29日 星期五
[OS] Taste of House
今天早上google了一下發現已經有人拿haskell來寫OS了,叫做House。其細節還沒細看,不過倒是抓下來試了一下。測試的環境基本上和這篇是一樣的。
首先在House的網站上載
開機以後會進入GRUB的選單,接著就看想要進text mode還是graphics mode就好。
graphics mode大概長這樣,非常明顯這只是一個展示用的範例。這裡只提供了一些固定的功能可以稍微玩玩看。我甚至連怎麼關機或是離開都不知道。XD

這裡還發現一篇paper: A Principled Approach to Operating System Construction in Haskell (ICFP 2005)。最近如果沒有其他壓力的話,蠻想來研究看看這怎麼做的。
首先在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。
首先把單純的程式碼打一打。
然後assemble一下:
接者打開Hex Fiend把boot.bin打開,另存新檔成xxx.img

然後打開VirtualBox去新開一個Virtual Machine,接著再把剛剛的xxx.img給mount到Storage > Floppy Controller > Floppy Device 0上面去。最後再打開這台virtual machine就可以看到如下成果:
前兩章非常簡單, 都是在做介紹和環境配置
不過它書上是在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)
來個簡單的範例吧
因為我是想要做SVG檔
所以這個程式就是輸出.svg
以下是輸出的截圖

更多細節請參考XXX一文
所以從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
而如果要直接複製已存在的repository
project建立以後可以用
來檢視現在project所包含的檔案
接著可以把檔案加入index裡面
然後用
來完成目前已加入index的檔案的commit
期間都可以用
檢視目前工作的狀況
檢視log
git更新檔案的順序如下
改檔案
將更新的檔案加入git
加上註解
上傳檔案
不過因為之前沒有用過類似這樣的軟體
所以做點筆記好了
大致上是一邊看文件一邊看影片一邊亂試
下面還有很多可以看的
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更新檔案的順序如下
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
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有些神似
稍微研究了一下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上很多東西用起來還真是有夠簡單方便的,囧
都會聽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
終於開始碰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
所以查了下 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
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
-link
範例:
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)
因為覺得一直用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
印出現在所在位置
想說灌個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
印出現在所在位置
訂閱:
文章 (Atom)