成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

如何在20小時內(nèi)開發(fā)一款應(yīng)用

2012-04-08 06:51:43來源:《程序員》作者:Govind Chandrasekhar

傳統(tǒng)的應(yīng)用程序開發(fā)流程包括集思廣益、形成想法、驗證、功能選擇、設(shè)計迭代,以及最后的開發(fā)工作,這一連串的事件通常需要至少一個月的時間才能完成。這一次,我們決定在一天之內(nèi)便完成從想法到應(yīng)用開發(fā)的過程。當然

傳統(tǒng)的應(yīng)用程序開發(fā)流程包括集思廣益、形成想法、驗證、功能選擇、設(shè)計迭代,以及最后的開發(fā)工作,這一連串的事件通常需要至少一個月的時間才能完成。這一次,我們決定在一天之內(nèi)便完成從想法到應(yīng)用開發(fā)的過程。當然,我們在20小時內(nèi)所創(chuàng)建的應(yīng)用程序雖然功能豐富,但其設(shè)計、安全性和可靠性還遠遠不及發(fā)行版的質(zhì)量。本文除了記錄我們的經(jīng)驗以外,還希望能夠為那些長期以來一直有想法卻遲遲未開展應(yīng)用程序開發(fā)工作的朋友提供動力。

犯罪預(yù)警應(yīng)用的開發(fā)時間表

第0~2小時

我在一個周日的下午一點與Sivamani會面。在見面之前,我們已經(jīng)大概討論過要開發(fā)一個iOS應(yīng)用程序,幫助人們避免成為犯罪的受害者。我們一直以來都是攻擊和破壞行為的受害者,所以希望建立一個預(yù)警系統(tǒng),能夠在人們無意進入犯罪高發(fā)區(qū)時通知他們。我們決定由該應(yīng)用監(jiān)控用戶的位置,顯示其對位置危險等級的評估,并列出該地區(qū)最常見的罪行。這樣,用戶能夠避免汽車受損和人身攻擊的危險。通過所提供的犯罪報告熱點圖以及定位系統(tǒng),用戶還能夠根據(jù)自身的判斷來調(diào)整地圖上的熱點。在前兩個小時結(jié)束時,我們已經(jīng)列出了想要的所有功能,并確保我們意見一致。

第2~5小時

我們中的兩個人開始在線下收集原始數(shù)據(jù),大約花費一個小時確定了幾個數(shù)據(jù)源。這些數(shù)據(jù)源包括縱火、搶劫、攻擊、蓄意破壞和性犯罪報告。使用Semantics3的Web收集程序,我們能夠在半個小時內(nèi)掌握數(shù)據(jù),隨后再用半個小時整理數(shù)據(jù)并將數(shù)據(jù)移植到SQL上。我們決定先專注于加州地區(qū),因為這一天的目標是啟動產(chǎn)品并使之正常運行,而不深入其他工作內(nèi)容。同時,Sivamani開始啟動iOS應(yīng)用程序的基礎(chǔ)架構(gòu)工作,我也開始著手API方面的工作。

第5~9小時

API會接收來自應(yīng)用程序的經(jīng)度和緯度坐標,并返回該地點“危險等級”評估、該評估中的“置信度”以及進行評估所使用的原始數(shù)據(jù)的節(jié)流清單。我需要花費數(shù)個小時用Restify和Sequelize搭建一個MySQL ORM基本服務(wù)器,確保代碼保留異步調(diào)用需要再花費兩個小時。

同時,Vinoth已經(jīng)使用JavaScript實現(xiàn)了一個算法,該算法考慮了每個罪行的地點和性質(zhì)以及與該數(shù)據(jù)相關(guān)的源數(shù)據(jù),其中包括罪行發(fā)生的日期和時間。Sivamani已完成了應(yīng)用程序大部分功能的架構(gòu),包括定期輪詢GPS和設(shè)計要顯示罪行統(tǒng)計和詳情內(nèi)容的頁面。該應(yīng)用程序能夠與我們?yōu)闇y試所建立的模擬靜態(tài)API進行通信。

第9~14小時

