Translate

顯示具有 coding 標籤的文章。 顯示所有文章
顯示具有 coding 標籤的文章。 顯示所有文章

2018年6月29日 星期五

我第二隻 App - 運彩數據分析

各位好,我第二支 App 上架了,是關於運彩的,裡面還有報牌。
不過現在最熱門的足球還沒做,我們怕做完足球就踢完了。
但基本的 MLB 和 NBA 都有。
地方的工程師需要五星好評,謝謝大家

↓連結在這
https://goo.gl/xRT2uD



2018年5月19日 星期六

WWDC 2018 網路預測大整理

每年的 WWDC 對開發者而言,都像是個強檔電影一樣,在那個日期前,有許多的猜測都會出籠。今年的 WWDC 會在 6 月 4 日開始,持續到 6 月 8 日,為期五天,地點會在 San Jose 的 McEnery 會議中心。不過,在倒數的前幾個禮拜,我們可以先來看看現在在網路上的預測有哪些。

我在 Medium 上寫了一篇文章,收錄了其他人寫的預測文

請點擊這裡!!!

2018年1月27日 星期六

歌曲知識王 - V2.1.0 更新

我們的版本更新到 V2.1.0 囉。
這一次的更新,是為了下一個功能所做的前期準備。
下一次的版本,我們會增加每週的分數排行榜。
如果有下載過的朋友,請至 App Store 上更新到最新版。

或是你對這個有一些特別的想法,也可以到臉書粉絲團裡面留言。

↓下載連結
https://goo.gl/jQ9S65


↓臉書粉絲團
https://www.facebook.com/SongQuizApp/

2017年10月28日 星期六

歌曲知識王更新到 V1.1.9 了

進入 App Store 下載

App Store 連結:
https://itunes.apple.com/tw/app/id1273605195


V1.1.9 更新內容:
針對 iPhoneX 做 UI 的優化
同時,結算頁還可以重聽一次題目

 這是遊戲的 Demo 影片,
             



現在有的題庫分別是 華語歌曲、台語歌曲、粵語歌曲、以及世界排名歌曲。

預計未來會增加各種特色曲目的題庫。

有興趣的人可以下載來看看唷。

中文版粉絲團:
https://www.facebook.com/%E6%AD%8C%E6%9B%B2%E7%9F%A5%E8%AD%98%E7%8E%8B-1778810945751055/

英文版粉絲團:
https://www.facebook.com/KingOfSongQuiz/

2017年9月23日 星期六

一個 typo ,讓整個 database 混亂了

分享一個開發時候沒注意到的小事,最後導致了 database 裡面資料混亂的事。

https://goo.gl/G3MSjg

 連結是「歌曲知識王」,一個自製的 iOS App 遊戲。

 當初在設定做使用者的資料結構時,在某一項 key 值中多打了一個 e。

可是另一頁的同樣資料,他 key 值卻沒有打錯。

2017年9月15日 星期五

iOS 遊戲 App - 猜歌之王 King of Song Quiz

這是一個猜歌的 App

進入 App Store 下載

App Store 連結:
https://itunes.apple.com/tw/app/id1273605195

螢幕截圖:

他是個猜歌遊戲

現在是 v1.1.6

有在看這個版的朋友,麻煩廣一下

玩法很簡單,選擇題庫後,倒數三秒開始猜歌

每一首歌都有30秒內的試聽曲

在愈短時間內猜出,得分愈高

現在有的題庫分別是 華語歌曲、台語歌曲、粵語歌曲、以及世界排名歌曲。

預計未來會增加各種特色曲目的題庫。

有興趣的人可以下載來看看唷。

中文版粉絲團:
https://www.facebook.com/%E6%AD%8C%E6%9B%B2%E7%9F%A5%E8%AD%98%E7%8E%8B-1778810945751055/

英文版粉絲團:
https://www.facebook.com/KingOfSongQuiz/





2017年5月8日 星期一

Swift & xcode 學習歷程 part6 - nil 和 optional



1> Swift 的語言裡面,有大量的驚嘆號。要了解驚嘆號,就要先知道 nil。nil 就是什麼都沒有,即使這個變數是 int,或是 double,他也可以是nil。nil 自己一個型別,獨立的一個。

2> 再看 Optional, 而為了向下相容 objective-c。所以他設定了 Optional。在早期的 obj-c裡面,在一個 function 執行,而他在執行的時候,如果需要回傳某個結果。假設是 int,如果這個程式是算的出來的,他就會回傳結果,但是有時候你會遇到算不出來的時候。此時會回傳 nil,不是回傳其他任何 type。

