2011年9月29日 星期四
[讀書心得]大債時代(序)
「如果你欠銀行一百萬,你的命運掌握在銀行手中;如果你欠銀行一百億,銀行的命運掌握在你手中。」這一句開場白讓我印象深刻,台灣的茂德就是一個例子了,以股作債,金融遊戲沒有所謂的死巷,只有怎麼轉,讓錢轉進你的口袋。
「如果這個世界上,人人都擁有大量存款,沒有債務,那只會導致兩件事發生:第一,銀行倒閉,第二,存款變廢紙,擁有糧食的,才是真正富人。」第一件事情會不會發生我不確定,但是第二件事情肯定會發生,其實這世界最殘酷的事實就是不可能均富,一定要有人擁有大筆財富,而另一大群人缺錢,為錢賣命工作,這世界才可能進步,鄧小平說的最坦白了,先讓一部分的人富起來,沒有說要讓大家都富起來。
序的後面還有一段話讓我感受頗深,「我們希望自己的收入不斷成長,不斷的投入更多的時間與精力,追求下一份更高的薪水、更好的享受。快樂永遠是下一次加薪,下一次旅行,下一次購物。我們從不滿足於自己已經所有的。想像一下,有一個人在四、五十歲的年紀,有一天突然心臟病發作。雖然事後幸運地復原了,但發作那一霎那心痛如刀剮,讓他以為自己就要離開人世的瞬間,卻讓他看清了人生的目的。從此以後,他過著更健康的生活,更珍惜與家人與朋友相處的時光,更知道拿一些時間來做自己覺得真正重要的事。一次健康上的小打擊,卻讓他的人生之路走得更快樂踏實。」如果說,賺錢是要讓自己和家人過得更好,那麼在你追求財富的路途上,是不是真的有過得比較好,還是只看到帳面上的數字在增加,自己的身體或心理卻反其道而行,家人之間的感情是否更好,還是越來越疏遠了,我想都是值得我們去省思的。
2011年9月18日 星期日
[Lua Note] 2 - Types and Values
Types and Values
Lua的變數型態完全取決於assign的值,而Lua有8個基本資料型態nil、boolean、number、string、userdata、function、thread和 table等。Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print(type(a)) nil > a="hello" > print(type(a)) string > a=3*5 > print(type(a)) number > a=function() end > print(type(a)) function > a=true > print(type(a)) boolean
nil
nil和C/Java Script的null意思差不多,當宣告一個變數還沒有給值,預設值就是nil,而當給變數nil就相當於delete這個變數。> x = {} > x["y"] = 1 > for k,v in pairs(x) do >> print(k,v) >> end y 1 > x["y"] = nil -- 將y自x中移除 > for k,v in pairs(x) do >> print(k,v) >> end > -- 沒有印出y了
booleans
說到boolean大家應該都知道boolean只有兩種值,true/false,在lua中,除了nil和false是false以外,其他都是true。not則是反轉boolean。> print(x) nil > print(not not x) false > x=0 > print(not not x) true -- 和C不同唷 > x=false > print(not not x) false > x = function() end > print(not not x) true
numbers
Lua中沒有整數(integer),數值(numbers)是用雙精度儲存(double-precision floating-point)。strings
Lua中的字串是儲存8-bit的字元,所以您可以儲存任何的資訊,和C不同的地方是C用null-terminated("\0"當結數符號),而Lua會用length紀錄字串長度。當Lua中的字串是不能改變的,一旦改變就等同重新建立一個新字串,這點和C也不同。
Lua的字串除了可以用雙引號和單引號表示外,還可以用 [[...]]表示。
> s1="test1" > s2='test2' > s3=[[ >> test1 >> test2 >> ]] > print(type(s3)) string > print(s3) test1 test2
Lua中字串可以用..串接在一起。
和JavaScript一樣,Lua在字串和數字之間的數學運算會試著將字串轉成數字,轉失敗就會出現error。
> print(10 .. "1") 101 > print(10 + "1") 11 > print(10 .. "x") 10x > print(10 + "x") stdin:1: attempt to perform arithmetic on a string value stack traceback: stdin:1: in main chunk [C]: ?
table
table也稱為associative arrays,key可以是任何的資料型態,除了nil以外,都可以當key(或稱index),而任何其值可以是任何的資料型態,其表示法和一般C的array類似都是用"[]"來取值。> x = { [1] = "one", ["2"] = "two", [3.0] = "three", } > print(x[1]) one > print(x["2"]); print(x[3.0]) two three
標籤:
Lua & Luci
2011年9月17日 星期六
[Lua Note] 1 - Getting Started
Chunks
Lua就和一般的Script一樣,沒有所謂的main function,也不需要分號";"'當成一個statement的結束,分號可有可無,不過我還是習慣性的加上去,就像數學運算式的括號,很可能你想的和你寫出來的意思不同,導致錯誤,以下的範例都是一樣的意思a = 1 b = a*2 a = 1; b = a*2; a = 1 ; b = a*2 -- "--"是註解的意思 a = 1 b = a*2 -- 很醜,但還是合法
您可以在提示符號下執行lua,lua [ options ] [ script [ args ] ]
prompt> lua 會進入interactive 模式。
prompt> lua -la -lb會執行a.lua和b.lua,-l相當於require的意思,lua就像一般的computer language一樣,允許您寫自己的library,並且透過require載入。
lua也提供另外dofile這個function,讓您測試您寫的lua檔,dofile和require最大的不同是,require只會載入一次,而dofile可以重覆載入,所以拿來驗證lua檔就非常適合了。
Global Variables
在Lua中,沒有特別宣告local就是Global Variables,用到沒有宣告的變數,其值就是nil。function scope1() -- step 4. function scope2() -- step. 8 print(A) -- step. 9 印出A=20 local A=30 -- step. 10又宣告一個變數A(範圍更小) print(A) -- step. 11 印出該範圍的A, 即30 end print(A) -- step 5. 印出 10 local A=20 -- step 6. 新的A=20, Global的A一樣不變 scope2() -- step 7. print(A) -- step 12. 印出這個範圍的A = 20 end print(A) -- step 1. 印出 nil A=10 -- step 2. A=10 scope1() -- step 3. print(A) -- step 13. 印出這個範圍的A = 10 os.exit()
Some Lexical Conventions
和一般的language一樣,會有所謂的key word,以下是lua的key wordand | break | do | else | elseif |
end | false | for | function | if |
in | local | nil | not | or |
repeat | return | then | true | until |
lua是case-sensitive就是有分大小寫的。 變數x和變數X是不同的。
在Lua中的註解 --是單行,像C中的//,而--[[ --]]就像C的/* */屬於多行註解。好用的地方是,只要在"--[["前面多一個"-"就等於取消整個註解,超好用。
--[[ print(10) -- no action (comment) --]] ---[[ print(10) --> 10 --]]
The Stand-Alone Interpreter
lua會將command-line的參數存到陣列arg中,arg[0]存放執行的script,arg[-1]存放script檔名的前一個參數,arg[1]..arg[n]就是依序存放後面的參數。參考資料:Programming in Lua (first edition)
標籤:
Lua & Luci
訂閱:
文章 (Atom)
熱門文章
-
轉自 http://www.wretch.cc/blog/redsonoma/14021073 基本概念: 1> tty(終端設備的統稱): tty一詞源於Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱...
-
Work queue提供一個interface,讓使用者輕易的建立kernel thread並且將work綁在這個kernel thread上面,如下圖[1]所示。 由於work queue是建立一個kernel thread來執行,所以是在process context...
-
(V)將介紹file operations中的ioctl。ioctl的prototype為: int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); ...
-
這兩天電腦的word忽然都不能存檔,即便是另存新檔也不行,最後都只能放棄修改檔案,即便重新安裝過或者更新成2007也都不能存檔,最後就乖乖的google一下,原來是暫存的資料夾不存在,按照以下方式就可以解決了。 資料來源: word 2003不能存檔問題 編輯機碼的(reg...
-
System Call在HW和user space提供一層抽象層,主要目的有: 為user space提供硬體抽象層。比如,讀取檔案時,不用管檔案所在的媒體類型與檔案儲存類型。 System call能確保系統的安全與穩定。避免user space的無意或惡意的破壞。 ...
-
在kernel中建立thread可以使用kthread_create(),建立一個task,然後在調用wake_up_process(task)讓task真正的運行,如果要kill一個kthread可以使用kthread_stop()。 在kernel中,將kthread_cr...
-
Linux module練習手札I紀錄如何撰寫一個簡單的module,並且編輯它,以及load和unload一個module。 write a module #include <linux/init.h> #include <linux/module.h...
-
幾乎任何使用 TCP,UDP或UNIX-domain socket的動作都可以用nc來達成,常見的功能如。 simple TCP proxies shell-script based HTTP clients and servers network daemon testi...
-
很多人心中都有過一個問題 What is the difference between Platform driver and normal device driver? ,簡單的來說Platform devices就non-discoverable,也就是device本身沒辦法...
-
組成元件 要能正確顯示資料,必須包含資料倉儲(Store),資料欄位的定義(ColumnModel)。 首先我們先定義資料欄位: var cm = new Ext.grid.ColumnModel({ {header: 'Name', dataIndex...