今天先講在 Server 中如何操作 MongoDB 一樣開啟虛擬機, 我們在先前已經有先安裝過 MongoDB 了,因此,在 Ubuntu Server 中預設是開機啟動的 登入虛擬機吧~ 登入虛擬機後,我們要進入 MongoDB,必須使用 mongo 這個 MongoDB Shell $ mongo MongoDB shell version: 2.6.4 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user > 此時會發現輸入指令的地方變成了 > 表示我們已經在 mongodb 裡面了 為什麼不需要帳號密碼即可進入 MongoDB 呢,因為 MongoDB 預設是不需要做登入的 並且加上預設只能由本機存取,也就是說,外部連入的 IP 是進不了 MongoDB 的 這部分後面會再作說明。 傳統的 Table 在 MongoDB 中,稱之為 Collection

Continue reading

今天就要來建立一個 Hello World swift app 啦 XD 首先就是開 Xcode 然後開專案囉~~ 就看你要存去哪裡啦~ 再來就會進到專案本身: 我們就看右下角有個地方可以找到 Label 這個選項: 把他拉到 Storyboard 的任意位置就可以了~ 然後更改 label 的屬性: 先點一下 label 選取後,看右上角 有個地方可以更改它的顯示文字,我們將它改成 HelloWorld! 改完之後,按左上角的 Run! ,我們也可以選擇後面的 target 看是要跑在 i6 或是 i5 上, 按下 Run 後程式就會 deploy 到模擬器上面了! 這就是第一個 Hello World 啦! 完全不用寫程式哦 XDDDDD 不過還是要稍微了解一下運作原理啦~ 如果剛剛在編輯 storyboard 的時候,有發現那個 View 的左邊有一個奇怪的箭頭指向 View,那個箭頭的意思其實就是程式進入點的意思, storyboard 就是在描述程式的走向,像在說故事一樣,從某一頁按了什麼東西跳到哪一頁 其實我一直都沒有很習慣 storyboard 的拉法,還是比較習慣用程式建立物件,將想要的物件用程式擺(憑空想像XD),但是前面幾個比較屬於練習的小東西都還是會用拉的,比較好懂~ 我們剛剛建立的那一頁 Hello world 基本上就是在左邊的 ViewController 那我們試著使用程式來改變 HelloWorld 這個 label 的值吧! 我們首先使用分割視窗的模式 選擇左邊數來第二個按鈕

Continue reading

Express - Hello World! 今天就要來安裝主角之一的 Express 了! 一樣開啟虛擬機器我應該是可以不用多說了 XD 先確認自己的 node 是不是 NVM 的 node 喲 建立專案 $ cd /vagrant/ $ mkdir API $ cd API/ $ npm init 自己輸入專案的相關內容吧,不知道的就直接按 enter 空白丟給他~ 就會產生 package.json 了! 安裝 Express // 在專案目錄底下 (/vagrant/API/) $ npm install express -save 下 -save 的原因是要將 express 加入 package.json 中 離開虛擬機,其實我們也可以在虛擬機資料夾看到剛剛建立的專案了, 現在開始就可以使用自己喜歡的編輯器來開啟這個專案資料夾,我個人偏好使用 Sublime Text 要執行專案時再回終端機即可 Express Hello World! 在 API 資料夾中建立一個 app.js 內容是: javascript var express = require('express'); var app = express(); app.

Continue reading

[Swift-d10] 延伸閱讀

今天算一算也來到第十天了, 前面講了 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

Continue reading

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

Continue reading

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.

Continue reading

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 即可中斷程式

Continue reading

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 來舉例子

Continue reading

昨天我們已經把一個全新乾淨的環境架起來了 這時候我們不希望因為日後的操作導致 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 匯入並使用:

Continue reading

閉包表達式語法: { (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) 通常如果閉包太長的話,可以把閉包接在括號後面:

Continue reading

Author's picture

kerkerj

Cat lover <3

Backend Engineer

Taiwan