[Calculus] Big Picture of Calculus 心得

,
昨天在火車上閒來無事,來看看想看已久的微積分影片,自從今年三月14日考完研究所以後,很久沒有靜下心來看這種 教學影片了,在加上最近機率課程頻頻用到微積分,那就一邊複習,一邊看看我最喜歡的 Gilbert Strang 如何講 Calculus Overview 吧。

這系列的 Overview 課程放在 ocw.mit.edu,Youtube 和 iTunus U 也都有提供一模一樣的課程,所以很好取得,而且 其實也才六個 video:


  • Gil Strang's Introduction to Highlights of Calculus

  • Big Picture of Calculus

  • Big Picture: Derivatives

  • Max and Min and Second Derivative

  • The Exponential Function

  • Big Picture: Integrals


看完第一個 introduction 後發現,這是為了推廣 calculus 而給 high school students 看的,所以應該會偏重於"大觀念"而不是"計算技巧",就當做複習吧!

Gilbert Strang 在我心中,絕對可以算是大師的一位,他所著的 "Introduction to Linear Algebra" 可以稱得上是經典,也是 MIT 18.06 課程的課本,在我考研究所的時候,這本書讓我獲益良多,我覺得這書最好的地方是它對線性代數給了 一個完整的概念和大觀念,而不只是給你一條條定理和證明,所以對於空間、向量概念會很清楚。

Introduction 才 4:57 秒,其實只是說一下為什麼要有這幾個影片
,和希望達到的效果,微積分其實博大精深,在各個學門、學科都可以用到,算是別的學科的基石,所以短短的五堂半小時的課程真的無法提到太 detail 的細節或是技巧,所以這幾堂課也就是大觀念的整理。

接下來就是 Big Picture of Calculus,主要在強調 rate of change,也就是斜率,告訴你微分能做什麼和他的物理意義,先從問題開始,然後給你解,在用幾個不同的 example 找出解的規律,也就是微分的基本公式,順便帶出積分來這樣。

如果你心中對於微積分要拿來做什麼有所疑惑,或是對這整個學門沒有太多了解,閒暇之餘,這會是很好的入門教材。

極端的好處

,

我一向有個習慣,就是對於很好學(容易)但是效果只有80分的東西沒有興趣,但是如果很難學但是效果有90分,我就會覺得特別起勁,可能是因為困難,會讓我有成就感吧。

忽然想到,因為這樣的個性,所以對於一些冷門、小眾的東西我滿有興趣的,也常常因為這樣知道了一些有趣的東西,這樣的個性對於別的職業有沒有好處我不清楚,不過對於軟體工程來說,到還是滿有幫助的。

下星期五就解脫了,回歸到學生和讀書生活,希望到時候能把這兩個月一些心得整理出來。

碎碎唸就到此了,晚安。

,

我很想寫 blog,也累積了 好幾個題目可以寫了。

但是我沒時間 ...

上班真的好忙喔 ... 又要月底了,壓力好大。

My Favorite Browser

,
我是個 Mac fan,也很喜歡 safari,在 windows 上我通常會用 chrome 或是 safari(我也是個 Google fan :D ),對我來說 Firefox 是在需要 Firebug 時才會開的,而其他 M$ 的瀏覽器 就...
by the way, 在 ubuntu 上我用 firefox (因為沒得選)

不過這次的工作內容被迫要用一台很破的 Windows 開發,當我沿襲以往的瀏覽模式(開很多視窗,Gmail、Plurk、Facebook、document、API、wiki、RSS reader)我的電腦變得很慢~很慢~很慢~,切換視窗時有時居然要花上數十秒,這讓我開始測試眾多的瀏覽器。

(沒有留下測試數據,所以這是不負責任的評測 :D )
最後發現,在 windows 上,Opera 大勝,改用 Opera 後電腦就不再 lag 了。
在 Mac OS X上,OmniWeb 大勝,不管是佔用記憶體,還是開啟速度都是最快的。
(safari 用久了也還是會 lag)
而在 ubuntu 上,Opera 和 Firefox 差不多快,但是 Firefox 記憶體還是吃比較兇。

完畢!

Dynamic linker on FreeBSD

,
通常在使用 Unix-like 系統的人會很習慣使用套件管理程式,比方說 port on FreeBSD, apt-get on ubuntu,它會幫你把所有有相關性的 library 都裝好,但是有些時候,你如果想要自己指定相關性的 library 的時候怎麼辦呢?

之前在使用 Hadoop 時就遇到一個例子,我想要在 90 台電腦上跑 MapReduce ,而且想要用我熟悉的 Ruby 來跑,但是這 90 台電腦我並沒有安裝軟體的權限,並且在 cloud 裡面的電腦要盡量保持乾淨,可不能因為我一個人的"好惡"就亂裝一些有的沒的,經過 rafan 大的開示,有兩條路走:

  1. 找 static linked 的 Ruby 來用
  2. 自己把 shared 的 library 一起丟上 cloud

在 FreeBSD 上有一個指令是 ldd,會列出你使用的檔案會連結到那些 .so 檔(奇怪的是在 ubuntu 上也有這個指令 ldd),另外在 Mac OSX 上要用 otool 指令。

找到了 shared library 當然就是把他一起傳上去啦,但是執行時,要先在 shared library search path 中指定要去找你傳上去的位置,改變 search path 請指定在 LD_LIBRARY_PATH 變數中。

