[iOS]第一個iOS App上架- 粉絲相簿 1.0

被退回來三次,被要求加上教學模式後,人生第一個自己弄的iOS App終於上架.
以下的鏈結可以下載:  https://itunes.apple.com/tw/app/fen-si-xiang-bu/id839324997?l=zh&mt=8

這裡記錄一下整個心路歷程,排除掉App本身比較困難的部分之外:

  • 一開始其實最困難的其實就是開啟一個App的憑証,並且讓iPhone可以正常的安裝到憑証.(其實是讓Xcode安裝憑証) 

  • 可以安裝App到手機後,之後困難的就是上傳的問題還有Provisioning Profiles的簽署

  • 好不容易上傳上去後,接下來就是等待審查

  • 第一次失敗:  有兩個問題

    • FB Login 會跳出網頁,也就是我的 Single Sign On 沒弄好

    • 要求增加分享的功能

  • 修復好SSO之後並且增加了分享功能後又送上去審查,又被打回來

    • UI需要有更清楚的標示.
  • 經過解釋後把整個說明網頁弄得清楚一點之後,又送上去.結果第三次被打回來:

    • 還是覺得不夠清楚,雖然我在solution center裡面有解釋整個流程,但是審查人員希望可以有tutorial告訴使用者.
  • 這時候花了比較多的時間,問了一些人有沒有比較好的tutorial 的SDK可以用.有人推薦了這個WSCoachMarkView.真的算簡單,然後方便的.

  • 總算通過審查,但是仍然久久沒上架去看了一下後,發現遇到 Pending Contract,原來是銀行跟稅務沒有設定好.參考這裡

  • 最後就會出現Wait for Sale,再過沒多久就出現啦.

  • 最後分享一下如何分享你的App網址給人家

  • 到iTune 裡面尋找你的App,在圖示上面按下右鍵複製鏈結就可以了.

  • 想要更多關於我App粉絲相簿的介紹?去 Github看吧  https://github.com/kkdai/iOS-APP-FBAlbums

參考:

[coursera][Functional Programming Principles in Scala] 關於課程學習心得(2)(完)

這是接下來寫幾個禮拜的學習心得.

其實我不知道是課程安排的問題,還是我習慣邊寫邊測試.到後面幾個禮拜,因為比較容易用worksheet去撰寫.整個變得相當容易寫而且快速.

  • Week4: 撰寫霍夫曼樹的處理函示

    • 主要內容是關於List的操作,但是比較奇怪的是關於List操作的課程卻是在week5的影音課程裡面 O_o

    • 因為直接拿List來處理,搭配著patch matching其實很容易就上手.這裡可以建議各位多使用worksheet來當你學習上的好朋友,可以快速上手並且測試你的想法.

    • 我的例子就是由於有worksheet可以使用,馬上就著手去開發相關的部分,並且一方面也可以馬上測試來看結果.(順便多寫一些unit test)這樣寫起來應該很快又可以寫完(不過我也是花了接近10+個小時)

    • 最後結果雖然答案都寫完了不過由於用到太多輔助函示被扣了點分數.

  • week5: 本週沒作業

    • 主要是教導一些其他關於集合的處理方式比如說map,filter,flatMap等等相關的內建函示
  • week6: anagrams也就是給你一個字串把它重組後顯示所有可能的字

    • 一開始是使用之前用過的pattern match來寫,不過看到提示要用high-order來寫.所以全部重寫花了一點時間.果然就可以一行寫好,不過很難閱讀啊…

    • 整體寫起來比week4 還快,不過也不簡單因為許多high-order的函示要搞懂它的用法與如何好好的用它才能寫得更好. 這次還是被扣分~函示輸出太多記憶體不足….

  • week7: 寫出遊戲Bloxorz

    • 總算把最後一個作業都做完了,感覺有點倒吃甘蔗.後面越來越能了解如何去使用high order function 還有使用各種的recursive 來找出解答. 課程上的倒水杯程式真的很有趣,也很有幫助.倒水杯就是給你兩個不容量度的杯子.比如說一個杯子300cc,另外一個500cc 然後請你倒出400cc的水,你能做的就是到滿某杯或是從某杯倒向另外一個杯子.

    • 我從測試四開始的習慣就是在worksheet上面去寫程式.寫好一個馬上測試結果.並且重複思考每一個步驟是不是有問題.這樣得學習方式對於scala不算熟悉的我相當有幫助.

    • 關於這個禮拜的習題,幾個小建議:

      • 原來提供的unit test真的太少,自己寫一些

      • 最後最佳答案找不出來,試著把圖弄小一點找問題

