3

我正在构建一个数学练习数据库,我想使用 couchDB,然后以 json 格式存储练习,这样我就可以存储每个练习的元数据。

我在使用所有 Latex 语法的有效 json 时遇到了麻烦,解决这个问题的好方法是什么?我曾考虑过对乳胶进行编码,但我不确定这是一个好主意,尤其是如果它需要由移动设备解码......

数据示例:

     {"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 中?

或者也许解决方案是以另一种方式存储乳胶......?我对这种问题很陌生,我很感激任何帮助;)。

谢谢

4

2 回答 2

4

在 JSON 字符串中,反斜杠字符\具有特殊含义。如果要将其存储在数据使用中\\(转义反斜杠)。JSON 解析器会将其更改回单一的,Couch 应存储"$\\mathbb{R}$.\\\\"$\mathbb{R}$.\\.

于 2013-05-15T12:10:08.183 回答
2

只要您正确引用 LaTeX 字符串,我在这里看不到任何问题。浏览器内有很棒的 LaTeX 渲染器,例如,看看http://math.stackexchange.com。只是,请记住,LaTeX 渲染可能是一个繁重的过程。

好消息是您在 Python 标准库中有一个函数可以为您处理编码:json.dumps. 只需将包含上述所有数据的字典传递给它。您还可以扩展底层编码器以接受您的数据类型。

至于隐藏数据,我建议不要发送带有问题的答案,因为坚定的攻击者无论如何都可以通过挖掘你的 JS 找到密码。相反,让客户通过 XHR 提交答案。如果答案是正确的,请发回确认并附上解释。如果不是,请发回提示或其他内容。

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

于 2013-05-14T16:42:07.953 回答