2018年12月7日 星期五

Sony VAIO 筆電重灌


光碟開機設定
按 F2 進 BIOS
BOOT
External device boot 改 enabled
BOOT Priority 按 F5 上升把 external device 調到第一個
按 F10 儲存設定並重新開機

form: http://pejslin.blogspot.com/2017/02/sony-vaio.html

2018年8月28日 星期二

如何藉由使用 Excel 中的 Visual Basic 程序選取儲存格/範圍

from: https://support.microsoft.com/zh-tw/help/291308/how-to-select-cells-ranges-by-using-visual-basic-procedures-in-excel

1: 如何在使用中的工作表上選取儲存格

若要在使用中的工作表上選取儲存格 D5,您可以使用下列其中一個範例:
ActiveSheet.Cells(5, 4).Select
- 或 -
ActiveSheet.Range("D5").Select

2: 如何在相同的活頁簿中選取另一個工作表上的儲存格

若要在相同的活頁簿中選取另一個工作表上的儲存格 E6,您可以使用下列其中一個範例:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   - 或 -
 
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
或者,您可以啟動工作表,然後使用上述的方法 1 來選取儲存格:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

3: 如何在不同的活頁簿中選取工作表上的儲存格

若要在不同的活頁簿中選取工作表上的儲存格 F7,您可以使用下列其中一個範例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
- 或 -
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
或者,您可以啟動工作表,然後使用上述的方法 1 來選取儲存格:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

4: 如何在使用中的工作表上選取儲存格範圍

若要在使用中的工作表上選取範圍 C2:D10,您可以使用下列其中一個範例:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

5: 如何在相同的活頁簿中選取另一個工作表上的儲存格範圍

若要在相同的活頁簿中選取另一個工作表上的範圍 D3:E11,您可以使用下列其中一個範例:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
或者,您可以啟動工作表,然後使用上述的方法 4 來選取範圍:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

6: 如何在不同的活頁簿中選取工作表上的儲存格範圍

若要在不同的活頁簿中選取工作表上的範圍 E4:F12,您可以使用下列其中一個範例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
或者,您可以啟動工作表,然後使用上述的方法 4 來選取範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

7: 如何在使用中的工作表上選取具名的範圍

若要在使用中的工作表上選取具名範圍 "Test",您可以使用下列其中一個範例:
Range("Test").Select
Application.Goto "Test"

8: 如何在相同的活頁簿中選取另一個工作表上的具名範圍

若要在相同的活頁簿中選取另一個工作表上的具名範圍 "Test",您可以使用下列範例:
Application.Goto Sheets("Sheet1").Range("Test")
或者,您可以啟動工作表,然後使用上述的方法 7 來選取具名範圍:
Sheets("Sheet1").Activate
Range("Test").Select

9: 如何在不同的活頁簿中選取工作表上的具名範圍

若要在不同的活頁簿中選取工作表上的具名範圍 "Test",您可以使用下列範例:
Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
或者,您可以啟動工作表,然後使用上述的方法 7 來選取具名範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

10: 如何選取相對於使用中儲存格的儲存格

若要選取位於使用中儲存格下方五列和左邊四欄之間的儲存格,您可以使用下列範例:
ActiveCell.Offset(5, -4).Select
若要選取位於使用中儲存格上方兩列和右邊三欄之間的儲存格,您可以使用下列範例:
ActiveCell.Offset(-2, 3).Select
注意 如果嘗試選取「不在工作表之內」的儲存格,將會發生錯誤。 如果使用中儲存格是在欄 A 到 D 之間,則上面的第一個範例將會傳回錯誤,因為向左移動四欄會讓使用中儲存格置於無效的儲存格位址。 

11: 如何選取相對於另一個 (不是使用中) 儲存格的儲存格

若要選取位於儲存格 C7 下方五列和右邊四欄之間的儲存格,您可以使用下列其中一個範例:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

12: 如何選取從指定範圍位移的儲存格範圍

若要選取與具名範圍 "Test" 大小相同,但向下移動四列和向右移動三欄的儲存格範圍,您可以使用下列範例:
ActiveSheet.Range("Test").Offset(4, 3).Select
如果具名範圍是在另一個 (不是使用中) 工作表上,請先啟動該工作表,然後使用下列範例來選取範圍:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

13: 如何選取指定範圍和調整選取範圍大小

若要選取具名範圍 "Database",然後將選取範圍延伸五列,您可以使用下列範例:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