3> 但 swift 的語言架構,和 obj-c 是不一樣了,所以為了向下相容,所以他創造了一個 data type,叫做 Optional。使用的方式,就是加上問號。這就是相當於一個包裝,把某個變數包在裡面。讓他能出現 nil。

4> 所以當變數在做互相運算的時候,他一定要解開,因為 nil 的運算是有可能讓你的 app 炸掉。而解開的方法,有兩種

4.a> Optional binding, if let {}
或是
4.b> !

舉例來說:
Optional Chaining
UILabel?.text = “123”

這個 UI 是會先被檢查是不是 nil。如果是 nil ,這一行跳過,則不執行。如果己經不是 nil,就會執行。

if let 寫太多,事實上很差,如果你裡面有四個變數,那你就會出現四個 if let,會變成波動拳程式碼。

所以 swift 2.0 有加一個功能。

if let plustNText = plustNfield.text, let n = sth , let m = sth {
//這樣一次就可以解開四個變數
}



5> MVC  一種軟體開發的設計模式 Model, View, Controller.

Model:
軟體中的資料。通訊錄中的聯絡人“Line 的對話紀錄、遊戲裡面的排行榜分數。在我們的計數器裡面,他的變數名是 counter.

View
直接面對使用者

Controller.
負責控制Model和View之間的溝通,管理運算,可以想像成大腦

View Controller
通常控制一整個 App頁面,他是 App頁面的「大腦」
通常會有非常非常多行的code。
真的有必要的時候可以把部分的東西切分出來到獨立的 controller

----溝通方式-----
6> Outlet
Controller 藉由 outlet  來對 view 物件進行動作,所以 outlet 會設定為 controller 的屬性。

Target-action
當 view 物件發生特定事件 (event) 的時候會啟動。


7> 特別注意
AutoLayout & UIStckView
同步與非同步處理> 同步: 馬上程式會跑。 非同步: 按下去後,要等。
MKDirections

8> Auto Layout 一原點是在左上角

(0,0) (w,0)

(0,h) (w,h)

h和w 都是正值


9> Missing constraints > 沒有定義完成會出現的 errMsg
Misplaced views  > 運算完的 view 和 實際大小可能不同。


10> 在 iOS9 新增了 UIStackView

在元件欄裡面
事實上還有一個 Vertical Stack View,可以裡面再塞基他的 label 或 slider 或 view。然後,他可以用 Fill 的方式,或是 equally distribution,你還可以用 spacing 去調整。這是一個很快做 layout  的方法。

2017年4月12日 星期三

Swift & xcode 學習歷程 part5 - 各種線上資源

Swift & xcode 學習歷程 part5 - 各種線上資源
1> 如果沒有靈感的話,可以去  coacoacontrols.com 去找,他連圖案都有,而且有附上GitHub連結。如果看到喜歡的,就去 GitHub 上,直接參考別人的程式碼怎麼寫。

2> 另一個教學網站, raywnderlich.com/
這個也可以,他有各種教學,也有各種 UI/UX 排版,動畫,特效。

3> xcode 原生支援 GitHub, svn. 在Xcode一打開的選項裡面,就可以找版控的。

4> 有各種模板,最簡單的當然就是 single view。

4-a> Master-Detail application. 這種 app,就像 mail,點左邊,右邊出現內文或細項。

4-b> Page-Based app: 就像 iphone 的主畫面。有多頁

4-c> Tabbed app: 就像 fb 那一樣,最下面會有一排 「 tab」 他有各種不同的畫面

4-d> Message App: 針對 iMessage.

2017年4月6日 星期四

Swift & Xcode 學習歷程 - Part 4 做出計算機的 model

Swift & Xcode 學習歷程 - Part 4 做出計算機的 model

1> 新建一個新的 swift 檔案,這個檔案就是 model。因為 lec 1 的內容,是把 sqrt 寫在 controller 裡面,pi 也寫在 controller 裡面。如果依照 MVC 的原則,運算符號的功能應該要切開比較好。

2> 新建的swift檔,並不需要 UIKit,只要 import Foundation,因為這個檔是 UI in dependent。

3> 在這個運算 model 裡面,是不用 class 的,這裡用 struct。

4> struct 並不是 ref type。 但 class 是 ref type。另一重點, struct 不用 initialize,這個是自動處理的。

2017年4月5日 星期三

Swift & Xcode 學習歷程 - Part 3 MVC

Swift & Xcode 學習歷程 - Part 3 MVC

講師建議所有的 iOS 都要使用 MVC 架構,即所謂的 Model, View, Controller。之所以分這些陣營,就是希望 app 在內部傳遞各種訊號的時候,團隊的各開發者仍然可以清楚他們之間的溝通管道。

