2008-06-09

Thinking

1. 在未來,對於如何以最小的功率消耗來滿足某種特殊應用,將會得到更多的重視。

2. RISC 可以使用 pipeline 來增加執行效能,而 CISC 則因為指令可以做相當複雜的動作,所以幾乎不可能使用 pipeline 。

3. RISC 是使用以 register 為主的簡單 instruction set,所以可以利用高效能的pipeline。

4. RISC 的缺點是會造成許多的程式碼,且需要較大的指令存取頻寬。

5. 你有可能對少數與自己設計相關的領域十分擅長,但是如果你想要對所有的領域都擅長,那這個設計則有失敗的可能,甚至沒有辦法使用,或是無法完成。因此,你必須選擇什麼是最重要的,並且專注在上面。

6. 真正的智慧是知道什麼該放棄,而對於過去的知識有足夠且深入的認識,則是獲得這種能力的關鍵。

7. 好的研究通常是由假設以及研究假設的結果所構成,這些假設往往在當時是不符合事實或是不太可能,但可能在未來變成事實。如果未來假設真的成為事實。你將即時地提供結果,有時甚至是偉大的研究。

 

Keys to Peer Leadership: Communication Motivation and Cooperation

【主辦單位】英文教學組

【演講者】Jim Tolford
(匯知國際企管顧問公司首席訓練師暨總顧問、錢網財經電視衛星台新加坡分公司總經理)

【講 題 】 Keys to Peer Leadership: Communication Motivation and Cooperation

【時 間 】 94年1日13曰(星期四) 上午 10:10 ~ 12:00

【地 點 】 尚志教育研究館A8-B106教室

 

==============================================================================

在知識社會中,真正的人才是:有想法、肯實作、影響別人一起實作的人。

要具備影響力,要有以下幾點特質:

1. 互動性

    人是互相的,當你高興的跟別人說一件事,他也會漸漸的被影響。(辛苦 V.S 幸福)

2. 一致性

3. 社會證明

    有 85% 的人是 to see is to believe,不敢自己去做,永遠要聽到,那個誰誰誰做這個很成功,才敢真的動手。只相信自己想相信的。舉例來說,如果今天說話的那個人是你一開始就不認可的人,那無論他說再好,你也不會相信。反之亦然。

4. 魅力

    要有乾淨清潔的外表,第一眼印象很重要。

5. 權威

    利用 symbol 的特性,假設一個人穿上醫生的衣服,帶上聽筒,大家很自然就會覺得他是醫生,而相信他所說關於醫學方面的事,利用這點,讓別人信服。

6. 缺乏

    物以稀為貴,當時間或數量很少時,就會比較受到重視。

7. 抓住他做對的事

    一般人都是 catch wrong thing,但這是不對的,當別人做了件好事,稱讚他,才會讓以後有更大的進步空間。

 

每個人接收訊息都有不同的方法,掌握對方接收訊息最有效的感觀,就能說服別人。

大約可分為以下三種:

1. 視覺:

    愛看電視,看書,想事情時眼睛會往上,講話速度快,重視自己的外在,跟這種人講話,用說的沒有太大的幫助,給他看會有比較深的印象。

2. 聽覺:

    會認真的聽你說話,講話有邏輯性,說話速度中等。

3. 觸覺:

    講話速度慢,想事情時會往下看,注重感覺。通常我們在接收訊息或表達訊息時都用錯了感觀,如此會造成一些盲點。

 

要有同理心,契合。

契合就是同意的意思,如果一開始就有著"這個人講話就是跟我不一樣",那就不可能安然無事的相處下去。

那要如何做到契合呢?

要去創造兩人相同的地方 -- copy their body movement (肢體動作)。

溝通的關鍵在於對方的反應,而不是表達的方式。

55% 的人接受肢體語言
38% 的人接受聲音

除了用來瞭解別人,也可以更瞭解自己。

 

Presentation

以前寫的,那時剛去成大發表完paper。

 

當你在報告東西 (不論 paper or something..),不要想成是要做一份作業,而是在介紹一樣產品。我以前報告都是當做我在跟別人說我要報告的東西,當作是一個"作業"在做。但是這次下去給我的感覺,做一份報告,應該是要把自己所想表達的表達出來 ,在報告之前(不論是自己的專題或只是一份雜研讀的 paper) ,要先想想以下幾點:

1. 應該先想好想表達的東西

你想讓大家知道的是什麼 (這是最重要的) ,這跟所有事都講是不一樣的。因為不可能所有東西都講,因此對於想表達的東西(重點部份),應該要詳細的敘述,這樣聽的人才會有收穫,不然別人跟本聽不懂你在說啥。

2. 一份投影片是否連貫  是否有因果關係

這所謂的一份,可以指一頁裡面,也可以說是整份。在敘述一句話時,要想好為啥要說,在用幾點項目列舉時,要先知道自己想表達的是什麼,想好是否可以有更好的結構來表達,在同一階層的語句是否屬於同一層級。

3. 要有動畫!動畫!

動畫對於一份投影片來說,是增加看的人理解速度的有利工具。或許單單一個圖也可以用比的來表示,但無論如何,都不會有動畫清楚。

4. 要有實例

空泛的理論會讓人無法理解,特別是我這種對特別領域沒有很深入了解的人,所以有實例解說,可以增加他人的理解力。

5. 報告的目的是要讓人了解

報告就是要把你所想說的表達出來,讓大家理解,而不只是個"例行公事"。這一點不只是在現在報告 paper 給老師聽,想想以後出去工作,報告給長官,報告給客戶。如果講的一點結構都沒有,零零碎碎的東提一點,西提一點,誰聽的懂呢? 不讓別人理解你在說啥,又怎麼說服別人採用你的意見、買你的東西呢?想著要怎麼做,別人才會更容易了解,想著要怎麼說才會更有連貫性。

這都是很重要的,當然,這是需要訓練的!

這次被老師罵的超慘 Orz,寫點下去的心得跟大家分享,有的地方可能表達的不太清楚,不過希望對你們會有幫助。當然,也是寫給我自己,免得以後再犯一樣的錯。

加油吧 :)

 

 

Virtual Memory

20070923 373

1. CPU 或 OS 或任何的應用程式..  永遠只能看到 virtual address

2. CPU  要透過 virtual address 才能看到 physical address(RAM, network card)

3. OS 裡面會記錄 CPU 要怎麼做

人月語錄 -- The Mythical Man-Month

20070923 397

 

1. 調適自己習於追求完美是學習軟體工程最困難的部份。

2. 做出來的東西是不是落伍,應該跟其他已存在的實物來比較,而不是跟那些尚未實現的概念相比。

3. The real tiger is never a match for the paper one. (想像中的真老虎,永遠敵不過現成的紙老虎。)

Linux Kernel Error Message

開機時看到

jffs2: Too few erase blocks (4)

表示 jffs2 的部份allocate 太少 sector (這邊是assign 4個),因為 jffs2 要留一部份自己做類似 garbage collection (GC) 的動作,故不能 assign 太小。 目前看起來至少要給 6 個 sector

pthread

 

https://computing.llnl.gov/tutorials/pthreads/

Routines:

      pthread_mutex_init (mutex,attr)

      pthread_mutex_destroy (mutex)

      pthread_mutexattr_init (attr)

      pthread_mutexattr_destroy (attr)

Usage :

Mutex variables must be declared with type pthread_mutex_t, and must be initialized before they can be used. There are two ways to initialize a mutex variable:

   1. Statically, when it is declared. For example:
      pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;

   2. Dynamically, with the pthread_mutex_init() routine. This method permits setting mutex object attributes, attr.

The mutex is initially unlocked.

# The attr object is used to establish properties for the mutex object, and must be of type pthread_mutexattr_t if used (may be specified as NULL to accept defaults). The Pthreads standard defines three optional mutex
attributes:

    * Protocol: Specifies the protocol used to prevent priority inversions for a mutex.
    * Prioceiling: Specifies the priority ceiling of a mutex.
    * Process-shared: Specifies the process sharing of a mutex.

 

Note that not all implementations may provide the three optional mutex attributes.

# The pthread_mutexattr_init() and pthread_mutexattr_destroy() routines are used to create and destroy mutex attribute objects respectively.

# pthread_mutex_destroy() should be used to free a mutex object which is no longer needed.

 