14: 如何選取指定範圍、進行位移,然後調整大小

若要選取位於具名範圍 "Database" 下方四列和右邊三欄的範圍,並包括大於具名範圍兩列和一欄,您可以使用下列範例:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

15: 如何選取兩個指定範圍以上的聯集

若要選取兩個具名範圍 "Test" 和 "Sample" 的聯集 (亦即合併區域),您可以使用下列範例:
Application.Union(Range("Test"), Range("Sample")).Select
請注意,這兩個範圍都必須在相同的工作表中,此範例才能正常運作。 另請注意,Union 方法無法同時在不同工作表之間使用。 例如,這一行沒有問題
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
但這一行
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
會傳回錯誤訊息:
Union method of application class failed (應用程式類別的 Union 方法失敗)

16: 如何選取兩個指定範圍以上的交集

若要選取兩個具名範圍 "Test" 和 "Sample" 的交集,您可以使用下列範例:
Application.Intersect(Range("Test"), Range("Sample")).Select
請注意,這兩個範圍都必須在相同的工作表中,此範例才能正常運作。 



本文中的範例 17-21 會參照下列範例資料集。 每一個範例都會陳述在範例資料中所選取的儲存格範圍。
   A1: Name    B1: Sales    C1: Quantity
   A2: a       B2: $10      C2: 5
   A3: b       B3:          C3: 10
   A4: c       B4: $10      C4: 5
   A5:         B5:          C5:
   A6: Total   B6: $20      C6: 20
 

17: 如何選取連續資料欄的最後一個儲存格

若要選取連續欄中的最後一個儲存格,請使用下列範例:
ActiveSheet.Range("a1").End(xlDown).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A4。


18: 如何選取連續資料欄下方的空白儲存格

若要選取連續儲存格範圍下面的儲存格,請使用下列範例:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A5。


19: 如何在欄中選取連續儲存格的整個範圍

若要在欄中選取連續儲存格範圍,請使用下列其中一個範例:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   - 或 -
 
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1 到 A4。 

20: 如何在欄中選取非連續儲存格的整個範圍

若要選取非連續的儲存格範圍,請使用下列其中一個範例:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select
   - 或 -
 
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
   End(xlUp).Address).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1 到 A6。 

21: 如何選取矩形儲存格範圍

若要選取某儲存格四周的矩形儲存格範圍,請使用 CurrentRegion 方法。 透過 CurrentRegion 方法選取的範圍,是以任何組合的空白列與空白欄為邊界的區域。 下列範例說明如何使用 CurrentRegion 方法:
ActiveSheet.Range("a1").CurrentRegion.Select
這個程式碼會選取儲存格 A1 到 C4。 下面列出選取相同儲存格範圍的其他範例:
ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   - 或 -
 
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
在某些情況下,您可能需要選取儲存格 A1 到 C6。 在此範例中,CurrentRegion 方法沒有作用,因為第 5 列是空白行。 下列範例會選取所有儲存格:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    - 或 -
 
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

22: 如何選取不同長度的多個非連續欄

若要選取不同長度的多個非連續欄,請使用下列範例資料表和巨集範例:
   A1: 1  B1: 1  C1: 1  D1: 1
   A2: 2  B2: 2  C2: 2  D2: 2
   A3: 3  B3: 3  C3: 3  D3: 3
   A4:    B4: 4  C4: 4  D4: 4
   A5:    B5: 5  C5: 5  D5:
   A6:    B6:    C6: 6  D6:
 
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1:A3 和 C1:C6。

範例的注意事項

  • 通常可以省略 ActiveSheet 屬性,因為如果未命名特定工作表,則會隱含該屬性。 例如,與其使用
    ActiveSheet.Range("D5").Select
    您可以使用:
    Range("D5").Select
  • 通常也可以省略 ActiveWorkbook 屬性。 除非已命名特定活頁簿,否則會隱含使用中的活頁簿。
  • 使用 Application.Goto 方法時,當指定的範圍是在另一個 (不是使用中) 工作表的情況下,如果要在 Range 方法內使用兩個 Cells 方法,則每次都必須包括 Sheets 物件。 例如:
    Application.Goto Sheets("Sheet1").Range( _
          Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
          Sheets("Sheet1").Cells(4, 5)))
  • 針對引號中的任何項目而言 (例如,具名範圍 "Test"),您也可以使用其值是文字字串的變數。 例如,與其使用
    ActiveWorkbook.Sheets("Sheet1").Activate
    您可以使用
    ActiveWorkbook.Sheets(myVar).Activate
    其中 myVar 的值是 "Sheet1"。

