如何使Web服务器进行定时多项选择测试?

时间:2012-11-20 12:44:22

标签: python web-applications haskell clojure lisp

我想制作一个网络应用程序,询问人们多项选择问题,以及他们需要多长时间才能回答。

我希望那些想要能够创建帐户的人,以及存储数据的人数,以及他们的表现如何以及他们的表现如何增加。

我之前从未编写任何类型的网络应用程序,虽然我是一名优秀的程序员,并了解http的工作原理。

我假设(没有证据)使用“框架”比从头开始一起破解某些东西更好,我很欣赏人们认为哪种框架最合适的建议。

我希望它会受到欢迎,但我宁愿得到一些有用的东西,而不是花时间在开始时担心缩放。这是理智的吗?

我希望能够在我自己的机器上开发和测试它,然后将其部署到虚拟服务器或其他托管解决方案。

我更喜欢使用像Clojure或Lisp或Haskell这样的语言,但如果使用Python或Ruby的优势超过了我更喜欢用更多数学语言享受它的事实,那么我也喜欢这两个。

我可能在perl上划线,但如果perl甚至像Java或C这样的东西具有引人注目的优势,那么我也很满意它们。他们似乎不适合这种事情。

4 个答案:

答案 0 :(得分:5)

  

我更喜欢使用像Clojure或Lisp或Haskell这样的语言

如果你对Haskell感到满意,你的选择是Yesod(我喜欢它)。

如果没有,你的首要任务是什么?

  • 学习,享受和提高生产力 - >然后你的选择是Haskell + Yesod。

  • 生产力迅速 - > Python,Ruby,......

答案 1 :(得分:3)

我可以建议从Flask开始。这很容易。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

使用模板(jinjamako等),您可以轻松创建动态网页:http://flask.pocoo.org/docs/templating/

您的时间计算问题的简单解决方案可能是将服务器时间放在问题的表单中,并在获得响应时计算增量。

编辑:哦,另外,您可以在Heroku上相对轻松地部署Flask应用程序,这是一个免费的云应用程序平台。

答案 2 :(得分:1)

当服务器端创建表单时,使用请求的时间戳对隐藏字段进行编码,因此当用户对其表单进行POST时,您可以看到时差。

如何实现这取决于您,您可用的服务器以及其他一些因素。

答案 3 :(得分:1)

就Haskell网页框架而言,我还建议使用Happstack,但Yesod本身就是一款优秀的软件,可能有更强大的支持基础。在任何一种情况下,都不要谈论Haskell;我使用Happstack编写了自己的博客引擎(目前正在运行The Ambulatory Sesquipedalian),没有理由相信Haskell不适合这些任务。部署到VPS的本地测试对于两者来说都很自然 - 它们可以运行在任何可以安装Haskell平台的任何东西上。

就时间而言:无论你实现它,都要小心用户不能伪造时间。由于您似乎致力于用户帐户,我建议用户检查测试,在他们开始测试的时间段中留下带时间戳的条目,并在他们提交答案时进行检查。使用客户端状态的解决方案也是可能的,但请记住防止客户端操作数据(编辑cookie或手动构建隐藏字段更改的POST) - 您可能需要以某种方式加密时间(它仍然可以更改,但不是用户选择的值。)