2013-05-14 64 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提交答案。如果答案是正确的,请发回确认和解释。如果不是,请发回提示或其他内容。

你可以使用一个计时器和一个计数器来让用户在两次提交之间等待同一个问题(这样他/她必须思考,而不是发送大量随机值,希望能够达到解决方案)并给他们无论如何,在一定数量的错误提交答案之后的解决方案。