2018年4月26日 星期四

win10 開啟 SMB v1


win10預設smb1是關閉的 錯誤訊息如下

因為檔案共享不安全,所以你不能連線到檔案共享。 共享需要過時的 SMB1 協議,而此協議是不安全的,可能會使你的系統遭受攻擊。你的系統需要 SMB2 或更高版本。

如果需要使用,需要使用管理員開啟 Powershell 輸入下面程式碼

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol

輸入之後需要重新啟動,如果還是無法使用,請輸入下面程式碼 

Get-WindowsFeature FS-SMB1



參考連結:https://support.microsoft.com/en-us/help/2696547/how-to-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and-windows-server


2018年3月9日 星期五

探索Facebook 隱藏的秘密: 使用Graph API





R語言

使用 R 語言建立自己的演算法交易事業

https://www.slideshare.net/tw_dsconf/r-71023024




搭配部位控管,使用R語言六個步驟輕鬆上手
https://m.moneydj.com/f1a.aspx?a=3c3bfe06-0843-4613-9617-0a485065a551&c=LIFENEWS

最近給了幾場實做的課程,原本是為了教學R語言與quantmod套件,沒想到隨意開發的結果,這績效竟然也還能看,似乎真的可以拿來上線操作。於是我決定把他寫下來分享,但我也沒實際玩過,所以後過自負。畢竟有些我使用了很有";;致命吸引力";;的馬丁。在風險沒控制好的前提下,這絕對不是一個好的做法!!
 ;;
R語言的好處就是免費,搭配quantmod套件,不用購買行情資料。你只需照著打,複製貼上,三分鐘就做開始玩策略回測。
第一步:下載安裝R語言。可參考第一次使用R語言做回測就上手
當然,對R語言不熟悉的朋友可參考R語言翻轉教室,全部完成保證實力強強滾。
 ;;
第二步:安裝quantmod套件,兩行指令如下:(輸入後按ctrl+a 全選,ctrl+r 執行就對了)
install.packages(";;quantmod";;)
library(qantmod)
 ;;
第三步:下載雅虎股市日K資料
STK=get(getSymbols(";;2330.tw";;))  ##下載台積電歷史日K資料
STK=as.matrix(to.weekly(STK))  ##將日K資料轉為週K資料
chartSeries(STK)  ##畫出台積電歷史周K
 ;;
第四步:設定參數與損益向量
profit=setNames(numeric(length(rownames(STK))), rownames(STK))
##設定profit向量紀錄每周損益
 ;;
lastC=STK[1,4]  ##先記錄第一週的收盤價
 ;;
資料下載ready後,便可開始做回測。我們進場依據為為每周第一天,開低買進台積電一張,週五收盤結束部位。因此實際的行情回測需從第二週開始,第一週只能記錄收盤價:
 ;;
for (m in rownames(STK)[-1]) {  ##開始以每週為單位跑迴圈
 ;;
fee=ceiling(STK[m,1]*1000*(0.001425*2*0.5+0.003))  
 ;;##設定手續費與稅(假設手續費打5折)
 ;;
if(STK[m,1]<;;=lastC){profit[m]=(STK[m,4]-STK[m,1])*1000-fee}  ##開低買進的損益
 ;;
lastC=STK[m,4]  ##紀錄本周收盤價,做為下週判斷開高開低的依據
}
 ;;
第五步:檢查策略程式碼的回測結果是否正確?
head(cbind(STK,profit),20)
## 可觀察前20筆的績效,是否確實執行策略
 ;;
第六步: 畫出績效曲線圖
plot(cumsum(profit),type=";;l";;,col=";;red";;,lwd=2)
x

由於雅虎股市下載的資料從2007-01-05到現在,可以發現這將近10年的績效沒有很好,扣掉手續費後賺賺賠賠。別灰心,我們先使出大絕招: 馬丁格爾。(註:這是風險很高的做法,哥有練過,只是為了示範教學別亂用。)

使用馬丁格爾:上次輸,這次加倍壓;上次贏,這次壓1張。

績效瞬間變的還不差,這十年來來賺了將近30萬,最大壓的張數為64張,也就是連輸6次。

當然,馬丁的風險絕對很大,過去成功更不代表未來,我們當然不可能實際上線這樣做。來看保險一點的類馬丁。

