Nokia

Qt Quick及QML學習筆記(一)什麼是Qt

什麼是Qt?

Qt是Nokia底下的一間子公司的跨平台軟體框架,理論上可以作到只要寫一次,稍微調整一下就可以編出在不同作業系統、手機等地方跑的執行檔。是Nokia未來十年起死回生的關鍵

Qt念作Cute,也可以拆開念作Q-T,至於想要把他念成Quit的人請左轉慢走不送。

更詳細的資料請自行查閱Wikipedia: Qt,我大概有3/4看不懂他在寫什麼(縮)

什麼是Qt Quick?

Qt Quick是Qt的UI排版引擎之類的,採用新定義的QML寫作,可以讓像我這樣的半路出家、誤入歧途的人也能學得起來。我目前覺得跟我十年前學Flash的感覺很像,GUI工具沒有那麼適合美術,但是程式碼的可讀性大概高十倍。

什麼是QML?

QML是看起來有點像HTML、有點像CSS、又有點像JSON的標記型文體。但是可以連結C++寫出來的元件,自己也可以混用javascript來寫一部分的邏輯。

先來看一段用Qt Creator做出來的Hello World吧:

import QtQuick 1.0

Rectangle {
    width: 360
    height: 360
    Text {
        anchors.centerIn: parent
        text: "Hello World"
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}

翻譯成中文是這樣的:
我要一個長方形:寬360、高360。
 裡面要有一個文字區域:位置放在外面的正中間,寫"Hello World"。
 還要有一個滑鼠區域:填滿外面的空間,滑鼠按下去的時候執行Qt.quit()

很好閱讀吧?(或者說,翻譯成中文反而不好閱讀了…)

所以Qt Quick有什麼厲害的?

目前為止,光就排版而言,我覺得有三點很強。至於動畫之類的就留著明天再說…

1. 視覺基本元素很少,分工超明確
 - Item: 各種元素之母,大部分元素都是繼承他的
 - Rectangle: 相當於HTML div,只是更好對齊,也更好移動
 - Text: 放字的容器
 - Image: 放圖的容器
 - BorderImage: 把一張圖片切成九宮格的超方便道具
 - TextEdit: 相當於HTML textarea
 - TextInput: 相當於HTML input,而且可以限制輸入的格式
…但是沒有radio button、沒有dropdown list、沒有checkbox(略

2. 元素的屬性可以擅自計算,也可以直接拉javascript的函數。
width: (table.width - (table.column+1)*table.spacing ) / table.column - 所以可以計算表格裡每一個格子的寬度
 - 上面這一句我沒試過,好像有在哪一個教學檔案裡面用到,大致上概念是這樣子…

3. 元素之間的錨點對齊超簡單
 - 左邊錨點對齊elementB的右邊只要寫anchors.left: elementB.right,這樣子當elementB移動的時候,這個元素也會跟著被拉過去。
 - 甚至於可以把左右的錨點釘在不同元素上,當左右釘上去的錨點同時動作的時候,中間的長度就會自動改變。(請看上面網頁的最下面的那一張圖)

Qt Quick的缺點咧?

雖然Qt Quick的QML很厲害,但是目前有一個很大的罩門:沒有手機。運氣好的話,MeeGo在2011年上半會有手機。但是查查看MeeGo的新聞就知道,這孩子已經當了九個月的放羊的孩子了…

至於Windows桌面軟體的話,我想Visual Studio已經有非常充足的GUI工具了,也有數以百萬計的程式設計師在投入了,何苦學Qt這個比較冷門的新語言呢?

次回預告

明天來講Qt Creator,這是開發Qt用的GUI工具。我目前用到的功能可能只有1/20左右而已,但是我真的覺得他是Visual Basic 3.0之後,讓我最容易上手的整合開發工具。

Nokia的Ovi Store…(抖)

Ovi Store是Nokia要辦的手機軟體商店,發表的時候一副要跟iTune Store拼了的樣子,結果上線日期一拖再拖,拖到市場都疲乏了還捨不得出現…

然後上線了之後,出現了這麼了不起的消息:

Nokia 為 Ovi Store 公開道歉
據消息指現時全球約有5千萬名 Nokia 用戶,但如果這5千萬名 Nokia 用戶都在同一時間登入 Ovi Store,Ovi Store 的網絡頻寬並不足以服務全部用戶,屆時網站將會發生嚴重的交通擠塞,Nokia 因此而承認錯誤及道歉,並承諾提高頻寬解決問題。

雖然聽起來很跩,好像他們有廣大到爆的user base,但是到底有多少人會上去買軟體,又有幾個軟體可以用,要跟iTune Store拼真的還非常久…

不過其實上面這條新聞是煙霧彈,是為了掩蓋更可怕的「技術瑕疵」,請看專家的抱怨:

Nokia Ovi Store fails in many ways, buy with extreme caution
There is NO capability to redownload your apps or reinstall them so if you ever reset or have an issue with your device you currently LOSE ALL purchased apps forever.

他在抱怨說從Ovi Store下載回來的檔案,用了*#7370#或是移除掉之後,就沒辦法從Ovi Store重新下載,而是要重新購買。簡單的說,在Ovi Store花錢買的軟體,買的不是軟體授權,而是跟電影票一樣的一次性廢紙。(不對,連張紙都拿不到)

我相信要把數位授權設計得當是很困難的,但是這個世界上已經有很多種數位授權的實作方式了。Wii是綁定主機、Xbox360是綁定主機或使用者帳號、iTune Store是綁定使用者帳號跟機器。這些方法雖然都有缺點,但是至少是個方法。而Nokia居然選了最偷懶的一種,完全忽略使用者的心情,居然還講風涼話:

Dear Matthew,

How are you today? Feeling excellent I hope.

Ovi Store的客服如果這樣子做,這個軟體商店做得起來才奇怪…

上面這些是以使用者角度來看的,那以開發者角度來看呢,問題就更大了。

首先我先簡介一下現在幾個Smartphone平台的開發者收費方式,先給各位一個大概的數字。Windows Mobile好像沒有聽說要什麼條件。iPhone要繳交開發者論壇年費,Android要繳交開發者論壇入會費,入會身份都是公司或個人都可以。要把軟體放上架時,雖然各自有一些限制,但是就沒有額外的費用了。

而Ovi Store上,原則上只允許公司名義加入。雖然沒有類似的開發者論壇費用,但是要花的錢反而更多。要放上去的軟體,都要經過Java認證或是Symbian認證,認證的測試費用大概是300~500美金,而且這次測試沒過,下次還得再繳一次。換句話說,一個軟體測試一次的成本,$3.99的軟體,要賣1500套左右才能回本,那測試兩次的話就…

而且送測的過程還沒有合理的SOP,光是上傳軟體之前就得先經過好幾次的書件往返,才能順利找到送測的入口。上傳檔案的時候,還會遭遇到說明上沒有寫的預期外錯誤,所以還得要再寫好幾次信去問。辛辛苦苦認證完之後,還得再送到Ovi Store的品質檢驗部門作一次QA。咦?那我們剛剛的測試是在測什麼…

QA完之後,就開始等待上架程序。從Ovi Store回信說通過QA之後,他們的信說要我們等五個工作天。但是到今天出現在上面,已經過了十五天、十一個工作天了。

所以再順便廣告一下…

(工商時間)

Ovi Store: BlockGO

移動方塊 BlockGO

移動方塊 BlockGO – FrienzPlay
移動方塊是設計給大人跟小孩同樂的益智方塊遊戲。遊戲規則非常簡單,只要用手指把各種顏色的方塊移開,讓小紅方塊可以到達出口就好了。移動方塊一共有99關,分為五個難度,等著你來挑戰!如果遊戲的過程中遭遇了困難,我們也準備了解答動畫以供參考。身為一個手機遊戲,移動方塊可以隨時隨地拿起來玩,也可以隨時放下,無須擔心玩到一半的進度,只要拿起來就可以繼續玩。不管你是想打發時間,想提神醒腦,還是想增長智慧,移動方塊都是對症下藥的常備良方!

移動方塊是專門設計給Nokia 5800 XpressMusic、N97或其他未來的Symbian S60 5.0觸控手機。如果你還在用金光閃閃銳氣千條的QHD高解析度觸控手機玩只有1/3個螢幕大的老遊戲,那你一定要試試專門為了大螢幕設計的移動方塊!

這是工作以來第一個手機遊戲,目前可以玩的平台只有Nokia 5800XMN97,價錢分別是一萬三左右跟兩萬六左右…(死)不過對於台灣買得起N97的長輩,移動方塊倒是可以免費下載,玩一玩告訴我們心得吧!只是這裡應該沒有這種長輩吧?

說到長輩,我爸媽的一個朋友跟我小姑丈都默默的拿起來一口氣玩到二十關左右,這種需要動腦的遊戲真的對light user很有吸引力耶。

製作過程中,最high的部分是除錯。我確實的體會到了把A除掉之後就會出現B,再把B除掉之後,A又會復活的心情…

其他製作感言:
美~樂蒂塗話本 – Nokia N97手機遊戲 – BlockGO 移動方塊
jMap.cc Blog: Nokia N97手機遊戲 – 移動方塊 BlockGO (於Ovi Store發售)