[2015HackNTU]感想以及我所學到的事

Reading time ~1 minute

2015HackNTU

是一場以台北城市為題、為期三天兩夜的Hackathon。出乎我預料的是,在這個Hackathon不只是一直coding,早午晚每一個小時還有不同的演講,連Make school的創辦人都來了!真令人興奮。 經由演講我得知了好玩又酷的GML,也學到Hackathon參賽者在這場比賽必須考慮的目的性。最後擺攤位發表自己的作品時,評審們的建議也教導我們想得更深入,像是遠程規劃、如何營利等… 再來,因為此次Hackathon是國際場的,所以外國講者和參賽者都很多,英文聽力在此時就顯得很重要,否則某些演講及Demo就只能睡覺了哈哈。

HackNTU會場

我們的作品構想

我們做的App是結合大地遊戲與台北地方特色的產物,玩家為了要獲得徽章(ex:士林達人),提高排行榜排名,必須完成多個任務,審核通過才能獲得。 審核方式讓玩家互評,每個任務都有正分(讚)和副分(Bad),App後台人員會檢驗這些副分到一定數量的任務,對不合規定的強制下架,並取消勳章的給予。 一個徽章擁有的任務不固定,平均5~7個,任務都是當地最著名的特色地點或小吃,必須親自走出去到當地,完成任務指定的內容(ex在士林夜市玩夾娃娃2隻)並上傳照片,才算完成任務。 App上也有類似FB塗鴉牆的頁面能讓玩家追蹤朋友、被粉絲追蹤等…

###以下是聽從評審建議後的多加想法

審核機制:附分容易使人反感。所以取消副分機制,讓徽章有1周的審核階段,在此期間開放給各玩家觀看並評論,參與評分者能獲得小道具,像變換App介面設計等小功能。

關於營運:營運分三個階段,1. 官方階段:徽章中的任務皆由市政府API提供,從中提取當地排名最高的幾個地點作為任務內容,雖然任務地點較大眾, 但較能激起年輕人對自己家鄉徽章的渴望,舉例就像”身為北投人必須知北投事”的概念,由此增加玩家。2. 客製化階段:等玩家到達一定數量將開放玩家自設徽章和任務內容,提供攻略路線,讓徽章任務本身更在地化,增加遊戲樂趣。

  1. 企業化:企業能藉由建立自己的徽章任務,讓達成任務的玩家獲得實質上的產品,達到宣傳的目的。舉例,賣美麗果的企業,規劃一條美麗果生產路徑之任務,完成一連串任務並得到獎章的人,將獲得真實美麗果產品。不只讓企業做到宣傳、玩家獲得實質產品、App向企業抽成,達到雙贏的目的。

關於作品實作

因為點子太晚才想到,所以實際實作只有1個晚上+1天,但超多超棒的演講又不想錯過,只好只是刻個模+使用的open source。 在這過程,Debug和一些設定文件上的規劃就顯得更重要,才不會多個專案合併時,生出一堆莫名其妙的問題。

AndroidManifest:比賽時因為AndroidManifest隨便亂設,導致合併專案時錯誤不斷,以後希望能按以下寫法。

<?xml version="1.0" encoding="utf-8"?>

#package路徑為從manifest開始直到java檔放置的資料夾位置
#versionCode、versionName為版本號
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.androidhive.camerafileupload"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="23" />

#開放權限設定
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

#android:name 如果有extends Application的class要在此聲明(全名),此class內大都宣告些全局變數
#android:allowBackup 是否有備份,聽說true有安全性上的疑慮,建議用false
#android:icon HOME上的圖片icon
#android:label HOME上標示的App名稱
#android:theme全局設計主題,大都設定Bar與Tab主題
    <application
        android:name="info.androidhive.camerafileupload.app.AppController"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/MyBarTheme" >

#android:name .LoginActivity=info.androidhive.camerafileupload(package name).LoginActivity
#android:label 各自Activity上Bar的內建靠左Title文字
#android:launchMode 重要,singleTop為如果Activity為Top則不再創建新實體
#android:windowSoftInputMode 選擇性設置,有EditText需要使用者輸入才用設置,會規範鍵盤彈出時的畫面配置
        <activity
            android:name=".LoginActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:windowSoftInputMode="adjustPan" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" /> #應用程式進入點
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            </activity>>
        <activity
            android:name=".RegisterActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:windowSoftInputMode="adjustPan" />
        <activity
            android:name=".TopCreditActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" />
        <activity
            android:name=".FirstMainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" />
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" />
        <activity
            android:name=".UploadActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" />
    </application>

</manifest>

想知道更詳細的android:launchMode的4個選項各自意義請到這裡

想知道更詳細的android:windowSoftInputMode的選項各自意義請到這裡

Fred大大介紹的QML

一開始Demo超酷,對超喜歡介面設計的我超有吸引力的。QML是一個由Qt所研發的使用者圖形介面描述語言,聽說像Tesla等大公司的UI介面是用這個設計的。 Qt則是Nokia底下的一間子公司的跨平台軟體框架,可以編出在不同作業系統、手機等地方跑的執行檔。聽說QML+Node.js很好用,支援套件也多,以後再研究。

  1. brig
  2. QML-Example
  3. QT官網

在網上隨意google一下,發現資料似乎不多,桌上型應用程式比較推薦。

Hackathon參賽者建議

因為只有短短3天,所以作品完成度一定要有取捨(除非是神人),以下約分2種類型:

  1. 試水溫:測試自己的點子是否有前景,只需把作品使用流程的完整性作足夠,裡面的Data可以先做死的假資料,Server等…真的有時間才建。 把重點放在傳達自己的idea,花多些時間在PPT和口說表達,如果觀眾反應良好,就有實作的價值,再開始細部實作。
  2. 宣傳產品:基本上作品已經完成80%,只是藉由此次Hackathon增加曝光率,而且有很多大企業都會到Hackathon偵查,所以也是增加接觸大公司、找贊助的好機會。 如果是這樣目的的人就要把自己作品做到完美!這樣的團隊也大都較容易拿到獎項。

心得與遺憾

其實Hackathon一點都不可怕,真的非常好玩!只是沒有過這麼操的我,一下連熬2天真的是要我命。 但人真是習慣的動物,第一天心理還哀叫怎麼特地來這裡找虐,第二天馬上就習慣了還精神超好!非常推薦沒去過的朋友參加! 我心裡的遺憾是,我雖然出國當交換學生過,但已經有些時間沒講還是生疏了,和老外評審解釋產品,講得滴滴嘟嘟…讓我超難過… 我一定要好好練習英文口說!別讓他再生疏Q__Q

HackNTU作品repo

HackInCity

[DevOps]鳳凰計畫

鳳凰計畫:一個IT計畫的傳奇故事,用這本小說作為 DevOps 的入門實在適合不過了! Continue reading