更多有關 dynamic library 的訊息可以看看 rtld ,它有解釋有那些環境變數可以用。

Unix-like 的系統真的非常有彈性。:)


Vim with Mouse

,
之前遇到了一個問題是在"某些"機器上把 Vim 升級成 7,會無法在 PieTTY 上使用右鍵貼上文字,但是在 shell 是正常的,所以很明顯的 Vim 做了一些 OOXX 的事情。

後來是經由 rafan 大告訴我們多設定一個 mouse-=a 就可以了,但是怎麼可以解決就算了,知其然不知其所以然呢?

後來看到 vim documentation, 裡面的第五點 using the mouse,才恍然大悟,原來平常使用 vim 時,就算有用滑鼠把東西 paste 進去 terminal 中,也是使用 system level 的 copy paste,vim 完全只扮演一個文字編輯器的角色,而輕點右鍵就算是"貼上"這件事情應該是 PieTTY 做的,算是 hot-key。

因為他已經寫的很詳細了,我就小小翻譯一下,做個筆記。

5. 使用滑鼠篇

現在來談談有關在 terminal 中使用滑鼠的方法吧,另外,如何在 GUI 視窗中(我想是 GVim)使用滑鼠是別的章節,而如何使用滾輪鼠也是在另一個章節

要在所有 mode 中都可以使用滑鼠要設定指令如下:

:set mouse=a

除此之外 Vim 在任何模式下都不能辨認你的滑鼠。(詳情請看這裡

目前來說,在以下情況滑鼠都會被支援,Unix 中的 xterm window、Linux 中的 console(GPM)、MS-DOS、Windows 中的 console。
支援定位你的 cursor,也可以拿來選擇區塊和貼上等等。

在 mouse 變數中用這些參數來告訴 Vim 要在那些 mode 可以使用滑鼠。
 n Normal mode  
 v Visual mode  
 i Insert mode  
 c Command-line mode  
 h all previous modes when in a help file  
 a all previous modes  
 r for |hit-enter| prompt  
 A auto-select in Visual mode
在預設的情況下,mouse 變數中會是空的,也就是不使用滑鼠(應該也是 Vim7 之前的情況),通常如果要使用滑鼠,你可以這樣做:

:set mouse=a

(這和設定 mouse=nvich 是一樣的)
如同上面解釋的,如果你只想在少數幾種 mode 使用滑鼠,那必須要把字母串接起來,像是:

:set mouse=nv

意味著在 Normal mode 和 Visual mode 中使用滑鼠。

:set mouse=h

意味著只能在看 help file 時使用滑鼠。(所以你可以用 q 跳到 tags

要判斷用滑鼠選擇過的區塊是在 Visual mode 還是 Select mode 是根據 "mouse" 有沒有被包含在 selectmode 選項中。

在 xterm 中,如果你現在在使用的 mode 有在 mouse 變數中被設定,那你按 shift 或 ctrl + 滑鼠點一下會到 xterm,如果沒有設定,那不論在什麼 mode 滑鼠點一下都會到 xterm。(這邊我也不太了 ~"~)

*xterm - clipboard*
AthenaMotif GUI 版本中,如果跑在 terminal 上並且去存取一個 X-server,那複製-貼上的行為就會像是在 GUI,如果沒有的話,那滑鼠中鍵會 insert the unnamed register (又看不懂了)在這個情況下,我們要複製並且貼上一段純文字會這樣做:

使用 mouse 和 Visual mode 來複製-貼上(mouse 變數要先如上設定喔)
  1. 在你要選的第一個文字上按住滑鼠左鍵,移動到你要選的最後一個文字在放開左鍵,這樣會是使用 Visual mode 選擇這些文字,而且會有 highlight 的效果。(我實在不想翻譯成 語法"高亮")
  2. 按下 y 來 yank 這些被選中的文字,放到 vim 的 register 中。
  3. 在你要貼上的地方按一下滑鼠左鍵,把游標移過去。
  4. 點滑鼠中鍵
剩下的不翻了,後面有點離題了。 XD

<簡報上線> Functional Programming 之二三事

,
自從 Google 發表雲端運算以後, concurrency computing 才開始漸漸受到重視,連帶的適合進行 parallel 開發的 functional programming 也開始"逆襲"了。

其實 functional programming 實在不算是新的技術,近年來 Ruby, Python, Perl 等語言紛紛加入一些 FP 的 features ,才漸漸讓比較多人知道這個 programming paradigm,甚至有很多人在使用 FP 也不自知,所以就算是資訊相關行業/科系來說,也很多人之其然不知其所以然,使得 FP 仍然像是一個鎖在學術象牙塔的名詞。

這次的 share 就是希望讓沒聽過、或是不了解的人能夠對 FP 有一定的認識,順便也藉由在 Yahoo! presentation,訓練一下自己"很久沒用"的簡報技巧。

目前還找不到空間放 slide(動畫太多,slideshare 傳上去也會 error ~"~),所以先存成動畫檔放在 youtube,之後找到空間在補上 pdf 和 keynote 版本。

謝謝今天的聽眾在超出時間很多後還留下來"加班"聽我簡報到 7:00,對我不離不棄。 :)

投影片(youtube)


投影片(slideshare)