About虛擬&實際

@分享虛擬與實際的世界中所遊玩的心得紀錄,從物理化學到生命科學、從人文藝術到現代科技、從虛擬介面到實際生命體。享受的只是一種學習與體驗。若文章內容有誤,歡迎提出以供修改,對文章的回饋,歡迎寄信給我!一起分享,互相學習成長的環境。
@個人簡介在『關於韃靼』
@我是韃靼~我的信箱:chenyuquan at gmail dot com

2013年3月17日 星期日

Reading & Learning

前言:
雖然利用首頁旁邊可以快速設定連結,不過當連結束過多我想版面就會拉得很長。所以設定這個主要的連結作為分類,再從裡面更新與新增比較方便。排序暫時就以新增的先後順序為主!另外閱讀筆記的書籍目前都以程式語言,電腦相關的資料為主,其他的就看情況再打算要不要做電子紀錄了,也許以紙本記錄吧!!??另外整合了"學習資料"與"學習紀錄"的部分,讓整個清單比較一目瞭然而不會分了太多副連結。

閱讀:
[閱讀筆記] 學徒模式-Apprentise Pattern
[閱讀筆記] Getting Started with Arduino
[閱讀筆記] 人月神話-The Mythical Man-Month
[閱讀筆記] 超閱讀力,不誇張!一分鐘讀懂?本書
[閱讀筆記] Hacking Work夠駭 才能成為職場A咖-CH1~7

學習資料:
[學習資料] LabVIEW
[學習資料] MATLAB
[學習資料] Arduino
[學習資料] Raspberry Pi
[學習資料] Python

學習紀錄:
[學習紀錄] Linux
[學習紀錄] Python-The Quick Python Book
[學習紀錄] LabVIEW
[學習紀錄] Arduino Cookbook
[學習紀錄] LabVIEW- Image Acquisition Processing with LabVIEW
[學習紀錄] 論壇教學&技術文章等等
[學習紀錄] 介面設計與實習,使用LabVIEW NI-VISA
[學習記錄] 我和LabVIEW,一個NI工程師的十年編程經驗

閱讀中書單:
資料之美-Beautiful Data
艾西莫夫科普教室(中)
朗文當代辭典
藍芽技術
藍芽技術理論與實作閱讀清單:

GRE紅寶書
Python 科學計算
You 你的身體導覽手冊
伸展聖經

Feynman's Tips on Physics

待思考:
MATLAB 學習紀錄
Igor 學習紀錄(已有文章記錄)
Illustrator CS 3 學習紀錄
SQL (ex: mySQL, LabSQL...etc...)

Getting Started with Arduino

前言:
這邊記錄了一些讀此書所得到的新觀念或者一些基本概念。反過來比較不會專注於描述Arduino的東西,細節的基本上會紀錄在Arduino Projects Book的實作以及其他實作(例如Arduino Cookbook, etc)過程。同樣地,其實也都快讀完了才想到回頭做點筆記,真是殘念...

P103-Appendix C-Arduino Quick Reference
-在shiftOut(dataPin, clockPin, bitOrder, value)裡面提到的least significant or most significant原來就是LSB & MSB,這些被歸類在Endianness(位元組序)中所提到的,大致的定義是“位元組序,又稱端序,尾序(英語:Endianness)。在計算機科學領域中,位元組序是指存放多位元組數據的位元組(byte)的順序,典型的情況是整數在內存中的存放方式和網路傳輸的傳輸順序。Endianness有時候也可以用指位序(bit)。 

Reference1Reference2”。自己的解讀就是“一串數據應該從哪個方向讀取(從暫存器裡面讀取出來)”,若類似英文書寫(左至右)為MSB,反之則為LSB,從文章所附件的表格看起來是指這個意思。


2013年3月15日 星期五

學徒模式_Apprenticeship Patterns

前言:

