2016年12月27日 星期二

Xcode & Swift 技巧紀錄小筆記2

Xcode & Swift 技巧紀錄小筆記

更新ing (2017.01.16)
參考資料
英中繁簡編程術語對照(還有大陸用語對照) 好用!!
http://jjhou.boolan.com/terms.htm
MVC 架構
M:modol 背後運算 (後台)
V :view UI部分 (前端)
C :controller 連結前後端
Xcode 技巧
ctrl + I 自動排版
看到史丹佛大叔寫程式時,有用一個技巧,只打上大括號 “{” 按enter就可以自動幫你換行,外加補齊下大括號,算是蠻好用的。

Enum列舉.Struct結構體

Enum使用時機:在計算器的例子裡,輸入陣列裡存的有時會是數字,有時會是運算符號,完全不一樣的東西,要放在一起的話就要用 enum。
enum Op {
    case Operand(Double)
    case UnaryOperation(String, Double -> Double)
    case BinaryOperation(String, (Double, Double) -> Double)
}

var opStack = [Op]()
史丹佛大叔說 Enum和Struct跟Class的最大的區別是
  • Enum和Struct 是用值傳遞
  • Class 是用按引用傳遞
Enum 不能保存屬性,但是可以計算屬性
Class和Struct 可以保存屬性
Struct使用時機:
Class能繼承
Enum和Struct,不能繼承

Closure閉包

使用時機?
  • 要寫的程式 用{ }包起來
  • Closure 不包含 Function 名稱。
  • Closure 語法把 Function 名稱右邊參數列與回傳型別放到{右邊然後加上 in,其餘不變。
應該像是 {(參數列) -> (回傳型) in return (回傳參數)}
“×” : Operation.BinaryOperation
(
{ (op1: Double, op2: Double) -> Double in
return op1 * op2
}
)

currentTitle API文件 Declaration 範例

var currentTitle: String? { get }
let (不可變動的常數)
var (可變動的變數)
currentTitle 變數名稱
String 變數型別
?(暫時認知是 問號是因為要設定值 驚嘆號是因為要取值)

型別的宣告可省略(swift會自動判斷型別 但也可以清楚宣告而不省 ) 好矛盾呀~~

let name:String = “Swift ” —-> “Swift ”
let name = “Swift ” —-> “Swift ”
以上兩行結果一樣
var email = “” (swift自動判斷為String)

當初看哈佛iOS9教學視頻 做的一個計算機練習

print(“touch \(digit) digit”)
印出來是 "touch Optional(“5”) digit "
\(digit) \(變數) 反斜線括號內的變數大部分可以自動轉型成String
*this text is surrounded by literal asterisks*
private int a=1; //實例變量 Instance Variables

關於swift中的訪問控制 public,internal,private

網友講解蠻清楚的
http://www.jianshu.com/p/f5fe99590816

史丹佛上課小筆記

第一堂

Stanford - Developing iOS 9 Apps with Swift - 1. Course Overview and iOS9 introduction

1_2016.09.30

因為第一個參數也就是sender的這個參數名稱不要寫(雖然很奇怪但是就是這樣?!),所以要改成,而後面的otherArgument: 的Int 改成要傳的參數“5”
self.touchDigit(sender: UIButton, otherArgument: Int)
self.touchDigit(someButton, otherArgument: 5)

2_2016.10.03 Optional 和 nil狀態

(2017.1.15 Optional 和 nil狀態(認知更新))

Optional 像是型別的一種像是 Int,bool… 一樣 翻成中文是可選型別(或是有網友翻成 非必需的)的意思
網友的詳細講解[iOS] Optional
https://www.youtube.com/watch?v=sRcVejdhfRs
(一般寫法)var x:Int = 2
(使用nil的optional Int 寫法)var x:Int? = nil
加了?,就可以把nil存進x當中。
而這個optional的Int,可以有值,可以沒有值。
可以想像成optional是個盒子裡面放著變數x,但是要去取值要用!取回,要不然會出錯。
var x:Int? = 2
x = x! + 3
使用optional有兩種判別方法
if x != nil{
 x= x! + 1
}
if let number = x {
 x = number + 1
}
===
《The Swift Programming Language》正體中文版 寫到Optional
https://tommy60703.gitbooks.io/swift-language-traditional-chinese/content/chapter2/01_The_Basics.html#optionals
來看一個範例。Swift 的String型別有一個叫做toInt的方法,作用是將一個String值轉換成一個Int值。然而,並不是所有的字串都可以轉換成一個整數。字串"123"可以被轉換成數字123,但是字串"hello, world"不行。
下面的範例使用toInt方法來嘗試將一個String轉換成Int:
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推測為型別 “Int?”, 也就是 "optional Int"
因為toInt方法可能會失敗,所以它回傳一個optional Int,而不是一個Int。一個 optional Int被寫作Int?而不是Int。問號暗示包含的值是 optional 型別,也就是說可能包含Int值也可能不包含值。(不能包含其他任何值比如Bool值或者String值。只能是Int或者什麼都沒有。)
聽說swift 3的toInt()已經不能用了,大家注意一下
if 語句以及強制解析
你可以使用if語句透過對比nil的方式來判斷一個 optional 是否包含值。使用「等於」運算子(==)或是「不等於」運算子(!=)來執行這樣的比較。
如果一個 optional 有值,就會被認為是「不等於」nil。
if convertedNumber != nil {
println(“convertedNumber contains some integer value.”)
}
// 輸出 “convertedNumber contains some integer value.”
當你確定 optional 確實包含值之後,你可以在 optional 的名字後面加一個感嘆號(!)來獲取值。這個驚嘆號表示「我知道這個 optional 有值,請使用它。」這被稱為 optional 值的強制解析(forced unwrapping):
@IBOutlet weak var display: UILabel!
@IBOutlet weak var display: UILabel?
??史丹佛大叔說 驚嘆號 和 問號 都表示 optional

9_2016.12.12(第3堂課)

Optional
用法: newValue = optionalValue ?? value
若optionalValue非nil时,newValue的值为optionalValue的值,若optionalValue为nil时,newValue的值为value的值
史丹佛大叔例子:
史丹佛大叔化簡之前
let s: String? =...
if s != nil{
 display.text = s
} else{
 display.text = " "
}
史丹佛大叔化簡之後
display.text = s ?? " "

3_2016.10.04

let digit = sender.currentTitle!
加了!後 在API文件中是個值
沒有API文件中寫的String後面帶有"?"
console 比較
let digit = sender.currentTitle
原本在console是
touch Optional(“8”) digit
touch Optional(“0”) digit
let digit = sender.currentTitle!
console變成
touch 5 digit
touch 2 digit

4_2016.10.19

display.text = String(M_PI)// 強制轉型成String

第二堂

Stanford - Developing iOS 9 Apps with Swift - 2. Applying MVC
#5_2016.10.21
因為寫計算機功能 常用到背後運算 double 和 顯示前端的 string 轉換
所以乾脆用這方法 一次解決
// double turn display string 
    var displayValue: Double{
        get{
            return Double(display.text!)!
        }
        set{
            display.text = String(newValue)
        }
    }

6_2016.10.30

IF 和 LET並用的情況,要不然基本上在switf 裡面,if 是要一個bool,比方說 if score > 50{…}
參考網址
http://appsgaga.com/swift-學習筆記-if-和-let並用的情況/
if let thisScore = score{
...
}

7_2016.11.20

史丹佛大叔甚至 用Closure閉包 化簡成只剩計算後的回傳值
例子如下 紅色代碼處
史丹佛大叔化簡之前
private var operations: Dictionary<String,Operation> = [
“π” : Operation.Constant(M_PI), // M_PI,
“e” : Operation.Constant(M_E), // M_E,
“√” : Operation.UnaryOperation(sqrt), // sqrt,
“cos” :Operation.UnaryOperation(cos), // cos
"×" : Operation.BinaryOperation({ (op1: Double, op2: Double) -> Double in return op1 * op2}
),
“÷” : Operation.BinaryOperation(divide),
"+" : Operation.BinaryOperation(add),
“−” : Operation.BinaryOperation(subtract),
"=" : Operation.Equals
]
private enum Operation {
case Constant(Double)
case UnaryOperation((Double) -> Double)
case BinaryOperation((Double,Double) -> Double)
case Equals
}
史丹佛大叔化簡之後
"×" : Operation.BinaryOperation({ $0 * $1 } ),
這邊注意一下 注意除法跟減法參數的位置是相反
    switch operation {
    case "×": performOperation { $0 * $1 }
    case "÷": performOperation { $1 / $0 }
    case "+": performOperation { $0 + $1 }
    case "−": performOperation { $1 - $0 }
    default: break
    }
注意除法跟減法參數的位置是相反,原因是我們用 Stack 的形式來存資料, Stack 是後進先出,也就是先出來的是第二個數字 ($0) ,而後出來的是第一個數字 ($1) ,而我們要做的是用第一個數字 ($1) 去減或除第二個數字 ($0)。至於加跟乘不受順序影響。

8_2016.11.22

按下ctrl + shift 點選UI物件 會彈出階層清單 可以選擇包含物件
(下次補圖xcode)

第三堂

10_2016.12.13

Tuples,讀作“兔頗” 中文翻成“元組”
但是能做什麼? 用來回傳多個返回值
swiftlyios學習筆記
hugolu Swift學習筆記
tommy60703 Swift學習筆記
Tuples就是把多個值組合成一個複合值。tuple 內的值可以使任意型別,並不要求是相同型別。
(404, “Not Found”) tuple 把一個Int值和一個String值組合起來表示 HTTP 狀態碼的兩個部分:一個數字和一個人類別可讀的描述。這個 tuple 可以被描述為「一個型別為(Int, String)的 tuple」。
你可以把任意順序的型別組合成一個 tuple,這個 tuple 可以包含所有型別。只要你想,你可以創建一個型別為(Int, Int, Int)或者(String, Bool)或者其他任何你想要的組合的 tuple。
你可以將一個 tuple 的內容分解(decompose)成單獨的常數和變數,然後你就可以正常使用它們了:
let (statusCode, statusMessage) = http404Error
println("The status code is \(statusCode)")
// 輸出 "The status code is 404"
println("The status message is \(statusMessage)")
// 輸出 "The status message is Not Found"

也可以用像是命名的方法來使用Tuple
let x: (w: String, i: Int, v: Double) = (“hello”, 5, 0.85)
print(x.w) //print hello
print(x.i) //print 5
print(x.v) //print 0.85

10_2016.12.15

range

綠色是史丹佛大叔的舉例
range 可以用在in之中

11_2016.12.26

屬性監視器 willSet & didSet
使用時機:
willSet在設置新的值之前呼叫
didSet在新的值被設置之後立即呼叫

12_2016.12.26

延遲儲存屬性 lazy var(懶惰屬性 Lazy Property)
使用時機:?
在屬性前放上 lazy 關鍵字,可使之延遲加載,也就是只有在被使用的時候,它才會被加載。
常數 (let) 無法用 lazy 只有變數 (var) 才行。
lazy var brain = CalculatorBrain() // nice if CalculatorBrain used lots of resource
// 使用閉包 (Closure) 才初始化,注意結尾還有一對小括號
lazy var someProperty: Type = {
construct the value of someProperty here
return <the constructed value>
}()
// 使用類別中的其他方法來初始化,由於當 lazy 被使用時,整類別都已初始化好,所以可以使用其他方法。
lazy var myProperty = self.initializeMyProperty()
lazy var brain = CalculatorBrain() // nice if CalculatorBrain used lots of resource
// 使用閉包 (Closure) 才初始化,注意結尾還有一對小括號
lazy var someProperty: Type = {
construct the value of someProperty here
return <the constructed value>
}()
// 使用類別中的其他方法來初始化,由於當 lazy 被使用時,整類別都已初始化好,所以可以使用其他方法。
lazy var myProperty = self.initializeMyProperty()
懶惰屬性還是符合「所有屬性都必須初始化」的要求。
通常用在該屬性是基於其他屬性,如父類別的屬性,必須要其他屬性處理完,才會動用到它時,就可以使用 lazy 關鍵字。

13_2016.12.30

參數
在 Swift 中參數可以有內部名稱與外部名稱。顧名思義,內部名稱是方法內部使用的,外部名稱是呼叫方法時傳入參數使用。這對於程式的可讀性相信會頗大的幫助。
func foo(external internal:int) {
    let local = internal
}

func bar() {
    let result = foo(external: 123)
}

func foo(external internal:int) {
    let local = internal
}
 
func bar() {
    let result = foo(external: 123)
}
大部分情況下,我們不會使用外部名稱,而是直接把參數傳入,因此你可以在外部名稱的位置放一個下劃線 ( _ ) 代表不理會。
func foo(_ internal:int) {
    let local = internal
}

func bar() {
    let result = foo(123)

func foo(_ internal:int) {
    let local = internal
}
 
func bar() {
    let result = foo(123)
}
這也是 Swift 的第一個參數的預設,所以第一個參數的下劃線可以省略。如果你想要強制使用內部名稱,則可以加一個 # 號:
func foo(# internal:int) {
    let local = internal
}

func bar() {
    let result = foo(internal: 123)

func foo(# internal:int) {
    let local = internal
}
 
func bar() {
    let result = foo(internal: 123)
}
第二個參數開始,內部名稱預設也是外部名稱,當然你可以另外指定外部名稱。你也可以使用下劃線來省去外部名稱,但這種做法是反 Swift 的。因為第一個參數可以從方法名大概知道是做什麼,但從第二個參數開始就應該要說明是做什麼用的。
// 第二參數內部名稱同時也是外部名稱
func foo(first: Int, second: Double) {
    let local = internal
}

func bar() {
    let result = foo(123, second: 5.5)
}

// 第二參數特別指定名稱
func foo(first: Int, externalSecond second: Double) {
    let local = internal
}

func bar() {
    let result = foo(123, externalSecond: 5.5)
}

// 用下劃線省去第二參數外部名稱,不建議使用,反 Swift
func foo(first: Int, _ second: Double) {
    let local = internal
}

func bar() {
    let result = foo(123, 5.5)
}

// 第二參數內部名稱同時也是外部名稱
func foo(first: Int, second: Double) {
    let local = internal
}
 
func bar() {
    let result = foo(123, second: 5.5)
}
 
// 第二參數特別指定名稱
func foo(first: Int, externalSecond second: Double) {
    let local = internal
}
 
func bar() {
    let result = foo(123, externalSecond: 5.5)
}
 
// 用下劃線省去第二參數外部名稱,不建議使用,反 Swift
func foo(first: Int, _ second: Double) {
    let local = internal
}
 
func bar() {
    let result = foo(123, 5.5)
}

14_2016.01.02

NSxxxx(NSObject . NSNumber . NSDate …)
算是給跟我一樣剛入門卻不知道NSxxxx到底是發生什麼事的人一點概念
,因為現在還是Objective-C到Swift的過渡期,所以有些Objective-C的東西還能用在Swift中,所以Objective-C的NSxxxx就是一個例子
介紹NSxxxx,常見的有NSObject . NSNumber . NSDate …很多,就是各種函式庫的前綴,NS是最早賈伯斯離開蘋果之後成立的一間公司名“NeXTSTEP”的縮寫,此外沒有特殊含義。

15_2016.01.15

typealias 型別的別名宣告
使用時機:
型別別名的宣告可以在你的程式裡為一個已存在的型別宣告一個別名。型別的別名宣告以關鍵字typealias開始,遵循如下的 形式:
typealias name(型別別名名稱) = existing type
typealias Point = (Int, Int)
let origin: Point = (0, 0)

2016年12月12日 星期一

blog&網誌小工具

即時偵測點擊功能

Live Traffic Feed 免費的
http://feedjit.com/?utm_source=ltf&amp;utm_medium=web&amp;utm_campaign=ltfCampaign

1.下面填好寬度和顯示最近幾個追蹤文章
2.可以改改背景顏色
3.點選下面產出內嵌程式碼貼在blog上面












版面橫幅封面圖(phixr暫時做了一個)
(種樹熊)寬:高 = 1135px x 421px
彩蛋小字字體27
熊講話泡泡字體貌似98


顯示在線訪客人數(即時)
還能幫你統計、分析流量來源
http://whos.amung.us/showcase/

2016年12月11日 星期日

社會時事日記+時事梗 (2018更新)

連勝丼:在市民心中種下一棵希望的種子
2015.01.30
柯P 新政 大受關注
2015.03.30
熙熙食言 眾人怒 XD
2015.04.4
李蒨蓉:阿帕契女王
2015.04.20
炎亞綸 下雨地震說 被網友譏為地質學家 地質系 XD
2015.04.30
柯P 不滿大巨蛋施工板南線現裂縫
2015.05.15
曲家瑞 為台灣之心唱 一起戰(根本沈玉琳風) 網友推1.25倍速 更好聽
2015.05.21
小當家梗持續好幾個月(所以我說那個XX呢?)+神曲 OP+ED 可以拿來用
2015.07
八仙塵爆
2015.07
洪秀柱(藍)V.S.蔡英文(綠)  總統大戰 宋楚瑜也插花
2015.07
泛舟哥梗 颱風天就要要犯然要幹嘛
2015.08
宋楚瑜失言媚日槓上馬英九
2015.09.26
50屆金鐘獎  憲哥 謬讚評審 XD
2015.10.02  馮光遠V.S.憲哥 (正晶限時批)
馮光遠 講放屁不認錯
2015.10
蛋黃哥
2015.11.07
新加坡香格里拉酒店 馬習會
2015.11
ISIS 恐攻巴黎

2015.12.23
Yahoo 奇摩公布 2015 年十大網路暴紅 Kuso 用語
1哈味
2颱風天就是要泛舟
3積少化痰
4壁咚
5永婕諫皮/大體皮膚之母
6你只想到你自己
7挺柱、換柱、拔柱
8工具人
9YEE
10小鮮肉

2015.12.25~2015.12.31
哈工大小衛星交活計畫哈爾濱

2016.01.30
2016猴年(葫蘆猴)台北燈節http://www.thenewslens.com/post/277491/
神造型 網友笑翻

2016.02.10-2016.02.15
江南6日行


2016.03.17
重要里程碑 粉紅重生上坡日(反絕緣)

2016.05.02~2016.05.11 京阪神奈 畢旅8天

2016.05.20
寶寶梗 寶寶難過(知道) 但寶寶不說

2016.05.30
接待法國交換學生(在台灣待3個月)

2016.06.24
華航勞資爭議事件(俗稱:華航空姐大罷工事件)

2016.07.01
我只能給87分了 不能再更高了

2016.07.01
雄風三型反艦飛彈誤射導致差點越過台陸海上邊界
讓雙方國家差點,不過也打到台灣自家漁船,造成一死

2016.07.04-2016.07.06
2016科技偏鄉夏令營(獅潭國中)
Parrot 四軸飛行器  價錢約莫 cargo:2300 bebot:18000(規格不錯)

2016.07.10-2016.07.16
接待哈爾濱工業大學師生團體

2016.07.19
往桃園機場遊覽車起火陸客團陸客團含司機26全數罹難

2016.07.23
海濤法師:假的!  唉呀!我的眼睛業障重啊!

2016.08.06
精靈寶可夢 pokemon GO 台灣區開放 造成風潮 (madmon GO)

2016.08.06
大陸游泳女將傅園慧:我已經使用我的“洪荒之力”了

2016.09.01-2016.09.23
綠島換宿人生

2016.10.01
威航解散併入復興(還沒搭過就停飛了QQ)

2016.10.11
本來今天高高興興 藍瘦香菇

2016.11.22
復興航空無預警解散

2016.12.06
王大陸在MAMA亞洲音樂大獎 口誤:給你滿滿的大~平~台~


2016.12.06
Dcard上 新增無痕飲食版
不要浪費就是環保,不只在吃上面任何,事物上都是,包含節約能源因為產出某些能源或食物之前都相對的會耗費能源。簡單的舉個例:以飯來說,你吃到之前他是米,從種它時所耗費的灌溉的水所施肥料,還有一個大家常聽的,憫農詩的農民的辛勞,到煮飯所耗費的電力,其實要說真的太多了。所以不要浪費也是很重要的。對的事,我們就堅持,雖然說自備餐盒路人可能會露出奇怪的眼光不過不用怕因為我們是對的。


2017.01.25
民進黨北市議員童仲彥又家暴又說一句經典:如果是男人,看到邱主任,不喜歡的話那就不是男人,
被退黨之後 又自己回自PO文下 留言 “了不起,負責”
最狂發言

2017.01.29
卡提諾狂新聞:9487 94狂 我的老天鵝呀!

2017.02.08
暫時與世隔絕 種樹熊入伍去

2017年2月25日
讓你嚇到不要不要的

2017.03.03
台中空軍基地清泉崗毒品會繁殖!!


2017.04.10
國防部長馮世寬 超過100分


2017.04.12

黑人問號???

2017.08.07
中國有嘻哈 吳亦凡:你有freestyle嗎?
張震嶽:我覺得不行
熱狗:我覺得其實可以 熱狗:阿嶽真的很嚴格
張震嶽:糖糖先幫我記著(糖糖是節目導演)
張震嶽:糖糖先發給他
TY:我覺得一個很穩的發揮後,卻得到一個那樣的反饋,讓我情緒有點失控。
TY:我沒有寫diss啊,我寫的是效果

2017.08.15
全台大停電

2017.09.18
紫衣教(佛教如來宗) 妙禪爆醜聞
網路上感恩seafood,讚嘆seafood梗



2017.12.15
光頭哥哥 母湯喔

2017.12.25
嚇到吃手手

2018.02.15
聖結石Saint BANG! 

2018.05.09
中華電信推出 綁約30個月,每月499元(新台幣)行動網路吃到飽」[1]的促銷方案
後續導致其他電信業者跟進提供499吃到飽服務
時人稱:499之亂 

2018.05.26
我全都要!
出處 周星馳的九品芝麻官
 https://forum.gamer.com.tw/C.php?bsn=60084&snA=203316

2018.07.14
中國有嘻哈第二季 中國新說唱
吳亦凡:太skr
鄧紫棋:我可以幫你唱hook
張震嶽:
熱狗:
孔令奇:喂 喂 喂 不對唉~

2018.07.19
台南市長候選人 林義豐 年輕人的新寵物 虧雞福來爹
https://www.youtube.com/watch?v=_cXvYLsEGbw

2018.08.31
麥當勞慶祝戴資穎亞運冠軍
大麥克買一送一 時人稱:麥當勞之亂

2018.09.18
因為韓國瑜一句 東西賣得出去,人進得來,高雄發大財
(韓國瑜其他金句:禿子跟著月亮走.擁有了一碗滷肉飯與一瓶礦泉水的信心.蓋愛情摩天輪上去做愛做的事)
成為經典 網友當做素材在創作
https://www.youtube.com/watch?v=a8YHpNXhI84

2018.10.06
丁守中官方競選歌曲:台北的未來在手中 (我覺得旋律蠻洗腦的)
https://www.youtube.com/watch?v=TBSQLC-2Idc
2018.10.12
博恩夜夜秀 直接改編 台北的未來在手中 變成 台鐵的未來在排骨便當
https://youtu.be/T-sVAN36GZE?t=147

2018.10.16
公務人員特種考試司法官考試第二試在13日、14日舉行,一名考生在PTT發文列出這則考題,國文科測驗部分,題目中有「列屋為藝妓,嫖來又嫖去,肉林而酒池...」的語句,而B選項則出現「感嘆王敏川誠摯終招忌,而宦海浮沉」
誠摯終招忌 一詞 被網友提出暗指 陳致中招妓


2018.10.21
宜蘭普悠瑪列車出軌事故
事故全車共有18人死亡,215人輕重傷,133人未受傷

2018.10.27
柯P 也推出Rap
Do the right thing ~
do things right
怪怪的~怪怪的~怪怪的~(又一波洗腦旋律)
https://www.youtube.com/watch?v=gwxdh4JX9e4

2018.10.31
藍亦明 菜喳 陳其邁 被戲稱三胞胎 (真的很像...)
看~藍亦明你很其邁欸《HowFun工作室變裝趴》
https://www.youtube.com/watch?v=I-r08afiJqk

2018.11.10
公視主辦北市市長候選人辯論會 5個 候選人柯P 丁守中 姚文智 李錫錕 吳萼洋 全出席
吳萼洋 推廣蜂蜜檸檬爆紅
辯論最後竟然唱首(愛江山更愛美人)
人人短短幾個秋呀~
https://youtu.be/-NZBHXLPusA?t=5787

2018.11.10
網熱傳 小尾巴 創造蜂蜜檸檬宇宙(接龍)
網傳後來衍伸很多版的接龍
https://www.youtube.com/watch?v=TUrozAzar1g

2018.11.24
九合一選舉 松山信義選區 議員候選人 呱吉 邱威傑
youtuber史無前例 民主開箱(暴雷一時爽呱吉督市長)
然後真的低空飛過選上議員
期待他的問政之路
https://youtu.be/40OiS0SY_KQ

九合一選舉 因公投10個提案 導致排隊投票人龍排隊許久拖延
最後開票時間 最後到凌晨兩點多 才完全結束
柯文哲與藍營丁守中票數開票過程形成拉鋸戰
最後柯P580820 以3254票險勝 丁守中577566

最後說一聲 改變台北 需要阿北 阿北加油~

2018.11.27
2016年韓國瑜時任北農總經理議會質詢全紀錄
兩年前的質詢片段,兩年後,隨著韓國瑜當選
也是一句名言:問世堅情是何物 問世堅真理是何物
https://www.youtube.com/watch?v=XPx4syhQo0A


2018.12.2
宜蘭普悠瑪列車出軌事故事件後續
時代力量黃國昌 質詢台鐵高層 與交通部相關調查人員
竟吱嗚其詞 貌似一直無法掌握狀況
而調查小組竟想矇混過關
https://www.youtube.com/watch?v=ULv0NzSNyfQ



2016年11月29日 星期二

(送禮物.交換禮物)要有含義.新版麥香飲料標語 超有梗

#新麥香飲料標語
2016.12月新款 麥神說系列 共9種標語
麥香奶茶
我夢到你今年變溫拿(就醒了)
怎麼每年願望都一樣(加油好嗎?)
今年可以靠臉吃飯(也能靠才華哦!)大陸梗:能靠臉吃飯 偏偏靠才華
麥香綠茶
今年什麼都想靠神明,早點洗洗睡吧!
今年在耍廢,就送廢棄物 回收囉!
今年要什麼有什麼,假的!你心裡業障重呀!
麥香紅
今年繼續當好友,記得有福同享!
今年要有閃光,拍照時打一下就有囉! (把妹神器唷XD)
今年至好中二病,也是蠻拼的!


#麥香 友力包 友些事你要知道系列 共19種標語 (我現在只看過19種 如有我未發現請網友指教) 飲料標語
(戴上口罩)顏值爆表
沒關係啦(有些事是很講求天份的)
要堅強(不然我也沒空幫你)
姐超美(只是有點朦朧)
(沒關係)有哥在
你好壞(但我喜歡) 乾 這根本偷告白
(下一次)我挺你
睡不好(每天被自己帥醒也不是辦法)
相信自己(但也別放棄治療)
我真的不想說(強者我朋友)
不開心要說(好讓我開心一下呀)
最帥的是你(耍笨的時候)
我讓你靠(北)
辛苦你了(笑點低也不容易)
加油好嗎(我都壓在你身上了)
(我就在這)有神快拜

要讀書(不然我很難跟你解釋)
對不起(那麼有梗我也不願意)
給你機會(承認我的好)




蛋糕神人.常秉賢 各種客製化蛋糕
搞笑玩具 EX:雙人砸派機(還可以一起玩XD)

2016年11月10日 星期四

MD

#  Xcode & Swift 技巧紀錄小筆記
MVC 架構
M:modol      背後運算 (後台)
V :view           UI部分     (前端)
C :controller 連結前後端

Xcode 技巧
ctrl + I 自動排版


網友寫得不錯的 Swift  gitbook 筆記

https://hugolu.gitbooks.io/learn-swift/content/Basic/Types.html



## currentTitle API文件 Declaration  範例
```swift
var currentTitle: String? { get }
```
let (不可變動的常數)
var (可變動的變數)
currentTitle 變數名稱
String 變數型別
?(暫時認知是 問號是因為要設定值 驚嘆號是因為要取值)


#  型別的宣告可省略(會自動判斷型別 但也可以清楚宣告而不省 )  好矛盾呀~~
```swift
let name:String = “Swift ” —-> “Swift ”
let name = “Swift ” —-> “Swift ”
以上兩行結果一樣
var email = “” (swift自動判斷為String)
```

# 當初看哈佛iOS9教學視頻 做的一個計算機練習
```swift
print("touch  \(digit)  digit")
印出來是 "touch  Optional("5")  digit "
\(digit)   \(變數)   反斜線括號內的變數大部分可以自動轉型成String
```


private int a=1; //實例變量 Instance Variables


哈佛大叔小筆記

第一堂
Stanford - Developing iOS 9 Apps with Swift - 1. Course Overview and iOS9 introduction

#1_2016.09.30
因為第一個參數也就是sender的這個參數名稱不要寫(雖然很奇怪但是就是這樣?!),所以要改成,而後面的otherArgument: 的Int 改成要傳的參數“5”
```swift
self.touchDigit(sender: UIButton, otherArgument: Int)
self.touchDigit(someButton, otherArgument: 5)
```

![](https://i.imgur.com/29OWw9x.jpg)

![](https://i.imgur.com/FQI0TTp.jpg)



#2_2016.10.03 Optional
Optional 像是型別的一種像是 Int  bool 一樣  翻成中文是可選型別的意思

class ViewController: UIViewController {
    @IBAction func touchDigit(sender: UIButton ){
        let digit = sender.currentTitle
        print("touch  \(digit)  digit")
    }
}
《The Sw­ift Pr­ogramm­ing La­nguage­》正體中文版 寫到Optional
https://tommy60703.gitbooks.io/swift-language-traditional-chinese/content/chapter2/01_The_Basics.html#optionals
來看一個範例。Swift 的String型別有一個叫做toInt的方法,作用是將一個String值轉換成一個Int值。然而,並不是所有的字串都可以轉換成一個整數。字串"123"可以被轉換成數字123,但是字串"hello, world"不行。
下面的範例使用toInt方法來嘗試將一個String轉換成Int:
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推測為型別 "Int?", 也就是 "optional Int"
因為toInt方法可能會失敗,所以它回傳一個optional Int,而不是一個Int。一個 optional Int被寫作Int?而不是Int。問號暗示包含的值是 optional 型別,也就是說可能包含Int值也可能不包含值。(不能包含其他任何值比如Bool值或者String值。只能是Int或者什麼都沒有。)
if 語句以及強制解析

你可以使用if語句透過對比nil的方式來判斷一個 optional 是否包含值。使用「等於」運算子(==)或是「不等於」運算子(!=)來執行這樣的比較。
如果一個 optional 有值,就會被認為是「不等於」nil。
if convertedNumber != nil {
    println("convertedNumber contains some integer value.")
}
// 輸出 "convertedNumber contains some integer value."

當你確定 optional 確實包含值之後,你可以在 optional 的名字後面加一個感嘆號(!)來獲取值。這個驚嘆號表示「我知道這個 optional 有值,請使用它。」這被稱為 optional 值的強制解析(forced unwrapping):




@IBOutlet weak var display: UILabel!
@IBOutlet weak var display: UILabel?
哈佛大叔說 驚嘆號 和 問號 都表示 optional



#3_2016.10.04
let digit = sender.currentTitle!
加了!後 在API文件中是個值
沒有API文件中寫的String後面帶有"?"




console 比較
let digit = sender.currentTitle
原本在console是
touch  Optional("8")  digit

touch  Optional("0")  digit

let digit = sender.currentTitle!
console變成
touch  5  digit

touch  2  digit



#4_2016.10.19
display.text = String(M_PI)// 強制轉型成String

第二堂

Stanford - Developing iOS 9 Apps with Swift - 2. Applying MVC

#5_2016.10.21
因為寫計算機功能 常用到背後運算 double 和 顯示前端的 string 轉換
所以乾脆用這方法 一次解決
// double turn display string
    var displayValue: Double{
        get{
            return Double(display.text!)!
        }
        set{
            display.text = String(newValue)
        }
    }





#6_2016.10.30
IF 和 LET並用的情況,要不然基本上在switf 裡面,if 是要一個bool,比方說 if score > 50{…}
參考網址
http://appsgaga.com/swift-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-if-%E5%92%8C-let%E4%B8%A6%E7%94%A8%E7%9A%84%E6%83%85%E6%B3%81/

if let thisScore = score{
...
}

json 筆記

json 筆記
json_encode():將資料轉成JSON格式 json_decode():處理json轉為變數資料以便程式處理
小黑人教學

2016年11月8日 星期二

IFTTT 其實很神奇 如果有人要用同步發文 這很好用歡迎取用發文格式

**Buffer 也是我最近發現好像還不錯用能同步發文的  有推特.FB.Google+
hootsuite也是,不過種樹熊還沒研究,等我找時間補齊


舊版網頁 截至2017.01.25 還能正常使用
https://internal-api.ifttt.com/recipes

新版網頁
https://ifttt.com/discover
https://ifttt.com/connect/evernote/blogger(如果你有明確的兩個想連動的社群媒體可以直接在網址上輸入,也是OK)

分享幾個種樹熊常用兼實用的applets給大家

(還有Android Device功能,可以用裝置地點判斷成為靜音功能)


同步發文,還可以客製化修改applets內容,真心好用


現在已測試可同步發文於 FB個人(雖然FB個人帳號也是可以,但一般不用,已經是部落客的各位應該能理解我說的
)和FB粉專,Medium,Evernote
(因為台灣人的習慣會用blogger,會看FB粉絲專頁,工程師最近流行用Medium寫文章,用Evernote備份,所以我現在只會用到這三個)
連youtube 也都可以,剛好符合最近流行的youtuber 話題

但是最近還在研究如何發文後續的更新也能做到同步

有個小技巧種樹熊也教教大家,加上<br> 能做到換行

"{{PostTitle}}"<br>
===========================<br>
{{PostContent}}<br>
===========================<br>
同步發文於種樹熊Blogger: {{PostUrl}}<br>
(文章如有更新請至Blogger查看最新內容)

YouTube格式
{{EmbedCode}} 
<a href="{{Url}}">{{Title}}</a><br> 
{{Description}}


地理測試
<br>
Latitude:{{Latitude}}
<br>
Longitude:{{Longitude}}
<br>
Radius:{{Radius}}
<br>
OccurredAt:{{OccurredAt}}
<br>
Address:{{Address}}
<br>
LocationMapImageUrl:{{LocationMapImageUrl}}
<br>
LocationMapUrl:{{LocationMapUrl}}
<br>
EnteredOrExited:{{EnteredOrExited}}