1> Controller 可以直接送訊息給 model,沒有任何限制。 Controller 送訊息給 view 也沒有任何限制。

2> Model 和 view 之間是不能互相送訊息的。這類的訊息傳遞是不行直接發生的。

3> View 如果要送訊息給 Controller,如果是一個 UIBotton,可以想成是有一個 target 在 controller 裡, view 的動作就是直接射到那個 target。 而 ScrollView 則是一種「同步」的概念,裡面的資料則是用 delegate 的方式,讓 view 的資訊和 controller 同步。

4> view 是不擁有任何資料的,他只能 show 資料,這些資料都不寫在 view 的 class 裡面。舉例來說,如果你的 iPod 裡面有一千首歌曲,你要做個 list,而存放一份資料在 library 裡面,又一份放在 view 的 class 裡面,你就會有兩份資料。這不儘儘是效率的問題,而是這樣的設計概念是不好的。

5> 而 view 拿取資料的方式,則是用 data source 的方式,回去要求 controller 給資料。他也不一定一次要拿1000首歌曲的資料,也可以一次只要求10 首歌曲,如果使用者要後面的歌曲,則是之後再request 一次歌曲資料。

6> model 是 UI independent  的,所以他並不直接傳遞訊息給 controller。他用的是「廣播」的方式,而 controller 則是接收到訊號後,才會知道 model 有被更動過。


7> 這三個陣營是壁累分明的,因為這一套溝通系統一混亂 ,裡面所有的class 的溝通會全部亂成一團,這會讓其他成員相當難維護 code。

2017年4月4日 星期二

Swift & Xcode 學習歷程 - Part 2 先做一個 single view app

Swift & Xcode 學習歷程 - Part 2 先做一個 single view app

在台大資訊系統訓練班開始之前,看到資策會有開一個 ios app 的介紹課程,心寫來潮就報名了。講課的老師是一個常常出 iOS書的老師,現在常常接家教。

以下是節錄上課的內容。

1>  app 的 icon,可以放兩張圖,大小要放到 60 pt。

2> 做一個 single view app,可以單純用 view 來拉。而圖層的概念可以和 powerpoint 的圖層是相同的邏輯。

3> 左方的檔案列表中,可以看到圖層上下關係,也可以在這邊調整圖層。

4> 這一堂課,只有3小時,所以我們唯一能完成的 app ,就是完全不寫 code 在裡面的 app。

5> 不寫code app 是真的做得到的,而據講師所說,他為了教學試範,還真的嘗試上架這樣的 app,而且還真的上架成功。

6> 一個頁面,就是一個 viewController 去控制,如果你想要多加下一個畫面,就是加一個 viewController. 

7> 在 viewController 裡面,有一個 init 的選項,這個選項,決定了當使用者點進你的 app,一開始到底秀了什麼東西給使用者。當你所有的 viewController都沒有 init,那使用者點進去 app,就會是一片黑暗。

8> 一個任何 code 都不用寫的 app,最簡單就是介紹 xx 的app,而要讓使用者按下後能切換頁面。一開始先用 imageViewer 把圖案塞進去,然後再放一個隱形的 Button 在圖案上面。然後再用神奇的拉線 Segue 把這一頁連接到下一頁,這樣,你就能不寫任何一行 code ,就做出 app。

9> 另一種內建的換頁方式,就叫做  Navigator bar。最基本的款示就是  iOS 的 Setting 設定。他的想法就是一頁進來後,會蓋在上面那一頁,然後按「返回」,上面那一頁就會拿掉,回到前一頁。


2017年4月2日 星期日

Swift & Xcode 學習歷程 - Part 0 前言

Swift & Xcode 學習歷程 - Part 0

好久沒用 blog 了,接下來,會有一系列的文章,去紀錄自己學習 Swift 和Xcode 的歷程。而這一系列的文章,只是單純的紀錄自己的學習狀況,並不會有教學。如果是想切磋 Swift 的朋友,歡迎來信。

我自己使用的教材,是 Stanford 的 CS193,這一堂課的教授,使用的英文並不難,非常好理解。

而所謂的 part 並不是一天一天的紀錄,在一開始的時候,雖然想把每天學習的狀況都記下來,但後來發現,這樣的開發紀錄方式,並不適合用在「程式語言」上面。所以,我決定把學習的紀錄,用一個一個不同的階段,當我自己往前進了一些,然後完成了一個小的 project,我就會紀錄下來,自己會了什麼。

希望在半年後,或是一年後,我可以很有自信的說,我會了 Swift。

寫於 2017.04.02

Lin, Marvin

2016年9月23日 星期五

Python - 一個膠水語言

在經過這麼多種的語言之後

