2013-05-14 100 views
2

我正在構建一個數學練習數據庫,我想使用couchDB,然後將練習存儲爲json格式,這樣我就可以在每次練習中存儲元數據。以Json格式存儲膠乳

我有一個有效的JSON與所有Latex語法的麻煩,什麼是解決此問題的好方法?我曾經想過編碼乳膠,但我不知道這是一個好主意,尤其是如果它需要通過移動設備進行解碼...數據

例子:

 {"taglist": null, 
    "flagcount": null, 
    "category": "Algebre", 
    "chapter": "Polynomes", 
    "difficulty": 1, 
    "viewcount": null, 
    "hint": null, 
    "question": "Soit $P \in \mathbb{R}[X]$ scindé sur $\mathbb{R}$.\\ \begin{enumerate} \item Montrer que $P'$ est aussi scindé sur $\mathbb{R}$. \item Montrer que les racines multiples de $P'$ sont aussi racines de $P$. \item Ce resultat reste-t-il valable dans $\mathbb{C}[X]$ ? \end{enumerate}" 
    "solution": null} 

此外,因爲我可能需要加密「解決方案」,因爲我不希望它未經許可訪問,也許我應該只在json中存儲加密的表單?

或者也許解決方案是另一種方式存儲乳膠......?我對這類問題很陌生,我很感激任何幫助;)。

感謝

回答

3

在JSON字符串中反斜槓字符\有特殊含義。如果你想存儲在你的數據使用\\(逃逸反斜槓)。 JSON解析器會將其更改回單個解決方案,並且Couch應將"$\\mathbb{R}$.\\\\"存儲爲$\mathbb{R}$.\\

2

只要你正確地引用LaTeX的字符串,我這裏看不到任何問題。有很棒的瀏覽器內LaTeX渲染器,例如,看看http://math.stackexchange.com。請記住,LaTeX渲染可能是一個沉重的過程。

好消息是您在Python標準庫中有一個函數,它將爲您處理編碼:json.dumps。只需傳遞一份包含上述所有數據的字典即可。您還可以擴展底層編碼器以接受您的數據類型。

至於隱藏數據,我建議不要用問題發送答案,因爲確定的攻擊者無論如何都可以通過挖掘JS獲得密碼。相反,讓客戶通過XHR提交答案。如果答案是正確的,請發回確認和解釋。如果不是,請發回提示或其他內容。

你可以使用一個計時器和一個計數器來讓用戶在兩次提交之間等待同一個問題(這樣他/她必須思考,而不是發送大量隨機值,希望能夠達到解決方案)並給他們無論如何,在一定數量的錯誤提交答案之後的解決方案。