1. 程式人生 > >為了考PMP,我做了一個刷題小程式

為了考PMP,我做了一個刷題小程式

一、背景

1.我是一名軟體工程師,技術出身,擔任開發組長,對專案管理不是很熟,所以決定系統學習下專案管理。

2.全球最適合的專案管理學習課程就是PMP,每年有4次PMP考試,證書還是很有含金量的。

3.目前工作上不是很忙,有多餘時間用來做自己的事,所以準備寫點程式碼來玩下。

4.組裡都是做小程式開發的,雖然是開發組長,但是大部分的時間都是和甲方打交道,寫程式碼的時間確實很少。

5.於是決定寫個小程式來幫助我考PMP。

6.題庫都是培訓機構出的模擬題,我們學習小組將紙質的題目轉成了txt格式,方式有OCR,語音轉換,純手敲。整理題庫真的非常耗時!!

7.目前有14個小夥伴(培訓認識的)在使用這個小程式刷題,6月22號我們考完了,希望都能5A。

8.每天坐地鐵1個多小時都在刷題。零碎時間刷題真的非常爽,一直刷題一直爽。

9.想著做好了,可以跟培訓機構合作下,賺點外快。只可惜培訓機構的老闆已經找到其他供應商了~~~~

10.最開始是小組內有個同學做了一個安卓的pmp知識工具,但ios的用不了,所以想著做一個小程式,這樣安卓和ios都可以用了,受眾也變多了。

 

組織過程資產:

小組聚在一起學習

二、show一波我的小程式

現在show一波我的小程式吧。後臺採用小程式雲開發,這樣就不用自己搭後臺,快速上手和開發。

主要有以下功能:

1. 每日練習題

2. 4套模擬試題線上作答

3. 備考心得

4. 專題祕籍

5. 答題排行榜

6. 開發版本記錄

7. PMP知識總結

 

 

三、詳細說明下我的小程式是怎麼用雲開發的

1.首先需要建立雲函式,以建立會員為例

我建立一個member雲函式,定義建立member的方法,都是js寫的。

寫完之後需要上傳雲函式,這樣小程式前端就可以直接呼叫

//1.查詢會員是否存在
  //2.不存在則建立會員
  result = db.collection('member').where({
    openid: wxContext.OPENID // 填入當前使用者 openid
  }).get().then(res => {
    if (res.data.length == 0) {
      member = db.collection('member').add({
        // data 欄位表示需新增的 JSON 資料
        data: {
          nickName: user.nickName,
          avatarUrl: user.avatarUrl,
          gender: user.gender,
          country: user.country,
          province: user.province,
          city: user.city,
          openid: wxContext.OPENID,
          appid: wxContext.APPID,
          unionid: wxContext.UNIONID,
        }
      }).then(res => {
        console.log(res)
        return {
          event,
          user,
          openid: wxContext.OPENID,
          appid: wxContext.APPID,
          unionid: wxContext.UNIONID,
          memberId: res._id
        }
      }).catch(console.error)
      return member
    } else {
      member = res.data[0]
      return member
    }
    return member
  })
  
  return result
}

2.前端如何呼叫雲函式

 createMember: function (user) {
    // 建立會員
    wx.cloud.callFunction({
      name: 'member',
      data: {
        action: 'create',
        user: user
      },
      success: res => {
        console.log('[雲函式] [login] user openid: ', res.result.openid)
        app.globalData.openid = res.result.openid
        app.globalData.openid = res.result.nickName
        this.setData({
          isShowResigterModal: false
        })
      },
      fail: err => {
        console.error('[雲函式] [login] 呼叫失敗', err)
      }
    })
  },

  getMember: function () {
    // 查詢會員
    wx.cloud.callFunction({
      name: 'member',
      data: {
        action: 'get'
      },
      success: res => {
        console.log('[雲函式] [login] res: ', res.result)
        if (res.result != null) {
          app.globalData.openid = res.result.openid
          app.globalData.memberId = res.result._id
          app.globalData.nickName = res.result.nickName
          this.setData({
            isShowResigterModal: false
          })
        } else {
          this.setData({
            isShowResigterModal: true
          })
        }
      },
      fail: err => {
        console.error('[雲函式] [login] 呼叫失敗', err)
      }
    })
  },

3.後端如何debug

選擇本地除錯

打斷點進行除錯

四、小程式雲開發控制檯

我們可以開啟雲開發控制檯,看到有很多監控引數,這個月大家刷題刷得很多,所以流量有很高,總共呼叫了1.63萬次,使用量還是挺高的哦~

1.首先看下運營分析,資源使用率

 2.看下使用者訪問量,總共註冊使用者16人

 3.監控圖示,可以看到過去多少小時內的流量

 4.我建立的資料庫和表

 

5.存放檔案和設定許可權,主要是存放小程式用到的圖片

6.雲函式呼叫情況,可以看到成果和失敗的

 

五、github提交記錄

4月,5月,6月都有開發,中間有2個星期沒有開發,當時覺得做刷題功能比較耗時間。後來小組內有人說小程式做的不錯,偶爾還看下,所以又鼓起了我的興趣,就接著做答題功能。

下面是github提交記錄

 我的gitbub連結:

https://github.com/Jackson0714

 

模擬題有版權問題,就不上傳程式碼了。


作  者:悟空聊架構 
出  處:http://www.cnblogs.com/jackson0714/
關於作者:專注於移動開發。如有問題或建議,請多多賜教!
版權宣告:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。
特此宣告:所有評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點選文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力! 

悟空聊架構 

關注我,帶你每天進步一點點!

還有111本書籍贈送~~

&n