漸漸地發現筆記有時候以紙本模式存在要再搜尋有點困難,尤其是書閱讀越多的時候!!要在把以前的內容電子化真的是一大工程(讓我想起來一本書-數位記憶革命,就是提到將所有紙本的資訊都數位化,然後藉由很棒的搜尋系統來提取與分類等等的,“也許”有一天我也會試試看吧),所以就以近來新讀的書為主吧。

摘要:
這裡主要記錄看此書得到的想法,與其相對應的經驗與反省,還有值得再三思考的文字,都將其記錄下來,屬於持續更新的文章。雖然開始紀錄的時候已經閱讀差不多七八成內容了!!以下所提到的頁數除非有特別提到,否則是以中文書本的頁數為主。而最後的每小節所收錄的好句子會附上英文,因為大多數語意真的翻譯的很不順暢,當然也許是我自己理解錯誤,所以中英文就都記錄下來。英文的部分是參考原文書電子檔案。

內容:
$Chapter5-終身學習$
&邊工作邊反省&
-P86”Peter Principle,彼得原理_Reference“,白話一點就是被升職到一個“不能勝任的位置”。而此項建議則是必須為了升遷的將來做好'準備',而這項建議就是利用”個人實作地圖(Personal Practices Map-Joe Walnes)“。(補充)另一項從此原理變化的就是”呆伯特法則(The Dilbert principle)-Reference“,含義很接近,不過是更具諷刺意味的法則。

&記錄個人所學&
-P89“用日記、個人維基或部落格”記錄下你的旅程(目前正在持續進行),這些應該是個苗圃而不是個墳場,資料記錄應該能產生出新的經驗,而不是靜靜的死亡。需要在每次復習的時候加上新的連結,這個“創造性複習“的過程可以(1)用新的資料重新評估過去所做的決定,或是(2)能確認過去搖擺不定的想法。只要持之以恆,兩種結果都是好的。

&建立回饋迴路&
-P93"Stop Energy",可google<What is Stop Energy + Dave Winer>,主要提到當進行RFC(Request For Comment)的時候可能會得到“以善意忠告的方式呈現,告訴你為何無法達成目標,應該立即放棄而非冒著失敗的風險堅持下去。”有點類似中文的“說涼話”,“潑冷水”且自以為過來人的經驗忠告。這個就稱為“Stop Energy”,是個沒有用的回饋迴路,應該避免。

-P94”如果你覺得否件事情很有趣,你就會學到有趣的東西。“---(<開刀房裡的沈思>,255)

-P94"Systems thinker","Reinforcing feedback" & "Balance feedback",前者主要是鼓勵(積極)做更多事情,後者主要是鼓勵(建議)較少做某件事情。同時連結兩種形式的回饋,增加許多微小的調整來維持系統平衡(或者可以解釋學習某項事務之時期的平衡)

&自失敗中學習&
-P95"試著辨認出你失敗的方式,並嘗試解決那些值得修正的問題“---改善自我認知,可以與&量身繪製地圖&共同使用,以避免傾向太過理想化的道路。

&Ch5結語&
-P96"終身學習可以看作是祝福也能被視為詛咒“,學習新知識可能是十分通股的事情且必須承受心智上的不協調,但這種不協調表示持續進展的訊號。

$Chapter6-安排自我課程$
&熟悉使用工具(Familiar Tools)&
-P110"In a time of drastic change it is the learners who inherit the future. The learned usually find themselves equipped to live in a world that no longer exist.---Eric Hoffer, Reflections on the Human Condition_Reference",這句我想含義應該是指,能自主學習的人,終將繼承(掌握)未來;而不求進步的人(the learned, 已有知識的人,但不求新)將會發現那可以生存的世界已不復存在。

-P110"groove vs. rut",查了一些資訊得到這兩個字雖然意思相似,實際上他們的言外之意卻是天差地別。”A groove can guide you, while a rut restrains you._Reference“以前面這段話就可以看出兩個差異性了。



