XiaoHu日志 6/17~6/19
6/17 今天開始完成上周的想法。我并沒有api能獲取北大附的全部課程信息,于是我采用了一種新的辦法,每綁定一個學號,就獲取他的全部課程,分詞并動態(tài)更新詞庫,這樣既可以達到效果又可以不影響用戶體驗。分詞我使用jieba庫,將一個句子不斷細分得到所有可能的詞組,維護一個txt文件作為識別詞庫,我不用SQL的原因是sql那該死的緩存機制,一次修改后必須要重啟程序才能重新讀入,加上我這個是單鍵搜索,就直接采用了輕量化易編輯的文本文檔。然后我就可以通過詞庫在client內(nèi)從一個長并包含無用文本字符串里獲取其filter,如“東西方文化簡史什么時候”中的filter是“東”“西方”“文化”“簡史”,我再從該學生的課表里查找可以全部滿足這個filter的課程,輸出就可以了。
6/18 最近服務器有個問題,就是經(jīng)常自動關機,而且是只有我的虛擬主機才自動關機,昨天我寫代碼的時候就出現(xiàn)了兩次寫著代碼就關機的情況,好在我保存了,起初我只把它當做一個突發(fā)情況,直到昨天晚上服務器又關機了,導致XiaoHu的服務中斷了12個小時。第二天毛老師重啟后猜測是winServer許可過期了,于是中午他為服務器增加了180天的許可,XiaoHu就沒有再次出現(xiàn)這種問題。今天我還優(yōu)化了學科查詢的語料。
6/19 今天準備給XiaoHu增加一個識別語音消息的功能,步驟很簡單,拿到語音文件,交給api識別成文字,然后交給消息主函數(shù)。獲得語音文件要先獲得微信的access_token,發(fā)get請求。在寫這個的過程中我還突然頓悟到之前出現(xiàn)過的XiaoHu查課功能崩潰的原因是不是因為希悅的accesstoken過期,結果果然如此,我增加了一個記錄上次get時間的變量,每次使用token時把這個變量和當前時間對比一下,如果超過保質(zhì)期就重新獲取,于是我也就順便修復了一個重大bug。希悅的token保質(zhì)期24小時,微信的token保質(zhì)期2小時,不過又出現(xiàn)了另一個困難,就是微信的access_token有一個ip白名單,不在這個白名單內(nèi)的ip發(fā)get請求會出現(xiàn)報錯,然而學校服務器沒有外網(wǎng)ip,每次路由器發(fā)出去的ip都是在一定范圍內(nèi)變化的,我根本無法通過這個服務器獲取到token,也就無法獲得語音文件了。我的另一個想法是把這些代碼放到我運行在外網(wǎng)的nodejs轉發(fā)器程序里,每次公眾號程序向轉發(fā)程序發(fā)請求,轉發(fā)程序獲取token后返回給公眾號程序,雖是可行,但是需要編寫的代碼量太大,還不能保證效率,可能丟包。我沒有采用這種方法,而是找毛老師問他能不能讓路由器不要使服務器ip改變,這樣就可以用之前的思路寫了,他說回去問網(wǎng)管。今天還添加了一個功能使一個微信用戶可以重復綁定不同學號,其實是某微信號綁定一個新學號后會自動刪除其之前的學號記錄。在之前我的數(shù)據(jù)庫程序會自動讀取數(shù)據(jù)庫里的最后一行符合要求的信息,所以一個微信號會存在綁定多個學號的記錄,但是生效的是綁定的最晚的那個,所以我不用做出過多的處理去處理那些冗余的數(shù)據(jù),但是這兩天它的機制變成了讀取最前的那個記錄,為了保持效果,我在代碼中加入了加入記錄前刪除該微信id的所有記錄的語句。有些時候不應該為了方便就把一些功能將就過去,當不可控因素改變時可能會造成一些嚴重的后果。
總結
以上是生活随笔為你收集整理的XiaoHu日志 6/17~6/19的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力科示波器 matlab,力科示波器手册
- 下一篇: 图像放大的三种处理方法:最近邻插值,双线