山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2014年12月29日

Swift Programming - For-In loop statement (迴圈敘述)


Swift 同Objective-C提供了 for, while 及 do-while 迴圈指令 ( loop control construct ), 除此之外, Swift 新增了 for-in loop control; 針對 array, dictionary 及 string 的應用, for-in 有他好用之處.

以下是他的語法定義:


以下我們就用playground來試用 for-in control statement


以下為array 的應用


以下為string 的應用


資料參考來自:
Apple, The Swift Programming Language.

2014年12月19日

Android Studio 1.0 千呼萬喚終於出來了!


Google 在 2013 Google I/O 大會釋放未來會有 Android 專屬的IDE ,終於
2014 年底在 Android 官方網站已經開放下載 Android Studio 1.0



它具有如下幾點特色:
1. Intelligent code editor
2. Code templates and GitHub integration
3. Multi-screen app development
4. Virtual devices for all sharps and sizes
5. Android builds evolved, with Gradle

詳細的資訊請參考 Android Developer 官網

資料來源:Android Developer 官網

2014年12月16日

『Gartner』Sales of Smartphone in Q3 2014


前五大智慧型手機廠商銷售統計, Samsung 還是第一, 但市佔率已經從32.1%掉到24.4%, 小米已經排名第四了, 大陸廠牌就佔了3位.




















智慧型手機作業系統銷售統計, Android佔了83.1% 和 iOS就吃掉95%的市佔率, Windows只有3%.

















全球手機銷售前十大廠商, 在台灣還賣得不錯的HTC 及 Sony竟然排不上


























資料來源:Gartner

2014年12月4日

Swift Programming - Tuples type (多元組 / 元組)


除了一般我們熟悉的資料型態外, Swift 加入了兩項Objective-C沒有的資料型態
1. Optional (選項型態)
2. Tuples (中文翻譯為 "多元組" or  "元組")

在iOS Computer Language 的世界,Tuples或許是新成員, 但是在Computer Language 的世界早已經可以看到它的足跡, 如C#, Python.

以下是它的語法定義:

從語法的定義可以知道它的宣告方式是由零到多種資料型態用分號分開再由小括號包覆的資料型態.

那Tuples要用在哪?就如 "Swift Programming Language" 文中所說的
Tuples are particularly useful as the return values of functions; Tuples are useful for temporary groups of related values. They are not suited to creation of complex data structures.

也就說,當你想回傳的參數不是單一值又不想定義ㄧ個資料結構時就可以使用Tuples.

另外,你也可以為每一個element命名
You can also name the elements of a tuple type and use those names to refer to the values of the individual elements. An element name consists of an identifier followed immediately by a colon (:).

Tuples常被用在錯誤的處理;
我們可以設想這樣的情境,當我們在處理error code的時候,如果只是回傳數字,對於程式設計員是足夠的且很好處理,但是對於終端的維修人員是可讀性低且必須查表才知道機器錯誤的原因,這是很不好的ㄧ種的設計; 相反的, 如果我們可以同時回傳字串的話那就比較符合人性.


資料參考來自:
Apple Inc. The Swift Programming Language.

2014年12月1日

Swift Programming - Optional type (選項型態)


除了一般我們熟悉的資料型態外, Swift 加入了兩項Objective-C沒有的資料型態
1. Optional (選項型態)
2. Tuples

選項型態 (optional type)在 "The Swift Programming Language" 文章中是這樣形容它的,

Optionals handle the absence of a value. Optionals say either “there is a value, and it equals x” or “there is not a value at all”. Optionals are similar to using nil with pointers in Objective-C, but they work for any type, not just classes. Optionals are safer and more more expressive than nil pointers in Objective-C.

所以選項型態 (optional type)可以說成:
某變數或常數
有值且等於某值(there is a value, and it equals x)

無資料(there is not a value at all)

從語法的定義可以知道它的宣告方式就是在型態名稱後加在?
至於加上!, 則是當確定有資料時,解開選項型態時使用


以下我們就利用Playground來體驗選項型態 (optional type)
從上圖可以發現,
1. 在列印時,因為possibleString 是選項型態,在字串前面會Optional關鍵字.
2. 如果你沒有給選項型態的變數或常數初值,Swift為自動設 "nil" .

下圖為!的使用範例

資料參考來自:
Apple, The Swift Programming Language.

2014年11月23日

Learning Cocos2D - Create Cocos2D API Document Locally (製作 Cocos2D API Document)


