- 用Express生成一個新專案
- 整合socket.io 與UI(參考這裡)
- 安裝firmata
npm install firmata --save
- 在project根目錄下,新增一檔案 firmataConnector.js
- 在 bin/www 裡使用 firmataConnector 與連接
/* Firmata */
npm install firmata --save
/* Firmata */
var firmata = require('firmata'); | |
var debug = require('debug')('networkLab8:firmataConnector'); | |
/** | |
* firmataConnector.js | |
* | |
* Connect to the Arduino via the Firmata protocol. | |
* | |
*/ |
/usr/libexec/PlistBuddy -c "Add:NSAppTransportSecurity:NSAllowsArbitraryLoads bool true" ./Info.plist |
MyUITextField: UITextField { | |
// Whatever you like | |
let padding = UIEdgeInsets(top: 5, left: 5, bottom: 6, right: 6); | |
// Paddging for place holder | |
override func placeholderRectForBounds(bounds: CGRect) -> CGRect { | |
return UIEdgeInsetsInsetRect(bounds, padding) | |
} | |
// Padding for text | |
override func textRectForBounds(bounds: CGRect) -> CGRect { | |
return UIEdgeInsetsInsetRect(bounds, padding) |
typealias Distance = Double | |
/// A struct to represent real position of the ship | |
struct Position { | |
var x: Double | |
var y: Double | |
} | |
extension Position { | |
/// Calculate if this position lies in the given range |
set nocompatible " Make vim behave more usefule way | |
so ~/.vim/plugins.vim " Manage plugins by vundle | |
"-------------- Indentation ------------ | |
set tabstop=4 " Number of space per tab | |
set shiftwidth=4 " Indent 4 columns for << and >> operations | |
set expandtab " Replace tab with space | |
set autoindent " Indent at the same level of the previous line | |
"-------------- Searching -------------- |
"-------------- Color config -------------- | |
colorscheme atom-dark " My Vim GUI color scheme | |
"--------------------UI tweaks-------------------- | |
set vb t_vb= " Disable bell after GUI startemd | |
" Some tweaks of the atom-dark theme | |
" Normal fg and bg color | |
hi Normal guifg=#eeeeee guibg=#252b3a | |
" fg and bg color of visual mode |
filetype off " required | |
" set the runtime path to include Vundle and initialize | |
set rtp+=~/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
Plugin 'VundleVim/Vundle.vim' | |
" All of your Plugins must be added before the following line | |
Plugin 'tpope/vim-vinegar' |
// Get array address | |
func getBufferAddress<T>(of array: [T]) -> String { | |
return array.withUnsafeBufferPointer { buffer in | |
return String(describing: buffer.baseAddress) | |
} | |
} | |
// Realize copy-on-write | |
var fiverInts = [1,2,3,4,5] | |
let copyFive = fiverInts |
// Using UInt8 as Byte | |
typealias Byte = UInt8 | |
enum Bit: Int { | |
case zero, one | |
} | |
extension Data { | |
var bytes: [Byte] { | |
var byteArray = [UInt8](repeating: 0, count: self.count) | |
self.copyBytes(to: &byteArray, count: self.count) |