【问题标题】:How can I convert this Python code into ColdFusion code?如何将此 Python 代码转换为 ColdFusion 代码?
【发布时间】:2018-03-07 15:57:55
【问题描述】:

我希望构建一个利用 Reddit(开源)算法的 Web 应用程序。

我计划随着时间的推移对其进行调整,但现在我认为使用他们的排名系统将是一个好的开始。

我阅读了一篇关于此算法的博客文章,示例是用 Python 编写的。如何将其转换为在 ColdFusion 中使用?如果更容易在 CFC 中使用,还能获得额外的奖励积分吗?

代码:

#Rewritten code from /r2/r2/lib/db/_sorts.pyx

from datetime import datetime, timedelta
from math import log

epoch = datetime(1970, 1, 1)

def epoch_seconds(date):
    """Returns the number of seconds from the epoch to date."""
    td = date - epoch
    return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)

def score(ups, downs):
    return ups - downs

def hot(ups, downs, date):
    """The hot formula. Should match the equivalent function in postgres."""
    s = score(ups, downs)
    order = log(max(abs(s), 1), 10)
    sign = 1 if s > 0 else -1 if s < 0 else 0
    seconds = epoch_seconds(date) - 1134028003
    return round(order + sign * seconds / 45000, 7) 

讨论此代码的博客文章: http://amix.dk/blog/post/19588

期待听到一些想法和例子。

非常感谢! 迈克尔。

另外,作为一个附加问题; 数据集已经收集之后,这段代码是否会更好地通过 SQL 查询或 ColdFusion 中的某种排序来执行?我选择的数据库是 MySQL。

更新: 刚刚在这里发现了另一个与我所问的问题有关的问题……我认为它有帮助。 How are Reddit and Hacker News ranking algorithms used?

【问题讨论】:

    标签: python sql coldfusion railo


    【解决方案1】:

    大部分代码只是任何编程语言的标准代码

    例如,在 ColdFusion 中获取某个日期以来的秒数非常容易

    <cfset seconds = dateDiff('s', now(), createDate(1970, 1, 1)) />
    

    不确定您坚持使用哪些位,但这一切都很简单。我在那里看到的每个函数都有一个 ColdFusion 版本,我建议你尝试这样做,并询问你是否遇到了什么问题。

    【讨论】:

    • 我想问一下;这是最好在 SQL 中完成的事情,还是在已经收集数据集之后在 CF 中排序是最佳选择?顺便感谢您的意见 - 真的很有帮助。
    • 这取决于排序是否会在其他地方使用。如果是这种情况,那么可能放入一个 CF 函数比在 SQL 中更可取。
    • 这个问题可以移到programmers.stackexchange.com
    猜你喜欢
    • 2017-05-10
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2019-05-26
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多