心得:

  • 學習scala真的讓我有挫折的感覺.不僅僅有許多演算法,更有一些high order function的使用法或是methond/expression parameter .不過學完之後對於其他語言的學習(swift)我想是有相當程度的幫助.

  • Scala的worksheet真的是很酷的東西,而最年輕的語言Swift 也有playground類似的東西(或者是類似iPython的東西).

  • 以前沒有unit test的習慣,由於functional programming的每個函示跟UI的結合比較少而且需要確保每一個部分可以完美的運作,於是我必須要每寫好一個就去思考如何跑unit test.我想這會養成我之後相當好的習慣.

  • 我其實很推薦每個程式設計人員都必須要學過functional programming,他能幫助你不斷地把問題切斷成小段的函示,彼此間不會互相干擾,並且能去組合出最後最佳的結果. 可以參考IBM這篇文章: Functional Thinking

[iOS][Android] 許多好用的SDK蒐集(1)

[WWDC2014]影片學習心得

這裡放一些我看完WWDC2014 session 的心得

  • Introduce of Swift

    • 身為WWDC2014最大的震撼彈,Swift的發表代表著iOS/MacOS的開發也可以使用現代程式設計語言的特性.

    • Swift擁有的新的特性如下:

      • Generic

      • Tuples

      • Closure

    • 整個會場內容大多都是簡單地介紹語法,我覺得光是看官方語法就很足夠了.

  • Introduce CloudKit

    • 這是我最期待的session,因為他可以幫忙架設server的部分.

    • CloudKit 的簡介:

      • 主要是用來存取iCloud services

      • 支援OSX與iOS

      • 必須使用iCloud 帳號

      • 可以擁有公開(?)與隱秘的資料庫

    • Container

      • 基本單位,一個App會有一個Container

      • 負責讀取與寫資料到iCloud

    • Database

      • 一個app可以管理一個公開的跟一個私密的資料庫

        • 公開資料庫負責放共享的資料,只有在寫的時候才需要帳號~容量算在開發者身上

        • 私密資料庫負責放使用者資料,不論寫或是讀都需要帳號~容量算在使用者身上

    • Record:

      • 在我看起來很像是資料庫的Table一樣,不過他是採取Map的方式也就是Key->Value 才讀取/寫入
    • Record Zone:

      • 管理一堆的Record,有分成Default Zone 跟 Custom Zone.俱有資料管理的功能,可以找回一些修改的變動.
  • Design for Game Controller

    • 主要是介紹如何設計一個能搭配MFi(Made For iPhone/iPad/iPod)的外在遊戲控制器的app.

    • 所有的遙控器都支援GamePad而具有左右蘑菇頭的遙控器(joystick: API ThumbStick)會有GCExtendedGamePad

      • PressedChangedHandler: 可以接受按下去與放開的event

      • 可以偵測按鈕的敏感度(presure sensitive),官方也給一些幾個建議.

    •  新的部分(iOS8)如下:

      • Controller Forwarding

        • 把iPhone當成一個額外的控制器來控制其他iDevice(iPad) (以後應該有 Apple TV)

        • iPhone會被當成是搖桿而被GamePad API找到

      • Motion Forwarding

        • 可以用G Sensor 並且有三軸定位的資料結構
      • Idle Timer

        • 玩遊戲的時候到了iOS8 會自動把省電關閉螢幕的裝置關掉 (其實iOS7 是bug吧?)
      • Pause Button

        • 它是一個toggle的按鈕,要自己處理相關行為
      • Player Indicator LEDs

        • 也就是定位你是第幾個遙控器(看來敵人真的是一般的遊戲主機)

        • 當多人控制的時候,這邊有些部分要注意:

          • 好好的分配整個Indicator Array

          • 要分陪哪個控制器可以操控選單

          • 定義如果有任何遙控斷線的撞控(哪些要暫停~哪些不需要)

