1

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

我希望那些想要的人能够创建帐户并存储数据,以了解他们的表现如何以及他们的绩效如何提高。

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

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

我希望它会很受欢迎,但宁愿让一些东西发挥作用,也不愿在开始时花时间担心扩展。这是理智的吗?

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

我更喜欢使用 Clojure、Lisp 或 Haskell 之类的语言,但如果使用 Python 或 Ruby 的优势超过了我更喜欢使用更数学化的语言这一事实​​,那么我两者都喜欢那些也是。

我可能会在 perl 上划清界限,但如果 perl 甚至 Java 或 C 之类的东西具有令人信服的优势,那么我也对它们非常满意。他们似乎不适合这种事情。

4

4 回答 4

5

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

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

如果不是,您的优先事项是什么?

  • 学习、享受和生产力 -> 那么你的选择是 Haskell + Yesod。

  • 快速提高生产力 -> Python、Ruby、...

于 2012-11-20T13:08:59.483 回答
3

我可以推荐从Flask开始。这很容易。

from flask import Flask
app = Flask(__name__)

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

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

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

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

编辑:哦,还有一件事,你可以在Heroku上相对容易地部署一个 Flask 应用程序,这是一个免费的云应用程序平台。

于 2012-11-20T12:54:04.053 回答
1

当服务器端创建表单时,用请求的时间戳编码一个隐藏字段,这样当用户发布他的表单时,你可以看到时间差。

如何实现这取决于您、您可以使用哪台服务器以及其他几个因素。

于 2012-11-20T15:20:36.447 回答
1

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

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

于 2012-11-20T20:14:20.300 回答