等差類馬丁:上次輸,這次多壓1張;上次贏,這次壓1張。


雖然等差類馬丁賺得更少,但似乎更穩定了。這十年來賺了將近20萬,但最大張數只壓了7張。這樣的風險一般民眾應該還可接受。

當然,上面還是過於激進的做法。我們用一個較為保守的方法:上次輸,這次壓2張;上次贏,這次壓1張。
 ;;
 ;;
 ;;
左圖是原始策略,右圖是資金控管後的損益。總獲利達到NT 121,735,最大回檔為NT 34,289。且最大張數只有2張。當然,我們可以把上面的策略弄得更完美,舉例來說,只有上次輸,這次才會壓1張。
 ;;

很明顯的,綠色的回檔被有效控制住,總績效雖然只有 NT 108,757,但回檔只有NT 10,636。這個策略,再搭配部分分數資金控管法,我想就是一個可以上線的策略了。週一買,週五賣,中間過程請專心上班不用盯盤,還蠻適合上班族的朋友的。

另外申明,已上皆為教學內容,如果你覺得合理可上場廝殺,後果就要自行負責唷。當然你也可以測其他股票,其他策略,但最終還是那句話,交易的資金控管還是最重要的!

上場前請先規劃好想清楚,再來就是徹底執行瞜!! 祝大家操作順利!!
 ;;


R_Repository

https://github.com/kaiyu33/R_Repository

第一次使用R語言做回測:六分鐘,就上手!




107年底Kotlin將取代Java成為Android平台上最受歡迎的語言

https://www.ithome.com.tw/news/117493

行動程式開發平台Realm去年第四季針對行動開發人員所使用的語言進行研究,並於上周發表研究成果,顯示目前Android平台上最受歡迎的行動開發語言為Java,但Kotlin可望於明年底超越Java。
Realm指出,Kotlin於Android平台上的發展路線類似iOS上的Swift。蘋果在2014年6月發表了可用來撰寫支援macOS、iOS、watchOS、tvOS及Linux等平台的Swift語言,花了14個月便取代Objective-C成為iOS平台上最受歡迎的語言。
而Kotlin則是在今年5月被Google納入Android Studio,於Android平台上提供Kotlin的一級支援。有別於Swift是由蘋果自行開發,Kotlin則是源自俄國JetBrains開發團隊的開源專案,它是一個靜態程式語言,並能與Java程式碼互動,允許開發人員於既有的專案中增加Kotlin程式碼。
Realm表示,在被納入Android Studio之前,Kotlin就是一個頗受歡迎的語言,現在它更將改變整個Android生態體系,估計到明年12月採用Kotlin開發Android程式的比例就會超過Java。
Realm認為,Android平台上的Java將日益枯萎,不只是因為有愈來愈多的Kotlin開發人員,還因為有許多開發人員正把程式從Java改為Kotlin,在今年5月之前以Java所建置的Android程式中,現在已有20%改採Kotlin,那些缺乏Kotlin技能的開發人員很快就會被視為食古不化的恐龍。

Kotlin Tutorial(1)Hello! Kotlin!



另一種JVM程式語言

如果你是一個Android或Java技術開發人員,Groovy、Scala、JRuby或Jython這些JVM Language,或許曾經聽過、看過,甚至已經研究過,不過你可能最後還是回到Java程式語言的懷抱。
Java程式設計語言已經二十幾歲了,如果有人問我「Java是不是一種「好」程式語言?」,我都會這麼回答「只要是可以幫我付帳單和貸款的,都是一種「好」技術」,算是巧妙的迴避問題。因為如果叫我想五個對於Java程式設計語言的形容詞,其中會有三個是比較負面的。如果針對具備三年以上Java程式設計師進行問卷調查,同樣請大家想五個形容詞,不知道會有什麼樣的結果。
Kotlin是一個比較新的JVM程式語言,它是在2011年7月由JetBrains發表的專案,JetBrains是開發工具IntelliJ IDEA的開發商,Android Studio就是以IntelliJ IDEA為基礎的Android官方開發工具。Kotlin v1.0在2016年2月發表,是第一個由JetBrains發佈的Kotlin正式版本。
對我來說,Kotlin跟其它JVM程式語言最大的差異,倒不是架構或語法,而是2017年5月的Google開發人員大會,發佈Android支援Kotlin為官方的程式設計語言。從Android Studio 3開始,開發人員可以直接使用Kotlin開發Android App。