Cocos2D 提供的 API document 為線上模式, 一旦在沒有網路的環境下是無法做查詢的,想在自己電腦也安裝一份API文件檔要如何做?

從Cocos2D原始檔案可以發現Cocos2D是用Doxygen製作 API Document



所以我們依樣畫葫蘆,用Doxygen來製作Cocos2D API Document

Step1: Download Doxygen

Step2: 安裝 Doxygen (因為Doxygen不是AppStore 或已識別的開發者應用程式,所以必須至系統設定暫時打開安全設定)

Step3: 打開 Doxygen 做如下設定


Step4: 設定完成後, 按下 "Run" 來產生文件


Step5: 執行"Run"完後按下上圖中的 "Show HTML output" 就可看到我們的成果


Step6: 大功告成!

2014年11月11日

『轉載好文及筆記』軟體天才 Mike Lee 告訴你如何開發與管理你的應用軟體


Mike Lee曾參與了一些軟件行業頂級應用(Delicious Library , Tap Tap Revenge)及 蘋果應用商店的開發,對於客戶需要什麼,Lee有一套自己的觀點,在St. Louis Strange Loop 2011大會上,Lee花了近一個小時的時間向人們介紹了產品開發與管理及為什麼說把客戶想像成為懶惰,愚蠢,自私,沒耐心的人如此重要。

當天,他穿著墨西哥流浪歌手風格的服裝來參加大會


毫無懸念,Lee很快就吸引了觀眾的目光,但是他並沒有立即解釋他為什麼會一身個性的裝扮出席這樣的會議,相反,他開場就談這個應用開發管理的黃金規則:

  1. 技術永遠居於首位
  2. 你不能強迫人們,你必須誘惑他們
  3. 一定要有創新

Lee說,這些規則對所有的產品都是適用,但是他的強項在於應用管理,那麼什麼樣的應用開發方式才是最好的呢?

當用戶是愚昧而無知

Lee說,在現實生活中,最好把人都往好的方面想。但是在做產品設計(Engineering)時,最好的方法就是視所有人都懶惰,愚蠢,沒耐心,自私。因為比起學習如何使用一個軟件,用戶有其他更有趣的事情可做。

Lee認為產品只要進步一點就好,無需一步登天
最好的例子就是蘋果的iPod播放器,在問世之初,許多人認為這是失敗之作,沒有一種合適的方式將音樂放到裡邊去,沒有音頻調節器。但是它成功了並直接帶來了iPad的問世,但他們的初衷並不是要做出一台iPad。Lee說:“如果蘋果剛開始就像做出一台iPad2來,那麼他們想破了腦袋也想不出來來如何去做”

許多想法是糟糕的(Terrible)

根據Lee的觀點,想法自身並沒什麼問題,但許多的想法是糟糕的。許多人都沉醉於自己的構思中,在此真正有必要做的是:層層剝離你的想法,詢問自己它是如何解決問題,想想為什麼這些想法會比其他想法好

做一個視頻來做宣傳

Lee建議你在做出一個產品之前先為產品做一個商業廣告或者視頻,介紹他,告訴人們他們為什麼要買你的產品,目的就是要把產品推銷出去,告訴你潛在的僱員也好,投資者也好,顧客也好,告訴他們你產品的的優勢,一旦這個問題解決了,剩下的就好辦了。Lee的觀點是:不應讓市場來決定公司走向,而是市場材料應該早做出來,來引導市場走向。

如何利用好開發平台

Lee說,許多開發商在用什麼平台來瞄准你的目標客戶時非常糾結,其實這很簡單,選擇你喜歡的,並堅持用它。或許Android比iOS的用戶多,但是如果你討厭Android, 喜歡iOS,那麼你在Android上開發不出什麼好的應用程序,反之亦然,許多平台都有足夠的用戶使一個軟件成功,重要的是要鎖定一個平台,三心二意在這裡不適用。當你征服了一個平台,用戶要求你使用另一個平台時,那麼,是時候了利用新的平台了。但是千萬不要一個團隊負責幾個平台,而是由“n+1"個團隊負責n個平台,多出來的一個團隊做什麼呢?負責商務的,這樣其他的團隊就可以專注於他們喜歡的平台了

發布產品之前要進行測評