我們本可以通過SQL查詢的內(nèi)嵌移動Haversian距離功能實現(xiàn)地理搜索,但顯然,這不是長久之計。因此,我們改用Sphinx search,在唯一可用的Node-Sphinx連接器Limestone上努力了數(shù)小時后,終于使Sphinx地理搜索運行起來(支持地理搜索的Limestone代碼很快將啟動,目前的版本無法提供足夠的支持)。

同時,Vinoth致力于將來自多個源的數(shù)據(jù)合并在一起,尤其是合并性犯罪和與一般犯罪的數(shù)據(jù)。然后,他將聚集算法合并到Node服務(wù)器,調(diào)整JSON響應(yīng)以滿足應(yīng)用程序的要求,最后得到并調(diào)用API。此時,Sivamani已經(jīng)完成了應(yīng)用程序的地圖和顯示詳細內(nèi)容的視圖,并使之與API協(xié)同工作。

第14~20小時

同時,Sivamani想到了一個有趣的功能。因為兒童很容易不慎進入危險區(qū)域,并且不可能想到用預(yù)警應(yīng)用程序獲取信息,因此他添加了一個“兒童模式”。從本質(zhì)上來說,該應(yīng)用程序?qū)⒃诤⒆犹幱谖kU時自動向孩子的兩個緊急聯(lián)絡(luò)人發(fā)送短信。Sivamani通過集成Hoiio API來實現(xiàn)這個功能,不久后,他調(diào)整了該應(yīng)用程序的圖形和色彩,并添加了精巧的修飾。

當Vinoth優(yōu)化了API和測試算法時,我決定開始編寫Android應(yīng)用程序。我以前已經(jīng)編寫了多個應(yīng)用程序,這些應(yīng)用程序都需要多個地理位置和映射;因此,使用我以前編寫的一些代碼,便能夠搭建基本框架。此后,我著手于快速復(fù)制Sivamani在iOS上所進行的工作。在第20個小時的最后,完成了Android應(yīng)用程序,雖然里面沒有Sivamani所集成的一些很酷的功能。

\
顯示用戶所在位置的危險等級

要點

心動不如行動!應(yīng)用程序的開發(fā)在一開始就是件非常繁重的任務(wù)。開展工作的一個好方法就是開始編寫代碼。建立起整個基本框架是當務(wù)之急。 在開始這一天的工作之前,我們對Node.js API、Sphinx搜索、iOS地理位置、SMS API等不甚了解,但現(xiàn)在我們已經(jīng)比較熟悉這些概念,足以設(shè)置該功能的知情期限以及進行熟練的功能選擇。

在開始編寫代碼之前需要考慮好你的基本設(shè)計方案。繁雜的設(shè)計將很難修改,并且通常會造成代碼冗余。

在創(chuàng)建應(yīng)用程序時記下該功能的“待辦事項”清單。這包括不屬于最小工作原型類別的其他功能或安全/設(shè)計/可擴展性/跨設(shè)備考慮事項。例如,我已經(jīng)寫下在下一個迭代過程中為Android應(yīng)用程序構(gòu)建九格地圖。

如果你的應(yīng)用程序依靠預(yù)生成的數(shù)據(jù),則專注于子集而不是試圖立刻準備好所有數(shù)據(jù)。首先要整合最棘手的數(shù)據(jù)集,其次再整合次要的。這種開發(fā)模式可能不適用于所有類型應(yīng)用程序的開發(fā),特別是那些圖形密集型應(yīng)用程序,因此請運用自己的判斷力來識別我們的經(jīng)驗和你的需求之間的相似之處。

本文作者Chandrasekhar來自一個為開發(fā)者提供移動數(shù)據(jù)解決方案的團隊Semantics3,其網(wǎng)站為semantics3.com

關(guān)鍵詞:開發(fā)應(yīng)用

贊助商鏈接:

主站蜘蛛池模板: 六安市| 秦安县| 拉孜县| 恭城| 郁南县| 麻江县| 南华县| 城步| 清徐县| 南漳县| 赞皇县| 巴中市| 大同县| 屏山县| 延川县| 海丰县| 重庆市| 湾仔区| 抚顺市| 安义县| 乌拉特中旗| 龙口市| 南通市| 滦南县| 金川县| 区。| 水城县| 板桥市| 平泉县| 太白县| 泰安市| 南陵县| 繁峙县| 衡山县| 泸定县| 漠河县| 寿阳县| 富顺县| 高要市| 天峨县| 增城市|