Kotlin FAQ

已經熟悉Java程式設計語言

  • 我為什麼要從Java轉換成Kotlin?
    這個問題的另外一面,可能是「我花了幾年的時間才完全熟悉Java,現在又要我學另一種程式語言,你最好是給我一個非常好、而且很明確的道理」。雖然這是一個很嚴肅的問題,不過我只能提供自己的幾個想法給你參考:
    • 不論是以開發人員或講師的角色來說,Java技術的確是不算簡單的
    • 那Kotlin比Java簡單嗎?對我來說,是的
    • 同樣功能的程式碼,Kotlin比Java的程式碼清爽多了(官方說最多可以減量40%)
    • Kotlin同樣是在JVM運作,Java在這方面的特性Kotlin也有
  • Kotlin可以完全取代Java?
    • 開發Android App:是的
    • 開發Java應用程式,例如WEB、JavaFX:可以(沒有「是的」那麼肯定)
    • Kotlin官方網站說未來還會支援嵌入式、MacOS、iOS
  • Kotlin可以和Java一起運作?
    是的。Kotlin可以使用Java程式碼,Java也可以使用Kotlin程式碼。
  • Kotlin和Java的語法很不一樣嗎?
    是的。不一樣的程度可以想像成長得有點像的父子或母女。(這其實是廢話,這樣的形容幾乎可以套用在所有不同的程式語言)
  • Kotlin也有Java 8的Lambda(functional programming)?
    有。
  • Kotlin採用哪一種授權方式?
    Apache Software License, Version 2.0
  • 需要花費多少時間學習Kotlin?
    如果選擇一個好的教材,可以很容易把你在Java累積的技能快速轉換到Kotlin。(廣告:例如這個系列專欄就是好的教材,未來可能會出版電子書或實體書)

還不認識Java程式設計語言

  • 我想要學習開發Android App,那我應該要先學Java還是Kotlin?
    開發Android App使用Java或Kotlin都可以,都是官方正式支援的程式設計語言。你可以從幾個想法去選擇:
    • 想要比較快速進入開發Android App的階段:選擇Kotlin
    • 以開發Android App為主要的學習目的:選擇Kotlin
    • 不知道該怎麼選擇,也沒有任何想法:選擇Kotlin
  • Java跟Kotlin哪一個比較容易學習?
    我覺得Kotlin比Java容易學習。我的說法應該算是有說服力的,畢竟我已經當了十年以上的講師,而且以Java與Android課程為主。
  • 聽說學會Java以後可以寫很多種程式,Kotlin也可以嗎?
    Java程式設計語言可以開發網頁、嵌入式、桌面與Android應用程式,Kotlin也可以。
  • Kotlin程式設計語言有哪些書和學習資源?
    目前只有少數幾本英文書,網路的學習資源以Kotlin官方網站為主,也是英文。(廣告:這個系列專欄是學習Kotlin不錯的資源,未來可能會出版電子書或實體書)
  • 目前Android App的範例與資源都是用Java寫的,Kotlin也可以使用嗎?
    在Android App專案裡面,Kotlin和Java程式碼可以一起使用,也可以互相使用對方寫的程式碼。

建立Kotlin開發環境

開發Kotlin應用程式需要安裝Java SE JDK與開發工具,Kotlin開發環境有下面幾種選擇:
  • JetBrains的IntelliJ IDEA
  • Eclipse與Kotlin Plugin
  • 在終端機編譯與執行
  • 使用建置工具,包含常見的Ant、Maven與Gradle
這裡使用的開發工具是IntelliJ IDEA Community,其它方式請參考Kotlin官方網站的說明。

下載與安裝JDK

Kotlin需要Java SE JDK 1.6或更新的版本,如果你的電腦還沒有安裝Java SE JDK,依照下列的步驟下載與安裝,或是參考後面的示範影片:
  1. 開啟瀏覽器,在網址列輸入這個網址http://www.oracle.com/
  2. 將滑鼠游標移到「Downloads」,選擇左側的「Java Developers」。
  3. 選擇「JDK」的「DOWNLOAD」的下載圖示。
  4. 進入下載JDK的網頁以後,選擇「Accept License Agreement」,依照你的作業系統版本選擇下載的連結,如果是32位元就選擇「Windows x86」,64位元的話選擇「Windows x64」。
  5. 儲存下載的檔案,下載完成後執行這個檔案開始安裝的步驟,建議使用預設的安裝路徑,在後續的安裝過程中全部選擇「Next >」。
  6. 在完成安裝的視窗選擇「Close」。