許多開發商都擔心技術欠債,其實還有比這更糟糕的,什麼呢?那就是由於糟糕的產品帶來財務欠債以及為了修補這種糟糕的第一印象而不斷修復應用改進產品而付出更大的代價而帶來的社會欠債。Lee說,如果你只有一次樹立產品形象的機會,你要做什麼?測評,不管是公司還是個人在發布產品以前都必須進行測評,想像你的代碼是你的對手開發的,對它嚴格一點,挑剔一點,看看是否還有改進的地方,如果真的沒法再改,那麼你就是好樣的。千萬不要售出一些毫無特色且質量低下的產品。

如何吸引眼球

當你的產品好了以後,如何去宣傳?此時Lee才談起了他的著裝問題,為什麼在滿是開發者的會議室裡他要打扮得像個墨西哥流浪歌手一樣?答案就是引起大家的注意,他需要一段時間吸引觀眾坐在位置上並認真聽他說話。你的產品也需要那麼一段時間,以Delicious Library為例,這不是第一個管理私人媒體庫的應用程序,但是就有那麼一段時間,它贏得了用戶的喜愛,這段時間裡,人們發現他們能用它的iSight攝像頭掃描圖片,而非輸入所有的數據。

產品保護

在講述了產品開發以後,Lee也花了一小段時間講述瞭如何防範用戶,防範其他開發商,在談到這些問題時,他總是出言不遜,但這已不是什麼新鮮事了。但讓人覺得新鮮是Operation Anthill Legal,這是Appsterdam的一個分支,用來保護和維護應用研發者及他們的business不被一些勒索者訴訟的,Lee的整個演講生動有趣,非常受歡迎,尤其是專利言論贏得了全場最強烈的反響。

2014年10月25日

Swift Programming - semicolons ( ; ,分號 )


分號(;)

不像 Objective-C, Swift 不需要在每段程式碼 (statement) 後加上分號,
但是如果你要在一行裡寫兩個 statements, 那麼你還是必需用分號來分隔兩個statement
例如:







資料參考自: Apple Inc. 「The Swift Programming Language。」 iBooks.

Swift Programming - println and print


println 及 print 是全域函數, 兩者的的差異則是println會在列印後加入跳行
以下為兩者差異的實例:























資料參考自:
Apple Inc. "The Swift Programming Language"
Apple Inc. "Swift Standard Library Reference"  

Swift Programming - Constant / Variable (常數 / 變數)


Swift 使用 var 關鍵字來宣告變數, 使用 let 關鍵字來設定常數

以下是用playground 試用Swift語言的程式碼


Swift並不需要你明確的指定資料形態,complier 會依照你給他的數值來決定他的資料型態
例如:






當然,你也可以在變數或常數後加上分號來明確的指定其資料型態,
例如:







另外數值的指定並不隱含資料形態的轉換,否則complie time就出錯了

例如:







你必須明確指定
例如:





完整的測試碼


















資料摘錄自: Apple Inc. 「The Swift Programming Language。」 iBooks.

2014年10月23日

Swift Programming - Preprocessor / Header File (前置處理器 / 標頭檔)


以下是C++語言的Hello, World! 的範例程式

// 下面這行是標頭檔
#include <iostream.h>

// 下面是主程式
void main()
{
    count <<"Hello, World!\n";
}

我想上面這段程式, 這對學過C/C++語言的人應該熟悉不過了,
對於Swift語言, 又要如何撰寫來完成同樣的工作呢?

println("Hello, World!")

沒錯, 就這麼ㄧ行 !
不要懷疑,就ㄧ行code就可以完成C++同樣的工作.

在Swift語言,
1. 你不需要特別import 像 input, output 及 string處理函數的 library;所以不用像C++的Hello, World !程式去include <iostream.h>
2. 你不需要main 函數當作程式的開始位置
3. 你也不需要在每行程式碼的結尾加上分號

以下我們就來實作,在螢幕在顯示"Hello World"

Step1: 開啟Xcode,新增一個Project,然後選擇OS X Command Line Tool

Step2: 請選 "Swift" language, 其他隨你填

Step3: 最終Xcode會幫你產生如下的樣板 (template)

Step4: 請將 import Foundation 這行刪除或註解掉, 因為我們目前只用到簡單的Output函數.

Step5: 按下左上方執行按鈕後,就可在右下角Output視窗看到輸出結果

資料摘錄自: Apple Inc. 「The Swift Programming Language。」 iBooks.

2014年9月25日

[Mac] 好用的檔案加密工具 - 磁蝶工具程式