$Chapter7-總結$
大略提到,要達成好的軟體工程,需要將”知識“&”經驗“經由”有效地“傳承下去才是”好的結果”。可惜的是目前都還沒有,軟體工藝還是只有一小群擁有特別優秀才能的開發人員產生,形成了孤立的品質。藉由Antonio Stradivari的工藝(大、小提琴)無法隨著傳承而失去,也講述“日常工作中的小細節也是技巧的一部份”,技藝之路是機會與限制並存。

另外有提到程式設計師技能的分配圖並非是常態分佈,事實上是低於平均水平。而作者希望表達的是看重技術的領域與傳統,包含了獲得-成長-傳播技術。最後則說,目前仍然沒有大師的事實,雖然缺少證明並不是證明(Absence of proof is not evidence of proof.)。

-P114"Dunning-Kruger effect(達克現象)",認知偏差(Cognitive Bias)的一種,大概的意思是指自認為優秀(自我感覺良好),而且不僅指無能的人,即使是有能力的人也是一樣會反這樣的毛病。"the miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others_Reference"(miscalibration = mis + calibration, 錯誤的標定/判斷)

每章節開頭的名言佳句:
Ch5-邊工作邊反省(P86)
(中)自我檢驗很難,但我相信我們能從自己的失敗中學到的比成功還多。---<專案回顧>
(英)Self-examination is hard, but I believe we can learn more from studying our failures than from our successes.---Norm Kerth, Project Retrospectives

Ch5-記錄個人所學(P88)
(中)你不應該低估寫作的力量...你會忘記目的。但是寫下來會讓你後退一步,重新思考ㄧ個問題,即使是最憤怒的怒吼也能強迫作者達到一定程度的深思熟慮。---<開刀房裡的沈思>
(英)You should not also underestimate the power of writing itself...You can lose your larger sense of purpose. But writing lets you step back and think through a problem. Even the angriest rant forces the writer to achieve a degree of thoughtfulness.---Atul Gawande, Better

Ch6-熟悉使用工具(P109)
(中)泥溝是指你持續轉動輪子卻停留在原地,唯一的進展是為自己挖條更深的溝;石溝則不同,當輪子轉動時你會毫不費力地前進,泥溝是不理會自己或世界的變化,持續使用嘗試過與測試過方法的結果。---<創意是一種習慣>
(英)A rut is when you're spinning your wheels and staying in place; the only progress you make is in digging yourself a deeper rut. A groove is different: The wheels turn and you move forward effortlessly... a rut is the consequence of sticking to tried and tested methods that don't take into account how you or the world has changed.---Twyla Tharp, The Creative Habit

Ch7-總結(P113)
(中)工匠以技藝的成熟自豪,因此單純的模仿無法得到持續地滿足,自身技藝必須要有所提昇。---<The Craftsman>
(英)Craftsmen take pride most in skills that mature. This is why simple imitation is not a sustaining satisfaction; the skill has to evolve.---Richard Sennett, The Craftsman

總結:
(2013/3/3 edited)
最近買了一堆新書,其中一本就是由Dave H. Hoover & Adewale Oshineye所共同出版的學徒模式- 優秀軟體開發者的養成之路(Apprenticeship Patterns- Guidance for the Aspiring Software Craftsman_Link)。主要就是談論如何從初學者(或再次成為初學者)的角度去磨練,增進,提升自我的能力所給的許多模式討論。


對於剛從G語言(LabVIEW)轉進Wiring (Arduino, 建立在C語言上)的文字式語言有很多觀念上的幫助,也可以藉此回顧之前學習LabVIEW歷程中的許多缺陷。


目前也還沒決定好到底想學哪一種程式語言,Python or.....自學的關係,要找到一個工匠或者師傅學習可能機會頗小,環境不像是在國外,華人說實在的還是比較保守些,不過還是會嘗試接觸與聯繫看看。


另外覺得有點可惜的是,翻譯與校正上面有頗多錯誤,例如翻譯不順,錯字多(目前只看了十來頁就發現至少五處錯誤)。有錯誤一定會有,不過錯誤很多就有點品質管理上的疏忽了。希望台灣進口代理(翻譯)的碁峰資訊可以加強譯文的流暢與正確性。