我選擇了 python

經歷過 java、 php、 還有 objective-c 之後

我很確定的是我喜歡 python,勝過其他種的語言

現在蘋果的 swift 還沒整個定型,即使過了明年

我覺得還是會大輻度改動

這邊就先不說 swift了

那為什麼是python呢?

或許就和他的設計理念和後來被其他人補上的各種模組有關吧

所以現在的python 變成一種 「膠水語言」,因為各方人士的貢獻,所以大部分的用途都有人寫模組。

想要撈股票,有google、yahoo 的模組可以用

想寫 gui 也有,要輸出 圖表也有,要寫網頁後端也有三種以上可以選。

我想這個就是「膠水語言」的媚力吧

你想要做出個什麼東西,基本上都有現成的模組。

如果沒有現成的? 那就自己刻一個吧

希望有一天,我可以不用再當伸手牌,能夠做出一些模組讓別人使用。


至於為什麼選擇python3呢? 

和 python2 比,真的是缺東缺西,而且教學文也常常不能用,因為版本對不上。

但我在python3 的 cookbook 上看到一話話

「若你把眼光放到未來,你會發現 python3 提供了許多隱而不現的價值,比你想像的還要豐富」

但反過來說,python3 真的很不方便,因為很多模組都沒有。

嗯…

如果你看見什麼都沒有的天空,你會說什麼呢?

a> 這裡什麼都沒有耶!

還是

b> 這裡一點限制都沒有耶!




2016年7月26日 星期二

【自己的壞習慣】能在一個迴圈裡面解決,就不要用兩個-Python

【自己的壞習慣】能在一個迴圈裡面解決,就不要用兩個-Python

在我剛開始學著怎麼寫程式的時候,沒辦法一個步驟就把我想要的動作寫出來。
所以,一個迴圈沒辦法把我的想法做出的時候,該怎麼辦?

這時候,可以借鏡某個政治人物說的話
「一個便當不夠,你有試過吃兩個嗎?

對!

就是用比較多的步驟組合,組合出我想要的東西。

一個迴圈我做不出來,那就先處理一步驟,然後我再用另一個迴圈去跑剩下的步驟,有時候二個做不出來,我還會再加上第三、四個。

用膝蓋想,我也知道這樣的效能會很差。

2016年6月19日 星期日

Python 用 cmd 執行和 IDE 來執行的效率差別

Python cmd 執行和 IDE 來執行的效率差別

最近嘗試著用亂數的程式,來產生不同的英文詞組,然後來測一些項目。

小小的發現,如果你有開 IDE 來跑這個程式,大約是每200秒,會生出50萬組單字。

可是如果用 cmd 的指令,直接 python runit.py ,他的速度會提升近兩倍。只要90秒就可以生出50萬組詞。

如果要跑這種長時間,又不確定什麼時候會結束的程式。請務必用cmd 來跑,你的人生會有比較多的時間。

就像這個程式,已經執行了151335秒,產生了1277000000組詞,可是他還沒結束。

2016年4月1日 星期五

[Python] 分糖果

這一題我想了比較久,一直在想用什麼方式來做比較好。

題目: 十個小孩圍成一圈分糖果。 老師給第一個小孩10顆,第2個2顆,第3個8顆,第4個22顆,

第5個16顆, 第6個4顆,第7個10顆,第8個6顆,第9個14顆第10個20顆。

然後,所有的小孩同時將手中的糖分一半給右邊的小孩,糖果數為奇數的人可以向老師要一顆。 問 經過幾次後大家手上的糖果數一樣多? 每人各有多少個糖果。

[Python] 賽場計分- 去掉最大最小,再求平均

這是把輸入的list內,最大最小去掉,再把list的平均求出來

用python並沒有那麼難,先排序後,再把最大最小去掉。

一切都可以用內建的函數搞定。



judge_score = []
times = 0
while times != 10:
    score = input("Plz ente " + str(times+1) + " judge's score: " )
    score = float(score)
    times = times + 1
    judge_score.append(score)

judge_score.sort
judge_score = judge_score[1:-1]

average = float(sum(judge_score))/int(len(judge_score))

print(average)

[Python] 存錢問題 - 零存整付

小明的爸要準備小明上大學的生活費.
 假設一個月小明拿出 1000 元
而假設銀行年利率 1.71 %
小明有 4 年要過
請問小明的爸一開始要存多少錢才行


[Python] 肇事車輛-找車牌



有一車禍發生在某個城市的十字路口
目擊者 a b c  三人
a 說,該車牌前兩個號碼一樣
b 說,該車牌後兩個號碼一樣
c 說,該車牌是某個數的平方
問,該車牌有幾種可能?