最近在找如何將檔案隱藏或加密的方法,發現Mac 的磁蝶工具程式提供了一個好用的檔案加密功能!

Step1: 啟動 "應用程式 -> 工具程式 -> 磁碟工具程式.app"


Step2: 選擇 "新增映像檔" 來製作空白磁碟映像檔(DMG檔案)


Step3: 輸入映像檔檔名(如Test.dmg), 檔案大小(如100 MB), 記得選擇 "加密保護",否則這映像檔就沒有加密保護了,這裡我選擇128 bit AES 加密保護,最後在按下"製作"來產生映像檔


Step4: 按下製作就可以在你指定得資料夾看到系統為你產生的磁碟映像檔,另外桌面也會有個外接的磁碟映像檔圖示產生; 到這裡你就完成了一個具有檔案加密功能的磁碟映像檔.



Step5: 接下來就告訴你如何使用它;首先先退出這外接的磁碟映像檔回復到未打開這加密功能的磁碟映像檔,然後再Finder打開"Test.dmg",這時Finder就會跳出輸入密碼的畫面, 也就是只有密碼的人才可以打開(這正是我們要的)

PS: 這裡有兩點注意事項
1. 千萬不要勾選 " 在我的鑰匙圈中記錄密碼",否則密碼一旦被系統記錄起來,跳出輸入密碼的畫面就不會再出現了,因為系統每次都會自動幫你填入,就失去加密的功能了
2. 當你輸入密碼打開這加密功能的磁碟映像檔後,下次你再要開啟這檔案, Finder是不會再要求你輸入密碼的除非你有做 "退出磁碟映像檔"這動作




Step6: 打開這磁碟映像檔後,你會可以將你要保護的帳密檔案拉到這映像檔來做密碼保護,記得拉完檔案後要做 "退出磁碟映像檔" 這動作ㄡ!

2014年9月22日

沒誠意的 Wacom 手寫板


最近買了Wacom 手寫板來做 Icon 的開發,也下載了Windows 的附贈軟體,很高興地使用中...
同時MacBook Pro 的筆電也在近日收到,想說去下載Mac OS 的版本來試試,結果Wacom不給下載, 無法更換成Mac OS版本, 我只能在我的舊筆電畫了, 真是一肚子怨氣...

2014年9月16日

[Mac] 更改檔案關聯程式


最近發覺 MAC 的 "預覽程式" 在檢視 PDF 的檔案時, 反應速度明顯比Reader 還快!
當時在安裝 Reader 時已經同意Reader 去更改PDF 的檔案關聯,如今要改回預覽程式要如何做?

Step1: 至Finder 選擇你要更改的檔案關聯,我以 "PDF" 為例;然後按右鍵,就有如下選單

Step2: 請選擇 "簡介" , 就會看到如下選單, 紅色框框顯示 PDF 的檢視程式為 Reader


Step3:  在 "下拉式選單" 選擇你要的檢視程式就完成檔案關聯的更改







2014年9月9日

Swift Programming - A Swift Tour in Playground


Swift Programming 有一種互動式的開發環境叫做Playground;
Playground 可以在還沒 Compile & RUN 的狀況下, 提供一個快速反應 coding 結果的編輯模式!

Step1: Open Xcode 6 then Select "File  -> New -> Playground"


Step2: Input file name of playground then press "Next", the playground file be created.


Step3: Xcode will create below template file for you, as you see, the right side shows the result of your code.



By the way, you can also create a playground file in your existing project, by following steps
StepA: In project navigator, press right button then select "New File"


StepB: Please select "Playground" as template


StepC: Input file name then press "Create", the playground file will be created in project navigator



2014年9月4日

Swift Programming – File difference between Objective-C and Swift


Continue Swift Programming- Hello Swift , we create a "Hello Objective-C" Application to compare the difference between Swift and Objective-C

Below is Objective-C Application file structure

Below is Swift Application file structure



The differences have
1. No header file (*.h)
2. the C file (*.m) has changed to Swift file (*.swift)


Swift Programming - Hello Swift


Step1: Install Xcode 6 beta from Apple Developer site
             Xcode 6 Beta version

Step2: Create new project with "Swift" language


   Select Single View Application 



   Select "Swift" language


Step3: Add a label - "Hello Swift" into storyboard


Step4: Build and Run App on Simulator


All steps are almost same as Objective-C development flow except step3, select "Swift" language.

熱門文章