Locking and Unlocking Mutexes

Routines:

      pthread_mutex_lock (mutex)

      pthread_mutex_trylock (mutex)

      pthread_mutex_unlock (mutex)

 

Usage:

    * The pthread_mutex_lock() routine is used by a thread to acquire a lock on the specified mutex variable. If the mutex is already locked by another thread, this call will block the calling thread until the mutex is unlocked.

    * pthread_mutex_trylock() will attempt to lock a mutex. However, if the mutex is already locked, the routine will return immediately with a "busy" error code. This routine may be useful in preventing deadlock conditions, as
in a priority-inversion situation.

    * pthread_mutex_unlock() will unlock a mutex if called by the owning thread. Calling this routine is required after a thread has completed its use of protected data if other threads are to acquire the mutex for their work
with the protected data. An error will be returned if:
          o If the mutex was already unlocked
          o If the mutex is owned by another thread

Question: When more than one thread is waiting for a locked mutex, which thread will be granted the lock first after it is released?

 

Answer : Unless thread priority scheduling(not covered) is used, the assignment will be left to the native system scheduler and appear to be more or less random.

 

Proftpd

 

http://www.chinaunix.net/jh/15/247811.html

http://www.castaglia.org/proftpd/

http://www.proftpd.org/

為了讓使用者可以有多一點選擇,除了 Samba 之外,也提供了 FTP server。Proftp 也是很難 build,在 porting 上遇到不少問題。

但 ftp 跟 nfs不一樣的地方是它受到了大家的重視,也就受到較嚴格的測試。其中有幾個值得提的地方:

1. 使用者上傳檔案權限問題

描述:對於 anonymous 上傳的檔案會以 nobody 做為其 user:group,而其他人也就不會有讀寫權限的問題。但若某個user登入了自己的帳號,上傳的檔案就會以他的user:group為主,如此一來可能會造成其他人沒有讀取權限的問題。本來是用scheduling定期去將所有的檔案及資料夾的權限改為 777(-rwxrwxrwx),讓所有人

      都可以使用,但這樣一來如果檔案數量過多,會造成系統inode cache吃光所有的 memory,造成系統不穩定。

解法:
    在 proftpd.conf 中可以設定 Umask,他會在 ftp 將檔案上傳至 server時,利用此設定去計算出該檔案應有的權限設定。當設定為 Umask  0 時,所有的檔案及資料夾權限皆會是 777 (-rwxrwxrwx)。

2. 語系問題

描述:
    FTP的語系跟使用的 client有密切的關係。假使client是使用 Big5,那其他語系在顯示方面就會有問題。在NAS上預設使用的語系是 UTF-8,所以在不支援UTF-8的 client上,會有顯示及存取的問題。較新版的 proftpd有內建language module(mod_lang),他是搭配著系統的 locale 做設定,可惜在NAS上的locale尚未完成,為了先給客戶交代,只好用別的方法。

解法:
    網路上有人release一份patch,是將proftpd加上iconv去做語系方面的轉換,patch完後只需在config中設定local與remote的charset,他就會完成轉換。iconv是一套語系轉換的library,只需要幾個function就能轉換。

3. 頻寬限制

描述:
    為了讓user可以做bandwidth control,必須要提供頻寬的設定。

解法:
    在不同版本的 proftpd 中似乎必須要有不同的設定。在proftpd-1.3.1rc2中,可以利用以下的方法來設定:

http://www.proftpd.org/docs/directives/linked/config_ref_TransferRate.html

TransferRate RETR 1024  //表示下載為1024KB
TransferRate STOR 1024  //表示上傳為1024KB

4. configure reload

描述:
    當 FTP 的config有所改變時,例如新增刪除 user、改語系設定等,為了要讓 FTP server可以即時修改,就必需要重開daemon。但如此一來所有的連線都會被切斷。

解法:

當 proftpd 收到 SIGHUP 時會去 reload 他的 config。其實不只 proftpd 是這樣做的,很多 server 的程式都支援這種作法(如,samba)。因此只要在啟動的 script 中增加一項 reload 即可,內容如下:

killall -1 proftpd

★★★★★★ 傑森系列 ★★★★★★