詳細的操作步驟可以參考下面的示範影片:

下載與安裝IntelliJ IDEA Community

JetBrains提供免費開放版本的IntelliJ IDEA Community,它完整支援Kotlin程式設計語言。依照下面的步驟執行下載與安裝的工作:
  1. 開啟瀏覽器,在網址列輸入這個網址https://www.jetbrains.com/idea/download/
  2. 選擇「Community」的「DOWNLOAD」,儲存與執行下載的安裝程式:
    kt_01_01
  3. 啟動安裝程式後,在歡迎畫面選擇「Next>」。
  4. 在選擇安裝位置(Choose Install Location)畫面選擇「Next>」。
  5. 在安裝選項(Installation Options)畫面,依照電腦的作業系統,勾選「32-bit launcher」或「64-bit launcher」, 最後選擇「Next>」:
    kt_01_02
  6. 在選擇開始功能表(Choose Start Menu Folder)畫面選擇「Install」開始安裝。
  7. 在完成安裝的畫面,勾選「Run IntelliJ IDEA Community Edition」後選擇「Finish」:
    kt_01_03
  8. 安裝程式自動啟動IntelliJ IDEA Community,第一次啟動後在「Complete Installation」對話框選擇「Do not import settings」,最後選擇「OK」:
    kt_01_04
  9. 在「Customize IntelliJ IDEA」畫面,選擇開發工具的樣式為「IntelliJ」或「Darcula」,最後選擇「Skil All and Set Defaults」:
    kt_01_05
  10. 出現IntelliJ IDEA的主畫面,完成安裝與初始設定:
    kt_01_06

Hello World!

  1. 在IntelliJ IDEA的主畫面選擇「Create New Project」:
    kt_01_07
  2. 在「New Project」視窗選擇「Java」後,選擇右上角的「New…」:
    kt_01_08
  3. 在「Select Home Directory for JDK」視窗,選擇JDK的安裝資料夾後選擇「OK」:
    kt_01_09
  4. 回到「New Project」視窗,Project SDK已經設定為上一步驟的選擇:
    kt_01_10
  5. 在「New Project」視窗的「Additional Libraries and Frameworks」勾選「Kotlin(Java)」後選擇「Next」:
    kt_01_11
  6. 在「Project name」輸入專案名稱,例如「HelloKotlin」,最後選擇「Finish」。
  7. 在出現「Tip of the Day」對話框,取消「Show Tips on Startup」勾選,再選擇「Close」,以後啟動就不會再出現這個對話框。
  8. 第一次建立Kotlin專案會花費一些時間執行初始化的工作。
  9. 完成初始化工作後,在專案的「src」目錄按滑鼠右鍵,選擇「New -> Kotlin File/Class」:
    kt_01_12
  10. 在「New Kotlin file/class」對話框的「Name:」輸入程式碼檔案名稱,例如「HelloWorld」,最後選擇「OK」。
  11. 在新建立的程式碼檔案輸入下面的內容:
    1
    2
    3
    fun main(args: Array) {
        println("Hello World!")
    }
  12. 用滑鼠游標選擇Kotlin圖示後選擇「Run 'HelloWorld.kt'」,也可以使用快速鍵「Ctrl+Shift+F10」:
    kt_01_13
  13. 執行程式以後在畫面下方顯示「Hello World!」:
    kt_01_14

第一個Kotlin程式碼FAQ

  • 不需要宣告類別?
    是的。
  • 「fun」好像是用來宣告main方法?
    是的。Kotlin程式的進入點(Java的main方法),是一個名稱為「main」,參數為「Array、字串陣列」的函式。
  • println為什麼沒有System.out?
    其實println是Kotlin定義在Console.kt裡面的函式。
  • 敘述的最後面不需要分號(;)?
    是的。你也可以加上分號,不過那是多餘的。如果需要在一行執行多個敘述,可以使用分號隔開。例如:
    1
    2
    3
    fun main(args: Array) {
        println("One"); println("Two")
    }

下一步

想要趕快開始寫Kotlin程式?在安裝好開發環境以後,接下來的「10分鐘認識Kotlin」,使用精心挑選的主題,讓你快速認識Kotlin的基本精神。
相關的檔案都可以在GitHub瀏覽與下載。