碼字不易,且行且珍惜html
開始只是想走通整個開發流程,實現從0到1的開發過程,如今完成了卻又遇到另外一個問題,養服務器的問題!前端
最開始買服務器的時候,買的是最低配的 1核 1GB 1M,年費是330,是有首單優惠的。後來不夠用了,升級到 1核 2GB 5M,花了814,後面以爲單核不夠,升級到 2核 4GB 5M,花了157,6個月。git
後面新增短視頻功能,須要存儲大量圖片和短視頻,因此購買了OSS存儲,買了100G存儲包半年,花了65。購買存儲包是不夠用的,還須要購買下行流量包,最開始買的100G的下行流量包,由於那個月快結束了,100G半年是245元,每月都有100G,後來感受有點不夠用,由於接下來的那個月就用了300多G,因而升級到300G半年包月,452元,而後接下來的那個月就用到了550G,又不夠用了,因而升級到500G半年包月,385元。再加上其餘七七八八的東西,在他身上,我已經付出了好幾千了。程序員
昨天週日,在忙着搬家,今天打開看了一下,我驚呆了,才一天半下行流量就用了157G了,暫且不談新增用戶,就照這個速度,這個月怕是要3T的下行流量了。github
因而我想去看看升級要多少錢,而後我就陷入了深深的沉思。2T的話是2780左右,3T沒有這個規格,只能買5T,5T是8300多。我怕是養不起這頭獅子了,因此作大量存儲的應用請慎重。sql
2018年07月消費小計數據庫
做爲程序員,除非本身餓死,也不會拋棄本身的應用的,若是哪天你運行《段子樂》的時候發現忽然打不開視頻了,多是我已經沒有能力續費了,多是我要拋棄他了,那麼就說明我可能已經吃不上飯了,別忘了聯繫我,請我吃吃飯啥的。編程
以前聽一個老鐵說,一個開發者的真正蛻變,要從真正作一個屬於本身的App開始,你只有本身一我的摸索、研究,真正靠本身踏上這條路,才能嚐盡這條路上的酸甜苦辣,纔會成長!因而,我在喝完壯行酒以後,踏上了《從0到1開發一個屬於本身的App》這條不歸路。後端
其實這是一個很難肯定的事情,由於若是你有一個好的想法,好到作出來就有大量用戶,好到不用推廣就能吸到萬千粉絲,那麼,你還作個屁的練手App啊,直接去創業不就行了!也不用本身開發啊,招人啊,本身當老闆呀是吧!如今這個時候,基本上各個領域都已經有了相對成熟,獨霸一方的App存在,因此咱們不要想着,作一個App就能讓本身流芳百世,一鳴驚人了。api
對於咱們來說,咱們的目的是走流程,因此在功能上,不須要太苛求,作本身喜歡的就好,你只要想着,反正也不會大火就行了。對於我來講呢,我以前仍是比較喜歡看段子的,因此我就打算作一個看段子的App,名爲《段子樂》,通過一段時間的努力,目前已經在各大市場上線,好比應用寶,華爲應用市場,小米應用市場,百度手機助手,酷安,魅族,豌豆莢等市場。若是有人也喜歡,能夠去下載體驗下,或者掃描二維碼安裝試試,我會一直維護這個App,直到我嗚呼哀哉。。。
對於一個移動端的開發者來講,這實際上是一個很痛苦的問題,由於咱們擅長於把從服務端的獲取的數據展現在App上,卻不擅長創造數據。縱觀如今的市場,不可貴知,一個沒有後臺支持的App,是不可能走下去的,因此,咱們也必須讓咱們的應用有後臺數據的支持。那麼問題來了,咱們如何獲取App上須要顯示的數據?
其實也有一些平臺爲咱們這些移動端的開發者考慮過這些問題,因此他們提供了一套解決方案,讓咱們調調接口就能實如今公網上方便的保存數據到數據庫或者從數據庫獲取數據到本地。好比如今市場上有的【Bmob 後端雲】和【LeanCloud】,他們提供的服務是差很少的,對於Android開發者來講,咱們只須要集成他們的SDK,就可能很輕鬆的實現建表,對錶中的數據進行CRUD。
我用Bmob用的比較多,大學就開始接觸他了,這裏就對Bmob多介紹點。對於一個應用來講,用戶體系每每是最重要的,有了用戶,你才能往深層方向發展。Bmob也想到了這一點,從建立一個項目開始,它就默認建立了一個本身的用戶體系,SDK也提供了很方便的用戶管理的接口,包括髮送手機驗證碼,對驗證碼的校驗,用戶註冊,用戶登陸,用戶重置密碼,用戶郵箱驗證等等,這對於一個移動端開發者來講,簡直就是福音,也必定程度上解決了App用戶體系的常見問題。
這個雖然是有侷限性的,可是在某些特定場景下也是可使用的。好比我以前作了一個《福彩自動對比助手》,主要功能就是對福利彩票上的內容進行識別,而後獲取到用戶購買的彩票的號碼,再從網上自動獲取彩票期號對應的中獎號碼,與用戶購買的號碼進行對比,直觀的告訴用戶中獎狀況。這裏咱們就須要用到免費的公共接口來獲取彩票期號對應的中獎號碼。再或者,對於我想作的《段子樂》來講,其實必定意義上也可使用免費的公共接口,好比【ShowAPI,互聯網API入口 】,【聚合數據】,【APIStore】等等上面就有不少關於笑話和段子的接口,項目初期能夠直接使用上面的接口來獲取段子數據。可是也是有必定的限制,好比某些接口會限制用戶的調用次數等等。這固然是不友好的。
這固然是最好的一種方式,無論是數據,服務都是可控的,安全的。可是與此同時這也是成本最高的一種方式。首先,你須要學習去開發服務器端的代碼,你還須要學習數據庫相關的不少知識。當你摸爬滾打一段時間開發出一套後臺接口以後,你還須要搭建一個線上的服務器,那麼就意味着你須要購買一個雲服務器,買完服務器以後,你須要在服務器裏面搭建一個本身的代碼運行的環境,而後你須要把你開發的代碼部署到服務器上去......除此以外,買服務器意味着你要花錢,可能後面還須要買oss存儲服務,cdn加速等等,還須要花更多的錢。並且,並且,並且這全部的全部,你須要本身摸索,遇到問題只能本身解決,這是很痛苦的。好在我是在阿里雲購買的服務器,(其實還有不少其餘平臺,好比騰訊雲,京東雲等等),阿里的工單系統服務着實很好,響應也很快,技術服務也很到位,在必定程度上幫我解決了不少問題,在此表示感謝。
對於企業項目的開發,粗糙的流程通常是:產品經理收到需求,與後臺開發人員進行溝通,肯定功能點,而後根據需求設計出原型,將原型交付給UI設計師,與此同時,後臺開發人員開發出對應的API接口,UI設計師設計完成給予前端開發人員,前端開發人員先設計出頁面,再與後臺開發者對接API接口,將數據展現出來並完成具體功能的開發,最後上線。
但是咱們是一我的開發呀。
因此咱們不太適用上面的開發流程。咱們最開始須要作的是需求分析,咱們須要肯定,初始版本須要哪些功能,其次在移動端和服務端兩個開發點作選擇,究竟是先開發移動端仍是先開發服務端,這個就因人而異了,有的人喜歡先用假數據開發出一個模板,等到數據來了以後再進行填充,而對於我,我就不喜歡這樣,反正都是要作的,多作一個模板的版本,就要多花時間,因此我決定先寫服務器。
服務端開發完成以後,再寫客戶端,在開發客戶端的時候,對於頁面的設計,一方面靠本身想,另外一方面,靠模仿別的App。當服務端和客戶端都開發完成並完成測試以後,就要開始搭建線上服務器環境了,當環境搭建完成並完成代碼的部署以後,就要開始着手上線操做了。
最開始定下的功能也很簡單:
後面完善的功能:
在有《從0到1開始一個屬於本身的App》這個想法以前,其實我也是沒有任何Java Web開發基礎的,當決定作這件事以後,在保證能保質保量完成工做上的任務以後,我開始了爲期一個多月的Java Web自學之旅。固然方式就是看視頻,當時找了不少Java開發的視頻,上班的時候,沒事作就看視頻,一邊看視頻,一遍跟着作;下班的時候,把視頻拷到手機上,地鐵上看,吃飯的時候看,睡覺前看一會。一直看了好久的視頻,基本上簡單的學習一遍:HTML,CSS,JSP/Servlet,Struts2,Hibernate,Spring,Mybatis,都只是簡單的瞭解了一遍,至於如今,可能大部分都已經忘記了,哈哈。最後的最後,通過一個多月的努力,我決定用Mybatis+Springmvc+Mysql來構建本身的項目。
基於以上功能,在Web端,咱們須要額外處理的有:集成極光推送和阿里巴川的即時通信以及發送驗證碼進行註冊,重置密碼的短信服務。
具體的功能開發細節就再也不贅述了,也不是本文的重點。
對於app頁面來講,咱們主要是本身設計加上模仿別人的app,多體驗別人的app,把別人好的交互,好的設計引用的本身的應用裏面。可是在引用的時候要注意,不是全部的交互都適合本身的應用,借鑑也要適可而止,不然會不三不四。在圖標上面,一來能夠找作UI的朋友設計,二來能夠在專業的網站上去獲取。好比【iconfont】,基本上經常使用功能的圖標都能在這裏找到。
還能夠對圖標進行簡單的處理,好比顏色,大小,十分方便:
基於以上功能,在Android端,咱們須要額外處理的有:集成極光推送,阿里巴川的即時通信和圖片存儲。對於圖片,若是將圖片都上傳到雲服務器中,就我買的那個雲服務器的帶寬,到時候加載圖片的時候確定卡成狗,因此須要購買額外的文件存儲,這裏有不少選擇,像什麼又拍雲,阿里的OSS,我最開始選擇的是又拍雲,由於以前使用過,有感情,後來爲了豐富內容,在功能上添加了視頻模塊,須要大量的存儲空間,又加上本着學習的目的選擇的是阿里的OSS。至於誰牛逼,在此不作過多的評價。
使用文件存儲的一個好處就是服務端不須要作過多的處理,在移動端,咱們首先將文件上傳到文件存儲中,獲取存儲的路徑,將這個路徑傳給服務器存起來就行了,很方便。
除此以外,移動端還須要對上傳的圖片進行處理,好比加濾鏡,加標籤,裁剪,美化等等。
不過,對於作Android開發的我來講,這些都不是問題!!!
應用內部添加了積分模塊,因此新增了一個轉盤抽獎的模塊,主要是消費積分進行抽獎。爲此用原生的方式寫了一個轉盤抽獎的頁面,具體實現方式可參考另外一篇博客【Android擼一個轉盤抽獎】,效果以下:
具體的其餘功能開發細節就再也不贅述了,也不是本文的重點。
應用內更新:
這個功能是必須在初版就有的,由於這個功能是保證已安裝你應用的用戶可以第一時間獲取你應用更新信息的基石。
還有一點,好比我以前在百度成功上傳了個人應用,後來版本更新了,我再次提交應用的時候,平臺居然跟我說,應用是用工具合成的,不讓上傳(套路咱們都懂,不就是想讓我在他們平臺弄軟著麼),這個時候應用內更新就顯得很重要了,用戶在百度手機助手上只能獲取到最初的版本,當你有更新的時候,你只須要開啓應用內更新,用戶就能體驗到你的新版本了。
還有一點,若是你有什麼功能是應用市場不能接受的,你也能夠採用這種方式,添加這些功能後,繞過應用市場,直接面向用戶編程。不過,我不推薦這麼作,有點欺騙消費者的意味在裏面。
考慮到功能的定製,我在應用中使用的是我本身寫的一個應用內更新插件,請求和apk下載都採用原生HttpUrlConnection來實現,不強制依賴任何其餘第三方工具,絕對綠色。【Android App內部更新Library】
分享功能:
這個模板不是必需要有的,可是倒是最好能有的功能。爲何這麼說呢?所謂物以類聚人以羣分,咱們的好朋友,用戶的好朋友都是有着類似興趣愛好的,當其中一個用戶使用了你的APP,以爲很好玩的時候,他有可能也想分享給他的好朋友體驗,這樣一來,你能夠不費吹灰之力,經過用戶就能爲你再生用戶,豈不是美滋滋?
你能夠在應用寶添加你的應用,審覈經過以後,這個應用就包含了QQ分享的能力了,若是須要,你還能夠去微信公衆平臺申請一個應用,這樣就擁有微信分享的能力了。當有了這些能力以後,你就可讓用戶分享你的APP,一種方式是寫個網頁,網頁上是簡單的應用介紹信息,而且提供下載APP的入口,讓用戶分享這個網頁給其餘用戶,實現用戶的再生;另外一種你就直接分享應用寶的微下載連接;或者說你都不想弄,你直接分享一個APP的下載連接能夠了吧。
再不濟,你連QQ和微信平臺的應用都不想建立,那你直接調用系統的分享功能,分享一段文字+你應用的下載連接總能夠吧,這個是最簡單粗暴的了,若是這個都不想弄,那我不說了。你就當我是空氣吧!
意見反饋:
這個模塊是必定要有的,由於做爲我的開發者來講,你是沒有不少時間來測試的,你也沒有特別多的測試機來進行測試,因此,你更須要的是廣大用戶來幫助你測試,因此當他們在使用的過程當中,遇到問題的時候,他們須要一個入口來反饋。並且當用戶在使用的過程當中,可能會有體驗不佳的狀況,或者他有更好的意見須要反饋,都須要一個入口來反饋,畢竟一個應用是須要在市場上進行不斷的磨合才能愈來愈好。
實現意見反饋的功能其實有不少種方式:
意見反饋
這種方式是最多見的,你只須要在提交用戶意見的同時,獲取手機當前的手機型號,安卓版本,登陸的用戶,app的版本等信息並提交給後臺就能夠了。這樣方便後臺進行統計與處理。
使用第三方的客服服務
這種方式比較高端一點,畢竟能夠進行即時聊天,問題的解決會更到位一點,好比咱們公司項目中使用的【中國最大的全場景智能客服系統解決商 UDESK】,不過這個服務須要專門的客服24小時在線參與回覆,成本有點高。
直接使用QQ
這種方式就比較簡單粗暴了,你直接申請一個客服QQ,而後開通那個不須要加好友就能臨時會話的服務。當用戶點擊客服的時候,你直接判斷一下用戶有沒有安裝QQ,若是安裝了,直接打開QQ與你的客服QQ進行臨時會話就行了,若是用戶沒有安裝QQ(這種狀況就比較少了),你就再申請一客服郵箱,直接彈出一個對話框,顯示這個客服郵箱給用戶,而後你按期去看下這個郵箱的郵件就行了。
崩潰信息收集:
這個也是必需要有的,就跟前面說的同樣,有些bug是在特定的機型上面纔會出現的,若是你沒有這個機型,那麼你在開發的過程當中就不會發現這個bug,因此你就須要使用一個插件來收集用戶在使用的過程當中出現的崩潰信息,好比平常開發中經常使用的【移動時代首選Bug 管理系統】。
其實這是一個很蛋疼的事情,由於若是是我本身測試,我大腦會促使我按個人邏輯來操做,那麼會有個屁的bug啊,這也就是爲何公司要招測試的緣由吧。畢竟要找個比較貼近用戶的人來操做纔會找到問題所在,因此,我只能請我女票測了。
等到應用能夠在本地順利跑起來的時候,這個時候就要考慮購買一臺ECS服務器並部署應用了,這樣,別人才能在公網上順利訪問你的應用呀。
【雲服務器ECS】,對於咱們來講,買一個入門級的就行了,才幾百塊錢。
而後點擊當即購買,在新的頁面選擇一些配置信息。而後有一點須要注意,就是鏡像,在【鏡像】欄目選擇【鏡像市場】,點擊【從鏡像市場選擇(含操做系統) 】,咱們這裏由於要部署Java應用,就選擇了一個現成的包含Java環境的鏡像,以下圖所示。
而後就是一路向下,作一些配置就能夠去確認訂單了。購買成功以後,你就能夠按照鏡像的說明文檔來部署你的Java應用了。固然這裏面有不少細節,你須要認真的閱讀說明文檔,或者新建一個工單諮詢一下專業的工程師。
下面是我購買的服務器配置:
短信服務:
由於功能的須要,咱們須要在註冊或者重置密碼的時候發送驗證碼,因此須要使用到短信服務。市面上短信服務有不少,功能和使用方式都差很少。
我這裏使用的是阿里雲裏面的【短信服務】,他有兩種付費方式,一種是按量付費,一種是購買短信包。按量付費就是你使用多少,扣多少,只要帳戶有錢,就能夠成功發送,這種方式的優點是比較節省,不會浪費,由於前期也不會有太多註冊,須要發送大量的短信。購買短信包就是一次性買不少條,若是你買5000條呢,是每條0.045元,跟按量付費是同樣的,可是這5000條有時間限制,只能在半年內使用,超過半年就沒用了,若是你買10000條+呢,就會便宜點,10000條的話每條是0.043元,這個就看你的用量和我的喜愛了。
購買完成以後,就跟其餘短信服務平臺的套路同樣,你須要新增一個簽名,而後須要建立一些模板。
短信由簽名和模板兩部分組成。用戶須要先申請短信簽名,審批經過後,再申請短信模板。短信示例:【阿里雲】驗證碼{code},您正進行支付寶的身份驗證;變量是:${code}。在申請簽名和模板的時候,他們會讓你提供官網地址,可是咱們沒有官網地址呀,你就須要額外的說明了,通常第一次審覈簽名或者模板是不會過的,你須要說明你的特殊狀況,而後再次審覈一次通常都會讓你過的。
這些都作完了以後,你就可使用他們提供的工具jar在服務器調用接口給指定手機號發送指定內容的驗證碼短信了。
OSS服務:
以前提到了咱們須要在應用裏面提供應用內更新的功能,那麼更新的apk放哪裏呢?或者基於我要作的段子應用,裏面的圖片放哪裏呢?對,就是這個【對象存儲 OSS】。
這個用起來就很是舒服了。
首先他提供的有SDK,移動端集成其SDK就能很容易的實現文件的上傳和下載工做,少了不少開發的工做;
其次,使用這個配上cdn加速,能夠很容易的解決併發訪問加載慢的問題,咱們能夠少操不少心;
第三,支持強大的數據處理功能。好比【媒體處理】,【快速使用OSS圖片服務】,正好在開發《段子樂》的時候就用到了圖片服務,在recyclerView列表中可使用圖片服務的壓縮功能,節省流量;還能夠對圖片進行添加水印的操做,將用戶的暱稱做爲水印添加到圖片上,成爲用戶的專屬圖片,美滋滋。他還提供了對媒體資源設置超時時間的功能,這個也挺好用的,好比後面添加的視頻功能,當用戶加載的時候,會獲取到一個視頻鏈接,設置這個視頻連接的有效時間爲10分鐘,那麼這個連接10分鐘後就會失效,就能有效防止咱們的資源被惡意下載等等。
注意點:OSS數據的存儲和訪問都是須要費用的,默認是按量收費。好比你如今總的存儲量是10G,天天的訪問量是10G,那麼他天天都會分別收取數據的存儲費用和下行流量費用。最開始我也沒有仔細研究過這塊,以前在帳戶中充了幾百塊錢,過了幾天去看的時候,錢少了好多,查看帳單才發現一直在扣費。這種狀況下咱們須要購買存儲包和下行流量包比較划算,存儲寶我買了100G,下行流量包我買了300G(下行流量包是每月都有300G,相對比較划算),由於視頻功能也才推出一個月不到,到了下個月就知道這種配置夠不夠用,再根據需求作適當的調整就好。
域名和域名備案:
做爲一個開發者來講,我以爲域名就至關於咱們的小名同樣重要,因此我以爲咱們須要去申請一個有特殊意義,有記念意義的域名。好比個人域名就是用我和我女票的名字組成的,並且之後若是搞得很差,咱們要創業開公司呢?正好也能夠派上用場。再說了,萬一哪天那個有錢人看上我這個域名,要花幾千萬買個人域名呢?運氣這種事,誰說的準。
申請域名比較容易,填一下資料就能夠了。而後每一年交少許的維護費用就行了。
當你成功申請域名以後,最好仍是去作一下域名的備案工做。其一,如今的互聯網已經愈來愈注重安全了,體系也愈來愈完整了,咱們做爲開發者,心態也要放正一點,作一個有身份,夠權威的開發者,因此咱們的域名也須要備案一下。其二,在阿里雲上綁定本身的域名,若是域名沒有備案,是不能綁定的。
阿里雲自己也提供了域名備案的服務,很貼心,不少其餘的平臺也都有這個服務,能夠去了解下。當你在阿里雲備案的時候,須要先填寫一些信息,等到初審經過以後,他們會給你寄一個有阿里雲logo的背景幕布,你須要把這個幕布貼在牆上,站在幕布前手舉本身的身份證宣誓,而後拍成照片在後臺提交,再審覈,而後通過一堆亂七八槽的步驟,通過大約半個多月,你就能備案成功了。恩,是這樣。
如今應用已經開發完了,後臺也已經部署了,也能在公網順利訪問了,那是否是就完了呢?固然不是,你花這麼大力氣,就是爲了給本身用嗎?這麼高冷的嗎?
目前Android端主流的應用市場以下所示(排名不分前後):
其實像我前面所說,如今愈來愈注重版權看,因此我以爲不論你是基於練手走流程,仍是真的想開發一個APP,實現本身的價值,都有必要爲你的應用去申請一個軟著,就像給你的孩子上戶口同樣。並且有不少開放平臺在你沒有軟著的時候,都會刻意不讓你過。
其實申請一個軟著沒你想象的那麼複雜,並且也不貴。在不少大的開放平臺都提供了軟著的申請服務,好比【騰訊創業服務平臺】,有不少的服務商在這裏,你能夠像皇帝翻牌子同樣隨便挑一個,也能夠對比一下評分後再選,都隨你。挑好服務平臺後,你須要提供一些資料,有關你的和你的軟件的,而後支付費用,等待一個多月的時間就能夠了。我是買的最便宜的那種服務,就是300塊的那種,反正我又不急,一個多月就一個多月咯,加急的比較貴一點。
還記得以前上線應用的時候,選擇了360,應用寶,百度,豌豆莢,其餘三個平臺都過了,360沒有經過。他說個人應用是用工具合成的,可能就以爲頁面都差很少,可不就是合成的馬甲包麼。我這暴脾氣,老子辛辛苦苦寫的應用你居然這樣惡意誹謗加侮辱?我很生氣,就一直提交,打回來了就啥都不改再提交,還一直寫郵件給他們的客服說明狀況。就這樣作了四次左右吧,恩,個人應用被封殺了,你沒聽錯,被封殺了,就是360再也不收錄該包名的應用了,你怎麼說都沒用。
因此說,仍是不要太剛的好。
在上傳應用的時候,有時候須要耐心,有時候須要技巧,有時候須要說好話,有時候須要軟磨硬泡,總之無論怎樣,你只要能上上去,你就牛逼。這其中的分寸,你須要用時間來拿捏。
祝你好運!!!
恩,這個方面,我是個白癡!可是我仍是努力過的!
你想知道我是怎麼操做的嗎?
其實我能想到的還有一些辦法:
你想知道我如今應用的用戶量嗎?
恩,我不告訴你!!哈哈哈
最後祝願你們都能勇敢邁出這一步!只要你踏出這一步,你就會發現,其實也沒有你想象中的那麼可怕。
也但願你們關注個人簡書,掘金,Github和CSDN,遇到好玩有趣的東西,我都會分享給你們。
簡書首頁,連接是 https://www.jianshu.com/u/123f97613b86
掘金首頁,連接是 https://juejin.im/user/5838d57fac502e006c1708bc
Github首頁,連接是 https://github.com/MZCretin
CSDN首頁,連接是 http://blog.csdn.net/u010998327
我是Cretin,一個可愛的小男孩。