(2013/3/12 edited)
自從開始看了學徒模式後,學到了很多觀念,等到整理筆記完後再打成電子檔放上來做記錄。

另外不得不再次提起的是,翻譯的品質真的很不好,只有一整個不順的內容。站在讀者的角度,當然希望快速吸收到國外的資訊,且是用熟悉的語言,才不會需要花很多時間在語言上面。雖然讀英文是沒有太大的問題,但是原文書價錢貴是個不爭的事實(其實不太瞭解為何翻譯書籍通常都是便宜的??)。我瞭解翻譯者的功力以及要將一些外文語意翻譯成通俗的中文是非常的有挑戰性,但是出版社這時候應該要好好地控制品管吧,站在守門員的角度吧!?

這真的令我覺得翻譯領域其實非常極度的缺人才,不管是翻譯者還是出版業的編輯等等。除了一些外文翻譯的市場外,大概也是因為"cost down"所造成的狀況吧。希望在上頭的各位大佬可以除了賺錢外,可以再多花一點點的良心在推廣知識囉。(例如:聘起更多專業人才,且給足夠的薪水)

PS:台灣O'Relly已經停止營業,改由碁峰出版社,在專業的電腦圖書出版社的監控下應該可以增加更好的品質囉。(話說回來,學徒模式的出版公司還是碁峰呀~不是台灣歐禮來!這....)

參考:
Manifesto of Software Craftsmanship
Book:
(1)Refactoring : Improving the Design of Existing Code_ Fowler, Martin...etc, Addison-Wesley, 1999

(2)Software Craftsmanship : The New Imperative_ McBreen, Pete, Addison-Wesley, 2001
學徒模式(書籍資料)

軟體工藝宣言:
As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

Not only working software, but also well-crafted software.
Not only responding to change, but also steadily adding value.
Not only individuals and interactions, but also a community of professionals.
Not only customer collaboration, but also productive partnerships.

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.

© 2009, the undersigned.

this statement may be freely copied in any form, but only in its entirety through this notice.

2013年3月13日 星期三

[學習記錄] Linux

前言:
最近一直都有找零碎時間來研讀Linux相關資訊,對於初學者的我而言,找一本書或者一個完整的資訊(網路)瀏覽是個很好的開始。

學習教材:
目前都先關注鳥哥的 Linux 私房菜為主,每天休息或者實驗空檔瞧個幾行幾段,增加一些基本資訊。雖然是很想買一本書起來放,但是看到鳥哥出的書這麼的貨真價實(有夠厚),還是先瀏覽網站,稍稍微的延緩後再說吧(手上還有幾本書在閱讀中)。

&閱讀紀錄&2013/03/13:

目前閱讀到第三章"主機規劃與磁碟分割",前幾張主要都是硬體為主,第三章開始會進入Linux的安裝以及軟體的部分。雖然我購買了Raspberry Pi已經內建Linux系統(Debian),不過還在思考要不要先從鳥哥建議的"CentOS 5.x"來學習~(雖然網路上有關Debian的學習資料也是很多,不過考量到學習效率與學習曲線,還是先以能快速且完整上手的部分開始)

題外話,最近思考了學習清單(包含書籍清單)後,已經比較有稍微清晰的藍圖了,希望可以順利的啟動~哈哈~



2013年3月10日 星期日

Micro B USB 小手術

前言:
今天焊接了micro B USB的接頭,話說回來,這種接頭比傳統的小,且漸漸地普及化了,不過我也直到今年年初才知道真是過時代呢!!

過程:
從wiki可以查到類似如下的圖片:
其實種類還挺多的,若能全部統一那實在是使用者的福氣,否則總是一堆規格不一樣的線材也是整理上的噩夢。

斷掉的地方是內部的電線,大概是因為殼裂開後,拉扯所造成的吧!不過焊接還了才想起來,只好拍外部來做記錄。

後記:
總而言之是個小小的手術而已,原本的線材有點短,不過還能使用,就省了時間換新的,雖然覺得有點鬆脫就是了。

