今天算一算也來到第十天了,
前面講了 8 天的語法,其實會有些枯燥
不過有些語法又很有趣
我不懂 Objective-C,
如果想從 Objectiv-C 轉換到 Swift 的話,最好查查一些比較的文章
最好的文件就是官方文件了
以 UILabel 為例
官方網站會列出兩種不同寫法:
// SWIFT var text: String? // OBJECTIVE-C @property(nonatomic, copy) NSString *text 如果要從 Swift 基本概念開始,當然是首推官方的 The Swift Programming Language
是英文苦手的話,強國人有 翻譯文件
這群人非常厲害,發表後沒幾天就翻譯完成了
不過因為技術用語還是以中國為主,因此建議英文優先,或是對照著看
前面幾天都基本介紹前半部而已,屬於一般學習程式語言的基本練習而已
後半部是更詳細的部分,有空的話還是可以多看看~
另外,官方還出了一本 Using Swift with Cocoa ad Objective-C
就是在介紹如何使用 Swift 加上 Cocoa framework 開發 App
不過書的內容不多,算入門級,有興趣也可看看這本~
接下來會開始用 Swift 寫簡單的界面
由於筆者從沒寫過 iOS app,因此也是會用大約十天的時間來簡單練習一些常用的 Cocoa Touch framework 的元件
順帶一提前面沒講到的,Objective-C 有個東西叫作 Catagory,在 Swift 裏是 extension
NVM 與 NPM 使用 NVM - Node.js Version Manager 安裝 如果是 Ubuntu 的話必須先要有 build-essential 和 libssl-dev 套件
不過這個我們之前就裝過了,所以直接安裝 NVM 吧~
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.17.2/install.sh | bash $ source ~/.bashrc 使用 NVM 安裝 node.js 先前我們有使用 Ubuntu 本身的 apt-get 安裝 Node.js
不過那是被安裝到 /usr/bin/node
有時候要安裝套件需要 sudo 提供管理者權限
非常麻煩,因此我們使用 NVM 來安裝另一個 Node.js
這個 Node.js 的執行檔就任我們使用,不需要提供管理者權限了
$ nvm install 0.10 nvm 就會安裝 0.10 版本,安裝完後就要使用它:
$ nvm use 0.10 再來我們把 nvm 的 node.js 設定成預設的 node
Playground - Class, Struct 再來就是要提重點的東西了!
class 和 struct 是用來建構整個程式重要的東西
兩者的差異在於:class 可以繼承其他 class,但是 struct 無法繼承
以下是宣告方式
class SomeClass { //... } struct SomeStruct { //... } 注意,Swift 的 class 和 struct 命名慣例是大寫命名風格 UpperCamelCase
而屬性和方法則是 lowerCamelCase
例如 increaseCount, addTwoInts
舉個例子:
struct Resolution { var width = 0 var height = 0 } class CustomLabel { var resolution = Resolution() var isLabel = true var name: String? } 實體化,就可以改變其中的值了
var someResolution = Resolution() var someLabel = CustomLabel() someResolution.
Node.js - Hello World! 一樣先開虛擬機哦~
並且開啟終端機連進 server 裡面~
以下是 Node.js 官方網站的 web server 程式範例,我稍作小修改:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '0.0.0.0'); console.log('Server running at http://0.0.0.0:1337/'); 我們先在虛擬機的資料夾建立一個子資料夾 ‘HelloWorld’
在 HelloWorld 資料夾裡面建立一個 app.js
內容如上,存檔。
使用終端機進入 server :
$ vagrant ssh $ cd /vagrant/HelloWorld $ node app.js 到瀏覽器輸入 http://192.168.33.10:1337/
(或者是你的 Vagrantfile 裡面設定的 private IP)
即可看到 Hello World 了!
要關掉 Server 也非常簡單,回到下指令的地方,按下 ctrl + c 即可中斷程式
Playground - Enumerations 通常會使用來定義一組相關的值
也是很方便的東西
列舉語法 enum SomeEnumeration { // enumeration definition goes here } 比方說,車子
enum Car { case toyota case benz case BMW } 也可以這樣寫
enum Car { case toyota, benz, BMW } 使用:
var car = Car.benz 和 Switch 的搭配 enum Car { case Toyota, Benz, BMW } var car = Car.Benz switch car { case .Toyota: println("Toyota") case .Benz: println("Benz") case .BMW: println("BMW") } Associated Values 以 Barcode 來舉例子
昨天我們已經把一個全新乾淨的環境架起來了
這時候我們不希望因為日後的操作導致 Server 環境髒掉,又要重灌
因此我們今天就來練習一下如何使用 vagrant 打包環境!
Vagrant 打包 一樣先進入虛擬機資料夾,先確保虛擬機沒有在運作:
$ vagrant status Current machine states: default poweroff (virtualbox) The VM is powered off. To restart the VM, simply run `vagrant up` 如果是 poweroff 的話,就可以進行接下來的動作,如果是其他狀態的話,就先下關機指令囉
$ vagrant package ==> default: Clearing any previously set forwarded ports... ==> default: Exporting VM... ==> default: Compressing package to: /Users/.../ithome/package.box vagrant 就會在虛擬機器資料夾底下建立一個 package.box
這個檔案就是整個伺服器環境的檔案了!
假設今天想要讓團隊成員使用,只要他們都有 VirtualBox + Vagrant 的話,
就可以依循下面的指令步驟將你所做的 box 匯入並使用:
閉包表達式語法:
{ (parameters) -> returnType in statements } 舉個例子:
func multiple(value: Int, multiple: Int -> Int) -> Int { return multiple(value) } multiple(3, { (value) -> Int in value * 3 }) 在 multiple function 中需要傳入一個 function
在這邊我們並沒有另外定義,而是直接使用閉包的方式傳入一個 function
這個閉包就符合了上面的定義
根據上下文判斷型別 (Inferring type from context) 承上一個例子,我們可以寫得更簡潔一點
multiple(3, { value in value * 3 }) 這是因為 Swift 會根據兩邊的定義來判斷型別,因此可以寫得更簡潔一些
參數名稱縮寫, 運算子函式 直接看例子
func biggerThan0(value: Int, isBigger: Int -> Bool) -> Bool { return isBigger(value) } biggerThan0(-1, { $0 > 0 } ) 尾隨閉包 (trailing closures) 通常如果閉包太長的話,可以把閉包接在括號後面:
[Server 番外篇] 建立自己的本機虛擬伺服器 2 - Ubuntu 基本設定與安裝 Node.js, MongoDB 嗨又到了 Server 時間了!
接下來我們都會做一些指令操作,
如果進一步有興趣的可以 Google 鳥哥的私房菜,
完整的 Linux 操作教學,淺顯易懂,想學習操作 linux OS 的話必看!
今天我們要稍稍整理一下昨天剛安裝完的 Ubuntu 作業系統,以及安裝一些我們需要用到的東西
首先我們的第一步就是先開啟終端機,到昨天放 Vagrantfile 的資料夾:
$ cd ~/ithome/ 開啟 Ubuntu
$ vagrant up 順帶一提,有時候開機時可能會卡在一個地方:
default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... 這個就稍微等一下吧~ 如果電腦性能比較差的話可能會卡比較久,不過應該不至於會卡超過 10 分鐘
如果卡超過十分鐘可能要強制中斷,並且尋找解決辦法了~
開機完成後就登入吧!
$ vagrant ssh ... vagrant@vagrant-ubuntu-trusty-64:~$ Ubuntu 套件, 設定時區 今天就要來幫 Ubuntu 安裝一些東西,
Playground - function 來看看 Swift 各種 function 的寫法吧!
Swift 使用 func 當作宣告的保留字
GOLANG 的 fu…. XD
寫 Swift 的 function 會很開心
基本的 func say() { println("Hello!") } 有一個回傳值的 func say() -> String { return "Hello!" } 有多個回傳值的!!! (就是回傳 Tuple) func say() -> (String, Int) { let greeting = "hello" let times = 5 return (greeting, times) } say() 有參數的 func say(g: String) { println(g) } say("Hello") 多個參數
VirtualBox 是一套虛擬軟體,可以方便幫助我們在現有的作業系統上
模擬另一個作業系統 (如 linux, Ubuntu, CentOS…)
在虛擬機器裡面所以的一切變動,都不會影響到現有的作業系統,
非常適合拿來做測試使用
由於現在大部份的 Service 除了架設在 Windows Server 外,最大宗的就是 *nix distribution 了
因此這在這個系列文中,也是一定要教大家如何建立起虛擬測試機器,
來模擬真實 Server 環境中,如何架設自己撰寫的 API Service
VirtualBox 到 VirtualBox 官方網站下載合適的安裝檔案吧!
安裝完成就可以了!
因為我們接下來會使用 Vagrant 這套 commaond line tool 來對 VirtualBox 進行操作
因此只要安裝完 VirtualBox 後就可以不用管他了 XD
Vagrant Vagrant
它可以幫助我們快速的建立一個輕量、可重複使用、並且可以打包起來帶著走的環境
透過編輯一個設定檔,就可以簡單設定該虛擬系統的 *nix 基本設定,如 共享資料夾、網路存取等等,
不需要透過 VirtualBox
通常這套軟體可以應用在團隊開發上:
以網頁開發來說,如果大家的測試環境與版本都不太一樣,例如 apache 或 php 版本不同
有時候會造成團隊溝通的負擔,因此透過 Vagrant 將 server 環境重新建立一套虛擬機器,
並且透過 Vagrant 打包,就可以丟給其他人使用,這樣一來大家的環境都一樣,
就可以避免這個問題,
而且還有一點,Server 的安裝是很累人的,同樣的事情基本上都不會想做第二遍,
因此打包一個乾淨的環境後備份,弄髒了可以隨時快速再把備份拿出來用,非常方便!
安裝: 到 下載頁面 尋找適合自己的下載並且安裝