[iOS]好用的XCode快速鍵 - Work efficiency with xcode

https://developer.apple.com/videos/wwdc/2012/#402 

  • 關於 三欄式UI的打開跟關閉

    • [command + 0] -> 切換打開/關閉左邊欄

    • [command + option+ 0] -> 切換打開/關閉右邊欄

  • 關於搜尋

    • [command + shift + O] -> 快速搜尋

    • [command + option + click]  functions -> 可以快速找到implement  或是找出caller 或是 callee 

  • 類似瀏覽器的Tab相關控制

    • [command + T] -> 新增tab

      • 這個對我應該會相當的好用,原本是不知道有這樣的功能.
  • 跟縮排有關

    • [command + “[“ ] 向左縮

    • [command + “]“ ] 向右縮

  • 跟自動完成(auto complete)有關

    • [ctrl + “.”] 自動完成

    • [ctrl + “/“,  ctrl+shift+ “/“] 選擇自動完成

NewImage

[coursera][Functional Programming Principles in Scala] 關於課程學習心得(1)

偶然的狀況下,知道其實coursera 有在教 scala 的課程,於是多花一點自己的時間來學習.
其實主要的課程時間並不會花很多,就如同他所講的,一個禮拜頂多一兩個小時看video leture
但是assignment 可就不是開玩笑的了,每一次的assignment 都花了我好幾個晚上熬夜慢慢地看
目前到了week4 的階段,大概算是剛剛進入FP的世界,有一些心得可以分享:

  • 千萬要注意assignment 的 instruction

    • 或許也只有我吧,每次拿到作業就打開來想寫.結果就發現沒parameter或是沒有variable.其實都是因為沒有好好的看instruction 產生的.
  • 用Functional Programing 來思考 (Think with FP)

    • 由於我很習慣邊寫測試程式邊寫程式 (TDD is dead? XD) 所以這邊很容易遇到困難點

    • 幾個推薦的方式是回過頭去慢慢思考set 與 list 的本質,不要被  p => Boolean 搞破頭

 

這裡也記錄一些課程摘要,有興趣可以考慮修修看,畢竟是scala的創辦人開的課(法國人講英文沒那麼難懂)

  • week 0

    • 主要是sbt應用跟簡單的scala 程式架構
  • week 1 

    • 主要是recursive的programming有 Pascal’s Triangle,Parentheses Balancing 跟 Counting Change

    • 我覺得主要是換回你對於recursive programming 的熟悉程度

  • week 2

    • 一些關於set 的操作,不論是 union 還是 contains 

    • 這邊就開始考驗著Functional Programming 的概念了. 讓我相當痛苦…. 所以為了能夠更了解整個架構~我寫了很多的unit test case 並且把整個結果在main 裡面都印出來看.才能有點了解

  • week3

    • 感覺這次的比較實用,利用Set 與 List 來完成 TweetReader來尋找目前趨勢 Trending ,算是相當有用的課程,但是也很難.

    • 因為一開始整個程式碼架構相當的大,極度推薦把instruction 好好看完,再開始看要完成的部分.跟著instruction 一步步把需要完成的完成,會比較容易….

 弄了兩個禮拜~總算搞懂 week3 接下來要繼續努力 … week4…