參考:

2013年3月6日 星期三

程式語言的"開始"-by Arduino

前言:
若說LabVIEW是我第一個正式學的程式語言(Programming Languages),MATLAB是第二個(但只剛上手),那麼正式的文字敘述型程式語言大概可以將Arduino的Wiring (Based on C)算是一個吧。不過這幾天又持續的將幾個”程式語言“看了一些新的資訊,例如Ruby, Python...還是在思考到底以哪一個為“開端”,這實在是有點頭大,或許我不應該思考太過複雜才對!
    扯遠了的是,通常程式語言好像很喜歡以"Hello, World"為開始作為與電腦互動的起始!?利用Arduino的Wiring也不例外的可以這樣使用,因此我利用了Project 11有用到的LCD顯示器作一個測試,來達到這個小小的卻有象徵意義的程式碼。

硬體:

跟Projectㄧ模一樣,只是改變程式的部分。

程式:

將亂數的部分刪除,只增加很簡單的開始文字敘述與搖晃後的文字敘述而已。

Code:(截取片段)


void loop() {

  switchstate = digitalRead(switchPin);
  if (switchstate != preswitchstate) {
    if (switchstate == LOW) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("My dream will");
      lcd.setCursor(0, 1);
      lcd.print("come true!");
      delay (5000);
    }
    else {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("I fucking love");
      lcd.setCursor(0, 1);
      lcd.print("our world !!");
    }
  }


圖片:
後記:
我想我會持續的很努力去喜愛這個世界,否則若什麼都不學,什麼都不做的話,實在是活得太無聊了。另外,有關LabVIEW & MATLAB的"Hello World"表示方式說真的挺無趣的,也許現在電腦的人機界面做得太棒了,導致我對於當下所顯示出的資訊還沒有太深入的感動吧!!

參考:

The Hello World Collection
Arduino_Project11_Crystal Ball

2013年3月4日 星期一

Arduino_Project11_Crystal Ball

前言:
經過二月的空窗期後,又繼續我的Projects計劃了。以往使用Arduino,若要顯示資訊都是經由Serial monitor,而這次借由LCD顯示器,就可以直接將資訊顯示在實體世界(指除了電腦螢幕以外的顯示元件)。

硬體:

LiquidCrystal (16*2 matrix), potentiometer, tilt switch.

程式:

已經有封包好的LCD library可以使用,只需要呼叫對應的command即可。另外自行建立八種預設答案,每次搖晃tilt switch則使用亂數功能(random)選擇答案。

Code:

    random(number)_ selected from number randomly.
    LCD library_ control lcd monitor.
    switch (case)_ case<use int number>, 傳回所選擇的數字,在此project內,顯示其中之一的答案(文字)(程式碼中建立八種預設答案)

圖片:


後記:

使用了LCD顯示器,則可以直接在實體世界顯示出資訊,例如使用溫濕度感測器,則可以將數值顯示在LCD上面,就不需要透過電腦來達到直覺的方式啊!真是方便,改天就將溫度感測器接上試試看。
另外,LCD的產品說明書是台灣的公司所提供的,真是有趣,還以為都是大陸制的!!

補充:

(2013/03/10) "switch"的這個指令很有趣,為什麼呢?因為之前都常常會打類似的指令-switchPin, switchState...etc,打完前面的switch都會顯示橘紅色(表示為內建指令),還在想為什麼指令會用到switch(那時候不認真,只想快速地先瞭解當下的project內容,所以沒查)。到了今天才瞭解到這個"switch"可以作”任務“的設定,就是先定義"switch(數值)",然後"case x"下一行則是內容,最後加上"break"表示case結束。大致地表示法如下:

    switch(number){
        case x:
        "reply content/ command"
        break;
        "new case"
        ....

其中的reply content/ command在project 11裡是輸出string到LCD上面<lcd.print ("text")>。

參考:

Switch(case) statement_ serial input 
LCD library
alphanumeric LCD (16X2)